Builtin predicates - Term unification
Predicates in this group take two terms as arguments and unifies them under various conditions.
(=)/2, (!=)/2, unifiable/2, unifiable_one_way/2, unify_one_way/2 unify_with_occurs_check/2
  (=)/2 - unifies two terms.
- Usage
 - Term1 = Term2 
 
- unify_with_occurs_check(Term1, Term2)
 
- Description
 - If Term1 and Term2 can be unified, then perform variable substitutions to unify them and succeed. Fails otherwise. 
 
- An occurs check is performed to ensure that circular terms will not be created by the unification. Therefore, in this implementation the Standard Prolog predicate unify_with_occurs_check/2 is identical to (=)/2.
 
- Examples
  f(X,b) = f(a,Y)      succeeds with X = a, Y = b
 f(X,b) = g(X,b)      fails
 X = f(X)             fails due to occurs check
- Compatibility
 - Standard Prolog
 
- See Also
 - (!=)/2, unifiable/2, unify_one_way/2, (:=)/2
 
  (!=)/2 - tests if two terms are not unifiable.
- Usage
 - Term1 != Term2 
 
- Term1 \= Term2 
 
- Description
 - If Term1 and Term2 can not be unified, then succeed without modifying Term1 or Term2. Fails otherwise.
 
- Examples
  f(X,b) != f(a,Y)     fails
 f(X,b) != g(X,b)     succeeds
 X != f(X)            succeeds
- Compatibility
 - The (\=)/2 predicate is from Standard Prolog. The new name (!=)/2 is the recommended spelling.
 
- See Also
 - (=)/2, unifiable/2, unify_one_way/2
 
  unifiable/2 - tests if two terms are unifiable.
- Usage
 - unifiable(Term1, Term2)
 
- Description
 - If Term1 and Term2 can be unified, then succeed without modifying Term1 or Term2. Fails otherwise.
 
- Examples
  unifiable(f(X,b), f(a,Y))    succeeds without modifying X or Y
 unifiable(f(X,b), g(X,b))    fails
 unifiable(X, f(X))           fails due to occurs check
- See Also
 - (=)/2, (!=)/2, unifiable_one_way/2
 
  unifiable_one_way/2 - tests if two terms are unifiable by only binding variables in the first term.
- Usage
 - unifiable_one_way(Term1, Term2)
 
- Description
 - If Term1 and Term2 can be unified without modifying Term2, then succeed without modifying Term1 or Term2. Fails otherwise.
 
- Examples
  unifiable_one_way(X, Y + Z)  succeeds
 unifiable_one_way(Y + Z, X)  fails
 unifiable_one_way(X, Y)      succeeds
- See Also
 - (=)/2, (!=)/2, unifiable/2, unify_one_way/2, Input-only arguments
 
  unify_one_way/2 - unifies two terms, but only bind variables in the first term.
- Usage
 - unify_one_way(Term1, Term2)
 
- Description
 - If Term1 and Term2 can be unified without modifying Term2, then succeed. Fails otherwise.
 
- Examples
  unify_one_way(X, Y + Z)      succeeds, binding X to Y + Z
 unify_one_way(Y + Z, X)      fails, would cause X to be modified
 unify_one_way(X, Y)          succeeds, binding X to Y
- See Also
 - (=)/2, (!=)/2, unifiable_one_way/2, Input-only arguments