A contraint-expression is a KIF sentence with at most one free variable denoting an object to which the constraint applies. Other terms in the constraint-expression may be object constants representing parameters, constant values like numbers and strings, or other objects. The functions and relations that are allowed in a constraint-expression are limited by restricted-constraint-sentence. Restricted classes of constraints (subclasses of constraint-expression) can be described by other applications of the restricted-constraint-sentence predicate.At the minimum, all constraint expressions have restricted quantification: namely, no existential or universal quantification may be introduced except for the optional single free variable. That is, the KIF operators FORALL, EXISTS, SETOFALL, KAPPA, and LAMBDA are never allowed in constraint expressions. Other restrictions on the constraint language may be specified in specializations of the this class by giving different arguments to the predicate restricted-constraint-sentence.
(Restricted-Constraint-Sentence ?Sent Logical-Operator Relation-Constant Function-Constant Atomic-Term)
(Inherited-Facet-Value Slot-Value-Type Constraint Constraint.Expression Constraint-Expression) (=> (Constraint ?C) (And (Value-Cardinality ?C Constraint.Expression 1) (Value-Type ?C Constraint.Expression Constraint-Expression) (Value-Cardinality ?C Constraint.Expression 1))) (=> (Constraint.Expression $X $Y) (Constraint-Expression $Y)) (=> (The-Constraint $X $Y) (Constraint-Expression $X)) (=> (= (The-Constraint ?Expression) ?Constraint) (Constraint-Expression ?Expression)) (=> (Constraint-Expression ?Sent) (Restricted-Constraint-Sentence ?Sent Logical-Operator Relation-Constant Function-Constant Atomic-Term))