lib(suspend)

    This library provides the following:

    the suspend pseudo-solver for general arithmetic
    the suspend attribute

    The suspend pseudo-solver for arithmetic comparisons simply consists
    of suspending (lazy-checking) versions of all arithmetic comparisons
    (>/2, #>/2, etc).  These all suspend until all their variables
    have been instantiated, then they wake up and test the condition,
    succeeding or failing as appropriate. Together with a search routine,
    this provides the means to implement simple test-and-generate algorithms.

    The suspend-attribute is a basis for the implementation of similar
    user-defined data-driven computations that react to variable instantiation,
    variable binding, or general variable-constraining events.  The suspend-
    attribute defines the following three suspension lists (and thus waking
    conditions) for a variable:

    inst
    	woken when variable is instantiated.
    bound
    	woken when variable is bound, even to an other variable.
    constrained
    	woken when variable is (further) constrained.  This is
	triggered by the notify_constrained built-in.

    These three lists can be used as waking conditions in the suspend/3,4
    built-in. Variables using the suspend-attribute do not have to be
    declared specially, the attribute is implicitly created when needed.
    

