Did you know ... Search Documentation:
Pack logicmoo_utils -- prolog/logicmoo/no_loops.pl
PublicShow source

This module prevents infinite loops.

author
- Douglas R. Miles
license
- LGPL
 transitive(:PRED2X, +A, -B) is nondet
Transitive.
 transitive_lc(:PRED2X, +A, -B) is nondet
Transitive Not Loop Checked.
 transitive_except(+NotIn, :PRED2X, +A, -B) is nondet
Transitive Except.
 cyclic_break(?Cyclic) is nondet
Cyclic Break.
 lc_tcall(:GoalC) is nondet
Call Tabled
 loop_check_early(:Call, :LoopCaught) is nondet
Loop Check Early.
 loop_check(:Call) is nondet
Loop Check.
 loop_check(:Call, :OnLoopCaught) is nondet
Loop Check.
 no_loop_check(:Call) is nondet
No Loop Check.
 no_loop_check(:Call, :LoopCaught) is nondet
No Loop Check.
 no_loop_check_term(:Call, +Key, :LoopCaught) is nondet
Pushes a new Loop checking frame so all previous checks are suspended

no_loop_check_term(Call,_Key,_LoopCaught):-!,Call.

 is_loop_checked(?Call) is nondet
If Is A Loop Checked.
 loop_check_term(:Call, +Key, :LoopCaught) is nondet
Loop Check Term 50% of the time
 lco_goal_expansion(:TermB, :TermA) is nondet
Lco Call Expansion.

Undocumented predicates

The following predicates are exported, but not or incorrectly documented.

 current_loop_checker(Arg1)
 push_loop_checker
 pop_loop_checker
 is_parent_goal(Arg1)
 is_parent_goal(Arg1, Arg2)