7.2 | Term unification

- `(=)/2` - Prolog unification
- `unify_with_occurs_check/2`
- `(\=)/2` - not Prolog unifiable

7.2.1 | `(=)/2` - Prolog unification

Templates

  `=(?term, ?term)`

Description
`Term1 = Term2` unifies `Term1` and `Term2`. No occurs check is done, i.e. this predicate does not check if a variable is unified with a compound term containing this variable (this can lead to an infinite loop).
`=` is a predefined infix operator (section 7.14.10).
Errors
None.
Portability
ISO predicate.

7.2.2 | `unify_with_occurs_check/2`

Templates

  `unify_with_occurs_check(?term, ?term)`

Description
`unify_with_occurs_check(Term1, Term2)` unifies `Term1` and `Term2`. The occurs check test is done (i.e. the unification fails if a variable is unified with a compound term containing this variable).
Errors
None.
Portability
ISO predicate.

7.2.3 | `(\=)/2` - not Prolog unifiable

Templates

  `\=(?term, ?term)`

Description
`Term1 \= Term2` succeeds if `Term1` and `Term2` are not unifiable (no occurs check is done). `
\=` is a predefined infix operator (section 7.14.10).
Errors
None.
Portability
ISO predicate.

Copyright (C) 1999-2002 Daniel Diaz
Verbatim copying and distribution of this entire article is permitted in any medium, provided this notice is preserved.
More about the copyright