The formulas of the logic (*constraints*) are built from a set
*V* of variables, a set *C* of constants and a
set *L* of labels (also called *attributes* or *features*).
Variables are thought of as referring to some
specific feature structure. The labels are thought of as pointing
to a specific part of a feature structure. A *path* will be a
(possibly empty) sequence of such labels.
Such a path can be viewed as the `address' of some
piece of information in a specific feature structure.
For example the path
*syn* *agr* *person*
will point to the
*person* part of the
*agr* part of the
*syn* part.

A descriptor is a sequence *sp* where *s* is either a variable or a constant,
and *p* is a (possibly empty) path. I write
to refer to
empty paths.
Examples of descriptors are

assuming that
X_{0} is a variable,
*l*_{i} are labels and
c is a constant.
^{2.1}

*Atomic constraints* (also called *path equations*) are equations of the form:

where *d*_{1} and *d*_{2} are descriptors.
For example, the following expressions are atomic constraints, assuming that
{X_{1},X_{2}}
*V*,
{*syn*,*agr*,*number*}
*L* and
{singular}
*C*:

An *-constraint* is a set of such atomic constraints,
i.e. a set of path equations.
The equations in such a constraint are interpreted conjunctively.
I write such a constraint as a sequence of equations separated by
commas:

,...,

In the following, *d* is used to refer to descriptors in general,
X_{i} refers to variables,
*l*_{i} refers to labels,
c_{i} refers to constants, *s* and *t* refer to either constants or
variables and *p* and *q* refer to paths.

1998-09-30