# The concept of a generalized constraint

Constraints are ubiquitous. A typical constraint is an expression of the form *X *e C, where *X* is the constrained variable and *C* is the set of values which *X* is allowed to take. A typical constraint is hard (inelastic) in the sense that if *u* is a value of *X* then *u* satisfies the constraint if and only if *u* e C.

The problem with hard constraints is that most real-world constraints are not hard, meaning that most real-world constraints have some degree of elasticity. For example, the constraints "check-out time is 1 p.m." and "speed limit is 100 km/hr" are, in reality, not hard. How can such constraints be defined? The concept of a generalized constraint is motivated by questions of this kind.

Real-world constraints may assume a variety of forms. They may be simple in appearance and yet have a complex structure. Reflecting this reality, a generalized constraint, *GC(X* ), is defined as an expression of the form.

where *X* is the constrained variable; *R* is a constraining relation which, in general, is non-bivalent; and *r* is an indexing variable which identifies the modality of the constraint, that is, its semantics. The constrained variable, *X,* may assume a variety of forms. In particular,

- •
*X*is an n-ary variable,*X =*(X_{1},...,X„), - •
*X*is a proposition, for example,*X =*Leslie is tall, - •
*X*is a function, - •
*X*is a function of another variable,*X = f(*Y), - •
*X*is conditioned on another variable, X/Y, - •
*X*has a structure, for example,*X =*Location(Residence(Carol)),

• *X* is a group variable. In this case, there is a group, G[A]; with each member of the group, Name,, *i = 1,...,n,* associated with an attribute- value, A_{;}. *A,* may be vector valued. Symbolically,

Basically, G[A] is a relation.

• *X* is a generalized constraint, *X = Y* isr *R.*

A generalized constraint is associated with a test-score function, *ts(u) *(Zadeh, 1981a; 1981b) which associates with each object, u, to which the constraint is applicable the degree to which *u* satisfies the constraint. Usually, *ts(u)* is a point in the unit interval. However, if necessary, the test-score may be a vector, an element of a semiring (Rossi and Codognet, 2003), an element of a lattice (Goguen, 1969) or, more generally, an element of a partially ordered set, or a bimodal distribution—a constraint which will be described later. The test-score function defines the semantics of the constraint with which it is associated.

The constraining relation, *R*, is, or is allowed to be, non-bivalent (fuzzy). The principal modalities of generalized constraints are summarized in the following.