This library offers a simple implementation of freeze/2, frozen/2, etc. [Col82,Nai85,Nai91,Car87] based on the use of attributed variables [Hol92,Hol90].
Usage:freeze(X,Goal)
If X is free delay Goal until X is non-variable.
Usage:frozen(X,Goal)
Goal is currently delayed until variable X becomes bound.