Module struc

We provide a couple of additional variables predicates. Prolog already provides an existential quantification operator in the form of (^)/2. This operator is only needed in certain circum-stance such as the frequent predicates from the module abstract or the module bags.

?- sys_term_kernel(X#p(X,Y),K).
K = p(X,Y)
?- sys_term_globals(X#p(X,Y),L).
L = [Y]

We introduce a further operator. We use the form (#)/2 for the universal quantification opera-tor. For performance reasons we have introduced the predicates sys_term_kernel/2 and sys_term_globals/2 which are the analogues to the corresponding goal predicates.

The following variable predicates are provided:

sys_term_kernel(G, K):
The predicate succeeds when K unifies with the kernel of the goal G.
sys_term_globals(G, L):
The predicate succeeds when L unifies with the global variables of the goal G.