next up previous
Next: Meta-rules: Deductive Control Up: Meta-rules Previous: Meta-rules

Meta-predicates in premises

The remaining pre-defined meta-predicates, not yet presented in Section 5, of Milord II with their meaning is presented next.

cardinal(list,n):
It evaluates to true if the length of list is equal to n. The first argument must be grounded before the evaluation is performed. If the second is a free variable, this predicate instantiates it. For instance cardinal((a,b,c),3)evaluates to true.

atom(expression):
It is a predicate that returns the value true if the expression evaluates to an atom. expression must be grounded.

member(el, list):
Evaluates to true if the element el belongs to list. For instance, member(d,(a,b,c)) returns false. Both arguments must be grounded.

equal(exp1,exp2), diff(exp1,exp2):
These operations compare two expressions returning true if they are equal or different respectively. Both expressions must be grounded.

{lt, le, eq, neq, ge, gt}(exp1,exp2):
These operations (less than, less or equal, equal, not equal, greater or equal and greater than, respectively) allow us to compare numbers or linguistic terms. For instance le(possible,definite) returns true if possible is less or equal than definite in the ordering established in the local logic of the module. Likewise ge(4,5) will evaluate to false. Again the expressions must be grounded.

intersection(list1,list2):
Returns true if the intersection of the two argument lists is not empty.

set_of_instances(var1, expression, var2):
Given an expression containing the variable var1, the variable var2 will be bound to a list containing all the instances of var1 that make the expression true. The expression can contain any meta-predicate expression combined by the next reification names for the connectives: conj for tex2html_wrap_inline6631 and neg for tex2html_wrap_inline6635 . var1 and var2 must be free. For instance, given the following predicate

set_of_instances($x,Conj(K(=(f,$x),int(s,s)),
                         member($x,list(a, b, c))),
                 $values)

the variable values will contain all the elements of the set fact f that are true and are either a, or b or c..

position(list, int, exp):
This meta-predicate is true if the value in list list at position int is the same as the value of exp. If exp is a free variable , the result will be true and exp will be bound to the value of list at position int. If the value of int is out of the limits of list the predicate will return the value false.

   figure3831
Figure 13: Syntax of deductive control definition.


next up previous
Next: Meta-rules: Deductive Control Up: Meta-rules Previous: Meta-rules

Josep Puyol-Gruart
Thu Oct 23 15:34:13 MET DST 1997