Control constructs/predicates
Author(s): Daniel Cabeza, Manuel Hermenegildo.
This module contains the set of basic control predicates, except the predicates dealing with exceptions, which are in Exception and Signal handling.
Usage and interface
- Library usage:
These predicates/constructs are builtin in Ciao, so nothing special has to be done to use them. In fact, as they are hardwired in some parts of the system, most of them cannot be redefined. - Exports:
- Imports:
- System library modules:
assertions/native_props, debugger/debugger. - Packages:
prelude, nonpure, assertions, nortchecks, isomodes, nativeprops.
- System library modules:
Documentation on exports
Conjunction (P and Q).
(Trust) Usage:ISO
- The following properties should hold at call time:
(basic_props:callable/1)P is a term which represents a goal, i.e., an atom or a structure.
(basic_props:callable/1)Q is a term which represents a goal, i.e., an atom or a structure.
Disjunction (P or Q). Note that in Ciao |/2 is not equivalent to ;/2.
(Trust) Usage:ISO
- The following properties should hold at call time:
(basic_props:callable/1)P is a term which represents a goal, i.e., an atom or a structure.
(basic_props:callable/1)Q is a term which represents a goal, i.e., an atom or a structure.
If P then Q else fail, using first solution of P only. Also, (P -> Q ; R), if P then Q else R, using first solution of P only. No cuts are allowed in P.
(Trust) Usage:ISO
- The following properties should hold at call time:
(basic_props:callable/1)P is a term which represents a goal, i.e., an atom or a structure.
(basic_props:callable/1)Q is a term which represents a goal, i.e., an atom or a structure.
(Trust) Usage:ISO
Commit to any choices taken in the current predicate.
- The following properties hold globally:
(native_props:is_det/1)All calls of the form ! are deterministic.
(native_props:not_fails/1)All the calls of the form ! do not fail.
(native_props:relations/2)Goal ! produces 1 solutions.
Goal P is not provable (negation by failure). Fails if P has a solution, and succeeds otherwise. No cuts are allowed in P.
(Trust) Usage:ISO
- The following properties should hold at call time:
(basic_props:callable/1)P is a term which represents a goal, i.e., an atom or a structure. - The following properties hold globally:
(basic_props:native/2)This predicate is understood natively by CiaoPP as not(X).
(native_props:is_det/1)All calls of the form \+P are deterministic.
If P then Q else R, exploring all solutions of P. No cuts are allowed in P.
(Trust) Usage:if(A,B,C)
- The following properties should hold at call time:
(term_typing:nonvar/1)A is currently a term which is not a free variable.
(term_typing:nonvar/1)B is currently a term which is not a free variable.
(term_typing:nonvar/1)C is currently a term which is not a free variable.
(basic_props:callable/1)A is a term which represents a goal, i.e., an atom or a structure.
(basic_props:callable/1)B is a term which represents a goal, i.e., an atom or a structure.
(basic_props:callable/1)C is a term which represents a goal, i.e., an atom or a structure. - The following properties hold upon exit:
(basic_props:callable/1)A is a term which represents a goal, i.e., an atom or a structure.
(basic_props:callable/1)B is a term which represents a goal, i.e., an atom or a structure.
(basic_props:callable/1)C is a term which represents a goal, i.e., an atom or a structure.
(Trust) Usage:ISO
Succeed (noop).
- The following properties hold globally:
(basic_props:native/1)This predicate is understood natively by CiaoPP.
(basic_props:sideff/2)true is side-effect free.
(native_props:is_det/1)All calls of the form true are deterministic.
(native_props:not_fails/1)All the calls of the form true do not fail.
(native_props:relations/2)Goal true produces 1 solutions.
True:
- The following properties hold globally:
(basic_props:eval/1)true is evaluable at compile-time.
(Trust) Usage:ISO
Fail, backtrack immediately.
- The following properties hold globally:
(basic_props:native/1)This predicate is understood natively by CiaoPP.
(basic_props:sideff/2)fail is side-effect free.
(native_props:is_det/1)All calls of the form fail are deterministic.
(native_props:fails/1)Calls of the form fail fail.
(native_props:relations/2)Goal fail produces 0 solutions.
True:
- The following properties hold globally:
(basic_props:eval/1)fail is evaluable at compile-time.
True:
- The following properties hold globally:
(basic_props:equiv/2)fail is equivalent to fail.
(Trust) Usage:ISO
Generates an infinite sequence of backtracking choices.
- The following properties hold globally:
(basic_props:native/1)This predicate is understood natively by CiaoPP.
(basic_props:sideff/2)repeat is side-effect free.
True:
- The following properties hold globally:
(basic_props:sideff/2)false is side-effect free.
(basic_props:eval/1)false is evaluable at compile-time.
True:
- The following properties hold globally:
(basic_props:sideff/2)otherwise is side-effect free.
(basic_props:eval/1)otherwise is evaluable at compile-time.
Known bugs and planned improvements
- Run-time checks have been reported not to work with this code. That means that either the assertions here, or the code that implements the run-time checks are erroneous.