next up previous contents index
Next: Nonlinear and Delayed Constraints Up: System Predicates Previous: Miscellaneous Facilities

Special Facilities

  These are unsupported facilities which may be used to gain more efficiency under certain circumstances or are experimental in nature. They should be used with care and may change or disappear.

fassert(+R)

  Like assert/1 but it does not take into account meta-level constraints or arithmetic constraints and is like assert in PROLOG. Consequently it is faster than assert/1 but makes less sense when there are constraints involved. When the rules are ground, fassert behaves the same as assert.

fasserta(+R)

 
fassertz(+R)

  Ditto for asserta/1 and assertz/1.

bsphackfloatpenalty -Mii floatpenalty-Miii parmoderrfloatpenalty@ nextcurrboxfreelist currbox-2floatpenalty@ fltovf currboxtempboxa tempboxa @floatesphackbsphackfloatpenalty -Mii floatpenalty-Miii parmoderrfloatpenalty@ nextcurrboxfreelist currbox-3floatpenalty@ fltovf currboxtempboxa tempboxa @floatesphack

$call(+X)

  Meta level call on a single user-defined predicate only. No compound goals or system predicates are allowed. bsphackfloatpenalty -Mii floatpenalty-Miii parmoderrfloatpenalty@ nextcurrboxfreelist currbox-4floatpenalty@ fltovf currboxtempboxa tempboxa @floatesphack

implicit

  Implicit equalities are detected. This is the default. A set of inequalities can sometimes be equivalent to some equations; and these are known as implicit equalities. A trivial example of an implicit equation is the following:


X >= 0, X <= 0    is equivalent to    X = 0.

The implicit/0 flag controls whether these implicit equations are detected by the constraint solver. One caveat to note with the use of these flags is that switching them on or off should be applied betweem different goal executions and not during an actual execution. Another important point is that, when there are nonlinear constraints, turning off implicit equations may lead to delayed constraints not being awakened.

noimplicit

  Turns off detection of implicit equalities. These are equations which are implied by the collection of inequality constraints. The implication of this is that delayed constraints which would otherwise be awakened may continue to be delayed instead. Constraint solving may or may not be faster with noimplicit.

partial_implicit

  Detects only some implicit equalities. This may be faster than implicit.

bsphackfloatpenalty -Mii floatpenalty-Miii parmoderrfloatpenalty@ nextcurrboxfreelist currbox-2floatpenalty@ fltovf currboxtempboxa tempboxa @floatesphackbsphackfloatpenalty -Mii floatpenalty-Miii parmoderrfloatpenalty@ nextcurrboxfreelist currbox-3floatpenalty@ fltovf currboxtempboxa tempboxa @floatesphack

set_counter(+C, +V)

   This is a global counter which is not changed by backtracking. Sets the counter with the atomic name C to the real number value V. The counter name can be any atomic name.

counter_value(+C, ?V)

  V is equated with the value of counter C.

add_counter(+C, +V)

  The counter C is incremented by V. bsphackfloatpenalty -Mii floatpenalty-Miii parmoderrfloatpenalty@ nextcurrboxfreelist currbox-4floatpenalty@ fltovf currboxtempboxa tempboxa @floatesphack


next up previous contents index
Next: Nonlinear and Delayed Constraints Up: System Predicates Previous: Miscellaneous Facilities

Alan Borning
Fri Oct 8 12:51:18 PDT 1999