I follow the construction defined by [32] to extend , giving (), by adding a set of relation symbols , conjunction, negation and existential quantification. The syntax I use for these will be clear from the definition of the interpretations of () (essentially Prolog syntax where appropriate).
The interpretation of () is defined in terms of the interpretation of . The expression [s X] defines the assignment which is exactly like , except possibly for the variable X which gets assigned the element s. An interpretation of () is obtained from ( is said to be based on ) by choosing for every relation symbol r a relation r^{} on ^{} taking the right number of arguments. Furthermore, let
Implication, universal quantification and disjunction may be defined in terms of these connectives. The formalism consists of definite clauses of (). I write such a definite clause as:
where
p,q_{1}...q_{n} are atoms and
is a
constraint. Atoms look as
r(X_{1},...,X_{n})
where
r
R and
X_{1}...X_{n}
V.
A partial order on the set of all () interpretations is defined as follows: iff for all r R,r^{} r^{}. The union of a set of () interpretations is obtained by joining the denotations of the relation symbols and is again an () interpretation. A model M of a set of definite clauses is defined as an () interpretation such that M satisfies , i.e., ^{M} = ASS^{M}.
The use of definite clauses is motivated by the following theorem, proven in [32] for the general case.
This defines a chain
_{0}
_{1}
...
of
() interpretations, based on . Moreover, the union
is the least model of
extending .
This theorem says that if is a set of definite clauses, then uniquely defines the relations of ; i.e. defines unique minimal denotations for the relation symbols of .
Clearly,
p^{0} and
q^{0} are both the empty set.
Because the assignments are based on
we know the solutions of
the constraints. Therefore, we obtain
p^{1} | = | {(X)| (X c)^{0}} | |
= | {(X)| (X c)^{}} | ||
= | {(X)|X_{} = c_{}} | ||
= | {(c,)} |
q^{2} | = | {(X)| (p(Y),X Y)^{1}} | |
= | {(X)| p(Y)^{1} (X Y)^{1}} | ||
= | {(X)|(Y) = (c,) (X) = (Y)} | ||
= | {(c,)} |
0 | 1 | 2 | 3 | 4 | 5 | ... | |
p | { c} | { c} | { c} | { c} | { c} | ... | |
q | { c} | { c, f_{1}} | { c, f_{1}, f_{2}} | { c, f_{1}, f_{2}, f_{3}} | ... |
A goal or query is a possibly empty conjunction of ()-atoms and a -constraint, written as:
An answer to a goal is a satisfiable constraint , such that p_{1}...p_{n}, is valid (given a set of clauses ) in the minimal model of . For example, for the previous definite clause program a possible answer to the goal
is the answer:
because
X_{0}l
c
q(X_{0}) is valid in the minimal model.