/* Generated by CHR bootstrap compiler From: guard_entailment.chr Date: [84,104,117,32,83,101,112,32,50,56,32,49,51,58,50,53,58,53,50,32,50,48,48,54,10] DO NOT EDIT. EDIT THE CHR FILE INSTEAD */ :-module(guard_entailment,[entails_guard/2,simplify_guards/5]). :-use_module(chr_runtime). :-style_check((-singleton)). :-style_check((-discontiguous)). :-use_module(library(lists)). :-use_module(hprolog). :-use_module(builtins). entails_guard(A,B) :- copy_term_nat((A,B),(C,D)), term_variables(C,E), variables(E), entails_guard2(C), !, test(D), !, cleanup. entails_guard2([]). entails_guard2([A|B]) :- known(A), entails_guard2(B). simplify_guards(A,B,C,D,E) :- copy_term_nat((A,C),(F,G)), term_variables(F,H), variables(H), entails_guard2(F), !, simplify(G,I), simplified(C,I,D,B,E), !, cleanup. simplified([],[],[],A,A). simplified([A|B],[keep|C],[A|D],E,F) :- simplified(B,C,D,E,F). simplified([_|_],[fail|_],fail,A,A). simplified([A|B],[true|C],[D|E],F,G) :- builtins:binds_b(A,H), term_variables(B,I), intersect_eq(H,I,J), !, ( J=[] -> term_variables(F,K), intersect_eq(H,K,L), !, ( L=[] -> D=true, G=M ; D=true, G=(A,M) ) ; D=A, G=M ), simplified(B,C,E,F,M). simplify([],[]). simplify([A|B],[C|D]) :- ( \+try(true,A) -> C=true ; builtins:negate_b(A,E), ( \+try(true,E) -> C=fail ; C=keep ) ), known(A), simplify(B,D). try(A,B) :- ( known(A) -> true ; format(' ERROR: entailment checker: this is not supposed to happen. ',[]) ), ( test(B) -> fail ; true ). lookup([],[],_,_) :- fail. lookup([A|B],[C|D],E,F) :- ( E==A -> F=C ; lookup(B,D,E,F) ). add_args_unif([],[],true). add_args_unif([A|B],[C|D],(A=C,E)) :- add_args_unif(B,D,E). add_args_nunif([],[],fail). add_args_nunif([A|B],[C|D],(A\=C;E)) :- add_args_nunif(B,D,E). add_args_nmatch([],[],fail). add_args_nmatch([A|B],[C|D],(A\==C;E)) :- add_args_nmatch(B,D,E). all_unique_vars(A,B) :- all_unique_vars(A,B,[]). all_unique_vars([],_,_). all_unique_vars([A|B],C,D) :- var(A), \+memberchk_eq(A,C), \+memberchk_eq(A,D), all_unique_vars(B,[A|D]). :-use_module(chr(chr_runtime)). :-use_module(chr(chr_hashtable_store)). :-use_module(library('clp/clp_events')). 'attach_known/1'([],_). 'attach_known/1'([A|B],C) :- ( get_attr(A,guard_entailment,H) -> H=v(F,D,E), ( F/\1=:=1 -> put_attr(A,guard_entailment,v(F,[C|D],E)) ; G is F\/1, put_attr(A,guard_entailment,v(G,[C],E)) ) ; put_attr(A,guard_entailment,v(1,[C],[])) ), true, 'attach_known/1'(B,C). 'detach_known/1'([],_). 'detach_known/1'([A|B],C) :- ( get_attr(A,guard_entailment,I) -> I=v(F,D,E), ( F/\1=:=1 -> 'chr sbag_del_element'(D,C,H), ( H==[] -> G is F/\ -2, ( G==0 -> del_attr(A,guard_entailment) ; put_attr(A,guard_entailment,v(G,[],E)) ) ; put_attr(A,guard_entailment,v(F,H,E)) ) ; true ) ; true ), 'detach_known/1'(B,C). 'attach_variables/1'([],_). 'attach_variables/1'([A|B],C) :- ( get_attr(A,guard_entailment,H) -> H=v(F,D,E), ( F/\2=:=2 -> put_attr(A,guard_entailment,v(F,D,[C|E])) ; G is F\/2, put_attr(A,guard_entailment,v(G,D,[C])) ) ; put_attr(A,guard_entailment,v(2,[],[C])) ), true, 'attach_variables/1'(B,C). 'detach_variables/1'([],_). 'detach_variables/1'([A|B],C) :- ( get_attr(A,guard_entailment,I) -> I=v(F,D,E), ( F/\2=:=2 -> 'chr sbag_del_element'(E,C,H), ( H==[] -> G is F/\ -3, ( G==0 -> del_attr(A,guard_entailment) ; put_attr(A,guard_entailment,v(G,D,[])) ) ; put_attr(A,guard_entailment,v(F,D,H)) ) ; true ) ; true ), 'detach_variables/1'(B,C). '$indexed_variables'(B,A) :- B=known(_), term_variables(B,A). '$indexed_variables'(B,A) :- B=variables(_), term_variables(B,A). attach_increment([],_). attach_increment([G|H],v(C,A,B)) :- 'chr not_locked'(G), ( get_attr(G,guard_entailment,N) -> N=v(F,D,E), sort(D,I), 'chr merge_attributes'(A,I,J), sort(E,K), 'chr merge_attributes'(B,K,L), M is C\/F, put_attr(G,guard_entailment,v(M,J,L)) ; put_attr(G,guard_entailment,v(C,A,B)) ), attach_increment(H,v(C,A,B)). attr_unify_hook(v(C,A,B),N) :- sort(A,G), sort(B,H), ( var(N) -> ( get_attr(N,guard_entailment,O) -> O=v(F,D,E), sort(D,I), 'chr merge_attributes'(G,I,J), sort(E,K), 'chr merge_attributes'(H,K,L), M is C\/F, put_attr(N,guard_entailment,v(M,J,L)), 'chr run_suspensions_loop'([J,L]) ; put_attr(N,guard_entailment,v(C,G,H)), 'chr run_suspensions_loop'([G,H]) ) ; ( compound(N) -> term_variables(N,P), attach_increment(P,v(C,G,H)) ; true ), 'chr run_suspensions_loop'([G,H]) ). activate_constraint(A,B,C,D) :- arg(2,C,E), E=mutable(F), 'chr update_mutable'(active,E), ( nonvar(D) -> true ; arg(4,C,G), G=mutable(H), D is H+1, 'chr update_mutable'(D,G) ), ( compound(F) -> term_variables(F,B), 'chr none_locked'(B), A=yes ; ( F==removed -> chr_indexed_variables(C,B), A=yes ) ; B=[], A=no ). remove_constraint_internal(A,B,C) :- arg(2,A,D), D=mutable(E), 'chr update_mutable'(removed,D), ( compound(E) -> B=[], C=no ; ( E==removed -> B=[], C=no ) ; C=yes, chr_indexed_variables(A,B) ). allocate_constraint(A,B,C,D) :- B=..[suspension,E,F,A,G,H,C|D], G=mutable(0), 'chr empty_history'(I), H=mutable(I), chr_indexed_variables(B,J), F=mutable(passive(J)), 'chr gen_id'(E). insert_constraint_internal(yes,A,B,C,D,E) :- B=..[suspension,F,G,C,H,I,D|E], chr_indexed_variables(B,A), 'chr none_locked'(A), G=mutable(active), H=mutable(0), I=mutable(J), 'chr empty_history'(J), 'chr gen_id'(F). chr_indexed_variables(A,C) :- A=..[_,_,_,_,_,_,B|_], '$indexed_variables'(B,C). '$insert_in_store_known/1'(A) :- true, 'chr global_term_ref_1'(F), ( get_attr(F,guard_entailment,G) -> G=v(D,B,C), ( D/\1=:=1 -> put_attr(F,guard_entailment,v(D,[A|B],C)) ; E is D\/1, put_attr(F,guard_entailment,v(E,[A],C)) ) ; put_attr(F,guard_entailment,v(1,[A],[])) ). '$delete_from_store_known/1'(A) :- true, 'chr global_term_ref_1'(G), ( get_attr(G,guard_entailment,H) -> H=v(D,B,C), ( D/\1=:=1 -> 'chr sbag_del_element'(B,A,F), ( F==[] -> E is D/\ -2, ( E==0 -> del_attr(G,guard_entailment) ; put_attr(G,guard_entailment,v(E,[],C)) ) ; put_attr(G,guard_entailment,v(D,F,C)) ) ; true ) ; true ). '$insert_in_store_variables/1'(A) :- true, 'chr global_term_ref_1'(F), ( get_attr(F,guard_entailment,G) -> G=v(D,B,C), ( D/\2=:=2 -> put_attr(F,guard_entailment,v(D,B,[A|C])) ; E is D\/2, put_attr(F,guard_entailment,v(E,B,[A])) ) ; put_attr(F,guard_entailment,v(2,[],[A])) ). '$delete_from_store_variables/1'(A) :- true, 'chr global_term_ref_1'(G), ( get_attr(G,guard_entailment,H) -> H=v(D,B,C), ( D/\2=:=2 -> 'chr sbag_del_element'(C,A,F), ( F==[] -> E is D/\ -3, ( E==0 -> del_attr(G,guard_entailment) ; put_attr(G,guard_entailment,v(E,B,[])) ) ; put_attr(G,guard_entailment,v(D,B,F)) ) ; true ) ; true ). '$enumerate_suspensions'(A) :- ( 'chr global_term_ref_1'(B), get_attr(B,guard_entailment,C), arg(2,C,D), 'chr sbag_member'(A,D) ; 'chr global_term_ref_1'(E), get_attr(E,guard_entailment,F), arg(3,F,G), 'chr sbag_member'(A,G) ). known(A) :- 'known/1__0'(A,_). 'known/1__0'(A,B) :- 'chr via_1'(A,E), get_attr(E,guard_entailment,F), F=v(H,G,_), H/\1=:=1, 'chr sbag_member'(C,G), C=suspension(_,mutable(active),_,_,_,_,D), D==A, !, ( var(B) -> true ; remove_constraint_internal(B,I,J), ( J==yes -> '$delete_from_store_known/1'(B), 'detach_known/1'(I,B) ; true ) ). 'known/1__0'(A,B) :- nonvar(A), A=(C>D), !, ( var(B) -> true ; remove_constraint_internal(B,E,F), ( F==yes -> '$delete_from_store_known/1'(B), 'detach_known/1'(E,B) ; true ) ), known(D=D), !, ( var(B) -> true ; remove_constraint_internal(B,E,F), ( F==yes -> '$delete_from_store_known/1'(B), 'detach_known/1'(E,B) ; true ) ), known(D= true ; remove_constraint_internal(B,E,F), ( F==yes -> '$delete_from_store_known/1'(B), 'detach_known/1'(E,B) ; true ) ), known(C= true ; remove_constraint_internal(B,E,F), ( F==yes -> '$delete_from_store_known/1'(B), 'detach_known/1'(E,B) ; true ) ), known(C=:=D). 'known/1__0'(A,B) :- nonvar(A), A=(C==D), ( var(B) -> allocate_constraint(guard_entailment:'known/1__0'(A,B),B,known(A),[A]) ; true ), 'chr novel_production'(B,21), number(C), !, 'chr extend_history'(B,21), activate_constraint(F,E,B,G), ( F==yes -> '$insert_in_store_known/1'(B), 'attach_known/1'(E,B) ; true ), known(C=:=D), ( B=suspension(_,mutable(active),_,mutable(G),_,_,_) -> 'chr update_mutable'(inactive,mutable(active)), 'known/1__1'(A,B) ; true ). 'known/1__0'(A,B) :- ( var(B) -> allocate_constraint(guard_entailment:'known/1__0'(A,B),B,known(A),[A]) ; true ), 'known/1__1'(A,B). 'known/1__1'(A,B) :- nonvar(A), A=(C==D), 'chr novel_production'(B,22), number(D), !, 'chr extend_history'(B,22), activate_constraint(F,E,B,G), ( F==yes -> '$insert_in_store_known/1'(B), 'attach_known/1'(E,B) ; true ), known(C=:=D), ( B=suspension(_,mutable(active),_,mutable(G),_,_,_) -> 'chr update_mutable'(inactive,mutable(active)), 'known/1__2'(A,B) ; true ). 'known/1__1'(A,B) :- 'known/1__2'(A,B). 'known/1__2'(A,B) :- nonvar(A), A=(C\==D), 'chr novel_production'(B,23), number(C), !, 'chr extend_history'(B,23), activate_constraint(F,E,B,G), ( F==yes -> '$insert_in_store_known/1'(B), 'attach_known/1'(E,B) ; true ), known(C=\=D), ( B=suspension(_,mutable(active),_,mutable(G),_,_,_) -> 'chr update_mutable'(inactive,mutable(active)), 'known/1__3'(A,B) ; true ). 'known/1__2'(A,B) :- 'known/1__3'(A,B). 'known/1__3'(A,B) :- nonvar(A), A=(C\==D), 'chr novel_production'(B,24), number(D), !, 'chr extend_history'(B,24), activate_constraint(F,E,B,G), ( F==yes -> '$insert_in_store_known/1'(B), 'attach_known/1'(E,B) ; true ), known(C=\=D), ( B=suspension(_,mutable(active),_,mutable(G),_,_,_) -> 'chr update_mutable'(inactive,mutable(active)), 'known/1__4'(A,B) ; true ). 'known/1__3'(A,B) :- 'known/1__4'(A,B). 'known/1__4'(_,A) :- 'chr global_term_ref_1'(D), get_attr(D,guard_entailment,E), E=v(G,F,_), G/\1=:=1, 'chr sbag_member'(B,F), B=suspension(_,mutable(active),_,_,_,_,C), C==fail, !, ( var(A) -> true ; remove_constraint_internal(A,H,I), ( I==yes -> '$delete_from_store_known/1'(A), 'detach_known/1'(H,A) ; true ) ). 'known/1__4'(A,B) :- A==fail, 'chr global_term_ref_1'(C), get_attr(C,guard_entailment,D), D=v(F,E,_), F/\1=:=1, !, 'known/1__4__0'(E,A,B). 'known/1__4__0'([],A,B) :- 'known/1__5'(A,B). 'known/1__4__0'([C|D],A,B) :- ( C=suspension(_,mutable(active),_,_,_,_,_) -> remove_constraint_internal(C,E,F), ( F==yes -> '$delete_from_store_known/1'(C), 'detach_known/1'(E,C) ; true ), 'known/1__4__0'(D,A,B) ; 'known/1__4__0'(D,A,B) ). 'known/1__4'(A,B) :- 'known/1__5'(A,B). 'known/1__5'(A,B) :- nonvar(A), A=(C,D), !, ( var(B) -> true ; remove_constraint_internal(B,E,F), ( F==yes -> '$delete_from_store_known/1'(B), 'detach_known/1'(E,B) ; true ) ), known(C), known(D). 'known/1__5'(A,B) :- nonvar(A), A=(C=:=D), D==C, !, ( var(B) -> true ; remove_constraint_internal(B,E,F), ( F==yes -> '$delete_from_store_known/1'(B), 'detach_known/1'(E,B) ; true ) ). 'known/1__5'(A,B) :- nonvar(A), A=(C==D), D==C, !, ( var(B) -> true ; remove_constraint_internal(B,E,F), ( F==yes -> '$delete_from_store_known/1'(B), 'detach_known/1'(E,B) ; true ) ). 'known/1__5'(A,B) :- nonvar(A), A=(C= true ; remove_constraint_internal(B,E,F), ( F==yes -> '$delete_from_store_known/1'(B), 'detach_known/1'(E,B) ; true ) ). 'known/1__5'(A,B) :- nonvar(A), A=(C=D), D==C, !, ( var(B) -> true ; remove_constraint_internal(B,E,F), ( F==yes -> '$delete_from_store_known/1'(B), 'detach_known/1'(E,B) ; true ) ). 'known/1__5'(A,B) :- nonvar(A), A=(C=D), var(C), !, ( var(B) -> true ; remove_constraint_internal(B,E,F), ( F==yes -> '$delete_from_store_known/1'(B), 'detach_known/1'(E,B) ; true ) ), C=D. 'known/1__5'(A,B) :- nonvar(A), A=(C=D), var(D), !, ( var(B) -> true ; remove_constraint_internal(B,E,F), ( F==yes -> '$delete_from_store_known/1'(B), 'detach_known/1'(E,B) ; true ) ), C=D. 'known/1__5'(A,B) :- nonvar(A), A=(C\=D), var(D), var(C), 'chr lock'(C), 'chr lock'(D), C=D, chr_runtime:unlock(C), chr_runtime:unlock(D), !, ( var(B) -> true ; remove_constraint_internal(B,E,F), ( F==yes -> '$delete_from_store_known/1'(B), 'detach_known/1'(E,B) ; true ) ), known(fail). 'known/1__5'(A,B) :- nonvar(A), A=(C\=D), ground(D), ground(C), 'chr lock'(C), 'chr lock'(D), C=D, chr_runtime:unlock(C), chr_runtime:unlock(D), !, ( var(B) -> true ; remove_constraint_internal(B,E,F), ( F==yes -> '$delete_from_store_known/1'(B), 'detach_known/1'(E,B) ; true ) ), known(fail). 'known/1__5'(A,B) :- nonvar(A), A=functor(C,D,E), ground(E), ground(D), var(C), 'chr global_term_ref_1'(H), get_attr(H,guard_entailment,I), I=v(K,_,J), K/\2=:=2, 'chr sbag_member'(F,J), F=suspension(_,mutable(active),_,_,_,_,G), !, remove_constraint_internal(F,N,O), ( O==yes -> '$delete_from_store_variables/1'(F), 'detach_variables/1'(N,F) ; true ), ( var(B) -> true ; remove_constraint_internal(B,P,Q), ( Q==yes -> '$delete_from_store_known/1'(B), 'detach_known/1'(P,B) ; true ) ), functor(C,D,E), C=..[_|L], append(L,G,M), variables(M). 'known/1__5'(A,B) :- nonvar(A), A=functor(C,D,E), nonvar(C), 'chr lock'(C), 'chr lock'(D), 'chr lock'(E), \+functor(C,D,E), chr_runtime:unlock(C), chr_runtime:unlock(D), chr_runtime:unlock(E), !, ( var(B) -> true ; remove_constraint_internal(B,F,G), ( G==yes -> '$delete_from_store_known/1'(B), 'detach_known/1'(F,B) ; true ) ), known(fail). 'known/1__5'(A,B) :- nonvar(A), A=(\+C), nonvar(C), C=functor(D,E,F), nonvar(D), 'chr lock'(D), 'chr lock'(E), 'chr lock'(F), functor(D,E,F), chr_runtime:unlock(D), chr_runtime:unlock(E), chr_runtime:unlock(F), !, ( var(B) -> true ; remove_constraint_internal(B,G,H), ( H==yes -> '$delete_from_store_known/1'(B), 'detach_known/1'(G,B) ; true ) ), known(fail). 'known/1__5'(A,B) :- nonvar(A), A=functor(C,D,E), nonvar(E), nonvar(D), 'chr via_1'(C,H), get_attr(H,guard_entailment,I), I=v(K,J,_), K/\1=:=1, 'chr sbag_member'(F,J), F=suspension(_,mutable(active),_,_,_,_,G), nonvar(G), G=functor(L,M,N), L==C, nonvar(N), nonvar(M), !, remove_constraint_internal(F,O,P), ( P==yes -> '$delete_from_store_known/1'(F), 'detach_known/1'(O,F) ; true ), ( var(B) -> true ; remove_constraint_internal(B,Q,R), ( R==yes -> '$delete_from_store_known/1'(B), 'detach_known/1'(Q,B) ; true ) ), known(fail). 'known/1__5'(A,B) :- nonvar(A), A=(C\=D), D==C, !, ( var(B) -> true ; remove_constraint_internal(B,E,F), ( F==yes -> '$delete_from_store_known/1'(B), 'detach_known/1'(E,B) ; true ) ), known(fail). 'known/1__5'(A,B) :- nonvar(A), A=(C=D), 'chr lock'(C), functor(C,E,F), chr_runtime:unlock(C), !, ( var(B) -> true ; remove_constraint_internal(B,G,H), ( H==yes -> '$delete_from_store_known/1'(B), 'detach_known/1'(G,B) ; true ) ), ( functor(D,E,F), C=D -> true ; known(fail) ). 'known/1__5'(A,B) :- nonvar(A), A=(C\=D), nonvar(D), var(C), 'chr lock'(D), functor(D,E,F), F>0, chr_runtime:unlock(D), !, ( var(B) -> true ; remove_constraint_internal(B,L,M), ( M==yes -> '$delete_from_store_known/1'(B), 'detach_known/1'(L,B) ; true ) ), length(G,F), D=..[E|H], I=..[E|G], add_args_nunif(H,G,J), K=(\+functor(C,E,F);C=I,J), known(K). 'known/1__5'(A,B) :- nonvar(A), A=(C\=D), nonvar(D), nonvar(C), 'chr lock'(C), functor(C,E,F), chr_runtime:unlock(C), !, ( var(B) -> true ; remove_constraint_internal(B,J,K), ( K==yes -> '$delete_from_store_known/1'(B), 'detach_known/1'(J,B) ; true ) ), ( functor(D,E,F) -> C=..[E|G], D=..[E|H], add_args_nunif(G,H,I), known(I) ; true ). 'known/1__5'(A,B) :- nonvar(A), A=(C\=D), 'chr novel_production'(B,43), !, 'chr extend_history'(B,43), activate_constraint(F,E,B,G), ( F==yes -> '$insert_in_store_known/1'(B), 'attach_known/1'(E,B) ; true ), known(D\=C), ( B=suspension(_,mutable(active),_,mutable(G),_,_,_) -> 'chr update_mutable'(inactive,mutable(active)), 'known/1__6'(A,B) ; true ). 'known/1__5'(A,B) :- 'known/1__6'(A,B). 'known/1__6'(A,B) :- nonvar(A), A=(C=D, !, ( var(B) -> true ; remove_constraint_internal(B,E,F), ( F==yes -> '$delete_from_store_known/1'(B), 'detach_known/1'(E,B) ; true ) ), known(fail). 'known/1__6'(A,B) :- nonvar(A), A=(C= true ; remove_constraint_internal(B,M,N), ( N==yes -> '$delete_from_store_known/1'(B), 'detach_known/1'(M,B) ; true ) ). 'known/1__6'(A,B) :- nonvar(A), A=(C= remove_constraint_internal(F,J,K), ( K==yes -> '$delete_from_store_known/1'(F), 'detach_known/1'(J,F) ; true ), 'known/1__6__0'(I,A,B,C,D) ; 'known/1__6__0'(I,A,B,C,D) ). 'known/1__6'(A,B) :- 'known/1__7'(A,B). 'known/1__7'(A,B) :- nonvar(A), A=(C= true ; remove_constraint_internal(B,M,N), ( N==yes -> '$delete_from_store_known/1'(B), 'detach_known/1'(M,B) ; true ) ). 'known/1__7'(A,B) :- nonvar(A), A=(C= remove_constraint_internal(F,J,K), ( K==yes -> '$delete_from_store_known/1'(F), 'detach_known/1'(J,F) ; true ), 'known/1__7__0'(I,A,B,C,D) ; 'known/1__7__0'(I,A,B,C,D) ). 'known/1__7'(A,B) :- 'known/1__8'(A,B). 'known/1__8'(A,B) :- nonvar(A), A=(C= '$delete_from_store_known/1'(E), 'detach_known/1'(M,E) ; true ), ( var(B) -> true ; remove_constraint_internal(B,O,P), ( P==yes -> '$delete_from_store_known/1'(B), 'detach_known/1'(O,B) ; true ) ), known(C=:=D). 'known/1__8'(A,B) :- nonvar(A), A=(C= 'chr extend_history'(B,M), activate_constraint(K,J,B,L), ( K==yes -> '$insert_in_store_known/1'(B), 'attach_known/1'(J,B) ; true ), known(C= 'chr update_mutable'(inactive,mutable(active)), 'known/1__8__0'(G,A,B,C,D) ; true ) ; 'known/1__8__0'(G,A,B,C,D) ). 'known/1__8'(A,B) :- 'known/1__9'(A,B). 'known/1__9'(A,B) :- nonvar(A), A=(C= 'chr extend_history'(B,M), activate_constraint(K,J,B,L), ( K==yes -> '$insert_in_store_known/1'(B), 'attach_known/1'(J,B) ; true ), known(H= 'chr update_mutable'(inactive,mutable(active)), 'known/1__9__0'(G,A,B,C,D) ; true ) ; 'known/1__9__0'(G,A,B,C,D) ). 'known/1__9'(A,B) :- 'known/1__10'(A,B). 'known/1__10'(A,B) :- nonvar(A), A=(C= 'known/1__10__1'(K,H,F,M,A,B,C,D) ; 'known/1__10__0'(M,A,B,C,D) ). 'known/1__10__1'([],_,_,E,A,B,C,D) :- 'known/1__10__0'(E,A,B,C,D). 'known/1__10__1'([I|P],F,A,G,B,C,D,E) :- ( I=suspension(_,mutable(active),_,_,_,_,H), nonvar(H), H=(J= 'known/1__10__2'(N,I,P,F,A,G,B,C,D,E) ; 'known/1__10__1'(P,F,A,G,B,C,D,E) ). 'known/1__10__2'([],_,H,F,E,G,A,B,C,D) :- 'known/1__10__1'(H,F,E,G,A,B,C,D). 'known/1__10__2'([K|L],A,I,G,B,H,C,D,E,F) :- ( K=suspension(_,mutable(active),_,_,_,_,J), K\==B, nonvar(J), J=(M=\=N), M==E, N==F, R=t(49,D,K,A,B), 'chr novel_production'(D,R), 'chr novel_production'(K,R), 'chr novel_production'(A,R), 'chr novel_production'(B,R) -> 'chr extend_history'(D,R), activate_constraint(P,O,D,Q), ( P==yes -> '$insert_in_store_known/1'(D), 'attach_known/1'(O,D) ; true ), known(E=\=G), ( D=suspension(_,mutable(active),_,mutable(Q),_,_,_) -> 'chr update_mutable'(inactive,mutable(active)), 'known/1__10__2'(L,A,I,G,B,H,C,D,E,F) ; true ) ; 'known/1__10__2'(L,A,I,G,B,H,C,D,E,F) ). 'known/1__10'(A,B) :- 'known/1__11'(A,B). 'known/1__11'(A,B) :- nonvar(A), A=(C=\=D), 'chr via_1'(D,E), get_attr(E,guard_entailment,F), F=v(H,G,_), H/\1=:=1, !, 'known/1__11__0'(G,A,B,C,D). 'known/1__11__0'([],A,B,_,_) :- 'known/1__12'(A,B). 'known/1__11__0'([F|M],A,B,C,D) :- ( F=suspension(_,mutable(active),_,_,_,_,E), nonvar(E), E=(G=\=H), G==D, 'chr via_2'(D,H,I), get_attr(I,guard_entailment,J), J=v(L,K,_), L/\1=:=1 -> 'known/1__11__1'(K,H,F,M,A,B,C,D) ; 'known/1__11__0'(M,A,B,C,D) ). 'known/1__11__1'([],_,_,E,A,B,C,D) :- 'known/1__11__0'(E,A,B,C,D). 'known/1__11__1'([I|P],F,A,G,B,C,D,E) :- ( I=suspension(_,mutable(active),_,_,_,_,H), nonvar(H), H=(J= 'known/1__11__2'(N,I,P,F,A,G,B,C,D,E) ; 'known/1__11__1'(P,F,A,G,B,C,D,E) ). 'known/1__11__2'([],_,H,F,E,G,A,B,C,D) :- 'known/1__11__1'(H,F,E,G,A,B,C,D). 'known/1__11__2'([K|L],A,I,G,B,H,C,D,E,F) :- ( K=suspension(_,mutable(active),_,_,_,_,J), K\==A, nonvar(J), J=(M= 'chr extend_history'(D,R), activate_constraint(P,O,D,Q), ( P==yes -> '$insert_in_store_known/1'(D), 'attach_known/1'(O,D) ; true ), known(E=\=G), ( D=suspension(_,mutable(active),_,mutable(Q),_,_,_) -> 'chr update_mutable'(inactive,mutable(active)), 'known/1__11__2'(L,A,I,G,B,H,C,D,E,F) ; true ) ; 'known/1__11__2'(L,A,I,G,B,H,C,D,E,F) ). 'known/1__11'(A,B) :- 'known/1__12'(A,B). 'known/1__12'(A,B) :- nonvar(A), A=(C= 'known/1__12__1'(K,G,F,M,A,B,C,D) ; 'known/1__12__0'(M,A,B,C,D) ). 'known/1__12__1'([],_,_,E,A,B,C,D) :- 'known/1__12__0'(E,A,B,C,D). 'known/1__12__1'([I|P],F,A,G,B,C,D,E) :- ( I=suspension(_,mutable(active),_,_,_,_,H), nonvar(H), H=(J=\=K), J==D, K==E, 'chr via_2'(F,D,L), get_attr(L,guard_entailment,M), M=v(O,N,_), O/\1=:=1 -> 'known/1__12__2'(N,I,P,F,A,G,B,C,D,E) ; 'known/1__12__1'(P,F,A,G,B,C,D,E) ). 'known/1__12__2'([],_,H,F,E,G,A,B,C,D) :- 'known/1__12__1'(H,F,E,G,A,B,C,D). 'known/1__12__2'([K|L],A,I,G,B,H,C,D,E,F) :- ( K=suspension(_,mutable(active),_,_,_,_,J), K\==A, nonvar(J), J=(M=\=N), M==G, N==E, R=t(49,B,K,D,A), 'chr novel_production'(B,R), 'chr novel_production'(K,R), 'chr novel_production'(D,R), 'chr novel_production'(A,R) -> 'chr extend_history'(D,R), activate_constraint(P,O,D,Q), ( P==yes -> '$insert_in_store_known/1'(D), 'attach_known/1'(O,D) ; true ), known(G=\=F), ( D=suspension(_,mutable(active),_,mutable(Q),_,_,_) -> 'chr update_mutable'(inactive,mutable(active)), 'known/1__12__2'(L,A,I,G,B,H,C,D,E,F) ; true ) ; 'known/1__12__2'(L,A,I,G,B,H,C,D,E,F) ). 'known/1__12'(A,B) :- 'known/1__13'(A,B). 'known/1__13'(A,B) :- nonvar(A), A=(C=\=D), 'chr via_1'(C,E), get_attr(E,guard_entailment,F), F=v(H,G,_), H/\1=:=1, !, 'known/1__13__0'(G,A,B,C,D). 'known/1__13__0'([],A,B,_,_) :- 'known/1__14'(A,B). 'known/1__13__0'([F|M],A,B,C,D) :- ( F=suspension(_,mutable(active),_,_,_,_,E), nonvar(E), E=(G= 'known/1__13__1'(K,G,F,M,A,B,C,D) ; 'known/1__13__0'(M,A,B,C,D) ). 'known/1__13__1'([],_,_,E,A,B,C,D) :- 'known/1__13__0'(E,A,B,C,D). 'known/1__13__1'([I|P],F,A,G,B,C,D,E) :- ( I=suspension(_,mutable(active),_,_,_,_,H), I\==A, nonvar(H), H=(J= 'known/1__13__2'(N,I,P,F,A,G,B,C,D,E) ; 'known/1__13__1'(P,F,A,G,B,C,D,E) ). 'known/1__13__2'([],_,H,F,E,G,A,B,C,D) :- 'known/1__13__1'(H,F,E,G,A,B,C,D). 'known/1__13__2'([K|L],A,I,G,B,H,C,D,E,F) :- ( K=suspension(_,mutable(active),_,_,_,_,J), nonvar(J), J=(M=\=N), M==G, N==E, R=t(49,B,K,A,D), 'chr novel_production'(B,R), 'chr novel_production'(K,R), 'chr novel_production'(A,R), 'chr novel_production'(D,R) -> 'chr extend_history'(D,R), activate_constraint(P,O,D,Q), ( P==yes -> '$insert_in_store_known/1'(D), 'attach_known/1'(O,D) ; true ), known(G=\=F), ( D=suspension(_,mutable(active),_,mutable(Q),_,_,_) -> 'chr update_mutable'(inactive,mutable(active)), 'known/1__13__2'(L,A,I,G,B,H,C,D,E,F) ; true ) ; 'known/1__13__2'(L,A,I,G,B,H,C,D,E,F) ). 'known/1__13'(A,B) :- 'known/1__14'(A,B). 'known/1__14'(A,B) :- nonvar(A), A=(C=:=D), number(D), number(C), C=\=D, !, ( var(B) -> true ; remove_constraint_internal(B,E,F), ( F==yes -> '$delete_from_store_known/1'(B), 'detach_known/1'(E,B) ; true ) ), known(fail). 'known/1__14'(A,B) :- nonvar(A), A=(C=\=D), number(D), number(C), C=:=D, !, ( var(B) -> true ; remove_constraint_internal(B,E,F), ( F==yes -> '$delete_from_store_known/1'(B), 'detach_known/1'(E,B) ; true ) ), known(fail). 'known/1__14'(A,B) :- nonvar(A), A=(C=\=D), D==C, !, ( var(B) -> true ; remove_constraint_internal(B,E,F), ( F==yes -> '$delete_from_store_known/1'(B), 'detach_known/1'(E,B) ; true ) ), known(fail). 'known/1__14'(A,B) :- nonvar(A), A=(C=:=D), 'chr via_2'(C,D,G), get_attr(G,guard_entailment,H), H=v(J,I,_), J/\1=:=1, 'chr sbag_member'(E,I), E=suspension(_,mutable(active),_,_,_,_,F), nonvar(F), F=(K=\=L), K==C, L==D, !, remove_constraint_internal(E,M,N), ( N==yes -> '$delete_from_store_known/1'(E), 'detach_known/1'(M,E) ; true ), ( var(B) -> true ; remove_constraint_internal(B,O,P), ( P==yes -> '$delete_from_store_known/1'(B), 'detach_known/1'(O,B) ; true ) ), known(fail). 'known/1__14'(A,B) :- nonvar(A), A=(C=\=D), 'chr via_2'(C,D,G), get_attr(G,guard_entailment,H), H=v(J,I,_), J/\1=:=1, 'chr sbag_member'(E,I), E=suspension(_,mutable(active),_,_,_,_,F), nonvar(F), F=(K=:=L), K==C, L==D, !, remove_constraint_internal(E,M,N), ( N==yes -> '$delete_from_store_known/1'(E), 'detach_known/1'(M,E) ; true ), ( var(B) -> true ; remove_constraint_internal(B,O,P), ( P==yes -> '$delete_from_store_known/1'(B), 'detach_known/1'(O,B) ; true ) ), known(fail). 'known/1__14'(A,B) :- nonvar(A), A=(C=:=D), 'chr via_1'(D,E), get_attr(E,guard_entailment,F), F=v(H,G,_), H/\1=:=1, !, 'known/1__14__0'(G,A,B,C,D). 'known/1__14__0'([],A,B,_,_) :- 'known/1__15'(A,B). 'known/1__14__0'([F|G],A,B,C,D) :- ( F=suspension(_,mutable(active),_,_,_,_,E), nonvar(E), E=(H=:=I), H==D, M=t(54,B,F), 'chr novel_production'(B,M), 'chr novel_production'(F,M), C\==I -> 'chr extend_history'(B,M), activate_constraint(K,J,B,L), ( K==yes -> '$insert_in_store_known/1'(B), 'attach_known/1'(J,B) ; true ), known(C=:=I), ( B=suspension(_,mutable(active),_,mutable(L),_,_,_) -> 'chr update_mutable'(inactive,mutable(active)), 'known/1__14__0'(G,A,B,C,D) ; true ) ; 'known/1__14__0'(G,A,B,C,D) ). 'known/1__14'(A,B) :- 'known/1__15'(A,B). 'known/1__15'(A,B) :- nonvar(A), A=(C=:=D), 'chr via_1'(C,E), get_attr(E,guard_entailment,F), F=v(H,G,_), H/\1=:=1, !, 'known/1__15__0'(G,A,B,C,D). 'known/1__15__0'([],A,B,_,_) :- 'known/1__16'(A,B). 'known/1__15__0'([F|G],A,B,C,D) :- ( F=suspension(_,mutable(active),_,_,_,_,E), nonvar(E), E=(H=:=I), I==C, M=t(54,F,B), 'chr novel_production'(F,M), 'chr novel_production'(B,M), H\==D -> 'chr extend_history'(B,M), activate_constraint(K,J,B,L), ( K==yes -> '$insert_in_store_known/1'(B), 'attach_known/1'(J,B) ; true ), known(H=:=D), ( B=suspension(_,mutable(active),_,mutable(L),_,_,_) -> 'chr update_mutable'(inactive,mutable(active)), 'known/1__15__0'(G,A,B,C,D) ; true ) ; 'known/1__15__0'(G,A,B,C,D) ). 'known/1__15'(A,B) :- 'known/1__16'(A,B). 'known/1__16'(A,B) :- nonvar(A), A=(C=:=D), 'chr novel_production'(B,55), !, 'chr extend_history'(B,55), activate_constraint(F,E,B,G), ( F==yes -> '$insert_in_store_known/1'(B), 'attach_known/1'(E,B) ; true ), known(D=:=C), ( B=suspension(_,mutable(active),_,mutable(G),_,_,_) -> 'chr update_mutable'(inactive,mutable(active)), 'known/1__17'(A,B) ; true ). 'known/1__16'(A,B) :- 'known/1__17'(A,B). 'known/1__17'(A,B) :- nonvar(A), A=(C=\=D), 'chr novel_production'(B,56), !, 'chr extend_history'(B,56), activate_constraint(F,E,B,G), ( F==yes -> '$insert_in_store_known/1'(B), 'attach_known/1'(E,B) ; true ), known(D=\=C), ( B=suspension(_,mutable(active),_,mutable(G),_,_,_) -> 'chr update_mutable'(inactive,mutable(active)), 'known/1__18'(A,B) ; true ). 'known/1__17'(A,B) :- 'known/1__18'(A,B). 'known/1__18'(A,B) :- nonvar(A), A=number(C), nonvar(C), \+number(C), !, ( var(B) -> true ; remove_constraint_internal(B,D,E), ( E==yes -> '$delete_from_store_known/1'(B), 'detach_known/1'(D,B) ; true ) ), known(fail). 'known/1__18'(A,B) :- nonvar(A), A=float(C), nonvar(C), \+float(C), !, ( var(B) -> true ; remove_constraint_internal(B,D,E), ( E==yes -> '$delete_from_store_known/1'(B), 'detach_known/1'(D,B) ; true ) ), known(fail). 'known/1__18'(A,B) :- nonvar(A), A=integer(C), nonvar(C), \+integer(C), !, ( var(B) -> true ; remove_constraint_internal(B,D,E), ( E==yes -> '$delete_from_store_known/1'(B), 'detach_known/1'(D,B) ; true ) ), known(fail). 'known/1__18'(A,B) :- nonvar(A), A=integer(C), 'chr novel_production'(B,60), !, 'chr extend_history'(B,60), activate_constraint(E,D,B,F), ( E==yes -> '$insert_in_store_known/1'(B), 'attach_known/1'(D,B) ; true ), known(number(C)), ( B=suspension(_,mutable(active),_,mutable(F),_,_,_) -> 'chr update_mutable'(inactive,mutable(active)), 'known/1__19'(A,B) ; true ). 'known/1__18'(A,B) :- 'known/1__19'(A,B). 'known/1__19'(A,B) :- nonvar(A), A=float(C), 'chr novel_production'(B,61), !, 'chr extend_history'(B,61), activate_constraint(E,D,B,F), ( E==yes -> '$insert_in_store_known/1'(B), 'attach_known/1'(D,B) ; true ), known(number(C)), ( B=suspension(_,mutable(active),_,mutable(F),_,_,_) -> 'chr update_mutable'(inactive,mutable(active)), 'known/1__20'(A,B) ; true ). 'known/1__19'(A,B) :- 'known/1__20'(A,B). 'known/1__20'(A,B) :- 'chr via_1'(A,E), get_attr(E,guard_entailment,F), F=v(H,G,_), H/\1=:=1, 'chr sbag_member'(C,G), C=suspension(_,mutable(active),_,_,_,_,D), nonvar(D), D=(\+I), I==A, !, remove_constraint_internal(C,J,K), ( K==yes -> '$delete_from_store_known/1'(C), 'detach_known/1'(J,C) ; true ), ( var(B) -> true ; remove_constraint_internal(B,L,M), ( M==yes -> '$delete_from_store_known/1'(B), 'detach_known/1'(L,B) ; true ) ), known(fail). 'known/1__20'(A,B) :- nonvar(A), A=(\+C), 'chr via_1'(C,F), get_attr(F,guard_entailment,G), G=v(I,H,_), I/\1=:=1, 'chr sbag_member'(D,H), D=suspension(_,mutable(active),_,_,_,_,E), E==C, !, remove_constraint_internal(D,J,K), ( K==yes -> '$delete_from_store_known/1'(D), 'detach_known/1'(J,D) ; true ), ( var(B) -> true ; remove_constraint_internal(B,L,M), ( M==yes -> '$delete_from_store_known/1'(B), 'detach_known/1'(L,B) ; true ) ), known(fail). 'known/1__20'(A,B) :- nonvar(A), A=(C\==D), 'chr via_2'(C,D,G), get_attr(G,guard_entailment,H), H=v(J,I,_), J/\1=:=1, 'chr sbag_member'(E,I), E=suspension(_,mutable(active),_,_,_,_,F), nonvar(F), F=(K==L), K==C, L==D, !, remove_constraint_internal(E,M,N), ( N==yes -> '$delete_from_store_known/1'(E), 'detach_known/1'(M,E) ; true ), ( var(B) -> true ; remove_constraint_internal(B,O,P), ( P==yes -> '$delete_from_store_known/1'(B), 'detach_known/1'(O,B) ; true ) ), known(fail). 'known/1__20'(A,B) :- nonvar(A), A=(C==D), 'chr via_2'(C,D,G), get_attr(G,guard_entailment,H), H=v(J,I,_), J/\1=:=1, 'chr sbag_member'(E,I), E=suspension(_,mutable(active),_,_,_,_,F), nonvar(F), F=(K\==L), K==C, L==D, !, remove_constraint_internal(E,M,N), ( N==yes -> '$delete_from_store_known/1'(E), 'detach_known/1'(M,E) ; true ), ( var(B) -> true ; remove_constraint_internal(B,O,P), ( P==yes -> '$delete_from_store_known/1'(B), 'detach_known/1'(O,B) ; true ) ), known(fail). 'known/1__20'(A,B) :- nonvar(A), A=(C==D), 'chr via_1'(D,E), get_attr(E,guard_entailment,F), F=v(H,G,_), H/\1=:=1, !, 'known/1__20__0'(G,A,B,C,D). 'known/1__20__0'([],A,B,_,_) :- 'known/1__21'(A,B). 'known/1__20__0'([F|G],A,B,C,D) :- ( F=suspension(_,mutable(active),_,_,_,_,E), nonvar(E), E=(H==I), H==D, M=t(64,B,F), 'chr novel_production'(B,M), 'chr novel_production'(F,M) -> 'chr extend_history'(B,M), activate_constraint(K,J,B,L), ( K==yes -> '$insert_in_store_known/1'(B), 'attach_known/1'(J,B) ; true ), known(C==I), ( B=suspension(_,mutable(active),_,mutable(L),_,_,_) -> 'chr update_mutable'(inactive,mutable(active)), 'known/1__20__0'(G,A,B,C,D) ; true ) ; 'known/1__20__0'(G,A,B,C,D) ). 'known/1__20'(A,B) :- 'known/1__21'(A,B). 'known/1__21'(A,B) :- nonvar(A), A=(C==D), 'chr via_1'(C,E), get_attr(E,guard_entailment,F), F=v(H,G,_), H/\1=:=1, !, 'known/1__21__0'(G,A,B,C,D). 'known/1__21__0'([],A,B,_,_) :- 'known/1__22'(A,B). 'known/1__21__0'([F|G],A,B,C,D) :- ( F=suspension(_,mutable(active),_,_,_,_,E), nonvar(E), E=(H==I), I==C, M=t(64,F,B), 'chr novel_production'(F,M), 'chr novel_production'(B,M) -> 'chr extend_history'(B,M), activate_constraint(K,J,B,L), ( K==yes -> '$insert_in_store_known/1'(B), 'attach_known/1'(J,B) ; true ), known(H==D), ( B=suspension(_,mutable(active),_,mutable(L),_,_,_) -> 'chr update_mutable'(inactive,mutable(active)), 'known/1__21__0'(G,A,B,C,D) ; true ) ; 'known/1__21__0'(G,A,B,C,D) ). 'known/1__21'(A,B) :- 'known/1__22'(A,B). 'known/1__22'(A,B) :- nonvar(A), A=(C==D), 'chr via_1'(D,E), get_attr(E,guard_entailment,F), F=v(H,G,_), H/\1=:=1, !, 'known/1__22__0'(G,A,B,C,D). 'known/1__22__0'([],A,B,_,_) :- 'known/1__23'(A,B). 'known/1__22__0'([F|G],A,B,C,D) :- ( F=suspension(_,mutable(active),_,_,_,_,E), nonvar(E), E=(H\==I), H==D, M=t(65,B,F), 'chr novel_production'(B,M), 'chr novel_production'(F,M) -> 'chr extend_history'(B,M), activate_constraint(K,J,B,L), ( K==yes -> '$insert_in_store_known/1'(B), 'attach_known/1'(J,B) ; true ), known(C\==I), ( B=suspension(_,mutable(active),_,mutable(L),_,_,_) -> 'chr update_mutable'(inactive,mutable(active)), 'known/1__22__0'(G,A,B,C,D) ; true ) ; 'known/1__22__0'(G,A,B,C,D) ). 'known/1__22'(A,B) :- 'known/1__23'(A,B). 'known/1__23'(A,B) :- nonvar(A), A=(C\==D), 'chr via_1'(C,E), get_attr(E,guard_entailment,F), F=v(H,G,_), H/\1=:=1, !, 'known/1__23__0'(G,A,B,C,D). 'known/1__23__0'([],A,B,_,_) :- 'known/1__24'(A,B). 'known/1__23__0'([F|G],A,B,C,D) :- ( F=suspension(_,mutable(active),_,_,_,_,E), nonvar(E), E=(H==I), I==C, M=t(65,F,B), 'chr novel_production'(F,M), 'chr novel_production'(B,M) -> 'chr extend_history'(B,M), activate_constraint(K,J,B,L), ( K==yes -> '$insert_in_store_known/1'(B), 'attach_known/1'(J,B) ; true ), known(H\==D), ( B=suspension(_,mutable(active),_,mutable(L),_,_,_) -> 'chr update_mutable'(inactive,mutable(active)), 'known/1__23__0'(G,A,B,C,D) ; true ) ; 'known/1__23__0'(G,A,B,C,D) ). 'known/1__23'(A,B) :- 'known/1__24'(A,B). 'known/1__24'(A,B) :- nonvar(A), A=(C==D), 'chr novel_production'(B,66), !, 'chr extend_history'(B,66), activate_constraint(F,E,B,G), ( F==yes -> '$insert_in_store_known/1'(B), 'attach_known/1'(E,B) ; true ), known(D==C), ( B=suspension(_,mutable(active),_,mutable(G),_,_,_) -> 'chr update_mutable'(inactive,mutable(active)), 'known/1__25'(A,B) ; true ). 'known/1__24'(A,B) :- 'known/1__25'(A,B). 'known/1__25'(A,B) :- nonvar(A), A=(C\==D), 'chr novel_production'(B,67), !, 'chr extend_history'(B,67), activate_constraint(F,E,B,G), ( F==yes -> '$insert_in_store_known/1'(B), 'attach_known/1'(E,B) ; true ), known(D\==C), ( B=suspension(_,mutable(active),_,mutable(G),_,_,_) -> 'chr update_mutable'(inactive,mutable(active)), 'known/1__26'(A,B) ; true ). 'known/1__25'(A,B) :- 'known/1__26'(A,B). 'known/1__26'(A,B) :- nonvar(A), A=(C\==D), D==C, 'chr novel_production'(B,68), !, 'chr extend_history'(B,68), activate_constraint(F,E,B,G), ( F==yes -> '$insert_in_store_known/1'(B), 'attach_known/1'(E,B) ; true ), known(fail), ( B=suspension(_,mutable(active),_,mutable(G),_,_,_) -> 'chr update_mutable'(inactive,mutable(active)), 'known/1__27'(A,B) ; true ). 'known/1__26'(A,B) :- 'known/1__27'(A,B). 'known/1__27'(A,B) :- nonvar(A), A=(C\==D), nonvar(D), nonvar(C), 'chr lock'(C), functor(C,E,F), chr_runtime:unlock(C), !, ( var(B) -> true ; remove_constraint_internal(B,J,K), ( K==yes -> '$delete_from_store_known/1'(B), 'detach_known/1'(J,B) ; true ) ), ( functor(D,E,F) -> C=..[E|G], D=..[E|H], add_args_nmatch(G,H,I), known(I) ; true ). 'known/1__27'(A,B) :- nonvar(A), A=(C==D), 'chr novel_production'(B,70), !, 'chr extend_history'(B,70), activate_constraint(F,E,B,G), ( F==yes -> '$insert_in_store_known/1'(B), 'attach_known/1'(E,B) ; true ), known(C=D), ( B=suspension(_,mutable(active),_,mutable(G),_,_,_) -> 'chr update_mutable'(inactive,mutable(active)), 'known/1__28'(A,B) ; true ). 'known/1__27'(A,B) :- 'known/1__28'(A,B). 'known/1__28'(A,B) :- nonvar(A), A=ground(C), 'chr novel_production'(B,71), !, 'chr extend_history'(B,71), activate_constraint(E,D,B,F), ( E==yes -> '$insert_in_store_known/1'(B), 'attach_known/1'(D,B) ; true ), known(nonvar(C)), ( B=suspension(_,mutable(active),_,mutable(F),_,_,_) -> 'chr update_mutable'(inactive,mutable(active)), 'known/1__29'(A,B) ; true ). 'known/1__28'(A,B) :- 'known/1__29'(A,B). 'known/1__29'(A,B) :- nonvar(A), A=compound(C), 'chr novel_production'(B,72), !, 'chr extend_history'(B,72), activate_constraint(E,D,B,F), ( E==yes -> '$insert_in_store_known/1'(B), 'attach_known/1'(D,B) ; true ), known(nonvar(C)), ( B=suspension(_,mutable(active),_,mutable(F),_,_,_) -> 'chr update_mutable'(inactive,mutable(active)), 'known/1__30'(A,B) ; true ). 'known/1__29'(A,B) :- 'known/1__30'(A,B). 'known/1__30'(A,B) :- nonvar(A), A=atomic(C), 'chr novel_production'(B,73), !, 'chr extend_history'(B,73), activate_constraint(E,D,B,F), ( E==yes -> '$insert_in_store_known/1'(B), 'attach_known/1'(D,B) ; true ), known(nonvar(C)), ( B=suspension(_,mutable(active),_,mutable(F),_,_,_) -> 'chr update_mutable'(inactive,mutable(active)), 'known/1__31'(A,B) ; true ). 'known/1__30'(A,B) :- 'known/1__31'(A,B). 'known/1__31'(A,B) :- nonvar(A), A=number(C), 'chr novel_production'(B,74), !, 'chr extend_history'(B,74), activate_constraint(E,D,B,F), ( E==yes -> '$insert_in_store_known/1'(B), 'attach_known/1'(D,B) ; true ), known(nonvar(C)), ( B=suspension(_,mutable(active),_,mutable(F),_,_,_) -> 'chr update_mutable'(inactive,mutable(active)), 'known/1__32'(A,B) ; true ). 'known/1__31'(A,B) :- 'known/1__32'(A,B). 'known/1__32'(A,B) :- nonvar(A), A=atom(C), 'chr novel_production'(B,75), !, 'chr extend_history'(B,75), activate_constraint(E,D,B,F), ( E==yes -> '$insert_in_store_known/1'(B), 'attach_known/1'(D,B) ; true ), known(nonvar(C)), ( B=suspension(_,mutable(active),_,mutable(F),_,_,_) -> 'chr update_mutable'(inactive,mutable(active)), 'known/1__33'(A,B) ; true ). 'known/1__32'(A,B) :- 'known/1__33'(A,B). 'known/1__33'(A,B) :- nonvar(A), A=var(C), 'chr via_1'(C,F), get_attr(F,guard_entailment,G), G=v(I,H,_), I/\1=:=1, 'chr sbag_member'(D,H), D=suspension(_,mutable(active),_,_,_,_,E), nonvar(E), E=nonvar(J), J==C, !, remove_constraint_internal(D,K,L), ( L==yes -> '$delete_from_store_known/1'(D), 'detach_known/1'(K,D) ; true ), ( var(B) -> true ; remove_constraint_internal(B,M,N), ( N==yes -> '$delete_from_store_known/1'(B), 'detach_known/1'(M,B) ; true ) ), known(fail). 'known/1__33'(A,B) :- nonvar(A), A=nonvar(C), 'chr via_1'(C,F), get_attr(F,guard_entailment,G), G=v(I,H,_), I/\1=:=1, 'chr sbag_member'(D,H), D=suspension(_,mutable(active),_,_,_,_,E), nonvar(E), E=var(J), J==C, !, remove_constraint_internal(D,K,L), ( L==yes -> '$delete_from_store_known/1'(D), 'detach_known/1'(K,D) ; true ), ( var(B) -> true ; remove_constraint_internal(B,M,N), ( N==yes -> '$delete_from_store_known/1'(B), 'detach_known/1'(M,B) ; true ) ), known(fail). 'known/1__33'(A,B) :- nonvar(A), A=(C;D), nonvar(C), C=(\+E), 'chr via_1'(E,H), get_attr(H,guard_entailment,I), I=v(K,J,_), K/\1=:=1, 'chr sbag_member'(F,J), F=suspension(_,mutable(active),_,_,_,_,G), G==E, !, ( var(B) -> true ; remove_constraint_internal(B,L,M), ( M==yes -> '$delete_from_store_known/1'(B), 'detach_known/1'(L,B) ; true ) ), known(D). 'known/1__33'(A,B) :- 'chr via_1'(A,C), get_attr(C,guard_entailment,D), D=v(F,E,_), F/\1=:=1, !, 'known/1__33__0'(E,A,B). 'known/1__33__0'([],A,B) :- 'known/1__34'(A,B). 'known/1__33__0'([D|H],A,B) :- ( D=suspension(_,mutable(active),_,_,_,_,C), nonvar(C), C=(E;F), nonvar(E), E=(\+G), G==A -> remove_constraint_internal(D,I,J), ( J==yes -> '$delete_from_store_known/1'(D), 'detach_known/1'(I,D) ; true ), activate_constraint(L,K,B,M), ( L==yes -> '$insert_in_store_known/1'(B), 'attach_known/1'(K,B) ; true ), known(F), ( B=suspension(_,mutable(active),_,mutable(M),_,_,_) -> 'chr update_mutable'(inactive,mutable(active)), 'known/1__33__0'(H,A,B) ; true ) ; 'known/1__33__0'(H,A,B) ). 'known/1__33'(A,B) :- 'known/1__34'(A,B). 'known/1__34'(A,B) :- nonvar(A), A=(C;D), nonvar(C), C=(E,_), nonvar(E), E=(\+F), 'chr via_1'(F,I), get_attr(I,guard_entailment,J), J=v(L,K,_), L/\1=:=1, 'chr sbag_member'(G,K), G=suspension(_,mutable(active),_,_,_,_,H), H==F, !, ( var(B) -> true ; remove_constraint_internal(B,M,N), ( N==yes -> '$delete_from_store_known/1'(B), 'detach_known/1'(M,B) ; true ) ), known(D). 'known/1__34'(A,B) :- 'chr via_1'(A,C), get_attr(C,guard_entailment,D), D=v(F,E,_), F/\1=:=1, !, 'known/1__34__0'(E,A,B). 'known/1__34__0'([],A,B) :- 'known/1__35'(A,B). 'known/1__34__0'([D|I],A,B) :- ( D=suspension(_,mutable(active),_,_,_,_,C), nonvar(C), C=(E;F), nonvar(E), E=(G,_), nonvar(G), G=(\+H), H==A -> remove_constraint_internal(D,J,K), ( K==yes -> '$delete_from_store_known/1'(D), 'detach_known/1'(J,D) ; true ), activate_constraint(M,L,B,N), ( M==yes -> '$insert_in_store_known/1'(B), 'attach_known/1'(L,B) ; true ), known(F), ( B=suspension(_,mutable(active),_,mutable(N),_,_,_) -> 'chr update_mutable'(inactive,mutable(active)), 'known/1__34__0'(I,A,B) ; true ) ; 'known/1__34__0'(I,A,B) ). 'known/1__34'(A,B) :- 'known/1__35'(A,B). 'known/1__35'(A,B) :- nonvar(A), A=(C;D), 'chr via_1'(C,G), get_attr(G,guard_entailment,H), H=v(J,I,_), J/\1=:=1, 'chr sbag_member'(E,I), E=suspension(_,mutable(active),_,_,_,_,F), nonvar(F), F=(\+K), K==C, !, ( var(B) -> true ; remove_constraint_internal(B,L,M), ( M==yes -> '$delete_from_store_known/1'(B), 'detach_known/1'(L,B) ; true ) ), known(D). 'known/1__35'(A,B) :- nonvar(A), A=(\+C), 'chr via_1'(C,D), get_attr(D,guard_entailment,E), E=v(G,F,_), G/\1=:=1, !, 'known/1__35__0'(F,A,B,C). 'known/1__35__0'([],A,B,_) :- 'known/1__36'(A,B). 'known/1__35__0'([E|H],A,B,C) :- ( E=suspension(_,mutable(active),_,_,_,_,D), nonvar(D), D=(F;G), F==C -> remove_constraint_internal(E,I,J), ( J==yes -> '$delete_from_store_known/1'(E), 'detach_known/1'(I,E) ; true ), activate_constraint(L,K,B,M), ( L==yes -> '$insert_in_store_known/1'(B), 'attach_known/1'(K,B) ; true ), known(G), ( B=suspension(_,mutable(active),_,mutable(M),_,_,_) -> 'chr update_mutable'(inactive,mutable(active)), 'known/1__35__0'(H,A,B,C) ; true ) ; 'known/1__35__0'(H,A,B,C) ). 'known/1__35'(A,B) :- 'known/1__36'(A,B). 'known/1__36'(A,B) :- nonvar(A), A=(C;D), nonvar(C), C=(E,_), 'chr via_1'(E,H), get_attr(H,guard_entailment,I), I=v(K,J,_), K/\1=:=1, 'chr sbag_member'(F,J), F=suspension(_,mutable(active),_,_,_,_,G), nonvar(G), G=(\+L), L==E, !, ( var(B) -> true ; remove_constraint_internal(B,M,N), ( N==yes -> '$delete_from_store_known/1'(B), 'detach_known/1'(M,B) ; true ) ), known(D). 'known/1__36'(A,B) :- nonvar(A), A=(\+C), 'chr via_1'(C,D), get_attr(D,guard_entailment,E), E=v(G,F,_), G/\1=:=1, !, 'known/1__36__0'(F,A,B,C). 'known/1__36__0'([],A,B,_) :- 'known/1__37'(A,B). 'known/1__36__0'([E|I],A,B,C) :- ( E=suspension(_,mutable(active),_,_,_,_,D), nonvar(D), D=(F;G), nonvar(F), F=(H,_), H==C -> remove_constraint_internal(E,J,K), ( K==yes -> '$delete_from_store_known/1'(E), 'detach_known/1'(J,E) ; true ), activate_constraint(M,L,B,N), ( M==yes -> '$insert_in_store_known/1'(B), 'attach_known/1'(L,B) ; true ), known(G), ( B=suspension(_,mutable(active),_,mutable(N),_,_,_) -> 'chr update_mutable'(inactive,mutable(active)), 'known/1__36__0'(I,A,B,C) ; true ) ; 'known/1__36__0'(I,A,B,C) ). 'known/1__36'(A,B) :- 'known/1__37'(A,B). 'known/1__37'(A,B) :- nonvar(A), A=(C;D), C==fail, !, ( var(B) -> true ; remove_constraint_internal(B,E,F), ( F==yes -> '$delete_from_store_known/1'(B), 'detach_known/1'(E,B) ; true ) ), known(D). 'known/1__37'(A,B) :- nonvar(A), A=(C;D), D==fail, !, ( var(B) -> true ; remove_constraint_internal(B,E,F), ( F==yes -> '$delete_from_store_known/1'(B), 'detach_known/1'(E,B) ; true ) ), known(C). 'known/1__37'(A,B) :- nonvar(A), A=(C;_), nonvar(C), C=(\+D), nonvar(D), D=functor(E,_,_), 'chr via_1'(E,H), get_attr(H,guard_entailment,I), I=v(K,J,_), K/\1=:=1, 'chr sbag_member'(F,J), F=suspension(_,mutable(active),_,_,_,_,G), nonvar(G), G=functor(L,_,_), L==E, !, ( var(B) -> true ; remove_constraint_internal(B,M,N), ( N==yes -> '$delete_from_store_known/1'(B), 'detach_known/1'(M,B) ; true ) ). 'known/1__37'(A,B) :- nonvar(A), A=functor(C,_,_), 'chr via_1'(C,D), get_attr(D,guard_entailment,E), E=v(G,F,_), G/\1=:=1, !, 'known/1__37__0'(F,A,B,C). 'known/1__37__0'([],A,B,_) :- 'known/1__38'(A,B). 'known/1__37__0'([E|I],A,B,C) :- ( E=suspension(_,mutable(active),_,_,_,_,D), nonvar(D), D=(F;_), nonvar(F), F=(\+G), nonvar(G), G=functor(H,_,_), H==C -> remove_constraint_internal(E,J,K), ( K==yes -> '$delete_from_store_known/1'(E), 'detach_known/1'(J,E) ; true ), 'known/1__37__0'(I,A,B,C) ; 'known/1__37__0'(I,A,B,C) ). 'known/1__37'(A,B) :- 'known/1__38'(A,B). 'known/1__38'(A,B) :- nonvar(A), A=(C;D), nonvar(C), C=(\+E), nonvar(E), E=functor(F,G,H), nonvar(F), 'chr lock'(F), 'chr lock'(G), 'chr lock'(H), functor(F,G,H), chr_runtime:unlock(F), chr_runtime:unlock(G), chr_runtime:unlock(H), !, ( var(B) -> true ; remove_constraint_internal(B,I,J), ( J==yes -> '$delete_from_store_known/1'(B), 'detach_known/1'(I,B) ; true ) ), known(D). 'known/1__38'(A,B) :- nonvar(A), A=(C;_), nonvar(C), C=(\+D), nonvar(D), D=functor(E,_,_), nonvar(E), !, ( var(B) -> true ; remove_constraint_internal(B,F,G), ( G==yes -> '$delete_from_store_known/1'(B), 'detach_known/1'(F,B) ; true ) ). 'known/1__38'(_,A) :- activate_constraint(C,B,A,_), ( C==yes -> '$insert_in_store_known/1'(A), 'attach_known/1'(B,A) ; true ). test(_) :- 'chr global_term_ref_1'(C), get_attr(C,guard_entailment,D), D=v(F,E,_), F/\1=:=1, 'chr sbag_member'(A,E), A=suspension(_,mutable(active),_,_,_,_,B), B==fail, !. test(A) :- 'chr via_1'(A,D), get_attr(D,guard_entailment,E), E=v(G,F,_), G/\1=:=1, 'chr sbag_member'(B,F), B=suspension(_,mutable(active),_,_,_,_,C), C==A, !. test(A) :- nonvar(A), A=(B\==C), nonvar(B), !, test(C\==B). test(A) :- nonvar(A), A=(B\==C), nonvar(C), 'chr lock'(C), functor(C,D,E), chr_runtime:unlock(C), !, C=..[_|F], length(G,E), H=..[D|G], add_args_nmatch(G,F,I), J=(\+functor(B,D,E);functor(B,D,E),B=H,I), test(J). test(A) :- nonvar(A), A=(B=K, !. test(A) :- nonvar(A), A=(B=\=C), number(C), 'chr via_1'(B,F), get_attr(F,guard_entailment,G), G=v(I,H,_), I/\1=:=1, 'chr sbag_member'(D,H), D=suspension(_,mutable(active),_,_,_,_,E), nonvar(E), E=(J=C), !, test(C=C), !, test(C=0, C=..[J|L], \+all_unique_vars(L,E), chr_runtime:unlock(C), chr_runtime:unlock(E), !, M=(functor(B,J,K),B=C), test(M). test(A) :- nonvar(A), A=(B=C), nonvar(C), var(B), 'chr lock'(C), functor(C,D,E), C=..[D|_], chr_runtime:unlock(C), !, F=functor(B,D,E), test(F). test(A) :- nonvar(A), A=(B=C), nonvar(B), 'chr lock'(C), functor(C,D,E), C=..[D|F], chr_runtime:unlock(C), !, functor(B,D,E), B=..[D|G], add_args_unif(G,F,H), test(H). test(A) :- nonvar(A), A=(B=C), 'chr global_term_ref_1'(F), get_attr(F,guard_entailment,G), G=v(I,_,H), I/\2=:=2, 'chr sbag_member'(D,H), D=suspension(_,mutable(active),_,_,_,_,E), 'chr lock'(C), 'chr lock'(E), 'chr lock'(B), \+ (memberchk_eq(C,E),memberchk_eq(B,E)), chr_runtime:unlock(C), chr_runtime:unlock(E), chr_runtime:unlock(B), !, B=C. test(A) :- nonvar(A), A=functor(B,C,D), ground(D), ground(C), var(B), 'chr global_term_ref_1'(G), get_attr(G,guard_entailment,H), H=v(J,_,I), J/\2=:=2, 'chr sbag_member'(E,I), E=suspension(_,mutable(active),_,_,_,_,F), 'chr lock'(B), 'chr lock'(F), \+memberchk_eq(B,F), chr_runtime:unlock(B), chr_runtime:unlock(F), !, functor(B,C,D). test(A) :- A==true, !. test(A) :- nonvar(A), A=(B==C), B==C, !. test(A) :- nonvar(A), A=(B=:=C), B==C, !. test(A) :- nonvar(A), A=(B= '$delete_from_store_known/1'(B), 'detach_known/1'(K,B) ; true ), \+try(H,A), !, negate_b(H,J), known(J), \+try(I,A). test(_) :- fail. cleanup :- 'chr global_term_ref_1'(A), get_attr(A,guard_entailment,B), B=v(D,C,_), D/\1=:=1, !, 'cleanup/0__0__0'(C). 'cleanup/0__0__0'([]) :- 'cleanup/0__1'. 'cleanup/0__0__0'([A|B]) :- ( A=suspension(_,mutable(active),_,_,_,_,_) -> remove_constraint_internal(A,C,D), ( D==yes -> '$delete_from_store_known/1'(A), 'detach_known/1'(C,A) ; true ), 'cleanup/0__0__0'(B) ; 'cleanup/0__0__0'(B) ). cleanup :- 'cleanup/0__1'. 'cleanup/0__1' :- 'chr global_term_ref_1'(A), get_attr(A,guard_entailment,B), B=v(D,_,C), D/\2=:=2, !, 'cleanup/0__1__0'(C). 'cleanup/0__1__0'([]) :- 'cleanup/0__2'. 'cleanup/0__1__0'([A|B]) :- ( A=suspension(_,mutable(active),_,_,_,_,_) -> remove_constraint_internal(A,C,D), ( D==yes -> '$delete_from_store_variables/1'(A), 'detach_variables/1'(C,A) ; true ), 'cleanup/0__1__0'(B) ; 'cleanup/0__1__0'(B) ). 'cleanup/0__1' :- 'cleanup/0__2'. 'cleanup/0__2'. variables(A) :- 'variables/1__0'(A,_). 'variables/1__0'(A,B) :- 'chr global_term_ref_1'(E), get_attr(E,guard_entailment,F), F=v(H,G,_), H/\1=:=1, 'chr sbag_member'(C,G), C=suspension(_,mutable(active),_,_,_,_,D), nonvar(D), D=functor(I,J,K), ground(K), ground(J), var(I), !, remove_constraint_internal(C,N,O), ( O==yes -> '$delete_from_store_known/1'(C), 'detach_known/1'(N,C) ; true ), ( var(B) -> true ; remove_constraint_internal(B,P,Q), ( Q==yes -> '$delete_from_store_variables/1'(B), 'detach_variables/1'(P,B) ; true ) ), functor(I,J,K), I=..[_|L], append(L,A,M), variables(M). 'variables/1__0'(A,B) :- ( var(B) -> insert_constraint_internal(D,C,B,guard_entailment:'variables/1__0'(A,B),variables(A),[A]) ; activate_constraint(D,C,B,_) ), ( D==yes -> '$insert_in_store_variables/1'(B), 'attach_variables/1'(C,B) ; true ). :-multifile chr:'$chr_module'/1. chr:'$chr_module'(guard_entailment).