Logical assignment of Prolog terms

This is an almost portable, almost logical implementation of destructive assignment.
  1. Assignable terms and logical assignment
    assignable(Var) makes Var an assignable term. Initial state of it is an empty assignable term. An assignable terms have a value, and the value may be changed.
  2. Unification between assignable terms.
    Also, the results of decomposing an assignable term using arg/3,functor/3,=../2 are undefined.
  3. History
    01/03/2005 Error checking and and <+compatibility with Prolog implementations.
    12/31/2004 First distribution.
  4. Implementation
    is the implementation (using setarg/3).
    And the pure logical subset implementation is also available at

    Implementations and examples are checked against SWI-Prolog, GNU-Prolog and K-Prolog, distributed under Open Software License version 2.1, with NO WARRANTY.
  5. Example programs


(C) Nobukuni Kino, KLS Research, Inc.
Comments and questions are welcome. kino@kprolog.com