File "cyclic"
While the Dogelog Player Prolog system can meanwhile deal with
cyclic terms in its binary predicates such as (=)/2, (==)/2, etc..
and in its unary predicates such as copy_term/2, term_variables/2,
etc.. it appears nevertheless necessary to have additional
predicates such as acyclic_term/1 and acyclic_factorized/2 to
detect respectively produce acyclic terms.
The following cyclic term predicates are provided:
- unify_with_occurs_check(S, T): [ISO 8.2.2]
- The built-in succeeds when the Prolog terms S and T unify with
occurs check, otherwise the built-in fails.
- occurs_check(S, T): [ISO 7.3.3]
- The built-in succeeds when the Prolog variable S occurs in the
Prolog term T, otherwise the built-in fails.
- acyclic_term(T): [TC2 8.3.11]
- The predicate succeeds when the Prolog term T is an acyclic
term, otherwise the built-in fails.
- acyclic_decompose(L, R):
- The built-in succeeds in R with skeleton and substitution list
cells so that the substitions applied to the skeletons gives
identical the elements of the Prolog list L.