From b0ecd94faa6bfdd2e9f2a559c867a0fa279425c2 Mon Sep 17 00:00:00 2001 From: Jesse Keating Date: Wed, 15 Apr 2009 08:02:50 +0000 Subject: [PATCH 1/4] Initialize branch F-11 for yap --- branch | 1 + 1 file changed, 1 insertion(+) create mode 100644 branch diff --git a/branch b/branch new file mode 100644 index 0000000..25c7708 --- /dev/null +++ b/branch @@ -0,0 +1 @@ +F-11 From 2442ba8491b7ab1456810930d9db41ec4c443ae9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?G=C3=A9rard=20Milmeister?= Date: Mon, 15 Jun 2009 20:46:22 +0000 Subject: [PATCH 2/4] new release 5.1.3 --- .cvsignore | 6 +- Yap-5.1.3-soname.patch | 42 + chr_translate.pl | 25646 +++++++++++++++++++++++++--------- chr_translate_bootstrap1.pl | 712 +- chr_translate_bootstrap2.pl | 578 +- guard_entailment.pl | 21095 +++++++++++++++++++++++----- sources | 6 +- yap.spec | 29 +- 8 files changed, 37492 insertions(+), 10622 deletions(-) create mode 100644 Yap-5.1.3-soname.patch diff --git a/.cvsignore b/.cvsignore index 1271438..43c48d6 100644 --- a/.cvsignore +++ b/.cvsignore @@ -1 +1,5 @@ -Yap-5.1.1.tar.gz +Yap-5.1.3.tar.gz +chr_translate_bootstrap1.pl +chr_translate_bootstrap2.pl +chr_translate.pl +guard_entailment.pl diff --git a/Yap-5.1.3-soname.patch b/Yap-5.1.3-soname.patch new file mode 100644 index 0000000..d05937a --- /dev/null +++ b/Yap-5.1.3-soname.patch @@ -0,0 +1,42 @@ +diff -up Yap-5.1.3/Makefile.in.soname Yap-5.1.3/Makefile.in +--- Yap-5.1.3/Makefile.in.soname 2009-06-15 22:12:57.000000000 +0200 ++++ Yap-5.1.3/Makefile.in 2009-06-15 21:59:18.000000000 +0200 +@@ -578,16 +578,16 @@ startup: yap@EXEC_SUFFIX@ $(PL_SOURCES) + -rm -f startup + echo "bootstrap('$(srcdir)/pl/init.yap'). module(user). save_program(startup)." | @CROSS_SIMULATOR@ ./yap -b $(srcdir)/pl/boot.yap + +-yap@EXEC_SUFFIX@: $(HEADERS) yap.o @YAPLIB@.5.1.3 +- $(MPI_CC) $(STANDARD_CFLAGS) $(LDFLAGS) -o yap yap.o @YAPLIB@.5.1.3 $(LIBS) @MPI_LIBS@ ++yap@EXEC_SUFFIX@: $(HEADERS) yap.o @YAPLIB@ ++ $(MPI_CC) $(STANDARD_CFLAGS) $(LDFLAGS) -o yap yap.o @YAPLIB@ $(LIBS) @MPI_LIBS@ + + libYap.a: $(LIB_OBJECTS) + -rm -f libYap.a + $(AR) rc libYap.a $(LIB_OBJECTS) + $(RANLIB) libYap.a + +-@DYNYAPLIB@.5.1.3: $(LIB_OBJECTS) +- @DYNLIB_LD@ -Wl,-soname=@YAPLIB@.5.1.3 -o @YAPLIB@.5.1.3 $(LIB_OBJECTS) $(LIBS) $(LDFLGS) ++@DYNYAPLIB@: $(LIB_OBJECTS) ++ @DYNLIB_LD@ -o @YAPLIB@ $(LIB_OBJECTS) $(LIBS) $(LDFLGS) + + install: install_bin install_data + +@@ -598,7 +598,7 @@ install_unix: startup libYap.a + $(INSTALL_PROGRAM) -m 755 yap@EXEC_SUFFIX@ $(DESTDIR)$(BINDIR)/yap + mkdir -p $(DESTDIR)$(YAPLIBDIR) + $(INSTALL_DATA) startup $(DESTDIR)$(YAPLIBDIR)/startup +- @INSTALL_DLLS@ $(INSTALL_DATA) -m 755 @YAPLIB@.5.1.3 $(DESTDIR)$(LIBDIR) ++ @INSTALL_DLLS@ $(INSTALL_DATA) -m 755 @YAPLIB@ $(DESTDIR)$(LIBDIR) + mkdir -p $(DESTDIR)$(SHAREDIR)/Yap + mkdir -p $(DESTDIR)$(SHAREDIR)/Yap/pl + mkdir -p $(DESTDIR)$(SHAREDIR)/Yap/swi +@@ -643,7 +643,7 @@ install_win32: startup + (cd library/tries; make install) + @ENABLE_CPLINT@ (cd cplint; make install) + +-install_library: @YAPLIB@.5.1.3 ++install_library: @YAPLIB@ + mkdir -p $(DESTDIR)$(INCLUDEDIR) + for h in $(HEADERS); do $(INSTALL) $$h $(DESTDIR)$(INCLUDEDIR); done + diff --git a/chr_translate.pl b/chr_translate.pl index 6ba37ac..fab72a4 100644 --- a/chr_translate.pl +++ b/chr_translate.pl @@ -1,33 +1,77 @@ /* Generated by CHR bootstrap compiler From: chr_translate.chr - Date: [77,111,110,32,77,97,121,32,32,49,32,49,50,58,50,50,58,49,51,32,50,48,48,54,10] + Date: Mon Jun 15 21:44:05 2009 + DO NOT EDIT. EDIT THE CHR FILE INSTEAD */ -:-module(chr_translate,[chr_translate/2]). +:-module(chr_translate,[chr_translate/2,chr_translate_line_info/3]). :-use_module(chr_runtime). -:-style_check((-singleton)). -:-style_check((-discontiguous)). -:-use_module(library(lists)). -:-use_module(hprolog). -:-use_module(library(assoc)). -:-use_module(pairlist). +:-style_check(-discontiguous). +:-use_module(library(lists),[member/2,append/3,reverse/2,permutation/2,last/2]). :-use_module(library(ordsets)). +:-use_module(library(aggregate)). +:-use_module(library(apply_macros)). +:-use_module(library(occurs)). +:-use_module(library(assoc)). +:-use_module(hprolog). +:-use_module(pairlist). :-use_module(a_star). :-use_module(listmap). :-use_module(clean_code). :-use_module(builtins). :-use_module(find). +:-use_module(binomialheap). :-use_module(guard_entailment). :-use_module(chr_compiler_options). :-use_module(chr_compiler_utility). +:-use_module(chr_compiler_errors). :-include(chr_op). :-op(1150,fx,chr_type). +:-op(1150,fx,chr_declaration). :-op(1130,xfx,--->). -:-op(1150,fx,+). -:-op(1150,fx,-). -:-op(1150,fx,?). +:-op(980,fx,+). +:-op(980,fx,-). +:-op(980,fx,?). +:-op(1150,fx,constraints). +:-op(1150,fx,chr_constraint). +format_storetype(multi_store(A)) :- + !, + maplist(format_storetype,A). +format_storetype(atomic_constants(A,B,_)) :- + format(' * a trie index on the argument(s) ~w for the ground terms ~w +',[A,B]). +format_storetype(ground_constants(A,B,_)) :- + format(' * a trie index on the argument(s) ~w for the ground terms ~w +',[A,B]). +format_storetype(A) :- + format(' * ~w +',[A]). +get_constraint_arg_type(A,B,C) :- + get_constraint_type(A,D), + nth1(B,D,E), + unalias_type(E,C). +partial_store(ground_constants(_,_,incomplete)). +partial_store(atomic_constants(_,_,incomplete)). +late_allocation_analysis(A) :- + ( chr_pp_flag(late_allocation,on) -> + maplist(late_allocation,A) + ; + true + ). +late_allocation(A) :- + late_allocation(A,0). +late_allocation(A,B) :- + allocation_occurrence(A,B), + !. +late_allocation(A,B) :- + C is B+1, + late_allocation(A,C). +stored_in_guard_before_next_kept_occurrence(A,B) :- + chr_pp_flag(store_in_guards,on), + C is B+1, + stored_in_guard_lookahead(A,C). set_constraint_indices(A) :- set_constraint_indices(A,1). set_constraint_indices([],A) :- @@ -38,10 +82,13 @@ set_constraint_indices([A|B],C) :- ( chr_pp_flag(debugable,on) ; - may_trigger(A) + \+only_ground_indexed_arguments(A), + is_stored(A) ; is_stored(A), get_store_type(A,default) + ; + get_store_type(A,var_assoc_store(_,_)) ) -> constraint_index(A,C), D is C+1, @@ -49,47 +96,81 @@ set_constraint_indices([A|B],C) :- ; set_constraint_indices(B,C) ). -chr_translate(A,B) :- - init_chr_pp_flags, - partition_clauses(A,C,D,E), - check_declared_constraints(C), - ( C==[] -> - insert_declarations(E,B) +type_indexed_identifier_structure(A,B) :- + type_indexed_identifier_name(A,type_indexed_identifier_struct,C), + get_type_indexed_identifier_size(A,D), + functor(B,C,D). +type_indexed_identifier_name(A,B,C) :- + ( atom(A) -> + D=A ; - generate_show_constraint(C,F,D,G), - add_constraints(F), - add_rules(G), - check_rules(G,F), - add_occurrences(G), - functional_dependency_analysis(G), - set_semantics_rules(G), - symmetry_analysis(G), - guard_simplification, - storage_analysis(F), - observation_analysis(F), - ai_observation_analysis(F), - late_allocation(F), - assume_constraint_stores(F), - set_constraint_indices(F), - constraints_code(F,H), - validate_store_type_assumptions(F), - store_management_preds(F,I), - insert_declarations(E,J), - chr_module_declaration(K), - append_lists([J,I,H,K],B) - ). + term_to_atom(A,D) + ), + atom_concat_list([B,'_',D],C). +chr_translate(A,B) :- + chr_translate_line_info(A,bootstrap,B). +chr_translate_line_info(A,B,C) :- + chr_banner, + restart_after_flattening(A,D), + init_chr_pp_flags, + chr_source_file(B), + partition_clauses(D,E,F,G), + chr_compiler_options:sanity_check, + dump_code(D), + check_declared_constraints(E), + generate_show_constraint(E,H,F,I), + add_constraints(H), + add_rules(I), + generate_never_stored_rules(H,J), + add_rules(J), + append(I,J,K), + chr_analysis(K,H,D), + time('constraint code generation',chr_translate:constraints_code(H,L)), + time('validate store assumptions',chr_translate:validate_store_type_assumptions(H)), + phase_end(validate_store_type_assumptions), + used_states_known, + time('store code generation',chr_translate:store_management_preds(H,M)), + insert_declarations(G,N), + chr_module_declaration(O), + append([M,L,O,[end_of_file]],P), + clean_clauses(P,Q), + append([N,Q],C), + dump_code(C), + !. +chr_analysis(A,B,C) :- + check_rules(A,B), + time('type checking',chr_translate:static_type_check), + collect_constants(A,B,C), + add_occurrences(A), + time('functional dependency',chr_translate:functional_dependency_analysis(A)), + time('set semantics',chr_translate:set_semantics_rules(A)), + time('symmetry analysis',chr_translate:symmetry_analysis(A)), + time('guard simplification',chr_translate:guard_simplification), + time('late storage',chr_translate:storage_analysis(B)), + time(observation,chr_translate:observation_analysis(B)), + time('ai observation',chr_translate:ai_observation_analysis(B)), + time('late allocation',chr_translate:late_allocation_analysis(B)), + partial_wake_analysis, + time('assume constraint stores',chr_translate:assume_constraint_stores(B)), + time('default constraint indices',chr_translate:set_constraint_indices(B)), + time('check storedness assertions',chr_translate:check_storedness_assertions(B)), + time('continuation analysis',chr_translate:continuation_analysis(B)). store_management_preds(A,B) :- generate_attach_detach_a_constraint_all(A,C), - generate_indexed_variables_clauses(A,D), + generate_attr_unify_hook(D), generate_attach_increment(E), - generate_attr_unify_hook(F), - generate_extra_clauses(A,G), - generate_insert_delete_constraints(A,H), - generate_attach_code(A,I), - generate_counter_code(J), - append_lists([C,D,E,F,G,H,I,J],B). + generate_extra_clauses(A,F), + generate_insert_delete_constraints(A,G), + generate_attach_code(A,H), + generate_counter_code(I), + generate_dynamic_type_check_clauses(J), + append([C,E,D,F,G,H,I,J],B). insert_declarations(A,B) :- - append(A,[(:-use_module(chr(chr_runtime))),(:-use_module(chr(chr_hashtable_store))),(:-use_module(library('clp/clp_events')))],B). + findall((:-use_module(chr(C))),(auxiliary_module(C),is_used_auxiliary_module(C)),D), + append(A,[(:-use_module(chr(chr_runtime)))|D],B). +auxiliary_module(chr_hashtable_store). +auxiliary_module(chr_integertable_store). +auxiliary_module(chr_assoc_store). generate_counter_code(A) :- ( chr_pp_flag(store_counter,on) -> A=[('$counter_init'(B):-nb_setval(B,0)),('$counter'(C,D):-nb_getval(C,D)),('$counter_inc'(E):-nb_getval(E,F),G is F+1,nb_setval(E,G)),(:-'$counter_init'('$insert_counter')),(:-'$counter_init'('$delete_counter')),('$insert_counter_inc':-'$counter_inc'('$insert_counter')),('$delete_counter_inc':-'$counter_inc'('$delete_counter')),(counter_stats(H,I):-'$counter'('$insert_counter',H),'$counter'('$delete_counter',I))] @@ -98,7 +179,8 @@ generate_counter_code(A) :- ). chr_module_declaration(A) :- get_target_module(B), - ( B\==chr_translate -> + ( B\==chr_translate, + chr_pp_flag(toplevel_show_store,on) -> A=[(:-multifile chr:'$chr_module'/1),chr:'$chr_module'(B)] ; A=[] @@ -128,11 +210,15 @@ partition_clauses([A|B],C,D,E) :- D=H, E=I ) + ; + ( is_chr_declaration(A) -> + C=G, + D=H, + E=I + ) ; ( A=(handler _) -> - format('CHR compiler WARNING: ~w. -',[A]), - format(' `--> SICStus compatibility: ignoring handler/1 declaration. + chr_warning(deprecated(A),'Backward compatibility: ignoring handler/1 declaration. ',[]), C=G, D=H, @@ -140,9 +226,7 @@ partition_clauses([A|B],C,D,E) :- ) ; ( A=(rules _) -> - format('CHR compiler WARNING: ~w. -',[A]), - format(' `--> SICStus compatibility: ignoring rules/1 declaration. + chr_warning(deprecated(A),'Backward compatibility: ignoring rules/1 declaration. ',[]), C=G, D=H, @@ -150,69 +234,127 @@ partition_clauses([A|B],C,D,E) :- ) ; ( A=option(L,M) -> + chr_warning(deprecated(A),'Instead use `:-chr_option(~w,~w).'' +',[L,M]), handle_option(L,M), C=G, D=H, E=I ) + ; + ( A=(:-chr_option(L,M)) -> + handle_option(L,M), + C=G, + D=H, + E=I + ) + ; + ( A='$chr_compiled_with_version'(_) -> + C=G, + D=H, + E=['$chr_compiled_with_version'(3)|I] + ) ; C=G, D=H, E=[A|I] ), partition_clauses(B,G,H,I). +'$chr_compiled_with_version'(3). is_declaration(A,B) :- - ( A=(:-C) -> - true + ( A=(:-C), + C=..[D,E], + D==chr_constraint -> + conj2list(E,F) ; - A=C + ( A=(:-C) -> + C=..[constraints,E] + ; + A=..[constraints,E] + ), + conj2list(E,F), + chr_warning(deprecated(A),'Instead use :- chr_constraint ~w. +',[E]) ), - C=..[constraints,D], - conj2list(D,E), - extract_type_mode(E,B). + extract_type_mode(F,B). extract_type_mode([],[]). extract_type_mode([A/B|C],[A/B|D]) :- !, extract_type_mode(C,D). extract_type_mode([A|B],[C|D]) :- - functor(A,E,F), - C=E/F, - A=..[_|G], - extract_types_and_modes(G,H,I), - constraint_type(E/F,H), - constraint_mode(E/F,I), + ( A=E#F -> + functor(E,G,H), + extract_annotation(F,G/H) + ; + A=E, + functor(E,G,H) + ), + C=G/H, + E=..[_|I], + extract_types_and_modes(I,J,K), + assert_constraint_type(C,J), + constraint_mode(C,K), extract_type_mode(B,D). +extract_annotation(stored,A) :- + stored_assertion(A). +extract_annotation(default(A),B) :- + never_stored_default(B,A). extract_types_and_modes([],[],[]). -extract_types_and_modes([(+A)|B],[A|C],[+|D]) :- - !, - extract_types_and_modes(B,C,D). -extract_types_and_modes([(?A)|B],[A|C],[?|D]) :- - !, - extract_types_and_modes(B,C,D). -extract_types_and_modes([(-A)|B],[A|C],[?|D]) :- - !, - extract_types_and_modes(B,C,D). -extract_types_and_modes([A|_],_,_) :- - format('CHR compiler ERROR: Illegal mode/type declaration "~w". -',[A]), - format(' `--> correct syntax is +type, -type or ?type. -',[]), - fail. +extract_types_and_modes([A|B],[C|D],[E|F]) :- + extract_type_and_mode(A,C,E), + extract_types_and_modes(B,D,F). +extract_type_and_mode(+A,A,+) :- + !. +extract_type_and_mode(?A,A,?) :- + !. +extract_type_and_mode(-A,A,-) :- + !. +extract_type_and_mode(+,any,+) :- + !. +extract_type_and_mode(?,any,?) :- + !. +extract_type_and_mode(-,any,-) :- + !. +extract_type_and_mode(A,_,_) :- + chr_error(syntax(A),'Illegal mode/type declaration. + Correct syntax is +type, -type or ?type + or +, - or ?. +',[]). +is_chr_declaration(A) :- + A=(:-chr_declaration B), + ( B=(C--->D) -> + background_info(C,D) + ; + ( B=D -> + background_info([D]) + ) + ). is_type_definition(A) :- - ( A=(:-B) -> + is_type_definition(A,B), + assert_type_definition(B). +assert_type_definition(typedef(A,B)) :- + type_definition(A,B). +assert_type_definition(alias(A,B)) :- + type_alias(A,B). +is_type_definition(A,B) :- + ( A=(:-C) -> true ; - A=B + A=C ), - B=..[chr_type,C], - ( C=(D--->E) -> - tdisj2list(E,F), - type_definition(D,F) + C=..[chr_type,D], + ( D=(E--->F) -> + tdisj2list(F,G), + B=typedef(E,G) ; - format('CHR compiler WARNING: Illegal type definition "~w". -',[C]), - format(' `--> Ignoring this malformed type definition. -',[]) + ( D=(H==E) -> + B=alias(H,E) + ) + ; + B=typedef(D,[]), + chr_warning(syntax,'Empty type definition `~w''. +Are you sure you want to declare a phantom type? +',[A]) ). tdisj2list(A,B) :- tdisj2list(A,B,[]). @@ -231,59 +373,80 @@ parse_rule(A,B) :- rule(A,B,C) :- A=(D pragma E), !, - is_rule(D,F,G), - conj2list(E,H), - inc_rule_count(I), - C=pragma(F,G,H,B,I). + ( var(E) -> + F=[_] + ; + conj2list(E,F) + ), + inc_rule_count(G), + C=pragma(H,I,F,B,G), + is_rule(D,H,I,C). rule(A,B,C) :- - is_rule(A,D,E), - inc_rule_count(F), - C=pragma(D,E,[],B,F). -is_rule(A,B,C) :- - A=(D==>E), + inc_rule_count(D), + C=pragma(E,F,[],B,D), + is_rule(A,E,F,C). +is_rule(A,B,C,D) :- + A=(E==>F), !, - conj2list(D,F), - get_ids(F,G,H), - C=ids([],G), - ( E=(I '|' J) -> - B=rule([],H,I,J) + conj2list(E,G), + get_ids(G,H,I,D), + C=ids([],H), + ( F=(J '|' K) -> + B=rule([],I,J,K) ; - B=rule([],H,true,E) + B=rule([],I,true,F) ). -is_rule(A,B,C) :- - A=(D<=>E), +is_rule(A,B,C,D) :- + A=(E<=>F), !, - ( E=(F '|' G) -> - H=F, - I=G + ( F=(G '|' H) -> + I=G, + J=H ; - H=true, - I=E + I=true, + J=F ), - ( D=(J\K) -> - conj2list(J,L), + ( E=(K\L) -> conj2list(K,M), - get_ids(L,N,O,0,P), - get_ids(M,Q,R,P,_), - C=ids(Q,N) + conj2list(L,N), + get_ids(M,O,P,0,Q,D), + get_ids(N,R,S,Q,_,D), + C=ids(R,O) ; - conj2list(D,M), - O=[], - get_ids(M,Q,R), - C=ids(Q,[]) + conj2list(E,N), + P=[], + get_ids(N,R,S,D), + C=ids(R,[]) ), - B=rule(R,O,H,I). -get_ids(A,B,C) :- - get_ids(A,B,C,0,_). -get_ids([],[],[],A,A). -get_ids([A|B],[C|D],[E|F],C,G) :- - ( A=E#C -> - true + B=rule(S,P,I,J). +get_ids(A,B,C,D) :- + get_ids(A,B,C,0,_,D). +get_ids([],[],[],A,A,_). +get_ids([A|B],[C|D],[E|F],C,G,H) :- + ( A=E#I -> + ( var(I) -> + I=C + ; + check_direct_pragma(I,C,H) + ) ; E=A ), - H is C+1, - get_ids(B,D,F,H,G). + J is C+1, + get_ids(B,D,F,J,G,H). +check_direct_pragma(passive,A,B) :- + !, + B=pragma(_,_,_,_,C), + passive(C,A). +check_direct_pragma(A,_,B) :- + ( direct_pragma(C), + atom_concat(A,_,C) -> + chr_warning(problem_pragma(A,B),'completed `~w'' to `~w'' +',[A,C]) + ; + chr_warning(unsupported_pragma(A,B),'',[]) + ). +direct_pragma(passive). is_module_declaration((:-module(A)),A). is_module_declaration((:-module(A,_)),A). add_constraints([]). @@ -300,41 +463,50 @@ add_rules([A|B]) :- rule(C,A), add_rules(B). check_declared_constraints(A) :- - check_declared_constraints(A,[]). + tree_set_empty(B), + check_declared_constraints(A,B). check_declared_constraints([],_). check_declared_constraints([A|B],C) :- - ( memberchk_eq(A,C) -> - format('CHR compiler ERROR: constraint ~w multiply defined. -',[A]), - format(' `--> Remove redundant declaration! -',[]), - fail + ( tree_set_memberchk(A,C) -> + chr_error(syntax(A),'Constraint multiply defined: ~w. + Remove redundant declaration! +',[A]) ; true ), - check_declared_constraints(B,[A|C]). + tree_set_add(C,A,D), + check_declared_constraints(B,D). check_rules([],_). check_rules([A|B],C) :- check_rule(A,C), check_rules(B,C). check_rule(A,B) :- check_rule_indexing(A), + check_trivial_propagation_rule(A), A=pragma(C,_,D,_,_), C=rule(E,F,_,_), append(E,F,G), check_head_constraints(G,B,A), check_pragmas(D,A). +check_trivial_propagation_rule(A) :- + A=pragma(B,_,_,_,C), + ( B=rule([],_,_,true) -> + chr_warning(weird_program,'Ignoring propagation rule with empty body: ~@. + +',[format_rule(A)]), + set_all_passive(C) + ; + true + ). check_head_constraints([],_,_). check_head_constraints([A|B],C,D) :- functor(A,E,F), - ( member(E/F,C) -> + ( memberchk(E/F,C) -> check_head_constraints(B,C,D) ; - format('CHR compiler ERROR: Undeclared constraint ~w in head of ~@. -',[E/F,format_rule(D)]), - format(' `--> Constraint should be one of ~w. -',[C]), - fail + chr_error(syntax(A),'Undeclared constraint ~w in head of ~@. + Constraint should be one of ~w. +',[E/F,format_rule(D),C]) ). check_pragmas([],_). check_pragmas([A|B],C) :- @@ -343,11 +515,9 @@ check_pragmas([A|B],C) :- check_pragma(A,B) :- var(A), !, - format('CHR compiler ERROR: invalid pragma ~w in ~@. -',[A,format_rule(B)]), - format(' `--> Pragma should not be a variable! -',[]), - fail. + chr_error(syntax(A),'Invalid pragma ~w in ~@. + Pragma should not be a variable! +',[A,format_rule(B)]). check_pragma(passive(A),B) :- !, B=pragma(_,ids(C,D),_,_,E), @@ -358,31 +528,80 @@ check_pragma(passive(A),B) :- true ) ; - format('CHR compiler ERROR: invalid identifier ~w in pragma passive in ~@. -',[A,format_rule(B)]), - fail + chr_error(syntax(A),'Invalid identifier ~w in pragma passive in ~@. +',[A,format_rule(B)]) ), passive(E,A). +check_pragma(mpassive(A),B) :- + !, + B=pragma(_,_,_,_,C), + chr_warning(experimental,'Experimental pragma ~w. Use with care! +',[mpassive(A)]), + maplist(passive(C),A). check_pragma(A,B) :- A=already_in_heads, !, - format('CHR compiler WARNING: currently unsupported pragma ~w in ~@. -',[A,format_rule(B)]), - format(' `--> Pragma is ignored. Termination and correctness may be affected + chr_warning(unsupported_pragma(A,B),'Termination and correctness may be affected. ',[]). check_pragma(A,B) :- A=already_in_head(_), !, - format('CHR compiler WARNING: currently unsupported pragma ~w in ~@. -',[A,format_rule(B)]), - format(' `--> Pragma is ignored. Termination and correctness may be affected + chr_warning(unsupported_pragma(A,B),'Termination and correctness may be affected. ',[]). check_pragma(A,B) :- - format('CHR compiler ERROR: invalid pragma ~w in ~@. -',[A,format_rule(B)]), - format(' `--> Pragma should be one of passive/1! + A=no_history, + !, + chr_warning(experimental,'Experimental pragma no_history. Use with care! ',[]), - fail. + B=pragma(_,_,_,_,C), + no_history(C). +check_pragma(A,B) :- + A=history(C,D), + !, + B=pragma(_,ids(E,F),_,_,G), + chr_warning(experimental,'Experimental pragma ~w. Use with care! +',[A]), + ( E\==[] -> + chr_error(syntax(A),'Pragma history only implemented for propagation rules. +',[]) + ; + ( \+atom(C) -> + chr_error(syntax(A),'Illegal argument for pragma history: ~w is not an atom (rule number ~w). +',[C,G]) + ) + ; + ( \+is_set(D) -> + chr_error(syntax(A),'Illegal argument for pragma history: ~w is not a set (rule number ~w). +',[D,G]) + ) + ; + ( check_history_pragma_ids(D,E,F) -> + history(G,C,D) + ) + ; + chr_error(syntax(A),'Invalid identifier(s) in pragma ~w of rule number ~w. +',[A,G]) + ). +check_pragma(A,B) :- + A=line_number(C), + !, + B=pragma(_,_,_,_,D), + line_number(D,C). +check_history_pragma_ids([],_,_). +check_history_pragma_ids([A|B],C,D) :- + ( + memberchk_eq(A,D) + ; + memberchk_eq(A,C) + ), + check_history_pragma_ids(B,C,D). +check_pragma(A,B) :- + chr_error(syntax(A),'Unknown pragma ~w in ~@. +',[A,format_rule(B)]). +test_named_history_id_pairs(_,[],_,[]). +test_named_history_id_pairs(A,[B|C],D,[E|F]) :- + test_named_history_id_pair(A,B,D,E), + test_named_history_id_pairs(A,C,D,F). format_rule(A) :- A=pragma(_,_,_,B,C), ( B=yes(D) -> @@ -391,14 +610,25 @@ format_rule(A) :- ; write('rule number '), write(C) - ). + ), + get_line_number(C,E), + write(' (line '), + write(E), + write(')'). check_rule_indexing(A) :- A=pragma(B,_,_,_,_), B=rule(C,D,E,_), term_variables(C-D,F), remove_anti_monotonic_guards(E,F,G), check_indexing(C,G-D), - check_indexing(D,G-C). + check_indexing(D,G-C), + ( chr_pp_flag(term_indexing,on) -> + term_variables(G,H), + append(C,D,I), + check_specs_indexing(I,H,_) + ; + true + ). remove_anti_monotonic_guards(A,B,C) :- conj2list(A,D), remove_anti_monotonic_guard_list(D,B,E), @@ -440,88 +670,59 @@ check_indexing([A|B],C,D,E) :- term_variables(A,I), append(I,E,J), check_indexing(B,H,D,J). +check_specs_indexing([],_,[]). +check_specs_indexing([A|B],C,D) :- + D=[E|F], + term_variables(B,G,C), + check_spec_indexing(A,G,E), + term_variables(A,H,C), + check_specs_indexing(B,H,F). +check_spec_indexing(A,B,C) :- + functor(A,D,E), + C=spec(D,E,F), + A=..[_|G], + check_args_spec_indexing(G,1,B,F), + indexing_spec(D/E,[F]). +check_args_spec_indexing([],_,_,[]). +check_args_spec_indexing([A|B],C,D,E) :- + term_variables(B,F,D), + ( check_arg_spec_indexing(A,C,F,G) -> + E=[G|H] + ; + E=H + ), + I is C+1, + term_variables(A,J,D), + check_args_spec_indexing(B,I,J,H). +check_arg_spec_indexing(A,B,C,D) :- + ( var(A) -> + memberchk_eq(A,C), + D=specinfo(B,any,[]) + ; + functor(A,E,F), + D=specinfo(B,E/F,[G]), + A=..[_|H], + check_args_spec_indexing(H,1,C,G) + ). add_occurrences([]). add_occurrences([A|B]) :- A=pragma(rule(C,D,_,_),ids(E,F),_,_,G), - add_occurrences(C,E,G), - add_occurrences(D,F,G), + add_occurrences(C,E,simplification,G), + add_occurrences(D,F,propagation,G), add_occurrences(B). -add_occurrences([],[],_). -add_occurrences([A|B],[C|D],E) :- - functor(A,F,G), - H=F/G, - new_occurrence(H,E,C), - add_occurrences(B,D,E). -is_observed(A,B) :- - is_self_observer(A), - ai_is_observed(A,B). -observation_analysis(A) :- - ( chr_pp_flag(observation,on) -> - observation_analysis(A,A) - ; - true - ). -observation_analysis([],_). -observation_analysis([A|B],C) :- - get_max_occurrence(A,D), - observation_analysis_occurrences(A,1,D,C), - observation_analysis(B,C). -observation_analysis_occurrences(A,B,C,D) :- - ( B>C -> +add_occurrences([],[],_,_). +add_occurrences([A|B],[C|D],E,F) :- + functor(A,G,H), + I=G/H, + new_occurrence(I,F,C,E), + add_occurrences(B,D,E,F). +observation_analysis(A,B,C,D) :- + ( all_spawned(A,C) -> true ; - observation_analysis_occurrence(A,B,D), - E is B+1, - observation_analysis_occurrences(A,E,C,D) - ). -observation_analysis_occurrence(A,B,C) :- - get_occurrence(A,B,D,E), - ( is_passive(D,E) -> - true - ; - get_rule(D,F), - F=pragma(rule(G,H,_,I),ids(J,K),_,_,_), - ( select2(E,L,J,G,_,M) -> - append(M,H,N) - ; - ( select2(E,L,K,H,_,O) -> - append(O,G,N) - ) - ), - observe_heads(A,N), - observe_body(A,I,C) - ). -observe_heads(A,B) :- - findall(C/D,(member(E,B),functor(E,C,D)),F), - observe_all(A,F). -observe_all(A,B) :- - ( B=[C|D] -> - observes(A,C), - observe_all(A,D) - ; - true - ). -spawn_all(A,B) :- - ( B=[C|D] -> - spawns_observer(A,C), - spawn_all(A,D) - ; - true - ). -spawn_all_triggers(A,B) :- - ( B=[C|D] -> - ( may_trigger(C) -> - spawns_observer(A,C) - ; - true - ), - spawn_all_triggers(A,D) - ; - true - ). -observe_body(A,B,C) :- - ( var(B) -> - spawn_all(A,C) + ( var(B) -> + spawns_all(A,C) + ) ; ( B=true -> true @@ -531,61 +732,67 @@ observe_body(A,B,C) :- true ) ; - ( B=(D,E) -> - observe_body(A,D,C), - observe_body(A,E,C) + ( B=! -> + true ) ; - ( B=(D;E) -> - observe_body(A,D,C), - observe_body(A,E,C) + ( B=(E,F) -> + observation_analysis(A,E,C,D), + observation_analysis(A,F,C,D) ) ; - ( B=(D->E) -> - observe_body(A,D,C), - observe_body(A,E,C) + ( B=(E;F) -> + observation_analysis(A,E,C,D), + observation_analysis(A,F,C,D) ) ; - ( functor(B,F,G), - member(F/G,C) -> - spawns_observer(A,F/G) + ( B=(E->F) -> + observation_analysis(A,E,C,D), + observation_analysis(A,F,C,D) + ) + ; + ( B=(\+G) -> + observation_analysis(A,G,C,D) + ) + ; + ( functor(B,H,I), + memberchk(H/I,D) -> + spawns(A,C,H/I) ) ; ( B=(_=_) -> - spawn_all_triggers(A,C) + spawns_all_triggers(A,C) ) ; ( B=(_ is _) -> - spawn_all_triggers(A,C) + spawns_all_triggers(A,C) ) ; - ( binds_b(B,H) -> - ( H==[] -> + ( builtin_binds_b(B,J) -> + ( J==[] -> true ; - spawn_all_triggers(A,C) + spawns_all_triggers(A,C) ) ) ; - spawn_all(A,C) + spawns_all(A,C) ). -late_allocation_analysis(A) :- - ( chr_pp_flag(late_allocation,on) -> - late_allocation(A) - ; - true - ). -late_allocation([]). -late_allocation([A|B]) :- - allocation_occurrence(A,1), - late_allocation(B). +is_observed(A,B) :- + is_observed(A,B,_), + ai_is_observed(A,B). +is_stored_in_guard(A,B) :- + chr_pp_flag(store_in_guards,on), + do_is_observed(A,B,guard). generate_attach_detach_a_constraint_all([],[]). generate_attach_detach_a_constraint_all([A|B],C) :- ( ( chr_pp_flag(debugable,on) ; - may_trigger(A) + is_stored(A), + \+only_ground_indexed_arguments(A), + \+get_store_type(A,var_assoc_store(_,_)) ) -> generate_attach_a_constraint(A,D), generate_detach_a_constraint(A,E) @@ -594,206 +801,592 @@ generate_attach_detach_a_constraint_all([A|B],C) :- E=[] ), generate_attach_detach_a_constraint_all(B,F), - append_lists([D,E,F],C). + append([D,E,F],C). generate_attach_a_constraint(A,[B,C]) :- - generate_attach_a_constraint_empty_list(A,B), - get_max_constraint_index(D), - ( D==1 -> - generate_attach_a_constraint_1_1(A,C) - ; - generate_attach_a_constraint_t_p(A,C) - ). -generate_attach_a_constraint_skeleton(A,B,C,D) :- + generate_attach_a_constraint_nil(A,B), + generate_attach_a_constraint_cons(A,C). +attach_constraint_atom(A,B,C,D) :- make_name(attach_,A,E), - F=..[E|B], - D=(F:-C). -generate_attach_a_constraint_empty_list(A,B) :- - generate_attach_a_constraint_skeleton(A,[[],_],true,B). -generate_attach_a_constraint_1_1(A,B) :- - C=[[D|E],F], - generate_attach_a_constraint_skeleton(A,C,G,B), - generate_attach_body_1(A,D,F,H), - make_name(attach_,A,I), - J=..[I,E,F], - chr_pp_flag(solver_events,K), - ( K\==none -> - C=[[D|_],F], - get_target_module(L), - M=clp_events:subscribe(D,K,L,chr_runtime:'chr run_suspensions'([F])) + D=..[E,B,C]. +generate_attach_a_constraint_nil(A,B) :- + B=(C:-true), + attach_constraint_atom(A,[],_,C). +generate_attach_a_constraint_cons(A,B) :- + B=(C:-D), + attach_constraint_atom(A,[E|F],G,C), + attach_constraint_atom(A,F,G,H), + D=(I,J,H), + get_max_constraint_index(K), + ( K==1 -> + generate_attach_body_1(A,E,G,I) ; - M=true + generate_attach_body_n(A,E,G,I) ), - G=(H,M,J). + chr_pp_flag(solver_events,L), + ( L\==none -> + _=[[E|_],G], + get_target_module(M), + use_auxiliary_predicate(run_suspensions), + J=clp_events:subscribe(E,L,M,M:'$run_suspensions'([G])) + ; + J=true + ). generate_attach_body_1(_,A,B,C) :- get_target_module(D), - C=(get_attr(A,D,E)->F=[B|E],put_attr(A,D,F);put_attr(A,D,[B])). -generate_attach_a_constraint_t_p(A,B) :- - C=[[D|E],F], - generate_attach_a_constraint_skeleton(A,C,G,B), - make_name(attach_,A,H), - I=..[H,E,F], - generate_attach_body_n(A,D,F,J), - chr_pp_flag(solver_events,K), - ( K\==none -> - C=[[D|_],F], - get_target_module(L), - M=clp_events:subscribe(D,K,L,chr_runtime:'chr run_suspensions'([F])) - ; - M=true - ), - G=(J,M,I). + C=(get_attr(A,D,E)->put_attr(A,D,[B|E]);put_attr(A,D,[B])). generate_attach_body_n(A/B,C,D,E) :- get_constraint_index(A/B,F), - or_pattern(F,G), - get_max_constraint_index(H), - make_attr(H,I,J,K), - nth(F,J,L), - substitute(L,J,[D|L],M), - make_attr(H,I,M,N), - substitute(L,J,[D],O), - make_attr(H,P,O,Q), - copy_term(J,R), - nth(F,R,[D]), - chr_delete(R,[D],S), - set_elems(S,[]), - make_attr(H,G,R,T), - get_target_module(U), - E=(get_attr(C,U,V)->V=K,(I/\G=:=G->put_attr(C,U,N);P is I\/G,put_attr(C,U,Q));put_attr(C,U,T)). + get_max_constraint_index(G), + get_target_module(H), + add_attr(G,D,F,I,J,K), + singleton_attr(G,D,F,L), + E=(get_attr(C,H,I)->J,put_attr(C,H,K);put_attr(C,H,L)), + !. generate_detach_a_constraint(A,[B,C]) :- - generate_detach_a_constraint_empty_list(A,B), - get_max_constraint_index(D), - ( D==1 -> - generate_detach_a_constraint_1_1(A,C) + generate_detach_a_constraint_nil(A,B), + generate_detach_a_constraint_cons(A,C). +detach_constraint_atom(A,B,C,D) :- + make_name(detach_,A,E), + D=..[E,B,C]. +generate_detach_a_constraint_nil(A,B) :- + B=(C:-true), + detach_constraint_atom(A,[],_,C). +generate_detach_a_constraint_cons(A,B) :- + B=(C:-D), + detach_constraint_atom(A,[E|F],G,C), + detach_constraint_atom(A,F,G,H), + D=(I,H), + get_max_constraint_index(J), + ( J==1 -> + generate_detach_body_1(A,E,G,I) ; - generate_detach_a_constraint_t_p(A,C) + generate_detach_body_n(A,E,G,I) ). -generate_detach_a_constraint_empty_list(A,B) :- - make_name(detach_,A,C), - D=[[],_], - E=..[C|D], - B=(E:-true). -generate_detach_a_constraint_1_1(A,B) :- - make_name(detach_,A,C), - D=[[E|F],G], - H=..[C|D], - I=..[C,F,G], - generate_detach_body_1(A,E,G,J), - K=(J,I), - B=(H:-K). generate_detach_body_1(_,A,B,C) :- get_target_module(D), C=(get_attr(A,D,E)->'chr sbag_del_element'(E,B,F),(F==[]->del_attr(A,D);put_attr(A,D,F));true). -generate_detach_a_constraint_t_p(A,B) :- - make_name(detach_,A,C), - D=[[E|F],G], - H=..[C|D], - I=..[C,F,G], - generate_detach_body_n(A,E,G,J), - K=(J,I), - B=(H:-K). generate_detach_body_n(A/B,C,D,E) :- get_constraint_index(A/B,F), - or_pattern(F,G), - and_pattern(F,H), - get_max_constraint_index(I), - make_attr(I,J,K,L), - nth(F,K,M), - substitute(M,K,[],N), - make_attr(I,O,N,P), - substitute(M,K,Q,R), - make_attr(I,J,R,S), - get_target_module(T), - E=(get_attr(C,T,U)->U=L,(J/\G=:=G->'chr sbag_del_element'(M,D,Q),(Q==[]->O is J/\H,(O==0->del_attr(C,T);put_attr(C,T,P));put_attr(C,T,S));true);true). -generate_indexed_variables_clauses(A,B) :- - ( forsome(C,A,chr_translate:may_trigger(C)) -> - generate_indexed_variables_clauses_(A,B) - ; - B=[] - ). -generate_indexed_variables_clauses_([],[]). -generate_indexed_variables_clauses_([A|B],C) :- - ( is_stored(A) -> - C=[D|E], - generate_indexed_variables_clause(A,D) - ; - C=E - ), - generate_indexed_variables_clauses_(B,E). -create_indexed_variables_body([],[],_,_,_,empty,0). -create_indexed_variables_body([A|B],[C|D],E,F,G,H,I) :- - J is F+1, - create_indexed_variables_body(B,D,K,J,G,L,M), - ( C\== +, - is_indexed_argument(G,F) -> - ( L==empty -> - H=term_variables(A,E) - ; - H=(term_variables(A,E,K),L) - ), - I=M - ; - E=K, - H=L, - I is M+1 - ). -generate_extra_clauses(A,B) :- - generate_activate_clause(B,C), - generate_remove_clause(C,D), - generate_allocate_clause(D,E), - generate_insert_constraint_internal(E,F), - global_indexed_variables_clause(A,F,[]). -generate_remove_clause(A,B) :- - ( is_used_auxiliary_predicate(remove_constraint_internal) -> - A=[C|B], - use_auxiliary_predicate(chr_indexed_variables), - C=(remove_constraint_internal(D,E,F):-arg(2,D,G),G=mutable(H),'chr update_mutable'(removed,G),(compound(H)->E=[],F=no;H==removed->E=[],F=no;F=yes,chr_indexed_variables(D,E))) - ; - A=B - ). -generate_activate_clause(A,B) :- - ( is_used_auxiliary_predicate(activate_constraint) -> - A=[C|B], - use_auxiliary_predicate(chr_indexed_variables), - C=(activate_constraint(D,E,F,G):-arg(2,F,H),H=mutable(I),'chr update_mutable'(active,H),(nonvar(G)->true;arg(4,F,J),J=mutable(K),G is K+1,'chr update_mutable'(G,J)),(compound(I)->term_variables(I,E),'chr none_locked'(E),D=yes;I==removed->chr_indexed_variables(F,E),D=yes;E=[],D=no)) - ; - A=B - ). -generate_allocate_clause(A,B) :- - ( is_used_auxiliary_predicate(allocate_constraint) -> - A=[C|B], - use_auxiliary_predicate(chr_indexed_variables), - C=(allocate_constraint(D,E,F,G):-E=..[suspension,H,I,D,J,K,F|G],J=mutable(0),'chr empty_history'(L),K=mutable(L),chr_indexed_variables(E,M),I=mutable(passive(M)),'chr gen_id'(H)) - ; - A=B - ). -generate_insert_constraint_internal(A,B) :- - ( is_used_auxiliary_predicate(insert_constraint_internal) -> - A=[C|B], - use_auxiliary_predicate(chr_indexed_variables), - C=(insert_constraint_internal(yes,D,E,F,G,H):-E=..[suspension,I,J,F,K,L,G|H],chr_indexed_variables(E,D),'chr none_locked'(D),J=mutable(active),K=mutable(0),L=mutable(M),'chr empty_history'(M),'chr gen_id'(I)) - ; - A=B - ). -global_indexed_variables_clause(A,B,C) :- - ( is_used_auxiliary_predicate(chr_indexed_variables) -> - B=[D|C], - ( chr_pp_flag(reduced_indexing,on) -> - ( forsome(E,A,chr_translate:may_trigger(E)) -> - F=(G=..[_,_,_,_,_,_,H|_],'$indexed_variables'(H,I)) + get_max_constraint_index(G), + rem_attr(G,C,D,F,H,I), + get_target_module(J), + E=(get_attr(C,J,H)->I;true), + !. +create_indexed_variables_body([],[],[],_,_,_,empty,0). +create_indexed_variables_body([A|B],[C|D],[E|F],G,H,I,J,K) :- + L is H+1, + create_indexed_variables_body(B,D,F,M,L,I,N,O), + ( C== ?, + is_indexed_argument(I,H) -> + ( atomic_type(E) -> + J=((var(A)->G=[A|M];G=M),P), + ( N==empty -> + P=true, + M=[] ; - F=true, - I=[] - ), - D=(chr_indexed_variables(G,I):-F) + P=N + ) ; - D=(chr_indexed_variables(G,I):-'chr chr_indexed_variables'(G,I)) + ( N==empty -> + J=term_variables(A,G) + ) + ; + J=(term_variables(A,G,M),N) + ), + K=O + ; + ( C== -, + is_indexed_argument(I,H) -> + ( N==empty -> + J=(G=[A]) + ; + J=(G=[A|M],N) + ), + K is O+1 + ) + ; + G=M, + J=N, + K is O+1 + ). +spectermvars(A,B,C,D,E,F) :- + spectermvars(B,1,A,C,D,F,[],E). +spectermvars([],A,_,_,B,C,C,true) :- + A>B, + !. +spectermvars([A|B],C,D,E,F,G,H,I) :- + I=(J,K), + argspecs(D,C,L,M), + merge_argspecs(L,N), + arggoal(N,A,J,G,O), + P is C+1, + spectermvars(B,P,M,E,F,O,H,K). +argspecs([],_,[],[]). +argspecs([[]|A],B,C,D) :- + argspecs(A,B,C,D). +argspecs([[specinfo(A,B,C)|D]|E],F,G,H) :- + ( F==A -> + G=[specinfo(A,B,C)|I], + ( D=[] -> + J=H + ; + H=[D|J] + ) + ; + G=I, + H=[[specinfo(A,B,C)|D]|J] + ), + argspecs(E,F,I,J). +merge_argspecs(A,B) :- + sort(A,C), + merge_argspecs_(C,B). +merge_argspecs_([],[]). +merge_argspecs_([A],B) :- + !, + B=[A]. +merge_argspecs_([specinfo(A,B,C),specinfo(A,D,E)|F],G) :- + ( + ( + B==any + ; + D==any + ) -> + merge_argspecs_([specinfo(A,any,[])|F],G) + ; + ( B==D -> + append(C,E,H), + merge_argspecs_([specinfo(A,B,H)|F],G) + ) + ; + G=[specinfo(A,B,C)|I], + merge_argspecs_([specinfo(A,D,E)|F],I) + ). +arggoal(A,B,C,D,E) :- + ( A==[] -> + D=E, + C=true + ; + ( A=[specinfo(_,any,_)] -> + C=term_variables(B,D,E) + ) + ; + C=(var(B)->D=[B|E];F), + arggoal_cases(A,B,D,E,F) + ). +arggoal_cases([],_,A,B,A=B). +arggoal_cases([specinfo(_,A,B)|C],D,E,F,G) :- + ( B==[] -> + G=H + ; + ( B==[[]] -> + G=H + ) + ; + ( A=I/J -> + G=(K;H), + functor(L,I,J), + L=..[_|M], + K=(D=L->N), + spectermvars(M,1,B,I,J,E,F,N) + ) + ), + arggoal_cases(C,D,E,F,H). +generate_extra_clauses(A,B) :- + generate_activate_clauses(A,B,C), + generate_remove_clauses(A,C,D), + generate_allocate_clauses(A,D,E), + generate_insert_constraint_internal_clauses(A,E,F), + generate_novel_production(F,G), + generate_extend_history(G,H), + generate_run_suspensions_clauses(A,H,I), + generate_empty_named_history_initialisations(I,J), + J=[]. +generate_remove_clauses([],A,A). +generate_remove_clauses([A|B],C,D) :- + generate_remove_clause(A,C,E), + generate_remove_clauses(B,E,D). +remove_constraint_goal(A,B,C,D,E,F,G) :- + uses_state(A,removed), + ( chr_pp_flag(inline_insertremove,off) -> + use_auxiliary_predicate(remove_constraint_internal,A), + G=(H,(I==yes->E;D)), + remove_constraint_atom(A,B,C,I,H) + ; + delay_phase_end(validate_store_type_assumptions,generate_remove_body(A,B,C,D,E,F,G)) + ). +remove_constraint_atom(A,B,C,D,E) :- + make_name('$remove_constraint_internal_',A,F), + ( chr_pp_flag(debugable,off), + ( + only_ground_indexed_arguments(A) + ; + get_store_type(A,var_assoc_store(_,_)) + ) -> + E=..[F,B,D] + ; + E=..[F,B,C,D] + ). +generate_remove_clause(A,B,C) :- + ( is_used_auxiliary_predicate(remove_constraint_internal,A) -> + B=[D|C], + D=(E:-F), + remove_constraint_atom(A,G,H,I,E), + generate_remove_body(A,G,H,I=no,I=yes,active,F) + ; + B=C + ). +generate_remove_body(A,B,C,D,E,F,G) :- + ( chr_pp_flag(debugable,off), + ( + only_ground_indexed_arguments(A) + ; + get_store_type(A,var_assoc_store(_,_)) + ) -> + ( F==active -> + get_update_suspension_field(A,B,state,H,removed,I,J,K), + if_used_state(A,not_stored_yet,J,true,L), + if_used_state(A,not_stored_yet,(H==not_stored_yet->D;E),E,M) + ; + ( F==partner -> + get_update_suspension_field(A,B,state,H,removed,I,_,K), + L=true, + M=E + ) + ), + G=(I,L,K,M) + ; + static_suspension_term(A,N), + get_static_suspension_term_field(arguments,A,N,O), + generate_indexed_variables_body(A,O,P,C), + ( chr_pp_flag(debugable,on) -> + A=Q/_, + get_static_suspension_term_field(functor,A,N,Q) + ; + true + ), + ( F==active -> + get_update_static_suspension_field(A,B,N,state,H,removed,J,K), + if_used_state(A,not_stored_yet,J,true,L), + if_used_state(A,not_stored_yet,(H==not_stored_yet->C=[],D;P,E),(P,E),M) + ; + ( F==partner -> + get_update_static_suspension_field(A,B,N,state,H,removed,_,K), + L=true, + M=(P,E) + ) + ), + G=(B=N,L,K,M) + ). +generate_activate_clauses([],A,A). +generate_activate_clauses([A|B],C,D) :- + generate_activate_clause(A,C,E), + generate_activate_clauses(B,E,D). +activate_constraint_goal(A,B,C,D,E,F) :- + ( chr_pp_flag(inline_insertremove,off) -> + use_auxiliary_predicate(activate_constraint,A), + F=(G,(H==yes->B;true)), + activate_constraint_atom(A,H,C,D,E,G) + ; + delay_phase_end(validate_store_type_assumptions,activate_constraint_body(A,B,true,C,D,E,F)) + ). +activate_constraint_atom(A,B,C,D,E,F) :- + make_name('$activate_constraint_',A,G), + ( chr_pp_flag(debugable,off), + only_ground_indexed_arguments(A) -> + F=..[G,B,D] + ; + ( chr_pp_flag(debugable,off), + may_trigger(A), + get_store_type(A,var_assoc_store(_,_)) -> + F=..[G,B,D,E] + ) + ; + ( chr_pp_flag(debugable,off), + may_trigger(A), + get_store_type(A,var_assoc_store(_,_)) -> + F=..[G,B,C,D,E] + ) + ; + F=..[G,B,C,D] + ). +generate_activate_clause(A,B,C) :- + ( is_used_auxiliary_predicate(activate_constraint,A) -> + B=[D|C], + D=(E:-F), + activate_constraint_atom(A,G,H,I,J,E), + activate_constraint_body(A,G=yes,G=no,H,I,J,F) + ; + B=C + ). +activate_constraint_body(A,B,C,D,E,F,G) :- + ( chr_pp_flag(debugable,off), + may_trigger(A), + uses_field(A,generation) -> + get_update_suspension_field(A,E,generation,H,F,I,J,K), + L=(I,J,F is H+1,K) + ; + L=true + ), + get_update_suspension_field(A,E,state,M,active,N,O,P), + if_used_state(A,not_stored_yet,O,true,Q), + ( chr_pp_flag(debugable,off), + ( + only_ground_indexed_arguments(A) + ; + get_store_type(A,var_assoc_store(_,_)) + ) -> + if_used_state(A,not_stored_yet,(M==not_stored_yet->B;C),C,R) + ; + get_dynamic_suspension_term_field(arguments,A,E,S,T), + generate_indexed_variables_body(A,S,U,D), + ( chr_pp_flag(guard_locks,off) -> + V=true + ; + V='chr none_locked'(D) + ), + if_used_state(A,not_stored_yet,(M==not_stored_yet->T,U,V,B;C),C,R) + ), + G=(N,Q,P,L,R). +generate_allocate_clauses([],A,A). +generate_allocate_clauses([A|B],C,D) :- + generate_allocate_clause(A,C,E), + generate_allocate_clauses(B,E,D). +allocate_constraint_goal(A,B,C,D) :- + uses_state(A,not_stored_yet), + ( chr_pp_flag(inline_insertremove,off) -> + use_auxiliary_predicate(allocate_constraint,A), + allocate_constraint_atom(A,B,C,D) + ; + D=(B=E,F), + delay_phase_end(validate_store_type_assumptions,allocate_constraint_body(A,E,C,F)) + ). +allocate_constraint_atom(A,B,C,D) :- + make_name('$allocate_constraint_',A,E), + D=..[E,B|C]. +generate_allocate_clause(A,B,C) :- + ( is_used_auxiliary_predicate(allocate_constraint,A) -> + B=[D|C], + D=(E:-F), + A=_/G, + length(H,G), + allocate_constraint_atom(A,I,H,E), + allocate_constraint_body(A,I,H,F) + ; + B=C + ). +allocate_constraint_body(A,B,C,D) :- + static_suspension_term(A,E), + get_static_suspension_term_field(arguments,A,E,C), + ( chr_pp_flag(debugable,on) -> + A=F/_, + get_static_suspension_term_field(functor,A,E,F) + ; + true + ), + ( chr_pp_flag(debugable,on) -> + ( may_trigger(A) -> + append(C,[B],G), + build_head(_,_,[0],G,H), + get_target_module(I), + J=I:H + ; + J=true + ), + K=(B=E), + create_static_suspension_field(A,E,continuation,J,L), + create_static_suspension_field(A,E,generation,0,M) + ; + ( may_trigger(A), + uses_field(A,generation) -> + create_static_suspension_field(A,E,generation,0,M), + B=E, + K=true, + L=true + ) + ; + M=true, + B=E, + K=true, + L=true + ), + ( uses_history(A) -> + create_static_suspension_field(A,E,history,t,N) + ; + N=true + ), + create_static_suspension_field(A,E,state,not_stored_yet,O), + ( has_suspension_field(A,id) -> + get_static_suspension_term_field(id,A,E,P), + gen_id(P,Q) + ; + Q=true + ), + D=(K,L,M,N,O,Q). +gen_id(A,'chr gen_id'(A)). +generate_insert_constraint_internal_clauses([],A,A). +generate_insert_constraint_internal_clauses([A|B],C,D) :- + generate_insert_constraint_internal_clause(A,C,E), + generate_insert_constraint_internal_clauses(B,E,D). +insert_constraint_internal_constraint_goal(A,B,C,D,E,F) :- + ( chr_pp_flag(inline_insertremove,off) -> + use_auxiliary_predicate(remove_constraint_internal,A), + insert_constraint_internal_constraint_atom(A,B,C,D,E,F) + ; + delay_phase_end(validate_store_type_assumptions,generate_insert_constraint_internal_body(A,C,D,E,B,F)) + ). +insert_constraint_internal_constraint_atom(A,B,C,D,E,F) :- + insert_constraint_internal_constraint_name(A,G), + ( chr_pp_flag(debugable,on) -> + F=..[G,B,C,D|E] + ; + ( + ( + only_ground_indexed_arguments(A) + ; + get_store_type(A,var_assoc_store(_,_)) + ) -> + F=..[G,C|E] + ) + ; + F=..[G,B,C|E] + ). +insert_constraint_internal_constraint_name(A,B) :- + make_name('$insert_constraint_internal_',A,B). +generate_insert_constraint_internal_clause(A,B,C) :- + ( is_used_auxiliary_predicate(insert_constraint_internal,A) -> + B=[D|C], + D=(E:-F), + A=_/G, + length(H,G), + insert_constraint_internal_constraint_atom(A,I,J,K,H,E), + generate_insert_constraint_internal_body(A,J,K,H,I,F) + ; + B=C + ). +generate_insert_constraint_internal_body(A,B,C,D,E,F) :- + static_suspension_term(A,G), + create_static_suspension_field(A,G,state,active,H), + ( chr_pp_flag(debugable,on) -> + get_static_suspension_term_field(continuation,A,G,C), + create_static_suspension_field(A,G,generation,0,I) + ; + ( may_trigger(A), + uses_field(A,generation) -> + create_static_suspension_field(A,G,generation,0,I) + ) + ; + I=true + ), + ( chr_pp_flag(debugable,on) -> + A=J/_, + get_static_suspension_term_field(functor,A,G,J) + ; + true + ), + ( uses_history(A) -> + create_static_suspension_field(A,G,history,t,K) + ; + K=true + ), + get_static_suspension_term_field(arguments,A,G,D), + _=[_|_], + ( chr_pp_flag(debugable,off), + ( + only_ground_indexed_arguments(A) + ; + get_store_type(A,var_assoc_store(_,_)) + ) -> + suspension_term_base_fields(A,_), + ( has_suspension_field(A,id) -> + get_static_suspension_term_field(id,A,G,L), + gen_id(L,M) + ; + M=true + ), + F=(B=G,H,I,K,M) + ; + ( has_suspension_field(A,id) -> + get_static_suspension_term_field(id,A,G,L), + gen_id(L,M) + ; + M=true + ), + generate_indexed_variables_body(A,D,N,E), + ( chr_pp_flag(guard_locks,off) -> + O=true + ; + O='chr none_locked'(E) + ), + F=(B=G,N,O,H,I,K,M) + ). +generate_novel_production(A,B) :- + ( is_used_auxiliary_predicate(novel_production) -> + A=[C|B], + C=('$novel_production'(D,E):-arg(3,D,F),(hprolog:get_ds(E,F,_)->fail;true)) + ; + A=B + ). +generate_extend_history(A,B) :- + ( is_used_auxiliary_predicate(extend_history) -> + A=[C|B], + C=('$extend_history'(D,E):-arg(3,D,F),hprolog:put_ds(E,F,x,G),setarg(3,D,G)) + ; + A=B + ). +generate_empty_named_history_initialisations(A,B) :- + empty_named_history_initialisations(A,B), + find_empty_named_histories. +empty_named_history_global_variable(A,B) :- + atom_concat('chr empty named history ',A,B). +empty_named_history_novel_production(A,nb_getval(B,0)) :- + empty_named_history_global_variable(A,B). +empty_named_history_extend_history(A,b_setval(B,1)) :- + empty_named_history_global_variable(A,B). +generate_run_suspensions_clauses([],A,A). +generate_run_suspensions_clauses([A|B],C,D) :- + generate_run_suspensions_clause(A,C,E), + generate_run_suspensions_clauses(B,E,D). +run_suspensions_goal(A,B,C) :- + make_name('$run_suspensions_',A,D), + C=..[D,B]. +generate_run_suspensions_clause(A,B,C) :- + ( is_used_auxiliary_predicate(run_suspensions,A) -> + B=[D,E|C], + run_suspensions_goal(A,[],D), + ( chr_pp_flag(debugable,on) -> + run_suspensions_goal(A,[F|G],H), + get_update_suspension_field(A,F,state,I,triggered,J,K,L), + get_update_suspension_field(A,F,state,M,active,N,O,P), + get_update_suspension_field(A,F,generation,Q,R,S,T,U), + get_dynamic_suspension_term_field(continuation,A,F,V,W), + run_suspensions_goal(A,G,X), + E=(H:-J,K,(I==active->L,S,T,R is Q+1,U,W,('chr debug_event'(wake(F)),call(V);'chr debug_event'(fail(F)),!,fail),('chr debug_event'(exit(F));'chr debug_event'(redo(F)),fail),N,O,(M==triggered->P;true);true),X) + ; + run_suspensions_goal(A,[F|G],H), + static_suspension_term(A,Y), + get_static_suspension_term_field(arguments,A,Y,Z), + append(Z,[F],A1), + make_suspension_continuation_goal(A,A1,V), + run_suspensions_goal(A,G,X), + ( uses_field(A,generation) -> + get_update_static_suspension_field(A,F,Y,generation,Q,R,S,U), + B1=(S,R is Q+1,U) + ; + B1=true + ), + get_update_static_suspension_field(A,F,Y,state,I,triggered,J,L), + get_update_static_suspension_field(A,F,Y,state,M,active,C1,D1), + if_used_state(A,removed,(J,(I==active->E1;true)),E1,F1), + E1=(L,B1,V,C1,(M==triggered->D1;true)), + E=(H:-F=Y,F1,X) ) ; B=C ). generate_attach_increment(A) :- get_max_constraint_index(B), - ( B>0 -> + ( is_used_auxiliary_predicate(attach_increment), + B>0 -> A=[C,D], generate_attach_increment_empty(C), ( B==1 -> @@ -808,338 +1401,1050 @@ generate_attach_increment_empty((attach_increment([],_):-true)). generate_attach_increment_one(A) :- B=attach_increment([C|D],E), get_target_module(F), - G=('chr not_locked'(C),(get_attr(C,F,H)->sort(H,I),merge(E,I,J),put_attr(C,F,J);put_attr(C,F,E)),attach_increment(D,E)), - A=(B:-G). + ( chr_pp_flag(guard_locks,off) -> + G=true + ; + G='chr not_locked'(C) + ), + H=(G,(get_attr(C,F,I)->sort(I,J),'chr merge_attributes'(E,J,K),put_attr(C,F,K);put_attr(C,F,E)),attach_increment(D,E)), + A=(B:-H). generate_attach_increment_many(A,B) :- - make_attr(A,C,D,E), - make_attr(A,F,G,H), - I=attach_increment([J|K],E), - bagof(L,M^N^O^P^(member2(D,G,M-N),L=(sort(N,O),'chr merge_attributes'(M,O,P))),Q), - list2conj(Q,R), - bagof(S,T^U^V^member((T,'chr merge_attributes'(U,V,S)),Q),W), - make_attr(A,X,W,Y), - get_target_module(Z), - A1=('chr not_locked'(J),(get_attr(J,Z,B1)->B1=H,R,X is C\/F,put_attr(J,Z,Y);put_attr(J,Z,E)),attach_increment(K,E)), - B=(I:-A1). + C=attach_increment([D|E],F), + merge_attributes(A,F,G,H,I), + get_target_module(J), + ( chr_pp_flag(guard_locks,off) -> + K=true + ; + K='chr not_locked'(D) + ), + L=(K,(get_attr(D,J,G)->H,put_attr(D,J,I);put_attr(D,J,F)),attach_increment(E,F)), + B=(C:-L). generate_attr_unify_hook(A) :- get_max_constraint_index(B), ( B==0 -> A=[] ; - A=[C], ( B==1 -> - generate_attr_unify_hook_one(C) - ; - generate_attr_unify_hook_many(B,C) + generate_attr_unify_hook_one(A) ) + ; + generate_attr_unify_hook_many(B,A) ). -generate_attr_unify_hook_one(A) :- +generate_attr_unify_hook_one([A]) :- B=attr_unify_hook(C,D), get_target_module(E), - make_run_suspensions(F,G), - make_run_suspensions(C,H), - I=(sort(C,J),(var(D)->(get_attr(D,E,K)->true;K=[]),sort(K,L),'chr merge_attributes'(J,L,F),put_attr(D,E,F),G;(compound(D)->term_variables(D,M),attach_increment(M,J);true),H)), - A=(B:-I). -generate_attr_unify_hook_many(A,B) :- - make_attr(A,C,D,E), - make_attr(A,F,G,H), - bagof(I,J^K^(member(J,D),I=sort(J,K)),L), + get_indexed_constraint(1,F), + ( get_store_type(F,G), + ( + G=default + ; + G=multi_store(H), + memberchk(default,H) + ) -> + make_run_suspensions(I,J,K), + make_run_suspensions(J,J,L), + ( atomic_types_suspended_constraint(F) -> + M=true, + J=C, + N=true, + O=P, + Q=(append(C,P,R),sort(R,I)), + S=true + ; + M=sort(C,J), + N=sort(P,O), + Q='chr merge_attributes'(J,O,I), + use_auxiliary_predicate(attach_increment), + S=(compound(D)->term_variables(D,T),attach_increment(T,J);true) + ), + U=(M,(var(D)->(get_attr(D,E,P)->N,Q,put_attr(D,E,I),K;put_attr(D,E,J),L);S,L)), + A=(B:-U) + ; + ( get_store_type(F,var_assoc_store(_,_)) -> + make_run_suspensions(R,R,K), + Q=merge_into_assoc_store(C,P,R), + U=(get_attr(D,E,P)->Q,K;put_attr(D,E,C)), + A=(B:-U) + ) + ). +generate_attr_unify_hook_many(A,[B]) :- + chr_pp_flag(dynattr,off), + !, + C=attr_unify_hook(D,E), + get_target_module(F), + make_attr(A,G,H,D), + bagof(I,J^K^(member(J,H),I=sort(J,K)),L), list2conj(L,M), bagof(K,J^member(sort(J,K),L),N), - bagof(O,P^Q^R^S^(member2(N,G,P-Q),O=(sort(Q,R),'chr merge_attributes'(P,R,S))),T), - bagof(S,P^R^U^member((U,'chr merge_attributes'(P,R,S)),T),V), - list2conj(T,W), - make_attr(A,X,V,Y), - make_attr(A,C,N,Z), - A1=attr_unify_hook(E,B1), - get_target_module(C1), - make_run_suspensions_loop(V,D1), - make_run_suspensions_loop(N,E1), - F1=(M,(var(B1)->(get_attr(B1,C1,G1)->G1=H,W,X is C\/F,put_attr(B1,C1,Y),D1;put_attr(B1,C1,Z),E1);(compound(B1)->term_variables(B1,H1),attach_increment(H1,Z);true),E1)), - B=(A1:-F1). -make_run_suspensions(A,B) :- - ( chr_pp_flag(debugable,on) -> - B='chr run_suspensions_d'(A) + merge_attributes2(A,G,N,O,P,Q), + get_all_suspensions2(A,Q,R), + make_attr(A,G,N,S), + make_run_suspensions_loop(R,N,T), + make_run_suspensions_loop(N,N,U), + ( forall((between(1,A,V),get_indexed_constraint(V,W)),atomic_types_suspended_constraint(W)) -> + X=true ; - B='chr run_suspensions'(A) - ). -make_run_suspensions_loop(A,B) :- - ( chr_pp_flag(debugable,on) -> - B='chr run_suspensions_loop_d'(A) + use_auxiliary_predicate(attach_increment), + X=(compound(E)->term_variables(E,Y),attach_increment(Y,S);true) + ), + Z=(M,(var(E)->(get_attr(E,F,O)->P,put_attr(E,F,Q),T;put_attr(E,F,S),U);X,U)), + B=(C:-Z). +generate_attr_unify_hook_many(A,B) :- + C=attr_unify_hook(D,E), + get_target_module(F), + normalize_attr(D,G,H), + normalize_attr(I,J,K), + merge_attributes(A,H,K,L,M), + make_run_suspensions(A), + ( forall((between(1,A,N),get_indexed_constraint(N,O)),atomic_types_suspended_constraint(O)) -> + P=true ; - B='chr run_suspensions_loop'(A) + use_auxiliary_predicate(attach_increment), + P=(compound(E)->term_variables(E,Q),attach_increment(Q,H);true) + ), + R=(G,(var(E)->(get_attr(E,F,I)->J,L,put_attr(E,F,M),'$dispatch_run_suspensions'(M);put_attr(E,F,H),'$dispatch_run_suspensions'(H));P,'$dispatch_run_suspensions'(H))), + S=(C:-R), + B=[S,T,U|V], + T='$dispatch_run_suspensions'([]), + U=('$dispatch_run_suspensions'([W-X|Y]):-'$dispatch_run_suspensions'(W,X),'$dispatch_run_suspensions'(Y)), + run_suspensions_dispatchers(A,[],V). +run_suspensions_dispatchers(A,B,C) :- + ( A>0 -> + get_indexed_constraint(A,D), + E=[('$dispatch_run_suspensions'(A,F):-G)|B], + ( may_trigger(D) -> + run_suspensions_goal(D,F,G) + ; + G=true + ), + H is A-1, + run_suspensions_dispatchers(H,E,C) + ; + C=B ). +make_run_suspensions(A) :- + ( A>0 -> + ( get_indexed_constraint(A,B), + may_trigger(B) -> + use_auxiliary_predicate(run_suspensions,B) + ; + true + ), + C is A-1, + make_run_suspensions(C) + ; + true + ). +make_run_suspensions(A,B,C) :- + make_run_suspensions(1,A,B,C). +make_run_suspensions(A,B,C,D) :- + ( get_indexed_constraint(A,E), + may_trigger(E) -> + use_auxiliary_predicate(run_suspensions,E), + ( wakes_partially(E) -> + run_suspensions_goal(E,C,D) + ; + run_suspensions_goal(E,B,D) + ) + ; + D=true + ). +make_run_suspensions_loop(A,B,C) :- + make_run_suspensions_loop(A,B,1,C). +make_run_suspensions_loop([],[],_,true). +make_run_suspensions_loop([A|B],[C|D],E,(F,G)) :- + make_run_suspensions(E,A,C,F), + H is E+1, + make_run_suspensions_loop(B,D,H,G). generate_insert_delete_constraints([],[]). generate_insert_delete_constraints([A|B],C) :- ( is_stored(A) -> - C=[D,E|F], - generate_insert_delete_constraint(A,D,E) + generate_insert_delete_constraint(A,C,D) ; - C=F + C=D ), - generate_insert_delete_constraints(B,F). + generate_insert_delete_constraints(B,D). generate_insert_delete_constraint(A,B,C) :- - get_store_type(A,D), - generate_insert_constraint(D,A,B), - generate_delete_constraint(D,A,C). -generate_insert_constraint(A,B,C) :- - make_name('$insert_in_store_',B,D), - E=..[D,F], - generate_insert_constraint_body(A,B,F,G), - ( chr_pp_flag(store_counter,on) -> - H='$insert_counter_inc' + insert_constraint_clause(A,B,D), + delete_constraint_clause(A,D,C). +insert_constraint_goal(A,B,C,D) :- + ( chr_pp_flag(inline_insertremove,off) -> + use_auxiliary_predicate(insert_in_store,A), + insert_constraint_atom(A,B,D) ; - H=true - ), - C=(E:-H,G). -generate_insert_constraint_body(default,A,B,C) :- - get_target_module(_), - get_max_constraint_index(D), - ( D==1 -> - generate_attach_body_1(A,E,B,F) - ; - generate_attach_body_n(A,E,B,F) - ), - C=('chr global_term_ref_1'(E),F). -generate_insert_constraint_body(multi_hash(A),B,C,D) :- - generate_multi_hash_insert_constraint_bodies(A,B,C,D). -generate_insert_constraint_body(global_ground,A,B,C) :- - global_ground_store_name(A,D), - C=(nb_getval(D,E),b_setval(D,[B|E])). -generate_insert_constraint_body(global_singleton,A,B,C) :- - global_singleton_store_name(A,D), - C=b_setval(D,B). -generate_insert_constraint_body(multi_store(A),B,C,D) :- - find_with_var_identity(E,[C],(member(F,A),chr_translate:generate_insert_constraint_body(F,B,C,E)),G), - list2conj(G,D). -generate_multi_hash_insert_constraint_bodies([],_,_,true). -generate_multi_hash_insert_constraint_bodies([A|B],C,D,(E,F)) :- - multi_hash_store_name(C,A,G), - multi_hash_key(C,A,D,H,I), - E=(H,nb_getval(G,J),insert_ht(J,I,D)), - generate_multi_hash_insert_constraint_bodies(B,C,D,F). -generate_delete_constraint(A,B,C) :- - make_name('$delete_from_store_',B,D), - E=..[D,F], - generate_delete_constraint_body(A,B,F,G), - ( chr_pp_flag(store_counter,on) -> - H='$delete_counter_inc' - ; - H=true - ), - C=(E:-H,G). -generate_delete_constraint_body(default,A,B,C) :- - get_target_module(_), - get_max_constraint_index(D), - ( D==1 -> - generate_detach_body_1(A,E,B,F), - C=('chr global_term_ref_1'(E),F) - ; - generate_detach_body_n(A,E,B,F), - C=('chr global_term_ref_1'(E),F) + delay_phase_end(validate_store_type_assumptions,(insert_constraint_body(A,B,E,D),insert_constraint_direct_used_vars(E,C))) ). -generate_delete_constraint_body(multi_hash(A),B,C,D) :- - generate_multi_hash_delete_constraint_bodies(A,B,C,D). -generate_delete_constraint_body(global_ground,A,B,C) :- - global_ground_store_name(A,D), - C=(nb_getval(D,E),'chr sbag_del_element'(E,B,F),b_setval(D,F)). -generate_delete_constraint_body(global_singleton,A,_,B) :- - global_singleton_store_name(A,C), - B=b_setval(C,[]). -generate_delete_constraint_body(multi_store(A),B,C,D) :- - find_with_var_identity(E,[C],(member(F,A),chr_translate:generate_delete_constraint_body(F,B,C,E)),G), - list2conj(G,D). -generate_multi_hash_delete_constraint_bodies([],_,_,true). -generate_multi_hash_delete_constraint_bodies([A|B],C,D,(E,F)) :- - multi_hash_store_name(C,A,G), - multi_hash_key(C,A,D,H,I), - E=(H,nb_getval(G,J),delete_ht(J,I,D)), - generate_multi_hash_delete_constraint_bodies(B,C,D,F). -generate_delete_constraint_call(A,B,C) :- - make_name('$delete_from_store_',A,D), - C=..[D,B]. -generate_insert_constraint_call(A,B,C) :- +insert_constraint_direct_used_vars([],_). +insert_constraint_direct_used_vars([A-B|C],D) :- + nth1(A,D,B), + insert_constraint_direct_used_vars(C,D). +insert_constraint_atom(A,B,C) :- make_name('$insert_in_store_',A,D), C=..[D,B]. -generate_attach_code(A,[B|C]) :- - enumerate_stores_code(A,B), - generate_attach_code(A,C,[]). +insert_constraint_clause(A,B,C) :- + ( is_used_auxiliary_predicate(insert_in_store,A) -> + B=[D|C], + D=(E:-F,G,H), + insert_constraint_atom(A,I,E), + insert_constraint_body(A,I,J,H), + insert_constraint_used_vars(J,A,I,G), + ( chr_pp_flag(store_counter,on) -> + F='$insert_counter_inc' + ; + F=true + ) + ; + B=C + ). +insert_constraint_used_vars([],_,_,true). +insert_constraint_used_vars([A-B|C],D,E,(F,G)) :- + get_dynamic_suspension_term_field(argument(A),D,E,B,F), + insert_constraint_used_vars(C,D,E,G). +insert_constraint_body(A,B,C,D) :- + get_store_type(A,E), + insert_constraint_body(E,A,B,C,D). +insert_constraint_body(default,A,B,[],C) :- + global_list_store_name(A,D), + make_get_store_goal(D,E,F), + make_update_store_goal(D,G,H), + ( chr_pp_flag(debugable,on) -> + G=[B|E], + C=(F,H) + ; + set_dynamic_suspension_term_field(global_list_prev,A,I,G,J), + C=(F,G=[B|E],H,(E=[I|_]->J;true)) + ). +insert_constraint_body(multi_inthash(A),B,C,[],D) :- + generate_multi_inthash_insert_constraint_bodies(A,B,C,D). +insert_constraint_body(multi_hash(A),B,C,D,E) :- + generate_multi_hash_insert_constraint_bodies(A,B,C,E,D), + sort_out_used_vars(D,_). +insert_constraint_body(atomic_constants(A,_,_),B,C,D,E) :- + multi_hash_key_direct(B,A,C,F,D), + constants_store_index_name(B,A,G), + H=..[G,F,I], + E=(H->nb_getval(I,J),b_setval(I,[C|J]);true). +insert_constraint_body(ground_constants(A,_,_),B,C,D,E) :- + multi_hash_key_direct(B,A,C,F,D), + constants_store_index_name(B,A,G), + H=..[G,F,I], + E=(H->nb_getval(I,J),b_setval(I,[C|J]);true). +insert_constraint_body(global_ground,A,B,[],C) :- + global_ground_store_name(A,D), + make_get_store_goal(D,E,F), + make_update_store_goal(D,G,H), + ( chr_pp_flag(debugable,on) -> + G=[B|E], + C=(F,H) + ; + set_dynamic_suspension_term_field(global_list_prev,A,I,G,J), + C=(F,G=[B|E],H,(E=[I|_]->J;true)) + ). +insert_constraint_body(var_assoc_store(A,B),_,C,[A-D,B-E],F) :- + get_target_module(G), + F=(get_attr(D,G,H)->insert_assoc_store(H,E,C);new_assoc_store(H),put_attr(D,G,H),insert_assoc_store(H,E,C)). +insert_constraint_body(global_singleton,A,B,[],C) :- + global_singleton_store_name(A,D), + make_update_store_goal(D,B,E), + C=E. +insert_constraint_body(multi_store(A),B,C,D,E) :- + maplist(insert_constraint_body1(B,C),A,F,G), + list2conj(G,E), + sort_out_used_vars(F,D). +insert_constraint_body1(A,B,C,D,E) :- + insert_constraint_body(C,A,B,D,E). +insert_constraint_body(identifier_store(A),B,C,D,E) :- + D=[A-F], + get_identifier_size(G), + functor(H,struct,G), + get_identifier_index(B,A,I), + arg(I,H,J), + E=(F=H,setarg(I,F,[C|J])). +insert_constraint_body(type_indexed_identifier_store(A,B),C,D,E,F) :- + E=[A-G], + type_indexed_identifier_structure(B,H), + get_type_indexed_identifier_index(B,C,A,I), + arg(I,H,J), + F=(G=H,setarg(I,G,[D|J])). +sort_out_used_vars(A,B) :- + flatten(A,C), + sort(C,D), + sort_out_used_vars1(D,B). +sort_out_used_vars1([],[]). +sort_out_used_vars1([A-B],C) :- + !, + C=[A-B]. +sort_out_used_vars1([A-B,C-D|E],F) :- + ( A==C -> + B=D, + sort_out_used_vars1([A-B|E],F) + ; + F=[A-B|G], + sort_out_used_vars1([C-D|E],G) + ). +generate_multi_inthash_insert_constraint_bodies([],_,_,true). +generate_multi_inthash_insert_constraint_bodies([A|B],C,D,(E,F)) :- + multi_hash_store_name(C,A,G), + multi_hash_key(C,A,D,H,I), + E=(H,nb_getval(G,J),insert_iht(J,I,D)), + generate_multi_inthash_insert_constraint_bodies(B,C,D,F). +generate_multi_hash_insert_constraint_bodies([],_,_,true,[]). +generate_multi_hash_insert_constraint_bodies([A|B],C,D,(E,F),[G|H]) :- + multi_hash_store_name(C,A,I), + multi_hash_key_direct(C,A,D,J,G), + make_get_store_goal(I,K,L), + ( chr_pp_flag(ht_removal,on) -> + ht_prev_field(A,M), + set_dynamic_suspension_term_field(M,C,N,O,P), + E=(L,insert_ht(K,J,D,O),(O=[_,N|_]->P;true)) + ; + E=(L,insert_ht(K,J,D)) + ), + generate_multi_hash_insert_constraint_bodies(B,C,D,F,H). +delete_constraint_clause(A,B,C) :- + ( is_used_auxiliary_predicate(delete_from_store,A) -> + B=[D|C], + D=(E:-F), + delete_constraint_atom(A,G,E), + A=H/I, + functor(E,H,I), + delete_constraint_body(A,E,G,[],F) + ; + B=C + ). +delete_constraint_goal(A,B,C,D) :- + functor(A,E,F), + G=E/F, + ( chr_pp_flag(inline_insertremove,off) -> + use_auxiliary_predicate(delete_from_store,G), + delete_constraint_atom(G,B,D) + ; + delay_phase_end(validate_store_type_assumptions,delete_constraint_body(G,A,B,C,D)) + ). +delete_constraint_atom(A,B,C) :- + make_name('$delete_from_store_',A,D), + C=..[D,B]. +delete_constraint_body(A,B,C,D,E) :- + E=(F,G), + ( chr_pp_flag(store_counter,on) -> + F='$delete_counter_inc' + ; + F=true + ), + get_store_type(A,H), + delete_constraint_body(H,A,B,C,D,G). +delete_constraint_body(default,A,_,B,_,C) :- + ( chr_pp_flag(debugable,on) -> + global_list_store_name(A,D), + make_get_store_goal(D,E,F), + make_update_store_goal(D,G,H), + C=(F,'chr sbag_del_element'(E,B,G),H) + ; + get_dynamic_suspension_term_field(global_list_prev,A,B,I,J), + global_list_store_name(A,D), + make_get_store_goal(D,E,F), + make_update_store_goal(D,K,H), + set_dynamic_suspension_term_field(global_list_prev,A,L,_,M), + set_dynamic_suspension_term_field(global_list_prev,A,L,I,N), + C=(J,(var(I)->F,E=[_|K],H,(K=[L|_]->M;true);I=[_,_|K],setarg(2,I,K),(K=[L|_]->N;true))) + ). +delete_constraint_body(multi_inthash(A),B,_,C,_,D) :- + generate_multi_inthash_delete_constraint_bodies(A,B,C,D). +delete_constraint_body(multi_hash(A),B,C,D,E,F) :- + generate_multi_hash_delete_constraint_bodies(A,B,C,D,E,F). +delete_constraint_body(atomic_constants(A,_,_),B,C,D,E,F) :- + multi_hash_key(B,C,A,D,E,G,H), + constants_store_index_name(B,A,I), + J=..[I,H,K], + F=(G,(J->nb_getval(K,L),'chr sbag_del_element'(L,D,M),b_setval(K,M);true)). +delete_constraint_body(ground_constants(A,_,_),B,C,D,E,F) :- + multi_hash_key(B,C,A,D,E,G,H), + constants_store_index_name(B,A,I), + J=..[I,H,K], + F=(G,(J->nb_getval(K,L),'chr sbag_del_element'(L,D,M),b_setval(K,M);true)). +delete_constraint_body(global_ground,A,_,B,_,C) :- + ( chr_pp_flag(debugable,on) -> + global_ground_store_name(A,D), + make_get_store_goal(D,E,F), + make_update_store_goal(D,G,H), + C=(F,'chr sbag_del_element'(E,B,G),H) + ; + get_dynamic_suspension_term_field(global_list_prev,A,B,I,J), + global_ground_store_name(A,D), + make_get_store_goal(D,E,F), + make_update_store_goal(D,K,H), + set_dynamic_suspension_term_field(global_list_prev,A,L,_,M), + set_dynamic_suspension_term_field(global_list_prev,A,L,I,N), + C=(J,(var(I)->F,E=[_|K],H,(K=[L|_]->M;true);I=[_,_|K],setarg(2,I,K),(K=[L|_]->N;true))) + ). +delete_constraint_body(var_assoc_store(A,B),C,_,D,_,E) :- + get_target_module(F), + get_dynamic_suspension_term_field(argument(A),C,D,G,H), + get_dynamic_suspension_term_field(argument(B),C,D,I,J), + E=(H,get_attr(G,F,K),J,delete_assoc_store(K,I,D)). +delete_constraint_body(global_singleton,A,_,_,_,B) :- + global_singleton_store_name(A,C), + make_update_store_goal(C,[],D), + B=D. +delete_constraint_body(multi_store(A),B,C,D,E,F) :- + maplist(delete_constraint_body1(B,C,D,E),A,G), + list2conj(G,F). +delete_constraint_body1(A,B,C,D,E,F) :- + delete_constraint_body(E,A,B,C,D,F). +delete_constraint_body(identifier_store(A),B,C,D,E,F) :- + get_suspension_argument_possibly_in_scope(C,E,D,A,G,H), + get_identifier_size(I), + functor(J,struct,I), + get_identifier_index(B,A,K), + arg(K,J,L), + F=(H,G=J,'chr sbag_del_element'(L,D,M),setarg(K,G,M)). +delete_constraint_body(type_indexed_identifier_store(A,B),C,D,E,F,G) :- + get_suspension_argument_possibly_in_scope(D,F,E,A,H,I), + type_indexed_identifier_structure(B,J), + get_type_indexed_identifier_index(B,C,A,K), + arg(K,J,L), + G=(I,H=J,'chr sbag_del_element'(L,E,M),setarg(K,H,M)). +generate_multi_inthash_delete_constraint_bodies([],_,_,true). +generate_multi_inthash_delete_constraint_bodies([A|B],C,D,(E,F)) :- + multi_hash_store_name(C,A,G), + multi_hash_key(C,A,D,H,I), + E=(H,nb_getval(G,J),delete_iht(J,I,D)), + generate_multi_inthash_delete_constraint_bodies(B,C,D,F). +generate_multi_hash_delete_constraint_bodies([],_,_,_,_,true). +generate_multi_hash_delete_constraint_bodies([A|B],C,D,E,F,(G,H)) :- + multi_hash_store_name(C,A,I), + multi_hash_key(C,D,A,E,F,J,K), + make_get_store_goal(I,L,M), + ( chr_pp_flag(ht_removal,on) -> + ht_prev_field(A,N), + get_dynamic_suspension_term_field(N,C,E,O,P), + set_dynamic_suspension_term_field(N,C,Q,_,R), + set_dynamic_suspension_term_field(N,C,Q,O,S), + G=(P,(var(O)->M,J,delete_first_ht(L,K,T),(T=[Q|_]->R;true);O=[_,_|T],setarg(2,O,T),(T=[Q|_]->S;true))) + ; + G=(J,M,delete_ht(L,K,E)) + ), + generate_multi_hash_delete_constraint_bodies(B,_,D,E,F,H). +generate_attach_code(A,B) :- + enumerate_stores_code(A,C), + append(C,D,B), + generate_attach_code(A,D,E), + module_initializers(F), + prolog_global_variables_code(G), + E=[('$chr_initialization':-F),(:-initialization '$chr_initialization')|G]. generate_attach_code([],A,A). generate_attach_code([A|B],C,D) :- get_store_type(A,E), generate_attach_code(E,A,C,F), generate_attach_code(B,F,D). -generate_attach_code(default,_,A,A). +generate_attach_code(default,A,B,C) :- + global_list_store_initialisation(A,B,C). +generate_attach_code(multi_inthash(A),B,C,D) :- + multi_inthash_store_initialisations(A,B,C,E), + multi_inthash_via_lookups(A,B,E,D). generate_attach_code(multi_hash(A),B,C,D) :- multi_hash_store_initialisations(A,B,C,E), - multi_hash_via_lookups(A,B,E,D). + multi_hash_lookups(A,B,E,D). +generate_attach_code(atomic_constants(A,B,_),C,D,E) :- + constants_initializers(C,A,B), + atomic_constants_code(C,A,B,D,E). +generate_attach_code(ground_constants(A,B,_),C,D,E) :- + constants_initializers(C,A,B), + ground_constants_code(C,A,B,D,E). generate_attach_code(global_ground,A,B,C) :- global_ground_store_initialisation(A,B,C). +generate_attach_code(var_assoc_store(_,_),_,A,A) :- + use_auxiliary_module(chr_assoc_store). generate_attach_code(global_singleton,A,B,C) :- global_singleton_store_initialisation(A,B,C). generate_attach_code(multi_store(A),B,C,D) :- multi_store_generate_attach_code(A,B,C,D). +generate_attach_code(identifier_store(A),B,C,D) :- + get_identifier_index(B,A,E), + ( E==2 -> + get_identifier_size(F), + functor(G,struct,F), + G=..[_,H|I], + set_elems(I,[]), + J=new_identifier(H,G), + functor(K,struct,F), + arg(1,K,L), + M=(user:portray(K):-write(')), + functor(N,struct,F), + arg(1,N,O), + P=identifier_label(N,O), + C=[J,M,P|D] + ; + C=D + ). +generate_attach_code(type_indexed_identifier_store(A,B),C,D,E) :- + get_type_indexed_identifier_index(B,C,A,F), + ( F==2 -> + identifier_store_initialization(B,D,G), + get_type_indexed_identifier_size(B,_), + type_indexed_identifier_structure(B,H), + H=..[_,I|J], + set_elems(J,[]), + type_indexed_identifier_name(B,new_identifier,K), + L=..[K,I,H], + M=..[K,N,O], + type_indexed_identifier_structure(B,P), + P=..[_,N|Q], + set_elems(Q,[]), + R=(O=P), + S=user:goal_expansion(M,R), + type_indexed_identifier_structure(B,T), + arg(1,T,U), + V=(user:portray(T):-write(')), + type_indexed_identifier_structure(B,W), + arg(1,W,X), + type_indexed_identifier_name(B,identifier_label,Y), + Z=..[Y,W,X], + A1=..[Y,_,B1], + type_indexed_identifier_structure(B,C1), + arg(1,C1,B1), + D1=(_=C1), + E1=(user:goal_expansion(A1,D1):-writeln(expanding)), + identifier_store_name(B,F1), + lookup_identifier_atom(B,G1,H1,I1), + type_indexed_identifier_name(B,new_identifier,J1), + K1=..[J1,G1,H1], + L1=(I1:-nb_getval(F1,M1),(lookup_ht(M1,G1,[H1])->true;K1,insert_ht(M1,G1,H1))), + G=[(:-multifile goal_expansion/2),(:-dynamic goal_expansion/2),L,S,V,Z,E1,L1|E] + ; + D=E + ). +constants_initializers(A,B,C) :- + maplist(constant_initializer(A,B),C). +constant_initializer(A,B,C) :- + constants_store_name(A,B,C,D), + module_initializer(nb_setval(D,[])). +lookup_identifier_atom(A,B,C,D) :- + atom_concat(lookup_identifier_,A,E), + D=..[E,B,C]. +identifier_label_atom(A,B,C,D) :- + type_indexed_identifier_name(A,identifier_label,E), + D=..[E,B,C]. multi_store_generate_attach_code([],_,A,A). multi_store_generate_attach_code([A|B],C,D,E) :- generate_attach_code(A,C,D,F), multi_store_generate_attach_code(B,C,F,E). +multi_inthash_store_initialisations([],_,A,A). +multi_inthash_store_initialisations([A|B],C,D,E) :- + use_auxiliary_module(chr_integertable_store), + multi_hash_store_name(C,A,F), + module_initializer((new_iht(G),nb_setval(F,G))), + H=D, + multi_inthash_store_initialisations(B,C,H,E). multi_hash_store_initialisations([],_,A,A). multi_hash_store_initialisations([A|B],C,D,E) :- + use_auxiliary_module(chr_hashtable_store), multi_hash_store_name(C,A,F), - D=[(:-new_ht(G),nb_setval(F,G))|H], - multi_hash_store_initialisations(B,C,H,E). + prolog_global_variable(F), + make_init_store_goal(F,G,H), + module_initializer((new_ht(G),H)), + I=D, + multi_hash_store_initialisations(B,C,I,E). +global_list_store_initialisation(A,B,C) :- + ( is_stored(A) -> + global_list_store_name(A,D), + prolog_global_variable(D), + make_init_store_goal(D,[],E), + module_initializer(E) + ; + true + ), + B=C. global_ground_store_initialisation(A,B,C) :- global_ground_store_name(A,D), - B=[(:-nb_setval(D,[]))|C]. + prolog_global_variable(D), + make_init_store_goal(D,[],E), + module_initializer(E), + B=C. global_singleton_store_initialisation(A,B,C) :- global_singleton_store_name(A,D), - B=[(:-nb_setval(D,[]))|C]. -multi_hash_via_lookups([],_,A,A). -multi_hash_via_lookups([A|B],C,D,E) :- - multi_hash_via_lookup_name(C,A,F), - G=..[F,H,I], - multi_hash_store_name(C,A,J), - K=(nb_getval(J,L),lookup_ht(L,H,I)), - D=[(G:-K)|M], - multi_hash_via_lookups(B,C,M,E). -multi_hash_via_lookup_name(A/B,C,D) :- - ( integer(C) -> - E=C - ; - ( is_list(C) -> - atom_concat_list(C,E) + prolog_global_variable(D), + make_init_store_goal(D,[],E), + module_initializer(E), + B=C. +identifier_store_initialization(A,B,C) :- + use_auxiliary_module(chr_hashtable_store), + identifier_store_name(A,D), + prolog_global_variable(D), + make_init_store_goal(D,E,F), + module_initializer((new_ht(E),F)), + B=C. +multi_inthash_via_lookups([],_,A,A). +multi_inthash_via_lookups([A|B],C,D,E) :- + multi_hash_lookup_head(C,A,F,G,H), + multi_hash_lookup_body(C,inthash,A,F,G,I), + D=[(H:-I)|J], + multi_inthash_via_lookups(B,C,J,E). +multi_hash_lookups([],_,A,A). +multi_hash_lookups([A|B],C,D,E) :- + multi_hash_lookup_head(C,A,F,G,H), + multi_hash_lookup_body(C,hash,A,F,G,I), + D=[(H:-I)|J], + multi_hash_lookups(B,C,J,E). +multi_hash_lookup_head(A,B,C,D,E) :- + multi_hash_lookup_name(A,B,F), + E=..[F,C,D]. +multi_hash_lookup_body(A,B,C,D,E,F) :- + get_store_type(A,multi_store(G)), + ( memberchk(atomic_constants(C,H,_),G) -> + ( ground(D) -> + constants_store_name(A,C,D,I), + F=nb_getval(I,E) + ; + constants_store_index_name(A,C,J), + K=..[J,D,I], + F=(K,nb_getval(I,E)) ) + ; + ( memberchk(ground_constants(C,H,_),G) -> + ( ground(D) -> + constants_store_name(A,C,D,I), + F=nb_getval(I,E) + ; + constants_store_index_name(A,C,J), + K=..[J,D,I], + F=(K,nb_getval(I,E)) + ) + ) + ; + ( memberchk(multi_hash([C]),G) -> + multi_hash_store_name(A,C,I), + make_get_store_goal(I,L,M), + ( B==hash, + specialized_hash_term_call(A,C,D,N,O) -> + F=(M,O,lookup_ht1(L,N,D,E)) + ; + lookup_hash_call(B,L,D,E,K), + F=(M,K) + ) + ) + ; + ( B==inthash -> + multi_hash_store_name(A,C,I), + make_get_store_goal(I,L,M), + lookup_hash_call(B,L,D,E,K), + F=(M,K) + ) + ). +lookup_hash_call(hash,A,B,C,lookup_ht(A,B,C)). +lookup_hash_call(inthash,A,B,C,lookup_iht(A,B,C)). +specialized_hash_term_call(A,B,C,D,E) :- + ( ground(C) -> + hash_term(C,D), + E=true + ; + ( B=[F], + get_constraint_type(A,G), + nth1(F,G,H), + unalias_type(H,I), + memberchk_eq(I,[int,natural]) -> + ( I==int -> + E=(D is abs(C)) + ; + D=C, + E=true + ) + ) + ; + nonvar(C), + specialize_hash_term(C,J), + J\==C, + E=hash_term(J,D) + ). +specialize_hash_term(A,B) :- + ( ground(A) -> + hash_term(A,B) + ; + ( var(A) -> + B=A + ) + ; + A=..[C|D], + maplist(specialize_hash_term,D,E), + B=..[C|E] + ). +multi_hash_lookup_goal(A,B,C,D,E,F) :- + ( atomic(D) -> + actual_atomic_multi_hash_keys(A,C,[D]) + ; + ( ground(D) -> + actual_ground_multi_hash_keys(A,C,[D]) + ) + ; + ( C=[G], + get_constraint_arg_type(A,G,H), + is_chr_constants_type(H,_,_) -> + true + ) + ; + actual_non_ground_multi_hash_key(A,C) ), - atom_concat_list(['$via1_multi_hash_',A,/,B,-,E],D). + delay_phase_end(validate_store_type_assumptions,multi_hash_lookup_body(A,B,C,D,E,F)). +multi_hash_lookup_name(A/B,C,D) :- + atom_concat_list(C,E), + atom_concat_list(['$via1_multi_hash_',A,'___',B,-,E],D). multi_hash_store_name(A/B,C,D) :- get_target_module(E), - ( integer(C) -> - F=C + atom_concat_list(C,F), + atom_concat_list(['$chr_store_multi_hash_',E,'____',A,'___',B,-,F],D). +multi_hash_key(A,B,C,D,E) :- + ( B=[F] -> + get_dynamic_suspension_term_field(argument(F),A,C,E,D) ; - ( is_list(C) -> - atom_concat_list(C,F) - ) - ), - atom_concat_list(['$chr_store_multi_hash_',E,:,A,/,B,-,F],D). -multi_hash_key(_/_,A,B,C,D) :- - ( - ( integer(A) -> - E=A - ; - A=[E] - ) -> - F is E+6, - C=arg(F,B,D) + maplist(get_dynamic_suspension_term_field1(A,C),B,G,H), + E=..[k|G], + list2conj(H,D) + ). +get_dynamic_suspension_term_field1(A,B,C,D,E) :- + get_dynamic_suspension_term_field(argument(C),A,B,D,E). +multi_hash_key(_,A,B,C,D,E,F) :- + ( B=[G] -> + get_suspension_argument_possibly_in_scope(A,D,C,G,F,E) ; - ( is_list(A) -> - sort(A,G), - find_with_var_identity(arg(H,B,I)-I,[B],(member(E,G),H is E+6),J), - pairup(K,L,J), - D=..[k|L], - list2conj(K,C) - ) + maplist(get_suspension_argument_possibly_in_scope(A,D,C),B,H,I), + F=..[k|H], + list2conj(I,E) + ). +get_suspension_argument_possibly_in_scope(A,B,C,D,E,F) :- + arg(D,A,G), + ( term_variables(G,H), + copy_term_nat(G-H,E-I), + translate(H,B,I) -> + F=true + ; + functor(A,J,K), + L=J/K, + get_dynamic_suspension_term_field(argument(D),L,C,E,F) + ). +multi_hash_key_direct(_,A,_,B,C) :- + ( A=[D] -> + C=[D-B] + ; + pairup(A,E,C), + B=..[k|E] ). multi_hash_key_args(A,B,C) :- - ( integer(A) -> - arg(A,B,D), - C=[D] + maplist(arg1(B),A,C). +atomic_constants_code(A,B,C,D,E) :- + constants_store_index_name(A,B,F), + maplist(atomic_constant_code(A,B,F),C,G), + append(G,E,D). +atomic_constant_code(A,B,C,D,E) :- + constants_store_name(A,B,D,F), + E=..[C,D,F]. +ground_constants_code(A,B,C,D,E) :- + constants_store_index_name(A,B,F), + maplist(constants_store_name(A,B),C,G), + length(C,H), + replicate(H,[],I), + trie_index([C|I],G,F,D,E). +constants_store_name(A/B,C,D,E) :- + get_target_module(F), + term_to_atom(D,G), + term_to_atom(C,H), + atom_concat_list(['$chr_store_constants_',F,'____',A,'___',B,'___',H,'___',G],E). +constants_store_index_name(A/B,C,D) :- + get_target_module(E), + term_to_atom(C,F), + atom_concat_list(['$chr_store_constants_',E,'____',A,'___',B,'___',F],D). +trie_index([A|B],C,D,E,F) :- + trie_step(A,D,D,B,C,E,F). +trie_step([],_,_,[],[],A,A) :- + !. +trie_step(A,B,C,D,E,F,G) :- + D=[H|_], + length(H,I), + aggregate_all(set(J/K),(member(L,A),functor(L,J,K)),M), + N is I+1, + trie_step_cases(M,N,A,D,E,B,C,F,G). +trie_step_cases([],_,_,_,_,_,_,A,A). +trie_step_cases([A|B],C,D,E,F,G,H,I,J) :- + trie_step_case(A,C,D,E,F,G,H,I,K), + trie_step_cases(B,C,D,E,F,G,H,K,J). +trie_step_case(A/B,C,D,E,F,G,H,[I|J],K) :- + I=(L:-M), + N is C+1, + functor(L,G,N), + arg(1,L,O), + L=..[_,_|P], + once(append(Q,[R],P)), + functor(O,A,B), + O=..[_|S], + append(S,P,T), + ( T==[R] -> + J=K, + M=true, + rec_cases(D,_,F,A/B,_,_,U), + U=[R] ; - ( is_list(A) -> - sort(A,E), - term_variables(B,F), - find_with_var_identity(D,F,(member(G,E),arg(G,B,D)),C) + rec_cases(D,E,F,A/B,V,W,U), + ( W=[X] -> + J=K, + M=true, + append([V,X,U],T) + ; + pairup(V,W,Y), + common_pattern(Y,Z,A1,B1), + append(S,Q,[C1|D1]), + C1-D1=Z, + gensym(H,E1), + append(A1,[R],F1), + M=..[E1|F1], + maplist(head_tail,B1,G1,H1), + trie_step(G1,E1,H,H1,U,J,K) ) ). +head_tail([A|B],A,B). +rec_cases([],[],[],_,[],[],[]). +rec_cases([A|B],[C|D],[E|F],G/H,I,J,K) :- + ( functor(A,G,H), + A=..[_|L], + append(L,C,[M|N]) -> + I=[M|O], + J=[N|P], + K=[E|Q], + rec_cases(B,D,F,G/H,O,P,Q) + ; + rec_cases(B,D,F,G/H,I,J,K) + ). +common_pattern(A,B,C,D) :- + fold1(gct,A,B), + term_variables(B,C), + findall(C,member(B,A),D). +gct(A,B,C) :- + gct_(A,B,C,[],_). +gct_(A,B,C,D,E) :- + ( nonvar(A), + nonvar(B), + functor(A,F,G), + functor(B,H,I), + F==H, + G==I -> + functor(C,F,G), + A=..[_|J], + B=..[_|K], + C=..[_|L], + maplist_dcg(gct_,J,K,L,D,E) + ; + ( lookup_eq(D,A+B,C) -> + E=D + ) + ; + E=[A+B-C|D] + ). +fold1(A,[B|C],D) :- + fold(C,A,B,D). +fold([],_,A,A). +fold([A|B],C,D,E) :- + call(C,A,D,F), + fold(B,C,F,E). +maplist_dcg(A,B,C,D)-->maplist_dcg_(B,C,D,A). +maplist_dcg_([],[],[],_)-->[]. +maplist_dcg_([A|B],[C|D],[E|F],G)-->call(G,A,C,E),maplist_dcg_(B,D,F,G). +global_list_store_name(A/B,C) :- + get_target_module(D), + atom_concat_list(['$chr_store_global_list_',D,'____',A,'___',B],C). global_ground_store_name(A/B,C) :- get_target_module(D), - atom_concat_list(['$chr_store_global_ground_',D,:,A,/,B],C). + atom_concat_list(['$chr_store_global_ground_',D,'____',A,'___',B],C). global_singleton_store_name(A/B,C) :- get_target_module(D), - atom_concat_list(['$chr_store_global_singleton_',D,:,A,/,B],C). -enumerate_stores_code(A,B) :- - C='$enumerate_suspensions'(D), - enumerate_store_bodies(A,D,E), - list2disj(E,F), - B=(C:-F). + atom_concat_list(['$chr_store_global_singleton_',D,'____',A,'___',B],C). +identifier_store_name(A,B) :- + get_target_module(C), + atom_concat_list(['$chr_identifier_lookup_',C,'____',A],B). +prolog_global_variables_code(A) :- + prolog_global_variables(B), + ( B==[] -> + A=[] + ; + maplist(wrap_in_functor('$chr_prolog_global_variable'),B,C), + A=[(:-dynamic user:exception/3),(:-multifile user:exception/3),(user:exception(undefined_global_variable,D,retry):-'$chr_prolog_global_variable'(D),'$chr_initialization')|C] + ). +sbag_member_call(A,B,'chr sbag_member'(A,B)). +update_mutable_call(A,B,'chr update_mutable'(A,B)). +create_mutable_call(A,B,true) :- + B=mutable(A). +get_suspension_field(A,B,C,D,E) :- + get_dynamic_suspension_term_field(C,A,B,D,E). +update_suspension_field(A,B,C,D,E) :- + set_dynamic_suspension_term_field(C,A,B,D,E). +get_update_suspension_field(A,B,C,D,E,true,F,G) :- + get_dynamic_suspension_term_field(C,A,B,D,F), + set_dynamic_suspension_term_field(C,A,B,E,G). +create_static_suspension_field(A,B,C,D,true) :- + get_static_suspension_term_field(C,A,B,D). +get_static_suspension_field(A,B,C,D,true) :- + get_static_suspension_term_field(C,A,B,D). +get_update_static_suspension_field(A,B,C,D,E,F,true,G) :- + get_static_suspension_term_field(D,A,C,E), + set_dynamic_suspension_term_field(D,A,B,F,G). +enumerate_stores_code(A,[B|C]) :- + D='$enumerate_constraints'(E), + B=(D:-F), + enumerate_store_bodies(A,E,C), + ( C=[] -> + F=fail + ; + F=(nonvar(E)->functor(E,G,_),'$enumerate_constraints'(G,E);'$enumerate_constraints'(_,E)) + ). enumerate_store_bodies([],_,[]). enumerate_store_bodies([A|B],C,D) :- ( is_stored(A) -> get_store_type(A,E), - enumerate_store_body(E,A,C,F), - D=[F|G] + ( enumerate_store_body(E,A,F,G) -> + true + ; + chr_error(internal,'Could not generate enumeration code for constraint ~w. +',[A]) + ), + get_dynamic_suspension_term_field(arguments,A,F,H,I), + A=J/_, + K=..[J|H], + L='$enumerate_constraints'(J,C), + M=(G,I,C=K), + D=[(L:-M)|N] ; - D=G + D=N ), - enumerate_store_bodies(B,C,G). + enumerate_store_bodies(B,C,N). enumerate_store_body(default,A,B,C) :- - get_constraint_index(A,D), - get_target_module(E), - get_max_constraint_index(F), - G=('chr global_term_ref_1'(H),get_attr(H,E,I)), - ( F>1 -> - J is D+1, - K=(arg(J,I,L),'chr sbag_member'(B,L)) - ; - K='chr sbag_member'(B,I) - ), - C=(G,K). + global_list_store_name(A,D), + sbag_member_call(B,E,F), + make_get_store_goal(D,E,G), + C=(G,F). +enumerate_store_body(multi_inthash([A|_]),B,C,D) :- + multi_inthash_enumerate_store_body(A,B,C,D). enumerate_store_body(multi_hash([A|_]),B,C,D) :- multi_hash_enumerate_store_body(A,B,C,D). +enumerate_store_body(atomic_constants(A,B,C),D,E,F) :- + C==complete, + maplist(enumerate_constant_store_body(D,A,G),B,H), + list2disj(H,I), + F=(I,member(E,G)). +enumerate_constant_store_body(A,B,C,D,nb_getval(E,C)) :- + constants_store_name(A,B,D,E). +enumerate_store_body(ground_constants(A,B,C),D,E,F) :- + enumerate_store_body(atomic_constants(A,B,C),D,E,F). enumerate_store_body(global_ground,A,B,C) :- global_ground_store_name(A,D), - C=(nb_getval(D,E),'chr sbag_member'(B,E)). + sbag_member_call(B,E,F), + make_get_store_goal(D,E,G), + C=(G,F). +enumerate_store_body(var_assoc_store(_,_),_,_,A) :- + A=fail. enumerate_store_body(global_singleton,A,B,C) :- global_singleton_store_name(A,D), - C=(nb_getval(D,B),B\==[]). + make_get_store_goal(D,B,E), + C=(E,B\==[]). enumerate_store_body(multi_store(A),B,C,D) :- - once((member(E,A),enumerate_store_body(E,B,C,D))). + ( memberchk(global_ground,A) -> + enumerate_store_body(global_ground,B,C,D) + ; + once((member(E,A),enumerate_store_body(E,B,C,D))) + ). +enumerate_store_body(identifier_store(_),_,_,A) :- + A=fail. +enumerate_store_body(type_indexed_identifier_store(_,_),_,_,A) :- + A=fail. +multi_inthash_enumerate_store_body(A,B,C,D) :- + multi_hash_store_name(B,A,E), + D=(nb_getval(E,F),value_iht(F,C)). multi_hash_enumerate_store_body(A,B,C,D) :- multi_hash_store_name(B,A,E), - D=(nb_getval(E,F),value_ht(F,C)). + make_get_store_goal(E,F,G), + D=(G,value_ht(F,C)). guard_simplification :- ( chr_pp_flag(guard_simplification,on) -> - multiple_occ_constraints_checked([]), + precompute_head_matchings, simplify_guards(1) ; true ). -add_type_information_(_,[],true) :- - !. -add_type_information_(A,[B|C],D) :- - !, - add_type_information(A,B,E), - D=(E,F), - add_type_information_(A,C,F). -compute_derived_info(_,[],_,_,_,_,_,_,[],[]) :- - !. -compute_derived_info(A,[B|C],D,E,F,G,H,I,J,K) :- - !, - copy_term(A-F,L), - variable_replacement(A-F,L,M), - append(B,M,N), - list2conj(A,O), - negate_b(O,P), - make_head_matchings_explicit_not_negated2(E,D,Q), - list2conj(Q,R), - term_variables(N,S), - term_variables(A-F-Q,T), - new_vars(T,S,U), - append(N,U,V), - negate_b(F,W), - ( F==true -> - X=P +next_prev_rule(A,B,C) :- + ( find_min_q(A,_-D) -> + D=(-B), + normalize_heap(A,D,C) ; - X=(P;R,W) + B=0, + C=A + ). +normalize_heap(A,B,C) :- + ( find_min_q(A,_-B) -> + delete_min_q(A,D,tuple(E,F,_)-_), + ( F>1 -> + G is F-1, + get_occurrence(E,G,H,_), + insert_q(D,tuple(E,G,H)-(-H),I) + ; + I=D + ), + normalize_heap(I,B,C) + ; + C=A + ). +head_types_modes_condition([],_,true). +head_types_modes_condition([A|B],C,(D,E)) :- + types_modes_condition(C,A,D), + head_types_modes_condition(B,C,E). +add_background_info(A,B) :- + get_bg_info(C), + add_background_info2(A,D), + append(C,D,B). +add_background_info2(A,[]) :- + var(A), + !. +add_background_info2([],[]) :- + !. +add_background_info2([A|B],C) :- + !, + add_background_info2(A,D), + add_background_info2(B,E), + append(D,E,C). +add_background_info2(A,B) :- + ( functor(A,_,C), + C>0 -> + A=..[_|D], + add_background_info2(D,E) + ; + E=[] ), - copy_with_variable_replacement(X,Y,V), - copy_with_variable_replacement(F,Z,V), - copy_with_variable_replacement(A,A1,V), - list2conj(A1,B1), - add_guard_to_head(H,Z,C1), - add_guard_to_head(C1,B1,D1), - compute_derived_info(A,C,D,E,F,G,H,I,E1,F1), - append([Y],E1,J), - append([D1],F1,K). + get_bg_info(A,F), + append(F,E,B). +normalize_conj_list(A,B) :- + list2conj(A,C), + conj2list(C,B). +compute_derived_info([],_,_,_,_,_,_,_,[],[]). +compute_derived_info([A|B],C,D,E,F,G,H,I,[J|K],[L|M]) :- + copy_term(C-F,N), + variable_replacement(C-F,N,O), + append(A,O,P), + list2conj(C,Q), + negate_b(Q,R), + make_head_matchings_explicit_not_negated2(E,D,S), + list2conj(S,T), + term_variables(P,U), + term_variables(C-F-S,V), + new_vars(V,U,W), + append(P,W,X), + ( F==true -> + Y=R + ; + negate_b(F,Z), + Y=(R;T,Z) + ), + copy_with_variable_replacement(Y,J,X), + copy_with_variable_replacement(F,A1,X), + copy_with_variable_replacement(C,B1,X), + list2conj(B1,C1), + apply_guard_wrt_term(H,A1,D1), + apply_guard_wrt_term(D1,C1,L), + compute_derived_info(B,C,D,E,F,G,H,I,K,M). simplify_guard(A,B,C,D,E) :- conj2list(A,F), guard_entailment:simplify_guards(C,B,F,G,E), @@ -1154,60 +2459,44 @@ new_vars([A|B],C,D) :- ). head_subset(A,B,C) :- head_subset(A,B,C,[],_). -head_subset([],A,B,C,D) :- - !, - B=C, - D=A. +head_subset([],A,B,B,A). head_subset([A|B],C,D,E,F) :- - !, - head_subset(A,C,G,E,H), - head_subset(B,H,I,G,J), - D=I, - F=J. -head_subset(A,[B|C],D,E,F) :- - !, + head_member(C,A,G,E,H), + head_subset(B,H,D,G,F). +head_member([A|B],C,D,E,F) :- ( - head_subset(A,B,G,E,_), - D=G, - F=C + variable_replacement(C,A,E,D), + F=B ; - head_subset(A,C,H,E,I), - D=H, - F=[B|I] + F=[A|G], + head_member(B,C,D,E,G) ). -head_subset(A,B,C,D,E) :- - variable_replacement(A,B,D,C), - E=[]. make_head_matchings_explicit(A,B,C) :- - extract_variables(A,D), + make_head_matchings_explicit_memo_lookup(A,D,E), + copy_term_nat(D-E,B-C). +make_head_matchings_explicit_(A,B,C) :- + extract_arguments(A,D), make_matchings_explicit(D,E,[],[],_,C), - insert_variables(E,A,B). + substitute_arguments(A,E,B). make_head_matchings_explicit_not_negated(A,B,C) :- - extract_variables(A,D), - make_matchings_explicit_not_negated(D,E,[],C), - insert_variables(E,A,B). + extract_arguments(A,D), + make_matchings_explicit_not_negated(D,E,C), + substitute_arguments(A,E,B). make_head_matchings_explicit_not_negated2(A,B,C) :- - extract_variables(A,D), - extract_variables(B,E), - make_matchings_explicit_not_negated(D,E,[],C). -extract_variables([],[]). -extract_variables([A|B],C) :- + extract_arguments(A,D), + extract_arguments(B,E), + make_matchings_explicit_not_negated(D,E,C). +extract_arguments([],[]). +extract_arguments([A|B],C) :- A=..[_|D], - extract_variables(B,E), - append(D,E,C). -insert_variables([],[],[]) :- - !. -insert_variables(A,[B|C],[D|E]) :- - B=..[F|G], - length(G,H), - take_first_N(A,H,I,J), - D=..[F|I], - insert_variables(J,C,E). -take_first_N(A,0,[],A) :- - !. -take_first_N([A|B],C,[A|D],E) :- - F is C-1, - take_first_N(B,F,D,E). + append(D,E,C), + extract_arguments(B,E). +substitute_arguments([],[],[]). +substitute_arguments([A|B],C,[D|E]) :- + functor(A,F,G), + split_at(G,C,H,I), + D=..[F|H], + substitute_arguments(B,I,E). make_matchings_explicit([],[],_,A,A,[]). make_matchings_explicit([A|B],[C|D],E,F,G,H) :- ( var(A) -> @@ -1235,44 +2524,41 @@ make_matchings_explicit([A|B],[C|D],E,F,G,H) :- H=[functor(C,M,N),U|J] ), L=[C\=S|Q], - term_variables(O,V), - append(E,V,K) + term_variables(B,V), + append(V,E,K) ), make_matchings_explicit(B,D,K,L,G,J). -make_matchings_explicit_not_negated([],[],_,[]). -make_matchings_explicit_not_negated([A|B],[C|D],E,F) :- - F=[C=A|G], - H=E, - make_matchings_explicit_not_negated(B,D,H,G). -add_guard_to_head([],_,[]). -add_guard_to_head([A|B],C,[D|E]) :- +make_matchings_explicit_not_negated([],[],[]). +make_matchings_explicit_not_negated([A|B],[C|D],E) :- + E=[C=A|F], + make_matchings_explicit_not_negated(B,D,F). +apply_guard_wrt_term([],_,[]). +apply_guard_wrt_term([A|B],C,[D|E]) :- ( var(A) -> - find_guard_info_for_var(A,C,D) + apply_guard_wrt_variable(C,A,D) ; - functor(A,F,_), A=..[F|G], - add_guard_to_head(G,C,H), + apply_guard_wrt_term(G,C,H), D=..[F|H] ), - add_guard_to_head(B,C,E). -find_guard_info_for_var(A,(B,C),D) :- + apply_guard_wrt_term(B,C,E). +apply_guard_wrt_variable((A,B),C,D) :- !, - find_guard_info_for_var(A,B,E), - find_guard_info_for_var(E,C,D). -find_guard_info_for_var(A,B,C) :- - ( B=(D=E), - A==D -> + apply_guard_wrt_variable(A,C,E), + apply_guard_wrt_variable(B,E,D). +apply_guard_wrt_variable(A,B,C) :- + ( A=(D=E), + B==D -> C=E ; - ( B=functor(F,G,H), - A==F, + ( A=functor(F,G,H), + B==F, ground(G), ground(H) -> - length(I,H), - C=..[G|I] + functor(C,G,H) ) ; - C=A + C=B ). replace_some_heads(A,B,_,[],A,B,_,_,[]) :- !. @@ -1333,7 +2619,7 @@ use_same_args([A|B],[_|C],[D|E],F,G,H) :- use_same_args([A|B],[C|D],[E|F],G,H,I) :- nonvar(A), !, - ( vars_occur_in(A,H) -> + ( common_variables(A,H) -> I=[C=A|J] ; I=J @@ -1347,14 +2633,14 @@ simplify_heads([A|B],C,D,E,F,G) :- ( nonvar(I) ; - vars_occur_in(I,B-C) + common_variables(I,B-C) ), guard_entailment:entails_guard(C,H=I) -> - ( vars_occur_in(I,D-B-C) -> + ( common_variables(I,D-B-C) -> G=J, F=K ; - ( vars_occur_in(I,E) -> + ( common_variables(I,E) -> G=[H=I|J] ; G=J @@ -1366,7 +2652,7 @@ simplify_heads([A|B],C,D,E,F,G) :- functor(I,L,M), guard_entailment:entails_guard([functor(H,L,M)|C],H=I) -> G=J, - ( vars_occur_in(I,D-B-C) -> + ( common_variables(I,D-B-C) -> F=K ; F=[functor(H,L,M)|K] @@ -1377,103 +2663,11 @@ simplify_heads([A|B],C,D,E,F,G) :- G=J ), simplify_heads(B,[A|C],D,E,K,J). -vars_occur_in(A,B) :- +common_variables(A,B) :- term_variables(A,C), term_variables(B,D), intersect_eq(C,D,E), E\==[]. -flatten_stuff([A|B],C) :- - !, - flatten_stuff(A,D), - flatten_stuff(B,E), - append(D,E,C). -flatten_stuff((A;B),C) :- - !, - flatten_stuff(A,D), - flatten_stuff(B,E), - append(D,E,C). -flatten_stuff((A,B),C) :- - !, - flatten_stuff(A,D), - flatten_stuff(B,E), - append(D,E,C). -flatten_stuff(chr_pp_not_in_store(A),[A]) :- - !. -flatten_stuff(_,[]). -unify_stuff(_,[],[]). -unify_stuff(A,[B|C],[D|E]) :- - B\==D, - term_variables(B,F), - term_variables(D,G), - intersect_eq(F,G,H), - check_safe_unif(B,D,H), - variable_replacement(B,D,I), - check_replacement(I), - term_variables(I,J), - list_difference_eq(J,F,K), - intersect_eq(A,K,L), - L==[], - B=D, - unify_stuff(A,C,E), - !. -unify_stuff(A,B,[_|C]) :- - unify_stuff(A,B,C). -unify_stuff(A,[_|B],C) :- - unify_stuff(A,B,C). -check_safe_unif(A,B,C) :- - var(A), - !, - var(B), - ( - ( - memberchk_eq(A,C) - ; - memberchk_eq(B,C) - ) -> - A==B - ; - true - ). -check_safe_unif([],[],_) :- - !. -check_safe_unif([A|B],[C|D],E) :- - !, - check_safe_unif(A,C,E), - !, - check_safe_unif(B,D,E). -check_safe_unif(A,B,C) :- - nonvar(A), - !, - nonvar(B), - A=..[D|E], - B=..[D|F], - check_safe_unif(E,F,C). -check_safe_unif2(A,_) :- - var(A), - !. -check_safe_unif2([],[]) :- - !. -check_safe_unif2([A|B],[C|D]) :- - !, - check_safe_unif2(A,C), - !, - check_safe_unif2(B,D). -check_safe_unif2(A,B) :- - nonvar(A), - !, - nonvar(B), - A=..[C|D], - B=..[C|E], - check_safe_unif2(D,E). -check_replacement(A) :- - check_replacement(A,B), - sort(B,C), - length(C,D), - !, - length(B,D). -check_replacement([],[]). -check_replacement([A-_|B],[A|C]) :- - check_replacement(B,C). add_failing_occ(A,B,C,D,E,F,_,G,H) :- A=pragma(rule(_,_,I,_),ids(J,K),_,_,_), append(K,J,L), @@ -1484,8 +2678,7 @@ add_failing_occ(A,B,C,D,E,F,_,G,H) :- extract_explicit_matchings(R,S), negate_b(S,T), copy_with_variable_replacement(M,U,H), - ( check_safe_unif2(F,O), - F=O -> + ( subsumes(F,O) -> E=[(T;U)] ; E=[chr_pp_void_info] @@ -1497,16 +2690,6 @@ missing_partner_cond([A|B],[_|C],[D|E],D,F,A,G) :- missing_partner_cond([A|B],[_|C],[_|D],E,F,G,H/I) :- F=(chr_pp_not_in_store(A);J), missing_partner_cond(B,C,D,E,J,G,H/I). -extract_explicit_matchings(A=B) :- - var(A), - var(B), - !, - A=B. -extract_explicit_matchings(A==B) :- - var(A), - var(B), - !, - A=B. extract_explicit_matchings((A,B),C) :- !, ( extract_explicit_matchings(A) -> @@ -1522,101 +2705,180 @@ extract_explicit_matchings(A,B) :- ; B=A ). -add_mode_info([],[],true). -add_mode_info([+|A],[B|C],D) :- +extract_explicit_matchings(A=B) :- + var(A), + var(B), !, - D=(ground(B),E), - add_mode_info(A,C,E). -add_mode_info([_|A],[_|B],C) :- - add_mode_info(A,B,C). -types2condition([],[],[],[],[]). -types2condition([A|B],[C|D],[E|F],[G|H],I) :- - ( get_type_definition(A,J) -> - type2condition(J,C,E,K), - ( G\== + -> - L=[\+ground(C)|K] - ; - L=K - ), - list2disj(L,M), - I=[M|N], - types2condition(B,D,F,H,N) + A=B. +extract_explicit_matchings(A==B) :- + var(A), + var(B), + !, + A=B. +assert_constraint_type(A,B) :- + ( ground(B) -> + constraint_type(A,B) ; - ( builtin_type(A,C,O) -> - I=[O|N], - types2condition(B,D,F,H,N) - ) - ; - format('CHR compiler ERROR: Undefined type ~w. -',[A]), - fail + chr_error(type_error,'Declared argument types "~w" for constraint "~w" must be ground! +',[B,A]) ). -type2condition([],_,_,[]). -type2condition([A|B],C,D,E) :- - ( builtin_type(A,C,F) -> +get_type_definition_det(A,B) :- + ( get_type_definition(A,B) -> true ; - real_type(A,C,D,F) - ), - item2list(F,G), - type2condition(B,C,D,H), - append(G,H,E). -item2list([],[]) :- - !. -item2list([A|B],[A|B]) :- - !. -item2list(A,B) :- - B=[A]. -builtin_type(A,_,true) :- - var(A), - !. -builtin_type(any,_,true). -builtin_type(int,A,integer(A)). -builtin_type(number,A,number(A)). -builtin_type(float,A,float(A)). -builtin_type(natural,A,(integer(A),A>=0)). -real_type(A,B,C,D) :- - ( nonvar(A) -> - functor(A,E,F), - ( F==0 -> - D=(B=E) - ; - A=..[_|G], - length(H,F), - I=..[E|H], - ( var(C) -> - D=functor(B,E,F) - ; - ( functor(C,E,F) -> - C=..[_|J], - nested_types(G,H,J,K), - D=(functor(B,E,F),B=I,K) - ) - ; - D=functor(B,E,F) - ) - ) - ; - format('CHR compiler ERROR: Illegal type definition (must be nonvar). -',[]), - fail + chr_error(type,'Could not find type definition for type `~w''. +',[A]) ). -nested_types([],[],[],true). -nested_types([A|B],[C|D],[E|F],G) :- - ( get_type_definition(A,H) -> - type2condition(H,C,E,I), - list2disj(I,J), - G=(J,K), - nested_types(B,D,F,K) +get_constraint_type_det(A,B) :- + ( get_constraint_type(A,B) -> + true ; - ( builtin_type(A,C,L) -> - G=(L,K), - nested_types(B,D,F,K) + A=_/C, + replicate(C,any,B) + ). +modes_condition([],[],true). +modes_condition([A|B],[C|D],E) :- + ( A== + -> + E=(ground(C),F) + ; + ( A== - -> + E=(var(C),F) ) ; - format('CHR compiler ERROR: Undefined type ~w inside type definition. -',[A]), - fail + E=F + ), + modes_condition(B,D,F). +types_condition([],[],[],[],true). +types_condition([A|B],[C|D],[E|F],[G|H],(I,J)) :- + ( G== - -> + K=[true] + ; + get_type_definition_det(A,L), + type_condition(L,C,E,G,M), + ( G== + -> + K=M + ; + K=[\+ground(C)|M] + ) + ), + list2disj(K,I), + types_condition(B,D,F,H,J). +type_condition([],_,_,_,[]). +type_condition([A|B],C,D,E,[F|G]) :- + ( var(A) -> + chr_error(type,'Unexpected variable type in type definition! +',[]) + ; + ( atomic_builtin_type(A,C,F) -> + true + ) + ; + ( compound_builtin_type(A,C,F,_) -> + true + ) + ; + type_def_case_condition(A,C,D,E,F) + ), + type_condition(B,C,D,E,G). +atomic_builtin_type(any,_,true). +atomic_builtin_type(dense_int,A,(integer(A),A>=0)). +atomic_builtin_type(int,A,integer(A)). +atomic_builtin_type(number,A,number(A)). +atomic_builtin_type(float,A,float(A)). +atomic_builtin_type(natural,A,(integer(A),A>=0)). +atomic_builtin_type(chr_identifier,_,true). +compound_builtin_type(chr_constants(_),_,true,true). +compound_builtin_type(chr_constants(_,_),_,true,true). +compound_builtin_type(chr_identifier(_),_,true,true). +compound_builtin_type(chr_enum(A),B,(ground(B),memberchk(B,A)),once((member(C,A),unifiable(B,C,_)))). +is_chr_constants_type(chr_constants(A),A,no). +is_chr_constants_type(chr_constants(A,B),A,yes(B)). +type_def_case_condition(A,B,C,D,E) :- + ( nonvar(A) -> + functor(A,F,G), + ( G==0 -> + E=(B=A) + ; + ( var(C) -> + E=functor(B,F,G) + ) + ; + ( functor(C,F,G) -> + E=(functor(B,F,G),B=H,I), + A=..[_|J], + C=..[_|K], + functor(H,F,G), + H=..[_|L], + replicate(G,D,M), + types_condition(J,L,K,M,I) + ) + ; + E=functor(B,F,G) + ) + ; + chr_error(internal,'Illegal type definition (must be nonvar). +',[]) + ). +static_type_check_heads([]). +static_type_check_heads([A|B]) :- + static_type_check_head(A), + static_type_check_heads(B). +static_type_check_head(A) :- + functor(A,B,C), + get_constraint_type_det(B/C,D), + A=..[_|E], + maplist(static_type_check_term(head(A)),E,D). +static_type_check_body([]). +static_type_check_body([A|B]) :- + functor(A,C,D), + get_constraint_type_det(C/D,E), + A=..[_|F], + maplist(static_type_check_term(body(A)),F,E), + static_type_check_body(B). +format_src(head(A)) :- + format('head ~w',[A]). +format_src(body(A)) :- + format('body goal ~w',[A]). +generate_dynamic_type_check_clauses(A) :- + ( chr_pp_flag(debugable,on) -> + dynamic_type_check, + get_dynamic_type_check_clauses(B), + append(B,[('$dynamic_type_check'(C,D):-throw(error(type_error(C,D),context(_,'CHR Runtime Type Error'))))],A) + ; + A=[] + ). +dynamic_type_check_clause(A,B,C) :- + copy_term(A-B,D-E), + functor(E,F,G), + functor(H,F,G), + E=..[_|I], + H=..[_|J], + maplist(dynamic_type_check_call,I,J,K), + list2conj(K,L), + C=('$dynamic_type_check'(D,H):-L). +dynamic_type_check_alias_clause(A,B,C) :- + C=('$dynamic_type_check'(A,D):-'$dynamic_type_check'(B,D)). +dynamic_type_check_call(A,B,C) :- + ( A==any -> + C=true + ; + C=when(nonvar(B),once('$dynamic_type_check'(A,B))) + ). +atomic_types_suspended_constraint(A) :- + A=_/B, + get_constraint_type(A,C), + get_constraint_mode(A,D), + numlist(1,B,E), + maplist(atomic_types_suspended_constraint(A),C,D,E). +atomic_types_suspended_constraint(A,B,C,D) :- + ( is_indexed_argument(A,D) -> + ( C== ? -> + atomic_type(B) + ; + true + ) + ; + true ). storage_analysis(A) :- ( chr_pp_flag(storage_analysis,on) -> @@ -1674,41 +2936,57 @@ no_matching([A|B],C) :- check_storage_head2(A,B,C,D) :- functor(A,E,F), G=E/F, - ( - ( - C\==[], - D==true - ; - \+is_observed(E/F,B) - ) -> + ( C\==[], + D==true -> stored(G,B,maybe) ; stored(G,B,yes) ). constraints_code(A,B) :- - constraints_code1(A,C,[]), - clean_clauses(C,B). + ( chr_pp_flag(reduced_indexing,on), + forall(C,A,chr_translate:only_ground_indexed_arguments(C)) -> + none_suspended_on_variables + ; + true + ), + constraints_code1(A,B,[]). constraint_prelude(A/B,C) :- vars_susp(B,D,E,F), G=..[A|D], - build_head(A,B,[0],F,H), - get_target_module(I), - J=..[A|D], + make_suspension_continuation_goal(A/B,F,H), + build_head(A,B,[0],F,I), ( chr_pp_flag(debugable,on) -> - use_auxiliary_predicate(insert_constraint_internal), - generate_insert_constraint_call(A/B,E,K), - make_name(attach_,A/B,L), - M=..[L,N,E], - O=(arg(2,E,P),'chr update_mutable'(inactive,P)), - C=(G:-insert_constraint_internal(_,N,E,I:H,J,D),K,M,O,('chr debug_event'(call(E)),H;'chr debug_event'(fail(E)),!,fail),('chr debug_event'(exit(E));'chr debug_event'(redo(E)),fail)) + insert_constraint_goal(A/B,E,D,J), + attach_constraint_atom(A/B,K,E,L), + delay_phase_end(validate_store_type_assumptions,chr_translate:update_suspension_field(A/B,E,state,inactive,M)), + insert_constraint_internal_constraint_goal(A/B,K,E,H,D,N), + ( get_constraint_type(A/B,O) -> + maplist(dynamic_type_check_call,O,D,P), + list2conj(P,Q) + ; + Q=true + ), + C=(G:-Q,N,J,L,M,'chr debug_event'(insert(G#E)),('chr debug_event'(call(E)),I;'chr debug_event'(fail(E)),!,fail),('chr debug_event'(exit(E));'chr debug_event'(redo(E)),fail)) ; ( get_allocation_occurrence(A/B,0) -> - gen_insert_constraint_internal_goal(A/B,Q,F,D,E), - O=(arg(2,E,P),'chr update_mutable'(inactive,P)), - C=(G:-Q,O,H) + gen_insert_constraint_internal_goal(A/B,R,F,D,E), + delay_phase_end(validate_store_type_assumptions,chr_translate:update_suspension_field(A/B,E,state,inactive,M)), + C=(G:-R,M,I) ) ; - C=(G:-H) + C=(G:-I) + ). +make_suspension_continuation_goal(A/B,C,D) :- + ( may_trigger(A/B) -> + build_head(A,B,[0],C,E), + ( chr_pp_flag(debugable,off) -> + D=E + ; + get_target_module(F), + D=F:E + ) + ; + D=true ). gen_cond_attach_clause(A/B,C,D,E) :- ( is_finally_stored(A/B) -> @@ -1716,140 +2994,197 @@ gen_cond_attach_clause(A/B,C,D,E) :- get_max_occurrence(A/B,G), ( chr_pp_flag(debugable,off), G - ( may_trigger(A/B) -> - gen_cond_attach_goal(A/B,H,I,J,K) - ; + ( only_ground_indexed_arguments(A/B) -> gen_insert_constraint_internal_goal(A/B,H,I,J,K) + ; + gen_cond_attach_goal(A/B,H,I,J,K) ) ; vars_susp(B,J,K,I), - gen_uncond_attach_goal(A/B,K,H,_) + gen_uncond_attach_goal(A/B,K,J,H,_) ), - ( chr_pp_flag(debugable,on) -> - L=..[A|J], - M='chr debug_event'(insert(L#K)) - ; - M=true - ), - build_head(A,B,C,I,N), - O=(N:-M,H), - D=[O|E] + build_head(A,B,C,I,L), + M=(L:-H), + add_dummy_location(M,N), + D=[N|E] ; D=E ). gen_cond_attach_goal(A/B,C,D,E,F) :- vars_susp(B,E,F,D), - build_head(A,B,[0],D,G), + make_suspension_continuation_goal(A/B,D,G), + ( get_store_type(A/B,var_assoc_store(_,_)) -> + H=true + ; + attach_constraint_atom(A/B,I,F,H) + ), + _=..[A|E], + insert_constraint_goal(A/B,F,E,J), + insert_constraint_internal_constraint_goal(A/B,I,F,G,E,K), ( may_trigger(A/B) -> - make_name(attach_,A/B,H), - I=..[H,J,F] + activate_constraint_goal(A/B,(J,H),I,F,_,L), + C=(var(F)->K,J,H;L) + ; + C=(K,J,H) + ). +gen_insert_constraint_internal_goal(A/B,C,D,E,F) :- + vars_susp(B,E,F,D), + make_suspension_continuation_goal(A/B,D,G), + ( \+only_ground_indexed_arguments(A/B), + \+get_store_type(A/B,var_assoc_store(_,_)) -> + attach_constraint_atom(A/B,H,F,I) ; I=true ), - get_target_module(K), - L=..[A|E], - generate_insert_constraint_call(A/B,F,M), - use_auxiliary_predicate(insert_constraint_internal), - use_auxiliary_predicate(activate_constraint), - C=((var(F)->insert_constraint_internal(N,J,F,K:G,L,E);activate_constraint(N,J,F,_)),(N==yes->M,I;true)). -gen_insert_constraint_internal_goal(A/B,C,D,E,F) :- - vars_susp(B,E,F,D), - ( may_trigger(A/B) -> - make_name(attach_,A/B,G), - H=..[G,I,F], - build_head(A,B,[0],D,J), - get_target_module(K), - L=K:J + _=..[A|E], + insert_constraint_goal(A/B,F,E,J), + insert_constraint_internal_constraint_goal(A/B,H,F,G,E,K), + ( only_ground_indexed_arguments(A/B), + chr_pp_flag(debugable,off) -> + C=(K,J) ; - H=true, - L=true - ), - M=..[A|E], - generate_insert_constraint_call(A/B,F,N), - use_auxiliary_predicate(insert_constraint_internal), - C=(insert_constraint_internal(_,I,F,L,M,E),N,H). -gen_uncond_attach_goal(A,B,C,D) :- - ( may_trigger(A) -> - make_name(attach_,A,E), - F=..[E,G,B] + C=(K,J,I) + ). +gen_uncond_attach_goal(A,B,C,D,E) :- + ( \+only_ground_indexed_arguments(A), + \+get_store_type(A,var_assoc_store(_,_)) -> + attach_constraint_atom(A,F,B,G) ; - F=true + G=true ), - generate_insert_constraint_call(A,B,H), + insert_constraint_goal(A,B,C,H), ( chr_pp_flag(late_allocation,on) -> - use_auxiliary_predicate(activate_constraint), - C=(activate_constraint(I,G,B,D),(I==yes->H,F;true)) + activate_constraint_goal(A,(H,G),F,B,E,D) ; - use_auxiliary_predicate(activate_constraint), - C=activate_constraint(I,G,B,D) + activate_constraint_goal(A,true,F,B,E,D) ). -head1_code(A,B,C,D,E,F,G,H,I) :- - D=pragma(J,_,_,_,K), - J=rule(_,L,_,_), - ( L==[] -> - reorder_heads(K,A,B,C,M,N), - simplification_code(A,M,N,D,E,F,G,H,I) +head1_code(A,B,C,D,E,F,G,H,I,J) :- + E=pragma(K,_,_,_,L), + K=rule(_,M,_,_), + ( M==[] -> + reorder_heads(L,A,C,D,N,O), + simplification_code(A,B,N,O,E,F,G,H,I,J) ; - simpagation_head1_code(A,B,C,D,E,G,H,I) + simpagation_head1_code(A,B,C,D,E,F,G,H,I,J) ). -head2_code(A,B,C,D,E,F,G,H,I) :- - D=pragma(J,_,_,_,K), - J=rule(L,_,_,_), - ( L==[] -> - reorder_heads(K,A,B,C,M,N), - propagation_code(A,M,N,J,K,E,F,G,H,I) +head2_code(A,B,C,D,E,F,G,H,I,J) :- + E=pragma(K,_,_,_,L), + K=rule(M,_,_,_), + ( M==[] -> + reorder_heads(L,A,C,D,N,O), + propagation_code(A,B,N,O,K,L,F,G,H,I,J) ; - simpagation_head2_code(A,B,C,D,E,F,G,H,I) + simpagation_head2_code(A,B,C,D,E,F,G,H,I,J) ). gen_alloc_inc_clause(A/B,C,D,E,F) :- vars_susp(B,G,H,I), build_head(A,B,D,I,J), inc_id(D,K), build_head(A,B,K,I,L), - gen_occ_allocation(A/B,C,G,H,I,M), + gen_occ_allocation(A/B,C,G,H,M), N=(J:-M,L), - E=[N|F]. -gen_cond_allocation(A,B,C,D,E) :- - gen_allocation(A,B,C,D,F), - E=(var(B)->F;true). -gen_allocation(A,B,C/D,E,F) :- - ( may_trigger(C/D) -> - build_head(C,D,[0],E,G), - get_target_module(H), - I=H:G - ; - I=true - ), - J=..[C|A], - use_auxiliary_predicate(allocate_constraint), - F=allocate_constraint(I,B,J,A). -gen_occ_allocation(A,B,C,D,E,F) :- - get_allocation_occurrence(A,G), + add_dummy_location(N,O), + E=[O|F]. +gen_occ_allocation(A,B,C,D,E) :- + get_allocation_occurrence(A,F), + get_occurrence_code_id(A,F,G), + get_occurrence_code_id(A,B,H), ( chr_pp_flag(debugable,off), - B==G -> + H==G -> + allocate_constraint_goal(A,D,C,I), ( may_trigger(A) -> - gen_cond_allocation(C,D,A,E,F) + E=(var(D)->I;true) ; - gen_allocation(C,D,A,E,F) + E=I ) ; - F=true + E=true ). -guard_via_reschedule(A,B,C,D) :- - ( chr_pp_flag(guard_via_reschedule,on) -> - guard_via_reschedule_main(A,B,C,D) +gen_occ_allocation_in_guard(A,B,C,D,E) :- + get_allocation_occurrence(A,F), + ( chr_pp_flag(debugable,off), + B + allocate_constraint_goal(A,D,C,G), + ( may_trigger(A) -> + E=(var(D)->G;true) + ; + E=G + ) ; - append(A,B,E), - list2conj(E,D) + E=true ). -guard_via_reschedule_main(A,B,C,D) :- - initialize_unit_dictionary(C,E), - build_units(A,B,E,F), - dependency_reorder(F,G), - units2goal(G,D). -units2goal([],true). -units2goal([unit(_,A,_,_)|B],(A,C)) :- - units2goal(B,C). +guard_via_reschedule_new(A,B,C,D,E,F) :- + ( chr_pp_flag(guard_via_reschedule,on) -> + guard_via_reschedule_main_new(A,B,C,D,E,G), + list2conj(G,F) + ; + length(A,H), + length(E,H), + length(B,I), + length(D,I), + append(E,D,J), + list2conj(J,F) + ). +guard_via_reschedule_main_new(A,B,C,D,E,F) :- + initialize_unit_dictionary(C,G), + maplist(wrap_in_functor(lookup),A,H), + maplist(wrap_in_functor(guard),B,I), + build_units(H,I,G,J), + dependency_reorder(J,K), + wrappedunits2lists(K,L,E,F), + sort(L,M), + snd_of_pairs(M,D). +wrappedunits2lists([],[],[],[]). +wrappedunits2lists([unit(A,B,_,_)|C],D,E,F) :- + F=[G|H], + ( B=lookup(I) -> + E=[G|J], + D=K + ; + ( B=guard(I) -> + D=[A-G|K], + E=J + ) + ), + wrappedunits2lists(C,K,J,H). +guard_splitting(A,B) :- + A=rule(C,D,E,_), + append(C,D,F), + conj2list(E,G), + term_variables(F,H), + split_off_simple_guard_new(G,H,I,J), + append(I,[K],B), + term_variables(J,L), + ground_vars(F,M), + list_difference_eq(H,M,N), + intersect_eq(N,L,O), + ( chr_pp_flag(guard_locks,on), + bagof('chr lock'(P)-'chr unlock'(P),lists:member(P,O),Q) -> + once(pairup(R,S,Q)) + ; + R=[], + S=[] + ), + list2conj(R,T), + list2conj(S,U), + list2conj(J,V), + K=(T,V,U). +guard_body_copies3(A,B,C,D,E) :- + A=rule(_,_,_,F), + my_term_copy(B,C,G,D), + my_term_copy(F,G,E). +split_off_simple_guard_new([],_,[],[]). +split_off_simple_guard_new([A|B],C,D,E) :- + ( simple_guard_new(A,C) -> + D=[A|F], + split_off_simple_guard_new(B,C,F,E) + ; + D=[], + E=[A|B] + ). +simple_guard_new(A,B) :- + builtin_binds_b(A,C), + \+ (member(D,C),memberchk_eq(D,B)). dependency_reorder(A,B) :- dependency_reorder(A,[],B). dependency_reorder([],A,B) :- @@ -1876,13 +3211,6 @@ build_units(A,B,C,D) :- build_guard_units(B,E,F,G). build_retrieval_units([],A,A,B,B,C,C). build_retrieval_units([A|B],C,D,E,F,G,H) :- - term_variables(A,I), - update_unit_dictionary(I,C,E,J,[],K), - G=[unit(C,A,movable,K)|L], - M is C+1, - build_retrieval_units2(B,M,D,J,F,L,H). -build_retrieval_units2([],A,A,B,B,C,C). -build_retrieval_units2([A|B],C,D,E,F,G,H) :- term_variables(A,I), update_unit_dictionary(I,C,E,J,[],K), G=[unit(C,A,fixed,K)|L], @@ -1942,7 +3270,8 @@ update_unit_dictionary2([A|B],C,D,E,F,G) :- ), update_unit_dictionary2(B,C,J,E,I,G). functional_dependency_analysis(A) :- - ( chr_pp_flag(functional_dependency_analysis,on) -> + ( fail, + chr_pp_flag(functional_dependency_analysis,on) -> functional_dependency_analysis_main(A) ; true @@ -1969,8 +3298,9 @@ discover_unique_pattern(A,B/C,D,E,F) :- ), check_unique_constraints(K,L,J,D,M), term_variables(K,N), - select_pragma_unique_variables(N,M,O), - copy_term_nat(K-O,E-F), + \+ (member(O,N),lookup_eq(M,O,P),memberchk_eq(P,N)), + select_pragma_unique_variables(N,M,Q), + copy_term_nat(K-Q,E-F), functor(K,B,C). select_pragma_unique_variables([],_,[]). select_pragma_unique_variables([A|B],C,D) :- @@ -1981,7 +3311,8 @@ select_pragma_unique_variables([A|B],C,D) :- ), select_pragma_unique_variables(B,C,E). set_semantics_rules(A) :- - ( chr_pp_flag(set_semantics_rule,on) -> + ( fail, + chr_pp_flag(set_semantics_rule,on) -> set_semantics_rules_main(A) ; true @@ -2027,14 +3358,27 @@ symmetry_analysis_main([A|B]) :- H==[] ), G\==[] -> - symmetry_analysis_heads(G,D,[],[],C,F), - symmetry_analysis_heads(H,E,[],[],C,F) + symmetry_analysis_heads_simplification(G,D,[],[],C,F), + symmetry_analysis_heads_propagation(H,E,[],[],C,F) ; true ), symmetry_analysis_main(B). -symmetry_analysis_heads([],[],_,_,_,_). -symmetry_analysis_heads([A|B],[C|D],E,F,G,H) :- +symmetry_analysis_heads_simplification([],[],_,_,_,_). +symmetry_analysis_heads_simplification([A|B],[C|D],E,F,G,H) :- + ( \+is_passive(H,C), + member2(E,F,I-J), + \+is_passive(H,J), + variable_replacement(I,A,K), + copy_with_variable_replacement(G,L,K), + identical_guarded_rules(G,L) -> + passive(H,C) + ; + true + ), + symmetry_analysis_heads_simplification(B,D,[A|E],[C|F],G,H). +symmetry_analysis_heads_propagation([],[],_,_,_,_). +symmetry_analysis_heads_propagation([A|B],[C|D],E,F,G,H) :- ( \+is_passive(H,C), member2(E,F,I-J), \+is_passive(H,J), @@ -2045,41 +3389,80 @@ symmetry_analysis_heads([A|B],[C|D],E,F,G,H) :- ; true ), - symmetry_analysis_heads(B,D,[A|E],[C|F],G,H). -simplification_code(A,B,C,D,E/F,G,H,I,J) :- - D=pragma(K,_,_,_,_), - head_info(A,F,_,L,M,N), - build_head(E,F,H,M,O), - get_constraint_mode(E/F,P), - head_arg_matches(N,P,[],Q,R,[],S), - rest_heads_retrieval_and_matching(B,C,A,T,U,R,V,[],[],[],S,_), - guard_body_copies2(K,V,W,X), - guard_via_reschedule(T,W,O-Q,Y), - gen_uncond_susps_detachments(U,B,Z), - gen_cond_susp_detachment(H,L,E/F,A1), + symmetry_analysis_heads_propagation(B,D,[A|E],[C|F],G,H). +simplification_code(A,B,C,D,E,F/G,H,I,J,K) :- + E=pragma(L,_,_,_,M), + head_info(A,G,_,N,O,P), + build_head(F,G,I,O,Q), + get_constraint_mode(F/G,R), + head_arg_matches(P,R,[],S,T,[],U), + guard_splitting(L,V), + ( is_stored_in_guard(F/G,M) -> + W=[_|V] + ; + W=V + ), + guard_via_reschedule_new(C,W,A,X,Y,Z), + rest_heads_retrieval_and_matching(C,D,A,Y,A1,T,B1,[],[],[],U,_), + guard_body_copies3(L,W,B1,X,C1), + ( is_stored_in_guard(F/G,M) -> + gen_occ_allocation_in_guard(F/G,H,D1,N,E1), + gen_uncond_attach_goal(F/G,N,D1,F1,_), + X=[G1|_], + G1=(E1,F1) + ; + true + ), + partner_constraint_detachments(A1,C,B1,H1), + active_constraint_detachment(I,N,A,B1,I1), ( chr_pp_flag(debugable,on) -> - K=rule(_,_,B1,C1), - my_term_copy(B1-C1,V,D1-E1), - F1='chr debug_event'(try([L|G1],[],D1,E1)), - H1='chr debug_event'(apply([L|G1],[],D1,E1)), - instrument_goal(I1,F1,H1,J1) + L=rule(_,_,J1,K1), + my_term_copy(J1-K1,B1,L1-M1), + sort_by_key([N|A1],[B|D],N1), + O1='chr debug_event'(try(N1,[],L1,M1)), + P1='chr debug_event'(apply(N1,[],L1,M1)), + instrument_goal(Q1,O1,P1,R1) ; - J1=I1 + R1=Q1 ), - ( unconditional_occurrence(E/F,G), + ( unconditional_occurrence(F/G,H), chr_pp_flag(late_allocation,on) -> - I1=true + Q1=true ; - I1=! + Q1=! ), - K1=(O:-Q,Y,J1,Z,A1,X), - I=[K1|J]. + S1=(Q:-S,Z,R1,H1,I1,C1), + add_location(S1,M,T1), + J=[T1|K]. +add_location(A,B,C) :- + ( chr_pp_flag(line_numbers,on) -> + get_chr_source_file(D), + get_line_number(B,E), + C='$source_location'(D,E):A + ; + C=A + ). +add_dummy_location(A,B) :- + ( chr_pp_flag(line_numbers,on) -> + get_chr_source_file(C), + B='$source_location'(C,1):A + ; + B=A + ). head_arg_matches(A,B,C,D,E) :- head_arg_matches(A,B,C,D,E,[],_). head_arg_matches(A,B,C,D,E,F,G) :- head_arg_matches_(A,B,C,F,H,E,G), list2conj(H,D). head_arg_matches_([],[],A,B,[],A,B). +head_arg_matches_([silent(A-_)|B],[C|D],E,F,G,H,I) :- + !, + ( C== + -> + term_variables(A,J,F), + head_arg_matches_(B,D,E,J,G,H,I) + ; + head_arg_matches_(B,D,E,F,G,H,I) + ). head_arg_matches_([A-B|C],[D|E],F,G,H,I,J) :- ( var(A) -> ( lookup_eq(F,A,K) -> @@ -2107,6 +3490,16 @@ head_arg_matches_([A-B|C],[D|E],F,G,H,I,J) :- ), O=C, P=E + ; + ( ground(A), + A='$chr_identifier_match'(Q,R) -> + identifier_label_atom(R,B,Q,S), + H=[S|L], + F=N, + M=G, + O=C, + P=E + ) ; ( atomic(A) -> ( D= + -> @@ -2122,31 +3515,97 @@ head_arg_matches_([A-B|C],[D|E],F,G,H,I,J) :- ; ( D== +, is_ground(G,A) -> - copy_with_variable_replacement(A,Q,F), - H=[B=Q|L], + copy_with_variable_replacement(A,T,F), + H=[B=T|L], F=N, M=G, O=C, P=E ) ; - A=..[_|R], - functor(A,S,T), - functor(U,S,T), - U=..[_|V], + ( D== ?, + is_ground(G,A) -> + copy_with_variable_replacement(A,T,F), + H=[B==T|L], + F=N, + M=G, + O=C, + P=E + ) + ; + A=..[_|U], + functor(A,V,W), + functor(X,V,W), + X=..[_|Y], ( D= + -> - H=[B=U|L] + H=[B=X|L] ; - H=[nonvar(B),B=U|L] + H=[nonvar(B),B=X|L] ), - pairup(R,V,W), - append(W,C,O), - replicate(T,D,X), - append(X,E,P), + pairup(U,Y,Z), + append(Z,C,O), + replicate(W,D,A1), + append(A1,E,P), N=F, M=G ), head_arg_matches_(O,P,N,M,L,I,J). +add_heads_types([],A,A). +add_heads_types([A|B],C,D) :- + add_head_types(A,C,E), + add_heads_types(B,E,D). +add_head_types(A,B,C) :- + functor(A,D,E), + get_constraint_type_det(D/E,F), + A=..[_|G], + add_args_types(G,F,B,C). +add_args_types([],[],A,A). +add_args_types([A|B],[C|D],E,F) :- + add_arg_types(A,C,E,G), + add_args_types(B,D,G,F). +add_arg_types(A,B,C,D) :- + ( var(A) -> + ( lookup_eq(C,A,_) -> + D=C + ; + D=[A-B|C] + ) + ; + ( ground(A) -> + D=C + ) + ; + term_variables(A,E), + length(E,F), + replicate(F,any,G), + add_args_types(E,G,C,D) + ). +add_heads_ground_variables([],A,A). +add_heads_ground_variables([A|B],C,D) :- + add_head_ground_variables(A,C,E), + add_heads_ground_variables(B,E,D). +add_head_ground_variables(A,B,C) :- + functor(A,D,E), + get_constraint_mode(D/E,F), + A=..[_|G], + add_arg_ground_variables(G,F,B,C). +add_arg_ground_variables([],[],A,A). +add_arg_ground_variables([A|B],[C|D],E,F) :- + ( C== + -> + term_variables(A,G), + add_var_ground_variables(G,E,H) + ; + E=H + ), + add_arg_ground_variables(B,D,H,F). +add_var_ground_variables([],A,A). +add_var_ground_variables([A|B],C,D) :- + ( memberchk_eq(A,C) -> + E=C + ; + E=[A|C] + ), + add_var_ground_variables(B,E,D). is_ground(A,B) :- ( ground(B) -> true @@ -2158,8 +3617,17 @@ is_ground(A,B) :- ; memberchk_eq(B,A) ). -rest_heads_retrieval_and_matching(A,B,C,D,E,F,G) :- - rest_heads_retrieval_and_matching(A,B,C,D,E,F,G,[],[],[],[],_). +check_ground(A,B,C) :- + term_variables(B,D), + check_ground_variables(D,A,C). +check_ground_variables([],_,true). +check_ground_variables([A|B],C,D) :- + ( memberchk_eq(A,C) -> + check_ground_variables(B,C,D) + ; + D=(ground(A),E), + check_ground_variables(B,C,E) + ). rest_heads_retrieval_and_matching(A,B,C,D,E,F,G,H,I,J) :- rest_heads_retrieval_and_matching(A,B,C,D,E,F,G,H,I,J,[],_). rest_heads_retrieval_and_matching(A,B,C,D,E,F,G,H,I,J,K,L) :- @@ -2171,37 +3639,43 @@ rest_heads_retrieval_and_matching(A,B,C,D,E,F,G,H,I,J,K,L) :- F=G, K=L ). -rest_heads_retrieval_and_matching_n([],_,_,_,_,[],[],A,A,B,C,C) :- - instantiate_pattern_goals(B). -rest_heads_retrieval_and_matching_n([A|B],[_|C],D,E,F,[G|H],[I|J],K,L,M,N,O) :- - functor(A,P,Q), - head_info(A,Q,R,_,_,S), - get_store_type(P/Q,T), - ( T==default -> - passive_head_via(A,[F|D],M,K,U,V,W), - get_max_constraint_index(X), - ( X==1 -> - Y=V - ; - get_constraint_index(P/Q,Z), - make_attr(X,_,A1,V), - nth(Z,A1,Y) - ), - create_get_mutable(active,B1,C1), - get_constraint_mode(P/Q,D1), - head_arg_matches(S,D1,K,E1,F1,N,G1), - H1=(U,'chr sbag_member'(I,Y),I=I1,C1) +rest_heads_retrieval_and_matching_n([],_,_,_,_,[],[],A,A,_,B,B). +rest_heads_retrieval_and_matching_n([A|B],[_|C],D,E,F,[G|H],[I|J],K,L,_,M,N) :- + functor(A,O,P), + head_info(A,P,Q,_,_,R), + get_store_type(O/P,S), + ( S==default -> + passive_head_via(A,[F|D],K,T,U), + delay_phase_end(validate_store_type_assumptions,(static_suspension_term(O/P,V),get_static_suspension_term_field(arguments,O/P,V,Q),get_static_suspension_field(O/P,V,state,active,W))), + get_constraint_mode(O/P,X), + head_arg_matches(R,X,K,Y,Z,M,A1), + B1=R, + sbag_member_call(I,U,C1), + D1=(T,C1,I=V,W) ; - existential_lookup(T,A,[F|D],K,I1,B1,H1,I,S,J1), - get_constraint_mode(P/Q,D1), - filter_mode(J1,S,D1,K1), - head_arg_matches(J1,K1,K,E1,F1,N,G1), - W=M + delay_phase_end(validate_store_type_assumptions,(static_suspension_term(O/P,V),get_static_suspension_term_field(arguments,O/P,V,Q))), + existential_lookup(S,A,[F|D],K,M,V,D1,I,R,B1), + get_constraint_mode(O/P,X), + E1=X, + head_arg_matches(B1,E1,K,Y,Z,M,A1) ), - I1=..[suspension,_,B1,_,_,_,_|R], - different_from_other_susps(A,I,D,E,L1), - G=(H1,L1,E1), - rest_heads_retrieval_and_matching_n(B,C,[A|D],[I|E],F,H,J,F1,L,W,G1,O). + different_from_other_susps(A,I,D,E,F1), + filter_append(B1,Z,G1), + translate(A1,G1,H1), + translate(A1,Z,I1), + inline_matching_goal(Y,J1,H1,I1), + G=(D1,F1,J1), + rest_heads_retrieval_and_matching_n(B,C,[A|D],[I|E],F,H,J,Z,L,_,A1,N). +inline_matching_goal(A==B,true,C,D) :- + memberchk_eq(A,C), + memberchk_eq(B,D), + A=B, + !. +inline_matching_goal((A,B),(C,D),E,F) :- + !, + inline_matching_goal(A,C,E,F), + inline_matching_goal(B,D,E,F). +inline_matching_goal(A,A,_,_). filter_mode([],_,_,[]). filter_mode([A-B|C],[_-D|E],[F|G],H) :- ( B==D -> @@ -2210,18 +3684,14 @@ filter_mode([A-B|C],[_-D|E],[F|G],H) :- ; filter_mode([A-B|C],E,G,H) ). -instantiate_pattern_goals([]). -instantiate_pattern_goals([_-attr(A,B,C)|D]) :- - get_max_constraint_index(E), - ( E==1 -> - C=true +filter_append([],A,A). +filter_append([A|B],C,D) :- + ( A=silent(_) -> + filter_append(B,C,D) ; - make_attr(E,F,_,A), - or_list(B,G), - !, - C=(F/\G=:=G) - ), - instantiate_pattern_goals(D). + D=[A|E], + filter_append(B,C,E) + ). check_unique_keys([],_). check_unique_keys([A|B],C) :- lookup_eq(C,A,_), @@ -2241,66 +3711,105 @@ different_from_other_susps_([A|B],[C|D],E,F,G) :- G=L ), different_from_other_susps_(B,D,E,F,L). -passive_head_via(A,B,C,D,E,F,G) :- - functor(A,H,I), - get_constraint_index(H/I,J), - common_variables(A,B,K), - translate(K,D,L), - or_pattern(J,M), - ( permutation(L,N), - lookup_eq(C,N,attr(F,O,_)) -> - member(M,O), - !, - G=C, - E=true +passive_head_via(A,B,C,D,E) :- + functor(A,F,G), + get_constraint_index(F/G,_), + common_variables(A,B,H), + ground_vars([A],I), + list_difference_eq(H,I,J), + global_list_store_name(F/G,K), + L=nb_getval(K,E), + get_constraint_mode(F/G,M), + ( N==[] -> + D=L ; - E=(P,Q), - gen_get_mod_constraints(L,P,F), - G=[L-attr(F,[M|_],Q)|C] + ( member(O,J), + nth1(P,M,-), + arg(P,A,Q), + Q==O -> + translate([O],C,[R]), + gen_get_mod_constraints(F/G,R,S,E), + D=S + ) + ; + translate(J,C,N), + add_heads_types(B,[],T), + my_term_copy(T,C,U), + gen_get_mod_constraints(F/G,N,U,V,S,E), + D=(V->S;L) ). common_variables(A,B,C) :- term_variables(A,D), term_variables(B,E), intersect_eq(D,E,C). -gen_get_mod_constraints(A,B,C) :- - get_target_module(D), - ( A==[] -> - B=('chr global_term_ref_1'(E),get_attr(E,D,F),F=C) +gen_get_mod_constraints(A,B,C,D,E,F) :- + via_goal(B,C,D,G), + get_target_module(H), + E=(get_attr(G,H,I),J), + get_max_constraint_index(K), + ( K==1 -> + J=true, + F=I ; - ( A=[G] -> - H='chr via_1'(G,I) - ; - ( A=[G,J] -> - H='chr via_2'(G,J,I) + get_constraint_index(A,L), + get_suspensions(K,L,I,J,F) + ). +via_goal(A,B,C,D) :- + ( A=[] -> + C=fail + ; + ( A=[E] -> + lookup_eq(B,E,F), + ( atomic_type(F) -> + C=var(E), + E=D + ; + C='chr newvia_1'(E,D) ) - ; - H='chr via'(A,I) - ), - B=(H,get_attr(I,D,F),F=C) + ) + ; + ( A=[E,G] -> + C='chr newvia_2'(E,G,D) + ) + ; + C='chr newvia'(A,D) + ). +gen_get_mod_constraints(A,B,C,D) :- + get_target_module(E), + C=(get_attr(B,E,F),G), + get_max_constraint_index(H), + ( H==1 -> + G=true, + D=F + ; + get_constraint_index(A,I), + get_suspensions(H,I,F,G,D) ). guard_body_copies(A,B,C,D) :- guard_body_copies2(A,B,E,D), list2conj(E,C). guard_body_copies2(A,B,C,D) :- - A=rule(_,_,E,F), - conj2list(E,G), - split_off_simple_guard(G,B,H,I), - my_term_copy(H-I,B,J,K-L), - append(K,[M],C), - term_variables(I,N), - term_variables(L,O), + A=rule(_,E,F,G), + conj2list(F,H), + split_off_simple_guard(H,B,I,J), + my_term_copy(I-J,B,K,L-M), + append(L,[N],C), + term_variables(J,O), + term_variables(M,P), + ground_vars(E,Q), + list_difference_eq(O,Q,R), ( chr_pp_flag(guard_locks,on), - bagof('chr lock'(P)-(chr_runtime:unlock(P)),Q^(lists:member(Q,N),pairlist:lookup_eq(B,Q,P),memberchk_eq(P,O)),R) -> - once(pairup(S,T,R)) + bagof('chr lock'(S)-'chr unlock'(S),T^(lists:member(T,R),pairlist:lookup_eq(B,T,S),memberchk_eq(S,P)),U) -> + once(pairup(V,W,U)) ; - S=[], - T=[] + V=[], + W=[] ), - list2conj(S,U), - list2conj(T,V), - list2conj(L,W), - M=(U,W,V), - my_term_copy(F,J,D). + list2conj(V,X), + list2conj(W,Y), + list2conj(M,Z), + N=(X,Z,Y), + my_term_copy(G,K,D). split_off_simple_guard([],_,[],[]). split_off_simple_guard([A|B],C,D,E) :- ( simple_guard(A,C) -> @@ -2313,80 +3822,101 @@ split_off_simple_guard([A|B],C,D,E) :- simple_guard(A,B) :- binds_b(A,C), \+ (member(D,C),lookup_eq(B,D,_)). -gen_cond_susp_detachment(A,B,C,D) :- - ( is_stored(C) -> +active_constraint_detachment(A,B,C,D,E) :- + functor(C,F,G), + H=F/G, + ( is_stored(H) -> ( ( - A==[0] + A==[0], + chr_pp_flag(store_in_guards,off) ; - get_allocation_occurrence(C,E), - get_max_occurrence(C,F), - F - D=true + E=true ; - gen_uncond_susp_detachment(B,C,G), + gen_uncond_susp_detachment(C,B,active,D,K), ( chr_pp_flag(late_allocation,on) -> - D=(var(B)->true;G) + E=(var(B)->true;K) ; - D=G + E=K ) ) ; - D=true + E=true ). -gen_uncond_susp_detachment(A,B,C) :- - ( is_stored(B) -> - ( may_trigger(B) -> - make_name(detach_,B,D), - E=..[D,F,A] - ; - E=true - ), +partner_constraint_detachments([],[],_,true). +partner_constraint_detachments([A|B],[C|D],E,(F,G)) :- + gen_uncond_susp_detachment(C,A,partner,E,F), + partner_constraint_detachments(B,D,E,G). +gen_uncond_susp_detachment(A,B,C,D,E) :- + functor(A,F,G), + H=F/G, + ( is_stored(H) -> + E=(I,J), ( chr_pp_flag(debugable,on) -> - G='chr debug_event'(remove(A)) + I='chr debug_event'(remove(B)) ; - G=true + I=true ), - generate_delete_constraint_call(B,A,H), - use_auxiliary_predicate(remove_constraint_internal), - C=(G,remove_constraint_internal(A,F,I),(I==yes->H,E;true)) + remove_constraint_goal(H,B,K,true,(L,M),C,J), + delete_constraint_goal(A,B,D,L), + ( \+only_ground_indexed_arguments(H), + \+get_store_type(H,var_assoc_store(_,_)) -> + detach_constraint_atom(H,K,B,M) + ; + M=true + ) ; - C=true + E=true ). -gen_uncond_susps_detachments([],[],true). -gen_uncond_susps_detachments([A|B],[C|D],(E,F)) :- - functor(C,G,H), - gen_uncond_susp_detachment(A,G/H,E), - gen_uncond_susps_detachments(B,D,F). -simpagation_head1_code(A,B,C,D,E/F,G,H,I) :- - D=pragma(J,ids(_,K),_,_,_), - J=rule(_,L,M,N), - head_info(A,F,_,O,P,Q), - get_constraint_mode(E/F,R), - head_arg_matches(Q,R,[],S,T,[],U), - build_head(E,F,G,P,V), - append(B,L,W), - append(C,K,X), - reorder_heads(_,A,W,X,Y,Z), - rest_heads_retrieval_and_matching(Y,Z,A,A1,B1,T,C1,[],[],[],U,_), - split_by_ids(Z,B1,C,D1,E1), - guard_body_copies2(J,C1,F1,G1), - guard_via_reschedule(A1,F1,V-S,H1), - gen_uncond_susps_detachments(D1,B,I1), - gen_cond_susp_detachment(G,O,E/F,J1), - ( chr_pp_flag(debugable,on) -> - my_term_copy(M-N,C1,K1-L1), - M1='chr debug_event'(try([O|D1],E1,K1,L1)), - N1='chr debug_event'(apply([O|D1],E1,K1,L1)), - instrument_goal(!,M1,N1,O1) +simpagation_head1_code(A,B,C,D,E,F/G,_,H,I,J) :- + E=pragma(K,ids(_,L),_,_,M), + K=rule(_,N,O,P), + head_info(A,G,Q,R,S,T), + get_constraint_mode(F/G,U), + head_arg_matches(T,U,[],V,W,[],X), + build_head(F,G,H,S,Y), + append(C,N,Z), + append(D,L,A1), + reorder_heads(M,A,Z,A1,B1,C1), + guard_splitting(K,D1), + ( is_stored_in_guard(F/G,M) -> + E1=[_|D1] ; - O1=! + E1=D1 ), - P1=(V:-S,H1,O1,I1,J1,G1), - H=[P1|I]. + guard_via_reschedule_new(B1,E1,A,F1,G1,H1), + rest_heads_retrieval_and_matching(B1,C1,A,G1,I1,W,J1,[],[],[],X,_), + split_by_ids(C1,I1,D,K1,L1,M1,N1), + guard_body_copies3(K,E1,J1,F1,O1), + ( is_stored_in_guard(F/G,M) -> + gen_uncond_attach_goal(F/G,R,Q,P1,_), + F1=[Q1|_], + Q1=P1 + ; + true + ), + sort_by_key(K1,L1,R1), + partner_constraint_detachments(R1,C,J1,S1), + active_constraint_detachment(H,R,A,J1,T1), + ( chr_pp_flag(debugable,on) -> + my_term_copy(O-P,J1,U1-V1), + sort_by_key([R|K1],[B|L1],W1), + sort_by_key(M1,N1,X1), + Y1='chr debug_event'(try(W1,X1,U1,V1)), + Z1='chr debug_event'(apply(W1,X1,U1,V1)), + instrument_goal(!,Y1,Z1,A2) + ; + A2=! + ), + B2=(Y:-V,H1,A2,S1,T1,O1), + add_location(B2,M,C2), + I=[C2|J]. split_by_ids([],[],_,[],[]). split_by_ids([A|B],[C|D],E,F,G) :- ( memberchk_eq(A,E) -> @@ -2397,53 +3927,68 @@ split_by_ids([A|B],[C|D],E,F,G) :- G=[C|I] ), split_by_ids(B,D,E,H,I). -simpagation_head2_code(A,B,C,D,E,F,G,H,I) :- - D=pragma(J,ids(K,L),_,_,M), - J=rule(N,_,O,P), - append(N,B,Q), - append(K,C,R), - reorder_heads(M,A,Q,R,[S|T],[U|V]), - simpagation_head2_prelude(A,S,[T,O,P],E,F,G,H,W), - extend_id(G,X), - ( memberchk_eq(U,L) -> - simpagation_universal_searches(T,V,L,[S,A],J,E,Y,Z,A1,X,B1,W,C1) +split_by_ids([],[],_,[],[],[],[]). +split_by_ids([A|B],[C|D],E,F,G,H,I) :- + ( memberchk_eq(A,E) -> + F=[C|J], + G=[A|K], + H=L, + I=M ; - W=C1, - X=B1, - Y=T, - Z=[S,A], - A1=V + F=J, + G=K, + H=[C|L], + I=[A|M] ), - universal_search_iterator_end(Z,Y,J,E,B1,C1,D1), - simpagation_head2_new_worker(Z,Y,A1,D,E,F,B1,D1,I). -simpagation_universal_searches([],[],_,A,_,_,[],A,[],B,B,C,C). -simpagation_universal_searches(A,[B|C],D,E,F,G,H,I,J,K,L,M,N) :- - A=[O|P], - inc_id(K,Q), - universal_search_iterator_end(E,A,F,G,K,M,R), - universal_search_iterator(A,E,F,G,K,R,S), - ( memberchk_eq(B,D) -> - simpagation_universal_searches(P,C,D,[O|E],F,G,H,I,J,Q,L,S,N) + split_by_ids(B,D,E,J,K,L,M). +simpagation_head2_code(A,B,C,D,E,F,G,H,I,J) :- + E=pragma(K,ids(L,M),_,_,N), + K=rule(O,_,P,Q), + append(O,C,R), + append(L,D,S), + reorder_heads(N,A,R,S,[T|U],[V|W]), + simpagation_head2_prelude(A,T,[U,P,Q],F,G,H,I,X), + extend_id(H,Y), + ( memberchk_eq(V,M) -> + simpagation_universal_searches(U,W,M,[T,A],K,F,G,Z,A1,B1,Y,C1,X,D1) ; - L=Q, - S=N, - H=P, - I=[O|E], - C=J + X=D1, + Y=C1, + Z=U, + A1=[T,A], + B1=W + ), + universal_search_iterator_end(A1,Z,K,F,G,C1,D1,E1), + simpagation_head2_worker(A1,Z,B1,B,E,F,G,C1,E1,J). +simpagation_universal_searches([],[],_,A,_,_,_,[],A,[],B,B,C,C). +simpagation_universal_searches(A,[B|C],D,E,F,G,H,I,J,K,L,M,N,O) :- + A=[P|Q], + inc_id(L,R), + universal_search_iterator_end(E,A,F,G,H,L,N,S), + universal_search_iterator(A,E,F,G,H,L,S,T), + ( memberchk_eq(B,D) -> + simpagation_universal_searches(Q,C,D,[P|E],F,G,H,I,J,K,R,M,T,O) + ; + M=R, + T=O, + I=Q, + J=[P|E], + C=K ). simpagation_head2_prelude(A,B,C,D/E,F,G,H,I) :- head_info(A,E,J,K,L,M), build_head(D,E,G,L,N), get_constraint_mode(D/E,O), - head_arg_matches(M,O,[],P,Q), - lookup_passive_head(B,[A],Q,R,S), - gen_occ_allocation(D/E,F,J,K,L,T), - extend_id(G,U), - extra_active_delegate_variables(A,[B|C],Q,V), - append([S|L],V,W), - build_head(D,E,U,W,X), - Y=(N:-P,R,!,T,X), - H=[Y|I]. + head_arg_matches(M,O,[],P,Q,[],R), + lookup_passive_head(B,[A],Q,R,S,T), + gen_occ_allocation(D/E,F,J,K,U), + extend_id(G,V), + extra_active_delegate_variables(A,[B|C],Q,W), + append([T|L],W,X), + build_head(D,E,[F|V],X,Y), + Z=(N:-P,S,!,U,Y), + add_dummy_location(Z,A1), + H=[A1|I]. extra_active_delegate_variables(A,B,C,D) :- A=..[_|E], delegate_variables(A,B,C,E,D). @@ -2456,112 +4001,173 @@ delegate_variables(A,B,C,D,E) :- intersect_eq(F,G,H), list_difference_eq(H,D,I), translate(I,C,E). -simpagation_head2_new_worker([A|B],C,D,E,F/G,H,I,J,K) :- - E=pragma(L,ids(M,_),N,_,_), - L=rule(_,_,O,P), - get_prop_inner_loop_vars(B,[A,C,O,P],Q,R,S,T), - gen_var(U), - gen_var(V), - functor(A,W,X), - gen_vars(X,Y), - head_info(A,X,Y,U,_,Z), - get_constraint_mode(W/X,A1), - head_arg_matches(Z,A1,R,B1,C1), - D1=..[suspension,_,E1,_,_,_,_|Y], - different_from_other_susps(A,U,B,T,F1), - create_get_mutable(active,E1,G1), - H1=(U=D1,G1,F1,B1), - I1=[[U|V]|Q], - build_head(F,G,I,I1,J1), - rest_heads_retrieval_and_matching(C,D,[A|B],K1,L1,C1,M1,[A|B],[U|T],[]), - split_by_ids(D,L1,M,N1,O1), - split_by_ids(D,C,M,P1,_), - gen_uncond_susps_detachments([U|N1],[A|P1],Q1), - R1=[V|Q], - build_head(F,G,I,R1,S1), - T1=[[]|Q], - build_head(F,G,I,T1,U1), - guard_body_copies2(L,M1,V1,W1), - guard_via_reschedule(K1,V1,v(J1,H1),X1), - ( W1\==true, - is_observed(F/G,H) -> - gen_uncond_attach_goal(F/G,S,Y1,Z1), - gen_state_cond_call(S,G,S1,Z1,A2), - gen_state_cond_call(S,G,U1,Z1,B2) +simpagation_head2_worker([A|B],C,D,_,E,F/G,H,I,J,K) :- + E=pragma(L,ids(M,_),N,_,O), + L=rule(_,_,P,Q), + get_prop_inner_loop_vars(B,[A,C,P,Q],R,S,T,U,V), + gen_var(W), + gen_var(X), + functor(A,Y,Z), + gen_vars(Z,A1), + head_info(A,Z,A1,W,_,B1), + get_constraint_mode(Y/Z,C1), + head_arg_matches(B1,C1,S,D1,E1,[],_), + delay_phase_end(validate_store_type_assumptions,(static_suspension_term(Y/Z,F1),get_static_suspension_field(Y/Z,F1,state,active,G1),get_static_suspension_term_field(arguments,Y/Z,F1,A1))), + different_from_other_susps(A,W,B,V,H1), + I1=(W=F1,G1,H1,D1), + J1=[[W|X]|R], + build_head(F,G,[H|I],J1,K1), + guard_splitting(L,L1), + ( is_stored_in_guard(F/G,O) -> + M1=[_|L1] ; - Y1=true, - A2=S1, - B2=U1 + M1=L1 + ), + guard_via_reschedule_new(C,M1,[A|B],N1,O1,P1), + rest_heads_retrieval_and_matching(C,D,[A|B],O1,Q1,E1,R1,[A|B],[W|V],[]), + split_by_ids(D,Q1,M,S1,T1), + split_by_ids(D,C,M,U1,_), + partner_constraint_detachments([W|S1],[A|U1],R1,V1), + W1=[X|R], + build_head(F,G,[H|I],W1,X1), + Y1=[[]|R], + build_head(F,G,[H|I],Y1,Z1), + guard_body_copies3(L,M1,R1,N1,A2), + ( is_stored_in_guard(F/G,O) -> + N1=[B2|_] + ; + true + ), + ( is_observed(F/G,H) -> + gen_uncond_attach_goal(F/G,T,U,C2,D2), + gen_state_cond_call(T,F/G,X1,D2,E2), + gen_state_cond_call(T,F/G,Z1,D2,F2) + ; + C2=true, + E2=X1, + F2=Z1 ), ( chr_pp_flag(debugable,on) -> - my_term_copy(O-P,R,C2-D2), - E2='chr debug_event'(try([U|N1],[S|O1],C2,D2)), - F2='chr debug_event'(apply([U|N1],[S|O1],C2,D2)) + my_term_copy(P-Q,S,G2-H2), + I2='chr debug_event'(try([W|S1],[T|T1],G2,H2)), + J2='chr debug_event'(apply([W|S1],[T|T1],G2,H2)) ; - E2=true, - F2=true + I2=true, + J2=true ), - ( member(unique(_,G2),N), - check_unique_keys(G2,R) -> - H2=(J1:-H1->(X1,E2->F2,Q1,Y1,W1,B2;U1);S1) + ( is_stored_in_guard(F/G,O) -> + B2=C2, + K2=true ; - H2=(J1:-H1,X1,E2->F2,Q1,Y1,W1,A2;S1) + B2=true, + K2=C2 ), - J=[H2|K]. + ( member(unique(_,L2),N), + check_unique_keys(L2,S) -> + M2=(K1:-I1->(P1,I2->J2,V1,K2,A2,F2;Z1);X1) + ; + M2=(K1:-I1,P1,I2->J2,V1,K2,A2,E2;X1) + ), + add_location(M2,O,N2), + J=[N2|K]. gen_state_cond_call(A,B,C,D,E) :- - length(F,B), - G=..[suspension,_,H,_,I,_,_|F], - create_get_mutable(active,H,J), - create_get_mutable(D,I,K), - E=(A=G,J,K->'chr update_mutable'(inactive,H),C;true). -propagation_code(A,B,C,D,E,F,G,H,I,J) :- - ( B==[] -> - propagation_single_headed(A,D,E,F,G,H,I,J) + ( may_trigger(B) -> + does_use_field(B,generation), + delay_phase_end(validate_store_type_assumptions,(static_suspension_term(B,F),get_update_static_suspension_field(B,A,F,state,active,inactive,G,H),get_static_suspension_field(B,F,generation,D,I),get_static_suspension_term_field(arguments,B,F,J))) ; - propagation_multi_headed(A,B,C,D,E,F,G,H,I,J) + delay_phase_end(validate_store_type_assumptions,(static_suspension_term(B,F),get_update_static_suspension_field(B,A,F,state,active,inactive,G,H),get_static_suspension_term_field(arguments,B,F,J))), + I=true + ), + E=(A=F,G,I->H,C;true). +propagation_code(A,B,C,D,E,F,G,H,I,J,K) :- + ( C==[] -> + propagation_single_headed(A,B,E,F,G,H,I,J,K) + ; + propagation_multi_headed(A,C,D,E,F,G,H,I,J,K) ). -propagation_single_headed(A,B,C,D/E,F,G,H,I) :- +propagation_single_headed(A,_,B,C,D/E,F,G,H,I) :- head_info(A,E,J,K,L,M), build_head(D,E,G,L,N), inc_id(G,O), build_head(D,E,O,L,P), get_constraint_mode(D/E,Q), - head_arg_matches(M,Q,[],R,S), + head_arg_matches(M,Q,[],R,S,[],_), guard_body_copies(B,S,T,U), - gen_occ_allocation(D/E,F,J,K,L,V), - W=P, - ( U\==true, - is_observed(D/E,F) -> - gen_uncond_attach_goal(D/E,K,X,Y), - gen_state_cond_call(K,E,W,Y,Z) - ; - X=true, - Z=W - ), + V=P, ( unconditional_occurrence(D/E,F), chr_pp_flag(late_allocation,on) -> - A1=true + W=true ; - A1=! + W=! ), + B=rule(_,_,X,Y), ( chr_pp_flag(debugable,on) -> - B=rule(_,_,B1,C1), - my_term_copy(B1-C1,S,D1-E1), - F1='chr debug_event'(try([],[K],D1,E1)), - G1='chr debug_event'(apply([],[K],D1,E1)), - instrument_goal(A1,F1,G1,H1) + my_term_copy(X-Y,S,Z-A1), + B1='chr debug_event'(try([],[K],Z,A1)), + C1='chr debug_event'(apply([],[K],Z,A1)), + instrument_goal(W,B1,C1,D1) ; - H1=A1 + D1=W ), - ( may_trigger(D/E) -> - I1='chr novel_production'(K,C), - J1='chr extend_history'(K,C) + ( may_trigger(D/E), + \+has_no_history(C) -> + use_auxiliary_predicate(novel_production), + use_auxiliary_predicate(extend_history), + does_use_history(D/E,F), + gen_occ_allocation(D/E,F,J,K,E1), + ( named_history(C,F1,G1) -> + ( G1==[] -> + empty_named_history_novel_production(F1,H1), + empty_named_history_extend_history(F1,I1) + ; + J1=F1 + ) + ; + J1=C + ), + ( var(H1) -> + H1='$novel_production'(K,J1), + I1='$extend_history'(K,J1) + ; + true + ), + ( is_observed(D/E,F) -> + gen_uncond_attach_goal(D/E,K,J,K1,L1), + gen_state_cond_call(K,D/E,V,L1,M1) + ; + K1=true, + M1=V + ) ; + E1=true, + H1=true, I1=true, - J1=true + ( is_observed(D/E,F) -> + get_allocation_occurrence(D/E,N1), + ( F==N1 -> + gen_insert_constraint_internal_goal(D/E,K1,L,J,K), + L1=0 + ; + K1=(O1,P1), + gen_occ_allocation(D/E,F,J,K,O1), + gen_uncond_attach_goal(D/E,K,J,P1,L1) + ), + gen_state_cond_call(K,D/E,V,L1,M1) + ; + gen_occ_allocation(D/E,F,J,K,K1), + M1=V + ) ), - K1=(N:-R,V,I1,T,H1,J1,X,U,Z), - H=[K1|I]. + ( is_stored_in_guard(D/E,C) -> + Q1=K1, + R1=true + ; + Q1=true, + R1=K1 + ), + S1=(N:-R,E1,H1,Q1,T,D1,I1,R1,U,M1), + add_location(S1,C,T1), + H=[T1|I]. propagation_multi_headed(A,B,C,D,E,F,G,H,I,J) :- B=[K|L], propagation_prelude(A,B,D,F,G,H,I,M), @@ -2571,99 +4177,165 @@ propagation_prelude(A,[B|C],D,E/F,G,H,I,J) :- head_info(A,F,K,L,M,N), build_head(E,F,H,M,O), get_constraint_mode(E/F,P), - head_arg_matches(N,P,[],Q,R), - D=rule(_,_,S,T), - extra_active_delegate_variables(A,[B,C,S,T],R,U), - lookup_passive_head(B,[A],R,V,W), - gen_occ_allocation(E/F,G,K,L,M,X), - extend_id(H,Y), - append([W|M],U,Z), - build_head(E,F,Y,Z,A1), - B1=A1, - C1=(O:-Q,V,!,X,B1), - I=[C1|J]. + head_arg_matches(N,P,[],Q,R,[],S), + D=rule(_,_,T,U), + extra_active_delegate_variables(A,[B,C,T,U],R,V), + lookup_passive_head(B,[A],R,S,W,X), + gen_occ_allocation(E/F,G,K,L,Y), + extend_id(H,Z), + append([X|M],V,A1), + build_head(E,F,[G|Z],A1,B1), + C1=B1, + D1=(O:-Q,W,!,Y,C1), + add_dummy_location(D1,E1), + I=[E1|J]. propagation_nested_code([],[A|B],C,D,E,F,G,H,I,J) :- - universal_search_iterator_end([A|B],[],D,F,H,I,K), + universal_search_iterator_end([A|B],[],D,F,G,H,I,K), propagation_body(A,B,C,D,E,F,G,H,K,J). propagation_nested_code([A|B],C,D,E,F,G,H,I,J,K) :- - universal_search_iterator_end(C,[A|B],E,G,I,J,L), - universal_search_iterator([A|B],C,E,G,I,L,M), + universal_search_iterator_end(C,[A|B],E,G,H,I,J,L), + universal_search_iterator([A|B],C,E,G,H,I,L,M), inc_id(I,N), propagation_nested_code(B,[A|C],D,E,F,G,H,N,M,K). +check_fd_lookup_condition(A,B,_,_) :- + get_store_type(A/B,global_singleton), + !. +check_fd_lookup_condition(A,B,C,D) :- + \+may_trigger(A/B), + get_functional_dependency(A/B,1,E,F), + copy_term(E-F,C-G), + term_variables(D,H), + intersect_eq(G,H,G), + !. propagation_body(A,B,C,D,E,F/G,H,I,J,K) :- - D=rule(_,_,L,M), - get_prop_inner_loop_vars(B,[A,L,M],N,O,P,Q), - gen_var(R), - gen_var(S), - functor(A,T,U), - gen_vars(U,V), - W=..[suspension,_,X,_,_,_,_|V], - create_get_mutable(active,X,Y), - Z=(R=W,Y), - A1=[[R|S]|N], - build_head(F,G,I,A1,B1), - C1=[S|N], - build_head(F,G,I,C1,D1), - E1=D1, - A=..[_|F1], - pairup(F1,V,G1), - get_constraint_mode(T/U,H1), - head_arg_matches(G1,H1,O,I1,J1), - different_from_other_susps(A,R,B,Q,K1), - guard_body_copies(D,J1,L1,M1), - ( M1\==true, - is_observed(F/G,H) -> - gen_uncond_attach_goal(F/G,P,N1,O1), - gen_state_cond_call(P,G,E1,O1,P1) + D=rule(_,L,M,N), + gen_var_susp_list_for_b(B,[A,M,N],O,P,Q,R,S), + flatten(P,T), + init(R,U), + last(R,V), + gen_var(W), + gen_var(X), + functor(A,Y,Z), + gen_vars(Z,A1), + delay_phase_end(validate_store_type_assumptions,(static_suspension_term(Y/Z,B1),get_static_suspension_field(Y/Z,B1,state,active,C1),get_static_suspension_term_field(arguments,Y/Z,B1,A1))), + D1=(W=B1,C1), + E1=[[W|X]|T], + build_head(F,G,[H|I],E1,F1), + ( check_fd_lookup_condition(Y,Z,A,B) -> + universal_search_iterator_failure_vars(B,I,P,Q,S,G1,H1), + I1=G1 ; - N1=true, - P1=E1 + I1=[X|T], + H1=I ), - ( is_least_occurrence(E) -> - Q1=true, - R1=true + ( H1=[_] -> + J1=H1 ; - get_occurrence(F/G,H,_,S1), - history_susps(C,[R|Q],P,S1,T1), - U1=..[t,E|T1], - bagof('chr novel_production'(V1,W1),(lists:member(V1,T1),W1=X1),Y1), - list2conj(Y1,Z1), - Q1=(X1=U1,Z1), - R1='chr extend_history'(P,X1) + J1=[H|H1] + ), + build_head(F,G,J1,I1,K1), + L1=K1, + A=..[_|M1], + pairup(M1,A1,N1), + get_constraint_mode(Y/Z,O1), + head_arg_matches(N1,O1,O,P1,Q1), + different_from_other_susps(A,W,B,U,R1), + guard_body_copies(D,Q1,S1,T1), + get_occurrence(F/G,H,_,U1), + ( is_observed(F/G,H) -> + init(Q,V1), + gen_uncond_attach_goal(F/G,V,V1,W1,X1), + gen_state_cond_call(V,F/G,L1,X1,Y1) + ; + W1=true, + Y1=L1 + ), + ( + ( + is_least_occurrence(E) + ; + has_no_history(E) + ) -> + Z1=true, + A2=true + ; + ( \+may_trigger(F/G), + maplist(is_passive(E),C) -> + Z1=true, + A2=true + ) + ; + get_occurrence(F/G,H,_,U1), + use_auxiliary_predicate(novel_production), + use_auxiliary_predicate(extend_history), + does_use_history(F/G,H), + ( named_history(E,B2,C2) -> + ( C2==[] -> + empty_named_history_novel_production(B2,Z1), + empty_named_history_extend_history(B2,A2) + ; + reverse([W|U],D2), + named_history_susps(C2,[U1|C],[V|D2],E2), + E2=[F2|_], + ( length(C2,1) -> + A2='$extend_history'(F2,B2), + Z1='$novel_production'(F2,B2) + ; + findall(G2,(member(H2,C2),get_occurrence_from_id(G2,_,E,H2)),I2), + J2=..[t,B2|E2] + ) + ) + ; + F2=V, + maplist(extract_symbol,L,I2), + sort([U1|C],C2), + history_susps(C,[W|U],V,U1,E2), + J2=..[t,E|E2] + ), + ( var(Z1) -> + novel_production_calls(I2,C2,E2,E,K2,L2), + A2='$extend_history'(F2,K2), + Z1=(K2=J2,L2) + ; + true + ) ), ( chr_pp_flag(debugable,on) -> - D=rule(_,_,L,M), - my_term_copy(L-M,J1,A2-B2), - C2='chr debug_event'(try([],[P,R|Q],A2,B2)), - D2='chr debug_event'(apply([],[P,R|Q],A2,B2)) + D=rule(_,_,M,N), + my_term_copy(M-N,Q1,M2-N2), + get_occurrence(F/G,H,_,U1), + sort_by_key([V,W|U],[U1|C],O2), + P2='chr debug_event'(try([],O2,M2,N2)), + Q2='chr debug_event'(apply([],O2,M2,N2)) ; - C2=true, - D2=true + P2=true, + Q2=true ), - E2=(B1:-Z,K1,I1,Q1,L1,C2->D2,R1,N1,M1,P1;E1), - J=[E2|K]. + ( is_stored_in_guard(F/G,E) -> + R2=W1, + S2=true + ; + R2=true, + S2=W1 + ), + T2=(F1:-D1,R1,P1,Z1,R2,S1,P2->Q2,A2,S2,T1,Y1;L1), + add_location(T2,E,U2), + J=[U2|K]. +extract_symbol(A,B/C) :- + functor(A,B,C). +novel_production_calls([],[],[],_,_,true). +novel_production_calls([A|B],[C|D],[E|F],G,H,(I,J)) :- + get_occurrence_from_id(A,K,G,C), + delay_phase_end(validate_store_type_assumptions,novel_production_call(A,K,'$novel_production'(E,H),I)), + novel_production_calls(B,D,F,G,H,J). history_susps(A,B,C,D,E) :- reverse(B,F), - pairup([D|A],[C|F],G), - sort(G,H), - pairup(_,E,H). -get_prop_inner_loop_vars([A],B,C,D,E,[]) :- + sort_by_key([C|F],[D|A],E). +named_history_susps([],_,_,[]). +named_history_susps([A|B],C,D,[E|F]) :- + select2(A,E,C,D,G,H), !, - functor(A,F,G), - head_info(A,G,_,E,H,I), - get_constraint_mode(F/G,J), - head_arg_matches(I,J,[],_,D), - extra_active_delegate_variables(A,B,D,K), - append(H,K,C). -get_prop_inner_loop_vars([A|B],C,D,E,F,[G|H]) :- - get_prop_inner_loop_vars(B,[A|C],I,J,F,H), - functor(A,K,L), - gen_var(M), - head_info(A,L,_,G,_,N), - get_constraint_mode(K/L,O), - head_arg_matches(N,O,J,_,E), - passive_delegate_variables(A,B,C,E,P), - append(P,[G,M|I],D). + named_history_susps(B,G,H,F). gen_var_susp_list_for([A],B,C,D,E,F) :- !, functor(A,G,H), @@ -2681,25 +4353,44 @@ gen_var_susp_list_for([A|B],C,D,E,F,G) :- head_arg_matches(L,M,H,_,D), passive_delegate_variables(A,B,C,D,N), append(N,[K,G|F],E). -pre_vars_and_susps([A],B,C,D,[]) :- +gen_var_susp_list_for_b([A],B,C,[D],E,[F],[]) :- !, - functor(A,E,F), - head_info(A,F,_,_,G,H), - get_constraint_mode(E/F,I), - head_arg_matches(H,I,[],_,D), - extra_active_delegate_variables(A,B,D,J), - append(G,J,C). -pre_vars_and_susps([A|B],C,D,E,[F|G]) :- - pre_vars_and_susps(B,[A|C],H,I,G), - functor(A,J,K), - gen_var(L), - head_info(A,K,_,F,_,M), - get_constraint_mode(J/K,N), - head_arg_matches(M,N,I,_,E), - passive_delegate_variables(A,B,C,E,O), - append(O,[F,L|H],D). + functor(A,G,H), + head_info(A,H,_,F,E,I), + get_constraint_mode(G/H,J), + head_arg_matches(I,J,[],_,C), + extra_active_delegate_variables(A,B,C,K), + append(E,K,D). +gen_var_susp_list_for_b([A|B],C,D,[E|F],G,[H|I],[J|K]) :- + gen_var_susp_list_for_b(B,[A|C],L,F,G,I,K), + functor(A,M,N), + gen_var(J), + head_info(A,N,_,H,_,O), + get_constraint_mode(M/N,P), + head_arg_matches(O,P,L,_,D), + passive_delegate_variables(A,B,C,D,Q), + append(Q,[H,J],E). +get_prop_inner_loop_vars([A],B,C,D,E,F,[]) :- + !, + functor(A,G,H), + head_info(A,H,F,E,I,J), + get_constraint_mode(G/H,K), + head_arg_matches(J,K,[],_,D), + extra_active_delegate_variables(A,B,D,L), + append(I,L,C). +get_prop_inner_loop_vars([A|B],C,D,E,F,G,[H|I]) :- + get_prop_inner_loop_vars(B,[A|C],J,K,F,G,I), + functor(A,L,M), + gen_var(N), + head_info(A,M,_,H,_,O), + get_constraint_mode(L/M,P), + head_arg_matches(O,P,K,_,E), + passive_delegate_variables(A,B,C,E,Q), + append(Q,[H,N|J],D). reorder_heads(A,B,C,D,E,F) :- - ( chr_pp_flag(reorder_heads,on) -> + ( chr_pp_flag(reorder_heads,on), + length(C,G), + G=<6 -> reorder_heads_main(A,B,C,D,E,F) ; E=C, @@ -2725,42 +4416,62 @@ expand_data(A,B,C) :- order_score(A,B,C,D,E,F) :- functor(A,G,H), get_store_type(G/H,I), - order_score(I,A,B,C,D,E,F). -order_score(default,A,_,B,C,_,D) :- - term_variables(A,E), - term_variables(C,F), - order_score_vars(E,B,F,D). -order_score(multi_hash(A),B,_,C,_,_,D) :- - order_score_indexes(A,B,C,0,D). -order_score(global_ground,A,_,_,_,_,B) :- - functor(A,_,C), - ( _==[] -> - B=10 + order_score(I,A,B,C,D,E,99999,F). +order_score(default,A,_,B,C,_,D,E) :- + term_variables(A,F), + term_variables(C,G), + ground_vars([A],H), + list_difference_eq(F,H,I), + order_score_vars(I,B,G,J), + E is min(D,J). +order_score(multi_inthash(A),B,_,C,_,_,D,E) :- + ( D=<100 -> + E=D ; - ( C==0 -> - B=1000 - ) - ; - ( C>0 -> - B=10000 - ) + order_score_indexes(A,B,C,E) ). -order_score(global_singleton,_,_,_,_,_,A) :- - A=1. -order_score(multi_store(A),B,C,D,E,F,G) :- - find_with_var_identity(H,t(B,D,E),(lists:member(I,A),chr_translate:order_score(I,B,C,D,E,F,H)),J), - min_list(J,G). -order_score_indexes([],_,_,A,B) :- - A>0, - B=100. -order_score_indexes([A|B],C,D,E,F) :- - multi_hash_key_args(A,C,G), - ( forall(H,G,memberchk_eq(H,D)) -> - I is E+1 +order_score(multi_hash(A),B,_,C,_,_,D,E) :- + ( D=<100 -> + E=D ; - I=E + order_score_indexes(A,B,C,E) + ). +order_score(global_ground,A,_,B,C,_,D,E) :- + term_variables(A,F), + term_variables(C,G), + order_score_vars(F,B,G,H), + I is H*200, + E is min(D,I). +order_score(var_assoc_store(_,_),_,_,_,_,_,_,1). +order_score(global_singleton,_,_,_,_,_,_,A) :- + A=1. +order_score(multi_store(A),B,C,D,E,F,G,H) :- + multi_order_score(A,B,C,D,E,F,G,H). +multi_order_score([],_,_,_,_,_,A,A). +multi_order_score([A|B],C,D,E,F,G,H,I) :- + ( order_score(A,C,D,E,F,G,H,J) -> + true + ; + J=H ), - order_score_indexes(B,C,D,I,F). + multi_order_score(B,C,D,E,F,G,J,I). +order_score(identifier_store(_),_,_,_,_,_,A,B) :- + B is min(A,10). +order_score(type_indexed_identifier_store(_,_),_,_,_,_,_,A,B) :- + B is min(A,10). +order_score_indexes(A,B,C,D) :- + copy_term_nat(B+C,E+F), + numbervars(F,0,_), + order_score_indexes(A,E,D). +order_score_indexes([A|B],C,D) :- + multi_hash_key_args(A,C,E), + ( maplist(ground,E) -> + D=100 + ; + order_score_indexes(B,C,D) + ). +memberchk_eq_flip(A,B) :- + memberchk_eq(B,A). order_score_vars(A,B,C,D) :- order_score_count_vars(A,B,C,E-F-G), ( E-F-G==0-0-0 -> @@ -2771,10 +4482,10 @@ order_score_vars(A,B,C,D) :- ) ; ( F>0 -> - D is max(10-F,1)*10 + D is max(10-F,1)*100 ) ; - D is max(10-G,1)*100 + D is max(10-G,1)*1000 ). order_score_count_vars([],_,_,0-0-0). order_score_count_vars([A|B],C,D,E-F-G) :- @@ -2794,6 +4505,8 @@ order_score_count_vars([A|B],C,D,E-F-G) :- E=H, F=I ). +create_get_mutable_ref(A,B,C) :- + C=(B=mutable(A)). create_get_mutable(A,B,C) :- B=mutable(A), C=true. @@ -2818,7 +4531,11 @@ build_head(A,B,C,D,E) :- chr_pp_flag(debugable,on) ; is_stored(A/B), - has_active_occurrence(A/B), + ( + has_active_occurrence(A/B) + ; + chr_pp_flag(late_allocation,off) + ), ( may_trigger(A/B) ; @@ -2839,8 +4556,8 @@ buildName(A,B,C,D) :- ; once((is_stored(A/B),(has_active_occurrence(A/B);chr_pp_flag(late_allocation,off)),(may_trigger(A/B);get_allocation_occurrence(A/B,E),get_max_occurrence(A/B,F),F>=E);C\=[0])) ) -> - atom_concat(A,/,G), - atom_concat(G,B,H), + atom_concat(A,'___',G), + atomic_concat(G,B,H), buildName_(C,H,D) ; D=A @@ -2849,13 +4566,10 @@ buildName_([],A,A). buildName_([A|B],C,D) :- buildName_(B,C,E), atom_concat(E,'__',F), - atom_concat(F,A,D). + atomic_concat(F,A,D). vars_susp(A,B,C,D) :- length(B,A), append(B,[C],D). -make_attr(A,B,C,D) :- - length(C,A), - D=..[v,B|C]. or_pattern(A,B) :- C is A-1, B is 1<true;D=[]). +singleton_attr(A,B,C,D) :- + chr_pp_flag(dynattr,off), + !, + or_pattern(C,E), + make_attr(A,E,F,D), + nth1(C,F,[B]), + chr_delete(F,[B],G), + set_elems(G,[]). +singleton_attr(_,A,B,C) :- + C=[B-[A]]. +add_attr(A,B,C,D,E,F) :- + chr_pp_flag(dynattr,off), + !, + make_attr(A,G,H,I), + or_pattern(C,J), + nth1(C,H,K), + substitute_eq(K,H,[B|K],L), + make_attr(A,G,L,M), + substitute_eq(K,H,[B],N), + make_attr(A,O,N,P), + E=(D=I,(G/\J=:=J->F=M;O is G\/J,F=P)), + !. +add_attr(_,A,B,C,D,E) :- + D=('chr select'(C,B-F,G)->E=[B-[A|F]|G];E=[B-[A]|C]). +rem_attr(A,B,C,D,E,F) :- + chr_pp_flag(dynattr,off), + !, + or_pattern(D,G), + and_pattern(D,H), + make_attr(A,I,J,K), + nth1(D,J,L), + substitute_eq(L,J,[],M), + make_attr(A,N,M,O), + substitute_eq(L,J,P,Q), + make_attr(A,I,Q,R), + get_target_module(S), + F=(E=K,(I/\G=:=G->'chr sbag_del_element'(L,C,P),(P==[]->N is I/\H,(N==0->del_attr(B,S);put_attr(B,S,O));put_attr(B,S,R));true)), + !. +rem_attr(_,A,B,C,D,E) :- + get_target_module(F), + E=('chr select'(D,C-G,H)->'chr sbag_del_element'(G,B,I),(I==[]->(H==[]->del_attr(A,F);put_attr(A,F,H));put_attr(A,F,[C-I|H]));true). +merge_attributes(A,B,C,D,E) :- + chr_pp_flag(dynattr,off), + !, + make_attr(A,F,G,H), + merge_attributes2(A,F,G,C,I,E), + D=(B=H,I). +merge_attributes(_,A,B,C,D) :- + C=(sort(A,E),sort(B,F),'chr new_merge_attributes'(E,F,D)). +merge_attributes2(A,B,C,D,E,F) :- + make_attr(A,G,H,I), + bagof(J,K^L^M^N^(member2(C,H,K-L),J=(sort(L,M),'chr merge_attributes'(K,M,N))),O), + list2conj(O,P), + bagof(Q,R^S^T^member((R,'chr merge_attributes'(S,T,Q)),O),U), + make_attr(A,V,U,F), + E=(D=I,P,V is B\/G). lookup_passive_head(A,B,C,D,E) :- functor(A,F,G), get_store_type(F/G,H), - lookup_passive_head(H,A,B,C,D,E). -lookup_passive_head(default,A,B,C,D,E) :- - passive_head_via(A,B,[],C,D,F,G), - instantiate_pattern_goals(G), - get_max_constraint_index(H), - ( H==1 -> - E=F - ; - functor(A,I,J), - get_constraint_index(I/J,K), - make_attr(H,_,L,F), - nth(K,L,E) - ). -lookup_passive_head(multi_hash(A),B,_,C,D,E) :- - once((member(F,A),multi_hash_key_args(F,B,G),translate(G,C,H))), - ( H=[I] -> - true - ; - I=..[k|H] - ), - functor(B,J,K), - multi_hash_via_lookup_name(J/K,F,L), - D=..[L,I,E], - update_store_type(J/K,multi_hash([F])). -lookup_passive_head(global_ground,A,_,_,B,C) :- + lookup_passive_head(H,A,B,C,[],D,E). +lookup_passive_head(A,B,C,D,E,F) :- + functor(A,G,H), + get_store_type(G/H,I), + lookup_passive_head(I,A,B,C,D,E,F). +lookup_passive_head(default,A,B,C,_,D,E) :- + functor(A,F,G), + passive_head_via(A,B,C,D,E), + update_store_type(F/G,default). +lookup_passive_head(multi_inthash(A),B,_,C,D,E,F) :- + hash_lookup_passive_head(inthash,A,B,C,D,E,F,_). +lookup_passive_head(multi_hash(A),B,_,C,D,E,F) :- + hash_lookup_passive_head(hash,A,B,C,D,E,F,_). +lookup_passive_head(global_ground,A,_,_,_,B,C) :- functor(A,D,E), global_ground_store_name(D/E,F), - B=nb_getval(F,C), + make_get_store_goal(F,C,B), update_store_type(D/E,global_ground). -lookup_passive_head(global_singleton,A,_,_,B,C) :- +lookup_passive_head(var_assoc_store(A,B),C,_,D,_,E,F) :- + arg(A,C,G), + arg(B,C,H), + translate([G,H],D,[I,J]), + get_target_module(K), + E=(get_attr(I,K,L),lookup_assoc_store(L,J,F)). +lookup_passive_head(global_singleton,A,_,_,_,B,C) :- functor(A,D,E), global_singleton_store_name(D/E,F), - B=(nb_getval(F,G),G\==[],C=[G]), + make_get_store_goal(F,G,H), + B=(H,G\==[],C=[G]), update_store_type(D/E,global_singleton). -lookup_passive_head(multi_store(A),B,C,D,E,F) :- - once((member(G,A),lookup_passive_head(G,B,C,D,E,F))). -existential_lookup(global_singleton,A,_,_,B,_,C,D,E,E) :- +lookup_passive_head(multi_store(A),B,C,D,E,F,G) :- + once((member(H,A),lookup_passive_head(H,B,C,D,E,F,G))). +lookup_passive_head(identifier_store(A),B,_,C,_,D,E) :- + functor(B,F,G), + arg(A,B,H), + translate([H],C,[I]), + delay_phase_end(validate_store_type_assumptions,identifier_lookup(F/G,A,E,I,D)), + update_store_type(F/G,identifier_store(A)), + get_identifier_index(F/G,A,_). +lookup_passive_head(type_indexed_identifier_store(A,B),C,_,D,_,E,F) :- + functor(C,G,H), + arg(A,C,I), + ( var(I) -> + translate([I],D,[J]), + E=K + ; + ( ground(I), + I='$chr_identifier_match'(L,_) -> + lookup_identifier_atom(B,L,J,M), + E=(M,K) + ) + ), + delay_phase_end(validate_store_type_assumptions,type_indexed_identifier_lookup(G/H,A,B,F,J,K)), + update_store_type(G/H,type_indexed_identifier_store(A,B)), + get_type_indexed_identifier_index(B,G/H,A,_). +identifier_lookup(A,B,C,D,E) :- + get_identifier_size(F), + functor(G,struct,F), + get_identifier_index(A,B,H), + arg(H,G,C), + E=(D=G). +type_indexed_identifier_lookup(A,B,C,D,E,F) :- + type_indexed_identifier_structure(C,G), + get_type_indexed_identifier_index(C,A,B,H), + arg(H,G,D), + F=(E=G). +hash_lookup_passive_head(A,B,C,D,E,F,G,H) :- + pick_hash_index(B,C,D,H,I,J), + ( J=[K] -> + true + ; + K=..[k|J] + ), + functor(C,L,M), + multi_hash_lookup_goal(L/M,A,H,K,G,N), + check_ground(E,I,O), + my_term_copy(O,D,P), + F=(P,N), + ( A==inthash -> + update_store_type(L/M,multi_inthash([H])) + ; + update_store_type(L/M,multi_hash([H])) + ). +pick_hash_index(A,B,C,D,E,F) :- + member(D,A), + multi_hash_key_args(D,B,E), + key_in_scope(E,C,F), + !. +key_in_scope([],_,[]). +key_in_scope([A|B],C,[D|E]) :- + term_variables(A,F), + translate(F,C,G), + copy_term(A/F,D/G), + key_in_scope(B,C,E). +existential_lookup(var_assoc_store(A,B),C,D,E,F,G,H,I,J,J) :- + !, + lookup_passive_head(var_assoc_store(A,B),C,D,E,F,K,L), + sbag_member_call(I,L,M), + functor(C,N,O), + delay_phase_end(validate_store_type_assumptions,(static_suspension_term(N/O,G),get_static_suspension_field(N/O,G,state,active,P))), + H=(K,M,I=G,P). +existential_lookup(global_singleton,A,_,_,_,B,C,D,E,E) :- !, functor(A,F,G), global_singleton_store_name(F/G,H), - C=(nb_getval(H,D),D\==[],D=B), + make_get_store_goal(H,D,I), + C=(I,D\==[],D=B), update_store_type(F/G,global_singleton). existential_lookup(multi_store(A),B,C,D,E,F,G,H,I,J) :- !, once((member(K,A),existential_lookup(K,B,C,D,E,F,G,H,I,J))). +existential_lookup(multi_inthash(A),B,_,C,D,E,F,G,H,I) :- + !, + existential_hash_lookup(inthash,A,B,C,D,E,F,G,H,I). existential_lookup(multi_hash(A),B,_,C,D,E,F,G,H,I) :- !, - once((member(J,A),multi_hash_key_args(J,B,K),translate(K,C,L))), - ( L=[M] -> - true + existential_hash_lookup(hash,A,B,C,D,E,F,G,H,I). +existential_lookup(identifier_store(A),B,C,D,E,F,G,H,I,J) :- + !, + lookup_passive_head(identifier_store(A),B,C,D,E,K,L), + hash_index_filter(I,A,J), + functor(B,M,N), + ( check_fd_lookup_condition(M,N,B,_) -> + O=(L=[H]) ; - M=..[k|L] + sbag_member_call(H,L,O) ), - functor(B,N,O), - multi_hash_via_lookup_name(N/O,J,P), - Q=..[P,M,R], - create_get_mutable(active,E,S), - F=(Q,'chr sbag_member'(G,R),G=D,S), - hash_index_filter(H,J,I), - update_store_type(N/O,multi_hash([J])). + delay_phase_end(validate_store_type_assumptions,(static_suspension_term(M/N,F),get_static_suspension_field(M/N,F,state,active,P))), + G=(K,O,H=F,P). +existential_lookup(type_indexed_identifier_store(A,B),C,D,E,F,G,H,I,J,K) :- + !, + lookup_passive_head(type_indexed_identifier_store(A,B),C,D,E,F,L,M), + hash_index_filter(J,A,K), + functor(C,N,O), + ( check_fd_lookup_condition(N,O,C,_) -> + P=(M=[I]) + ; + sbag_member_call(I,M,P) + ), + delay_phase_end(validate_store_type_assumptions,(static_suspension_term(N/O,G),get_static_suspension_field(N/O,G,state,active,Q))), + H=(L,P,I=G,Q). existential_lookup(A,B,C,D,E,F,G,H,I,I) :- - lookup_passive_head(A,B,C,D,J,K), - create_get_mutable(active,F,L), - G=(J,'chr sbag_member'(H,K),H=E,L). -hash_index_filter(A,B,C) :- - ( integer(B) -> - D=[B] + lookup_passive_head(A,B,C,D,E,J,K), + sbag_member_call(H,K,L), + functor(B,M,N), + delay_phase_end(validate_store_type_assumptions,(static_suspension_term(M/N,F),get_static_suspension_field(M/N,F,state,active,O))), + G=(J,L,H=F,O). +existential_hash_lookup(A,B,C,D,E,F,G,H,I,J) :- + hash_lookup_passive_head(A,B,C,D,E,K,L,M), + hash_index_filter(I,M,J), + functor(C,N,O), + ( check_fd_lookup_condition(N,O,C,_) -> + P=(L=[H]) ; - D=B + sbag_member_call(H,L,P) ), - hash_index_filter(A,D,1,C). + delay_phase_end(validate_store_type_assumptions,(static_suspension_term(N/O,F),get_static_suspension_field(N/O,F,state,active,Q))), + G=(K,P,H=F,Q). +hash_index_filter(A,B,C) :- + hash_index_filter(A,B,1,C). hash_index_filter([],_,_,[]). hash_index_filter([A|B],C,D,E) :- ( C=[F|G] -> @@ -2948,7 +4826,7 @@ hash_index_filter([A|B],C,D,E) :- hash_index_filter(B,[F|G],H,I) ; ( F==D -> - E=I, + E=[silent(A)|I], hash_index_filter(B,G,H,I) ) ) @@ -2957,31 +4835,130 @@ hash_index_filter([A|B],C,D,E) :- ). assume_constraint_stores([]). assume_constraint_stores([A|B]) :- - ( \+may_trigger(A), + ( chr_pp_flag(debugable,off), + ( + only_ground_indexed_arguments(A) + ; + chr_pp_flag(mixed_stores,on) + ), is_stored(A), get_store_type(A,default) -> get_indexed_arguments(A,C), - findall(D,(sublist(D,C),D\==[]),E), - ( get_functional_dependency(A,1,F,G), - all_distinct_var_args(F), - G==[] -> + get_constraint_mode(A,D), + aggregate_all(bag(E)-count,(member(E,C),nth1(E,D,+)),F-G), + ( G>10 -> + findall([E],member(E,F),H) + ; + findall(E,(sublist(E,F),E\==[]),I), + predsort(longer_list,I,H) + ), + ( get_functional_dependency(A,1,J,K), + all_distinct_var_args(J), + K==[] -> assumed_store_type(A,global_singleton) ; - assumed_store_type(A,multi_store([multi_hash(E),global_ground])) + ( + ( + only_ground_indexed_arguments(A) + ; + G>0 + ) -> + get_constraint_type_det(A,L), + partition_indexes(H,L,M,N,O,P), + ( N=[] -> + Q=R + ; + Q=[multi_inthash(N)|R] + ), + ( M=[] -> + R=S + ; + R=[multi_hash(M)|S] + ), + ( O=[] -> + S=T + ; + maplist(wrap_in_functor(identifier_store),O,U), + append(U,T,S) + ), + append(P,V,T), + ( only_ground_indexed_arguments(A) -> + V=[global_ground] + ; + V=[default] + ), + assumed_store_type(A,multi_store(Q)) + ) + ; + true ) ; true ), assume_constraint_stores(B). +partition_indexes([],_,[],[],[],[]). +partition_indexes([A|B],C,D,E,F,G) :- + ( A=[H], + nth1(H,C,I), + unalias_type(I,J), + J==chr_identifier -> + F=[H|K], + E=L, + D=M, + G=N + ; + ( A=[H], + nth1(H,C,I), + unalias_type(I,J), + nonvar(J), + J=chr_identifier(O) -> + G=[type_indexed_identifier_store(H,O)|N], + F=K, + E=L, + D=M + ) + ; + ( A=[H], + nth1(H,C,I), + unalias_type(I,J), + J==dense_int -> + E=[A|L], + D=M, + F=K, + G=N + ) + ; + ( member(H,A), + nth1(H,C,I), + unalias_type(I,J), + nonvar(J), + J=chr_identifier(_) -> + E=L, + D=M, + F=K, + G=N + ) + ; + E=L, + D=[A|M], + F=K, + G=N + ), + partition_indexes(B,C,M,L,K,N). +longer_list(A,B,C) :- + length(B,D), + length(C,E), + compare(F,E,D), + ( F== = -> + compare(A,B,C) + ; + A=F + ). all_distinct_var_args(A) :- - A=..[_|B], - copy_term_nat(B,C), - all_distinct_var_args_(C). -all_distinct_var_args_([]). -all_distinct_var_args_([A|B]) :- - var(A), - A=t, - all_distinct_var_args_(B). + copy_term_nat(A,B), + functor(A,C,D), + functor(E,C,D), + E=@=B. get_indexed_arguments(A,B) :- A=_/C, get_indexed_arguments(1,C,A,B). @@ -3001,58 +4978,96 @@ validate_store_type_assumptions([]). validate_store_type_assumptions([A|B]) :- validate_store_type_assumption(A), validate_store_type_assumptions(B). -universal_search_iterator_end([A|B],C,D,E/F,G,H,I) :- - D=rule(_,_,J,K), - gen_var_susp_list_for(B,[A,C,J,K],_,L,M,N), - O=[[]|L], - build_head(E,F,G,O,P), - ( G=[0|_] -> - next_id(G,Q), - R=M +universal_search_iterator_end([A|B],C,D,E/F,G,H,I,J) :- + D=rule(_,_,K,L), + gen_var_susp_list_for_b(B,[A,C,K,L],_,M,N,_,O), + universal_search_iterator_failure_vars(B,H,M,N,O,P,Q), + flatten(M,R), + S=[[]|R], + build_head(E,F,[G|H],S,T), + ( Q=[_] -> + get_success_continuation_code_id(E/F,G,U), + V=[U] ; - dec_id(G,Q), - R=[N|M] + V=[G|Q] ), - build_head(E,F,Q,R,S), - T=(P:-S), - H=[T|I]. -universal_search_iterator([A|B],[C|D],E,F/G,H,I,J) :- - E=rule(_,_,K,L), - pre_vars_and_susps(D,[C,A,B,K,L],M,N,O), - gen_var(P), - functor(C,Q,R), - gen_vars(R,S), - head_info(C,R,S,T,_,U), - get_constraint_mode(Q/R,V), - head_arg_matches(U,V,N,W,X), - Y=..[suspension,_,Z,_,_,_,_|S], - different_from_other_susps(C,T,D,O,A1), - create_get_mutable(active,Z,B1), - C1=(T=Y,B1,A1,W), - lookup_passive_head(A,[C|D],X,D1,E1), - inc_id(H,F1), - G1=[[T|P]|M], - build_head(F,G,H,G1,H1), - passive_delegate_variables(C,D,[A,B,K,L],X,I1), - append([E1|I1],[T,P|M],J1), - build_head(F,G,F1,J1,K1), - L1=[P|M], - build_head(F,G,H,L1,M1), - N1=(H1:-C1,D1->K1;M1), - I=[N1|J]. + build_head(E,F,V,P,W), + X=(T:-W), + add_dummy_location(X,Y), + I=[Y|J]. +universal_search_iterator_failure_vars(A,B,C,D,E,F,G) :- + ( B=[0|_] -> + next_id(B,G), + F=D + ; + C=[_|H], + dec_id(B,I), + ( A=[J|K], + functor(J,L,M), + check_fd_lookup_condition(L,M,J,K) -> + E=[_|N], + universal_search_iterator_failure_vars(K,I,H,D,N,F,G) + ; + G=I, + flatten(H,O), + E=[P|_], + F=[P|O] + ) + ). +universal_search_iterator([A|B],[C|D],E,F/G,H,I,J,K) :- + E=rule(_,_,L,M), + gen_var_susp_list_for_b(D,[C,A,B,L,M],N,O,P,Q,R), + init(Q,S), + flatten(O,T), + gen_var(U), + functor(C,V,W), + gen_vars(W,X), + head_info(C,W,X,Y,_,Z), + get_constraint_mode(V/W,A1), + head_arg_matches(Z,A1,N,B1,C1), + delay_phase_end(validate_store_type_assumptions,(static_suspension_term(V/W,D1),get_static_suspension_field(V/W,D1,state,active,E1),get_static_suspension_term_field(arguments,V/W,D1,X))), + different_from_other_susps(C,Y,D,S,F1), + G1=(Y=D1,E1,F1,B1), + add_heads_ground_variables([C|D],[],H1), + lookup_passive_head(A,[C|D],C1,H1,I1,J1), + inc_id(I,K1), + L1=[[Y|U]|T], + build_head(F,G,[H|I],L1,M1), + passive_delegate_variables(C,D,[A,B,L,M],C1,N1), + append([J1|N1],[Y,U|T],O1), + build_head(F,G,[H|K1],O1,P1), + ( check_fd_lookup_condition(V,W,C,D) -> + universal_search_iterator_failure_vars(D,I,O,P,R,Q1,R1), + S1=Q1 + ; + S1=[U|T], + R1=I + ), + ( R1=[_] -> + T1=R1 + ; + T1=[H|R1] + ), + build_head(F,G,T1,S1,U1), + V1=(M1:-G1,I1->P1;U1), + add_dummy_location(V1,W1), + J=[W1|K]. ai_observation_analysis(A) :- - ( chr_pp_flag(ai_observation_analysis,on) -> - list_to_ord_set(A,_), - abstract_constraints(A), - ai_observation_schedule_initial_calls(A) + ( chr_pp_flag(ai_observation_analysis,on), + get_target_module(_), + '$chr_compiled_with_version'(3) -> + list_to_ord_set(A,B), + abstract_constraints(B), + ai_observation_schedule_initial_calls(B,B), + ai_observation_gather_results ; true ). -ai_observation_schedule_initial_calls([]). -ai_observation_schedule_initial_calls([A|B]) :- - ai_observation_schedule_initial_call(A), - ai_observation_schedule_initial_calls(B). -ai_observation_schedule_initial_call(A) :- +ai_observation_schedule_initial_calls([],_). +ai_observation_schedule_initial_calls([A|B],C) :- + ai_observation_schedule_initial_call(A,C), + ai_observation_schedule_initial_calls(B,C). +ai_observation_schedule_initial_call(A,_) :- ai_observation_top(A,B), initial_call_pattern(B). ai_observation_schedule_new_calls([],_). @@ -3061,44 +5076,59 @@ ai_observation_schedule_new_calls([A|B],C) :- initial_call_pattern(odom(A,D)), ai_observation_schedule_new_calls(B,C). ai_observation_lub(odom(A,B),odom(A,C),odom(A,D)) :- - ord_intersect(B,C,D). + ord_intersection(B,C,D). +ai_observation_bot(A,B,odom(A,B)). ai_observation_top(A,odom(A,B)) :- ord_empty(B). ai_observation_leq(odom(A,B),odom(A,C)) :- ord_subset(C,B). -ai_observation_observe(odom(A,B),C,odom(A,D)) :- - ord_del_element(B,C,D). -ai_observation_observe_list(odom(A,B),C,odom(A,D)) :- - list_to_ord_set(C,E), - ord_subtract(B,E,D). +ai_observation_observe_set(A,B,C) :- + ord_subtract(A,B,C). ai_observation_abstract_constraint(A,B,C) :- functor(A,D,E), C=D/E, - member(C,B). + memberchk(C,B). ai_observation_abstract_constraints(A,B,C) :- findall(D,(member(E,A),ai_observation_abstract_constraint(E,B,D)),C). -ai_observation_abstract_goal(A,B,C) :- - ai_observation_abstract_goal(A,B,C,[]). -ai_observation_abstract_goal((A,B),C,D,E) :- +ai_observation_abstract_goal_(A,B,C,D,E,F) :- + term_variables((A,B,C),G), + append(A,B,H), + ground_vars(H,I), + list_difference_eq(G,I,J), + ai_observation_abstract_goal(D,E,F,[],J), + !. +ground_vars([],[]). +ground_vars([A|B],C) :- + functor(A,D,E), + get_constraint_mode(D/E,F), + head_info(A,E,_,_,_,G), + head_arg_matches(G,F,[],_,_,[],H), + ground_vars(B,I), + append(H,I,C). +ai_observation_abstract_goal((A,B),C,D,E,F) :- !, - ai_observation_abstract_goal(A,C,D,F), - ai_observation_abstract_goal(B,C,F,E). -ai_observation_abstract_goal((A;B),C,D,E) :- + ai_observation_abstract_goal(A,C,D,G,F), + ai_observation_abstract_goal(B,C,G,E,F). +ai_observation_abstract_goal((A;B),C,[(D;E)|F],F,G) :- !, - ai_observation_abstract_goal(A,C,D,F), - ai_observation_abstract_goal(B,C,F,E). -ai_observation_abstract_goal((A->B),C,D,E) :- + ai_observation_abstract_goal(A,C,D,[],G), + ai_observation_abstract_goal(B,C,E,[],G). +ai_observation_abstract_goal((A->B),C,D,E,F) :- !, - ai_observation_abstract_goal(A,C,D,F), - ai_observation_abstract_goal(B,C,F,E). -ai_observation_abstract_goal(A,B,[C|D],D) :- + ai_observation_abstract_goal(A,C,D,G,F), + ai_observation_abstract_goal(B,C,G,E,F). +ai_observation_abstract_goal(A,B,[C|D],D,_) :- ai_observation_abstract_constraint(A,B,C), !. -ai_observation_abstract_goal(true,_,A,A) :- +ai_observation_abstract_goal(true,_,A,A,_) :- !. -ai_observation_abstract_goal(writeln(_),_,A,A) :- +ai_observation_abstract_goal(writeln(_),_,A,A,_) :- !. -ai_observation_abstract_goal(_,_,[A|B],B) :- +ai_observation_abstract_goal(A,_,B,B,C) :- + builtin_binds_b(A,D), + intersect_eq(D,C,[]), + !. +ai_observation_abstract_goal(_,_,[A|B],B,_) :- A=builtin. ai_observation_is_observed(odom(_,A),B) :- \+ord_memberchk(B,A). @@ -3110,14 +5140,23 @@ unconditional_occurrence(A,B) :- F=rule(G,H,I,_), guard_entailment:entails_guard([chr_pp_headvariables(G,H)],I), once((G=[J],H==[];H=[J],G==[],\+may_trigger(A))), - functor(J,_,_), - J=..[_|K], - unconditional_occurrence_args(K). -unconditional_occurrence_args([]). -unconditional_occurrence_args([A|B]) :- - var(A), - A=x, - unconditional_occurrence_args(B). + all_distinct_var_args(J). +partial_wake_args([],_,_,_). +partial_wake_args([A|B],[C|D],E,F) :- + ( C\== + -> + ( nonvar(A) -> + no_partial_wake(F) + ; + ( memberchk_eq(A,E) -> + no_partial_wake(F) + ) + ; + true + ) + ; + true + ), + partial_wake_args(B,D,E,F). generate_show_constraint(A,B,C,D) :- ( chr_pp_flag(show,on) -> B=['$show'/0|A], @@ -3134,4110 +5173,10079 @@ generate_show_rules([A/B|C],[D|E],F) :- inc_rule_count(H), D=pragma(rule([],['$show',G],true,writeln(G)),ids([],[0,1]),[passive(1)],no,H), generate_show_rules(C,E,F). +static_suspension_term(A/B,C) :- + suspension_term_base(A/B,D), + E is D+B, + functor(C,suspension,E). +has_suspension_field(A,B) :- + suspension_term_base_fields(A,C), + memberchk(B,C). +suspension_term_base(A,B) :- + suspension_term_base_fields(A,C), + length(C,B). +suspension_term_base_fields(A,B) :- + ( chr_pp_flag(debugable,on) -> + B=[id,state,history,generation,continuation,functor] + ; + ( uses_history(A) -> + B=[id,state,history|C] + ; + ( only_ground_indexed_arguments(A), + get_functional_dependency(A,1,_,_) -> + B=[state|C] + ) + ; + B=[id,state|C] + ), + ( only_ground_indexed_arguments(A) -> + get_store_type(A,D), + basic_store_types(D,E), + ( memberchk(global_ground,E) -> + C=[global_list_prev|F] + ; + C=F + ), + ( chr_pp_flag(ht_removal,on) -> + ht_prev_fields(E,F) + ; + F=[] + ) + ; + ( may_trigger(A) -> + ( uses_field(A,generation) -> + C=[generation,global_list_prev|F] + ; + C=[global_list_prev|F] + ), + ( chr_pp_flag(mixed_stores,on), + chr_pp_flag(ht_removal,on) -> + get_store_type(A,D), + basic_store_types(D,E), + ht_prev_fields(E,F) + ; + F=[] + ) + ) + ; + C=[global_list_prev|F], + ( chr_pp_flag(mixed_stores,on), + chr_pp_flag(ht_removal,on) -> + get_store_type(A,D), + basic_store_types(D,E), + ht_prev_fields(E,F) + ; + F=[] + ) + ) + ). +ht_prev_fields(A,B) :- + ht_prev_fields_int(A,C), + append(C,B). +ht_prev_fields_int([],[]). +ht_prev_fields_int([A|B],C) :- + ( A=multi_hash(D) -> + maplist(ht_prev_field,D,E), + C=[E|F] + ; + C=F + ), + ht_prev_fields_int(B,F). +ht_prev_field(A,B) :- + concat_atom(['multi_hash_prev-'|A],B). +get_static_suspension_term_field(A,B,C,D) :- + suspension_term_base_fields(B,E), + nth1(F,E,A), + !, + arg(F,C,D). +get_static_suspension_term_field(arguments,A,B,C) :- + !, + suspension_term_base(A,D), + B=..[_|E], + drop(D,E,C). +get_static_suspension_term_field(A,B,_,_) :- + chr_error(internal,'Trying to obtain field ~w of ~w, wich does not have it!',[A,B]). +get_dynamic_suspension_term_field(A,B,C,D,E) :- + suspension_term_base_fields(B,F), + nth1(G,F,A), + !, + E=arg(G,C,D). +get_dynamic_suspension_term_field(arguments,A,B,C,D) :- + !, + static_suspension_term(A,E), + get_static_suspension_term_field(arguments,A,E,C), + D=(B=E). +get_dynamic_suspension_term_field(argument(A),B,C,D,E) :- + !, + suspension_term_base(B,F), + G is A+F, + E=arg(G,C,D). +get_dynamic_suspension_term_field(A,B,_,_,_) :- + chr_error(internal,'Dynamic goal to get ~w of ~w, which does not have this field!',[A,B]). +set_dynamic_suspension_term_field(A,B,C,D,E) :- + suspension_term_base_fields(B,F), + nth1(G,F,A), + !, + E=setarg(G,C,D). +set_dynamic_suspension_term_field(A,B,_,_,_) :- + chr_error(internal,'Dynamic goal to set ~w of ~w, which does not have this field!',[A,B]). +basic_store_types(multi_store(A),A) :- + !. +basic_store_types(A,[A]). +generate_never_stored_rules(A,B) :- + ( chr_pp_flag(declare_stored_constraints,on) -> + never_stored_rules(A,B) + ; + B=[] + ). +check_storedness_assertions(A) :- + ( chr_pp_flag(storage_analysis,on), + chr_pp_flag(declare_stored_constraints,on) -> + forall(B,A,check_storedness_assertion(B)) + ; + true + ). +continuation_analysis(A) :- + maplist(analyse_continuations,A). +analyse_continuations(A) :- + continuation_analysis(A,1), + get_max_occurrence(A,B), + C is B+1, + bulk_propagation(A,1,C), + set_occurrence_code_id(A,1,0). +continuation_analysis(A,B) :- + get_max_occurrence(A,C), + ( B>C -> + true + ; + ( B==C -> + D is B+1, + continuation_occurrence(A,B,D) + ) + ; + constraint_continuation(A,B,C,D), + continuation_occurrence(A,B,D), + E is B+1, + continuation_analysis(A,E) + ). +constraint_continuation(A,B,C,D) :- + ( get_occurrence_head(A,B,E) -> + F is B+1, + ( between(F,C,D), + get_occurrence_head(A,D,G), + unifiable(E,G,_) -> + true + ; + D is C+1 + ) + ; + D=C + ). +get_occurrence_head(A,B,C) :- + get_occurrence(A,B,D,E), + \+is_passive(D,E), + get_rule(D,F), + F=pragma(rule(G,H,_,_),ids(I,J),_,_,_), + ( select2(E,C,I,G,_,_) -> + true + ; + select2(E,C,J,H,_,_) + ). +get_success_continuation_code_id(A,B,C) :- + get_success_continuation_occurrence(A,B,D), + get_occurrence_code_id(A,D,C). +collect_constants(A,B,C) :- + ( not_restarted -> + maplist(collect_rule_constants(B),A), + ( chr_pp_flag(verbose,on) -> + print_chr_constants + ; + true + ), + ( chr_pp_flag(experiment,on) -> + flattening_dictionary(B,D), + copy_term_nat(C,E), + flatten_clauses(E,D,F), + install_new_declarations_and_restart(F) + ; + true + ) + ; + true + ). +collect_rule_constants(A,B) :- + B=pragma(rule(C,D,_,E),_,_,_,_), + maplist(collect_head_constants,C), + maplist(collect_head_constants,D), + collect_body_constants(E,A). +collect_body_constants(A,B) :- + conj2list(A,C), + maplist(collect_goal_constants(B),C). +collect_goal_constants(A,B) :- + ( nonvar(B), + functor(B,C,D), + memberchk(C/D,A) -> + collect_head_constants(B) + ; + ( nonvar(B), + B=E:F, + get_target_module(G), + E==G, + nonvar(F), + functor(F,C,D), + memberchk(C/D,A) -> + collect_head_constants(F) + ) + ; + true + ). +collect_head_constants(A) :- + functor(A,B,C), + get_constraint_type_det(B/C,D), + A=..[_|E], + maplist(collect_arg_constants,E,D). +collect_arg_constants(A,B) :- + ( ground(A), + unalias_type(B,C), + is_chr_constants_type(C,D,_) -> + add_chr_constant(D,A) + ; + true + ). +flattening_dictionary([],[]). +flattening_dictionary([A|B],C) :- + ( flattening_dictionary_entry(A,D) -> + C=[D|E] + ; + C=E + ), + flattening_dictionary(B,E). +flattening_dictionary_entry(A,B) :- + get_constraint_arg_type(A,C,D), + ( is_chr_constants_type(D,E,F) -> + get_chr_constants(E,G) + ; + ( D=chr_enum(G) -> + F=no + ) + ), + B=A-C-H-F, + maplist(flat_spec(A,C),G,H). +flat_spec(A/B,C,D,E) :- + E=D-F, + term_to_atom(D,G), + atom_concat_list(['$flat_',A,/,B,'___',C,'___',G],F). +restart_after_flattening(A,A) :- + nb_setval('$chr_restart_after_flattening',started). +restart_after_flattening(_,A) :- + nb_getval('$chr_restart_after_flattening',restart(A)), + nb_setval('$chr_restart_after_flattening',restarted). +not_restarted :- + nb_getval('$chr_restart_after_flattening',started). +install_new_declarations_and_restart(A) :- + nb_setval('$chr_restart_after_flattening',restart(A)), + fail. +flatten_clauses(A,B,C) :- + flatten_readcontent(A,D,E,F,_,G,H), + flatten_clauses_(B,D,H,E,F,G,C). +flatten_clauses_(A,B,C,D,E,F,G) :- + auxiliary_constraints_declarations(A,E,F,H), + dispatching_rules(A,I), + declarations(D,A,E,F,J), + flatten_rules(B,A,K), + append([C,H,I,J,K],G). +declarations(A,B,C,D,E) :- + findall(F,(member(F,A),\+memberchk(F-_-_-_,B)),G), + maplist(declaration(C,D),G,H), + flatten(H,E). +declaration(A,B,C,[(:-chr_constraint C),(:-chr_option(mode,D)),(:-chr_option(type_declaration,E))]) :- + C=F/G, + functor(D,F,G), + ( memberchk(D,A) -> + true + ; + replicate(G,?,H), + D=..[_|H] + ), + functor(E,F,G), + ( memberchk(E,B) -> + true + ; + replicate(G,any,I), + E=..[_|I] + ). +flatten_readcontent([],[],[],[],[],[],[]). +flatten_readcontent([A|B],C,D,E,F,G,H) :- + ( A==end_of_file -> + C=[], + D=[], + E=[], + G=[], + F=[], + H=[] + ; + ( crude_is_rule(A) -> + C=[A|I], + flatten_readcontent(B,I,D,E,F,G,H) + ) + ; + ( pure_is_declaration(A,J,K,L) -> + append(J,M,D), + append(K,N,E), + append(L,O,G), + flatten_readcontent(B,C,M,N,F,O,H) + ) + ; + ( is_mode_declaration(A,P) -> + E=[P|N], + flatten_readcontent(B,C,D,N,F,G,H) + ) + ; + ( is_type_declaration(A,Q) -> + G=[Q|O], + flatten_readcontent(B,C,D,E,F,O,H) + ) + ; + ( is_type_definition(A,R) -> + H=[A|S], + F=[R|T], + flatten_readcontent(B,C,D,E,T,G,S) + ) + ; + ( A=(:-op(U,V,W)) -> + op(U,V,W) + ; + true + ), + H=[A|S], + flatten_readcontent(B,C,D,E,F,G,S) + ). +crude_is_rule((_@_)). +crude_is_rule((_ pragma _)). +crude_is_rule((_==>_)). +crude_is_rule((_<=>_)). +pure_is_declaration(A,B,C,D) :- + A=(:-E), + E=..[F,G], + F==chr_constraint, + conj2list(G,H), + pure_extract_type_mode(H,B,C,D). +pure_extract_type_mode([],[],[],[]). +pure_extract_type_mode([A/B|C],[A/B|D],E,F) :- + !, + pure_extract_type_mode(C,D,E,F). +pure_extract_type_mode([A|B],[C|D],[E|F],G) :- + functor(A,H,I), + C=H/I, + A=..[_|J], + extract_types_and_modes(J,K,L), + E=..[H|L], + ( forall(member(M,K),M==any) -> + G=N + ; + G=[O|N], + O=..[H|K] + ), + pure_extract_type_mode(B,D,F,N). +is_mode_declaration((:-chr_option(mode,A)),A). +is_type_declaration((:-chr_option(type_declaration,A)),A). +auxiliary_constraints_declarations(A,B,C,D) :- + findall(E,auxiliary_constraints_declaration(A,B,C,E),F), + flatten(F,D). +auxiliary_constraints_declaration(A,B,C,[(:-chr_constraint D),(:-chr_option(mode,E)),(:-chr_option(type_declaration,F))]) :- + member(G/H-I-J-_,A), + arg_modes(G,H,B,K), + specialize_modes(K,I,L), + arg_types(G,H,C,M), + specialize_types(M,I,N), + O is H-1, + member(_-P,J), + D=P/O, + E=..[P|L], + F=..[P|N]. +arg_modes(A,B,C,D) :- + functor(E,A,B), + ( memberchk(E,C) -> + E=..[_|D] + ; + replicate(B,?,D) + ). +specialize_modes(A,B,C) :- + split(A,B,D,_,E), + append(D,E,C). +arg_types(A,B,C,D) :- + functor(E,A,B), + ( memberchk(E,C) -> + E=..[_|D] + ; + replicate(B,any,D) + ). +specialize_types(A,B,C) :- + split(A,B,D,_,E), + append(D,E,C). +dispatching_rules([],[]). +dispatching_rules([A-B-C-D|E],F) :- + constraint_dispatching_rule(C,A,B,D,F,G), + dispatching_rules(E,G). +constraint_dispatching_rule(A,B/C,D,E,F,G) :- + ( D==1 -> + H=F, + I=B/C + ; + functor(J,B,C), + J=..[_|K], + split(K,D,L,M,N), + append([M|L],N,O), + atom_concat(B,'_$shuffled',P), + Q=..[P|O], + [(J:-Q)|H]=F, + I=P/C + ), + R=swap(B,D), + dispatching_rule_term_cases(A,I,E,R,H,G). +dispatching_rule_term_cases(A,B/C,D,E,F,G) :- + once(pairup(H,I,A)), + length(H,J), + replicate(J,[],K), + L is C-1, + maplist(wrap_in_functor(dispatching_action),I,M), + dispatch_trie_index([H|K],L,D,E,M,B,F,G). +dispatching_action(A,B,C) :- + C=..[A|B]. +dispatch_trie_index([A|B],C,D,E,F,G,H,I) :- + dispatch_trie_step(A,G,G,B,C,D,E,F,H,I). +dispatch_trie_step([],_,_,_,[],_,_,[],A,A) :- + !. +dispatch_trie_step(A,B,C,D,E,F,G,H,I,J) :- + D=[K|_], + length(K,L), + aggregate_all(set(M/N),(member(O,A),functor(O,M,N)),P), + Q is L+1, + dispatch_trie_step_cases(P,Q,A,D,E,F,G,H,B,C,I,J). +dispatch_trie_step_cases([],A,_,_,B,C,D,_,E,_,F,G) :- + ( C=yes(H) -> + F=[I|G], + I=(J:-K), + L is A+B, + functor(J,E,L), + reconstruct_original_term(D,J,M), + K=..[H,M] + ; + F=G + ). +dispatch_trie_step_cases([A|B],C,D,E,F,G,H,I,J,K,L,M) :- + dispatch_trie_step_case(A,C,D,E,F,G,H,I,J,K,L,N), + dispatch_trie_step_cases(B,C,D,E,F,G,H,I,J,K,N,M). +dispatch_trie_step_case(A/B,C,D,E,F,G,H,I,J,K,[L|M],N) :- + L=(O:-P,Q), + ( G=yes(_) -> + P=! + ; + P=true + ), + R is C+F, + functor(O,J,R), + arg(1,O,S), + O=..[_,_|T], + length(U,F), + once(append(V,U,T)), + functor(S,A,B), + W=index_functor(A,B,H), + S=..[_|X], + append(X,T,Y), + ( Y==U -> + M=N, + rec_cases(D,_,I,A/B,_,_,Z), + Z=[A1], + call(A1,U,Q) + ; + rec_cases(D,E,I,A/B,B1,C1,Z), + ( Z=[D1] -> + M=N, + call(D1,U,Q) + ; + pairup(B1,C1,E1), + common_pattern(E1,F1,G1,H1), + append(X,V,[I1|J1]), + I1-J1=F1, + K1=gct(V,W), + gensym(K,L1), + append(G1,U,M1), + Q=..[L1|M1], + findall(N1-O1,member([N1|O1],H1),P1), + once(pairup(Q1,R1,P1)), + dispatch_trie_step(Q1,L1,K,R1,F,G,K1,Z,M,N) + ) + ). +split([A|B],C,D,E,F) :- + ( C==1 -> + D=[], + E=A, + F=B + ; + G is C-1, + D=[A|H], + split(B,G,H,E,F) + ). +reconstruct_original_term(swap(A,B),C,D) :- + C=..[_,E|F], + G is B-1, + split_at(G,F,H,I), + append(H,[E|I],J), + D=..[A|J]. +reconstruct_original_term(index_functor(A,B,C),D,E) :- + D=..[F|G], + split_at(B,G,H,I), + J=..[A|H], + K=..[F,J|I], + reconstruct_original_term(C,K,E). +reconstruct_original_term(gct(A,B),C,D) :- + copy_term_nat(A,E), + term_variables(E,F), + C=..[G|H], + append(F,I,H), + append(E,I,J), + K=..[G|J], + reconstruct_original_term(B,K,D). +flatten_rules(A,B,C) :- + flatten_rules1(A,B,D), + flatten(D,C). +flatten_rules1([],_,[]). +flatten_rules1([A|B],C,[D|E]) :- + findall(F,flatten_rule(A,C,F),D), + flatten_rules1(B,C,E). +flatten_rule((A@B),C,(A@D)) :- + !, + flatten_rule(B,C,D). +flatten_rule((A pragma B),C,(D pragma B)) :- + !, + flatten_rule(A,C,D). +flatten_rule((A==>B),C,(D==>E)) :- + !, + flatten_heads(A,C,D), + flatten_body(B,C,E). +flatten_rule((A\B<=>C),D,(E\F<=>G)) :- + !, + flatten_heads((A,B),D,(E,F)), + flatten_body(C,D,G). +flatten_rule((A<=>B),C,(D<=>E)) :- + flatten_heads(A,C,D), + flatten_body(B,C,E). +flatten_heads((A,B),C,(D,E)) :- + !, + flatten_heads(A,C,D), + flatten_heads(B,C,E). +flatten_heads(A#B,C,D#B) :- + !, + flatten_heads(A,C,D). +flatten_heads(A,B,C) :- + ( functor(A,D,E), + memberchk(D/E-F-G-_,B) -> + A=..[_|H], + split(H,F,I,J,K), + member(L-M,G), + J=L, + append(I,K,N), + C=..[M|N] + ; + C=A + ). +flatten_body((A '|' B),C,(D '|' E)) :- + !, + conj2list(A,F), + maplist(flatten_goal(C),F,G), + list2conj(G,D), + conj2list(B,H), + maplist(flatten_goal(C),H,I), + list2conj(I,E). +flatten_body(A,B,C) :- + conj2list(A,D), + maplist(flatten_goal(B),D,E), + list2conj(E,C). +flatten_goal(_,A,B) :- + var(A), + !, + B=A. +flatten_goal(A,B,C) :- + ( is_specializable_goal(B,A,D) -> + specialize_goal(B,D,C) + ; + ( B=E:F, + get_target_module(G), + E==G, + nonvar(F), + is_specializable_goal(F,A,D) -> + specialize_goal(F,D,H), + C=E:H + ) + ; + ( partial_eval(B,C) -> + true + ) + ; + C=B + ). +is_specializable_goal(A,B,C) :- + functor(A,D,E), + memberchk(D/E-C-_-_,B), + arg(C,A,F), + ground(F). +specialize_goal(A,B,C) :- + functor(A,D,E), + A=..[_|F], + split(F,B,G,H,I), + append(G,I,J), + flat_spec(D/E,B,H,_-K), + C=..[K|J]. +partial_eval(append(A,B,C),D) :- + ( A==[] -> + D=(C=B) + ; + ( B==[] -> + D=(C=A) + ) + ). +partial_eval(flatten_path(A,B),C) :- + ( nonvar(A), + flatten(A,D), + D\==A -> + C=flatten_path(D,B) + ). +dump_code(A) :- + ( chr_pp_flag(dump,on) -> + maplist(portray_clause,A) + ; + true + ). +chr_banner :- + chr_info(banner,' The K.U.Leuven CHR System + Contributors: Tom Schrijvers, Jon Sneyers, Bart Demoen, + Jan Wielemaker + Copyright: K.U.Leuven, Belgium + URL: http://www.cs.kuleuven.be/~~toms/CHR/ +',[]). :-use_module(chr(chr_runtime)). :-use_module(chr(chr_hashtable_store)). -:-use_module(library('clp/clp_events')). -'attach_type_definition/2'([],_). -'attach_type_definition/2'([A|B],C) :- - ( get_attr(A,chr_translate,D) -> - E=[C|D], - put_attr(A,chr_translate,E) - ; - put_attr(A,chr_translate,[C]) - ), - true, - 'attach_type_definition/2'(B,C). -'detach_type_definition/2'([],_). -'detach_type_definition/2'([A|B],C) :- - ( get_attr(A,chr_translate,D) -> - 'chr sbag_del_element'(D,C,E), - ( E==[] -> - del_attr(A,chr_translate) +attach_generate_empty_named_history_initialisation___1([],_). +attach_generate_empty_named_history_initialisation___1([A|B],C) :- + ( get_attr(A,chr_translate,P) -> + P=v(N,D,E,F,G,H,I,J,K,L,M), + ( N/\1=:=1 -> + Q=v(N,[C|D],E,F,G,H,I,J,K,L,M) ; - put_attr(A,chr_translate,E) + O is N\/1, + Q=v(O,[C],E,F,G,H,I,J,K,L,M) + ), + put_attr(A,chr_translate,Q) + ; + put_attr(A,chr_translate,v(1,[C],[],[],[],[],[],[],[],[],[])) + ), + attach_generate_empty_named_history_initialisation___1(B,C). +detach_generate_empty_named_history_initialisation___1([],_). +detach_generate_empty_named_history_initialisation___1([A|B],C) :- + ( get_attr(A,chr_translate,Q) -> + Q=v(N,D,E,F,G,H,I,J,K,L,M), + ( N/\1=:=1 -> + 'chr sbag_del_element'(D,C,P), + ( P==[] -> + O is N/\ -2, + ( O==0 -> + del_attr(A,chr_translate) + ; + put_attr(A,chr_translate,v(O,[],E,F,G,H,I,J,K,L,M)) + ) + ; + put_attr(A,chr_translate,v(N,P,E,F,G,H,I,J,K,L,M)) + ) + ; + true ) ; true ), - 'detach_type_definition/2'(B,C). -'$indexed_variables'(B,A) :- - B=target_module(_), - A=[]. -'$indexed_variables'(B,A) :- - B=indexed_argument(_,_), - A=[]. -'$indexed_variables'(B,A) :- - B=constraint_mode(_,_), - A=[]. -'$indexed_variables'(B,A) :- - B=store_type(_,_), - A=[]. -'$indexed_variables'(B,A) :- - B=actual_store_types(_,_), - A=[]. -'$indexed_variables'(B,A) :- - B=assumed_store_type(_,_), - A=[]. -'$indexed_variables'(B,A) :- - B=rule_count(_), - A=[]. -'$indexed_variables'(B,A) :- - B=passive(_,_), - A=[]. -'$indexed_variables'(B,A) :- - B=occurrence(_,_,_,_), - A=[]. -'$indexed_variables'(B,A) :- - B=max_occurrence(_,_), - A=[]. -'$indexed_variables'(B,A) :- - B=allocation_occurrence(_,_), - A=[]. -'$indexed_variables'(B,A) :- - B=rule(_,_), - A=[]. -'$indexed_variables'(B,A) :- - B=least_occurrence(_,_), - A=[]. -'$indexed_variables'(B,A) :- - B=constraint_index(_,_), - A=[]. -'$indexed_variables'(B,A) :- - B=max_constraint_index(_), - A=[]. -'$indexed_variables'(B,A) :- - B=observes(_,_), - A=[]. -'$indexed_variables'(B,A) :- - B=spawns_observer(_,_), - A=[]. -'$indexed_variables'(B,A) :- - B=observes_indirectly(_,_), - A=[]. -'$indexed_variables'(B,A) :- - B=prev_guard_list(_,_,_,_,_,_,_), - A=[]. -'$indexed_variables'(B,A) :- - B=set_all_passive(_), - A=[]. -'$indexed_variables'(B,A) :- - B=multiple_occ_constraints_checked(_), - A=[]. -'$indexed_variables'(C,B) :- - C=type_definition(A,_), - term_variables(A,B). -'$indexed_variables'(B,A) :- - B=constraint_type(_,_), - A=[]. -'$indexed_variables'(B,A) :- - B=add_type_information(_,_,_), - A=[]. -'$indexed_variables'(B,A) :- - B=stored(_,_,_), - A=[]. -'$indexed_variables'(B,A) :- - B=stored_complete(_,_,_), - A=[]. -'$indexed_variables'(B,A) :- - B=check_all_passive(_,_), - A=[]. -'$indexed_variables'(B,A) :- - B=constraints_code1(_,_,_), - A=[]. -'$indexed_variables'(B,A) :- - B=use_auxiliary_predicate(_), - A=[]. -'$indexed_variables'(B,A) :- - B=functional_dependency(_,_,_,_), - A=[]. -'$indexed_variables'(B,A) :- - B=initial_call_pattern(_), - A=[]. -'$indexed_variables'(B,A) :- - B=call_pattern(_), - A=[]. -'$indexed_variables'(B,A) :- - B=final_answer_pattern(_,_), - A=[]. -'$indexed_variables'(B,A) :- - B=abstract_constraints(_), - A=[]. -'$indexed_variables'(B,A) :- - B=depends_on(_,_), - A=[]. -'$indexed_variables'(B,A) :- - B=depends_on_ap(_,_,_,_), - A=[]. -'$indexed_variables'(B,A) :- - B=depends_on_goal(_,_), - A=[]. -'$indexed_variables'(B,A) :- - B=ai_observed(_,_), - A=[]. -'$indexed_variables'(B,A) :- - B=ai_not_observed(_,_), - A=[]. -'$indexed_variables'(B,A) :- - B=depends_on_as(_,_,_), - A=[]. + detach_generate_empty_named_history_initialisation___1(B,C). +attach_background_info___2([],_). +attach_background_info___2([A|B],C) :- + ( get_attr(A,chr_translate,P) -> + P=v(N,D,E,F,G,H,I,J,K,L,M), + ( N/\2=:=2 -> + Q=v(N,D,[C|E],F,G,H,I,J,K,L,M) + ; + O is N\/2, + Q=v(O,D,[C],F,G,H,I,J,K,L,M) + ), + put_attr(A,chr_translate,Q) + ; + put_attr(A,chr_translate,v(2,[],[C],[],[],[],[],[],[],[],[])) + ), + attach_background_info___2(B,C). +detach_background_info___2([],_). +detach_background_info___2([A|B],C) :- + ( get_attr(A,chr_translate,Q) -> + Q=v(N,D,E,F,G,H,I,J,K,L,M), + ( N/\2=:=2 -> + 'chr sbag_del_element'(E,C,P), + ( P==[] -> + O is N/\ -3, + ( O==0 -> + del_attr(A,chr_translate) + ; + put_attr(A,chr_translate,v(O,D,[],F,G,H,I,J,K,L,M)) + ) + ; + put_attr(A,chr_translate,v(N,D,P,F,G,H,I,J,K,L,M)) + ) + ; + true + ) + ; + true + ), + detach_background_info___2(B,C). +attach_get_bg_info___2([],_). +attach_get_bg_info___2([A|B],C) :- + ( get_attr(A,chr_translate,P) -> + P=v(N,D,E,F,G,H,I,J,K,L,M), + ( N/\4=:=4 -> + Q=v(N,D,E,[C|F],G,H,I,J,K,L,M) + ; + O is N\/4, + Q=v(O,D,E,[C],G,H,I,J,K,L,M) + ), + put_attr(A,chr_translate,Q) + ; + put_attr(A,chr_translate,v(4,[],[],[C],[],[],[],[],[],[],[])) + ), + attach_get_bg_info___2(B,C). +detach_get_bg_info___2([],_). +detach_get_bg_info___2([A|B],C) :- + ( get_attr(A,chr_translate,Q) -> + Q=v(N,D,E,F,G,H,I,J,K,L,M), + ( N/\4=:=4 -> + 'chr sbag_del_element'(F,C,P), + ( P==[] -> + O is N/\ -5, + ( O==0 -> + del_attr(A,chr_translate) + ; + put_attr(A,chr_translate,v(O,D,E,[],G,H,I,J,K,L,M)) + ) + ; + put_attr(A,chr_translate,v(N,D,E,P,G,H,I,J,K,L,M)) + ) + ; + true + ) + ; + true + ), + detach_get_bg_info___2(B,C). +attach_type_definition___2([],_). +attach_type_definition___2([A|B],C) :- + ( get_attr(A,chr_translate,P) -> + P=v(N,D,E,F,G,H,I,J,K,L,M), + ( N/\8=:=8 -> + Q=v(N,D,E,F,[C|G],H,I,J,K,L,M) + ; + O is N\/8, + Q=v(O,D,E,F,[C],H,I,J,K,L,M) + ), + put_attr(A,chr_translate,Q) + ; + put_attr(A,chr_translate,v(8,[],[],[],[C],[],[],[],[],[],[])) + ), + attach_type_definition___2(B,C). +detach_type_definition___2([],_). +detach_type_definition___2([A|B],C) :- + ( get_attr(A,chr_translate,Q) -> + Q=v(N,D,E,F,G,H,I,J,K,L,M), + ( N/\8=:=8 -> + 'chr sbag_del_element'(G,C,P), + ( P==[] -> + O is N/\ -9, + ( O==0 -> + del_attr(A,chr_translate) + ; + put_attr(A,chr_translate,v(O,D,E,F,[],H,I,J,K,L,M)) + ) + ; + put_attr(A,chr_translate,v(N,D,E,F,P,H,I,J,K,L,M)) + ) + ; + true + ) + ; + true + ), + detach_type_definition___2(B,C). +attach_type_alias___2([],_). +attach_type_alias___2([A|B],C) :- + ( get_attr(A,chr_translate,P) -> + P=v(N,D,E,F,G,H,I,J,K,L,M), + ( N/\16=:=16 -> + Q=v(N,D,E,F,G,[C|H],I,J,K,L,M) + ; + O is N\/16, + Q=v(O,D,E,F,G,[C],I,J,K,L,M) + ), + put_attr(A,chr_translate,Q) + ; + put_attr(A,chr_translate,v(16,[],[],[],[],[C],[],[],[],[],[])) + ), + attach_type_alias___2(B,C). +detach_type_alias___2([],_). +detach_type_alias___2([A|B],C) :- + ( get_attr(A,chr_translate,Q) -> + Q=v(N,D,E,F,G,H,I,J,K,L,M), + ( N/\16=:=16 -> + 'chr sbag_del_element'(H,C,P), + ( P==[] -> + O is N/\ -17, + ( O==0 -> + del_attr(A,chr_translate) + ; + put_attr(A,chr_translate,v(O,D,E,F,G,[],I,J,K,L,M)) + ) + ; + put_attr(A,chr_translate,v(N,D,E,F,G,P,I,J,K,L,M)) + ) + ; + true + ) + ; + true + ), + detach_type_alias___2(B,C). +attach_unalias_type___2([],_). +attach_unalias_type___2([A|B],C) :- + ( get_attr(A,chr_translate,P) -> + P=v(N,D,E,F,G,H,I,J,K,L,M), + ( N/\32=:=32 -> + Q=v(N,D,E,F,G,H,[C|I],J,K,L,M) + ; + O is N\/32, + Q=v(O,D,E,F,G,H,[C],J,K,L,M) + ), + put_attr(A,chr_translate,Q) + ; + put_attr(A,chr_translate,v(32,[],[],[],[],[],[C],[],[],[],[])) + ), + attach_unalias_type___2(B,C). +detach_unalias_type___2([],_). +detach_unalias_type___2([A|B],C) :- + ( get_attr(A,chr_translate,Q) -> + Q=v(N,D,E,F,G,H,I,J,K,L,M), + ( N/\32=:=32 -> + 'chr sbag_del_element'(I,C,P), + ( P==[] -> + O is N/\ -33, + ( O==0 -> + del_attr(A,chr_translate) + ; + put_attr(A,chr_translate,v(O,D,E,F,G,H,[],J,K,L,M)) + ) + ; + put_attr(A,chr_translate,v(N,D,E,F,G,H,P,J,K,L,M)) + ) + ; + true + ) + ; + true + ), + detach_unalias_type___2(B,C). +attach_static_type_check_var___3([],_). +attach_static_type_check_var___3([A|B],C) :- + ( get_attr(A,chr_translate,P) -> + P=v(N,D,E,F,G,H,I,J,K,L,M), + ( N/\64=:=64 -> + Q=v(N,D,E,F,G,H,I,[C|J],K,L,M) + ; + O is N\/64, + Q=v(O,D,E,F,G,H,I,[C],K,L,M) + ), + put_attr(A,chr_translate,Q) + ; + put_attr(A,chr_translate,v(64,[],[],[],[],[],[],[C],[],[],[])) + ), + attach_static_type_check_var___3(B,C). +detach_static_type_check_var___3([],_). +detach_static_type_check_var___3([A|B],C) :- + ( get_attr(A,chr_translate,Q) -> + Q=v(N,D,E,F,G,H,I,J,K,L,M), + ( N/\64=:=64 -> + 'chr sbag_del_element'(J,C,P), + ( P==[] -> + O is N/\ -65, + ( O==0 -> + del_attr(A,chr_translate) + ; + put_attr(A,chr_translate,v(O,D,E,F,G,H,I,[],K,L,M)) + ) + ; + put_attr(A,chr_translate,v(N,D,E,F,G,H,I,P,K,L,M)) + ) + ; + true + ) + ; + true + ), + detach_static_type_check_var___3(B,C). +attach_static_atomic_builtin_type_check_var___3([],_). +attach_static_atomic_builtin_type_check_var___3([A|B],C) :- + ( get_attr(A,chr_translate,P) -> + P=v(N,D,E,F,G,H,I,J,K,L,M), + ( N/\128=:=128 -> + Q=v(N,D,E,F,G,H,I,J,[C|K],L,M) + ; + O is N\/128, + Q=v(O,D,E,F,G,H,I,J,[C],L,M) + ), + put_attr(A,chr_translate,Q) + ; + put_attr(A,chr_translate,v(128,[],[],[],[],[],[],[],[C],[],[])) + ), + attach_static_atomic_builtin_type_check_var___3(B,C). +detach_static_atomic_builtin_type_check_var___3([],_). +detach_static_atomic_builtin_type_check_var___3([A|B],C) :- + ( get_attr(A,chr_translate,Q) -> + Q=v(N,D,E,F,G,H,I,J,K,L,M), + ( N/\128=:=128 -> + 'chr sbag_del_element'(K,C,P), + ( P==[] -> + O is N/\ -129, + ( O==0 -> + del_attr(A,chr_translate) + ; + put_attr(A,chr_translate,v(O,D,E,F,G,H,I,J,[],L,M)) + ) + ; + put_attr(A,chr_translate,v(N,D,E,F,G,H,I,J,P,L,M)) + ) + ; + true + ) + ; + true + ), + detach_static_atomic_builtin_type_check_var___3(B,C). +attach_atomic_type___1([],_). +attach_atomic_type___1([A|B],C) :- + ( get_attr(A,chr_translate,P) -> + P=v(N,D,E,F,G,H,I,J,K,L,M), + ( N/\256=:=256 -> + Q=v(N,D,E,F,G,H,I,J,K,[C|L],M) + ; + O is N\/256, + Q=v(O,D,E,F,G,H,I,J,K,[C],M) + ), + put_attr(A,chr_translate,Q) + ; + put_attr(A,chr_translate,v(256,[],[],[],[],[],[],[],[],[C],[])) + ), + attach_atomic_type___1(B,C). +detach_atomic_type___1([],_). +detach_atomic_type___1([A|B],C) :- + ( get_attr(A,chr_translate,Q) -> + Q=v(N,D,E,F,G,H,I,J,K,L,M), + ( N/\256=:=256 -> + 'chr sbag_del_element'(L,C,P), + ( P==[] -> + O is N/\ -257, + ( O==0 -> + del_attr(A,chr_translate) + ; + put_attr(A,chr_translate,v(O,D,E,F,G,H,I,J,K,[],M)) + ) + ; + put_attr(A,chr_translate,v(N,D,E,F,G,H,I,J,K,P,M)) + ) + ; + true + ) + ; + true + ), + detach_atomic_type___1(B,C). +attach_enumerated_atomic_type___2([],_). +attach_enumerated_atomic_type___2([A|B],C) :- + ( get_attr(A,chr_translate,P) -> + P=v(N,D,E,F,G,H,I,J,K,L,M), + ( N/\512=:=512 -> + Q=v(N,D,E,F,G,H,I,J,K,L,[C|M]) + ; + O is N\/512, + Q=v(O,D,E,F,G,H,I,J,K,L,[C]) + ), + put_attr(A,chr_translate,Q) + ; + put_attr(A,chr_translate,v(512,[],[],[],[],[],[],[],[],[],[C])) + ), + attach_enumerated_atomic_type___2(B,C). +detach_enumerated_atomic_type___2([],_). +detach_enumerated_atomic_type___2([A|B],C) :- + ( get_attr(A,chr_translate,Q) -> + Q=v(N,D,E,F,G,H,I,J,K,L,M), + ( N/\512=:=512 -> + 'chr sbag_del_element'(M,C,P), + ( P==[] -> + O is N/\ -513, + ( O==0 -> + del_attr(A,chr_translate) + ; + put_attr(A,chr_translate,v(O,D,E,F,G,H,I,J,K,L,[])) + ) + ; + put_attr(A,chr_translate,v(N,D,E,F,G,H,I,J,K,L,P)) + ) + ; + true + ) + ; + true + ), + detach_enumerated_atomic_type___2(B,C). attach_increment([],_). attach_increment([B|C],A) :- - 'chr not_locked'(B), - ( get_attr(B,chr_translate,D) -> - sort(D,E), - merge(A,E,F), - put_attr(B,chr_translate,F) + ( get_attr(B,chr_translate,U1) -> + A=v(N,D,E,F,G,H,I,J,K,L,M), + U1=v(Y,O,P,Q,R,S,T,U,V,W,X), + sort(O,Z), + 'chr merge_attributes'(D,Z,A1), + sort(P,B1), + 'chr merge_attributes'(E,B1,C1), + sort(Q,D1), + 'chr merge_attributes'(F,D1,E1), + sort(R,F1), + 'chr merge_attributes'(G,F1,G1), + sort(S,H1), + 'chr merge_attributes'(H,H1,I1), + sort(T,J1), + 'chr merge_attributes'(I,J1,K1), + sort(U,L1), + 'chr merge_attributes'(J,L1,M1), + sort(V,N1), + 'chr merge_attributes'(K,N1,O1), + sort(W,P1), + 'chr merge_attributes'(L,P1,Q1), + sort(X,R1), + 'chr merge_attributes'(M,R1,S1), + T1 is N\/Y, + put_attr(B,chr_translate,v(T1,A1,C1,E1,G1,I1,K1,M1,O1,Q1,S1)) ; put_attr(B,chr_translate,A) ), attach_increment(C,A). -attr_unify_hook(A,B) :- - sort(A,D), - ( var(B) -> - ( get_attr(B,chr_translate,E) -> - true +attr_unify_hook(v(L,B,C,D,E,F,G,H,I,J,K),A) :- + sort(B,M), + sort(C,N), + sort(D,O), + sort(E,P), + sort(F,Q), + sort(G,R), + sort(H,S), + sort(I,T), + sort(J,U), + sort(K,V), + ( var(A) -> + ( get_attr(A,chr_translate,C2) -> + C2=v(G1,W,X,Y,Z,A1,B1,C1,D1,E1,F1), + sort(W,H1), + 'chr merge_attributes'(M,H1,I1), + sort(X,J1), + 'chr merge_attributes'(N,J1,K1), + sort(Y,L1), + 'chr merge_attributes'(O,L1,M1), + sort(Z,N1), + 'chr merge_attributes'(P,N1,O1), + sort(A1,P1), + 'chr merge_attributes'(Q,P1,Q1), + sort(B1,R1), + 'chr merge_attributes'(R,R1,S1), + sort(C1,T1), + 'chr merge_attributes'(S,T1,U1), + sort(D1,V1), + 'chr merge_attributes'(T,V1,W1), + sort(E1,X1), + 'chr merge_attributes'(U,X1,Y1), + sort(F1,Z1), + 'chr merge_attributes'(V,Z1,A2), + B2 is L\/G1, + put_attr(A,chr_translate,v(B2,I1,K1,M1,O1,Q1,S1,U1,W1,Y1,A2)), + '$run_suspensions_generate_empty_named_history_initialisation___1'(M), + '$run_suspensions_background_info___2'(K1), + '$run_suspensions_get_bg_info___2'(M1), + '$run_suspensions_type_definition___2'(O1), + '$run_suspensions_type_alias___2'(Q1), + '$run_suspensions_unalias_type___2'(S1), + '$run_suspensions_static_type_check_var___3'(U1), + '$run_suspensions_static_atomic_builtin_type_check_var___3'(W1), + '$run_suspensions_atomic_type___1'(Y1), + '$run_suspensions_enumerated_atomic_type___2'(A2) ; - E=[] - ), - sort(E,F), - 'chr merge_attributes'(D,F,C), - put_attr(B,chr_translate,C), - 'chr run_suspensions'(C) + put_attr(A,chr_translate,v(L,M,N,O,P,Q,R,S,T,U,V)), + '$run_suspensions_generate_empty_named_history_initialisation___1'(M), + '$run_suspensions_background_info___2'(N), + '$run_suspensions_get_bg_info___2'(O), + '$run_suspensions_type_definition___2'(P), + '$run_suspensions_type_alias___2'(Q), + '$run_suspensions_unalias_type___2'(R), + '$run_suspensions_static_type_check_var___3'(S), + '$run_suspensions_static_atomic_builtin_type_check_var___3'(T), + '$run_suspensions_atomic_type___1'(U), + '$run_suspensions_enumerated_atomic_type___2'(V) + ) ; - ( compound(B) -> - term_variables(B,G), - attach_increment(G,D) + ( compound(A) -> + term_variables(A,D2), + attach_increment(D2,v(L,M,N,O,P,Q,R,S,T,U,V)) ; true ), - 'chr run_suspensions'(A) + '$run_suspensions_generate_empty_named_history_initialisation___1'(M), + '$run_suspensions_background_info___2'(N), + '$run_suspensions_get_bg_info___2'(O), + '$run_suspensions_type_definition___2'(P), + '$run_suspensions_type_alias___2'(Q), + '$run_suspensions_unalias_type___2'(R), + '$run_suspensions_static_type_check_var___3'(S), + '$run_suspensions_static_atomic_builtin_type_check_var___3'(T), + '$run_suspensions_atomic_type___1'(U), + '$run_suspensions_enumerated_atomic_type___2'(V) ). -activate_constraint(A,B,C,D) :- - arg(2,C,E), - E=mutable(F), - 'chr update_mutable'(active,E), - ( nonvar(D) -> - true +'$novel_production'(A,B) :- + arg(3,A,C), + ( hprolog:get_ds(B,C,_) -> + fail ; - arg(4,C,G), - G=mutable(H), - D is H+1, - 'chr update_mutable'(D,G) + true + ). +'$extend_history'(A,B) :- + arg(3,A,C), + hprolog:put_ds(B,C,x,D), + setarg(3,A,D). +'$run_suspensions_generate_empty_named_history_initialisation___1'([]). +'$run_suspensions_generate_empty_named_history_initialisation___1'([A|B]) :- + A=suspension(_,C,D,_,E), + ( C==active -> + setarg(2,A,triggered), + F is D+1, + setarg(3,A,F), + generate_empty_named_history_initialisation___1__0(E,A), + ( C==triggered -> + setarg(2,A,active) + ; + true + ) + ; + true ), - ( compound(F) -> - term_variables(F,B), - 'chr none_locked'(B), - A=yes + '$run_suspensions_generate_empty_named_history_initialisation___1'(B). +'$run_suspensions_background_info___2'([]). +'$run_suspensions_background_info___2'([A|B]) :- + A=suspension(_,C,_,D,_,E,F), + setarg(2,A,triggered), + G is D+1, + setarg(4,A,G), + background_info___2__0(E,F,A), + ( C==triggered -> + setarg(2,A,active) ; - ( 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_target_module/1'(A) :- - true, - b_setval('$chr_store_global_singleton_chr_translate:target_module/1',A). -'$delete_from_store_target_module/1'(_) :- - true, - b_setval('$chr_store_global_singleton_chr_translate:target_module/1',[]). -'$insert_in_store_indexed_argument/2'(A) :- - true, - arg(7,A,B), - nb_getval('$chr_store_multi_hash_chr_translate:indexed_argument/2-1',C), - insert_ht(C,B,A), - true. -'$delete_from_store_indexed_argument/2'(A) :- - true, - arg(7,A,B), - nb_getval('$chr_store_multi_hash_chr_translate:indexed_argument/2-1',C), - delete_ht(C,B,A), - true. -'$insert_in_store_constraint_mode/2'(A) :- - true, - nb_getval('$chr_store_global_ground_chr_translate:constraint_mode/2',B), - b_setval('$chr_store_global_ground_chr_translate:constraint_mode/2',[A|B]), - arg(7,A,C), - nb_getval('$chr_store_multi_hash_chr_translate:constraint_mode/2-1',D), - insert_ht(D,C,A), - true. -'$delete_from_store_constraint_mode/2'(A) :- - true, - nb_getval('$chr_store_global_ground_chr_translate:constraint_mode/2',B), - 'chr sbag_del_element'(B,A,C), - b_setval('$chr_store_global_ground_chr_translate:constraint_mode/2',C), - arg(7,A,D), - nb_getval('$chr_store_multi_hash_chr_translate:constraint_mode/2-1',E), - delete_ht(E,D,A), - true. -'$insert_in_store_store_type/2'(A) :- - true, - arg(7,A,B), - nb_getval('$chr_store_multi_hash_chr_translate:store_type/2-1',C), - insert_ht(C,B,A), - true. -'$delete_from_store_store_type/2'(A) :- - true, - arg(7,A,B), - nb_getval('$chr_store_multi_hash_chr_translate:store_type/2-1',C), - delete_ht(C,B,A), - true. -'$insert_in_store_actual_store_types/2'(A) :- - true, - arg(7,A,B), - nb_getval('$chr_store_multi_hash_chr_translate:actual_store_types/2-1',C), - insert_ht(C,B,A), - true. -'$delete_from_store_actual_store_types/2'(A) :- - true, - arg(7,A,B), - nb_getval('$chr_store_multi_hash_chr_translate:actual_store_types/2-1',C), - delete_ht(C,B,A), - true. -'$insert_in_store_assumed_store_type/2'(A) :- - true, - arg(7,A,B), - nb_getval('$chr_store_multi_hash_chr_translate:assumed_store_type/2-1',C), - insert_ht(C,B,A), - true. -'$delete_from_store_assumed_store_type/2'(A) :- - true, - arg(7,A,B), - nb_getval('$chr_store_multi_hash_chr_translate:assumed_store_type/2-1',C), - delete_ht(C,B,A), - true. -'$insert_in_store_rule_count/1'(A) :- - true, - nb_getval('$chr_store_global_ground_chr_translate:rule_count/1',B), - b_setval('$chr_store_global_ground_chr_translate:rule_count/1',[A|B]). -'$delete_from_store_rule_count/1'(A) :- - true, - nb_getval('$chr_store_global_ground_chr_translate:rule_count/1',B), - 'chr sbag_del_element'(B,A,C), - b_setval('$chr_store_global_ground_chr_translate:rule_count/1',C). -'$insert_in_store_passive/2'(A) :- - true, - nb_getval('$chr_store_global_ground_chr_translate:passive/2',B), - b_setval('$chr_store_global_ground_chr_translate:passive/2',[A|B]), - arg(7,A,C), - nb_getval('$chr_store_multi_hash_chr_translate:passive/2-1',D), - insert_ht(D,C,A), - true. -'$delete_from_store_passive/2'(A) :- - true, - nb_getval('$chr_store_global_ground_chr_translate:passive/2',B), - 'chr sbag_del_element'(B,A,C), - b_setval('$chr_store_global_ground_chr_translate:passive/2',C), - arg(7,A,D), - nb_getval('$chr_store_multi_hash_chr_translate:passive/2-1',E), - delete_ht(E,D,A), - true. -'$insert_in_store_occurrence/4'(A) :- - true, - nb_getval('$chr_store_global_ground_chr_translate:occurrence/4',B), - b_setval('$chr_store_global_ground_chr_translate:occurrence/4',[A|B]), - arg(9,A,C), - nb_getval('$chr_store_multi_hash_chr_translate:occurrence/4-3',D), - insert_ht(D,C,A), - true, - arg(7,A,E), - nb_getval('$chr_store_multi_hash_chr_translate:occurrence/4-1',F), - insert_ht(F,E,A), - true. -'$delete_from_store_occurrence/4'(A) :- - true, - nb_getval('$chr_store_global_ground_chr_translate:occurrence/4',B), - 'chr sbag_del_element'(B,A,C), - b_setval('$chr_store_global_ground_chr_translate:occurrence/4',C), - arg(9,A,D), - nb_getval('$chr_store_multi_hash_chr_translate:occurrence/4-3',E), - delete_ht(E,D,A), - true, - arg(7,A,F), - nb_getval('$chr_store_multi_hash_chr_translate:occurrence/4-1',G), - delete_ht(G,F,A), - true. -'$insert_in_store_max_occurrence/2'(A) :- - true, - arg(7,A,B), - nb_getval('$chr_store_multi_hash_chr_translate:max_occurrence/2-1',C), - insert_ht(C,B,A), - true. -'$delete_from_store_max_occurrence/2'(A) :- - true, - arg(7,A,B), - nb_getval('$chr_store_multi_hash_chr_translate:max_occurrence/2-1',C), - delete_ht(C,B,A), - true. -'$insert_in_store_allocation_occurrence/2'(A) :- - true, - arg(7,A,B), - nb_getval('$chr_store_multi_hash_chr_translate:allocation_occurrence/2-1',C), - insert_ht(C,B,A), - true, - nb_getval('$chr_store_global_ground_chr_translate:allocation_occurrence/2',D), - b_setval('$chr_store_global_ground_chr_translate:allocation_occurrence/2',[A|D]). -'$delete_from_store_allocation_occurrence/2'(A) :- - true, - arg(7,A,B), - nb_getval('$chr_store_multi_hash_chr_translate:allocation_occurrence/2-1',C), - delete_ht(C,B,A), - true, - nb_getval('$chr_store_global_ground_chr_translate:allocation_occurrence/2',D), - 'chr sbag_del_element'(D,A,E), - b_setval('$chr_store_global_ground_chr_translate:allocation_occurrence/2',E). -'$insert_in_store_rule/2'(A) :- - true, - nb_getval('$chr_store_global_ground_chr_translate:rule/2',B), - b_setval('$chr_store_global_ground_chr_translate:rule/2',[A|B]), - arg(7,A,C), - nb_getval('$chr_store_multi_hash_chr_translate:rule/2-1',D), - insert_ht(D,C,A), - true. -'$delete_from_store_rule/2'(A) :- - true, - nb_getval('$chr_store_global_ground_chr_translate:rule/2',B), - 'chr sbag_del_element'(B,A,C), - b_setval('$chr_store_global_ground_chr_translate:rule/2',C), - arg(7,A,D), - nb_getval('$chr_store_multi_hash_chr_translate:rule/2-1',E), - delete_ht(E,D,A), - true. -'$insert_in_store_least_occurrence/2'(A) :- - true, - nb_getval('$chr_store_global_ground_chr_translate:least_occurrence/2',B), - b_setval('$chr_store_global_ground_chr_translate:least_occurrence/2',[A|B]), - arg(7,A,C), - nb_getval('$chr_store_multi_hash_chr_translate:least_occurrence/2-1',D), - insert_ht(D,C,A), - true. -'$delete_from_store_least_occurrence/2'(A) :- - true, - nb_getval('$chr_store_global_ground_chr_translate:least_occurrence/2',B), - 'chr sbag_del_element'(B,A,C), - b_setval('$chr_store_global_ground_chr_translate:least_occurrence/2',C), - arg(7,A,D), - nb_getval('$chr_store_multi_hash_chr_translate:least_occurrence/2-1',E), - delete_ht(E,D,A), - true. -'$insert_in_store_constraint_index/2'(A) :- - true, - arg(7,A,B), - nb_getval('$chr_store_multi_hash_chr_translate:constraint_index/2-1',C), - insert_ht(C,B,A), - true. -'$delete_from_store_constraint_index/2'(A) :- - true, - arg(7,A,B), - nb_getval('$chr_store_multi_hash_chr_translate:constraint_index/2-1',C), - delete_ht(C,B,A), - true. -'$insert_in_store_max_constraint_index/1'(A) :- - true, - nb_getval('$chr_store_global_ground_chr_translate:max_constraint_index/1',B), - b_setval('$chr_store_global_ground_chr_translate:max_constraint_index/1',[A|B]). -'$delete_from_store_max_constraint_index/1'(A) :- - true, - nb_getval('$chr_store_global_ground_chr_translate:max_constraint_index/1',B), - 'chr sbag_del_element'(B,A,C), - b_setval('$chr_store_global_ground_chr_translate:max_constraint_index/1',C). -'$insert_in_store_observes/2'(A) :- - true, - arg(7,A,B), - nb_getval('$chr_store_multi_hash_chr_translate:observes/2-1',C), - insert_ht(C,B,A), - true. -'$delete_from_store_observes/2'(A) :- - true, - arg(7,A,B), - nb_getval('$chr_store_multi_hash_chr_translate:observes/2-1',C), - delete_ht(C,B,A), - true. -'$insert_in_store_spawns_observer/2'(A) :- - true, - arg(7,A,B), - nb_getval('$chr_store_multi_hash_chr_translate:spawns_observer/2-1',C), - insert_ht(C,B,A), - true, - arg(8,A,D), - nb_getval('$chr_store_multi_hash_chr_translate:spawns_observer/2-2',E), - insert_ht(E,D,A), - true. -'$delete_from_store_spawns_observer/2'(A) :- - true, - arg(7,A,B), - nb_getval('$chr_store_multi_hash_chr_translate:spawns_observer/2-1',C), - delete_ht(C,B,A), - true, - arg(8,A,D), - nb_getval('$chr_store_multi_hash_chr_translate:spawns_observer/2-2',E), - delete_ht(E,D,A), - true. -'$insert_in_store_observes_indirectly/2'(A) :- - true, - arg(7,A,B), - nb_getval('$chr_store_multi_hash_chr_translate:observes_indirectly/2-1',C), - insert_ht(C,B,A), - true. -'$delete_from_store_observes_indirectly/2'(A) :- - true, - arg(7,A,B), - nb_getval('$chr_store_multi_hash_chr_translate:observes_indirectly/2-1',C), - delete_ht(C,B,A), - true. -'$insert_in_store_prev_guard_list/7'(A) :- - true, - nb_getval('$chr_store_global_ground_chr_translate:prev_guard_list/7',B), - b_setval('$chr_store_global_ground_chr_translate:prev_guard_list/7',[A|B]), - arg(8,A,C), - nb_getval('$chr_store_multi_hash_chr_translate:prev_guard_list/7-2',D), - insert_ht(D,C,A), - true, - arg(7,A,E), - nb_getval('$chr_store_multi_hash_chr_translate:prev_guard_list/7-1',F), - insert_ht(F,E,A), - true. -'$delete_from_store_prev_guard_list/7'(A) :- - true, - nb_getval('$chr_store_global_ground_chr_translate:prev_guard_list/7',B), - 'chr sbag_del_element'(B,A,C), - b_setval('$chr_store_global_ground_chr_translate:prev_guard_list/7',C), - arg(8,A,D), - nb_getval('$chr_store_multi_hash_chr_translate:prev_guard_list/7-2',E), - delete_ht(E,D,A), - true, - arg(7,A,F), - nb_getval('$chr_store_multi_hash_chr_translate:prev_guard_list/7-1',G), - delete_ht(G,F,A), - true. -'$insert_in_store_set_all_passive/1'(A) :- - true, - arg(7,A,B), - nb_getval('$chr_store_multi_hash_chr_translate:set_all_passive/1-1',C), - insert_ht(C,B,A), - true. -'$delete_from_store_set_all_passive/1'(A) :- - true, - arg(7,A,B), - nb_getval('$chr_store_multi_hash_chr_translate:set_all_passive/1-1',C), - delete_ht(C,B,A), - true. -'$insert_in_store_multiple_occ_constraints_checked/1'(A) :- - true, - nb_getval('$chr_store_global_ground_chr_translate:multiple_occ_constraints_checked/1',B), - b_setval('$chr_store_global_ground_chr_translate:multiple_occ_constraints_checked/1',[A|B]). -'$delete_from_store_multiple_occ_constraints_checked/1'(A) :- - true, - nb_getval('$chr_store_global_ground_chr_translate:multiple_occ_constraints_checked/1',B), - 'chr sbag_del_element'(B,A,C), - b_setval('$chr_store_global_ground_chr_translate:multiple_occ_constraints_checked/1',C). -'$insert_in_store_type_definition/2'(A) :- - true, - 'chr global_term_ref_1'(B), - ( get_attr(B,chr_translate,C) -> - D=[A|C], - put_attr(B,chr_translate,D) - ; - put_attr(B,chr_translate,[A]) - ). -'$delete_from_store_type_definition/2'(A) :- - true, - 'chr global_term_ref_1'(B), - ( get_attr(B,chr_translate,C) -> - 'chr sbag_del_element'(C,A,D), - ( D==[] -> - del_attr(B,chr_translate) + true + ), + '$run_suspensions_background_info___2'(B). +'$run_suspensions_get_bg_info___2'([]). +'$run_suspensions_get_bg_info___2'([A|B]) :- + A=suspension(_,C,_,D,_,E,F), + ( C==active -> + setarg(2,A,triggered), + G is D+1, + setarg(4,A,G), + get_bg_info___2__0(E,F,A), + ( C==triggered -> + setarg(2,A,active) ; - put_attr(B,chr_translate,D) + true ) ; true + ), + '$run_suspensions_get_bg_info___2'(B). +'$run_suspensions_type_definition___2'([]). +'$run_suspensions_type_definition___2'([A|B]) :- + A=suspension(_,C,_,D,_,E,F), + ( C==active -> + setarg(2,A,triggered), + G is D+1, + setarg(4,A,G), + type_definition___2__0(E,F,A), + ( C==triggered -> + setarg(2,A,active) + ; + true + ) + ; + true + ), + '$run_suspensions_type_definition___2'(B). +'$run_suspensions_type_alias___2'([]). +'$run_suspensions_type_alias___2'([A|B]) :- + A=suspension(_,C,_,D,_,E,F), + ( C==active -> + setarg(2,A,triggered), + G is D+1, + setarg(4,A,G), + type_alias___2__0(E,F,A), + ( C==triggered -> + setarg(2,A,active) + ; + true + ) + ; + true + ), + '$run_suspensions_type_alias___2'(B). +'$run_suspensions_unalias_type___2'([]). +'$run_suspensions_unalias_type___2'([A|B]) :- + A=suspension(_,C,_,D,E), + ( C==active -> + setarg(2,A,triggered), + unalias_type___2__0(D,E,A), + ( C==triggered -> + setarg(2,A,active) + ; + true + ) + ; + true + ), + '$run_suspensions_unalias_type___2'(B). +'$run_suspensions_static_type_check_var___3'([]). +'$run_suspensions_static_type_check_var___3'([A|B]) :- + A=suspension(_,C,_,D,E,F), + ( C==active -> + setarg(2,A,triggered), + static_type_check_var___3__0(D,E,F,A), + ( C==triggered -> + setarg(2,A,active) + ; + true + ) + ; + true + ), + '$run_suspensions_static_type_check_var___3'(B). +'$run_suspensions_static_atomic_builtin_type_check_var___3'([]). +'$run_suspensions_static_atomic_builtin_type_check_var___3'([A|B]) :- + A=suspension(_,C,_,D,E,F), + ( C==active -> + setarg(2,A,triggered), + static_atomic_builtin_type_check_var___3__0(D,E,F,A), + ( C==triggered -> + setarg(2,A,active) + ; + true + ) + ; + true + ), + '$run_suspensions_static_atomic_builtin_type_check_var___3'(B). +'$run_suspensions_atomic_type___1'([]). +'$run_suspensions_atomic_type___1'([A|B]) :- + A=suspension(_,C,_,D), + ( C==active -> + setarg(2,A,triggered), + atomic_type___1__0(D,A), + ( C==triggered -> + setarg(2,A,active) + ; + true + ) + ; + true + ), + '$run_suspensions_atomic_type___1'(B). +'$run_suspensions_enumerated_atomic_type___2'([]). +'$run_suspensions_enumerated_atomic_type___2'([A|B]) :- + A=suspension(_,C,_,D,E), + ( C==active -> + setarg(2,A,triggered), + enumerated_atomic_type___2__0(D,E,A), + ( C==triggered -> + setarg(2,A,active) + ; + true + ) + ; + true + ), + '$run_suspensions_enumerated_atomic_type___2'(B). +'$enumerate_constraints'(A) :- + ( nonvar(A) -> + functor(A,B,_), + '$enumerate_constraints'(B,A) + ; + '$enumerate_constraints'(_,A) ). -'$insert_in_store_constraint_type/2'(A) :- - true, - arg(7,A,B), - nb_getval('$chr_store_multi_hash_chr_translate:constraint_type/2-1',C), - insert_ht(C,B,A), - true. -'$delete_from_store_constraint_type/2'(A) :- - true, - arg(7,A,B), - nb_getval('$chr_store_multi_hash_chr_translate:constraint_type/2-1',C), - delete_ht(C,B,A), - true. -'$insert_in_store_add_type_information/3'(A) :- - true, - nb_getval('$chr_store_global_ground_chr_translate:add_type_information/3',B), - b_setval('$chr_store_global_ground_chr_translate:add_type_information/3',[A|B]). -'$delete_from_store_add_type_information/3'(A) :- - true, - nb_getval('$chr_store_global_ground_chr_translate:add_type_information/3',B), - 'chr sbag_del_element'(B,A,C), - b_setval('$chr_store_global_ground_chr_translate:add_type_information/3',C). -'$insert_in_store_stored/3'(A) :- - true, - arg(7,A,B), - nb_getval('$chr_store_multi_hash_chr_translate:stored/3-1',C), - insert_ht(C,B,A), - true, - nb_getval('$chr_store_global_ground_chr_translate:stored/3',D), - b_setval('$chr_store_global_ground_chr_translate:stored/3',[A|D]). -'$delete_from_store_stored/3'(A) :- - true, - arg(7,A,B), - nb_getval('$chr_store_multi_hash_chr_translate:stored/3-1',C), - delete_ht(C,B,A), - true, - nb_getval('$chr_store_global_ground_chr_translate:stored/3',D), - 'chr sbag_del_element'(D,A,E), - b_setval('$chr_store_global_ground_chr_translate:stored/3',E). -'$insert_in_store_stored_complete/3'(A) :- - true, - arg(7,A,B), - nb_getval('$chr_store_multi_hash_chr_translate:stored_complete/3-1',C), - insert_ht(C,B,A), - true. -'$delete_from_store_stored_complete/3'(A) :- - true, - arg(7,A,B), - nb_getval('$chr_store_multi_hash_chr_translate:stored_complete/3-1',C), - delete_ht(C,B,A), - true. -'$insert_in_store_check_all_passive/2'(A) :- - true, - arg(7,A,B), - nb_getval('$chr_store_multi_hash_chr_translate:check_all_passive/2-1',C), - insert_ht(C,B,A), - true. -'$delete_from_store_check_all_passive/2'(A) :- - true, - arg(7,A,B), - nb_getval('$chr_store_multi_hash_chr_translate:check_all_passive/2-1',C), - delete_ht(C,B,A), - true. -'$insert_in_store_constraints_code1/3'(A) :- - true, - arg(7,A,B), - nb_getval('$chr_store_multi_hash_chr_translate:constraints_code1/3-1',C), - insert_ht(C,B,A), - true, - nb_getval('$chr_store_global_ground_chr_translate:constraints_code1/3',D), - b_setval('$chr_store_global_ground_chr_translate:constraints_code1/3',[A|D]). -'$delete_from_store_constraints_code1/3'(A) :- - true, - arg(7,A,B), - nb_getval('$chr_store_multi_hash_chr_translate:constraints_code1/3-1',C), - delete_ht(C,B,A), - true, - nb_getval('$chr_store_global_ground_chr_translate:constraints_code1/3',D), - 'chr sbag_del_element'(D,A,E), - b_setval('$chr_store_global_ground_chr_translate:constraints_code1/3',E). -'$insert_in_store_use_auxiliary_predicate/1'(A) :- - true, - arg(7,A,B), - nb_getval('$chr_store_multi_hash_chr_translate:use_auxiliary_predicate/1-1',C), - insert_ht(C,B,A), - true. -'$delete_from_store_use_auxiliary_predicate/1'(A) :- - true, - arg(7,A,B), - nb_getval('$chr_store_multi_hash_chr_translate:use_auxiliary_predicate/1-1',C), - delete_ht(C,B,A), - true. -'$insert_in_store_functional_dependency/4'(A) :- - true, - arg(7,A,B), - nb_getval('$chr_store_multi_hash_chr_translate:functional_dependency/4-1',C), - insert_ht(C,B,A), - true. -'$delete_from_store_functional_dependency/4'(A) :- - true, - arg(7,A,B), - nb_getval('$chr_store_multi_hash_chr_translate:functional_dependency/4-1',C), - delete_ht(C,B,A), - true. -'$insert_in_store_initial_call_pattern/1'(A) :- - true, - nb_getval('$chr_store_global_ground_chr_translate:initial_call_pattern/1',B), - b_setval('$chr_store_global_ground_chr_translate:initial_call_pattern/1',[A|B]), - arg(7,A,C), - nb_getval('$chr_store_multi_hash_chr_translate:initial_call_pattern/1-1',D), - insert_ht(D,C,A), - true. -'$delete_from_store_initial_call_pattern/1'(A) :- - true, - nb_getval('$chr_store_global_ground_chr_translate:initial_call_pattern/1',B), - 'chr sbag_del_element'(B,A,C), - b_setval('$chr_store_global_ground_chr_translate:initial_call_pattern/1',C), - arg(7,A,D), - nb_getval('$chr_store_multi_hash_chr_translate:initial_call_pattern/1-1',E), - delete_ht(E,D,A), - true. -'$insert_in_store_call_pattern/1'(A) :- - true, - arg(7,A,B), - nb_getval('$chr_store_multi_hash_chr_translate:call_pattern/1-1',C), - insert_ht(C,B,A), - true, - nb_getval('$chr_store_global_ground_chr_translate:call_pattern/1',D), - b_setval('$chr_store_global_ground_chr_translate:call_pattern/1',[A|D]). -'$delete_from_store_call_pattern/1'(A) :- - true, - arg(7,A,B), - nb_getval('$chr_store_multi_hash_chr_translate:call_pattern/1-1',C), - delete_ht(C,B,A), - true, - nb_getval('$chr_store_global_ground_chr_translate:call_pattern/1',D), - 'chr sbag_del_element'(D,A,E), - b_setval('$chr_store_global_ground_chr_translate:call_pattern/1',E). -'$insert_in_store_final_answer_pattern/2'(A) :- - true, - arg(7,A,B), - nb_getval('$chr_store_multi_hash_chr_translate:final_answer_pattern/2-1',C), - insert_ht(C,B,A), - true. -'$delete_from_store_final_answer_pattern/2'(A) :- - true, - arg(7,A,B), - nb_getval('$chr_store_multi_hash_chr_translate:final_answer_pattern/2-1',C), - delete_ht(C,B,A), - true. -'$insert_in_store_abstract_constraints/1'(A) :- - true, - nb_getval('$chr_store_global_ground_chr_translate:abstract_constraints/1',B), - b_setval('$chr_store_global_ground_chr_translate:abstract_constraints/1',[A|B]). -'$delete_from_store_abstract_constraints/1'(A) :- - true, - nb_getval('$chr_store_global_ground_chr_translate:abstract_constraints/1',B), - 'chr sbag_del_element'(B,A,C), - b_setval('$chr_store_global_ground_chr_translate:abstract_constraints/1',C). -'$insert_in_store_depends_on/2'(A) :- - true, - arg(7,A,B), - nb_getval('$chr_store_multi_hash_chr_translate:depends_on/2-1',C), - insert_ht(C,B,A), - true, - nb_getval('$chr_store_global_ground_chr_translate:depends_on/2',D), - b_setval('$chr_store_global_ground_chr_translate:depends_on/2',[A|D]), - arg(8,A,E), - nb_getval('$chr_store_multi_hash_chr_translate:depends_on/2-2',F), - insert_ht(F,E,A), - true. -'$delete_from_store_depends_on/2'(A) :- - true, - arg(7,A,B), - nb_getval('$chr_store_multi_hash_chr_translate:depends_on/2-1',C), - delete_ht(C,B,A), - true, - nb_getval('$chr_store_global_ground_chr_translate:depends_on/2',D), - 'chr sbag_del_element'(D,A,E), - b_setval('$chr_store_global_ground_chr_translate:depends_on/2',E), - arg(8,A,F), - nb_getval('$chr_store_multi_hash_chr_translate:depends_on/2-2',G), - delete_ht(G,F,A), - true. -'$insert_in_store_depends_on_ap/4'(A) :- - true, - arg(8,A,B), - nb_getval('$chr_store_multi_hash_chr_translate:depends_on_ap/4-2',C), - insert_ht(C,B,A), - true, - arg(9,A,D), - nb_getval('$chr_store_multi_hash_chr_translate:depends_on_ap/4-3',E), - insert_ht(E,D,A), - true. -'$delete_from_store_depends_on_ap/4'(A) :- - true, - arg(8,A,B), - nb_getval('$chr_store_multi_hash_chr_translate:depends_on_ap/4-2',C), - delete_ht(C,B,A), - true, - arg(9,A,D), - nb_getval('$chr_store_multi_hash_chr_translate:depends_on_ap/4-3',E), - delete_ht(E,D,A), - true. -'$insert_in_store_depends_on_goal/2'(A) :- - true, - arg(8,A,B), - nb_getval('$chr_store_multi_hash_chr_translate:depends_on_goal/2-2',C), - insert_ht(C,B,A), - true, - arg(7,A,D), - nb_getval('$chr_store_multi_hash_chr_translate:depends_on_goal/2-1',E), - insert_ht(E,D,A), - true. -'$delete_from_store_depends_on_goal/2'(A) :- - true, - arg(8,A,B), - nb_getval('$chr_store_multi_hash_chr_translate:depends_on_goal/2-2',C), - delete_ht(C,B,A), - true, - arg(7,A,D), - nb_getval('$chr_store_multi_hash_chr_translate:depends_on_goal/2-1',E), - delete_ht(E,D,A), - true. -'$insert_in_store_ai_observed/2'(A) :- - true, - arg(7,A,B), - nb_getval('$chr_store_multi_hash_chr_translate:ai_observed/2-1',C), - insert_ht(C,B,A), - true. -'$delete_from_store_ai_observed/2'(A) :- - true, - arg(7,A,B), - nb_getval('$chr_store_multi_hash_chr_translate:ai_observed/2-1',C), - delete_ht(C,B,A), - true. -'$insert_in_store_ai_not_observed/2'(A) :- - true, - arg(7,A,B), - nb_getval('$chr_store_multi_hash_chr_translate:ai_not_observed/2-1',C), - insert_ht(C,B,A), - true. -'$delete_from_store_ai_not_observed/2'(A) :- - true, - arg(7,A,B), - nb_getval('$chr_store_multi_hash_chr_translate:ai_not_observed/2-1',C), - delete_ht(C,B,A), - true. -'$insert_in_store_depends_on_as/3'(A) :- - true, - arg(9,A,B), - nb_getval('$chr_store_multi_hash_chr_translate:depends_on_as/3-3',C), - insert_ht(C,B,A), - true, - arg(8,A,D), - nb_getval('$chr_store_multi_hash_chr_translate:depends_on_as/3-2',E), - insert_ht(E,D,A), - true. -'$delete_from_store_depends_on_as/3'(A) :- - true, - arg(9,A,B), - nb_getval('$chr_store_multi_hash_chr_translate:depends_on_as/3-3',C), - delete_ht(C,B,A), - true, - arg(8,A,D), - nb_getval('$chr_store_multi_hash_chr_translate:depends_on_as/3-2',E), - delete_ht(E,D,A), - true. -'$enumerate_suspensions'(A) :- +'$enumerate_constraints'(chr_source_file,A) :- + nb_getval('$chr_store_global_ground_chr_translate____chr_source_file___1',C), + 'chr sbag_member'(B,C), + B=suspension(_,_,_,D), + A=chr_source_file(D). +'$enumerate_constraints'(target_module,A) :- + nb_getval('$chr_store_global_ground_chr_translate____target_module___1',C), + 'chr sbag_member'(B,C), + B=suspension(_,_,_,D), + A=target_module(D). +'$enumerate_constraints'(line_number,A) :- + nb_getval('$chr_store_multi_hash_chr_translate____line_number___2-1',B), + value_ht(B,C), + C=suspension(_,_,D,E), + A=line_number(D,E). +'$enumerate_constraints'(indexed_argument,A) :- + nb_getval('$chr_store_multi_hash_chr_translate____indexed_argument___2-1',B), + value_ht(B,C), + C=suspension(_,_,D,E), + A=indexed_argument(D,E). +'$enumerate_constraints'(constraint_mode,A) :- + nb_getval('$chr_store_global_ground_chr_translate____constraint_mode___2',C), + 'chr sbag_member'(B,C), + B=suspension(_,_,_,_,D,E), + A=constraint_mode(D,E). +'$enumerate_constraints'(none_suspended_on_variables,A) :- + nb_getval('$chr_store_global_ground_chr_translate____none_suspended_on_variables___0',C), + 'chr sbag_member'(B,C), + B=suspension(_,_,_), + A=none_suspended_on_variables. +'$enumerate_constraints'(store_type,A) :- + nb_getval('$chr_store_multi_hash_chr_translate____store_type___2-1',B), + value_ht(B,C), + C=suspension(_,_,D,E), + A=store_type(D,E). +'$enumerate_constraints'(actual_store_types,A) :- + nb_getval('$chr_store_multi_hash_chr_translate____actual_store_types___2-1',B), + value_ht(B,C), + C=suspension(_,_,D,E), + A=actual_store_types(D,E). +'$enumerate_constraints'(assumed_store_type,A) :- + nb_getval('$chr_store_multi_hash_chr_translate____assumed_store_type___2-1',B), + value_ht(B,C), + C=suspension(_,_,D,E), + A=assumed_store_type(D,E). +'$enumerate_constraints'(validate_store_type_assumption,A) :- + nb_getval('$chr_store_multi_hash_chr_translate____validate_store_type_assumption___1-1',B), + value_ht(B,C), + C=suspension(_,_,D), + A=validate_store_type_assumption(D). +'$enumerate_constraints'(rule_count,A) :- + nb_getval('$chr_store_global_ground_chr_translate____rule_count___1',C), + 'chr sbag_member'(B,C), + B=suspension(_,_,_,D), + A=rule_count(D). +'$enumerate_constraints'(passive,A) :- + nb_getval('$chr_store_multi_hash_chr_translate____passive___2-1',B), + value_ht(B,C), + C=suspension(_,_,_,D,E), + A=passive(D,E). +'$enumerate_constraints'(occurrence,A) :- + nb_getval('$chr_store_global_ground_chr_translate____occurrence___5',C), + 'chr sbag_member'(B,C), + B=suspension(_,_,_,_,D,E,F,G,H), + A=occurrence(D,E,F,G,H). +'$enumerate_constraints'(max_occurrence,A) :- + nb_getval('$chr_store_multi_hash_chr_translate____max_occurrence___2-1',B), + value_ht(B,C), + C=suspension(_,_,_,D,E), + A=max_occurrence(D,E). +'$enumerate_constraints'(allocation_occurrence,A) :- + nb_getval('$chr_store_multi_hash_chr_translate____allocation_occurrence___2-1',B), + value_ht(B,C), + C=suspension(_,_,_,D,E), + A=allocation_occurrence(D,E). +'$enumerate_constraints'(rule,A) :- + nb_getval('$chr_store_global_ground_chr_translate____rule___2',C), + 'chr sbag_member'(B,C), + B=suspension(_,_,_,_,D,E), + A=rule(D,E). +'$enumerate_constraints'(least_occurrence,A) :- + nb_getval('$chr_store_multi_hash_chr_translate____least_occurrence___2-12',B), + value_ht(B,C), + C=suspension(_,_,D,E), + A=least_occurrence(D,E). +'$enumerate_constraints'(constraint_index,A) :- + nb_getval('$chr_store_multi_hash_chr_translate____constraint_index___2-2',B), + value_ht(B,C), + C=suspension(_,_,D,E), + A=constraint_index(D,E). +'$enumerate_constraints'(max_constraint_index,A) :- + nb_getval('$chr_store_global_ground_chr_translate____max_constraint_index___1',C), + 'chr sbag_member'(B,C), + B=suspension(_,_,_,D), + A=max_constraint_index(D). +'$enumerate_constraints'(identifier_size,A) :- + nb_getval('$chr_store_global_ground_chr_translate____identifier_size___1',C), + 'chr sbag_member'(B,C), + B=suspension(_,_,_,D), + A=identifier_size(D). +'$enumerate_constraints'(identifier_index,A) :- + nb_getval('$chr_store_multi_hash_chr_translate____identifier_index___3-12',B), + value_ht(B,C), + C=suspension(_,_,D,E,F), + A=identifier_index(D,E,F). +'$enumerate_constraints'(type_indexed_identifier_size,A) :- + nb_getval('$chr_store_multi_hash_chr_translate____type_indexed_identifier_size___2-1',B), + value_ht(B,C), + C=suspension(_,_,D,E), + A=type_indexed_identifier_size(D,E). +'$enumerate_constraints'(type_indexed_identifier_index,A) :- + nb_getval('$chr_store_multi_hash_chr_translate____type_indexed_identifier_index___4-123',B), + value_ht(B,C), + C=suspension(_,_,D,E,F,G), + A=type_indexed_identifier_index(D,E,F,G). +'$enumerate_constraints'(no_history,A) :- + nb_getval('$chr_store_multi_hash_chr_translate____no_history___1-1',B), + value_ht(B,C), + C=suspension(_,_,D), + A=no_history(D). +'$enumerate_constraints'(history,A) :- + nb_getval('$chr_store_multi_hash_chr_translate____history___3-2',B), + value_ht(B,C), + C=suspension(_,_,_,D,E,F), + A=history(D,E,F). +'$enumerate_constraints'(indexing_spec,A) :- + nb_getval('$chr_store_multi_hash_chr_translate____indexing_spec___2-1',B), + value_ht(B,C), + C=suspension(_,_,D,E), + A=indexing_spec(D,E). +'$enumerate_constraints'(observation_analysis,A) :- + nb_getval('$chr_store_global_ground_chr_translate____observation_analysis___1',C), + 'chr sbag_member'(B,C), + B=suspension(_,_,_,D), + A=observation_analysis(D). +'$enumerate_constraints'(spawns,A) :- + nb_getval('$chr_store_global_ground_chr_translate____spawns___3',C), + 'chr sbag_member'(B,C), + B=suspension(_,_,_,_,D,E,F), + A=spawns(D,E,F). +'$enumerate_constraints'(spawns_all,A) :- + nb_getval('$chr_store_multi_hash_chr_translate____spawns_all___2-1',B), + value_ht(B,C), + C=suspension(_,_,D,E), + A=spawns_all(D,E). +'$enumerate_constraints'(spawns_all_triggers,A) :- + nb_getval('$chr_store_global_ground_chr_translate____spawns_all_triggers___2',C), + 'chr sbag_member'(B,C), + B=suspension(_,_,_,_,D,E), + A=spawns_all_triggers(D,E). +'$enumerate_constraints'(spawns_all_triggers_implies_spawns_all,A) :- + nb_getval('$chr_store_global_ground_chr_translate____spawns_all_triggers_implies_spawns_all___0',C), + 'chr sbag_member'(B,C), + B=suspension(_,_,_), + A=spawns_all_triggers_implies_spawns_all. +'$enumerate_constraints'(empty_named_history_initialisations,A) :- + nb_getval('$chr_store_global_ground_chr_translate____empty_named_history_initialisations___2',C), + 'chr sbag_member'(B,C), + B=suspension(_,_,_,D,E), + A=empty_named_history_initialisations(D,E). +'$enumerate_constraints'(generate_empty_named_history_initialisation,A) :- + nb_getval('$chr_store_global_list_chr_translate____generate_empty_named_history_initialisation___1',C), + 'chr sbag_member'(B,C), + B=suspension(_,_,_,_,D), + A=generate_empty_named_history_initialisation(D). +'$enumerate_constraints'(find_empty_named_histories,A) :- + nb_getval('$chr_store_global_ground_chr_translate____find_empty_named_histories___0',C), + 'chr sbag_member'(B,C), + B=suspension(_,_,_,_), + A=find_empty_named_histories. +'$enumerate_constraints'(module_initializer,A) :- + nb_getval('$chr_store_global_ground_chr_translate____module_initializer___1',C), + 'chr sbag_member'(B,C), + B=suspension(_,_,_,D), + A=module_initializer(D). +'$enumerate_constraints'(actual_atomic_multi_hash_keys,A) :- + nb_getval('$chr_store_multi_hash_chr_translate____actual_atomic_multi_hash_keys___3-12',B), + value_ht(B,C), + C=suspension(_,_,D,E,F), + A=actual_atomic_multi_hash_keys(D,E,F). +'$enumerate_constraints'(actual_ground_multi_hash_keys,A) :- + nb_getval('$chr_store_multi_hash_chr_translate____actual_ground_multi_hash_keys___3-12',B), + value_ht(B,C), + C=suspension(_,_,D,E,F), + A=actual_ground_multi_hash_keys(D,E,F). +'$enumerate_constraints'(actual_non_ground_multi_hash_key,A) :- + nb_getval('$chr_store_multi_hash_chr_translate____actual_non_ground_multi_hash_key___2-12',B), + value_ht(B,C), + C=suspension(_,_,D,E), + A=actual_non_ground_multi_hash_key(D,E). +'$enumerate_constraints'(prolog_global_variable,A) :- + nb_getval('$chr_store_global_ground_chr_translate____prolog_global_variable___1',C), + 'chr sbag_member'(B,C), + B=suspension(_,_,_,D), + A=prolog_global_variable(D). +'$enumerate_constraints'(background_info,A) :- + nb_getval('$chr_store_global_ground_chr_translate____background_info___1',C), + 'chr sbag_member'(B,C), + B=suspension(_,_,_,D), + A=background_info(D). +'$enumerate_constraints'(background_info,A) :- + nb_getval('$chr_store_global_list_chr_translate____background_info___2',C), + 'chr sbag_member'(B,C), + B=suspension(_,_,_,_,_,D,E), + A=background_info(D,E). +'$enumerate_constraints'(get_bg_info,A) :- + nb_getval('$chr_store_global_list_chr_translate____get_bg_info___2',C), + 'chr sbag_member'(B,C), + B=suspension(_,_,_,_,_,D,E), + A=get_bg_info(D,E). +'$enumerate_constraints'(get_bg_info_answer,A) :- + nb_getval('$chr_store_global_ground_chr_translate____get_bg_info_answer___1',C), + 'chr sbag_member'(B,C), + B=suspension(_,_,_,D), + A=get_bg_info_answer(D). +'$enumerate_constraints'(prev_guard_list,A) :- + nb_getval('$chr_store_global_ground_chr_translate____prev_guard_list___6',C), + 'chr sbag_member'(B,C), + B=suspension(_,_,_,_,D,E,F,G,H,I), + A=prev_guard_list(D,E,F,G,H,I). +'$enumerate_constraints'(set_all_passive,A) :- + nb_getval('$chr_store_multi_hash_chr_translate____set_all_passive___1-1',B), + value_ht(B,C), + C=suspension(_,_,_,D), + A=set_all_passive(D). +'$enumerate_constraints'(precompute_head_matchings,A) :- + nb_getval('$chr_store_global_ground_chr_translate____precompute_head_matchings___0',C), + 'chr sbag_member'(B,C), + B=suspension(_,_,_,_), + A=precompute_head_matchings. +'$enumerate_constraints'(make_head_matchings_explicit_memo_table,A) :- + nb_getval('$chr_store_multi_hash_chr_translate____make_head_matchings_explicit_memo_table___3-1',B), + value_ht(B,C), + C=suspension(_,_,D,E,F), + A=make_head_matchings_explicit_memo_table(D,E,F). +'$enumerate_constraints'(multiple_occ_constraints_checked,A) :- + nb_getval('$chr_store_global_ground_chr_translate____multiple_occ_constraints_checked___1',C), + 'chr sbag_member'(B,C), + B=suspension(_,_,_,D), + A=multiple_occ_constraints_checked(D). +'$enumerate_constraints'(type_definition,A) :- + nb_getval('$chr_store_global_list_chr_translate____type_definition___2',C), + 'chr sbag_member'(B,C), + B=suspension(_,_,_,_,_,D,E), + A=type_definition(D,E). +'$enumerate_constraints'(type_alias,A) :- + nb_getval('$chr_store_global_list_chr_translate____type_alias___2',C), + 'chr sbag_member'(B,C), + B=suspension(_,_,_,_,_,D,E), + A=type_alias(D,E). +'$enumerate_constraints'(constraint_type,A) :- + nb_getval('$chr_store_global_ground_chr_translate____constraint_type___2',C), + 'chr sbag_member'(B,C), + B=suspension(_,_,_,D,E), + A=constraint_type(D,E). +'$enumerate_constraints'(unalias_type,A) :- + nb_getval('$chr_store_global_list_chr_translate____unalias_type___2',C), + 'chr sbag_member'(B,C), + B=suspension(_,_,_,D,E), + A=unalias_type(D,E). +'$enumerate_constraints'(types_modes_condition,A) :- + nb_getval('$chr_store_global_ground_chr_translate____types_modes_condition___3',C), + 'chr sbag_member'(B,C), + B=suspension(_,_,_,D,E,F), + A=types_modes_condition(D,E,F). +'$enumerate_constraints'(static_type_check,A) :- + nb_getval('$chr_store_global_ground_chr_translate____static_type_check___0',C), + 'chr sbag_member'(B,C), + B=suspension(_,_,_,_), + A=static_type_check. +'$enumerate_constraints'(static_type_check_var,A) :- + nb_getval('$chr_store_global_list_chr_translate____static_type_check_var___3',C), + 'chr sbag_member'(B,C), + B=suspension(_,_,_,D,E,F), + A=static_type_check_var(D,E,F). +'$enumerate_constraints'(static_atomic_builtin_type_check_var,A) :- + nb_getval('$chr_store_global_list_chr_translate____static_atomic_builtin_type_check_var___3',C), + 'chr sbag_member'(B,C), + B=suspension(_,_,_,D,E,F), + A=static_atomic_builtin_type_check_var(D,E,F). +'$enumerate_constraints'(dynamic_type_check,A) :- + nb_getval('$chr_store_global_ground_chr_translate____dynamic_type_check___0',C), + 'chr sbag_member'(B,C), + B=suspension(_,_,_,_), + A=dynamic_type_check. +'$enumerate_constraints'(dynamic_type_check_clauses,A) :- + nb_getval('$chr_store_global_ground_chr_translate____dynamic_type_check_clauses___1',C), + 'chr sbag_member'(B,C), + B=suspension(_,_,_,D), + A=dynamic_type_check_clauses(D). +'$enumerate_constraints'(atomic_type,A) :- + nb_getval('$chr_store_global_list_chr_translate____atomic_type___1',C), + 'chr sbag_member'(B,C), + B=suspension(_,_,_,D), + A=atomic_type(D). +'$enumerate_constraints'(enumerated_atomic_type,A) :- + nb_getval('$chr_store_global_list_chr_translate____enumerated_atomic_type___2',C), + 'chr sbag_member'(B,C), + B=suspension(_,_,_,D,E), + A=enumerated_atomic_type(D,E). +'$enumerate_constraints'(stored,A) :- + nb_getval('$chr_store_multi_hash_chr_translate____stored___3-1',B), + value_ht(B,C), + C=suspension(_,_,D,E,F), + A=stored(D,E,F). +'$enumerate_constraints'(stored_complete,A) :- + nb_getval('$chr_store_multi_hash_chr_translate____stored_complete___3-1',B), + value_ht(B,C), + C=suspension(_,_,_,D,E,F), + A=stored_complete(D,E,F). +'$enumerate_constraints'(check_all_passive,A) :- + nb_getval('$chr_store_multi_hash_chr_translate____check_all_passive___2-12',B), + value_ht(B,C), + C=suspension(_,_,D,E), + A=check_all_passive(D,E). +'$enumerate_constraints'(constraints_code1,A) :- + nb_getval('$chr_store_global_ground_chr_translate____constraints_code1___3',C), + 'chr sbag_member'(B,C), + B=suspension(_,_,_,D,E,F), + A=constraints_code1(D,E,F). +'$enumerate_constraints'(memo_has_active_occurrence,A) :- + nb_getval('$chr_store_multi_hash_chr_translate____memo_has_active_occurrence___1-1',B), + value_ht(B,C), + C=suspension(_,_,D), + A=memo_has_active_occurrence(D). +'$enumerate_constraints'(use_auxiliary_predicate,A) :- + nb_getval('$chr_store_multi_hash_chr_translate____use_auxiliary_predicate___1-1',B), + value_ht(B,C), + C=suspension(_,_,D), + A=use_auxiliary_predicate(D). +'$enumerate_constraints'(use_auxiliary_predicate,A) :- + nb_getval('$chr_store_multi_hash_chr_translate____use_auxiliary_predicate___2-1',B), + value_ht(B,C), + C=suspension(_,_,D,E), + A=use_auxiliary_predicate(D,E). +'$enumerate_constraints'(use_auxiliary_module,A) :- + nb_getval('$chr_store_multi_hash_chr_translate____use_auxiliary_module___1-1',B), + value_ht(B,C), + C=suspension(_,_,D), + A=use_auxiliary_module(D). +'$enumerate_constraints'(functional_dependency,A) :- + nb_getval('$chr_store_multi_hash_chr_translate____functional_dependency___4-1',B), + value_ht(B,C), + C=suspension(_,_,D,E,F,G), + A=functional_dependency(D,E,F,G). +'$enumerate_constraints'(initial_call_pattern,A) :- + nb_getval('$chr_store_multi_hash_chr_translate____initial_call_pattern___1-1',B), + value_ht(B,C), + C=suspension(_,_,_,D), + A=initial_call_pattern(D). +'$enumerate_constraints'(call_pattern,A) :- + nb_getval('$chr_store_multi_hash_chr_translate____call_pattern___1-1',B), + value_ht(B,C), + C=suspension(_,_,D), + A=call_pattern(D). +'$enumerate_constraints'(final_answer_pattern,A) :- + nb_getval('$chr_store_multi_hash_chr_translate____final_answer_pattern___2-1',B), + value_ht(B,C), + C=suspension(_,_,_,D,E), + A=final_answer_pattern(D,E). +'$enumerate_constraints'(abstract_constraints,A) :- + nb_getval('$chr_store_global_ground_chr_translate____abstract_constraints___1',C), + 'chr sbag_member'(B,C), + B=suspension(_,_,_,D), + A=abstract_constraints(D). +'$enumerate_constraints'(depends_on,A) :- + nb_getval('$chr_store_multi_hash_chr_translate____depends_on___2-1',B), + value_ht(B,C), + C=suspension(_,_,_,D,E), + A=depends_on(D,E). +'$enumerate_constraints'(depends_on_ap,A) :- + nb_getval('$chr_store_multi_hash_chr_translate____depends_on_ap___4-2',B), + value_ht(B,C), + C=suspension(_,_,_,D,E,F,G), + A=depends_on_ap(D,E,F,G). +'$enumerate_constraints'(depends_on_goal,A) :- + nb_getval('$chr_store_multi_hash_chr_translate____depends_on_goal___2-2',B), + value_ht(B,C), + C=suspension(_,_,_,D,E), + A=depends_on_goal(D,E). +'$enumerate_constraints'(ai_observed_internal,A) :- + nb_getval('$chr_store_global_ground_chr_translate____ai_observed_internal___2',C), + 'chr sbag_member'(B,C), + B=suspension(_,_,_,D,E), + A=ai_observed_internal(D,E). +'$enumerate_constraints'(ai_not_observed_internal,A) :- + nb_getval('$chr_store_global_ground_chr_translate____ai_not_observed_internal___2',C), + 'chr sbag_member'(B,C), + B=suspension(_,_,_,D,E), + A=ai_not_observed_internal(D,E). +'$enumerate_constraints'(ai_not_observed,A) :- + nb_getval('$chr_store_multi_hash_chr_translate____ai_not_observed___2-12',B), + value_ht(B,C), + C=suspension(_,_,D,E), + A=ai_not_observed(D,E). +'$enumerate_constraints'(depends_on_as,A) :- + nb_getval('$chr_store_multi_hash_chr_translate____depends_on_as___3-3',B), + value_ht(B,C), + C=suspension(_,_,_,D,E,F), + A=depends_on_as(D,E,F). +'$enumerate_constraints'(ai_observation_gather_results,A) :- + nb_getval('$chr_store_global_ground_chr_translate____ai_observation_gather_results___0',C), + 'chr sbag_member'(B,C), + B=suspension(_,_,_), + A=ai_observation_gather_results. +'$enumerate_constraints'(ai_observation_memoed_simplification_rest_heads,A) :- + nb_getval('$chr_store_multi_hash_chr_translate____ai_observation_memoed_simplification_rest_heads___3-12',B), + value_ht(B,C), + C=suspension(_,_,D,E,F), + A=ai_observation_memoed_simplification_rest_heads(D,E,F). +'$enumerate_constraints'(ai_observation_memoed_propagation_rest_heads,A) :- + nb_getval('$chr_store_multi_hash_chr_translate____ai_observation_memoed_propagation_rest_heads___3-12',B), + value_ht(B,C), + C=suspension(_,_,D,E,F), + A=ai_observation_memoed_propagation_rest_heads(D,E,F). +'$enumerate_constraints'(ai_observation_memoed_abstract_goal,A) :- + nb_getval('$chr_store_multi_hash_chr_translate____ai_observation_memoed_abstract_goal___2-1',B), + value_ht(B,C), + C=suspension(_,_,D,E), + A=ai_observation_memoed_abstract_goal(D,E). +'$enumerate_constraints'(ai_observation_memo_abstract_goal,A) :- + nb_getval('$chr_store_global_ground_chr_translate____ai_observation_memo_abstract_goal___2',C), + 'chr sbag_member'(B,C), + B=suspension(_,_,_,D,E), + A=ai_observation_memo_abstract_goal(D,E). +'$enumerate_constraints'(partial_wake_analysis,A) :- + nb_getval('$chr_store_global_ground_chr_translate____partial_wake_analysis___0',C), + 'chr sbag_member'(B,C), + B=suspension(_,_,_,_), + A=partial_wake_analysis. +'$enumerate_constraints'(no_partial_wake,A) :- + nb_getval('$chr_store_multi_hash_chr_translate____no_partial_wake___1-1',B), + value_ht(B,C), + C=suspension(_,_,D), + A=no_partial_wake(D). +'$enumerate_constraints'(phase_end,A) :- + nb_getval('$chr_store_multi_hash_chr_translate____phase_end___1-1',B), + value_ht(B,C), + C=suspension(_,_,D), + A=phase_end(D). +'$enumerate_constraints'(delay_phase_end,A) :- + nb_getval('$chr_store_multi_hash_chr_translate____delay_phase_end___2-1',B), + value_ht(B,C), + C=suspension(_,_,D,E), + A=delay_phase_end(D,E). +'$enumerate_constraints'(does_use_history,A) :- + nb_getval('$chr_store_multi_hash_chr_translate____does_use_history___2-1',B), + value_ht(B,C), + C=suspension(_,_,D,E), + A=does_use_history(D,E). +'$enumerate_constraints'(does_use_field,A) :- + nb_getval('$chr_store_multi_hash_chr_translate____does_use_field___2-12',B), + value_ht(B,C), + C=suspension(_,_,D,E), + A=does_use_field(D,E). +'$enumerate_constraints'(uses_state,A) :- + nb_getval('$chr_store_multi_hash_chr_translate____uses_state___2-12',B), + value_ht(B,C), + C=suspension(_,_,D,E), + A=uses_state(D,E). +'$enumerate_constraints'(if_used_state,A) :- + nb_getval('$chr_store_global_ground_chr_translate____if_used_state___5',C), + 'chr sbag_member'(B,C), + B=suspension(_,_,_,D,E,F,G,H), + A=if_used_state(D,E,F,G,H). +'$enumerate_constraints'(used_states_known,A) :- + nb_getval('$chr_store_global_ground_chr_translate____used_states_known___0',C), + 'chr sbag_member'(B,C), + B=suspension(_,_,_), + A=used_states_known. +'$enumerate_constraints'(stored_assertion,A) :- + nb_getval('$chr_store_multi_hash_chr_translate____stored_assertion___1-1',B), + value_ht(B,C), + C=suspension(_,_,D), + A=stored_assertion(D). +'$enumerate_constraints'(never_stored_default,A) :- + nb_getval('$chr_store_multi_hash_chr_translate____never_stored_default___2-1',B), + value_ht(B,C), + C=suspension(_,_,D,E), + A=never_stored_default(D,E). +'$enumerate_constraints'(never_stored_rules,A) :- + nb_getval('$chr_store_global_ground_chr_translate____never_stored_rules___2',C), + 'chr sbag_member'(B,C), + B=suspension(_,_,_,D,E), + A=never_stored_rules(D,E). +'$enumerate_constraints'(continuation_occurrence,A) :- + nb_getval('$chr_store_multi_hash_chr_translate____continuation_occurrence___3-12',B), + value_ht(B,C), + C=suspension(_,_,D,E,F), + A=continuation_occurrence(D,E,F). +'$enumerate_constraints'(skip_to_next_id,A) :- + nb_getval('$chr_store_multi_hash_chr_translate____skip_to_next_id___2-12',B), + value_ht(B,C), + C=suspension(_,_,_,D,E), + A=skip_to_next_id(D,E). +'$enumerate_constraints'(set_occurrence_code_id,A) :- + nb_getval('$chr_store_multi_hash_chr_translate____set_occurrence_code_id___3-12',B), + value_ht(B,C), + C=suspension(_,_,D,E,F), + A=set_occurrence_code_id(D,E,F). +'$enumerate_constraints'(occurrence_code_id,A) :- + nb_getval('$chr_store_multi_hash_chr_translate____occurrence_code_id___3-12',B), + value_ht(B,C), + C=suspension(_,_,D,E,F), + A=occurrence_code_id(D,E,F). +'$enumerate_constraints'(chr_constants,A) :- + nb_getval('$chr_store_global_ground_chr_translate____chr_constants___2',C), + 'chr sbag_member'(B,C), + B=suspension(_,_,_,D,E), + A=chr_constants(D,E). +'$enumerate_constraints'(print_chr_constants,A) :- + nb_getval('$chr_store_global_ground_chr_translate____print_chr_constants___0',C), + 'chr sbag_member'(B,C), + B=suspension(_,_,_), + A=print_chr_constants. +'$via1_multi_hash_line_number___2-1'(A,B) :- + nb_getval('$chr_store_multi_hash_chr_translate____line_number___2-1',C), + lookup_ht1(C,A,A,B). +'$via1_multi_hash_indexed_argument___2-1'(A,B) :- + nb_getval('$chr_store_multi_hash_chr_translate____indexed_argument___2-1',C), + lookup_ht(C,A,B). +'$via1_multi_hash_indexed_argument___2-12'(A,B) :- + nb_getval('$chr_store_multi_hash_chr_translate____indexed_argument___2-12',C), + lookup_ht(C,A,B). +'$via1_multi_hash_constraint_mode___2-1'(A,B) :- + nb_getval('$chr_store_multi_hash_chr_translate____constraint_mode___2-1',C), + lookup_ht(C,A,B). +'$via1_multi_hash_store_type___2-1'(A,B) :- + nb_getval('$chr_store_multi_hash_chr_translate____store_type___2-1',C), + lookup_ht(C,A,B). +'$via1_multi_hash_actual_store_types___2-1'(A,B) :- + nb_getval('$chr_store_multi_hash_chr_translate____actual_store_types___2-1',C), + lookup_ht(C,A,B). +'$via1_multi_hash_assumed_store_type___2-1'(A,B) :- + nb_getval('$chr_store_multi_hash_chr_translate____assumed_store_type___2-1',C), + lookup_ht(C,A,B). +'$via1_multi_hash_validate_store_type_assumption___1-1'(A,B) :- + nb_getval('$chr_store_multi_hash_chr_translate____validate_store_type_assumption___1-1',C), + lookup_ht(C,A,B). +'$via1_multi_hash_passive___2-1'(A,B) :- + nb_getval('$chr_store_multi_hash_chr_translate____passive___2-1',C), + lookup_ht(C,A,B). +'$via1_multi_hash_passive___2-12'(A,B) :- + nb_getval('$chr_store_multi_hash_chr_translate____passive___2-12',C), + lookup_ht(C,A,B). +'$via1_multi_hash_occurrence___5-12'(A,B) :- + nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-12',C), + lookup_ht(C,A,B). +'$via1_multi_hash_occurrence___5-3'(A,B) :- + nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-3',C), + lookup_ht1(C,A,A,B). +'$via1_multi_hash_occurrence___5-34'(A,B) :- + nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-34',C), + lookup_ht(C,A,B). +'$via1_multi_hash_occurrence___5-1'(A,B) :- + nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-1',C), + lookup_ht(C,A,B). +'$via1_multi_hash_max_occurrence___2-1'(A,B) :- + nb_getval('$chr_store_multi_hash_chr_translate____max_occurrence___2-1',C), + lookup_ht(C,A,B). +'$via1_multi_hash_allocation_occurrence___2-1'(A,B) :- + nb_getval('$chr_store_multi_hash_chr_translate____allocation_occurrence___2-1',C), + lookup_ht(C,A,B). +'$via1_multi_hash_allocation_occurrence___2-12'(A,B) :- + nb_getval('$chr_store_multi_hash_chr_translate____allocation_occurrence___2-12',C), + lookup_ht(C,A,B). +'$via1_multi_hash_rule___2-1'(A,B) :- + nb_getval('$chr_store_multi_hash_chr_translate____rule___2-1',C), + lookup_ht1(C,A,A,B). +'$via1_multi_hash_least_occurrence___2-12'(A,B) :- + nb_getval('$chr_store_multi_hash_chr_translate____least_occurrence___2-12',C), + lookup_ht(C,A,B). +'$via1_multi_hash_least_occurrence___2-1'(A,B) :- + nb_getval('$chr_store_multi_hash_chr_translate____least_occurrence___2-1',C), + lookup_ht(C,A,B). +'$via1_multi_hash_constraint_index___2-2'(A,B) :- + nb_getval('$chr_store_multi_hash_chr_translate____constraint_index___2-2',C), + D is abs(A), + lookup_ht1(C,D,A,B). +'$via1_multi_hash_constraint_index___2-1'(A,B) :- + nb_getval('$chr_store_multi_hash_chr_translate____constraint_index___2-1',C), + lookup_ht(C,A,B). +'$via1_multi_hash_identifier_index___3-12'(A,B) :- + nb_getval('$chr_store_multi_hash_chr_translate____identifier_index___3-12',C), + lookup_ht(C,A,B). +'$via1_multi_hash_type_indexed_identifier_size___2-1'(A,B) :- + nb_getval('$chr_store_multi_hash_chr_translate____type_indexed_identifier_size___2-1',C), + lookup_ht(C,A,B). +'$via1_multi_hash_type_indexed_identifier_index___4-123'(A,B) :- + nb_getval('$chr_store_multi_hash_chr_translate____type_indexed_identifier_index___4-123',C), + lookup_ht(C,A,B). +'$via1_multi_hash_type_indexed_identifier_index___4-23'(A,B) :- + nb_getval('$chr_store_multi_hash_chr_translate____type_indexed_identifier_index___4-23',C), + lookup_ht(C,A,B). +'$via1_multi_hash_no_history___1-1'(A,B) :- + nb_getval('$chr_store_multi_hash_chr_translate____no_history___1-1',C), + D is abs(A), + lookup_ht1(C,D,A,B). +'$chr_store_constants_chr_translate____history___3___[3]'([],'$chr_store_constants_chr_translate____history___3___[3]___[]'). +'$via1_multi_hash_history___3-2'(A,B) :- + nb_getval('$chr_store_multi_hash_chr_translate____history___3-2',C), + lookup_ht(C,A,B). +'$via1_multi_hash_history___3-1'(A,B) :- + nb_getval('$chr_store_multi_hash_chr_translate____history___3-1',C), + lookup_ht(C,A,B). +'$via1_multi_hash_indexing_spec___2-1'(A,B) :- + nb_getval('$chr_store_multi_hash_chr_translate____indexing_spec___2-1',C), + lookup_ht(C,A,B). +'$via1_multi_hash_spawns___3-12'(A,B) :- + nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-12',C), + lookup_ht(C,A,B). +'$via1_multi_hash_spawns___3-1'(A,B) :- + nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-1',C), + lookup_ht(C,A,B). +'$via1_multi_hash_spawns___3-3'(A,B) :- + nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-3',C), + lookup_ht(C,A,B). +'$via1_multi_hash_spawns___3-123'(A,B) :- + nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-123',C), + lookup_ht(C,A,B). +'$via1_multi_hash_spawns_all___2-1'(A,B) :- + nb_getval('$chr_store_multi_hash_chr_translate____spawns_all___2-1',C), + lookup_ht(C,A,B). +'$via1_multi_hash_spawns_all___2-12'(A,B) :- + nb_getval('$chr_store_multi_hash_chr_translate____spawns_all___2-12',C), + lookup_ht(C,A,B). +'$via1_multi_hash_spawns_all_triggers___2-1'(A,B) :- + nb_getval('$chr_store_multi_hash_chr_translate____spawns_all_triggers___2-1',C), + lookup_ht(C,A,B). +'$via1_multi_hash_spawns_all_triggers___2-12'(A,B) :- + nb_getval('$chr_store_multi_hash_chr_translate____spawns_all_triggers___2-12',C), + lookup_ht(C,A,B). +'$via1_multi_hash_actual_atomic_multi_hash_keys___3-12'(A,B) :- + nb_getval('$chr_store_multi_hash_chr_translate____actual_atomic_multi_hash_keys___3-12',C), + lookup_ht(C,A,B). +'$via1_multi_hash_actual_atomic_multi_hash_keys___3-1'(A,B) :- + nb_getval('$chr_store_multi_hash_chr_translate____actual_atomic_multi_hash_keys___3-1',C), + lookup_ht(C,A,B). +'$via1_multi_hash_actual_ground_multi_hash_keys___3-12'(A,B) :- + nb_getval('$chr_store_multi_hash_chr_translate____actual_ground_multi_hash_keys___3-12',C), + lookup_ht(C,A,B). +'$via1_multi_hash_actual_ground_multi_hash_keys___3-1'(A,B) :- + nb_getval('$chr_store_multi_hash_chr_translate____actual_ground_multi_hash_keys___3-1',C), + lookup_ht(C,A,B). +'$via1_multi_hash_actual_non_ground_multi_hash_key___2-12'(A,B) :- + nb_getval('$chr_store_multi_hash_chr_translate____actual_non_ground_multi_hash_key___2-12',C), + lookup_ht(C,A,B). +'$via1_multi_hash_prolog_global_variable___1-1'(A,B) :- + nb_getval('$chr_store_multi_hash_chr_translate____prolog_global_variable___1-1',C), + lookup_ht(C,A,B). +'$via1_multi_hash_prev_guard_list___6-1'(A,B) :- + nb_getval('$chr_store_multi_hash_chr_translate____prev_guard_list___6-1',C), + lookup_ht(C,A,B). +'$via1_multi_hash_set_all_passive___1-1'(A,B) :- + nb_getval('$chr_store_multi_hash_chr_translate____set_all_passive___1-1',C), + lookup_ht(C,A,B). +'$via1_multi_hash_make_head_matchings_explicit_memo_table___3-1'(A,B) :- + nb_getval('$chr_store_multi_hash_chr_translate____make_head_matchings_explicit_memo_table___3-1',C), + lookup_ht(C,A,B). +'$via1_multi_hash_constraint_type___2-1'(A,B) :- + nb_getval('$chr_store_multi_hash_chr_translate____constraint_type___2-1',C), + lookup_ht(C,A,B). +'$via1_multi_hash_stored___3-1'(A,B) :- + nb_getval('$chr_store_multi_hash_chr_translate____stored___3-1',C), + lookup_ht(C,A,B). +'$via1_multi_hash_stored___3-123'(A,B) :- + nb_getval('$chr_store_multi_hash_chr_translate____stored___3-123',C), + lookup_ht(C,A,B). +'$via1_multi_hash_stored_complete___3-1'(A,B) :- + nb_getval('$chr_store_multi_hash_chr_translate____stored_complete___3-1',C), + lookup_ht(C,A,B). +'$via1_multi_hash_check_all_passive___2-12'(A,B) :- + nb_getval('$chr_store_multi_hash_chr_translate____check_all_passive___2-12',C), + lookup_ht(C,A,B). +'$via1_multi_hash_check_all_passive___2-1'(A,B) :- + nb_getval('$chr_store_multi_hash_chr_translate____check_all_passive___2-1',C), + lookup_ht(C,A,B). +'$via1_multi_hash_memo_has_active_occurrence___1-1'(A,B) :- + nb_getval('$chr_store_multi_hash_chr_translate____memo_has_active_occurrence___1-1',C), + lookup_ht(C,A,B). +'$via1_multi_hash_use_auxiliary_predicate___1-1'(A,B) :- + nb_getval('$chr_store_multi_hash_chr_translate____use_auxiliary_predicate___1-1',C), + lookup_ht(C,A,B). +'$via1_multi_hash_use_auxiliary_predicate___2-1'(A,B) :- + nb_getval('$chr_store_multi_hash_chr_translate____use_auxiliary_predicate___2-1',C), + lookup_ht(C,A,B). +'$via1_multi_hash_use_auxiliary_predicate___2-12'(A,B) :- + nb_getval('$chr_store_multi_hash_chr_translate____use_auxiliary_predicate___2-12',C), + lookup_ht(C,A,B). +'$via1_multi_hash_use_auxiliary_module___1-1'(A,B) :- + nb_getval('$chr_store_multi_hash_chr_translate____use_auxiliary_module___1-1',C), + lookup_ht(C,A,B). +'$via1_multi_hash_functional_dependency___4-1'(A,B) :- + nb_getval('$chr_store_multi_hash_chr_translate____functional_dependency___4-1',C), + lookup_ht(C,A,B). +'$via1_multi_hash_functional_dependency___4-12'(A,B) :- + nb_getval('$chr_store_multi_hash_chr_translate____functional_dependency___4-12',C), + lookup_ht(C,A,B). +'$via1_multi_hash_initial_call_pattern___1-1'(A,B) :- + nb_getval('$chr_store_multi_hash_chr_translate____initial_call_pattern___1-1',C), + lookup_ht(C,A,B). +'$via1_multi_hash_call_pattern___1-1'(A,B) :- + nb_getval('$chr_store_multi_hash_chr_translate____call_pattern___1-1',C), + lookup_ht(C,A,B). +'$via1_multi_hash_final_answer_pattern___2-1'(A,B) :- + nb_getval('$chr_store_multi_hash_chr_translate____final_answer_pattern___2-1',C), + lookup_ht(C,A,B). +'$via1_multi_hash_depends_on___2-1'(A,B) :- + nb_getval('$chr_store_multi_hash_chr_translate____depends_on___2-1',C), + lookup_ht(C,A,B). +'$via1_multi_hash_depends_on___2-2'(A,B) :- + nb_getval('$chr_store_multi_hash_chr_translate____depends_on___2-2',C), + lookup_ht(C,A,B). +'$via1_multi_hash_depends_on_ap___4-2'(A,B) :- + nb_getval('$chr_store_multi_hash_chr_translate____depends_on_ap___4-2',C), + lookup_ht(C,A,B). +'$via1_multi_hash_depends_on_ap___4-3'(A,B) :- + nb_getval('$chr_store_multi_hash_chr_translate____depends_on_ap___4-3',C), + lookup_ht(C,A,B). +'$via1_multi_hash_depends_on_goal___2-2'(A,B) :- + nb_getval('$chr_store_multi_hash_chr_translate____depends_on_goal___2-2',C), + lookup_ht(C,A,B). +'$via1_multi_hash_ai_observed_internal___2-12'(A,B) :- + nb_getval('$chr_store_multi_hash_chr_translate____ai_observed_internal___2-12',C), + lookup_ht(C,A,B). +'$via1_multi_hash_ai_not_observed_internal___2-12'(A,B) :- + nb_getval('$chr_store_multi_hash_chr_translate____ai_not_observed_internal___2-12',C), + lookup_ht(C,A,B). +'$via1_multi_hash_ai_not_observed___2-12'(A,B) :- + nb_getval('$chr_store_multi_hash_chr_translate____ai_not_observed___2-12',C), + lookup_ht(C,A,B). +'$via1_multi_hash_depends_on_as___3-3'(A,B) :- + nb_getval('$chr_store_multi_hash_chr_translate____depends_on_as___3-3',C), + lookup_ht(C,A,B). +'$via1_multi_hash_depends_on_as___3-2'(A,B) :- + nb_getval('$chr_store_multi_hash_chr_translate____depends_on_as___3-2',C), + lookup_ht(C,A,B). +'$via1_multi_hash_ai_observation_memoed_simplification_rest_heads___3-12'(A,B) :- + nb_getval('$chr_store_multi_hash_chr_translate____ai_observation_memoed_simplification_rest_heads___3-12',C), + lookup_ht(C,A,B). +'$via1_multi_hash_ai_observation_memoed_propagation_rest_heads___3-12'(A,B) :- + nb_getval('$chr_store_multi_hash_chr_translate____ai_observation_memoed_propagation_rest_heads___3-12',C), + lookup_ht(C,A,B). +'$via1_multi_hash_ai_observation_memoed_abstract_goal___2-1'(A,B) :- + nb_getval('$chr_store_multi_hash_chr_translate____ai_observation_memoed_abstract_goal___2-1',C), + lookup_ht(C,A,B). +'$via1_multi_hash_no_partial_wake___1-1'(A,B) :- + nb_getval('$chr_store_multi_hash_chr_translate____no_partial_wake___1-1',C), + lookup_ht(C,A,B). +'$via1_multi_hash_phase_end___1-1'(A,B) :- + nb_getval('$chr_store_multi_hash_chr_translate____phase_end___1-1',C), + lookup_ht(C,A,B). +'$via1_multi_hash_delay_phase_end___2-1'(A,B) :- + nb_getval('$chr_store_multi_hash_chr_translate____delay_phase_end___2-1',C), + lookup_ht(C,A,B). +'$via1_multi_hash_does_use_history___2-1'(A,B) :- + nb_getval('$chr_store_multi_hash_chr_translate____does_use_history___2-1',C), + lookup_ht(C,A,B). +'$via1_multi_hash_does_use_history___2-12'(A,B) :- + nb_getval('$chr_store_multi_hash_chr_translate____does_use_history___2-12',C), + lookup_ht(C,A,B). +'$via1_multi_hash_does_use_field___2-12'(A,B) :- + nb_getval('$chr_store_multi_hash_chr_translate____does_use_field___2-12',C), + lookup_ht(C,A,B). +'$via1_multi_hash_uses_state___2-12'(A,B) :- + nb_getval('$chr_store_multi_hash_chr_translate____uses_state___2-12',C), + lookup_ht(C,A,B). +'$via1_multi_hash_if_used_state___5-12'(A,B) :- + nb_getval('$chr_store_multi_hash_chr_translate____if_used_state___5-12',C), + lookup_ht(C,A,B). +'$via1_multi_hash_stored_assertion___1-1'(A,B) :- + nb_getval('$chr_store_multi_hash_chr_translate____stored_assertion___1-1',C), + lookup_ht(C,A,B). +'$via1_multi_hash_never_stored_default___2-1'(A,B) :- + nb_getval('$chr_store_multi_hash_chr_translate____never_stored_default___2-1',C), + lookup_ht(C,A,B). +'$via1_multi_hash_continuation_occurrence___3-12'(A,B) :- + nb_getval('$chr_store_multi_hash_chr_translate____continuation_occurrence___3-12',C), + lookup_ht(C,A,B). +'$via1_multi_hash_skip_to_next_id___2-12'(A,B) :- + nb_getval('$chr_store_multi_hash_chr_translate____skip_to_next_id___2-12',C), + lookup_ht(C,A,B). +'$via1_multi_hash_set_occurrence_code_id___3-12'(A,B) :- + nb_getval('$chr_store_multi_hash_chr_translate____set_occurrence_code_id___3-12',C), + lookup_ht(C,A,B). +'$via1_multi_hash_occurrence_code_id___3-12'(A,B) :- + nb_getval('$chr_store_multi_hash_chr_translate____occurrence_code_id___3-12',C), + lookup_ht(C,A,B). +'$via1_multi_hash_chr_constants___2-1'(A,B) :- + nb_getval('$chr_store_multi_hash_chr_translate____chr_constants___2-1',C), + lookup_ht(C,A,B). +'$chr_initialization' :- + nb_setval('$chr_store_global_ground_chr_translate____print_chr_constants___0',[]), + new_ht(M3), + nb_setval('$chr_store_multi_hash_chr_translate____chr_constants___2-1',M3), + nb_setval('$chr_store_global_ground_chr_translate____chr_constants___2',[]), + new_ht(L3), + nb_setval('$chr_store_multi_hash_chr_translate____occurrence_code_id___3-12',L3), + new_ht(K3), + nb_setval('$chr_store_multi_hash_chr_translate____set_occurrence_code_id___3-12',K3), + new_ht(J3), + nb_setval('$chr_store_multi_hash_chr_translate____skip_to_next_id___2-12',J3), + new_ht(I3), + nb_setval('$chr_store_multi_hash_chr_translate____continuation_occurrence___3-12',I3), + nb_setval('$chr_store_global_ground_chr_translate____never_stored_rules___2',[]), + new_ht(H3), + nb_setval('$chr_store_multi_hash_chr_translate____never_stored_default___2-1',H3), + new_ht(G3), + nb_setval('$chr_store_multi_hash_chr_translate____stored_assertion___1-1',G3), + nb_setval('$chr_store_global_ground_chr_translate____used_states_known___0',[]), + new_ht(F3), + nb_setval('$chr_store_multi_hash_chr_translate____if_used_state___5-12',F3), + nb_setval('$chr_store_global_ground_chr_translate____if_used_state___5',[]), + new_ht(E3), + nb_setval('$chr_store_multi_hash_chr_translate____uses_state___2-12',E3), + new_ht(D3), + nb_setval('$chr_store_multi_hash_chr_translate____does_use_field___2-12',D3), + new_ht(C3), + nb_setval('$chr_store_multi_hash_chr_translate____does_use_history___2-12',C3), + new_ht(B3), + nb_setval('$chr_store_multi_hash_chr_translate____does_use_history___2-1',B3), + new_ht(A3), + nb_setval('$chr_store_multi_hash_chr_translate____delay_phase_end___2-1',A3), + new_ht(Z2), + nb_setval('$chr_store_multi_hash_chr_translate____phase_end___1-1',Z2), + new_ht(Y2), + nb_setval('$chr_store_multi_hash_chr_translate____no_partial_wake___1-1',Y2), + nb_setval('$chr_store_global_ground_chr_translate____partial_wake_analysis___0',[]), + nb_setval('$chr_store_global_ground_chr_translate____ai_observation_memo_abstract_goal___2',[]), + new_ht(X2), + nb_setval('$chr_store_multi_hash_chr_translate____ai_observation_memoed_abstract_goal___2-1',X2), + new_ht(W2), + nb_setval('$chr_store_multi_hash_chr_translate____ai_observation_memoed_propagation_rest_heads___3-12',W2), + new_ht(V2), + nb_setval('$chr_store_multi_hash_chr_translate____ai_observation_memoed_simplification_rest_heads___3-12',V2), + nb_setval('$chr_store_global_ground_chr_translate____ai_observation_gather_results___0',[]), + new_ht(U2), + nb_setval('$chr_store_multi_hash_chr_translate____depends_on_as___3-2',U2), + new_ht(T2), + nb_setval('$chr_store_multi_hash_chr_translate____depends_on_as___3-3',T2), + new_ht(S2), + nb_setval('$chr_store_multi_hash_chr_translate____ai_not_observed___2-12',S2), + new_ht(R2), + nb_setval('$chr_store_multi_hash_chr_translate____ai_not_observed_internal___2-12',R2), + nb_setval('$chr_store_global_ground_chr_translate____ai_not_observed_internal___2',[]), + new_ht(Q2), + nb_setval('$chr_store_multi_hash_chr_translate____ai_observed_internal___2-12',Q2), + nb_setval('$chr_store_global_ground_chr_translate____ai_observed_internal___2',[]), + new_ht(P2), + nb_setval('$chr_store_multi_hash_chr_translate____depends_on_goal___2-2',P2), + new_ht(O2), + nb_setval('$chr_store_multi_hash_chr_translate____depends_on_ap___4-3',O2), + new_ht(N2), + nb_setval('$chr_store_multi_hash_chr_translate____depends_on_ap___4-2',N2), + new_ht(M2), + nb_setval('$chr_store_multi_hash_chr_translate____depends_on___2-2',M2), + new_ht(L2), + nb_setval('$chr_store_multi_hash_chr_translate____depends_on___2-1',L2), + nb_setval('$chr_store_global_ground_chr_translate____abstract_constraints___1',[]), + new_ht(K2), + nb_setval('$chr_store_multi_hash_chr_translate____final_answer_pattern___2-1',K2), + new_ht(J2), + nb_setval('$chr_store_multi_hash_chr_translate____call_pattern___1-1',J2), + new_ht(I2), + nb_setval('$chr_store_multi_hash_chr_translate____initial_call_pattern___1-1',I2), + new_ht(H2), + nb_setval('$chr_store_multi_hash_chr_translate____functional_dependency___4-12',H2), + new_ht(G2), + nb_setval('$chr_store_multi_hash_chr_translate____functional_dependency___4-1',G2), + new_ht(F2), + nb_setval('$chr_store_multi_hash_chr_translate____use_auxiliary_module___1-1',F2), + new_ht(E2), + nb_setval('$chr_store_multi_hash_chr_translate____use_auxiliary_predicate___2-12',E2), + new_ht(D2), + nb_setval('$chr_store_multi_hash_chr_translate____use_auxiliary_predicate___2-1',D2), + new_ht(C2), + nb_setval('$chr_store_multi_hash_chr_translate____use_auxiliary_predicate___1-1',C2), + new_ht(B2), + nb_setval('$chr_store_multi_hash_chr_translate____memo_has_active_occurrence___1-1',B2), + nb_setval('$chr_store_global_ground_chr_translate____constraints_code1___3',[]), + new_ht(A2), + nb_setval('$chr_store_multi_hash_chr_translate____check_all_passive___2-1',A2), + new_ht(Z1), + nb_setval('$chr_store_multi_hash_chr_translate____check_all_passive___2-12',Z1), + new_ht(Y1), + nb_setval('$chr_store_multi_hash_chr_translate____stored_complete___3-1',Y1), + new_ht(X1), + nb_setval('$chr_store_multi_hash_chr_translate____stored___3-123',X1), + new_ht(W1), + nb_setval('$chr_store_multi_hash_chr_translate____stored___3-1',W1), + nb_setval('$chr_store_global_list_chr_translate____enumerated_atomic_type___2',[]), + nb_setval('$chr_store_global_list_chr_translate____atomic_type___1',[]), + nb_setval('$chr_store_global_ground_chr_translate____dynamic_type_check_clauses___1',[]), + nb_setval('$chr_store_global_ground_chr_translate____dynamic_type_check___0',[]), + nb_setval('$chr_store_global_list_chr_translate____static_atomic_builtin_type_check_var___3',[]), + nb_setval('$chr_store_global_list_chr_translate____static_type_check_var___3',[]), + nb_setval('$chr_store_global_ground_chr_translate____static_type_check___0',[]), + nb_setval('$chr_store_global_ground_chr_translate____types_modes_condition___3',[]), + nb_setval('$chr_store_global_list_chr_translate____unalias_type___2',[]), + new_ht(V1), + nb_setval('$chr_store_multi_hash_chr_translate____constraint_type___2-1',V1), + nb_setval('$chr_store_global_ground_chr_translate____constraint_type___2',[]), + nb_setval('$chr_store_global_list_chr_translate____type_alias___2',[]), + nb_setval('$chr_store_global_list_chr_translate____type_definition___2',[]), + nb_setval('$chr_store_global_ground_chr_translate____multiple_occ_constraints_checked___1',[]), + new_ht(U1), + nb_setval('$chr_store_multi_hash_chr_translate____make_head_matchings_explicit_memo_table___3-1',U1), + nb_setval('$chr_store_global_ground_chr_translate____precompute_head_matchings___0',[]), + new_ht(T1), + nb_setval('$chr_store_multi_hash_chr_translate____set_all_passive___1-1',T1), + new_ht(S1), + nb_setval('$chr_store_multi_hash_chr_translate____prev_guard_list___6-1',S1), + nb_setval('$chr_store_global_ground_chr_translate____prev_guard_list___6',[]), + nb_setval('$chr_store_global_ground_chr_translate____get_bg_info_answer___1',[]), + nb_setval('$chr_store_global_list_chr_translate____get_bg_info___2',[]), + nb_setval('$chr_store_global_list_chr_translate____background_info___2',[]), + nb_setval('$chr_store_global_ground_chr_translate____background_info___1',[]), + new_ht(R1), + nb_setval('$chr_store_multi_hash_chr_translate____prolog_global_variable___1-1',R1), + nb_setval('$chr_store_global_ground_chr_translate____prolog_global_variable___1',[]), + new_ht(Q1), + nb_setval('$chr_store_multi_hash_chr_translate____actual_non_ground_multi_hash_key___2-12',Q1), + new_ht(P1), + nb_setval('$chr_store_multi_hash_chr_translate____actual_ground_multi_hash_keys___3-1',P1), + new_ht(O1), + nb_setval('$chr_store_multi_hash_chr_translate____actual_ground_multi_hash_keys___3-12',O1), + new_ht(N1), + nb_setval('$chr_store_multi_hash_chr_translate____actual_atomic_multi_hash_keys___3-1',N1), + new_ht(M1), + nb_setval('$chr_store_multi_hash_chr_translate____actual_atomic_multi_hash_keys___3-12',M1), + nb_setval('$chr_store_global_ground_chr_translate____module_initializer___1',[]), + nb_setval('$chr_store_global_ground_chr_translate____find_empty_named_histories___0',[]), + nb_setval('$chr_store_global_list_chr_translate____generate_empty_named_history_initialisation___1',[]), + nb_setval('$chr_store_global_ground_chr_translate____empty_named_history_initialisations___2',[]), + nb_setval('$chr_store_global_ground_chr_translate____spawns_all_triggers_implies_spawns_all___0',[]), + new_ht(L1), + nb_setval('$chr_store_multi_hash_chr_translate____spawns_all_triggers___2-12',L1), + new_ht(K1), + nb_setval('$chr_store_multi_hash_chr_translate____spawns_all_triggers___2-1',K1), + nb_setval('$chr_store_global_ground_chr_translate____spawns_all_triggers___2',[]), + new_ht(J1), + nb_setval('$chr_store_multi_hash_chr_translate____spawns_all___2-12',J1), + new_ht(I1), + nb_setval('$chr_store_multi_hash_chr_translate____spawns_all___2-1',I1), + new_ht(H1), + nb_setval('$chr_store_multi_hash_chr_translate____spawns___3-123',H1), + new_ht(G1), + nb_setval('$chr_store_multi_hash_chr_translate____spawns___3-3',G1), + new_ht(F1), + nb_setval('$chr_store_multi_hash_chr_translate____spawns___3-1',F1), + new_ht(E1), + nb_setval('$chr_store_multi_hash_chr_translate____spawns___3-12',E1), + nb_setval('$chr_store_global_ground_chr_translate____spawns___3',[]), + nb_setval('$chr_store_global_ground_chr_translate____observation_analysis___1',[]), + new_ht(D1), + nb_setval('$chr_store_multi_hash_chr_translate____indexing_spec___2-1',D1), + new_ht(C1), + nb_setval('$chr_store_multi_hash_chr_translate____history___3-1',C1), + new_ht(B1), + nb_setval('$chr_store_multi_hash_chr_translate____history___3-2',B1), + nb_setval('$chr_store_constants_chr_translate____history___3___[3]___[]',[]), + new_ht(A1), + nb_setval('$chr_store_multi_hash_chr_translate____no_history___1-1',A1), + new_ht(Z), + nb_setval('$chr_store_multi_hash_chr_translate____type_indexed_identifier_index___4-23',Z), + new_ht(Y), + nb_setval('$chr_store_multi_hash_chr_translate____type_indexed_identifier_index___4-123',Y), + new_ht(X), + nb_setval('$chr_store_multi_hash_chr_translate____type_indexed_identifier_size___2-1',X), + new_ht(W), + nb_setval('$chr_store_multi_hash_chr_translate____identifier_index___3-12',W), + nb_setval('$chr_store_global_ground_chr_translate____identifier_size___1',[]), + nb_setval('$chr_store_global_ground_chr_translate____max_constraint_index___1',[]), + new_ht(V), + nb_setval('$chr_store_multi_hash_chr_translate____constraint_index___2-1',V), + new_ht(U), + nb_setval('$chr_store_multi_hash_chr_translate____constraint_index___2-2',U), + new_ht(T), + nb_setval('$chr_store_multi_hash_chr_translate____least_occurrence___2-1',T), + new_ht(S), + nb_setval('$chr_store_multi_hash_chr_translate____least_occurrence___2-12',S), + new_ht(R), + nb_setval('$chr_store_multi_hash_chr_translate____rule___2-1',R), + nb_setval('$chr_store_global_ground_chr_translate____rule___2',[]), + new_ht(Q), + nb_setval('$chr_store_multi_hash_chr_translate____allocation_occurrence___2-12',Q), + new_ht(P), + nb_setval('$chr_store_multi_hash_chr_translate____allocation_occurrence___2-1',P), + new_ht(O), + nb_setval('$chr_store_multi_hash_chr_translate____max_occurrence___2-1',O), + new_ht(N), + nb_setval('$chr_store_multi_hash_chr_translate____occurrence___5-1',N), + new_ht(M), + nb_setval('$chr_store_multi_hash_chr_translate____occurrence___5-34',M), + new_ht(L), + nb_setval('$chr_store_multi_hash_chr_translate____occurrence___5-3',L), + new_ht(K), + nb_setval('$chr_store_multi_hash_chr_translate____occurrence___5-12',K), + nb_setval('$chr_store_global_ground_chr_translate____occurrence___5',[]), + new_ht(J), + nb_setval('$chr_store_multi_hash_chr_translate____passive___2-12',J), + new_ht(I), + nb_setval('$chr_store_multi_hash_chr_translate____passive___2-1',I), + nb_setval('$chr_store_global_ground_chr_translate____rule_count___1',[]), + new_ht(H), + nb_setval('$chr_store_multi_hash_chr_translate____validate_store_type_assumption___1-1',H), + new_ht(G), + nb_setval('$chr_store_multi_hash_chr_translate____assumed_store_type___2-1',G), + new_ht(F), + nb_setval('$chr_store_multi_hash_chr_translate____actual_store_types___2-1',F), + new_ht(E), + nb_setval('$chr_store_multi_hash_chr_translate____store_type___2-1',E), + nb_setval('$chr_store_global_ground_chr_translate____none_suspended_on_variables___0',[]), + new_ht(D), + nb_setval('$chr_store_multi_hash_chr_translate____constraint_mode___2-1',D), + nb_setval('$chr_store_global_ground_chr_translate____constraint_mode___2',[]), + new_ht(C), + nb_setval('$chr_store_multi_hash_chr_translate____indexed_argument___2-12',C), + new_ht(B), + nb_setval('$chr_store_multi_hash_chr_translate____indexed_argument___2-1',B), + new_ht(A), + nb_setval('$chr_store_multi_hash_chr_translate____line_number___2-1',A), + nb_setval('$chr_store_global_ground_chr_translate____target_module___1',[]), + nb_setval('$chr_store_global_ground_chr_translate____chr_source_file___1',[]). +:-initialization '$chr_initialization'. +:-dynamic user:exception/3. +:-multifile user:exception/3. +user:exception(undefined_global_variable,A,retry) :- + '$chr_prolog_global_variable'(A), + '$chr_initialization'. +'$chr_prolog_global_variable'('$chr_store_global_ground_chr_translate____print_chr_constants___0'). +'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____chr_constants___2-1'). +'$chr_prolog_global_variable'('$chr_store_global_ground_chr_translate____chr_constants___2'). +'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____occurrence_code_id___3-12'). +'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____set_occurrence_code_id___3-12'). +'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____skip_to_next_id___2-12'). +'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____continuation_occurrence___3-12'). +'$chr_prolog_global_variable'('$chr_store_global_ground_chr_translate____never_stored_rules___2'). +'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____never_stored_default___2-1'). +'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____stored_assertion___1-1'). +'$chr_prolog_global_variable'('$chr_store_global_ground_chr_translate____used_states_known___0'). +'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____if_used_state___5-12'). +'$chr_prolog_global_variable'('$chr_store_global_ground_chr_translate____if_used_state___5'). +'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____uses_state___2-12'). +'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____does_use_field___2-12'). +'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____does_use_history___2-12'). +'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____does_use_history___2-1'). +'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____delay_phase_end___2-1'). +'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____phase_end___1-1'). +'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____no_partial_wake___1-1'). +'$chr_prolog_global_variable'('$chr_store_global_ground_chr_translate____partial_wake_analysis___0'). +'$chr_prolog_global_variable'('$chr_store_global_ground_chr_translate____ai_observation_memo_abstract_goal___2'). +'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____ai_observation_memoed_abstract_goal___2-1'). +'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____ai_observation_memoed_propagation_rest_heads___3-12'). +'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____ai_observation_memoed_simplification_rest_heads___3-12'). +'$chr_prolog_global_variable'('$chr_store_global_ground_chr_translate____ai_observation_gather_results___0'). +'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____depends_on_as___3-2'). +'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____depends_on_as___3-3'). +'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____ai_not_observed___2-12'). +'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____ai_not_observed_internal___2-12'). +'$chr_prolog_global_variable'('$chr_store_global_ground_chr_translate____ai_not_observed_internal___2'). +'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____ai_observed_internal___2-12'). +'$chr_prolog_global_variable'('$chr_store_global_ground_chr_translate____ai_observed_internal___2'). +'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____depends_on_goal___2-2'). +'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____depends_on_ap___4-3'). +'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____depends_on_ap___4-2'). +'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____depends_on___2-2'). +'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____depends_on___2-1'). +'$chr_prolog_global_variable'('$chr_store_global_ground_chr_translate____abstract_constraints___1'). +'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____final_answer_pattern___2-1'). +'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____call_pattern___1-1'). +'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____initial_call_pattern___1-1'). +'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____functional_dependency___4-12'). +'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____functional_dependency___4-1'). +'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____use_auxiliary_module___1-1'). +'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____use_auxiliary_predicate___2-12'). +'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____use_auxiliary_predicate___2-1'). +'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____use_auxiliary_predicate___1-1'). +'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____memo_has_active_occurrence___1-1'). +'$chr_prolog_global_variable'('$chr_store_global_ground_chr_translate____constraints_code1___3'). +'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____check_all_passive___2-1'). +'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____check_all_passive___2-12'). +'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____stored_complete___3-1'). +'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____stored___3-123'). +'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____stored___3-1'). +'$chr_prolog_global_variable'('$chr_store_global_list_chr_translate____enumerated_atomic_type___2'). +'$chr_prolog_global_variable'('$chr_store_global_list_chr_translate____atomic_type___1'). +'$chr_prolog_global_variable'('$chr_store_global_ground_chr_translate____dynamic_type_check_clauses___1'). +'$chr_prolog_global_variable'('$chr_store_global_ground_chr_translate____dynamic_type_check___0'). +'$chr_prolog_global_variable'('$chr_store_global_list_chr_translate____static_atomic_builtin_type_check_var___3'). +'$chr_prolog_global_variable'('$chr_store_global_list_chr_translate____static_type_check_var___3'). +'$chr_prolog_global_variable'('$chr_store_global_ground_chr_translate____static_type_check___0'). +'$chr_prolog_global_variable'('$chr_store_global_ground_chr_translate____types_modes_condition___3'). +'$chr_prolog_global_variable'('$chr_store_global_list_chr_translate____unalias_type___2'). +'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____constraint_type___2-1'). +'$chr_prolog_global_variable'('$chr_store_global_ground_chr_translate____constraint_type___2'). +'$chr_prolog_global_variable'('$chr_store_global_list_chr_translate____type_alias___2'). +'$chr_prolog_global_variable'('$chr_store_global_list_chr_translate____type_definition___2'). +'$chr_prolog_global_variable'('$chr_store_global_ground_chr_translate____multiple_occ_constraints_checked___1'). +'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____make_head_matchings_explicit_memo_table___3-1'). +'$chr_prolog_global_variable'('$chr_store_global_ground_chr_translate____precompute_head_matchings___0'). +'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____set_all_passive___1-1'). +'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____prev_guard_list___6-1'). +'$chr_prolog_global_variable'('$chr_store_global_ground_chr_translate____prev_guard_list___6'). +'$chr_prolog_global_variable'('$chr_store_global_ground_chr_translate____get_bg_info_answer___1'). +'$chr_prolog_global_variable'('$chr_store_global_list_chr_translate____get_bg_info___2'). +'$chr_prolog_global_variable'('$chr_store_global_list_chr_translate____background_info___2'). +'$chr_prolog_global_variable'('$chr_store_global_ground_chr_translate____background_info___1'). +'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____prolog_global_variable___1-1'). +'$chr_prolog_global_variable'('$chr_store_global_ground_chr_translate____prolog_global_variable___1'). +'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____actual_non_ground_multi_hash_key___2-12'). +'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____actual_ground_multi_hash_keys___3-1'). +'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____actual_ground_multi_hash_keys___3-12'). +'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____actual_atomic_multi_hash_keys___3-1'). +'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____actual_atomic_multi_hash_keys___3-12'). +'$chr_prolog_global_variable'('$chr_store_global_ground_chr_translate____module_initializer___1'). +'$chr_prolog_global_variable'('$chr_store_global_ground_chr_translate____find_empty_named_histories___0'). +'$chr_prolog_global_variable'('$chr_store_global_list_chr_translate____generate_empty_named_history_initialisation___1'). +'$chr_prolog_global_variable'('$chr_store_global_ground_chr_translate____empty_named_history_initialisations___2'). +'$chr_prolog_global_variable'('$chr_store_global_ground_chr_translate____spawns_all_triggers_implies_spawns_all___0'). +'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____spawns_all_triggers___2-12'). +'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____spawns_all_triggers___2-1'). +'$chr_prolog_global_variable'('$chr_store_global_ground_chr_translate____spawns_all_triggers___2'). +'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____spawns_all___2-12'). +'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____spawns_all___2-1'). +'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____spawns___3-123'). +'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____spawns___3-3'). +'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____spawns___3-1'). +'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____spawns___3-12'). +'$chr_prolog_global_variable'('$chr_store_global_ground_chr_translate____spawns___3'). +'$chr_prolog_global_variable'('$chr_store_global_ground_chr_translate____observation_analysis___1'). +'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____indexing_spec___2-1'). +'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____history___3-1'). +'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____history___3-2'). +'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____no_history___1-1'). +'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____type_indexed_identifier_index___4-23'). +'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____type_indexed_identifier_index___4-123'). +'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____type_indexed_identifier_size___2-1'). +'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____identifier_index___3-12'). +'$chr_prolog_global_variable'('$chr_store_global_ground_chr_translate____identifier_size___1'). +'$chr_prolog_global_variable'('$chr_store_global_ground_chr_translate____max_constraint_index___1'). +'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____constraint_index___2-1'). +'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____constraint_index___2-2'). +'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____least_occurrence___2-1'). +'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____least_occurrence___2-12'). +'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____rule___2-1'). +'$chr_prolog_global_variable'('$chr_store_global_ground_chr_translate____rule___2'). +'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____allocation_occurrence___2-12'). +'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____allocation_occurrence___2-1'). +'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____max_occurrence___2-1'). +'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____occurrence___5-1'). +'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____occurrence___5-34'). +'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____occurrence___5-3'). +'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____occurrence___5-12'). +'$chr_prolog_global_variable'('$chr_store_global_ground_chr_translate____occurrence___5'). +'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____passive___2-12'). +'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____passive___2-1'). +'$chr_prolog_global_variable'('$chr_store_global_ground_chr_translate____rule_count___1'). +'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____validate_store_type_assumption___1-1'). +'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____assumed_store_type___2-1'). +'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____actual_store_types___2-1'). +'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____store_type___2-1'). +'$chr_prolog_global_variable'('$chr_store_global_ground_chr_translate____none_suspended_on_variables___0'). +'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____constraint_mode___2-1'). +'$chr_prolog_global_variable'('$chr_store_global_ground_chr_translate____constraint_mode___2'). +'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____indexed_argument___2-12'). +'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____indexed_argument___2-1'). +'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____line_number___2-1'). +'$chr_prolog_global_variable'('$chr_store_global_ground_chr_translate____target_module___1'). +'$chr_prolog_global_variable'('$chr_store_global_ground_chr_translate____chr_source_file___1'). +chr_source_file(A) :- + nb_getval('$chr_store_global_ground_chr_translate____chr_source_file___1',C), ( - nb_getval('$chr_store_global_singleton_chr_translate:target_module/1',A), - A\==[] + 'chr sbag_member'(B,C), + B=suspension(_,active,_,_), + ! ; - nb_getval('$chr_store_multi_hash_chr_translate:indexed_argument/2-1',B), - value_ht(B,A) - ; - nb_getval('$chr_store_global_ground_chr_translate:constraint_mode/2',C), - 'chr sbag_member'(A,C) - ; - nb_getval('$chr_store_multi_hash_chr_translate:store_type/2-1',D), - value_ht(D,A) - ; - nb_getval('$chr_store_multi_hash_chr_translate:actual_store_types/2-1',E), - value_ht(E,A) - ; - nb_getval('$chr_store_multi_hash_chr_translate:assumed_store_type/2-1',F), - value_ht(F,A) - ; - nb_getval('$chr_store_global_ground_chr_translate:rule_count/1',G), - 'chr sbag_member'(A,G) - ; - nb_getval('$chr_store_global_ground_chr_translate:passive/2',H), - 'chr sbag_member'(A,H) - ; - nb_getval('$chr_store_global_ground_chr_translate:occurrence/4',I), - 'chr sbag_member'(A,I) - ; - nb_getval('$chr_store_multi_hash_chr_translate:max_occurrence/2-1',J), - value_ht(J,A) - ; - nb_getval('$chr_store_multi_hash_chr_translate:allocation_occurrence/2-1',K), - value_ht(K,A) - ; - nb_getval('$chr_store_global_ground_chr_translate:rule/2',L), - 'chr sbag_member'(A,L) - ; - nb_getval('$chr_store_global_ground_chr_translate:least_occurrence/2',M), - 'chr sbag_member'(A,M) - ; - nb_getval('$chr_store_multi_hash_chr_translate:constraint_index/2-1',N), - value_ht(N,A) - ; - nb_getval('$chr_store_global_ground_chr_translate:max_constraint_index/1',O), - 'chr sbag_member'(A,O) - ; - nb_getval('$chr_store_multi_hash_chr_translate:observes/2-1',P), - value_ht(P,A) - ; - nb_getval('$chr_store_multi_hash_chr_translate:spawns_observer/2-1',Q), - value_ht(Q,A) - ; - nb_getval('$chr_store_multi_hash_chr_translate:observes_indirectly/2-1',R), - value_ht(R,A) - ; - nb_getval('$chr_store_global_ground_chr_translate:prev_guard_list/7',S), - 'chr sbag_member'(A,S) - ; - nb_getval('$chr_store_multi_hash_chr_translate:set_all_passive/1-1',T), - value_ht(T,A) - ; - nb_getval('$chr_store_global_ground_chr_translate:multiple_occ_constraints_checked/1',U), - 'chr sbag_member'(A,U) - ; - 'chr global_term_ref_1'(V), - get_attr(V,chr_translate,W), - 'chr sbag_member'(A,W) - ; - nb_getval('$chr_store_multi_hash_chr_translate:constraint_type/2-1',X), - value_ht(X,A) - ; - nb_getval('$chr_store_global_ground_chr_translate:add_type_information/3',Y), - 'chr sbag_member'(A,Y) - ; - nb_getval('$chr_store_multi_hash_chr_translate:stored/3-1',Z), - value_ht(Z,A) - ; - nb_getval('$chr_store_multi_hash_chr_translate:stored_complete/3-1',A1), - value_ht(A1,A) - ; - nb_getval('$chr_store_multi_hash_chr_translate:check_all_passive/2-1',B1), - value_ht(B1,A) - ; - nb_getval('$chr_store_multi_hash_chr_translate:constraints_code1/3-1',C1), - value_ht(C1,A) - ; - nb_getval('$chr_store_multi_hash_chr_translate:use_auxiliary_predicate/1-1',D1), - value_ht(D1,A) - ; - nb_getval('$chr_store_multi_hash_chr_translate:functional_dependency/4-1',E1), - value_ht(E1,A) - ; - nb_getval('$chr_store_global_ground_chr_translate:initial_call_pattern/1',F1), - 'chr sbag_member'(A,F1) - ; - nb_getval('$chr_store_multi_hash_chr_translate:call_pattern/1-1',G1), - value_ht(G1,A) - ; - nb_getval('$chr_store_multi_hash_chr_translate:final_answer_pattern/2-1',H1), - value_ht(H1,A) - ; - nb_getval('$chr_store_global_ground_chr_translate:abstract_constraints/1',I1), - 'chr sbag_member'(A,I1) - ; - nb_getval('$chr_store_multi_hash_chr_translate:depends_on/2-1',J1), - value_ht(J1,A) - ; - nb_getval('$chr_store_multi_hash_chr_translate:depends_on_ap/4-2',K1), - value_ht(K1,A) - ; - nb_getval('$chr_store_multi_hash_chr_translate:depends_on_goal/2-2',L1), - value_ht(L1,A) - ; - nb_getval('$chr_store_multi_hash_chr_translate:ai_observed/2-1',M1), - value_ht(M1,A) - ; - nb_getval('$chr_store_multi_hash_chr_translate:ai_not_observed/2-1',N1), - value_ht(N1,A) - ; - nb_getval('$chr_store_multi_hash_chr_translate:depends_on_as/3-3',O1), - value_ht(O1,A) + !, + chr_source_file___1__0__0__2(C,A) ). -:-nb_setval('$chr_store_global_singleton_chr_translate:target_module/1',[]). -:-new_ht(A),nb_setval('$chr_store_multi_hash_chr_translate:indexed_argument/2-1',A). -'$via1_multi_hash_indexed_argument/2-1'(A,B) :- - nb_getval('$chr_store_multi_hash_chr_translate:indexed_argument/2-1',C), - lookup_ht(C,A,B). -:-nb_setval('$chr_store_global_ground_chr_translate:constraint_mode/2',[]). -:-new_ht(A),nb_setval('$chr_store_multi_hash_chr_translate:constraint_mode/2-1',A). -'$via1_multi_hash_constraint_mode/2-1'(A,B) :- - nb_getval('$chr_store_multi_hash_chr_translate:constraint_mode/2-1',C), - lookup_ht(C,A,B). -:-new_ht(A),nb_setval('$chr_store_multi_hash_chr_translate:store_type/2-1',A). -'$via1_multi_hash_store_type/2-1'(A,B) :- - nb_getval('$chr_store_multi_hash_chr_translate:store_type/2-1',C), - lookup_ht(C,A,B). -:-new_ht(A),nb_setval('$chr_store_multi_hash_chr_translate:actual_store_types/2-1',A). -'$via1_multi_hash_actual_store_types/2-1'(A,B) :- - nb_getval('$chr_store_multi_hash_chr_translate:actual_store_types/2-1',C), - lookup_ht(C,A,B). -:-new_ht(A),nb_setval('$chr_store_multi_hash_chr_translate:assumed_store_type/2-1',A). -'$via1_multi_hash_assumed_store_type/2-1'(A,B) :- - nb_getval('$chr_store_multi_hash_chr_translate:assumed_store_type/2-1',C), - lookup_ht(C,A,B). -:-nb_setval('$chr_store_global_ground_chr_translate:rule_count/1',[]). -:-nb_setval('$chr_store_global_ground_chr_translate:passive/2',[]). -:-new_ht(A),nb_setval('$chr_store_multi_hash_chr_translate:passive/2-1',A). -'$via1_multi_hash_passive/2-1'(A,B) :- - nb_getval('$chr_store_multi_hash_chr_translate:passive/2-1',C), - lookup_ht(C,A,B). -:-nb_setval('$chr_store_global_ground_chr_translate:occurrence/4',[]). -:-new_ht(A),nb_setval('$chr_store_multi_hash_chr_translate:occurrence/4-3',A). -'$via1_multi_hash_occurrence/4-3'(A,B) :- - nb_getval('$chr_store_multi_hash_chr_translate:occurrence/4-3',C), - lookup_ht(C,A,B). -:-new_ht(A),nb_setval('$chr_store_multi_hash_chr_translate:occurrence/4-1',A). -'$via1_multi_hash_occurrence/4-1'(A,B) :- - nb_getval('$chr_store_multi_hash_chr_translate:occurrence/4-1',C), - lookup_ht(C,A,B). -:-new_ht(A),nb_setval('$chr_store_multi_hash_chr_translate:max_occurrence/2-1',A). -'$via1_multi_hash_max_occurrence/2-1'(A,B) :- - nb_getval('$chr_store_multi_hash_chr_translate:max_occurrence/2-1',C), - lookup_ht(C,A,B). -:-new_ht(A),nb_setval('$chr_store_multi_hash_chr_translate:allocation_occurrence/2-1',A). -'$via1_multi_hash_allocation_occurrence/2-1'(A,B) :- - nb_getval('$chr_store_multi_hash_chr_translate:allocation_occurrence/2-1',C), - lookup_ht(C,A,B). -:-nb_setval('$chr_store_global_ground_chr_translate:allocation_occurrence/2',[]). -:-nb_setval('$chr_store_global_ground_chr_translate:rule/2',[]). -:-new_ht(A),nb_setval('$chr_store_multi_hash_chr_translate:rule/2-1',A). -'$via1_multi_hash_rule/2-1'(A,B) :- - nb_getval('$chr_store_multi_hash_chr_translate:rule/2-1',C), - lookup_ht(C,A,B). -:-nb_setval('$chr_store_global_ground_chr_translate:least_occurrence/2',[]). -:-new_ht(A),nb_setval('$chr_store_multi_hash_chr_translate:least_occurrence/2-1',A). -'$via1_multi_hash_least_occurrence/2-1'(A,B) :- - nb_getval('$chr_store_multi_hash_chr_translate:least_occurrence/2-1',C), - lookup_ht(C,A,B). -:-new_ht(A),nb_setval('$chr_store_multi_hash_chr_translate:constraint_index/2-1',A). -'$via1_multi_hash_constraint_index/2-1'(A,B) :- - nb_getval('$chr_store_multi_hash_chr_translate:constraint_index/2-1',C), - lookup_ht(C,A,B). -:-nb_setval('$chr_store_global_ground_chr_translate:max_constraint_index/1',[]). -:-new_ht(A),nb_setval('$chr_store_multi_hash_chr_translate:observes/2-1',A). -'$via1_multi_hash_observes/2-1'(A,B) :- - nb_getval('$chr_store_multi_hash_chr_translate:observes/2-1',C), - lookup_ht(C,A,B). -:-new_ht(A),nb_setval('$chr_store_multi_hash_chr_translate:spawns_observer/2-1',A). -'$via1_multi_hash_spawns_observer/2-1'(A,B) :- - nb_getval('$chr_store_multi_hash_chr_translate:spawns_observer/2-1',C), - lookup_ht(C,A,B). -:-new_ht(A),nb_setval('$chr_store_multi_hash_chr_translate:spawns_observer/2-2',A). -'$via1_multi_hash_spawns_observer/2-2'(A,B) :- - nb_getval('$chr_store_multi_hash_chr_translate:spawns_observer/2-2',C), - lookup_ht(C,A,B). -:-new_ht(A),nb_setval('$chr_store_multi_hash_chr_translate:observes_indirectly/2-1',A). -'$via1_multi_hash_observes_indirectly/2-1'(A,B) :- - nb_getval('$chr_store_multi_hash_chr_translate:observes_indirectly/2-1',C), - lookup_ht(C,A,B). -:-nb_setval('$chr_store_global_ground_chr_translate:prev_guard_list/7',[]). -:-new_ht(A),nb_setval('$chr_store_multi_hash_chr_translate:prev_guard_list/7-2',A). -'$via1_multi_hash_prev_guard_list/7-2'(A,B) :- - nb_getval('$chr_store_multi_hash_chr_translate:prev_guard_list/7-2',C), - lookup_ht(C,A,B). -:-new_ht(A),nb_setval('$chr_store_multi_hash_chr_translate:prev_guard_list/7-1',A). -'$via1_multi_hash_prev_guard_list/7-1'(A,B) :- - nb_getval('$chr_store_multi_hash_chr_translate:prev_guard_list/7-1',C), - lookup_ht(C,A,B). -:-new_ht(A),nb_setval('$chr_store_multi_hash_chr_translate:set_all_passive/1-1',A). -'$via1_multi_hash_set_all_passive/1-1'(A,B) :- - nb_getval('$chr_store_multi_hash_chr_translate:set_all_passive/1-1',C), - lookup_ht(C,A,B). -:-nb_setval('$chr_store_global_ground_chr_translate:multiple_occ_constraints_checked/1',[]). -:-new_ht(A),nb_setval('$chr_store_multi_hash_chr_translate:constraint_type/2-1',A). -'$via1_multi_hash_constraint_type/2-1'(A,B) :- - nb_getval('$chr_store_multi_hash_chr_translate:constraint_type/2-1',C), - lookup_ht(C,A,B). -:-nb_setval('$chr_store_global_ground_chr_translate:add_type_information/3',[]). -:-new_ht(A),nb_setval('$chr_store_multi_hash_chr_translate:stored/3-1',A). -'$via1_multi_hash_stored/3-1'(A,B) :- - nb_getval('$chr_store_multi_hash_chr_translate:stored/3-1',C), - lookup_ht(C,A,B). -:-nb_setval('$chr_store_global_ground_chr_translate:stored/3',[]). -:-new_ht(A),nb_setval('$chr_store_multi_hash_chr_translate:stored_complete/3-1',A). -'$via1_multi_hash_stored_complete/3-1'(A,B) :- - nb_getval('$chr_store_multi_hash_chr_translate:stored_complete/3-1',C), - lookup_ht(C,A,B). -:-new_ht(A),nb_setval('$chr_store_multi_hash_chr_translate:check_all_passive/2-1',A). -'$via1_multi_hash_check_all_passive/2-1'(A,B) :- - nb_getval('$chr_store_multi_hash_chr_translate:check_all_passive/2-1',C), - lookup_ht(C,A,B). -:-new_ht(A),nb_setval('$chr_store_multi_hash_chr_translate:constraints_code1/3-1',A). -'$via1_multi_hash_constraints_code1/3-1'(A,B) :- - nb_getval('$chr_store_multi_hash_chr_translate:constraints_code1/3-1',C), - lookup_ht(C,A,B). -:-nb_setval('$chr_store_global_ground_chr_translate:constraints_code1/3',[]). -:-new_ht(A),nb_setval('$chr_store_multi_hash_chr_translate:use_auxiliary_predicate/1-1',A). -'$via1_multi_hash_use_auxiliary_predicate/1-1'(A,B) :- - nb_getval('$chr_store_multi_hash_chr_translate:use_auxiliary_predicate/1-1',C), - lookup_ht(C,A,B). -:-new_ht(A),nb_setval('$chr_store_multi_hash_chr_translate:functional_dependency/4-1',A). -'$via1_multi_hash_functional_dependency/4-1'(A,B) :- - nb_getval('$chr_store_multi_hash_chr_translate:functional_dependency/4-1',C), - lookup_ht(C,A,B). -:-nb_setval('$chr_store_global_ground_chr_translate:initial_call_pattern/1',[]). -:-new_ht(A),nb_setval('$chr_store_multi_hash_chr_translate:initial_call_pattern/1-1',A). -'$via1_multi_hash_initial_call_pattern/1-1'(A,B) :- - nb_getval('$chr_store_multi_hash_chr_translate:initial_call_pattern/1-1',C), - lookup_ht(C,A,B). -:-new_ht(A),nb_setval('$chr_store_multi_hash_chr_translate:call_pattern/1-1',A). -'$via1_multi_hash_call_pattern/1-1'(A,B) :- - nb_getval('$chr_store_multi_hash_chr_translate:call_pattern/1-1',C), - lookup_ht(C,A,B). -:-nb_setval('$chr_store_global_ground_chr_translate:call_pattern/1',[]). -:-new_ht(A),nb_setval('$chr_store_multi_hash_chr_translate:final_answer_pattern/2-1',A). -'$via1_multi_hash_final_answer_pattern/2-1'(A,B) :- - nb_getval('$chr_store_multi_hash_chr_translate:final_answer_pattern/2-1',C), - lookup_ht(C,A,B). -:-nb_setval('$chr_store_global_ground_chr_translate:abstract_constraints/1',[]). -:-new_ht(A),nb_setval('$chr_store_multi_hash_chr_translate:depends_on/2-1',A). -'$via1_multi_hash_depends_on/2-1'(A,B) :- - nb_getval('$chr_store_multi_hash_chr_translate:depends_on/2-1',C), - lookup_ht(C,A,B). -:-nb_setval('$chr_store_global_ground_chr_translate:depends_on/2',[]). -:-new_ht(A),nb_setval('$chr_store_multi_hash_chr_translate:depends_on/2-2',A). -'$via1_multi_hash_depends_on/2-2'(A,B) :- - nb_getval('$chr_store_multi_hash_chr_translate:depends_on/2-2',C), - lookup_ht(C,A,B). -:-new_ht(A),nb_setval('$chr_store_multi_hash_chr_translate:depends_on_ap/4-2',A). -'$via1_multi_hash_depends_on_ap/4-2'(A,B) :- - nb_getval('$chr_store_multi_hash_chr_translate:depends_on_ap/4-2',C), - lookup_ht(C,A,B). -:-new_ht(A),nb_setval('$chr_store_multi_hash_chr_translate:depends_on_ap/4-3',A). -'$via1_multi_hash_depends_on_ap/4-3'(A,B) :- - nb_getval('$chr_store_multi_hash_chr_translate:depends_on_ap/4-3',C), - lookup_ht(C,A,B). -:-new_ht(A),nb_setval('$chr_store_multi_hash_chr_translate:depends_on_goal/2-2',A). -'$via1_multi_hash_depends_on_goal/2-2'(A,B) :- - nb_getval('$chr_store_multi_hash_chr_translate:depends_on_goal/2-2',C), - lookup_ht(C,A,B). -:-new_ht(A),nb_setval('$chr_store_multi_hash_chr_translate:depends_on_goal/2-1',A). -'$via1_multi_hash_depends_on_goal/2-1'(A,B) :- - nb_getval('$chr_store_multi_hash_chr_translate:depends_on_goal/2-1',C), - lookup_ht(C,A,B). -:-new_ht(A),nb_setval('$chr_store_multi_hash_chr_translate:ai_observed/2-1',A). -'$via1_multi_hash_ai_observed/2-1'(A,B) :- - nb_getval('$chr_store_multi_hash_chr_translate:ai_observed/2-1',C), - lookup_ht(C,A,B). -:-new_ht(A),nb_setval('$chr_store_multi_hash_chr_translate:ai_not_observed/2-1',A). -'$via1_multi_hash_ai_not_observed/2-1'(A,B) :- - nb_getval('$chr_store_multi_hash_chr_translate:ai_not_observed/2-1',C), - lookup_ht(C,A,B). -:-new_ht(A),nb_setval('$chr_store_multi_hash_chr_translate:depends_on_as/3-3',A). -'$via1_multi_hash_depends_on_as/3-3'(A,B) :- - nb_getval('$chr_store_multi_hash_chr_translate:depends_on_as/3-3',C), - lookup_ht(C,A,B). -:-new_ht(A),nb_setval('$chr_store_multi_hash_chr_translate:depends_on_as/3-2',A). -'$via1_multi_hash_depends_on_as/3-2'(A,B) :- - nb_getval('$chr_store_multi_hash_chr_translate:depends_on_as/3-2',C), - lookup_ht(C,A,B). -target_module(_) :- - nb_getval('$chr_store_global_singleton_chr_translate:target_module/1',A), - A\==[], - A=suspension(_,_,_,_,_,_,_), - !. +chr_source_file___1__0__0__2([],A) :- + chr_source_file___1__1(A). +chr_source_file___1__0__0__2([B|C],A) :- + ( B=suspension(_,active,_,_) -> + setarg(2,B,removed), + arg(3,B,D), + ( var(D) -> + nb_getval('$chr_store_global_ground_chr_translate____chr_source_file___1',E), + E=[_|F], + b_setval('$chr_store_global_ground_chr_translate____chr_source_file___1',F), + ( F=[G|_] -> + setarg(3,G,_) + ; + true + ) + ; + D=[_,_|F], + setarg(2,D,F), + ( F=[G|_] -> + setarg(3,G,D) + ; + true + ) + ), + chr_source_file___1__0__0__2(C,A) + ; + chr_source_file___1__0__0__2(C,A) + ). +chr_source_file(A) :- + chr_source_file___1__1(A). +chr_source_file___1__1(A) :- + B=suspension(C,active,_,A), + 'chr gen_id'(C), + nb_getval('$chr_store_global_ground_chr_translate____chr_source_file___1',D), + E=[B|D], + b_setval('$chr_store_global_ground_chr_translate____chr_source_file___1',E), + ( D=[F|_] -> + setarg(3,F,E) + ; + true + ). +get_chr_source_file(A) :- + nb_getval('$chr_store_global_ground_chr_translate____chr_source_file___1',D), + 'chr sbag_member'(B,D), + B=suspension(_,active,_,C), + !, + A=C. +get_chr_source_file(user). target_module(A) :- - insert_constraint_internal(_,_,B,true,target_module(A),[A]), - '$insert_in_store_target_module/1'(B). + nb_getval('$chr_store_global_ground_chr_translate____target_module___1',C), + ( + 'chr sbag_member'(B,C), + B=suspension(_,active,_,_), + ! + ; + !, + target_module___1__0__0__2(C,A) + ). +target_module___1__0__0__2([],A) :- + target_module___1__1(A). +target_module___1__0__0__2([B|C],A) :- + ( B=suspension(_,active,_,_) -> + setarg(2,B,removed), + arg(3,B,D), + ( var(D) -> + nb_getval('$chr_store_global_ground_chr_translate____target_module___1',E), + E=[_|F], + b_setval('$chr_store_global_ground_chr_translate____target_module___1',F), + ( F=[G|_] -> + setarg(3,G,_) + ; + true + ) + ; + D=[_,_|F], + setarg(2,D,F), + ( F=[G|_] -> + setarg(3,G,D) + ; + true + ) + ), + target_module___1__0__0__2(C,A) + ; + target_module___1__0__0__2(C,A) + ). +target_module(A) :- + target_module___1__1(A). +target_module___1__1(A) :- + B=suspension(C,active,_,A), + 'chr gen_id'(C), + nb_getval('$chr_store_global_ground_chr_translate____target_module___1',D), + E=[B|D], + b_setval('$chr_store_global_ground_chr_translate____target_module___1',E), + ( D=[F|_] -> + setarg(3,F,E) + ; + true + ). get_target_module(A) :- - nb_getval('$chr_store_global_singleton_chr_translate:target_module/1',B), - B\==[], - B=suspension(_,_,_,_,_,_,C), + nb_getval('$chr_store_global_ground_chr_translate____target_module___1',D), + 'chr sbag_member'(B,D), + B=suspension(_,active,_,C), !, A=C. get_target_module(user). -indexed_argument(A,B) :- - '$via1_multi_hash_indexed_argument/2-1'(A,E), +line_number(A,B) :- + nb_getval('$chr_store_multi_hash_chr_translate____line_number___2-1',E), + lookup_ht1(E,A,A,D), + ( + 'chr sbag_member'(C,D), + C=suspension(_,active,_,_), + ! + ; + !, + line_number___2__0__0__2(D,A,B) + ). +line_number___2__0__0__2([],A,B) :- + line_number___2__1(A,B). +line_number___2__0__0__2([D|E],A,B) :- + ( D=suspension(_,active,C,_), + C==A -> + setarg(2,D,removed), + nb_getval('$chr_store_multi_hash_chr_translate____line_number___2-1',F), + delete_ht(F,A,D), + line_number___2__0__0__2(E,A,B) + ; + line_number___2__0__0__2(E,A,B) + ). +line_number(A,B) :- + line_number___2__1(A,B). +line_number___2__1(A,B) :- + C=suspension(D,active,A,B), + 'chr gen_id'(D), + nb_getval('$chr_store_multi_hash_chr_translate____line_number___2-1',E), + insert_ht(E,A,C). +get_line_number(A,B) :- + nb_getval('$chr_store_multi_hash_chr_translate____line_number___2-1',F), + lookup_ht1(F,A,A,E), 'chr sbag_member'(C,E), - C=suspension(_,mutable(active),_,_,_,_,_,D), - D=B, + C=suspension(_,active,_,D), + !, + B=D. +get_line_number(_,0). +indexed_argument(A,B) :- + nb_getval('$chr_store_multi_hash_chr_translate____indexed_argument___2-12',E), + lookup_ht(E,k(A,B),D), + 'chr sbag_member'(C,D), + C=suspension(_,active,_,_), !. indexed_argument(A,B) :- - insert_constraint_internal(_,_,C,true,indexed_argument(A,B),[A,B]), - '$insert_in_store_indexed_argument/2'(C). + C=suspension(D,active,A,B), + 'chr gen_id'(D), + nb_getval('$chr_store_multi_hash_chr_translate____indexed_argument___2-1',E), + insert_ht(E,A,C), + nb_getval('$chr_store_multi_hash_chr_translate____indexed_argument___2-12',F), + insert_ht(F,k(A,B),C). is_indexed_argument(A,B) :- - '$via1_multi_hash_indexed_argument/2-1'(A,E), - 'chr sbag_member'(C,E), - C=suspension(_,mutable(active),_,_,_,_,_,D), - D==B, + nb_getval('$chr_store_multi_hash_chr_translate____indexed_argument___2-12',E), + lookup_ht(E,k(A,B),D), + 'chr sbag_member'(C,D), + C=suspension(_,active,_,_), !. is_indexed_argument(_,_) :- fail. constraint_mode(A,B) :- - 'constraint_mode/2__0'(A,B,_). -'constraint_mode/2__0'(A,_,_) :- - '$via1_multi_hash_constraint_mode/2-1'(A,C), - 'chr sbag_member'(B,C), - B=suspension(_,mutable(active),_,_,_,_,_,_), - !. -'constraint_mode/2__0'(A,B,C) :- + constraint_mode___2__0(A,B,_). +constraint_mode___2__0(A,B,C) :- + nb_getval('$chr_store_multi_hash_chr_translate____constraint_mode___2-1',F), + lookup_ht(F,A,E), + ( + 'chr sbag_member'(D,E), + D=suspension(_,active,_,_,_,_), + ! + ; + !, + constraint_mode___2__0__0__2(E,A,B,C) + ). +constraint_mode___2__0__0__2([],B,C,A) :- + constraint_mode___2__1(B,C,A). +constraint_mode___2__0__0__2([E|F],A,B,C) :- + ( E=suspension(_,active,_,_,D,_), + D==A -> + setarg(2,E,removed), + arg(4,E,G), + ( var(G) -> + nb_getval('$chr_store_global_ground_chr_translate____constraint_mode___2',H), + H=[_|I], + b_setval('$chr_store_global_ground_chr_translate____constraint_mode___2',I), + ( I=[J|_] -> + setarg(4,J,_) + ; + true + ) + ; + G=[_,_|I], + setarg(2,G,I), + ( I=[J|_] -> + setarg(4,J,G) + ; + true + ) + ), + nb_getval('$chr_store_multi_hash_chr_translate____constraint_mode___2-1',K), + delete_ht(K,A,E), + constraint_mode___2__0__0__2(F,A,B,C) + ; + constraint_mode___2__0__0__2(F,A,B,C) + ). +constraint_mode___2__0(A,B,C) :- + constraint_mode___2__1(A,B,C). +constraint_mode___2__1(A,B,C) :- A=D/E, - nb_getval('$chr_store_global_ground_chr_translate:add_type_information/3',F), + nb_getval('$chr_store_global_ground_chr_translate____types_modes_condition___3',F), !, - allocate_constraint(true,C,constraint_mode(A,B),[A,B]), - 'constraint_mode/2__0__0'(F,A,B,C,D,E). -'constraint_mode/2__0__0'([],A,B,C,_,_) :- - 'constraint_mode/2__1'(A,B,C). -'constraint_mode/2__0__0'([I|N],A,B,C,D,E) :- - ( I=suspension(_,mutable(active),_,_,_,_,F,G,H), + C=suspension(G,not_stored_yet,t,_,A,B), + 'chr gen_id'(G), + constraint_mode___2__1__0__7(F,A,B,C,D,E). +constraint_mode___2__1__0__7([],B,C,A,_,_) :- + constraint_mode___2__2(B,C,A). +constraint_mode___2__1__0__7([I|N],A,B,C,D,E) :- + ( I=suspension(_,active,_,F,G,H), F=[J|K], G=[L|M], functor(J,D,E) -> - remove_constraint_internal(I,_,O), - ( O==yes -> - '$delete_from_store_add_type_information/3'(I) + setarg(2,I,removed), + arg(3,I,Z), + ( var(Z) -> + nb_getval('$chr_store_global_ground_chr_translate____types_modes_condition___3',A1), + A1=[_|B1], + b_setval('$chr_store_global_ground_chr_translate____types_modes_condition___3',B1), + ( B1=[C1|_] -> + setarg(3,C1,_) + ; + true + ) + ; + Z=[_,_|B1], + setarg(2,Z,B1), + ( B1=[C1|_] -> + setarg(3,C1,Z) + ; + true + ) + ), + arg(2,C,U), + setarg(2,C,active), + ( U==not_stored_yet -> + nb_getval('$chr_store_global_ground_chr_translate____constraint_mode___2',V), + W=[C|V], + b_setval('$chr_store_global_ground_chr_translate____constraint_mode___2',W), + ( V=[X|_] -> + setarg(4,X,W) + ; + true + ), + nb_getval('$chr_store_multi_hash_chr_translate____constraint_mode___2-1',Y), + insert_ht(Y,A,C) ; true ), - activate_constraint(X,_,C,Y), - ( X==yes -> - '$insert_in_store_constraint_mode/2'(C) - ; - true - ), - J=..[_|P], - L=..[_|Q], - add_mode_info(B,P,R), - H=(R,S), - ( get_constraint_type(D/E,T) -> - types2condition(T,P,Q,B,U), - list2conj(U,V), - S=(V,W), - add_type_information(K,M,W) - ; - add_type_information(K,M,S) - ), - ( C=suspension(_,mutable(active),_,mutable(Y),_,_,_,_) -> - 'chr update_mutable'(inactive,mutable(active)), - 'constraint_mode/2__0__0'(N,A,B,C,D,E) + J=..[_|O], + H=(P,Q,R), + modes_condition(B,O,P), + get_constraint_type_det(D/E,S), + L=..[_|T], + types_condition(S,O,T,B,Q), + types_modes_condition(K,M,R), + ( C=suspension(_,active,_,_,_,_) -> + setarg(2,C,inactive), + constraint_mode___2__1__0__7(N,A,B,C,D,E) ; true ) ; - 'constraint_mode/2__0__0'(N,A,B,C,D,E) + constraint_mode___2__1__0__7(N,A,B,C,D,E) ). -'constraint_mode/2__0'(A,B,C) :- - allocate_constraint(true,C,constraint_mode(A,B),[A,B]), - 'constraint_mode/2__1'(A,B,C). -'constraint_mode/2__1'(_,_,A) :- - activate_constraint(B,_,A,_), - ( B==yes -> - '$insert_in_store_constraint_mode/2'(A) +constraint_mode___2__1(A,B,C) :- + C=suspension(D,not_stored_yet,t,_,A,B), + 'chr gen_id'(D), + constraint_mode___2__2(A,B,C). +constraint_mode___2__2(A,B,C) :- + nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-1',E), + lookup_ht(E,A,D), + !, + constraint_mode___2__2__0__8(D,A,B,C). +constraint_mode___2__2__0__8([],B,C,A) :- + constraint_mode___2__3(B,C,A). +constraint_mode___2__2__0__8([H|J],B,C,A) :- + ( H=suspension(_,active,_,_,D,_,E,F,G), + D==B, + nb_getval('$chr_store_global_ground_chr_translate____partial_wake_analysis___0',I) -> + constraint_mode___2__2__1__8(I,E,F,G,H,J,B,C,A) + ; + constraint_mode___2__2__0__8(J,B,C,A) + ). +constraint_mode___2__2__1__8([],_,_,_,_,A,C,D,B) :- + constraint_mode___2__2__0__8(A,C,D,B). +constraint_mode___2__2__1__8([I|K],F,G,H,A,B,D,E,C) :- + ( I=suspension(_,active,_,_), + nb_getval('$chr_store_multi_hash_chr_translate____rule___2-1',L), + lookup_ht1(L,F,F,J) -> + constraint_mode___2__2__2__8(J,I,K,F,G,H,A,B,D,E,C) + ; + constraint_mode___2__2__1__8(K,F,G,H,A,B,D,E,C) + ). +constraint_mode___2__2__2__8([],_,A,G,H,I,B,C,E,F,D) :- + constraint_mode___2__2__1__8(A,G,H,I,B,C,E,F,D). +constraint_mode___2__2__2__8([M|N],A,B,H,I,J,C,D,F,G,E) :- + ( M=suspension(_,active,_,_,K,L), + K==H, + U=t(325,A,C,M,E), + '$novel_production'(A,U), + '$novel_production'(C,U), + '$novel_production'(M,U), + '$novel_production'(E,U) -> + '$extend_history'(E,U), + arg(2,E,V), + setarg(2,E,active), + ( V==not_stored_yet -> + nb_getval('$chr_store_global_ground_chr_translate____constraint_mode___2',W), + X=[E|W], + b_setval('$chr_store_global_ground_chr_translate____constraint_mode___2',X), + ( W=[Y|_] -> + setarg(4,Y,X) + ; + true + ), + nb_getval('$chr_store_multi_hash_chr_translate____constraint_mode___2-1',Z), + insert_ht(Z,F,E) + ; + true + ), + L=pragma(rule(O,P,Q,_),_,_,_,_), + ( is_passive(H,I) -> + true + ; + ( J==simplification -> + select(R,O,_), + R=..[_|S], + term_variables(Q,T), + partial_wake_args(S,G,T,F) + ) + ; + select(R,P,_), + R=..[_|S], + term_variables(Q,T), + partial_wake_args(S,G,T,F) + ), + ( E=suspension(_,active,_,_,_,_) -> + setarg(2,E,inactive), + constraint_mode___2__2__2__8(N,A,B,H,I,J,C,D,F,G,E) + ; + true + ) + ; + constraint_mode___2__2__2__8(N,A,B,H,I,J,C,D,F,G,E) + ). +constraint_mode___2__2(A,B,C) :- + constraint_mode___2__3(A,B,C). +constraint_mode___2__3(A,_,B) :- + arg(2,B,C), + setarg(2,B,active), + ( C==not_stored_yet -> + nb_getval('$chr_store_global_ground_chr_translate____constraint_mode___2',D), + E=[B|D], + b_setval('$chr_store_global_ground_chr_translate____constraint_mode___2',E), + ( D=[F|_] -> + setarg(4,F,E) + ; + true + ), + nb_getval('$chr_store_multi_hash_chr_translate____constraint_mode___2-1',G), + insert_ht(G,A,B) ; true ). get_constraint_mode(A,B) :- - '$via1_multi_hash_constraint_mode/2-1'(A,E), + nb_getval('$chr_store_multi_hash_chr_translate____constraint_mode___2-1',F), + lookup_ht(F,A,E), 'chr sbag_member'(C,E), - C=suspension(_,mutable(active),_,_,_,_,_,D), + C=suspension(_,active,_,_,_,D), !, B=D. get_constraint_mode(_/B,A) :- replicate(B,?,A). may_trigger(A) :- - '$via1_multi_hash_constraint_mode/2-1'(A,D), + \+has_active_occurrence(A), + !, + fail. +may_trigger(A) :- + nb_getval('$chr_store_multi_hash_chr_translate____constraint_mode___2-1',J), + lookup_ht(J,A,D), 'chr sbag_member'(B,D), - B=suspension(_,mutable(active),_,_,_,_,_,C), - '$via1_multi_hash_indexed_argument/2-1'(A,G), + B=suspension(_,active,_,_,_,C), + nb_getval('$chr_store_multi_hash_chr_translate____indexed_argument___2-1',I), + lookup_ht(I,A,G), 'chr sbag_member'(E,G), - E=suspension(_,mutable(active),_,_,_,_,_,F), - nth(F,C,H), + E=suspension(_,active,_,F), + nth1(F,C,H), H\== +, !, is_stored(A). may_trigger(_) :- chr_pp_flag(debugable,on). -store_type(A,atom_hash(B)) :- +only_ground_indexed_arguments(A) :- + nb_getval('$chr_store_multi_hash_chr_translate____constraint_mode___2-1',J), + lookup_ht(J,A,D), + 'chr sbag_member'(B,D), + B=suspension(_,active,_,_,_,C), + nb_getval('$chr_store_multi_hash_chr_translate____indexed_argument___2-1',I), + lookup_ht(I,A,G), + 'chr sbag_member'(E,G), + E=suspension(_,active,_,F), + nth1(F,C,H), + H\== +, !, - store_type(A,multi_hash([B])). + fail. +only_ground_indexed_arguments(_). +none_suspended_on_variables :- + nb_getval('$chr_store_global_ground_chr_translate____none_suspended_on_variables___0',B), + 'chr sbag_member'(A,B), + A=suspension(_,active,_), + !. +none_suspended_on_variables :- + A=suspension(B,active,_), + 'chr gen_id'(B), + nb_getval('$chr_store_global_ground_chr_translate____none_suspended_on_variables___0',C), + D=[A|C], + b_setval('$chr_store_global_ground_chr_translate____none_suspended_on_variables___0',D), + ( C=[E|_] -> + setarg(3,E,D) + ; + true + ). +are_none_suspended_on_variables :- + nb_getval('$chr_store_global_ground_chr_translate____none_suspended_on_variables___0',B), + 'chr sbag_member'(A,B), + A=suspension(_,active,_), + !. +are_none_suspended_on_variables :- + fail. store_type(A,B) :- - insert_constraint_internal(_,_,C,true,store_type(A,B),[A,B]), - '$insert_in_store_store_type/2'(C). + store_type___2__0(A,B,_). +store_type___2__0(A,B,C) :- + chr_pp_flag(verbose,on), + !, + C=suspension(D,active,A,B), + 'chr gen_id'(D), + nb_getval('$chr_store_multi_hash_chr_translate____store_type___2-1',E), + insert_ht(E,A,C), + format('The indexes for ~w are: +',[A]), + format_storetype(B), + ( C=suspension(_,active,_,_) -> + setarg(2,C,inactive), + store_type___2__1(A,B,C) + ; + true + ). +store_type___2__0(A,B,C) :- + C=suspension(D,not_stored_yet,A,B), + 'chr gen_id'(D), + store_type___2__1(A,B,C). +store_type___2__1(A,_,B) :- + nb_getval('$chr_store_multi_hash_chr_translate____validate_store_type_assumption___1-1',M), + lookup_ht(M,A,D), + 'chr sbag_member'(C,D), + C=suspension(_,active,_), + nb_getval('$chr_store_multi_hash_chr_translate____actual_store_types___2-1',L), + lookup_ht(L,A,G), + 'chr sbag_member'(E,G), + E=suspension(_,active,_,F), + !, + setarg(2,C,removed), + nb_getval('$chr_store_multi_hash_chr_translate____validate_store_type_assumption___1-1',K), + delete_ht(K,A,C), + setarg(2,E,removed), + nb_getval('$chr_store_multi_hash_chr_translate____actual_store_types___2-1',J), + delete_ht(J,A,E), + ( var(B) -> + true + ; + arg(2,B,I), + setarg(2,B,removed), + ( I==not_stored_yet -> + true + ; + nb_getval('$chr_store_multi_hash_chr_translate____store_type___2-1',H), + delete_ht(H,A,B) + ) + ), + store_type(A,multi_store(F)). +store_type___2__1(A,_,B) :- + arg(2,B,C), + setarg(2,B,active), + ( C==not_stored_yet -> + nb_getval('$chr_store_multi_hash_chr_translate____store_type___2-1',D), + insert_ht(D,A,B) + ; + true + ). get_store_type(A,B) :- - '$via1_multi_hash_store_type/2-1'(A,E), + nb_getval('$chr_store_multi_hash_chr_translate____store_type___2-1',F), + lookup_ht(F,A,E), 'chr sbag_member'(C,E), - C=suspension(_,mutable(active),_,_,_,_,_,D), + C=suspension(_,active,_,D), !, B=D. get_store_type(A,B) :- - '$via1_multi_hash_assumed_store_type/2-1'(A,E), + nb_getval('$chr_store_multi_hash_chr_translate____assumed_store_type___2-1',F), + lookup_ht(F,A,E), 'chr sbag_member'(C,E), - C=suspension(_,mutable(active),_,_,_,_,_,D), + C=suspension(_,active,_,D), !, B=D. get_store_type(_,default). update_store_type(A,B) :- - '$via1_multi_hash_actual_store_types/2-1'(A,E), + nb_getval('$chr_store_multi_hash_chr_translate____actual_store_types___2-1',G), + lookup_ht(G,A,E), 'chr sbag_member'(C,E), - C=suspension(_,mutable(active),_,_,_,_,_,D), - member(B,D), - !. -update_store_type(A,B) :- - '$via1_multi_hash_actual_store_types/2-1'(A,E), - 'chr sbag_member'(C,E), - C=suspension(_,mutable(active),_,_,_,_,_,D), - !, - remove_constraint_internal(C,_,F), - ( F==yes -> - '$delete_from_store_actual_store_types/2'(C) + C=suspension(_,active,_,D), + ( + memberchk(B,D), + ! ; - true - ), - actual_store_types(A,[B|D]). + !, + setarg(2,C,removed), + nb_getval('$chr_store_multi_hash_chr_translate____actual_store_types___2-1',F), + delete_ht(F,A,C), + actual_store_types(A,[B|D]) + ). update_store_type(A,B) :- actual_store_types(A,[B]). actual_store_types(A,B) :- - insert_constraint_internal(_,_,C,true,actual_store_types(A,B),[A,B]), - '$insert_in_store_actual_store_types/2'(C). + nb_getval('$chr_store_multi_hash_chr_translate____actual_atomic_multi_hash_keys___3-1',R), + lookup_ht(R,A,F), + 'chr sbag_member'(C,F), + C=suspension(_,active,_,D,E), + nb_getval('$chr_store_multi_hash_chr_translate____validate_store_type_assumption___1-1',Q), + lookup_ht(Q,A,H), + 'chr sbag_member'(G,H), + G=suspension(_,active,_), + !, + setarg(2,C,removed), + nb_getval('$chr_store_multi_hash_chr_translate____actual_atomic_multi_hash_keys___3-12',O), + delete_ht(O,k(A,D),C), + nb_getval('$chr_store_multi_hash_chr_translate____actual_atomic_multi_hash_keys___3-1',P), + delete_ht(P,A,C), + delete(B,multi_hash([D]),I), + D=[J], + ( get_constraint_arg_type(A,J,K), + enumerated_atomic_type(K,L) -> + M=L, + N=complete + ; + M=E, + N=incomplete + ), + actual_store_types(A,[atomic_constants(D,M,N)|I]). +actual_store_types(A,B) :- + nb_getval('$chr_store_multi_hash_chr_translate____actual_ground_multi_hash_keys___3-1',R), + lookup_ht(R,A,F), + 'chr sbag_member'(C,F), + C=suspension(_,active,_,D,E), + nb_getval('$chr_store_multi_hash_chr_translate____validate_store_type_assumption___1-1',Q), + lookup_ht(Q,A,H), + 'chr sbag_member'(G,H), + G=suspension(_,active,_), + !, + setarg(2,C,removed), + nb_getval('$chr_store_multi_hash_chr_translate____actual_ground_multi_hash_keys___3-12',O), + delete_ht(O,k(A,D),C), + nb_getval('$chr_store_multi_hash_chr_translate____actual_ground_multi_hash_keys___3-1',P), + delete_ht(P,A,C), + ( D=[I], + get_constraint_arg_type(A,I,J), + ( is_chr_constants_type(J,K,_) -> + get_chr_constants(K,L) + ; + ( J=chr_enum(L) -> + true + ) + ) -> + M=complete + ; + L=E, + M=incomplete + ), + delete(B,multi_hash([D]),N), + actual_store_types(A,[ground_constants(D,L,M)|N]). +actual_store_types(A,B) :- + nb_getval('$chr_store_multi_hash_chr_translate____validate_store_type_assumption___1-1',V), + lookup_ht(V,A,D), + 'chr sbag_member'(C,D), + C=suspension(_,active,_), + ( + ( + memberchk(multi_hash([[E]]),B), + ( + get_constraint_type(A,F), + nth1(E,F,G), + enumerated_atomic_type(G,H), + !, + delete(B,multi_hash([[E]]),I), + actual_store_types(A,[atomic_constants([E],H,complete)|I]) + ; + get_constraint_arg_type(A,E,J), + ( J=chr_enum(K) -> + true + ; + ( is_chr_constants_type(J,L,_) -> + get_chr_constants(L,K) + ) + ), + !, + delete(B,multi_hash([[E]]),M), + actual_store_types(A,[ground_constants([E],K,complete)|M]) + ) + ; + nb_getval('$chr_store_multi_hash_chr_translate____assumed_store_type___2-1',Y), + lookup_ht(Y,A,O), + 'chr sbag_member'(N,O), + N=suspension(_,active,_,_), + !, + setarg(2,C,removed), + nb_getval('$chr_store_multi_hash_chr_translate____validate_store_type_assumption___1-1',X), + delete_ht(X,A,C), + setarg(2,N,removed), + nb_getval('$chr_store_multi_hash_chr_translate____assumed_store_type___2-1',W), + delete_ht(W,A,N), + ( maplist(partial_store,B) -> + P=[global_ground|B] + ; + P=B + ), + store_type(A,multi_store(P)) + ) + ; + nb_getval('$chr_store_multi_hash_chr_translate____store_type___2-1',U), + lookup_ht(U,A,R), + 'chr sbag_member'(Q,R), + Q=suspension(_,active,_,_), + !, + setarg(2,C,removed), + nb_getval('$chr_store_multi_hash_chr_translate____validate_store_type_assumption___1-1',T), + delete_ht(T,A,C), + setarg(2,Q,removed), + nb_getval('$chr_store_multi_hash_chr_translate____store_type___2-1',S), + delete_ht(S,A,Q), + store_type(A,multi_store(B)) + ). +actual_store_types(A,B) :- + C=suspension(D,active,A,B), + 'chr gen_id'(D), + nb_getval('$chr_store_multi_hash_chr_translate____actual_store_types___2-1',E), + insert_ht(E,A,C). +assumed_store_type(A,_) :- + nb_getval('$chr_store_multi_hash_chr_translate____validate_store_type_assumption___1-1',I), + lookup_ht(I,A,C), + 'chr sbag_member'(B,C), + B=suspension(_,active,_), + ( + ( + nb_getval('$chr_store_multi_hash_chr_translate____actual_store_types___2-1',M), + lookup_ht(M,A,F), + 'chr sbag_member'(D,F), + D=suspension(_,active,_,E), + !, + setarg(2,B,removed), + nb_getval('$chr_store_multi_hash_chr_translate____validate_store_type_assumption___1-1',L), + delete_ht(L,A,B), + setarg(2,D,removed), + nb_getval('$chr_store_multi_hash_chr_translate____actual_store_types___2-1',K), + delete_ht(K,A,D), + ( maplist(partial_store,E) -> + G=[global_ground|E] + ; + G=E + ), + store_type(A,multi_store(G)) + ; + chr_pp_flag(debugable,on), + !, + setarg(2,B,removed), + nb_getval('$chr_store_multi_hash_chr_translate____validate_store_type_assumption___1-1',J), + delete_ht(J,A,B), + store_type(A,default) + ) + ; + !, + setarg(2,B,removed), + nb_getval('$chr_store_multi_hash_chr_translate____validate_store_type_assumption___1-1',H), + delete_ht(H,A,B), + store_type(A,global_ground) + ). assumed_store_type(A,B) :- - insert_constraint_internal(_,_,C,true,assumed_store_type(A,B),[A,B]), - '$insert_in_store_assumed_store_type/2'(C). + C=suspension(D,active,A,B), + 'chr gen_id'(D), + nb_getval('$chr_store_multi_hash_chr_translate____assumed_store_type___2-1',E), + insert_ht(E,A,C). validate_store_type_assumption(A) :- - '$via1_multi_hash_actual_store_types/2-1'(A,D), - 'chr sbag_member'(B,D), - B=suspension(_,mutable(active),_,_,_,_,_,C), - '$via1_multi_hash_assumed_store_type/2-1'(A,F), - 'chr sbag_member'(E,F), - E=suspension(_,mutable(active),_,_,_,_,_,_), + validate_store_type_assumption___1__0(A,_). +validate_store_type_assumption___1__0(A,B) :- + nb_getval('$chr_store_multi_hash_chr_translate____actual_store_types___2-1',E), + lookup_ht(E,A,C), !, - remove_constraint_internal(B,_,G), - ( G==yes -> - '$delete_from_store_actual_store_types/2'(B) + B=suspension(D,not_stored_yet,A), + 'chr gen_id'(D), + validate_store_type_assumption___1__0__0__1(C,A,B). +validate_store_type_assumption___1__0__0__1([],B,A) :- + validate_store_type_assumption___1__1(B,A). +validate_store_type_assumption___1__0__0__1([E|F],A,B) :- + ( E=suspension(_,active,C,D), + C==A, + ground(A), + nb_getval('$chr_store_multi_hash_chr_translate____actual_atomic_multi_hash_keys___3-1',V), + lookup_ht(V,A,J), + 'chr sbag_member'(G,J), + G=suspension(_,active,_,H,I) -> + setarg(2,E,removed), + nb_getval('$chr_store_multi_hash_chr_translate____actual_store_types___2-1',U), + delete_ht(U,A,E), + setarg(2,G,removed), + nb_getval('$chr_store_multi_hash_chr_translate____actual_atomic_multi_hash_keys___3-12',S), + delete_ht(S,k(A,H),G), + nb_getval('$chr_store_multi_hash_chr_translate____actual_atomic_multi_hash_keys___3-1',T), + delete_ht(T,A,G), + arg(2,B,Q), + setarg(2,B,active), + ( Q==not_stored_yet -> + nb_getval('$chr_store_multi_hash_chr_translate____validate_store_type_assumption___1-1',R), + insert_ht(R,A,B) + ; + true + ), + delete(D,multi_hash([H]),K), + H=[L], + ( get_constraint_arg_type(A,L,M), + enumerated_atomic_type(M,N) -> + O=N, + P=complete + ; + O=I, + P=incomplete + ), + actual_store_types(A,[atomic_constants(H,O,P)|K]), + ( B=suspension(_,active,_) -> + setarg(2,B,inactive), + validate_store_type_assumption___1__0__0__1(F,A,B) + ; + true + ) ; - true - ), - remove_constraint_internal(E,_,H), - ( H==yes -> - '$delete_from_store_assumed_store_type/2'(E) - ; - true - ), - store_type(A,multi_store(C)). -validate_store_type_assumption(A) :- - '$via1_multi_hash_actual_store_types/2-1'(A,D), - 'chr sbag_member'(B,D), - B=suspension(_,mutable(active),_,_,_,_,_,C), - '$via1_multi_hash_store_type/2-1'(A,F), - 'chr sbag_member'(E,F), - E=suspension(_,mutable(active),_,_,_,_,_,_), + validate_store_type_assumption___1__0__0__1(F,A,B) + ). +validate_store_type_assumption___1__0(A,B) :- + B=suspension(C,not_stored_yet,A), + 'chr gen_id'(C), + validate_store_type_assumption___1__1(A,B). +validate_store_type_assumption___1__1(A,B) :- + nb_getval('$chr_store_multi_hash_chr_translate____actual_store_types___2-1',D), + lookup_ht(D,A,C), !, - remove_constraint_internal(B,_,G), - ( G==yes -> - '$delete_from_store_actual_store_types/2'(B) + validate_store_type_assumption___1__1__0__2(C,A,B). +validate_store_type_assumption___1__1__0__2([],B,A) :- + validate_store_type_assumption___1__2(B,A). +validate_store_type_assumption___1__1__0__2([E|F],A,B) :- + ( E=suspension(_,active,C,D), + C==A, + ground(A), + nb_getval('$chr_store_multi_hash_chr_translate____actual_ground_multi_hash_keys___3-1',V), + lookup_ht(V,A,J), + 'chr sbag_member'(G,J), + G=suspension(_,active,_,H,I) -> + setarg(2,E,removed), + nb_getval('$chr_store_multi_hash_chr_translate____actual_store_types___2-1',U), + delete_ht(U,A,E), + setarg(2,G,removed), + nb_getval('$chr_store_multi_hash_chr_translate____actual_ground_multi_hash_keys___3-12',S), + delete_ht(S,k(A,H),G), + nb_getval('$chr_store_multi_hash_chr_translate____actual_ground_multi_hash_keys___3-1',T), + delete_ht(T,A,G), + arg(2,B,Q), + setarg(2,B,active), + ( Q==not_stored_yet -> + nb_getval('$chr_store_multi_hash_chr_translate____validate_store_type_assumption___1-1',R), + insert_ht(R,A,B) + ; + true + ), + ( H=[K], + get_constraint_arg_type(A,K,L), + ( is_chr_constants_type(L,M,_) -> + get_chr_constants(M,N) + ; + ( L=chr_enum(N) -> + true + ) + ) -> + O=complete + ; + N=I, + O=incomplete + ), + delete(D,multi_hash([H]),P), + actual_store_types(A,[ground_constants(H,N,O)|P]), + ( B=suspension(_,active,_) -> + setarg(2,B,inactive), + validate_store_type_assumption___1__1__0__2(F,A,B) + ; + true + ) ; - true - ), - remove_constraint_internal(E,_,H), - ( H==yes -> - '$delete_from_store_store_type/2'(E) + validate_store_type_assumption___1__1__0__2(F,A,B) + ). +validate_store_type_assumption___1__1(A,B) :- + validate_store_type_assumption___1__2(A,B). +validate_store_type_assumption___1__2(A,B) :- + nb_getval('$chr_store_multi_hash_chr_translate____actual_store_types___2-1',D), + lookup_ht(D,A,C), + !, + validate_store_type_assumption___1__2__0__3(C,A,B). +validate_store_type_assumption___1__2__0__3([],B,A) :- + validate_store_type_assumption___1__3(B,A). +validate_store_type_assumption___1__2__0__3([E|F],A,B) :- + ( E=suspension(_,active,C,D), + C==A, + memberchk(multi_hash([[G]]),D), + get_constraint_type(A,H), + nth1(G,H,I), + enumerated_atomic_type(I,J) -> + setarg(2,E,removed), + nb_getval('$chr_store_multi_hash_chr_translate____actual_store_types___2-1',N), + delete_ht(N,A,E), + arg(2,B,L), + setarg(2,B,active), + ( L==not_stored_yet -> + nb_getval('$chr_store_multi_hash_chr_translate____validate_store_type_assumption___1-1',M), + insert_ht(M,A,B) + ; + true + ), + delete(D,multi_hash([[G]]),K), + actual_store_types(A,[atomic_constants([G],J,complete)|K]), + ( B=suspension(_,active,_) -> + setarg(2,B,inactive), + validate_store_type_assumption___1__2__0__3(F,A,B) + ; + true + ) ; + validate_store_type_assumption___1__2__0__3(F,A,B) + ). +validate_store_type_assumption___1__2(A,B) :- + validate_store_type_assumption___1__3(A,B). +validate_store_type_assumption___1__3(A,B) :- + nb_getval('$chr_store_multi_hash_chr_translate____actual_store_types___2-1',D), + lookup_ht(D,A,C), + !, + validate_store_type_assumption___1__3__0__4(C,A,B). +validate_store_type_assumption___1__3__0__4([],B,A) :- + validate_store_type_assumption___1__4(B,A). +validate_store_type_assumption___1__3__0__4([E|F],A,B) :- + ( E=suspension(_,active,C,D), + C==A, + memberchk(multi_hash([[G]]),D), + get_constraint_arg_type(A,G,H), + ( H=chr_enum(I) -> + true + ; + ( is_chr_constants_type(H,J,_) -> + get_chr_constants(J,I) + ) + ) -> + setarg(2,E,removed), + nb_getval('$chr_store_multi_hash_chr_translate____actual_store_types___2-1',N), + delete_ht(N,A,E), + arg(2,B,L), + setarg(2,B,active), + ( L==not_stored_yet -> + nb_getval('$chr_store_multi_hash_chr_translate____validate_store_type_assumption___1-1',M), + insert_ht(M,A,B) + ; + true + ), + delete(D,multi_hash([[G]]),K), + actual_store_types(A,[ground_constants([G],I,complete)|K]), + ( B=suspension(_,active,_) -> + setarg(2,B,inactive), + validate_store_type_assumption___1__3__0__4(F,A,B) + ; + true + ) + ; + validate_store_type_assumption___1__3__0__4(F,A,B) + ). +validate_store_type_assumption___1__3(A,B) :- + validate_store_type_assumption___1__4(A,B). +validate_store_type_assumption___1__4(A,B) :- + nb_getval('$chr_store_multi_hash_chr_translate____actual_store_types___2-1',P), + lookup_ht(P,A,E), + 'chr sbag_member'(C,E), + C=suspension(_,active,_,D), + ( + nb_getval('$chr_store_multi_hash_chr_translate____assumed_store_type___2-1',U), + lookup_ht(U,A,G), + 'chr sbag_member'(F,G), + F=suspension(_,active,_,_), + !, + setarg(2,C,removed), + nb_getval('$chr_store_multi_hash_chr_translate____actual_store_types___2-1',T), + delete_ht(T,A,C), + setarg(2,F,removed), + nb_getval('$chr_store_multi_hash_chr_translate____assumed_store_type___2-1',S), + delete_ht(S,A,F), + ( var(B) -> + true + ; + arg(2,B,R), + setarg(2,B,removed), + ( R==not_stored_yet -> + true + ; + nb_getval('$chr_store_multi_hash_chr_translate____validate_store_type_assumption___1-1',Q), + delete_ht(Q,A,B) + ) + ), + ( maplist(partial_store,D) -> + H=[global_ground|D] + ; + H=D + ), + store_type(A,multi_store(H)) + ; + nb_getval('$chr_store_multi_hash_chr_translate____store_type___2-1',O), + lookup_ht(O,A,J), + 'chr sbag_member'(I,J), + I=suspension(_,active,_,_), + !, + setarg(2,C,removed), + nb_getval('$chr_store_multi_hash_chr_translate____actual_store_types___2-1',N), + delete_ht(N,A,C), + setarg(2,I,removed), + nb_getval('$chr_store_multi_hash_chr_translate____store_type___2-1',M), + delete_ht(M,A,I), + ( var(B) -> + true + ; + arg(2,B,L), + setarg(2,B,removed), + ( L==not_stored_yet -> + true + ; + nb_getval('$chr_store_multi_hash_chr_translate____validate_store_type_assumption___1-1',K), + delete_ht(K,A,B) + ) + ), + store_type(A,multi_store(D)) + ). +validate_store_type_assumption___1__4(A,B) :- + nb_getval('$chr_store_multi_hash_chr_translate____assumed_store_type___2-1',H), + lookup_ht(H,A,D), + 'chr sbag_member'(C,D), + C=suspension(_,active,_,_), + ( + chr_pp_flag(debugable,on), + !, + setarg(2,C,removed), + nb_getval('$chr_store_multi_hash_chr_translate____assumed_store_type___2-1',K), + delete_ht(K,A,C), + ( var(B) -> + true + ; + arg(2,B,J), + setarg(2,B,removed), + ( J==not_stored_yet -> + true + ; + nb_getval('$chr_store_multi_hash_chr_translate____validate_store_type_assumption___1-1',I), + delete_ht(I,A,B) + ) + ), + store_type(A,default) + ; + !, + setarg(2,C,removed), + nb_getval('$chr_store_multi_hash_chr_translate____assumed_store_type___2-1',G), + delete_ht(G,A,C), + ( var(B) -> + true + ; + arg(2,B,F), + setarg(2,B,removed), + ( F==not_stored_yet -> + true + ; + nb_getval('$chr_store_multi_hash_chr_translate____validate_store_type_assumption___1-1',E), + delete_ht(E,A,B) + ) + ), + store_type(A,global_ground) + ). +validate_store_type_assumption___1__4(A,B) :- + ( var(B) -> true - ), - store_type(A,multi_store(C)). -validate_store_type_assumption(_). + ; + arg(2,B,D), + setarg(2,B,removed), + ( D==not_stored_yet -> + true + ; + nb_getval('$chr_store_multi_hash_chr_translate____validate_store_type_assumption___1-1',C), + delete_ht(C,A,B) + ) + ). rule_count(A) :- - insert_constraint_internal(_,_,B,true,rule_count(A),[A]), - '$insert_in_store_rule_count/1'(B). -inc_rule_count(A) :- - nb_getval('$chr_store_global_ground_chr_translate:rule_count/1',D), - 'chr sbag_member'(B,D), - B=suspension(_,mutable(active),_,_,_,_,C), - !, - remove_constraint_internal(B,_,E), - ( E==yes -> - '$delete_from_store_rule_count/1'(B) + nb_getval('$chr_store_global_ground_chr_translate____rule_count___1',C), + ( + 'chr sbag_member'(B,C), + B=suspension(_,active,_,_), + ! + ; + !, + rule_count___1__0__0__2(C,A) + ). +rule_count___1__0__0__2([],A) :- + rule_count___1__1(A). +rule_count___1__0__0__2([B|C],A) :- + ( B=suspension(_,active,_,_) -> + setarg(2,B,removed), + arg(3,B,D), + ( var(D) -> + nb_getval('$chr_store_global_ground_chr_translate____rule_count___1',E), + E=[_|F], + b_setval('$chr_store_global_ground_chr_translate____rule_count___1',F), + ( F=[G|_] -> + setarg(3,G,_) + ; + true + ) + ; + D=[_,_|F], + setarg(2,D,F), + ( F=[G|_] -> + setarg(3,G,D) + ; + true + ) + ), + rule_count___1__0__0__2(C,A) + ; + rule_count___1__0__0__2(C,A) + ). +rule_count(A) :- + rule_count___1__1(A). +rule_count___1__1(A) :- + B=suspension(C,active,_,A), + 'chr gen_id'(C), + nb_getval('$chr_store_global_ground_chr_translate____rule_count___1',D), + E=[B|D], + b_setval('$chr_store_global_ground_chr_translate____rule_count___1',E), + ( D=[F|_] -> + setarg(3,F,E) ; true + ). +inc_rule_count(A) :- + nb_getval('$chr_store_global_ground_chr_translate____rule_count___1',D), + 'chr sbag_member'(B,D), + B=suspension(_,active,_,C), + !, + setarg(2,B,removed), + arg(3,B,E), + ( var(E) -> + nb_getval('$chr_store_global_ground_chr_translate____rule_count___1',F), + F=[_|G], + b_setval('$chr_store_global_ground_chr_translate____rule_count___1',G), + ( G=[H|_] -> + setarg(3,H,_) + ; + true + ) + ; + E=[_,_|G], + setarg(2,E,G), + ( G=[H|_] -> + setarg(3,H,E) + ; + true + ) ), A is C+1, rule_count(A). inc_rule_count(1) :- rule_count(1). passive(A,B) :- - 'passive/2__0'(A,B,_). -'passive/2__0'(A,B,_) :- - '$via1_multi_hash_passive/2-1'(A,E), - 'chr sbag_member'(C,E), - C=suspension(_,mutable(active),_,_,_,_,_,D), - D=B, + passive___2__0(A,B,_). +passive___2__0(A,B,_) :- + nb_getval('$chr_store_multi_hash_chr_translate____passive___2-12',E), + lookup_ht(E,k(A,B),D), + 'chr sbag_member'(C,D), + C=suspension(_,active,_,_,_), !. -'passive/2__0'(A,B,C) :- - nb_getval('$chr_store_global_ground_chr_translate:allocation_occurrence/2',D), +passive___2__0(A,B,C) :- + nb_getval('$chr_store_multi_hash_chr_translate____least_occurrence___2-1',F), + lookup_ht(F,A,D), !, - allocate_constraint(true,C,passive(A,B),[A,B]), - 'passive/2__0__0'(D,A,B,C). -'passive/2__0__0'([],A,B,C) :- - 'passive/2__1'(A,B,C). -'passive/2__0__0'([F|G],A,B,C) :- - ( F=suspension(_,mutable(active),_,_,_,_,D,E), - '$via1_multi_hash_occurrence/4-1'(D,L), - 'chr sbag_member'(H,L), - H=suspension(_,mutable(active),_,_,_,_,_,I,J,K), - I==E, - J==A, - K==B -> - remove_constraint_internal(F,_,M), - ( M==yes -> - '$delete_from_store_allocation_occurrence/2'(F) - ; - true - ), - activate_constraint(O,_,C,P), - ( O==yes -> - '$insert_in_store_passive/2'(C) - ; - true - ), - N is E+1, - allocation_occurrence(D,N), - ( C=suspension(_,mutable(active),_,mutable(P),_,_,_,_) -> - 'chr update_mutable'(inactive,mutable(active)), - 'passive/2__0__0'(G,A,B,C) - ; - true - ) - ; - 'passive/2__0__0'(G,A,B,C) - ). -'passive/2__0'(A,B,C) :- - allocate_constraint(true,C,passive(A,B),[A,B]), - 'passive/2__1'(A,B,C). -'passive/2__1'(A,B,C) :- - '$via1_multi_hash_least_occurrence/2-1'(A,D), - !, - 'passive/2__1__0'(D,A,B,C). -'passive/2__1__0'([],A,B,C) :- - 'passive/2__2'(A,B,C). -'passive/2__1__0'([F|I],A,B,C) :- - ( F=suspension(_,mutable(active),_,_,_,_,D,E), + C=suspension(E,not_stored_yet,t,A,B), + 'chr gen_id'(E), + passive___2__0__0__6(D,A,B,C). +passive___2__0__0__6([],B,C,A) :- + passive___2__1(B,C,A). +passive___2__0__0__6([F|I],A,B,C) :- + ( F=suspension(_,active,D,E), D==A, E=[G|H], G==B, - '$via1_multi_hash_rule/2-1'(A,K), + ground(A), + nb_getval('$chr_store_multi_hash_chr_translate____rule___2-1',Q), + lookup_ht1(Q,A,A,K), 'chr sbag_member'(J,K), - J=suspension(_,mutable(active),_,_,_,_,_,_) -> - remove_constraint_internal(F,_,L), - ( L==yes -> - '$delete_from_store_least_occurrence/2'(F) - ; - true - ), - activate_constraint(M,_,C,N), - ( M==yes -> - '$insert_in_store_passive/2'(C) + J=suspension(_,active,_,_,_,_) -> + setarg(2,F,removed), + nb_getval('$chr_store_multi_hash_chr_translate____least_occurrence___2-12',O), + delete_ht(O,k(A,[B|H]),F), + nb_getval('$chr_store_multi_hash_chr_translate____least_occurrence___2-1',P), + delete_ht(P,A,F), + arg(2,C,L), + setarg(2,C,active), + ( L==not_stored_yet -> + nb_getval('$chr_store_multi_hash_chr_translate____passive___2-1',M), + insert_ht(M,A,C), + nb_getval('$chr_store_multi_hash_chr_translate____passive___2-12',N), + insert_ht(N,k(A,B),C) ; true ), least_occurrence(A,H), - ( C=suspension(_,mutable(active),_,mutable(N),_,_,_,_) -> - 'chr update_mutable'(inactive,mutable(active)), - 'passive/2__1__0'(I,A,B,C) + ( C=suspension(_,active,_,_,_) -> + setarg(2,C,inactive), + passive___2__0__0__6(I,A,B,C) ; true ) ; - 'passive/2__1__0'(I,A,B,C) + passive___2__0__0__6(I,A,B,C) ). -'passive/2__1'(A,B,C) :- - 'passive/2__2'(A,B,C). -'passive/2__2'(A,B,C) :- - nb_getval('$chr_store_global_ground_chr_translate:stored/3',D), +passive___2__0(A,B,C) :- + C=suspension(D,not_stored_yet,t,A,B), + 'chr gen_id'(D), + passive___2__1(A,B,C). +passive___2__1(A,B,C) :- + nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-34',E), + lookup_ht(E,k(A,B),D), !, - 'passive/2__2__0'(D,A,B,C). -'passive/2__2__0'([],A,B,C) :- - 'passive/2__3'(A,B,C). -'passive/2__2__0'([G|H],A,B,C) :- - ( G=suspension(_,mutable(active),_,_,_,_,D,E,F), - F=yes, - '$via1_multi_hash_occurrence/4-1'(D,M), - 'chr sbag_member'(I,M), - I=suspension(_,mutable(active),_,_,_,_,_,J,K,L), - J==E, - K==A, - L==B, - '$via1_multi_hash_stored_complete/3-1'(D,Q), - 'chr sbag_member'(N,Q), - N=suspension(_,mutable(active),_,_,_,_,_,O,P), - E - remove_constraint_internal(G,_,R), - ( R==yes -> - '$delete_from_store_stored/3'(G) + passive___2__1__0__8(D,A,B,C). +passive___2__1__0__8([],B,C,A) :- + passive___2__2(B,C,A). +passive___2__1__0__8([H|J],B,C,A) :- + ( H=suspension(_,active,_,_,D,E,F,G,_), + F==B, + G==C, + nb_getval('$chr_store_multi_hash_chr_translate____stored_complete___3-1',K), + lookup_ht(K,D,I) -> + passive___2__1__1__8(I,D,E,H,J,B,C,A) + ; + passive___2__1__0__8(J,B,C,A) + ). +passive___2__1__1__8([],_,_,_,A,C,D,B) :- + passive___2__1__0__8(A,C,D,B). +passive___2__1__1__8([K|L],E,F,A,G,B,C,D) :- + ( K=suspension(_,active,_,H,I,J), + H==E, + F + setarg(2,K,removed), + nb_getval('$chr_store_multi_hash_chr_translate____stored_complete___3-1',U), + delete_ht(U,E,K), + setarg(2,M,removed), + nb_getval('$chr_store_multi_hash_chr_translate____stored___3-1',S), + delete_ht(S,E,M), + nb_getval('$chr_store_multi_hash_chr_translate____stored___3-123',T), + delete_ht(T,k(E,F,yes),M), + arg(2,D,P), + setarg(2,D,active), + ( P==not_stored_yet -> + nb_getval('$chr_store_multi_hash_chr_translate____passive___2-1',Q), + insert_ht(Q,B,D), + nb_getval('$chr_store_multi_hash_chr_translate____passive___2-12',R), + insert_ht(R,k(B,C),D) ; true ), - remove_constraint_internal(N,_,S), - ( S==yes -> - '$delete_from_store_stored_complete/3'(N) - ; - true - ), - activate_constraint(U,_,C,V), - ( U==yes -> - '$insert_in_store_passive/2'(C) - ; - true - ), - T is P-1, - stored(D,E,maybe), - stored_complete(D,O,T), - ( C=suspension(_,mutable(active),_,mutable(V),_,_,_,_) -> - 'chr update_mutable'(inactive,mutable(active)), - 'passive/2__2__0'(H,A,B,C) + O is J-1, + stored(E,F,maybe), + stored_complete(E,I,O), + ( D=suspension(_,active,_,_,_) -> + setarg(2,D,inactive), + passive___2__1__1__8(L,E,F,A,G,B,C,D) ; true ) ; - 'passive/2__2__0'(H,A,B,C) + passive___2__1__1__8(L,E,F,A,G,B,C,D) ). -'passive/2__2'(A,B,C) :- - 'passive/2__3'(A,B,C). -'passive/2__3'(A,B,C) :- - '$via1_multi_hash_rule/2-1'(A,D), +passive___2__1(A,B,C) :- + passive___2__2(A,B,C). +passive___2__2(A,B,C) :- + nb_getval('$chr_store_multi_hash_chr_translate____rule___2-1',E), + lookup_ht1(E,A,A,D), !, - 'passive/2__3__0'(D,A,B,C). -'passive/2__3__0'([],A,B,C) :- - 'passive/2__4'(A,B,C). -'passive/2__3__0'([F|G],A,B,C) :- - ( F=suspension(_,mutable(active),_,_,_,_,D,E), - D==A, - M=t(91,F,C), - 'chr novel_production'(F,M), - 'chr novel_production'(C,M), - E=pragma(rule(_,_,_,_),ids([B|I],H),_,_,A) -> - 'chr extend_history'(C,M), - activate_constraint(K,_,C,L), - ( K==yes -> - '$insert_in_store_passive/2'(C) + passive___2__2__0__9(D,A,B,C). +passive___2__2__0__9([],B,C,A) :- + passive___2__3(B,C,A). +passive___2__2__0__9([F|G],B,C,A) :- + ( F=suspension(_,active,_,_,D,E), + D==B, + K=t(246,F,A), + '$novel_production'(F,K), + '$novel_production'(A,K), + E=pragma(rule(_,_,_,_),ids([C|I],H),_,_,B) -> + '$extend_history'(A,K), + arg(2,A,L), + setarg(2,A,active), + ( L==not_stored_yet -> + nb_getval('$chr_store_multi_hash_chr_translate____passive___2-1',M), + insert_ht(M,B,A), + nb_getval('$chr_store_multi_hash_chr_translate____passive___2-12',N), + insert_ht(N,k(B,C),A) ; true ), append(I,H,J), - check_all_passive(A,J), - ( C=suspension(_,mutable(active),_,mutable(L),_,_,_,_) -> - 'chr update_mutable'(inactive,mutable(active)), - 'passive/2__3__0'(G,A,B,C) + check_all_passive(B,J), + ( A=suspension(_,active,_,_,_) -> + setarg(2,A,inactive), + passive___2__2__0__9(G,B,C,A) ; true ) ; - 'passive/2__3__0'(G,A,B,C) + passive___2__2__0__9(G,B,C,A) ). -'passive/2__3'(A,B,C) :- - 'passive/2__4'(A,B,C). -'passive/2__4'(A,B,C) :- - '$via1_multi_hash_rule/2-1'(A,D), +passive___2__2(A,B,C) :- + passive___2__3(A,B,C). +passive___2__3(A,B,C) :- + nb_getval('$chr_store_multi_hash_chr_translate____rule___2-1',E), + lookup_ht1(E,A,A,D), !, - 'passive/2__4__0'(D,A,B,C). -'passive/2__4__0'([],A,B,C) :- - 'passive/2__5'(A,B,C). -'passive/2__4__0'([F|G],A,B,C) :- - ( F=suspension(_,mutable(active),_,_,_,_,D,E), - D==A, - K=t(92,F,C), - 'chr novel_production'(F,K), - 'chr novel_production'(C,K), - E=pragma(rule(_,_,_,_),ids([],[B|H]),_,_,A) -> - 'chr extend_history'(C,K), - activate_constraint(I,_,C,J), - ( I==yes -> - '$insert_in_store_passive/2'(C) + passive___2__3__0__10(D,A,B,C). +passive___2__3__0__10([],B,C,A) :- + passive___2__4(B,C,A). +passive___2__3__0__10([F|G],B,C,A) :- + ( F=suspension(_,active,_,_,D,E), + D==B, + I=t(247,F,A), + '$novel_production'(F,I), + '$novel_production'(A,I), + E=pragma(rule(_,_,_,_),ids([],[C|H]),_,_,B) -> + '$extend_history'(A,I), + arg(2,A,J), + setarg(2,A,active), + ( J==not_stored_yet -> + nb_getval('$chr_store_multi_hash_chr_translate____passive___2-1',K), + insert_ht(K,B,A), + nb_getval('$chr_store_multi_hash_chr_translate____passive___2-12',L), + insert_ht(L,k(B,C),A) ; true ), - check_all_passive(A,H), - ( C=suspension(_,mutable(active),_,mutable(J),_,_,_,_) -> - 'chr update_mutable'(inactive,mutable(active)), - 'passive/2__4__0'(G,A,B,C) + check_all_passive(B,H), + ( A=suspension(_,active,_,_,_) -> + setarg(2,A,inactive), + passive___2__3__0__10(G,B,C,A) ; true ) ; - 'passive/2__4__0'(G,A,B,C) + passive___2__3__0__10(G,B,C,A) ). -'passive/2__4'(A,B,C) :- - 'passive/2__5'(A,B,C). -'passive/2__5'(A,B,C) :- - '$via1_multi_hash_check_all_passive/2-1'(A,D), +passive___2__3(A,B,C) :- + passive___2__4(A,B,C). +passive___2__4(A,B,C) :- + nb_getval('$chr_store_multi_hash_chr_translate____check_all_passive___2-1',E), + lookup_ht(E,A,D), !, - 'passive/2__5__0'(D,A,B,C). -'passive/2__5__0'([],A,B,C) :- - 'passive/2__6'(A,B,C). -'passive/2__5__0'([F|I],A,B,C) :- - ( F=suspension(_,mutable(active),_,_,_,_,D,E), + passive___2__4__0__11(D,A,B,C). +passive___2__4__0__11([],B,C,A) :- + passive___2__5(B,C,A). +passive___2__4__0__11([F|I],A,B,C) :- + ( F=suspension(_,active,D,E), D==A, E=[G|H], G==B -> - remove_constraint_internal(F,_,J), - ( J==yes -> - '$delete_from_store_check_all_passive/2'(F) - ; - true - ), - activate_constraint(K,_,C,L), - ( K==yes -> - '$insert_in_store_passive/2'(C) + setarg(2,F,removed), + nb_getval('$chr_store_multi_hash_chr_translate____check_all_passive___2-12',M), + delete_ht(M,k(A,[B|H]),F), + nb_getval('$chr_store_multi_hash_chr_translate____check_all_passive___2-1',N), + delete_ht(N,A,F), + arg(2,C,J), + setarg(2,C,active), + ( J==not_stored_yet -> + nb_getval('$chr_store_multi_hash_chr_translate____passive___2-1',K), + insert_ht(K,A,C), + nb_getval('$chr_store_multi_hash_chr_translate____passive___2-12',L), + insert_ht(L,k(A,B),C) ; true ), check_all_passive(A,H), - ( C=suspension(_,mutable(active),_,mutable(L),_,_,_,_) -> - 'chr update_mutable'(inactive,mutable(active)), - 'passive/2__5__0'(I,A,B,C) + ( C=suspension(_,active,_,_,_) -> + setarg(2,C,inactive), + passive___2__4__0__11(I,A,B,C) ; true ) ; - 'passive/2__5__0'(I,A,B,C) + passive___2__4__0__11(I,A,B,C) ). -'passive/2__5'(A,B,C) :- - 'passive/2__6'(A,B,C). -'passive/2__6'(_,_,A) :- - activate_constraint(B,_,A,_), - ( B==yes -> - '$insert_in_store_passive/2'(A) +passive___2__4(A,B,C) :- + passive___2__5(A,B,C). +passive___2__5(A,B,C) :- + nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-34',E), + lookup_ht(E,k(A,B),D), + !, + passive___2__5__0__14(D,A,B,C). +passive___2__5__0__14([],B,C,A) :- + passive___2__6(B,C,A). +passive___2__5__0__14([H|J],B,C,A) :- + ( H=suspension(_,active,_,_,D,E,F,G,_), + F==B, + G==C, + nb_getval('$chr_store_multi_hash_chr_translate____skip_to_next_id___2-12',K), + lookup_ht(K,k(D,E),I) -> + passive___2__5__1__14(I,D,E,H,J,B,C,A) + ; + passive___2__5__0__14(J,B,C,A) + ). +passive___2__5__1__14([],_,_,_,A,C,D,B) :- + passive___2__5__0__14(A,C,D,B). +passive___2__5__1__14([J|K],F,G,A,B,D,E,C) :- + ( J=suspension(_,active,_,H,I), + H==F, + I==G, + M=t(357,A,C,J), + '$novel_production'(A,M), + '$novel_production'(C,M), + '$novel_production'(J,M), + G>1 -> + '$extend_history'(C,M), + arg(2,C,N), + setarg(2,C,active), + ( N==not_stored_yet -> + nb_getval('$chr_store_multi_hash_chr_translate____passive___2-1',O), + insert_ht(O,D,C), + nb_getval('$chr_store_multi_hash_chr_translate____passive___2-12',P), + insert_ht(P,k(D,E),C) + ; + true + ), + L is G-1, + skip_to_next_id(F,L), + ( C=suspension(_,active,_,_,_) -> + setarg(2,C,inactive), + passive___2__5__1__14(K,F,G,A,B,D,E,C) + ; + true + ) + ; + passive___2__5__1__14(K,F,G,A,B,D,E,C) + ). +passive___2__5(A,B,C) :- + passive___2__6(A,B,C). +passive___2__6(A,B,C) :- + nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-34',E), + lookup_ht(E,k(A,B),D), + !, + passive___2__6__0__15(D,A,B,C). +passive___2__6__0__15([],B,C,A) :- + passive___2__7(B,C,A). +passive___2__6__0__15([H|J],B,C,A) :- + ( H=suspension(_,active,_,_,D,E,F,G,_), + F==B, + G==C, + nb_getval('$chr_store_multi_hash_chr_translate____set_occurrence_code_id___3-12',K), + lookup_ht(K,k(D,E),I) -> + passive___2__6__1__15(I,D,E,H,J,B,C,A) + ; + passive___2__6__0__15(J,B,C,A) + ). +passive___2__6__1__15([],_,_,_,A,C,D,B) :- + passive___2__6__0__15(A,C,D,B). +passive___2__6__1__15([K|L],E,F,A,G,B,C,D) :- + ( K=suspension(_,active,H,I,J), + H==E, + I==F -> + setarg(2,K,removed), + nb_getval('$chr_store_multi_hash_chr_translate____set_occurrence_code_id___3-12',Q), + delete_ht(Q,k(E,F),K), + arg(2,D,N), + setarg(2,D,active), + ( N==not_stored_yet -> + nb_getval('$chr_store_multi_hash_chr_translate____passive___2-1',O), + insert_ht(O,B,D), + nb_getval('$chr_store_multi_hash_chr_translate____passive___2-12',P), + insert_ht(P,k(B,C),D) + ; + true + ), + occurrence_code_id(E,F,J), + M is F+1, + set_occurrence_code_id(E,M,J), + ( D=suspension(_,active,_,_,_) -> + setarg(2,D,inactive), + passive___2__6__1__15(L,E,F,A,G,B,C,D) + ; + true + ) + ; + passive___2__6__1__15(L,E,F,A,G,B,C,D) + ). +passive___2__6(A,B,C) :- + passive___2__7(A,B,C). +passive___2__7(A,B,C) :- + arg(2,C,D), + setarg(2,C,active), + ( D==not_stored_yet -> + nb_getval('$chr_store_multi_hash_chr_translate____passive___2-1',E), + insert_ht(E,A,C), + nb_getval('$chr_store_multi_hash_chr_translate____passive___2-12',F), + insert_ht(F,k(A,B),C) ; true ). is_passive(A,B) :- - '$via1_multi_hash_passive/2-1'(A,E), - 'chr sbag_member'(C,E), - C=suspension(_,mutable(active),_,_,_,_,_,D), - D==B, + nb_getval('$chr_store_multi_hash_chr_translate____passive___2-12',E), + lookup_ht(E,k(A,B),D), + 'chr sbag_member'(C,D), + C=suspension(_,active,_,_,_), !. is_passive(_,_) :- fail. any_passive_head(A) :- - '$via1_multi_hash_passive/2-1'(A,C), + nb_getval('$chr_store_multi_hash_chr_translate____passive___2-1',D), + lookup_ht(D,A,C), 'chr sbag_member'(B,C), - B=suspension(_,mutable(active),_,_,_,_,_,_), + B=suspension(_,active,_,_,_), !. any_passive_head(_) :- fail. -new_occurrence(A,B,C) :- - '$via1_multi_hash_max_occurrence/2-1'(A,F), - 'chr sbag_member'(D,F), - D=suspension(_,mutable(active),_,_,_,_,_,E), +new_occurrence(A,B,C,D) :- + nb_getval('$chr_store_multi_hash_chr_translate____max_occurrence___2-1',J), + lookup_ht(J,A,G), + 'chr sbag_member'(E,G), + E=suspension(_,active,_,_,F), !, - remove_constraint_internal(D,_,H), - ( H==yes -> - '$delete_from_store_max_occurrence/2'(D) + setarg(2,E,removed), + nb_getval('$chr_store_multi_hash_chr_translate____max_occurrence___2-1',I), + delete_ht(I,A,E), + H is F+1, + occurrence(A,H,B,C,D), + max_occurrence(A,H). +new_occurrence(A,B,_,_) :- + chr_error(internal,'new_occurrence: missing max_occurrence for ~w in rule ~w +',[A,B]). +occurrence(A,B,C,D,E) :- + occurrence___5__0(A,B,C,D,E,_). +occurrence___5__0(A,B,C,D,E,F) :- + nb_getval('$chr_store_multi_hash_chr_translate____rule___2-1',I), + lookup_ht1(I,C,C,G), + !, + F=suspension(H,not_stored_yet,t,_,A,B,C,D,E), + 'chr gen_id'(H), + occurrence___5__0__0__3(G,A,B,C,D,E,F). +occurrence___5__0__0__3([],B,C,D,E,F,A) :- + occurrence___5__1(B,C,D,E,F,A). +occurrence___5__0__0__3([I|K],B,C,D,E,F,A) :- + ( I=suspension(_,active,_,_,G,H), + G==D, + nb_getval('$chr_store_multi_hash_chr_translate____allocation_occurrence___2-12',L), + lookup_ht(L,k(B,C),J) -> + occurrence___5__0__1__3(J,H,I,K,B,C,D,E,F,A) ; - true - ), - G is E+1, - occurrence(A,G,B,C), - max_occurrence(A,G). -new_occurrence(A,B,_) :- - format('ERROR: new_occurrence: missing max_occurrence for ~w in rule ~w -',[A,B]), - fail. -occurrence(A,B,C,D) :- - 'occurrence/4__0'(A,B,C,D,_). -'occurrence/4__0'(A,B,C,D,E) :- - '$via1_multi_hash_allocation_occurrence/2-1'(A,F), - !, - allocate_constraint(true,E,occurrence(A,B,C,D),[A,B,C,D]), - 'occurrence/4__0__0'(F,A,B,C,D,E). -'occurrence/4__0__0'([],A,B,C,D,E) :- - 'occurrence/4__1'(A,B,C,D,E). -'occurrence/4__0__0'([H|I],A,B,C,D,E) :- - ( H=suspension(_,mutable(active),_,_,_,_,F,G), - F==A, - G==B, - '$via1_multi_hash_passive/2-1'(C,L), - 'chr sbag_member'(J,L), - J=suspension(_,mutable(active),_,_,_,_,_,K), - K==D -> - remove_constraint_internal(H,_,M), - ( M==yes -> - '$delete_from_store_allocation_occurrence/2'(H) + occurrence___5__0__0__3(K,B,C,D,E,F,A) + ). +occurrence___5__0__1__3([],_,_,A,C,D,E,F,G,B) :- + occurrence___5__0__0__3(A,C,D,E,F,G,B). +occurrence___5__0__1__3([L|M],I,A,B,D,E,F,G,H,C) :- + ( L=suspension(_,active,_,J,K), + J==D, + K==E, + N=t(58,A,C,L), + '$novel_production'(A,N), + '$novel_production'(C,N), + '$novel_production'(L,N) -> + '$extend_history'(C,N), + arg(2,C,O), + setarg(2,C,active), + ( O==not_stored_yet -> + nb_getval('$chr_store_global_ground_chr_translate____occurrence___5',P), + Q=[C|P], + b_setval('$chr_store_global_ground_chr_translate____occurrence___5',Q), + ( P=[R|_] -> + setarg(4,R,Q) + ; + true + ), + nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-12',S), + insert_ht(S,k(D,E),C), + nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-3',T), + insert_ht(T,F,C), + nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-34',U), + insert_ht(U,k(F,G),C), + nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-1',V), + insert_ht(V,D,C) ; true ), - activate_constraint(O,_,E,P), - ( O==yes -> - '$insert_in_store_occurrence/4'(E) + \+is_passive(F,G), + H==propagation, + ( stored_in_guard_before_next_kept_occurrence(D,E) -> + true + ; + ( I=pragma(rule([_|_],_,_,_),_,_,_,_) -> + is_observed(D,E) + ) + ; + ( is_least_occurrence(F) -> + is_observed(D,E) + ) ; true ), - N is B+1, - allocation_occurrence(A,N), - ( E=suspension(_,mutable(active),_,mutable(P),_,_,_,_,_,_) -> - 'chr update_mutable'(inactive,mutable(active)), - 'occurrence/4__0__0'(I,A,B,C,D,E) + ( C=suspension(_,active,_,_,_,_,_,_,_) -> + setarg(2,C,inactive), + occurrence___5__0__1__3(M,I,A,B,D,E,F,G,H,C) ; true ) ; - 'occurrence/4__0__0'(I,A,B,C,D,E) + occurrence___5__0__1__3(M,I,A,B,D,E,F,G,H,C) ). -'occurrence/4__0'(A,B,C,D,E) :- - allocate_constraint(true,E,occurrence(A,B,C,D),[A,B,C,D]), - 'occurrence/4__1'(A,B,C,D,E). -'occurrence/4__1'(A,B,C,D,E) :- - '$via1_multi_hash_allocation_occurrence/2-1'(A,F), +occurrence___5__0(A,B,C,D,E,F) :- + F=suspension(G,not_stored_yet,t,_,A,B,C,D,E), + 'chr gen_id'(G), + occurrence___5__1(A,B,C,D,E,F). +occurrence___5__1(A,B,C,D,E,F) :- + nb_getval('$chr_store_multi_hash_chr_translate____least_occurrence___2-1',H), + lookup_ht(H,C,G), !, - 'occurrence/4__1__0'(F,A,B,C,D,E). -'occurrence/4__1__0'([],A,B,C,D,E) :- - 'occurrence/4__2'(A,B,C,D,E). -'occurrence/4__1__0'([H|I],A,B,C,D,E) :- - ( H=suspension(_,mutable(active),_,_,_,_,F,G), - F==A, - G==B, - '$via1_multi_hash_rule/2-1'(C,L), - 'chr sbag_member'(J,L), - J=suspension(_,mutable(active),_,_,_,_,_,K), - K=pragma(_,ids(N,_),_,_,_), - member(D,N) -> - remove_constraint_internal(H,_,M), - ( M==yes -> - '$delete_from_store_allocation_occurrence/2'(H) - ; - true - ), - activate_constraint(P,_,E,Q), - ( P==yes -> - '$insert_in_store_occurrence/4'(E) - ; - true - ), - O is B+1, - allocation_occurrence(A,O), - ( E=suspension(_,mutable(active),_,mutable(Q),_,_,_,_,_,_) -> - 'chr update_mutable'(inactive,mutable(active)), - 'occurrence/4__1__0'(I,A,B,C,D,E) - ; - true - ) - ; - 'occurrence/4__1__0'(I,A,B,C,D,E) - ). -'occurrence/4__1'(A,B,C,D,E) :- - 'occurrence/4__2'(A,B,C,D,E). -'occurrence/4__2'(A,B,C,D,E) :- - '$via1_multi_hash_allocation_occurrence/2-1'(A,F), - !, - 'occurrence/4__2__0'(F,A,B,C,D,E). -'occurrence/4__2__0'([],A,B,C,D,E) :- - 'occurrence/4__3'(A,B,C,D,E). -'occurrence/4__2__0'([H|I],A,B,C,D,E) :- - ( H=suspension(_,mutable(active),_,_,_,_,F,G), - F==A, - G==B, - '$via1_multi_hash_rule/2-1'(C,L), - 'chr sbag_member'(J,L), - J=suspension(_,mutable(active),_,_,_,_,_,K), - K=pragma(rule([_|_],_,_,true),_,_,_,_) -> - remove_constraint_internal(H,_,M), - ( M==yes -> - '$delete_from_store_allocation_occurrence/2'(H) - ; - true - ), - activate_constraint(O,_,E,P), - ( O==yes -> - '$insert_in_store_occurrence/4'(E) - ; - true - ), - N is B+1, - allocation_occurrence(A,N), - ( E=suspension(_,mutable(active),_,mutable(P),_,_,_,_,_,_) -> - 'chr update_mutable'(inactive,mutable(active)), - 'occurrence/4__2__0'(I,A,B,C,D,E) - ; - true - ) - ; - 'occurrence/4__2__0'(I,A,B,C,D,E) - ). -'occurrence/4__2'(A,B,C,D,E) :- - 'occurrence/4__3'(A,B,C,D,E). -'occurrence/4__3'(A,B,C,D,E) :- - '$via1_multi_hash_allocation_occurrence/2-1'(A,F), - !, - 'occurrence/4__3__0'(F,A,B,C,D,E). -'occurrence/4__3__0'([],A,B,C,D,E) :- - 'occurrence/4__4'(A,B,C,D,E). -'occurrence/4__3__0'([H|I],A,B,C,D,E) :- - ( H=suspension(_,mutable(active),_,_,_,_,F,G), - F==A, - G==B, - '$via1_multi_hash_rule/2-1'(C,L), - 'chr sbag_member'(J,L), - J=suspension(_,mutable(active),_,_,_,_,_,K), - K=pragma(rule([_|_],_,_,_),_,_,_,_), - \+is_observed(A,B) -> - remove_constraint_internal(H,_,M), - ( M==yes -> - '$delete_from_store_allocation_occurrence/2'(H) - ; - true - ), - activate_constraint(O,_,E,P), - ( O==yes -> - '$insert_in_store_occurrence/4'(E) - ; - true - ), - N is B+1, - allocation_occurrence(A,N), - ( E=suspension(_,mutable(active),_,mutable(P),_,_,_,_,_,_) -> - 'chr update_mutable'(inactive,mutable(active)), - 'occurrence/4__3__0'(I,A,B,C,D,E) - ; - true - ) - ; - 'occurrence/4__3__0'(I,A,B,C,D,E) - ). -'occurrence/4__3'(A,B,C,D,E) :- - 'occurrence/4__4'(A,B,C,D,E). -'occurrence/4__4'(A,B,C,D,E) :- - '$via1_multi_hash_allocation_occurrence/2-1'(A,F), - !, - 'occurrence/4__4__0'(F,A,B,C,D,E). -'occurrence/4__4__0'([],A,B,C,D,E) :- - 'occurrence/4__5'(A,B,C,D,E). -'occurrence/4__4__0'([H|I],A,B,C,D,E) :- - ( H=suspension(_,mutable(active),_,_,_,_,F,G), - F==A, - G==B, - '$via1_multi_hash_least_occurrence/2-1'(C,L), - 'chr sbag_member'(J,L), - J=suspension(_,mutable(active),_,_,_,_,_,K), - K=[], - '$via1_multi_hash_rule/2-1'(C,O), + occurrence___5__1__0__6(G,A,B,C,D,E,F). +occurrence___5__1__0__6([],B,C,D,E,F,A) :- + occurrence___5__2(B,C,D,E,F,A). +occurrence___5__1__0__6([I|L],A,B,C,D,E,F) :- + ( I=suspension(_,active,G,H), + G==C, + H=[J|K], + J==D, + ground(A), + nb_getval('$chr_store_multi_hash_chr_translate____allocation_occurrence___2-1',C1), + lookup_ht(C1,A,O), 'chr sbag_member'(M,O), - M=suspension(_,mutable(active),_,_,_,_,_,N), - N=pragma(rule([],_,_,_),_,_,_,_), - \+is_observed(A,B) -> - remove_constraint_internal(H,_,P), - ( P==yes -> - '$delete_from_store_allocation_occurrence/2'(H) - ; - true - ), - activate_constraint(R,_,E,S), - ( R==yes -> - '$insert_in_store_occurrence/4'(E) - ; - true - ), - Q is B+1, - allocation_occurrence(A,Q), - ( E=suspension(_,mutable(active),_,mutable(S),_,_,_,_,_,_) -> - 'chr update_mutable'(inactive,mutable(active)), - 'occurrence/4__4__0'(I,A,B,C,D,E) - ; - true - ) - ; - 'occurrence/4__4__0'(I,A,B,C,D,E) - ). -'occurrence/4__4'(A,B,C,D,E) :- - 'occurrence/4__5'(A,B,C,D,E). -'occurrence/4__5'(A,B,C,D,E) :- - '$via1_multi_hash_least_occurrence/2-1'(C,F), - !, - 'occurrence/4__5__0'(F,A,B,C,D,E). -'occurrence/4__5__0'([],A,B,C,D,E) :- - 'occurrence/4__6'(A,B,C,D,E). -'occurrence/4__5__0'([H|K],A,B,C,D,E) :- - ( H=suspension(_,mutable(active),_,_,_,_,F,G), - F==C, - G=[I|J], - I==D, - '$via1_multi_hash_allocation_occurrence/2-1'(A,N), - 'chr sbag_member'(L,N), - L=suspension(_,mutable(active),_,_,_,_,_,M), - M>=B, - '$via1_multi_hash_rule/2-1'(C,P), - 'chr sbag_member'(O,P), - O=suspension(_,mutable(active),_,_,_,_,_,_), + M=suspension(_,active,_,_,N), + N>=B, + ground(C), + nb_getval('$chr_store_multi_hash_chr_translate____rule___2-1',B1), + lookup_ht1(B1,C,C,Q), + 'chr sbag_member'(P,Q), + P=suspension(_,active,_,_,_,_), \+may_trigger(A) -> - remove_constraint_internal(H,_,Q), - ( Q==yes -> - '$delete_from_store_least_occurrence/2'(H) + setarg(2,I,removed), + nb_getval('$chr_store_multi_hash_chr_translate____least_occurrence___2-12',Z), + delete_ht(Z,k(C,[D|K]),I), + nb_getval('$chr_store_multi_hash_chr_translate____least_occurrence___2-1',A1), + delete_ht(A1,C,I), + arg(2,F,R), + setarg(2,F,active), + ( R==not_stored_yet -> + nb_getval('$chr_store_global_ground_chr_translate____occurrence___5',S), + T=[F|S], + b_setval('$chr_store_global_ground_chr_translate____occurrence___5',T), + ( S=[U|_] -> + setarg(4,U,T) + ; + true + ), + nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-12',V), + insert_ht(V,k(A,B),F), + nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-3',W), + insert_ht(W,C,F), + nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-34',X), + insert_ht(X,k(C,D),F), + nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-1',Y), + insert_ht(Y,A,F) ; true ), - activate_constraint(R,_,E,S), - ( R==yes -> - '$insert_in_store_occurrence/4'(E) - ; - true - ), - least_occurrence(C,J), - ( E=suspension(_,mutable(active),_,mutable(S),_,_,_,_,_,_) -> - 'chr update_mutable'(inactive,mutable(active)), - 'occurrence/4__5__0'(K,A,B,C,D,E) + least_occurrence(C,K), + ( F=suspension(_,active,_,_,_,_,_,_,_) -> + setarg(2,F,inactive), + occurrence___5__1__0__6(L,A,B,C,D,E,F) ; true ) ; - 'occurrence/4__5__0'(K,A,B,C,D,E) + occurrence___5__1__0__6(L,A,B,C,D,E,F) ). -'occurrence/4__5'(A,B,C,D,E) :- - 'occurrence/4__6'(A,B,C,D,E). -'occurrence/4__6'(A,B,C,D,E) :- - '$via1_multi_hash_set_all_passive/1-1'(C,F), +occurrence___5__1(A,B,C,D,E,F) :- + occurrence___5__2(A,B,C,D,E,F). +occurrence___5__2(A,B,C,D,E,F) :- + nb_getval('$chr_store_multi_hash_chr_translate____set_all_passive___1-1',H), + lookup_ht(H,C,G), !, - 'occurrence/4__6__0'(F,A,B,C,D,E). -'occurrence/4__6__0'([],A,B,C,D,E) :- - 'occurrence/4__7'(A,B,C,D,E). -'occurrence/4__6__0'([G|H],A,B,C,D,E) :- - ( G=suspension(_,mutable(active),_,_,_,_,F), - F==C, - K=t(71,G,E), - 'chr novel_production'(G,K), - 'chr novel_production'(E,K) -> - 'chr extend_history'(E,K), - activate_constraint(I,_,E,J), - ( I==yes -> - '$insert_in_store_occurrence/4'(E) + occurrence___5__2__0__28(G,A,B,C,D,E,F). +occurrence___5__2__0__28([],B,C,D,E,F,A) :- + occurrence___5__3(B,C,D,E,F,A). +occurrence___5__2__0__28([H|I],B,C,D,E,F,A) :- + ( H=suspension(_,active,_,G), + G==D, + J=t(176,H,A), + '$novel_production'(H,J), + '$novel_production'(A,J) -> + '$extend_history'(A,J), + arg(2,A,K), + setarg(2,A,active), + ( K==not_stored_yet -> + nb_getval('$chr_store_global_ground_chr_translate____occurrence___5',L), + M=[A|L], + b_setval('$chr_store_global_ground_chr_translate____occurrence___5',M), + ( L=[N|_] -> + setarg(4,N,M) + ; + true + ), + nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-12',O), + insert_ht(O,k(B,C),A), + nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-3',P), + insert_ht(P,D,A), + nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-34',Q), + insert_ht(Q,k(D,E),A), + nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-1',R), + insert_ht(R,B,A) ; true ), - passive(C,D), - ( E=suspension(_,mutable(active),_,mutable(J),_,_,_,_,_,_) -> - 'chr update_mutable'(inactive,mutable(active)), - 'occurrence/4__6__0'(H,A,B,C,D,E) + passive(D,E), + ( A=suspension(_,active,_,_,_,_,_,_,_) -> + setarg(2,A,inactive), + occurrence___5__2__0__28(I,B,C,D,E,F,A) ; true ) ; - 'occurrence/4__6__0'(H,A,B,C,D,E) + occurrence___5__2__0__28(I,B,C,D,E,F,A) ). -'occurrence/4__6'(A,B,C,D,E) :- - 'occurrence/4__7'(A,B,C,D,E). -'occurrence/4__7'(A,B,C,D,E) :- - nb_getval('$chr_store_global_ground_chr_translate:multiple_occ_constraints_checked/1',F), +occurrence___5__2(A,B,C,D,E,F) :- + occurrence___5__3(A,B,C,D,E,F). +occurrence___5__3(A,B,C,D,E,F) :- + nb_getval('$chr_store_multi_hash_chr_translate____rule___2-1',H), + lookup_ht1(H,C,C,G), !, - 'occurrence/4__7__0'(F,A,B,C,D,E). -'occurrence/4__7__0'([],A,B,C,D,E) :- - 'occurrence/4__8'(A,B,C,D,E). -'occurrence/4__7__0'([G|H],A,B,C,D,E) :- - ( G=suspension(_,mutable(active),_,_,_,_,F), + occurrence___5__3__0__29(G,A,B,C,D,E,F). +occurrence___5__3__0__29([],B,C,D,E,F,A) :- + occurrence___5__4(B,C,D,E,F,A). +occurrence___5__3__0__29([I|K],B,C,D,E,F,A) :- + ( I=suspension(_,active,_,_,G,H), + G==D, + nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-1',L), + lookup_ht(L,B,J) -> + occurrence___5__3__1__29(J,H,I,K,B,C,D,E,F,A) + ; + occurrence___5__3__0__29(K,B,C,D,E,F,A) + ). +occurrence___5__3__1__29([],_,_,A,C,D,E,F,G,B) :- + occurrence___5__3__0__29(A,C,D,E,F,G,B). +occurrence___5__3__1__29([M|O],I,A,B,D,E,F,G,H,C) :- + ( M=suspension(_,active,_,_,J,K,L,_,_), + J==D, + L==F, + nb_getval('$chr_store_multi_hash_chr_translate____prev_guard_list___6-1',P), + lookup_ht(P,F,N) -> + occurrence___5__3__2__29(N,K,M,O,I,A,B,D,E,F,G,H,C) + ; + occurrence___5__3__1__29(O,I,A,B,D,E,F,G,H,C) + ). +occurrence___5__3__2__29([],_,_,A,J,B,C,E,F,G,H,I,D) :- + occurrence___5__3__1__29(A,J,B,C,E,F,G,H,I,D). +occurrence___5__3__2__29([N|P],L,A,B,K,C,D,F,G,H,I,J,E) :- + ( N=suspension(_,active,_,_,M,_,_,_,_,_), + M==H, + nb_getval('$chr_store_global_ground_chr_translate____multiple_occ_constraints_checked___1',O) -> + occurrence___5__3__3__29(O,N,P,L,A,B,K,C,D,F,G,H,I,J,E) + ; + occurrence___5__3__2__29(P,L,A,B,K,C,D,F,G,H,I,J,E) + ). +occurrence___5__3__3__29([],_,A,M,B,C,L,D,E,G,H,I,J,K,F) :- + occurrence___5__3__2__29(A,M,B,C,L,D,E,G,H,I,J,K,F). +occurrence___5__3__3__29([P|Q],A,N,L,B,M,J,C,K,D,E,F,G,H,I) :- + ( P=suspension(_,active,_,O), + E - remove_constraint_internal(G,_,S), - ( S==yes -> - '$delete_from_store_multiple_occ_constraints_checked/1'(G) + J=pragma(rule(R,_,_,_),_,_,_,_), + R\==[], + \+tree_set_memberchk(D,O) -> + setarg(2,P,removed), + arg(3,P,B1), + ( var(B1) -> + nb_getval('$chr_store_global_ground_chr_translate____multiple_occ_constraints_checked___1',C1), + C1=[_|D1], + b_setval('$chr_store_global_ground_chr_translate____multiple_occ_constraints_checked___1',D1), + ( D1=[E1|_] -> + setarg(3,E1,_) + ; + true + ) + ; + B1=[_,_|D1], + setarg(2,B1,D1), + ( D1=[E1|_] -> + setarg(3,E1,B1) + ; + true + ) + ), + arg(2,I,T), + setarg(2,I,active), + ( T==not_stored_yet -> + nb_getval('$chr_store_global_ground_chr_translate____occurrence___5',U), + V=[I|U], + b_setval('$chr_store_global_ground_chr_translate____occurrence___5',V), + ( U=[W|_] -> + setarg(4,W,V) + ; + true + ), + nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-12',X), + insert_ht(X,k(D,E),I), + nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-3',Y), + insert_ht(Y,F,I), + nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-34',Z), + insert_ht(Z,k(F,G),I), + nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-1',A1), + insert_ht(A1,D,I) ; true ), - activate_constraint(U,_,E,V), - ( U==yes -> - '$insert_in_store_occurrence/4'(E) - ; - true - ), - first_occ_in_rule(C,A,B,D), - multiple_occ_constraints_checked([A|F]), - ( E=suspension(_,mutable(active),_,mutable(V),_,_,_,_,_,_) -> - 'chr update_mutable'(inactive,mutable(active)), - 'occurrence/4__7__0'(H,A,B,C,D,E) + first_occ_in_rule(F,D,E,G), + tree_set_add(O,D,S), + multiple_occ_constraints_checked(S), + ( I=suspension(_,active,_,_,_,_,_,_,_) -> + setarg(2,I,inactive), + occurrence___5__3__3__29(Q,A,N,L,B,M,J,C,K,D,E,F,G,H,I) ; true ) ; - 'occurrence/4__7__0'(H,A,B,C,D,E) + occurrence___5__3__3__29(Q,A,N,L,B,M,J,C,K,D,E,F,G,H,I) ). -'occurrence/4__7'(A,B,C,D,E) :- - 'occurrence/4__8'(A,B,C,D,E). -'occurrence/4__8'(A,B,C,D,E) :- - nb_getval('$chr_store_global_ground_chr_translate:multiple_occ_constraints_checked/1',F), +occurrence___5__3(A,B,C,D,E,F) :- + occurrence___5__4(A,B,C,D,E,F). +occurrence___5__4(A,B,C,D,E,F) :- + nb_getval('$chr_store_multi_hash_chr_translate____rule___2-1',H), + lookup_ht1(H,C,C,G), !, - 'occurrence/4__8__0'(F,A,B,C,D,E). -'occurrence/4__8__0'([],A,B,C,D,E) :- - 'occurrence/4__9'(A,B,C,D,E). -'occurrence/4__8__0'([G|H],A,B,C,D,E) :- - ( G=suspension(_,mutable(active),_,_,_,_,F), + occurrence___5__4__0__30(G,A,B,C,D,E,F). +occurrence___5__4__0__30([],B,C,D,E,F,A) :- + occurrence___5__5(B,C,D,E,F,A). +occurrence___5__4__0__30([I|K],B,C,D,E,F,A) :- + ( I=suspension(_,active,_,_,G,H), + G==D, + nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-1',L), + lookup_ht(L,B,J) -> + occurrence___5__4__1__30(J,H,I,K,B,C,D,E,F,A) + ; + occurrence___5__4__0__30(K,B,C,D,E,F,A) + ). +occurrence___5__4__1__30([],_,_,A,C,D,E,F,G,B) :- + occurrence___5__4__0__30(A,C,D,E,F,G,B). +occurrence___5__4__1__30([N|P],I,A,B,D,E,F,G,H,C) :- + ( N=suspension(_,active,_,_,J,K,L,M,_), + J==D, + L==F, + nb_getval('$chr_store_multi_hash_chr_translate____prev_guard_list___6-1',Q), + lookup_ht(Q,F,O) -> + occurrence___5__4__2__30(O,K,M,N,P,I,A,B,D,E,F,G,H,C) + ; + occurrence___5__4__1__30(P,I,A,B,D,E,F,G,H,C) + ). +occurrence___5__4__2__30([],_,_,_,A,J,B,C,E,F,G,H,I,D) :- + occurrence___5__4__1__30(A,J,B,C,E,F,G,H,I,D). +occurrence___5__4__2__30([O|Q],L,M,A,B,K,C,D,F,G,H,I,J,E) :- + ( O=suspension(_,active,_,_,N,_,_,_,_,_), + N==H, + nb_getval('$chr_store_global_ground_chr_translate____multiple_occ_constraints_checked___1',P) -> + occurrence___5__4__3__30(P,O,Q,L,M,A,B,K,C,D,F,G,H,I,J,E) + ; + occurrence___5__4__2__30(Q,L,M,A,B,K,C,D,F,G,H,I,J,E) + ). +occurrence___5__4__3__30([],_,A,M,N,B,C,L,D,E,G,H,I,J,K,F) :- + occurrence___5__4__2__30(A,M,N,B,C,L,D,E,G,H,I,J,K,F). +occurrence___5__4__3__30([Q|R],A,O,L,M,B,N,J,C,K,D,E,F,G,H,I) :- + ( Q=suspension(_,active,_,P), + L - remove_constraint_internal(G,_,T), - ( T==yes -> - '$delete_from_store_multiple_occ_constraints_checked/1'(G) + J=pragma(rule(S,_,_,_),_,_,_,_), + S\==[], + \+tree_set_memberchk(D,P) -> + setarg(2,Q,removed), + arg(3,Q,C1), + ( var(C1) -> + nb_getval('$chr_store_global_ground_chr_translate____multiple_occ_constraints_checked___1',D1), + D1=[_|E1], + b_setval('$chr_store_global_ground_chr_translate____multiple_occ_constraints_checked___1',E1), + ( E1=[F1|_] -> + setarg(3,F1,_) + ; + true + ) + ; + C1=[_,_|E1], + setarg(2,C1,E1), + ( E1=[F1|_] -> + setarg(3,F1,C1) + ; + true + ) + ), + arg(2,I,U), + setarg(2,I,active), + ( U==not_stored_yet -> + nb_getval('$chr_store_global_ground_chr_translate____occurrence___5',V), + W=[I|V], + b_setval('$chr_store_global_ground_chr_translate____occurrence___5',W), + ( V=[X|_] -> + setarg(4,X,W) + ; + true + ), + nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-12',Y), + insert_ht(Y,k(D,E),I), + nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-3',Z), + insert_ht(Z,F,I), + nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-34',A1), + insert_ht(A1,k(F,G),I), + nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-1',B1), + insert_ht(B1,D,I) ; true ), - activate_constraint(V,_,E,W), - ( V==yes -> - '$insert_in_store_occurrence/4'(E) - ; - true - ), - first_occ_in_rule(C,A,J,L), - multiple_occ_constraints_checked([A|F]), - ( E=suspension(_,mutable(active),_,mutable(W),_,_,_,_,_,_) -> - 'chr update_mutable'(inactive,mutable(active)), - 'occurrence/4__8__0'(H,A,B,C,D,E) + first_occ_in_rule(F,D,L,M), + tree_set_add(P,D,T), + multiple_occ_constraints_checked(T), + ( I=suspension(_,active,_,_,_,_,_,_,_) -> + setarg(2,I,inactive), + occurrence___5__4__3__30(R,A,O,L,M,B,N,J,C,K,D,E,F,G,H,I) ; true ) ; - 'occurrence/4__8__0'(H,A,B,C,D,E) + occurrence___5__4__3__30(R,A,O,L,M,B,N,J,C,K,D,E,F,G,H,I) ). -'occurrence/4__8'(A,B,C,D,E) :- - 'occurrence/4__9'(A,B,C,D,E). -'occurrence/4__9'(A,B,C,D,E) :- - '$via1_multi_hash_stored/3-1'(A,F), +occurrence___5__4(A,B,C,D,E,F) :- + occurrence___5__5(A,B,C,D,E,F). +occurrence___5__5(A,B,C,D,E,F) :- + nb_getval('$chr_store_multi_hash_chr_translate____stored___3-123',H), + hash_term(k(A,B,1887087),I), + lookup_ht1(H,I,k(A,B,yes),G), !, - 'occurrence/4__9__0'(F,A,B,C,D,E). -'occurrence/4__9__0'([],A,B,C,D,E) :- - 'occurrence/4__10'(A,B,C,D,E). -'occurrence/4__9__0'([I|J],A,B,C,D,E) :- - ( I=suspension(_,mutable(active),_,_,_,_,F,G,H), - F==A, - G==B, - H=yes, - '$via1_multi_hash_passive/2-1'(C,M), - 'chr sbag_member'(K,M), - K=suspension(_,mutable(active),_,_,_,_,_,L), - L==D, - '$via1_multi_hash_stored_complete/3-1'(A,Q), + occurrence___5__5__0__34(G,A,B,C,D,E,F). +occurrence___5__5__0__34([],B,C,D,E,F,A) :- + occurrence___5__6(B,C,D,E,F,A). +occurrence___5__5__0__34([J|K],A,B,C,D,E,F) :- + ( J=suspension(_,active,G,H,I), + G==A, + H==B, + I=yes, + ground(C), + ground(D), + nb_getval('$chr_store_multi_hash_chr_translate____passive___2-12',E1), + lookup_ht(E1,k(C,D),M), + 'chr sbag_member'(L,M), + L=suspension(_,active,_,_,_), + ground(A), + nb_getval('$chr_store_multi_hash_chr_translate____stored_complete___3-1',D1), + lookup_ht(D1,A,Q), 'chr sbag_member'(N,Q), - N=suspension(_,mutable(active),_,_,_,_,_,O,P), + N=suspension(_,active,_,_,O,P), B - remove_constraint_internal(I,_,R), - ( R==yes -> - '$delete_from_store_stored/3'(I) + setarg(2,J,removed), + nb_getval('$chr_store_multi_hash_chr_translate____stored___3-1',B1), + delete_ht(B1,A,J), + nb_getval('$chr_store_multi_hash_chr_translate____stored___3-123',C1), + delete_ht(C1,k(A,B,yes),J), + setarg(2,N,removed), + nb_getval('$chr_store_multi_hash_chr_translate____stored_complete___3-1',A1), + delete_ht(A1,A,N), + arg(2,F,S), + setarg(2,F,active), + ( S==not_stored_yet -> + nb_getval('$chr_store_global_ground_chr_translate____occurrence___5',T), + U=[F|T], + b_setval('$chr_store_global_ground_chr_translate____occurrence___5',U), + ( T=[V|_] -> + setarg(4,V,U) + ; + true + ), + nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-12',W), + insert_ht(W,k(A,B),F), + nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-3',X), + insert_ht(X,C,F), + nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-34',Y), + insert_ht(Y,k(C,D),F), + nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-1',Z), + insert_ht(Z,A,F) ; true ), - remove_constraint_internal(N,_,S), - ( S==yes -> - '$delete_from_store_stored_complete/3'(N) - ; - true - ), - activate_constraint(U,_,E,V), - ( U==yes -> - '$insert_in_store_occurrence/4'(E) - ; - true - ), - T is P-1, + R is P-1, stored(A,B,maybe), - stored_complete(A,O,T), - ( E=suspension(_,mutable(active),_,mutable(V),_,_,_,_,_,_) -> - 'chr update_mutable'(inactive,mutable(active)), - 'occurrence/4__9__0'(J,A,B,C,D,E) + stored_complete(A,O,R), + ( F=suspension(_,active,_,_,_,_,_,_,_) -> + setarg(2,F,inactive), + occurrence___5__5__0__34(K,A,B,C,D,E,F) ; true ) ; - 'occurrence/4__9__0'(J,A,B,C,D,E) + occurrence___5__5__0__34(K,A,B,C,D,E,F) ). -'occurrence/4__9'(A,B,C,D,E) :- - 'occurrence/4__10'(A,B,C,D,E). -'occurrence/4__10'(A,B,C,D,E) :- - '$via1_multi_hash_occurrence/4-3'(C,F), +occurrence___5__5(A,B,C,D,E,F) :- + occurrence___5__6(A,B,C,D,E,F). +occurrence___5__6(A,B,C,D,E,F) :- + nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-3',H), + lookup_ht1(H,C,C,G), !, - 'occurrence/4__10__0'(F,A,B,C,D,E). -'occurrence/4__10__0'([],A,B,C,D,E) :- - 'occurrence/4__11'(A,B,C,D,E). -'occurrence/4__10__0'([H|J],A,B,C,D,E) :- - ( H=suspension(_,mutable(active),_,_,_,_,F,_,G,_), - G==C, - '$via1_multi_hash_max_occurrence/2-1'(F,I) -> - 'occurrence/4__10__1'(I,F,H,J,A,B,C,D,E) + occurrence___5__6__0__35(G,A,B,C,D,E,F). +occurrence___5__6__0__35([],B,C,D,E,F,A) :- + occurrence___5__7(B,C,D,E,F,A). +occurrence___5__6__0__35([I|K],B,C,D,E,F,A) :- + ( I=suspension(_,active,_,_,G,_,H,_,_), + H==D, + nb_getval('$chr_store_multi_hash_chr_translate____max_occurrence___2-1',L), + lookup_ht(L,G,J) -> + occurrence___5__6__1__35(J,G,I,K,B,C,D,E,F,A) ; - 'occurrence/4__10__0'(J,A,B,C,D,E) + occurrence___5__6__0__35(K,B,C,D,E,F,A) ). -'occurrence/4__10__1'([],_,_,F,A,B,C,D,E) :- - 'occurrence/4__10__0'(F,A,B,C,D,E). -'occurrence/4__10__1'([K|M],G,A,H,B,C,D,E,F) :- - ( K=suspension(_,mutable(active),_,_,_,_,I,J), - I==G, - '$via1_multi_hash_stored_complete/3-1'(G,L) -> - 'occurrence/4__10__2'(L,J,K,M,G,A,H,B,C,D,E,F) +occurrence___5__6__1__35([],_,_,A,C,D,E,F,G,B) :- + occurrence___5__6__0__35(A,C,D,E,F,G,B). +occurrence___5__6__1__35([L|N],I,A,B,D,E,F,G,H,C) :- + ( L=suspension(_,active,_,J,K), + J==I, + nb_getval('$chr_store_multi_hash_chr_translate____stored_complete___3-1',O), + lookup_ht(O,I,M) -> + occurrence___5__6__2__35(M,K,L,N,I,A,B,D,E,F,G,H,C) ; - 'occurrence/4__10__1'(M,G,A,H,B,C,D,E,F) + occurrence___5__6__1__35(N,I,A,B,D,E,F,G,H,C) ). -'occurrence/4__10__2'([],_,_,I,F,G,H,A,B,C,D,E) :- - 'occurrence/4__10__1'(I,F,G,H,A,B,C,D,E). -'occurrence/4__10__2'([O|P],J,A,K,H,B,I,C,D,E,F,G) :- - ( O=suspension(_,mutable(active),_,_,_,_,L,M,N), - L==H, - N=0, - S=t(90,G,B,O,A), - 'chr novel_production'(G,S), - 'chr novel_production'(B,S), - 'chr novel_production'(O,S), - 'chr novel_production'(A,S), - M= - 'chr extend_history'(G,S), - activate_constraint(Q,_,G,R), - ( Q==yes -> - '$insert_in_store_occurrence/4'(G) +occurrence___5__6__2__35([],_,_,A,J,B,C,E,F,G,H,I,D) :- + occurrence___5__6__1__35(A,J,B,C,E,F,G,H,I,D). +occurrence___5__6__2__35([P|Q],L,A,B,K,C,D,F,G,H,I,J,E) :- + ( P=suspension(_,active,_,M,N,O), + M==K, + O=0, + R=t(245,E,C,P,A), + '$novel_production'(E,R), + '$novel_production'(C,R), + '$novel_production'(P,R), + '$novel_production'(A,R), + N= + '$extend_history'(E,R), + arg(2,E,S), + setarg(2,E,active), + ( S==not_stored_yet -> + nb_getval('$chr_store_global_ground_chr_translate____occurrence___5',T), + U=[E|T], + b_setval('$chr_store_global_ground_chr_translate____occurrence___5',U), + ( T=[V|_] -> + setarg(4,V,U) + ; + true + ), + nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-12',W), + insert_ht(W,k(F,G),E), + nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-3',X), + insert_ht(X,H,E), + nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-34',Y), + insert_ht(Y,k(H,I),E), + nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-1',Z), + insert_ht(Z,F,E) ; true ), - passive(E,F), - ( G=suspension(_,mutable(active),_,mutable(R),_,_,_,_,_,_) -> - 'chr update_mutable'(inactive,mutable(active)), - 'occurrence/4__10__2'(P,J,A,K,H,B,I,C,D,E,F,G) + passive(H,I), + ( E=suspension(_,active,_,_,_,_,_,_,_) -> + setarg(2,E,inactive), + occurrence___5__6__2__35(Q,L,A,B,K,C,D,F,G,H,I,J,E) ; true ) ; - 'occurrence/4__10__2'(P,J,A,K,H,B,I,C,D,E,F,G) + occurrence___5__6__2__35(Q,L,A,B,K,C,D,F,G,H,I,J,E) ). -'occurrence/4__10'(A,B,C,D,E) :- - 'occurrence/4__11'(A,B,C,D,E). -'occurrence/4__11'(A,B,C,D,E) :- - '$via1_multi_hash_occurrence/4-3'(C,F), +occurrence___5__6(A,B,C,D,E,F) :- + occurrence___5__7(A,B,C,D,E,F). +occurrence___5__7(A,B,C,D,E,F) :- + nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-3',H), + lookup_ht1(H,C,C,G), !, - 'occurrence/4__11__0'(F,A,B,C,D,E). -'occurrence/4__11__0'([],A,B,C,D,E) :- - 'occurrence/4__12'(A,B,C,D,E). -'occurrence/4__11__0'([H|J],A,B,C,D,E) :- - ( H=suspension(_,mutable(active),_,_,_,_,_,_,F,G), - F==C, - '$via1_multi_hash_max_occurrence/2-1'(A,I) -> - 'occurrence/4__11__1'(I,G,H,J,A,B,C,D,E) + occurrence___5__7__0__36(G,A,B,C,D,E,F). +occurrence___5__7__0__36([],B,C,D,E,F,A) :- + occurrence___5__8(B,C,D,E,F,A). +occurrence___5__7__0__36([I|K],B,C,D,E,F,A) :- + ( I=suspension(_,active,_,_,_,_,G,H,_), + G==D, + nb_getval('$chr_store_multi_hash_chr_translate____max_occurrence___2-1',L), + lookup_ht(L,B,J) -> + occurrence___5__7__1__36(J,H,I,K,B,C,D,E,F,A) ; - 'occurrence/4__11__0'(J,A,B,C,D,E) + occurrence___5__7__0__36(K,B,C,D,E,F,A) ). -'occurrence/4__11__1'([],_,_,F,A,B,C,D,E) :- - 'occurrence/4__11__0'(F,A,B,C,D,E). -'occurrence/4__11__1'([K|M],G,A,H,B,C,D,E,F) :- - ( K=suspension(_,mutable(active),_,_,_,_,I,J), - I==B, - '$via1_multi_hash_stored_complete/3-1'(B,L) -> - 'occurrence/4__11__2'(L,J,K,M,G,A,H,B,C,D,E,F) +occurrence___5__7__1__36([],_,_,A,C,D,E,F,G,B) :- + occurrence___5__7__0__36(A,C,D,E,F,G,B). +occurrence___5__7__1__36([L|N],I,A,B,D,E,F,G,H,C) :- + ( L=suspension(_,active,_,J,K), + J==D, + nb_getval('$chr_store_multi_hash_chr_translate____stored_complete___3-1',O), + lookup_ht(O,D,M) -> + occurrence___5__7__2__36(M,K,L,N,I,A,B,D,E,F,G,H,C) ; - 'occurrence/4__11__1'(M,G,A,H,B,C,D,E,F) + occurrence___5__7__1__36(N,I,A,B,D,E,F,G,H,C) ). -'occurrence/4__11__2'([],_,_,I,F,G,H,A,B,C,D,E) :- - 'occurrence/4__11__1'(I,F,G,H,A,B,C,D,E). -'occurrence/4__11__2'([O|P],J,A,K,H,B,I,C,D,E,F,G) :- - ( O=suspension(_,mutable(active),_,_,_,_,L,M,N), - L==C, - N=0, - S=t(90,B,G,O,A), - 'chr novel_production'(B,S), - 'chr novel_production'(G,S), - 'chr novel_production'(O,S), - 'chr novel_production'(A,S), - M= - 'chr extend_history'(G,S), - activate_constraint(Q,_,G,R), - ( Q==yes -> - '$insert_in_store_occurrence/4'(G) +occurrence___5__7__2__36([],_,_,A,J,B,C,E,F,G,H,I,D) :- + occurrence___5__7__1__36(A,J,B,C,E,F,G,H,I,D). +occurrence___5__7__2__36([P|Q],L,A,B,K,C,D,F,G,H,I,J,E) :- + ( P=suspension(_,active,_,M,N,O), + M==F, + O=0, + R=t(245,C,E,P,A), + '$novel_production'(C,R), + '$novel_production'(E,R), + '$novel_production'(P,R), + '$novel_production'(A,R), + N= + '$extend_history'(E,R), + arg(2,E,S), + setarg(2,E,active), + ( S==not_stored_yet -> + nb_getval('$chr_store_global_ground_chr_translate____occurrence___5',T), + U=[E|T], + b_setval('$chr_store_global_ground_chr_translate____occurrence___5',U), + ( T=[V|_] -> + setarg(4,V,U) + ; + true + ), + nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-12',W), + insert_ht(W,k(F,G),E), + nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-3',X), + insert_ht(X,H,E), + nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-34',Y), + insert_ht(Y,k(H,I),E), + nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-1',Z), + insert_ht(Z,F,E) ; true ), - passive(E,H), - ( G=suspension(_,mutable(active),_,mutable(R),_,_,_,_,_,_) -> - 'chr update_mutable'(inactive,mutable(active)), - 'occurrence/4__11__2'(P,J,A,K,H,B,I,C,D,E,F,G) + passive(H,K), + ( E=suspension(_,active,_,_,_,_,_,_,_) -> + setarg(2,E,inactive), + occurrence___5__7__2__36(Q,L,A,B,K,C,D,F,G,H,I,J,E) ; true ) ; - 'occurrence/4__11__2'(P,J,A,K,H,B,I,C,D,E,F,G) + occurrence___5__7__2__36(Q,L,A,B,K,C,D,F,G,H,I,J,E) ). -'occurrence/4__11'(A,B,C,D,E) :- - 'occurrence/4__12'(A,B,C,D,E). -'occurrence/4__12'(A,B,C,D,E) :- - '$via1_multi_hash_stored_complete/3-1'(A,F), +occurrence___5__7(A,B,C,D,E,F) :- + occurrence___5__8(A,B,C,D,E,F). +occurrence___5__8(A,B,C,D,E,F) :- + nb_getval('$chr_store_multi_hash_chr_translate____stored_complete___3-1',H), + lookup_ht(H,A,G), !, - 'occurrence/4__12__0'(F,A,B,C,D,E). -'occurrence/4__12__0'([],A,B,C,D,E) :- - 'occurrence/4__13'(A,B,C,D,E). -'occurrence/4__12__0'([H|I],A,B,C,D,E) :- - ( H=suspension(_,mutable(active),_,_,_,_,F,G,_), - F==A, - L=t(99,H,E), - 'chr novel_production'(H,L), - 'chr novel_production'(E,L), - B>G -> - 'chr extend_history'(E,L), - activate_constraint(J,_,E,K), - ( J==yes -> - '$insert_in_store_occurrence/4'(E) + occurrence___5__8__0__37(G,A,B,C,D,E,F). +occurrence___5__8__0__37([],B,C,D,E,F,A) :- + occurrence___5__9(B,C,D,E,F,A). +occurrence___5__8__0__37([I|J],B,C,D,E,F,A) :- + ( I=suspension(_,active,_,G,H,_), + G==B, + K=t(254,I,A), + '$novel_production'(I,K), + '$novel_production'(A,K), + C>H -> + '$extend_history'(A,K), + arg(2,A,L), + setarg(2,A,active), + ( L==not_stored_yet -> + nb_getval('$chr_store_global_ground_chr_translate____occurrence___5',M), + N=[A|M], + b_setval('$chr_store_global_ground_chr_translate____occurrence___5',N), + ( M=[O|_] -> + setarg(4,O,N) + ; + true + ), + nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-12',P), + insert_ht(P,k(B,C),A), + nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-3',Q), + insert_ht(Q,D,A), + nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-34',R), + insert_ht(R,k(D,E),A), + nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-1',S), + insert_ht(S,B,A) ; true ), - passive(C,D), - ( E=suspension(_,mutable(active),_,mutable(K),_,_,_,_,_,_) -> - 'chr update_mutable'(inactive,mutable(active)), - 'occurrence/4__12__0'(I,A,B,C,D,E) + passive(D,E), + ( A=suspension(_,active,_,_,_,_,_,_,_) -> + setarg(2,A,inactive), + occurrence___5__8__0__37(J,B,C,D,E,F,A) ; true ) ; - 'occurrence/4__12__0'(I,A,B,C,D,E) + occurrence___5__8__0__37(J,B,C,D,E,F,A) ). -'occurrence/4__12'(A,B,C,D,E) :- - 'occurrence/4__13'(A,B,C,D,E). -'occurrence/4__13'(A,B,C,D,E) :- - '$via1_multi_hash_functional_dependency/4-1'(A,F), +occurrence___5__8(A,B,C,D,E,F) :- + occurrence___5__9(A,B,C,D,E,F). +occurrence___5__9(A,B,C,D,E,F) :- + nb_getval('$chr_store_multi_hash_chr_translate____functional_dependency___4-12',H), + lookup_ht(H,k(A,C),G), !, - 'occurrence/4__13__0'(F,A,B,C,D,E). -'occurrence/4__13__0'([],A,B,C,D,E) :- - 'occurrence/4__14'(A,B,C,D,E). -'occurrence/4__13__0'([J|K],A,B,C,D,E) :- - ( J=suspension(_,mutable(active),_,_,_,_,F,G,H,I), - F==A, - G==C, + occurrence___5__9__0__41(G,A,B,C,D,E,F). +occurrence___5__9__0__41([],B,C,D,E,F,A) :- + occurrence___5__10(B,C,D,E,F,A). +occurrence___5__9__0__41([K|L],A,B,C,D,E,F) :- + ( K=suspension(_,active,G,H,I,J), + G==A, + H==C, C>1, - '$via1_multi_hash_allocation_occurrence/2-1'(A,N), - 'chr sbag_member'(L,N), - L=suspension(_,mutable(active),_,_,_,_,_,M), - M>B -> - remove_constraint_internal(J,_,O), - ( O==yes -> - '$delete_from_store_functional_dependency/4'(J) + ground(A), + nb_getval('$chr_store_multi_hash_chr_translate____allocation_occurrence___2-1',Z), + lookup_ht(Z,A,O), + 'chr sbag_member'(M,O), + M=suspension(_,active,_,_,N), + N>B -> + setarg(2,K,removed), + nb_getval('$chr_store_multi_hash_chr_translate____functional_dependency___4-1',X), + delete_ht(X,A,K), + nb_getval('$chr_store_multi_hash_chr_translate____functional_dependency___4-12',Y), + delete_ht(Y,k(A,C),K), + arg(2,F,P), + setarg(2,F,active), + ( P==not_stored_yet -> + nb_getval('$chr_store_global_ground_chr_translate____occurrence___5',Q), + R=[F|Q], + b_setval('$chr_store_global_ground_chr_translate____occurrence___5',R), + ( Q=[S|_] -> + setarg(4,S,R) + ; + true + ), + nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-12',T), + insert_ht(T,k(A,B),F), + nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-3',U), + insert_ht(U,C,F), + nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-34',V), + insert_ht(V,k(C,D),F), + nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-1',W), + insert_ht(W,A,F) ; true ), - activate_constraint(P,_,E,Q), - ( P==yes -> - '$insert_in_store_occurrence/4'(E) - ; - true - ), - functional_dependency(A,1,H,I), - ( E=suspension(_,mutable(active),_,mutable(Q),_,_,_,_,_,_) -> - 'chr update_mutable'(inactive,mutable(active)), - 'occurrence/4__13__0'(K,A,B,C,D,E) + functional_dependency(A,1,I,J), + ( F=suspension(_,active,_,_,_,_,_,_,_) -> + setarg(2,F,inactive), + occurrence___5__9__0__41(L,A,B,C,D,E,F) ; true ) ; - 'occurrence/4__13__0'(K,A,B,C,D,E) + occurrence___5__9__0__41(L,A,B,C,D,E,F) ). -'occurrence/4__13'(A,B,C,D,E) :- - 'occurrence/4__14'(A,B,C,D,E). -'occurrence/4__14'(A,B,C,D,E) :- - nb_getval('$chr_store_global_ground_chr_translate:call_pattern/1',F), +occurrence___5__9(A,B,C,D,E,F) :- + occurrence___5__10(A,B,C,D,E,F). +occurrence___5__10(A,B,C,D,E,F) :- + nb_getval('$chr_store_multi_hash_chr_translate____constraint_mode___2-1',H), + lookup_ht(H,A,G), !, - 'occurrence/4__14__0'(F,A,B,C,D,E). -'occurrence/4__14__0'([],A,B,C,D,E) :- - 'occurrence/4__15'(A,B,C,D,E). -'occurrence/4__14__0'([G|M],A,B,C,D,E) :- - ( G=suspension(_,mutable(active),_,_,_,_,F), - F=odom(H,I), - H=occ(J,K), - J==A, - K==B, - '$via1_multi_hash_rule/2-1'(C,L) -> - 'occurrence/4__14__1'(L,I,G,M,A,B,C,D,E) + occurrence___5__10__0__47(G,A,B,C,D,E,F). +occurrence___5__10__0__47([],B,C,D,E,F,A) :- + occurrence___5__11(B,C,D,E,F,A). +occurrence___5__10__0__47([I|K],B,C,D,E,F,A) :- + ( I=suspension(_,active,_,_,G,H), + G==B, + nb_getval('$chr_store_global_ground_chr_translate____partial_wake_analysis___0',J) -> + occurrence___5__10__1__47(J,H,I,K,B,C,D,E,F,A) ; - 'occurrence/4__14__0'(M,A,B,C,D,E) + occurrence___5__10__0__47(K,B,C,D,E,F,A) ). -'occurrence/4__14__1'([],_,_,F,A,B,C,D,E) :- - 'occurrence/4__14__0'(F,A,B,C,D,E). -'occurrence/4__14__1'([K|M],G,A,H,B,C,D,E,F) :- - ( K=suspension(_,mutable(active),_,_,_,_,I,J), - I==D, - nb_getval('$chr_store_global_ground_chr_translate:abstract_constraints/1',L) -> - 'occurrence/4__14__2'(L,J,K,M,G,A,H,B,C,D,E,F) +occurrence___5__10__1__47([],_,_,A,C,D,E,F,G,B) :- + occurrence___5__10__0__47(A,C,D,E,F,G,B). +occurrence___5__10__1__47([J|L],I,A,B,D,E,F,G,H,C) :- + ( J=suspension(_,active,_,_), + nb_getval('$chr_store_multi_hash_chr_translate____rule___2-1',M), + lookup_ht1(M,F,F,K) -> + occurrence___5__10__2__47(K,J,L,I,A,B,D,E,F,G,H,C) ; - 'occurrence/4__14__1'(M,G,A,H,B,C,D,E,F) + occurrence___5__10__1__47(L,I,A,B,D,E,F,G,H,C) ). -'occurrence/4__14__2'([],_,_,I,G,F,H,A,B,C,D,E) :- - 'occurrence/4__14__1'(I,G,F,H,A,B,C,D,E). -'occurrence/4__14__2'([M|N],J,A,K,H,B,I,C,D,E,F,G) :- - ( M=suspension(_,mutable(active),_,_,_,_,L), - C1=t(140,B,M,G,A), - 'chr novel_production'(B,C1), - 'chr novel_production'(M,C1), - 'chr novel_production'(G,C1), - 'chr novel_production'(A,C1), - J=pragma(rule(O,P,_,Q),ids(R,_),_,_,_), - memberchk_eq(F,R) -> - 'chr extend_history'(G,C1), - activate_constraint(A1,_,G,B1), - ( A1==yes -> - '$insert_in_store_occurrence/4'(G) +occurrence___5__10__2__47([],_,A,J,B,C,E,F,G,H,I,D) :- + occurrence___5__10__1__47(A,J,B,C,E,F,G,H,I,D). +occurrence___5__10__2__47([N|O],A,B,K,C,D,F,G,H,I,J,E) :- + ( N=suspension(_,active,_,_,L,M), + L==H, + V=t(325,A,E,N,C), + '$novel_production'(A,V), + '$novel_production'(E,V), + '$novel_production'(N,V), + '$novel_production'(C,V) -> + '$extend_history'(E,V), + arg(2,E,W), + setarg(2,E,active), + ( W==not_stored_yet -> + nb_getval('$chr_store_global_ground_chr_translate____occurrence___5',X), + Y=[E|X], + b_setval('$chr_store_global_ground_chr_translate____occurrence___5',Y), + ( X=[Z|_] -> + setarg(4,Z,Y) + ; + true + ), + nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-12',A1), + insert_ht(A1,k(F,G),E), + nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-3',B1), + insert_ht(B1,H,E), + nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-34',C1), + insert_ht(C1,k(H,I),E), + nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-1',D1), + insert_ht(D1,F,E) ; true ), - select2(F,_,R,O,_,S), - ai_observation_abstract_constraints(S,L,T), - ai_observation_observe_list(odom([],H),T,odom([],U)), - ai_observation_abstract_constraints(P,L,V), - ai_observation_observe_list(odom([],U),V,odom([],W)), - ai_observation_abstract_goal(Q,L,X), - call_pattern(odom(X,W)), - Y is D+1, - Z=odom(occ(C,Y),H), - call_pattern(Z), - depends_on_as(odom(occ(C,D),H),odom(X,W),Z), - ( G=suspension(_,mutable(active),_,mutable(B1),_,_,_,_,_,_) -> - 'chr update_mutable'(inactive,mutable(active)), - 'occurrence/4__14__2'(N,J,A,K,H,B,I,C,D,E,F,G) + M=pragma(rule(P,Q,R,_),_,_,_,_), + ( is_passive(H,I) -> + true + ; + ( J==simplification -> + select(S,P,_), + S=..[_|T], + term_variables(R,U), + partial_wake_args(T,K,U,F) + ) + ; + select(S,Q,_), + S=..[_|T], + term_variables(R,U), + partial_wake_args(T,K,U,F) + ), + ( E=suspension(_,active,_,_,_,_,_,_,_) -> + setarg(2,E,inactive), + occurrence___5__10__2__47(O,A,B,K,C,D,F,G,H,I,J,E) ; true ) ; - 'occurrence/4__14__2'(N,J,A,K,H,B,I,C,D,E,F,G) + occurrence___5__10__2__47(O,A,B,K,C,D,F,G,H,I,J,E) ). -'occurrence/4__14'(A,B,C,D,E) :- - 'occurrence/4__15'(A,B,C,D,E). -'occurrence/4__15'(A,B,C,D,E) :- - nb_getval('$chr_store_global_ground_chr_translate:call_pattern/1',F), +occurrence___5__10(A,B,C,D,E,F) :- + occurrence___5__11(A,B,C,D,E,F). +occurrence___5__11(A,B,C,D,E,F) :- + nb_getval('$chr_store_multi_hash_chr_translate____passive___2-12',H), + lookup_ht(H,k(C,D),G), !, - 'occurrence/4__15__0'(F,A,B,C,D,E). -'occurrence/4__15__0'([],A,B,C,D,E) :- - 'occurrence/4__16'(A,B,C,D,E). -'occurrence/4__15__0'([G|M],A,B,C,D,E) :- - ( G=suspension(_,mutable(active),_,_,_,_,F), - F=odom(H,I), - H=occ(J,K), - J==A, - K==B, - '$via1_multi_hash_rule/2-1'(C,L) -> - 'occurrence/4__15__1'(L,I,G,M,A,B,C,D,E) + occurrence___5__11__0__49(G,A,B,C,D,E,F). +occurrence___5__11__0__49([],B,C,D,E,F,A) :- + occurrence___5__12(B,C,D,E,F,A). +occurrence___5__11__0__49([I|K],B,C,D,E,F,A) :- + ( I=suspension(_,active,_,G,H), + G==D, + H==E, + nb_getval('$chr_store_multi_hash_chr_translate____skip_to_next_id___2-12',L), + lookup_ht(L,k(B,C),J) -> + occurrence___5__11__1__49(J,I,K,B,C,D,E,F,A) ; - 'occurrence/4__15__0'(M,A,B,C,D,E) + occurrence___5__11__0__49(K,B,C,D,E,F,A) ). -'occurrence/4__15__1'([],_,_,F,A,B,C,D,E) :- - 'occurrence/4__15__0'(F,A,B,C,D,E). -'occurrence/4__15__1'([K|M],G,A,H,B,C,D,E,F) :- - ( K=suspension(_,mutable(active),_,_,_,_,I,J), +occurrence___5__11__1__49([],_,A,C,D,E,F,G,B) :- + occurrence___5__11__0__49(A,C,D,E,F,G,B). +occurrence___5__11__1__49([K|L],A,B,D,E,F,G,H,C) :- + ( K=suspension(_,active,_,I,J), I==D, - nb_getval('$chr_store_global_ground_chr_translate:abstract_constraints/1',L) -> - 'occurrence/4__15__2'(L,J,K,M,G,A,H,B,C,D,E,F) - ; - 'occurrence/4__15__1'(M,G,A,H,B,C,D,E,F) - ). -'occurrence/4__15__2'([],_,_,I,G,F,H,A,B,C,D,E) :- - 'occurrence/4__15__1'(I,G,F,H,A,B,C,D,E). -'occurrence/4__15__2'([M|N],J,A,K,H,B,I,C,D,E,F,G) :- - ( M=suspension(_,mutable(active),_,_,_,_,L), - E1=t(142,B,M,G,A), - 'chr novel_production'(B,E1), - 'chr novel_production'(M,E1), - 'chr novel_production'(G,E1), - 'chr novel_production'(A,E1), - J=pragma(rule(O,P,_,Q),ids(_,R),_,_,_), - memberchk_eq(F,R) -> - 'chr extend_history'(G,E1), - activate_constraint(C1,_,G,D1), - ( C1==yes -> - '$insert_in_store_occurrence/4'(G) + J==E, + N=t(357,C,A,K), + '$novel_production'(C,N), + '$novel_production'(A,N), + '$novel_production'(K,N), + E>1 -> + '$extend_history'(C,N), + arg(2,C,O), + setarg(2,C,active), + ( O==not_stored_yet -> + nb_getval('$chr_store_global_ground_chr_translate____occurrence___5',P), + Q=[C|P], + b_setval('$chr_store_global_ground_chr_translate____occurrence___5',Q), + ( P=[R|_] -> + setarg(4,R,Q) + ; + true + ), + nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-12',S), + insert_ht(S,k(D,E),C), + nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-3',T), + insert_ht(T,F,C), + nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-34',U), + insert_ht(U,k(F,G),C), + nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-1',V), + insert_ht(V,D,C) ; true ), - select2(F,_,R,P,_,S), - ai_observation_abstract_constraints(S,L,T), - ai_observation_observe_list(odom([],H),T,odom([],U)), - ai_observation_abstract_constraints(O,L,V), - ai_observation_observe_list(odom([],U),V,odom([],W)), - ord_add_element(W,C,X), - ai_observation_abstract_goal(Q,L,Y), - call_pattern(odom(Y,X)), - ( ord_memberchk(C,W) -> - Z=no - ; - Z=yes - ), - A1 is D+1, - B1=odom(occ(C,A1),H), - call_pattern(B1), - depends_on_ap(odom(occ(C,D),H),odom(Y,X),B1,Z), - ( G=suspension(_,mutable(active),_,mutable(D1),_,_,_,_,_,_) -> - 'chr update_mutable'(inactive,mutable(active)), - 'occurrence/4__15__2'(N,J,A,K,H,B,I,C,D,E,F,G) + M is E-1, + skip_to_next_id(D,M), + ( C=suspension(_,active,_,_,_,_,_,_,_) -> + setarg(2,C,inactive), + occurrence___5__11__1__49(L,A,B,D,E,F,G,H,C) ; true ) ; - 'occurrence/4__15__2'(N,J,A,K,H,B,I,C,D,E,F,G) + occurrence___5__11__1__49(L,A,B,D,E,F,G,H,C) ). -'occurrence/4__15'(A,B,C,D,E) :- - 'occurrence/4__16'(A,B,C,D,E). -'occurrence/4__16'(_,_,_,_,A) :- - activate_constraint(B,_,A,_), - ( B==yes -> - '$insert_in_store_occurrence/4'(A) +occurrence___5__11(A,B,C,D,E,F) :- + occurrence___5__12(A,B,C,D,E,F). +occurrence___5__12(A,B,C,D,E,F) :- + nb_getval('$chr_store_multi_hash_chr_translate____set_occurrence_code_id___3-12',H), + lookup_ht(H,k(A,B),G), + !, + occurrence___5__12__0__50(G,A,B,C,D,E,F). +occurrence___5__12__0__50([],B,C,D,E,F,A) :- + occurrence___5__13(B,C,D,E,F,A). +occurrence___5__12__0__50([J|K],A,B,C,D,E,F) :- + ( J=suspension(_,active,G,H,I), + G==A, + H==B, + ground(C), + ground(D), + nb_getval('$chr_store_multi_hash_chr_translate____passive___2-12',X), + lookup_ht(X,k(C,D),M), + 'chr sbag_member'(L,M), + L=suspension(_,active,_,_,_) -> + setarg(2,J,removed), + nb_getval('$chr_store_multi_hash_chr_translate____set_occurrence_code_id___3-12',W), + delete_ht(W,k(A,B),J), + arg(2,F,O), + setarg(2,F,active), + ( O==not_stored_yet -> + nb_getval('$chr_store_global_ground_chr_translate____occurrence___5',P), + Q=[F|P], + b_setval('$chr_store_global_ground_chr_translate____occurrence___5',Q), + ( P=[R|_] -> + setarg(4,R,Q) + ; + true + ), + nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-12',S), + insert_ht(S,k(A,B),F), + nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-3',T), + insert_ht(T,C,F), + nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-34',U), + insert_ht(U,k(C,D),F), + nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-1',V), + insert_ht(V,A,F) + ; + true + ), + occurrence_code_id(A,B,I), + N is B+1, + set_occurrence_code_id(A,N,I), + ( F=suspension(_,active,_,_,_,_,_,_,_) -> + setarg(2,F,inactive), + occurrence___5__12__0__50(K,A,B,C,D,E,F) + ; + true + ) + ; + occurrence___5__12__0__50(K,A,B,C,D,E,F) + ). +occurrence___5__12(A,B,C,D,E,F) :- + occurrence___5__13(A,B,C,D,E,F). +occurrence___5__13(A,B,C,D,simplification,E) :- + nb_getval('$chr_store_multi_hash_chr_translate____set_occurrence_code_id___3-12',G), + lookup_ht(G,k(A,B),F), + !, + occurrence___5__13__0__51(F,A,B,C,D,simplification,E). +occurrence___5__13__0__51([],B,C,D,E,F,A) :- + occurrence___5__15(B,C,D,E,F,A). +occurrence___5__13__0__51([J|K],A,B,C,D,E,F) :- + ( J=suspension(_,active,G,H,I), + G==A, + H==B -> + setarg(2,J,removed), + nb_getval('$chr_store_multi_hash_chr_translate____set_occurrence_code_id___3-12',U), + delete_ht(U,k(A,B),J), + arg(2,F,M), + setarg(2,F,active), + ( M==not_stored_yet -> + nb_getval('$chr_store_global_ground_chr_translate____occurrence___5',N), + O=[F|N], + b_setval('$chr_store_global_ground_chr_translate____occurrence___5',O), + ( N=[P|_] -> + setarg(4,P,O) + ; + true + ), + nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-12',Q), + insert_ht(Q,k(A,B),F), + nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-3',R), + insert_ht(R,C,F), + nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-34',S), + insert_ht(S,k(C,D),F), + nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-1',T), + insert_ht(T,A,F) + ; + true + ), + occurrence_code_id(A,B,I), + L is B+1, + set_occurrence_code_id(A,L,I), + ( F=suspension(_,active,_,_,_,_,_,_,_) -> + setarg(2,F,inactive), + occurrence___5__13__0__51(K,A,B,C,D,E,F) + ; + true + ) + ; + occurrence___5__13__0__51(K,A,B,C,D,E,F) + ). +occurrence___5__13(A,B,C,D,propagation,E) :- + nb_getval('$chr_store_multi_hash_chr_translate____set_occurrence_code_id___3-12',G), + lookup_ht(G,k(A,B),F), + !, + occurrence___5__13__0__52(F,A,B,C,D,propagation,E). +occurrence___5__13__0__52([],B,C,D,E,F,A) :- + occurrence___5__14(B,C,D,E,F,A). +occurrence___5__13__0__52([J|K],A,B,C,D,E,F) :- + ( J=suspension(_,active,G,H,I), + G==A, + H==B, + ground(A), + ground(B), + nb_getval('$chr_store_multi_hash_chr_translate____skip_to_next_id___2-12',Y), + lookup_ht(Y,k(A,B),M), + 'chr sbag_member'(L,M), + L=suspension(_,active,_,_,_) -> + setarg(2,J,removed), + nb_getval('$chr_store_multi_hash_chr_translate____set_occurrence_code_id___3-12',X), + delete_ht(X,k(A,B),J), + arg(2,F,P), + setarg(2,F,active), + ( P==not_stored_yet -> + nb_getval('$chr_store_global_ground_chr_translate____occurrence___5',Q), + R=[F|Q], + b_setval('$chr_store_global_ground_chr_translate____occurrence___5',R), + ( Q=[S|_] -> + setarg(4,S,R) + ; + true + ), + nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-12',T), + insert_ht(T,k(A,B),F), + nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-3',U), + insert_ht(U,C,F), + nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-34',V), + insert_ht(V,k(C,D),F), + nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-1',W), + insert_ht(W,A,F) + ; + true + ), + occurrence_code_id(A,B,I), + N is B+1, + O is I+1, + set_occurrence_code_id(A,N,O), + ( F=suspension(_,active,_,_,_,_,_,_,_) -> + setarg(2,F,inactive), + occurrence___5__13__0__52(K,A,B,C,D,E,F) + ; + true + ) + ; + occurrence___5__13__0__52(K,A,B,C,D,E,F) + ). +occurrence___5__13(A,B,C,D,E,F) :- + occurrence___5__14(A,B,C,D,E,F). +occurrence___5__14(A,B,C,D,propagation,E) :- + nb_getval('$chr_store_multi_hash_chr_translate____set_occurrence_code_id___3-12',G), + lookup_ht(G,k(A,B),F), + !, + occurrence___5__14__0__53(F,A,B,C,D,propagation,E). +occurrence___5__14__0__53([],B,C,D,E,F,A) :- + occurrence___5__15(B,C,D,E,F,A). +occurrence___5__14__0__53([J|K],A,B,C,D,E,F) :- + ( J=suspension(_,active,G,H,I), + G==A, + H==B -> + setarg(2,J,removed), + nb_getval('$chr_store_multi_hash_chr_translate____set_occurrence_code_id___3-12',U), + delete_ht(U,k(A,B),J), + arg(2,F,M), + setarg(2,F,active), + ( M==not_stored_yet -> + nb_getval('$chr_store_global_ground_chr_translate____occurrence___5',N), + O=[F|N], + b_setval('$chr_store_global_ground_chr_translate____occurrence___5',O), + ( N=[P|_] -> + setarg(4,P,O) + ; + true + ), + nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-12',Q), + insert_ht(Q,k(A,B),F), + nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-3',R), + insert_ht(R,C,F), + nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-34',S), + insert_ht(S,k(C,D),F), + nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-1',T), + insert_ht(T,A,F) + ; + true + ), + occurrence_code_id(A,B,I), + L is B+1, + set_occurrence_code_id(A,L,I), + ( F=suspension(_,active,_,_,_,_,_,_,_) -> + setarg(2,F,inactive), + occurrence___5__14__0__53(K,A,B,C,D,E,F) + ; + true + ) + ; + occurrence___5__14__0__53(K,A,B,C,D,E,F) + ). +occurrence___5__14(A,B,C,D,E,F) :- + occurrence___5__15(A,B,C,D,E,F). +occurrence___5__15(A,B,C,D,_,E) :- + arg(2,E,F), + setarg(2,E,active), + ( F==not_stored_yet -> + nb_getval('$chr_store_global_ground_chr_translate____occurrence___5',G), + H=[E|G], + b_setval('$chr_store_global_ground_chr_translate____occurrence___5',H), + ( G=[I|_] -> + setarg(4,I,H) + ; + true + ), + nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-12',J), + insert_ht(J,k(A,B),E), + nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-3',K), + insert_ht(K,C,E), + nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-34',L), + insert_ht(L,k(C,D),E), + nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-1',M), + insert_ht(M,A,E) ; true ). get_occurrence(A,B,C,D) :- - '$via1_multi_hash_occurrence/4-1'(A,I), - 'chr sbag_member'(E,I), - E=suspension(_,mutable(active),_,_,_,_,_,F,G,H), - F==B, + nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-12',I), + lookup_ht(I,k(A,B),H), + 'chr sbag_member'(E,H), + E=suspension(_,active,_,_,_,_,F,G,_), !, - G=C, - H=D. + F=C, + G=D. get_occurrence(A,B,_,_) :- - format('get_occurrence: missing occurrence ~w:~w -',[A,B]), - fail. -max_occurrence(A,B) :- - 'max_occurrence/2__0'(A,B,_). -'max_occurrence/2__0'(A,B,_) :- - '$via1_multi_hash_max_occurrence/2-1'(A,E), - 'chr sbag_member'(C,E), - C=suspension(_,mutable(active),_,_,_,_,_,D), - D>=B, - !. -'max_occurrence/2__0'(A,B,C) :- - '$via1_multi_hash_max_occurrence/2-1'(A,D), + chr_error(internal,'get_occurrence: missing occurrence ~w:~w +',[A,B]). +get_occurrence_from_id(A,B,C,D) :- + nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-34',I), + lookup_ht(I,k(C,D),H), + 'chr sbag_member'(E,H), + E=suspension(_,active,_,_,F,G,_,_,_), !, - 'max_occurrence/2__0__0'(D,A,B,C). -'max_occurrence/2__0__0'([],A,B,C) :- - 'max_occurrence/2__1'(A,B,C). -'max_occurrence/2__0__0'([F|G],A,B,C) :- - ( F=suspension(_,mutable(active),_,_,_,_,D,E), + A=F, + B=G. +get_occurrence_from_id(_,_,_,_) :- + chr_error(internal,'get_occurrence_from_id: missing occurrence ~w:~w +',[]). +max_occurrence(A,B) :- + max_occurrence___2__0(A,B,_). +max_occurrence___2__0(A,B,C) :- + nb_getval('$chr_store_multi_hash_chr_translate____max_occurrence___2-1',G), + lookup_ht(G,A,F), + ( + 'chr sbag_member'(D,F), + D=suspension(_,active,_,_,E), + E>=B, + ! + ; + !, + max_occurrence___2__0__0__2(F,A,B,C) + ). +max_occurrence___2__0__0__2([],B,C,A) :- + max_occurrence___2__1(B,C,A). +max_occurrence___2__0__0__2([F|G],A,B,C) :- + ( F=suspension(_,active,_,D,E), D==A, B>=E -> - remove_constraint_internal(F,_,H), - ( H==yes -> - '$delete_from_store_max_occurrence/2'(F) - ; - true - ), - 'max_occurrence/2__0__0'(G,A,B,C) + setarg(2,F,removed), + nb_getval('$chr_store_multi_hash_chr_translate____max_occurrence___2-1',H), + delete_ht(H,A,F), + max_occurrence___2__0__0__2(G,A,B,C) ; - 'max_occurrence/2__0__0'(G,A,B,C) + max_occurrence___2__0__0__2(G,A,B,C) ). -'max_occurrence/2__0'(A,B,C) :- - 'max_occurrence/2__1'(A,B,C). -'max_occurrence/2__1'(A,B,C) :- - nb_getval('$chr_store_global_ground_chr_translate:occurrence/4',D), +max_occurrence___2__0(A,B,C) :- + max_occurrence___2__1(A,B,C). +max_occurrence___2__1(A,B,C) :- + nb_getval('$chr_store_multi_hash_chr_translate____stored_complete___3-1',F), + lookup_ht(F,A,D), !, - allocate_constraint(true,C,max_occurrence(A,B),[A,B]), - 'max_occurrence/2__1__0'(D,A,B,C). -'max_occurrence/2__1__0'([],A,B,C) :- - 'max_occurrence/2__2'(A,B,C). -'max_occurrence/2__1__0'([F|H],A,B,C) :- - ( F=suspension(_,mutable(active),_,_,_,_,_,_,D,E), - '$via1_multi_hash_stored_complete/3-1'(A,G) -> - 'max_occurrence/2__1__1'(G,D,E,F,H,A,B,C) + C=suspension(E,not_stored_yet,t,A,B), + 'chr gen_id'(E), + max_occurrence___2__1__0__5(D,A,B,C). +max_occurrence___2__1__0__5([],B,C,A) :- + max_occurrence___2__2(B,C,A). +max_occurrence___2__1__0__5([G|I],B,C,A) :- + ( G=suspension(_,active,_,D,E,F), + D==B, + F=0, + nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-1',J), + lookup_ht(J,B,H) -> + max_occurrence___2__1__1__5(H,E,G,I,B,C,A) ; - 'max_occurrence/2__1__0'(H,A,B,C) + max_occurrence___2__1__0__5(I,B,C,A) ). -'max_occurrence/2__1__1'([],_,_,_,D,A,B,C) :- - 'max_occurrence/2__1__0'(D,A,B,C). -'max_occurrence/2__1__1'([K|M],E,F,A,G,B,C,D) :- - ( K=suspension(_,mutable(active),_,_,_,_,H,I,J), - H==B, - J=0, - '$via1_multi_hash_occurrence/4-1'(B,L) -> - 'max_occurrence/2__1__2'(L,I,K,M,E,F,A,G,B,C,D) +max_occurrence___2__1__1__5([],_,_,A,C,D,B) :- + max_occurrence___2__1__0__5(A,C,D,B). +max_occurrence___2__1__1__5([I|K],F,A,B,D,E,C) :- + ( I=suspension(_,active,_,_,G,_,H,_,_), + G==D, + nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-3',L), + lookup_ht1(L,H,H,J) -> + max_occurrence___2__1__2__5(J,H,I,K,F,A,B,D,E,C) ; - 'max_occurrence/2__1__1'(M,E,F,A,G,B,C,D) + max_occurrence___2__1__1__5(K,F,A,B,D,E,C) ). -'max_occurrence/2__1__2'([],_,_,H,D,E,F,G,A,B,C) :- - 'max_occurrence/2__1__1'(H,D,E,F,G,A,B,C). -'max_occurrence/2__1__2'([M|N],I,A,J,F,G,B,H,C,D,E) :- - ( M=suspension(_,mutable(active),_,_,_,_,K,_,L,_), - M\==B, - K==C, - L==F, - Q=t(90,B,M,A,E), - 'chr novel_production'(B,Q), - 'chr novel_production'(M,Q), - 'chr novel_production'(A,Q), - 'chr novel_production'(E,Q), - I= - 'chr extend_history'(E,Q), - activate_constraint(O,_,E,P), - ( O==yes -> - '$insert_in_store_max_occurrence/2'(E) +max_occurrence___2__1__2__5([],_,_,A,G,B,C,E,F,D) :- + max_occurrence___2__1__1__5(A,G,B,C,E,F,D). +max_occurrence___2__1__2__5([L|M],I,A,B,H,C,D,F,G,E) :- + ( L=suspension(_,active,_,_,_,_,J,K,_), + L\==A, + J==I, + N=t(245,L,A,C,E), + '$novel_production'(L,N), + '$novel_production'(A,N), + '$novel_production'(C,N), + '$novel_production'(E,N), + H= + '$extend_history'(E,N), + arg(2,E,O), + setarg(2,E,active), + ( O==not_stored_yet -> + nb_getval('$chr_store_multi_hash_chr_translate____max_occurrence___2-1',P), + insert_ht(P,F,E) ; true ), - passive(F,G), - ( E=suspension(_,mutable(active),_,mutable(P),_,_,_,_) -> - 'chr update_mutable'(inactive,mutable(active)), - 'max_occurrence/2__1__2'(N,I,A,J,F,G,B,H,C,D,E) + passive(I,K), + ( E=suspension(_,active,_,_,_) -> + setarg(2,E,inactive), + max_occurrence___2__1__2__5(M,I,A,B,H,C,D,F,G,E) ; true ) ; - 'max_occurrence/2__1__2'(N,I,A,J,F,G,B,H,C,D,E) + max_occurrence___2__1__2__5(M,I,A,B,H,C,D,F,G,E) ). -'max_occurrence/2__1'(A,B,C) :- - allocate_constraint(true,C,max_occurrence(A,B),[A,B]), - 'max_occurrence/2__2'(A,B,C). -'max_occurrence/2__2'(A,B,C) :- - nb_getval('$chr_store_global_ground_chr_translate:call_pattern/1',D), - !, - 'max_occurrence/2__2__0'(D,A,B,C). -'max_occurrence/2__2__0'([],A,B,C) :- - 'max_occurrence/2__3'(A,B,C). -'max_occurrence/2__2__0'([E|F],A,B,C) :- - ( E=suspension(_,mutable(active),_,_,_,_,D), - D=odom(G,H), - G=occ(I,J), - I==A, - M=t(138,E,C), - 'chr novel_production'(E,M), - 'chr novel_production'(C,M), - J>B -> - 'chr extend_history'(C,M), - activate_constraint(K,_,C,L), - ( K==yes -> - '$insert_in_store_max_occurrence/2'(C) - ; - true - ), - final_answer_pattern(odom(occ(A,J),H),odom([],H)), - ( C=suspension(_,mutable(active),_,mutable(L),_,_,_,_) -> - 'chr update_mutable'(inactive,mutable(active)), - 'max_occurrence/2__2__0'(F,A,B,C) - ; - true - ) - ; - 'max_occurrence/2__2__0'(F,A,B,C) - ). -'max_occurrence/2__2'(A,B,C) :- - 'max_occurrence/2__3'(A,B,C). -'max_occurrence/2__3'(_,_,A) :- - activate_constraint(B,_,A,_), - ( B==yes -> - '$insert_in_store_max_occurrence/2'(A) +max_occurrence___2__1(A,B,C) :- + C=suspension(D,not_stored_yet,t,A,B), + 'chr gen_id'(D), + max_occurrence___2__2(A,B,C). +max_occurrence___2__2(A,_,B) :- + arg(2,B,C), + setarg(2,B,active), + ( C==not_stored_yet -> + nb_getval('$chr_store_multi_hash_chr_translate____max_occurrence___2-1',D), + insert_ht(D,A,B) ; true ). get_max_occurrence(A,B) :- - '$via1_multi_hash_max_occurrence/2-1'(A,E), + nb_getval('$chr_store_multi_hash_chr_translate____max_occurrence___2-1',F), + lookup_ht(F,A,E), 'chr sbag_member'(C,E), - C=suspension(_,mutable(active),_,_,_,_,_,D), + C=suspension(_,active,_,_,D), !, B=D. -get_max_occurrence(A,B) :- - format('WARNING: get_max_occurrence: missing max occurrence for ~w -',[A]), - B=0. +get_max_occurrence(A,_) :- + chr_error(internal,'get_max_occurrence: missing max occurrence for ~w +',[A]). allocation_occurrence(A,B) :- - 'allocation_occurrence/2__0'(A,B,_). -'allocation_occurrence/2__0'(A,B,_) :- - '$via1_multi_hash_occurrence/4-1'(A,G), - 'chr sbag_member'(C,G), - C=suspension(_,mutable(active),_,_,_,_,_,D,E,F), - D=B, - '$via1_multi_hash_passive/2-1'(E,J), - 'chr sbag_member'(H,J), - H=suspension(_,mutable(active),_,_,_,_,_,I), - I=F, + allocation_occurrence___2__0(A,B,_). +allocation_occurrence___2__0(A,0,B) :- !, - K is B+1, - allocation_occurrence(A,K). -'allocation_occurrence/2__0'(A,B,_) :- - nb_getval('$chr_store_global_ground_chr_translate:rule/2',F), - 'chr sbag_member'(C,F), - C=suspension(_,mutable(active),_,_,_,_,D,E), - '$via1_multi_hash_occurrence/4-1'(A,K), - 'chr sbag_member'(G,K), - G=suspension(_,mutable(active),_,_,_,_,_,H,I,J), - H=B, - I=D, - E=pragma(_,ids(L,_),_,_,_), - member(J,L), + B=suspension(C,active,t,A,0), + 'chr gen_id'(C), + nb_getval('$chr_store_multi_hash_chr_translate____allocation_occurrence___2-1',D), + insert_ht(D,A,B), + nb_getval('$chr_store_multi_hash_chr_translate____allocation_occurrence___2-12',E), + insert_ht(E,k(A,0),B), + stored_in_guard_before_next_kept_occurrence(A,0), + ( B=suspension(_,active,_,_,_) -> + setarg(2,B,inactive), + allocation_occurrence___2__1(A,0,B) + ; + true + ). +allocation_occurrence___2__0(A,B,C) :- + C=suspension(D,not_stored_yet,t,A,B), + 'chr gen_id'(D), + allocation_occurrence___2__1(A,B,C). +allocation_occurrence___2__1(A,B,C) :- + nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-12',E), + lookup_ht(E,k(A,B),D), !, - M is B+1, - allocation_occurrence(A,M). -'allocation_occurrence/2__0'(A,B,_) :- - nb_getval('$chr_store_global_ground_chr_translate:rule/2',F), - 'chr sbag_member'(C,F), - C=suspension(_,mutable(active),_,_,_,_,D,E), - '$via1_multi_hash_occurrence/4-1'(A,J), - 'chr sbag_member'(G,J), - G=suspension(_,mutable(active),_,_,_,_,_,H,I,_), - H=B, - I=D, - E=pragma(rule([_|_],_,_,true),_,_,_,_), - !, - K is B+1, - allocation_occurrence(A,K). -'allocation_occurrence/2__0'(A,B,_) :- - nb_getval('$chr_store_global_ground_chr_translate:rule/2',F), - 'chr sbag_member'(C,F), - C=suspension(_,mutable(active),_,_,_,_,D,E), - '$via1_multi_hash_occurrence/4-1'(A,J), - 'chr sbag_member'(G,J), - G=suspension(_,mutable(active),_,_,_,_,_,H,I,_), - H=B, - I=D, - E=pragma(rule([_|_],_,_,_),_,_,_,_), - \+is_observed(A,B), - !, - K is B+1, - allocation_occurrence(A,K). -'allocation_occurrence/2__0'(A,B,_) :- - nb_getval('$chr_store_global_ground_chr_translate:rule/2',F), - 'chr sbag_member'(C,F), - C=suspension(_,mutable(active),_,_,_,_,D,E), - '$via1_multi_hash_occurrence/4-1'(A,M), - 'chr sbag_member'(J,M), - J=suspension(_,mutable(active),_,_,_,_,_,K,L,_), - K=B, - L=D, - '$via1_multi_hash_least_occurrence/2-1'(D,I), - 'chr sbag_member'(G,I), - G=suspension(_,mutable(active),_,_,_,_,_,H), - H=[], - E=pragma(rule([],_,_,_),_,_,_,_), - \+is_observed(A,B), - !, - N is B+1, - allocation_occurrence(A,N). -'allocation_occurrence/2__0'(A,B,C) :- - nb_getval('$chr_store_global_ground_chr_translate:least_occurrence/2',D), - !, - allocate_constraint(true,C,allocation_occurrence(A,B),[A,B]), - 'allocation_occurrence/2__0__0'(D,A,B,C). -'allocation_occurrence/2__0__0'([],A,B,C) :- - 'allocation_occurrence/2__1'(A,B,C). -'allocation_occurrence/2__0__0'([F|I],A,B,C) :- - ( F=suspension(_,mutable(active),_,_,_,_,D,E), - E=[G|H], - '$via1_multi_hash_occurrence/4-1'(A,N), - 'chr sbag_member'(J,N), - J=suspension(_,mutable(active),_,_,_,_,_,K,L,M), - L==D, - M==G, - B>=K, - '$via1_multi_hash_rule/2-1'(D,P), - 'chr sbag_member'(O,P), - O=suspension(_,mutable(active),_,_,_,_,_,_), - \+may_trigger(A) -> - remove_constraint_internal(F,_,Q), - ( Q==yes -> - '$delete_from_store_least_occurrence/2'(F) + allocation_occurrence___2__1__0__2(D,A,B,C). +allocation_occurrence___2__1__0__2([],B,C,A) :- + allocation_occurrence___2__2(B,C,A). +allocation_occurrence___2__1__0__2([I|K],B,C,A) :- + ( I=suspension(_,active,_,_,D,E,F,G,H), + D==B, + E==C, + nb_getval('$chr_store_multi_hash_chr_translate____rule___2-1',L), + lookup_ht1(L,F,F,J) -> + allocation_occurrence___2__1__1__2(J,F,G,H,I,K,B,C,A) + ; + allocation_occurrence___2__1__0__2(K,B,C,A) + ). +allocation_occurrence___2__1__1__2([],_,_,_,_,A,C,D,B) :- + allocation_occurrence___2__1__0__2(A,C,D,B). +allocation_occurrence___2__1__1__2([K|L],F,G,H,A,B,D,E,C) :- + ( K=suspension(_,active,_,_,I,J), + I==F, + M=t(58,K,A,C), + '$novel_production'(K,M), + '$novel_production'(A,M), + '$novel_production'(C,M) -> + '$extend_history'(C,M), + arg(2,C,N), + setarg(2,C,active), + ( N==not_stored_yet -> + nb_getval('$chr_store_multi_hash_chr_translate____allocation_occurrence___2-1',O), + insert_ht(O,D,C), + nb_getval('$chr_store_multi_hash_chr_translate____allocation_occurrence___2-12',P), + insert_ht(P,k(D,E),C) ; true ), - activate_constraint(R,_,C,S), - ( R==yes -> - '$insert_in_store_allocation_occurrence/2'(C) + \+is_passive(F,G), + H==propagation, + ( stored_in_guard_before_next_kept_occurrence(D,E) -> + true + ; + ( J=pragma(rule([_|_],_,_,_),_,_,_,_) -> + is_observed(D,E) + ) + ; + ( is_least_occurrence(F) -> + is_observed(D,E) + ) ; true ), - least_occurrence(D,H), - ( C=suspension(_,mutable(active),_,mutable(S),_,_,_,_) -> - 'chr update_mutable'(inactive,mutable(active)), - 'allocation_occurrence/2__0__0'(I,A,B,C) + ( C=suspension(_,active,_,_,_) -> + setarg(2,C,inactive), + allocation_occurrence___2__1__1__2(L,F,G,H,A,B,D,E,C) ; true ) ; - 'allocation_occurrence/2__0__0'(I,A,B,C) + allocation_occurrence___2__1__1__2(L,F,G,H,A,B,D,E,C) ). -'allocation_occurrence/2__0'(A,B,C) :- - allocate_constraint(true,C,allocation_occurrence(A,B),[A,B]), - 'allocation_occurrence/2__1'(A,B,C). -'allocation_occurrence/2__1'(A,B,C) :- - '$via1_multi_hash_functional_dependency/4-1'(A,D), +allocation_occurrence___2__1(A,B,C) :- + allocation_occurrence___2__2(A,B,C). +allocation_occurrence___2__2(A,B,C) :- + nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-1',E), + lookup_ht(E,A,D), !, - 'allocation_occurrence/2__1__0'(D,A,B,C). -'allocation_occurrence/2__1__0'([],A,B,C) :- - 'allocation_occurrence/2__2'(A,B,C). -'allocation_occurrence/2__1__0'([H|I],A,B,C) :- - ( H=suspension(_,mutable(active),_,_,_,_,D,E,F,G), - D==A, - E>1, - '$via1_multi_hash_occurrence/4-1'(A,M), - 'chr sbag_member'(J,M), - J=suspension(_,mutable(active),_,_,_,_,_,K,L,_), - L==E, - B>K -> - remove_constraint_internal(H,_,N), - ( N==yes -> - '$delete_from_store_functional_dependency/4'(H) + allocation_occurrence___2__2__0__3(D,A,B,C). +allocation_occurrence___2__2__0__3([],B,C,A) :- + allocation_occurrence___2__3(B,C,A). +allocation_occurrence___2__2__0__3([H|J],B,C,A) :- + ( H=suspension(_,active,_,_,D,E,F,G,_), + D==B, + nb_getval('$chr_store_multi_hash_chr_translate____least_occurrence___2-1',K), + lookup_ht(K,F,I) -> + allocation_occurrence___2__2__1__3(I,E,F,G,H,J,B,C,A) + ; + allocation_occurrence___2__2__0__3(J,B,C,A) + ). +allocation_occurrence___2__2__1__3([],_,_,_,_,A,C,D,B) :- + allocation_occurrence___2__2__0__3(A,C,D,B). +allocation_occurrence___2__2__1__3([K|N],E,F,G,A,H,B,C,D) :- + ( K=suspension(_,active,I,J), + I==F, + J=[L|M], + L==G, + C>=E, + ground(F), + nb_getval('$chr_store_multi_hash_chr_translate____rule___2-1',V), + lookup_ht1(V,F,F,P), + 'chr sbag_member'(O,P), + O=suspension(_,active,_,_,_,_), + \+may_trigger(B) -> + setarg(2,K,removed), + nb_getval('$chr_store_multi_hash_chr_translate____least_occurrence___2-12',T), + delete_ht(T,k(F,[G|M]),K), + nb_getval('$chr_store_multi_hash_chr_translate____least_occurrence___2-1',U), + delete_ht(U,F,K), + arg(2,D,Q), + setarg(2,D,active), + ( Q==not_stored_yet -> + nb_getval('$chr_store_multi_hash_chr_translate____allocation_occurrence___2-1',R), + insert_ht(R,B,D), + nb_getval('$chr_store_multi_hash_chr_translate____allocation_occurrence___2-12',S), + insert_ht(S,k(B,C),D) ; true ), - activate_constraint(O,_,C,P), - ( O==yes -> - '$insert_in_store_allocation_occurrence/2'(C) + least_occurrence(F,M), + ( D=suspension(_,active,_,_,_) -> + setarg(2,D,inactive), + allocation_occurrence___2__2__1__3(N,E,F,G,A,H,B,C,D) + ; + true + ) + ; + allocation_occurrence___2__2__1__3(N,E,F,G,A,H,B,C,D) + ). +allocation_occurrence___2__2(A,B,C) :- + allocation_occurrence___2__3(A,B,C). +allocation_occurrence___2__3(A,B,C) :- + nb_getval('$chr_store_multi_hash_chr_translate____functional_dependency___4-1',E), + lookup_ht(E,A,D), + !, + allocation_occurrence___2__3__0__5(D,A,B,C). +allocation_occurrence___2__3__0__5([],B,C,A) :- + allocation_occurrence___2__4(B,C,A). +allocation_occurrence___2__3__0__5([H|I],A,B,C) :- + ( H=suspension(_,active,D,E,F,G), + D==A, + E>1, + ground(A), + nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-1',R), + lookup_ht(R,A,L), + 'chr sbag_member'(J,L), + J=suspension(_,active,_,_,_,K,E,_,_), + B>K -> + setarg(2,H,removed), + nb_getval('$chr_store_multi_hash_chr_translate____functional_dependency___4-1',P), + delete_ht(P,A,H), + nb_getval('$chr_store_multi_hash_chr_translate____functional_dependency___4-12',Q), + delete_ht(Q,k(A,E),H), + arg(2,C,M), + setarg(2,C,active), + ( M==not_stored_yet -> + nb_getval('$chr_store_multi_hash_chr_translate____allocation_occurrence___2-1',N), + insert_ht(N,A,C), + nb_getval('$chr_store_multi_hash_chr_translate____allocation_occurrence___2-12',O), + insert_ht(O,k(A,B),C) ; true ), functional_dependency(A,1,F,G), - ( C=suspension(_,mutable(active),_,mutable(P),_,_,_,_) -> - 'chr update_mutable'(inactive,mutable(active)), - 'allocation_occurrence/2__1__0'(I,A,B,C) + ( C=suspension(_,active,_,_,_) -> + setarg(2,C,inactive), + allocation_occurrence___2__3__0__5(I,A,B,C) ; true ) ; - 'allocation_occurrence/2__1__0'(I,A,B,C) + allocation_occurrence___2__3__0__5(I,A,B,C) ). -'allocation_occurrence/2__1'(A,B,C) :- - 'allocation_occurrence/2__2'(A,B,C). -'allocation_occurrence/2__2'(_,_,A) :- - activate_constraint(B,_,A,_), - ( B==yes -> - '$insert_in_store_allocation_occurrence/2'(A) +allocation_occurrence___2__3(A,B,C) :- + allocation_occurrence___2__4(A,B,C). +allocation_occurrence___2__4(A,B,C) :- + arg(2,C,D), + setarg(2,C,active), + ( D==not_stored_yet -> + nb_getval('$chr_store_multi_hash_chr_translate____allocation_occurrence___2-1',E), + insert_ht(E,A,C), + nb_getval('$chr_store_multi_hash_chr_translate____allocation_occurrence___2-12',F), + insert_ht(F,k(A,B),C) ; true ). get_allocation_occurrence(A,B) :- - '$via1_multi_hash_allocation_occurrence/2-1'(A,E), + nb_getval('$chr_store_multi_hash_chr_translate____allocation_occurrence___2-1',F), + lookup_ht(F,A,E), 'chr sbag_member'(C,E), - C=suspension(_,mutable(active),_,_,_,_,_,D), + C=suspension(_,active,_,_,D), !, B=D. get_allocation_occurrence(_,A) :- chr_pp_flag(late_allocation,off), A=0. rule(A,B) :- - 'rule/2__0'(A,B,_). -'rule/2__0'(A,B,C) :- - nb_getval('$chr_store_global_ground_chr_translate:allocation_occurrence/2',D), + rule___2__0(A,B,_). +rule___2__0(A,B,C) :- + nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-3',F), + lookup_ht1(F,A,A,D), !, - allocate_constraint(true,C,rule(A,B),[A,B]), - 'rule/2__0__0'(D,A,B,C). -'rule/2__0__0'([],A,B,C) :- - 'rule/2__1'(A,B,C). -'rule/2__0__0'([F|G],A,B,C) :- - ( F=suspension(_,mutable(active),_,_,_,_,D,E), - '$via1_multi_hash_occurrence/4-1'(D,L), - 'chr sbag_member'(H,L), - H=suspension(_,mutable(active),_,_,_,_,_,I,J,K), - I==E, - J==A, - B=pragma(_,ids(N,_),_,_,_), - member(K,N) -> - remove_constraint_internal(F,_,M), - ( M==yes -> - '$delete_from_store_allocation_occurrence/2'(F) + C=suspension(E,not_stored_yet,t,_,A,B), + 'chr gen_id'(E), + rule___2__0__0__1(D,A,B,C). +rule___2__0__0__1([],B,C,A) :- + rule___2__1(B,C,A). +rule___2__0__0__1([I|K],B,C,A) :- + ( I=suspension(_,active,_,_,D,E,F,G,H), + F==B, + nb_getval('$chr_store_multi_hash_chr_translate____allocation_occurrence___2-12',L), + lookup_ht(L,k(D,E),J) -> + rule___2__0__1__1(J,D,E,G,H,I,K,B,C,A) + ; + rule___2__0__0__1(K,B,C,A) + ). +rule___2__0__1__1([],_,_,_,_,_,A,C,D,B) :- + rule___2__0__0__1(A,C,D,B). +rule___2__0__1__1([L|M],F,G,H,I,A,B,D,E,C) :- + ( L=suspension(_,active,_,J,K), + J==F, + K==G, + N=t(58,C,A,L), + '$novel_production'(C,N), + '$novel_production'(A,N), + '$novel_production'(L,N) -> + '$extend_history'(C,N), + arg(2,C,O), + setarg(2,C,active), + ( O==not_stored_yet -> + nb_getval('$chr_store_global_ground_chr_translate____rule___2',P), + Q=[C|P], + b_setval('$chr_store_global_ground_chr_translate____rule___2',Q), + ( P=[R|_] -> + setarg(4,R,Q) + ; + true + ), + nb_getval('$chr_store_multi_hash_chr_translate____rule___2-1',S), + insert_ht(S,D,C) ; true ), - activate_constraint(P,_,C,Q), - ( P==yes -> - '$insert_in_store_rule/2'(C) + \+is_passive(D,H), + I==propagation, + ( stored_in_guard_before_next_kept_occurrence(F,G) -> + true + ; + ( E=pragma(rule([_|_],_,_,_),_,_,_,_) -> + is_observed(F,G) + ) + ; + ( is_least_occurrence(D) -> + is_observed(F,G) + ) ; true ), - O is E+1, - allocation_occurrence(D,O), - ( C=suspension(_,mutable(active),_,mutable(Q),_,_,_,_) -> - 'chr update_mutable'(inactive,mutable(active)), - 'rule/2__0__0'(G,A,B,C) + ( C=suspension(_,active,_,_,_,_) -> + setarg(2,C,inactive), + rule___2__0__1__1(M,F,G,H,I,A,B,D,E,C) ; true ) ; - 'rule/2__0__0'(G,A,B,C) + rule___2__0__1__1(M,F,G,H,I,A,B,D,E,C) ). -'rule/2__0'(A,B,C) :- - allocate_constraint(true,C,rule(A,B),[A,B]), - 'rule/2__1'(A,B,C). -'rule/2__1'(A,B,C) :- - nb_getval('$chr_store_global_ground_chr_translate:allocation_occurrence/2',D), +rule___2__0(A,B,C) :- + C=suspension(D,not_stored_yet,t,_,A,B), + 'chr gen_id'(D), + rule___2__1(A,B,C). +rule___2__1(A,B,C) :- + nb_getval('$chr_store_multi_hash_chr_translate____least_occurrence___2-1',E), + lookup_ht(E,A,D), !, - 'rule/2__1__0'(D,A,B,C). -'rule/2__1__0'([],A,B,C) :- - 'rule/2__2'(A,B,C). -'rule/2__1__0'([F|G],A,B,C) :- - ( F=suspension(_,mutable(active),_,_,_,_,D,E), - '$via1_multi_hash_occurrence/4-1'(D,K), - 'chr sbag_member'(H,K), - H=suspension(_,mutable(active),_,_,_,_,_,I,J,_), - I==E, - J==A, - B=pragma(rule([_|_],_,_,true),_,_,_,_) -> - remove_constraint_internal(F,_,L), - ( L==yes -> - '$delete_from_store_allocation_occurrence/2'(F) - ; - true - ), - activate_constraint(N,_,C,O), - ( N==yes -> - '$insert_in_store_rule/2'(C) - ; - true - ), - M is E+1, - allocation_occurrence(D,M), - ( C=suspension(_,mutable(active),_,mutable(O),_,_,_,_) -> - 'chr update_mutable'(inactive,mutable(active)), - 'rule/2__1__0'(G,A,B,C) - ; - true - ) - ; - 'rule/2__1__0'(G,A,B,C) - ). -'rule/2__1'(A,B,C) :- - 'rule/2__2'(A,B,C). -'rule/2__2'(A,B,C) :- - nb_getval('$chr_store_global_ground_chr_translate:allocation_occurrence/2',D), - !, - 'rule/2__2__0'(D,A,B,C). -'rule/2__2__0'([],A,B,C) :- - 'rule/2__3'(A,B,C). -'rule/2__2__0'([F|G],A,B,C) :- - ( F=suspension(_,mutable(active),_,_,_,_,D,E), - '$via1_multi_hash_occurrence/4-1'(D,K), - 'chr sbag_member'(H,K), - H=suspension(_,mutable(active),_,_,_,_,_,I,J,_), - I==E, - J==A, - B=pragma(rule([_|_],_,_,_),_,_,_,_), - \+is_observed(D,E) -> - remove_constraint_internal(F,_,L), - ( L==yes -> - '$delete_from_store_allocation_occurrence/2'(F) - ; - true - ), - activate_constraint(N,_,C,O), - ( N==yes -> - '$insert_in_store_rule/2'(C) - ; - true - ), - M is E+1, - allocation_occurrence(D,M), - ( C=suspension(_,mutable(active),_,mutable(O),_,_,_,_) -> - 'chr update_mutable'(inactive,mutable(active)), - 'rule/2__2__0'(G,A,B,C) - ; - true - ) - ; - 'rule/2__2__0'(G,A,B,C) - ). -'rule/2__2'(A,B,C) :- - 'rule/2__3'(A,B,C). -'rule/2__3'(A,B,C) :- - nb_getval('$chr_store_global_ground_chr_translate:allocation_occurrence/2',D), - !, - 'rule/2__3__0'(D,A,B,C). -'rule/2__3__0'([],A,B,C) :- - 'rule/2__4'(A,B,C). -'rule/2__3__0'([F|G],A,B,C) :- - ( F=suspension(_,mutable(active),_,_,_,_,D,E), - '$via1_multi_hash_least_occurrence/2-1'(A,J), - 'chr sbag_member'(H,J), - H=suspension(_,mutable(active),_,_,_,_,_,I), - I=[], - '$via1_multi_hash_occurrence/4-1'(D,N), - 'chr sbag_member'(K,N), - K=suspension(_,mutable(active),_,_,_,_,_,L,M,_), - L==E, - M==A, - B=pragma(rule([],_,_,_),_,_,_,_), - \+is_observed(D,E) -> - remove_constraint_internal(F,_,O), - ( O==yes -> - '$delete_from_store_allocation_occurrence/2'(F) - ; - true - ), - activate_constraint(Q,_,C,R), - ( Q==yes -> - '$insert_in_store_rule/2'(C) - ; - true - ), - P is E+1, - allocation_occurrence(D,P), - ( C=suspension(_,mutable(active),_,mutable(R),_,_,_,_) -> - 'chr update_mutable'(inactive,mutable(active)), - 'rule/2__3__0'(G,A,B,C) - ; - true - ) - ; - 'rule/2__3__0'(G,A,B,C) - ). -'rule/2__3'(A,B,C) :- - 'rule/2__4'(A,B,C). -'rule/2__4'(A,B,C) :- - '$via1_multi_hash_least_occurrence/2-1'(A,D), - !, - 'rule/2__4__0'(D,A,B,C). -'rule/2__4__0'([],A,B,C) :- - 'rule/2__5'(A,B,C). -'rule/2__4__0'([F|I],A,B,C) :- - ( F=suspension(_,mutable(active),_,_,_,_,D,E), + rule___2__1__0__2(D,A,B,C). +rule___2__1__0__2([],B,C,A) :- + rule___2__2(B,C,A). +rule___2__1__0__2([F|I],A,B,C) :- + ( F=suspension(_,active,D,E), D==A, E=[G|H], - nb_getval('$chr_store_global_ground_chr_translate:allocation_occurrence/2',M), + ground(A), + ground(G), + nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-34',Y), + lookup_ht(Y,k(A,G),M), 'chr sbag_member'(J,M), - J=suspension(_,mutable(active),_,_,_,_,K,L), - '$via1_multi_hash_occurrence/4-1'(K,R), - 'chr sbag_member'(N,R), - N=suspension(_,mutable(active),_,_,_,_,_,O,P,Q), - P==A, - Q==G, - L>=O, + J=suspension(_,active,_,_,K,L,_,_,_), + nb_getval('$chr_store_multi_hash_chr_translate____allocation_occurrence___2-1',X), + lookup_ht(X,K,P), + 'chr sbag_member'(N,P), + N=suspension(_,active,_,_,O), + O>=L, \+may_trigger(K) -> - remove_constraint_internal(F,_,S), - ( S==yes -> - '$delete_from_store_least_occurrence/2'(F) - ; - true - ), - activate_constraint(T,_,C,U), - ( T==yes -> - '$insert_in_store_rule/2'(C) + setarg(2,F,removed), + nb_getval('$chr_store_multi_hash_chr_translate____least_occurrence___2-12',V), + delete_ht(V,k(A,[G|H]),F), + nb_getval('$chr_store_multi_hash_chr_translate____least_occurrence___2-1',W), + delete_ht(W,A,F), + arg(2,C,Q), + setarg(2,C,active), + ( Q==not_stored_yet -> + nb_getval('$chr_store_global_ground_chr_translate____rule___2',R), + S=[C|R], + b_setval('$chr_store_global_ground_chr_translate____rule___2',S), + ( R=[T|_] -> + setarg(4,T,S) + ; + true + ), + nb_getval('$chr_store_multi_hash_chr_translate____rule___2-1',U), + insert_ht(U,A,C) ; true ), least_occurrence(A,H), - ( C=suspension(_,mutable(active),_,mutable(U),_,_,_,_) -> - 'chr update_mutable'(inactive,mutable(active)), - 'rule/2__4__0'(I,A,B,C) + ( C=suspension(_,active,_,_,_,_) -> + setarg(2,C,inactive), + rule___2__1__0__2(I,A,B,C) ; true ) ; - 'rule/2__4__0'(I,A,B,C) + rule___2__1__0__2(I,A,B,C) ). -'rule/2__4'(A,B,C) :- - 'rule/2__5'(A,B,C). -'rule/2__5'(A,B,C) :- - '$via1_multi_hash_least_occurrence/2-1'(A,D), +rule___2__1(A,B,C) :- + rule___2__2(A,B,C). +rule___2__2(A,B,C) :- + nb_getval('$chr_store_multi_hash_chr_translate____least_occurrence___2-1',E), + lookup_ht(E,A,D), !, - 'rule/2__5__0'(D,A,B,C). -'rule/2__5__0'([],A,B,C) :- - 'rule/2__6'(A,B,C). -'rule/2__5__0'([F|I],A,B,C) :- - ( F=suspension(_,mutable(active),_,_,_,_,D,E), + rule___2__2__0__3(D,A,B,C). +rule___2__2__0__3([],B,C,A) :- + rule___2__3(B,C,A). +rule___2__2__0__3([F|I],A,B,C) :- + ( F=suspension(_,active,D,E), D==A, E=[G|H], - '$via1_multi_hash_passive/2-1'(A,L), - 'chr sbag_member'(J,L), - J=suspension(_,mutable(active),_,_,_,_,_,K), - K==G -> - remove_constraint_internal(F,_,M), - ( M==yes -> - '$delete_from_store_least_occurrence/2'(F) - ; - true - ), - activate_constraint(N,_,C,O), - ( N==yes -> - '$insert_in_store_rule/2'(C) + ground(A), + ground(G), + nb_getval('$chr_store_multi_hash_chr_translate____passive___2-12',S), + lookup_ht(S,k(A,G),K), + 'chr sbag_member'(J,K), + J=suspension(_,active,_,_,_) -> + setarg(2,F,removed), + nb_getval('$chr_store_multi_hash_chr_translate____least_occurrence___2-12',Q), + delete_ht(Q,k(A,[G|H]),F), + nb_getval('$chr_store_multi_hash_chr_translate____least_occurrence___2-1',R), + delete_ht(R,A,F), + arg(2,C,L), + setarg(2,C,active), + ( L==not_stored_yet -> + nb_getval('$chr_store_global_ground_chr_translate____rule___2',M), + N=[C|M], + b_setval('$chr_store_global_ground_chr_translate____rule___2',N), + ( M=[O|_] -> + setarg(4,O,N) + ; + true + ), + nb_getval('$chr_store_multi_hash_chr_translate____rule___2-1',P), + insert_ht(P,A,C) ; true ), least_occurrence(A,H), - ( C=suspension(_,mutable(active),_,mutable(O),_,_,_,_) -> - 'chr update_mutable'(inactive,mutable(active)), - 'rule/2__5__0'(I,A,B,C) + ( C=suspension(_,active,_,_,_,_) -> + setarg(2,C,inactive), + rule___2__2__0__3(I,A,B,C) ; true ) ; - 'rule/2__5__0'(I,A,B,C) + rule___2__2__0__3(I,A,B,C) ). -'rule/2__5'(A,B,C) :- - 'rule/2__6'(A,B,C). -'rule/2__6'(A,B,C) :- +rule___2__2(A,B,C) :- + rule___2__3(A,B,C). +rule___2__3(A,B,C) :- B=pragma(rule([],_,_,_),ids([],D),_,_,_), !, - activate_constraint(E,_,C,F), - ( E==yes -> - '$insert_in_store_rule/2'(C) + arg(2,C,E), + setarg(2,C,active), + ( E==not_stored_yet -> + nb_getval('$chr_store_global_ground_chr_translate____rule___2',F), + G=[C|F], + b_setval('$chr_store_global_ground_chr_translate____rule___2',G), + ( F=[H|_] -> + setarg(4,H,G) + ; + true + ), + nb_getval('$chr_store_multi_hash_chr_translate____rule___2-1',I), + insert_ht(I,A,C) ; true ), least_occurrence(A,D), - ( C=suspension(_,mutable(active),_,mutable(F),_,_,_,_) -> - 'chr update_mutable'(inactive,mutable(active)), - 'rule/2__7'(A,B,C) + ( C=suspension(_,active,_,_,_,_) -> + setarg(2,C,inactive), + rule___2__4(A,B,C) ; true ). -'rule/2__6'(A,B,C) :- - 'rule/2__7'(A,B,C). -'rule/2__7'(A,B,C) :- - '$via1_multi_hash_prev_guard_list/7-2'(A,D), +rule___2__3(A,B,C) :- + rule___2__4(A,B,C). +rule___2__4(A,B,C) :- + nb_getval('$chr_store_multi_hash_chr_translate____prev_guard_list___6-1',F1), + lookup_ht(F1,A,I), + 'chr sbag_member'(D,I), + D=suspension(_,active,_,_,_,E,F,G,H,_), + B=pragma(rule(M,N,F,O),J,K,L,A), + F\==true, + append(H,G,P), + ( conj2list(F,Q), + append(P,Q,R), + guard_entailment:entails_guard(R,fail) -> + S=fail + ; + simplify_guard(F,O,P,S,T) + ), + F\==S, !, - 'rule/2__7__0'(D,A,B,C). -'rule/2__7__0'([],A,B,C) :- - 'rule/2__8'(A,B,C). -'rule/2__7__0'([K|L],A,B,C) :- - ( K=suspension(_,mutable(active),_,_,_,_,D,E,F,G,H,I,J), - E==A, - B=pragma(rule(N,O,P,_),_,_,_,A), - N\==[], - append(N,O,Q), - make_head_matchings_explicit(Q,R,S), - term_variables(R+F,T), - strip_attributes(T,U), - setof(V,chr_translate:head_subset(R,F,V),W), - restore_attributes(T,U), - W\=[] -> - remove_constraint_internal(K,_,M), - ( M==yes -> - '$delete_from_store_prev_guard_list/7'(K) - ; - true - ), - activate_constraint(G1,_,C,H1), - ( G1==yes -> - '$insert_in_store_rule/2'(C) - ; - true - ), - compute_derived_info(S,W,R,Q,P,I,F,J,X,Y), - append(H,X,Z), - list2conj(Z,A1), - conj2list(A1,B1), - append(Y,J,C1), - list2conj(C1,D1), - conj2list(D1,E1), - F1 is A-1, - prev_guard_list(D,F1,F,G,B1,I,E1), - ( C=suspension(_,mutable(active),_,mutable(H1),_,_,_,_) -> - 'chr update_mutable'(inactive,mutable(active)), - 'rule/2__7__0'(L,A,B,C) + setarg(2,D,removed), + arg(4,D,A1), + ( var(A1) -> + nb_getval('$chr_store_global_ground_chr_translate____prev_guard_list___6',B1), + B1=[_|C1], + b_setval('$chr_store_global_ground_chr_translate____prev_guard_list___6',C1), + ( C1=[D1|_] -> + setarg(4,D1,_) ; true ) ; - 'rule/2__7__0'(L,A,B,C) - ). -'rule/2__7'(A,B,C) :- - 'rule/2__8'(A,B,C). -'rule/2__8'(A,B,C) :- - '$via1_multi_hash_prev_guard_list/7-1'(A,J), - 'chr sbag_member'(D,J), - D=suspension(_,mutable(active),_,_,_,_,_,E,F,G,H,I,_), - E=0, - B=pragma(rule(N,O,G,P),K,L,M,A), - G\==true, - append(I,H,Q), - simplify_guard(G,P,Q,R,S), - G\==R, - !, - remove_constraint_internal(D,_,T), - ( T==yes -> - '$delete_from_store_prev_guard_list/7'(D) - ; - true + A1=[_,_|C1], + setarg(2,A1,C1), + ( C1=[D1|_] -> + setarg(4,D1,A1) + ; + true + ) ), + nb_getval('$chr_store_multi_hash_chr_translate____prev_guard_list___6-1',E1), + delete_ht(E1,A,D), ( var(C) -> true ; - remove_constraint_internal(C,_,U), - ( U==yes -> - '$delete_from_store_rule/2'(C) + arg(2,C,Z), + setarg(2,C,removed), + ( Z==not_stored_yet -> + true + ; + arg(4,C,U), + ( var(U) -> + nb_getval('$chr_store_global_ground_chr_translate____rule___2',V), + V=[_|W], + b_setval('$chr_store_global_ground_chr_translate____rule___2',W), + ( W=[X|_] -> + setarg(4,X,_) + ; + true + ) + ; + U=[_,_|W], + setarg(2,U,W), + ( W=[X|_] -> + setarg(4,X,U) + ; + true + ) + ), + nb_getval('$chr_store_multi_hash_chr_translate____rule___2-1',Y), + delete_ht(Y,A,C) + ) + ), + rule(A,pragma(rule(M,N,S,T),J,K,L,A)), + prev_guard_list(A,E,S,G,H,[]). +rule___2__4(A,B,C) :- + nb_getval('$chr_store_global_ground_chr_translate____precompute_head_matchings___0',D), + !, + rule___2__4__0__10(D,A,B,C). +rule___2__4__0__10([],B,C,A) :- + rule___2__5(B,C,A). +rule___2__4__0__10([D|E],B,C,A) :- + ( D=suspension(_,active,_,_), + M=t(170,A,D), + '$novel_production'(A,M), + '$novel_production'(D,M) -> + '$extend_history'(A,M), + arg(2,A,N), + setarg(2,A,active), + ( N==not_stored_yet -> + nb_getval('$chr_store_global_ground_chr_translate____rule___2',O), + P=[A|O], + b_setval('$chr_store_global_ground_chr_translate____rule___2',P), + ( O=[Q|_] -> + setarg(4,Q,P) + ; + true + ), + nb_getval('$chr_store_multi_hash_chr_translate____rule___2-1',R), + insert_ht(R,B,A) + ; + true + ), + C=pragma(rule(F,G,_,_),_,_,_,_), + append(F,G,H), + make_head_matchings_explicit_(H,I,J), + copy_term_nat(I-J,K-L), + make_head_matchings_explicit_memo_table(B,K,L), + ( A=suspension(_,active,_,_,_,_) -> + setarg(2,A,inactive), + rule___2__4__0__10(E,B,C,A) ; true ) - ), - rule(A,pragma(rule(N,O,R,S),K,L,M,A)), - prev_guard_list(A,0,F,R,H,I,[]). -'rule/2__8'(A,B,C) :- - '$via1_multi_hash_prev_guard_list/7-1'(A,D), + ; + rule___2__4__0__10(E,B,C,A) + ). +rule___2__4(A,B,C) :- + rule___2__5(A,B,C). +rule___2__5(A,B,C) :- + nb_getval('$chr_store_multi_hash_chr_translate____prev_guard_list___6-1',E), + lookup_ht(E,A,D), !, - 'rule/2__8__0'(D,A,B,C). -'rule/2__8__0'([],A,B,C) :- - 'rule/2__9'(A,B,C). -'rule/2__8__0'([I|J],A,B,C) :- - ( I=suspension(_,mutable(active),_,_,_,_,D,E,_,F,G,H,_), - D==A, - E=0, + rule___2__5__0__11(D,A,B,C). +rule___2__5__0__11([],B,C,A) :- + rule___2__6(B,C,A). +rule___2__5__0__11([H|I],B,C,A) :- + ( H=suspension(_,active,_,_,D,_,E,F,G,_), + D==B, + M=t(174,H,A), + '$novel_production'(H,M), + '$novel_production'(A,M), chr_pp_flag(check_impossible_rules,on), - B=pragma(rule(_,_,F,_),_,_,_,A), - append(H,G,L), + C=pragma(rule(_,_,E,_),_,_,_,B), + conj2list(E,J), + append(G,F,K), + append(K,J,L), guard_entailment:entails_guard(L,fail) -> - remove_constraint_internal(I,_,K), - ( K==yes -> - '$delete_from_store_prev_guard_list/7'(I) + '$extend_history'(A,M), + arg(2,A,N), + setarg(2,A,active), + ( N==not_stored_yet -> + nb_getval('$chr_store_global_ground_chr_translate____rule___2',O), + P=[A|O], + b_setval('$chr_store_global_ground_chr_translate____rule___2',P), + ( O=[Q|_] -> + setarg(4,Q,P) + ; + true + ), + nb_getval('$chr_store_multi_hash_chr_translate____rule___2-1',R), + insert_ht(R,B,A) ; true ), - activate_constraint(M,_,C,N), - ( M==yes -> - '$insert_in_store_rule/2'(C) - ; - true - ), - format('CHR compiler WARNING: heads will never match in ~@. -',[format_rule(B)]), - format(' `--> In the refined operational semantics (rules applied in textual order) -',[]), - format(' this rule will never fire! (given the declared types/modes) -',[]), - format(' Removing this redundant rule by making all its heads passive... -',[]), - format(' ... next warning is caused by this ... -',[]), - set_all_passive(A), - ( C=suspension(_,mutable(active),_,mutable(N),_,_,_,_) -> - 'chr update_mutable'(inactive,mutable(active)), - 'rule/2__8__0'(J,A,B,C) + chr_warning(weird_program,'Heads will never match or guard will always fail in ~@. + This rule will never fire! +',[format_rule(C)]), + set_all_passive(B), + ( A=suspension(_,active,_,_,_,_) -> + setarg(2,A,inactive), + rule___2__5__0__11(I,B,C,A) ; true ) ; - 'rule/2__8__0'(J,A,B,C) + rule___2__5__0__11(I,B,C,A) ). -'rule/2__8'(A,B,C) :- - 'rule/2__9'(A,B,C). -'rule/2__9'(A,B,C) :- - '$via1_multi_hash_prev_guard_list/7-1'(A,J), - 'chr sbag_member'(D,J), - D=suspension(_,mutable(active),_,_,_,_,_,E,F,G,H,I,_), - E=0, - B=pragma(rule(N,O,G,P),K,L,M,A), - simplify_heads(I,H,G,P,Q,R), - Q\==[], - extract_variables(N,S), - extract_variables(O,T), - extract_variables(F,U), - replace_some_heads(S,T,U,Q,V,W,G,P,X), - insert_variables(V,N,Y), - insert_variables(W,O,Z), - append(R,X,A1), - list2conj(A1,B1), - C1=pragma(rule(Y,Z,G,(B1,P)),K,L,M,A), +rule___2__5(A,B,C) :- + rule___2__6(A,B,C). +rule___2__6(A,B,C) :- + nb_getval('$chr_store_multi_hash_chr_translate____prev_guard_list___6-1',I1), + lookup_ht(I1,A,I), + 'chr sbag_member'(D,I), + D=suspension(_,active,_,_,_,E,F,G,H,_), + B=pragma(rule(M,N,F,O),J,K,L,A), + simplify_heads(H,G,F,O,P,Q), + P\==[], + extract_arguments(M,R), + extract_arguments(N,S), + extract_arguments(E,T), + replace_some_heads(R,S,T,P,U,V,F,O,W), + substitute_arguments(M,U,X), + substitute_arguments(N,V,Y), + append(Q,W,Z), + list2conj(Z,A1), + B1=pragma(rule(X,Y,F,(A1,O)),J,K,L,A), ( - N\==Y + M\==X ; - O\==Z + N\==Y ), !, ( var(C) -> true ; - remove_constraint_internal(C,_,D1), - ( D1==yes -> - '$delete_from_store_rule/2'(C) - ; + arg(2,C,H1), + setarg(2,C,removed), + ( H1==not_stored_yet -> true + ; + arg(4,C,C1), + ( var(C1) -> + nb_getval('$chr_store_global_ground_chr_translate____rule___2',D1), + D1=[_|E1], + b_setval('$chr_store_global_ground_chr_translate____rule___2',E1), + ( E1=[F1|_] -> + setarg(4,F1,_) + ; + true + ) + ; + C1=[_,_|E1], + setarg(2,C1,E1), + ( E1=[F1|_] -> + setarg(4,F1,C1) + ; + true + ) + ), + nb_getval('$chr_store_multi_hash_chr_translate____rule___2-1',G1), + delete_ht(G1,A,C) ) ), - rule(A,C1). -'rule/2__9'(A,B,C) :- - '$via1_multi_hash_prev_guard_list/7-1'(A,D), + rule(A,B1). +rule___2__6(A,B,C) :- + nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-3',E), + lookup_ht1(E,A,A,D), !, - 'rule/2__9__0'(D,A,B,C). -'rule/2__9__0'([],A,B,C) :- - 'rule/2__10'(A,B,C). -'rule/2__9__0'([G|H],A,B,C) :- - ( G=suspension(_,mutable(active),_,_,_,_,D,E,_,F,_,_,_), - D==A, - E=0, - L=t(73,G,C), - 'chr novel_production'(G,L), - 'chr novel_production'(C,L), - chr_pp_flag(check_impossible_rules,on), - B=pragma(rule(_,_,F,_),_,_,_,A), - conj2list(F,I), - guard_entailment:entails_guard(I,fail) -> - 'chr extend_history'(C,L), - activate_constraint(J,_,C,K), - ( J==yes -> - '$insert_in_store_rule/2'(C) - ; - true - ), - format('CHR compiler WARNING: guard will always fail in ~@. -',[format_rule(B)]), - format(' Removing this redundant rule by making all its heads passive... -',[]), - format(' ... next warning is caused by this ... -',[]), - set_all_passive(A), - ( C=suspension(_,mutable(active),_,mutable(K),_,_,_,_) -> - 'chr update_mutable'(inactive,mutable(active)), - 'rule/2__9__0'(H,A,B,C) - ; - true - ) + rule___2__6__0__13(D,A,B,C). +rule___2__6__0__13([],B,C,A) :- + rule___2__7(B,C,A). +rule___2__6__0__13([G|I],B,C,A) :- + ( G=suspension(_,active,_,_,D,E,F,_,_), + F==B, + nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-1',J), + lookup_ht(J,D,H) -> + rule___2__6__1__13(H,D,E,G,I,B,C,A) ; - 'rule/2__9__0'(H,A,B,C) + rule___2__6__0__13(I,B,C,A) ). -'rule/2__9'(A,B,C) :- - 'rule/2__10'(A,B,C). -'rule/2__10'(A,B,C) :- - nb_getval('$chr_store_global_ground_chr_translate:multiple_occ_constraints_checked/1',D), - !, - 'rule/2__10__0'(D,A,B,C). -'rule/2__10__0'([],A,B,C) :- - 'rule/2__11'(A,B,C). -'rule/2__10__0'([E|F],A,B,C) :- - ( E=suspension(_,mutable(active),_,_,_,_,D), +rule___2__6__1__13([],_,_,_,A,C,D,B) :- + rule___2__6__0__13(A,C,D,B). +rule___2__6__1__13([L|N],F,G,A,B,D,E,C) :- + ( L=suspension(_,active,_,_,H,I,J,K,_), + L\==A, + H==F, + J==D, + nb_getval('$chr_store_multi_hash_chr_translate____prev_guard_list___6-1',O), + lookup_ht(O,D,M) -> + rule___2__6__2__13(M,I,K,L,N,F,G,A,B,D,E,C) + ; + rule___2__6__1__13(N,F,G,A,B,D,E,C) + ). +rule___2__6__2__13([],_,_,_,A,G,H,B,C,E,F,D) :- + rule___2__6__1__13(A,G,H,B,C,E,F,D). +rule___2__6__2__13([M|O],J,K,A,B,H,I,C,D,F,G,E) :- + ( M=suspension(_,active,_,_,L,_,_,_,_,_), + L==F, + nb_getval('$chr_store_global_ground_chr_translate____multiple_occ_constraints_checked___1',N) -> + rule___2__6__3__13(N,M,O,J,K,A,B,H,I,C,D,F,G,E) + ; + rule___2__6__2__13(O,J,K,A,B,H,I,C,D,F,G,E) + ). +rule___2__6__3__13([],_,A,K,L,B,C,I,J,D,E,G,H,F) :- + rule___2__6__2__13(A,K,L,B,C,I,J,D,E,G,H,F). +rule___2__6__3__13([O|P],A,M,J,K,B,L,G,H,C,I,D,E,F) :- + ( O=suspension(_,active,_,N), + J - remove_constraint_internal(E,_,S), - ( S==yes -> - '$delete_from_store_multiple_occ_constraints_checked/1'(E) + E=pragma(rule(Q,_,_,_),_,_,_,_), + Q\==[], + \+tree_set_memberchk(G,N) -> + setarg(2,O,removed), + arg(3,O,X), + ( var(X) -> + nb_getval('$chr_store_global_ground_chr_translate____multiple_occ_constraints_checked___1',Y), + Y=[_|Z], + b_setval('$chr_store_global_ground_chr_translate____multiple_occ_constraints_checked___1',Z), + ( Z=[A1|_] -> + setarg(3,A1,_) + ; + true + ) + ; + X=[_,_|Z], + setarg(2,X,Z), + ( Z=[A1|_] -> + setarg(3,A1,X) + ; + true + ) + ), + arg(2,F,S), + setarg(2,F,active), + ( S==not_stored_yet -> + nb_getval('$chr_store_global_ground_chr_translate____rule___2',T), + U=[F|T], + b_setval('$chr_store_global_ground_chr_translate____rule___2',U), + ( T=[V|_] -> + setarg(4,V,U) + ; + true + ), + nb_getval('$chr_store_multi_hash_chr_translate____rule___2-1',W), + insert_ht(W,D,F) ; true ), - activate_constraint(U,_,C,V), - ( U==yes -> - '$insert_in_store_rule/2'(C) - ; - true - ), - first_occ_in_rule(A,H,I,J), - multiple_occ_constraints_checked([H|D]), - ( C=suspension(_,mutable(active),_,mutable(V),_,_,_,_) -> - 'chr update_mutable'(inactive,mutable(active)), - 'rule/2__10__0'(F,A,B,C) + first_occ_in_rule(D,G,J,K), + tree_set_add(N,G,R), + multiple_occ_constraints_checked(R), + ( F=suspension(_,active,_,_,_,_) -> + setarg(2,F,inactive), + rule___2__6__3__13(P,A,M,J,K,B,L,G,H,C,I,D,E,F) ; true ) ; - 'rule/2__10__0'(F,A,B,C) + rule___2__6__3__13(P,A,M,J,K,B,L,G,H,C,I,D,E,F) ). -'rule/2__10'(A,B,C) :- - 'rule/2__11'(A,B,C). -'rule/2__11'(A,B,C) :- - '$via1_multi_hash_passive/2-1'(A,D), +rule___2__6(A,B,C) :- + rule___2__7(A,B,C). +rule___2__7(A,B,C) :- + nb_getval('$chr_store_global_ground_chr_translate____static_type_check___0',D), !, - 'rule/2__11__0'(D,A,B,C). -'rule/2__11__0'([],A,B,C) :- - 'rule/2__12'(A,B,C). -'rule/2__11__0'([F|G],A,B,C) :- - ( F=suspension(_,mutable(active),_,_,_,_,D,E), - D==A, - M=t(91,C,F), - 'chr novel_production'(C,M), - 'chr novel_production'(F,M), - B=pragma(rule(_,_,_,_),ids([E|I],H),_,_,A) -> - 'chr extend_history'(C,M), - activate_constraint(K,_,C,L), - ( K==yes -> - '$insert_in_store_rule/2'(C) + rule___2__7__0__15(D,A,B,C). +rule___2__7__0__15([],B,C,A) :- + rule___2__8(B,C,A). +rule___2__7__0__15([D|E],B,C,A) :- + ( D=suspension(_,active,_,_), + T=t(209,A,D), + '$novel_production'(A,T), + '$novel_production'(D,T) -> + '$extend_history'(A,T), + arg(2,A,U), + setarg(2,A,active), + ( U==not_stored_yet -> + nb_getval('$chr_store_global_ground_chr_translate____rule___2',V), + W=[A|V], + b_setval('$chr_store_global_ground_chr_translate____rule___2',W), + ( V=[X|_] -> + setarg(4,X,W) + ; + true + ), + nb_getval('$chr_store_multi_hash_chr_translate____rule___2-1',Y), + insert_ht(Y,B,A) + ; + true + ), + copy_term_nat(C,F), + F=pragma(rule(G,H,_,I),ids(_,_),_,_,_), + ( + catch((static_type_check_heads(G),static_type_check_heads(H),conj2list(I,J),static_type_check_body(J)),type_error(K),(K=invalid_functor(L,M,N)->chr_error(type_error,'Invalid functor in ~@ of ~@: + found `~w'', + expected type `~w''! +',[chr_translate:format_src(L),format_rule(C),M,N]);K=type_clash(O,P,Q,R,S)->chr_error(type_error,'Type clash for variable ~w in ~@: + expected type ~w in ~@ + expected type ~w in ~@ +',[O,format_rule(C),R,chr_translate:format_src(P),S,chr_translate:format_src(Q)]))), + fail + ; + true + ), + ( A=suspension(_,active,_,_,_,_) -> + setarg(2,A,inactive), + rule___2__7__0__15(E,B,C,A) + ; + true + ) + ; + rule___2__7__0__15(E,B,C,A) + ). +rule___2__7(A,B,C) :- + rule___2__8(A,B,C). +rule___2__8(A,B,C) :- + nb_getval('$chr_store_multi_hash_chr_translate____passive___2-1',E), + lookup_ht(E,A,D), + !, + rule___2__8__0__16(D,A,B,C). +rule___2__8__0__16([],B,C,A) :- + rule___2__9(B,C,A). +rule___2__8__0__16([F|G],B,C,A) :- + ( F=suspension(_,active,_,D,E), + D==B, + K=t(246,A,F), + '$novel_production'(A,K), + '$novel_production'(F,K), + C=pragma(rule(_,_,_,_),ids([E|I],H),_,_,B) -> + '$extend_history'(A,K), + arg(2,A,L), + setarg(2,A,active), + ( L==not_stored_yet -> + nb_getval('$chr_store_global_ground_chr_translate____rule___2',M), + N=[A|M], + b_setval('$chr_store_global_ground_chr_translate____rule___2',N), + ( M=[O|_] -> + setarg(4,O,N) + ; + true + ), + nb_getval('$chr_store_multi_hash_chr_translate____rule___2-1',P), + insert_ht(P,B,A) ; true ), append(I,H,J), - check_all_passive(A,J), - ( C=suspension(_,mutable(active),_,mutable(L),_,_,_,_) -> - 'chr update_mutable'(inactive,mutable(active)), - 'rule/2__11__0'(G,A,B,C) + check_all_passive(B,J), + ( A=suspension(_,active,_,_,_,_) -> + setarg(2,A,inactive), + rule___2__8__0__16(G,B,C,A) ; true ) ; - 'rule/2__11__0'(G,A,B,C) + rule___2__8__0__16(G,B,C,A) ). -'rule/2__11'(A,B,C) :- - 'rule/2__12'(A,B,C). -'rule/2__12'(A,B,C) :- - '$via1_multi_hash_passive/2-1'(A,D), +rule___2__8(A,B,C) :- + rule___2__9(A,B,C). +rule___2__9(A,B,C) :- + nb_getval('$chr_store_multi_hash_chr_translate____passive___2-1',E), + lookup_ht(E,A,D), !, - 'rule/2__12__0'(D,A,B,C). -'rule/2__12__0'([],A,B,C) :- - 'rule/2__13'(A,B,C). -'rule/2__12__0'([F|G],A,B,C) :- - ( F=suspension(_,mutable(active),_,_,_,_,D,E), - D==A, - K=t(92,C,F), - 'chr novel_production'(C,K), - 'chr novel_production'(F,K), - B=pragma(rule(_,_,_,_),ids([],[E|H]),_,_,A) -> - 'chr extend_history'(C,K), - activate_constraint(I,_,C,J), - ( I==yes -> - '$insert_in_store_rule/2'(C) + rule___2__9__0__17(D,A,B,C). +rule___2__9__0__17([],B,C,A) :- + rule___2__10(B,C,A). +rule___2__9__0__17([F|G],B,C,A) :- + ( F=suspension(_,active,_,D,E), + D==B, + I=t(247,A,F), + '$novel_production'(A,I), + '$novel_production'(F,I), + C=pragma(rule(_,_,_,_),ids([],[E|H]),_,_,B) -> + '$extend_history'(A,I), + arg(2,A,J), + setarg(2,A,active), + ( J==not_stored_yet -> + nb_getval('$chr_store_global_ground_chr_translate____rule___2',K), + L=[A|K], + b_setval('$chr_store_global_ground_chr_translate____rule___2',L), + ( K=[M|_] -> + setarg(4,M,L) + ; + true + ), + nb_getval('$chr_store_multi_hash_chr_translate____rule___2-1',N), + insert_ht(N,B,A) ; true ), - check_all_passive(A,H), - ( C=suspension(_,mutable(active),_,mutable(J),_,_,_,_) -> - 'chr update_mutable'(inactive,mutable(active)), - 'rule/2__12__0'(G,A,B,C) + check_all_passive(B,H), + ( A=suspension(_,active,_,_,_,_) -> + setarg(2,A,inactive), + rule___2__9__0__17(G,B,C,A) ; true ) ; - 'rule/2__12__0'(G,A,B,C) + rule___2__9__0__17(G,B,C,A) ). -'rule/2__12'(A,B,C) :- - 'rule/2__13'(A,B,C). -'rule/2__13'(A,B,C) :- - '$via1_multi_hash_check_all_passive/2-1'(A,D), +rule___2__9(A,B,C) :- + rule___2__10(A,B,C). +rule___2__10(A,B,C) :- + nb_getval('$chr_store_multi_hash_chr_translate____check_all_passive___2-12',E), + hash_term(k(A,11910),F), + lookup_ht1(E,F,k(A,[]),D), !, - 'rule/2__13__0'(D,A,B,C). -'rule/2__13__0'([],A,B,C) :- - 'rule/2__14'(A,B,C). -'rule/2__13__0'([F|G],A,B,C) :- - ( F=suspension(_,mutable(active),_,_,_,_,D,E), + rule___2__10__0__18(D,A,B,C). +rule___2__10__0__18([],B,C,A) :- + rule___2__11(B,C,A). +rule___2__10__0__18([F|G],A,B,C) :- + ( F=suspension(_,active,D,E), D==A, E=[] -> - remove_constraint_internal(F,_,H), - ( H==yes -> - '$delete_from_store_check_all_passive/2'(F) + setarg(2,F,removed), + nb_getval('$chr_store_multi_hash_chr_translate____check_all_passive___2-12',M), + delete_ht(M,k(A,[]),F), + nb_getval('$chr_store_multi_hash_chr_translate____check_all_passive___2-1',N), + delete_ht(N,A,F), + arg(2,C,H), + setarg(2,C,active), + ( H==not_stored_yet -> + nb_getval('$chr_store_global_ground_chr_translate____rule___2',I), + J=[C|I], + b_setval('$chr_store_global_ground_chr_translate____rule___2',J), + ( I=[K|_] -> + setarg(4,K,J) + ; + true + ), + nb_getval('$chr_store_multi_hash_chr_translate____rule___2-1',L), + insert_ht(L,A,C) ; true ), - activate_constraint(I,_,C,J), - ( I==yes -> - '$insert_in_store_rule/2'(C) - ; - true - ), - format('CHR compiler WARNING: all heads passive in ~@. + chr_warning(weird_program,'All heads passive in ~@. + This rule never fires. Please check your program. ',[format_rule(B)]), - format(' `--> Rule never fires. Check your program, this might be a bug! -',[]), - ( C=suspension(_,mutable(active),_,mutable(J),_,_,_,_) -> - 'chr update_mutable'(inactive,mutable(active)), - 'rule/2__13__0'(G,A,B,C) + ( C=suspension(_,active,_,_,_,_) -> + setarg(2,C,inactive), + rule___2__10__0__18(G,A,B,C) ; true ) ; - 'rule/2__13__0'(G,A,B,C) + rule___2__10__0__18(G,A,B,C) ). -'rule/2__13'(A,B,C) :- - 'rule/2__14'(A,B,C). -'rule/2__14'(A,B,C) :- - nb_getval('$chr_store_global_ground_chr_translate:call_pattern/1',D), +rule___2__10(A,B,C) :- + rule___2__11(A,B,C). +rule___2__11(A,B,C) :- + nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-3',E), + lookup_ht1(E,A,A,D), !, - 'rule/2__14__0'(D,A,B,C). -'rule/2__14__0'([],A,B,C) :- - 'rule/2__15'(A,B,C). -'rule/2__14__0'([E|K],A,B,C) :- - ( E=suspension(_,mutable(active),_,_,_,_,D), - D=odom(F,G), - F=occ(H,I), - '$via1_multi_hash_occurrence/4-1'(H,J) -> - 'rule/2__14__1'(J,H,I,G,E,K,A,B,C) + rule___2__11__0__23(D,A,B,C). +rule___2__11__0__23([],B,C,A) :- + rule___2__12(B,C,A). +rule___2__11__0__23([H|J],B,C,A) :- + ( H=suspension(_,active,_,_,D,_,E,F,G), + E==B, + nb_getval('$chr_store_global_ground_chr_translate____partial_wake_analysis___0',I) -> + rule___2__11__1__23(I,D,F,G,H,J,B,C,A) ; - 'rule/2__14__0'(K,A,B,C) + rule___2__11__0__23(J,B,C,A) ). -'rule/2__14__1'([],_,_,_,_,D,A,B,C) :- - 'rule/2__14__0'(D,A,B,C). -'rule/2__14__1'([M|O],F,G,E,A,H,B,C,D) :- - ( M=suspension(_,mutable(active),_,_,_,_,I,J,K,L), - I==F, - J==G, - K==B, - nb_getval('$chr_store_global_ground_chr_translate:abstract_constraints/1',N) -> - 'rule/2__14__2'(N,L,M,O,F,G,E,A,H,B,C,D) +rule___2__11__1__23([],_,_,_,_,A,C,D,B) :- + rule___2__11__0__23(A,C,D,B). +rule___2__11__1__23([I|K],F,G,H,A,B,D,E,C) :- + ( I=suspension(_,active,_,_), + nb_getval('$chr_store_multi_hash_chr_translate____constraint_mode___2-1',L), + lookup_ht(L,F,J) -> + rule___2__11__2__23(J,I,K,F,G,H,A,B,D,E,C) ; - 'rule/2__14__1'(O,F,G,E,A,H,B,C,D) + rule___2__11__1__23(K,F,G,H,A,B,D,E,C) ). -'rule/2__14__2'([],_,_,I,F,G,E,D,H,A,B,C) :- - 'rule/2__14__1'(I,F,G,E,D,H,A,B,C). -'rule/2__14__2'([M|N],J,A,K,G,H,F,B,I,C,D,E) :- - ( M=suspension(_,mutable(active),_,_,_,_,L), - C1=t(140,B,M,A,E), - 'chr novel_production'(B,C1), - 'chr novel_production'(M,C1), - 'chr novel_production'(A,C1), - 'chr novel_production'(E,C1), - D=pragma(rule(O,P,_,Q),ids(R,_),_,_,_), - memberchk_eq(J,R) -> - 'chr extend_history'(E,C1), - activate_constraint(A1,_,E,B1), - ( A1==yes -> - '$insert_in_store_rule/2'(E) +rule___2__11__2__23([],_,A,G,H,I,B,C,E,F,D) :- + rule___2__11__1__23(A,G,H,I,B,C,E,F,D). +rule___2__11__2__23([M|N],A,B,H,I,J,C,D,F,G,E) :- + ( M=suspension(_,active,_,_,K,L), + K==H, + U=t(325,A,C,E,M), + '$novel_production'(A,U), + '$novel_production'(C,U), + '$novel_production'(E,U), + '$novel_production'(M,U) -> + '$extend_history'(E,U), + arg(2,E,V), + setarg(2,E,active), + ( V==not_stored_yet -> + nb_getval('$chr_store_global_ground_chr_translate____rule___2',W), + X=[E|W], + b_setval('$chr_store_global_ground_chr_translate____rule___2',X), + ( W=[Y|_] -> + setarg(4,Y,X) + ; + true + ), + nb_getval('$chr_store_multi_hash_chr_translate____rule___2-1',Z), + insert_ht(Z,F,E) ; true ), - select2(J,_,R,O,_,S), - ai_observation_abstract_constraints(S,L,T), - ai_observation_observe_list(odom([],F),T,odom([],U)), - ai_observation_abstract_constraints(P,L,V), - ai_observation_observe_list(odom([],U),V,odom([],W)), - ai_observation_abstract_goal(Q,L,X), - call_pattern(odom(X,W)), - Y is H+1, - Z=odom(occ(G,Y),F), - call_pattern(Z), - depends_on_as(odom(occ(G,H),F),odom(X,W),Z), - ( E=suspension(_,mutable(active),_,mutable(B1),_,_,_,_) -> - 'chr update_mutable'(inactive,mutable(active)), - 'rule/2__14__2'(N,J,A,K,G,H,F,B,I,C,D,E) + G=pragma(rule(O,P,Q,_),_,_,_,_), + ( is_passive(F,I) -> + true + ; + ( J==simplification -> + select(R,O,_), + R=..[_|S], + term_variables(Q,T), + partial_wake_args(S,L,T,H) + ) + ; + select(R,P,_), + R=..[_|S], + term_variables(Q,T), + partial_wake_args(S,L,T,H) + ), + ( E=suspension(_,active,_,_,_,_) -> + setarg(2,E,inactive), + rule___2__11__2__23(N,A,B,H,I,J,C,D,F,G,E) ; true ) ; - 'rule/2__14__2'(N,J,A,K,G,H,F,B,I,C,D,E) + rule___2__11__2__23(N,A,B,H,I,J,C,D,F,G,E) ). -'rule/2__14'(A,B,C) :- - 'rule/2__15'(A,B,C). -'rule/2__15'(A,B,C) :- - nb_getval('$chr_store_global_ground_chr_translate:call_pattern/1',D), - !, - 'rule/2__15__0'(D,A,B,C). -'rule/2__15__0'([],A,B,C) :- - 'rule/2__16'(A,B,C). -'rule/2__15__0'([E|K],A,B,C) :- - ( E=suspension(_,mutable(active),_,_,_,_,D), - D=odom(F,G), - F=occ(H,I), - '$via1_multi_hash_occurrence/4-1'(H,J) -> - 'rule/2__15__1'(J,H,I,G,E,K,A,B,C) - ; - 'rule/2__15__0'(K,A,B,C) - ). -'rule/2__15__1'([],_,_,_,_,D,A,B,C) :- - 'rule/2__15__0'(D,A,B,C). -'rule/2__15__1'([M|O],F,G,E,A,H,B,C,D) :- - ( M=suspension(_,mutable(active),_,_,_,_,I,J,K,L), - I==F, - J==G, - K==B, - nb_getval('$chr_store_global_ground_chr_translate:abstract_constraints/1',N) -> - 'rule/2__15__2'(N,L,M,O,F,G,E,A,H,B,C,D) - ; - 'rule/2__15__1'(O,F,G,E,A,H,B,C,D) - ). -'rule/2__15__2'([],_,_,I,F,G,E,D,H,A,B,C) :- - 'rule/2__15__1'(I,F,G,E,D,H,A,B,C). -'rule/2__15__2'([M|N],J,A,K,G,H,F,B,I,C,D,E) :- - ( M=suspension(_,mutable(active),_,_,_,_,L), - E1=t(142,B,M,A,E), - 'chr novel_production'(B,E1), - 'chr novel_production'(M,E1), - 'chr novel_production'(A,E1), - 'chr novel_production'(E,E1), - D=pragma(rule(O,P,_,Q),ids(_,R),_,_,_), - memberchk_eq(J,R) -> - 'chr extend_history'(E,E1), - activate_constraint(C1,_,E,D1), - ( C1==yes -> - '$insert_in_store_rule/2'(E) +rule___2__11(A,B,C) :- + rule___2__12(A,B,C). +rule___2__12(A,_,B) :- + arg(2,B,C), + setarg(2,B,active), + ( C==not_stored_yet -> + nb_getval('$chr_store_global_ground_chr_translate____rule___2',D), + E=[B|D], + b_setval('$chr_store_global_ground_chr_translate____rule___2',E), + ( D=[F|_] -> + setarg(4,F,E) ; true ), - select2(J,_,R,P,_,S), - ai_observation_abstract_constraints(S,L,T), - ai_observation_observe_list(odom([],F),T,odom([],U)), - ai_observation_abstract_constraints(O,L,V), - ai_observation_observe_list(odom([],U),V,odom([],W)), - ord_add_element(W,G,X), - ai_observation_abstract_goal(Q,L,Y), - call_pattern(odom(Y,X)), - ( ord_memberchk(G,W) -> - Z=no - ; - Z=yes - ), - A1 is H+1, - B1=odom(occ(G,A1),F), - call_pattern(B1), - depends_on_ap(odom(occ(G,H),F),odom(Y,X),B1,Z), - ( E=suspension(_,mutable(active),_,mutable(D1),_,_,_,_) -> - 'chr update_mutable'(inactive,mutable(active)), - 'rule/2__15__2'(N,J,A,K,G,H,F,B,I,C,D,E) - ; - true - ) - ; - 'rule/2__15__2'(N,J,A,K,G,H,F,B,I,C,D,E) - ). -'rule/2__15'(A,B,C) :- - 'rule/2__16'(A,B,C). -'rule/2__16'(_,_,A) :- - activate_constraint(B,_,A,_), - ( B==yes -> - '$insert_in_store_rule/2'(A) + nb_getval('$chr_store_multi_hash_chr_translate____rule___2-1',G), + insert_ht(G,A,B) ; true ). get_rule(A,B) :- - '$via1_multi_hash_rule/2-1'(A,E), + nb_getval('$chr_store_multi_hash_chr_translate____rule___2-1',F), + lookup_ht1(F,A,A,E), 'chr sbag_member'(C,E), - C=suspension(_,mutable(active),_,_,_,_,_,D), + C=suspension(_,active,_,_,_,D), !, B=D. get_rule(_,_) :- fail. +least_occurrence(A,[B|C]) :- + nb_getval('$chr_store_multi_hash_chr_translate____rule___2-1',P), + lookup_ht1(P,A,A,E), + 'chr sbag_member'(D,E), + D=suspension(_,active,_,_,_,_), + ( + nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-34',R), + lookup_ht(R,k(A,B),I), + 'chr sbag_member'(F,I), + F=suspension(_,active,_,_,G,H,_,_,_), + nb_getval('$chr_store_multi_hash_chr_translate____allocation_occurrence___2-1',Q), + lookup_ht(Q,G,L), + 'chr sbag_member'(J,L), + J=suspension(_,active,_,_,K), + K>=H, + \+may_trigger(G), + !, + least_occurrence(A,C) + ; + nb_getval('$chr_store_multi_hash_chr_translate____passive___2-12',O), + lookup_ht(O,k(A,B),N), + 'chr sbag_member'(M,N), + M=suspension(_,active,_,_,_), + !, + least_occurrence(A,C) + ). least_occurrence(A,B) :- - 'least_occurrence/2__0'(A,B,_). -'least_occurrence/2__0'(A,[],B) :- - nb_getval('$chr_store_global_ground_chr_translate:allocation_occurrence/2',C), - !, - allocate_constraint(true,B,least_occurrence(A,[]),[A,[]]), - 'least_occurrence/2__0__0'(C,A,[],B). -'least_occurrence/2__0__0'([],A,B,C) :- - 'least_occurrence/2__1'(A,B,C). -'least_occurrence/2__0__0'([F|G],A,B,C) :- - ( F=suspension(_,mutable(active),_,_,_,_,D,E), - '$via1_multi_hash_occurrence/4-1'(D,K), - 'chr sbag_member'(H,K), - H=suspension(_,mutable(active),_,_,_,_,_,I,J,_), - I==E, - J==A, - '$via1_multi_hash_rule/2-1'(A,N), - 'chr sbag_member'(L,N), - L=suspension(_,mutable(active),_,_,_,_,_,M), - M=pragma(rule([],_,_,_),_,_,_,_), - \+is_observed(D,E) -> - remove_constraint_internal(F,_,O), - ( O==yes -> - '$delete_from_store_allocation_occurrence/2'(F) - ; - true - ), - activate_constraint(Q,_,C,R), - ( Q==yes -> - '$insert_in_store_least_occurrence/2'(C) - ; - true - ), - P is E+1, - allocation_occurrence(D,P), - ( C=suspension(_,mutable(active),_,mutable(R),_,_,_,_) -> - 'chr update_mutable'(inactive,mutable(active)), - 'least_occurrence/2__0__0'(G,A,B,C) - ; - true - ) - ; - 'least_occurrence/2__0__0'(G,A,B,C) - ). -'least_occurrence/2__0'(A,B,C) :- - allocate_constraint(true,C,least_occurrence(A,B),[A,B]), - 'least_occurrence/2__1'(A,B,C). -'least_occurrence/2__1'(A,[C|D],B) :- - '$via1_multi_hash_rule/2-1'(A,F), - 'chr sbag_member'(E,F), - E=suspension(_,mutable(active),_,_,_,_,_,_), - nb_getval('$chr_store_global_ground_chr_translate:allocation_occurrence/2',J), - 'chr sbag_member'(G,J), - G=suspension(_,mutable(active),_,_,_,_,H,I), - '$via1_multi_hash_occurrence/4-1'(H,O), - 'chr sbag_member'(K,O), - K=suspension(_,mutable(active),_,_,_,_,_,L,M,N), - M=A, - N=C, - I>=L, - \+may_trigger(H), - !, - ( var(B) -> - true - ; - remove_constraint_internal(B,_,P), - ( P==yes -> - '$delete_from_store_least_occurrence/2'(B) - ; - true - ) - ), - least_occurrence(A,D). -'least_occurrence/2__1'(A,[C|D],B) :- - '$via1_multi_hash_rule/2-1'(A,F), - 'chr sbag_member'(E,F), - E=suspension(_,mutable(active),_,_,_,_,_,_), - '$via1_multi_hash_passive/2-1'(A,I), - 'chr sbag_member'(G,I), - G=suspension(_,mutable(active),_,_,_,_,_,H), - H=C, - !, - ( var(B) -> - true - ; - remove_constraint_internal(B,_,J), - ( J==yes -> - '$delete_from_store_least_occurrence/2'(B) - ; - true - ) - ), - least_occurrence(A,D). -'least_occurrence/2__1'(_,_,A) :- - activate_constraint(B,_,A,_), - ( B==yes -> - '$insert_in_store_least_occurrence/2'(A) - ; - true - ). + C=suspension(D,active,A,B), + 'chr gen_id'(D), + nb_getval('$chr_store_multi_hash_chr_translate____least_occurrence___2-12',E), + insert_ht(E,k(A,B),C), + nb_getval('$chr_store_multi_hash_chr_translate____least_occurrence___2-1',F), + insert_ht(F,A,C). is_least_occurrence(A) :- - '$via1_multi_hash_least_occurrence/2-1'(A,D), - 'chr sbag_member'(B,D), - B=suspension(_,mutable(active),_,_,_,_,_,C), - C=[], + nb_getval('$chr_store_multi_hash_chr_translate____least_occurrence___2-12',D), + hash_term(k(A,11910),E), + lookup_ht1(D,E,k(A,[]),C), + 'chr sbag_member'(B,C), + B=suspension(_,active,_,_), !. is_least_occurrence(_) :- fail. +stored_in_guard_lookahead(A,B) :- + nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-12',L), + lookup_ht(L,k(A,B),G), + 'chr sbag_member'(C,G), + C=suspension(_,active,_,_,_,_,D,E,F), + ( + nb_getval('$chr_store_multi_hash_chr_translate____passive___2-12',M), + lookup_ht(M,k(D,E),I), + 'chr sbag_member'(H,I), + H=suspension(_,active,_,_,_), + !, + J is B+1, + stored_in_guard_lookahead(A,J) + ; + !, + F==simplification, + ( is_stored_in_guard(A,D) -> + true + ; + K is B+1, + stored_in_guard_lookahead(A,K) + ) + ). +stored_in_guard_lookahead(_,_) :- + fail. constraint_index(A,B) :- - insert_constraint_internal(_,_,C,true,constraint_index(A,B),[A,B]), - '$insert_in_store_constraint_index/2'(C). + C=suspension(D,active,A,B), + 'chr gen_id'(D), + nb_getval('$chr_store_multi_hash_chr_translate____constraint_index___2-2',E), + insert_ht(E,B,C), + nb_getval('$chr_store_multi_hash_chr_translate____constraint_index___2-1',F), + insert_ht(F,A,C). get_constraint_index(A,B) :- - '$via1_multi_hash_constraint_index/2-1'(A,E), + nb_getval('$chr_store_multi_hash_chr_translate____constraint_index___2-1',F), + lookup_ht(F,A,E), 'chr sbag_member'(C,E), - C=suspension(_,mutable(active),_,_,_,_,_,D), + C=suspension(_,active,_,D), !, B=D. get_constraint_index(_,_) :- fail. +get_indexed_constraint(A,B) :- + nb_getval('$chr_store_multi_hash_chr_translate____constraint_index___2-2',F), + G is abs(A), + lookup_ht1(F,G,A,E), + 'chr sbag_member'(C,E), + C=suspension(_,active,D,_), + !, + B=D. +get_indexed_constraint(_,_) :- + fail. max_constraint_index(A) :- - insert_constraint_internal(_,_,B,true,max_constraint_index(A),[A]), - '$insert_in_store_max_constraint_index/1'(B). + B=suspension(C,active,_,A), + 'chr gen_id'(C), + nb_getval('$chr_store_global_ground_chr_translate____max_constraint_index___1',D), + E=[B|D], + b_setval('$chr_store_global_ground_chr_translate____max_constraint_index___1',E), + ( D=[F|_] -> + setarg(3,F,E) + ; + true + ). get_max_constraint_index(A) :- - nb_getval('$chr_store_global_ground_chr_translate:max_constraint_index/1',D), + nb_getval('$chr_store_global_ground_chr_translate____max_constraint_index___1',D), 'chr sbag_member'(B,D), - B=suspension(_,mutable(active),_,_,_,_,C), + B=suspension(_,active,_,C), !, A=C. get_max_constraint_index(0). -observes(A,B) :- - '$via1_multi_hash_observes/2-1'(A,E), - 'chr sbag_member'(C,E), - C=suspension(_,mutable(active),_,_,_,_,_,D), - D=B, - !. -observes(A,B) :- - '$via1_multi_hash_spawns_observer/2-2'(A,C), - !, - 'observes/2__0__0'(C,A,B). -'observes/2__0__0'([],A,B) :- - 'observes/2__1'(A,B). -'observes/2__0__0'([E|F],A,B) :- - ( E=suspension(_,mutable(active),_,_,_,_,C,D), - D==A -> - observes_indirectly(C,B), - 'observes/2__0__0'(F,A,B) +identifier_size(A) :- + nb_getval('$chr_store_global_ground_chr_translate____identifier_size___1',C), + ( + 'chr sbag_member'(B,C), + B=suspension(_,active,_,_), + ! ; - 'observes/2__0__0'(F,A,B) + !, + identifier_size___1__0__0__2(C,A) ). -observes(A,B) :- - 'observes/2__1'(A,B). -'observes/2__1'(A,B) :- - insert_constraint_internal(_,_,C,true,observes(A,B),[A,B]), - '$insert_in_store_observes/2'(C). -spawns_observer(A,B) :- - 'spawns_observer/2__0'(A,B,_). -'spawns_observer/2__0'(A,B,_) :- - '$via1_multi_hash_spawns_observer/2-1'(A,E), - 'chr sbag_member'(C,E), - C=suspension(_,mutable(active),_,_,_,_,_,D), - D=B, - !. -'spawns_observer/2__0'(A,B,C) :- - '$via1_multi_hash_observes/2-1'(B,D), - !, - allocate_constraint(true,C,spawns_observer(A,B),[A,B]), - 'spawns_observer/2__0__0'(D,A,B,C). -'spawns_observer/2__0__0'([],A,B,C) :- - 'spawns_observer/2__1'(A,B,C). -'spawns_observer/2__0__0'([F|G],A,B,C) :- - ( F=suspension(_,mutable(active),_,_,_,_,D,E), - D==B -> - activate_constraint(H,_,C,I), - ( H==yes -> - '$insert_in_store_spawns_observer/2'(C) +identifier_size___1__0__0__2([],A) :- + identifier_size___1__1(A). +identifier_size___1__0__0__2([B|C],A) :- + ( B=suspension(_,active,_,_) -> + setarg(2,B,removed), + arg(3,B,D), + ( var(D) -> + nb_getval('$chr_store_global_ground_chr_translate____identifier_size___1',E), + E=[_|F], + b_setval('$chr_store_global_ground_chr_translate____identifier_size___1',F), + ( F=[G|_] -> + setarg(3,G,_) + ; + true + ) ; - true + D=[_,_|F], + setarg(2,D,F), + ( F=[G|_] -> + setarg(3,G,D) + ; + true + ) ), - observes_indirectly(A,E), - ( C=suspension(_,mutable(active),_,mutable(I),_,_,_,_) -> - 'chr update_mutable'(inactive,mutable(active)), - 'spawns_observer/2__0__0'(G,A,B,C) - ; - true - ) + identifier_size___1__0__0__2(C,A) ; - 'spawns_observer/2__0__0'(G,A,B,C) + identifier_size___1__0__0__2(C,A) ). -'spawns_observer/2__0'(A,B,C) :- - allocate_constraint(true,C,spawns_observer(A,B),[A,B]), - 'spawns_observer/2__1'(A,B,C). -'spawns_observer/2__1'(A,B,C) :- - '$via1_multi_hash_observes_indirectly/2-1'(B,D), - !, - 'spawns_observer/2__1__0'(D,A,B,C). -'spawns_observer/2__1__0'([],A,B,C) :- - 'spawns_observer/2__2'(A,B,C). -'spawns_observer/2__1__0'([F|G],A,B,C) :- - ( F=suspension(_,mutable(active),_,_,_,_,D,E), - D==B, - J=t(58,C,F), - 'chr novel_production'(C,J), - 'chr novel_production'(F,J) -> - 'chr extend_history'(C,J), - activate_constraint(H,_,C,I), - ( H==yes -> - '$insert_in_store_spawns_observer/2'(C) - ; - true - ), - observes_indirectly(A,E), - ( C=suspension(_,mutable(active),_,mutable(I),_,_,_,_) -> - 'chr update_mutable'(inactive,mutable(active)), - 'spawns_observer/2__1__0'(G,A,B,C) - ; - true - ) - ; - 'spawns_observer/2__1__0'(G,A,B,C) - ). -'spawns_observer/2__1'(A,B,C) :- - 'spawns_observer/2__2'(A,B,C). -'spawns_observer/2__2'(_,_,A) :- - activate_constraint(B,_,A,_), - ( B==yes -> - '$insert_in_store_spawns_observer/2'(A) +identifier_size(A) :- + identifier_size___1__1(A). +identifier_size___1__1(A) :- + B=suspension(C,active,_,A), + 'chr gen_id'(C), + nb_getval('$chr_store_global_ground_chr_translate____identifier_size___1',D), + E=[B|D], + b_setval('$chr_store_global_ground_chr_translate____identifier_size___1',E), + ( D=[F|_] -> + setarg(3,F,E) ; true ). -observes_indirectly(A,B) :- - 'observes_indirectly/2__0'(A,B,_). -'observes_indirectly/2__0'(A,B,_) :- - '$via1_multi_hash_observes_indirectly/2-1'(A,E), - 'chr sbag_member'(C,E), - C=suspension(_,mutable(active),_,_,_,_,_,D), - D=B, - !. -'observes_indirectly/2__0'(A,B,C) :- - '$via1_multi_hash_spawns_observer/2-2'(A,D), - !, - allocate_constraint(true,C,observes_indirectly(A,B),[A,B]), - 'observes_indirectly/2__0__0'(D,A,B,C). -'observes_indirectly/2__0__0'([],A,B,C) :- - 'observes_indirectly/2__1'(A,B,C). -'observes_indirectly/2__0__0'([F|G],A,B,C) :- - ( F=suspension(_,mutable(active),_,_,_,_,D,E), - E==A, - J=t(58,F,C), - 'chr novel_production'(F,J), - 'chr novel_production'(C,J) -> - 'chr extend_history'(C,J), - activate_constraint(H,_,C,I), - ( H==yes -> - '$insert_in_store_observes_indirectly/2'(C) - ; - true - ), - observes_indirectly(D,B), - ( C=suspension(_,mutable(active),_,mutable(I),_,_,_,_) -> - 'chr update_mutable'(inactive,mutable(active)), - 'observes_indirectly/2__0__0'(G,A,B,C) - ; - true - ) - ; - 'observes_indirectly/2__0__0'(G,A,B,C) - ). -'observes_indirectly/2__0'(A,B,C) :- - allocate_constraint(true,C,observes_indirectly(A,B),[A,B]), - 'observes_indirectly/2__1'(A,B,C). -'observes_indirectly/2__1'(_,_,A) :- - activate_constraint(B,_,A,_), - ( B==yes -> - '$insert_in_store_observes_indirectly/2'(A) - ; - true - ). -is_self_observer(A) :- - '$via1_multi_hash_observes_indirectly/2-1'(A,D), +get_identifier_size(A) :- + nb_getval('$chr_store_global_ground_chr_translate____identifier_size___1',D), 'chr sbag_member'(B,D), - B=suspension(_,mutable(active),_,_,_,_,_,C), - C==A, - !. -is_self_observer(_) :- - chr_pp_flag(observation_analysis,off). -generate_indexed_variables_clause(B/C,A) :- - nb_getval('$chr_store_global_ground_chr_translate:constraint_mode/2',G), - 'chr sbag_member'(D,G), - D=suspension(_,mutable(active),_,_,_,_,E,F), - E=B/C, + B=suspension(_,active,_,C), !, - functor(H,B,C), - H=..[_|I], - create_indexed_variables_body(I,F,J,1,B/C,K,L), - ( K==empty -> - M=(J=[]) + A=C. +get_identifier_size(1). +identifier_index(A,B,C) :- + nb_getval('$chr_store_multi_hash_chr_translate____identifier_index___3-12',F), + lookup_ht(F,k(A,B),E), + ( + 'chr sbag_member'(D,E), + D=suspension(_,active,_,_,_), + ! ; - ( L==0 -> - M=term_variables(N,J) + !, + identifier_index___3__0__0__2(E,A,B,C) + ). +identifier_index___3__0__0__2([],A,B,C) :- + identifier_index___3__1(A,B,C). +identifier_index___3__0__0__2([F|G],A,B,C) :- + ( F=suspension(_,active,D,E,_), + D==A, + E==B -> + setarg(2,F,removed), + nb_getval('$chr_store_multi_hash_chr_translate____identifier_index___3-12',H), + delete_ht(H,k(A,B),F), + identifier_index___3__0__0__2(G,A,B,C) + ; + identifier_index___3__0__0__2(G,A,B,C) + ). +identifier_index(A,B,C) :- + identifier_index___3__1(A,B,C). +identifier_index___3__1(A,B,C) :- + D=suspension(E,active,A,B,C), + 'chr gen_id'(E), + nb_getval('$chr_store_multi_hash_chr_translate____identifier_index___3-12',F), + insert_ht(F,k(A,B),D). +get_identifier_index(A,B,C) :- + nb_getval('$chr_store_multi_hash_chr_translate____identifier_index___3-12',G), + lookup_ht(G,k(A,B),F), + 'chr sbag_member'(D,F), + D=suspension(_,active,_,_,E), + !, + C=E. +get_identifier_index(A,B,C) :- + nb_getval('$chr_store_global_ground_chr_translate____identifier_size___1',F), + 'chr sbag_member'(D,F), + D=suspension(_,active,_,E), + !, + setarg(2,D,removed), + arg(3,D,H), + ( var(H) -> + nb_getval('$chr_store_global_ground_chr_translate____identifier_size___1',I), + I=[_|J], + b_setval('$chr_store_global_ground_chr_translate____identifier_size___1',J), + ( J=[K|_] -> + setarg(3,K,_) + ; + true ) ; - K=M + H=[_,_|J], + setarg(2,H,J), + ( J=[K|_] -> + setarg(3,K,H) + ; + true + ) ), - A=('$indexed_variables'(N,J):-N=H,M). -generate_indexed_variables_clause(A,_) :- - format('ERROR: generate_indexed_variables_clause: missing mode info for ~w -',[A]), - fail. -prev_guard_list(A,B,C,D,E,F,G) :- - 'prev_guard_list/7__0'(A,B,C,D,E,F,G,_). -'prev_guard_list/7__0'(A,B,C,D,E,F,G,_) :- - '$via1_multi_hash_rule/2-1'(B,J), - 'chr sbag_member'(H,J), - H=suspension(_,mutable(active),_,_,_,_,_,I), - I=pragma(rule(K,L,M,_),_,_,_,B), - K\==[], - append(K,L,N), - make_head_matchings_explicit(N,O,P), - term_variables(O+C,Q), - strip_attributes(Q,R), - setof(S,chr_translate:head_subset(O,C,S),T), - restore_attributes(Q,R), - T\=[], - !, - compute_derived_info(P,T,O,N,M,F,C,G,U,V), - append(E,U,W), - list2conj(W,X), - conj2list(X,Y), - append(V,G,Z), - list2conj(Z,A1), - conj2list(A1,B1), - C1 is B-1, - prev_guard_list(A,C1,C,D,Y,F,B1). -'prev_guard_list/7__0'(A,B,C,D,E,F,G,_) :- - B>0, - !, - H is B-1, - prev_guard_list(A,H,C,D,E,F,G). -'prev_guard_list/7__0'(A,0,B,C,D,E,F,_) :- - F\==[], - !, - add_type_information_(B,F,G), - conj2list(G,H), - term_variables(B,I), - append([chr_pp_headvariables(I)|H],D,J), - list2conj(J,K), - conj2list(K,L), - prev_guard_list(A,0,B,C,L,E,[]). -'prev_guard_list/7__0'(A,0,B,C,D,E,_,_) :- - '$via1_multi_hash_rule/2-1'(A,H), - 'chr sbag_member'(F,H), - F=suspension(_,mutable(active),_,_,_,_,_,G), - G=pragma(rule(L,M,C,N),I,J,K,A), - C\==true, - append(E,D,O), - simplify_guard(C,N,O,P,Q), - C\==P, - !, - remove_constraint_internal(F,_,R), - ( R==yes -> - '$delete_from_store_rule/2'(F) + G is E+1, + identifier_index(A,B,G), + identifier_size(G), + C=G. +get_identifier_index(A,B,C) :- + identifier_index(A,B,2), + identifier_size(2), + C=2. +type_indexed_identifier_size(A,B) :- + nb_getval('$chr_store_multi_hash_chr_translate____type_indexed_identifier_size___2-1',E), + lookup_ht(E,A,D), + ( + 'chr sbag_member'(C,D), + C=suspension(_,active,_,_), + ! ; - true - ), - rule(A,pragma(rule(L,M,P,Q),I,J,K,A)), - prev_guard_list(A,0,B,P,D,E,[]). -'prev_guard_list/7__0'(A,0,_,B,C,D,_,_) :- - chr_pp_flag(check_impossible_rules,on), - '$via1_multi_hash_rule/2-1'(A,G), + !, + type_indexed_identifier_size___2__0__0__2(D,A,B) + ). +type_indexed_identifier_size___2__0__0__2([],A,B) :- + type_indexed_identifier_size___2__1(A,B). +type_indexed_identifier_size___2__0__0__2([D|E],A,B) :- + ( D=suspension(_,active,C,_), + C==A -> + setarg(2,D,removed), + nb_getval('$chr_store_multi_hash_chr_translate____type_indexed_identifier_size___2-1',F), + delete_ht(F,A,D), + type_indexed_identifier_size___2__0__0__2(E,A,B) + ; + type_indexed_identifier_size___2__0__0__2(E,A,B) + ). +type_indexed_identifier_size(A,B) :- + type_indexed_identifier_size___2__1(A,B). +type_indexed_identifier_size___2__1(A,B) :- + C=suspension(D,active,A,B), + 'chr gen_id'(D), + nb_getval('$chr_store_multi_hash_chr_translate____type_indexed_identifier_size___2-1',E), + insert_ht(E,A,C). +get_type_indexed_identifier_size(A,B) :- + nb_getval('$chr_store_multi_hash_chr_translate____type_indexed_identifier_size___2-1',F), + lookup_ht(F,A,E), + 'chr sbag_member'(C,E), + C=suspension(_,active,_,D), + !, + B=D. +get_type_indexed_identifier_size(_,1). +type_indexed_identifier_index(A,B,C,D) :- + nb_getval('$chr_store_multi_hash_chr_translate____type_indexed_identifier_index___4-23',G), + lookup_ht(G,k(B,C),F), + ( + 'chr sbag_member'(E,F), + E=suspension(_,active,_,_,_,_), + ! + ; + !, + type_indexed_identifier_index___4__0__0__2(F,A,B,C,D) + ). +type_indexed_identifier_index___4__0__0__2([],A,B,C,D) :- + type_indexed_identifier_index___4__1(A,B,C,D). +type_indexed_identifier_index___4__0__0__2([H|I],A,B,C,D) :- + ( H=suspension(_,active,E,F,G,_), + F==B, + G==C -> + setarg(2,H,removed), + nb_getval('$chr_store_multi_hash_chr_translate____type_indexed_identifier_index___4-123',J), + delete_ht(J,k(E,B,C),H), + nb_getval('$chr_store_multi_hash_chr_translate____type_indexed_identifier_index___4-23',K), + delete_ht(K,k(B,C),H), + type_indexed_identifier_index___4__0__0__2(I,A,B,C,D) + ; + type_indexed_identifier_index___4__0__0__2(I,A,B,C,D) + ). +type_indexed_identifier_index(A,B,C,D) :- + type_indexed_identifier_index___4__1(A,B,C,D). +type_indexed_identifier_index___4__1(A,B,C,D) :- + E=suspension(F,active,A,B,C,D), + 'chr gen_id'(F), + nb_getval('$chr_store_multi_hash_chr_translate____type_indexed_identifier_index___4-123',G), + insert_ht(G,k(A,B,C),E), + nb_getval('$chr_store_multi_hash_chr_translate____type_indexed_identifier_index___4-23',H), + insert_ht(H,k(B,C),E). +get_type_indexed_identifier_index(A,B,C,D) :- + nb_getval('$chr_store_multi_hash_chr_translate____type_indexed_identifier_index___4-123',H), + lookup_ht(H,k(A,B,C),G), 'chr sbag_member'(E,G), - E=suspension(_,mutable(active),_,_,_,_,_,F), - F=pragma(rule(_,_,B,_),_,_,_,A), - append(D,C,H), - guard_entailment:entails_guard(H,fail), + E=suspension(_,active,_,_,_,F), !, - format('CHR compiler WARNING: heads will never match in ~@. -',[format_rule(F)]), - format(' `--> In the refined operational semantics (rules applied in textual order) -',[]), - format(' this rule will never fire! (given the declared types/modes) -',[]), - format(' Removing this redundant rule by making all its heads passive... -',[]), - format(' ... next warning is caused by this ... -',[]), - set_all_passive(A). -'prev_guard_list/7__0'(A,0,B,C,D,E,F,G) :- - '$via1_multi_hash_rule/2-1'(A,H), + D=F. +get_type_indexed_identifier_index(A,B,C,D) :- + nb_getval('$chr_store_multi_hash_chr_translate____type_indexed_identifier_size___2-1',J), + lookup_ht(J,A,G), + 'chr sbag_member'(E,G), + E=suspension(_,active,_,F), !, - allocate_constraint(true,G,prev_guard_list(A,0,B,C,D,E,F),[A,0,B,C,D,E,F]), - 'prev_guard_list/7__0__0'(H,A,0,B,C,D,E,F,G). -'prev_guard_list/7__0__0'([],A,B,C,D,E,F,G,H) :- - 'prev_guard_list/7__1'(A,B,C,D,E,F,G,H). -'prev_guard_list/7__0__0'([K|L],A,B,C,D,E,F,G,H) :- - ( K=suspension(_,mutable(active),_,_,_,_,I,J), - I==A, - J=pragma(rule(Q,R,D,S),N,O,P,A), - simplify_heads(F,E,D,S,T,U), - T\==[], - extract_variables(Q,V), - extract_variables(R,W), - extract_variables(C,X), - replace_some_heads(V,W,X,T,Y,Z,D,S,A1), - insert_variables(Y,Q,B1), - insert_variables(Z,R,C1), - append(U,A1,D1), - list2conj(D1,E1), - F1=pragma(rule(B1,C1,D,(E1,S)),N,O,P,A), - ( - Q\==B1 - ; - R\==C1 - ) -> - remove_constraint_internal(K,_,M), - ( M==yes -> - '$delete_from_store_rule/2'(K) - ; - true - ), - activate_constraint(G1,_,H,H1), - ( G1==yes -> - '$insert_in_store_prev_guard_list/7'(H) - ; - true - ), - rule(A,F1), - ( H=suspension(_,mutable(active),_,mutable(H1),_,_,_,_,_,_,_,_,_) -> - 'chr update_mutable'(inactive,mutable(active)), - 'prev_guard_list/7__0__0'(L,A,B,C,D,E,F,G,H) - ; - true - ) - ; - 'prev_guard_list/7__0__0'(L,A,B,C,D,E,F,G,H) - ). -'prev_guard_list/7__0'(A,B,C,D,E,F,G,H) :- - allocate_constraint(true,H,prev_guard_list(A,B,C,D,E,F,G),[A,B,C,D,E,F,G]), - 'prev_guard_list/7__1'(A,B,C,D,E,F,G,H). -'prev_guard_list/7__1'(A,0,B,C,D,E,F,G) :- - '$via1_multi_hash_rule/2-1'(A,H), - !, - 'prev_guard_list/7__1__0'(H,A,0,B,C,D,E,F,G). -'prev_guard_list/7__1__0'([],A,B,C,D,E,F,G,H) :- - 'prev_guard_list/7__2'(A,B,C,D,E,F,G,H). -'prev_guard_list/7__1__0'([K|L],A,B,C,D,E,F,G,H) :- - ( K=suspension(_,mutable(active),_,_,_,_,I,J), - I==A, - P=t(73,H,K), - 'chr novel_production'(H,P), - 'chr novel_production'(K,P), - chr_pp_flag(check_impossible_rules,on), - J=pragma(rule(_,_,D,_),_,_,_,A), - conj2list(D,M), - guard_entailment:entails_guard(M,fail) -> - 'chr extend_history'(H,P), - activate_constraint(N,_,H,O), - ( N==yes -> - '$insert_in_store_prev_guard_list/7'(H) - ; - true - ), - format('CHR compiler WARNING: guard will always fail in ~@. -',[format_rule(J)]), - format(' Removing this redundant rule by making all its heads passive... -',[]), - format(' ... next warning is caused by this ... -',[]), - set_all_passive(A), - ( H=suspension(_,mutable(active),_,mutable(O),_,_,_,_,_,_,_,_,_) -> - 'chr update_mutable'(inactive,mutable(active)), - 'prev_guard_list/7__1__0'(L,A,B,C,D,E,F,G,H) - ; - true - ) - ; - 'prev_guard_list/7__1__0'(L,A,B,C,D,E,F,G,H) - ). -'prev_guard_list/7__1'(A,B,C,D,E,F,G,H) :- - 'prev_guard_list/7__2'(A,B,C,D,E,F,G,H). -'prev_guard_list/7__2'(A,0,B,C,D,E,F,G) :- - nb_getval('$chr_store_global_ground_chr_translate:multiple_occ_constraints_checked/1',H), - !, - 'prev_guard_list/7__2__0'(H,A,0,B,C,D,E,F,G). -'prev_guard_list/7__2__0'([],A,B,C,D,E,F,G,H) :- - 'prev_guard_list/7__3'(A,B,C,D,E,F,G,H). -'prev_guard_list/7__2__0'([J|K],A,B,C,D,E,F,G,H) :- - ( J=suspension(_,mutable(active),_,_,_,_,I), - chr_pp_flag(occurrence_subsumption,on), - '$via1_multi_hash_occurrence/4-3'(A,O), - 'chr sbag_member'(L,O), - L=suspension(_,mutable(active),_,_,_,_,M,N,_,_), - '$via1_multi_hash_occurrence/4-1'(M,W), - 'chr sbag_member'(S,W), - S=suspension(_,mutable(active),_,_,_,_,_,T,U,V), - S\==L, - U==A, - T - remove_constraint_internal(J,_,X), - ( X==yes -> - '$delete_from_store_multiple_occ_constraints_checked/1'(J) - ; - true - ), - activate_constraint(Z,_,H,A1), - ( Z==yes -> - '$insert_in_store_prev_guard_list/7'(H) - ; - true - ), - first_occ_in_rule(A,M,T,V), - multiple_occ_constraints_checked([M|I]), - ( H=suspension(_,mutable(active),_,mutable(A1),_,_,_,_,_,_,_,_,_) -> - 'chr update_mutable'(inactive,mutable(active)), - 'prev_guard_list/7__2__0'(K,A,B,C,D,E,F,G,H) - ; - true - ) - ; - 'prev_guard_list/7__2__0'(K,A,B,C,D,E,F,G,H) - ). -'prev_guard_list/7__2'(A,B,C,D,E,F,G,H) :- - 'prev_guard_list/7__3'(A,B,C,D,E,F,G,H). -'prev_guard_list/7__3'(_,0,_,_,_,_,_,A) :- - nb_getval('$chr_store_global_ground_chr_translate:multiple_occ_constraints_checked/1',C), + setarg(2,E,removed), + nb_getval('$chr_store_multi_hash_chr_translate____type_indexed_identifier_size___2-1',I), + delete_ht(I,A,E), + H is F+1, + type_indexed_identifier_index(A,B,C,H), + type_indexed_identifier_size(A,H), + D=H. +get_type_indexed_identifier_index(A,B,C,D) :- + type_indexed_identifier_index(A,B,C,2), + type_indexed_identifier_size(A,2), + D=2. +no_history(A) :- + B=suspension(C,active,A), + 'chr gen_id'(C), + nb_getval('$chr_store_multi_hash_chr_translate____no_history___1-1',D), + insert_ht(D,A,B). +has_no_history(A) :- + nb_getval('$chr_store_multi_hash_chr_translate____no_history___1-1',D), + E is abs(A), + lookup_ht1(D,E,A,C), 'chr sbag_member'(B,C), - B=suspension(_,mutable(active),_,_,_,_,_), + B=suspension(_,active,_), + !. +has_no_history(_) :- + fail. +history(A,B,C) :- + history___3__0(A,B,C,_). +history___3__0(A,B,C,D) :- + nb_getval('$chr_store_multi_hash_chr_translate____history___3-1',G), + lookup_ht(G,A,E), !, - remove_constraint_internal(B,_,D), - ( D==yes -> - '$delete_from_store_multiple_occ_constraints_checked/1'(B) + D=suspension(F,not_stored_yet,t,A,B,C), + 'chr gen_id'(F), + history___3__0__0__1(E,A,B,C,D). +history___3__0__0__1([],B,C,D,A) :- + history___3__1(B,C,D,A). +history___3__0__0__1([F|G],B,C,D,A) :- + ( F=suspension(_,active,_,E,_,_), + E==B, + H=t(93,A,F), + '$novel_production'(A,H), + '$novel_production'(F,H) -> + '$extend_history'(A,H), + arg(2,A,I), + setarg(2,A,active), + ( I==not_stored_yet -> + ( '$chr_store_constants_chr_translate____history___3___[3]'(D,J) -> + nb_getval(J,K), + b_setval(J,[A|K]) + ; + true + ), + nb_getval('$chr_store_multi_hash_chr_translate____history___3-2',L), + insert_ht(L,C,A), + nb_getval('$chr_store_multi_hash_chr_translate____history___3-1',M), + insert_ht(M,B,A) + ; + true + ), + chr_error(syntax,'Only one pragma history allowed per rule (rule number ~w) +',[B]), + ( A=suspension(_,active,_,_,_,_) -> + setarg(2,A,inactive), + history___3__0__0__1(G,B,C,D,A) + ; + true + ) + ; + history___3__0__0__1(G,B,C,D,A) + ). +history___3__0(A,B,C,D) :- + D=suspension(E,not_stored_yet,t,A,B,C), + 'chr gen_id'(E), + history___3__1(A,B,C,D). +history___3__1(A,B,C,D) :- + nb_getval('$chr_store_multi_hash_chr_translate____history___3-1',F), + lookup_ht(F,A,E), + !, + history___3__1__0__2(E,A,B,C,D). +history___3__1__0__2([],B,C,D,A) :- + history___3__2(B,C,D,A). +history___3__1__0__2([F|G],B,C,D,A) :- + ( F=suspension(_,active,_,E,_,_), + E==B, + H=t(93,F,A), + '$novel_production'(F,H), + '$novel_production'(A,H) -> + '$extend_history'(A,H), + arg(2,A,I), + setarg(2,A,active), + ( I==not_stored_yet -> + ( '$chr_store_constants_chr_translate____history___3___[3]'(D,J) -> + nb_getval(J,K), + b_setval(J,[A|K]) + ; + true + ), + nb_getval('$chr_store_multi_hash_chr_translate____history___3-2',L), + insert_ht(L,C,A), + nb_getval('$chr_store_multi_hash_chr_translate____history___3-1',M), + insert_ht(M,B,A) + ; + true + ), + chr_error(syntax,'Only one pragma history allowed per rule (rule number ~w) +',[B]), + ( A=suspension(_,active,_,_,_,_) -> + setarg(2,A,inactive), + history___3__1__0__2(G,B,C,D,A) + ; + true + ) + ; + history___3__1__0__2(G,B,C,D,A) + ). +history___3__1(A,B,C,D) :- + history___3__2(A,B,C,D). +history___3__2(A,B,C,D) :- + nb_getval('$chr_store_multi_hash_chr_translate____history___3-2',F), + lookup_ht(F,B,E), + !, + history___3__2__0__3(E,A,B,C,D). +history___3__2__0__3([],B,C,D,A) :- + history___3__3(B,C,D,A). +history___3__2__0__3([H|I],B,C,D,A) :- + ( H=suspension(_,active,_,E,F,G), + F==C, + L=t(94,A,H), + '$novel_production'(A,L), + '$novel_production'(H,L) -> + '$extend_history'(A,L), + arg(2,A,M), + setarg(2,A,active), + ( M==not_stored_yet -> + ( '$chr_store_constants_chr_translate____history___3___[3]'(D,N) -> + nb_getval(N,O), + b_setval(N,[A|O]) + ; + true + ), + nb_getval('$chr_store_multi_hash_chr_translate____history___3-2',P), + insert_ht(P,C,A), + nb_getval('$chr_store_multi_hash_chr_translate____history___3-1',Q), + insert_ht(Q,B,A) + ; + true + ), + length(D,J), + length(G,K), + ( J\==K -> + chr_error(syntax,'The history named ~w does not always range over an equal amount of occurrences. +',[C]) + ; + test_named_history_id_pairs(B,D,E,G) + ), + ( A=suspension(_,active,_,_,_,_) -> + setarg(2,A,inactive), + history___3__2__0__3(I,B,C,D,A) + ; + true + ) + ; + history___3__2__0__3(I,B,C,D,A) + ). +history___3__2(A,B,C,D) :- + history___3__3(A,B,C,D). +history___3__3(A,B,C,D) :- + nb_getval('$chr_store_multi_hash_chr_translate____history___3-2',F), + lookup_ht(F,B,E), + !, + history___3__3__0__4(E,A,B,C,D). +history___3__3__0__4([],B,C,D,A) :- + history___3__4(B,C,D,A). +history___3__3__0__4([H|I],B,C,D,A) :- + ( H=suspension(_,active,_,E,F,G), + F==C, + L=t(94,H,A), + '$novel_production'(H,L), + '$novel_production'(A,L) -> + '$extend_history'(A,L), + arg(2,A,M), + setarg(2,A,active), + ( M==not_stored_yet -> + ( '$chr_store_constants_chr_translate____history___3___[3]'(D,N) -> + nb_getval(N,O), + b_setval(N,[A|O]) + ; + true + ), + nb_getval('$chr_store_multi_hash_chr_translate____history___3-2',P), + insert_ht(P,C,A), + nb_getval('$chr_store_multi_hash_chr_translate____history___3-1',Q), + insert_ht(Q,B,A) + ; + true + ), + length(G,J), + length(D,K), + ( J\==K -> + chr_error(syntax,'The history named ~w does not always range over an equal amount of occurrences. +',[C]) + ; + test_named_history_id_pairs(E,G,B,D) + ), + ( A=suspension(_,active,_,_,_,_) -> + setarg(2,A,inactive), + history___3__3__0__4(I,B,C,D,A) + ; + true + ) + ; + history___3__3__0__4(I,B,C,D,A) + ). +history___3__3(A,B,C,D) :- + history___3__4(A,B,C,D). +history___3__4(A,B,[],C) :- + nb_getval('$chr_store_global_ground_chr_translate____find_empty_named_histories___0',D), + !, + history___3__4__0__6(D,A,B,[],C). +history___3__4__0__6([],B,C,D,A) :- + history___3__5(B,C,D,A). +history___3__4__0__6([E|F],B,C,D,A) :- + ( E=suspension(_,active,_,_), + G=t(140,E,A), + '$novel_production'(E,G), + '$novel_production'(A,G) -> + '$extend_history'(A,G), + arg(2,A,H), + setarg(2,A,active), + ( H==not_stored_yet -> + ( '$chr_store_constants_chr_translate____history___3___[3]'(D,I) -> + nb_getval(I,J), + b_setval(I,[A|J]) + ; + true + ), + nb_getval('$chr_store_multi_hash_chr_translate____history___3-2',K), + insert_ht(K,C,A), + nb_getval('$chr_store_multi_hash_chr_translate____history___3-1',L), + insert_ht(L,B,A) + ; + true + ), + generate_empty_named_history_initialisation(C), + ( A=suspension(_,active,_,_,_,_) -> + setarg(2,A,inactive), + history___3__4__0__6(F,B,C,D,A) + ; + true + ) + ; + history___3__4__0__6(F,B,C,D,A) + ). +history___3__4(A,B,C,D) :- + history___3__5(A,B,C,D). +history___3__5(A,B,C,D) :- + arg(2,D,E), + setarg(2,D,active), + ( E==not_stored_yet -> + ( '$chr_store_constants_chr_translate____history___3___[3]'(C,F) -> + nb_getval(F,G), + b_setval(F,[D|G]) + ; + true + ), + nb_getval('$chr_store_multi_hash_chr_translate____history___3-2',H), + insert_ht(H,B,D), + nb_getval('$chr_store_multi_hash_chr_translate____history___3-1',I), + insert_ht(I,A,D) ; true + ). +named_history(A,B,C) :- + ground(A), + nb_getval('$chr_store_multi_hash_chr_translate____history___3-1',H), + lookup_ht(H,A,G), + 'chr sbag_member'(D,G), + D=suspension(_,active,_,_,E,F), + !, + B=E, + C=F. +named_history(_,_,_) :- + fail. +test_named_history_id_pair(A,B,C,D) :- + nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-34',L), + lookup_ht(L,k(A,B),G), + 'chr sbag_member'(E,G), + E=suspension(_,active,_,_,F,_,_,_,_), + nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-34',K), + lookup_ht(K,k(C,D),J), + 'chr sbag_member'(H,J), + H=suspension(_,active,_,_,I,_,_,_,_), + H\==E, + I=F, + !. +test_named_history_id_pair(A,_,B,_) :- + chr_error(syntax,'Occurrences of shared history in rules number ~w and ~w do not correspond +',[B,A]). +indexing_spec(A,B) :- + nb_getval('$chr_store_multi_hash_chr_translate____indexing_spec___2-1',H), + lookup_ht(H,A,E), + 'chr sbag_member'(C,E), + C=suspension(_,active,_,D), + !, + setarg(2,C,removed), + nb_getval('$chr_store_multi_hash_chr_translate____indexing_spec___2-1',G), + delete_ht(G,A,C), + append(B,D,F), + indexing_spec(A,F). +indexing_spec(A,B) :- + C=suspension(D,active,A,B), + 'chr gen_id'(D), + nb_getval('$chr_store_multi_hash_chr_translate____indexing_spec___2-1',E), + insert_ht(E,A,C). +get_indexing_spec(A,B) :- + nb_getval('$chr_store_multi_hash_chr_translate____indexing_spec___2-1',F), + lookup_ht(F,A,E), + 'chr sbag_member'(C,E), + C=suspension(_,active,_,D), + !, + B=D. +get_indexing_spec(_,[]). +observation_analysis(A) :- + observation_analysis___1__0(A,_). +observation_analysis___1__0(A,B) :- + nb_getval('$chr_store_global_ground_chr_translate____rule___2',C), + !, + B=suspension(D,not_stored_yet,_,A), + 'chr gen_id'(D), + observation_analysis___1__0__0__1(C,A,B). +observation_analysis___1__0__0__1([],B,A) :- + observation_analysis___1__1(B,A). +observation_analysis___1__0__0__1([E|F],B,A) :- + ( E=suspension(_,active,_,_,C,D) -> + D=pragma(rule(_,_,G,H),_,_,_,_), + ( chr_pp_flag(store_in_guards,on) -> + observation_analysis(C,G,guard,B) + ; + true + ), + observation_analysis(C,H,body,B), + observation_analysis___1__0__0__1(F,B,A) + ; + observation_analysis___1__0__0__1(F,B,A) + ). +observation_analysis___1__0(A,B) :- + B=suspension(C,not_stored_yet,_,A), + 'chr gen_id'(C), + observation_analysis___1__1(A,B). +observation_analysis___1__1(_,A) :- + ( var(A) -> + true + ; + arg(2,A,F), + setarg(2,A,removed), + ( F==not_stored_yet -> + true + ; + arg(3,A,B), + ( var(B) -> + nb_getval('$chr_store_global_ground_chr_translate____observation_analysis___1',C), + C=[_|D], + b_setval('$chr_store_global_ground_chr_translate____observation_analysis___1',D), + ( D=[E|_] -> + setarg(3,E,_) + ; + true + ) + ; + B=[_,_|D], + setarg(2,B,D), + ( D=[E|_] -> + setarg(3,E,B) + ; + true + ) + ) + ) + ). +spawns(A,B,C) :- + spawns___3__0(A,B,C,_). +spawns___3__0(A,B,C,_) :- + nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-123',F), + lookup_ht(F,k(A,B,C),E), + 'chr sbag_member'(D,E), + D=suspension(_,active,_,_,_,_,_), + !. +spawns___3__0(A,body,B,_) :- + nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-123',E), + hash_term(k(A,1612897,B),F), + lookup_ht1(E,F,k(A,guard,B),D), + 'chr sbag_member'(C,D), + C=suspension(_,active,_,_,_,_,_), + !. +spawns___3__0(A,guard,B,C) :- + nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-123',E), + hash_term(k(A,1640016,B),F), + lookup_ht1(E,F,k(A,body,B),D), + !, + spawns___3__0__0__4(D,A,guard,B,C). +spawns___3__0__0__4([],B,C,D,A) :- + spawns___3__1(B,C,D,A). +spawns___3__0__0__4([H|I],A,B,C,D) :- + ( H=suspension(_,active,_,_,E,F,G), + E==A, + F=body, + G==C -> + setarg(2,H,removed), + arg(4,H,J), + ( var(J) -> + nb_getval('$chr_store_global_ground_chr_translate____spawns___3',K), + K=[_|L], + b_setval('$chr_store_global_ground_chr_translate____spawns___3',L), + ( L=[M|_] -> + setarg(4,M,_) + ; + true + ) + ; + J=[_,_|L], + setarg(2,J,L), + ( L=[M|_] -> + setarg(4,M,J) + ; + true + ) + ), + nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-12',N), + delete_ht(N,k(A,body),H), + nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-1',O), + delete_ht(O,A,H), + nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-3',P), + delete_ht(P,C,H), + nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-123',Q), + delete_ht(Q,k(A,body,C),H), + spawns___3__0__0__4(I,A,B,C,D) + ; + spawns___3__0__0__4(I,A,B,C,D) + ). +spawns___3__0(A,B,C,D) :- + spawns___3__1(A,B,C,D). +spawns___3__1(A,B,C,D) :- + nb_getval('$chr_store_multi_hash_chr_translate____spawns_all___2-12',P), + lookup_ht(P,k(A,B),F), + 'chr sbag_member'(E,F), + E=suspension(_,active,_,_), + !, + ( var(D) -> + true + ; + arg(2,D,O), + setarg(2,D,removed), + ( O==not_stored_yet -> + true + ; + arg(4,D,G), + ( var(G) -> + nb_getval('$chr_store_global_ground_chr_translate____spawns___3',H), + H=[_|I], + b_setval('$chr_store_global_ground_chr_translate____spawns___3',I), + ( I=[J|_] -> + setarg(4,J,_) + ; + true + ) + ; + G=[_,_|I], + setarg(2,G,I), + ( I=[J|_] -> + setarg(4,J,G) + ; + true + ) + ), + nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-12',K), + delete_ht(K,k(A,B),D), + nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-1',L), + delete_ht(L,A,D), + nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-3',M), + delete_ht(M,C,D), + nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-123',N), + delete_ht(N,k(A,B,C),D) + ) + ). +spawns___3__1(A,body,B,C) :- + nb_getval('$chr_store_multi_hash_chr_translate____spawns_all___2-12',O), + hash_term(k(A,1612897),P), + lookup_ht1(O,P,k(A,guard),E), + 'chr sbag_member'(D,E), + D=suspension(_,active,_,_), + !, + ( var(C) -> + true + ; + arg(2,C,N), + setarg(2,C,removed), + ( N==not_stored_yet -> + true + ; + arg(4,C,F), + ( var(F) -> + nb_getval('$chr_store_global_ground_chr_translate____spawns___3',G), + G=[_|H], + b_setval('$chr_store_global_ground_chr_translate____spawns___3',H), + ( H=[I|_] -> + setarg(4,I,_) + ; + true + ) + ; + F=[_,_|H], + setarg(2,F,H), + ( H=[I|_] -> + setarg(4,I,F) + ; + true + ) + ), + nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-12',J), + delete_ht(J,k(A,body),C), + nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-1',K), + delete_ht(K,A,C), + nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-3',L), + delete_ht(L,B,C), + nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-123',M), + delete_ht(M,k(A,body,B),C) + ) + ). +spawns___3__1(A,B,C,D) :- + nb_getval('$chr_store_multi_hash_chr_translate____spawns_all_triggers___2-12',P), + lookup_ht(P,k(A,B),F), + 'chr sbag_member'(E,F), + E=suspension(_,active,_,_,_,_), + may_trigger(C), + !, + ( var(D) -> + true + ; + arg(2,D,O), + setarg(2,D,removed), + ( O==not_stored_yet -> + true + ; + arg(4,D,G), + ( var(G) -> + nb_getval('$chr_store_global_ground_chr_translate____spawns___3',H), + H=[_|I], + b_setval('$chr_store_global_ground_chr_translate____spawns___3',I), + ( I=[J|_] -> + setarg(4,J,_) + ; + true + ) + ; + G=[_,_|I], + setarg(2,G,I), + ( I=[J|_] -> + setarg(4,J,G) + ; + true + ) + ), + nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-12',K), + delete_ht(K,k(A,B),D), + nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-1',L), + delete_ht(L,A,D), + nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-3',M), + delete_ht(M,C,D), + nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-123',N), + delete_ht(N,k(A,B,C),D) + ) + ). +spawns___3__1(A,body,B,C) :- + nb_getval('$chr_store_multi_hash_chr_translate____spawns_all_triggers___2-12',O), + hash_term(k(A,1612897),P), + lookup_ht1(O,P,k(A,guard),E), + 'chr sbag_member'(D,E), + D=suspension(_,active,_,_,_,_), + may_trigger(B), + !, + ( var(C) -> + true + ; + arg(2,C,N), + setarg(2,C,removed), + ( N==not_stored_yet -> + true + ; + arg(4,C,F), + ( var(F) -> + nb_getval('$chr_store_global_ground_chr_translate____spawns___3',G), + G=[_|H], + b_setval('$chr_store_global_ground_chr_translate____spawns___3',H), + ( H=[I|_] -> + setarg(4,I,_) + ; + true + ) + ; + F=[_,_|H], + setarg(2,F,H), + ( H=[I|_] -> + setarg(4,I,F) + ; + true + ) + ), + nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-12',J), + delete_ht(J,k(A,body),C), + nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-1',K), + delete_ht(K,A,C), + nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-3',L), + delete_ht(L,B,C), + nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-123',M), + delete_ht(M,k(A,body,B),C) + ) + ). +spawns___3__1(A,B,C,D) :- + nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-1',N), + lookup_ht(N,C,H), + ( + 'chr sbag_member'(E,H), + E=suspension(_,active,_,_,_,_,F,G,_), + ( + nb_getval('$chr_store_multi_hash_chr_translate____spawns_all___2-1',H1), + lookup_ht(H1,F,J), + 'chr sbag_member'(I,J), + I=suspension(_,active,_,_), + \+is_passive(F,G), + !, + ( var(D) -> + true + ; + arg(2,D,G1), + setarg(2,D,removed), + ( G1==not_stored_yet -> + true + ; + arg(4,D,Y), + ( var(Y) -> + nb_getval('$chr_store_global_ground_chr_translate____spawns___3',Z), + Z=[_|A1], + b_setval('$chr_store_global_ground_chr_translate____spawns___3',A1), + ( A1=[B1|_] -> + setarg(4,B1,_) + ; + true + ) + ; + Y=[_,_|A1], + setarg(2,Y,A1), + ( A1=[B1|_] -> + setarg(4,B1,Y) + ; + true + ) + ), + nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-12',C1), + delete_ht(C1,k(A,B),D), + nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-1',D1), + delete_ht(D1,A,D), + nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-3',E1), + delete_ht(E1,C,D), + nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-123',F1), + delete_ht(F1,k(A,B,C),D) + ) + ), + spawns_all(A,B) + ; + nb_getval('$chr_store_multi_hash_chr_translate____spawns_all_triggers___2-1',X), + lookup_ht(X,F,L), + 'chr sbag_member'(K,L), + K=suspension(_,active,_,_,_,_), + may_trigger(C), + \+is_passive(F,G), + !, + ( var(D) -> + true + ; + arg(2,D,W), + setarg(2,D,removed), + ( W==not_stored_yet -> + true + ; + arg(4,D,O), + ( var(O) -> + nb_getval('$chr_store_global_ground_chr_translate____spawns___3',P), + P=[_|Q], + b_setval('$chr_store_global_ground_chr_translate____spawns___3',Q), + ( Q=[R|_] -> + setarg(4,R,_) + ; + true + ) + ; + O=[_,_|Q], + setarg(2,O,Q), + ( Q=[R|_] -> + setarg(4,R,O) + ; + true + ) + ), + nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-12',S), + delete_ht(S,k(A,B),D), + nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-1',T), + delete_ht(T,A,D), + nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-3',U), + delete_ht(U,C,D), + nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-123',V), + delete_ht(V,k(A,B,C),D) + ) + ), + spawns_all_triggers(A,B) + ) + ; + !, + D=suspension(M,not_stored_yet,t,_,A,B,C), + 'chr gen_id'(M), + spawns___3__1__0__11(H,A,B,C,D) + ). +spawns___3__1__0__11([],B,C,D,A) :- + spawns___3__2(B,C,D,A). +spawns___3__1__0__11([H|J],B,C,D,A) :- + ( H=suspension(_,active,_,_,E,_,F,G,_), + E==D, + nb_getval('$chr_store_multi_hash_chr_translate____spawns_all_triggers___2-1',K), + lookup_ht(K,F,I) -> + spawns___3__1__1__11(I,F,G,H,J,B,C,D,A) + ; + spawns___3__1__0__11(J,B,C,D,A) + ). +spawns___3__1__1__11([],_,_,_,A,C,D,E,B) :- + spawns___3__1__0__11(A,C,D,E,B). +spawns___3__1__1__11([J|K],G,H,A,B,D,E,F,C) :- + ( J=suspension(_,active,_,_,I,_), + I==G, + L=t(121,J,A,C), + '$novel_production'(J,L), + '$novel_production'(C,L), + \+may_trigger(F), + \+is_passive(G,H) -> + '$extend_history'(C,L), + arg(2,C,M), + setarg(2,C,active), + ( M==not_stored_yet -> + nb_getval('$chr_store_global_ground_chr_translate____spawns___3',N), + O=[C|N], + b_setval('$chr_store_global_ground_chr_translate____spawns___3',O), + ( N=[P|_] -> + setarg(4,P,O) + ; + true + ), + nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-12',Q), + insert_ht(Q,k(D,E),C), + nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-1',R), + insert_ht(R,D,C), + nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-3',S), + insert_ht(S,F,C), + nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-123',T), + insert_ht(T,k(D,E,F),C) + ; + true + ), + spawns_all_triggers(D,E), + ( C=suspension(_,active,_,_,_,_,_) -> + setarg(2,C,inactive), + spawns___3__1__1__11(K,G,H,A,B,D,E,F,C) + ; + true + ) + ; + spawns___3__1__1__11(K,G,H,A,B,D,E,F,C) + ). +spawns___3__1(A,B,C,D) :- + D=suspension(E,not_stored_yet,t,_,A,B,C), + 'chr gen_id'(E), + spawns___3__2(A,B,C,D). +spawns___3__2(A,B,C,D) :- + nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-3',F), + lookup_ht1(F,A,A,E), + !, + spawns___3__2__0__12(E,A,B,C,D). +spawns___3__2__0__12([],B,C,D,A) :- + spawns___3__3(B,C,D,A). +spawns___3__2__0__12([H|J],B,C,D,A) :- + ( H=suspension(_,active,_,_,E,_,F,G,_), + F==B, + nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-3',K), + lookup_ht(K,E,I) -> + spawns___3__2__1__12(I,E,G,H,J,B,C,D,A) + ; + spawns___3__2__0__12(J,B,C,D,A) + ). +spawns___3__2__1__12([],_,_,_,A,C,D,E,B) :- + spawns___3__2__0__12(A,C,D,E,B). +spawns___3__2__1__12([L|M],G,H,A,B,D,E,F,C) :- + ( L=suspension(_,active,_,_,I,J,K), + K==G, + N=t(122,C,A,L), + '$novel_production'(C,N), + '$novel_production'(L,N), + I\==D, + G\==F, + \+is_passive(D,H) -> + '$extend_history'(C,N), + arg(2,C,O), + setarg(2,C,active), + ( O==not_stored_yet -> + nb_getval('$chr_store_global_ground_chr_translate____spawns___3',P), + Q=[C|P], + b_setval('$chr_store_global_ground_chr_translate____spawns___3',Q), + ( P=[R|_] -> + setarg(4,R,Q) + ; + true + ), + nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-12',S), + insert_ht(S,k(D,E),C), + nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-1',T), + insert_ht(T,D,C), + nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-3',U), + insert_ht(U,F,C), + nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-123',V), + insert_ht(V,k(D,E,F),C) + ; + true + ), + spawns(I,J,F), + ( C=suspension(_,active,_,_,_,_,_) -> + setarg(2,C,inactive), + spawns___3__2__1__12(M,G,H,A,B,D,E,F,C) + ; + true + ) + ; + spawns___3__2__1__12(M,G,H,A,B,D,E,F,C) + ). +spawns___3__2(A,B,C,D) :- + spawns___3__3(A,B,C,D). +spawns___3__3(A,B,C,D) :- + nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-1',F), + lookup_ht(F,C,E), + !, + spawns___3__3__0__13(E,A,B,C,D). +spawns___3__3__0__13([],B,C,D,A) :- + spawns___3__4(B,C,D,A). +spawns___3__3__0__13([H|J],B,C,D,A) :- + ( H=suspension(_,active,_,_,E,_,F,G,_), + E==D, + nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-1',K), + lookup_ht(K,F,I) -> + spawns___3__3__1__13(I,F,G,H,J,B,C,D,A) + ; + spawns___3__3__0__13(J,B,C,D,A) + ). +spawns___3__3__1__13([],_,_,_,A,C,D,E,B) :- + spawns___3__3__0__13(A,C,D,E,B). +spawns___3__3__1__13([K|L],G,H,A,B,D,E,F,C) :- + ( K=suspension(_,active,_,_,I,_,J), + I==G, + M=t(122,K,A,C), + '$novel_production'(K,M), + '$novel_production'(C,M), + D\==G, + F\==J, + \+is_passive(G,H) -> + '$extend_history'(C,M), + arg(2,C,N), + setarg(2,C,active), + ( N==not_stored_yet -> + nb_getval('$chr_store_global_ground_chr_translate____spawns___3',O), + P=[C|O], + b_setval('$chr_store_global_ground_chr_translate____spawns___3',P), + ( O=[Q|_] -> + setarg(4,Q,P) + ; + true + ), + nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-12',R), + insert_ht(R,k(D,E),C), + nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-1',S), + insert_ht(S,D,C), + nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-3',T), + insert_ht(T,F,C), + nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-123',U), + insert_ht(U,k(D,E,F),C) + ; + true + ), + spawns(D,E,J), + ( C=suspension(_,active,_,_,_,_,_) -> + setarg(2,C,inactive), + spawns___3__3__1__13(L,G,H,A,B,D,E,F,C) + ; + true + ) + ; + spawns___3__3__1__13(L,G,H,A,B,D,E,F,C) + ). +spawns___3__3(A,B,C,D) :- + spawns___3__4(A,B,C,D). +spawns___3__4(A,B,C,D) :- + nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-3',F), + lookup_ht1(F,A,A,E), + !, + spawns___3__4__0__14(E,A,B,C,D). +spawns___3__4__0__14([],B,C,D,A) :- + spawns___3__5(B,C,D,A). +spawns___3__4__0__14([H|J],B,C,D,A) :- + ( H=suspension(_,active,_,_,E,_,F,G,_), + F==B, + nb_getval('$chr_store_global_ground_chr_translate____spawns_all_triggers___2',I) -> + spawns___3__4__1__14(I,E,G,H,J,B,C,D,A) + ; + spawns___3__4__0__14(J,B,C,D,A) + ). +spawns___3__4__1__14([],_,_,_,A,C,D,E,B) :- + spawns___3__4__0__14(A,C,D,E,B). +spawns___3__4__1__14([K|L],G,H,A,B,D,E,F,C) :- + ( K=suspension(_,active,_,_,I,J), + M=t(123,C,A,K), + '$novel_production'(C,M), + '$novel_production'(K,M), + \+is_passive(D,H), + may_trigger(G), + \+may_trigger(F) -> + '$extend_history'(C,M), + arg(2,C,N), + setarg(2,C,active), + ( N==not_stored_yet -> + nb_getval('$chr_store_global_ground_chr_translate____spawns___3',O), + P=[C|O], + b_setval('$chr_store_global_ground_chr_translate____spawns___3',P), + ( O=[Q|_] -> + setarg(4,Q,P) + ; + true + ), + nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-12',R), + insert_ht(R,k(D,E),C), + nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-1',S), + insert_ht(S,D,C), + nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-3',T), + insert_ht(T,F,C), + nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-123',U), + insert_ht(U,k(D,E,F),C) + ; + true + ), + spawns(I,J,F), + ( C=suspension(_,active,_,_,_,_,_) -> + setarg(2,C,inactive), + spawns___3__4__1__14(L,G,H,A,B,D,E,F,C) + ; + true + ) + ; + spawns___3__4__1__14(L,G,H,A,B,D,E,F,C) + ). +spawns___3__4(A,B,C,D) :- + spawns___3__5(A,B,C,D). +spawns___3__5(A,B,C,D) :- + arg(2,D,E), + setarg(2,D,active), + ( E==not_stored_yet -> + nb_getval('$chr_store_global_ground_chr_translate____spawns___3',F), + G=[D|F], + b_setval('$chr_store_global_ground_chr_translate____spawns___3',G), + ( F=[H|_] -> + setarg(4,H,G) + ; + true + ), + nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-12',I), + insert_ht(I,k(A,B),D), + nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-1',J), + insert_ht(J,A,D), + nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-3',K), + insert_ht(K,C,D), + nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-123',L), + insert_ht(L,k(A,B,C),D) + ; + true + ). +spawns_all(A,B) :- + spawns_all___2__0(A,B,_). +spawns_all___2__0(A,B,_) :- + nb_getval('$chr_store_multi_hash_chr_translate____spawns_all___2-12',E), + lookup_ht(E,k(A,B),D), + 'chr sbag_member'(C,D), + C=suspension(_,active,_,_), + !. +spawns_all___2__0(A,body,_) :- + nb_getval('$chr_store_multi_hash_chr_translate____spawns_all___2-12',D), + hash_term(k(A,1612897),E), + lookup_ht1(D,E,k(A,guard),C), + 'chr sbag_member'(B,C), + B=suspension(_,active,_,_), + !. +spawns_all___2__0(A,guard,B) :- + nb_getval('$chr_store_multi_hash_chr_translate____spawns_all___2-12',D), + hash_term(k(A,1640016),E), + lookup_ht1(D,E,k(A,body),C), + !, + spawns_all___2__0__0__4(C,A,guard,B). +spawns_all___2__0__0__4([],B,C,A) :- + spawns_all___2__1(B,C,A). +spawns_all___2__0__0__4([F|G],A,B,C) :- + ( F=suspension(_,active,D,E), + D==A, + E=body -> + setarg(2,F,removed), + nb_getval('$chr_store_multi_hash_chr_translate____spawns_all___2-1',H), + delete_ht(H,A,F), + nb_getval('$chr_store_multi_hash_chr_translate____spawns_all___2-12',I), + delete_ht(I,k(A,body),F), + spawns_all___2__0__0__4(G,A,B,C) + ; + spawns_all___2__0__0__4(G,A,B,C) + ). +spawns_all___2__0(A,B,C) :- + spawns_all___2__1(A,B,C). +spawns_all___2__1(A,B,C) :- + nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-12',E), + lookup_ht(E,k(A,B),D), + !, + spawns_all___2__1__0__5(D,A,B,C). +spawns_all___2__1__0__5([],B,C,A) :- + spawns_all___2__2(B,C,A). +spawns_all___2__1__0__5([G|H],A,B,C) :- + ( G=suspension(_,active,_,_,D,E,F), + D==A, + E==B -> + setarg(2,G,removed), + arg(4,G,I), + ( var(I) -> + nb_getval('$chr_store_global_ground_chr_translate____spawns___3',J), + J=[_|K], + b_setval('$chr_store_global_ground_chr_translate____spawns___3',K), + ( K=[L|_] -> + setarg(4,L,_) + ; + true + ) + ; + I=[_,_|K], + setarg(2,I,K), + ( K=[L|_] -> + setarg(4,L,I) + ; + true + ) + ), + nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-12',M), + delete_ht(M,k(A,B),G), + nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-1',N), + delete_ht(N,A,G), + nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-3',O), + delete_ht(O,F,G), + nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-123',P), + delete_ht(P,k(A,B,F),G), + spawns_all___2__1__0__5(H,A,B,C) + ; + spawns_all___2__1__0__5(H,A,B,C) + ). +spawns_all___2__1(A,B,C) :- + spawns_all___2__2(A,B,C). +spawns_all___2__2(A,guard,B) :- + nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-12',D), + hash_term(k(A,1640016),E), + lookup_ht1(D,E,k(A,body),C), + !, + spawns_all___2__2__0__6(C,A,guard,B). +spawns_all___2__2__0__6([],B,C,A) :- + spawns_all___2__3(B,C,A). +spawns_all___2__2__0__6([G|H],A,B,C) :- + ( G=suspension(_,active,_,_,D,E,F), + D==A, + E=body -> + setarg(2,G,removed), + arg(4,G,I), + ( var(I) -> + nb_getval('$chr_store_global_ground_chr_translate____spawns___3',J), + J=[_|K], + b_setval('$chr_store_global_ground_chr_translate____spawns___3',K), + ( K=[L|_] -> + setarg(4,L,_) + ; + true + ) + ; + I=[_,_|K], + setarg(2,I,K), + ( K=[L|_] -> + setarg(4,L,I) + ; + true + ) + ), + nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-12',M), + delete_ht(M,k(A,body),G), + nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-1',N), + delete_ht(N,A,G), + nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-3',O), + delete_ht(O,F,G), + nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-123',P), + delete_ht(P,k(A,body,F),G), + spawns_all___2__2__0__6(H,A,B,C) + ; + spawns_all___2__2__0__6(H,A,B,C) + ). +spawns_all___2__2(A,B,C) :- + spawns_all___2__3(A,B,C). +spawns_all___2__3(A,B,C) :- + nb_getval('$chr_store_multi_hash_chr_translate____spawns_all_triggers___2-12',E), + lookup_ht(E,k(A,B),D), + !, + spawns_all___2__3__0__7(D,A,B,C). +spawns_all___2__3__0__7([],B,C,A) :- + spawns_all___2__4(B,C,A). +spawns_all___2__3__0__7([F|G],A,B,C) :- + ( F=suspension(_,active,_,_,D,E), + D==A, + E==B -> + setarg(2,F,removed), + arg(4,F,H), + ( var(H) -> + nb_getval('$chr_store_global_ground_chr_translate____spawns_all_triggers___2',I), + I=[_|J], + b_setval('$chr_store_global_ground_chr_translate____spawns_all_triggers___2',J), + ( J=[K|_] -> + setarg(4,K,_) + ; + true + ) + ; + H=[_,_|J], + setarg(2,H,J), + ( J=[K|_] -> + setarg(4,K,H) + ; + true + ) + ), + nb_getval('$chr_store_multi_hash_chr_translate____spawns_all_triggers___2-1',L), + delete_ht(L,A,F), + nb_getval('$chr_store_multi_hash_chr_translate____spawns_all_triggers___2-12',M), + delete_ht(M,k(A,B),F), + spawns_all___2__3__0__7(G,A,B,C) + ; + spawns_all___2__3__0__7(G,A,B,C) + ). +spawns_all___2__3(A,B,C) :- + spawns_all___2__4(A,B,C). +spawns_all___2__4(A,guard,B) :- + nb_getval('$chr_store_multi_hash_chr_translate____spawns_all_triggers___2-12',D), + hash_term(k(A,1640016),E), + lookup_ht1(D,E,k(A,body),C), + !, + spawns_all___2__4__0__8(C,A,guard,B). +spawns_all___2__4__0__8([],B,C,A) :- + spawns_all___2__5(B,C,A). +spawns_all___2__4__0__8([F|G],A,B,C) :- + ( F=suspension(_,active,_,_,D,E), + D==A, + E=body -> + setarg(2,F,removed), + arg(4,F,H), + ( var(H) -> + nb_getval('$chr_store_global_ground_chr_translate____spawns_all_triggers___2',I), + I=[_|J], + b_setval('$chr_store_global_ground_chr_translate____spawns_all_triggers___2',J), + ( J=[K|_] -> + setarg(4,K,_) + ; + true + ) + ; + H=[_,_|J], + setarg(2,H,J), + ( J=[K|_] -> + setarg(4,K,H) + ; + true + ) + ), + nb_getval('$chr_store_multi_hash_chr_translate____spawns_all_triggers___2-1',L), + delete_ht(L,A,F), + nb_getval('$chr_store_multi_hash_chr_translate____spawns_all_triggers___2-12',M), + delete_ht(M,k(A,body),F), + spawns_all___2__4__0__8(G,A,B,C) + ; + spawns_all___2__4__0__8(G,A,B,C) + ). +spawns_all___2__4(A,B,C) :- + spawns_all___2__5(A,B,C). +spawns_all___2__5(A,B,C) :- + nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-3',F), + lookup_ht1(F,A,A,D), + !, + C=suspension(E,not_stored_yet,A,B), + 'chr gen_id'(E), + spawns_all___2__5__0__9(D,A,B,C). +spawns_all___2__5__0__9([],B,C,A) :- + spawns_all___2__6(B,C,A). +spawns_all___2__5__0__9([G|I],B,C,A) :- + ( G=suspension(_,active,_,_,D,_,E,F,_), + E==B, + nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-3',J), + lookup_ht(J,D,H) -> + spawns_all___2__5__1__9(H,D,F,G,I,B,C,A) + ; + spawns_all___2__5__0__9(I,B,C,A) + ). +spawns_all___2__5__1__9([],_,_,_,A,C,D,B) :- + spawns_all___2__5__0__9(A,C,D,B). +spawns_all___2__5__1__9([K|L],E,F,A,G,B,C,D) :- + ( K=suspension(_,active,_,_,H,I,J), + J==E, + \+is_passive(B,F) -> + setarg(2,K,removed), + arg(4,K,P), + ( var(P) -> + nb_getval('$chr_store_global_ground_chr_translate____spawns___3',Q), + Q=[_|R], + b_setval('$chr_store_global_ground_chr_translate____spawns___3',R), + ( R=[S|_] -> + setarg(4,S,_) + ; + true + ) + ; + P=[_,_|R], + setarg(2,P,R), + ( R=[S|_] -> + setarg(4,S,P) + ; + true + ) + ), + nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-12',T), + delete_ht(T,k(H,I),K), + nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-1',U), + delete_ht(U,H,K), + nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-3',V), + delete_ht(V,E,K), + nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-123',W), + delete_ht(W,k(H,I,E),K), + arg(2,D,M), + setarg(2,D,active), + ( M==not_stored_yet -> + nb_getval('$chr_store_multi_hash_chr_translate____spawns_all___2-1',N), + insert_ht(N,B,D), + nb_getval('$chr_store_multi_hash_chr_translate____spawns_all___2-12',O), + insert_ht(O,k(B,C),D) + ; + true + ), + spawns_all(H,I), + ( D=suspension(_,active,_,_) -> + setarg(2,D,inactive), + spawns_all___2__5__1__9(L,E,F,A,G,B,C,D) + ; + true + ) + ; + spawns_all___2__5__1__9(L,E,F,A,G,B,C,D) + ). +spawns_all___2__5(A,B,C) :- + C=suspension(D,not_stored_yet,A,B), + 'chr gen_id'(D), + spawns_all___2__6(A,B,C). +spawns_all___2__6(A,B,C) :- + nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-3',E), + lookup_ht1(E,A,A,D), + !, + spawns_all___2__6__0__10(D,A,B,C). +spawns_all___2__6__0__10([],B,C,A) :- + spawns_all___2__7(B,C,A). +spawns_all___2__6__0__10([G|H],B,C,A) :- + ( G=suspension(_,active,_,_,D,_,E,F,_), + E==B, + \+ \+spawns_all_triggers_implies_spawns_all, + \+is_passive(B,F), + may_trigger(D) -> + arg(2,A,I), + setarg(2,A,active), + ( I==not_stored_yet -> + nb_getval('$chr_store_multi_hash_chr_translate____spawns_all___2-1',J), + insert_ht(J,B,A), + nb_getval('$chr_store_multi_hash_chr_translate____spawns_all___2-12',K), + insert_ht(K,k(B,C),A) + ; + true + ), + spawns_all_triggers_implies_spawns_all, + ( A=suspension(_,active,_,_) -> + setarg(2,A,inactive), + spawns_all___2__6__0__10(H,B,C,A) + ; + true + ) + ; + spawns_all___2__6__0__10(H,B,C,A) + ). +spawns_all___2__6(A,B,C) :- + spawns_all___2__7(A,B,C). +spawns_all___2__7(A,B,C) :- + arg(2,C,D), + setarg(2,C,active), + ( D==not_stored_yet -> + nb_getval('$chr_store_multi_hash_chr_translate____spawns_all___2-1',E), + insert_ht(E,A,C), + nb_getval('$chr_store_multi_hash_chr_translate____spawns_all___2-12',F), + insert_ht(F,k(A,B),C) + ; + true + ). +spawns_all_triggers(A,B) :- + spawns_all_triggers___2__0(A,B,_). +spawns_all_triggers___2__0(A,B,_) :- + nb_getval('$chr_store_multi_hash_chr_translate____spawns_all_triggers___2-12',E), + lookup_ht(E,k(A,B),D), + 'chr sbag_member'(C,D), + C=suspension(_,active,_,_,_,_), + !. +spawns_all_triggers___2__0(A,body,_) :- + nb_getval('$chr_store_multi_hash_chr_translate____spawns_all_triggers___2-12',D), + hash_term(k(A,1612897),E), + lookup_ht1(D,E,k(A,guard),C), + 'chr sbag_member'(B,C), + B=suspension(_,active,_,_,_,_), + !. +spawns_all_triggers___2__0(A,guard,B) :- + nb_getval('$chr_store_multi_hash_chr_translate____spawns_all_triggers___2-12',D), + hash_term(k(A,1640016),E), + lookup_ht1(D,E,k(A,body),C), + !, + spawns_all_triggers___2__0__0__4(C,A,guard,B). +spawns_all_triggers___2__0__0__4([],B,C,A) :- + spawns_all_triggers___2__1(B,C,A). +spawns_all_triggers___2__0__0__4([F|G],A,B,C) :- + ( F=suspension(_,active,_,_,D,E), + D==A, + E=body -> + setarg(2,F,removed), + arg(4,F,H), + ( var(H) -> + nb_getval('$chr_store_global_ground_chr_translate____spawns_all_triggers___2',I), + I=[_|J], + b_setval('$chr_store_global_ground_chr_translate____spawns_all_triggers___2',J), + ( J=[K|_] -> + setarg(4,K,_) + ; + true + ) + ; + H=[_,_|J], + setarg(2,H,J), + ( J=[K|_] -> + setarg(4,K,H) + ; + true + ) + ), + nb_getval('$chr_store_multi_hash_chr_translate____spawns_all_triggers___2-1',L), + delete_ht(L,A,F), + nb_getval('$chr_store_multi_hash_chr_translate____spawns_all_triggers___2-12',M), + delete_ht(M,k(A,body),F), + spawns_all_triggers___2__0__0__4(G,A,B,C) + ; + spawns_all_triggers___2__0__0__4(G,A,B,C) + ). +spawns_all_triggers___2__0(A,B,C) :- + spawns_all_triggers___2__1(A,B,C). +spawns_all_triggers___2__1(A,B,C) :- + nb_getval('$chr_store_multi_hash_chr_translate____spawns_all___2-12',M), + lookup_ht(M,k(A,B),E), + 'chr sbag_member'(D,E), + D=suspension(_,active,_,_), + !, + ( var(C) -> + true + ; + arg(2,C,L), + setarg(2,C,removed), + ( L==not_stored_yet -> + true + ; + arg(4,C,F), + ( var(F) -> + nb_getval('$chr_store_global_ground_chr_translate____spawns_all_triggers___2',G), + G=[_|H], + b_setval('$chr_store_global_ground_chr_translate____spawns_all_triggers___2',H), + ( H=[I|_] -> + setarg(4,I,_) + ; + true + ) + ; + F=[_,_|H], + setarg(2,F,H), + ( H=[I|_] -> + setarg(4,I,F) + ; + true + ) + ), + nb_getval('$chr_store_multi_hash_chr_translate____spawns_all_triggers___2-1',J), + delete_ht(J,A,C), + nb_getval('$chr_store_multi_hash_chr_translate____spawns_all_triggers___2-12',K), + delete_ht(K,k(A,B),C) + ) + ). +spawns_all_triggers___2__1(A,body,B) :- + nb_getval('$chr_store_multi_hash_chr_translate____spawns_all___2-12',L), + hash_term(k(A,1612897),M), + lookup_ht1(L,M,k(A,guard),D), + 'chr sbag_member'(C,D), + C=suspension(_,active,_,_), + !, + ( var(B) -> + true + ; + arg(2,B,K), + setarg(2,B,removed), + ( K==not_stored_yet -> + true + ; + arg(4,B,E), + ( var(E) -> + nb_getval('$chr_store_global_ground_chr_translate____spawns_all_triggers___2',F), + F=[_|G], + b_setval('$chr_store_global_ground_chr_translate____spawns_all_triggers___2',G), + ( G=[H|_] -> + setarg(4,H,_) + ; + true + ) + ; + E=[_,_|G], + setarg(2,E,G), + ( G=[H|_] -> + setarg(4,H,E) + ; + true + ) + ), + nb_getval('$chr_store_multi_hash_chr_translate____spawns_all_triggers___2-1',I), + delete_ht(I,A,B), + nb_getval('$chr_store_multi_hash_chr_translate____spawns_all_triggers___2-12',J), + delete_ht(J,k(A,body),B) + ) + ). +spawns_all_triggers___2__1(A,B,C) :- + nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-12',E), + lookup_ht(E,k(A,B),D), + !, + spawns_all_triggers___2__1__0__7(D,A,B,C). +spawns_all_triggers___2__1__0__7([],B,C,A) :- + spawns_all_triggers___2__2(B,C,A). +spawns_all_triggers___2__1__0__7([G|H],A,B,C) :- + ( G=suspension(_,active,_,_,D,E,F), + D==A, + E==B, + may_trigger(F) -> + setarg(2,G,removed), + arg(4,G,I), + ( var(I) -> + nb_getval('$chr_store_global_ground_chr_translate____spawns___3',J), + J=[_|K], + b_setval('$chr_store_global_ground_chr_translate____spawns___3',K), + ( K=[L|_] -> + setarg(4,L,_) + ; + true + ) + ; + I=[_,_|K], + setarg(2,I,K), + ( K=[L|_] -> + setarg(4,L,I) + ; + true + ) + ), + nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-12',M), + delete_ht(M,k(A,B),G), + nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-1',N), + delete_ht(N,A,G), + nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-3',O), + delete_ht(O,F,G), + nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-123',P), + delete_ht(P,k(A,B,F),G), + spawns_all_triggers___2__1__0__7(H,A,B,C) + ; + spawns_all_triggers___2__1__0__7(H,A,B,C) + ). +spawns_all_triggers___2__1(A,B,C) :- + spawns_all_triggers___2__2(A,B,C). +spawns_all_triggers___2__2(A,guard,B) :- + nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-12',D), + hash_term(k(A,1640016),E), + lookup_ht1(D,E,k(A,body),C), + !, + spawns_all_triggers___2__2__0__8(C,A,guard,B). +spawns_all_triggers___2__2__0__8([],B,C,A) :- + spawns_all_triggers___2__3(B,C,A). +spawns_all_triggers___2__2__0__8([G|H],A,B,C) :- + ( G=suspension(_,active,_,_,D,E,F), + D==A, + E=body, + may_trigger(F) -> + setarg(2,G,removed), + arg(4,G,I), + ( var(I) -> + nb_getval('$chr_store_global_ground_chr_translate____spawns___3',J), + J=[_|K], + b_setval('$chr_store_global_ground_chr_translate____spawns___3',K), + ( K=[L|_] -> + setarg(4,L,_) + ; + true + ) + ; + I=[_,_|K], + setarg(2,I,K), + ( K=[L|_] -> + setarg(4,L,I) + ; + true + ) + ), + nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-12',M), + delete_ht(M,k(A,body),G), + nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-1',N), + delete_ht(N,A,G), + nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-3',O), + delete_ht(O,F,G), + nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-123',P), + delete_ht(P,k(A,body,F),G), + spawns_all_triggers___2__2__0__8(H,A,B,C) + ; + spawns_all_triggers___2__2__0__8(H,A,B,C) + ). +spawns_all_triggers___2__2(A,B,C) :- + spawns_all_triggers___2__3(A,B,C). +spawns_all_triggers___2__3(A,B,C) :- + nb_getval('$chr_store_global_ground_chr_translate____spawns_all_triggers_implies_spawns_all___0',E), + 'chr sbag_member'(D,E), + D=suspension(_,active,_), + !, + ( var(C) -> + true + ; + arg(2,C,L), + setarg(2,C,removed), + ( L==not_stored_yet -> + true + ; + arg(4,C,F), + ( var(F) -> + nb_getval('$chr_store_global_ground_chr_translate____spawns_all_triggers___2',G), + G=[_|H], + b_setval('$chr_store_global_ground_chr_translate____spawns_all_triggers___2',H), + ( H=[I|_] -> + setarg(4,I,_) + ; + true + ) + ; + F=[_,_|H], + setarg(2,F,H), + ( H=[I|_] -> + setarg(4,I,F) + ; + true + ) + ), + nb_getval('$chr_store_multi_hash_chr_translate____spawns_all_triggers___2-1',J), + delete_ht(J,A,C), + nb_getval('$chr_store_multi_hash_chr_translate____spawns_all_triggers___2-12',K), + delete_ht(K,k(A,B),C) + ) + ), + spawns_all(A,B). +spawns_all_triggers___2__3(A,B,C) :- + nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-3',F), + lookup_ht1(F,A,A,D), + !, + C=suspension(E,not_stored_yet,t,_,A,B), + 'chr gen_id'(E), + spawns_all_triggers___2__3__0__10(D,A,B,C). +spawns_all_triggers___2__3__0__10([],B,C,A) :- + spawns_all_triggers___2__4(B,C,A). +spawns_all_triggers___2__3__0__10([G|I],B,C,A) :- + ( G=suspension(_,active,_,_,D,_,E,F,_), + E==B, + nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-3',J), + lookup_ht(J,D,H) -> + spawns_all_triggers___2__3__1__10(H,D,F,G,I,B,C,A) + ; + spawns_all_triggers___2__3__0__10(I,B,C,A) + ). +spawns_all_triggers___2__3__1__10([],_,_,_,A,C,D,B) :- + spawns_all_triggers___2__3__0__10(A,C,D,B). +spawns_all_triggers___2__3__1__10([K|L],E,F,A,G,B,C,D) :- + ( K=suspension(_,active,_,_,H,I,J), + J==E, + may_trigger(E), + \+is_passive(B,F) -> + setarg(2,K,removed), + arg(4,K,S), + ( var(S) -> + nb_getval('$chr_store_global_ground_chr_translate____spawns___3',T), + T=[_|U], + b_setval('$chr_store_global_ground_chr_translate____spawns___3',U), + ( U=[V|_] -> + setarg(4,V,_) + ; + true + ) + ; + S=[_,_|U], + setarg(2,S,U), + ( U=[V|_] -> + setarg(4,V,S) + ; + true + ) + ), + nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-12',W), + delete_ht(W,k(H,I),K), + nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-1',X), + delete_ht(X,H,K), + nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-3',Y), + delete_ht(Y,E,K), + nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-123',Z), + delete_ht(Z,k(H,I,E),K), + arg(2,D,M), + setarg(2,D,active), + ( M==not_stored_yet -> + nb_getval('$chr_store_global_ground_chr_translate____spawns_all_triggers___2',N), + O=[D|N], + b_setval('$chr_store_global_ground_chr_translate____spawns_all_triggers___2',O), + ( N=[P|_] -> + setarg(4,P,O) + ; + true + ), + nb_getval('$chr_store_multi_hash_chr_translate____spawns_all_triggers___2-1',Q), + insert_ht(Q,B,D), + nb_getval('$chr_store_multi_hash_chr_translate____spawns_all_triggers___2-12',R), + insert_ht(R,k(B,C),D) + ; + true + ), + spawns_all_triggers(H,I), + ( D=suspension(_,active,_,_,_,_) -> + setarg(2,D,inactive), + spawns_all_triggers___2__3__1__10(L,E,F,A,G,B,C,D) + ; + true + ) + ; + spawns_all_triggers___2__3__1__10(L,E,F,A,G,B,C,D) + ). +spawns_all_triggers___2__3(A,B,C) :- + C=suspension(D,not_stored_yet,t,_,A,B), + 'chr gen_id'(D), + spawns_all_triggers___2__4(A,B,C). +spawns_all_triggers___2__4(A,B,C) :- + nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-3',E), + lookup_ht1(E,A,A,D), + !, + spawns_all_triggers___2__4__0__11(D,A,B,C). +spawns_all_triggers___2__4__0__11([],B,C,A) :- + spawns_all_triggers___2__5(B,C,A). +spawns_all_triggers___2__4__0__11([G|I],B,C,A) :- + ( G=suspension(_,active,_,_,D,_,E,F,_), + E==B, + nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-3',J), + lookup_ht(J,D,H) -> + spawns_all_triggers___2__4__1__11(H,D,F,G,I,B,C,A) + ; + spawns_all_triggers___2__4__0__11(I,B,C,A) + ). +spawns_all_triggers___2__4__1__11([],_,_,_,A,C,D,B) :- + spawns_all_triggers___2__4__0__11(A,C,D,B). +spawns_all_triggers___2__4__1__11([K|L],F,G,A,B,D,E,C) :- + ( K=suspension(_,active,_,_,H,I,J), + J==F, + M=t(121,C,A,K), + '$novel_production'(C,M), + '$novel_production'(K,M), + \+may_trigger(F), + \+is_passive(D,G) -> + '$extend_history'(C,M), + arg(2,C,N), + setarg(2,C,active), + ( N==not_stored_yet -> + nb_getval('$chr_store_global_ground_chr_translate____spawns_all_triggers___2',O), + P=[C|O], + b_setval('$chr_store_global_ground_chr_translate____spawns_all_triggers___2',P), + ( O=[Q|_] -> + setarg(4,Q,P) + ; + true + ), + nb_getval('$chr_store_multi_hash_chr_translate____spawns_all_triggers___2-1',R), + insert_ht(R,D,C), + nb_getval('$chr_store_multi_hash_chr_translate____spawns_all_triggers___2-12',S), + insert_ht(S,k(D,E),C) + ; + true + ), + spawns_all_triggers(H,I), + ( C=suspension(_,active,_,_,_,_) -> + setarg(2,C,inactive), + spawns_all_triggers___2__4__1__11(L,F,G,A,B,D,E,C) + ; + true + ) + ; + spawns_all_triggers___2__4__1__11(L,F,G,A,B,D,E,C) + ). +spawns_all_triggers___2__4(A,B,C) :- + spawns_all_triggers___2__5(A,B,C). +spawns_all_triggers___2__5(A,B,C) :- + nb_getval('$chr_store_global_ground_chr_translate____spawns___3',D), + !, + spawns_all_triggers___2__5__0__12(D,A,B,C). +spawns_all_triggers___2__5__0__12([],B,C,A) :- + spawns_all_triggers___2__6(B,C,A). +spawns_all_triggers___2__5__0__12([F|H],B,C,A) :- + ( F=suspension(_,active,_,_,D,_,E), + nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-3',I), + lookup_ht1(I,D,D,G) -> + spawns_all_triggers___2__5__1__12(G,D,E,F,H,B,C,A) + ; + spawns_all_triggers___2__5__0__12(H,B,C,A) + ). +spawns_all_triggers___2__5__1__12([],_,_,_,A,C,D,B) :- + spawns_all_triggers___2__5__0__12(A,C,D,B). +spawns_all_triggers___2__5__1__12([K|L],F,G,A,B,D,E,C) :- + ( K=suspension(_,active,_,_,H,_,I,J,_), + I==F, + M=t(123,A,K,C), + '$novel_production'(A,M), + '$novel_production'(C,M), + \+is_passive(F,J), + may_trigger(H), + \+may_trigger(G) -> + '$extend_history'(C,M), + arg(2,C,N), + setarg(2,C,active), + ( N==not_stored_yet -> + nb_getval('$chr_store_global_ground_chr_translate____spawns_all_triggers___2',O), + P=[C|O], + b_setval('$chr_store_global_ground_chr_translate____spawns_all_triggers___2',P), + ( O=[Q|_] -> + setarg(4,Q,P) + ; + true + ), + nb_getval('$chr_store_multi_hash_chr_translate____spawns_all_triggers___2-1',R), + insert_ht(R,D,C), + nb_getval('$chr_store_multi_hash_chr_translate____spawns_all_triggers___2-12',S), + insert_ht(S,k(D,E),C) + ; + true + ), + spawns(D,E,G), + ( C=suspension(_,active,_,_,_,_) -> + setarg(2,C,inactive), + spawns_all_triggers___2__5__1__12(L,F,G,A,B,D,E,C) + ; + true + ) + ; + spawns_all_triggers___2__5__1__12(L,F,G,A,B,D,E,C) + ). +spawns_all_triggers___2__5(A,B,C) :- + spawns_all_triggers___2__6(A,B,C). +spawns_all_triggers___2__6(A,B,C) :- + arg(2,C,D), + setarg(2,C,active), + ( D==not_stored_yet -> + nb_getval('$chr_store_global_ground_chr_translate____spawns_all_triggers___2',E), + F=[C|E], + b_setval('$chr_store_global_ground_chr_translate____spawns_all_triggers___2',F), + ( E=[G|_] -> + setarg(4,G,F) + ; + true + ), + nb_getval('$chr_store_multi_hash_chr_translate____spawns_all_triggers___2-1',H), + insert_ht(H,A,C), + nb_getval('$chr_store_multi_hash_chr_translate____spawns_all_triggers___2-12',I), + insert_ht(I,k(A,B),C) + ; + true + ). +spawns_all_triggers_implies_spawns_all :- + spawns_all_triggers_implies_spawns_all___0__0(_). +spawns_all_triggers_implies_spawns_all___0__0(_) :- + nb_getval('$chr_store_global_ground_chr_translate____spawns_all_triggers_implies_spawns_all___0',B), + 'chr sbag_member'(A,B), + A=suspension(_,active,_), + !, + setarg(2,A,removed), + arg(3,A,C), + ( var(C) -> + nb_getval('$chr_store_global_ground_chr_translate____spawns_all_triggers_implies_spawns_all___0',D), + D=[_|E], + b_setval('$chr_store_global_ground_chr_translate____spawns_all_triggers_implies_spawns_all___0',E), + ( E=[F|_] -> + setarg(3,F,_) + ; + true + ) + ; + C=[_,_|E], + setarg(2,C,E), + ( E=[F|_] -> + setarg(3,F,C) + ; + true + ) + ), + fail. +spawns_all_triggers_implies_spawns_all___0__0(A) :- + nb_getval('$chr_store_global_ground_chr_translate____spawns_all_triggers___2',B), + !, + A=suspension(C,not_stored_yet,_), + 'chr gen_id'(C), + spawns_all_triggers_implies_spawns_all___0__0__0__3(B,A). +spawns_all_triggers_implies_spawns_all___0__0__0__3([],A) :- + spawns_all_triggers_implies_spawns_all___0__1(A). +spawns_all_triggers_implies_spawns_all___0__0__0__3([D|E],A) :- + ( D=suspension(_,active,_,_,B,C) -> + setarg(2,D,removed), + arg(4,D,J), + ( var(J) -> + nb_getval('$chr_store_global_ground_chr_translate____spawns_all_triggers___2',K), + K=[_|L], + b_setval('$chr_store_global_ground_chr_translate____spawns_all_triggers___2',L), + ( L=[M|_] -> + setarg(4,M,_) + ; + true + ) + ; + J=[_,_|L], + setarg(2,J,L), + ( L=[M|_] -> + setarg(4,M,J) + ; + true + ) + ), + nb_getval('$chr_store_multi_hash_chr_translate____spawns_all_triggers___2-1',N), + delete_ht(N,B,D), + nb_getval('$chr_store_multi_hash_chr_translate____spawns_all_triggers___2-12',O), + delete_ht(O,k(B,C),D), + arg(2,A,F), + setarg(2,A,active), + ( F==not_stored_yet -> + nb_getval('$chr_store_global_ground_chr_translate____spawns_all_triggers_implies_spawns_all___0',G), + H=[A|G], + b_setval('$chr_store_global_ground_chr_translate____spawns_all_triggers_implies_spawns_all___0',H), + ( G=[I|_] -> + setarg(3,I,H) + ; + true + ) + ; + true + ), + spawns_all(B,C), + ( A=suspension(_,active,_) -> + setarg(2,A,inactive), + spawns_all_triggers_implies_spawns_all___0__0__0__3(E,A) + ; + true + ) + ; + spawns_all_triggers_implies_spawns_all___0__0__0__3(E,A) + ). +spawns_all_triggers_implies_spawns_all___0__0(A) :- + A=suspension(B,not_stored_yet,_), + 'chr gen_id'(B), + spawns_all_triggers_implies_spawns_all___0__1(A). +spawns_all_triggers_implies_spawns_all___0__1(A) :- + arg(2,A,B), + setarg(2,A,active), + ( B==not_stored_yet -> + nb_getval('$chr_store_global_ground_chr_translate____spawns_all_triggers_implies_spawns_all___0',C), + D=[A|C], + b_setval('$chr_store_global_ground_chr_translate____spawns_all_triggers_implies_spawns_all___0',D), + ( C=[E|_] -> + setarg(3,E,D) + ; + true + ) + ; + true + ). +all_spawned(A,B) :- + nb_getval('$chr_store_multi_hash_chr_translate____spawns_all___2-12',G), + ( + hash_term(k(A,1612897),H), + lookup_ht1(G,H,k(A,guard),D), + 'chr sbag_member'(C,D), + C=suspension(_,active,_,_), + ! + ; + lookup_ht(G,k(A,B),F), + 'chr sbag_member'(E,F), + E=suspension(_,active,_,_), + ! + ). +all_spawned(_,_) :- + fail. +is_observed(A,B,C) :- + nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-12',G), + lookup_ht(G,k(A,B),F), + 'chr sbag_member'(D,F), + D=suspension(_,active,_,_,_,_,E,_,_), + !, + do_is_observed(A,E,C). +is_observed(_,_,_) :- + fail. +do_is_observed(A,B,C) :- + var(C), + !, + do_is_observed(A,B). +do_is_observed(A,B,C) :- + nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-1',S), + lookup_ht(S,A,F), + 'chr sbag_member'(D,F), + D=suspension(_,active,_,_,_,_,E,_,_), + nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-3',R), + lookup_ht1(R,E,E,J), + 'chr sbag_member'(G,J), + G=suspension(_,active,_,_,H,_,_,I,_), + G\==D, + ground(C), + ( + ( + nb_getval('$chr_store_multi_hash_chr_translate____spawns_all___2-12',U), + lookup_ht(U,k(B,C),L), + 'chr sbag_member'(K,L), + K=suspension(_,active,_,_), + \+is_passive(E,I), + ! + ; + nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-123',T), + lookup_ht(T,k(B,C,H),N), + 'chr sbag_member'(M,N), + M=suspension(_,active,_,_,_,_,_), + \+is_passive(E,I), + ! + ) + ; + nb_getval('$chr_store_multi_hash_chr_translate____spawns_all_triggers___2-12',Q), + lookup_ht(Q,k(B,C),P), + 'chr sbag_member'(O,P), + O=suspension(_,active,_,_,_,_), + \+is_passive(E,I), + may_trigger(H), + ! + ). +do_is_observed(_,_,_) :- + chr_pp_flag(observation_analysis,off). +do_is_observed(A,B) :- + nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-1',S), + lookup_ht(S,A,E), + 'chr sbag_member'(C,E), + C=suspension(_,active,_,_,_,_,D,_,_), + nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-3',R), + lookup_ht1(R,D,D,I), + 'chr sbag_member'(F,I), + F=suspension(_,active,_,_,G,_,_,H,_), + F\==C, + ( + ( + nb_getval('$chr_store_multi_hash_chr_translate____spawns_all___2-1',U), + lookup_ht(U,B,K), + 'chr sbag_member'(J,K), + J=suspension(_,active,_,_), + \+is_passive(D,H), + ! + ; + nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-1',T), + lookup_ht(T,B,N), + 'chr sbag_member'(L,N), + L=suspension(_,active,_,_,_,_,M), + M=G, + \+is_passive(D,H), + ! + ) + ; + nb_getval('$chr_store_multi_hash_chr_translate____spawns_all_triggers___2-1',Q), + lookup_ht(Q,B,P), + 'chr sbag_member'(O,P), + O=suspension(_,active,_,_,_,_), + \+is_passive(D,H), + may_trigger(G), + ! + ). +do_is_observed(_,_) :- + chr_pp_flag(observation_analysis,off). +generate_indexed_variables_body(D/E,A,B,C) :- + nb_getval('$chr_store_multi_hash_chr_translate____constraint_mode___2-1',N), + lookup_ht(N,D/E,H), + 'chr sbag_member'(F,H), + F=suspension(_,active,_,_,_,G), + !, + get_indexing_spec(D/E,I), + ( chr_pp_flag(term_indexing,on) -> + spectermvars(I,A,D,E,B,C) + ; + get_constraint_type_det(D/E,J), + create_indexed_variables_body(A,G,J,C,1,D/E,K,L), + ( K==empty -> + B=true, + C=[] + ; + ( L==0 -> + ( A=[M] -> + true + ; + M=..[term|A] + ), + B=term_variables(M,C) + ) + ; + K=B + ) + ). +generate_indexed_variables_body(A,_,_,_) :- + chr_error(internal,'generate_indexed_variables_body: missing mode info for ~w. +',[A]). +empty_named_history_initialisations(A,B) :- + C=suspension(D,active,_,A,B), + 'chr gen_id'(D), + nb_getval('$chr_store_global_ground_chr_translate____empty_named_history_initialisations___2',E), + F=[C|E], + b_setval('$chr_store_global_ground_chr_translate____empty_named_history_initialisations___2',F), + ( E=[G|_] -> + setarg(3,G,F) + ; + true + ). +generate_empty_named_history_initialisation(A) :- + generate_empty_named_history_initialisation___1__0(A,_). +generate_empty_named_history_initialisation___1__0(A,B) :- + ( 'chr newvia_1'(A,F) -> + get_attr(F,chr_translate,G), + G=v(_,E,_,_,_,_,_,_,_,_,_) + ; + nb_getval('$chr_store_global_list_chr_translate____generate_empty_named_history_initialisation___1',E) + ), + 'chr sbag_member'(C,E), + C=suspension(_,active,_,_,D), + D==A, + !, + ( var(B) -> + true + ; + B=suspension(_,M,_,_,N), + setarg(2,B,removed), + ( M==not_stored_yet -> + H=[] + ; + term_variables(N,H), + arg(4,B,I), + ( var(I) -> + nb_getval('$chr_store_global_list_chr_translate____generate_empty_named_history_initialisation___1',J), + J=[_|K], + b_setval('$chr_store_global_list_chr_translate____generate_empty_named_history_initialisation___1',K), + ( K=[L|_] -> + setarg(4,L,_) + ; + true + ) + ; + I=[_,_|K], + setarg(2,I,K), + ( K=[L|_] -> + setarg(4,L,I) + ; + true + ) + ), + detach_generate_empty_named_history_initialisation___1(H,B) + ) + ). +generate_empty_named_history_initialisation___1__0(A,B) :- + nb_getval('$chr_store_global_ground_chr_translate____empty_named_history_initialisations___2',C), + !, + ( var(B) -> + B=suspension(D,not_stored_yet,0,_,A), + 'chr gen_id'(D) + ; + true + ), + generate_empty_named_history_initialisation___1__0__0__3(C,A,B). +generate_empty_named_history_initialisation___1__0__0__3([],B,A) :- + generate_empty_named_history_initialisation___1__1(B,A). +generate_empty_named_history_initialisation___1__0__0__3([E|F],A,B) :- + ( E=suspension(_,active,_,C,D) -> + setarg(2,E,removed), + arg(3,E,Q), + ( var(Q) -> + nb_getval('$chr_store_global_ground_chr_translate____empty_named_history_initialisations___2',R), + R=[_|S], + b_setval('$chr_store_global_ground_chr_translate____empty_named_history_initialisations___2',S), + ( S=[T|_] -> + setarg(3,T,_) + ; + true + ) + ; + Q=[_,_|S], + setarg(2,Q,S), + ( S=[T|_] -> + setarg(3,T,Q) + ; + true + ) + ), + arg(2,B,L), + setarg(2,B,active), + arg(3,B,K), + J is K+1, + setarg(3,B,J), + ( L==not_stored_yet -> + B=suspension(_,_,_,_,M), + term_variables(M,I), + nb_getval('$chr_store_global_list_chr_translate____generate_empty_named_history_initialisation___1',N), + O=[B|N], + b_setval('$chr_store_global_list_chr_translate____generate_empty_named_history_initialisation___1',O), + ( N=[P|_] -> + setarg(4,P,O) + ; + true + ), + attach_generate_empty_named_history_initialisation___1(I,B) + ; + true + ), + empty_named_history_global_variable(A,G), + C=[(:-nb_setval(G,0))|H], + empty_named_history_initialisations(H,D), + ( B=suspension(_,active,J,_,_) -> + setarg(2,B,inactive), + generate_empty_named_history_initialisation___1__0__0__3(F,A,B) + ; + true + ) + ; + generate_empty_named_history_initialisation___1__0__0__3(F,A,B) + ). +generate_empty_named_history_initialisation___1__0(A,B) :- + ( var(B) -> + B=suspension(C,not_stored_yet,0,_,A), + 'chr gen_id'(C) + ; + true + ), + generate_empty_named_history_initialisation___1__1(A,B). +generate_empty_named_history_initialisation___1__1(_,A) :- + arg(2,A,E), + setarg(2,A,active), + arg(3,A,D), + C is D+1, + setarg(3,A,C), + ( E==not_stored_yet -> + A=suspension(_,_,_,_,F), + term_variables(F,B), + nb_getval('$chr_store_global_list_chr_translate____generate_empty_named_history_initialisation___1',G), + H=[A|G], + b_setval('$chr_store_global_list_chr_translate____generate_empty_named_history_initialisation___1',H), + ( G=[I|_] -> + setarg(4,I,H) + ; + true + ), + attach_generate_empty_named_history_initialisation___1(B,A) + ; + true + ). +find_empty_named_histories :- + find_empty_named_histories___0__0(_). +find_empty_named_histories___0__0(A) :- + nb_getval('$chr_store_constants_chr_translate____history___3___[3]___[]',B), + !, + A=suspension(C,not_stored_yet,t,_), + 'chr gen_id'(C), + find_empty_named_histories___0__0__0__1(B,A). +find_empty_named_histories___0__0__0__1([],A) :- + find_empty_named_histories___0__1(A). +find_empty_named_histories___0__0__0__1([D|E],A) :- + ( D=suspension(_,active,_,_,B,C), + C=[], + F=t(140,A,D), + '$novel_production'(A,F), + '$novel_production'(D,F) -> + '$extend_history'(A,F), + arg(2,A,G), + setarg(2,A,active), + ( G==not_stored_yet -> + nb_getval('$chr_store_global_ground_chr_translate____find_empty_named_histories___0',H), + I=[A|H], + b_setval('$chr_store_global_ground_chr_translate____find_empty_named_histories___0',I), + ( H=[J|_] -> + setarg(4,J,I) + ; + true + ) + ; + true + ), + generate_empty_named_history_initialisation(B), + ( A=suspension(_,active,_,_) -> + setarg(2,A,inactive), + find_empty_named_histories___0__0__0__1(E,A) + ; + true + ) + ; + find_empty_named_histories___0__0__0__1(E,A) + ). +find_empty_named_histories___0__0(A) :- + A=suspension(B,not_stored_yet,t,_), + 'chr gen_id'(B), + find_empty_named_histories___0__1(A). +find_empty_named_histories___0__1(A) :- + nb_getval('$chr_store_global_list_chr_translate____generate_empty_named_history_initialisation___1',B), + !, + find_empty_named_histories___0__1__0__2(B,A). +find_empty_named_histories___0__1__0__2([],A) :- + find_empty_named_histories___0__2(A). +find_empty_named_histories___0__1__0__2([B|C],A) :- + ( B=suspension(_,active,_,_,_) -> + B=suspension(_,_,_,_,I), + setarg(2,B,removed), + term_variables(I,D), + arg(4,B,E), + ( var(E) -> + nb_getval('$chr_store_global_list_chr_translate____generate_empty_named_history_initialisation___1',F), + F=[_|G], + b_setval('$chr_store_global_list_chr_translate____generate_empty_named_history_initialisation___1',G), + ( G=[H|_] -> + setarg(4,H,_) + ; + true + ) + ; + E=[_,_|G], + setarg(2,E,G), + ( G=[H|_] -> + setarg(4,H,E) + ; + true + ) + ), + detach_generate_empty_named_history_initialisation___1(D,B), + find_empty_named_histories___0__1__0__2(C,A) + ; + find_empty_named_histories___0__1__0__2(C,A) + ). +find_empty_named_histories___0__1(A) :- + find_empty_named_histories___0__2(A). +find_empty_named_histories___0__2(A) :- + nb_getval('$chr_store_global_ground_chr_translate____empty_named_history_initialisations___2',E), + 'chr sbag_member'(B,E), + B=suspension(_,active,_,C,D), + !, + setarg(2,B,removed), + arg(3,B,K), + ( var(K) -> + nb_getval('$chr_store_global_ground_chr_translate____empty_named_history_initialisations___2',L), + L=[_|M], + b_setval('$chr_store_global_ground_chr_translate____empty_named_history_initialisations___2',M), + ( M=[N|_] -> + setarg(3,N,_) + ; + true + ) + ; + K=[_,_|M], + setarg(2,K,M), + ( M=[N|_] -> + setarg(3,N,K) + ; + true + ) ), ( var(A) -> true ; - remove_constraint_internal(A,_,E), - ( E==yes -> - '$delete_from_store_prev_guard_list/7'(A) + arg(2,A,J), + setarg(2,A,removed), + ( J==not_stored_yet -> + true + ; + arg(4,A,F), + ( var(F) -> + nb_getval('$chr_store_global_ground_chr_translate____find_empty_named_histories___0',G), + G=[_|H], + b_setval('$chr_store_global_ground_chr_translate____find_empty_named_histories___0',H), + ( H=[I|_] -> + setarg(4,I,_) + ; + true + ) + ; + F=[_,_|H], + setarg(2,F,H), + ( H=[I|_] -> + setarg(4,I,F) + ; + true + ) + ) + ) + ), + C=D. +find_empty_named_histories___0__2(A) :- + ( var(A) -> + true + ; + arg(2,A,F), + setarg(2,A,removed), + ( F==not_stored_yet -> + true + ; + arg(4,A,B), + ( var(B) -> + nb_getval('$chr_store_global_ground_chr_translate____find_empty_named_histories___0',C), + C=[_|D], + b_setval('$chr_store_global_ground_chr_translate____find_empty_named_histories___0',D), + ( D=[E|_] -> + setarg(4,E,_) + ; + true + ) + ; + B=[_,_|D], + setarg(2,B,D), + ( D=[E|_] -> + setarg(4,E,B) + ; + true + ) + ) + ) + ), + chr_error(internal,'find_empty_named_histories was not removed',[]). +module_initializer(A) :- + B=suspension(C,active,_,A), + 'chr gen_id'(C), + nb_getval('$chr_store_global_ground_chr_translate____module_initializer___1',D), + E=[B|D], + b_setval('$chr_store_global_ground_chr_translate____module_initializer___1',E), + ( D=[F|_] -> + setarg(3,F,E) + ; + true + ). +module_initializers(A) :- + nb_getval('$chr_store_global_ground_chr_translate____module_initializer___1',D), + 'chr sbag_member'(B,D), + B=suspension(_,active,_,C), + !, + setarg(2,B,removed), + arg(3,B,F), + ( var(F) -> + nb_getval('$chr_store_global_ground_chr_translate____module_initializer___1',G), + G=[_|H], + b_setval('$chr_store_global_ground_chr_translate____module_initializer___1',H), + ( H=[I|_] -> + setarg(3,I,_) ; true ) + ; + F=[_,_|H], + setarg(2,F,H), + ( H=[I|_] -> + setarg(3,I,F) + ; + true + ) + ), + A=(C,E), + module_initializers(E). +module_initializers(true). +actual_atomic_multi_hash_keys(A,B,C) :- + nb_getval('$chr_store_multi_hash_chr_translate____actual_store_types___2-1',Q), + lookup_ht(Q,A,F), + 'chr sbag_member'(D,F), + D=suspension(_,active,_,E), + nb_getval('$chr_store_multi_hash_chr_translate____validate_store_type_assumption___1-1',P), + lookup_ht(P,A,H), + 'chr sbag_member'(G,H), + G=suspension(_,active,_), + !, + setarg(2,D,removed), + nb_getval('$chr_store_multi_hash_chr_translate____actual_store_types___2-1',O), + delete_ht(O,A,D), + delete(E,multi_hash([B]),I), + B=[J], + ( get_constraint_arg_type(A,J,K), + enumerated_atomic_type(K,L) -> + M=L, + N=complete + ; + M=C, + N=incomplete + ), + actual_store_types(A,[atomic_constants(B,M,N)|I]). +actual_atomic_multi_hash_keys(A,B,C) :- + nb_getval('$chr_store_multi_hash_chr_translate____actual_atomic_multi_hash_keys___3-12',K), + lookup_ht(K,k(A,B),F), + 'chr sbag_member'(D,F), + D=suspension(_,active,_,_,E), + !, + setarg(2,D,removed), + nb_getval('$chr_store_multi_hash_chr_translate____actual_atomic_multi_hash_keys___3-12',I), + delete_ht(I,k(A,B),D), + nb_getval('$chr_store_multi_hash_chr_translate____actual_atomic_multi_hash_keys___3-1',J), + delete_ht(J,A,D), + append(C,E,G), + sort(G,H), + actual_atomic_multi_hash_keys(A,B,H). +actual_atomic_multi_hash_keys(A,B,C) :- + nb_getval('$chr_store_multi_hash_chr_translate____actual_ground_multi_hash_keys___3-12',K), + lookup_ht(K,k(A,B),F), + 'chr sbag_member'(D,F), + D=suspension(_,active,_,_,E), + !, + setarg(2,D,removed), + nb_getval('$chr_store_multi_hash_chr_translate____actual_ground_multi_hash_keys___3-12',I), + delete_ht(I,k(A,B),D), + nb_getval('$chr_store_multi_hash_chr_translate____actual_ground_multi_hash_keys___3-1',J), + delete_ht(J,A,D), + append(E,C,G), + sort(G,H), + actual_ground_multi_hash_keys(A,B,H). +actual_atomic_multi_hash_keys(A,B,_) :- + nb_getval('$chr_store_multi_hash_chr_translate____actual_non_ground_multi_hash_key___2-12',E), + lookup_ht(E,k(A,B),D), + 'chr sbag_member'(C,D), + C=suspension(_,active,_,_), + !. +actual_atomic_multi_hash_keys(A,B,C) :- + D=suspension(E,active,A,B,C), + 'chr gen_id'(E), + nb_getval('$chr_store_multi_hash_chr_translate____actual_atomic_multi_hash_keys___3-12',F), + insert_ht(F,k(A,B),D), + nb_getval('$chr_store_multi_hash_chr_translate____actual_atomic_multi_hash_keys___3-1',G), + insert_ht(G,A,D). +actual_ground_multi_hash_keys(A,B,C) :- + nb_getval('$chr_store_multi_hash_chr_translate____actual_store_types___2-1',Q), + lookup_ht(Q,A,F), + 'chr sbag_member'(D,F), + D=suspension(_,active,_,E), + nb_getval('$chr_store_multi_hash_chr_translate____validate_store_type_assumption___1-1',P), + lookup_ht(P,A,H), + 'chr sbag_member'(G,H), + G=suspension(_,active,_), + !, + setarg(2,D,removed), + nb_getval('$chr_store_multi_hash_chr_translate____actual_store_types___2-1',O), + delete_ht(O,A,D), + ( B=[I], + get_constraint_arg_type(A,I,J), + ( is_chr_constants_type(J,K,_) -> + get_chr_constants(K,L) + ; + ( J=chr_enum(L) -> + true + ) + ) -> + M=complete + ; + L=C, + M=incomplete + ), + delete(E,multi_hash([B]),N), + actual_store_types(A,[ground_constants(B,L,M)|N]). +actual_ground_multi_hash_keys(A,B,C) :- + nb_getval('$chr_store_multi_hash_chr_translate____actual_atomic_multi_hash_keys___3-12',K), + lookup_ht(K,k(A,B),F), + 'chr sbag_member'(D,F), + D=suspension(_,active,_,_,E), + !, + setarg(2,D,removed), + nb_getval('$chr_store_multi_hash_chr_translate____actual_atomic_multi_hash_keys___3-12',I), + delete_ht(I,k(A,B),D), + nb_getval('$chr_store_multi_hash_chr_translate____actual_atomic_multi_hash_keys___3-1',J), + delete_ht(J,A,D), + append(C,E,G), + sort(G,H), + actual_ground_multi_hash_keys(A,B,H). +actual_ground_multi_hash_keys(A,B,C) :- + nb_getval('$chr_store_multi_hash_chr_translate____actual_ground_multi_hash_keys___3-12',K), + lookup_ht(K,k(A,B),F), + 'chr sbag_member'(D,F), + D=suspension(_,active,_,_,E), + !, + setarg(2,D,removed), + nb_getval('$chr_store_multi_hash_chr_translate____actual_ground_multi_hash_keys___3-12',I), + delete_ht(I,k(A,B),D), + nb_getval('$chr_store_multi_hash_chr_translate____actual_ground_multi_hash_keys___3-1',J), + delete_ht(J,A,D), + append(C,E,G), + sort(G,H), + actual_ground_multi_hash_keys(A,B,H). +actual_ground_multi_hash_keys(A,B,_) :- + nb_getval('$chr_store_multi_hash_chr_translate____actual_non_ground_multi_hash_key___2-12',E), + lookup_ht(E,k(A,B),D), + 'chr sbag_member'(C,D), + C=suspension(_,active,_,_), + !. +actual_ground_multi_hash_keys(A,B,C) :- + D=suspension(E,active,A,B,C), + 'chr gen_id'(E), + nb_getval('$chr_store_multi_hash_chr_translate____actual_ground_multi_hash_keys___3-12',F), + insert_ht(F,k(A,B),D), + nb_getval('$chr_store_multi_hash_chr_translate____actual_ground_multi_hash_keys___3-1',G), + insert_ht(G,A,D). +actual_non_ground_multi_hash_key(A,B) :- + nb_getval('$chr_store_multi_hash_chr_translate____actual_non_ground_multi_hash_key___2-12',E), + lookup_ht(E,k(A,B),D), + 'chr sbag_member'(C,D), + C=suspension(_,active,_,_), + !. +actual_non_ground_multi_hash_key(A,B) :- + nb_getval('$chr_store_multi_hash_chr_translate____actual_atomic_multi_hash_keys___3-12',D), + lookup_ht(D,k(A,B),C), + !, + actual_non_ground_multi_hash_key___2__0__0__3(C,A,B). +actual_non_ground_multi_hash_key___2__0__0__3([],A,B) :- + actual_non_ground_multi_hash_key___2__1(A,B). +actual_non_ground_multi_hash_key___2__0__0__3([E|F],A,B) :- + ( E=suspension(_,active,C,D,_), + C==A, + D==B -> + setarg(2,E,removed), + nb_getval('$chr_store_multi_hash_chr_translate____actual_atomic_multi_hash_keys___3-12',G), + delete_ht(G,k(A,B),E), + nb_getval('$chr_store_multi_hash_chr_translate____actual_atomic_multi_hash_keys___3-1',H), + delete_ht(H,A,E), + actual_non_ground_multi_hash_key___2__0__0__3(F,A,B) + ; + actual_non_ground_multi_hash_key___2__0__0__3(F,A,B) ). -'prev_guard_list/7__3'(_,_,_,_,_,_,_,A) :- - activate_constraint(B,_,A,_), - ( B==yes -> - '$insert_in_store_prev_guard_list/7'(A) +actual_non_ground_multi_hash_key(A,B) :- + actual_non_ground_multi_hash_key___2__1(A,B). +actual_non_ground_multi_hash_key___2__1(A,B) :- + nb_getval('$chr_store_multi_hash_chr_translate____actual_ground_multi_hash_keys___3-12',D), + lookup_ht(D,k(A,B),C), + !, + actual_non_ground_multi_hash_key___2__1__0__4(C,A,B). +actual_non_ground_multi_hash_key___2__1__0__4([],A,B) :- + actual_non_ground_multi_hash_key___2__2(A,B). +actual_non_ground_multi_hash_key___2__1__0__4([E|F],A,B) :- + ( E=suspension(_,active,C,D,_), + C==A, + D==B -> + setarg(2,E,removed), + nb_getval('$chr_store_multi_hash_chr_translate____actual_ground_multi_hash_keys___3-12',G), + delete_ht(G,k(A,B),E), + nb_getval('$chr_store_multi_hash_chr_translate____actual_ground_multi_hash_keys___3-1',H), + delete_ht(H,A,E), + actual_non_ground_multi_hash_key___2__1__0__4(F,A,B) + ; + actual_non_ground_multi_hash_key___2__1__0__4(F,A,B) + ). +actual_non_ground_multi_hash_key___2__1(A,B) :- + actual_non_ground_multi_hash_key___2__2(A,B). +actual_non_ground_multi_hash_key___2__2(A,B) :- + C=suspension(D,active,A,B), + 'chr gen_id'(D), + nb_getval('$chr_store_multi_hash_chr_translate____actual_non_ground_multi_hash_key___2-12',E), + insert_ht(E,k(A,B),C). +prolog_global_variable(A) :- + nb_getval('$chr_store_multi_hash_chr_translate____prolog_global_variable___1-1',D), + lookup_ht(D,A,C), + 'chr sbag_member'(B,C), + B=suspension(_,active,_,_), + !. +prolog_global_variable(A) :- + B=suspension(C,active,_,A), + 'chr gen_id'(C), + nb_getval('$chr_store_global_ground_chr_translate____prolog_global_variable___1',D), + E=[B|D], + b_setval('$chr_store_global_ground_chr_translate____prolog_global_variable___1',E), + ( D=[F|_] -> + setarg(3,F,E) + ; + true + ), + nb_getval('$chr_store_multi_hash_chr_translate____prolog_global_variable___1-1',G), + insert_ht(G,A,B). +prolog_global_variables(A) :- + nb_getval('$chr_store_global_ground_chr_translate____prolog_global_variable___1',D), + 'chr sbag_member'(B,D), + B=suspension(_,active,_,C), + !, + setarg(2,B,removed), + arg(3,B,F), + ( var(F) -> + nb_getval('$chr_store_global_ground_chr_translate____prolog_global_variable___1',G), + G=[_|H], + b_setval('$chr_store_global_ground_chr_translate____prolog_global_variable___1',H), + ( H=[I|_] -> + setarg(3,I,_) + ; + true + ) + ; + F=[_,_|H], + setarg(2,F,H), + ( H=[I|_] -> + setarg(3,I,F) + ; + true + ) + ), + nb_getval('$chr_store_multi_hash_chr_translate____prolog_global_variable___1-1',J), + delete_ht(J,C,B), + A=[C|E], + prolog_global_variables(E). +prolog_global_variables([]). +background_info(A) :- + nb_getval('$chr_store_global_ground_chr_translate____background_info___1',D), + 'chr sbag_member'(B,D), + B=suspension(_,active,_,C), + !, + setarg(2,B,removed), + arg(3,B,F), + ( var(F) -> + nb_getval('$chr_store_global_ground_chr_translate____background_info___1',G), + G=[_|H], + b_setval('$chr_store_global_ground_chr_translate____background_info___1',H), + ( H=[I|_] -> + setarg(3,I,_) + ; + true + ) + ; + F=[_,_|H], + setarg(2,F,H), + ( H=[I|_] -> + setarg(3,I,F) + ; + true + ) + ), + append(A,C,E), + background_info(E). +background_info(A) :- + B=suspension(C,active,_,A), + 'chr gen_id'(C), + nb_getval('$chr_store_global_ground_chr_translate____background_info___1',D), + E=[B|D], + b_setval('$chr_store_global_ground_chr_translate____background_info___1',E), + ( D=[F|_] -> + setarg(3,F,E) + ; + true + ). +background_info(A,B) :- + background_info___2__0(A,B,_). +background_info___2__0(A,B,C) :- + nb_getval('$chr_store_global_list_chr_translate____get_bg_info___2',D), + !, + ( var(C) -> + C=suspension(E,not_stored_yet,t,0,_,A,B), + 'chr gen_id'(E) + ; + true + ), + background_info___2__0__0__1(D,A,B,C). +background_info___2__0__0__1([],B,C,A) :- + background_info___2__1(B,C,A). +background_info___2__0__0__1([E|F],B,C,A) :- + ( E=suspension(_,active,_,_,_,D,_), + K=t(160,A,E), + '$novel_production'(A,K), + '$novel_production'(E,K), + copy_term_nat(B,G), + subsumes_chk(G,D) -> + '$extend_history'(A,K), + arg(2,A,M), + setarg(2,A,active), + arg(4,A,L), + J is L+1, + setarg(4,A,J), + ( M==not_stored_yet -> + A=suspension(_,_,_,_,_,N,_), + term_variables(N,I), + nb_getval('$chr_store_global_list_chr_translate____background_info___2',O), + P=[A|O], + b_setval('$chr_store_global_list_chr_translate____background_info___2',P), + ( O=[Q|_] -> + setarg(5,Q,P) + ; + true + ), + attach_background_info___2(I,A) + ; + true + ), + copy_term_nat(B-C,D-H), + get_bg_info_answer([H]), + ( A=suspension(_,active,_,J,_,_,_) -> + setarg(2,A,inactive), + background_info___2__0__0__1(F,B,C,A) + ; + true + ) + ; + background_info___2__0__0__1(F,B,C,A) + ). +background_info___2__0(A,B,C) :- + ( var(C) -> + C=suspension(D,not_stored_yet,t,0,_,A,B), + 'chr gen_id'(D) + ; + true + ), + background_info___2__1(A,B,C). +background_info___2__1(_,_,A) :- + arg(2,A,E), + setarg(2,A,active), + arg(4,A,D), + C is D+1, + setarg(4,A,C), + ( E==not_stored_yet -> + A=suspension(_,_,_,_,_,F,_), + term_variables(F,B), + nb_getval('$chr_store_global_list_chr_translate____background_info___2',G), + H=[A|G], + b_setval('$chr_store_global_list_chr_translate____background_info___2',H), + ( G=[I|_] -> + setarg(5,I,H) + ; + true + ), + attach_background_info___2(B,A) + ; + true + ). +get_bg_info(A) :- + nb_getval('$chr_store_global_ground_chr_translate____background_info___1',D), + 'chr sbag_member'(B,D), + B=suspension(_,active,_,C), + !, + A=C. +get_bg_info([]). +get_bg_info(A,B) :- + get_bg_info___2__0(A,B,_). +get_bg_info___2__0(A,B,C) :- + nb_getval('$chr_store_global_list_chr_translate____background_info___2',D), + !, + ( var(C) -> + C=suspension(E,not_stored_yet,t,0,_,A,B), + 'chr gen_id'(E) + ; + true + ), + get_bg_info___2__0__0__1(D,A,B,C). +get_bg_info___2__0__0__1([],B,C,A) :- + get_bg_info___2__1(B,C,A). +get_bg_info___2__0__0__1([F|G],B,C,A) :- + ( F=suspension(_,active,_,_,_,D,E), + L=t(160,F,A), + '$novel_production'(F,L), + '$novel_production'(A,L), + copy_term_nat(D,H), + subsumes_chk(H,B) -> + '$extend_history'(A,L), + arg(2,A,N), + setarg(2,A,active), + arg(4,A,M), + K is M+1, + setarg(4,A,K), + ( N==not_stored_yet -> + A=suspension(_,_,_,_,_,O,_), + term_variables(O,J), + nb_getval('$chr_store_global_list_chr_translate____get_bg_info___2',P), + Q=[A|P], + b_setval('$chr_store_global_list_chr_translate____get_bg_info___2',Q), + ( P=[R|_] -> + setarg(5,R,Q) + ; + true + ), + attach_get_bg_info___2(J,A) + ; + true + ), + copy_term_nat(D-E,B-I), + get_bg_info_answer([I]), + ( A=suspension(_,active,_,K,_,_,_) -> + setarg(2,A,inactive), + get_bg_info___2__0__0__1(G,B,C,A) + ; + true + ) + ; + get_bg_info___2__0__0__1(G,B,C,A) + ). +get_bg_info___2__0(A,B,C) :- + ( var(C) -> + C=suspension(D,not_stored_yet,t,0,_,A,B), + 'chr gen_id'(D) + ; + true + ), + get_bg_info___2__1(A,B,C). +get_bg_info___2__1(_,A,B) :- + nb_getval('$chr_store_global_ground_chr_translate____get_bg_info_answer___1',E), + 'chr sbag_member'(C,E), + C=suspension(_,active,_,D), + !, + setarg(2,C,removed), + arg(3,C,M), + ( var(M) -> + nb_getval('$chr_store_global_ground_chr_translate____get_bg_info_answer___1',N), + N=[_|O], + b_setval('$chr_store_global_ground_chr_translate____get_bg_info_answer___1',O), + ( O=[P|_] -> + setarg(3,P,_) + ; + true + ) + ; + M=[_,_|O], + setarg(2,M,O), + ( O=[P|_] -> + setarg(3,P,M) + ; + true + ) + ), + ( var(B) -> + true + ; + B=suspension(_,K,_,_,_,L,_), + setarg(2,B,removed), + ( K==not_stored_yet -> + F=[] + ; + term_variables(L,F), + arg(5,B,G), + ( var(G) -> + nb_getval('$chr_store_global_list_chr_translate____get_bg_info___2',H), + H=[_|I], + b_setval('$chr_store_global_list_chr_translate____get_bg_info___2',I), + ( I=[J|_] -> + setarg(5,J,_) + ; + true + ) + ; + G=[_,_|I], + setarg(2,G,I), + ( I=[J|_] -> + setarg(5,J,G) + ; + true + ) + ), + detach_get_bg_info___2(F,B) + ) + ), + A=D. +get_bg_info___2__1(_,A,B) :- + ( var(B) -> + true + ; + B=suspension(_,H,_,_,_,I,_), + setarg(2,B,removed), + ( H==not_stored_yet -> + C=[] + ; + term_variables(I,C), + arg(5,B,D), + ( var(D) -> + nb_getval('$chr_store_global_list_chr_translate____get_bg_info___2',E), + E=[_|F], + b_setval('$chr_store_global_list_chr_translate____get_bg_info___2',F), + ( F=[G|_] -> + setarg(5,G,_) + ; + true + ) + ; + D=[_,_|F], + setarg(2,D,F), + ( F=[G|_] -> + setarg(5,G,D) + ; + true + ) + ), + detach_get_bg_info___2(C,B) + ) + ), + A=[]. +get_bg_info_answer(A) :- + nb_getval('$chr_store_global_ground_chr_translate____get_bg_info_answer___1',D), + 'chr sbag_member'(B,D), + B=suspension(_,active,_,C), + !, + setarg(2,B,removed), + arg(3,B,F), + ( var(F) -> + nb_getval('$chr_store_global_ground_chr_translate____get_bg_info_answer___1',G), + G=[_|H], + b_setval('$chr_store_global_ground_chr_translate____get_bg_info_answer___1',H), + ( H=[I|_] -> + setarg(3,I,_) + ; + true + ) + ; + F=[_,_|H], + setarg(2,F,H), + ( H=[I|_] -> + setarg(3,I,F) + ; + true + ) + ), + append(A,C,E), + get_bg_info_answer(E). +get_bg_info_answer(A) :- + B=suspension(C,active,_,A), + 'chr gen_id'(C), + nb_getval('$chr_store_global_ground_chr_translate____get_bg_info_answer___1',D), + E=[B|D], + b_setval('$chr_store_global_ground_chr_translate____get_bg_info_answer___1',E), + ( D=[F|_] -> + setarg(3,F,E) + ; + true + ). +prev_guard_list(A,B,C,D,E,F,G,H) :- + nb_getval('$chr_store_multi_hash_chr_translate____rule___2-1',B1), + lookup_ht1(B1,B,B,K), + 'chr sbag_member'(I,K), + I=suspension(_,active,_,_,_,J), + J=pragma(rule(L,M,N,_),_,_,_,_), + L\==[], + make_head_matchings_explicit(B,O,P), + setof(Q,chr_translate:head_subset(O,D,Q),R), + !, + append(L,M,S), + compute_derived_info(R,P,O,S,N,G,D,H,T,U), + append(F,T,V), + normalize_conj_list(V,W), + append(U,H,X), + normalize_conj_list(X,Y), + next_prev_rule(C,Z,A1), + prev_guard_list(A,Z,A1,D,E,W,G,Y). +prev_guard_list(A,B,C,D,E,F,G,H) :- + ( B>0 -> + next_prev_rule(C,I,J), + prev_guard_list(A,I,J,D,E,F,G,H) + ; + prev_guard_list(A,D,E,F,G,H) + ). +prev_guard_list(A,B,C,D,E,F) :- + prev_guard_list___6__0(A,B,C,D,E,F,_). +prev_guard_list___6__0(A,B,C,D,E,F,_) :- + F\==[], + !, + head_types_modes_condition(F,B,G), + conj2list(G,H), + term_variables(B,I), + append([chr_pp_headvariables(I)|H],D,J), + normalize_conj_list(J,K), + append(B,K,L), + add_background_info([C|L],M), + append(K,M,N), + normalize_conj_list(N,O), + prev_guard_list(A,B,C,O,E,[]). +prev_guard_list___6__0(A,B,C,D,E,F,G) :- + nb_getval('$chr_store_multi_hash_chr_translate____rule___2-1',W), + lookup_ht1(W,A,A,J), + ( + 'chr sbag_member'(H,J), + H=suspension(_,active,_,_,_,I), + I=pragma(rule(N,O,C,P),K,L,M,A), + C\==true, + append(E,D,Q), + ( conj2list(C,R), + append(Q,R,S), + guard_entailment:entails_guard(S,fail) -> + T=fail + ; + simplify_guard(C,P,Q,T,U) + ), + C\==T, + !, + setarg(2,H,removed), + arg(4,H,X), + ( var(X) -> + nb_getval('$chr_store_global_ground_chr_translate____rule___2',Y), + Y=[_|Z], + b_setval('$chr_store_global_ground_chr_translate____rule___2',Z), + ( Z=[A1|_] -> + setarg(4,A1,_) + ; + true + ) + ; + X=[_,_|Z], + setarg(2,X,Z), + ( Z=[A1|_] -> + setarg(4,A1,X) + ; + true + ) + ), + nb_getval('$chr_store_multi_hash_chr_translate____rule___2-1',B1), + delete_ht(B1,A,H), + rule(A,pragma(rule(N,O,T,U),K,L,M,A)), + prev_guard_list(A,B,T,D,E,[]) + ; + !, + G=suspension(V,not_stored_yet,t,_,A,B,C,D,E,F), + 'chr gen_id'(V), + prev_guard_list___6__0__0__3(J,A,B,C,D,E,F,G) + ). +prev_guard_list___6__0__0__3([],B,C,D,E,F,G,A) :- + prev_guard_list___6__1(B,C,D,E,F,G,A). +prev_guard_list___6__0__0__3([J|K],B,C,D,E,F,G,A) :- + ( J=suspension(_,active,_,_,H,I), + H==B, + O=t(174,A,J), + '$novel_production'(A,O), + '$novel_production'(J,O), + chr_pp_flag(check_impossible_rules,on), + I=pragma(rule(_,_,D,_),_,_,_,B), + conj2list(D,L), + append(F,E,M), + append(M,L,N), + guard_entailment:entails_guard(N,fail) -> + '$extend_history'(A,O), + arg(2,A,P), + setarg(2,A,active), + ( P==not_stored_yet -> + nb_getval('$chr_store_global_ground_chr_translate____prev_guard_list___6',Q), + R=[A|Q], + b_setval('$chr_store_global_ground_chr_translate____prev_guard_list___6',R), + ( Q=[S|_] -> + setarg(4,S,R) + ; + true + ), + nb_getval('$chr_store_multi_hash_chr_translate____prev_guard_list___6-1',T), + insert_ht(T,B,A) + ; + true + ), + chr_warning(weird_program,'Heads will never match or guard will always fail in ~@. + This rule will never fire! +',[format_rule(I)]), + set_all_passive(B), + ( A=suspension(_,active,_,_,_,_,_,_,_,_) -> + setarg(2,A,inactive), + prev_guard_list___6__0__0__3(K,B,C,D,E,F,G,A) + ; + true + ) + ; + prev_guard_list___6__0__0__3(K,B,C,D,E,F,G,A) + ). +prev_guard_list___6__0(A,B,C,D,E,F,G) :- + G=suspension(H,not_stored_yet,t,_,A,B,C,D,E,F), + 'chr gen_id'(H), + prev_guard_list___6__1(A,B,C,D,E,F,G). +prev_guard_list___6__1(A,B,C,D,E,F,G) :- + nb_getval('$chr_store_multi_hash_chr_translate____rule___2-1',I), + lookup_ht1(I,A,A,H), + !, + prev_guard_list___6__1__0__4(H,A,B,C,D,E,F,G). +prev_guard_list___6__1__0__4([],B,C,D,E,F,G,A) :- + prev_guard_list___6__2(B,C,D,E,F,G,A). +prev_guard_list___6__1__0__4([J|K],A,B,C,D,E,F,G) :- + ( J=suspension(_,active,_,_,H,I), + H==A, + I=pragma(rule(O,P,C,Q),L,M,N,A), + simplify_heads(E,D,C,Q,R,S), + R\==[], + extract_arguments(O,T), + extract_arguments(P,U), + extract_arguments(B,V), + replace_some_heads(T,U,V,R,W,X,C,Q,Y), + substitute_arguments(O,W,Z), + substitute_arguments(P,X,A1), + append(S,Y,B1), + list2conj(B1,C1), + D1=pragma(rule(Z,A1,C,(C1,Q)),L,M,N,A), + ( + O\==Z + ; + P\==A1 + ) -> + setarg(2,J,removed), + arg(4,J,J1), + ( var(J1) -> + nb_getval('$chr_store_global_ground_chr_translate____rule___2',K1), + K1=[_|L1], + b_setval('$chr_store_global_ground_chr_translate____rule___2',L1), + ( L1=[M1|_] -> + setarg(4,M1,_) + ; + true + ) + ; + J1=[_,_|L1], + setarg(2,J1,L1), + ( L1=[M1|_] -> + setarg(4,M1,J1) + ; + true + ) + ), + nb_getval('$chr_store_multi_hash_chr_translate____rule___2-1',N1), + delete_ht(N1,A,J), + arg(2,G,E1), + setarg(2,G,active), + ( E1==not_stored_yet -> + nb_getval('$chr_store_global_ground_chr_translate____prev_guard_list___6',F1), + G1=[G|F1], + b_setval('$chr_store_global_ground_chr_translate____prev_guard_list___6',G1), + ( F1=[H1|_] -> + setarg(4,H1,G1) + ; + true + ), + nb_getval('$chr_store_multi_hash_chr_translate____prev_guard_list___6-1',I1), + insert_ht(I1,A,G) + ; + true + ), + rule(A,D1), + ( G=suspension(_,active,_,_,_,_,_,_,_,_) -> + setarg(2,G,inactive), + prev_guard_list___6__1__0__4(K,A,B,C,D,E,F,G) + ; + true + ) + ; + prev_guard_list___6__1__0__4(K,A,B,C,D,E,F,G) + ). +prev_guard_list___6__1(A,B,C,D,E,F,G) :- + prev_guard_list___6__2(A,B,C,D,E,F,G). +prev_guard_list___6__2(A,B,C,D,E,F,G) :- + nb_getval('$chr_store_multi_hash_chr_translate____rule___2-1',I), + lookup_ht1(I,A,A,H), + !, + prev_guard_list___6__2__0__5(H,A,B,C,D,E,F,G). +prev_guard_list___6__2__0__5([],B,C,D,E,F,G,A) :- + prev_guard_list___6__3(B,C,D,E,F,G,A). +prev_guard_list___6__2__0__5([J|L],B,C,D,E,F,G,A) :- + ( J=suspension(_,active,_,_,H,I), + H==B, + nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-3',M), + lookup_ht1(M,B,B,K) -> + prev_guard_list___6__2__1__5(K,I,J,L,B,C,D,E,F,G,A) + ; + prev_guard_list___6__2__0__5(L,B,C,D,E,F,G,A) + ). +prev_guard_list___6__2__1__5([],_,_,A,C,D,E,F,G,H,B) :- + prev_guard_list___6__2__0__5(A,C,D,E,F,G,H,B). +prev_guard_list___6__2__1__5([N|P],J,A,B,D,E,F,G,H,I,C) :- + ( N=suspension(_,active,_,_,K,L,M,_,_), + M==D, + nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-1',Q), + lookup_ht(Q,K,O) -> + prev_guard_list___6__2__2__5(O,K,L,N,P,J,A,B,D,E,F,G,H,I,C) + ; + prev_guard_list___6__2__1__5(P,J,A,B,D,E,F,G,H,I,C) + ). +prev_guard_list___6__2__2__5([],_,_,_,A,K,B,C,E,F,G,H,I,J,D) :- + prev_guard_list___6__2__1__5(A,K,B,C,E,F,G,H,I,J,D). +prev_guard_list___6__2__2__5([S|U],M,N,A,B,L,C,D,F,G,H,I,J,K,E) :- + ( S=suspension(_,active,_,_,O,P,Q,R,_), + S\==A, + O==M, + Q==F, + nb_getval('$chr_store_global_ground_chr_translate____multiple_occ_constraints_checked___1',T) -> + prev_guard_list___6__2__3__5(T,P,R,S,U,M,N,A,B,L,C,D,F,G,H,I,J,K,E) + ; + prev_guard_list___6__2__2__5(U,M,N,A,B,L,C,D,F,G,H,I,J,K,E) + ). +prev_guard_list___6__2__3__5([],_,_,_,A,N,O,B,C,M,D,E,G,H,I,J,K,L,F) :- + prev_guard_list___6__2__2__5(A,N,O,B,C,M,D,E,G,H,I,J,K,L,F). +prev_guard_list___6__2__3__5([T|U],P,Q,A,R,M,N,B,O,K,C,L,D,E,F,G,H,I,J) :- + ( T=suspension(_,active,_,S), + P + setarg(2,T,removed), + arg(3,T,C1), + ( var(C1) -> + nb_getval('$chr_store_global_ground_chr_translate____multiple_occ_constraints_checked___1',D1), + D1=[_|E1], + b_setval('$chr_store_global_ground_chr_translate____multiple_occ_constraints_checked___1',E1), + ( E1=[F1|_] -> + setarg(3,F1,_) + ; + true + ) + ; + C1=[_,_|E1], + setarg(2,C1,E1), + ( E1=[F1|_] -> + setarg(3,F1,C1) + ; + true + ) + ), + arg(2,J,X), + setarg(2,J,active), + ( X==not_stored_yet -> + nb_getval('$chr_store_global_ground_chr_translate____prev_guard_list___6',Y), + Z=[J|Y], + b_setval('$chr_store_global_ground_chr_translate____prev_guard_list___6',Z), + ( Y=[A1|_] -> + setarg(4,A1,Z) + ; + true + ), + nb_getval('$chr_store_multi_hash_chr_translate____prev_guard_list___6-1',B1), + insert_ht(B1,D,J) + ; + true + ), + first_occ_in_rule(D,M,P,Q), + tree_set_add(S,M,W), + multiple_occ_constraints_checked(W), + ( J=suspension(_,active,_,_,_,_,_,_,_,_) -> + setarg(2,J,inactive), + prev_guard_list___6__2__3__5(U,P,Q,A,R,M,N,B,O,K,C,L,D,E,F,G,H,I,J) + ; + true + ) + ; + prev_guard_list___6__2__3__5(U,P,Q,A,R,M,N,B,O,K,C,L,D,E,F,G,H,I,J) + ). +prev_guard_list___6__2(A,B,C,D,E,F,G) :- + prev_guard_list___6__3(A,B,C,D,E,F,G). +prev_guard_list___6__3(A,_,_,_,_,_,B) :- + nb_getval('$chr_store_global_ground_chr_translate____multiple_occ_constraints_checked___1',D), + 'chr sbag_member'(C,D), + C=suspension(_,active,_,_), + !, + setarg(2,C,removed), + arg(3,C,K), + ( var(K) -> + nb_getval('$chr_store_global_ground_chr_translate____multiple_occ_constraints_checked___1',L), + L=[_|M], + b_setval('$chr_store_global_ground_chr_translate____multiple_occ_constraints_checked___1',M), + ( M=[N|_] -> + setarg(3,N,_) + ; + true + ) + ; + K=[_,_|M], + setarg(2,K,M), + ( M=[N|_] -> + setarg(3,N,K) + ; + true + ) + ), + ( var(B) -> + true + ; + arg(2,B,J), + setarg(2,B,removed), + ( J==not_stored_yet -> + true + ; + arg(4,B,E), + ( var(E) -> + nb_getval('$chr_store_global_ground_chr_translate____prev_guard_list___6',F), + F=[_|G], + b_setval('$chr_store_global_ground_chr_translate____prev_guard_list___6',G), + ( G=[H|_] -> + setarg(4,H,_) + ; + true + ) + ; + E=[_,_|G], + setarg(2,E,G), + ( G=[H|_] -> + setarg(4,H,E) + ; + true + ) + ), + nb_getval('$chr_store_multi_hash_chr_translate____prev_guard_list___6-1',I), + delete_ht(I,A,B) + ) + ). +prev_guard_list___6__3(A,_,_,_,_,_,B) :- + arg(2,B,C), + setarg(2,B,active), + ( C==not_stored_yet -> + nb_getval('$chr_store_global_ground_chr_translate____prev_guard_list___6',D), + E=[B|D], + b_setval('$chr_store_global_ground_chr_translate____prev_guard_list___6',E), + ( D=[F|_] -> + setarg(4,F,E) + ; + true + ), + nb_getval('$chr_store_multi_hash_chr_translate____prev_guard_list___6-1',G), + insert_ht(G,A,B) ; true ). simplify_guards(A) :- - '$via1_multi_hash_rule/2-1'(A,D), + nb_getval('$chr_store_multi_hash_chr_translate____rule___2-1',Z), + lookup_ht1(Z,A,A,D), 'chr sbag_member'(B,D), - B=suspension(_,mutable(active),_,_,_,_,_,C), + B=suspension(_,active,_,_,_,C), !, - C=pragma(rule(E,F,G,_),_,_,_,A), - append(E,F,H), - make_head_matchings_explicit_not_negated(H,I,J), - add_guard_to_head(H,G,K), - L is A-1, - prev_guard_list(A,L,I,G,[],J,[K]), - multiple_occ_constraints_checked([]), - M is A+1, - simplify_guards(M). + C=pragma(rule(E,F,G,_),ids(H,I),_,_,A), + append(E,F,J), + make_head_matchings_explicit_not_negated(J,K,L), + tree_set_empty(M), + multiple_occ_constraints_checked(M), + apply_guard_wrt_term(J,G,N), + append(H,I,O), + findall(tuple(Q,R,A)-(-A),(member(S,O),get_occurrence_from_id(Q,R,A,S)),P), + empty_q(T), + insert_list_q(P,T,U), + next_prev_rule(U,_,V), + next_prev_rule(V,W,X), + prev_guard_list(A,W,X,K,G,[],L,[N]), + Y is A+1, + simplify_guards(Y). simplify_guards(_). set_all_passive(A) :- - 'set_all_passive/1__0'(A,_). -'set_all_passive/1__0'(A,B) :- - '$via1_multi_hash_occurrence/4-3'(A,C), + set_all_passive___1__0(A,_). +set_all_passive___1__0(A,B) :- + nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-3',E), + lookup_ht1(E,A,A,C), !, - allocate_constraint(true,B,set_all_passive(A),[A]), - 'set_all_passive/1__0__0'(C,A,B). -'set_all_passive/1__0__0'([],A,B) :- - 'set_all_passive/1__1'(A,B). -'set_all_passive/1__0__0'([E|F],A,B) :- - ( E=suspension(_,mutable(active),_,_,_,_,_,_,C,D), - C==A, - I=t(71,B,E), - 'chr novel_production'(B,I), - 'chr novel_production'(E,I) -> - 'chr extend_history'(B,I), - activate_constraint(G,_,B,H), - ( G==yes -> - '$insert_in_store_set_all_passive/1'(B) + B=suspension(D,not_stored_yet,t,A), + 'chr gen_id'(D), + set_all_passive___1__0__0__1(C,A,B). +set_all_passive___1__0__0__1([],B,A) :- + set_all_passive___1__1(B,A). +set_all_passive___1__0__0__1([E|F],B,A) :- + ( E=suspension(_,active,_,_,_,_,C,D,_), + C==B, + G=t(176,A,E), + '$novel_production'(A,G), + '$novel_production'(E,G) -> + '$extend_history'(A,G), + arg(2,A,H), + setarg(2,A,active), + ( H==not_stored_yet -> + nb_getval('$chr_store_multi_hash_chr_translate____set_all_passive___1-1',I), + insert_ht(I,B,A) ; true ), - passive(A,D), - ( B=suspension(_,mutable(active),_,mutable(H),_,_,_) -> - 'chr update_mutable'(inactive,mutable(active)), - 'set_all_passive/1__0__0'(F,A,B) + passive(B,D), + ( A=suspension(_,active,_,_) -> + setarg(2,A,inactive), + set_all_passive___1__0__0__1(F,B,A) ; true ) ; - 'set_all_passive/1__0__0'(F,A,B) + set_all_passive___1__0__0__1(F,B,A) ). -'set_all_passive/1__0'(A,B) :- - allocate_constraint(true,B,set_all_passive(A),[A]), - 'set_all_passive/1__1'(A,B). -'set_all_passive/1__1'(_,A) :- +set_all_passive___1__0(A,B) :- + B=suspension(C,not_stored_yet,t,A), + 'chr gen_id'(C), + set_all_passive___1__1(A,B). +set_all_passive___1__1(A,B) :- + ( var(B) -> + true + ; + arg(2,B,D), + setarg(2,B,removed), + ( D==not_stored_yet -> + true + ; + nb_getval('$chr_store_multi_hash_chr_translate____set_all_passive___1-1',C), + delete_ht(C,A,B) + ) + ). +precompute_head_matchings :- + precompute_head_matchings___0__0(_). +precompute_head_matchings___0__0(A) :- + nb_getval('$chr_store_global_ground_chr_translate____rule___2',B), + !, + A=suspension(C,not_stored_yet,t,_), + 'chr gen_id'(C), + precompute_head_matchings___0__0__0__1(B,A). +precompute_head_matchings___0__0__0__1([],A) :- + precompute_head_matchings___0__1(A). +precompute_head_matchings___0__0__0__1([D|E],A) :- + ( D=suspension(_,active,_,_,B,C), + M=t(170,D,A), + '$novel_production'(D,M), + '$novel_production'(A,M) -> + '$extend_history'(A,M), + arg(2,A,N), + setarg(2,A,active), + ( N==not_stored_yet -> + nb_getval('$chr_store_global_ground_chr_translate____precompute_head_matchings___0',O), + P=[A|O], + b_setval('$chr_store_global_ground_chr_translate____precompute_head_matchings___0',P), + ( O=[Q|_] -> + setarg(4,Q,P) + ; + true + ) + ; + true + ), + C=pragma(rule(F,G,_,_),_,_,_,_), + append(F,G,H), + make_head_matchings_explicit_(H,I,J), + copy_term_nat(I-J,K-L), + make_head_matchings_explicit_memo_table(B,K,L), + ( A=suspension(_,active,_,_) -> + setarg(2,A,inactive), + precompute_head_matchings___0__0__0__1(E,A) + ; + true + ) + ; + precompute_head_matchings___0__0__0__1(E,A) + ). +precompute_head_matchings___0__0(A) :- + A=suspension(B,not_stored_yet,t,_), + 'chr gen_id'(B), + precompute_head_matchings___0__1(A). +precompute_head_matchings___0__1(A) :- ( var(A) -> true ; - remove_constraint_internal(A,_,B), - ( B==yes -> - '$delete_from_store_set_all_passive/1'(A) - ; + arg(2,A,F), + setarg(2,A,removed), + ( F==not_stored_yet -> true + ; + arg(4,A,B), + ( var(B) -> + nb_getval('$chr_store_global_ground_chr_translate____precompute_head_matchings___0',C), + C=[_|D], + b_setval('$chr_store_global_ground_chr_translate____precompute_head_matchings___0',D), + ( D=[E|_] -> + setarg(4,E,_) + ; + true + ) + ; + B=[_,_|D], + setarg(2,B,D), + ( D=[E|_] -> + setarg(4,E,B) + ; + true + ) + ) ) ). +make_head_matchings_explicit_memo_table(A,B,C) :- + D=suspension(E,active,A,B,C), + 'chr gen_id'(E), + nb_getval('$chr_store_multi_hash_chr_translate____make_head_matchings_explicit_memo_table___3-1',F), + insert_ht(F,A,D). +make_head_matchings_explicit_memo_lookup(A,B,C) :- + nb_getval('$chr_store_multi_hash_chr_translate____make_head_matchings_explicit_memo_table___3-1',H), + lookup_ht(H,A,G), + 'chr sbag_member'(D,G), + D=suspension(_,active,_,E,F), + !, + B=E, + C=F. +make_head_matchings_explicit_memo_lookup(_,_,_) :- + fail. first_occ_in_rule(A,B,C,_) :- - '$via1_multi_hash_occurrence/4-1'(B,H), + nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-1',I), + lookup_ht(I,B,H), 'chr sbag_member'(D,H), - D=suspension(_,mutable(active),_,_,_,_,_,E,F,G), + D=suspension(_,active,_,_,_,E,F,G,_), F=A, E - next_occ_in_rule(A,B,R,T,E,F) + append(U,V,W), + add_failing_occ(N,W,H,D,X,F,K,B,Y), + ( X==[chr_pp_void_info] -> + next_occ_in_rule(A,B,Q,S,E,F) ; - append(Y,E,A1), - add_failing_occ(O,X,I,T,B1,F,L,B,C1), - copy_term(K,D1), - variable_replacement(K,D1,E1), - copy_with_variable_replacement(K,F1,Z), - copy_with_variable_replacement(K,G1,C1), - copy_with_variable_replacement(G1,H1,E1), - append(A1,F1,I1), - append(I1,H1,J1), - copy_with_variable_replacement(L,K1,Z), - copy_with_variable_replacement(L,L1,C1), - append(L1,J1,M1), - append([chr_pp_active_constraint(F)|K1],M1,N1), - list2conj(B1,O1), - copy_term((A1,J1,N1,O1,F),(P1,_,Q1,R1,S1)), - term_variables(P1-S1,T1), - flatten_stuff(Q1,U1), - flatten_stuff(R1,V1), - ( - O1\=chr_pp_void_info, - unify_stuff(T1,U1,V1), - !, - ( guard_entailment:entails_guard(Q1,R1) -> - passive(A,T) + append(X,E,Z), + add_failing_occ(N,W,H,S,A1,F,K,B,B1), + copy_term(J,C1), + variable_replacement(J,C1,D1), + copy_with_variable_replacement(J,E1,Y), + copy_with_variable_replacement(J,F1,B1), + copy_with_variable_replacement(F1,G1,D1), + append(Z,E1,H1), + append(H1,G1,I1), + copy_with_variable_replacement(K,J1,Y), + copy_with_variable_replacement(K,K1,B1), + append(K1,I1,L1), + append([chr_pp_active_constraint(F)|J1],L1,M1), + list2conj(A1,N1), + copy_term((Z,I1,M1,N1,F),(_,_,O1,P1,_)), + ( N1\=chr_pp_void_info -> + ( guard_entailment:entails_guard(O1,P1) -> + passive(A,S) ; true ) @@ -7309,379 +15314,3565 @@ next_occ_in_rule(A,B,C,D,E,F) :- true ), !, - next_occ_in_rule(A,B,R,T,A1,F) + next_occ_in_rule(A,B,Q,S,Z,F) ). next_occ_in_rule(_,_,_,_,_,_). multiple_occ_constraints_checked(A) :- - chr_pp_flag(occurrence_subsumption,on), - nb_getval('$chr_store_global_ground_chr_translate:prev_guard_list/7',E), - 'chr sbag_member'(B,E), - B=suspension(_,mutable(active),_,_,_,_,C,D,_,_,_,_,_), - D=0, - '$via1_multi_hash_rule/2-1'(C,L), - 'chr sbag_member'(J,L), - J=suspension(_,mutable(active),_,_,_,_,_,K), - '$via1_multi_hash_occurrence/4-3'(C,I), - 'chr sbag_member'(F,I), - F=suspension(_,mutable(active),_,_,_,_,G,H,_,_), - '$via1_multi_hash_occurrence/4-1'(G,Q), - 'chr sbag_member'(M,Q), - M=suspension(_,mutable(active),_,_,_,_,_,N,O,P), - M\==F, - O=C, - N - '$delete_from_store_prev_guard_list/7'(A) + nb_getval('$chr_store_global_ground_chr_translate____prev_guard_list___6',D), + 'chr sbag_member'(B,D), + B=suspension(_,active,_,_,C,_,_,_,_,_), + ( + nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-3',Z), + lookup_ht1(Z,C,C,H), + 'chr sbag_member'(E,H), + E=suspension(_,active,_,_,F,G,_,_,_), + nb_getval('$chr_store_multi_hash_chr_translate____rule___2-1',Y), + lookup_ht1(Y,C,C,K), + 'chr sbag_member'(I,K), + I=suspension(_,active,_,_,_,J), + nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-1',X), + lookup_ht(X,F,P), + 'chr sbag_member'(L,P), + L=suspension(_,active,_,_,_,M,N,O,_), + L\==E, + N=C, + M + nb_getval('$chr_store_global_ground_chr_translate____prev_guard_list___6',T), + T=[_|U], + b_setval('$chr_store_global_ground_chr_translate____prev_guard_list___6',U), + ( U=[V|_] -> + setarg(4,V,_) + ; + true + ) + ; + S=[_,_|U], + setarg(2,S,U), + ( U=[V|_] -> + setarg(4,V,S) + ; + true + ) + ), + nb_getval('$chr_store_multi_hash_chr_translate____prev_guard_list___6-1',W), + delete_ht(W,C,B) + ). +multiple_occ_constraints_checked(A) :- + B=suspension(C,active,_,A), + 'chr gen_id'(C), + nb_getval('$chr_store_global_ground_chr_translate____multiple_occ_constraints_checked___1',D), + E=[B|D], + b_setval('$chr_store_global_ground_chr_translate____multiple_occ_constraints_checked___1',E), + ( D=[F|_] -> + setarg(3,F,E) ; true ). -multiple_occ_constraints_checked(A) :- - insert_constraint_internal(_,_,B,true,multiple_occ_constraints_checked(A),[A]), - '$insert_in_store_multiple_occ_constraints_checked/1'(B). type_definition(A,B) :- - ( var(C) -> - insert_constraint_internal(E,D,C,chr_translate:type_definition(A,B),type_definition(A,B),[A,B]) + type_definition___2__0(A,B,_). +type_definition___2__0(A,_,B) :- + nb_getval('$chr_store_global_list_chr_translate____type_definition___2',E), + 'chr sbag_member'(C,E), + C=suspension(_,active,_,_,_,D,_), + ( + functor(A,F,G), + functor(D,F,G), + !, + C=suspension(_,_,_,_,_,L1,M1), + setarg(2,C,removed), + term_variables(term(L1,M1),H), + arg(5,C,H1), + ( var(H1) -> + nb_getval('$chr_store_global_list_chr_translate____type_definition___2',I1), + I1=[_|J1], + b_setval('$chr_store_global_list_chr_translate____type_definition___2',J1), + ( J1=[K1|_] -> + setarg(5,K1,_) + ; + true + ) + ; + H1=[_,_|J1], + setarg(2,H1,J1), + ( J1=[K1|_] -> + setarg(5,K1,H1) + ; + true + ) + ), + detach_type_definition___2(H,C), + ( var(B) -> + true + ; + B=suspension(_,E1,_,_,_,F1,G1), + setarg(2,B,removed), + ( E1==not_stored_yet -> + I=[] + ; + term_variables(term(F1,G1),I), + arg(5,B,A1), + ( var(A1) -> + nb_getval('$chr_store_global_list_chr_translate____type_definition___2',B1), + B1=[_|C1], + b_setval('$chr_store_global_list_chr_translate____type_definition___2',C1), + ( C1=[D1|_] -> + setarg(5,D1,_) + ; + true + ) + ; + A1=[_,_|C1], + setarg(2,A1,C1), + ( C1=[D1|_] -> + setarg(5,D1,A1) + ; + true + ) + ), + detach_type_definition___2(I,B) + ) + ), + chr_error(type_error,'Multiple definitions for type: ~w/~w. +',[F,G]) ; - activate_constraint(E,D,C,_) + functor(D,J,K), + functor(A,J,K), + !, + C=suspension(_,_,_,_,_,Y,Z), + setarg(2,C,removed), + term_variables(term(Y,Z),L), + arg(5,C,U), + ( var(U) -> + nb_getval('$chr_store_global_list_chr_translate____type_definition___2',V), + V=[_|W], + b_setval('$chr_store_global_list_chr_translate____type_definition___2',W), + ( W=[X|_] -> + setarg(5,X,_) + ; + true + ) + ; + U=[_,_|W], + setarg(2,U,W), + ( W=[X|_] -> + setarg(5,X,U) + ; + true + ) + ), + detach_type_definition___2(L,C), + ( var(B) -> + true + ; + B=suspension(_,R,_,_,_,S,T), + setarg(2,B,removed), + ( R==not_stored_yet -> + M=[] + ; + term_variables(term(S,T),M), + arg(5,B,N), + ( var(N) -> + nb_getval('$chr_store_global_list_chr_translate____type_definition___2',O), + O=[_|P], + b_setval('$chr_store_global_list_chr_translate____type_definition___2',P), + ( P=[Q|_] -> + setarg(5,Q,_) + ; + true + ) + ; + N=[_,_|P], + setarg(2,N,P), + ( P=[Q|_] -> + setarg(5,Q,N) + ; + true + ) + ), + detach_type_definition___2(M,B) + ) + ), + chr_error(type_error,'Multiple definitions for type: ~w/~w. +',[J,K]) + ). +type_definition___2__0(A,_,B) :- + nb_getval('$chr_store_global_list_chr_translate____type_alias___2',E), + 'chr sbag_member'(C,E), + C=suspension(_,active,_,_,_,D,_), + functor(A,F,G), + functor(D,F,G), + !, + C=suspension(_,_,_,_,_,U,V), + setarg(2,C,removed), + term_variables(term(U,V),H), + arg(5,C,Q), + ( var(Q) -> + nb_getval('$chr_store_global_list_chr_translate____type_alias___2',R), + R=[_|S], + b_setval('$chr_store_global_list_chr_translate____type_alias___2',S), + ( S=[T|_] -> + setarg(5,T,_) + ; + true + ) + ; + Q=[_,_|S], + setarg(2,Q,S), + ( S=[T|_] -> + setarg(5,T,Q) + ; + true + ) ), - ( E==yes -> - '$insert_in_store_type_definition/2'(C), - 'attach_type_definition/2'(D,C) + detach_type_alias___2(H,C), + ( var(B) -> + true + ; + B=suspension(_,N,_,_,_,O,P), + setarg(2,B,removed), + ( N==not_stored_yet -> + I=[] + ; + term_variables(term(O,P),I), + arg(5,B,J), + ( var(J) -> + nb_getval('$chr_store_global_list_chr_translate____type_definition___2',K), + K=[_|L], + b_setval('$chr_store_global_list_chr_translate____type_definition___2',L), + ( L=[M|_] -> + setarg(5,M,_) + ; + true + ) + ; + J=[_,_|L], + setarg(2,J,L), + ( L=[M|_] -> + setarg(5,M,J) + ; + true + ) + ), + detach_type_definition___2(I,B) + ) + ), + chr_error(type_error,'Multiple definitions for type, once in a type definition and once as a type alias: ~w/~w. +',[F,G]). +type_definition___2__0(A,B,C) :- + nb_getval('$chr_store_global_list_chr_translate____unalias_type___2',D), + !, + ( var(C) -> + C=suspension(E,not_stored_yet,t,0,_,A,B), + 'chr gen_id'(E) + ; + true + ), + type_definition___2__0__0__5(D,A,B,C). +type_definition___2__0__0__5([],B,C,A) :- + type_definition___2__1(B,C,A). +type_definition___2__0__0__5([F|G],A,B,C) :- + ( F=suspension(_,active,_,D,E), + nonvar(A), + functor(A,I,J), + functor(D,I,J) -> + F=suspension(_,_,_,X,_), + setarg(2,F,removed), + term_variables(X,H), + arg(3,F,T), + ( var(T) -> + nb_getval('$chr_store_global_list_chr_translate____unalias_type___2',U), + U=[_|V], + b_setval('$chr_store_global_list_chr_translate____unalias_type___2',V), + ( V=[W|_] -> + setarg(3,W,_) + ; + true + ) + ; + T=[_,_|V], + setarg(2,T,V), + ( V=[W|_] -> + setarg(3,W,T) + ; + true + ) + ), + detach_unalias_type___2(H,F), + arg(2,C,N), + setarg(2,C,active), + arg(4,C,M), + L is M+1, + setarg(4,C,L), + ( N==not_stored_yet -> + C=suspension(_,_,_,_,_,O,P), + term_variables(term(O,P),K), + nb_getval('$chr_store_global_list_chr_translate____type_definition___2',Q), + R=[C|Q], + b_setval('$chr_store_global_list_chr_translate____type_definition___2',R), + ( Q=[S|_] -> + setarg(5,S,R) + ; + true + ), + attach_type_definition___2(K,C) + ; + true + ), + E=D, + ( C=suspension(_,active,_,L,_,_,_) -> + setarg(2,C,inactive), + type_definition___2__0__0__5(G,A,B,C) + ; + true + ) + ; + type_definition___2__0__0__5(G,A,B,C) + ). +type_definition___2__0(A,B,C) :- + ( var(C) -> + C=suspension(D,not_stored_yet,t,0,_,A,B), + 'chr gen_id'(D) + ; + true + ), + type_definition___2__1(A,B,C). +type_definition___2__1(A,B,C) :- + nb_getval('$chr_store_global_ground_chr_translate____dynamic_type_check___0',D), + !, + type_definition___2__1__0__7(D,A,B,C). +type_definition___2__1__0__7([],B,C,A) :- + type_definition___2__2(B,C,A). +type_definition___2__1__0__7([D|E],B,C,A) :- + ( D=suspension(_,active,_,_), + K=t(231,A,D), + '$novel_production'(A,K), + '$novel_production'(D,K) -> + '$extend_history'(A,K), + arg(2,A,M), + setarg(2,A,active), + arg(4,A,L), + J is L+1, + setarg(4,A,J), + ( M==not_stored_yet -> + A=suspension(_,_,_,_,_,N,O), + term_variables(term(N,O),I), + nb_getval('$chr_store_global_list_chr_translate____type_definition___2',P), + Q=[A|P], + b_setval('$chr_store_global_list_chr_translate____type_definition___2',Q), + ( P=[R|_] -> + setarg(5,R,Q) + ; + true + ), + attach_type_definition___2(I,A) + ; + true + ), + copy_term_nat(B-C,F-G), + maplist(dynamic_type_check_clause(F),G,H), + dynamic_type_check_clauses(H), + ( A=suspension(_,active,_,J,_,_,_) -> + setarg(2,A,inactive), + type_definition___2__1__0__7(E,B,C,A) + ; + true + ) + ; + type_definition___2__1__0__7(E,B,C,A) + ). +type_definition___2__1(A,B,C) :- + type_definition___2__2(A,B,C). +type_definition___2__2(A,B,C) :- + nb_getval('$chr_store_global_list_chr_translate____atomic_type___1',D), + !, + type_definition___2__2__0__8(D,A,B,C). +type_definition___2__2__0__8([],B,C,A) :- + type_definition___2__3(B,C,A). +type_definition___2__2__0__8([E|F],A,B,C) :- + ( E=suspension(_,active,_,D), + functor(D,H,I), + functor(A,H,I) -> + E=suspension(_,_,_,W), + setarg(2,E,removed), + term_variables(W,G), + arg(3,E,S), + ( var(S) -> + nb_getval('$chr_store_global_list_chr_translate____atomic_type___1',T), + T=[_|U], + b_setval('$chr_store_global_list_chr_translate____atomic_type___1',U), + ( U=[V|_] -> + setarg(3,V,_) + ; + true + ) + ; + S=[_,_|U], + setarg(2,S,U), + ( U=[V|_] -> + setarg(3,V,S) + ; + true + ) + ), + detach_atomic_type___1(G,E), + arg(2,C,M), + setarg(2,C,active), + arg(4,C,L), + K is L+1, + setarg(4,C,K), + ( M==not_stored_yet -> + C=suspension(_,_,_,_,_,N,O), + term_variables(term(N,O),J), + nb_getval('$chr_store_global_list_chr_translate____type_definition___2',P), + Q=[C|P], + b_setval('$chr_store_global_list_chr_translate____type_definition___2',Q), + ( P=[R|_] -> + setarg(5,R,Q) + ; + true + ), + attach_type_definition___2(J,C) + ; + true + ), + maplist(atomic,B), + ( C=suspension(_,active,_,K,_,_,_) -> + setarg(2,C,inactive), + type_definition___2__2__0__8(F,A,B,C) + ; + true + ) + ; + type_definition___2__2__0__8(F,A,B,C) + ). +type_definition___2__2(A,B,C) :- + type_definition___2__3(A,B,C). +type_definition___2__3(A,B,C) :- + nb_getval('$chr_store_global_list_chr_translate____enumerated_atomic_type___2',D), + !, + type_definition___2__3__0__9(D,A,B,C). +type_definition___2__3__0__9([],B,C,A) :- + type_definition___2__4(B,C,A). +type_definition___2__3__0__9([F|G],A,B,C) :- + ( F=suspension(_,active,_,D,E), + functor(D,I,J), + functor(A,I,J) -> + F=suspension(_,_,_,X,_), + setarg(2,F,removed), + term_variables(X,H), + arg(3,F,T), + ( var(T) -> + nb_getval('$chr_store_global_list_chr_translate____enumerated_atomic_type___2',U), + U=[_|V], + b_setval('$chr_store_global_list_chr_translate____enumerated_atomic_type___2',V), + ( V=[W|_] -> + setarg(3,W,_) + ; + true + ) + ; + T=[_,_|V], + setarg(2,T,V), + ( V=[W|_] -> + setarg(3,W,T) + ; + true + ) + ), + detach_enumerated_atomic_type___2(H,F), + arg(2,C,N), + setarg(2,C,active), + arg(4,C,M), + L is M+1, + setarg(4,C,L), + ( N==not_stored_yet -> + C=suspension(_,_,_,_,_,O,P), + term_variables(term(O,P),K), + nb_getval('$chr_store_global_list_chr_translate____type_definition___2',Q), + R=[C|Q], + b_setval('$chr_store_global_list_chr_translate____type_definition___2',R), + ( Q=[S|_] -> + setarg(5,S,R) + ; + true + ), + attach_type_definition___2(K,C) + ; + true + ), + maplist(atomic,B), + E=B, + ( C=suspension(_,active,_,L,_,_,_) -> + setarg(2,C,inactive), + type_definition___2__3__0__9(G,A,B,C) + ; + true + ) + ; + type_definition___2__3__0__9(G,A,B,C) + ). +type_definition___2__3(A,B,C) :- + type_definition___2__4(A,B,C). +type_definition___2__4(_,_,A) :- + arg(2,A,E), + setarg(2,A,active), + arg(4,A,D), + C is D+1, + setarg(4,A,C), + ( E==not_stored_yet -> + A=suspension(_,_,_,_,_,F,G), + term_variables(term(F,G),B), + nb_getval('$chr_store_global_list_chr_translate____type_definition___2',H), + I=[A|H], + b_setval('$chr_store_global_list_chr_translate____type_definition___2',I), + ( H=[J|_] -> + setarg(5,J,I) + ; + true + ), + attach_type_definition___2(B,A) + ; + true + ). +type_alias(A,B) :- + type_alias___2__0(A,B,_). +type_alias___2__0(A,B,C) :- + var(A), + !, + ( var(C) -> + true + ; + C=suspension(_,I,_,_,_,J,K), + setarg(2,C,removed), + ( I==not_stored_yet -> + D=[] + ; + term_variables(term(J,K),D), + arg(5,C,E), + ( var(E) -> + nb_getval('$chr_store_global_list_chr_translate____type_alias___2',F), + F=[_|G], + b_setval('$chr_store_global_list_chr_translate____type_alias___2',G), + ( G=[H|_] -> + setarg(5,H,_) + ; + true + ) + ; + E=[_,_|G], + setarg(2,E,G), + ( G=[H|_] -> + setarg(5,H,E) + ; + true + ) + ), + detach_type_alias___2(D,C) + ) + ), + chr_error(type_error,'Variable alias definition: "~w". +',[(:-chr_type A==B)]). +type_alias___2__0(A,B,C) :- + var(B), + !, + ( var(C) -> + true + ; + C=suspension(_,I,_,_,_,J,K), + setarg(2,C,removed), + ( I==not_stored_yet -> + D=[] + ; + term_variables(term(J,K),D), + arg(5,C,E), + ( var(E) -> + nb_getval('$chr_store_global_list_chr_translate____type_alias___2',F), + F=[_|G], + b_setval('$chr_store_global_list_chr_translate____type_alias___2',G), + ( G=[H|_] -> + setarg(5,H,_) + ; + true + ) + ; + E=[_,_|G], + setarg(2,E,G), + ( G=[H|_] -> + setarg(5,H,E) + ; + true + ) + ), + detach_type_alias___2(D,C) + ) + ), + chr_error(type_error,'Variable alias definition: "~w". +',[(:-chr_type A==B)]). +type_alias___2__0(A,B,C) :- + functor(A,D,E), + functor(B,D,E), + copy_term((A,B),(F,G)), + subsumes(F,G), + !, + ( var(C) -> + true + ; + C=suspension(_,M,_,_,_,N,O), + setarg(2,C,removed), + ( M==not_stored_yet -> + H=[] + ; + term_variables(term(N,O),H), + arg(5,C,I), + ( var(I) -> + nb_getval('$chr_store_global_list_chr_translate____type_alias___2',J), + J=[_|K], + b_setval('$chr_store_global_list_chr_translate____type_alias___2',K), + ( K=[L|_] -> + setarg(5,L,_) + ; + true + ) + ; + I=[_,_|K], + setarg(2,I,K), + ( K=[L|_] -> + setarg(5,L,I) + ; + true + ) + ), + detach_type_alias___2(H,C) + ) + ), + chr_error(type_error,'Cyclic alias definition: "~w". +',[A==B]). +type_alias___2__0(A,B,C) :- + nb_getval('$chr_store_global_list_chr_translate____type_alias___2',G), + ( + 'chr sbag_member'(D,G), + D=suspension(_,active,_,_,_,E,F), + ( + ( + functor(A,H,I), + functor(E,H,I), + \+A\=E, + !, + D=suspension(_,_,_,_,_,G2,H2), + setarg(2,D,removed), + term_variables(term(G2,H2),L), + arg(5,D,C2), + ( var(C2) -> + nb_getval('$chr_store_global_list_chr_translate____type_alias___2',D2), + D2=[_|E2], + b_setval('$chr_store_global_list_chr_translate____type_alias___2',E2), + ( E2=[F2|_] -> + setarg(5,F2,_) + ; + true + ) + ; + C2=[_,_|E2], + setarg(2,C2,E2), + ( E2=[F2|_] -> + setarg(5,F2,C2) + ; + true + ) + ), + detach_type_alias___2(L,D), + ( var(C) -> + true + ; + C=suspension(_,Z1,_,_,_,A2,B2), + setarg(2,C,removed), + ( Z1==not_stored_yet -> + M=[] + ; + term_variables(term(A2,B2),M), + arg(5,C,V1), + ( var(V1) -> + nb_getval('$chr_store_global_list_chr_translate____type_alias___2',W1), + W1=[_|X1], + b_setval('$chr_store_global_list_chr_translate____type_alias___2',X1), + ( X1=[Y1|_] -> + setarg(5,Y1,_) + ; + true + ) + ; + V1=[_,_|X1], + setarg(2,V1,X1), + ( X1=[Y1|_] -> + setarg(5,Y1,V1) + ; + true + ) + ), + detach_type_alias___2(M,C) + ) + ), + copy_term_nat(A,J), + copy_term_nat(E,K), + J=K, + chr_error(type_error,'Ambiguous type aliases: you have defined + `~w'' + `~w'' + resulting in two definitions for "~w". +',[A==B,E==F,J]) + ; + functor(E,N,O), + functor(A,N,O), + \+E\=A, + !, + D=suspension(_,_,_,_,_,T1,U1), + setarg(2,D,removed), + term_variables(term(T1,U1),R), + arg(5,D,P1), + ( var(P1) -> + nb_getval('$chr_store_global_list_chr_translate____type_alias___2',Q1), + Q1=[_|R1], + b_setval('$chr_store_global_list_chr_translate____type_alias___2',R1), + ( R1=[S1|_] -> + setarg(5,S1,_) + ; + true + ) + ; + P1=[_,_|R1], + setarg(2,P1,R1), + ( R1=[S1|_] -> + setarg(5,S1,P1) + ; + true + ) + ), + detach_type_alias___2(R,D), + ( var(C) -> + true + ; + C=suspension(_,M1,_,_,_,N1,O1), + setarg(2,C,removed), + ( M1==not_stored_yet -> + S=[] + ; + term_variables(term(N1,O1),S), + arg(5,C,I1), + ( var(I1) -> + nb_getval('$chr_store_global_list_chr_translate____type_alias___2',J1), + J1=[_|K1], + b_setval('$chr_store_global_list_chr_translate____type_alias___2',K1), + ( K1=[L1|_] -> + setarg(5,L1,_) + ; + true + ) + ; + I1=[_,_|K1], + setarg(2,I1,K1), + ( K1=[L1|_] -> + setarg(5,L1,I1) + ; + true + ) + ), + detach_type_alias___2(S,C) + ) + ), + copy_term_nat(E,P), + copy_term_nat(A,Q), + P=Q, + chr_error(type_error,'Ambiguous type aliases: you have defined + `~w'' + `~w'' + resulting in two definitions for "~w". +',[E==F,A==B,P]) + ) + ; + functor(E,T,U), + functor(B,T,U), + copy_term_nat((A,B,E,F),(V,W,X,Y)), + subsumes(X,W), + !, + ( var(C) -> + true + ; + C=suspension(_,F1,_,_,_,G1,H1), + setarg(2,C,removed), + ( F1==not_stored_yet -> + Z=[] + ; + term_variables(term(G1,H1),Z), + arg(5,C,B1), + ( var(B1) -> + nb_getval('$chr_store_global_list_chr_translate____type_alias___2',C1), + C1=[_|D1], + b_setval('$chr_store_global_list_chr_translate____type_alias___2',D1), + ( D1=[E1|_] -> + setarg(5,E1,_) + ; + true + ) + ; + B1=[_,_|D1], + setarg(2,B1,D1), + ( D1=[E1|_] -> + setarg(5,E1,B1) + ; + true + ) + ), + detach_type_alias___2(Z,C) + ) + ), + type_alias(V,Y) + ) + ; + !, + ( var(C) -> + C=suspension(A1,not_stored_yet,t,0,_,A,B), + 'chr gen_id'(A1) + ; + true + ), + type_alias___2__0__0__7(G,A,B,C) + ). +type_alias___2__0__0__7([],B,C,A) :- + type_alias___2__1(B,C,A). +type_alias___2__0__0__7([F|G],A,B,C) :- + ( F=suspension(_,active,_,_,_,D,E), + functor(A,I,J), + functor(E,I,J), + copy_term_nat((D,E,A,B),(K,L,M,N)), + subsumes(M,L) -> + F=suspension(_,_,_,_,_,B1,C1), + setarg(2,F,removed), + term_variables(term(B1,C1),H), + arg(5,F,X), + ( var(X) -> + nb_getval('$chr_store_global_list_chr_translate____type_alias___2',Y), + Y=[_|Z], + b_setval('$chr_store_global_list_chr_translate____type_alias___2',Z), + ( Z=[A1|_] -> + setarg(5,A1,_) + ; + true + ) + ; + X=[_,_|Z], + setarg(2,X,Z), + ( Z=[A1|_] -> + setarg(5,A1,X) + ; + true + ) + ), + detach_type_alias___2(H,F), + arg(2,C,R), + setarg(2,C,active), + arg(4,C,Q), + P is Q+1, + setarg(4,C,P), + ( R==not_stored_yet -> + C=suspension(_,_,_,_,_,S,T), + term_variables(term(S,T),O), + nb_getval('$chr_store_global_list_chr_translate____type_alias___2',U), + V=[C|U], + b_setval('$chr_store_global_list_chr_translate____type_alias___2',V), + ( U=[W|_] -> + setarg(5,W,V) + ; + true + ), + attach_type_alias___2(O,C) + ; + true + ), + type_alias(K,N), + ( C=suspension(_,active,_,P,_,_,_) -> + setarg(2,C,inactive), + type_alias___2__0__0__7(G,A,B,C) + ; + true + ) + ; + type_alias___2__0__0__7(G,A,B,C) + ). +type_alias___2__0(A,B,C) :- + ( var(C) -> + C=suspension(D,not_stored_yet,t,0,_,A,B), + 'chr gen_id'(D) + ; + true + ), + type_alias___2__1(A,B,C). +type_alias___2__1(A,_,B) :- + nb_getval('$chr_store_global_list_chr_translate____type_definition___2',E), + 'chr sbag_member'(C,E), + C=suspension(_,active,_,_,_,D,_), + functor(D,F,G), + functor(A,F,G), + !, + C=suspension(_,_,_,_,_,U,V), + setarg(2,C,removed), + term_variables(term(U,V),H), + arg(5,C,Q), + ( var(Q) -> + nb_getval('$chr_store_global_list_chr_translate____type_definition___2',R), + R=[_|S], + b_setval('$chr_store_global_list_chr_translate____type_definition___2',S), + ( S=[T|_] -> + setarg(5,T,_) + ; + true + ) + ; + Q=[_,_|S], + setarg(2,Q,S), + ( S=[T|_] -> + setarg(5,T,Q) + ; + true + ) + ), + detach_type_definition___2(H,C), + ( var(B) -> + true + ; + B=suspension(_,N,_,_,_,O,P), + setarg(2,B,removed), + ( N==not_stored_yet -> + I=[] + ; + term_variables(term(O,P),I), + arg(5,B,J), + ( var(J) -> + nb_getval('$chr_store_global_list_chr_translate____type_alias___2',K), + K=[_|L], + b_setval('$chr_store_global_list_chr_translate____type_alias___2',L), + ( L=[M|_] -> + setarg(5,M,_) + ; + true + ) + ; + J=[_,_|L], + setarg(2,J,L), + ( L=[M|_] -> + setarg(5,M,J) + ; + true + ) + ), + detach_type_alias___2(I,B) + ) + ), + chr_error(type_error,'Multiple definitions for type, once in a type definition and once as a type alias: ~w/~w. +',[F,G]). +type_alias___2__1(A,B,C) :- + nb_getval('$chr_store_global_list_chr_translate____unalias_type___2',D), + !, + type_alias___2__1__0__10(D,A,B,C). +type_alias___2__1__0__10([],B,C,A) :- + type_alias___2__2(B,C,A). +type_alias___2__1__0__10([F|G],A,B,C) :- + ( F=suspension(_,active,_,D,E), + functor(A,I,J), + functor(D,I,J), + copy_term_nat((A,B),(K,L)), + D=K -> + F=suspension(_,_,_,Z,_), + setarg(2,F,removed), + term_variables(Z,H), + arg(3,F,V), + ( var(V) -> + nb_getval('$chr_store_global_list_chr_translate____unalias_type___2',W), + W=[_|X], + b_setval('$chr_store_global_list_chr_translate____unalias_type___2',X), + ( X=[Y|_] -> + setarg(3,Y,_) + ; + true + ) + ; + V=[_,_|X], + setarg(2,V,X), + ( X=[Y|_] -> + setarg(3,Y,V) + ; + true + ) + ), + detach_unalias_type___2(H,F), + arg(2,C,P), + setarg(2,C,active), + arg(4,C,O), + N is O+1, + setarg(4,C,N), + ( P==not_stored_yet -> + C=suspension(_,_,_,_,_,Q,R), + term_variables(term(Q,R),M), + nb_getval('$chr_store_global_list_chr_translate____type_alias___2',S), + T=[C|S], + b_setval('$chr_store_global_list_chr_translate____type_alias___2',T), + ( S=[U|_] -> + setarg(5,U,T) + ; + true + ), + attach_type_alias___2(M,C) + ; + true + ), + unalias_type(L,E), + ( C=suspension(_,active,_,N,_,_,_) -> + setarg(2,C,inactive), + type_alias___2__1__0__10(G,A,B,C) + ; + true + ) + ; + type_alias___2__1__0__10(G,A,B,C) + ). +type_alias___2__1(A,B,C) :- + type_alias___2__2(A,B,C). +type_alias___2__2(A,B,C) :- + nb_getval('$chr_store_global_list_chr_translate____static_type_check_var___3',D), + !, + type_alias___2__2__0__12(D,A,B,C). +type_alias___2__2__0__12([],B,C,A) :- + type_alias___2__3(B,C,A). +type_alias___2__2__0__12([G|H],A,B,C) :- + ( G=suspension(_,active,_,D,E,F), + functor(A,J,K), + functor(F,J,K) -> + G=suspension(_,_,_,_,Z,A1), + setarg(2,G,removed), + I=[Z|B1], + term_variables(A1,B1), + arg(3,G,V), + ( var(V) -> + nb_getval('$chr_store_global_list_chr_translate____static_type_check_var___3',W), + W=[_|X], + b_setval('$chr_store_global_list_chr_translate____static_type_check_var___3',X), + ( X=[Y|_] -> + setarg(3,Y,_) + ; + true + ) + ; + V=[_,_|X], + setarg(2,V,X), + ( X=[Y|_] -> + setarg(3,Y,V) + ; + true + ) + ), + detach_static_type_check_var___3(I,G), + arg(2,C,P), + setarg(2,C,active), + arg(4,C,O), + N is O+1, + setarg(4,C,N), + ( P==not_stored_yet -> + C=suspension(_,_,_,_,_,Q,R), + term_variables(term(Q,R),M), + nb_getval('$chr_store_global_list_chr_translate____type_alias___2',S), + T=[C|S], + b_setval('$chr_store_global_list_chr_translate____type_alias___2',T), + ( S=[U|_] -> + setarg(5,U,T) + ; + true + ), + attach_type_alias___2(M,C) + ; + true + ), + copy_term_nat(A-B,F-L), + static_type_check_var(D,E,L), + ( C=suspension(_,active,_,N,_,_,_) -> + setarg(2,C,inactive), + type_alias___2__2__0__12(H,A,B,C) + ; + true + ) + ; + type_alias___2__2__0__12(H,A,B,C) + ). +type_alias___2__2(A,B,C) :- + type_alias___2__3(A,B,C). +type_alias___2__3(A,B,C) :- + nb_getval('$chr_store_global_ground_chr_translate____dynamic_type_check___0',D), + !, + type_alias___2__3__0__13(D,A,B,C). +type_alias___2__3__0__13([],B,C,A) :- + type_alias___2__4(B,C,A). +type_alias___2__3__0__13([D|E],B,C,A) :- + ( D=suspension(_,active,_,_), + K=t(232,A,D), + '$novel_production'(A,K), + '$novel_production'(D,K) -> + '$extend_history'(A,K), + arg(2,A,M), + setarg(2,A,active), + arg(4,A,L), + J is L+1, + setarg(4,A,J), + ( M==not_stored_yet -> + A=suspension(_,_,_,_,_,N,O), + term_variables(term(N,O),I), + nb_getval('$chr_store_global_list_chr_translate____type_alias___2',P), + Q=[A|P], + b_setval('$chr_store_global_list_chr_translate____type_alias___2',Q), + ( P=[R|_] -> + setarg(5,R,Q) + ; + true + ), + attach_type_alias___2(I,A) + ; + true + ), + copy_term_nat(B-C,F-G), + dynamic_type_check_alias_clause(F,G,H), + dynamic_type_check_clauses([H]), + ( A=suspension(_,active,_,J,_,_,_) -> + setarg(2,A,inactive), + type_alias___2__3__0__13(E,B,C,A) + ; + true + ) + ; + type_alias___2__3__0__13(E,B,C,A) + ). +type_alias___2__3(A,B,C) :- + type_alias___2__4(A,B,C). +type_alias___2__4(A,B,C) :- + nb_getval('$chr_store_global_list_chr_translate____atomic_type___1',D), + !, + type_alias___2__4__0__14(D,A,B,C). +type_alias___2__4__0__14([],B,C,A) :- + type_alias___2__5(B,C,A). +type_alias___2__4__0__14([E|F],A,B,C) :- + ( E=suspension(_,active,_,D), + functor(D,H,I), + functor(A,H,I) -> + E=suspension(_,_,_,X), + setarg(2,E,removed), + term_variables(X,G), + arg(3,E,T), + ( var(T) -> + nb_getval('$chr_store_global_list_chr_translate____atomic_type___1',U), + U=[_|V], + b_setval('$chr_store_global_list_chr_translate____atomic_type___1',V), + ( V=[W|_] -> + setarg(3,W,_) + ; + true + ) + ; + T=[_,_|V], + setarg(2,T,V), + ( V=[W|_] -> + setarg(3,W,T) + ; + true + ) + ), + detach_atomic_type___1(G,E), + arg(2,C,N), + setarg(2,C,active), + arg(4,C,M), + L is M+1, + setarg(4,C,L), + ( N==not_stored_yet -> + C=suspension(_,_,_,_,_,O,P), + term_variables(term(O,P),K), + nb_getval('$chr_store_global_list_chr_translate____type_alias___2',Q), + R=[C|Q], + b_setval('$chr_store_global_list_chr_translate____type_alias___2',R), + ( Q=[S|_] -> + setarg(5,S,R) + ; + true + ), + attach_type_alias___2(K,C) + ; + true + ), + atomic(B), + copy_term_nat(A-B,D-J), + atomic_type(J), + ( C=suspension(_,active,_,L,_,_,_) -> + setarg(2,C,inactive), + type_alias___2__4__0__14(F,A,B,C) + ; + true + ) + ; + type_alias___2__4__0__14(F,A,B,C) + ). +type_alias___2__4(A,B,C) :- + type_alias___2__5(A,B,C). +type_alias___2__5(A,B,C) :- + nb_getval('$chr_store_global_list_chr_translate____enumerated_atomic_type___2',D), + !, + type_alias___2__5__0__15(D,A,B,C). +type_alias___2__5__0__15([],B,C,A) :- + type_alias___2__6(B,C,A). +type_alias___2__5__0__15([F|G],A,B,C) :- + ( F=suspension(_,active,_,D,E), + functor(D,I,J), + functor(A,I,J) -> + F=suspension(_,_,_,Y,_), + setarg(2,F,removed), + term_variables(Y,H), + arg(3,F,U), + ( var(U) -> + nb_getval('$chr_store_global_list_chr_translate____enumerated_atomic_type___2',V), + V=[_|W], + b_setval('$chr_store_global_list_chr_translate____enumerated_atomic_type___2',W), + ( W=[X|_] -> + setarg(3,X,_) + ; + true + ) + ; + U=[_,_|W], + setarg(2,U,W), + ( W=[X|_] -> + setarg(3,X,U) + ; + true + ) + ), + detach_enumerated_atomic_type___2(H,F), + arg(2,C,O), + setarg(2,C,active), + arg(4,C,N), + M is N+1, + setarg(4,C,M), + ( O==not_stored_yet -> + C=suspension(_,_,_,_,_,P,Q), + term_variables(term(P,Q),L), + nb_getval('$chr_store_global_list_chr_translate____type_alias___2',R), + S=[C|R], + b_setval('$chr_store_global_list_chr_translate____type_alias___2',S), + ( R=[T|_] -> + setarg(5,T,S) + ; + true + ), + attach_type_alias___2(L,C) + ; + true + ), + atomic(B), + copy_term_nat(A-B,D-K), + enumerated_atomic_type(K,E), + ( C=suspension(_,active,_,M,_,_,_) -> + setarg(2,C,inactive), + type_alias___2__5__0__15(G,A,B,C) + ; + true + ) + ; + type_alias___2__5__0__15(G,A,B,C) + ). +type_alias___2__5(A,B,C) :- + type_alias___2__6(A,B,C). +type_alias___2__6(_,_,A) :- + arg(2,A,E), + setarg(2,A,active), + arg(4,A,D), + C is D+1, + setarg(4,A,C), + ( E==not_stored_yet -> + A=suspension(_,_,_,_,_,F,G), + term_variables(term(F,G),B), + nb_getval('$chr_store_global_list_chr_translate____type_alias___2',H), + I=[A|H], + b_setval('$chr_store_global_list_chr_translate____type_alias___2',I), + ( H=[J|_] -> + setarg(5,J,I) + ; + true + ), + attach_type_alias___2(B,A) ; true ). constraint_type(A,B) :- - insert_constraint_internal(_,_,C,true,constraint_type(A,B),[A,B]), - '$insert_in_store_constraint_type/2'(C). -get_type_definition(A,B) :- - nonvar(A), - 'chr global_term_ref_1'(F), - get_attr(F,chr_translate,G), - G=H, - 'chr sbag_member'(C,H), - C=suspension(_,mutable(active),_,_,_,_,D,E), - nonvar(D), - functor(D,I,J), - functor(A,I,J), + constraint_type___2__0(A,B,_). +constraint_type___2__0(A,B,C) :- + nb_getval('$chr_store_global_ground_chr_translate____static_type_check___0',D), !, - copy_term((D,E),(K,L)), - K=A, - B=L. + C=suspension(E,not_stored_yet,_,A,B), + 'chr gen_id'(E), + constraint_type___2__0__0__2(D,A,B,C). +constraint_type___2__0__0__2([],B,C,A) :- + constraint_type___2__1(B,C,A). +constraint_type___2__0__0__2([D|E],B,C,A) :- + ( D=suspension(_,active,_,_) -> + arg(2,A,H), + setarg(2,A,active), + ( H==not_stored_yet -> + nb_getval('$chr_store_global_ground_chr_translate____constraint_type___2',I), + J=[A|I], + b_setval('$chr_store_global_ground_chr_translate____constraint_type___2',J), + ( I=[K|_] -> + setarg(3,K,J) + ; + true + ), + nb_getval('$chr_store_multi_hash_chr_translate____constraint_type___2-1',L), + insert_ht(L,B,A) + ; + true + ), + forall((member(F,C),sub_term(F,G)),(get_type_definition(G,_)->true;chr_error(type_error,'Undefined type "~w" used in type declaration of "~w". +',[G,B]))), + ( A=suspension(_,active,_,_,_) -> + setarg(2,A,inactive), + constraint_type___2__0__0__2(E,B,C,A) + ; + true + ) + ; + constraint_type___2__0__0__2(E,B,C,A) + ). +constraint_type___2__0(A,B,C) :- + C=suspension(D,not_stored_yet,_,A,B), + 'chr gen_id'(D), + constraint_type___2__1(A,B,C). +constraint_type___2__1(A,_,B) :- + arg(2,B,C), + setarg(2,B,active), + ( C==not_stored_yet -> + nb_getval('$chr_store_global_ground_chr_translate____constraint_type___2',D), + E=[B|D], + b_setval('$chr_store_global_ground_chr_translate____constraint_type___2',E), + ( D=[F|_] -> + setarg(3,F,E) + ; + true + ), + nb_getval('$chr_store_multi_hash_chr_translate____constraint_type___2-1',G), + insert_ht(G,A,B) + ; + true + ). +get_type_definition(A,_) :- + \+ground(A), + !, + chr_error(type_error,'Non-ground type in constraint definition: "~w". +',[A]). +get_type_definition(A,B) :- + nb_getval('$chr_store_global_list_chr_translate____type_alias___2',F), + 'chr sbag_member'(C,F), + C=suspension(_,active,_,_,_,D,E), + functor(D,G,H), + functor(A,G,H), + copy_term_nat((D,E),(I,J)), + I=A, + !, + ( get_type_definition(J,B) -> + true + ; + chr_error(type_error,'Could not find type definition for "~w" (accessed via alias "~w"). +',[J,I]), + fail + ). +get_type_definition(A,B) :- + nb_getval('$chr_store_global_list_chr_translate____type_definition___2',F), + 'chr sbag_member'(C,F), + C=suspension(_,active,_,_,_,D,E), + nonvar(D), + functor(D,G,H), + functor(A,G,H), + copy_term_nat((D,E),(I,J)), + I=A, + !, + B=J. +get_type_definition(A,B) :- + atomic_builtin_type(A,_,_), + !, + B=[A]. +get_type_definition(A,B) :- + compound_builtin_type(A,_,_,_), + !, + B=[A]. get_type_definition(_,_) :- fail. get_constraint_type(A,B) :- - '$via1_multi_hash_constraint_type/2-1'(A,E), + nb_getval('$chr_store_multi_hash_chr_translate____constraint_type___2-1',F), + lookup_ht(F,A,E), 'chr sbag_member'(C,E), - C=suspension(_,mutable(active),_,_,_,_,_,D), + C=suspension(_,active,_,_,D), !, B=D. get_constraint_type(_,_) :- fail. -add_type_information([],[],A) :- +unalias_type(A,B) :- + unalias_type___2__0(A,B,_). +unalias_type___2__0(A,B,C) :- + var(A), + !, + ( var(C) -> + true + ; + C=suspension(_,_,_,I,_), + setarg(2,C,removed), + term_variables(I,D), + arg(3,C,E), + ( var(E) -> + nb_getval('$chr_store_global_list_chr_translate____unalias_type___2',F), + F=[_|G], + b_setval('$chr_store_global_list_chr_translate____unalias_type___2',G), + ( G=[H|_] -> + setarg(3,H,_) + ; + true + ) + ; + E=[_,_|G], + setarg(2,E,G), + ( G=[H|_] -> + setarg(3,H,E) + ; + true + ) + ), + detach_unalias_type___2(D,C) + ), + B=A. +unalias_type___2__0(A,B,C) :- + nb_getval('$chr_store_global_list_chr_translate____type_alias___2',G), + 'chr sbag_member'(D,G), + D=suspension(_,active,_,_,_,E,F), + functor(E,H,I), + functor(A,H,I), + copy_term_nat((E,F),(J,K)), + A=J, + !, + ( var(C) -> + true + ; + C=suspension(_,_,_,Q,_), + setarg(2,C,removed), + term_variables(Q,L), + arg(3,C,M), + ( var(M) -> + nb_getval('$chr_store_global_list_chr_translate____unalias_type___2',N), + N=[_|O], + b_setval('$chr_store_global_list_chr_translate____unalias_type___2',O), + ( O=[P|_] -> + setarg(3,P,_) + ; + true + ) + ; + M=[_,_|O], + setarg(2,M,O), + ( O=[P|_] -> + setarg(3,P,M) + ; + true + ) + ), + detach_unalias_type___2(L,C) + ), + unalias_type(K,B). +unalias_type___2__0(A,B,C) :- + nb_getval('$chr_store_global_list_chr_translate____type_definition___2',F), + 'chr sbag_member'(D,F), + D=suspension(_,active,_,_,_,E,_), + nonvar(E), + functor(E,G,H), + functor(A,G,H), + !, + ( var(C) -> + true + ; + C=suspension(_,_,_,N,_), + setarg(2,C,removed), + term_variables(N,I), + arg(3,C,J), + ( var(J) -> + nb_getval('$chr_store_global_list_chr_translate____unalias_type___2',K), + K=[_|L], + b_setval('$chr_store_global_list_chr_translate____unalias_type___2',L), + ( L=[M|_] -> + setarg(3,M,_) + ; + true + ) + ; + J=[_,_|L], + setarg(2,J,L), + ( L=[M|_] -> + setarg(3,M,J) + ; + true + ) + ), + detach_unalias_type___2(I,C) + ), + B=A. +unalias_type___2__0(A,B,C) :- + atomic_builtin_type(A,_,_), + !, + ( var(C) -> + true + ; + C=suspension(_,_,_,I,_), + setarg(2,C,removed), + term_variables(I,D), + arg(3,C,E), + ( var(E) -> + nb_getval('$chr_store_global_list_chr_translate____unalias_type___2',F), + F=[_|G], + b_setval('$chr_store_global_list_chr_translate____unalias_type___2',G), + ( G=[H|_] -> + setarg(3,H,_) + ; + true + ) + ; + E=[_,_|G], + setarg(2,E,G), + ( G=[H|_] -> + setarg(3,H,E) + ; + true + ) + ), + detach_unalias_type___2(D,C) + ), + B=A. +unalias_type___2__0(A,B,C) :- + compound_builtin_type(A,_,_,_), + !, + ( var(C) -> + true + ; + C=suspension(_,_,_,I,_), + setarg(2,C,removed), + term_variables(I,D), + arg(3,C,E), + ( var(E) -> + nb_getval('$chr_store_global_list_chr_translate____unalias_type___2',F), + F=[_|G], + b_setval('$chr_store_global_list_chr_translate____unalias_type___2',G), + ( G=[H|_] -> + setarg(3,H,_) + ; + true + ) + ; + E=[_,_|G], + setarg(2,E,G), + ( G=[H|_] -> + setarg(3,H,E) + ; + true + ) + ), + detach_unalias_type___2(D,C) + ), + B=A. +unalias_type___2__0(A,B,C) :- + ( var(C) -> + C=suspension(E,active,_,A,B), + term_variables(A,D), + 'chr gen_id'(E), + nb_getval('$chr_store_global_list_chr_translate____unalias_type___2',F), + G=[C|F], + b_setval('$chr_store_global_list_chr_translate____unalias_type___2',G), + ( F=[H|_] -> + setarg(3,H,G) + ; + true + ), + attach_unalias_type___2(D,C) + ; + setarg(2,C,active) + ). +types_modes_condition([],[],A) :- !, A=true. -add_type_information([B|C],[D|E],A) :- - nb_getval('$chr_store_global_ground_chr_translate:constraint_mode/2',I), +types_modes_condition([B|C],[D|E],A) :- + nb_getval('$chr_store_global_ground_chr_translate____constraint_mode___2',I), 'chr sbag_member'(F,I), - F=suspension(_,mutable(active),_,_,_,_,G,H), + F=suspension(_,active,_,_,G,H), G=J/K, functor(B,J,K), !, B=..[_|L], - D=..[_|M], - add_mode_info(H,L,N), - A=(N,O), - ( get_constraint_type(J/K,P) -> - types2condition(P,L,M,H,Q), - list2conj(Q,R), - O=(R,S), - add_type_information(C,E,S) - ; - add_type_information(C,E,O) - ). -add_type_information([A|_],_,_) :- + A=(M,N,O), + modes_condition(H,L,M), + get_constraint_type_det(J/K,P), + D=..[_|Q], + types_condition(P,L,Q,H,N), + types_modes_condition(C,E,O). +types_modes_condition([A|_],_,_) :- !, functor(A,B,C), - format('CHR compiler ERROR: mode information missing for ~w. -',[B/C]), - format(' `--> Most likely this is a bug in the compiler itself. -',[]), - format(' Please contact the maintainers. -',[]), + chr_error(internal,'Mode information missing for ~w. +',[B/C]). +types_modes_condition(A,B,C) :- + D=suspension(E,active,_,A,B,C), + 'chr gen_id'(E), + nb_getval('$chr_store_global_ground_chr_translate____types_modes_condition___3',F), + G=[D|F], + b_setval('$chr_store_global_ground_chr_translate____types_modes_condition___3',G), + ( F=[H|_] -> + setarg(3,H,G) + ; + true + ). +static_type_check :- + static_type_check___0__0(_). +static_type_check___0__0(A) :- + nb_getval('$chr_store_global_ground_chr_translate____constraint_type___2',B), + !, + A=suspension(C,not_stored_yet,t,_), + 'chr gen_id'(C), + static_type_check___0__0__0__1(B,A). +static_type_check___0__0__0__1([],A) :- + static_type_check___0__1(A). +static_type_check___0__0__0__1([D|E],A) :- + ( D=suspension(_,active,_,B,C) -> + arg(2,A,H), + setarg(2,A,active), + ( H==not_stored_yet -> + nb_getval('$chr_store_global_ground_chr_translate____static_type_check___0',I), + J=[A|I], + b_setval('$chr_store_global_ground_chr_translate____static_type_check___0',J), + ( I=[K|_] -> + setarg(4,K,J) + ; + true + ) + ; + true + ), + forall((member(F,C),sub_term(F,G)),(get_type_definition(G,_)->true;chr_error(type_error,'Undefined type "~w" used in type declaration of "~w". +',[G,B]))), + ( A=suspension(_,active,_,_) -> + setarg(2,A,inactive), + static_type_check___0__0__0__1(E,A) + ; + true + ) + ; + static_type_check___0__0__0__1(E,A) + ). +static_type_check___0__0(A) :- + A=suspension(B,not_stored_yet,t,_), + 'chr gen_id'(B), + static_type_check___0__1(A). +static_type_check___0__1(A) :- + nb_getval('$chr_store_global_ground_chr_translate____rule___2',B), + !, + static_type_check___0__1__0__2(B,A). +static_type_check___0__1__0__2([],A) :- + static_type_check___0__2(A). +static_type_check___0__1__0__2([C|D],A) :- + ( C=suspension(_,active,_,_,_,B), + S=t(209,C,A), + '$novel_production'(C,S), + '$novel_production'(A,S) -> + '$extend_history'(A,S), + arg(2,A,T), + setarg(2,A,active), + ( T==not_stored_yet -> + nb_getval('$chr_store_global_ground_chr_translate____static_type_check___0',U), + V=[A|U], + b_setval('$chr_store_global_ground_chr_translate____static_type_check___0',V), + ( U=[W|_] -> + setarg(4,W,V) + ; + true + ) + ; + true + ), + copy_term_nat(B,E), + E=pragma(rule(F,G,_,H),ids(_,_),_,_,_), + ( + catch((static_type_check_heads(F),static_type_check_heads(G),conj2list(H,I),static_type_check_body(I)),type_error(J),(J=invalid_functor(K,L,M)->chr_error(type_error,'Invalid functor in ~@ of ~@: + found `~w'', + expected type `~w''! +',[chr_translate:format_src(K),format_rule(B),L,M]);J=type_clash(N,O,P,Q,R)->chr_error(type_error,'Type clash for variable ~w in ~@: + expected type ~w in ~@ + expected type ~w in ~@ +',[N,format_rule(B),Q,chr_translate:format_src(O),R,chr_translate:format_src(P)]))), + fail + ; + true + ), + ( A=suspension(_,active,_,_) -> + setarg(2,A,inactive), + static_type_check___0__1__0__2(D,A) + ; + true + ) + ; + static_type_check___0__1__0__2(D,A) + ). +static_type_check___0__1(A) :- + static_type_check___0__2(A). +static_type_check___0__2(A) :- + ( var(A) -> + true + ; + arg(2,A,F), + setarg(2,A,removed), + ( F==not_stored_yet -> + true + ; + arg(4,A,B), + ( var(B) -> + nb_getval('$chr_store_global_ground_chr_translate____static_type_check___0',C), + C=[_|D], + b_setval('$chr_store_global_ground_chr_translate____static_type_check___0',D), + ( D=[E|_] -> + setarg(4,E,_) + ; + true + ) + ; + B=[_,_|D], + setarg(2,B,D), + ( D=[E|_] -> + setarg(4,E,B) + ; + true + ) + ) + ) + ). +static_type_check_term(A,B,C) :- + var(B), + !, + static_type_check_var(A,B,C). +static_type_check_term(A,B,C) :- + atomic_builtin_type(C,B,D), + !, + ( call(D) -> + true + ; + throw(type_error(invalid_functor(A,B,C))) + ). +static_type_check_term(A,B,C) :- + compound_builtin_type(C,B,_,D), + !, + ( call(D) -> + true + ; + throw(type_error(invalid_functor(A,B,C))) + ). +static_type_check_term(A,B,C) :- + nb_getval('$chr_store_global_list_chr_translate____type_alias___2',G), + 'chr sbag_member'(D,G), + D=suspension(_,active,_,_,_,E,F), + functor(C,H,I), + functor(E,H,I), + !, + copy_term_nat(E-F,C-J), + static_type_check_term(A,B,J). +static_type_check_term(A,B,C) :- + nb_getval('$chr_store_global_list_chr_translate____type_definition___2',G), + 'chr sbag_member'(D,G), + D=suspension(_,active,_,_,_,E,F), + functor(C,H,I), + functor(E,H,I), + !, + copy_term_nat(E-F,C-J), + functor(B,K,L), + ( member(M,J), + functor(M,K,L) -> + B=..[_|N], + M=..[_|O], + maplist(static_type_check_term(A),N,O) + ; + throw(type_error(invalid_functor(A,B,C))) + ). +static_type_check_term(A,B,C) :- + chr_error(internal,'Undefined type ~w while type checking term ~w in ~@. +',[C,B,chr_translate:format_src(A)]). +static_type_check_var(A,B,C) :- + static_type_check_var___3__0(A,B,C,_). +static_type_check_var___3__0(A,B,C,D) :- + nb_getval('$chr_store_global_list_chr_translate____type_alias___2',H), + 'chr sbag_member'(E,H), + E=suspension(_,active,_,_,_,F,G), + functor(F,I,J), + functor(C,I,J), + !, + ( var(D) -> + true + ; + D=suspension(_,_,_,_,Q,R), + setarg(2,D,removed), + L=[Q|S], + term_variables(R,S), + arg(3,D,M), + ( var(M) -> + nb_getval('$chr_store_global_list_chr_translate____static_type_check_var___3',N), + N=[_|O], + b_setval('$chr_store_global_list_chr_translate____static_type_check_var___3',O), + ( O=[P|_] -> + setarg(3,P,_) + ; + true + ) + ; + M=[_,_|O], + setarg(2,M,O), + ( O=[P|_] -> + setarg(3,P,M) + ; + true + ) + ), + detach_static_type_check_var___3(L,D) + ), + copy_term_nat(F-G,C-K), + static_type_check_var(A,B,K). +static_type_check_var___3__0(A,B,C,D) :- + atomic_builtin_type(C,_,_), + !, + ( var(D) -> + true + ; + D=suspension(_,_,_,_,J,K), + setarg(2,D,removed), + E=[J|L], + term_variables(K,L), + arg(3,D,F), + ( var(F) -> + nb_getval('$chr_store_global_list_chr_translate____static_type_check_var___3',G), + G=[_|H], + b_setval('$chr_store_global_list_chr_translate____static_type_check_var___3',H), + ( H=[I|_] -> + setarg(3,I,_) + ; + true + ) + ; + F=[_,_|H], + setarg(2,F,H), + ( H=[I|_] -> + setarg(3,I,F) + ; + true + ) + ), + detach_static_type_check_var___3(E,D) + ), + static_atomic_builtin_type_check_var(A,B,C). +static_type_check_var___3__0(_,_,A,B) :- + compound_builtin_type(A,_,_,_), + !, + ( var(B) -> + true + ; + B=suspension(_,_,_,_,H,I), + setarg(2,B,removed), + C=[H|J], + term_variables(I,J), + arg(3,B,D), + ( var(D) -> + nb_getval('$chr_store_global_list_chr_translate____static_type_check_var___3',E), + E=[_|F], + b_setval('$chr_store_global_list_chr_translate____static_type_check_var___3',F), + ( F=[G|_] -> + setarg(3,G,_) + ; + true + ) + ; + D=[_,_|F], + setarg(2,D,F), + ( F=[G|_] -> + setarg(3,G,D) + ; + true + ) + ), + detach_static_type_check_var___3(C,B) + ). +static_type_check_var___3__0(A,B,C,D) :- + get_attr(B,chr_translate,J), + J=v(_,_,_,_,_,_,_,I,_,_,_), + 'chr sbag_member'(E,I), + E=suspension(_,active,_,F,G,H), + G==B, + ( + C\==H, + !, + E=suspension(_,_,_,_,N1,O1), + setarg(2,E,removed), + K=[N1|P1], + term_variables(O1,P1), + arg(3,E,J1), + ( var(J1) -> + nb_getval('$chr_store_global_list_chr_translate____static_type_check_var___3',K1), + K1=[_|L1], + b_setval('$chr_store_global_list_chr_translate____static_type_check_var___3',L1), + ( L1=[M1|_] -> + setarg(3,M1,_) + ; + true + ) + ; + J1=[_,_|L1], + setarg(2,J1,L1), + ( L1=[M1|_] -> + setarg(3,M1,J1) + ; + true + ) + ), + detach_static_type_check_var___3(K,E), + ( var(D) -> + true + ; + D=suspension(_,_,_,_,G1,H1), + setarg(2,D,removed), + L=[G1|I1], + term_variables(H1,I1), + arg(3,D,C1), + ( var(C1) -> + nb_getval('$chr_store_global_list_chr_translate____static_type_check_var___3',D1), + D1=[_|E1], + b_setval('$chr_store_global_list_chr_translate____static_type_check_var___3',E1), + ( E1=[F1|_] -> + setarg(3,F1,_) + ; + true + ) + ; + C1=[_,_|E1], + setarg(2,C1,E1), + ( E1=[F1|_] -> + setarg(3,F1,C1) + ; + true + ) + ), + detach_static_type_check_var___3(L,D) + ), + throw(type_error(type_clash(B,A,F,C,H))) + ; + H\==C, + !, + E=suspension(_,_,_,_,Z,A1), + setarg(2,E,removed), + M=[Z|B1], + term_variables(A1,B1), + arg(3,E,V), + ( var(V) -> + nb_getval('$chr_store_global_list_chr_translate____static_type_check_var___3',W), + W=[_|X], + b_setval('$chr_store_global_list_chr_translate____static_type_check_var___3',X), + ( X=[Y|_] -> + setarg(3,Y,_) + ; + true + ) + ; + V=[_,_|X], + setarg(2,V,X), + ( X=[Y|_] -> + setarg(3,Y,V) + ; + true + ) + ), + detach_static_type_check_var___3(M,E), + ( var(D) -> + true + ; + D=suspension(_,_,_,_,S,T), + setarg(2,D,removed), + N=[S|U], + term_variables(T,U), + arg(3,D,O), + ( var(O) -> + nb_getval('$chr_store_global_list_chr_translate____static_type_check_var___3',P), + P=[_|Q], + b_setval('$chr_store_global_list_chr_translate____static_type_check_var___3',Q), + ( Q=[R|_] -> + setarg(3,R,_) + ; + true + ) + ; + O=[_,_|Q], + setarg(2,O,Q), + ( Q=[R|_] -> + setarg(3,R,O) + ; + true + ) + ), + detach_static_type_check_var___3(N,D) + ), + throw(type_error(type_clash(B,F,A,H,C))) + ). +static_type_check_var___3__0(A,B,C,D) :- + ( var(D) -> + D=suspension(F,active,_,A,B,C), + E=[B|G], + term_variables(C,G), + 'chr gen_id'(F), + nb_getval('$chr_store_global_list_chr_translate____static_type_check_var___3',H), + I=[D|H], + b_setval('$chr_store_global_list_chr_translate____static_type_check_var___3',I), + ( H=[J|_] -> + setarg(3,J,I) + ; + true + ), + attach_static_type_check_var___3(E,D) + ; + setarg(2,D,active) + ). +static_atomic_builtin_type_check_var(A,B,C) :- + static_atomic_builtin_type_check_var___3__0(A,B,C,_). +static_atomic_builtin_type_check_var___3__0(_,_,A,B) :- + A==any, + !, + ( var(B) -> + true + ; + B=suspension(_,_,_,_,H,I), + setarg(2,B,removed), + term_variables(H,C,J), + term_variables(I,J), + arg(3,B,D), + ( var(D) -> + nb_getval('$chr_store_global_list_chr_translate____static_atomic_builtin_type_check_var___3',E), + E=[_|F], + b_setval('$chr_store_global_list_chr_translate____static_atomic_builtin_type_check_var___3',F), + ( F=[G|_] -> + setarg(3,G,_) + ; + true + ) + ; + D=[_,_|F], + setarg(2,D,F), + ( F=[G|_] -> + setarg(3,G,D) + ; + true + ) + ), + detach_static_atomic_builtin_type_check_var___3(C,B) + ). +static_atomic_builtin_type_check_var___3__0(A,B,C,D) :- + ( 'chr newvia_2'(B,C,I) -> + get_attr(I,chr_translate,J), + J=v(_,_,_,_,_,_,_,_,H,_,_) + ; + nb_getval('$chr_store_global_list_chr_translate____static_atomic_builtin_type_check_var___3',H) + ), + ( + 'chr sbag_member'(E,H), + E=suspension(_,active,_,_,F,G), + F==B, + G==C, + !, + ( var(D) -> + true + ; + D=suspension(_,_,_,_,P,Q), + setarg(2,D,removed), + term_variables(P,K,R), + term_variables(Q,R), + arg(3,D,L), + ( var(L) -> + nb_getval('$chr_store_global_list_chr_translate____static_atomic_builtin_type_check_var___3',M), + M=[_|N], + b_setval('$chr_store_global_list_chr_translate____static_atomic_builtin_type_check_var___3',N), + ( N=[O|_] -> + setarg(3,O,_) + ; + true + ) + ; + L=[_,_|N], + setarg(2,L,N), + ( N=[O|_] -> + setarg(3,O,L) + ; + true + ) + ), + detach_static_atomic_builtin_type_check_var___3(K,D) + ) + ; + !, + static_atomic_builtin_type_check_var___3__0__0__3(H,A,B,C,D) + ). +static_atomic_builtin_type_check_var___3__0__0__3([],B,C,D,A) :- + static_atomic_builtin_type_check_var___3__1(B,C,D,A). +static_atomic_builtin_type_check_var___3__0__0__3([G|H],A,B,C,D) :- + ( G=suspension(_,active,_,_,E,F), + E==B, + F==C -> + G=suspension(_,_,_,_,N,O), + setarg(2,G,removed), + term_variables(N,I,P), + term_variables(O,P), + arg(3,G,J), + ( var(J) -> + nb_getval('$chr_store_global_list_chr_translate____static_atomic_builtin_type_check_var___3',K), + K=[_|L], + b_setval('$chr_store_global_list_chr_translate____static_atomic_builtin_type_check_var___3',L), + ( L=[M|_] -> + setarg(3,M,_) + ; + true + ) + ; + J=[_,_|L], + setarg(2,J,L), + ( L=[M|_] -> + setarg(3,M,J) + ; + true + ) + ), + detach_static_atomic_builtin_type_check_var___3(I,G), + static_atomic_builtin_type_check_var___3__0__0__3(H,A,B,C,D) + ; + static_atomic_builtin_type_check_var___3__0__0__3(H,A,B,C,D) + ). +static_atomic_builtin_type_check_var___3__0(A,B,C,D) :- + static_atomic_builtin_type_check_var___3__1(A,B,C,D). +static_atomic_builtin_type_check_var___3__1(_,A,B,C) :- + B==number, + ( 'chr newvia_1'(A,H) -> + get_attr(H,chr_translate,I), + I=v(_,_,_,_,_,_,_,_,G,_,_) + ; + nb_getval('$chr_store_global_list_chr_translate____static_atomic_builtin_type_check_var___3',G) + ), + 'chr sbag_member'(D,G), + D=suspension(_,active,_,_,E,F), + E==A, + F==float, + !, + ( var(C) -> + true + ; + C=suspension(_,_,_,_,O,P), + setarg(2,C,removed), + term_variables(O,J,Q), + term_variables(P,Q), + arg(3,C,K), + ( var(K) -> + nb_getval('$chr_store_global_list_chr_translate____static_atomic_builtin_type_check_var___3',L), + L=[_|M], + b_setval('$chr_store_global_list_chr_translate____static_atomic_builtin_type_check_var___3',M), + ( M=[N|_] -> + setarg(3,N,_) + ; + true + ) + ; + K=[_,_|M], + setarg(2,K,M), + ( M=[N|_] -> + setarg(3,N,K) + ; + true + ) + ), + detach_static_atomic_builtin_type_check_var___3(J,C) + ). +static_atomic_builtin_type_check_var___3__1(A,B,C,D) :- + C==float, + ( 'chr newvia_1'(B,F) -> + get_attr(F,chr_translate,G), + G=v(_,_,_,_,_,_,_,_,E,_,_) + ; + nb_getval('$chr_store_global_list_chr_translate____static_atomic_builtin_type_check_var___3',E) + ), + !, + static_atomic_builtin_type_check_var___3__1__0__5(E,A,B,C,D). +static_atomic_builtin_type_check_var___3__1__0__5([],B,C,D,A) :- + static_atomic_builtin_type_check_var___3__8(B,C,D,A). +static_atomic_builtin_type_check_var___3__1__0__5([G|H],A,B,C,D) :- + ( G=suspension(_,active,_,_,E,F), + E==B, + F==number -> + G=suspension(_,_,_,_,N,O), + setarg(2,G,removed), + term_variables(N,I,P), + term_variables(O,P), + arg(3,G,J), + ( var(J) -> + nb_getval('$chr_store_global_list_chr_translate____static_atomic_builtin_type_check_var___3',K), + K=[_|L], + b_setval('$chr_store_global_list_chr_translate____static_atomic_builtin_type_check_var___3',L), + ( L=[M|_] -> + setarg(3,M,_) + ; + true + ) + ; + J=[_,_|L], + setarg(2,J,L), + ( L=[M|_] -> + setarg(3,M,J) + ; + true + ) + ), + detach_static_atomic_builtin_type_check_var___3(I,G), + static_atomic_builtin_type_check_var___3__1__0__5(H,A,B,C,D) + ; + static_atomic_builtin_type_check_var___3__1__0__5(H,A,B,C,D) + ). +static_atomic_builtin_type_check_var___3__1(A,B,C,D) :- + static_atomic_builtin_type_check_var___3__2(A,B,C,D). +static_atomic_builtin_type_check_var___3__2(_,A,B,C) :- + B==number, + ( 'chr newvia_1'(A,H) -> + get_attr(H,chr_translate,I), + I=v(_,_,_,_,_,_,_,_,G,_,_) + ; + nb_getval('$chr_store_global_list_chr_translate____static_atomic_builtin_type_check_var___3',G) + ), + 'chr sbag_member'(D,G), + D=suspension(_,active,_,_,E,F), + E==A, + F==int, + !, + ( var(C) -> + true + ; + C=suspension(_,_,_,_,O,P), + setarg(2,C,removed), + term_variables(O,J,Q), + term_variables(P,Q), + arg(3,C,K), + ( var(K) -> + nb_getval('$chr_store_global_list_chr_translate____static_atomic_builtin_type_check_var___3',L), + L=[_|M], + b_setval('$chr_store_global_list_chr_translate____static_atomic_builtin_type_check_var___3',M), + ( M=[N|_] -> + setarg(3,N,_) + ; + true + ) + ; + K=[_,_|M], + setarg(2,K,M), + ( M=[N|_] -> + setarg(3,N,K) + ; + true + ) + ), + detach_static_atomic_builtin_type_check_var___3(J,C) + ). +static_atomic_builtin_type_check_var___3__2(A,B,C,D) :- + C==int, + ( 'chr newvia_1'(B,F) -> + get_attr(F,chr_translate,G), + G=v(_,_,_,_,_,_,_,_,E,_,_) + ; + nb_getval('$chr_store_global_list_chr_translate____static_atomic_builtin_type_check_var___3',E) + ), + !, + static_atomic_builtin_type_check_var___3__2__0__7(E,A,B,C,D). +static_atomic_builtin_type_check_var___3__2__0__7([],B,C,D,A) :- + static_atomic_builtin_type_check_var___3__5(B,C,D,A). +static_atomic_builtin_type_check_var___3__2__0__7([G|H],A,B,C,D) :- + ( G=suspension(_,active,_,_,E,F), + E==B, + F==number -> + G=suspension(_,_,_,_,N,O), + setarg(2,G,removed), + term_variables(N,I,P), + term_variables(O,P), + arg(3,G,J), + ( var(J) -> + nb_getval('$chr_store_global_list_chr_translate____static_atomic_builtin_type_check_var___3',K), + K=[_|L], + b_setval('$chr_store_global_list_chr_translate____static_atomic_builtin_type_check_var___3',L), + ( L=[M|_] -> + setarg(3,M,_) + ; + true + ) + ; + J=[_,_|L], + setarg(2,J,L), + ( L=[M|_] -> + setarg(3,M,J) + ; + true + ) + ), + detach_static_atomic_builtin_type_check_var___3(I,G), + static_atomic_builtin_type_check_var___3__2__0__7(H,A,B,C,D) + ; + static_atomic_builtin_type_check_var___3__2__0__7(H,A,B,C,D) + ). +static_atomic_builtin_type_check_var___3__2(A,B,C,D) :- + static_atomic_builtin_type_check_var___3__3(A,B,C,D). +static_atomic_builtin_type_check_var___3__3(_,A,B,C) :- + B==number, + ( 'chr newvia_1'(A,H) -> + get_attr(H,chr_translate,I), + I=v(_,_,_,_,_,_,_,_,G,_,_) + ; + nb_getval('$chr_store_global_list_chr_translate____static_atomic_builtin_type_check_var___3',G) + ), + 'chr sbag_member'(D,G), + D=suspension(_,active,_,_,E,F), + E==A, + F==natural, + !, + ( var(C) -> + true + ; + C=suspension(_,_,_,_,O,P), + setarg(2,C,removed), + term_variables(O,J,Q), + term_variables(P,Q), + arg(3,C,K), + ( var(K) -> + nb_getval('$chr_store_global_list_chr_translate____static_atomic_builtin_type_check_var___3',L), + L=[_|M], + b_setval('$chr_store_global_list_chr_translate____static_atomic_builtin_type_check_var___3',M), + ( M=[N|_] -> + setarg(3,N,_) + ; + true + ) + ; + K=[_,_|M], + setarg(2,K,M), + ( M=[N|_] -> + setarg(3,N,K) + ; + true + ) + ), + detach_static_atomic_builtin_type_check_var___3(J,C) + ). +static_atomic_builtin_type_check_var___3__3(A,B,C,D) :- + C==natural, + ( 'chr newvia_1'(B,F) -> + get_attr(F,chr_translate,G), + G=v(_,_,_,_,_,_,_,_,E,_,_) + ; + nb_getval('$chr_store_global_list_chr_translate____static_atomic_builtin_type_check_var___3',E) + ), + !, + static_atomic_builtin_type_check_var___3__3__0__9(E,A,B,C,D). +static_atomic_builtin_type_check_var___3__3__0__9([],B,C,D,A) :- + static_atomic_builtin_type_check_var___3__5(B,C,D,A). +static_atomic_builtin_type_check_var___3__3__0__9([G|H],A,B,C,D) :- + ( G=suspension(_,active,_,_,E,F), + E==B, + F==number -> + G=suspension(_,_,_,_,N,O), + setarg(2,G,removed), + term_variables(N,I,P), + term_variables(O,P), + arg(3,G,J), + ( var(J) -> + nb_getval('$chr_store_global_list_chr_translate____static_atomic_builtin_type_check_var___3',K), + K=[_|L], + b_setval('$chr_store_global_list_chr_translate____static_atomic_builtin_type_check_var___3',L), + ( L=[M|_] -> + setarg(3,M,_) + ; + true + ) + ; + J=[_,_|L], + setarg(2,J,L), + ( L=[M|_] -> + setarg(3,M,J) + ; + true + ) + ), + detach_static_atomic_builtin_type_check_var___3(I,G), + static_atomic_builtin_type_check_var___3__3__0__9(H,A,B,C,D) + ; + static_atomic_builtin_type_check_var___3__3__0__9(H,A,B,C,D) + ). +static_atomic_builtin_type_check_var___3__3(A,B,C,D) :- + static_atomic_builtin_type_check_var___3__4(A,B,C,D). +static_atomic_builtin_type_check_var___3__4(_,A,B,C) :- + B==number, + ( 'chr newvia_1'(A,H) -> + get_attr(H,chr_translate,I), + I=v(_,_,_,_,_,_,_,_,G,_,_) + ; + nb_getval('$chr_store_global_list_chr_translate____static_atomic_builtin_type_check_var___3',G) + ), + 'chr sbag_member'(D,G), + D=suspension(_,active,_,_,E,F), + E==A, + F==dense_int, + !, + ( var(C) -> + true + ; + C=suspension(_,_,_,_,O,P), + setarg(2,C,removed), + term_variables(O,J,Q), + term_variables(P,Q), + arg(3,C,K), + ( var(K) -> + nb_getval('$chr_store_global_list_chr_translate____static_atomic_builtin_type_check_var___3',L), + L=[_|M], + b_setval('$chr_store_global_list_chr_translate____static_atomic_builtin_type_check_var___3',M), + ( M=[N|_] -> + setarg(3,N,_) + ; + true + ) + ; + K=[_,_|M], + setarg(2,K,M), + ( M=[N|_] -> + setarg(3,N,K) + ; + true + ) + ), + detach_static_atomic_builtin_type_check_var___3(J,C) + ). +static_atomic_builtin_type_check_var___3__4(A,B,C,D) :- + C==dense_int, + ( 'chr newvia_1'(B,F) -> + get_attr(F,chr_translate,G), + G=v(_,_,_,_,_,_,_,_,E,_,_) + ; + nb_getval('$chr_store_global_list_chr_translate____static_atomic_builtin_type_check_var___3',E) + ), + !, + static_atomic_builtin_type_check_var___3__4__0__11(E,A,B,C,D). +static_atomic_builtin_type_check_var___3__4__0__11([],B,C,D,A) :- + static_atomic_builtin_type_check_var___3__6(B,C,D,A). +static_atomic_builtin_type_check_var___3__4__0__11([G|H],A,B,C,D) :- + ( G=suspension(_,active,_,_,E,F), + E==B, + F==number -> + G=suspension(_,_,_,_,N,O), + setarg(2,G,removed), + term_variables(N,I,P), + term_variables(O,P), + arg(3,G,J), + ( var(J) -> + nb_getval('$chr_store_global_list_chr_translate____static_atomic_builtin_type_check_var___3',K), + K=[_|L], + b_setval('$chr_store_global_list_chr_translate____static_atomic_builtin_type_check_var___3',L), + ( L=[M|_] -> + setarg(3,M,_) + ; + true + ) + ; + J=[_,_|L], + setarg(2,J,L), + ( L=[M|_] -> + setarg(3,M,J) + ; + true + ) + ), + detach_static_atomic_builtin_type_check_var___3(I,G), + static_atomic_builtin_type_check_var___3__4__0__11(H,A,B,C,D) + ; + static_atomic_builtin_type_check_var___3__4__0__11(H,A,B,C,D) + ). +static_atomic_builtin_type_check_var___3__4(A,B,C,D) :- + static_atomic_builtin_type_check_var___3__5(A,B,C,D). +static_atomic_builtin_type_check_var___3__5(_,A,B,C) :- + B==int, + ( 'chr newvia_1'(A,H) -> + get_attr(H,chr_translate,I), + I=v(_,_,_,_,_,_,_,_,G,_,_) + ; + nb_getval('$chr_store_global_list_chr_translate____static_atomic_builtin_type_check_var___3',G) + ), + 'chr sbag_member'(D,G), + D=suspension(_,active,_,_,E,F), + E==A, + F==natural, + !, + ( var(C) -> + true + ; + C=suspension(_,_,_,_,O,P), + setarg(2,C,removed), + term_variables(O,J,Q), + term_variables(P,Q), + arg(3,C,K), + ( var(K) -> + nb_getval('$chr_store_global_list_chr_translate____static_atomic_builtin_type_check_var___3',L), + L=[_|M], + b_setval('$chr_store_global_list_chr_translate____static_atomic_builtin_type_check_var___3',M), + ( M=[N|_] -> + setarg(3,N,_) + ; + true + ) + ; + K=[_,_|M], + setarg(2,K,M), + ( M=[N|_] -> + setarg(3,N,K) + ; + true + ) + ), + detach_static_atomic_builtin_type_check_var___3(J,C) + ). +static_atomic_builtin_type_check_var___3__5(A,B,C,D) :- + C==natural, + ( 'chr newvia_1'(B,F) -> + get_attr(F,chr_translate,G), + G=v(_,_,_,_,_,_,_,_,E,_,_) + ; + nb_getval('$chr_store_global_list_chr_translate____static_atomic_builtin_type_check_var___3',E) + ), + !, + static_atomic_builtin_type_check_var___3__5__0__13(E,A,B,C,D). +static_atomic_builtin_type_check_var___3__5__0__13([],B,C,D,A) :- + static_atomic_builtin_type_check_var___3__7(B,C,D,A). +static_atomic_builtin_type_check_var___3__5__0__13([G|H],A,B,C,D) :- + ( G=suspension(_,active,_,_,E,F), + E==B, + F==int -> + G=suspension(_,_,_,_,N,O), + setarg(2,G,removed), + term_variables(N,I,P), + term_variables(O,P), + arg(3,G,J), + ( var(J) -> + nb_getval('$chr_store_global_list_chr_translate____static_atomic_builtin_type_check_var___3',K), + K=[_|L], + b_setval('$chr_store_global_list_chr_translate____static_atomic_builtin_type_check_var___3',L), + ( L=[M|_] -> + setarg(3,M,_) + ; + true + ) + ; + J=[_,_|L], + setarg(2,J,L), + ( L=[M|_] -> + setarg(3,M,J) + ; + true + ) + ), + detach_static_atomic_builtin_type_check_var___3(I,G), + static_atomic_builtin_type_check_var___3__5__0__13(H,A,B,C,D) + ; + static_atomic_builtin_type_check_var___3__5__0__13(H,A,B,C,D) + ). +static_atomic_builtin_type_check_var___3__5(A,B,C,D) :- + static_atomic_builtin_type_check_var___3__6(A,B,C,D). +static_atomic_builtin_type_check_var___3__6(_,A,B,C) :- + B==int, + ( 'chr newvia_1'(A,H) -> + get_attr(H,chr_translate,I), + I=v(_,_,_,_,_,_,_,_,G,_,_) + ; + nb_getval('$chr_store_global_list_chr_translate____static_atomic_builtin_type_check_var___3',G) + ), + 'chr sbag_member'(D,G), + D=suspension(_,active,_,_,E,F), + E==A, + F==dense_int, + !, + ( var(C) -> + true + ; + C=suspension(_,_,_,_,O,P), + setarg(2,C,removed), + term_variables(O,J,Q), + term_variables(P,Q), + arg(3,C,K), + ( var(K) -> + nb_getval('$chr_store_global_list_chr_translate____static_atomic_builtin_type_check_var___3',L), + L=[_|M], + b_setval('$chr_store_global_list_chr_translate____static_atomic_builtin_type_check_var___3',M), + ( M=[N|_] -> + setarg(3,N,_) + ; + true + ) + ; + K=[_,_|M], + setarg(2,K,M), + ( M=[N|_] -> + setarg(3,N,K) + ; + true + ) + ), + detach_static_atomic_builtin_type_check_var___3(J,C) + ). +static_atomic_builtin_type_check_var___3__6(A,B,C,D) :- + C==dense_int, + ( 'chr newvia_1'(B,F) -> + get_attr(F,chr_translate,G), + G=v(_,_,_,_,_,_,_,_,E,_,_) + ; + nb_getval('$chr_store_global_list_chr_translate____static_atomic_builtin_type_check_var___3',E) + ), + !, + static_atomic_builtin_type_check_var___3__6__0__15(E,A,B,C,D). +static_atomic_builtin_type_check_var___3__6__0__15([],B,C,D,A) :- + static_atomic_builtin_type_check_var___3__7(B,C,D,A). +static_atomic_builtin_type_check_var___3__6__0__15([G|H],A,B,C,D) :- + ( G=suspension(_,active,_,_,E,F), + E==B, + F==int -> + G=suspension(_,_,_,_,N,O), + setarg(2,G,removed), + term_variables(N,I,P), + term_variables(O,P), + arg(3,G,J), + ( var(J) -> + nb_getval('$chr_store_global_list_chr_translate____static_atomic_builtin_type_check_var___3',K), + K=[_|L], + b_setval('$chr_store_global_list_chr_translate____static_atomic_builtin_type_check_var___3',L), + ( L=[M|_] -> + setarg(3,M,_) + ; + true + ) + ; + J=[_,_|L], + setarg(2,J,L), + ( L=[M|_] -> + setarg(3,M,J) + ; + true + ) + ), + detach_static_atomic_builtin_type_check_var___3(I,G), + static_atomic_builtin_type_check_var___3__6__0__15(H,A,B,C,D) + ; + static_atomic_builtin_type_check_var___3__6__0__15(H,A,B,C,D) + ). +static_atomic_builtin_type_check_var___3__6(A,B,C,D) :- + static_atomic_builtin_type_check_var___3__7(A,B,C,D). +static_atomic_builtin_type_check_var___3__7(_,A,B,C) :- + B==natural, + ( 'chr newvia_1'(A,H) -> + get_attr(H,chr_translate,I), + I=v(_,_,_,_,_,_,_,_,G,_,_) + ; + nb_getval('$chr_store_global_list_chr_translate____static_atomic_builtin_type_check_var___3',G) + ), + 'chr sbag_member'(D,G), + D=suspension(_,active,_,_,E,F), + E==A, + F==dense_int, + !, + ( var(C) -> + true + ; + C=suspension(_,_,_,_,O,P), + setarg(2,C,removed), + term_variables(O,J,Q), + term_variables(P,Q), + arg(3,C,K), + ( var(K) -> + nb_getval('$chr_store_global_list_chr_translate____static_atomic_builtin_type_check_var___3',L), + L=[_|M], + b_setval('$chr_store_global_list_chr_translate____static_atomic_builtin_type_check_var___3',M), + ( M=[N|_] -> + setarg(3,N,_) + ; + true + ) + ; + K=[_,_|M], + setarg(2,K,M), + ( M=[N|_] -> + setarg(3,N,K) + ; + true + ) + ), + detach_static_atomic_builtin_type_check_var___3(J,C) + ). +static_atomic_builtin_type_check_var___3__7(A,B,C,D) :- + C==dense_int, + ( 'chr newvia_1'(B,F) -> + get_attr(F,chr_translate,G), + G=v(_,_,_,_,_,_,_,_,E,_,_) + ; + nb_getval('$chr_store_global_list_chr_translate____static_atomic_builtin_type_check_var___3',E) + ), + !, + static_atomic_builtin_type_check_var___3__7__0__17(E,A,B,C,D). +static_atomic_builtin_type_check_var___3__7__0__17([],B,C,D,A) :- + static_atomic_builtin_type_check_var___3__8(B,C,D,A). +static_atomic_builtin_type_check_var___3__7__0__17([G|H],A,B,C,D) :- + ( G=suspension(_,active,_,_,E,F), + E==B, + F==natural -> + G=suspension(_,_,_,_,N,O), + setarg(2,G,removed), + term_variables(N,I,P), + term_variables(O,P), + arg(3,G,J), + ( var(J) -> + nb_getval('$chr_store_global_list_chr_translate____static_atomic_builtin_type_check_var___3',K), + K=[_|L], + b_setval('$chr_store_global_list_chr_translate____static_atomic_builtin_type_check_var___3',L), + ( L=[M|_] -> + setarg(3,M,_) + ; + true + ) + ; + J=[_,_|L], + setarg(2,J,L), + ( L=[M|_] -> + setarg(3,M,J) + ; + true + ) + ), + detach_static_atomic_builtin_type_check_var___3(I,G), + static_atomic_builtin_type_check_var___3__7__0__17(H,A,B,C,D) + ; + static_atomic_builtin_type_check_var___3__7__0__17(H,A,B,C,D) + ). +static_atomic_builtin_type_check_var___3__7(A,B,C,D) :- + static_atomic_builtin_type_check_var___3__8(A,B,C,D). +static_atomic_builtin_type_check_var___3__8(A,B,C,D) :- + ( 'chr newvia_1'(B,J) -> + get_attr(J,chr_translate,K), + K=v(_,_,_,_,_,_,_,_,I,_,_) + ; + nb_getval('$chr_store_global_list_chr_translate____static_atomic_builtin_type_check_var___3',I) + ), + 'chr sbag_member'(E,I), + E=suspension(_,active,_,F,G,H), + G==B, + !, + E=suspension(_,_,_,_,Y,Z), + setarg(2,E,removed), + term_variables(Y,L,A1), + term_variables(Z,A1), + arg(3,E,U), + ( var(U) -> + nb_getval('$chr_store_global_list_chr_translate____static_atomic_builtin_type_check_var___3',V), + V=[_|W], + b_setval('$chr_store_global_list_chr_translate____static_atomic_builtin_type_check_var___3',W), + ( W=[X|_] -> + setarg(3,X,_) + ; + true + ) + ; + U=[_,_|W], + setarg(2,U,W), + ( W=[X|_] -> + setarg(3,X,U) + ; + true + ) + ), + detach_static_atomic_builtin_type_check_var___3(L,E), + ( var(D) -> + true + ; + D=suspension(_,_,_,_,R,S), + setarg(2,D,removed), + term_variables(R,M,T), + term_variables(S,T), + arg(3,D,N), + ( var(N) -> + nb_getval('$chr_store_global_list_chr_translate____static_atomic_builtin_type_check_var___3',O), + O=[_|P], + b_setval('$chr_store_global_list_chr_translate____static_atomic_builtin_type_check_var___3',P), + ( P=[Q|_] -> + setarg(3,Q,_) + ; + true + ) + ; + N=[_,_|P], + setarg(2,N,P), + ( P=[Q|_] -> + setarg(3,Q,N) + ; + true + ) + ), + detach_static_atomic_builtin_type_check_var___3(M,D) + ), + throw(type_error(type_clash(B,A,F,C,H))). +static_atomic_builtin_type_check_var___3__8(A,B,C,D) :- + ( var(D) -> + D=suspension(F,active,_,A,B,C), + term_variables(B,E,G), + term_variables(C,G), + 'chr gen_id'(F), + nb_getval('$chr_store_global_list_chr_translate____static_atomic_builtin_type_check_var___3',H), + I=[D|H], + b_setval('$chr_store_global_list_chr_translate____static_atomic_builtin_type_check_var___3',I), + ( H=[J|_] -> + setarg(3,J,I) + ; + true + ), + attach_static_atomic_builtin_type_check_var___3(E,D) + ; + setarg(2,D,active) + ). +dynamic_type_check :- + dynamic_type_check___0__0(_). +dynamic_type_check___0__0(A) :- + nb_getval('$chr_store_global_list_chr_translate____type_definition___2',B), + !, + A=suspension(C,not_stored_yet,t,_), + 'chr gen_id'(C), + dynamic_type_check___0__0__0__1(B,A). +dynamic_type_check___0__0__0__1([],A) :- + dynamic_type_check___0__1(A). +dynamic_type_check___0__0__0__1([D|E],A) :- + ( D=suspension(_,active,_,_,_,B,C), + I=t(231,D,A), + '$novel_production'(D,I), + '$novel_production'(A,I) -> + '$extend_history'(A,I), + arg(2,A,J), + setarg(2,A,active), + ( J==not_stored_yet -> + nb_getval('$chr_store_global_ground_chr_translate____dynamic_type_check___0',K), + L=[A|K], + b_setval('$chr_store_global_ground_chr_translate____dynamic_type_check___0',L), + ( K=[M|_] -> + setarg(4,M,L) + ; + true + ) + ; + true + ), + copy_term_nat(B-C,F-G), + maplist(dynamic_type_check_clause(F),G,H), + dynamic_type_check_clauses(H), + ( A=suspension(_,active,_,_) -> + setarg(2,A,inactive), + dynamic_type_check___0__0__0__1(E,A) + ; + true + ) + ; + dynamic_type_check___0__0__0__1(E,A) + ). +dynamic_type_check___0__0(A) :- + A=suspension(B,not_stored_yet,t,_), + 'chr gen_id'(B), + dynamic_type_check___0__1(A). +dynamic_type_check___0__1(A) :- + nb_getval('$chr_store_global_list_chr_translate____type_alias___2',B), + !, + dynamic_type_check___0__1__0__2(B,A). +dynamic_type_check___0__1__0__2([],A) :- + dynamic_type_check___0__2(A). +dynamic_type_check___0__1__0__2([D|E],A) :- + ( D=suspension(_,active,_,_,_,B,C), + I=t(232,D,A), + '$novel_production'(D,I), + '$novel_production'(A,I) -> + '$extend_history'(A,I), + arg(2,A,J), + setarg(2,A,active), + ( J==not_stored_yet -> + nb_getval('$chr_store_global_ground_chr_translate____dynamic_type_check___0',K), + L=[A|K], + b_setval('$chr_store_global_ground_chr_translate____dynamic_type_check___0',L), + ( K=[M|_] -> + setarg(4,M,L) + ; + true + ) + ; + true + ), + copy_term_nat(B-C,F-G), + dynamic_type_check_alias_clause(F,G,H), + dynamic_type_check_clauses([H]), + ( A=suspension(_,active,_,_) -> + setarg(2,A,inactive), + dynamic_type_check___0__1__0__2(E,A) + ; + true + ) + ; + dynamic_type_check___0__1__0__2(E,A) + ). +dynamic_type_check___0__1(A) :- + dynamic_type_check___0__2(A). +dynamic_type_check___0__2(A) :- + ( var(A) -> + true + ; + arg(2,A,J), + setarg(2,A,removed), + ( J==not_stored_yet -> + true + ; + arg(4,A,F), + ( var(F) -> + nb_getval('$chr_store_global_ground_chr_translate____dynamic_type_check___0',G), + G=[_|H], + b_setval('$chr_store_global_ground_chr_translate____dynamic_type_check___0',H), + ( H=[I|_] -> + setarg(4,I,_) + ; + true + ) + ; + F=[_,_|H], + setarg(2,F,H), + ( H=[I|_] -> + setarg(4,I,F) + ; + true + ) + ) + ) + ), + findall(('$dynamic_type_check'(D,E):-C),(atomic_builtin_type(D,E,C);compound_builtin_type(D,E,C,_)),B), + dynamic_type_check_clauses(B). +dynamic_type_check_clauses(A) :- + nb_getval('$chr_store_global_ground_chr_translate____dynamic_type_check_clauses___1',D), + 'chr sbag_member'(B,D), + B=suspension(_,active,_,C), + !, + setarg(2,B,removed), + arg(3,B,F), + ( var(F) -> + nb_getval('$chr_store_global_ground_chr_translate____dynamic_type_check_clauses___1',G), + G=[_|H], + b_setval('$chr_store_global_ground_chr_translate____dynamic_type_check_clauses___1',H), + ( H=[I|_] -> + setarg(3,I,_) + ; + true + ) + ; + F=[_,_|H], + setarg(2,F,H), + ( H=[I|_] -> + setarg(3,I,F) + ; + true + ) + ), + append(A,C,E), + dynamic_type_check_clauses(E). +dynamic_type_check_clauses(A) :- + B=suspension(C,active,_,A), + 'chr gen_id'(C), + nb_getval('$chr_store_global_ground_chr_translate____dynamic_type_check_clauses___1',D), + E=[B|D], + b_setval('$chr_store_global_ground_chr_translate____dynamic_type_check_clauses___1',E), + ( D=[F|_] -> + setarg(3,F,E) + ; + true + ). +get_dynamic_type_check_clauses(A) :- + nb_getval('$chr_store_global_ground_chr_translate____dynamic_type_check_clauses___1',D), + 'chr sbag_member'(B,D), + B=suspension(_,active,_,C), + !, + setarg(2,B,removed), + arg(3,B,E), + ( var(E) -> + nb_getval('$chr_store_global_ground_chr_translate____dynamic_type_check_clauses___1',F), + F=[_|G], + b_setval('$chr_store_global_ground_chr_translate____dynamic_type_check_clauses___1',G), + ( G=[H|_] -> + setarg(3,H,_) + ; + true + ) + ; + E=[_,_|G], + setarg(2,E,G), + ( G=[H|_] -> + setarg(3,H,E) + ; + true + ) + ), + A=C. +get_dynamic_type_check_clauses([]). +atomic_type(A) :- + atomic_type___1__0(A,_). +atomic_type___1__0(A,B) :- + atomic_builtin_type(A,_,_), + !, + ( var(B) -> + true + ; + B=suspension(_,_,_,H), + setarg(2,B,removed), + term_variables(H,C), + arg(3,B,D), + ( var(D) -> + nb_getval('$chr_store_global_list_chr_translate____atomic_type___1',E), + E=[_|F], + b_setval('$chr_store_global_list_chr_translate____atomic_type___1',F), + ( F=[G|_] -> + setarg(3,G,_) + ; + true + ) + ; + D=[_,_|F], + setarg(2,D,F), + ( F=[G|_] -> + setarg(3,G,D) + ; + true + ) + ), + detach_atomic_type___1(C,B) + ), + A\==any. +atomic_type___1__0(A,B) :- + nb_getval('$chr_store_global_list_chr_translate____type_definition___2',F), + 'chr sbag_member'(C,F), + C=suspension(_,active,_,_,_,D,E), + functor(A,G,H), + functor(D,G,H), + !, + ( var(B) -> + true + ; + B=suspension(_,_,_,N), + setarg(2,B,removed), + term_variables(N,I), + arg(3,B,J), + ( var(J) -> + nb_getval('$chr_store_global_list_chr_translate____atomic_type___1',K), + K=[_|L], + b_setval('$chr_store_global_list_chr_translate____atomic_type___1',L), + ( L=[M|_] -> + setarg(3,M,_) + ; + true + ) + ; + J=[_,_|L], + setarg(2,J,L), + ( L=[M|_] -> + setarg(3,M,J) + ; + true + ) + ), + detach_atomic_type___1(I,B) + ), + maplist(atomic,E). +atomic_type___1__0(A,B) :- + nb_getval('$chr_store_global_list_chr_translate____type_alias___2',F), + 'chr sbag_member'(C,F), + C=suspension(_,active,_,_,_,D,E), + functor(A,G,H), + functor(D,G,H), + !, + ( var(B) -> + true + ; + B=suspension(_,_,_,O), + setarg(2,B,removed), + term_variables(O,J), + arg(3,B,K), + ( var(K) -> + nb_getval('$chr_store_global_list_chr_translate____atomic_type___1',L), + L=[_|M], + b_setval('$chr_store_global_list_chr_translate____atomic_type___1',M), + ( M=[N|_] -> + setarg(3,N,_) + ; + true + ) + ; + K=[_,_|M], + setarg(2,K,M), + ( M=[N|_] -> + setarg(3,N,K) + ; + true + ) + ), + detach_atomic_type___1(J,B) + ), + atomic(E), + copy_term_nat(D-E,A-I), + atomic_type(I). +atomic_type___1__0(A,B) :- + ( var(B) -> + B=suspension(D,active,_,A), + term_variables(A,C), + 'chr gen_id'(D), + nb_getval('$chr_store_global_list_chr_translate____atomic_type___1',E), + F=[B|E], + b_setval('$chr_store_global_list_chr_translate____atomic_type___1',F), + ( E=[G|_] -> + setarg(3,G,F) + ; + true + ), + attach_atomic_type___1(C,B) + ; + setarg(2,B,active) + ). +enumerated_atomic_type(A,B) :- + enumerated_atomic_type___2__0(A,B,_). +enumerated_atomic_type___2__0(A,_,B) :- + atomic_builtin_type(A,_,_), + !, + ( var(B) -> + true + ; + B=suspension(_,_,_,H,_), + setarg(2,B,removed), + term_variables(H,C), + arg(3,B,D), + ( var(D) -> + nb_getval('$chr_store_global_list_chr_translate____enumerated_atomic_type___2',E), + E=[_|F], + b_setval('$chr_store_global_list_chr_translate____enumerated_atomic_type___2',F), + ( F=[G|_] -> + setarg(3,G,_) + ; + true + ) + ; + D=[_,_|F], + setarg(2,D,F), + ( F=[G|_] -> + setarg(3,G,D) + ; + true + ) + ), + detach_enumerated_atomic_type___2(C,B) + ), fail. -add_type_information(A,B,C) :- - insert_constraint_internal(_,_,D,true,add_type_information(A,B,C),[A,B,C]), - '$insert_in_store_add_type_information/3'(D). -stored(A,B,yes) :- - '$via1_multi_hash_stored_complete/3-1'(A,F), - 'chr sbag_member'(C,F), - C=suspension(_,mutable(active),_,_,_,_,_,D,E), - B - '$delete_from_store_stored_complete/3'(C) - ; + ( var(C) -> true + ; + C=suspension(_,_,_,O,_), + setarg(2,C,removed), + term_variables(O,J), + arg(3,C,K), + ( var(K) -> + nb_getval('$chr_store_global_list_chr_translate____enumerated_atomic_type___2',L), + L=[_|M], + b_setval('$chr_store_global_list_chr_translate____enumerated_atomic_type___2',M), + ( M=[N|_] -> + setarg(3,N,_) + ; + true + ) + ; + K=[_,_|M], + setarg(2,K,M), + ( M=[N|_] -> + setarg(3,N,K) + ; + true + ) + ), + detach_enumerated_atomic_type___2(J,C) ), - O is E-1, - stored(A,B,maybe), - stored_complete(A,D,O). -stored(A,B,yes) :- - '$via1_multi_hash_stored_complete/3-1'(A,F), - 'chr sbag_member'(C,F), - C=suspension(_,mutable(active),_,_,_,_,_,D,E), - B - '$delete_from_store_stored_complete/3'(C) - ; + ( var(C) -> true + ; + C=suspension(_,_,_,P,_), + setarg(2,C,removed), + term_variables(P,K), + arg(3,C,L), + ( var(L) -> + nb_getval('$chr_store_global_list_chr_translate____enumerated_atomic_type___2',M), + M=[_|N], + b_setval('$chr_store_global_list_chr_translate____enumerated_atomic_type___2',N), + ( N=[O|_] -> + setarg(3,O,_) + ; + true + ) + ; + L=[_,_|N], + setarg(2,L,N), + ( N=[O|_] -> + setarg(3,O,L) + ; + true + ) + ), + detach_enumerated_atomic_type___2(K,C) ), - J is E-1, + atomic(F), + copy_term_nat(E-F,A-J), + enumerated_atomic_type(J,B). +enumerated_atomic_type___2__0(A,B,C) :- + ( var(C) -> + C=suspension(E,active,_,A,B), + term_variables(A,D), + 'chr gen_id'(E), + nb_getval('$chr_store_global_list_chr_translate____enumerated_atomic_type___2',F), + G=[C|F], + b_setval('$chr_store_global_list_chr_translate____enumerated_atomic_type___2',G), + ( F=[H|_] -> + setarg(3,H,G) + ; + true + ), + attach_enumerated_atomic_type___2(D,C) + ; + setarg(2,C,active) + ). +stored(A,B,yes) :- + nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-12',Q), + lookup_ht(Q,k(A,B),F), + 'chr sbag_member'(C,F), + C=suspension(_,active,_,_,_,_,D,E,_), + nb_getval('$chr_store_multi_hash_chr_translate____passive___2-12',P), + lookup_ht(P,k(D,E),H), + 'chr sbag_member'(G,H), + G=suspension(_,active,_,_,_), + nb_getval('$chr_store_multi_hash_chr_translate____stored_complete___3-1',O), + lookup_ht(O,A,L), + 'chr sbag_member'(I,L), + I=suspension(_,active,_,_,J,K), + B - '$delete_from_store_stored/3'(D) - ; - true - ), - P is C-1, + setarg(2,D,removed), + nb_getval('$chr_store_multi_hash_chr_translate____stored___3-1',K), + delete_ht(K,A,D), + nb_getval('$chr_store_multi_hash_chr_translate____stored___3-123',L), + delete_ht(L,k(A,E,yes),D), + J is C-1, stored(A,E,maybe), - stored_complete(A,B,P). -'stored_complete/3__0'(A,B,C,_) :- - '$via1_multi_hash_stored/3-1'(A,G), - 'chr sbag_member'(D,G), - D=suspension(_,mutable(active),_,_,_,_,_,E,F), - F=yes, - E - '$delete_from_store_stored/3'(D) + C=suspension(E,not_stored_yet,t,A,B,0), + 'chr gen_id'(E), + stored_complete___3__0__0__3(D,A,B,0,C). +stored_complete___3__0__0__3([],B,C,D,A) :- + stored_complete___3__1(B,C,D,A). +stored_complete___3__0__0__3([G|I],B,C,D,A) :- + ( G=suspension(_,active,_,E,F), + E==B, + nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-1',J), + lookup_ht(J,B,H) -> + stored_complete___3__0__1__3(H,F,G,I,B,C,D,A) ; - true - ), - K is C-1, - stored(A,E,maybe), - stored_complete(A,B,K). -'stored_complete/3__0'(A,B,0,C) :- - nb_getval('$chr_store_global_ground_chr_translate:occurrence/4',D), - !, - allocate_constraint(true,C,stored_complete(A,B,0),[A,B,0]), - 'stored_complete/3__0__0'(D,A,B,0,C). -'stored_complete/3__0__0'([],A,B,C,D) :- - 'stored_complete/3__1'(A,B,C,D). -'stored_complete/3__0__0'([G|I],A,B,C,D) :- - ( G=suspension(_,mutable(active),_,_,_,_,_,_,E,F), - '$via1_multi_hash_max_occurrence/2-1'(A,H) -> - 'stored_complete/3__0__1'(H,E,F,G,I,A,B,C,D) - ; - 'stored_complete/3__0__0'(I,A,B,C,D) + stored_complete___3__0__0__3(I,B,C,D,A) ). -'stored_complete/3__0__1'([],_,_,_,E,A,B,C,D) :- - 'stored_complete/3__0__0'(E,A,B,C,D). -'stored_complete/3__0__1'([K|M],F,G,A,H,B,C,D,E) :- - ( K=suspension(_,mutable(active),_,_,_,_,I,J), - I==B, - '$via1_multi_hash_occurrence/4-1'(B,L) -> - 'stored_complete/3__0__2'(L,J,K,M,F,G,A,H,B,C,D,E) +stored_complete___3__0__1__3([],_,_,A,C,D,E,B) :- + stored_complete___3__0__0__3(A,C,D,E,B). +stored_complete___3__0__1__3([J|L],G,A,B,D,E,F,C) :- + ( J=suspension(_,active,_,_,H,_,I,_,_), + H==D, + nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-3',M), + lookup_ht1(M,I,I,K) -> + stored_complete___3__0__2__3(K,I,J,L,G,A,B,D,E,F,C) ; - 'stored_complete/3__0__1'(M,F,G,A,H,B,C,D,E) + stored_complete___3__0__1__3(L,G,A,B,D,E,F,C) ). -'stored_complete/3__0__2'([],_,_,I,E,F,G,H,A,B,C,D) :- - 'stored_complete/3__0__1'(I,E,F,G,H,A,B,C,D). -'stored_complete/3__0__2'([N|O],J,A,K,G,H,B,I,C,D,E,F) :- - ( N=suspension(_,mutable(active),_,_,_,_,L,_,M,_), - N\==B, - L==C, - M==G, - R=t(90,B,N,F,A), - 'chr novel_production'(B,R), - 'chr novel_production'(N,R), - 'chr novel_production'(F,R), - 'chr novel_production'(A,R), - D= - 'chr extend_history'(F,R), - activate_constraint(P,_,F,Q), - ( P==yes -> - '$insert_in_store_stored_complete/3'(F) +stored_complete___3__0__2__3([],_,_,A,H,B,C,E,F,G,D) :- + stored_complete___3__0__1__3(A,H,B,C,E,F,G,D). +stored_complete___3__0__2__3([M|N],J,A,B,I,C,D,F,G,H,E) :- + ( M=suspension(_,active,_,_,_,_,K,L,_), + M\==A, + K==J, + O=t(245,M,A,E,C), + '$novel_production'(M,O), + '$novel_production'(A,O), + '$novel_production'(E,O), + '$novel_production'(C,O), + G= + '$extend_history'(E,O), + arg(2,E,P), + setarg(2,E,active), + ( P==not_stored_yet -> + nb_getval('$chr_store_multi_hash_chr_translate____stored_complete___3-1',Q), + insert_ht(Q,F,E) ; true ), - passive(G,H), - ( F=suspension(_,mutable(active),_,mutable(Q),_,_,_,_,_) -> - 'chr update_mutable'(inactive,mutable(active)), - 'stored_complete/3__0__2'(O,J,A,K,G,H,B,I,C,D,E,F) + passive(J,L), + ( E=suspension(_,active,_,_,_,_) -> + setarg(2,E,inactive), + stored_complete___3__0__2__3(N,J,A,B,I,C,D,F,G,H,E) ; true ) ; - 'stored_complete/3__0__2'(O,J,A,K,G,H,B,I,C,D,E,F) + stored_complete___3__0__2__3(N,J,A,B,I,C,D,F,G,H,E) ). -'stored_complete/3__0'(A,B,C,D) :- - allocate_constraint(true,D,stored_complete(A,B,C),[A,B,C]), - 'stored_complete/3__1'(A,B,C,D). -'stored_complete/3__1'(A,B,C,D) :- - '$via1_multi_hash_occurrence/4-1'(A,E), +stored_complete___3__0(A,B,C,D) :- + D=suspension(E,not_stored_yet,t,A,B,C), + 'chr gen_id'(E), + stored_complete___3__1(A,B,C,D). +stored_complete___3__1(A,B,C,D) :- + nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-1',F), + lookup_ht(F,A,E), !, - 'stored_complete/3__1__0'(E,A,B,C,D). -'stored_complete/3__1__0'([],A,B,C,D) :- - 'stored_complete/3__2'(A,B,C,D). -'stored_complete/3__1__0'([I|J],A,B,C,D) :- - ( I=suspension(_,mutable(active),_,_,_,_,E,F,G,H), - E==A, - M=t(99,D,I), - 'chr novel_production'(D,M), - 'chr novel_production'(I,M), - F>B -> - 'chr extend_history'(D,M), - activate_constraint(K,_,D,L), - ( K==yes -> - '$insert_in_store_stored_complete/3'(D) + stored_complete___3__1__0__4(E,A,B,C,D). +stored_complete___3__1__0__4([],B,C,D,A) :- + stored_complete___3__2(B,C,D,A). +stored_complete___3__1__0__4([I|J],B,C,D,A) :- + ( I=suspension(_,active,_,_,E,F,G,H,_), + E==B, + K=t(254,A,I), + '$novel_production'(A,K), + '$novel_production'(I,K), + F>C -> + '$extend_history'(A,K), + arg(2,A,L), + setarg(2,A,active), + ( L==not_stored_yet -> + nb_getval('$chr_store_multi_hash_chr_translate____stored_complete___3-1',M), + insert_ht(M,B,A) ; true ), passive(G,H), - ( D=suspension(_,mutable(active),_,mutable(L),_,_,_,_,_) -> - 'chr update_mutable'(inactive,mutable(active)), - 'stored_complete/3__1__0'(J,A,B,C,D) + ( A=suspension(_,active,_,_,_,_) -> + setarg(2,A,inactive), + stored_complete___3__1__0__4(J,B,C,D,A) ; true ) ; - 'stored_complete/3__1__0'(J,A,B,C,D) + stored_complete___3__1__0__4(J,B,C,D,A) ). -'stored_complete/3__1'(A,B,C,D) :- - 'stored_complete/3__2'(A,B,C,D). -'stored_complete/3__2'(_,_,_,A) :- - activate_constraint(B,_,A,_), - ( B==yes -> - '$insert_in_store_stored_complete/3'(A) +stored_complete___3__1(A,B,C,D) :- + stored_complete___3__2(A,B,C,D). +stored_complete___3__2(A,_,_,B) :- + arg(2,B,C), + setarg(2,B,active), + ( C==not_stored_yet -> + nb_getval('$chr_store_multi_hash_chr_translate____stored_complete___3-1',D), + insert_ht(D,A,B) ; true ). is_stored(A) :- - '$via1_multi_hash_max_occurrence/2-1'(A,D), + ground(A), + nb_getval('$chr_store_multi_hash_chr_translate____max_occurrence___2-1',J), + lookup_ht(J,A,D), 'chr sbag_member'(B,D), - B=suspension(_,mutable(active),_,_,_,_,_,C), - '$via1_multi_hash_stored_complete/3-1'(A,H), + B=suspension(_,active,_,_,C), + nb_getval('$chr_store_multi_hash_chr_translate____stored_complete___3-1',I), + lookup_ht(I,A,H), 'chr sbag_member'(E,H), - E=suspension(_,mutable(active),_,_,_,_,_,F,G), + E=suspension(_,active,_,_,F,G), G=0, F= Rule never fires. Check your program, this might be a bug! -',[]). + chr_warning(weird_program,'All heads passive in ~@. + This rule never fires. Please check your program. +',[format_rule(C)]). check_all_passive(A,B) :- - insert_constraint_internal(_,_,C,true,check_all_passive(A,B),[A,B]), - '$insert_in_store_check_all_passive/2'(C). + C=suspension(D,active,A,B), + 'chr gen_id'(D), + nb_getval('$chr_store_multi_hash_chr_translate____check_all_passive___2-12',E), + insert_ht(E,k(A,B),C), + nb_getval('$chr_store_multi_hash_chr_translate____check_all_passive___2-1',F), + insert_ht(F,A,C). constraints_code1([],A,B) :- !, A=B. @@ -7690,8 +18881,16 @@ constraints_code1([C|D],A,B) :- constraint_code(C,A,E), constraints_code1(D,E,B). constraints_code1(A,B,C) :- - insert_constraint_internal(_,_,D,true,constraints_code1(A,B,C),[A,B,C]), - '$insert_in_store_constraints_code1/3'(D). + D=suspension(E,active,_,A,B,C), + 'chr gen_id'(E), + nb_getval('$chr_store_global_ground_chr_translate____constraints_code1___3',F), + G=[D|F], + b_setval('$chr_store_global_ground_chr_translate____constraints_code1___3',G), + ( F=[H|_] -> + setarg(3,H,G) + ; + true + ). constraint_code(A,B,C) :- ( ( @@ -7712,55 +18911,125 @@ constraint_code(A,B,C) :- ) ) -> constraint_prelude(A,F), - B=[F|G] + add_dummy_location(F,G), + B=[G|H] ; - B=G + B=H ), - H=[0], - occurrences_code(A,1,H,I,G,J), - gen_cond_attach_clause(A,I,J,C). + I=[0], + occurrences_code(A,1,I,J,H,K), + gen_cond_attach_clause(A,J,K,C). has_active_occurrence(A) :- - has_active_occurrence(A,1). + nb_getval('$chr_store_multi_hash_chr_translate____memo_has_active_occurrence___1-1',D), + lookup_ht(D,A,C), + 'chr sbag_member'(B,C), + B=suspension(_,active,_), + !. +has_active_occurrence(A) :- + has_active_occurrence(A,1), + memo_has_active_occurrence(A). has_active_occurrence(A,B) :- - '$via1_multi_hash_max_occurrence/2-1'(A,E), + nb_getval('$chr_store_multi_hash_chr_translate____max_occurrence___2-1',F), + lookup_ht(F,A,E), 'chr sbag_member'(C,E), - C=suspension(_,mutable(active),_,_,_,_,_,D), + C=suspension(_,active,_,_,D), B>D, !, fail. has_active_occurrence(A,B) :- - nb_getval('$chr_store_global_ground_chr_translate:passive/2',F), + nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-12',K), + lookup_ht(K,k(A,B),F), 'chr sbag_member'(C,F), - C=suspension(_,mutable(active),_,_,_,_,D,E), - '$via1_multi_hash_occurrence/4-1'(A,K), - 'chr sbag_member'(G,K), - G=suspension(_,mutable(active),_,_,_,_,_,H,I,J), - H==B, - I=D, - J=E, + C=suspension(_,active,_,_,_,_,D,E,_), + nb_getval('$chr_store_multi_hash_chr_translate____passive___2-12',J), + lookup_ht(J,k(D,E),H), + 'chr sbag_member'(G,H), + G=suspension(_,active,_,_,_), !, - L is B+1, - has_active_occurrence(A,L). + I is B+1, + has_active_occurrence(A,I). has_active_occurrence(_,_). +memo_has_active_occurrence(A) :- + B=suspension(C,active,A), + 'chr gen_id'(C), + nb_getval('$chr_store_multi_hash_chr_translate____memo_has_active_occurrence___1-1',D), + insert_ht(D,A,B). use_auxiliary_predicate(A) :- - '$via1_multi_hash_use_auxiliary_predicate/1-1'(A,C), + nb_getval('$chr_store_multi_hash_chr_translate____use_auxiliary_predicate___1-1',D), + lookup_ht(D,A,C), 'chr sbag_member'(B,C), - B=suspension(_,mutable(active),_,_,_,_,_), + B=suspension(_,active,_), !. use_auxiliary_predicate(A) :- - insert_constraint_internal(_,_,B,true,use_auxiliary_predicate(A),[A]), - '$insert_in_store_use_auxiliary_predicate/1'(B). + B=suspension(C,active,A), + 'chr gen_id'(C), + nb_getval('$chr_store_multi_hash_chr_translate____use_auxiliary_predicate___1-1',D), + insert_ht(D,A,B). +use_auxiliary_predicate(A,B) :- + nb_getval('$chr_store_multi_hash_chr_translate____use_auxiliary_predicate___2-12',E), + lookup_ht(E,k(A,B),D), + 'chr sbag_member'(C,D), + C=suspension(_,active,_,_), + !. +use_auxiliary_predicate(A,B) :- + C=suspension(D,active,A,B), + 'chr gen_id'(D), + nb_getval('$chr_store_multi_hash_chr_translate____use_auxiliary_predicate___2-1',E), + insert_ht(E,A,C), + nb_getval('$chr_store_multi_hash_chr_translate____use_auxiliary_predicate___2-12',F), + insert_ht(F,k(A,B),C). is_used_auxiliary_predicate(A) :- - '$via1_multi_hash_use_auxiliary_predicate/1-1'(A,C), + nb_getval('$chr_store_multi_hash_chr_translate____use_auxiliary_predicate___1-1',D), + lookup_ht(D,A,C), 'chr sbag_member'(B,C), - B=suspension(_,mutable(active),_,_,_,_,_), + B=suspension(_,active,_), + !. +is_used_auxiliary_predicate(A) :- + nb_getval('$chr_store_multi_hash_chr_translate____use_auxiliary_predicate___2-1',D), + lookup_ht(D,A,C), + 'chr sbag_member'(B,C), + B=suspension(_,active,_,_), !. is_used_auxiliary_predicate(_) :- fail. +is_used_auxiliary_predicate(A,_) :- + nb_getval('$chr_store_multi_hash_chr_translate____use_auxiliary_predicate___1-1',D), + lookup_ht(D,A,C), + 'chr sbag_member'(B,C), + B=suspension(_,active,_), + !. +is_used_auxiliary_predicate(A,B) :- + nb_getval('$chr_store_multi_hash_chr_translate____use_auxiliary_predicate___2-12',E), + lookup_ht(E,k(A,B),D), + 'chr sbag_member'(C,D), + C=suspension(_,active,_,_), + !. +is_used_auxiliary_predicate(_,_) :- + fail. +use_auxiliary_module(A) :- + nb_getval('$chr_store_multi_hash_chr_translate____use_auxiliary_module___1-1',D), + lookup_ht(D,A,C), + 'chr sbag_member'(B,C), + B=suspension(_,active,_), + !. +use_auxiliary_module(A) :- + B=suspension(C,active,A), + 'chr gen_id'(C), + nb_getval('$chr_store_multi_hash_chr_translate____use_auxiliary_module___1-1',D), + insert_ht(D,A,B). +is_used_auxiliary_module(A) :- + nb_getval('$chr_store_multi_hash_chr_translate____use_auxiliary_module___1-1',D), + lookup_ht(D,A,C), + 'chr sbag_member'(B,C), + B=suspension(_,active,_), + !. +is_used_auxiliary_module(_) :- + fail. occurrences_code(A,B,C,D,E,F) :- - '$via1_multi_hash_max_occurrence/2-1'(A,I), + nb_getval('$chr_store_multi_hash_chr_translate____max_occurrence___2-1',J), + lookup_ht(J,A,I), 'chr sbag_member'(G,I), - G=suspension(_,mutable(active),_,_,_,_,_,H), + G=suspension(_,active,_,_,H), B>H, !, D=C, @@ -7770,64 +19039,79 @@ occurrences_code(A,B,C,D,E,F) :- I is B+1, occurrences_code(A,I,G,D,H,F). occurrence_code(A,B,C,D,E,F) :- - '$via1_multi_hash_occurrence/4-1'(A,K), - 'chr sbag_member'(G,K), - G=suspension(_,mutable(active),_,_,_,_,_,H,I,J), - H=B, - '$via1_multi_hash_passive/2-1'(I,N), - 'chr sbag_member'(L,N), - L=suspension(_,mutable(active),_,_,_,_,_,M), - M=J, - !, - D=C, - E=F. -occurrence_code(A,B,C,D,E,F) :- - '$via1_multi_hash_occurrence/4-1'(A,K), - 'chr sbag_member'(G,K), - G=suspension(_,mutable(active),_,_,_,_,_,H,I,J), - H=B, - '$via1_multi_hash_rule/2-1'(I,N), - 'chr sbag_member'(L,N), - L=suspension(_,mutable(active),_,_,_,_,_,M), - !, - M=pragma(rule(O,P,_,_),ids(Q,R),_,_,_), - ( select2(J,S,Q,O,T,U) -> + nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-12',B1), + lookup_ht(B1,k(A,B),J), + 'chr sbag_member'(G,J), + G=suspension(_,active,_,_,_,_,H,I,_), + ( + nb_getval('$chr_store_multi_hash_chr_translate____passive___2-12',C1), + lookup_ht(C1,k(H,I),L), + 'chr sbag_member'(K,L), + K=suspension(_,active,_,_,_), + !, + ( named_history(H,_,_) -> + does_use_history(A,B) + ; + true + ), D=C, - head1_code(S,U,T,M,A,B,C,E,F) + E=F ; - ( select2(J,V,R,P,W,X) -> - head2_code(V,X,W,M,A,B,C,E,Y), - inc_id(C,D), - ( unconditional_occurrence(A,B) -> - Y=F - ; - gen_alloc_inc_clause(A,B,C,Y,F) + nb_getval('$chr_store_multi_hash_chr_translate____rule___2-1',A1), + lookup_ht1(A1,H,H,O), + 'chr sbag_member'(M,O), + M=suspension(_,active,_,_,_,N), + !, + N=pragma(rule(P,Q,_,_),ids(R,S),_,_,_), + ( select2(I,T,R,P,U,V) -> + D=C, + head1_code(T,I,V,U,N,A,B,C,E,F) + ; + ( select2(I,W,S,Q,X,Y) -> + head2_code(W,I,Y,X,N,A,B,C,E,Z), + ( should_skip_to_next_id(A,B) -> + inc_id(C,D), + ( unconditional_occurrence(A,B) -> + Z=F + ; + gen_alloc_inc_clause(A,B,C,Z,F) + ) + ; + D=C, + Z=F + ) ) ) ). occurrence_code(A,B,_,_,_,_) :- - format('occurrence_code/6: missing information to compile ~w:~w -',[A,B]), - fail. + chr_error(internal,'occurrence_code/6: missing information to compile ~w:~w +',[A,B]). functional_dependency(A,B,C,D) :- B>1, - '$via1_multi_hash_allocation_occurrence/2-1'(A,G), + nb_getval('$chr_store_multi_hash_chr_translate____allocation_occurrence___2-1',M), + lookup_ht(M,A,G), 'chr sbag_member'(E,G), - E=suspension(_,mutable(active),_,_,_,_,_,F), - '$via1_multi_hash_occurrence/4-1'(A,K), + E=suspension(_,active,_,_,F), + nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-1',L), + lookup_ht(L,A,K), 'chr sbag_member'(H,K), - H=suspension(_,mutable(active),_,_,_,_,_,I,J,_), + H=suspension(_,active,_,_,_,I,J,_,_), J=B, F>I, !, functional_dependency(A,1,C,D). functional_dependency(A,B,C,D) :- - insert_constraint_internal(_,_,E,true,functional_dependency(A,B,C,D),[A,B,C,D]), - '$insert_in_store_functional_dependency/4'(E). + E=suspension(F,active,A,B,C,D), + 'chr gen_id'(F), + nb_getval('$chr_store_multi_hash_chr_translate____functional_dependency___4-1',G), + insert_ht(G,A,E), + nb_getval('$chr_store_multi_hash_chr_translate____functional_dependency___4-12',H), + insert_ht(H,k(A,B),E). get_functional_dependency(A,B,C,D) :- - '$via1_multi_hash_functional_dependency/4-1'(A,I), + nb_getval('$chr_store_multi_hash_chr_translate____functional_dependency___4-1',J), + lookup_ht(J,A,I), 'chr sbag_member'(E,I), - E=suspension(_,mutable(active),_,_,_,_,_,F,G,H), + E=suspension(_,active,_,F,G,H), B>=F, !, C=G, @@ -7835,1394 +19119,2354 @@ get_functional_dependency(A,B,C,D) :- get_functional_dependency(_,_,_,_) :- fail. initial_call_pattern(A) :- - 'initial_call_pattern/1__0'(A,_). -'initial_call_pattern/1__0'(A,_) :- - '$via1_multi_hash_initial_call_pattern/1-1'(A,C), + initial_call_pattern___1__0(A,_). +initial_call_pattern___1__0(A,_) :- + nb_getval('$chr_store_multi_hash_chr_translate____initial_call_pattern___1-1',D), + lookup_ht(D,A,C), 'chr sbag_member'(B,C), - B=suspension(_,mutable(active),_,_,_,_,_), + B=suspension(_,active,_,_), !. -'initial_call_pattern/1__0'(A,B) :- - allocate_constraint(true,B,initial_call_pattern(A),[A]), - activate_constraint(C,_,B,D), - ( C==yes -> - '$insert_in_store_initial_call_pattern/1'(B) - ; - true - ), +initial_call_pattern___1__0(A,B) :- + B=suspension(C,active,t,A), + 'chr gen_id'(C), + nb_getval('$chr_store_multi_hash_chr_translate____initial_call_pattern___1-1',D), + insert_ht(D,A,B), call_pattern(A), - ( B=suspension(_,mutable(active),_,mutable(D),_,_,_) -> - 'chr update_mutable'(inactive,mutable(active)), - 'initial_call_pattern/1__1'(A,B) + ( B=suspension(_,active,_,_) -> + setarg(2,B,inactive), + initial_call_pattern___1__1(A,B) ; true ). -'initial_call_pattern/1__1'(A,B) :- - '$via1_multi_hash_final_answer_pattern/2-1'(A,C), +initial_call_pattern___1__1(A,B) :- + nb_getval('$chr_store_multi_hash_chr_translate____final_answer_pattern___2-1',D), + lookup_ht(D,A,C), !, - 'initial_call_pattern/1__1__0'(C,A,B). -'initial_call_pattern/1__1__0'([],A,B) :- - 'initial_call_pattern/1__2'(A,B). -'initial_call_pattern/1__1__0'([E|G],A,B) :- - ( E=suspension(_,mutable(active),_,_,_,_,C,D), - C==A, - nb_getval('$chr_store_global_ground_chr_translate:abstract_constraints/1',F) -> - 'initial_call_pattern/1__1__1'(F,D,E,G,A,B) + initial_call_pattern___1__1__0__4(C,A,B). +initial_call_pattern___1__1__0__4([],B,A) :- + initial_call_pattern___1__2(B,A). +initial_call_pattern___1__1__0__4([E|G],B,A) :- + ( E=suspension(_,active,_,C,D), + C==B, + nb_getval('$chr_store_global_ground_chr_translate____abstract_constraints___1',F) -> + initial_call_pattern___1__1__1__4(F,D,E,G,B,A) ; - 'initial_call_pattern/1__1__0'(G,A,B) + initial_call_pattern___1__1__0__4(G,B,A) ). -'initial_call_pattern/1__1__1'([],_,_,C,A,B) :- - 'initial_call_pattern/1__1__0'(C,A,B). -'initial_call_pattern/1__1__1'([G|H],D,A,E,B,C) :- - ( G=suspension(_,mutable(active),_,_,_,_,F), - K=t(130,C,A,G), - 'chr novel_production'(C,K), - 'chr novel_production'(A,K), - 'chr novel_production'(G,K) -> - 'chr extend_history'(C,K), - activate_constraint(I,_,C,J), - ( I==yes -> - '$insert_in_store_initial_call_pattern/1'(C) - ; - true - ), - ai_observation_schedule_new_calls(F,D), - ( C=suspension(_,mutable(active),_,mutable(J),_,_,_) -> - 'chr update_mutable'(inactive,mutable(active)), - 'initial_call_pattern/1__1__1'(H,D,A,E,B,C) +initial_call_pattern___1__1__1__4([],_,_,A,C,B) :- + initial_call_pattern___1__1__0__4(A,C,B). +initial_call_pattern___1__1__1__4([G|H],E,A,B,D,C) :- + ( G=suspension(_,active,_,F), + I=t(298,C,A,G), + '$novel_production'(C,I), + '$novel_production'(A,I) -> + '$extend_history'(C,I), + setarg(2,C,active), + ai_observation_schedule_new_calls(F,E), + ( C=suspension(_,active,_,_) -> + setarg(2,C,inactive), + initial_call_pattern___1__1__1__4(H,E,A,B,D,C) ; true ) ; - 'initial_call_pattern/1__1__1'(H,D,A,E,B,C) - ). -'initial_call_pattern/1__1'(A,B) :- - 'initial_call_pattern/1__2'(A,B). -'initial_call_pattern/1__2'(_,A) :- - activate_constraint(B,_,A,_), - ( B==yes -> - '$insert_in_store_initial_call_pattern/1'(A) - ; - true + initial_call_pattern___1__1__1__4(H,E,A,B,D,C) ). +initial_call_pattern___1__1(A,B) :- + initial_call_pattern___1__2(A,B). +initial_call_pattern___1__2(_,A) :- + setarg(2,A,active). call_pattern(A) :- - 'call_pattern/1__0'(A,_). -'call_pattern/1__0'(A,_) :- - '$via1_multi_hash_call_pattern/1-1'(A,C), + call_pattern___1__0(A,_). +call_pattern___1__0(A,_) :- + nb_getval('$chr_store_multi_hash_chr_translate____call_pattern___1-1',D), + lookup_ht(D,A,C), 'chr sbag_member'(B,C), - B=suspension(_,mutable(active),_,_,_,_,_), + B=suspension(_,active,_), !. -'call_pattern/1__0'(A,B) :- - A=odom(C,D), - C=[], - allocate_constraint(true,B,call_pattern(A),[A]), - !, - activate_constraint(E,_,B,F), - ( E==yes -> - '$insert_in_store_call_pattern/1'(B) - ; - true - ), - final_answer_pattern(odom([],D),odom([],D)), - ( B=suspension(_,mutable(active),_,mutable(F),_,_,_) -> - 'chr update_mutable'(inactive,mutable(active)), - 'call_pattern/1__1'(A,B) +call_pattern___1__0(A,B) :- + B=suspension(C,active,A), + 'chr gen_id'(C), + nb_getval('$chr_store_multi_hash_chr_translate____call_pattern___1-1',D), + insert_ht(D,A,B), + call_pattern_worker(A), + ( B=suspension(_,active,_) -> + setarg(2,B,inactive), + call_pattern___1__1(A,B) ; true ). -'call_pattern/1__0'(A,B) :- - allocate_constraint(true,B,call_pattern(A),[A]), - 'call_pattern/1__1'(A,B). -'call_pattern/1__1'(A,B) :- - A=odom(C,D), - C=[E|F], +call_pattern___1__1(_,A) :- + setarg(2,A,active). +call_pattern_worker(odom([],A)) :- !, - activate_constraint(H,_,B,I), - ( H==yes -> - '$insert_in_store_call_pattern/1'(B) - ; - true - ), - G=odom(E,D), - depends_on_goal(odom([E|F],D),G), + final_answer_pattern(odom([],A),odom([],A)). +call_pattern_worker(odom([B|C],A)) :- + !, + D=odom(B,A), + depends_on_goal(odom([B|C],A),D), + call_pattern(D). +call_pattern_worker(odom((B;C),A)) :- + !, + D=odom((B;C),A), + E=odom([],A), + final_answer_pattern(D,E), + F=odom(B,A), + G=odom(C,A), + call_pattern(F), call_pattern(G), - ( B=suspension(_,mutable(active),_,mutable(I),_,_,_) -> - 'chr update_mutable'(inactive,mutable(active)), - 'call_pattern/1__2'(A,B) - ; - true - ). -'call_pattern/1__1'(A,B) :- - 'call_pattern/1__2'(A,B). -'call_pattern/1__2'(A,B) :- - A=odom(C,D), - C=builtin, + depends_on_as(D,F,G). +call_pattern_worker(odom(builtin,A)) :- !, - activate_constraint(F,_,B,G), - ( F==yes -> - '$insert_in_store_call_pattern/1'(B) - ; - true - ), - ord_empty(E), - final_answer_pattern(odom(builtin,D),odom([],E)), - ( B=suspension(_,mutable(active),_,mutable(G),_,_,_) -> - 'chr update_mutable'(inactive,mutable(active)), - 'call_pattern/1__3'(A,B) - ; - true - ). -'call_pattern/1__2'(A,B) :- - 'call_pattern/1__3'(A,B). -'call_pattern/1__3'(A,B) :- - A=odom(C,D), - C=occ(E,F), - '$via1_multi_hash_max_occurrence/2-1'(E,G), + ord_empty(B), + final_answer_pattern(odom(builtin,A),odom([],B)). +call_pattern_worker(odom(occ(B,C),A)) :- + nb_getval('$chr_store_multi_hash_chr_translate____max_occurrence___2-1',G), + lookup_ht(G,B,F), + 'chr sbag_member'(D,F), + D=suspension(_,active,_,_,E), + C>E, !, - 'call_pattern/1__3__0'(G,A,B,E,F,D). -'call_pattern/1__3__0'([],A,B,_,_,_) :- - 'call_pattern/1__4'(A,B). -'call_pattern/1__3__0'([H|I],A,B,D,E,C) :- - ( H=suspension(_,mutable(active),_,_,_,_,F,G), - F==D, - L=t(138,B,H), - 'chr novel_production'(B,L), - 'chr novel_production'(H,L), - E>G -> - 'chr extend_history'(B,L), - activate_constraint(J,_,B,K), - ( J==yes -> - '$insert_in_store_call_pattern/1'(B) + final_answer_pattern(odom(occ(B,C),A),odom([],A)). +call_pattern_worker(odom(A,B)) :- + A=_/_, + !, + C=odom(occ(A,1),B), + call_pattern(C), + depends_on(odom(A,B),C). +call_pattern_worker(odom(occ(B,C),A)) :- + nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-12',W), + lookup_ht(W,k(B,C),H), + 'chr sbag_member'(D,H), + D=suspension(_,active,_,_,_,_,E,F,G), + ( + ( + is_passive(E,F), + !, + I is C+1, + J=odom(occ(B,I),A), + call_pattern(J), + final_answer_pattern(odom(occ(B,C),A),odom([],A)), + depends_on(odom(occ(B,C),A),J) ; - true - ), - final_answer_pattern(odom(occ(D,E),C),odom([],C)), - ( B=suspension(_,mutable(active),_,mutable(K),_,_,_) -> - 'chr update_mutable'(inactive,mutable(active)), - 'call_pattern/1__3__0'(I,A,B,D,E,C) - ; - true + G=simplification, + \+is_passive(E,F), + !, + ai_observation_memo_simplification_rest_heads(B,C,K), + ai_observation_observe_set(A,K,L), + ai_observation_memo_abstract_goal(E,M), + call_pattern(odom(M,L)), + N is C+1, + O=odom(occ(B,N),A), + call_pattern(O), + depends_on_as(odom(occ(B,C),A),odom(M,L),O), + final_answer_pattern(odom(occ(B,C),A),odom([],A)) ) ; - 'call_pattern/1__3__0'(I,A,B,D,E,C) - ). -'call_pattern/1__3'(A,B) :- - 'call_pattern/1__4'(A,B). -'call_pattern/1__4'(A,B) :- - A=odom(C,D), - nb_getval('$chr_store_global_ground_chr_translate:abstract_constraints/1',E), - !, - 'call_pattern/1__4__0'(E,A,B,C,D). -'call_pattern/1__4__0'([],A,B,_,_) :- - 'call_pattern/1__5'(A,B). -'call_pattern/1__4__0'([F|G],A,B,C,D) :- - ( F=suspension(_,mutable(active),_,_,_,_,E), - K=t(139,B,F), - 'chr novel_production'(B,K), - 'chr novel_production'(F,K), - memberchk_eq(C,E) -> - 'chr extend_history'(B,K), - activate_constraint(I,_,B,J), - ( I==yes -> - '$insert_in_store_call_pattern/1'(B) + G=propagation, + \+is_passive(E,F), + !, + ai_observation_memo_propagation_rest_heads(B,C,P), + ai_observation_observe_set(A,P,Q), + ord_add_element(Q,B,R), + ai_observation_memo_abstract_goal(E,S), + call_pattern(odom(S,R)), + ( ord_memberchk(B,Q) -> + T=no ; - true + T=yes ), - H=odom(occ(C,1),D), - call_pattern(H), - depends_on(odom(C,D),H), - ( B=suspension(_,mutable(active),_,mutable(J),_,_,_) -> - 'chr update_mutable'(inactive,mutable(active)), - 'call_pattern/1__4__0'(G,A,B,C,D) - ; - true - ) - ; - 'call_pattern/1__4__0'(G,A,B,C,D) - ). -'call_pattern/1__4'(A,B) :- - 'call_pattern/1__5'(A,B). -'call_pattern/1__5'(A,B) :- - A=odom(C,D), - C=occ(E,F), - nb_getval('$chr_store_global_ground_chr_translate:abstract_constraints/1',G), - !, - 'call_pattern/1__5__0'(G,A,B,E,F,D). -'call_pattern/1__5__0'([],A,B,_,_,_) :- - 'call_pattern/1__6'(A,B). -'call_pattern/1__5__0'([G|I],A,B,D,E,C) :- - ( G=suspension(_,mutable(active),_,_,_,_,F), - nb_getval('$chr_store_global_ground_chr_translate:rule/2',H) -> - 'call_pattern/1__5__1'(H,F,G,I,A,B,D,E,C) - ; - 'call_pattern/1__5__0'(I,A,B,D,E,C) - ). -'call_pattern/1__5__1'([],_,_,F,A,B,D,E,C) :- - 'call_pattern/1__5__0'(F,A,B,D,E,C). -'call_pattern/1__5__1'([K|M],G,A,H,B,C,E,F,D) :- - ( K=suspension(_,mutable(active),_,_,_,_,I,J), - '$via1_multi_hash_occurrence/4-1'(E,L) -> - 'call_pattern/1__5__2'(L,I,J,K,M,G,A,H,B,C,E,F,D) - ; - 'call_pattern/1__5__1'(M,G,A,H,B,C,E,F,D) - ). -'call_pattern/1__5__2'([],_,_,_,I,F,G,H,A,B,D,E,C) :- - 'call_pattern/1__5__1'(I,F,G,H,A,B,D,E,C). -'call_pattern/1__5__2'([Q|R],J,K,A,L,H,B,I,C,D,F,G,E) :- - ( Q=suspension(_,mutable(active),_,_,_,_,M,N,O,P), - M==F, - N==G, - O==J, - G1=t(140,D,B,Q,A), - 'chr novel_production'(D,G1), - 'chr novel_production'(B,G1), - 'chr novel_production'(Q,G1), - 'chr novel_production'(A,G1), - K=pragma(rule(S,T,_,U),ids(V,_),_,_,_), - memberchk_eq(P,V) -> - 'chr extend_history'(D,G1), - activate_constraint(E1,_,D,F1), - ( E1==yes -> - '$insert_in_store_call_pattern/1'(D) - ; - true - ), - select2(P,_,V,S,_,W), - ai_observation_abstract_constraints(W,H,X), - ai_observation_observe_list(odom([],E),X,odom([],Y)), - ai_observation_abstract_constraints(T,H,Z), - ai_observation_observe_list(odom([],Y),Z,odom([],A1)), - ai_observation_abstract_goal(U,H,B1), - call_pattern(odom(B1,A1)), - C1 is G+1, - D1=odom(occ(F,C1),E), - call_pattern(D1), - depends_on_as(odom(occ(F,G),E),odom(B1,A1),D1), - ( D=suspension(_,mutable(active),_,mutable(F1),_,_,_) -> - 'chr update_mutable'(inactive,mutable(active)), - 'call_pattern/1__5__2'(R,J,K,A,L,H,B,I,C,D,F,G,E) - ; - true - ) - ; - 'call_pattern/1__5__2'(R,J,K,A,L,H,B,I,C,D,F,G,E) - ). -'call_pattern/1__5'(A,B) :- - 'call_pattern/1__6'(A,B). -'call_pattern/1__6'(A,B) :- - A=odom(C,D), - C=occ(E,F), - nb_getval('$chr_store_global_ground_chr_translate:abstract_constraints/1',G), - !, - 'call_pattern/1__6__0'(G,A,B,E,F,D). -'call_pattern/1__6__0'([],A,B,_,_,_) :- - 'call_pattern/1__7'(A,B). -'call_pattern/1__6__0'([G|I],A,B,D,E,C) :- - ( G=suspension(_,mutable(active),_,_,_,_,F), - nb_getval('$chr_store_global_ground_chr_translate:rule/2',H) -> - 'call_pattern/1__6__1'(H,F,G,I,A,B,D,E,C) - ; - 'call_pattern/1__6__0'(I,A,B,D,E,C) - ). -'call_pattern/1__6__1'([],_,_,F,A,B,D,E,C) :- - 'call_pattern/1__6__0'(F,A,B,D,E,C). -'call_pattern/1__6__1'([K|M],G,A,H,B,C,E,F,D) :- - ( K=suspension(_,mutable(active),_,_,_,_,I,J), - '$via1_multi_hash_occurrence/4-1'(E,L) -> - 'call_pattern/1__6__2'(L,I,J,K,M,G,A,H,B,C,E,F,D) - ; - 'call_pattern/1__6__1'(M,G,A,H,B,C,E,F,D) - ). -'call_pattern/1__6__2'([],_,_,_,I,F,G,H,A,B,D,E,C) :- - 'call_pattern/1__6__1'(I,F,G,H,A,B,D,E,C). -'call_pattern/1__6__2'([Q|R],J,K,A,L,H,B,I,C,D,F,G,E) :- - ( Q=suspension(_,mutable(active),_,_,_,_,M,N,O,P), - M==F, - N==G, - O==J, - I1=t(142,D,B,Q,A), - 'chr novel_production'(D,I1), - 'chr novel_production'(B,I1), - 'chr novel_production'(Q,I1), - 'chr novel_production'(A,I1), - K=pragma(rule(S,T,_,U),ids(_,V),_,_,_), - memberchk_eq(P,V) -> - 'chr extend_history'(D,I1), - activate_constraint(G1,_,D,H1), - ( G1==yes -> - '$insert_in_store_call_pattern/1'(D) - ; - true - ), - select2(P,_,V,T,_,W), - ai_observation_abstract_constraints(W,H,X), - ai_observation_observe_list(odom([],E),X,odom([],Y)), - ai_observation_abstract_constraints(S,H,Z), - ai_observation_observe_list(odom([],Y),Z,odom([],A1)), - ord_add_element(A1,F,B1), - ai_observation_abstract_goal(U,H,C1), - call_pattern(odom(C1,B1)), - ( ord_memberchk(F,A1) -> - D1=no - ; - D1=yes - ), - E1 is G+1, - F1=odom(occ(F,E1),E), - call_pattern(F1), - depends_on_ap(odom(occ(F,G),E),odom(C1,B1),F1,D1), - ( D=suspension(_,mutable(active),_,mutable(H1),_,_,_) -> - 'chr update_mutable'(inactive,mutable(active)), - 'call_pattern/1__6__2'(R,J,K,A,L,H,B,I,C,D,F,G,E) - ; - true - ) - ; - 'call_pattern/1__6__2'(R,J,K,A,L,H,B,I,C,D,F,G,E) - ). -'call_pattern/1__6'(A,B) :- - 'call_pattern/1__7'(A,B). -'call_pattern/1__7'(_,A) :- - activate_constraint(B,_,A,_), - ( B==yes -> - '$insert_in_store_call_pattern/1'(A) - ; - true + U is C+1, + V=odom(occ(B,U),A), + call_pattern(V), + depends_on_ap(odom(occ(B,C),A),odom(S,R),V,T) ). +call_pattern_worker(A) :- + chr_error(internal,'AI observation analysis: unexpected abstract state ~w +',[A]). final_answer_pattern(A,B) :- - 'final_answer_pattern/2__0'(A,B,_). -'final_answer_pattern/2__0'(A,B,_) :- - '$via1_multi_hash_final_answer_pattern/2-1'(A,E), - 'chr sbag_member'(C,E), - C=suspension(_,mutable(active),_,_,_,_,_,D), - ai_observation_leq(B,D), - !. -'final_answer_pattern/2__0'(A,B,C) :- - '$via1_multi_hash_final_answer_pattern/2-1'(A,D), - !, - 'final_answer_pattern/2__0__0'(D,A,B,C). -'final_answer_pattern/2__0__0'([],A,B,C) :- - 'final_answer_pattern/2__1'(A,B,C). -'final_answer_pattern/2__0__0'([F|G],A,B,C) :- - ( F=suspension(_,mutable(active),_,_,_,_,D,E), + final_answer_pattern___2__0(A,B,_). +final_answer_pattern___2__0(A,B,C) :- + nb_getval('$chr_store_multi_hash_chr_translate____final_answer_pattern___2-1',G), + lookup_ht(G,A,F), + ( + 'chr sbag_member'(D,F), + D=suspension(_,active,_,_,E), + ai_observation_leq(B,E), + ! + ; + !, + final_answer_pattern___2__0__0__2(F,A,B,C) + ). +final_answer_pattern___2__0__0__2([],B,C,A) :- + final_answer_pattern___2__1(B,C,A). +final_answer_pattern___2__0__0__2([F|G],A,B,C) :- + ( F=suspension(_,active,_,D,E), D==A, ai_observation_leq(E,B) -> - remove_constraint_internal(F,_,H), - ( H==yes -> - '$delete_from_store_final_answer_pattern/2'(F) - ; - true - ), - 'final_answer_pattern/2__0__0'(G,A,B,C) + setarg(2,F,removed), + nb_getval('$chr_store_multi_hash_chr_translate____final_answer_pattern___2-1',H), + delete_ht(H,A,F), + final_answer_pattern___2__0__0__2(G,A,B,C) ; - 'final_answer_pattern/2__0__0'(G,A,B,C) + final_answer_pattern___2__0__0__2(G,A,B,C) ). -'final_answer_pattern/2__0'(A,B,C) :- - 'final_answer_pattern/2__1'(A,B,C). -'final_answer_pattern/2__1'(A,B,C) :- - '$via1_multi_hash_initial_call_pattern/1-1'(A,D), +final_answer_pattern___2__0(A,B,C) :- + final_answer_pattern___2__1(A,B,C). +final_answer_pattern___2__1(A,B,C) :- + nb_getval('$chr_store_multi_hash_chr_translate____initial_call_pattern___1-1',F), + lookup_ht(F,A,D), !, - allocate_constraint(true,C,final_answer_pattern(A,B),[A,B]), - 'final_answer_pattern/2__1__0'(D,A,B,C). -'final_answer_pattern/2__1__0'([],A,B,C) :- - 'final_answer_pattern/2__2'(A,B,C). -'final_answer_pattern/2__1__0'([E|G],A,B,C) :- - ( E=suspension(_,mutable(active),_,_,_,_,D), - D==A, - nb_getval('$chr_store_global_ground_chr_translate:abstract_constraints/1',F) -> - 'final_answer_pattern/2__1__1'(F,E,G,A,B,C) + C=suspension(E,not_stored_yet,t,A,B), + 'chr gen_id'(E), + final_answer_pattern___2__1__0__3(D,A,B,C). +final_answer_pattern___2__1__0__3([],B,C,A) :- + final_answer_pattern___2__2(B,C,A). +final_answer_pattern___2__1__0__3([E|G],B,C,A) :- + ( E=suspension(_,active,_,D), + D==B, + nb_getval('$chr_store_global_ground_chr_translate____abstract_constraints___1',F) -> + final_answer_pattern___2__1__1__3(F,E,G,B,C,A) ; - 'final_answer_pattern/2__1__0'(G,A,B,C) + final_answer_pattern___2__1__0__3(G,B,C,A) ). -'final_answer_pattern/2__1__1'([],_,D,A,B,C) :- - 'final_answer_pattern/2__1__0'(D,A,B,C). -'final_answer_pattern/2__1__1'([G|H],A,E,B,C,D) :- - ( G=suspension(_,mutable(active),_,_,_,_,F), - K=t(130,A,D,G), - 'chr novel_production'(A,K), - 'chr novel_production'(D,K), - 'chr novel_production'(G,K) -> - 'chr extend_history'(D,K), - activate_constraint(I,_,D,J), - ( I==yes -> - '$insert_in_store_final_answer_pattern/2'(D) +final_answer_pattern___2__1__1__3([],_,A,C,D,B) :- + final_answer_pattern___2__1__0__3(A,C,D,B). +final_answer_pattern___2__1__1__3([G|H],A,B,D,E,C) :- + ( G=suspension(_,active,_,F), + I=t(298,A,C,G), + '$novel_production'(A,I), + '$novel_production'(C,I) -> + '$extend_history'(C,I), + arg(2,C,J), + setarg(2,C,active), + ( J==not_stored_yet -> + nb_getval('$chr_store_multi_hash_chr_translate____final_answer_pattern___2-1',K), + insert_ht(K,D,C) ; true ), - ai_observation_schedule_new_calls(F,C), - ( D=suspension(_,mutable(active),_,mutable(J),_,_,_,_) -> - 'chr update_mutable'(inactive,mutable(active)), - 'final_answer_pattern/2__1__1'(H,A,E,B,C,D) + ai_observation_schedule_new_calls(F,E), + ( C=suspension(_,active,_,_,_) -> + setarg(2,C,inactive), + final_answer_pattern___2__1__1__3(H,A,B,D,E,C) ; true ) ; - 'final_answer_pattern/2__1__1'(H,A,E,B,C,D) + final_answer_pattern___2__1__1__3(H,A,B,D,E,C) ). -'final_answer_pattern/2__1'(A,B,C) :- - allocate_constraint(true,C,final_answer_pattern(A,B),[A,B]), - 'final_answer_pattern/2__2'(A,B,C). -'final_answer_pattern/2__2'(A,B,C) :- - '$via1_multi_hash_depends_on/2-2'(A,D), +final_answer_pattern___2__1(A,B,C) :- + C=suspension(D,not_stored_yet,t,A,B), + 'chr gen_id'(D), + final_answer_pattern___2__2(A,B,C). +final_answer_pattern___2__2(A,B,C) :- + nb_getval('$chr_store_multi_hash_chr_translate____depends_on___2-2',E), + lookup_ht(E,A,D), !, - 'final_answer_pattern/2__2__0'(D,A,B,C). -'final_answer_pattern/2__2__0'([],A,B,C) :- - 'final_answer_pattern/2__3'(A,B,C). -'final_answer_pattern/2__2__0'([F|G],A,B,C) :- - ( F=suspension(_,mutable(active),_,_,_,_,D,E), - E==A, - J=t(132,F,C), - 'chr novel_production'(F,J), - 'chr novel_production'(C,J) -> - 'chr extend_history'(C,J), - activate_constraint(H,_,C,I), - ( H==yes -> - '$insert_in_store_final_answer_pattern/2'(C) + final_answer_pattern___2__2__0__4(D,A,B,C). +final_answer_pattern___2__2__0__4([],B,C,A) :- + final_answer_pattern___2__3(B,C,A). +final_answer_pattern___2__2__0__4([F|G],B,C,A) :- + ( F=suspension(_,active,_,D,E), + E==B, + H=t(300,F,A), + '$novel_production'(F,H), + '$novel_production'(A,H) -> + '$extend_history'(A,H), + arg(2,A,I), + setarg(2,A,active), + ( I==not_stored_yet -> + nb_getval('$chr_store_multi_hash_chr_translate____final_answer_pattern___2-1',J), + insert_ht(J,B,A) ; true ), - final_answer_pattern(D,B), - ( C=suspension(_,mutable(active),_,mutable(I),_,_,_,_) -> - 'chr update_mutable'(inactive,mutable(active)), - 'final_answer_pattern/2__2__0'(G,A,B,C) + final_answer_pattern(D,C), + ( A=suspension(_,active,_,_,_) -> + setarg(2,A,inactive), + final_answer_pattern___2__2__0__4(G,B,C,A) ; true ) ; - 'final_answer_pattern/2__2__0'(G,A,B,C) + final_answer_pattern___2__2__0__4(G,B,C,A) ). -'final_answer_pattern/2__2'(A,B,C) :- - 'final_answer_pattern/2__3'(A,B,C). -'final_answer_pattern/2__3'(A,B,C) :- - nb_getval('$chr_store_global_ground_chr_translate:depends_on/2',D), +final_answer_pattern___2__2(A,B,C) :- + final_answer_pattern___2__3(A,B,C). +final_answer_pattern___2__3(A,B,C) :- + nb_getval('$chr_store_multi_hash_chr_translate____depends_on_goal___2-2',E), + lookup_ht(E,A,D), !, - 'final_answer_pattern/2__3__0'(D,A,B,C). -'final_answer_pattern/2__3__0'([],A,B,C) :- - 'final_answer_pattern/2__4'(A,B,C). -'final_answer_pattern/2__3__0'([E|F],A,B,C) :- - ( E=suspension(_,mutable(active),_,_,_,_,D,_), - '$via1_multi_hash_depends_on_goal/2-1'(D,I), - 'chr sbag_member'(G,I), - G=suspension(_,mutable(active),_,_,_,_,_,H), - H==A -> - remove_constraint_internal(E,_,J), - ( J==yes -> - '$delete_from_store_depends_on/2'(E) - ; - true - ), - 'final_answer_pattern/2__3__0'(F,A,B,C) + final_answer_pattern___2__3__0__5(D,A,B,C). +final_answer_pattern___2__3__0__5([],B,C,A) :- + final_answer_pattern___2__4(B,C,A). +final_answer_pattern___2__3__0__5([F|H],B,C,A) :- + ( F=suspension(_,active,_,D,E), + E==B, + nb_getval('$chr_store_multi_hash_chr_translate____depends_on___2-1',I), + lookup_ht(I,D,G) -> + final_answer_pattern___2__3__1__5(G,D,F,H,B,C,A) ; - 'final_answer_pattern/2__3__0'(F,A,B,C) + final_answer_pattern___2__3__0__5(H,B,C,A) ). -'final_answer_pattern/2__3'(A,B,C) :- - 'final_answer_pattern/2__4'(A,B,C). -'final_answer_pattern/2__4'(A,B,C) :- - '$via1_multi_hash_depends_on_goal/2-2'(A,D), +final_answer_pattern___2__3__1__5([],_,_,A,C,D,B) :- + final_answer_pattern___2__3__0__5(A,C,D,B). +final_answer_pattern___2__3__1__5([I|J],E,A,F,B,C,D) :- + ( I=suspension(_,active,_,G,H), + G==E -> + setarg(2,I,removed), + nb_getval('$chr_store_multi_hash_chr_translate____depends_on___2-1',K), + delete_ht(K,E,I), + nb_getval('$chr_store_multi_hash_chr_translate____depends_on___2-2',L), + delete_ht(L,H,I), + final_answer_pattern___2__3__1__5(J,E,A,F,B,C,D) + ; + final_answer_pattern___2__3__1__5(J,E,A,F,B,C,D) + ). +final_answer_pattern___2__3(A,B,C) :- + final_answer_pattern___2__4(A,B,C). +final_answer_pattern___2__4(A,B,C) :- + nb_getval('$chr_store_multi_hash_chr_translate____depends_on_goal___2-2',E), + lookup_ht(E,A,D), !, - 'final_answer_pattern/2__4__0'(D,A,B,C). -'final_answer_pattern/2__4__0'([],A,B,C) :- - 'final_answer_pattern/2__5'(A,B,C). -'final_answer_pattern/2__4__0'([F|G],A,B,C) :- - ( F=suspension(_,mutable(active),_,_,_,_,D,E), - E==A, - M=t(136,F,C), - 'chr novel_production'(F,M), - 'chr novel_production'(C,M) -> - 'chr extend_history'(C,M), - activate_constraint(K,_,C,L), - ( K==yes -> - '$insert_in_store_final_answer_pattern/2'(C) + final_answer_pattern___2__4__0__6(D,A,B,C). +final_answer_pattern___2__4__0__6([],B,C,A) :- + final_answer_pattern___2__5(B,C,A). +final_answer_pattern___2__4__0__6([F|G],B,C,A) :- + ( F=suspension(_,active,_,D,E), + E==B, + K=t(305,F,A), + '$novel_production'(F,K), + '$novel_production'(A,K) -> + '$extend_history'(A,K), + arg(2,A,L), + setarg(2,A,active), + ( L==not_stored_yet -> + nb_getval('$chr_store_multi_hash_chr_translate____final_answer_pattern___2-1',M), + insert_ht(M,B,A) ; true ), D=odom([_|H],_), - B=odom([],I), + C=odom([],I), J=odom(H,I), call_pattern(J), depends_on(D,J), - ( C=suspension(_,mutable(active),_,mutable(L),_,_,_,_) -> - 'chr update_mutable'(inactive,mutable(active)), - 'final_answer_pattern/2__4__0'(G,A,B,C) + ( A=suspension(_,active,_,_,_) -> + setarg(2,A,inactive), + final_answer_pattern___2__4__0__6(G,B,C,A) ; true ) ; - 'final_answer_pattern/2__4__0'(G,A,B,C) + final_answer_pattern___2__4__0__6(G,B,C,A) ). -'final_answer_pattern/2__4'(A,B,C) :- - 'final_answer_pattern/2__5'(A,B,C). -'final_answer_pattern/2__5'(A,B,C) :- - '$via1_multi_hash_depends_on_as/3-2'(A,D), +final_answer_pattern___2__4(A,B,C) :- + final_answer_pattern___2__5(A,B,C). +final_answer_pattern___2__5(A,B,C) :- + nb_getval('$chr_store_multi_hash_chr_translate____depends_on_as___3-2',E), + lookup_ht(E,A,D), !, - 'final_answer_pattern/2__5__0'(D,A,B,C). -'final_answer_pattern/2__5__0'([],A,B,C) :- - 'final_answer_pattern/2__6'(A,B,C). -'final_answer_pattern/2__5__0'([G|I],A,B,C) :- - ( G=suspension(_,mutable(active),_,_,_,_,D,E,F), - E==A, - '$via1_multi_hash_final_answer_pattern/2-1'(F,H) -> - 'final_answer_pattern/2__5__1'(H,D,F,G,I,A,B,C) + final_answer_pattern___2__5__0__7(D,A,B,C). +final_answer_pattern___2__5__0__7([],B,C,A) :- + final_answer_pattern___2__6(B,C,A). +final_answer_pattern___2__5__0__7([G|I],B,C,A) :- + ( G=suspension(_,active,_,D,E,F), + E==B, + nb_getval('$chr_store_multi_hash_chr_translate____final_answer_pattern___2-1',J), + lookup_ht(J,F,H) -> + final_answer_pattern___2__5__1__7(H,D,F,G,I,B,C,A) ; - 'final_answer_pattern/2__5__0'(I,A,B,C) + final_answer_pattern___2__5__0__7(I,B,C,A) ). -'final_answer_pattern/2__5__1'([],_,_,_,D,A,B,C) :- - 'final_answer_pattern/2__5__0'(D,A,B,C). -'final_answer_pattern/2__5__1'([J|K],E,F,A,G,B,C,D) :- - ( J=suspension(_,mutable(active),_,_,_,_,H,I), - H==F, - O=t(141,A,D,J), - 'chr novel_production'(A,O), - 'chr novel_production'(D,O), - 'chr novel_production'(J,O) -> - 'chr extend_history'(D,O), - activate_constraint(M,_,D,N), - ( M==yes -> - '$insert_in_store_final_answer_pattern/2'(D) +final_answer_pattern___2__5__1__7([],_,_,_,A,C,D,B) :- + final_answer_pattern___2__5__0__7(A,C,D,B). +final_answer_pattern___2__5__1__7([J|K],F,G,A,B,D,E,C) :- + ( J=suspension(_,active,_,H,I), + H==G, + M=t(312,A,C,J), + '$novel_production'(A,M), + '$novel_production'(C,M), + '$novel_production'(J,M) -> + '$extend_history'(C,M), + arg(2,C,N), + setarg(2,C,active), + ( N==not_stored_yet -> + nb_getval('$chr_store_multi_hash_chr_translate____final_answer_pattern___2-1',O), + insert_ht(O,D,C) ; true ), - ai_observation_lub(C,I,L), - final_answer_pattern(E,L), - ( D=suspension(_,mutable(active),_,mutable(N),_,_,_,_) -> - 'chr update_mutable'(inactive,mutable(active)), - 'final_answer_pattern/2__5__1'(K,E,F,A,G,B,C,D) + ai_observation_lub(E,I,L), + final_answer_pattern(F,L), + ( C=suspension(_,active,_,_,_) -> + setarg(2,C,inactive), + final_answer_pattern___2__5__1__7(K,F,G,A,B,D,E,C) ; true ) ; - 'final_answer_pattern/2__5__1'(K,E,F,A,G,B,C,D) + final_answer_pattern___2__5__1__7(K,F,G,A,B,D,E,C) ). -'final_answer_pattern/2__5'(A,B,C) :- - 'final_answer_pattern/2__6'(A,B,C). -'final_answer_pattern/2__6'(A,B,C) :- - '$via1_multi_hash_depends_on_as/3-3'(A,D), +final_answer_pattern___2__5(A,B,C) :- + final_answer_pattern___2__6(A,B,C). +final_answer_pattern___2__6(A,B,C) :- + nb_getval('$chr_store_multi_hash_chr_translate____depends_on_as___3-3',E), + lookup_ht(E,A,D), !, - 'final_answer_pattern/2__6__0'(D,A,B,C). -'final_answer_pattern/2__6__0'([],A,B,C) :- - 'final_answer_pattern/2__7'(A,B,C). -'final_answer_pattern/2__6__0'([G|I],A,B,C) :- - ( G=suspension(_,mutable(active),_,_,_,_,D,E,F), - F==A, - '$via1_multi_hash_final_answer_pattern/2-1'(E,H) -> - 'final_answer_pattern/2__6__1'(H,D,E,G,I,A,B,C) + final_answer_pattern___2__6__0__8(D,A,B,C). +final_answer_pattern___2__6__0__8([],B,C,A) :- + final_answer_pattern___2__7(B,C,A). +final_answer_pattern___2__6__0__8([G|I],B,C,A) :- + ( G=suspension(_,active,_,D,E,F), + F==B, + nb_getval('$chr_store_multi_hash_chr_translate____final_answer_pattern___2-1',J), + lookup_ht(J,E,H) -> + final_answer_pattern___2__6__1__8(H,D,E,G,I,B,C,A) ; - 'final_answer_pattern/2__6__0'(I,A,B,C) + final_answer_pattern___2__6__0__8(I,B,C,A) ). -'final_answer_pattern/2__6__1'([],_,_,_,D,A,B,C) :- - 'final_answer_pattern/2__6__0'(D,A,B,C). -'final_answer_pattern/2__6__1'([J|K],E,F,A,G,B,C,D) :- - ( J=suspension(_,mutable(active),_,_,_,_,H,I), - H==F, - O=t(141,A,J,D), - 'chr novel_production'(A,O), - 'chr novel_production'(J,O), - 'chr novel_production'(D,O) -> - 'chr extend_history'(D,O), - activate_constraint(M,_,D,N), - ( M==yes -> - '$insert_in_store_final_answer_pattern/2'(D) +final_answer_pattern___2__6__1__8([],_,_,_,A,C,D,B) :- + final_answer_pattern___2__6__0__8(A,C,D,B). +final_answer_pattern___2__6__1__8([J|K],F,G,A,B,D,E,C) :- + ( J=suspension(_,active,_,H,I), + H==G, + M=t(312,A,J,C), + '$novel_production'(A,M), + '$novel_production'(J,M), + '$novel_production'(C,M) -> + '$extend_history'(C,M), + arg(2,C,N), + setarg(2,C,active), + ( N==not_stored_yet -> + nb_getval('$chr_store_multi_hash_chr_translate____final_answer_pattern___2-1',O), + insert_ht(O,D,C) ; true ), - ai_observation_lub(I,C,L), - final_answer_pattern(E,L), - ( D=suspension(_,mutable(active),_,mutable(N),_,_,_,_) -> - 'chr update_mutable'(inactive,mutable(active)), - 'final_answer_pattern/2__6__1'(K,E,F,A,G,B,C,D) + ai_observation_lub(I,E,L), + final_answer_pattern(F,L), + ( C=suspension(_,active,_,_,_) -> + setarg(2,C,inactive), + final_answer_pattern___2__6__1__8(K,F,G,A,B,D,E,C) ; true ) ; - 'final_answer_pattern/2__6__1'(K,E,F,A,G,B,C,D) + final_answer_pattern___2__6__1__8(K,F,G,A,B,D,E,C) ). -'final_answer_pattern/2__6'(A,B,C) :- - 'final_answer_pattern/2__7'(A,B,C). -'final_answer_pattern/2__7'(A,B,C) :- - '$via1_multi_hash_depends_on_ap/4-3'(A,D), +final_answer_pattern___2__6(A,B,C) :- + final_answer_pattern___2__7(A,B,C). +final_answer_pattern___2__7(A,B,C) :- + nb_getval('$chr_store_multi_hash_chr_translate____depends_on_ap___4-3',E), + lookup_ht(E,A,D), !, - 'final_answer_pattern/2__7__0'(D,A,B,C). -'final_answer_pattern/2__7__0'([],A,B,C) :- - 'final_answer_pattern/2__8'(A,B,C). -'final_answer_pattern/2__7__0'([F|G],A,B,C) :- - ( F=suspension(_,mutable(active),_,_,_,_,D,_,E,_), - E==A, - J=t(143,F,C), - 'chr novel_production'(F,J), - 'chr novel_production'(C,J) -> - 'chr extend_history'(C,J), - activate_constraint(H,_,C,I), + final_answer_pattern___2__7__0__9(D,A,B,C). +final_answer_pattern___2__7__0__9([],B,C,A) :- + final_answer_pattern___2__8(B,C,A). +final_answer_pattern___2__7__0__9([F|G],B,C,A) :- + ( F=suspension(_,active,_,D,_,E,_), + E==B, + H=t(320,F,A), + '$novel_production'(F,H), + '$novel_production'(A,H) -> + '$extend_history'(A,H), + arg(2,A,I), + setarg(2,A,active), + ( I==not_stored_yet -> + nb_getval('$chr_store_multi_hash_chr_translate____final_answer_pattern___2-1',J), + insert_ht(J,B,A) + ; + true + ), + final_answer_pattern(D,C), + ( A=suspension(_,active,_,_,_) -> + setarg(2,A,inactive), + final_answer_pattern___2__7__0__9(G,B,C,A) + ; + true + ) + ; + final_answer_pattern___2__7__0__9(G,B,C,A) + ). +final_answer_pattern___2__7(A,B,C) :- + final_answer_pattern___2__8(A,B,C). +final_answer_pattern___2__8(A,B,C) :- + nb_getval('$chr_store_multi_hash_chr_translate____depends_on_ap___4-2',E), + lookup_ht(E,A,D), + !, + final_answer_pattern___2__8__0__10(D,A,B,C). +final_answer_pattern___2__8__0__10([],B,C,A) :- + final_answer_pattern___2__9(B,C,A). +final_answer_pattern___2__8__0__10([H|J],B,C,A) :- + ( H=suspension(_,active,_,D,E,F,G), + E==B, + nb_getval('$chr_store_multi_hash_chr_translate____final_answer_pattern___2-1',K), + lookup_ht(K,F,I) -> + final_answer_pattern___2__8__1__10(I,D,F,G,H,J,B,C,A) + ; + final_answer_pattern___2__8__0__10(J,B,C,A) + ). +final_answer_pattern___2__8__1__10([],_,_,_,_,A,C,D,B) :- + final_answer_pattern___2__8__0__10(A,C,D,B). +final_answer_pattern___2__8__1__10([K|L],F,G,H,A,B,D,E,C) :- + ( K=suspension(_,active,_,I,J), + I==G, + S=t(321,A,C,K), + '$novel_production'(A,S), + '$novel_production'(C,S), + '$novel_production'(K,S) -> + '$extend_history'(C,S), + arg(2,C,T), + setarg(2,C,active), + ( T==not_stored_yet -> + nb_getval('$chr_store_multi_hash_chr_translate____final_answer_pattern___2-1',U), + insert_ht(U,D,C) + ; + true + ), + F=odom(occ(M,N),_), + ( ai_observation_is_observed(E,M) -> + ai_observed_internal(M,N) + ; + ai_not_observed_internal(M,N) + ), ( H==yes -> - '$insert_in_store_final_answer_pattern/2'(C) - ; - true - ), - final_answer_pattern(D,B), - ( C=suspension(_,mutable(active),_,mutable(I),_,_,_,_) -> - 'chr update_mutable'(inactive,mutable(active)), - 'final_answer_pattern/2__7__0'(G,A,B,C) - ; - true - ) - ; - 'final_answer_pattern/2__7__0'(G,A,B,C) - ). -'final_answer_pattern/2__7'(A,B,C) :- - 'final_answer_pattern/2__8'(A,B,C). -'final_answer_pattern/2__8'(A,B,C) :- - '$via1_multi_hash_depends_on_ap/4-2'(A,D), - !, - 'final_answer_pattern/2__8__0'(D,A,B,C). -'final_answer_pattern/2__8__0'([],A,B,C) :- - 'final_answer_pattern/2__9'(A,B,C). -'final_answer_pattern/2__8__0'([H|J],A,B,C) :- - ( H=suspension(_,mutable(active),_,_,_,_,D,E,F,G), - E==A, - '$via1_multi_hash_final_answer_pattern/2-1'(F,I) -> - 'final_answer_pattern/2__8__1'(I,D,F,G,H,J,A,B,C) - ; - 'final_answer_pattern/2__8__0'(J,A,B,C) - ). -'final_answer_pattern/2__8__1'([],_,_,_,_,D,A,B,C) :- - 'final_answer_pattern/2__8__0'(D,A,B,C). -'final_answer_pattern/2__8__1'([K|L],E,F,G,A,H,B,C,D) :- - ( K=suspension(_,mutable(active),_,_,_,_,I,J), - I==F, - U=t(144,A,D,K), - 'chr novel_production'(A,U), - 'chr novel_production'(D,U), - 'chr novel_production'(K,U) -> - 'chr extend_history'(D,U), - activate_constraint(S,_,D,T), - ( S==yes -> - '$insert_in_store_final_answer_pattern/2'(D) - ; - true - ), - E=odom(occ(M,N),_), - ( ai_observation_is_observed(C,M) -> - ai_observed(M,N) - ; - ai_not_observed(M,N) - ), - ( G==yes -> - C=odom([],O), + E=odom([],O), ord_del_element(O,M,P), Q=odom([],P) ; - Q=C + Q=E ), ai_observation_lub(Q,J,R), - final_answer_pattern(E,R), - ( D=suspension(_,mutable(active),_,mutable(T),_,_,_,_) -> - 'chr update_mutable'(inactive,mutable(active)), - 'final_answer_pattern/2__8__1'(L,E,F,G,A,H,B,C,D) + final_answer_pattern(F,R), + ( C=suspension(_,active,_,_,_) -> + setarg(2,C,inactive), + final_answer_pattern___2__8__1__10(L,F,G,H,A,B,D,E,C) ; true ) ; - 'final_answer_pattern/2__8__1'(L,E,F,G,A,H,B,C,D) + final_answer_pattern___2__8__1__10(L,F,G,H,A,B,D,E,C) ). -'final_answer_pattern/2__8'(A,B,C) :- - 'final_answer_pattern/2__9'(A,B,C). -'final_answer_pattern/2__9'(A,B,C) :- - '$via1_multi_hash_depends_on_ap/4-3'(A,D), +final_answer_pattern___2__8(A,B,C) :- + final_answer_pattern___2__9(A,B,C). +final_answer_pattern___2__9(A,B,C) :- + nb_getval('$chr_store_multi_hash_chr_translate____depends_on_ap___4-3',E), + lookup_ht(E,A,D), !, - 'final_answer_pattern/2__9__0'(D,A,B,C). -'final_answer_pattern/2__9__0'([],A,B,C) :- - 'final_answer_pattern/2__10'(A,B,C). -'final_answer_pattern/2__9__0'([H|J],A,B,C) :- - ( H=suspension(_,mutable(active),_,_,_,_,D,E,F,G), - F==A, - '$via1_multi_hash_final_answer_pattern/2-1'(E,I) -> - 'final_answer_pattern/2__9__1'(I,D,E,G,H,J,A,B,C) + final_answer_pattern___2__9__0__11(D,A,B,C). +final_answer_pattern___2__9__0__11([],B,C,A) :- + final_answer_pattern___2__10(B,C,A). +final_answer_pattern___2__9__0__11([H|J],B,C,A) :- + ( H=suspension(_,active,_,D,E,F,G), + F==B, + nb_getval('$chr_store_multi_hash_chr_translate____final_answer_pattern___2-1',K), + lookup_ht(K,E,I) -> + final_answer_pattern___2__9__1__11(I,D,E,G,H,J,B,C,A) ; - 'final_answer_pattern/2__9__0'(J,A,B,C) + final_answer_pattern___2__9__0__11(J,B,C,A) ). -'final_answer_pattern/2__9__1'([],_,_,_,_,D,A,B,C) :- - 'final_answer_pattern/2__9__0'(D,A,B,C). -'final_answer_pattern/2__9__1'([K|L],E,F,G,A,H,B,C,D) :- - ( K=suspension(_,mutable(active),_,_,_,_,I,J), - I==F, - U=t(144,A,K,D), - 'chr novel_production'(A,U), - 'chr novel_production'(K,U), - 'chr novel_production'(D,U) -> - 'chr extend_history'(D,U), - activate_constraint(S,_,D,T), - ( S==yes -> - '$insert_in_store_final_answer_pattern/2'(D) +final_answer_pattern___2__9__1__11([],_,_,_,_,A,C,D,B) :- + final_answer_pattern___2__9__0__11(A,C,D,B). +final_answer_pattern___2__9__1__11([K|L],F,G,H,A,B,D,E,C) :- + ( K=suspension(_,active,_,I,J), + I==G, + S=t(321,A,K,C), + '$novel_production'(A,S), + '$novel_production'(K,S), + '$novel_production'(C,S) -> + '$extend_history'(C,S), + arg(2,C,T), + setarg(2,C,active), + ( T==not_stored_yet -> + nb_getval('$chr_store_multi_hash_chr_translate____final_answer_pattern___2-1',U), + insert_ht(U,D,C) ; true ), - E=odom(occ(M,N),_), + F=odom(occ(M,N),_), ( ai_observation_is_observed(J,M) -> - ai_observed(M,N) + ai_observed_internal(M,N) ; - ai_not_observed(M,N) + ai_not_observed_internal(M,N) ), - ( G==yes -> + ( H==yes -> J=odom([],O), ord_del_element(O,M,P), Q=odom([],P) ; Q=J ), - ai_observation_lub(Q,C,R), - final_answer_pattern(E,R), - ( D=suspension(_,mutable(active),_,mutable(T),_,_,_,_) -> - 'chr update_mutable'(inactive,mutable(active)), - 'final_answer_pattern/2__9__1'(L,E,F,G,A,H,B,C,D) + ai_observation_lub(Q,E,R), + final_answer_pattern(F,R), + ( C=suspension(_,active,_,_,_) -> + setarg(2,C,inactive), + final_answer_pattern___2__9__1__11(L,F,G,H,A,B,D,E,C) ; true ) ; - 'final_answer_pattern/2__9__1'(L,E,F,G,A,H,B,C,D) + final_answer_pattern___2__9__1__11(L,F,G,H,A,B,D,E,C) ). -'final_answer_pattern/2__9'(A,B,C) :- - 'final_answer_pattern/2__10'(A,B,C). -'final_answer_pattern/2__10'(_,_,A) :- - activate_constraint(B,_,A,_), - ( B==yes -> - '$insert_in_store_final_answer_pattern/2'(A) +final_answer_pattern___2__9(A,B,C) :- + final_answer_pattern___2__10(A,B,C). +final_answer_pattern___2__10(A,_,B) :- + arg(2,B,C), + setarg(2,B,active), + ( C==not_stored_yet -> + nb_getval('$chr_store_multi_hash_chr_translate____final_answer_pattern___2-1',D), + insert_ht(D,A,B) ; true ). abstract_constraints(A) :- - 'abstract_constraints/1__0'(A,_). -'abstract_constraints/1__0'(A,B) :- - nb_getval('$chr_store_global_ground_chr_translate:initial_call_pattern/1',C), - !, - allocate_constraint(true,B,abstract_constraints(A),[A]), - 'abstract_constraints/1__0__0'(C,A,B). -'abstract_constraints/1__0__0'([],A,B) :- - 'abstract_constraints/1__1'(A,B). -'abstract_constraints/1__0__0'([D|F],A,B) :- - ( D=suspension(_,mutable(active),_,_,_,_,C), - '$via1_multi_hash_final_answer_pattern/2-1'(C,E) -> - 'abstract_constraints/1__0__1'(E,C,D,F,A,B) + nb_getval('$chr_store_global_ground_chr_translate____abstract_constraints___1',C), + ( + 'chr sbag_member'(B,C), + B=suspension(_,active,_,_), + ! ; - 'abstract_constraints/1__0__0'(F,A,B) + !, + abstract_constraints___1__0__0__2(C,A) ). -'abstract_constraints/1__0__1'([],_,_,C,A,B) :- - 'abstract_constraints/1__0__0'(C,A,B). -'abstract_constraints/1__0__1'([H|I],D,A,E,B,C) :- - ( H=suspension(_,mutable(active),_,_,_,_,F,G), - F==D, - L=t(130,A,H,C), - 'chr novel_production'(A,L), - 'chr novel_production'(H,L), - 'chr novel_production'(C,L) -> - 'chr extend_history'(C,L), - activate_constraint(J,_,C,K), - ( J==yes -> - '$insert_in_store_abstract_constraints/1'(C) +abstract_constraints___1__0__0__2([],A) :- + abstract_constraints___1__1(A). +abstract_constraints___1__0__0__2([B|C],A) :- + ( B=suspension(_,active,_,_) -> + setarg(2,B,removed), + arg(3,B,D), + ( var(D) -> + nb_getval('$chr_store_global_ground_chr_translate____abstract_constraints___1',E), + E=[_|F], + b_setval('$chr_store_global_ground_chr_translate____abstract_constraints___1',F), + ( F=[G|_] -> + setarg(3,G,_) + ; + true + ) ; - true + D=[_,_|F], + setarg(2,D,F), + ( F=[G|_] -> + setarg(3,G,D) + ; + true + ) ), - ai_observation_schedule_new_calls(B,G), - ( C=suspension(_,mutable(active),_,mutable(K),_,_,_) -> - 'chr update_mutable'(inactive,mutable(active)), - 'abstract_constraints/1__0__1'(I,D,A,E,B,C) - ; - true - ) + abstract_constraints___1__0__0__2(C,A) ; - 'abstract_constraints/1__0__1'(I,D,A,E,B,C) + abstract_constraints___1__0__0__2(C,A) ). -'abstract_constraints/1__0'(A,B) :- - allocate_constraint(true,B,abstract_constraints(A),[A]), - 'abstract_constraints/1__1'(A,B). -'abstract_constraints/1__1'(A,B) :- - nb_getval('$chr_store_global_ground_chr_translate:call_pattern/1',C), - !, - 'abstract_constraints/1__1__0'(C,A,B). -'abstract_constraints/1__1__0'([],A,B) :- - 'abstract_constraints/1__2'(A,B). -'abstract_constraints/1__1__0'([D|E],A,B) :- - ( D=suspension(_,mutable(active),_,_,_,_,C), - C=odom(F,G), - K=t(139,D,B), - 'chr novel_production'(D,K), - 'chr novel_production'(B,K), - memberchk_eq(F,A) -> - 'chr extend_history'(B,K), - activate_constraint(I,_,B,J), - ( I==yes -> - '$insert_in_store_abstract_constraints/1'(B) - ; - true - ), - H=odom(occ(F,1),G), - call_pattern(H), - depends_on(odom(F,G),H), - ( B=suspension(_,mutable(active),_,mutable(J),_,_,_) -> - 'chr update_mutable'(inactive,mutable(active)), - 'abstract_constraints/1__1__0'(E,A,B) - ; - true - ) - ; - 'abstract_constraints/1__1__0'(E,A,B) - ). -'abstract_constraints/1__1'(A,B) :- - 'abstract_constraints/1__2'(A,B). -'abstract_constraints/1__2'(A,B) :- - nb_getval('$chr_store_global_ground_chr_translate:call_pattern/1',C), - !, - 'abstract_constraints/1__2__0'(C,A,B). -'abstract_constraints/1__2__0'([],A,B) :- - 'abstract_constraints/1__3'(A,B). -'abstract_constraints/1__2__0'([D|J],A,B) :- - ( D=suspension(_,mutable(active),_,_,_,_,C), - C=odom(E,F), - E=occ(G,H), - nb_getval('$chr_store_global_ground_chr_translate:rule/2',I) -> - 'abstract_constraints/1__2__1'(I,G,H,F,D,J,A,B) - ; - 'abstract_constraints/1__2__0'(J,A,B) - ). -'abstract_constraints/1__2__1'([],_,_,_,_,C,A,B) :- - 'abstract_constraints/1__2__0'(C,A,B). -'abstract_constraints/1__2__1'([J|L],E,F,D,A,G,B,C) :- - ( J=suspension(_,mutable(active),_,_,_,_,H,I), - '$via1_multi_hash_occurrence/4-1'(E,K) -> - 'abstract_constraints/1__2__2'(K,H,I,J,L,E,F,D,A,G,B,C) - ; - 'abstract_constraints/1__2__1'(L,E,F,D,A,G,B,C) - ). -'abstract_constraints/1__2__2'([],_,_,_,H,E,F,D,C,G,A,B) :- - 'abstract_constraints/1__2__1'(H,E,F,D,C,G,A,B). -'abstract_constraints/1__2__2'([P|Q],I,J,A,K,F,G,E,B,H,C,D) :- - ( P=suspension(_,mutable(active),_,_,_,_,L,M,N,O), - L==F, - M==G, - N==I, - F1=t(140,B,D,P,A), - 'chr novel_production'(B,F1), - 'chr novel_production'(D,F1), - 'chr novel_production'(P,F1), - 'chr novel_production'(A,F1), - J=pragma(rule(R,S,_,T),ids(U,_),_,_,_), - memberchk_eq(O,U) -> - 'chr extend_history'(D,F1), - activate_constraint(D1,_,D,E1), - ( D1==yes -> - '$insert_in_store_abstract_constraints/1'(D) - ; - true - ), - select2(O,_,U,R,_,V), - ai_observation_abstract_constraints(V,C,W), - ai_observation_observe_list(odom([],E),W,odom([],X)), - ai_observation_abstract_constraints(S,C,Y), - ai_observation_observe_list(odom([],X),Y,odom([],Z)), - ai_observation_abstract_goal(T,C,A1), - call_pattern(odom(A1,Z)), - B1 is G+1, - C1=odom(occ(F,B1),E), - call_pattern(C1), - depends_on_as(odom(occ(F,G),E),odom(A1,Z),C1), - ( D=suspension(_,mutable(active),_,mutable(E1),_,_,_) -> - 'chr update_mutable'(inactive,mutable(active)), - 'abstract_constraints/1__2__2'(Q,I,J,A,K,F,G,E,B,H,C,D) - ; - true - ) - ; - 'abstract_constraints/1__2__2'(Q,I,J,A,K,F,G,E,B,H,C,D) - ). -'abstract_constraints/1__2'(A,B) :- - 'abstract_constraints/1__3'(A,B). -'abstract_constraints/1__3'(A,B) :- - nb_getval('$chr_store_global_ground_chr_translate:call_pattern/1',C), - !, - 'abstract_constraints/1__3__0'(C,A,B). -'abstract_constraints/1__3__0'([],A,B) :- - 'abstract_constraints/1__4'(A,B). -'abstract_constraints/1__3__0'([D|J],A,B) :- - ( D=suspension(_,mutable(active),_,_,_,_,C), - C=odom(E,F), - E=occ(G,H), - nb_getval('$chr_store_global_ground_chr_translate:rule/2',I) -> - 'abstract_constraints/1__3__1'(I,G,H,F,D,J,A,B) - ; - 'abstract_constraints/1__3__0'(J,A,B) - ). -'abstract_constraints/1__3__1'([],_,_,_,_,C,A,B) :- - 'abstract_constraints/1__3__0'(C,A,B). -'abstract_constraints/1__3__1'([J|L],E,F,D,A,G,B,C) :- - ( J=suspension(_,mutable(active),_,_,_,_,H,I), - '$via1_multi_hash_occurrence/4-1'(E,K) -> - 'abstract_constraints/1__3__2'(K,H,I,J,L,E,F,D,A,G,B,C) - ; - 'abstract_constraints/1__3__1'(L,E,F,D,A,G,B,C) - ). -'abstract_constraints/1__3__2'([],_,_,_,H,E,F,D,C,G,A,B) :- - 'abstract_constraints/1__3__1'(H,E,F,D,C,G,A,B). -'abstract_constraints/1__3__2'([P|Q],I,J,A,K,F,G,E,B,H,C,D) :- - ( P=suspension(_,mutable(active),_,_,_,_,L,M,N,O), - L==F, - M==G, - N==I, - H1=t(142,B,D,P,A), - 'chr novel_production'(B,H1), - 'chr novel_production'(D,H1), - 'chr novel_production'(P,H1), - 'chr novel_production'(A,H1), - J=pragma(rule(R,S,_,T),ids(_,U),_,_,_), - memberchk_eq(O,U) -> - 'chr extend_history'(D,H1), - activate_constraint(F1,_,D,G1), - ( F1==yes -> - '$insert_in_store_abstract_constraints/1'(D) - ; - true - ), - select2(O,_,U,S,_,V), - ai_observation_abstract_constraints(V,C,W), - ai_observation_observe_list(odom([],E),W,odom([],X)), - ai_observation_abstract_constraints(R,C,Y), - ai_observation_observe_list(odom([],X),Y,odom([],Z)), - ord_add_element(Z,F,A1), - ai_observation_abstract_goal(T,C,B1), - call_pattern(odom(B1,A1)), - ( ord_memberchk(F,Z) -> - C1=no - ; - C1=yes - ), - D1 is G+1, - E1=odom(occ(F,D1),E), - call_pattern(E1), - depends_on_ap(odom(occ(F,G),E),odom(B1,A1),E1,C1), - ( D=suspension(_,mutable(active),_,mutable(G1),_,_,_) -> - 'chr update_mutable'(inactive,mutable(active)), - 'abstract_constraints/1__3__2'(Q,I,J,A,K,F,G,E,B,H,C,D) - ; - true - ) - ; - 'abstract_constraints/1__3__2'(Q,I,J,A,K,F,G,E,B,H,C,D) - ). -'abstract_constraints/1__3'(A,B) :- - 'abstract_constraints/1__4'(A,B). -'abstract_constraints/1__4'(_,A) :- - activate_constraint(B,_,A,_), - ( B==yes -> - '$insert_in_store_abstract_constraints/1'(A) +abstract_constraints(A) :- + abstract_constraints___1__1(A). +abstract_constraints___1__1(A) :- + B=suspension(C,active,_,A), + 'chr gen_id'(C), + nb_getval('$chr_store_global_ground_chr_translate____abstract_constraints___1',D), + E=[B|D], + b_setval('$chr_store_global_ground_chr_translate____abstract_constraints___1',E), + ( D=[F|_] -> + setarg(3,F,E) ; true ). depends_on(A,B) :- - 'depends_on/2__0'(A,B,_). -'depends_on/2__0'(A,B,C) :- - '$via1_multi_hash_final_answer_pattern/2-1'(B,D), + depends_on___2__0(A,B,_). +depends_on___2__0(A,B,C) :- + nb_getval('$chr_store_multi_hash_chr_translate____final_answer_pattern___2-1',F), + lookup_ht(F,B,D), !, - allocate_constraint(true,C,depends_on(A,B),[A,B]), - 'depends_on/2__0__0'(D,A,B,C). -'depends_on/2__0__0'([],A,B,C) :- - 'depends_on/2__1'(A,B,C). -'depends_on/2__0__0'([F|G],A,B,C) :- - ( F=suspension(_,mutable(active),_,_,_,_,D,E), - D==B, - J=t(132,C,F), - 'chr novel_production'(C,J), - 'chr novel_production'(F,J) -> - 'chr extend_history'(C,J), - activate_constraint(H,_,C,I), - ( H==yes -> - '$insert_in_store_depends_on/2'(C) + C=suspension(E,not_stored_yet,t,A,B), + 'chr gen_id'(E), + depends_on___2__0__0__1(D,A,B,C). +depends_on___2__0__0__1([],B,C,A) :- + depends_on___2__1(B,C,A). +depends_on___2__0__0__1([F|G],B,C,A) :- + ( F=suspension(_,active,_,D,E), + D==C, + H=t(300,A,F), + '$novel_production'(A,H), + '$novel_production'(F,H) -> + '$extend_history'(A,H), + arg(2,A,I), + setarg(2,A,active), + ( I==not_stored_yet -> + nb_getval('$chr_store_multi_hash_chr_translate____depends_on___2-1',J), + insert_ht(J,B,A), + nb_getval('$chr_store_multi_hash_chr_translate____depends_on___2-2',K), + insert_ht(K,C,A) ; true ), - final_answer_pattern(A,E), - ( C=suspension(_,mutable(active),_,mutable(I),_,_,_,_) -> - 'chr update_mutable'(inactive,mutable(active)), - 'depends_on/2__0__0'(G,A,B,C) + final_answer_pattern(B,E), + ( A=suspension(_,active,_,_,_) -> + setarg(2,A,inactive), + depends_on___2__0__0__1(G,B,C,A) ; true ) ; - 'depends_on/2__0__0'(G,A,B,C) + depends_on___2__0__0__1(G,B,C,A) ). -'depends_on/2__0'(A,B,C) :- - allocate_constraint(true,C,depends_on(A,B),[A,B]), - 'depends_on/2__1'(A,B,C). -'depends_on/2__1'(A,_,B) :- - '$via1_multi_hash_depends_on_goal/2-1'(A,E), - 'chr sbag_member'(C,E), - C=suspension(_,mutable(active),_,_,_,_,_,D), - '$via1_multi_hash_final_answer_pattern/2-1'(D,G), - 'chr sbag_member'(F,G), - F=suspension(_,mutable(active),_,_,_,_,_,_), - !, - ( var(B) -> - true - ; - remove_constraint_internal(B,_,H), - ( H==yes -> - '$delete_from_store_depends_on/2'(B) - ; - true - ) - ). -'depends_on/2__1'(_,_,A) :- - activate_constraint(B,_,A,_), - ( B==yes -> - '$insert_in_store_depends_on/2'(A) +depends_on___2__0(A,B,C) :- + C=suspension(D,not_stored_yet,t,A,B), + 'chr gen_id'(D), + depends_on___2__1(A,B,C). +depends_on___2__1(A,B,C) :- + arg(2,C,D), + setarg(2,C,active), + ( D==not_stored_yet -> + nb_getval('$chr_store_multi_hash_chr_translate____depends_on___2-1',E), + insert_ht(E,A,C), + nb_getval('$chr_store_multi_hash_chr_translate____depends_on___2-2',F), + insert_ht(F,B,C) ; true ). depends_on_ap(A,B,C,D) :- - 'depends_on_ap/4__0'(A,B,C,D,_). -'depends_on_ap/4__0'(A,B,C,D,E) :- - '$via1_multi_hash_final_answer_pattern/2-1'(C,F), + depends_on_ap___4__0(A,B,C,D,_). +depends_on_ap___4__0(A,B,C,D,E) :- + nb_getval('$chr_store_multi_hash_chr_translate____final_answer_pattern___2-1',H), + lookup_ht(H,C,F), !, - allocate_constraint(true,E,depends_on_ap(A,B,C,D),[A,B,C,D]), - 'depends_on_ap/4__0__0'(F,A,B,C,D,E). -'depends_on_ap/4__0__0'([],A,B,C,D,E) :- - 'depends_on_ap/4__1'(A,B,C,D,E). -'depends_on_ap/4__0__0'([H|I],A,B,C,D,E) :- - ( H=suspension(_,mutable(active),_,_,_,_,F,G), - F==C, - L=t(143,E,H), - 'chr novel_production'(E,L), - 'chr novel_production'(H,L) -> - 'chr extend_history'(E,L), - activate_constraint(J,_,E,K), - ( J==yes -> - '$insert_in_store_depends_on_ap/4'(E) + E=suspension(G,not_stored_yet,t,A,B,C,D), + 'chr gen_id'(G), + depends_on_ap___4__0__0__1(F,A,B,C,D,E). +depends_on_ap___4__0__0__1([],B,C,D,E,A) :- + depends_on_ap___4__1(B,C,D,E,A). +depends_on_ap___4__0__0__1([H|I],B,C,D,E,A) :- + ( H=suspension(_,active,_,F,G), + F==D, + J=t(320,A,H), + '$novel_production'(A,J), + '$novel_production'(H,J) -> + '$extend_history'(A,J), + arg(2,A,K), + setarg(2,A,active), + ( K==not_stored_yet -> + nb_getval('$chr_store_multi_hash_chr_translate____depends_on_ap___4-2',L), + insert_ht(L,C,A), + nb_getval('$chr_store_multi_hash_chr_translate____depends_on_ap___4-3',M), + insert_ht(M,D,A) ; true ), - final_answer_pattern(A,G), - ( E=suspension(_,mutable(active),_,mutable(K),_,_,_,_,_,_) -> - 'chr update_mutable'(inactive,mutable(active)), - 'depends_on_ap/4__0__0'(I,A,B,C,D,E) + final_answer_pattern(B,G), + ( A=suspension(_,active,_,_,_,_,_) -> + setarg(2,A,inactive), + depends_on_ap___4__0__0__1(I,B,C,D,E,A) ; true ) ; - 'depends_on_ap/4__0__0'(I,A,B,C,D,E) + depends_on_ap___4__0__0__1(I,B,C,D,E,A) ). -'depends_on_ap/4__0'(A,B,C,D,E) :- - allocate_constraint(true,E,depends_on_ap(A,B,C,D),[A,B,C,D]), - 'depends_on_ap/4__1'(A,B,C,D,E). -'depends_on_ap/4__1'(A,B,C,D,E) :- - '$via1_multi_hash_final_answer_pattern/2-1'(B,F), +depends_on_ap___4__0(A,B,C,D,E) :- + E=suspension(F,not_stored_yet,t,A,B,C,D), + 'chr gen_id'(F), + depends_on_ap___4__1(A,B,C,D,E). +depends_on_ap___4__1(A,B,C,D,E) :- + nb_getval('$chr_store_multi_hash_chr_translate____final_answer_pattern___2-1',G), + lookup_ht(G,B,F), !, - 'depends_on_ap/4__1__0'(F,A,B,C,D,E). -'depends_on_ap/4__1__0'([],A,B,C,D,E) :- - 'depends_on_ap/4__2'(A,B,C,D,E). -'depends_on_ap/4__1__0'([H|J],A,B,C,D,E) :- - ( H=suspension(_,mutable(active),_,_,_,_,F,G), - F==B, - '$via1_multi_hash_final_answer_pattern/2-1'(C,I) -> - 'depends_on_ap/4__1__1'(I,G,H,J,A,B,C,D,E) + depends_on_ap___4__1__0__2(F,A,B,C,D,E). +depends_on_ap___4__1__0__2([],B,C,D,E,A) :- + depends_on_ap___4__2(B,C,D,E,A). +depends_on_ap___4__1__0__2([H|J],B,C,D,E,A) :- + ( H=suspension(_,active,_,F,G), + F==C, + nb_getval('$chr_store_multi_hash_chr_translate____final_answer_pattern___2-1',K), + lookup_ht(K,D,I) -> + depends_on_ap___4__1__1__2(I,G,H,J,B,C,D,E,A) ; - 'depends_on_ap/4__1__0'(J,A,B,C,D,E) + depends_on_ap___4__1__0__2(J,B,C,D,E,A) ). -'depends_on_ap/4__1__1'([],_,_,F,A,B,C,D,E) :- - 'depends_on_ap/4__1__0'(F,A,B,C,D,E). -'depends_on_ap/4__1__1'([K|L],G,A,H,B,C,D,E,F) :- - ( K=suspension(_,mutable(active),_,_,_,_,I,J), +depends_on_ap___4__1__1__2([],_,_,A,C,D,E,F,B) :- + depends_on_ap___4__1__0__2(A,C,D,E,F,B). +depends_on_ap___4__1__1__2([K|L],H,A,B,D,E,F,G,C) :- + ( K=suspension(_,active,_,I,J), K\==A, - I==D, - U=t(144,F,A,K), - 'chr novel_production'(F,U), - 'chr novel_production'(A,U), - 'chr novel_production'(K,U) -> - 'chr extend_history'(F,U), - activate_constraint(S,_,F,T), - ( S==yes -> - '$insert_in_store_depends_on_ap/4'(F) + I==F, + S=t(321,C,A,K), + '$novel_production'(C,S), + '$novel_production'(A,S), + '$novel_production'(K,S) -> + '$extend_history'(C,S), + arg(2,C,T), + setarg(2,C,active), + ( T==not_stored_yet -> + nb_getval('$chr_store_multi_hash_chr_translate____depends_on_ap___4-2',U), + insert_ht(U,E,C), + nb_getval('$chr_store_multi_hash_chr_translate____depends_on_ap___4-3',V), + insert_ht(V,F,C) ; true ), - B=odom(occ(M,N),_), - ( ai_observation_is_observed(G,M) -> - ai_observed(M,N) + D=odom(occ(M,N),_), + ( ai_observation_is_observed(H,M) -> + ai_observed_internal(M,N) ; - ai_not_observed(M,N) + ai_not_observed_internal(M,N) ), - ( E==yes -> - G=odom([],O), + ( G==yes -> + H=odom([],O), ord_del_element(O,M,P), Q=odom([],P) ; - Q=G + Q=H ), ai_observation_lub(Q,J,R), - final_answer_pattern(B,R), - ( F=suspension(_,mutable(active),_,mutable(T),_,_,_,_,_,_) -> - 'chr update_mutable'(inactive,mutable(active)), - 'depends_on_ap/4__1__1'(L,G,A,H,B,C,D,E,F) + final_answer_pattern(D,R), + ( C=suspension(_,active,_,_,_,_,_) -> + setarg(2,C,inactive), + depends_on_ap___4__1__1__2(L,H,A,B,D,E,F,G,C) ; true ) ; - 'depends_on_ap/4__1__1'(L,G,A,H,B,C,D,E,F) + depends_on_ap___4__1__1__2(L,H,A,B,D,E,F,G,C) ). -'depends_on_ap/4__1'(A,B,C,D,E) :- - 'depends_on_ap/4__2'(A,B,C,D,E). -'depends_on_ap/4__2'(_,_,_,_,A) :- - activate_constraint(B,_,A,_), - ( B==yes -> - '$insert_in_store_depends_on_ap/4'(A) +depends_on_ap___4__1(A,B,C,D,E) :- + depends_on_ap___4__2(A,B,C,D,E). +depends_on_ap___4__2(_,A,B,_,C) :- + arg(2,C,D), + setarg(2,C,active), + ( D==not_stored_yet -> + nb_getval('$chr_store_multi_hash_chr_translate____depends_on_ap___4-2',E), + insert_ht(E,A,C), + nb_getval('$chr_store_multi_hash_chr_translate____depends_on_ap___4-3',F), + insert_ht(F,B,C) ; true ). depends_on_goal(A,B) :- - 'depends_on_goal/2__0'(A,B,_). -'depends_on_goal/2__0'(A,B,C) :- - '$via1_multi_hash_depends_on/2-1'(A,D), + depends_on_goal___2__0(A,B,_). +depends_on_goal___2__0(A,B,C) :- + nb_getval('$chr_store_multi_hash_chr_translate____depends_on___2-1',E), + lookup_ht(E,A,D), !, - 'depends_on_goal/2__0__0'(D,A,B,C). -'depends_on_goal/2__0__0'([],A,B,C) :- - 'depends_on_goal/2__1'(A,B,C). -'depends_on_goal/2__0__0'([E|F],A,B,C) :- - ( E=suspension(_,mutable(active),_,_,_,_,D,_), + depends_on_goal___2__0__0__1(D,A,B,C). +depends_on_goal___2__0__0__1([],B,C,A) :- + depends_on_goal___2__1(B,C,A). +depends_on_goal___2__0__0__1([F|G],A,B,C) :- + ( F=suspension(_,active,_,D,E), D==A, - '$via1_multi_hash_final_answer_pattern/2-1'(B,H), - 'chr sbag_member'(G,H), - G=suspension(_,mutable(active),_,_,_,_,_,_) -> - remove_constraint_internal(E,_,I), - ( I==yes -> - '$delete_from_store_depends_on/2'(E) - ; - true - ), - 'depends_on_goal/2__0__0'(F,A,B,C) + ground(B), + nb_getval('$chr_store_multi_hash_chr_translate____final_answer_pattern___2-1',L), + lookup_ht(L,B,I), + 'chr sbag_member'(H,I), + H=suspension(_,active,_,_,_) -> + setarg(2,F,removed), + nb_getval('$chr_store_multi_hash_chr_translate____depends_on___2-1',J), + delete_ht(J,A,F), + nb_getval('$chr_store_multi_hash_chr_translate____depends_on___2-2',K), + delete_ht(K,E,F), + depends_on_goal___2__0__0__1(G,A,B,C) ; - 'depends_on_goal/2__0__0'(F,A,B,C) + depends_on_goal___2__0__0__1(G,A,B,C) ). -'depends_on_goal/2__0'(A,B,C) :- - 'depends_on_goal/2__1'(A,B,C). -'depends_on_goal/2__1'(A,B,C) :- - '$via1_multi_hash_final_answer_pattern/2-1'(B,D), +depends_on_goal___2__0(A,B,C) :- + depends_on_goal___2__1(A,B,C). +depends_on_goal___2__1(A,B,C) :- + nb_getval('$chr_store_multi_hash_chr_translate____final_answer_pattern___2-1',F), + lookup_ht(F,B,D), !, - allocate_constraint(true,C,depends_on_goal(A,B),[A,B]), - 'depends_on_goal/2__1__0'(D,A,B,C). -'depends_on_goal/2__1__0'([],A,B,C) :- - 'depends_on_goal/2__2'(A,B,C). -'depends_on_goal/2__1__0'([F|G],A,B,C) :- - ( F=suspension(_,mutable(active),_,_,_,_,D,E), - D==B, - M=t(136,C,F), - 'chr novel_production'(C,M), - 'chr novel_production'(F,M) -> - 'chr extend_history'(C,M), - activate_constraint(K,_,C,L), - ( K==yes -> - '$insert_in_store_depends_on_goal/2'(C) + C=suspension(E,not_stored_yet,t,A,B), + 'chr gen_id'(E), + depends_on_goal___2__1__0__2(D,A,B,C). +depends_on_goal___2__1__0__2([],B,C,A) :- + depends_on_goal___2__2(B,C,A). +depends_on_goal___2__1__0__2([F|G],B,C,A) :- + ( F=suspension(_,active,_,D,E), + D==C, + K=t(305,A,F), + '$novel_production'(A,K), + '$novel_production'(F,K) -> + '$extend_history'(A,K), + arg(2,A,L), + setarg(2,A,active), + ( L==not_stored_yet -> + nb_getval('$chr_store_multi_hash_chr_translate____depends_on_goal___2-2',M), + insert_ht(M,C,A) ; true ), - A=odom([_|H],_), + B=odom([_|H],_), E=odom([],I), J=odom(H,I), call_pattern(J), - depends_on(A,J), - ( C=suspension(_,mutable(active),_,mutable(L),_,_,_,_) -> - 'chr update_mutable'(inactive,mutable(active)), - 'depends_on_goal/2__1__0'(G,A,B,C) + depends_on(B,J), + ( A=suspension(_,active,_,_,_) -> + setarg(2,A,inactive), + depends_on_goal___2__1__0__2(G,B,C,A) ; true ) ; - 'depends_on_goal/2__1__0'(G,A,B,C) + depends_on_goal___2__1__0__2(G,B,C,A) ). -'depends_on_goal/2__1'(A,B,C) :- - allocate_constraint(true,C,depends_on_goal(A,B),[A,B]), - 'depends_on_goal/2__2'(A,B,C). -'depends_on_goal/2__2'(_,_,A) :- - activate_constraint(B,_,A,_), - ( B==yes -> - '$insert_in_store_depends_on_goal/2'(A) +depends_on_goal___2__1(A,B,C) :- + C=suspension(D,not_stored_yet,t,A,B), + 'chr gen_id'(D), + depends_on_goal___2__2(A,B,C). +depends_on_goal___2__2(_,A,B) :- + arg(2,B,C), + setarg(2,B,active), + ( C==not_stored_yet -> + nb_getval('$chr_store_multi_hash_chr_translate____depends_on_goal___2-2',D), + insert_ht(D,A,B) ; true ). -ai_observed(A,B) :- - '$via1_multi_hash_ai_not_observed/2-1'(A,C), +ai_observed_internal(A,B) :- + nb_getval('$chr_store_multi_hash_chr_translate____ai_not_observed_internal___2-12',D), + lookup_ht(D,k(A,B),C), !, - 'ai_observed/2__0__0'(C,A,B). -'ai_observed/2__0__0'([],A,B) :- - 'ai_observed/2__1'(A,B). -'ai_observed/2__0__0'([E|F],A,B) :- - ( E=suspension(_,mutable(active),_,_,_,_,C,D), + ai_observed_internal___2__0__0__1(C,A,B). +ai_observed_internal___2__0__0__1([],A,B) :- + ai_observed_internal___2__1(A,B). +ai_observed_internal___2__0__0__1([E|F],A,B) :- + ( E=suspension(_,active,_,C,D), C==A, D==B -> - remove_constraint_internal(E,_,G), - ( G==yes -> - '$delete_from_store_ai_not_observed/2'(E) + setarg(2,E,removed), + arg(3,E,G), + ( var(G) -> + nb_getval('$chr_store_global_ground_chr_translate____ai_not_observed_internal___2',H), + H=[_|I], + b_setval('$chr_store_global_ground_chr_translate____ai_not_observed_internal___2',I), + ( I=[J|_] -> + setarg(3,J,_) + ; + true + ) ; - true + G=[_,_|I], + setarg(2,G,I), + ( I=[J|_] -> + setarg(3,J,G) + ; + true + ) ), - 'ai_observed/2__0__0'(F,A,B) + nb_getval('$chr_store_multi_hash_chr_translate____ai_not_observed_internal___2-12',K), + delete_ht(K,k(A,B),E), + ai_observed_internal___2__0__0__1(F,A,B) ; - 'ai_observed/2__0__0'(F,A,B) + ai_observed_internal___2__0__0__1(F,A,B) ). -ai_observed(A,B) :- - 'ai_observed/2__1'(A,B). -'ai_observed/2__1'(A,B) :- - '$via1_multi_hash_ai_observed/2-1'(A,E), - 'chr sbag_member'(C,E), - C=suspension(_,mutable(active),_,_,_,_,_,D), - D=B, +ai_observed_internal(A,B) :- + ai_observed_internal___2__1(A,B). +ai_observed_internal___2__1(A,B) :- + nb_getval('$chr_store_multi_hash_chr_translate____ai_observed_internal___2-12',E), + lookup_ht(E,k(A,B),D), + 'chr sbag_member'(C,D), + C=suspension(_,active,_,_,_), !. -'ai_observed/2__1'(A,B) :- - insert_constraint_internal(_,_,C,true,ai_observed(A,B),[A,B]), - '$insert_in_store_ai_observed/2'(C). -ai_not_observed(A,B) :- - 'ai_not_observed/2__0'(A,B,_). -'ai_not_observed/2__0'(A,B,C) :- - '$via1_multi_hash_stored/3-1'(A,D), +ai_observed_internal___2__1(_,_) :- + nb_getval('$chr_store_global_ground_chr_translate____ai_observation_gather_results___0',B), + 'chr sbag_member'(A,B), + A=suspension(_,active,_), + !. +ai_observed_internal___2__1(A,B) :- + C=suspension(D,active,_,A,B), + 'chr gen_id'(D), + nb_getval('$chr_store_global_ground_chr_translate____ai_observed_internal___2',E), + F=[C|E], + b_setval('$chr_store_global_ground_chr_translate____ai_observed_internal___2',F), + ( E=[G|_] -> + setarg(3,G,F) + ; + true + ), + nb_getval('$chr_store_multi_hash_chr_translate____ai_observed_internal___2-12',H), + insert_ht(H,k(A,B),C). +ai_not_observed_internal(A,B) :- + nb_getval('$chr_store_multi_hash_chr_translate____ai_observed_internal___2-12',E), + lookup_ht(E,k(A,B),D), + 'chr sbag_member'(C,D), + C=suspension(_,active,_,_,_), + !. +ai_not_observed_internal(A,B) :- + nb_getval('$chr_store_multi_hash_chr_translate____ai_not_observed_internal___2-12',E), + lookup_ht(E,k(A,B),D), + 'chr sbag_member'(C,D), + C=suspension(_,active,_,_,_), + !. +ai_not_observed_internal(A,B) :- + nb_getval('$chr_store_global_ground_chr_translate____ai_observation_gather_results___0',D), + 'chr sbag_member'(C,D), + C=suspension(_,active,_), !, - allocate_constraint(true,C,ai_not_observed(A,B),[A,B]), - 'ai_not_observed/2__0__0'(D,A,B,C). -'ai_not_observed/2__0__0'([],A,B,C) :- - 'ai_not_observed/2__1'(A,B,C). -'ai_not_observed/2__0__0'([G|H],A,B,C) :- - ( G=suspension(_,mutable(active),_,_,_,_,D,E,F), + ai_not_observed(A,B). +ai_not_observed_internal(A,B) :- + C=suspension(D,active,_,A,B), + 'chr gen_id'(D), + nb_getval('$chr_store_global_ground_chr_translate____ai_not_observed_internal___2',E), + F=[C|E], + b_setval('$chr_store_global_ground_chr_translate____ai_not_observed_internal___2',F), + ( E=[G|_] -> + setarg(3,G,F) + ; + true + ), + nb_getval('$chr_store_multi_hash_chr_translate____ai_not_observed_internal___2-12',H), + insert_ht(H,k(A,B),C). +ai_not_observed(A,B) :- + ai_not_observed___2__0(A,B,_). +ai_not_observed___2__0(A,B,C) :- + nb_getval('$chr_store_multi_hash_chr_translate____stored___3-123',F), + hash_term(k(A,B,1887087),G), + lookup_ht1(F,G,k(A,B,yes),D), + !, + C=suspension(E,not_stored_yet,A,B), + 'chr gen_id'(E), + ai_not_observed___2__0__0__1(D,A,B,C). +ai_not_observed___2__0__0__1([],B,C,A) :- + ai_not_observed___2__1(B,C,A). +ai_not_observed___2__0__0__1([G|H],A,B,C) :- + ( G=suspension(_,active,D,E,F), D==A, E==B, F=yes, - '$via1_multi_hash_stored_complete/3-1'(A,L), + ground(A), + nb_getval('$chr_store_multi_hash_chr_translate____stored_complete___3-1',S), + lookup_ht(S,A,L), 'chr sbag_member'(I,L), - I=suspension(_,mutable(active),_,_,_,_,_,J,K), + I=suspension(_,active,_,_,J,K), B - remove_constraint_internal(G,_,M), - ( M==yes -> - '$delete_from_store_stored/3'(G) + setarg(2,G,removed), + nb_getval('$chr_store_multi_hash_chr_translate____stored___3-1',Q), + delete_ht(Q,A,G), + nb_getval('$chr_store_multi_hash_chr_translate____stored___3-123',R), + delete_ht(R,k(A,B,yes),G), + setarg(2,I,removed), + nb_getval('$chr_store_multi_hash_chr_translate____stored_complete___3-1',P), + delete_ht(P,A,I), + arg(2,C,N), + setarg(2,C,active), + ( N==not_stored_yet -> + nb_getval('$chr_store_multi_hash_chr_translate____ai_not_observed___2-12',O), + insert_ht(O,k(A,B),C) ; true ), - remove_constraint_internal(I,_,N), - ( N==yes -> - '$delete_from_store_stored_complete/3'(I) - ; - true - ), - activate_constraint(P,_,C,Q), - ( P==yes -> - '$insert_in_store_ai_not_observed/2'(C) - ; - true - ), - O is K-1, + M is K-1, stored(A,B,maybe), - stored_complete(A,J,O), - ( C=suspension(_,mutable(active),_,mutable(Q),_,_,_,_) -> - 'chr update_mutable'(inactive,mutable(active)), - 'ai_not_observed/2__0__0'(H,A,B,C) + stored_complete(A,J,M), + ( C=suspension(_,active,_,_) -> + setarg(2,C,inactive), + ai_not_observed___2__0__0__1(H,A,B,C) ; true ) ; - 'ai_not_observed/2__0__0'(H,A,B,C) + ai_not_observed___2__0__0__1(H,A,B,C) ). -'ai_not_observed/2__0'(A,B,C) :- - allocate_constraint(true,C,ai_not_observed(A,B),[A,B]), - 'ai_not_observed/2__1'(A,B,C). -'ai_not_observed/2__1'(A,B,C) :- - '$via1_multi_hash_ai_observed/2-1'(A,F), - 'chr sbag_member'(D,F), - D=suspension(_,mutable(active),_,_,_,_,_,E), - E=B, - !, - ( var(C) -> - true - ; - remove_constraint_internal(C,_,G), - ( G==yes -> - '$delete_from_store_ai_not_observed/2'(C) - ; - true - ) - ). -'ai_not_observed/2__1'(A,B,C) :- - '$via1_multi_hash_ai_not_observed/2-1'(A,F), - 'chr sbag_member'(D,F), - D=suspension(_,mutable(active),_,_,_,_,_,E), - E=B, - !, - ( var(C) -> - true - ; - remove_constraint_internal(C,_,G), - ( G==yes -> - '$delete_from_store_ai_not_observed/2'(C) - ; - true - ) - ). -'ai_not_observed/2__1'(_,_,A) :- - activate_constraint(B,_,A,_), - ( B==yes -> - '$insert_in_store_ai_not_observed/2'(A) +ai_not_observed___2__0(A,B,C) :- + C=suspension(D,not_stored_yet,A,B), + 'chr gen_id'(D), + ai_not_observed___2__1(A,B,C). +ai_not_observed___2__1(A,B,C) :- + arg(2,C,D), + setarg(2,C,active), + ( D==not_stored_yet -> + nb_getval('$chr_store_multi_hash_chr_translate____ai_not_observed___2-12',E), + insert_ht(E,k(A,B),C) ; true ). ai_is_observed(A,B) :- - '$via1_multi_hash_ai_not_observed/2-1'(A,E), - 'chr sbag_member'(C,E), - C=suspension(_,mutable(active),_,_,_,_,_,D), - D=B, + nb_getval('$chr_store_multi_hash_chr_translate____ai_not_observed___2-12',E), + lookup_ht(E,k(A,B),D), + 'chr sbag_member'(C,D), + C=suspension(_,active,_,_), !, fail. ai_is_observed(_,_). depends_on_as(A,B,C) :- - 'depends_on_as/3__0'(A,B,C,_). -'depends_on_as/3__0'(A,B,C,D) :- - '$via1_multi_hash_final_answer_pattern/2-1'(B,E), + depends_on_as___3__0(A,B,C,_). +depends_on_as___3__0(A,B,C,D) :- + nb_getval('$chr_store_multi_hash_chr_translate____final_answer_pattern___2-1',G), + lookup_ht(G,B,E), !, - allocate_constraint(true,D,depends_on_as(A,B,C),[A,B,C]), - 'depends_on_as/3__0__0'(E,A,B,C,D). -'depends_on_as/3__0__0'([],A,B,C,D) :- - 'depends_on_as/3__1'(A,B,C,D). -'depends_on_as/3__0__0'([G|I],A,B,C,D) :- - ( G=suspension(_,mutable(active),_,_,_,_,E,F), - E==B, - '$via1_multi_hash_final_answer_pattern/2-1'(C,H) -> - 'depends_on_as/3__0__1'(H,F,G,I,A,B,C,D) + D=suspension(F,not_stored_yet,t,A,B,C), + 'chr gen_id'(F), + depends_on_as___3__0__0__1(E,A,B,C,D). +depends_on_as___3__0__0__1([],B,C,D,A) :- + depends_on_as___3__1(B,C,D,A). +depends_on_as___3__0__0__1([G|I],B,C,D,A) :- + ( G=suspension(_,active,_,E,F), + E==C, + nb_getval('$chr_store_multi_hash_chr_translate____final_answer_pattern___2-1',J), + lookup_ht(J,D,H) -> + depends_on_as___3__0__1__1(H,F,G,I,B,C,D,A) ; - 'depends_on_as/3__0__0'(I,A,B,C,D) + depends_on_as___3__0__0__1(I,B,C,D,A) ). -'depends_on_as/3__0__1'([],_,_,E,A,B,C,D) :- - 'depends_on_as/3__0__0'(E,A,B,C,D). -'depends_on_as/3__0__1'([J|K],F,A,G,B,C,D,E) :- - ( J=suspension(_,mutable(active),_,_,_,_,H,I), +depends_on_as___3__0__1__1([],_,_,A,C,D,E,B) :- + depends_on_as___3__0__0__1(A,C,D,E,B). +depends_on_as___3__0__1__1([J|K],G,A,B,D,E,F,C) :- + ( J=suspension(_,active,_,H,I), J\==A, - H==D, - O=t(141,E,A,J), - 'chr novel_production'(E,O), - 'chr novel_production'(A,O), - 'chr novel_production'(J,O) -> - 'chr extend_history'(E,O), - activate_constraint(M,_,E,N), - ( M==yes -> - '$insert_in_store_depends_on_as/3'(E) + H==F, + M=t(312,C,A,J), + '$novel_production'(C,M), + '$novel_production'(A,M), + '$novel_production'(J,M) -> + '$extend_history'(C,M), + arg(2,C,N), + setarg(2,C,active), + ( N==not_stored_yet -> + nb_getval('$chr_store_multi_hash_chr_translate____depends_on_as___3-3',O), + insert_ht(O,F,C), + nb_getval('$chr_store_multi_hash_chr_translate____depends_on_as___3-2',P), + insert_ht(P,E,C) ; true ), - ai_observation_lub(F,I,L), - final_answer_pattern(B,L), - ( E=suspension(_,mutable(active),_,mutable(N),_,_,_,_,_) -> - 'chr update_mutable'(inactive,mutable(active)), - 'depends_on_as/3__0__1'(K,F,A,G,B,C,D,E) + ai_observation_lub(G,I,L), + final_answer_pattern(D,L), + ( C=suspension(_,active,_,_,_,_) -> + setarg(2,C,inactive), + depends_on_as___3__0__1__1(K,G,A,B,D,E,F,C) ; true ) ; - 'depends_on_as/3__0__1'(K,F,A,G,B,C,D,E) + depends_on_as___3__0__1__1(K,G,A,B,D,E,F,C) ). -'depends_on_as/3__0'(A,B,C,D) :- - allocate_constraint(true,D,depends_on_as(A,B,C),[A,B,C]), - 'depends_on_as/3__1'(A,B,C,D). -'depends_on_as/3__1'(_,_,_,A) :- - activate_constraint(B,_,A,_), - ( B==yes -> - '$insert_in_store_depends_on_as/3'(A) +depends_on_as___3__0(A,B,C,D) :- + D=suspension(E,not_stored_yet,t,A,B,C), + 'chr gen_id'(E), + depends_on_as___3__1(A,B,C,D). +depends_on_as___3__1(_,A,B,C) :- + arg(2,C,D), + setarg(2,C,active), + ( D==not_stored_yet -> + nb_getval('$chr_store_multi_hash_chr_translate____depends_on_as___3-3',E), + insert_ht(E,B,C), + nb_getval('$chr_store_multi_hash_chr_translate____depends_on_as___3-2',F), + insert_ht(F,A,C) ; true ). +ai_observation_gather_results :- + ai_observation_gather_results___0__0(_). +ai_observation_gather_results___0__0(A) :- + nb_getval('$chr_store_global_ground_chr_translate____ai_observed_internal___2',B), + !, + ai_observation_gather_results___0__0__0__1(B,A). +ai_observation_gather_results___0__0__0__1([],A) :- + ai_observation_gather_results___0__1(A). +ai_observation_gather_results___0__0__0__1([D|E],A) :- + ( D=suspension(_,active,_,B,C) -> + setarg(2,D,removed), + arg(3,D,F), + ( var(F) -> + nb_getval('$chr_store_global_ground_chr_translate____ai_observed_internal___2',G), + G=[_|H], + b_setval('$chr_store_global_ground_chr_translate____ai_observed_internal___2',H), + ( H=[I|_] -> + setarg(3,I,_) + ; + true + ) + ; + F=[_,_|H], + setarg(2,F,H), + ( H=[I|_] -> + setarg(3,I,F) + ; + true + ) + ), + nb_getval('$chr_store_multi_hash_chr_translate____ai_observed_internal___2-12',J), + delete_ht(J,k(B,C),D), + ai_observation_gather_results___0__0__0__1(E,A) + ; + ai_observation_gather_results___0__0__0__1(E,A) + ). +ai_observation_gather_results___0__0(A) :- + ai_observation_gather_results___0__1(A). +ai_observation_gather_results___0__1(A) :- + nb_getval('$chr_store_global_ground_chr_translate____ai_not_observed_internal___2',B), + !, + A=suspension(C,not_stored_yet,_), + 'chr gen_id'(C), + ai_observation_gather_results___0__1__0__2(B,A). +ai_observation_gather_results___0__1__0__2([],A) :- + ai_observation_gather_results___0__2(A). +ai_observation_gather_results___0__1__0__2([D|E],A) :- + ( D=suspension(_,active,_,B,C) -> + setarg(2,D,removed), + arg(3,D,J), + ( var(J) -> + nb_getval('$chr_store_global_ground_chr_translate____ai_not_observed_internal___2',K), + K=[_|L], + b_setval('$chr_store_global_ground_chr_translate____ai_not_observed_internal___2',L), + ( L=[M|_] -> + setarg(3,M,_) + ; + true + ) + ; + J=[_,_|L], + setarg(2,J,L), + ( L=[M|_] -> + setarg(3,M,J) + ; + true + ) + ), + nb_getval('$chr_store_multi_hash_chr_translate____ai_not_observed_internal___2-12',N), + delete_ht(N,k(B,C),D), + arg(2,A,F), + setarg(2,A,active), + ( F==not_stored_yet -> + nb_getval('$chr_store_global_ground_chr_translate____ai_observation_gather_results___0',G), + H=[A|G], + b_setval('$chr_store_global_ground_chr_translate____ai_observation_gather_results___0',H), + ( G=[I|_] -> + setarg(3,I,H) + ; + true + ) + ; + true + ), + ai_not_observed(B,C), + ( A=suspension(_,active,_) -> + setarg(2,A,inactive), + ai_observation_gather_results___0__1__0__2(E,A) + ; + true + ) + ; + ai_observation_gather_results___0__1__0__2(E,A) + ). +ai_observation_gather_results___0__1(A) :- + A=suspension(B,not_stored_yet,_), + 'chr gen_id'(B), + ai_observation_gather_results___0__2(A). +ai_observation_gather_results___0__2(A) :- + ( var(A) -> + true + ; + arg(2,A,F), + setarg(2,A,removed), + ( F==not_stored_yet -> + true + ; + arg(3,A,B), + ( var(B) -> + nb_getval('$chr_store_global_ground_chr_translate____ai_observation_gather_results___0',C), + C=[_|D], + b_setval('$chr_store_global_ground_chr_translate____ai_observation_gather_results___0',D), + ( D=[E|_] -> + setarg(3,E,_) + ; + true + ) + ; + B=[_,_|D], + setarg(2,B,D), + ( D=[E|_] -> + setarg(3,E,B) + ; + true + ) + ) + ) + ). +ai_observation_memo_simplification_rest_heads(A,B,C) :- + nb_getval('$chr_store_multi_hash_chr_translate____ai_observation_memoed_simplification_rest_heads___3-12',G), + lookup_ht(G,k(A,B),F), + 'chr sbag_member'(D,F), + D=suspension(_,active,_,_,E), + !, + C=E. +ai_observation_memo_simplification_rest_heads(A,B,C) :- + nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-12',V), + lookup_ht(V,k(A,B),G), + 'chr sbag_member'(D,G), + D=suspension(_,active,_,_,_,_,E,F,_), + nb_getval('$chr_store_multi_hash_chr_translate____rule___2-1',U), + lookup_ht1(U,E,E,J), + 'chr sbag_member'(H,J), + H=suspension(_,active,_,_,_,I), + nb_getval('$chr_store_global_ground_chr_translate____abstract_constraints___1',M), + 'chr sbag_member'(K,M), + K=suspension(_,active,_,L), + !, + I=pragma(rule(N,O,_,_),ids(P,_),_,_,_), + once(select2(F,_,P,N,_,Q)), + ai_observation_abstract_constraints(Q,L,R), + ai_observation_abstract_constraints(O,L,S), + append(R,S,T), + sort(T,C), + ai_observation_memoed_simplification_rest_heads(A,B,C). +ai_observation_memo_simplification_rest_heads(_,_,_) :- + fail. +ai_observation_memoed_simplification_rest_heads(A,B,C) :- + D=suspension(E,active,A,B,C), + 'chr gen_id'(E), + nb_getval('$chr_store_multi_hash_chr_translate____ai_observation_memoed_simplification_rest_heads___3-12',F), + insert_ht(F,k(A,B),D). +ai_observation_memo_propagation_rest_heads(A,B,C) :- + nb_getval('$chr_store_multi_hash_chr_translate____ai_observation_memoed_propagation_rest_heads___3-12',G), + lookup_ht(G,k(A,B),F), + 'chr sbag_member'(D,F), + D=suspension(_,active,_,_,E), + !, + C=E. +ai_observation_memo_propagation_rest_heads(A,B,C) :- + nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-12',V), + lookup_ht(V,k(A,B),G), + 'chr sbag_member'(D,G), + D=suspension(_,active,_,_,_,_,E,F,_), + nb_getval('$chr_store_multi_hash_chr_translate____rule___2-1',U), + lookup_ht1(U,E,E,J), + 'chr sbag_member'(H,J), + H=suspension(_,active,_,_,_,I), + nb_getval('$chr_store_global_ground_chr_translate____abstract_constraints___1',M), + 'chr sbag_member'(K,M), + K=suspension(_,active,_,L), + !, + I=pragma(rule(N,O,_,_),ids(_,P),_,_,_), + once(select2(F,_,P,O,_,Q)), + ai_observation_abstract_constraints(Q,L,R), + ai_observation_abstract_constraints(N,L,S), + append(R,S,T), + sort(T,C), + ai_observation_memoed_propagation_rest_heads(A,B,C). +ai_observation_memo_propagation_rest_heads(_,_,_) :- + fail. +ai_observation_memoed_propagation_rest_heads(A,B,C) :- + D=suspension(E,active,A,B,C), + 'chr gen_id'(E), + nb_getval('$chr_store_multi_hash_chr_translate____ai_observation_memoed_propagation_rest_heads___3-12',F), + insert_ht(F,k(A,B),D). +ai_observation_memoed_abstract_goal(A,B) :- + C=suspension(D,active,A,B), + 'chr gen_id'(D), + nb_getval('$chr_store_multi_hash_chr_translate____ai_observation_memoed_abstract_goal___2-1',E), + insert_ht(E,A,C). +ai_observation_memo_abstract_goal(A,B) :- + nb_getval('$chr_store_multi_hash_chr_translate____ai_observation_memoed_abstract_goal___2-1',F), + lookup_ht(F,A,E), + 'chr sbag_member'(C,E), + C=suspension(_,active,_,D), + !, + B=D. +ai_observation_memo_abstract_goal(A,B) :- + nb_getval('$chr_store_multi_hash_chr_translate____rule___2-1',N), + lookup_ht1(N,A,A,E), + 'chr sbag_member'(C,E), + C=suspension(_,active,_,_,_,D), + nb_getval('$chr_store_global_ground_chr_translate____abstract_constraints___1',H), + 'chr sbag_member'(F,H), + F=suspension(_,active,_,G), + !, + D=pragma(rule(I,J,K,L),_,_,_,_), + ai_observation_abstract_goal_(I,J,K,L,G,M), + B=M, + ai_observation_memoed_abstract_goal(A,M). +ai_observation_memo_abstract_goal(A,B) :- + C=suspension(D,active,_,A,B), + 'chr gen_id'(D), + nb_getval('$chr_store_global_ground_chr_translate____ai_observation_memo_abstract_goal___2',E), + F=[C|E], + b_setval('$chr_store_global_ground_chr_translate____ai_observation_memo_abstract_goal___2',F), + ( E=[G|_] -> + setarg(3,G,F) + ; + true + ). +partial_wake_analysis :- + partial_wake_analysis___0__0(_). +partial_wake_analysis___0__0(A) :- + nb_getval('$chr_store_global_ground_chr_translate____occurrence___5',B), + !, + A=suspension(C,not_stored_yet,t,_), + 'chr gen_id'(C), + partial_wake_analysis___0__0__0__1(B,A). +partial_wake_analysis___0__0__0__1([],A) :- + partial_wake_analysis___0__1(A). +partial_wake_analysis___0__0__0__1([F|H],A) :- + ( F=suspension(_,active,_,_,B,_,C,D,E), + nb_getval('$chr_store_multi_hash_chr_translate____constraint_mode___2-1',I), + lookup_ht(I,B,G) -> + partial_wake_analysis___0__0__1__1(G,B,C,D,E,F,H,A) + ; + partial_wake_analysis___0__0__0__1(H,A) + ). +partial_wake_analysis___0__0__1__1([],_,_,_,_,_,A,B) :- + partial_wake_analysis___0__0__0__1(A,B). +partial_wake_analysis___0__0__1__1([J|L],D,E,F,G,A,B,C) :- + ( J=suspension(_,active,_,_,H,I), + H==D, + nb_getval('$chr_store_multi_hash_chr_translate____rule___2-1',M), + lookup_ht1(M,E,E,K) -> + partial_wake_analysis___0__0__2__1(K,I,J,L,D,E,F,G,A,B,C) + ; + partial_wake_analysis___0__0__1__1(L,D,E,F,G,A,B,C) + ). +partial_wake_analysis___0__0__2__1([],_,_,A,E,F,G,H,B,C,D) :- + partial_wake_analysis___0__0__1__1(A,E,F,G,H,B,C,D). +partial_wake_analysis___0__0__2__1([M|N],J,A,B,F,G,H,I,C,D,E) :- + ( M=suspension(_,active,_,_,K,L), + K==G, + U=t(325,E,C,M,A), + '$novel_production'(E,U), + '$novel_production'(C,U), + '$novel_production'(M,U), + '$novel_production'(A,U) -> + '$extend_history'(E,U), + arg(2,E,V), + setarg(2,E,active), + ( V==not_stored_yet -> + nb_getval('$chr_store_global_ground_chr_translate____partial_wake_analysis___0',W), + X=[E|W], + b_setval('$chr_store_global_ground_chr_translate____partial_wake_analysis___0',X), + ( W=[Y|_] -> + setarg(4,Y,X) + ; + true + ) + ; + true + ), + L=pragma(rule(O,P,Q,_),_,_,_,_), + ( is_passive(G,H) -> + true + ; + ( I==simplification -> + select(R,O,_), + R=..[_|S], + term_variables(Q,T), + partial_wake_args(S,J,T,F) + ) + ; + select(R,P,_), + R=..[_|S], + term_variables(Q,T), + partial_wake_args(S,J,T,F) + ), + ( E=suspension(_,active,_,_) -> + setarg(2,E,inactive), + partial_wake_analysis___0__0__2__1(N,J,A,B,F,G,H,I,C,D,E) + ; + true + ) + ; + partial_wake_analysis___0__0__2__1(N,J,A,B,F,G,H,I,C,D,E) + ). +partial_wake_analysis___0__0(A) :- + A=suspension(B,not_stored_yet,t,_), + 'chr gen_id'(B), + partial_wake_analysis___0__1(A). +partial_wake_analysis___0__1(A) :- + arg(2,A,B), + setarg(2,A,active), + ( B==not_stored_yet -> + nb_getval('$chr_store_global_ground_chr_translate____partial_wake_analysis___0',C), + D=[A|C], + b_setval('$chr_store_global_ground_chr_translate____partial_wake_analysis___0',D), + ( C=[E|_] -> + setarg(4,E,D) + ; + true + ) + ; + true + ). +no_partial_wake(A) :- + nb_getval('$chr_store_multi_hash_chr_translate____no_partial_wake___1-1',D), + lookup_ht(D,A,C), + 'chr sbag_member'(B,C), + B=suspension(_,active,_), + !. +no_partial_wake(A) :- + B=suspension(C,active,A), + 'chr gen_id'(C), + nb_getval('$chr_store_multi_hash_chr_translate____no_partial_wake___1-1',D), + insert_ht(D,A,B). +wakes_partially(A) :- + nb_getval('$chr_store_multi_hash_chr_translate____no_partial_wake___1-1',D), + lookup_ht(D,A,C), + 'chr sbag_member'(B,C), + B=suspension(_,active,_), + !, + fail. +wakes_partially(_). +phase_end(A) :- + phase_end___1__0(A,_). +phase_end___1__0(A,B) :- + nb_getval('$chr_store_multi_hash_chr_translate____delay_phase_end___2-1',E), + lookup_ht(E,A,C), + !, + B=suspension(D,not_stored_yet,A), + 'chr gen_id'(D), + phase_end___1__0__0__1(C,A,B). +phase_end___1__0__0__1([],B,A) :- + phase_end___1__1(B,A). +phase_end___1__0__0__1([E|F],A,B) :- + ( E=suspension(_,active,C,D), + C==A -> + setarg(2,E,removed), + nb_getval('$chr_store_multi_hash_chr_translate____delay_phase_end___2-1',I), + delete_ht(I,A,E), + arg(2,B,G), + setarg(2,B,active), + ( G==not_stored_yet -> + nb_getval('$chr_store_multi_hash_chr_translate____phase_end___1-1',H), + insert_ht(H,A,B) + ; + true + ), + call(D), + ( B=suspension(_,active,_) -> + setarg(2,B,inactive), + phase_end___1__0__0__1(F,A,B) + ; + true + ) + ; + phase_end___1__0__0__1(F,A,B) + ). +phase_end___1__0(A,B) :- + B=suspension(C,not_stored_yet,A), + 'chr gen_id'(C), + phase_end___1__1(A,B). +phase_end___1__1(A,B) :- + arg(2,B,C), + setarg(2,B,active), + ( C==not_stored_yet -> + nb_getval('$chr_store_multi_hash_chr_translate____phase_end___1-1',D), + insert_ht(D,A,B) + ; + true + ). +delay_phase_end(A,B) :- + nb_getval('$chr_store_multi_hash_chr_translate____phase_end___1-1',E), + lookup_ht(E,A,D), + 'chr sbag_member'(C,D), + C=suspension(_,active,_), + !, + call(B). +delay_phase_end(A,B) :- + C=suspension(D,active,A,B), + 'chr gen_id'(D), + nb_getval('$chr_store_multi_hash_chr_translate____delay_phase_end___2-1',E), + insert_ht(E,A,C). +does_use_history(A,B) :- + nb_getval('$chr_store_multi_hash_chr_translate____does_use_history___2-12',E), + lookup_ht(E,k(A,B),D), + 'chr sbag_member'(C,D), + C=suspension(_,active,_,_), + !. +does_use_history(A,B) :- + C=suspension(D,active,A,B), + 'chr gen_id'(D), + nb_getval('$chr_store_multi_hash_chr_translate____does_use_history___2-1',E), + insert_ht(E,A,C), + nb_getval('$chr_store_multi_hash_chr_translate____does_use_history___2-12',F), + insert_ht(F,k(A,B),C). +uses_history(A) :- + nb_getval('$chr_store_multi_hash_chr_translate____does_use_history___2-1',D), + lookup_ht(D,A,C), + 'chr sbag_member'(B,C), + B=suspension(_,active,_,_), + !. +uses_history(_) :- + fail. +novel_production_call(A,B,C,D) :- + nb_getval('$chr_store_multi_hash_chr_translate____does_use_history___2-12',G), + lookup_ht(G,k(A,B),F), + 'chr sbag_member'(E,F), + E=suspension(_,active,_,_), + !, + D=C. +novel_production_call(_,_,_,true). +does_use_field(A,B) :- + nb_getval('$chr_store_multi_hash_chr_translate____does_use_field___2-12',E), + lookup_ht(E,k(A,B),D), + 'chr sbag_member'(C,D), + C=suspension(_,active,_,_), + !. +does_use_field(A,B) :- + C=suspension(D,active,A,B), + 'chr gen_id'(D), + nb_getval('$chr_store_multi_hash_chr_translate____does_use_field___2-12',E), + insert_ht(E,k(A,B),C). +uses_field(A,B) :- + nb_getval('$chr_store_multi_hash_chr_translate____does_use_field___2-12',E), + lookup_ht(E,k(A,B),D), + 'chr sbag_member'(C,D), + C=suspension(_,active,_,_), + !. +uses_field(_,_) :- + fail. +uses_state(A,B) :- + uses_state___2__0(A,B,_). +uses_state___2__0(A,B,_) :- + nb_getval('$chr_store_multi_hash_chr_translate____uses_state___2-12',E), + lookup_ht(E,k(A,B),D), + 'chr sbag_member'(C,D), + C=suspension(_,active,_,_), + !. +uses_state___2__0(A,B,C) :- + nb_getval('$chr_store_global_ground_chr_translate____used_states_known___0',D), + !, + C=suspension(E,not_stored_yet,A,B), + 'chr gen_id'(E), + uses_state___2__0__0__3(D,A,B,C). +uses_state___2__0__0__3([],B,C,A) :- + uses_state___2__1(B,C,A). +uses_state___2__0__0__3([D|F],B,C,A) :- + ( D=suspension(_,active,_), + nb_getval('$chr_store_multi_hash_chr_translate____if_used_state___5-12',G), + lookup_ht(G,k(B,C),E) -> + uses_state___2__0__1__3(E,D,F,B,C,A) + ; + uses_state___2__0__0__3(F,B,C,A) + ). +uses_state___2__0__1__3([],_,A,C,D,B) :- + uses_state___2__0__0__3(A,C,D,B). +uses_state___2__0__1__3([J|K],A,E,B,C,D) :- + ( J=suspension(_,active,_,F,G,H,_,I), + F==B, + G==C -> + setarg(2,J,removed), + arg(3,J,N), + ( var(N) -> + nb_getval('$chr_store_global_ground_chr_translate____if_used_state___5',O), + O=[_|P], + b_setval('$chr_store_global_ground_chr_translate____if_used_state___5',P), + ( P=[Q|_] -> + setarg(3,Q,_) + ; + true + ) + ; + N=[_,_|P], + setarg(2,N,P), + ( P=[Q|_] -> + setarg(3,Q,N) + ; + true + ) + ), + nb_getval('$chr_store_multi_hash_chr_translate____if_used_state___5-12',R), + delete_ht(R,k(B,C),J), + arg(2,D,L), + setarg(2,D,active), + ( L==not_stored_yet -> + nb_getval('$chr_store_multi_hash_chr_translate____uses_state___2-12',M), + insert_ht(M,k(B,C),D) + ; + true + ), + I=H, + ( D=suspension(_,active,_,_) -> + setarg(2,D,inactive), + uses_state___2__0__1__3(K,A,E,B,C,D) + ; + true + ) + ; + uses_state___2__0__1__3(K,A,E,B,C,D) + ). +uses_state___2__0(A,B,C) :- + C=suspension(D,not_stored_yet,A,B), + 'chr gen_id'(D), + uses_state___2__1(A,B,C). +uses_state___2__1(A,B,C) :- + arg(2,C,D), + setarg(2,C,active), + ( D==not_stored_yet -> + nb_getval('$chr_store_multi_hash_chr_translate____uses_state___2-12',E), + insert_ht(E,k(A,B),C) + ; + true + ). +if_used_state(A,B,C,D,E) :- + nb_getval('$chr_store_global_ground_chr_translate____used_states_known___0',G), + 'chr sbag_member'(F,G), + F=suspension(_,active,_), + ( + nb_getval('$chr_store_multi_hash_chr_translate____uses_state___2-12',J), + lookup_ht(J,k(A,B),I), + 'chr sbag_member'(H,I), + H=suspension(_,active,_,_), + !, + E=C + ; + !, + E=D + ). +if_used_state(A,B,C,D,E) :- + F=suspension(G,active,_,A,B,C,D,E), + 'chr gen_id'(G), + nb_getval('$chr_store_global_ground_chr_translate____if_used_state___5',H), + I=[F|H], + b_setval('$chr_store_global_ground_chr_translate____if_used_state___5',I), + ( H=[J|_] -> + setarg(3,J,I) + ; + true + ), + nb_getval('$chr_store_multi_hash_chr_translate____if_used_state___5-12',K), + insert_ht(K,k(A,B),F). +used_states_known :- + used_states_known___0__0(_). +used_states_known___0__0(A) :- + nb_getval('$chr_store_global_ground_chr_translate____if_used_state___5',B), + !, + A=suspension(C,not_stored_yet,_), + 'chr gen_id'(C), + used_states_known___0__0__0__1(B,A). +used_states_known___0__0__0__1([],A) :- + used_states_known___0__1(A). +used_states_known___0__0__0__1([F|G],A) :- + ( F=suspension(_,active,_,B,C,D,_,E), + ground(B), + ground(C), + nb_getval('$chr_store_multi_hash_chr_translate____uses_state___2-12',S), + lookup_ht(S,k(B,C),I), + 'chr sbag_member'(H,I), + H=suspension(_,active,_,_) -> + setarg(2,F,removed), + arg(3,F,N), + ( var(N) -> + nb_getval('$chr_store_global_ground_chr_translate____if_used_state___5',O), + O=[_|P], + b_setval('$chr_store_global_ground_chr_translate____if_used_state___5',P), + ( P=[Q|_] -> + setarg(3,Q,_) + ; + true + ) + ; + N=[_,_|P], + setarg(2,N,P), + ( P=[Q|_] -> + setarg(3,Q,N) + ; + true + ) + ), + nb_getval('$chr_store_multi_hash_chr_translate____if_used_state___5-12',R), + delete_ht(R,k(B,C),F), + arg(2,A,J), + setarg(2,A,active), + ( J==not_stored_yet -> + nb_getval('$chr_store_global_ground_chr_translate____used_states_known___0',K), + L=[A|K], + b_setval('$chr_store_global_ground_chr_translate____used_states_known___0',L), + ( K=[M|_] -> + setarg(3,M,L) + ; + true + ) + ; + true + ), + E=D, + ( A=suspension(_,active,_) -> + setarg(2,A,inactive), + used_states_known___0__0__0__1(G,A) + ; + true + ) + ; + used_states_known___0__0__0__1(G,A) + ). +used_states_known___0__0(A) :- + A=suspension(B,not_stored_yet,_), + 'chr gen_id'(B), + used_states_known___0__1(A). +used_states_known___0__1(A) :- + nb_getval('$chr_store_global_ground_chr_translate____if_used_state___5',B), + !, + used_states_known___0__1__0__2(B,A). +used_states_known___0__1__0__2([],A) :- + used_states_known___0__2(A). +used_states_known___0__1__0__2([F|G],A) :- + ( F=suspension(_,active,_,B,C,_,D,E) -> + setarg(2,F,removed), + arg(3,F,L), + ( var(L) -> + nb_getval('$chr_store_global_ground_chr_translate____if_used_state___5',M), + M=[_|N], + b_setval('$chr_store_global_ground_chr_translate____if_used_state___5',N), + ( N=[O|_] -> + setarg(3,O,_) + ; + true + ) + ; + L=[_,_|N], + setarg(2,L,N), + ( N=[O|_] -> + setarg(3,O,L) + ; + true + ) + ), + nb_getval('$chr_store_multi_hash_chr_translate____if_used_state___5-12',P), + delete_ht(P,k(B,C),F), + arg(2,A,H), + setarg(2,A,active), + ( H==not_stored_yet -> + nb_getval('$chr_store_global_ground_chr_translate____used_states_known___0',I), + J=[A|I], + b_setval('$chr_store_global_ground_chr_translate____used_states_known___0',J), + ( I=[K|_] -> + setarg(3,K,J) + ; + true + ) + ; + true + ), + E=D, + ( A=suspension(_,active,_) -> + setarg(2,A,inactive), + used_states_known___0__1__0__2(G,A) + ; + true + ) + ; + used_states_known___0__1__0__2(G,A) + ). +used_states_known___0__1(A) :- + used_states_known___0__2(A). +used_states_known___0__2(A) :- + arg(2,A,B), + setarg(2,A,active), + ( B==not_stored_yet -> + nb_getval('$chr_store_global_ground_chr_translate____used_states_known___0',C), + D=[A|C], + b_setval('$chr_store_global_ground_chr_translate____used_states_known___0',D), + ( C=[E|_] -> + setarg(3,E,D) + ; + true + ) + ; + true + ). +stored_assertion(A) :- + B=suspension(C,active,A), + 'chr gen_id'(C), + nb_getval('$chr_store_multi_hash_chr_translate____stored_assertion___1-1',D), + insert_ht(D,A,B). +never_stored_default(A,B) :- + never_stored_default___2__0(A,B,_). +never_stored_default___2__0(A,B,C) :- + nb_getval('$chr_store_global_ground_chr_translate____never_stored_rules___2',D), + !, + C=suspension(E,not_stored_yet,A,B), + 'chr gen_id'(E), + never_stored_default___2__0__0__1(D,A,B,C). +never_stored_default___2__0__0__1([],B,C,A) :- + never_stored_default___2__1(B,C,A). +never_stored_default___2__0__0__1([F|I],A,B,C) :- + ( F=suspension(_,active,_,D,E), + D=[G|H], + G==A -> + setarg(2,F,removed), + arg(3,F,R), + ( var(R) -> + nb_getval('$chr_store_global_ground_chr_translate____never_stored_rules___2',S), + S=[_|T], + b_setval('$chr_store_global_ground_chr_translate____never_stored_rules___2',T), + ( T=[U|_] -> + setarg(3,U,_) + ; + true + ) + ; + R=[_,_|T], + setarg(2,R,T), + ( T=[U|_] -> + setarg(3,U,R) + ; + true + ) + ), + arg(2,C,P), + setarg(2,C,active), + ( P==not_stored_yet -> + nb_getval('$chr_store_multi_hash_chr_translate____never_stored_default___2-1',Q), + insert_ht(Q,A,C) + ; + true + ), + A=J/K, + functor(L,J,K), + inc_rule_count(M), + N=pragma(rule([L],[],true,B),ids([0],[]),[],no,M), + E=[N|O], + never_stored_rules(H,O), + ( C=suspension(_,active,_,_) -> + setarg(2,C,inactive), + never_stored_default___2__0__0__1(I,A,B,C) + ; + true + ) + ; + never_stored_default___2__0__0__1(I,A,B,C) + ). +never_stored_default___2__0(A,B,C) :- + C=suspension(D,not_stored_yet,A,B), + 'chr gen_id'(D), + never_stored_default___2__1(A,B,C). +never_stored_default___2__1(A,_,B) :- + arg(2,B,C), + setarg(2,B,active), + ( C==not_stored_yet -> + nb_getval('$chr_store_multi_hash_chr_translate____never_stored_default___2-1',D), + insert_ht(D,A,B) + ; + true + ). +never_stored_rules([],A) :- + !, + A=[]. +never_stored_rules([B|C],A) :- + nb_getval('$chr_store_multi_hash_chr_translate____never_stored_default___2-1',M), + lookup_ht(M,B,F), + 'chr sbag_member'(D,F), + D=suspension(_,active,_,E), + !, + B=G/H, + functor(I,G,H), + inc_rule_count(J), + K=pragma(rule([I],[],true,E),ids([0],[]),[],no,J), + A=[K|L], + never_stored_rules(C,L). +never_stored_rules([_|B],A) :- + !, + never_stored_rules(B,A). +never_stored_rules(A,B) :- + C=suspension(D,active,_,A,B), + 'chr gen_id'(D), + nb_getval('$chr_store_global_ground_chr_translate____never_stored_rules___2',E), + F=[C|E], + b_setval('$chr_store_global_ground_chr_translate____never_stored_rules___2',F), + ( E=[G|_] -> + setarg(3,G,F) + ; + true + ). +check_storedness_assertion(A) :- + nb_getval('$chr_store_multi_hash_chr_translate____stored_assertion___1-1',E), + lookup_ht(E,A,C), + 'chr sbag_member'(B,C), + B=suspension(_,active,_), + !, + setarg(2,B,removed), + nb_getval('$chr_store_multi_hash_chr_translate____stored_assertion___1-1',D), + delete_ht(D,A,B), + ( is_stored(A) -> + true + ; + chr_warning(assertion_failed,'Constraint ~w is not stored. However, it was asserted to be stored. +',[A]) + ). +check_storedness_assertion(A) :- + nb_getval('$chr_store_multi_hash_chr_translate____never_stored_default___2-1',D), + lookup_ht(D,A,C), + 'chr sbag_member'(B,C), + B=suspension(_,active,_,_), + !, + ( is_finally_stored(A) -> + chr_warning(assertion_failed,'Constraint ~w is stored. However, it was asserted not to be stored. +',[A]) + ; + ( is_stored(A) -> + chr_warning(assertion_failed,'Constraint ~w is temporarily stored. However, it was asserted not to be stored. +',[A]) + ) + ; + true + ). +check_storedness_assertion(A) :- + ( is_finally_stored(A) -> + chr_warning(assertion_failed,'Constraint ~w is stored. However, it was asserted not to be stored. +',[A]) + ; + ( is_stored(A) -> + chr_warning(assertion_failed,'Constraint ~w is temporarily stored. However, it was asserted not to be stored. +',[A]) + ) + ; + true + ). +continuation_occurrence(A,B,C) :- + D=suspension(E,active,A,B,C), + 'chr gen_id'(E), + nb_getval('$chr_store_multi_hash_chr_translate____continuation_occurrence___3-12',F), + insert_ht(F,k(A,B),D). +get_success_continuation_occurrence(A,B,C) :- + nb_getval('$chr_store_multi_hash_chr_translate____continuation_occurrence___3-12',G), + lookup_ht(G,k(A,B),F), + 'chr sbag_member'(D,F), + D=suspension(_,active,_,_,E), + !, + C=E. +get_success_continuation_occurrence(A,B,_) :- + chr_error(internal,'Success continuation not found for ~w. +',[A:B]). +skip_to_next_id(A,B) :- + skip_to_next_id___2__0(A,B,_). +skip_to_next_id___2__0(A,B,_) :- + nb_getval('$chr_store_multi_hash_chr_translate____skip_to_next_id___2-12',E), + lookup_ht(E,k(A,B),D), + 'chr sbag_member'(C,D), + C=suspension(_,active,_,_,_), + !. +skip_to_next_id___2__0(A,B,C) :- + nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-12',F), + lookup_ht(F,k(A,B),D), + !, + C=suspension(E,not_stored_yet,t,A,B), + 'chr gen_id'(E), + skip_to_next_id___2__0__0__4(D,A,B,C). +skip_to_next_id___2__0__0__4([],B,C,A) :- + skip_to_next_id___2__1(B,C,A). +skip_to_next_id___2__0__0__4([H|J],B,C,A) :- + ( H=suspension(_,active,_,_,D,E,F,G,_), + D==B, + E==C, + nb_getval('$chr_store_multi_hash_chr_translate____passive___2-12',K), + lookup_ht(K,k(F,G),I) -> + skip_to_next_id___2__0__1__4(I,F,G,H,J,B,C,A) + ; + skip_to_next_id___2__0__0__4(J,B,C,A) + ). +skip_to_next_id___2__0__1__4([],_,_,_,A,C,D,B) :- + skip_to_next_id___2__0__0__4(A,C,D,B). +skip_to_next_id___2__0__1__4([J|K],F,G,A,B,D,E,C) :- + ( J=suspension(_,active,_,H,I), + H==F, + I==G, + M=t(357,A,J,C), + '$novel_production'(A,M), + '$novel_production'(J,M), + '$novel_production'(C,M), + E>1 -> + '$extend_history'(C,M), + arg(2,C,N), + setarg(2,C,active), + ( N==not_stored_yet -> + nb_getval('$chr_store_multi_hash_chr_translate____skip_to_next_id___2-12',O), + insert_ht(O,k(D,E),C) + ; + true + ), + L is E-1, + skip_to_next_id(D,L), + ( C=suspension(_,active,_,_,_) -> + setarg(2,C,inactive), + skip_to_next_id___2__0__1__4(K,F,G,A,B,D,E,C) + ; + true + ) + ; + skip_to_next_id___2__0__1__4(K,F,G,A,B,D,E,C) + ). +skip_to_next_id___2__0(A,B,C) :- + C=suspension(D,not_stored_yet,t,A,B), + 'chr gen_id'(D), + skip_to_next_id___2__1(A,B,C). +skip_to_next_id___2__1(A,B,C) :- + nb_getval('$chr_store_multi_hash_chr_translate____set_occurrence_code_id___3-12',E), + lookup_ht(E,k(A,B),D), + !, + skip_to_next_id___2__1__0__5(D,A,B,C). +skip_to_next_id___2__1__0__5([],B,C,A) :- + skip_to_next_id___2__2(B,C,A). +skip_to_next_id___2__1__0__5([G|H],A,B,C) :- + ( G=suspension(_,active,D,E,F), + D==A, + E==B, + ground(A), + ground(B), + nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-12',Q), + lookup_ht(Q,k(A,B),K), + 'chr sbag_member'(I,K), + I=suspension(_,active,_,_,_,_,_,_,J), + J=propagation -> + setarg(2,G,removed), + nb_getval('$chr_store_multi_hash_chr_translate____set_occurrence_code_id___3-12',P), + delete_ht(P,k(A,B),G), + arg(2,C,N), + setarg(2,C,active), + ( N==not_stored_yet -> + nb_getval('$chr_store_multi_hash_chr_translate____skip_to_next_id___2-12',O), + insert_ht(O,k(A,B),C) + ; + true + ), + occurrence_code_id(A,B,F), + L is B+1, + M is F+1, + set_occurrence_code_id(A,L,M), + ( C=suspension(_,active,_,_,_) -> + setarg(2,C,inactive), + skip_to_next_id___2__1__0__5(H,A,B,C) + ; + true + ) + ; + skip_to_next_id___2__1__0__5(H,A,B,C) + ). +skip_to_next_id___2__1(A,B,C) :- + skip_to_next_id___2__2(A,B,C). +skip_to_next_id___2__2(A,B,C) :- + arg(2,C,D), + setarg(2,C,active), + ( D==not_stored_yet -> + nb_getval('$chr_store_multi_hash_chr_translate____skip_to_next_id___2-12',E), + insert_ht(E,k(A,B),C) + ; + true + ). +should_skip_to_next_id(A,B) :- + nb_getval('$chr_store_multi_hash_chr_translate____skip_to_next_id___2-12',E), + lookup_ht(E,k(A,B),D), + 'chr sbag_member'(C,D), + C=suspension(_,active,_,_,_), + !. +should_skip_to_next_id(_,_) :- + fail. +bulk_propagation(A,B,_) :- + nb_getval('$chr_store_multi_hash_chr_translate____max_occurrence___2-1',F), + lookup_ht(F,A,E), + 'chr sbag_member'(C,E), + C=suspension(_,active,_,_,D), + B>=D, + !, + skip_to_next_id(A,B). +bulk_propagation(A,B,C) :- + C=:=B+1, + !, + skip_to_next_id(A,B), + get_max_occurrence(A,D), + E is D+1, + bulk_propagation(A,C,E). +bulk_propagation(A,B,_) :- + nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-1',I), + lookup_ht(I,A,F), + 'chr sbag_member'(C,F), + C=suspension(_,active,_,_,_,D,_,_,E), + E=simplification, + D=:=B+1, + !, + skip_to_next_id(A,B), + get_max_occurrence(A,G), + H is G+1, + bulk_propagation(A,D,H). +bulk_propagation(A,B,C) :- + nb_getval('$chr_store_multi_hash_chr_translate____continuation_occurrence___3-12',I), + lookup_ht(I,k(A,B),F), + 'chr sbag_member'(D,F), + D=suspension(_,active,_,_,E), + E>B+1, + !, + G is min(C,E), + H is B+1, + bulk_propagation(A,H,G). +bulk_propagation(A,B,_) :- + skip_to_next_id(A,B), + get_max_occurrence(A,C), + D is C+1, + E is B+1, + bulk_propagation(A,E,D). +set_occurrence_code_id(A,B,C) :- + get_max_occurrence(A,D), + B>D, + !, + occurrence_code_id(A,B,C). +set_occurrence_code_id(A,B,C) :- + nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-12',R), + lookup_ht(R,k(A,B),H), + 'chr sbag_member'(D,H), + D=suspension(_,active,_,_,_,_,E,F,G), + ( + ( + ( + nb_getval('$chr_store_multi_hash_chr_translate____passive___2-12',T), + lookup_ht(T,k(E,F),J), + 'chr sbag_member'(I,J), + I=suspension(_,active,_,_,_), + !, + occurrence_code_id(A,B,C), + K is B+1, + set_occurrence_code_id(A,K,C) + ; + G=simplification, + !, + occurrence_code_id(A,B,C), + L is B+1, + set_occurrence_code_id(A,L,C) + ) + ; + G=propagation, + nb_getval('$chr_store_multi_hash_chr_translate____skip_to_next_id___2-12',S), + lookup_ht(S,k(A,B),N), + 'chr sbag_member'(M,N), + M=suspension(_,active,_,_,_), + !, + occurrence_code_id(A,B,C), + O is B+1, + P is C+1, + set_occurrence_code_id(A,O,P) + ) + ; + G=propagation, + !, + occurrence_code_id(A,B,C), + Q is B+1, + set_occurrence_code_id(A,Q,C) + ). +set_occurrence_code_id(A,B,C) :- + D=suspension(E,active,A,B,C), + 'chr gen_id'(E), + nb_getval('$chr_store_multi_hash_chr_translate____set_occurrence_code_id___3-12',F), + insert_ht(F,k(A,B),D). +occurrence_code_id(A,B,C) :- + D=suspension(E,active,A,B,C), + 'chr gen_id'(E), + nb_getval('$chr_store_multi_hash_chr_translate____occurrence_code_id___3-12',F), + insert_ht(F,k(A,B),D). +get_occurrence_code_id(A,B,C) :- + nb_getval('$chr_store_multi_hash_chr_translate____occurrence_code_id___3-12',G), + lookup_ht(G,k(A,B),F), + 'chr sbag_member'(D,F), + D=suspension(_,active,_,_,E), + !, + C=E. +get_occurrence_code_id(A,B,_) :- + ( B==0 -> + true + ; + format('no occurrence code for ~w! +',[A:B]) + ). +chr_constants(A,B) :- + C=suspension(D,active,_,A,B), + 'chr gen_id'(D), + nb_getval('$chr_store_global_ground_chr_translate____chr_constants___2',E), + F=[C|E], + b_setval('$chr_store_global_ground_chr_translate____chr_constants___2',F), + ( E=[G|_] -> + setarg(3,G,F) + ; + true + ), + nb_getval('$chr_store_multi_hash_chr_translate____chr_constants___2-1',H), + insert_ht(H,A,C). +get_chr_constants(A,B) :- + ground(A), + nb_getval('$chr_store_multi_hash_chr_translate____chr_constants___2-1',F), + lookup_ht(F,A,E), + 'chr sbag_member'(C,E), + C=suspension(_,active,_,_,D), + !, + B=D. +get_chr_constants(A,B) :- + chr_warning(internal,'No constants found for key ~w. +',[A]), + B=[]. +add_chr_constant(A,B) :- + nb_getval('$chr_store_multi_hash_chr_translate____chr_constants___2-1',L), + lookup_ht(L,A,E), + 'chr sbag_member'(C,E), + C=suspension(_,active,_,_,D), + !, + setarg(2,C,removed), + arg(3,C,G), + ( var(G) -> + nb_getval('$chr_store_global_ground_chr_translate____chr_constants___2',H), + H=[_|I], + b_setval('$chr_store_global_ground_chr_translate____chr_constants___2',I), + ( I=[J|_] -> + setarg(3,J,_) + ; + true + ) + ; + G=[_,_|I], + setarg(2,G,I), + ( I=[J|_] -> + setarg(3,J,G) + ; + true + ) + ), + nb_getval('$chr_store_multi_hash_chr_translate____chr_constants___2-1',K), + delete_ht(K,A,C), + sort([B|D],F), + chr_constants(A,F). +add_chr_constant(A,B) :- + chr_constants(A,[B]). +print_chr_constants :- + print_chr_constants___0__0(_). +print_chr_constants___0__0(A) :- + nb_getval('$chr_store_global_ground_chr_translate____chr_constants___2',B), + !, + A=suspension(C,not_stored_yet,_), + 'chr gen_id'(C), + print_chr_constants___0__0__0__1(B,A). +print_chr_constants___0__0__0__1([],A) :- + print_chr_constants___0__1(A). +print_chr_constants___0__0__0__1([D|E],A) :- + ( D=suspension(_,active,_,B,C) -> + format(' * chr_constants ~w : ~w. +',[B,C]), + print_chr_constants___0__0__0__1(E,A) + ; + print_chr_constants___0__0__0__1(E,A) + ). +print_chr_constants___0__0(A) :- + A=suspension(B,not_stored_yet,_), + 'chr gen_id'(B), + print_chr_constants___0__1(A). +print_chr_constants___0__1(A) :- + ( var(A) -> + true + ; + arg(2,A,F), + setarg(2,A,removed), + ( F==not_stored_yet -> + true + ; + arg(3,A,B), + ( var(B) -> + nb_getval('$chr_store_global_ground_chr_translate____print_chr_constants___0',C), + C=[_|D], + b_setval('$chr_store_global_ground_chr_translate____print_chr_constants___0',D), + ( D=[E|_] -> + setarg(3,E,_) + ; + true + ) + ; + B=[_,_|D], + setarg(2,B,D), + ( D=[E|_] -> + setarg(3,E,B) + ; + true + ) + ) + ) + ). +end_of_file. diff --git a/chr_translate_bootstrap1.pl b/chr_translate_bootstrap1.pl index 6e73fab..d9c856e 100644 --- a/chr_translate_bootstrap1.pl +++ b/chr_translate_bootstrap1.pl @@ -1,19 +1,22 @@ /* Generated by CHR bootstrap compiler From: chr_translate_bootstrap1.chr - Date: [77,111,110,32,77,97,121,32,32,49,32,49,50,58,50,49,58,51,51,32,50,48,48,54,10] + Date: Mon Jun 15 21:43:46 2009 + DO NOT EDIT. EDIT THE CHR FILE INSTEAD */ :-module(chr_translate_bootstrap1,[chr_translate/2]). :-use_module(chr_runtime). -:-style_check(-singleton). :-style_check(-discontiguous). -:-use_module(library(lists)). -:-use_module(hprolog). -:-use_module(library(assoc)). -:-use_module(pairlist). +:-use_module(chr_runtime). +:-style_check(-discontiguous). +:-use_module(chr_runtime). +:-style_check(-discontiguous). +:-use_module(library(lists),[append/3,member/2,permutation/2,reverse/2]). :-use_module(library(ordsets)). +:-use_module(hprolog). +:-use_module(pairlist). :-include(chr_op2). chr_translate(A,B) :- init_chr_pp_flags, @@ -27,14 +30,14 @@ chr_translate(A,B) :- set_constraint_indices(C,1), store_management_preds(C,G), constraints_code(C,F,H), - append_lists([E,G,H],B) + append([E,G,H],B) ), chr_clear. store_management_preds(A,B) :- generate_attach_detach_a_constraint_all(A,C), generate_attach_increment(D), generate_attr_unify_hook(E), - append_lists([C,D,E],B). + append([C,D,E],B). partition_clauses([],[],[],[]). partition_clauses([A|B],C,D,E) :- ( rule(A,F) -> @@ -75,7 +78,7 @@ partition_clauses([A|B],C,D,E) :- E=I ) ; - ( A=option(L,M) -> + ( A=(:-chr_option(L,M)) -> handle_option(L,M), C=G, D=H, @@ -88,12 +91,12 @@ partition_clauses([A|B],C,D,E) :- ), partition_clauses(B,G,H,I). is_declaration(A,B) :- - ( A=(:-C) -> - true + A=(:-C), + ( + C=..[chr_constraint,D] ; - A=C + C=..[chr_constraint,D] ), - C=..[constraints,D], conj2list(D,B). rule(A,B) :- A=(C@D), @@ -211,7 +214,7 @@ check_pragma(passive(A),B,C) :- check_pragma(A,B,C) :- A=unique(_,_), !, - format('CHR compiler WARNING: undocument pragma ~w in ~@. + format('CHR compiler WARNING: undocumented pragma ~w in ~@. ',[A,format_rule(B,C)]), format(' `--> Only use this pragma if you know what you are doing. ',[]). @@ -300,7 +303,7 @@ set_chr_pp_flags([A-B|C]) :- set_chr_pp_flag(A,B), set_chr_pp_flags(C). set_chr_pp_flag(A,B) :- - atom_concat('$chr_pp_',A,C), + atomic_concat('$chr_pp_',A,C), nb_setval(C,B). chr_pp_flag_definition(unique_analyse_optimise,[on,off]). chr_pp_flag_definition(check_unnecessary_active,[full,simplification,off]). @@ -311,7 +314,7 @@ chr_pp_flag_definition(guard_locks,[on,off]). chr_pp_flag_definition(check_attachments,[on,off]). chr_pp_flag_definition(debugable,[off,on]). chr_pp_flag(A,B) :- - atom_concat('$chr_pp_',A,C), + atomic_concat('$chr_pp_',A,C), nb_getval(C,D), ( D==[] -> chr_pp_flag_definition(A,[B|_]) @@ -328,7 +331,7 @@ generate_attach_detach_a_constraint_all([A|B],C) :- E=[] ), generate_attach_detach_a_constraint_all(B,F), - append_lists([D,E,F],C). + append([D,E,F],C). generate_attach_a_constraint(A,[B,C]) :- generate_attach_a_constraint_empty_list(A,B), get_max_constraint_index(D), @@ -359,13 +362,13 @@ generate_attach_a_constraint_t_p(A/B,C) :- or_pattern(K,L), get_max_constraint_index(M), make_attr(M,N,O,P), - nth(K,O,Q), - substitute(Q,O,[H|Q],R), + nth1(K,O,Q), + substitute_eq(Q,O,[H|Q],R), make_attr(M,N,R,S), - substitute(Q,O,[H],T), + substitute_eq(Q,O,[H],T), make_attr(M,U,T,V), - copy_term(O,W), - nth(K,W,[H]), + copy_term_nat(O,W), + nth1(K,W,[H]), chr_delete(W,[H],X), set_elems(X,[]), make_attr(M,L,W,Y), @@ -403,10 +406,10 @@ generate_detach_a_constraint_t_p(A/B,C) :- and_pattern(K,M), get_max_constraint_index(N), make_attr(N,O,P,Q), - nth(K,P,R), - substitute(R,P,[],S), + nth1(K,P,R), + substitute_eq(R,P,[],S), make_attr(N,T,S,U), - substitute(R,P,V,W), + substitute_eq(R,P,V,W), make_attr(N,O,W,X), get_target_module(Y), Z=((get_attr(F,Y,A1)->A1=Q,(O/\L=:=L->'chr sbag_del_element'(R,H,V),(V==[]->T is O/\M,(T==0->del_attr(F,Y);put_attr(F,Y,U));put_attr(F,Y,X));true);true),J), @@ -816,7 +819,7 @@ unique_analyse_optimise_main([A|B],C,D,[E|F]) :- J=ids(O,P), apply_unique_patterns_to_constraints(M,O,H,Q), apply_unique_patterns_to_constraints(N,P,H,R), - append_lists([Q,R,K],S), + append([Q,R,K],S), E=pragma(I,J,S,L), T is C+1, unique_analyse_optimise_main(B,T,H,F). @@ -839,9 +842,9 @@ apply_unique_pattern(A,B,C,D) :- ), D=unique(B,L). subsumes(A,B,C) :- - empty_assoc(D), + empty_ds(D), subsumes_aux(A,B,D,E), - assoc_to_list(E,F), + ds_to_list(E,F), build_unifier(F,C). subsumes_aux(A,B,C,D) :- ( compound(B), @@ -855,13 +858,13 @@ subsumes_aux(A,B,C,D) :- ) ; ( var(B), - get_assoc(A,C,G) -> + get_ds(A,C,G) -> G==B, D=C ) ; var(B), - put_assoc(A,C,B,D) + put_ds(A,C,B,D) ). subsumes_aux(0,_,_,A,A) :- !. @@ -885,11 +888,10 @@ discover_unique_pattern(A,B,C) :- term_variables(G,L), select_pragma_unique_variables(K,L,M), N=unique(G,M), - copy_term(N,C), - ( prolog_flag(verbose,O), - O==yes -> + copy_term_nat(N,C), + ( verbosity_on -> format('Found unique pattern ~w in rule ~d~@ -',[C,B,(F=yes(P)->write([58,32]),write(P);true)]) +',[C,B,(F=yes(O)->write([58,32]),write(O);true)]) ; true ). @@ -1108,10 +1110,10 @@ rest_heads_retrieval_and_matching_n([A|B],[C|D],E,F,G,H,[I,J|K],[L|M],N,O,P) :- ; get_constraint_index(S/T,C1), make_attr(A1,_,D1,Q), - nth(C1,D1,B1) + nth1(C1,D1,B1) ), different_from_other_susps(A,L,F,G,E1), - create_get_mutable(active,Z,F1), + create_get_mutable_ref(active,Z,F1), G1=('chr sbag_member'(L,B1),L=Y,F1,E1,W), ( member(unique(C,H1),E), check_unique_keys(H1,N) -> @@ -1137,7 +1139,7 @@ check_unique_keys([A|B],C) :- lookup_eq(C,A,_), check_unique_keys(B,C). different_from_other_susps(A,B,C,D,E) :- - ( bagof(F,G^(nth(G,C,H),\+A\=H,nth(G,D,I),F=(B\==I)),J) -> + ( bagof(F,G^(nth1(G,C,H),\+A\=H,nth1(G,D,I),F=(B\==I)),J) -> list2conj(J,E) ; E=true @@ -1166,7 +1168,7 @@ common_variables(A,B,C) :- gen_get_mod_constraints(A,B,C) :- get_target_module(D), ( A==[] -> - B=('chr global_term_ref_1'(E),get_attr(E,D,F),F=C) + B=('chr default_store'(E),get_attr(E,D,F),F=C) ; ( A=[G] -> H='chr via_1'(G,I) @@ -1331,7 +1333,7 @@ simpagation_head2_prelude(A,B,C,D/E,F,G,H) :- functor(B,U,V), get_constraint_index(U/V,W), make_attr(S,_,X,Q), - nth(W,X,T) + nth1(W,X,T) ), ( F==[0] -> gen_cond_allocation(I,J,D/E,K,Y) @@ -1373,7 +1375,7 @@ simpagation_head2_worker_body(A,B,C,D,E,F,G,H,I,J/K,L,M,N) :- head_info(B,Z,A1,_,_,B1), head_arg_matches(B1,T,C1,D1), E1=..[suspension,_,F1,_,_,_,_|A1], - create_get_mutable(active,F1,G1), + create_get_mutable_ref(active,F1,G1), H1=(O=E1,G1), ( ( @@ -1426,8 +1428,8 @@ simpagation_head2_worker_body(A,B,C,D,E,F,G,H,I,J/K,L,M,N) :- gen_state_cond_call(A,B,C,D,E) :- length(F,B), G=..[suspension,_,H,_,I,_,_|F], - create_get_mutable(active,H,J), - create_get_mutable(D,I,K), + create_get_mutable_ref(active,H,J), + create_get_mutable_ref(D,I,K), E=(A=G,J,K->'chr update_mutable'(inactive,H),C;true). simpagation_head2_worker_end(A,B,C/D,E,F,G) :- head_info(A,D,_,_,H,I), @@ -1492,7 +1494,7 @@ propagation_prelude(A,[B|C],D,E/F,G,H,I) :- functor(B,Y,Z), make_attr(W,_,A1,U), get_constraint_index(Y/Z,B1), - nth(B1,A1,X) + nth1(B1,A1,X) ), ( G==[0] -> gen_cond_allocation(J,K,E/F,L,C1) @@ -1521,7 +1523,7 @@ propagation_body(A,B,C,D,E,F/G,H,I,J) :- functor(A,_,S), gen_vars(S,T), U=..[suspension,_,V,_,_,_,_|T], - create_get_mutable(active,V,W), + create_get_mutable_ref(active,V,W), X=(Q=U,W), Y=[[Q|R]|M], build_head(F,G,H,Y,Z), @@ -1615,7 +1617,7 @@ propagation_accumulator([A|B],[C|D],E,F/G,H,I,J) :- head_arg_matches(T,N,U,V), W=..[suspension,_,X,_,_,_,_|R], different_from_other_susps(C,S,D,O,Y), - create_get_mutable(active,X,Z), + create_get_mutable_ref(active,X,Z), A1=(S=W,Z,Y,U), functor(A,B1,C1), passive_head_via(A,[C|D],[],V,D1,E1,F1), @@ -1626,7 +1628,7 @@ propagation_accumulator([A|B],[C|D],E,F/G,H,I,J) :- ; get_constraint_index(B1/C1,I1), make_attr(G1,_,J1,E1), - nth(I1,J1,H1) + nth1(I1,J1,H1) ), inc_id(H,K1), L1=[[S|P]|M], @@ -1733,7 +1735,7 @@ order_score_vars([A|B],C,D,E,F) :- G=E ), order_score_vars(B,C,D,G,F). -create_get_mutable(A,B,C) :- +create_get_mutable_ref(A,B,C) :- C=(B=mutable(A)). clean_clauses([],[]). clean_clauses([A|B],[C|D]) :- @@ -1841,13 +1843,13 @@ build_head(A,B,C,D,E) :- E=..[F|D]. buildName(A,B,C,D) :- atom_concat(A,/,E), - atom_concat(E,B,F), + atomic_concat(E,B,F), buildName_(C,F,D). buildName_([],A,A). buildName_([A|B],C,D) :- buildName_(B,C,E), atom_concat(E,'__',F), - atom_concat(F,A,D). + atomic_concat(F,A,D). vars_susp(A,B,C,D) :- length(B,A), append(B,[C],D). @@ -1884,7 +1886,20 @@ atom_concat_list([A],A) :- !. atom_concat_list([A|B],C) :- atom_concat_list(B,D), - atom_concat(A,D,C). + atomic_concat(A,D,C). +atomic_concat(A,B,C) :- + make_atom(A,D), + make_atom(B,E), + atom_concat(D,E,C). +make_atom(A,B) :- + ( atom(A) -> + B=A + ; + ( number(A) -> + number_codes(A,C), + atom_codes(B,C) + ) + ). set_elems([],_). set_elems([A|B],A) :- set_elems(B,A). @@ -1897,15 +1912,18 @@ select2(A,B,[C|D],[E|F],[C|G],[E|H]) :- pair_all_with([],_,[]). pair_all_with([A|B],C,[A-C|D]) :- pair_all_with(B,C,D). +verbosity_on :- + prolog_flag(verbose,A), + A==yes. 'attach_constraint/2'([],_). 'attach_constraint/2'([A|B],C) :- - ( get_attr(A,chr_translate_bootstrap1,L) -> - L=v(J,D,E,F,G,H,I), - ( J/\1=:=1 -> - put_attr(A,chr_translate_bootstrap1,v(J,[C|D],E,F,G,H,I)) + ( get_attr(A,chr_translate_bootstrap1,D) -> + D=v(E,F,G,H,I,J,K), + ( E/\1=:=1 -> + put_attr(A,chr_translate_bootstrap1,v(E,[C|F],G,H,I,J,K)) ; - K is J\/1, - put_attr(A,chr_translate_bootstrap1,v(K,[C],E,F,G,H,I)) + L is E\/1, + put_attr(A,chr_translate_bootstrap1,v(L,[C],G,H,I,J,K)) ) ; put_attr(A,chr_translate_bootstrap1,v(1,[C],[],[],[],[],[])) @@ -1913,19 +1931,19 @@ pair_all_with([A|B],C,[A-C|D]) :- 'attach_constraint/2'(B,C). 'detach_constraint/2'([],_). 'detach_constraint/2'([A|B],C) :- - ( get_attr(A,chr_translate_bootstrap1,M) -> - M=v(J,D,E,F,G,H,I), - ( J/\1=:=1 -> - 'chr sbag_del_element'(D,C,L), + ( get_attr(A,chr_translate_bootstrap1,D) -> + D=v(E,F,G,H,I,J,K), + ( E/\1=:=1 -> + 'chr sbag_del_element'(F,C,L), ( L==[] -> - K is J/\ -2, - ( K==0 -> + M is E/\ -2, + ( M==0 -> del_attr(A,chr_translate_bootstrap1) ; - put_attr(A,chr_translate_bootstrap1,v(K,[],E,F,G,H,I)) + put_attr(A,chr_translate_bootstrap1,v(M,[],G,H,I,J,K)) ) ; - put_attr(A,chr_translate_bootstrap1,v(J,L,E,F,G,H,I)) + put_attr(A,chr_translate_bootstrap1,v(E,L,G,H,I,J,K)) ) ; true @@ -1936,13 +1954,13 @@ pair_all_with([A|B],C,[A-C|D]) :- 'detach_constraint/2'(B,C). 'attach_constraint_count/1'([],_). 'attach_constraint_count/1'([A|B],C) :- - ( get_attr(A,chr_translate_bootstrap1,L) -> - L=v(J,D,E,F,G,H,I), - ( J/\2=:=2 -> - put_attr(A,chr_translate_bootstrap1,v(J,D,[C|E],F,G,H,I)) + ( get_attr(A,chr_translate_bootstrap1,D) -> + D=v(E,F,G,H,I,J,K), + ( E/\2=:=2 -> + put_attr(A,chr_translate_bootstrap1,v(E,F,[C|G],H,I,J,K)) ; - K is J\/2, - put_attr(A,chr_translate_bootstrap1,v(K,D,[C],F,G,H,I)) + L is E\/2, + put_attr(A,chr_translate_bootstrap1,v(L,F,[C],H,I,J,K)) ) ; put_attr(A,chr_translate_bootstrap1,v(2,[],[C],[],[],[],[])) @@ -1950,19 +1968,19 @@ pair_all_with([A|B],C,[A-C|D]) :- 'attach_constraint_count/1'(B,C). 'detach_constraint_count/1'([],_). 'detach_constraint_count/1'([A|B],C) :- - ( get_attr(A,chr_translate_bootstrap1,M) -> - M=v(J,D,E,F,G,H,I), - ( J/\2=:=2 -> - 'chr sbag_del_element'(E,C,L), + ( get_attr(A,chr_translate_bootstrap1,D) -> + D=v(E,F,G,H,I,J,K), + ( E/\2=:=2 -> + 'chr sbag_del_element'(G,C,L), ( L==[] -> - K is J/\ -3, - ( K==0 -> + M is E/\ -3, + ( M==0 -> del_attr(A,chr_translate_bootstrap1) ; - put_attr(A,chr_translate_bootstrap1,v(K,D,[],F,G,H,I)) + put_attr(A,chr_translate_bootstrap1,v(M,F,[],H,I,J,K)) ) ; - put_attr(A,chr_translate_bootstrap1,v(J,D,L,F,G,H,I)) + put_attr(A,chr_translate_bootstrap1,v(E,F,L,H,I,J,K)) ) ; true @@ -1973,13 +1991,13 @@ pair_all_with([A|B],C,[A-C|D]) :- 'detach_constraint_count/1'(B,C). 'attach_constraint_index/2'([],_). 'attach_constraint_index/2'([A|B],C) :- - ( get_attr(A,chr_translate_bootstrap1,L) -> - L=v(J,D,E,F,G,H,I), - ( J/\4=:=4 -> - put_attr(A,chr_translate_bootstrap1,v(J,D,E,[C|F],G,H,I)) + ( get_attr(A,chr_translate_bootstrap1,D) -> + D=v(E,F,G,H,I,J,K), + ( E/\4=:=4 -> + put_attr(A,chr_translate_bootstrap1,v(E,F,G,[C|H],I,J,K)) ; - K is J\/4, - put_attr(A,chr_translate_bootstrap1,v(K,D,E,[C],G,H,I)) + L is E\/4, + put_attr(A,chr_translate_bootstrap1,v(L,F,G,[C],I,J,K)) ) ; put_attr(A,chr_translate_bootstrap1,v(4,[],[],[C],[],[],[])) @@ -1987,19 +2005,19 @@ pair_all_with([A|B],C,[A-C|D]) :- 'attach_constraint_index/2'(B,C). 'detach_constraint_index/2'([],_). 'detach_constraint_index/2'([A|B],C) :- - ( get_attr(A,chr_translate_bootstrap1,M) -> - M=v(J,D,E,F,G,H,I), - ( J/\4=:=4 -> - 'chr sbag_del_element'(F,C,L), + ( get_attr(A,chr_translate_bootstrap1,D) -> + D=v(E,F,G,H,I,J,K), + ( E/\4=:=4 -> + 'chr sbag_del_element'(H,C,L), ( L==[] -> - K is J/\ -5, - ( K==0 -> + M is E/\ -5, + ( M==0 -> del_attr(A,chr_translate_bootstrap1) ; - put_attr(A,chr_translate_bootstrap1,v(K,D,E,[],G,H,I)) + put_attr(A,chr_translate_bootstrap1,v(M,F,G,[],I,J,K)) ) ; - put_attr(A,chr_translate_bootstrap1,v(J,D,E,L,G,H,I)) + put_attr(A,chr_translate_bootstrap1,v(E,F,G,L,I,J,K)) ) ; true @@ -2010,13 +2028,13 @@ pair_all_with([A|B],C,[A-C|D]) :- 'detach_constraint_index/2'(B,C). 'attach_max_constraint_index/1'([],_). 'attach_max_constraint_index/1'([A|B],C) :- - ( get_attr(A,chr_translate_bootstrap1,L) -> - L=v(J,D,E,F,G,H,I), - ( J/\8=:=8 -> - put_attr(A,chr_translate_bootstrap1,v(J,D,E,F,[C|G],H,I)) + ( get_attr(A,chr_translate_bootstrap1,D) -> + D=v(E,F,G,H,I,J,K), + ( E/\8=:=8 -> + put_attr(A,chr_translate_bootstrap1,v(E,F,G,H,[C|I],J,K)) ; - K is J\/8, - put_attr(A,chr_translate_bootstrap1,v(K,D,E,F,[C],H,I)) + L is E\/8, + put_attr(A,chr_translate_bootstrap1,v(L,F,G,H,[C],J,K)) ) ; put_attr(A,chr_translate_bootstrap1,v(8,[],[],[],[C],[],[])) @@ -2024,19 +2042,19 @@ pair_all_with([A|B],C,[A-C|D]) :- 'attach_max_constraint_index/1'(B,C). 'detach_max_constraint_index/1'([],_). 'detach_max_constraint_index/1'([A|B],C) :- - ( get_attr(A,chr_translate_bootstrap1,M) -> - M=v(J,D,E,F,G,H,I), - ( J/\8=:=8 -> - 'chr sbag_del_element'(G,C,L), + ( get_attr(A,chr_translate_bootstrap1,D) -> + D=v(E,F,G,H,I,J,K), + ( E/\8=:=8 -> + 'chr sbag_del_element'(I,C,L), ( L==[] -> - K is J/\ -9, - ( K==0 -> + M is E/\ -9, + ( M==0 -> del_attr(A,chr_translate_bootstrap1) ; - put_attr(A,chr_translate_bootstrap1,v(K,D,E,F,[],H,I)) + put_attr(A,chr_translate_bootstrap1,v(M,F,G,H,[],J,K)) ) ; - put_attr(A,chr_translate_bootstrap1,v(J,D,E,F,L,H,I)) + put_attr(A,chr_translate_bootstrap1,v(E,F,G,H,L,J,K)) ) ; true @@ -2047,13 +2065,13 @@ pair_all_with([A|B],C,[A-C|D]) :- 'detach_max_constraint_index/1'(B,C). 'attach_target_module/1'([],_). 'attach_target_module/1'([A|B],C) :- - ( get_attr(A,chr_translate_bootstrap1,L) -> - L=v(J,D,E,F,G,H,I), - ( J/\16=:=16 -> - put_attr(A,chr_translate_bootstrap1,v(J,D,E,F,G,[C|H],I)) + ( get_attr(A,chr_translate_bootstrap1,D) -> + D=v(E,F,G,H,I,J,K), + ( E/\16=:=16 -> + put_attr(A,chr_translate_bootstrap1,v(E,F,G,H,I,[C|J],K)) ; - K is J\/16, - put_attr(A,chr_translate_bootstrap1,v(K,D,E,F,G,[C],I)) + L is E\/16, + put_attr(A,chr_translate_bootstrap1,v(L,F,G,H,I,[C],K)) ) ; put_attr(A,chr_translate_bootstrap1,v(16,[],[],[],[],[C],[])) @@ -2061,19 +2079,19 @@ pair_all_with([A|B],C,[A-C|D]) :- 'attach_target_module/1'(B,C). 'detach_target_module/1'([],_). 'detach_target_module/1'([A|B],C) :- - ( get_attr(A,chr_translate_bootstrap1,M) -> - M=v(J,D,E,F,G,H,I), - ( J/\16=:=16 -> - 'chr sbag_del_element'(H,C,L), + ( get_attr(A,chr_translate_bootstrap1,D) -> + D=v(E,F,G,H,I,J,K), + ( E/\16=:=16 -> + 'chr sbag_del_element'(J,C,L), ( L==[] -> - K is J/\ -17, - ( K==0 -> + M is E/\ -17, + ( M==0 -> del_attr(A,chr_translate_bootstrap1) ; - put_attr(A,chr_translate_bootstrap1,v(K,D,E,F,G,[],I)) + put_attr(A,chr_translate_bootstrap1,v(M,F,G,H,I,[],K)) ) ; - put_attr(A,chr_translate_bootstrap1,v(J,D,E,F,G,L,I)) + put_attr(A,chr_translate_bootstrap1,v(E,F,G,H,I,L,K)) ) ; true @@ -2084,13 +2102,13 @@ pair_all_with([A|B],C,[A-C|D]) :- 'detach_target_module/1'(B,C). 'attach_attached/2'([],_). 'attach_attached/2'([A|B],C) :- - ( get_attr(A,chr_translate_bootstrap1,L) -> - L=v(J,D,E,F,G,H,I), - ( J/\32=:=32 -> - put_attr(A,chr_translate_bootstrap1,v(J,D,E,F,G,H,[C|I])) + ( get_attr(A,chr_translate_bootstrap1,D) -> + D=v(E,F,G,H,I,J,K), + ( E/\32=:=32 -> + put_attr(A,chr_translate_bootstrap1,v(E,F,G,H,I,J,[C|K])) ; - K is J\/32, - put_attr(A,chr_translate_bootstrap1,v(K,D,E,F,G,H,[C])) + L is E\/32, + put_attr(A,chr_translate_bootstrap1,v(L,F,G,H,I,J,[C])) ) ; put_attr(A,chr_translate_bootstrap1,v(32,[],[],[],[],[],[C])) @@ -2098,19 +2116,19 @@ pair_all_with([A|B],C,[A-C|D]) :- 'attach_attached/2'(B,C). 'detach_attached/2'([],_). 'detach_attached/2'([A|B],C) :- - ( get_attr(A,chr_translate_bootstrap1,M) -> - M=v(J,D,E,F,G,H,I), - ( J/\32=:=32 -> - 'chr sbag_del_element'(I,C,L), + ( get_attr(A,chr_translate_bootstrap1,D) -> + D=v(E,F,G,H,I,J,K), + ( E/\32=:=32 -> + 'chr sbag_del_element'(K,C,L), ( L==[] -> - K is J/\ -33, - ( K==0 -> + M is E/\ -33, + ( M==0 -> del_attr(A,chr_translate_bootstrap1) ; - put_attr(A,chr_translate_bootstrap1,v(K,D,E,F,G,H,[])) + put_attr(A,chr_translate_bootstrap1,v(M,F,G,H,I,J,[])) ) ; - put_attr(A,chr_translate_bootstrap1,v(J,D,E,F,G,H,L)) + put_attr(A,chr_translate_bootstrap1,v(E,F,G,H,I,J,L)) ) ; true @@ -2120,77 +2138,77 @@ pair_all_with([A|B],C,[A-C|D]) :- ), 'detach_attached/2'(B,C). attach_increment([],_). -attach_increment([O|P],v(G,A,B,C,D,E,F)) :- - 'chr not_locked'(O), - ( get_attr(O,chr_translate_bootstrap1,D1) -> - D1=v(N,H,I,J,K,L,M), - sort(H,Q), - 'chr merge_attributes'(A,Q,R), - sort(I,S), - 'chr merge_attributes'(B,S,T), - sort(J,U), - 'chr merge_attributes'(C,U,V), - sort(K,W), - 'chr merge_attributes'(D,W,X), - sort(L,Y), - 'chr merge_attributes'(E,Y,Z), - sort(M,A1), - 'chr merge_attributes'(F,A1,B1), - C1 is G\/N, - put_attr(O,chr_translate_bootstrap1,v(C1,R,T,V,X,Z,B1)) +attach_increment([A|B],v(C,D,E,F,G,H,I)) :- + 'chr not_locked'(A), + ( get_attr(A,chr_translate_bootstrap1,J) -> + J=v(K,L,M,N,O,P,Q), + sort(L,R), + 'chr merge_attributes'(D,R,S), + sort(M,T), + 'chr merge_attributes'(E,T,U), + sort(N,V), + 'chr merge_attributes'(F,V,W), + sort(O,X), + 'chr merge_attributes'(G,X,Y), + sort(P,Z), + 'chr merge_attributes'(H,Z,A1), + sort(Q,B1), + 'chr merge_attributes'(I,B1,C1), + D1 is C\/K, + put_attr(A,chr_translate_bootstrap1,v(D1,S,U,W,Y,A1,C1)) ; - put_attr(O,chr_translate_bootstrap1,v(G,A,B,C,D,E,F)) + put_attr(A,chr_translate_bootstrap1,v(C,D,E,F,G,H,I)) ), - attach_increment(P,v(G,A,B,C,D,E,F)). -chr_translate_bootstrap1:attr_unify_hook(v(G,A,B,C,D,E,F),H1) :- - sort(A,O), - sort(B,P), - sort(C,Q), - sort(D,R), - sort(E,S), - sort(F,T), - ( var(H1) -> - ( get_attr(H1,chr_translate_bootstrap1,I1) -> - I1=v(N,H,I,J,K,L,M), - sort(H,U), - 'chr merge_attributes'(O,U,V), - sort(I,W), - 'chr merge_attributes'(P,W,X), - sort(J,Y), - 'chr merge_attributes'(Q,Y,Z), - sort(K,A1), - 'chr merge_attributes'(R,A1,B1), - sort(L,C1), - 'chr merge_attributes'(S,C1,D1), - sort(M,E1), - 'chr merge_attributes'(T,E1,F1), - G1 is G\/N, - put_attr(H1,chr_translate_bootstrap1,v(G1,V,X,Z,B1,D1,F1)), - 'chr run_suspensions_loop'([V,X,Z,B1,D1,F1]) + attach_increment(B,v(C,D,E,F,G,H,I)). +chr_translate_bootstrap1:attr_unify_hook(v(A,B,C,D,E,F,G),H) :- + sort(B,I), + sort(C,J), + sort(D,K), + sort(E,L), + sort(F,M), + sort(G,N), + ( var(H) -> + ( get_attr(H,chr_translate_bootstrap1,O) -> + O=v(P,Q,R,S,T,U,V), + sort(Q,W), + 'chr merge_attributes'(I,W,X), + sort(R,Y), + 'chr merge_attributes'(J,Y,Z), + sort(S,A1), + 'chr merge_attributes'(K,A1,B1), + sort(T,C1), + 'chr merge_attributes'(L,C1,D1), + sort(U,E1), + 'chr merge_attributes'(M,E1,F1), + sort(V,G1), + 'chr merge_attributes'(N,G1,H1), + I1 is A\/P, + put_attr(H,chr_translate_bootstrap1,v(I1,X,Z,B1,D1,F1,H1)), + 'chr run_suspensions_loop'([X,Z,B1,D1,F1,H1]) ; - put_attr(H1,chr_translate_bootstrap1,v(G,O,P,Q,R,S,T)), - 'chr run_suspensions_loop'([O,P,Q,R,S,T]) + put_attr(H,chr_translate_bootstrap1,v(A,I,J,K,L,M,N)), + 'chr run_suspensions_loop'([I,J,K,L,M,N]) ) ; - ( compound(H1) -> - term_variables(H1,J1), - attach_increment(J1,v(G,O,P,Q,R,S,T)) + ( compound(H) -> + term_variables(H,J1), + attach_increment(J1,v(A,I,J,K,L,M,N)) ; true ), - 'chr run_suspensions_loop'([O,P,Q,R,S,T]) + 'chr run_suspensions_loop'([I,J,K,L,M,N]) ). constraint(A,B) :- 'constraint/2__0'(A,B,_). 'constraint/2__0'(A,B,C) :- - 'chr via_1'(A,E), - get_attr(E,chr_translate_bootstrap1,F), - F=v(K,J,_,_,_,_,_), - K/\1=:=1, - ( 'chr sbag_member'(D,J), - D=suspension(_,I,_,_,_,_,G,H), + 'chr via_1'(A,D), + get_attr(D,chr_translate_bootstrap1,E), + E=v(F,G,_,_,_,_,_), + F/\1=:=1, + ( 'chr sbag_member'(H,G), + H=suspension(_,I,_,_,_,_,J,K), I=mutable(active), - G==A -> + J==A -> true ), !, @@ -2200,16 +2218,16 @@ constraint(A,B) :- 'chr remove_constraint_internal'(C,L), 'detach_constraint/2'(L,C) ), - B=H. + B=K. 'constraint/2__0'(A,B,C) :- - 'chr via_1'(B,E), - get_attr(E,chr_translate_bootstrap1,F), - F=v(K,J,_,_,_,_,_), - K/\1=:=1, - 'chr sbag_member'(D,J), - D=suspension(_,I,_,_,_,_,G,H), + 'chr via_1'(B,D), + get_attr(D,chr_translate_bootstrap1,E), + E=v(F,G,_,_,_,_,_), + F/\1=:=1, + 'chr sbag_member'(H,G), + H=suspension(_,I,_,_,_,_,J,K), I=mutable(active), - H==B, + K==B, !, ( var(C) -> true @@ -2217,7 +2235,7 @@ constraint(A,B) :- 'chr remove_constraint_internal'(C,L), 'detach_constraint/2'(L,C) ), - A=G. + A=J. 'constraint/2__0'(A,B,C) :- ( var(C) -> 'chr insert_constraint_internal'(D,C,chr_translate_bootstrap1:'constraint/2__0'(A,B,C),constraint,[A,B]) @@ -2228,13 +2246,13 @@ constraint(A,B) :- constraint_count(A) :- 'constraint_count/1__0'(A,_). 'constraint_count/1__0'(A,B) :- - 'chr global_term_ref_1'(D), - get_attr(D,chr_translate_bootstrap1,E), - E=v(I,_,H,_,_,_,_), - I/\2=:=2, - 'chr sbag_member'(C,H), - C=suspension(_,G,_,_,_,_,F), - G=mutable(active), + 'chr default_store'(C), + get_attr(C,chr_translate_bootstrap1,D), + D=v(E,_,F,_,_,_,_), + E/\2=:=2, + 'chr sbag_member'(G,F), + G=suspension(_,H,_,_,_,_,I), + H=mutable(active), !, ( var(B) -> true @@ -2242,7 +2260,7 @@ constraint_count(A) :- 'chr remove_constraint_internal'(B,J), 'detach_constraint_count/1'(J,B) ), - A=F. + A=I. 'constraint_count/1__0'(A,B) :- ( var(B) -> 'chr insert_constraint_internal'(C,B,chr_translate_bootstrap1:'constraint_count/1__0'(A,B),constraint_count,[A]) @@ -2262,16 +2280,16 @@ constraint_index(A,B) :- get_constraint_index(A,B) :- 'get_constraint_index/2__0'(A,B,_). 'get_constraint_index/2__0'(A,B,_) :- - 'chr via_1'(A,D), - get_attr(D,chr_translate_bootstrap1,E), - E=v(J,_,_,I,_,_,_), - J/\4=:=4, - 'chr sbag_member'(C,I), - C=suspension(_,H,_,_,_,_,F,G), + 'chr via_1'(A,C), + get_attr(C,chr_translate_bootstrap1,D), + D=v(E,_,_,F,_,_,_), + E/\4=:=4, + 'chr sbag_member'(G,F), + G=suspension(_,H,_,_,_,_,I,J), H=mutable(active), - F==A, + I==A, !, - B=G. + B=J. 'get_constraint_index/2__0'(_,_,_) :- !, fail. @@ -2287,15 +2305,15 @@ max_constraint_index(A) :- get_max_constraint_index(A) :- 'get_max_constraint_index/1__0'(A,_). 'get_max_constraint_index/1__0'(A,_) :- - 'chr global_term_ref_1'(C), - get_attr(C,chr_translate_bootstrap1,D), - D=v(H,_,_,_,G,_,_), - H/\8=:=8, - 'chr sbag_member'(B,G), - B=suspension(_,F,_,_,_,_,E), - F=mutable(active), + 'chr default_store'(B), + get_attr(B,chr_translate_bootstrap1,C), + C=v(D,_,_,_,E,_,_), + D/\8=:=8, + 'chr sbag_member'(F,E), + F=suspension(_,G,_,_,_,_,H), + G=mutable(active), !, - A=E. + A=H. 'get_max_constraint_index/1__0'(_,_) :- !, fail. @@ -2311,30 +2329,30 @@ target_module(A) :- get_target_module(A) :- 'get_target_module/1__0'(A,_). 'get_target_module/1__0'(A,_) :- - 'chr global_term_ref_1'(C), - get_attr(C,chr_translate_bootstrap1,D), - D=v(H,_,_,_,_,G,_), - H/\16=:=16, - 'chr sbag_member'(B,G), - B=suspension(_,F,_,_,_,_,E), - F=mutable(active), + 'chr default_store'(B), + get_attr(B,chr_translate_bootstrap1,C), + C=v(D,_,_,_,_,E,_), + D/\16=:=16, + 'chr sbag_member'(F,E), + F=suspension(_,G,_,_,_,_,H), + G=mutable(active), !, - A=E. + A=H. 'get_target_module/1__0'(A,_) :- !, A=user. attached(A,B) :- 'attached/2__0'(A,B,_). 'attached/2__0'(A,_,B) :- - 'chr via_1'(A,D), - get_attr(D,chr_translate_bootstrap1,E), - E=v(J,_,_,_,_,_,I), - J/\32=:=32, - 'chr sbag_member'(C,I), - C=suspension(_,H,_,_,_,_,F,G), + 'chr via_1'(A,C), + get_attr(C,chr_translate_bootstrap1,D), + D=v(E,_,_,_,_,_,F), + E/\32=:=32, + 'chr sbag_member'(G,F), + G=suspension(_,H,_,_,_,_,I,J), H=mutable(active), - F==A, - G==yes, + I==A, + J==yes, !, ( var(B) -> true @@ -2346,26 +2364,26 @@ attached(A,B) :- B==yes, 'chr via_1'(A,D), get_attr(D,chr_translate_bootstrap1,E), - E=v(G,_,_,_,_,_,F), - G/\32=:=32, + E=v(F,_,_,_,_,_,G), + F/\32=:=32, !, ( var(C) -> 'chr allocate_constraint'(chr_translate_bootstrap1:'attached/2__0'(A,B,C),C,attached,[A,B]) ; true ), - 'attached/2__0__0'(F,A,B,C). + 'attached/2__0__0'(G,A,B,C). 'attached/2__0__0'([],A,B,C) :- 'attached/2__1'(A,B,C). -'attached/2__0__0'([D|E],A,B,C) :- - ( D=suspension(_,G,_,_,_,_,F,_), - G=mutable(active), - F==A -> - 'chr remove_constraint_internal'(D,H), - 'detach_attached/2'(H,D), - 'attached/2__0__0'(E,A,B,C) +'attached/2__0__0'([A|B],C,D,E) :- + ( A=suspension(_,F,_,_,_,_,G,_), + F=mutable(active), + G==C -> + 'chr remove_constraint_internal'(A,H), + 'detach_attached/2'(H,A), + 'attached/2__0__0'(B,C,D,E) ; - 'attached/2__0__0'(E,A,B,C) + 'attached/2__0__0'(B,C,D,E) ). 'attached/2__0'(A,B,C) :- ( var(C) -> @@ -2375,15 +2393,15 @@ attached(A,B) :- ), 'attached/2__1'(A,B,C). 'attached/2__1'(A,_,B) :- - 'chr via_1'(A,D), - get_attr(D,chr_translate_bootstrap1,E), - E=v(J,_,_,_,_,_,I), - J/\32=:=32, - 'chr sbag_member'(C,I), - C=suspension(_,H,_,_,_,_,F,G), + 'chr via_1'(A,C), + get_attr(C,chr_translate_bootstrap1,D), + D=v(E,_,_,_,_,_,F), + E/\32=:=32, + 'chr sbag_member'(G,F), + G=suspension(_,H,_,_,_,_,I,J), H=mutable(active), - F==A, - G==no, + I==A, + J==no, !, ( var(B) -> true @@ -2395,35 +2413,35 @@ attached(A,B) :- B==no, 'chr via_1'(A,D), get_attr(D,chr_translate_bootstrap1,E), - E=v(G,_,_,_,_,_,F), - G/\32=:=32, + E=v(F,_,_,_,_,_,G), + F/\32=:=32, !, - 'attached/2__1__0'(F,A,B,C). + 'attached/2__1__0'(G,A,B,C). 'attached/2__1__0'([],A,B,C) :- 'attached/2__2'(A,B,C). -'attached/2__1__0'([D|E],A,B,C) :- - ( D=suspension(_,G,_,_,_,_,F,_), - G=mutable(active), - F==A -> - 'chr remove_constraint_internal'(D,H), - 'detach_attached/2'(H,D), - 'attached/2__1__0'(E,A,B,C) +'attached/2__1__0'([A|B],C,D,E) :- + ( A=suspension(_,F,_,_,_,_,G,_), + F=mutable(active), + G==C -> + 'chr remove_constraint_internal'(A,H), + 'detach_attached/2'(H,A), + 'attached/2__1__0'(B,C,D,E) ; - 'attached/2__1__0'(E,A,B,C) + 'attached/2__1__0'(B,C,D,E) ). 'attached/2__1'(A,B,C) :- 'attached/2__2'(A,B,C). 'attached/2__2'(A,B,C) :- B==maybe, - 'chr via_1'(A,E), - get_attr(E,chr_translate_bootstrap1,F), - F=v(K,_,_,_,_,_,J), - K/\32=:=32, - ( 'chr sbag_member'(D,J), - D=suspension(_,I,_,_,_,_,G,H), + 'chr via_1'(A,D), + get_attr(D,chr_translate_bootstrap1,E), + E=v(F,_,_,_,_,_,G), + F/\32=:=32, + ( 'chr sbag_member'(H,G), + H=suspension(_,I,_,_,_,_,J,K), I=mutable(active), - G==A, - H==maybe -> + J==A, + K==maybe -> true ), !, @@ -2439,16 +2457,16 @@ attached(A,B) :- is_attached(A) :- 'is_attached/1__0'(A,_). 'is_attached/1__0'(A,_) :- - 'chr via_1'(A,C), - get_attr(C,chr_translate_bootstrap1,D), - D=v(I,_,_,_,_,_,H), - I/\32=:=32, - 'chr sbag_member'(B,H), - B=suspension(_,G,_,_,_,_,E,F), + 'chr via_1'(A,B), + get_attr(B,chr_translate_bootstrap1,C), + C=v(D,_,_,_,_,_,E), + D/\32=:=32, + 'chr sbag_member'(F,E), + F=suspension(_,G,_,_,_,_,H,I), G=mutable(active), - E==A, + H==A, !, - ( F==no -> + ( I==no -> fail ; true @@ -2458,27 +2476,27 @@ is_attached(A) :- chr_clear :- 'chr_clear/0__0'(_). 'chr_clear/0__0'(A) :- - 'chr global_term_ref_1'(B), + 'chr default_store'(B), get_attr(B,chr_translate_bootstrap1,C), - C=v(E,D,_,_,_,_,_), - E/\1=:=1, + C=v(D,E,_,_,_,_,_), + D/\1=:=1, !, ( var(A) -> 'chr allocate_constraint'(chr_translate_bootstrap1:'chr_clear/0__0'(A),A,chr_clear,[]) ; true ), - 'chr_clear/0__0__0'(D,A). + 'chr_clear/0__0__0'(E,A). 'chr_clear/0__0__0'([],A) :- 'chr_clear/0__1'(A). -'chr_clear/0__0__0'([B|C],A) :- - ( B=suspension(_,D,_,_,_,_,_,_), +'chr_clear/0__0__0'([A|B],C) :- + ( A=suspension(_,D,_,_,_,_,_,_), D=mutable(active) -> - 'chr remove_constraint_internal'(B,E), - 'detach_constraint/2'(E,B), - 'chr_clear/0__0__0'(C,A) + 'chr remove_constraint_internal'(A,E), + 'detach_constraint/2'(E,A), + 'chr_clear/0__0__0'(B,C) ; - 'chr_clear/0__0__0'(C,A) + 'chr_clear/0__0__0'(B,C) ). 'chr_clear/0__0'(A) :- ( var(A) -> @@ -2488,102 +2506,102 @@ chr_clear :- ), 'chr_clear/0__1'(A). 'chr_clear/0__1'(A) :- - 'chr global_term_ref_1'(B), + 'chr default_store'(B), get_attr(B,chr_translate_bootstrap1,C), - C=v(E,_,D,_,_,_,_), - E/\2=:=2, + C=v(D,_,E,_,_,_,_), + D/\2=:=2, !, - 'chr_clear/0__1__0'(D,A). + 'chr_clear/0__1__0'(E,A). 'chr_clear/0__1__0'([],A) :- 'chr_clear/0__2'(A). -'chr_clear/0__1__0'([B|C],A) :- - ( B=suspension(_,D,_,_,_,_,_), +'chr_clear/0__1__0'([A|B],C) :- + ( A=suspension(_,D,_,_,_,_,_), D=mutable(active) -> - 'chr remove_constraint_internal'(B,E), - 'detach_constraint_count/1'(E,B), - 'chr_clear/0__1__0'(C,A) + 'chr remove_constraint_internal'(A,E), + 'detach_constraint_count/1'(E,A), + 'chr_clear/0__1__0'(B,C) ; - 'chr_clear/0__1__0'(C,A) + 'chr_clear/0__1__0'(B,C) ). 'chr_clear/0__1'(A) :- 'chr_clear/0__2'(A). 'chr_clear/0__2'(A) :- - 'chr global_term_ref_1'(B), + 'chr default_store'(B), get_attr(B,chr_translate_bootstrap1,C), - C=v(E,_,_,D,_,_,_), - E/\4=:=4, + C=v(D,_,_,E,_,_,_), + D/\4=:=4, !, - 'chr_clear/0__2__0'(D,A). + 'chr_clear/0__2__0'(E,A). 'chr_clear/0__2__0'([],A) :- 'chr_clear/0__3'(A). -'chr_clear/0__2__0'([B|C],A) :- - ( B=suspension(_,D,_,_,_,_,_,_), +'chr_clear/0__2__0'([A|B],C) :- + ( A=suspension(_,D,_,_,_,_,_,_), D=mutable(active) -> - 'chr remove_constraint_internal'(B,E), - 'detach_constraint_index/2'(E,B), - 'chr_clear/0__2__0'(C,A) + 'chr remove_constraint_internal'(A,E), + 'detach_constraint_index/2'(E,A), + 'chr_clear/0__2__0'(B,C) ; - 'chr_clear/0__2__0'(C,A) + 'chr_clear/0__2__0'(B,C) ). 'chr_clear/0__2'(A) :- 'chr_clear/0__3'(A). 'chr_clear/0__3'(A) :- - 'chr global_term_ref_1'(B), + 'chr default_store'(B), get_attr(B,chr_translate_bootstrap1,C), - C=v(E,_,_,_,D,_,_), - E/\8=:=8, + C=v(D,_,_,_,E,_,_), + D/\8=:=8, !, - 'chr_clear/0__3__0'(D,A). + 'chr_clear/0__3__0'(E,A). 'chr_clear/0__3__0'([],A) :- 'chr_clear/0__4'(A). -'chr_clear/0__3__0'([B|C],A) :- - ( B=suspension(_,D,_,_,_,_,_), +'chr_clear/0__3__0'([A|B],C) :- + ( A=suspension(_,D,_,_,_,_,_), D=mutable(active) -> - 'chr remove_constraint_internal'(B,E), - 'detach_max_constraint_index/1'(E,B), - 'chr_clear/0__3__0'(C,A) + 'chr remove_constraint_internal'(A,E), + 'detach_max_constraint_index/1'(E,A), + 'chr_clear/0__3__0'(B,C) ; - 'chr_clear/0__3__0'(C,A) + 'chr_clear/0__3__0'(B,C) ). 'chr_clear/0__3'(A) :- 'chr_clear/0__4'(A). 'chr_clear/0__4'(A) :- - 'chr global_term_ref_1'(B), + 'chr default_store'(B), get_attr(B,chr_translate_bootstrap1,C), - C=v(E,_,_,_,_,D,_), - E/\16=:=16, + C=v(D,_,_,_,_,E,_), + D/\16=:=16, !, - 'chr_clear/0__4__0'(D,A). + 'chr_clear/0__4__0'(E,A). 'chr_clear/0__4__0'([],A) :- 'chr_clear/0__5'(A). -'chr_clear/0__4__0'([B|C],A) :- - ( B=suspension(_,D,_,_,_,_,_), +'chr_clear/0__4__0'([A|B],C) :- + ( A=suspension(_,D,_,_,_,_,_), D=mutable(active) -> - 'chr remove_constraint_internal'(B,E), - 'detach_target_module/1'(E,B), - 'chr_clear/0__4__0'(C,A) + 'chr remove_constraint_internal'(A,E), + 'detach_target_module/1'(E,A), + 'chr_clear/0__4__0'(B,C) ; - 'chr_clear/0__4__0'(C,A) + 'chr_clear/0__4__0'(B,C) ). 'chr_clear/0__4'(A) :- 'chr_clear/0__5'(A). 'chr_clear/0__5'(A) :- - 'chr global_term_ref_1'(B), + 'chr default_store'(B), get_attr(B,chr_translate_bootstrap1,C), - C=v(E,_,_,_,_,_,D), - E/\32=:=32, + C=v(D,_,_,_,_,_,E), + D/\32=:=32, !, - 'chr_clear/0__5__0'(D,A). + 'chr_clear/0__5__0'(E,A). 'chr_clear/0__5__0'([],A) :- 'chr_clear/0__6'(A). -'chr_clear/0__5__0'([B|C],A) :- - ( B=suspension(_,D,_,_,_,_,_,_), +'chr_clear/0__5__0'([A|B],C) :- + ( A=suspension(_,D,_,_,_,_,_,_), D=mutable(active) -> - 'chr remove_constraint_internal'(B,E), - 'detach_attached/2'(E,B), - 'chr_clear/0__5__0'(C,A) + 'chr remove_constraint_internal'(A,E), + 'detach_attached/2'(E,A), + 'chr_clear/0__5__0'(B,C) ; - 'chr_clear/0__5__0'(C,A) + 'chr_clear/0__5__0'(B,C) ). 'chr_clear/0__5'(A) :- 'chr_clear/0__6'(A). diff --git a/chr_translate_bootstrap2.pl b/chr_translate_bootstrap2.pl index c516c9f..617ff93 100644 --- a/chr_translate_bootstrap2.pl +++ b/chr_translate_bootstrap2.pl @@ -1,23 +1,21 @@ /* Generated by CHR bootstrap compiler From: chr_translate_bootstrap2.chr - Date: [77,111,110,32,77,97,121,32,32,49,32,49,50,58,50,49,58,51,55,32,50,48,48,54,10] + Date: Mon Jun 15 21:43:47 2009 + DO NOT EDIT. EDIT THE CHR FILE INSTEAD */ :-module(chr_translate,[chr_translate/2]). :-use_module(chr_runtime). -:-style_check(-singleton). :-style_check(-discontiguous). :-use_module(chr_runtime). :-use_module(chr_hashtable_store). -:-style_check(-singleton). :-style_check(-discontiguous). -:-use_module(library(lists)). -:-use_module(hprolog). -:-use_module(library(assoc)). -:-use_module(pairlist). +:-use_module(library(lists),[append/3,append/2,member/2,delete/3,reverse/2,permutation/2]). :-use_module(library(ordsets)). +:-use_module(hprolog). +:-use_module(pairlist). :-use_module(a_star). :-use_module(clean_code). :-use_module(builtins). @@ -42,7 +40,7 @@ chr_translate(A,B) :- store_management_preds(C,H), insert_declarations(E,I), chr_module_declaration(J), - append_lists([I,H,G,J],B) + append([I,H,G,J],B) ). store_management_preds(A,B) :- generate_attach_detach_a_constraint_all(A,C), @@ -52,12 +50,16 @@ store_management_preds(A,B) :- generate_extra_clauses(A,G), generate_insert_delete_constraints(A,H), generate_store_code(A,I), - append_lists([C,D,E,F,G,H,I],B). + append([C,D,E,F,G,H,I],B). +specific_declarations([(:-use_module(chr_runtime)),(:-use_module(chr_hashtable_store)),(:-style_check(-discontiguous))|A],A). insert_declarations(A,B) :- - ( A=[(:-module(C,D))|E] -> - B=[(:-module(C,D)),(:-use_module(chr_runtime)),(:-use_module(chr_hashtable_store)),(:-style_check(-singleton)),(:-style_check(-discontiguous))|E] + specific_declarations(C,D), + ( A=[(:-module(E,F))|G] -> + B=[(:-module(E,F))|C], + D=G ; - B=[(:-use_module(chr_runtime)),(:-use_module(chr_hashtable_store)),(:-style_check(-singleton)),(:-style_check(-discontiguous))|A] + B=C, + D=A ). chr_module_declaration(A) :- get_target_module(B), @@ -106,12 +108,18 @@ partition_clauses([A|B],C,D,E) :- E=I ) ; - ( A=option(L,M) -> + ( A=(:-chr_option(L,M)) -> handle_option(L,M), C=G, D=H, E=I ) + ; + ( A=(:-chr_type _) -> + C=G, + D=H, + E=I + ) ; C=G, D=H, @@ -119,12 +127,12 @@ partition_clauses([A|B],C,D,E) :- ), partition_clauses(B,G,H,I). is_declaration(A,B) :- - ( A=(:-C) -> - true + A=(:-C), + ( + C=..[chr_constraint,D] ; - A=C + C=..[chr_constraint,D] ), - C=..[constraints,D], conj2list(D,B). parse_rule(A,B) :- A=(C@D), @@ -250,7 +258,7 @@ check_pragma(A,B) :- !, B=pragma(_,_,_,_,E), pragma_unique(E,C,D), - format('CHR compiler WARNING: undocument pragma ~w in ~@. + format('CHR compiler WARNING: undocumented pragma ~w in ~@. ',[A,format_rule(B)]), format(' `--> Only use this pragma if you know what you are doing. ',[]). @@ -386,7 +394,7 @@ handle_option(A,B) :- option_definition(optimize,experimental,A) :- A=[unique_analyse_optimise-on,check_unnecessary_active-full,reorder_heads-on,set_semantics_rule-on,check_attachments-on,guard_via_reschedule-on]. option_definition(optimize,full,A) :- - A=[unique_analyse_optimise-on,check_unnecessary_active-full,reorder_heads-on,set_semantics_rule-on,check_attachments-on,guard_via_reschedule-on]. + A=[unique_analyse_optimise-off,check_unnecessary_active-full,reorder_heads-on,set_semantics_rule-on,check_attachments-on,guard_via_reschedule-on]. option_definition(optimize,sicstus,A) :- A=[unique_analyse_optimise-off,check_unnecessary_active-simplification,reorder_heads-off,set_semantics_rule-off,check_attachments-off,guard_via_reschedule-off]. option_definition(optimize,off,A) :- @@ -415,6 +423,7 @@ option_definition(debug,off,A) :- A=[debugable-off]. option_definition(type_definition,_,[]). option_definition(type_declaration,_,[]). +option_definition(verbosity,_,[]). init_chr_pp_flags :- chr_pp_flag_definition(A,[B|_]), set_chr_pp_flag(A,B), @@ -454,7 +463,7 @@ generate_attach_detach_a_constraint_all([A|B],C) :- E=[] ), generate_attach_detach_a_constraint_all(B,F), - append_lists([D,E,F],C). + append([D,E,F],C). generate_attach_a_constraint(A,[B,C]) :- generate_attach_a_constraint_empty_list(A,B), get_max_constraint_index(D), @@ -491,13 +500,13 @@ generate_attach_body_n(A/B,C,D,E) :- or_pattern(F,G), get_max_constraint_index(H), make_attr(H,I,J,K), - nth(F,J,L), - substitute(L,J,[D|L],M), + nth1(F,J,L), + substitute_eq(L,J,[D|L],M), make_attr(H,I,M,N), - substitute(L,J,[D],O), + substitute_eq(L,J,[D],O), make_attr(H,P,O,Q), - copy_term(J,R), - nth(F,R,[D]), + copy_term_nat(J,R), + nth1(F,R,[D]), delete(R,[D],S), set_elems(S,[]), make_attr(H,G,R,T), @@ -541,10 +550,10 @@ generate_detach_body_n(A/B,C,D,E) :- and_pattern(F,H), get_max_constraint_index(I), make_attr(I,J,K,L), - nth(F,K,M), - substitute(M,K,[],N), + nth1(F,K,M), + substitute_eq(M,K,[],N), make_attr(I,O,N,P), - substitute(M,K,Q,R), + substitute_eq(M,K,Q,R), make_attr(I,J,R,S), get_target_module(T), E=(get_attr(C,T,U)->U=L,(J/\G=:=G->'chr sbag_del_element'(M,D,Q),(Q==[]->O is J/\H,(O==0->del_attr(C,T);put_attr(C,T,P));put_attr(C,T,S));true);true). @@ -611,13 +620,13 @@ generate_extra_clauses(A,[B,C,D,E,F]) :- generate_allocate_clause(D), generate_insert_constraint_internal(F). generate_remove_clause(A) :- - A=(remove_constraint_internal(B,C,D):-arg(2,B,E),E=mutable(F),'chr update_mutable'(removed,E),(compound(F)->C=[],D=no;F==removed->C=[],D=no;D=yes,chr_indexed_variables(B,C))). + A=(remove_constraint_internal(B,C,D):-arg(2,B,E),'chr get_mutable'(F,E),'chr update_mutable'(removed,E),(compound(F)->C=[],D=no;F==removed->C=[],D=no;D=yes,chr_indexed_variables(B,C))). generate_activate_clause(A) :- - A=(activate_constraint(B,C,D,E):-arg(2,D,F),F=mutable(G),'chr update_mutable'(active,F),(nonvar(E)->true;arg(4,D,H),H=mutable(I),E is I+1,'chr update_mutable'(E,H)),(compound(G)->term_variables(G,C),'chr none_locked'(C),B=yes;G==removed->chr_indexed_variables(D,C),B=yes;C=[],B=no)). + A=(activate_constraint(B,C,D,E):-arg(2,D,F),'chr get_mutable'(G,F),'chr update_mutable'(active,F),(nonvar(E)->true;arg(4,D,H),'chr get_mutable'(I,H),E is I+1,'chr update_mutable'(E,H)),(compound(G)->term_variables(G,C),'chr none_locked'(C),B=yes;G==removed->chr_indexed_variables(D,C),B=yes;C=[],B=no)). generate_allocate_clause(A) :- - A=(allocate_constraint(B,C,D,E):-C=..[suspension,F,G,B,H,I,D|E],H=mutable(0),'chr empty_history'(J),I=mutable(J),chr_indexed_variables(C,K),G=mutable(passive(K)),'chr gen_id'(F)). + A=(allocate_constraint(B,C,D,E):-C=..[suspension,F,G,B,H,I,D|E],'chr create_mutable'(0,H),'chr empty_history'(J),'chr create_mutable'(J,I),chr_indexed_variables(C,K),'chr create_mutable'(passive(K),G),'chr gen_id'(F)). generate_insert_constraint_internal(A) :- - A=(insert_constraint_internal(yes,B,C,D,E,F):-C=..[suspension,G,H,D,I,J,E|F],chr_indexed_variables(C,B),'chr none_locked'(B),H=mutable(active),I=mutable(0),J=mutable(K),'chr empty_history'(K),'chr gen_id'(G)). + A=(insert_constraint_internal(yes,B,C,D,E,F):-C=..[suspension,G,H,D,I,J,E|F],chr_indexed_variables(C,B),'chr none_locked'(B),'chr create_mutable'(active,H),'chr create_mutable'(0,I),'chr empty_history'(K),'chr create_mutable'(K,J),'chr gen_id'(G)). global_indexed_variables_clause(A,B) :- ( forsome(C,A,chr_translate:may_trigger(C)) -> D=(E=..[_,_,_,_,_,_,F|_],'$indexed_variables'(F,G)) @@ -730,12 +739,14 @@ generate_insert_constraint_body(default,A,B,C) :- ; generate_attach_body_n(A,E,B,F) ), - C=('chr global_term_ref_1'(E),F). + C=('chr default_store'(E),F). generate_insert_constraint_body(multi_hash(A),B,C,D) :- generate_multi_hash_insert_constraint_bodies(A,B,C,D). generate_insert_constraint_body(global_ground,A,B,C) :- global_ground_store_name(A,D), - C=(nb_getval(D,E),b_setval(D,[B|E])). + make_get_store_goal(D,E,F), + make_update_store_goal(D,[B|E],G), + C=(F,G). generate_insert_constraint_body(multi_store(A),B,C,D) :- find_with_var_identity(E,[C],(member(F,A),chr_translate:generate_insert_constraint_body(F,B,C,E)),G), list2conj(G,D). @@ -743,7 +754,8 @@ generate_multi_hash_insert_constraint_bodies([],_,_,true). generate_multi_hash_insert_constraint_bodies([A|B],C,D,(E,F)) :- multi_hash_store_name(C,A,G), multi_hash_key(C,A,D,H,I), - E=(H,nb_getval(G,J),insert_ht(J,I,D)), + make_get_store_goal(G,J,K), + E=(H,K,insert_ht(J,I,D)), generate_multi_hash_insert_constraint_bodies(B,C,D,F). generate_delete_constraint(A,B,C) :- make_name('$delete_from_store_',B,D), @@ -755,16 +767,18 @@ generate_delete_constraint_body(default,A,B,C) :- get_max_constraint_index(D), ( D==1 -> generate_detach_body_1(A,E,B,F), - C=('chr global_term_ref_1'(E),F) + C=('chr default_store'(E),F) ; generate_detach_body_n(A,E,B,F), - C=('chr global_term_ref_1'(E),F) + C=('chr default_store'(E),F) ). generate_delete_constraint_body(multi_hash(A),B,C,D) :- generate_multi_hash_delete_constraint_bodies(A,B,C,D). generate_delete_constraint_body(global_ground,A,B,C) :- global_ground_store_name(A,D), - C=(nb_getval(D,E),'chr sbag_del_element'(E,B,F),b_setval(D,F)). + make_get_store_goal(D,E,F), + make_update_store_goal(D,G,H), + C=(F,'chr sbag_del_element'(E,B,G),H). generate_delete_constraint_body(multi_store(A),B,C,D) :- find_with_var_identity(E,[C],(member(F,A),chr_translate:generate_delete_constraint_body(F,B,C,E)),G), list2conj(G,D). @@ -772,7 +786,8 @@ generate_multi_hash_delete_constraint_bodies([],_,_,true). generate_multi_hash_delete_constraint_bodies([A|B],C,D,(E,F)) :- multi_hash_store_name(C,A,G), multi_hash_key(C,A,D,H,I), - E=(H,nb_getval(G,J),delete_ht(J,I,D)), + make_get_store_goal(G,J,K), + E=(H,K,delete_ht(J,I,D)), generate_multi_hash_delete_constraint_bodies(B,C,D,F). generate_delete_constraint_call(A,B,C) :- make_name('$delete_from_store_',A,D), @@ -803,19 +818,22 @@ multi_store_generate_store_code([A|B],C,D,E) :- multi_hash_store_initialisations([],_,A,A). multi_hash_store_initialisations([A|B],C,D,E) :- multi_hash_store_name(C,A,F), - D=[(:-new_ht(G),nb_setval(F,G))|H], - multi_hash_store_initialisations(B,C,H,E). + make_init_store_goal(F,G,H), + D=[(:-new_ht(G),H)|I], + multi_hash_store_initialisations(B,C,I,E). global_ground_store_initialisation(A,B,C) :- global_ground_store_name(A,D), - B=[(:-nb_setval(D,[]))|C]. + make_init_store_goal(D,[],E), + B=[(:-E)|C]. multi_hash_via_lookups([],_,A,A). multi_hash_via_lookups([A|B],C,D,E) :- multi_hash_via_lookup_name(C,A,F), G=..[F,H,I], multi_hash_store_name(C,A,J), - K=(nb_getval(J,L),lookup_ht(L,H,I)), - D=[(G:-K)|M], - multi_hash_via_lookups(B,C,M,E). + make_get_store_goal(J,K,L), + M=(L,lookup_ht(K,H,I)), + D=[(G:-M)|N], + multi_hash_via_lookups(B,C,N,E). multi_hash_via_lookup_name(A/B,C,D) :- ( integer(C) -> E=C @@ -886,7 +904,7 @@ enumerate_store_body(default,A,B,C) :- get_constraint_index(A,D), get_target_module(E), get_max_constraint_index(F), - G=('chr global_term_ref_1'(H),get_attr(H,E,I)), + G=('chr default_store'(H),get_attr(H,E,I)), ( F>1 -> J is D+1, K=(arg(J,I,L),'chr sbag_member'(B,L)) @@ -898,12 +916,14 @@ enumerate_store_body(multi_hash([A|_]),B,C,D) :- multi_hash_enumerate_store_body(A,B,C,D). enumerate_store_body(global_ground,A,B,C) :- global_ground_store_name(A,D), - C=(nb_getval(D,E),'chr sbag_member'(B,E)). + make_get_store_goal(D,E,F), + C=(F,'chr sbag_member'(B,E)). enumerate_store_body(multi_store(A),B,C,D) :- once((member(E,A),enumerate_store_body(E,B,C,D))). multi_hash_enumerate_store_body(A,B,C,D) :- multi_hash_store_name(B,A,E), - D=(nb_getval(E,F),value_ht(F,C)). + make_get_store_goal(E,F,G), + D=(G,value_ht(F,C)). check_attachments(A) :- ( chr_pp_flag(check_attachments,on) -> check_constraint_attachments(A) @@ -1084,35 +1104,6 @@ gen_uncond_attach_goal(A,B,C,D) :- ), generate_insert_constraint_call(A,B,H), C=(activate_constraint(I,G,B,D),(I==yes->H,F;true)). -occurrences_code(A,B,C,D,E,F,G) :- - ( A>B -> - E=D, - F=G - ; - occurrence_code(A,C,D,H,F,I), - J is A+1, - occurrences_code(J,B,C,H,E,I,G) - ). -occurrences_code(A,B,C,D,E,F) :- - get_occurrence(B,A,G,H), - ( is_passive(G,H) -> - D=C, - E=F - ; - get_rule(G,I), - I=pragma(rule(J,K,_,_),ids(L,M),_,_,_), - ( select2(L,J,H,N,O,P) -> - D=C, - head1_code(N,P,O,I,B,C,E,F) - ; - ( select2(M,K,H,Q,R,S) -> - length(S,T), - head2_code(Q,S,R,I,T,B,C,E,U), - inc_id(C,D), - gen_alloc_inc_clause(B,C,U,F) - ) - ) - ). rules_code([],_,A,A,B,B). rules_code([A|B],C,D,E,F,G) :- rule_code(A,C,D,H,F,I), @@ -1338,7 +1329,7 @@ unique_analyse_optimise_main([A|B],C,D,[E|F]) :- apply_unique_patterns_to_constraints(O,Q,H,S), globalize_unique_pragmas(R,M), globalize_unique_pragmas(S,M), - append_lists([R,S,K],T), + append([R,S,K],T), E=pragma(I,J,T,L,M), U is C+1, unique_analyse_optimise_main(B,U,H,F). @@ -1358,16 +1349,14 @@ apply_unique_patterns_to_constraints([A|B],[C|D],E,F) :- apply_unique_pattern(A,B,C,D) :- C=unique(E,F), subsumes(A,E,G), - ( setof(H,I^J^K^(member(I,F),lookup_eq(G,I,J),term_variables(J,K),member(H,K)),L) -> - true - ; - L=[] - ), - D=unique(B,L). + find_with_var_identity(H,G,(member(I,F),lookup_eq(G,I,J),term_variables(J,K),member(H,K)),L), + sort(L,M), + N=M, + D=unique(B,N). subsumes(A,B,C) :- - empty_assoc(D), + empty_ds(D), subsumes_aux(A,B,D,E), - assoc_to_list(E,F), + ds_to_list(E,F), build_unifier(F,C). subsumes_aux(A,B,C,D) :- ( compound(B), @@ -1381,13 +1370,13 @@ subsumes_aux(A,B,C,D) :- ) ; ( var(B), - get_assoc(A,C,G) -> + get_ds(A,C,G) -> G==B, D=C ) ; var(B), - put_assoc(A,C,B,D) + put_ds(A,C,B,D) ). subsumes_aux(0,_,_,A,A) :- !. @@ -1416,11 +1405,10 @@ discover_unique_pattern(A,B,C) :- term_variables(I,L), select_pragma_unique_variables(K,L,M), N=unique(I,M), - copy_term(N,C), - ( prolog_flag(verbose,O), - O==yes -> + copy_term_nat(N,C), + ( verbosity_on -> format('Found unique pattern ~w in rule ~d~@ -',[C,B,(E=yes(P)->write([58,32]),write(P);true)]) +',[C,B,(E=yes(O)->write([58,32]),write(O);true)]) ; true ). @@ -1611,7 +1599,7 @@ rest_heads_retrieval_and_matching_n([A|B],[C|D],E,F,G,H,[I,J|K],[L|M],N,O,P) :- ; get_constraint_index(Q/R,X), make_attr(V,_,Y,T), - nth(X,Y,W) + nth1(X,Y,W) ) ; lookup_passive_head(S,A,[H|F],N,I,W), @@ -1621,7 +1609,7 @@ rest_heads_retrieval_and_matching_n([A|B],[C|D],E,F,G,H,[I,J|K],[L|M],N,O,P) :- head_arg_matches(A1,N,B1,C1), D1=..[suspension,_,E1,_,_,_,_|Z], different_from_other_susps(A,L,F,G,F1), - create_get_mutable(active,E1,G1), + create_get_mutable_ref(active,E1,G1), H1=('chr sbag_member'(L,W),L=D1,G1,F1,B1), ( member(unique(C,I1),E), check_unique_keys(I1,N) -> @@ -1647,7 +1635,7 @@ check_unique_keys([A|B],C) :- lookup_eq(C,A,_), check_unique_keys(B,C). different_from_other_susps(A,B,C,D,E) :- - ( bagof(F,G^(nth(G,C,H),\+A\=H,nth(G,D,I),F=(B\==I)),J) -> + ( bagof(F,G^(nth1(G,C,H),\+A\=H,nth1(G,D,I),F=(B\==I)),J) -> list2conj(J,E) ; E=true @@ -1676,7 +1664,7 @@ common_variables(A,B,C) :- gen_get_mod_constraints(A,B,C) :- get_target_module(D), ( A==[] -> - B=('chr global_term_ref_1'(E),get_attr(E,D,F),F=C) + B=('chr default_store'(E),get_attr(E,D,F),F=C) ; ( A=[G] -> H='chr via_1'(G,I) @@ -1701,7 +1689,7 @@ guard_body_copies2(A,B,C,D) :- term_variables(I,N), term_variables(L,O), ( chr_pp_flag(guard_locks,on), - bagof('chr lock'(P)-'chr unlock'(P),Q^(member(Q,N),lookup_eq(B,Q,P),memberchk_eq(P,O)),R) -> + find_with_var_identity('chr lock'(P)-'chr unlock'(P),B,(member(Q,N),lookup_eq(B,Q,P),memberchk_eq(P,O)),R) -> once(pairup(S,T,R)) ; S=[], @@ -1864,7 +1852,7 @@ simpagation_head2_worker_body(A,B,C,D,E,F,G,H,I/J,K,L,M) :- head_info(B,B1,C1,_,_,D1), head_arg_matches(D1,S,E1,F1), G1=..[suspension,_,H1,_,_,_,_|C1], - create_get_mutable(active,H1,I1), + create_get_mutable_ref(active,H1,I1), J1=(N=G1,I1), ( ( @@ -1917,8 +1905,8 @@ simpagation_head2_worker_body(A,B,C,D,E,F,G,H,I/J,K,L,M) :- gen_state_cond_call(A,B,C,D,E) :- length(F,B), G=..[suspension,_,H,_,I,_,_|F], - create_get_mutable(active,H,J), - create_get_mutable(D,I,K), + create_get_mutable_ref(active,H,J), + create_get_mutable_ref(D,I,K), E=(A=G,J,K->'chr update_mutable'(inactive,H),C;true). simpagation_head2_worker_end(A,B,C/D,E,F,G) :- head_info(A,D,_,_,H,I), @@ -1993,7 +1981,7 @@ propagation_body(A,B,C,D,E,F/G,H,I,J) :- functor(A,_,S), gen_vars(S,T), U=..[suspension,_,V,_,_,_,_|T], - create_get_mutable(active,V,W), + create_get_mutable_ref(active,V,W), X=(Q=U,W), Y=[[Q|R]|M], build_head(F,G,H,Y,Z), @@ -2087,7 +2075,7 @@ propagation_accumulator([A|B],[C|D],E,F/G,H,I,J) :- head_arg_matches(T,N,U,V), W=..[suspension,_,X,_,_,_,_|R], different_from_other_susps(C,S,D,O,Y), - create_get_mutable(active,X,Z), + create_get_mutable_ref(active,X,Z), A1=(S=W,Z,Y,U), lookup_passive_head(A,[C|D],V,B1,C1), inc_id(H,D1), @@ -2192,7 +2180,7 @@ order_score_vars([A|B],C,D,E,F) :- G=E ), order_score_vars(B,C,D,G,F). -create_get_mutable(A,B,C) :- +create_get_mutable_ref(A,B,C) :- C=(B=mutable(A)). gen_var(_). gen_vars(A,B) :- @@ -2213,13 +2201,13 @@ build_head(A,B,C,D,E) :- E=..[F|D]. buildName(A,B,C,D) :- atom_concat(A,/,E), - atom_concat(E,B,F), + atomic_concat(E,B,F), buildName_(C,F,D). buildName_([],A,A). buildName_([A|B],C,D) :- buildName_(B,C,E), atom_concat(E,'__',F), - atom_concat(F,A,D). + atomic_concat(F,A,D). vars_susp(A,B,C,D) :- length(B,A), append(B,[C],D). @@ -2267,7 +2255,20 @@ atom_concat_list([A],A) :- !. atom_concat_list([A|B],C) :- atom_concat_list(B,D), - atom_concat(A,D,C). + atomic_concat(A,D,C). +atomic_concat(A,B,C) :- + make_atom(A,D), + make_atom(B,E), + atom_concat(D,E,C). +make_atom(A,B) :- + ( atom(A) -> + B=A + ; + ( number(A) -> + number_codes(A,C), + atom_codes(B,C) + ) + ). make_name(A,B/C,D) :- atom_concat_list([A,B,/,C],D). set_elems([],_). @@ -2296,7 +2297,7 @@ lookup_passive_head(default,A,B,C,D,E) :- functor(A,I,J), get_constraint_index(I/J,K), make_attr(H,_,L,F), - nth(K,L,E) + nth1(K,L,E) ). lookup_passive_head(multi_hash(A),B,_,C,D,E) :- once((member(F,A),multi_hash_key_args(F,B,G),translate(G,C,H))), @@ -2312,7 +2313,7 @@ lookup_passive_head(multi_hash(A),B,_,C,D,E) :- lookup_passive_head(global_ground,A,_,_,B,C) :- functor(A,D,E), global_ground_store_name(D/E,F), - B=nb_getval(F,C), + make_get_store_goal(F,C,B), update_store_type(D/E,global_ground). lookup_passive_head(multi_store(A),B,C,D,E,F) :- once((member(G,A),lookup_passive_head(G,B,C,D,E,F))). @@ -2347,12 +2348,15 @@ validate_store_type_assumptions([]). validate_store_type_assumptions([A|B]) :- validate_store_type_assumption(A), validate_store_type_assumptions(B). +verbosity_on :- + prolog_flag(verbose,A), + A==yes. attr_unify_hook(_,_) :- write('ERROR: Unexpected triggering of attr_unify_hook/2 in module '), writeln(chr_translate). remove_constraint_internal(A,B,C) :- arg(2,A,D), - D=mutable(E), + 'chr get_mutable'(E,D), 'chr update_mutable'(removed,D), ( compound(E) -> B=[], @@ -2368,13 +2372,13 @@ remove_constraint_internal(A,B,C) :- ). activate_constraint(A,B,C,D) :- arg(2,C,E), - E=mutable(F), + 'chr get_mutable'(F,E), 'chr update_mutable'(active,E), ( nonvar(D) -> true ; arg(4,C,G), - G=mutable(H), + 'chr get_mutable'(H,G), D is H+1, 'chr update_mutable'(D,G) ), @@ -2393,21 +2397,21 @@ activate_constraint(A,B,C,D) :- ). allocate_constraint(A,B,C,D) :- B=..[suspension,E,F,A,G,H,C|D], - G=mutable(0), + 'chr create_mutable'(0,G), 'chr empty_history'(I), - H=mutable(I), + 'chr create_mutable'(I,H), chr_indexed_variables(B,J), - F=mutable(passive(J)), + 'chr create_mutable'(passive(J),F), 'chr gen_id'(E). chr_indexed_variables(_,[]). 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 create_mutable'(active,G), + 'chr create_mutable'(0,H), 'chr empty_history'(J), + 'chr create_mutable'(J,I), 'chr gen_id'(F). '$insert_in_store_constraint/2'(A) :- arg(8,A,B), @@ -2573,19 +2577,14 @@ insert_constraint_internal(yes,A,B,C,D,E) :- 'chr sbag_del_element'(D,A,E), b_setval('$chr_store_global_ground_chr_translate:allocation_occurrence/2',E). '$insert_in_store_rule/2'(A) :- - nb_getval('$chr_store_global_ground_chr_translate:rule/2',B), - b_setval('$chr_store_global_ground_chr_translate:rule/2',[A|B]), - arg(7,A,C), - nb_getval('$chr_store_multi_hash_chr_translate:rule/2-1',D), - insert_ht(D,C,A), + arg(7,A,B), + nb_getval('$chr_store_multi_hash_chr_translate:rule/2-1',C), + insert_ht(C,B,A), true. '$delete_from_store_rule/2'(A) :- - nb_getval('$chr_store_global_ground_chr_translate:rule/2',B), - 'chr sbag_del_element'(B,A,C), - b_setval('$chr_store_global_ground_chr_translate:rule/2',C), - arg(7,A,D), - nb_getval('$chr_store_multi_hash_chr_translate:rule/2-1',E), - delete_ht(E,D,A), + arg(7,A,B), + nb_getval('$chr_store_multi_hash_chr_translate:rule/2-1',C), + delete_ht(C,B,A), true. '$enumerate_suspensions'(A) :- ( @@ -2640,8 +2639,8 @@ insert_constraint_internal(yes,A,B,C,D,E) :- nb_getval('$chr_store_multi_hash_chr_translate:allocation_occurrence/2-1',R), value_ht(R,A) ; - nb_getval('$chr_store_global_ground_chr_translate:rule/2',S), - 'chr sbag_member'(A,S) + nb_getval('$chr_store_multi_hash_chr_translate:rule/2-1',S), + value_ht(S,A) ). :-new_ht(A),nb_setval('$chr_store_multi_hash_chr_translate:constraint/2-2',A). '$via1_multi_hash_constraint/2-2'(A,B) :- @@ -2700,7 +2699,6 @@ insert_constraint_internal(yes,A,B,C,D,E) :- nb_getval('$chr_store_multi_hash_chr_translate:allocation_occurrence/2-1',C), lookup_ht(C,A,B). :-nb_setval('$chr_store_global_ground_chr_translate:allocation_occurrence/2',[]). -:-nb_setval('$chr_store_global_ground_chr_translate:rule/2',[]). :-new_ht(A),nb_setval('$chr_store_multi_hash_chr_translate:rule/2-1',A). '$via1_multi_hash_rule/2-1'(A,B) :- nb_getval('$chr_store_multi_hash_chr_translate:rule/2-1',C), @@ -2871,25 +2869,47 @@ attached(A,B) :- 'attached/2__2'(A,B,C) :- B==maybe, '$via1_multi_hash_attached/2-1'(A,E), - ( 'chr sbag_member'(D,E), + ( + 'chr sbag_member'(D,E), D=suspension(_,H,_,_,_,_,F,G), H=mutable(active), F==A, - G==maybe -> - true - ), - !, - ( var(C) -> - true + G==maybe, + !, + ( var(C) -> + true + ; + remove_constraint_internal(C,_,I), + ( I==yes -> + '$delete_from_store_attached/2'(C) + ; + true + ) + ) ; - remove_constraint_internal(C,_,I), + !, + 'attached/2__2__0'(E,A,B,C) + ). +'attached/2__2__0'([],A,B,C) :- + 'attached/2__3'(A,B,C). +'attached/2__2__0'([D|E],A,B,C) :- + ( D=suspension(_,H,_,_,_,_,F,G), + H=mutable(active), + F==A, + G==maybe -> + remove_constraint_internal(D,_,I), ( I==yes -> - '$delete_from_store_attached/2'(C) + '$delete_from_store_attached/2'(D) ; true - ) + ), + 'attached/2__2__0'(E,A,B,C) + ; + 'attached/2__2__0'(E,A,B,C) ). -'attached/2__2'(_,_,A) :- +'attached/2__2'(A,B,C) :- + 'attached/2__3'(A,B,C). +'attached/2__3'(_,_,A) :- activate_constraint(B,_,A,_), ( B==yes -> '$insert_in_store_attached/2'(A) @@ -2910,30 +2930,56 @@ is_attached(A) :- !. indexed_argument(A,B) :- 'indexed_argument/2__0'(A,B,_). -'indexed_argument/2__0'(A,B,_) :- - '$via1_multi_hash_indexed_argument/2-1'(A,D), - ( 'chr sbag_member'(C,D), - C=suspension(_,G,_,_,_,_,E,F), - G=mutable(active), - E==A, - F==B -> - true - ), - !. 'indexed_argument/2__0'(A,B,C) :- - insert_constraint_internal(_,_,C,chr_translate:'indexed_argument/2__0'(A,B,C),indexed_argument(A,B),[A,B]), - '$insert_in_store_indexed_argument/2'(C). + '$via1_multi_hash_indexed_argument/2-1'(A,E), + ( + 'chr sbag_member'(D,E), + D=suspension(_,H,_,_,_,_,F,G), + H=mutable(active), + F==A, + G==B, + ! + ; + !, + allocate_constraint(chr_translate:'indexed_argument/2__0'(A,B,C),C,indexed_argument(A,B),[A,B]), + 'indexed_argument/2__0__0'(E,A,B,C) + ). +'indexed_argument/2__0__0'([],A,B,C) :- + 'indexed_argument/2__1'(A,B,C). +'indexed_argument/2__0__0'([D|E],A,B,C) :- + ( D=suspension(_,H,_,_,_,_,F,G), + H=mutable(active), + F==A, + G==B -> + remove_constraint_internal(D,_,I), + ( I==yes -> + '$delete_from_store_indexed_argument/2'(D) + ; + true + ), + 'indexed_argument/2__0__0'(E,A,B,C) + ; + 'indexed_argument/2__0__0'(E,A,B,C) + ). +'indexed_argument/2__0'(A,B,C) :- + allocate_constraint(chr_translate:'indexed_argument/2__0'(A,B,C),C,indexed_argument(A,B),[A,B]), + 'indexed_argument/2__1'(A,B,C). +'indexed_argument/2__1'(_,_,A) :- + activate_constraint(B,_,A,_), + ( B==yes -> + '$insert_in_store_indexed_argument/2'(A) + ; + true + ). is_indexed_argument(A,B) :- 'is_indexed_argument/2__0'(A,B,_). 'is_indexed_argument/2__0'(A,B,_) :- '$via1_multi_hash_indexed_argument/2-1'(A,D), - ( 'chr sbag_member'(C,D), - C=suspension(_,G,_,_,_,_,E,F), - G=mutable(active), - E==A, - F==B -> - true - ), + 'chr sbag_member'(C,D), + C=suspension(_,G,_,_,_,_,E,F), + G=mutable(active), + E==A, + F==B, !. 'is_indexed_argument/2__0'(_,_,_) :- !, @@ -3020,26 +3066,23 @@ update_store_type(A,B) :- C=suspension(_,G,_,_,_,_,E,F), G=mutable(active), E==A, - 'chr lock'(B), - 'chr lock'(F), - member(B,F), - 'chr unlock'(B), - 'chr unlock'(F), - !. -'update_store_type/2__0'(A,B,_) :- - '$via1_multi_hash_actual_store_types/2-1'(A,D), - 'chr sbag_member'(C,D), - C=suspension(_,G,_,_,_,_,E,F), - G=mutable(active), - E==A, - !, - remove_constraint_internal(C,_,H), - ( H==yes -> - '$delete_from_store_actual_store_types/2'(C) + ( + 'chr lock'(B), + 'chr lock'(F), + member(B,F), + 'chr unlock'(B), + 'chr unlock'(F), + ! ; - true - ), - actual_store_types(A,[B|F]). + !, + remove_constraint_internal(C,_,H), + ( H==yes -> + '$delete_from_store_actual_store_types/2'(C) + ; + true + ), + actual_store_types(A,[B|F]) + ). 'update_store_type/2__0'(A,B,_) :- !, actual_store_types(A,[B]). @@ -3246,27 +3289,28 @@ occurrence(A,B,C,D) :- 'occurrence/4__0'(A,B,C,D,_). 'occurrence/4__0'(A,B,C,D,E) :- allocate_constraint(chr_translate:'occurrence/4__0'(A,B,C,D,E),E,occurrence(A,B,C,D),[A,B,C,D]), - 'chr novel_production'(E,46), - !, - 'chr extend_history'(E,46), - activate_constraint(F,_,E,G), - ( F==yes -> - '$insert_in_store_occurrence/4'(E) + ( + 'chr novel_production'(E,46), + !, + 'chr extend_history'(E,46), + activate_constraint(F,_,E,G), + ( F==yes -> + '$insert_in_store_occurrence/4'(E) + ; + true + ), + max_occurrence(A,B), + ( E=suspension(_,H,_,I,_,_,_,_,_,_), + H=mutable(active), + I=mutable(G) -> + 'chr update_mutable'(inactive,H), + 'occurrence/4__1'(A,B,C,D,E) + ; + true + ) ; - true - ), - max_occurrence(A,B), - ( E=suspension(_,H,_,I,_,_,_,_,_,_), - H=mutable(active), - I=mutable(G) -> - 'chr update_mutable'(inactive,H), 'occurrence/4__1'(A,B,C,D,E) - ; - true ). -'occurrence/4__0'(A,B,C,D,E) :- - allocate_constraint(chr_translate:'occurrence/4__0'(A,B,C,D,E),E,occurrence(A,B,C,D),[A,B,C,D]), - 'occurrence/4__1'(A,B,C,D,E). 'occurrence/4__1'(A,B,C,D,E) :- '$via1_multi_hash_allocation_occurrence/2-1'(A,F), !, @@ -3430,38 +3474,34 @@ get_occurrence(A,B,C,D) :- fail. max_occurrence(A,B) :- 'max_occurrence/2__0'(A,B,_). -'max_occurrence/2__0'(A,B,_) :- - '$via1_multi_hash_max_occurrence/2-1'(A,D), - ( 'chr sbag_member'(C,D), - C=suspension(_,G,_,_,_,_,E,F), - G=mutable(active), - E==A -> - true - ), - F>=B, - !. 'max_occurrence/2__0'(A,B,C) :- - '$via1_multi_hash_max_occurrence/2-1'(A,D), - !, - allocate_constraint(chr_translate:'max_occurrence/2__0'(A,B,C),C,max_occurrence(A,B),[A,B]), - 'max_occurrence/2__0__0'(D,A,B,C). + '$via1_multi_hash_max_occurrence/2-1'(A,E), + ( + 'chr sbag_member'(D,E), + D=suspension(_,H,_,_,_,_,F,G), + H=mutable(active), + F==A, + G>=B, + ! + ; + !, + allocate_constraint(chr_translate:'max_occurrence/2__0'(A,B,C),C,max_occurrence(A,B),[A,B]), + 'max_occurrence/2__0__0'(E,A,B,C) + ). 'max_occurrence/2__0__0'([],A,B,C) :- 'max_occurrence/2__1'(A,B,C). 'max_occurrence/2__0__0'([D|E],A,B,C) :- ( D=suspension(_,H,_,_,_,_,F,G), H=mutable(active), - F==A -> - ( B>=G -> - remove_constraint_internal(D,_,I), - ( I==yes -> - '$delete_from_store_max_occurrence/2'(D) - ; - true - ), - 'max_occurrence/2__0__0'([],A,B,C) + F==A, + B>=G -> + remove_constraint_internal(D,_,I), + ( I==yes -> + '$delete_from_store_max_occurrence/2'(D) ; - 'max_occurrence/2__0__0'([],A,B,C) - ) + true + ), + 'max_occurrence/2__0__0'(E,A,B,C) ; 'max_occurrence/2__0__0'(E,A,B,C) ). @@ -3479,12 +3519,10 @@ get_max_occurrence(A,B) :- 'get_max_occurrence/2__0'(A,B,_). 'get_max_occurrence/2__0'(A,B,_) :- '$via1_multi_hash_max_occurrence/2-1'(A,D), - ( 'chr sbag_member'(C,D), - C=suspension(_,G,_,_,_,_,E,F), - G=mutable(active), - E==A -> - true - ), + 'chr sbag_member'(C,D), + C=suspension(_,G,_,_,_,_,E,F), + G=mutable(active), + E==A, !, B=F. 'get_max_occurrence/2__0'(_,A,_) :- @@ -3492,45 +3530,6 @@ get_max_occurrence(A,B) :- A=0. allocation_occurrence(A,B) :- 'allocation_occurrence/2__0'(A,B,_). -'allocation_occurrence/2__0'(A,B,_) :- - '$via1_multi_hash_occurrence/4-1'(A,I), - nb_getval('$chr_store_global_ground_chr_translate:rule/2',D), - 'chr sbag_member'(C,D), - C=suspension(_,G,_,_,_,_,E,F), - G=mutable(active), - 'chr sbag_member'(H,I), - H=suspension(_,N,_,_,_,_,J,K,L,M), - N=mutable(active), - J==A, - K==B, - L==E, - 'chr lock'(F), - 'chr lock'(M), - F=pragma(_,ids(_,_),_,_,_), - member(M,_), - 'chr unlock'(F), - 'chr unlock'(M), - !, - O is B+1, - allocation_occurrence(A,O). -'allocation_occurrence/2__0'(A,B,_) :- - '$via1_multi_hash_occurrence/4-1'(A,I), - nb_getval('$chr_store_global_ground_chr_translate:rule/2',D), - 'chr sbag_member'(C,D), - C=suspension(_,G,_,_,_,_,E,F), - G=mutable(active), - 'chr sbag_member'(H,I), - H=suspension(_,M,_,_,_,_,J,K,L,_), - M=mutable(active), - J==A, - K==B, - L==E, - 'chr lock'(F), - F=pragma(rule(_,_,_,true),_,_,_,_), - 'chr unlock'(F), - !, - N is B+1, - allocation_occurrence(A,N). 'allocation_occurrence/2__0'(A,B,_) :- '$via1_multi_hash_occurrence/4-1'(A,D), 'chr sbag_member'(C,D), @@ -3538,15 +3537,40 @@ allocation_occurrence(A,B) :- I=mutable(active), E==A, F==B, - '$via1_multi_hash_passive/2-1'(G,K), - 'chr sbag_member'(J,K), - J=suspension(_,N,_,_,_,_,L,M), - N=mutable(active), - L==G, - M==H, - !, - O is B+1, - allocation_occurrence(A,O). + ( + '$via1_multi_hash_rule/2-1'(G,K), + 'chr sbag_member'(J,K), + J=suspension(_,N,_,_,_,_,L,M), + N=mutable(active), + L==G, + 'chr lock'(M), + ( + 'chr lock'(H), + M=pragma(_,ids(_,_),_,_,_), + member(H,_), + 'chr unlock'(M), + 'chr unlock'(H), + !, + O is B+1, + allocation_occurrence(A,O) + ; + M=pragma(rule(_,_,_,true),_,_,_,_), + 'chr unlock'(M), + !, + P is B+1, + allocation_occurrence(A,P) + ) + ; + '$via1_multi_hash_passive/2-1'(G,R), + 'chr sbag_member'(Q,R), + Q=suspension(_,U,_,_,_,_,S,T), + U=mutable(active), + S==G, + T==H, + !, + V is B+1, + allocation_occurrence(A,V) + ). 'allocation_occurrence/2__0'(A,B,C) :- insert_constraint_internal(_,_,C,chr_translate:'allocation_occurrence/2__0'(A,B,C),allocation_occurrence(A,B),[A,B]), '$insert_in_store_allocation_occurrence/2'(C). diff --git a/guard_entailment.pl b/guard_entailment.pl index 49a1665..6c3a81a 100644 --- a/guard_entailment.pl +++ b/guard_entailment.pl @@ -1,22 +1,24 @@ /* Generated by CHR bootstrap compiler From: guard_entailment.chr - Date: [77,111,110,32,77,97,121,32,32,49,32,49,50,58,50,49,58,53,55,32,50,48,48,54,10] + Date: Mon Jun 15 21:43:57 2009 + 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)). +:-style_check(-discontiguous). +:-include(chr_op). :-use_module(hprolog). :-use_module(builtins). +:-use_module(chr_compiler_errors). entails_guard(A,B) :- copy_term_nat((A,B),(C,D)), term_variables(C,E), variables(E), - entails_guard2(C), + sort(C,F), + entails_guard2(F), !, test(D), !, @@ -29,10 +31,11 @@ simplify_guards(A,B,C,D,E) :- copy_term_nat((A,C),(F,G)), term_variables(F,H), variables(H), - entails_guard2(F), + sort(F,I), + entails_guard2(I), !, - simplify(G,I), - simplified(C,I,D,B,E), + simplify(G,J), + simplified(C,J,D,B,E), !, cleanup. simplified([],[],[],A,A). @@ -78,7 +81,7 @@ try(A,B) :- ( known(A) -> true ; - format(' ERROR: entailment checker: this is not supposed to happen. + chr_error(internal,'Entailment Checker: try/2. ',[]) ), ( test(B) -> @@ -86,14 +89,6 @@ try(A,B) :- ; 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). @@ -112,38 +107,36 @@ all_unique_vars([A|B],C,D) :- \+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)) +attach_variables___1([],_). +attach_variables___1([A|B],C) :- + ( get_attr(A,guard_entailment,A1) -> + A1=v(Y,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X), + ( Y/\1=:=1 -> + B1=v(Y,[C|D],E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X) ; - G is F\/1, - put_attr(A,guard_entailment,v(G,[C],E)) - ) + Z is Y\/1, + B1=v(Z,[C],E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X) + ), + put_attr(A,guard_entailment,B1) ; - put_attr(A,guard_entailment,v(1,[C],[])) + 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 -> + attach_variables___1(B,C). +detach_variables___1([],_). +detach_variables___1([A|B],C) :- + ( get_attr(A,guard_entailment,B1) -> + B1=v(Y,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X), + ( Y/\1=:=1 -> + 'chr sbag_del_element'(D,C,A1), + ( A1==[] -> + Z is Y/\ -2, + ( Z==0 -> del_attr(A,guard_entailment) ; - put_attr(A,guard_entailment,v(G,[],E)) + put_attr(A,guard_entailment,v(Z,[],E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X)) ) ; - put_attr(A,guard_entailment,v(F,H,E)) + put_attr(A,guard_entailment,v(Y,A1,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X)) ) ; true @@ -151,37 +144,37 @@ all_unique_vars([A|B],C,D) :- ; 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])) + detach_variables___1(B,C). +'attach_known/1_1_$default___1'([],_). +'attach_known/1_1_$default___1'([A|B],C) :- + ( get_attr(A,guard_entailment,A1) -> + A1=v(Y,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X), + ( Y/\2=:=2 -> + B1=v(Y,D,[C|E],F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X) ; - G is F\/2, - put_attr(A,guard_entailment,v(G,D,[C])) - ) + Z is Y\/2, + B1=v(Z,D,[C],F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X) + ), + put_attr(A,guard_entailment,B1) ; - put_attr(A,guard_entailment,v(2,[],[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 -> + 'attach_known/1_1_$default___1'(B,C). +'detach_known/1_1_$default___1'([],_). +'detach_known/1_1_$default___1'([A|B],C) :- + ( get_attr(A,guard_entailment,B1) -> + B1=v(Y,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X), + ( Y/\2=:=2 -> + 'chr sbag_del_element'(E,C,A1), + ( A1==[] -> + Z is Y/\ -3, + ( Z==0 -> del_attr(A,guard_entailment) ; - put_attr(A,guard_entailment,v(G,D,[])) + put_attr(A,guard_entailment,v(Z,D,[],F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X)) ) ; - put_attr(A,guard_entailment,v(F,D,H)) + put_attr(A,guard_entailment,v(Y,D,A1,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X)) ) ; true @@ -189,3342 +182,17880 @@ all_unique_vars([A|B],C,D) :- ; 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). + 'detach_known/1_1_$default___1'(B,C). +'attach_known/1_1_$special_;/2___2'([],_). +'attach_known/1_1_$special_;/2___2'([A|B],C) :- + ( get_attr(A,guard_entailment,A1) -> + A1=v(Y,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X), + ( Y/\4=:=4 -> + B1=v(Y,D,E,[C|F],G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X) + ; + Z is Y\/4, + B1=v(Z,D,E,[C],G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X) + ), + put_attr(A,guard_entailment,B1) + ; + put_attr(A,guard_entailment,v(4,[],[],[C],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[])) + ), + 'attach_known/1_1_$special_;/2___2'(B,C). +'detach_known/1_1_$special_;/2___2'([],_). +'detach_known/1_1_$special_;/2___2'([A|B],C) :- + ( get_attr(A,guard_entailment,B1) -> + B1=v(Y,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X), + ( Y/\4=:=4 -> + 'chr sbag_del_element'(F,C,A1), + ( A1==[] -> + Z is Y/\ -5, + ( Z==0 -> + del_attr(A,guard_entailment) + ; + put_attr(A,guard_entailment,v(Z,D,E,[],G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X)) + ) + ; + put_attr(A,guard_entailment,v(Y,D,E,A1,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X)) + ) + ; + true + ) + ; + true + ), + 'detach_known/1_1_$special_;/2___2'(B,C). +'attach_known/1_1_$special_nonvar/1___1'([],_). +'attach_known/1_1_$special_nonvar/1___1'([A|B],C) :- + ( get_attr(A,guard_entailment,A1) -> + A1=v(Y,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X), + ( Y/\8=:=8 -> + B1=v(Y,D,E,F,[C|G],H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X) + ; + Z is Y\/8, + B1=v(Z,D,E,F,[C],H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X) + ), + put_attr(A,guard_entailment,B1) + ; + put_attr(A,guard_entailment,v(8,[],[],[],[C],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[])) + ), + 'attach_known/1_1_$special_nonvar/1___1'(B,C). +'detach_known/1_1_$special_nonvar/1___1'([],_). +'detach_known/1_1_$special_nonvar/1___1'([A|B],C) :- + ( get_attr(A,guard_entailment,B1) -> + B1=v(Y,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X), + ( Y/\8=:=8 -> + 'chr sbag_del_element'(G,C,A1), + ( A1==[] -> + Z is Y/\ -9, + ( Z==0 -> + del_attr(A,guard_entailment) + ; + put_attr(A,guard_entailment,v(Z,D,E,F,[],H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X)) + ) + ; + put_attr(A,guard_entailment,v(Y,D,E,F,A1,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X)) + ) + ; + true + ) + ; + true + ), + 'detach_known/1_1_$special_nonvar/1___1'(B,C). +'attach_known/1_1_$special_var/1___1'([],_). +'attach_known/1_1_$special_var/1___1'([A|B],C) :- + ( get_attr(A,guard_entailment,A1) -> + A1=v(Y,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X), + ( Y/\16=:=16 -> + B1=v(Y,D,E,F,G,[C|H],I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X) + ; + Z is Y\/16, + B1=v(Z,D,E,F,G,[C],I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X) + ), + put_attr(A,guard_entailment,B1) + ; + put_attr(A,guard_entailment,v(16,[],[],[],[],[C],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[])) + ), + 'attach_known/1_1_$special_var/1___1'(B,C). +'detach_known/1_1_$special_var/1___1'([],_). +'detach_known/1_1_$special_var/1___1'([A|B],C) :- + ( get_attr(A,guard_entailment,B1) -> + B1=v(Y,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X), + ( Y/\16=:=16 -> + 'chr sbag_del_element'(H,C,A1), + ( A1==[] -> + Z is Y/\ -17, + ( Z==0 -> + del_attr(A,guard_entailment) + ; + put_attr(A,guard_entailment,v(Z,D,E,F,G,[],I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X)) + ) + ; + put_attr(A,guard_entailment,v(Y,D,E,F,G,A1,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X)) + ) + ; + true + ) + ; + true + ), + 'detach_known/1_1_$special_var/1___1'(B,C). +'attach_known/1_1_$special_atom/1___1'([],_). +'attach_known/1_1_$special_atom/1___1'([A|B],C) :- + ( get_attr(A,guard_entailment,A1) -> + A1=v(Y,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X), + ( Y/\32=:=32 -> + B1=v(Y,D,E,F,G,H,[C|I],J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X) + ; + Z is Y\/32, + B1=v(Z,D,E,F,G,H,[C],J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X) + ), + put_attr(A,guard_entailment,B1) + ; + put_attr(A,guard_entailment,v(32,[],[],[],[],[],[C],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[])) + ), + 'attach_known/1_1_$special_atom/1___1'(B,C). +'detach_known/1_1_$special_atom/1___1'([],_). +'detach_known/1_1_$special_atom/1___1'([A|B],C) :- + ( get_attr(A,guard_entailment,B1) -> + B1=v(Y,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X), + ( Y/\32=:=32 -> + 'chr sbag_del_element'(I,C,A1), + ( A1==[] -> + Z is Y/\ -33, + ( Z==0 -> + del_attr(A,guard_entailment) + ; + put_attr(A,guard_entailment,v(Z,D,E,F,G,H,[],J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X)) + ) + ; + put_attr(A,guard_entailment,v(Y,D,E,F,G,H,A1,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X)) + ) + ; + true + ) + ; + true + ), + 'detach_known/1_1_$special_atom/1___1'(B,C). +'attach_known/1_1_$special_atomic/1___1'([],_). +'attach_known/1_1_$special_atomic/1___1'([A|B],C) :- + ( get_attr(A,guard_entailment,A1) -> + A1=v(Y,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X), + ( Y/\64=:=64 -> + B1=v(Y,D,E,F,G,H,I,[C|J],K,L,M,N,O,P,Q,R,S,T,U,V,W,X) + ; + Z is Y\/64, + B1=v(Z,D,E,F,G,H,I,[C],K,L,M,N,O,P,Q,R,S,T,U,V,W,X) + ), + put_attr(A,guard_entailment,B1) + ; + put_attr(A,guard_entailment,v(64,[],[],[],[],[],[],[C],[],[],[],[],[],[],[],[],[],[],[],[],[],[])) + ), + 'attach_known/1_1_$special_atomic/1___1'(B,C). +'detach_known/1_1_$special_atomic/1___1'([],_). +'detach_known/1_1_$special_atomic/1___1'([A|B],C) :- + ( get_attr(A,guard_entailment,B1) -> + B1=v(Y,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X), + ( Y/\64=:=64 -> + 'chr sbag_del_element'(J,C,A1), + ( A1==[] -> + Z is Y/\ -65, + ( Z==0 -> + del_attr(A,guard_entailment) + ; + put_attr(A,guard_entailment,v(Z,D,E,F,G,H,I,[],K,L,M,N,O,P,Q,R,S,T,U,V,W,X)) + ) + ; + put_attr(A,guard_entailment,v(Y,D,E,F,G,H,I,A1,K,L,M,N,O,P,Q,R,S,T,U,V,W,X)) + ) + ; + true + ) + ; + true + ), + 'detach_known/1_1_$special_atomic/1___1'(B,C). +'attach_known/1_1_$special_compound/1___1'([],_). +'attach_known/1_1_$special_compound/1___1'([A|B],C) :- + ( get_attr(A,guard_entailment,A1) -> + A1=v(Y,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X), + ( Y/\128=:=128 -> + B1=v(Y,D,E,F,G,H,I,J,[C|K],L,M,N,O,P,Q,R,S,T,U,V,W,X) + ; + Z is Y\/128, + B1=v(Z,D,E,F,G,H,I,J,[C],L,M,N,O,P,Q,R,S,T,U,V,W,X) + ), + put_attr(A,guard_entailment,B1) + ; + put_attr(A,guard_entailment,v(128,[],[],[],[],[],[],[],[C],[],[],[],[],[],[],[],[],[],[],[],[],[])) + ), + 'attach_known/1_1_$special_compound/1___1'(B,C). +'detach_known/1_1_$special_compound/1___1'([],_). +'detach_known/1_1_$special_compound/1___1'([A|B],C) :- + ( get_attr(A,guard_entailment,B1) -> + B1=v(Y,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X), + ( Y/\128=:=128 -> + 'chr sbag_del_element'(K,C,A1), + ( A1==[] -> + Z is Y/\ -129, + ( Z==0 -> + del_attr(A,guard_entailment) + ; + put_attr(A,guard_entailment,v(Z,D,E,F,G,H,I,J,[],L,M,N,O,P,Q,R,S,T,U,V,W,X)) + ) + ; + put_attr(A,guard_entailment,v(Y,D,E,F,G,H,I,J,A1,L,M,N,O,P,Q,R,S,T,U,V,W,X)) + ) + ; + true + ) + ; + true + ), + 'detach_known/1_1_$special_compound/1___1'(B,C). +'attach_known/1_1_$special_ground/1___1'([],_). +'attach_known/1_1_$special_ground/1___1'([A|B],C) :- + ( get_attr(A,guard_entailment,A1) -> + A1=v(Y,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X), + ( Y/\256=:=256 -> + B1=v(Y,D,E,F,G,H,I,J,K,[C|L],M,N,O,P,Q,R,S,T,U,V,W,X) + ; + Z is Y\/256, + B1=v(Z,D,E,F,G,H,I,J,K,[C],M,N,O,P,Q,R,S,T,U,V,W,X) + ), + put_attr(A,guard_entailment,B1) + ; + put_attr(A,guard_entailment,v(256,[],[],[],[],[],[],[],[],[C],[],[],[],[],[],[],[],[],[],[],[],[])) + ), + 'attach_known/1_1_$special_ground/1___1'(B,C). +'detach_known/1_1_$special_ground/1___1'([],_). +'detach_known/1_1_$special_ground/1___1'([A|B],C) :- + ( get_attr(A,guard_entailment,B1) -> + B1=v(Y,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X), + ( Y/\256=:=256 -> + 'chr sbag_del_element'(L,C,A1), + ( A1==[] -> + Z is Y/\ -257, + ( Z==0 -> + del_attr(A,guard_entailment) + ; + put_attr(A,guard_entailment,v(Z,D,E,F,G,H,I,J,K,[],M,N,O,P,Q,R,S,T,U,V,W,X)) + ) + ; + put_attr(A,guard_entailment,v(Y,D,E,F,G,H,I,J,K,A1,M,N,O,P,Q,R,S,T,U,V,W,X)) + ) + ; + true + ) + ; + true + ), + 'detach_known/1_1_$special_ground/1___1'(B,C). +'attach_known/1_1_$special_integer/1___1'([],_). +'attach_known/1_1_$special_integer/1___1'([A|B],C) :- + ( get_attr(A,guard_entailment,A1) -> + A1=v(Y,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X), + ( Y/\512=:=512 -> + B1=v(Y,D,E,F,G,H,I,J,K,L,[C|M],N,O,P,Q,R,S,T,U,V,W,X) + ; + Z is Y\/512, + B1=v(Z,D,E,F,G,H,I,J,K,L,[C],N,O,P,Q,R,S,T,U,V,W,X) + ), + put_attr(A,guard_entailment,B1) + ; + put_attr(A,guard_entailment,v(512,[],[],[],[],[],[],[],[],[],[C],[],[],[],[],[],[],[],[],[],[],[])) + ), + 'attach_known/1_1_$special_integer/1___1'(B,C). +'detach_known/1_1_$special_integer/1___1'([],_). +'detach_known/1_1_$special_integer/1___1'([A|B],C) :- + ( get_attr(A,guard_entailment,B1) -> + B1=v(Y,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X), + ( Y/\512=:=512 -> + 'chr sbag_del_element'(M,C,A1), + ( A1==[] -> + Z is Y/\ -513, + ( Z==0 -> + del_attr(A,guard_entailment) + ; + put_attr(A,guard_entailment,v(Z,D,E,F,G,H,I,J,K,L,[],N,O,P,Q,R,S,T,U,V,W,X)) + ) + ; + put_attr(A,guard_entailment,v(Y,D,E,F,G,H,I,J,K,L,A1,N,O,P,Q,R,S,T,U,V,W,X)) + ) + ; + true + ) + ; + true + ), + 'detach_known/1_1_$special_integer/1___1'(B,C). +'attach_known/1_1_$special_float/1___1'([],_). +'attach_known/1_1_$special_float/1___1'([A|B],C) :- + ( get_attr(A,guard_entailment,A1) -> + A1=v(Y,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X), + ( Y/\1024=:=1024 -> + B1=v(Y,D,E,F,G,H,I,J,K,L,M,[C|N],O,P,Q,R,S,T,U,V,W,X) + ; + Z is Y\/1024, + B1=v(Z,D,E,F,G,H,I,J,K,L,M,[C],O,P,Q,R,S,T,U,V,W,X) + ), + put_attr(A,guard_entailment,B1) + ; + put_attr(A,guard_entailment,v(1024,[],[],[],[],[],[],[],[],[],[],[C],[],[],[],[],[],[],[],[],[],[])) + ), + 'attach_known/1_1_$special_float/1___1'(B,C). +'detach_known/1_1_$special_float/1___1'([],_). +'detach_known/1_1_$special_float/1___1'([A|B],C) :- + ( get_attr(A,guard_entailment,B1) -> + B1=v(Y,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X), + ( Y/\1024=:=1024 -> + 'chr sbag_del_element'(N,C,A1), + ( A1==[] -> + Z is Y/\ -1025, + ( Z==0 -> + del_attr(A,guard_entailment) + ; + put_attr(A,guard_entailment,v(Z,D,E,F,G,H,I,J,K,L,M,[],O,P,Q,R,S,T,U,V,W,X)) + ) + ; + put_attr(A,guard_entailment,v(Y,D,E,F,G,H,I,J,K,L,M,A1,O,P,Q,R,S,T,U,V,W,X)) + ) + ; + true + ) + ; + true + ), + 'detach_known/1_1_$special_float/1___1'(B,C). +'attach_known/1_1_$special_number/1___1'([],_). +'attach_known/1_1_$special_number/1___1'([A|B],C) :- + ( get_attr(A,guard_entailment,A1) -> + A1=v(Y,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X), + ( Y/\2048=:=2048 -> + B1=v(Y,D,E,F,G,H,I,J,K,L,M,N,[C|O],P,Q,R,S,T,U,V,W,X) + ; + Z is Y\/2048, + B1=v(Z,D,E,F,G,H,I,J,K,L,M,N,[C],P,Q,R,S,T,U,V,W,X) + ), + put_attr(A,guard_entailment,B1) + ; + put_attr(A,guard_entailment,v(2048,[],[],[],[],[],[],[],[],[],[],[],[C],[],[],[],[],[],[],[],[],[])) + ), + 'attach_known/1_1_$special_number/1___1'(B,C). +'detach_known/1_1_$special_number/1___1'([],_). +'detach_known/1_1_$special_number/1___1'([A|B],C) :- + ( get_attr(A,guard_entailment,B1) -> + B1=v(Y,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X), + ( Y/\2048=:=2048 -> + 'chr sbag_del_element'(O,C,A1), + ( A1==[] -> + Z is Y/\ -2049, + ( Z==0 -> + del_attr(A,guard_entailment) + ; + put_attr(A,guard_entailment,v(Z,D,E,F,G,H,I,J,K,L,M,N,[],P,Q,R,S,T,U,V,W,X)) + ) + ; + put_attr(A,guard_entailment,v(Y,D,E,F,G,H,I,J,K,L,M,N,A1,P,Q,R,S,T,U,V,W,X)) + ) + ; + true + ) + ; + true + ), + 'detach_known/1_1_$special_number/1___1'(B,C). +'attach_known/1_1_$special_=\\=/2___2'([],_). +'attach_known/1_1_$special_=\\=/2___2'([A|B],C) :- + ( get_attr(A,guard_entailment,A1) -> + A1=v(Y,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X), + ( Y/\4096=:=4096 -> + B1=v(Y,D,E,F,G,H,I,J,K,L,M,N,O,[C|P],Q,R,S,T,U,V,W,X) + ; + Z is Y\/4096, + B1=v(Z,D,E,F,G,H,I,J,K,L,M,N,O,[C],Q,R,S,T,U,V,W,X) + ), + put_attr(A,guard_entailment,B1) + ; + put_attr(A,guard_entailment,v(4096,[],[],[],[],[],[],[],[],[],[],[],[],[C],[],[],[],[],[],[],[],[])) + ), + 'attach_known/1_1_$special_=\\=/2___2'(B,C). +'detach_known/1_1_$special_=\\=/2___2'([],_). +'detach_known/1_1_$special_=\\=/2___2'([A|B],C) :- + ( get_attr(A,guard_entailment,B1) -> + B1=v(Y,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X), + ( Y/\4096=:=4096 -> + 'chr sbag_del_element'(P,C,A1), + ( A1==[] -> + Z is Y/\ -4097, + ( Z==0 -> + del_attr(A,guard_entailment) + ; + put_attr(A,guard_entailment,v(Z,D,E,F,G,H,I,J,K,L,M,N,O,[],Q,R,S,T,U,V,W,X)) + ) + ; + put_attr(A,guard_entailment,v(Y,D,E,F,G,H,I,J,K,L,M,N,O,A1,Q,R,S,T,U,V,W,X)) + ) + ; + true + ) + ; + true + ), + 'detach_known/1_1_$special_=\\=/2___2'(B,C). +'attach_known/1_1_$special_\\+/1___1'([],_). +'attach_known/1_1_$special_\\+/1___1'([A|B],C) :- + ( get_attr(A,guard_entailment,A1) -> + A1=v(Y,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X), + ( Y/\8192=:=8192 -> + B1=v(Y,D,E,F,G,H,I,J,K,L,M,N,O,P,[C|Q],R,S,T,U,V,W,X) + ; + Z is Y\/8192, + B1=v(Z,D,E,F,G,H,I,J,K,L,M,N,O,P,[C],R,S,T,U,V,W,X) + ), + put_attr(A,guard_entailment,B1) + ; + put_attr(A,guard_entailment,v(8192,[],[],[],[],[],[],[],[],[],[],[],[],[],[C],[],[],[],[],[],[],[])) + ), + 'attach_known/1_1_$special_\\+/1___1'(B,C). +'detach_known/1_1_$special_\\+/1___1'([],_). +'detach_known/1_1_$special_\\+/1___1'([A|B],C) :- + ( get_attr(A,guard_entailment,B1) -> + B1=v(Y,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X), + ( Y/\8192=:=8192 -> + 'chr sbag_del_element'(Q,C,A1), + ( A1==[] -> + Z is Y/\ -8193, + ( Z==0 -> + del_attr(A,guard_entailment) + ; + put_attr(A,guard_entailment,v(Z,D,E,F,G,H,I,J,K,L,M,N,O,P,[],R,S,T,U,V,W,X)) + ) + ; + put_attr(A,guard_entailment,v(Y,D,E,F,G,H,I,J,K,L,M,N,O,P,A1,R,S,T,U,V,W,X)) + ) + ; + true + ) + ; + true + ), + 'detach_known/1_1_$special_\\+/1___1'(B,C). +'attach_known/1_1_$special_functor/3___3'([],_). +'attach_known/1_1_$special_functor/3___3'([A|B],C) :- + ( get_attr(A,guard_entailment,A1) -> + A1=v(Y,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X), + ( Y/\16384=:=16384 -> + B1=v(Y,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,[C|R],S,T,U,V,W,X) + ; + Z is Y\/16384, + B1=v(Z,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,[C],S,T,U,V,W,X) + ), + put_attr(A,guard_entailment,B1) + ; + put_attr(A,guard_entailment,v(16384,[],[],[],[],[],[],[],[],[],[],[],[],[],[],[C],[],[],[],[],[],[])) + ), + 'attach_known/1_1_$special_functor/3___3'(B,C). +'detach_known/1_1_$special_functor/3___3'([],_). +'detach_known/1_1_$special_functor/3___3'([A|B],C) :- + ( get_attr(A,guard_entailment,B1) -> + B1=v(Y,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X), + ( Y/\16384=:=16384 -> + 'chr sbag_del_element'(R,C,A1), + ( A1==[] -> + Z is Y/\ -16385, + ( Z==0 -> + del_attr(A,guard_entailment) + ; + put_attr(A,guard_entailment,v(Z,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,[],S,T,U,V,W,X)) + ) + ; + put_attr(A,guard_entailment,v(Y,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,A1,S,T,U,V,W,X)) + ) + ; + true + ) + ; + true + ), + 'detach_known/1_1_$special_functor/3___3'(B,C). +'attach_known/1_1_$special_\\=/2___2'([],_). +'attach_known/1_1_$special_\\=/2___2'([A|B],C) :- + ( get_attr(A,guard_entailment,A1) -> + A1=v(Y,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X), + ( Y/\32768=:=32768 -> + B1=v(Y,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,[C|S],T,U,V,W,X) + ; + Z is Y\/32768, + B1=v(Z,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,[C],T,U,V,W,X) + ), + put_attr(A,guard_entailment,B1) + ; + put_attr(A,guard_entailment,v(32768,[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[C],[],[],[],[],[])) + ), + 'attach_known/1_1_$special_\\=/2___2'(B,C). +'detach_known/1_1_$special_\\=/2___2'([],_). +'detach_known/1_1_$special_\\=/2___2'([A|B],C) :- + ( get_attr(A,guard_entailment,B1) -> + B1=v(Y,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X), + ( Y/\32768=:=32768 -> + 'chr sbag_del_element'(S,C,A1), + ( A1==[] -> + Z is Y/\ -32769, + ( Z==0 -> + del_attr(A,guard_entailment) + ; + put_attr(A,guard_entailment,v(Z,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,[],T,U,V,W,X)) + ) + ; + put_attr(A,guard_entailment,v(Y,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,A1,T,U,V,W,X)) + ) + ; + true + ) + ; + true + ), + 'detach_known/1_1_$special_\\=/2___2'(B,C). +'attach_known/1_1_$special_=/2___2'([],_). +'attach_known/1_1_$special_=/2___2'([A|B],C) :- + ( get_attr(A,guard_entailment,A1) -> + A1=v(Y,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X), + ( Y/\65536=:=65536 -> + B1=v(Y,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,[C|T],U,V,W,X) + ; + Z is Y\/65536, + B1=v(Z,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,[C],U,V,W,X) + ), + put_attr(A,guard_entailment,B1) + ; + put_attr(A,guard_entailment,v(65536,[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[C],[],[],[],[])) + ), + 'attach_known/1_1_$special_=/2___2'(B,C). +'detach_known/1_1_$special_=/2___2'([],_). +'detach_known/1_1_$special_=/2___2'([A|B],C) :- + ( get_attr(A,guard_entailment,B1) -> + B1=v(Y,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X), + ( Y/\65536=:=65536 -> + 'chr sbag_del_element'(T,C,A1), + ( A1==[] -> + Z is Y/\ -65537, + ( Z==0 -> + del_attr(A,guard_entailment) + ; + put_attr(A,guard_entailment,v(Z,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,[],U,V,W,X)) + ) + ; + put_attr(A,guard_entailment,v(Y,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,A1,U,V,W,X)) + ) + ; + true + ) + ; + true + ), + 'detach_known/1_1_$special_=/2___2'(B,C). +'attach_known/1_1_$special_\\==/2___2'([],_). +'attach_known/1_1_$special_\\==/2___2'([A|B],C) :- + ( get_attr(A,guard_entailment,A1) -> + A1=v(Y,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X), + ( Y/\131072=:=131072 -> + B1=v(Y,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,[C|U],V,W,X) + ; + Z is Y\/131072, + B1=v(Z,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,[C],V,W,X) + ), + put_attr(A,guard_entailment,B1) + ; + put_attr(A,guard_entailment,v(131072,[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[C],[],[],[])) + ), + 'attach_known/1_1_$special_\\==/2___2'(B,C). +'detach_known/1_1_$special_\\==/2___2'([],_). +'detach_known/1_1_$special_\\==/2___2'([A|B],C) :- + ( get_attr(A,guard_entailment,B1) -> + B1=v(Y,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X), + ( Y/\131072=:=131072 -> + 'chr sbag_del_element'(U,C,A1), + ( A1==[] -> + Z is Y/\ -131073, + ( Z==0 -> + del_attr(A,guard_entailment) + ; + put_attr(A,guard_entailment,v(Z,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,[],V,W,X)) + ) + ; + put_attr(A,guard_entailment,v(Y,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,A1,V,W,X)) + ) + ; + true + ) + ; + true + ), + 'detach_known/1_1_$special_\\==/2___2'(B,C). +'attach_known/1_1_$special_==/2___2'([],_). +'attach_known/1_1_$special_==/2___2'([A|B],C) :- + ( get_attr(A,guard_entailment,A1) -> + A1=v(Y,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X), + ( Y/\262144=:=262144 -> + B1=v(Y,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,[C|V],W,X) + ; + Z is Y\/262144, + B1=v(Z,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,[C],W,X) + ), + put_attr(A,guard_entailment,B1) + ; + put_attr(A,guard_entailment,v(262144,[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[C],[],[])) + ), + 'attach_known/1_1_$special_==/2___2'(B,C). +'detach_known/1_1_$special_==/2___2'([],_). +'detach_known/1_1_$special_==/2___2'([A|B],C) :- + ( get_attr(A,guard_entailment,B1) -> + B1=v(Y,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X), + ( Y/\262144=:=262144 -> + 'chr sbag_del_element'(V,C,A1), + ( A1==[] -> + Z is Y/\ -262145, + ( Z==0 -> + del_attr(A,guard_entailment) + ; + put_attr(A,guard_entailment,v(Z,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,[],W,X)) + ) + ; + put_attr(A,guard_entailment,v(Y,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,A1,W,X)) + ) + ; + true + ) + ; + true + ), + 'detach_known/1_1_$special_==/2___2'(B,C). +'attach_known/1_1_$special_= + A1=v(Y,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X), + ( Y/\524288=:=524288 -> + B1=v(Y,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,[C|W],X) + ; + Z is Y\/524288, + B1=v(Z,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,[C],X) + ), + put_attr(A,guard_entailment,B1) + ; + put_attr(A,guard_entailment,v(524288,[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[C],[])) + ), + 'attach_known/1_1_$special_= + B1=v(Y,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X), + ( Y/\524288=:=524288 -> + 'chr sbag_del_element'(W,C,A1), + ( A1==[] -> + Z is Y/\ -524289, + ( Z==0 -> + del_attr(A,guard_entailment) + ; + put_attr(A,guard_entailment,v(Z,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,[],X)) + ) + ; + put_attr(A,guard_entailment,v(Y,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,A1,X)) + ) + ; + true + ) + ; + true + ), + 'detach_known/1_1_$special_= + A1=v(Y,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X), + ( Y/\1048576=:=1048576 -> + B1=v(Y,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,[C|X]) + ; + Z is Y\/1048576, + B1=v(Z,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,[C]) + ), + put_attr(A,guard_entailment,B1) + ; + put_attr(A,guard_entailment,v(1048576,[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[C])) + ), + 'attach_known/1_1_$special_=:=/2___2'(B,C). +'detach_known/1_1_$special_=:=/2___2'([],_). +'detach_known/1_1_$special_=:=/2___2'([A|B],C) :- + ( get_attr(A,guard_entailment,B1) -> + B1=v(Y,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X), + ( Y/\1048576=:=1048576 -> + 'chr sbag_del_element'(X,C,A1), + ( A1==[] -> + Z is Y/\ -1048577, + ( Z==0 -> + del_attr(A,guard_entailment) + ; + put_attr(A,guard_entailment,v(Z,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,[])) + ) + ; + put_attr(A,guard_entailment,v(Y,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,A1)) + ) + ; + true + ) + ; + true + ), + 'detach_known/1_1_$special_=:=/2___2'(B,C). 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)) +attach_increment([B|C],A) :- + 'chr not_locked'(B), + ( get_attr(B,guard_entailment,M3) -> + A=v(Y,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X), + M3=v(U1,Z,A1,B1,C1,D1,E1,F1,G1,H1,I1,J1,K1,L1,M1,N1,O1,P1,Q1,R1,S1,T1), + sort(Z,V1), + 'chr merge_attributes'(D,V1,W1), + sort(A1,X1), + 'chr merge_attributes'(E,X1,Y1), + sort(B1,Z1), + 'chr merge_attributes'(F,Z1,A2), + sort(C1,B2), + 'chr merge_attributes'(G,B2,C2), + sort(D1,D2), + 'chr merge_attributes'(H,D2,E2), + sort(E1,F2), + 'chr merge_attributes'(I,F2,G2), + sort(F1,H2), + 'chr merge_attributes'(J,H2,I2), + sort(G1,J2), + 'chr merge_attributes'(K,J2,K2), + sort(H1,L2), + 'chr merge_attributes'(L,L2,M2), + sort(I1,N2), + 'chr merge_attributes'(M,N2,O2), + sort(J1,P2), + 'chr merge_attributes'(N,P2,Q2), + sort(K1,R2), + 'chr merge_attributes'(O,R2,S2), + sort(L1,T2), + 'chr merge_attributes'(P,T2,U2), + sort(M1,V2), + 'chr merge_attributes'(Q,V2,W2), + sort(N1,X2), + 'chr merge_attributes'(R,X2,Y2), + sort(O1,Z2), + 'chr merge_attributes'(S,Z2,A3), + sort(P1,B3), + 'chr merge_attributes'(T,B3,C3), + sort(Q1,D3), + 'chr merge_attributes'(U,D3,E3), + sort(R1,F3), + 'chr merge_attributes'(V,F3,G3), + sort(S1,H3), + 'chr merge_attributes'(W,H3,I3), + sort(T1,J3), + 'chr merge_attributes'(X,J3,K3), + L3 is Y\/U1, + put_attr(B,guard_entailment,v(L3,W1,Y1,A2,C2,E2,G2,I2,K2,M2,O2,Q2,S2,U2,W2,Y2,A3,C3,E3,G3,I3,K3)) ; - put_attr(G,guard_entailment,v(C,A,B)) + put_attr(B,guard_entailment,A) ), - 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]) + attach_increment(C,A). +attr_unify_hook(v(W,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V),A) :- + sort(B,X), + sort(C,Y), + sort(D,Z), + sort(E,A1), + sort(F,B1), + sort(G,C1), + sort(H,D1), + sort(I,E1), + sort(J,F1), + sort(K,G1), + sort(L,H1), + sort(M,I1), + sort(N,J1), + sort(O,K1), + sort(P,L1), + sort(Q,M1), + sort(R,N1), + sort(S,O1), + sort(T,P1), + sort(U,Q1), + sort(V,R1), + ( var(A) -> + ( get_attr(A,guard_entailment,F4) -> + F4=v(N2,S1,T1,U1,V1,W1,X1,Y1,Z1,A2,B2,C2,D2,E2,F2,G2,H2,I2,J2,K2,L2,M2), + sort(S1,O2), + 'chr merge_attributes'(X,O2,P2), + sort(T1,Q2), + 'chr merge_attributes'(Y,Q2,R2), + sort(U1,S2), + 'chr merge_attributes'(Z,S2,T2), + sort(V1,U2), + 'chr merge_attributes'(A1,U2,V2), + sort(W1,W2), + 'chr merge_attributes'(B1,W2,X2), + sort(X1,Y2), + 'chr merge_attributes'(C1,Y2,Z2), + sort(Y1,A3), + 'chr merge_attributes'(D1,A3,B3), + sort(Z1,C3), + 'chr merge_attributes'(E1,C3,D3), + sort(A2,E3), + 'chr merge_attributes'(F1,E3,F3), + sort(B2,G3), + 'chr merge_attributes'(G1,G3,H3), + sort(C2,I3), + 'chr merge_attributes'(H1,I3,J3), + sort(D2,K3), + 'chr merge_attributes'(I1,K3,L3), + sort(E2,M3), + 'chr merge_attributes'(J1,M3,N3), + sort(F2,O3), + 'chr merge_attributes'(K1,O3,P3), + sort(G2,Q3), + 'chr merge_attributes'(L1,Q3,R3), + sort(H2,S3), + 'chr merge_attributes'(M1,S3,T3), + sort(I2,U3), + 'chr merge_attributes'(N1,U3,V3), + sort(J2,W3), + 'chr merge_attributes'(O1,W3,X3), + sort(K2,Y3), + 'chr merge_attributes'(P1,Y3,Z3), + sort(L2,A4), + 'chr merge_attributes'(Q1,A4,B4), + sort(M2,C4), + 'chr merge_attributes'(R1,C4,D4), + E4 is W\/N2, + put_attr(A,guard_entailment,v(E4,P2,R2,T2,V2,X2,Z2,B3,D3,F3,H3,J3,L3,N3,P3,R3,T3,V3,X3,Z3,B4,D4)), + '$run_suspensions_variables___1'(X), + '$run_suspensions_known/1_1_$default___1'(Y), + '$run_suspensions_known/1_1_$special_;/2___2'(T2), + '$run_suspensions_known/1_1_$special_nonvar/1___1'(A1), + '$run_suspensions_known/1_1_$special_var/1___1'(B1), + '$run_suspensions_known/1_1_$special_atom/1___1'(C1), + '$run_suspensions_known/1_1_$special_atomic/1___1'(D1), + '$run_suspensions_known/1_1_$special_compound/1___1'(E1), + '$run_suspensions_known/1_1_$special_ground/1___1'(F1), + '$run_suspensions_known/1_1_$special_integer/1___1'(H3), + '$run_suspensions_known/1_1_$special_float/1___1'(J3), + '$run_suspensions_known/1_1_$special_number/1___1'(L3), + '$run_suspensions_known/1_1_$special_=\\=/2___2'(N3), + '$run_suspensions_known/1_1_$special_\\+/1___1'(P3), + '$run_suspensions_known/1_1_$special_functor/3___3'(R3), + '$run_suspensions_known/1_1_$special_\\=/2___2'(T3), + '$run_suspensions_known/1_1_$special_=/2___2'(V3), + '$run_suspensions_known/1_1_$special_\\==/2___2'(X3), + '$run_suspensions_known/1_1_$special_==/2___2'(Z3), + '$run_suspensions_known/1_1_$special_= - term_variables(N,P), - attach_increment(P,v(C,G,H)) + ( compound(A) -> + term_variables(A,G4), + attach_increment(G4,v(W,X,Y,Z,A1,B1,C1,D1,E1,F1,G1,H1,I1,J1,K1,L1,M1,N1,O1,P1,Q1,R1)) ; true ), - 'chr run_suspensions_loop'([G,H]) + '$run_suspensions_variables___1'(X), + '$run_suspensions_known/1_1_$default___1'(Y), + '$run_suspensions_known/1_1_$special_;/2___2'(Z), + '$run_suspensions_known/1_1_$special_nonvar/1___1'(A1), + '$run_suspensions_known/1_1_$special_var/1___1'(B1), + '$run_suspensions_known/1_1_$special_atom/1___1'(C1), + '$run_suspensions_known/1_1_$special_atomic/1___1'(D1), + '$run_suspensions_known/1_1_$special_compound/1___1'(E1), + '$run_suspensions_known/1_1_$special_ground/1___1'(F1), + '$run_suspensions_known/1_1_$special_integer/1___1'(G1), + '$run_suspensions_known/1_1_$special_float/1___1'(H1), + '$run_suspensions_known/1_1_$special_number/1___1'(I1), + '$run_suspensions_known/1_1_$special_=\\=/2___2'(J1), + '$run_suspensions_known/1_1_$special_\\+/1___1'(K1), + '$run_suspensions_known/1_1_$special_functor/3___3'(L1), + '$run_suspensions_known/1_1_$special_\\=/2___2'(M1), + '$run_suspensions_known/1_1_$special_=/2___2'(N1), + '$run_suspensions_known/1_1_$special_\\==/2___2'(O1), + '$run_suspensions_known/1_1_$special_==/2___2'(P1), + '$run_suspensions_known/1_1_$special_= - true +'$novel_production'(A,B) :- + arg(3,A,C), + ( hprolog:get_ds(B,C,_) -> + fail ; - arg(4,C,G), - G=mutable(H), - D is H+1, - 'chr update_mutable'(D,G) + true + ). +'$extend_history'(A,B) :- + arg(3,A,C), + hprolog:put_ds(B,C,x,D), + setarg(3,A,D). +'$run_suspensions_variables___1'([]). +'$run_suspensions_variables___1'([A|B]) :- + A=suspension(_,C,_,D), + ( C==active -> + setarg(2,A,triggered), + variables___1__0(D,A), + ( C==triggered -> + setarg(2,A,active) + ; + true + ) + ; + true ), - ( 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)) - ) + '$run_suspensions_variables___1'(B). +'$run_suspensions_known/1_1_$default___1'([]). +'$run_suspensions_known/1_1_$default___1'([A|B]) :- + A=suspension(_,C,D,_,E), + ( C==active -> + setarg(2,A,triggered), + F is D+1, + setarg(3,A,F), + 'known/1_1_$default___1__0'(E,A), + ( C==triggered -> + setarg(2,A,active) ; 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)) - ) + ), + '$run_suspensions_known/1_1_$default___1'(B). +'$run_suspensions_known/1_1_$special_;/2___2'([]). +'$run_suspensions_known/1_1_$special_;/2___2'([A|B]) :- + A=suspension(_,C,D,_,E,F), + ( C==active -> + setarg(2,A,triggered), + G is D+1, + setarg(3,A,G), + 'known/1_1_$special_;/2___2__0'(E,F,A), + ( C==triggered -> + setarg(2,A,active) ; true ) ; true + ), + '$run_suspensions_known/1_1_$special_;/2___2'(B). +'$run_suspensions_known/1_1_$special_nonvar/1___1'([]). +'$run_suspensions_known/1_1_$special_nonvar/1___1'([A|B]) :- + A=suspension(_,C,D,_,E), + ( C==active -> + setarg(2,A,triggered), + F is D+1, + setarg(3,A,F), + 'known/1_1_$special_nonvar/1___1__0'(E,A), + ( C==triggered -> + setarg(2,A,active) + ; + true + ) + ; + true + ), + '$run_suspensions_known/1_1_$special_nonvar/1___1'(B). +'$run_suspensions_known/1_1_$special_var/1___1'([]). +'$run_suspensions_known/1_1_$special_var/1___1'([A|B]) :- + A=suspension(_,C,D,_,E), + ( C==active -> + setarg(2,A,triggered), + F is D+1, + setarg(3,A,F), + 'known/1_1_$special_var/1___1__0'(E,A), + ( C==triggered -> + setarg(2,A,active) + ; + true + ) + ; + true + ), + '$run_suspensions_known/1_1_$special_var/1___1'(B). +'$run_suspensions_known/1_1_$special_atom/1___1'([]). +'$run_suspensions_known/1_1_$special_atom/1___1'([A|B]) :- + A=suspension(_,C,_,D,_,E), + ( C==active -> + setarg(2,A,triggered), + F is D+1, + setarg(4,A,F), + 'known/1_1_$special_atom/1___1__0'(E,A), + ( C==triggered -> + setarg(2,A,active) + ; + true + ) + ; + true + ), + '$run_suspensions_known/1_1_$special_atom/1___1'(B). +'$run_suspensions_known/1_1_$special_atomic/1___1'([]). +'$run_suspensions_known/1_1_$special_atomic/1___1'([A|B]) :- + A=suspension(_,C,_,D,_,E), + ( C==active -> + setarg(2,A,triggered), + F is D+1, + setarg(4,A,F), + 'known/1_1_$special_atomic/1___1__0'(E,A), + ( C==triggered -> + setarg(2,A,active) + ; + true + ) + ; + true + ), + '$run_suspensions_known/1_1_$special_atomic/1___1'(B). +'$run_suspensions_known/1_1_$special_compound/1___1'([]). +'$run_suspensions_known/1_1_$special_compound/1___1'([A|B]) :- + A=suspension(_,C,_,D,_,E), + ( C==active -> + setarg(2,A,triggered), + F is D+1, + setarg(4,A,F), + 'known/1_1_$special_compound/1___1__0'(E,A), + ( C==triggered -> + setarg(2,A,active) + ; + true + ) + ; + true + ), + '$run_suspensions_known/1_1_$special_compound/1___1'(B). +'$run_suspensions_known/1_1_$special_ground/1___1'([]). +'$run_suspensions_known/1_1_$special_ground/1___1'([A|B]) :- + A=suspension(_,C,_,D,_,E), + ( C==active -> + setarg(2,A,triggered), + F is D+1, + setarg(4,A,F), + 'known/1_1_$special_ground/1___1__0'(E,A), + ( C==triggered -> + setarg(2,A,active) + ; + true + ) + ; + true + ), + '$run_suspensions_known/1_1_$special_ground/1___1'(B). +'$run_suspensions_known/1_1_$special_integer/1___1'([]). +'$run_suspensions_known/1_1_$special_integer/1___1'([A|B]) :- + A=suspension(_,C,_,D,_,E), + ( C==active -> + setarg(2,A,triggered), + F is D+1, + setarg(4,A,F), + 'known/1_1_$special_integer/1___1__0'(E,A), + ( C==triggered -> + setarg(2,A,active) + ; + true + ) + ; + true + ), + '$run_suspensions_known/1_1_$special_integer/1___1'(B). +'$run_suspensions_known/1_1_$special_float/1___1'([]). +'$run_suspensions_known/1_1_$special_float/1___1'([A|B]) :- + A=suspension(_,C,_,D,_,E), + ( C==active -> + setarg(2,A,triggered), + F is D+1, + setarg(4,A,F), + 'known/1_1_$special_float/1___1__0'(E,A), + ( C==triggered -> + setarg(2,A,active) + ; + true + ) + ; + true + ), + '$run_suspensions_known/1_1_$special_float/1___1'(B). +'$run_suspensions_known/1_1_$special_number/1___1'([]). +'$run_suspensions_known/1_1_$special_number/1___1'([A|B]) :- + A=suspension(_,C,_,D,_,E), + ( C==active -> + setarg(2,A,triggered), + F is D+1, + setarg(4,A,F), + 'known/1_1_$special_number/1___1__0'(E,A), + ( C==triggered -> + setarg(2,A,active) + ; + true + ) + ; + true + ), + '$run_suspensions_known/1_1_$special_number/1___1'(B). +'$run_suspensions_known/1_1_$special_=\\=/2___2'([]). +'$run_suspensions_known/1_1_$special_=\\=/2___2'([A|B]) :- + A=suspension(_,C,_,D,_,E,F), + ( C==active -> + setarg(2,A,triggered), + G is D+1, + setarg(4,A,G), + 'known/1_1_$special_=\\=/2___2__0'(E,F,A), + ( C==triggered -> + setarg(2,A,active) + ; + true + ) + ; + true + ), + '$run_suspensions_known/1_1_$special_=\\=/2___2'(B). +'$run_suspensions_known/1_1_$special_\\+/1___1'([]). +'$run_suspensions_known/1_1_$special_\\+/1___1'([A|B]) :- + A=suspension(_,C,D,_,E), + ( C==active -> + setarg(2,A,triggered), + F is D+1, + setarg(3,A,F), + 'known/1_1_$special_\\+/1___1__0'(E,A), + ( C==triggered -> + setarg(2,A,active) + ; + true + ) + ; + true + ), + '$run_suspensions_known/1_1_$special_\\+/1___1'(B). +'$run_suspensions_known/1_1_$special_functor/3___3'([]). +'$run_suspensions_known/1_1_$special_functor/3___3'([A|B]) :- + A=suspension(_,C,D,_,E,F,G), + ( C==active -> + setarg(2,A,triggered), + H is D+1, + setarg(3,A,H), + 'known/1_1_$special_functor/3___3__0'(E,F,G,A), + ( C==triggered -> + setarg(2,A,active) + ; + true + ) + ; + true + ), + '$run_suspensions_known/1_1_$special_functor/3___3'(B). +'$run_suspensions_known/1_1_$special_\\=/2___2'([]). +'$run_suspensions_known/1_1_$special_\\=/2___2'([A|B]) :- + A=suspension(_,C,_,D,_,E,F), + ( C==active -> + setarg(2,A,triggered), + G is D+1, + setarg(4,A,G), + 'known/1_1_$special_\\=/2___2__0'(E,F,A), + ( C==triggered -> + setarg(2,A,active) + ; + true + ) + ; + true + ), + '$run_suspensions_known/1_1_$special_\\=/2___2'(B). +'$run_suspensions_known/1_1_$special_=/2___2'([]). +'$run_suspensions_known/1_1_$special_=/2___2'([A|B]) :- + A=suspension(_,C,D,_,E,F), + ( C==active -> + setarg(2,A,triggered), + G is D+1, + setarg(3,A,G), + 'known/1_1_$special_=/2___2__0'(E,F,A), + ( C==triggered -> + setarg(2,A,active) + ; + true + ) + ; + true + ), + '$run_suspensions_known/1_1_$special_=/2___2'(B). +'$run_suspensions_known/1_1_$special_\\==/2___2'([]). +'$run_suspensions_known/1_1_$special_\\==/2___2'([A|B]) :- + A=suspension(_,C,_,D,_,E,F), + ( C==active -> + setarg(2,A,triggered), + G is D+1, + setarg(4,A,G), + 'known/1_1_$special_\\==/2___2__0'(E,F,A), + ( C==triggered -> + setarg(2,A,active) + ; + true + ) + ; + true + ), + '$run_suspensions_known/1_1_$special_\\==/2___2'(B). +'$run_suspensions_known/1_1_$special_==/2___2'([]). +'$run_suspensions_known/1_1_$special_==/2___2'([A|B]) :- + A=suspension(_,C,_,D,_,E,F), + ( C==active -> + setarg(2,A,triggered), + G is D+1, + setarg(4,A,G), + 'known/1_1_$special_==/2___2__0'(E,F,A), + ( C==triggered -> + setarg(2,A,active) + ; + true + ) + ; + true + ), + '$run_suspensions_known/1_1_$special_==/2___2'(B). +'$run_suspensions_known/1_1_$special_= + setarg(2,A,triggered), + G is D+1, + setarg(4,A,G), + 'known/1_1_$special_= + setarg(2,A,active) + ; + true + ) + ; + true + ), + '$run_suspensions_known/1_1_$special_= + setarg(2,A,triggered), + G is D+1, + setarg(4,A,G), + 'known/1_1_$special_=:=/2___2__0'(E,F,A), + ( C==triggered -> + setarg(2,A,active) + ; + true + ) + ; + true + ), + '$run_suspensions_known/1_1_$special_=:=/2___2'(B). +'$enumerate_constraints'(A) :- + ( nonvar(A) -> + functor(A,B,_), + '$enumerate_constraints'(B,A) + ; + '$enumerate_constraints'(_,A) ). -'$enumerate_suspensions'(A) :- +'$enumerate_constraints'(variables,A) :- + nb_getval('$chr_store_global_list_guard_entailment____variables___1',C), + 'chr sbag_member'(B,C), + B=suspension(_,_,_,D), + A=variables(D). +'$enumerate_constraints'('known/1_1_$default',A) :- + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$default___1',C), + 'chr sbag_member'(B,C), + B=suspension(_,_,_,_,D), + A='known/1_1_$default'(D). +'$enumerate_constraints'('known/1_1_$special_;/2',A) :- + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',C), + 'chr sbag_member'(B,C), + B=suspension(_,_,_,_,D,E), + A='known/1_1_$special_;/2'(D,E). +'$enumerate_constraints'('known/1_1_$special_nonvar/1',A) :- + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_nonvar/1___1',C), + 'chr sbag_member'(B,C), + B=suspension(_,_,_,_,D), + A='known/1_1_$special_nonvar/1'(D). +'$enumerate_constraints'('known/1_1_$special_var/1',A) :- + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_var/1___1',C), + 'chr sbag_member'(B,C), + B=suspension(_,_,_,_,D), + A='known/1_1_$special_var/1'(D). +'$enumerate_constraints'('known/1_1_$special_atom/1',A) :- + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_atom/1___1',C), + 'chr sbag_member'(B,C), + B=suspension(_,_,_,_,_,D), + A='known/1_1_$special_atom/1'(D). +'$enumerate_constraints'('known/1_1_$special_atomic/1',A) :- + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_atomic/1___1',C), + 'chr sbag_member'(B,C), + B=suspension(_,_,_,_,_,D), + A='known/1_1_$special_atomic/1'(D). +'$enumerate_constraints'('known/1_1_$special_compound/1',A) :- + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_compound/1___1',C), + 'chr sbag_member'(B,C), + B=suspension(_,_,_,_,_,D), + A='known/1_1_$special_compound/1'(D). +'$enumerate_constraints'('known/1_1_$special_ground/1',A) :- + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_ground/1___1',C), + 'chr sbag_member'(B,C), + B=suspension(_,_,_,_,_,D), + A='known/1_1_$special_ground/1'(D). +'$enumerate_constraints'('known/1_1_$special_integer/1',A) :- + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_integer/1___1',C), + 'chr sbag_member'(B,C), + B=suspension(_,_,_,_,_,D), + A='known/1_1_$special_integer/1'(D). +'$enumerate_constraints'('known/1_1_$special_float/1',A) :- + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_float/1___1',C), + 'chr sbag_member'(B,C), + B=suspension(_,_,_,_,_,D), + A='known/1_1_$special_float/1'(D). +'$enumerate_constraints'('known/1_1_$special_number/1',A) :- + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_number/1___1',C), + 'chr sbag_member'(B,C), + B=suspension(_,_,_,_,_,D), + A='known/1_1_$special_number/1'(D). +'$enumerate_constraints'('known/1_1_$special_=\\=/2',A) :- + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_=\\=/2___2',C), + 'chr sbag_member'(B,C), + B=suspension(_,_,_,_,_,D,E), + A='known/1_1_$special_=\\=/2'(D,E). +'$enumerate_constraints'('known/1_1_$special_\\+/1',A) :- + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',C), + 'chr sbag_member'(B,C), + B=suspension(_,_,_,_,D), + A='known/1_1_$special_\\+/1'(D). +'$enumerate_constraints'('known/1_1_$special_functor/3',A) :- + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_functor/3___3',C), + 'chr sbag_member'(B,C), + B=suspension(_,_,_,_,D,E,F), + A='known/1_1_$special_functor/3'(D,E,F). +'$enumerate_constraints'('known/1_1_$special_\\=/2',A) :- + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\=/2___2',C), + 'chr sbag_member'(B,C), + B=suspension(_,_,_,_,_,D,E), + A='known/1_1_$special_\\=/2'(D,E). +'$enumerate_constraints'('known/1_1_$special_=/2',A) :- + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_=/2___2',C), + 'chr sbag_member'(B,C), + B=suspension(_,_,_,_,D,E), + A='known/1_1_$special_=/2'(D,E). +'$enumerate_constraints'('known/1_1_$special_\\==/2',A) :- + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\==/2___2',C), + 'chr sbag_member'(B,C), + B=suspension(_,_,_,_,_,D,E), + A='known/1_1_$special_\\==/2'(D,E). +'$enumerate_constraints'('known/1_1_$special_==/2',A) :- + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_==/2___2',C), + 'chr sbag_member'(B,C), + B=suspension(_,_,_,_,_,D,E), + A='known/1_1_$special_==/2'(D,E). +'$enumerate_constraints'('known/1_1_$special_==H1), + !, + 'known/1_1_$special_>=/2'(G1,H1) + ) + ; + A=(I1>J1), + !, + 'known/1_1_$special_>/2'(I1,J1) + ) + ; + A=(K1==N), + !, + 'test/1_1_$special_>=/2'(M,N) + ) + ; + A=(O>P), + !, + 'test/1_1_$special_>/2'(O,P) + ) + ; + A=(Q=\=R), + !, + 'test/1_1_$special_=\\=/2'(Q,R) + ) + ; + A=(S= + A=suspension(_,_,_,_,H,I), + setarg(2,A,removed), + term_variables(term(H,I),C), + arg(4,A,D), + ( var(D) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',E), + E=[_|F], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',F), + ( F=[G|_] -> + setarg(4,G,_) + ; + true + ) + ; + D=[_,_|F], + setarg(2,D,F), + ( F=[G|_] -> + setarg(4,G,D) + ; + true + ) + ), + 'detach_known/1_1_$special_;/2___2'(C,A), + cleanup___0__0__0__1(B) + ; + cleanup___0__0__0__1(B) + ). +cleanup :- + cleanup___0__1. +cleanup___0__1 :- + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_nonvar/1___1',A), + !, + cleanup___0__1__0__2(A). +cleanup___0__1__0__2([]) :- + cleanup___0__2. +cleanup___0__1__0__2([A|B]) :- + ( A=suspension(_,active,_,_,_) -> + A=suspension(_,_,_,_,H), + setarg(2,A,removed), + term_variables(H,C), + arg(4,A,D), + ( var(D) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_nonvar/1___1',E), + E=[_|F], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_nonvar/1___1',F), + ( F=[G|_] -> + setarg(4,G,_) + ; + true + ) + ; + D=[_,_|F], + setarg(2,D,F), + ( F=[G|_] -> + setarg(4,G,D) + ; + true + ) + ), + 'detach_known/1_1_$special_nonvar/1___1'(C,A), + cleanup___0__1__0__2(B) + ; + cleanup___0__1__0__2(B) + ). +cleanup___0__1 :- + cleanup___0__2. +cleanup___0__2 :- + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_var/1___1',A), + !, + cleanup___0__2__0__3(A). +cleanup___0__2__0__3([]) :- + cleanup___0__3. +cleanup___0__2__0__3([A|B]) :- + ( A=suspension(_,active,_,_,_) -> + A=suspension(_,_,_,_,H), + setarg(2,A,removed), + term_variables(H,C), + arg(4,A,D), + ( var(D) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_var/1___1',E), + E=[_|F], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_var/1___1',F), + ( F=[G|_] -> + setarg(4,G,_) + ; + true + ) + ; + D=[_,_|F], + setarg(2,D,F), + ( F=[G|_] -> + setarg(4,G,D) + ; + true + ) + ), + 'detach_known/1_1_$special_var/1___1'(C,A), + cleanup___0__2__0__3(B) + ; + cleanup___0__2__0__3(B) + ). +cleanup___0__2 :- + cleanup___0__3. +cleanup___0__3 :- + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_atom/1___1',A), + !, + cleanup___0__3__0__4(A). +cleanup___0__3__0__4([]) :- + cleanup___0__4. +cleanup___0__3__0__4([A|B]) :- + ( A=suspension(_,active,_,_,_,_) -> + A=suspension(_,_,_,_,_,H), + setarg(2,A,removed), + term_variables(H,C), + arg(5,A,D), + ( var(D) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_atom/1___1',E), + E=[_|F], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_atom/1___1',F), + ( F=[G|_] -> + setarg(5,G,_) + ; + true + ) + ; + D=[_,_|F], + setarg(2,D,F), + ( F=[G|_] -> + setarg(5,G,D) + ; + true + ) + ), + 'detach_known/1_1_$special_atom/1___1'(C,A), + cleanup___0__3__0__4(B) + ; + cleanup___0__3__0__4(B) + ). +cleanup___0__3 :- + cleanup___0__4. +cleanup___0__4 :- + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_atomic/1___1',A), + !, + cleanup___0__4__0__5(A). +cleanup___0__4__0__5([]) :- + cleanup___0__5. +cleanup___0__4__0__5([A|B]) :- + ( A=suspension(_,active,_,_,_,_) -> + A=suspension(_,_,_,_,_,H), + setarg(2,A,removed), + term_variables(H,C), + arg(5,A,D), + ( var(D) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_atomic/1___1',E), + E=[_|F], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_atomic/1___1',F), + ( F=[G|_] -> + setarg(5,G,_) + ; + true + ) + ; + D=[_,_|F], + setarg(2,D,F), + ( F=[G|_] -> + setarg(5,G,D) + ; + true + ) + ), + 'detach_known/1_1_$special_atomic/1___1'(C,A), + cleanup___0__4__0__5(B) + ; + cleanup___0__4__0__5(B) + ). +cleanup___0__4 :- + cleanup___0__5. +cleanup___0__5 :- + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_compound/1___1',A), + !, + cleanup___0__5__0__6(A). +cleanup___0__5__0__6([]) :- + cleanup___0__6. +cleanup___0__5__0__6([A|B]) :- + ( A=suspension(_,active,_,_,_,_) -> + A=suspension(_,_,_,_,_,H), + setarg(2,A,removed), + term_variables(H,C), + arg(5,A,D), + ( var(D) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_compound/1___1',E), + E=[_|F], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_compound/1___1',F), + ( F=[G|_] -> + setarg(5,G,_) + ; + true + ) + ; + D=[_,_|F], + setarg(2,D,F), + ( F=[G|_] -> + setarg(5,G,D) + ; + true + ) + ), + 'detach_known/1_1_$special_compound/1___1'(C,A), + cleanup___0__5__0__6(B) + ; + cleanup___0__5__0__6(B) + ). +cleanup___0__5 :- + cleanup___0__6. +cleanup___0__6 :- + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_ground/1___1',A), + !, + cleanup___0__6__0__7(A). +cleanup___0__6__0__7([]) :- + cleanup___0__7. +cleanup___0__6__0__7([A|B]) :- + ( A=suspension(_,active,_,_,_,_) -> + A=suspension(_,_,_,_,_,H), + setarg(2,A,removed), + term_variables(H,C), + arg(5,A,D), + ( var(D) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_ground/1___1',E), + E=[_|F], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_ground/1___1',F), + ( F=[G|_] -> + setarg(5,G,_) + ; + true + ) + ; + D=[_,_|F], + setarg(2,D,F), + ( F=[G|_] -> + setarg(5,G,D) + ; + true + ) + ), + 'detach_known/1_1_$special_ground/1___1'(C,A), + cleanup___0__6__0__7(B) + ; + cleanup___0__6__0__7(B) + ). +cleanup___0__6 :- + cleanup___0__7. +cleanup___0__7 :- + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_integer/1___1',A), + !, + cleanup___0__7__0__8(A). +cleanup___0__7__0__8([]) :- + cleanup___0__8. +cleanup___0__7__0__8([A|B]) :- + ( A=suspension(_,active,_,_,_,_) -> + A=suspension(_,_,_,_,_,H), + setarg(2,A,removed), + term_variables(H,C), + arg(5,A,D), + ( var(D) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_integer/1___1',E), + E=[_|F], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_integer/1___1',F), + ( F=[G|_] -> + setarg(5,G,_) + ; + true + ) + ; + D=[_,_|F], + setarg(2,D,F), + ( F=[G|_] -> + setarg(5,G,D) + ; + true + ) + ), + 'detach_known/1_1_$special_integer/1___1'(C,A), + cleanup___0__7__0__8(B) + ; + cleanup___0__7__0__8(B) + ). +cleanup___0__7 :- + cleanup___0__8. +cleanup___0__8 :- + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_float/1___1',A), + !, + cleanup___0__8__0__9(A). +cleanup___0__8__0__9([]) :- + cleanup___0__9. +cleanup___0__8__0__9([A|B]) :- + ( A=suspension(_,active,_,_,_,_) -> + A=suspension(_,_,_,_,_,H), + setarg(2,A,removed), + term_variables(H,C), + arg(5,A,D), + ( var(D) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_float/1___1',E), + E=[_|F], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_float/1___1',F), + ( F=[G|_] -> + setarg(5,G,_) + ; + true + ) + ; + D=[_,_|F], + setarg(2,D,F), + ( F=[G|_] -> + setarg(5,G,D) + ; + true + ) + ), + 'detach_known/1_1_$special_float/1___1'(C,A), + cleanup___0__8__0__9(B) + ; + cleanup___0__8__0__9(B) + ). +cleanup___0__8 :- + cleanup___0__9. +cleanup___0__9 :- + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_number/1___1',A), + !, + cleanup___0__9__0__10(A). +cleanup___0__9__0__10([]) :- + cleanup___0__10. +cleanup___0__9__0__10([A|B]) :- + ( A=suspension(_,active,_,_,_,_) -> + A=suspension(_,_,_,_,_,H), + setarg(2,A,removed), + term_variables(H,C), + arg(5,A,D), + ( var(D) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_number/1___1',E), + E=[_|F], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_number/1___1',F), + ( F=[G|_] -> + setarg(5,G,_) + ; + true + ) + ; + D=[_,_|F], + setarg(2,D,F), + ( F=[G|_] -> + setarg(5,G,D) + ; + true + ) + ), + 'detach_known/1_1_$special_number/1___1'(C,A), + cleanup___0__9__0__10(B) + ; + cleanup___0__9__0__10(B) + ). +cleanup___0__9 :- + cleanup___0__10. +cleanup___0__10 :- + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_=\\=/2___2',A), + !, + cleanup___0__10__0__11(A). +cleanup___0__10__0__11([]) :- + cleanup___0__11. +cleanup___0__10__0__11([A|B]) :- + ( A=suspension(_,active,_,_,_,_,_) -> + A=suspension(_,_,_,_,_,H,I), + setarg(2,A,removed), + term_variables(term(H,I),C), + arg(5,A,D), + ( var(D) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_=\\=/2___2',E), + E=[_|F], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_=\\=/2___2',F), + ( F=[G|_] -> + setarg(5,G,_) + ; + true + ) + ; + D=[_,_|F], + setarg(2,D,F), + ( F=[G|_] -> + setarg(5,G,D) + ; + true + ) + ), + 'detach_known/1_1_$special_=\\=/2___2'(C,A), + cleanup___0__10__0__11(B) + ; + cleanup___0__10__0__11(B) + ). +cleanup___0__10 :- + cleanup___0__11. +cleanup___0__11 :- + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',A), + !, + cleanup___0__11__0__12(A). +cleanup___0__11__0__12([]) :- + cleanup___0__12. +cleanup___0__11__0__12([A|B]) :- + ( A=suspension(_,active,_,_,_) -> + A=suspension(_,_,_,_,H), + setarg(2,A,removed), + term_variables(H,C), + arg(4,A,D), + ( var(D) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',E), + E=[_|F], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',F), + ( F=[G|_] -> + setarg(4,G,_) + ; + true + ) + ; + D=[_,_|F], + setarg(2,D,F), + ( F=[G|_] -> + setarg(4,G,D) + ; + true + ) + ), + 'detach_known/1_1_$special_\\+/1___1'(C,A), + cleanup___0__11__0__12(B) + ; + cleanup___0__11__0__12(B) + ). +cleanup___0__11 :- + cleanup___0__12. +cleanup___0__12 :- + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_functor/3___3',A), + !, + cleanup___0__12__0__13(A). +cleanup___0__12__0__13([]) :- + cleanup___0__13. +cleanup___0__12__0__13([A|B]) :- + ( A=suspension(_,active,_,_,_,_,_) -> + A=suspension(_,_,_,_,H,I,J), + setarg(2,A,removed), + term_variables(term(H,I,J),C), + arg(4,A,D), + ( var(D) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_functor/3___3',E), + E=[_|F], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_functor/3___3',F), + ( F=[G|_] -> + setarg(4,G,_) + ; + true + ) + ; + D=[_,_|F], + setarg(2,D,F), + ( F=[G|_] -> + setarg(4,G,D) + ; + true + ) + ), + 'detach_known/1_1_$special_functor/3___3'(C,A), + cleanup___0__12__0__13(B) + ; + cleanup___0__12__0__13(B) + ). +cleanup___0__12 :- + cleanup___0__13. +cleanup___0__13 :- + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\=/2___2',A), + !, + cleanup___0__13__0__14(A). +cleanup___0__13__0__14([]) :- + cleanup___0__14. +cleanup___0__13__0__14([A|B]) :- + ( A=suspension(_,active,_,_,_,_,_) -> + A=suspension(_,_,_,_,_,H,I), + setarg(2,A,removed), + term_variables(term(H,I),C), + arg(5,A,D), + ( var(D) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\=/2___2',E), + E=[_|F], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\=/2___2',F), + ( F=[G|_] -> + setarg(5,G,_) + ; + true + ) + ; + D=[_,_|F], + setarg(2,D,F), + ( F=[G|_] -> + setarg(5,G,D) + ; + true + ) + ), + 'detach_known/1_1_$special_\\=/2___2'(C,A), + cleanup___0__13__0__14(B) + ; + cleanup___0__13__0__14(B) + ). +cleanup___0__13 :- + cleanup___0__14. +cleanup___0__14 :- + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_=/2___2',A), + !, + cleanup___0__14__0__15(A). +cleanup___0__14__0__15([]) :- + cleanup___0__15. +cleanup___0__14__0__15([A|B]) :- + ( A=suspension(_,active,_,_,_,_) -> + A=suspension(_,_,_,_,H,I), + setarg(2,A,removed), + term_variables(term(H,I),C), + arg(4,A,D), + ( var(D) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_=/2___2',E), + E=[_|F], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_=/2___2',F), + ( F=[G|_] -> + setarg(4,G,_) + ; + true + ) + ; + D=[_,_|F], + setarg(2,D,F), + ( F=[G|_] -> + setarg(4,G,D) + ; + true + ) + ), + 'detach_known/1_1_$special_=/2___2'(C,A), + cleanup___0__14__0__15(B) + ; + cleanup___0__14__0__15(B) + ). +cleanup___0__14 :- + cleanup___0__15. +cleanup___0__15 :- + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\==/2___2',A), + !, + cleanup___0__15__0__17(A). +cleanup___0__15__0__17([]) :- + cleanup___0__16. +cleanup___0__15__0__17([A|B]) :- + ( A=suspension(_,active,_,_,_,_,_) -> + A=suspension(_,_,_,_,_,H,I), + setarg(2,A,removed), + term_variables(term(H,I),C), + arg(5,A,D), + ( var(D) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\==/2___2',E), + E=[_|F], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\==/2___2',F), + ( F=[G|_] -> + setarg(5,G,_) + ; + true + ) + ; + D=[_,_|F], + setarg(2,D,F), + ( F=[G|_] -> + setarg(5,G,D) + ; + true + ) + ), + 'detach_known/1_1_$special_\\==/2___2'(C,A), + cleanup___0__15__0__17(B) + ; + cleanup___0__15__0__17(B) + ). +cleanup___0__15 :- + cleanup___0__16. +cleanup___0__16 :- + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_==/2___2',A), + !, + cleanup___0__16__0__18(A). +cleanup___0__16__0__18([]) :- + cleanup___0__17. +cleanup___0__16__0__18([A|B]) :- + ( A=suspension(_,active,_,_,_,_,_) -> + A=suspension(_,_,_,_,_,H,I), + setarg(2,A,removed), + term_variables(term(H,I),C), + arg(5,A,D), + ( var(D) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_==/2___2',E), + E=[_|F], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_==/2___2',F), + ( F=[G|_] -> + setarg(5,G,_) + ; + true + ) + ; + D=[_,_|F], + setarg(2,D,F), + ( F=[G|_] -> + setarg(5,G,D) + ; + true + ) + ), + 'detach_known/1_1_$special_==/2___2'(C,A), + cleanup___0__16__0__18(B) + ; + cleanup___0__16__0__18(B) + ). +cleanup___0__16 :- + cleanup___0__17. +cleanup___0__17 :- + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_= + A=suspension(_,_,_,_,_,H,I), + setarg(2,A,removed), + term_variables(term(H,I),C), + arg(5,A,D), + ( var(D) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_= + setarg(5,G,_) + ; + true + ) + ; + D=[_,_|F], + setarg(2,D,F), + ( F=[G|_] -> + setarg(5,G,D) + ; + true + ) + ), + 'detach_known/1_1_$special_= + A=suspension(_,_,_,_,_,H,I), + setarg(2,A,removed), + term_variables(term(H,I),C), + arg(5,A,D), + ( var(D) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_=:=/2___2',E), + E=[_|F], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_=:=/2___2',F), + ( F=[G|_] -> + setarg(5,G,_) + ; + true + ) + ; + D=[_,_|F], + setarg(2,D,F), + ( F=[G|_] -> + setarg(5,G,D) + ; + true + ) + ), + 'detach_known/1_1_$special_=:=/2___2'(C,A), + cleanup___0__18__0__24(B) + ; + cleanup___0__18__0__24(B) + ). +cleanup___0__18 :- + cleanup___0__19. +cleanup___0__19 :- + nb_getval('$chr_store_global_ground_guard_entailment____known/1_1_$special_fail/0___0',A), + !, + cleanup___0__19__0__25(A). +cleanup___0__19__0__25([]) :- + cleanup___0__20. +cleanup___0__19__0__25([A|B]) :- + ( A=suspension(_,active,_) -> + setarg(2,A,removed), + arg(3,A,C), + ( var(C) -> + nb_getval('$chr_store_global_ground_guard_entailment____known/1_1_$special_fail/0___0',D), + D=[_|E], + b_setval('$chr_store_global_ground_guard_entailment____known/1_1_$special_fail/0___0',E), + ( E=[F|_] -> + setarg(3,F,_) + ; + true + ) + ; + C=[_,_|E], + setarg(2,C,E), + ( E=[F|_] -> + setarg(3,F,C) + ; + true + ) + ), + cleanup___0__19__0__25(B) + ; + cleanup___0__19__0__25(B) + ). +cleanup___0__19 :- + cleanup___0__20. +cleanup___0__20 :- + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$default___1',A), + !, + cleanup___0__20__0__26(A). +cleanup___0__20__0__26([]) :- + cleanup___0__21. +cleanup___0__20__0__26([A|B]) :- + ( A=suspension(_,active,_,_,_) -> + A=suspension(_,_,_,_,H), + setarg(2,A,removed), + term_variables(H,C), + arg(4,A,D), + ( var(D) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$default___1',E), + E=[_|F], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$default___1',F), + ( F=[G|_] -> + setarg(4,G,_) + ; + true + ) + ; + D=[_,_|F], + setarg(2,D,F), + ( F=[G|_] -> + setarg(4,G,D) + ; + true + ) + ), + 'detach_known/1_1_$default___1'(C,A), + cleanup___0__20__0__26(B) + ; + cleanup___0__20__0__26(B) + ). +cleanup___0__20 :- + cleanup___0__21. +cleanup___0__21 :- + nb_getval('$chr_store_global_list_guard_entailment____variables___1',A), + !, + cleanup___0__21__0__27(A). +cleanup___0__21__0__27([]) :- + cleanup___0__22. +cleanup___0__21__0__27([A|B]) :- + ( A=suspension(_,active,_,_) -> + A=suspension(_,_,_,H), + setarg(2,A,removed), + term_variables(H,C), + arg(3,A,D), + ( var(D) -> + nb_getval('$chr_store_global_list_guard_entailment____variables___1',E), + E=[_|F], + b_setval('$chr_store_global_list_guard_entailment____variables___1',F), + ( F=[G|_] -> + setarg(3,G,_) + ; + true + ) + ; + D=[_,_|F], + setarg(2,D,F), + ( F=[G|_] -> + setarg(3,G,D) + ; + true + ) + ), + detach_variables___1(C,A), + cleanup___0__21__0__27(B) + ; + cleanup___0__21__0__27(B) + ). +cleanup___0__21 :- + cleanup___0__22. +cleanup___0__22. +variables(A) :- + variables___1__0(A,_). +variables___1__0(A,B) :- + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_functor/3___3',G), 'chr sbag_member'(C,G), - C=suspension(_,mutable(active),_,_,_,_,D), + C=suspension(_,active,_,_,D,E,F), + ground(F), + ground(E), + var(D), + !, + C=suspension(_,_,_,_,U,V,W), + setarg(2,C,removed), + term_variables(term(U,V,W),J), + arg(4,C,Q), + ( var(Q) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_functor/3___3',R), + R=[_|S], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_functor/3___3',S), + ( S=[T|_] -> + setarg(4,T,_) + ; + true + ) + ; + Q=[_,_|S], + setarg(2,Q,S), + ( S=[T|_] -> + setarg(4,T,Q) + ; + true + ) + ), + 'detach_known/1_1_$special_functor/3___3'(J,C), + ( var(B) -> + true + ; + B=suspension(_,_,_,P), + setarg(2,B,removed), + term_variables(P,K), + arg(3,B,L), + ( var(L) -> + nb_getval('$chr_store_global_list_guard_entailment____variables___1',M), + M=[_|N], + b_setval('$chr_store_global_list_guard_entailment____variables___1',N), + ( N=[O|_] -> + setarg(3,O,_) + ; + true + ) + ; + L=[_,_|N], + setarg(2,L,N), + ( N=[O|_] -> + setarg(3,O,L) + ; + true + ) + ), + detach_variables___1(K,B) + ), + functor(D,E,F), + D=..[_|H], + append(H,A,I), + variables(I). +variables___1__0(A,B) :- + ( var(B) -> + B=suspension(D,active,_,A), + term_variables(A,C), + 'chr none_locked'(C), + 'chr gen_id'(D), + nb_getval('$chr_store_global_list_guard_entailment____variables___1',E), + F=[B|E], + b_setval('$chr_store_global_list_guard_entailment____variables___1',F), + ( E=[G|_] -> + setarg(3,G,F) + ; + true + ), + attach_variables___1(C,B) + ; + setarg(2,B,active) + ). +'test/1_1_$default'(_) :- + nb_getval('$chr_store_global_ground_guard_entailment____known/1_1_$special_fail/0___0',B), + 'chr sbag_member'(A,B), + A=suspension(_,active,_), + !. +'test/1_1_$default'(A) :- + nonvar(A), + ( + ( + ( + ( + ( + A=nonvar(B), + ( 'chr newvia_1'(B,F) -> + get_attr(F,guard_entailment,G), + G=v(_,_,_,_,E,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_nonvar/1___1',E) + ), + 'chr sbag_member'(C,E), + C=suspension(_,active,_,_,D), + D==B, + ! + ; + A=var(H), + ( 'chr newvia_1'(H,L) -> + get_attr(L,guard_entailment,M), + M=v(_,_,_,_,_,K,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_var/1___1',K) + ), + 'chr sbag_member'(I,K), + I=suspension(_,active,_,_,J), + J==H, + ! + ) + ; + A=atom(N), + ( 'chr newvia_1'(N,R) -> + get_attr(R,guard_entailment,S), + S=v(_,_,_,_,_,_,Q,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_atom/1___1',Q) + ), + 'chr sbag_member'(O,Q), + O=suspension(_,active,_,_,_,P), + P==N, + ! + ) + ; + A=atomic(T), + ( 'chr newvia_1'(T,X) -> + get_attr(X,guard_entailment,Y), + Y=v(_,_,_,_,_,_,_,W,_,_,_,_,_,_,_,_,_,_,_,_,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_atomic/1___1',W) + ), + 'chr sbag_member'(U,W), + U=suspension(_,active,_,_,_,V), + V==T, + ! + ) + ; + A=compound(Z), + ( 'chr newvia_1'(Z,D1) -> + get_attr(D1,guard_entailment,E1), + E1=v(_,_,_,_,_,_,_,_,C1,_,_,_,_,_,_,_,_,_,_,_,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_compound/1___1',C1) + ), + 'chr sbag_member'(A1,C1), + A1=suspension(_,active,_,_,_,B1), + B1==Z, + ! + ) + ; + A=(F1\=G1), + ( 'chr newvia_2'(F1,G1,L1) -> + get_attr(L1,guard_entailment,M1), + M1=v(_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,K1,_,_,_,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\=/2___2',K1) + ), + 'chr sbag_member'(H1,K1), + H1=suspension(_,active,_,_,_,I1,J1), + I1==F1, + J1==G1, + ! + ). +'test/1_1_$default'(A) :- + ( 'chr newvia_1'(A,E) -> + get_attr(E,guard_entailment,F), + F=v(_,_,D,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$default___1',D) + ), + 'chr sbag_member'(B,D), + B=suspension(_,active,_,_,C), + C==A, + !. +'test/1_1_$default'(A) :- + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',E), + 'chr sbag_member'(B,E), + B=suspension(_,active,_,_,C,D), + !, + B=suspension(_,_,_,_,L,M), + setarg(2,B,removed), + term_variables(term(L,M),G), + arg(4,B,H), + ( var(H) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',I), + I=[_|J], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',J), + ( J=[K|_] -> + setarg(4,K,_) + ; + true + ) + ; + H=[_,_|J], + setarg(2,H,J), + ( J=[K|_] -> + setarg(4,K,H) + ; + true + ) + ), + 'detach_known/1_1_$special_;/2___2'(G,B), + \+try(C,A), + !, + negate_b(C,F), + known(F), + \+try(D,A). +'test/1_1_$default'(_) :- + fail. +'test/1_1_$special_,/2'(_,_) :- + nb_getval('$chr_store_global_ground_guard_entailment____known/1_1_$special_fail/0___0',B), + 'chr sbag_member'(A,B), + A=suspension(_,active,_), + !. +'test/1_1_$special_,/2'(A,B) :- + test(A), + known(A), + test(B). +'test/1_1_$special_\\+/1'(_) :- + nb_getval('$chr_store_global_ground_guard_entailment____known/1_1_$special_fail/0___0',B), + 'chr sbag_member'(A,B), + A=suspension(_,active,_), + !. +'test/1_1_$special_\\+/1'(A) :- + ( 'chr newvia_1'(A,E) -> + get_attr(E,guard_entailment,F), + F=v(_,_,_,_,_,_,_,_,_,_,_,_,_,_,D,_,_,_,_,_,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',D) + ), + 'chr sbag_member'(B,D), + B=suspension(_,active,_,_,C), + C==A, + !. +'test/1_1_$special_\\+/1'(A) :- + nonvar(A), + ( + ( + ( + ( + ( + ( + ( + A=functor(B,C,D), + nonvar(B), + ( + 'chr lock'(B), + 'chr lock'(C), + 'chr lock'(D), + functor(B,C,D), + 'chr unlock'(B), + 'chr unlock'(C), + 'chr unlock'(D), + !, + fail + ; + ! + ) + ; + A=ground(E), + ground(E), + !, + fail + ) + ; + A=number(F), + number(F), + !, + fail + ) + ; + A=float(G), + float(G), + !, + fail + ) + ; + A=integer(H), + integer(H), + !, + fail + ) + ; + A=number(I), + nonvar(I), + ! + ) + ; + A=float(J), + nonvar(J), + ! + ) + ; + A=integer(K), + nonvar(K), + ! + ). +'test/1_1_$special_\\+/1'(A) :- + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',E), + 'chr sbag_member'(B,E), + B=suspension(_,active,_,_,C,D), + !, + B=suspension(_,_,_,_,L,M), + setarg(2,B,removed), + term_variables(term(L,M),G), + arg(4,B,H), + ( var(H) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',I), + I=[_|J], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',J), + ( J=[K|_] -> + setarg(4,K,_) + ; + true + ) + ; + H=[_,_|J], + setarg(2,H,J), + ( J=[K|_] -> + setarg(4,K,H) + ; + true + ) + ), + 'detach_known/1_1_$special_;/2___2'(G,B), + \+try(C,\+A), + !, + negate_b(C,F), + known(F), + \+try(D,\+A). +'test/1_1_$special_\\+/1'(_) :- + fail. +'test/1_1_$special_integer/1'(_) :- + nb_getval('$chr_store_global_ground_guard_entailment____known/1_1_$special_fail/0___0',B), + 'chr sbag_member'(A,B), + A=suspension(_,active,_), + !. +'test/1_1_$special_integer/1'(A) :- + ( 'chr newvia_1'(A,E) -> + get_attr(E,guard_entailment,F), + F=v(_,_,_,_,_,_,_,_,_,_,D,_,_,_,_,_,_,_,_,_,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_integer/1___1',D) + ), + 'chr sbag_member'(B,D), + B=suspension(_,active,_,_,_,C), + C==A, + !. +'test/1_1_$special_integer/1'(A) :- + integer(A), + !. +'test/1_1_$special_integer/1'(A) :- + nonvar(A), + !, + fail. +'test/1_1_$special_integer/1'(A) :- + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',E), + 'chr sbag_member'(B,E), + B=suspension(_,active,_,_,C,D), + !, + B=suspension(_,_,_,_,L,M), + setarg(2,B,removed), + term_variables(term(L,M),G), + arg(4,B,H), + ( var(H) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',I), + I=[_|J], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',J), + ( J=[K|_] -> + setarg(4,K,_) + ; + true + ) + ; + H=[_,_|J], + setarg(2,H,J), + ( J=[K|_] -> + setarg(4,K,H) + ; + true + ) + ), + 'detach_known/1_1_$special_;/2___2'(G,B), + \+try(C,integer(A)), + !, + negate_b(C,F), + known(F), + \+try(D,integer(A)). +'test/1_1_$special_integer/1'(_) :- + fail. +'test/1_1_$special_float/1'(_) :- + nb_getval('$chr_store_global_ground_guard_entailment____known/1_1_$special_fail/0___0',B), + 'chr sbag_member'(A,B), + A=suspension(_,active,_), + !. +'test/1_1_$special_float/1'(A) :- + ( 'chr newvia_1'(A,E) -> + get_attr(E,guard_entailment,F), + F=v(_,_,_,_,_,_,_,_,_,_,_,D,_,_,_,_,_,_,_,_,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_float/1___1',D) + ), + 'chr sbag_member'(B,D), + B=suspension(_,active,_,_,_,C), + C==A, + !. +'test/1_1_$special_float/1'(A) :- + float(A), + !. +'test/1_1_$special_float/1'(A) :- + nonvar(A), + !, + fail. +'test/1_1_$special_float/1'(A) :- + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',E), + 'chr sbag_member'(B,E), + B=suspension(_,active,_,_,C,D), + !, + B=suspension(_,_,_,_,L,M), + setarg(2,B,removed), + term_variables(term(L,M),G), + arg(4,B,H), + ( var(H) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',I), + I=[_|J], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',J), + ( J=[K|_] -> + setarg(4,K,_) + ; + true + ) + ; + H=[_,_|J], + setarg(2,H,J), + ( J=[K|_] -> + setarg(4,K,H) + ; + true + ) + ), + 'detach_known/1_1_$special_;/2___2'(G,B), + \+try(C,float(A)), + !, + negate_b(C,F), + known(F), + \+try(D,float(A)). +'test/1_1_$special_float/1'(_) :- + fail. +'test/1_1_$special_number/1'(_) :- + nb_getval('$chr_store_global_ground_guard_entailment____known/1_1_$special_fail/0___0',B), + 'chr sbag_member'(A,B), + A=suspension(_,active,_), + !. +'test/1_1_$special_number/1'(A) :- + ( 'chr newvia_1'(A,E) -> + get_attr(E,guard_entailment,F), + F=v(_,_,_,_,_,_,_,_,_,_,_,_,D,_,_,_,_,_,_,_,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_number/1___1',D) + ), + 'chr sbag_member'(B,D), + B=suspension(_,active,_,_,_,C), + C==A, + !. +'test/1_1_$special_number/1'(A) :- + number(A), + !. +'test/1_1_$special_number/1'(A) :- + nonvar(A), + !, + fail. +'test/1_1_$special_number/1'(A) :- + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',E), + 'chr sbag_member'(B,E), + B=suspension(_,active,_,_,C,D), + !, + B=suspension(_,_,_,_,L,M), + setarg(2,B,removed), + term_variables(term(L,M),G), + arg(4,B,H), + ( var(H) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',I), + I=[_|J], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',J), + ( J=[K|_] -> + setarg(4,K,_) + ; + true + ) + ; + H=[_,_|J], + setarg(2,H,J), + ( J=[K|_] -> + setarg(4,K,H) + ; + true + ) + ), + 'detach_known/1_1_$special_;/2___2'(G,B), + \+try(C,number(A)), + !, + negate_b(C,F), + known(F), + \+try(D,number(A)). +'test/1_1_$special_number/1'(_) :- + fail. +'test/1_1_$special_ground/1'(_) :- + nb_getval('$chr_store_global_ground_guard_entailment____known/1_1_$special_fail/0___0',B), + 'chr sbag_member'(A,B), + A=suspension(_,active,_), + !. +'test/1_1_$special_ground/1'(A) :- + ( 'chr newvia_1'(A,E) -> + get_attr(E,guard_entailment,F), + F=v(_,_,_,_,_,_,_,_,_,D,_,_,_,_,_,_,_,_,_,_,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_ground/1___1',D) + ), + 'chr sbag_member'(B,D), + B=suspension(_,active,_,_,_,C), + C==A, + !. +'test/1_1_$special_ground/1'(A) :- + ground(A), + !. +'test/1_1_$special_ground/1'(A) :- + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',E), + 'chr sbag_member'(B,E), + B=suspension(_,active,_,_,C,D), + !, + B=suspension(_,_,_,_,L,M), + setarg(2,B,removed), + term_variables(term(L,M),G), + arg(4,B,H), + ( var(H) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',I), + I=[_|J], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',J), + ( J=[K|_] -> + setarg(4,K,_) + ; + true + ) + ; + H=[_,_|J], + setarg(2,H,J), + ( J=[K|_] -> + setarg(4,K,H) + ; + true + ) + ), + 'detach_known/1_1_$special_;/2___2'(G,B), + \+try(C,ground(A)), + !, + negate_b(C,F), + known(F), + \+try(D,ground(A)). +'test/1_1_$special_ground/1'(_) :- + fail. +'test/1_1_$special_=:=/2'(_,_) :- + nb_getval('$chr_store_global_ground_guard_entailment____known/1_1_$special_fail/0___0',B), + 'chr sbag_member'(A,B), + A=suspension(_,active,_), + !. +'test/1_1_$special_=:=/2'(A,B) :- + ( 'chr newvia_2'(A,B,G) -> + get_attr(G,guard_entailment,H), + H=v(_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,F) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_=:=/2___2',F) + ), + 'chr sbag_member'(C,F), + C=suspension(_,active,_,_,_,D,E), + D==A, + E==B, + !. +'test/1_1_$special_=:=/2'(A,B) :- + A==B, + !. +'test/1_1_$special_=:=/2'(A,B) :- + ground(B), + ground(A), + ( + A=:=B, + ! + ; + !, + fail + ). +'test/1_1_$special_=:=/2'(A,B) :- + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',F), + 'chr sbag_member'(C,F), + C=suspension(_,active,_,_,D,E), + !, + C=suspension(_,_,_,_,M,N), + setarg(2,C,removed), + term_variables(term(M,N),H), + arg(4,C,I), + ( var(I) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',J), + J=[_|K], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',K), + ( K=[L|_] -> + setarg(4,L,_) + ; + true + ) + ; + I=[_,_|K], + setarg(2,I,K), + ( K=[L|_] -> + setarg(4,L,I) + ; + true + ) + ), + 'detach_known/1_1_$special_;/2___2'(H,C), + \+try(D,A=:=B), + !, + negate_b(D,G), + known(G), + \+try(E,A=:=B). +'test/1_1_$special_=:=/2'(_,_) :- + fail. +'test/1_1_$special_==/2'(_,_) :- + nb_getval('$chr_store_global_ground_guard_entailment____known/1_1_$special_fail/0___0',B), + 'chr sbag_member'(A,B), + A=suspension(_,active,_), + !. +'test/1_1_$special_==/2'(A,B) :- + ( 'chr newvia_2'(A,B,G) -> + get_attr(G,guard_entailment,H), + H=v(_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,F,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_==/2___2',F) + ), + 'chr sbag_member'(C,F), + C=suspension(_,active,_,_,_,D,E), + D==A, + E==B, + !. +'test/1_1_$special_==/2'(A,B) :- + A==B, + !. +'test/1_1_$special_==/2'(A,B) :- + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',F), + 'chr sbag_member'(C,F), + C=suspension(_,active,_,_,D,E), + !, + C=suspension(_,_,_,_,M,N), + setarg(2,C,removed), + term_variables(term(M,N),H), + arg(4,C,I), + ( var(I) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',J), + J=[_|K], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',K), + ( K=[L|_] -> + setarg(4,L,_) + ; + true + ) + ; + I=[_,_|K], + setarg(2,I,K), + ( K=[L|_] -> + setarg(4,L,I) + ; + true + ) + ), + 'detach_known/1_1_$special_;/2___2'(H,C), + \+try(D,A==B), + !, + negate_b(D,G), + known(G), + \+try(E,A==B). +'test/1_1_$special_==/2'(_,_) :- + fail. +'test/1_1_$special_true/0' :- + nb_getval('$chr_store_global_ground_guard_entailment____known/1_1_$special_fail/0___0',B), + 'chr sbag_member'(A,B), + A=suspension(_,active,_), + !. +'test/1_1_$special_true/0'. +'test/1_1_$special_functor/3'(_,_,_) :- + nb_getval('$chr_store_global_ground_guard_entailment____known/1_1_$special_fail/0___0',B), + 'chr sbag_member'(A,B), + A=suspension(_,active,_), + !. +'test/1_1_$special_functor/3'(A,B,C) :- + ( 'chr newvia'([A,B,C],I) -> + get_attr(I,guard_entailment,J), + J=v(_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,H,_,_,_,_,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_functor/3___3',H) + ), + 'chr sbag_member'(D,H), + D=suspension(_,active,_,_,E,F,G), + E==A, + F==B, + G==C, + !. +'test/1_1_$special_functor/3'(A,B,C) :- + ground(C), + ground(B), + var(A), + nb_getval('$chr_store_global_list_guard_entailment____variables___1',F), + 'chr sbag_member'(D,F), + D=suspension(_,active,_,E), + 'chr lock'(A), + 'chr lock'(E), + \+memberchk_eq(A,E), + 'chr unlock'(A), + 'chr unlock'(E), + !, + functor(A,B,C). +'test/1_1_$special_functor/3'(A,B,C) :- + nonvar(A), + ( + 'chr lock'(A), + 'chr lock'(B), + 'chr lock'(C), + functor(A,B,C), + 'chr unlock'(A), + 'chr unlock'(B), + 'chr unlock'(C), + ! + ; + !, + fail + ). +'test/1_1_$special_functor/3'(A,B,C) :- + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',G), + 'chr sbag_member'(D,G), + D=suspension(_,active,_,_,E,F), + !, + D=suspension(_,_,_,_,N,O), + setarg(2,D,removed), + term_variables(term(N,O),I), + arg(4,D,J), + ( var(J) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',K), + K=[_|L], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',L), + ( L=[M|_] -> + setarg(4,M,_) + ; + true + ) + ; + J=[_,_|L], + setarg(2,J,L), + ( L=[M|_] -> + setarg(4,M,J) + ; + true + ) + ), + 'detach_known/1_1_$special_;/2___2'(I,D), + \+try(E,functor(A,B,C)), + !, + negate_b(E,H), + known(H), + \+try(F,functor(A,B,C)). +'test/1_1_$special_functor/3'(_,_,_) :- + fail. +'test/1_1_$special_=/2'(_,_) :- + nb_getval('$chr_store_global_ground_guard_entailment____known/1_1_$special_fail/0___0',B), + 'chr sbag_member'(A,B), + A=suspension(_,active,_), + !. +'test/1_1_$special_=/2'(A,B) :- + ( 'chr newvia_2'(A,B,G) -> + get_attr(G,guard_entailment,H), + H=v(_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,F,_,_,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_=/2___2',F) + ), + 'chr sbag_member'(C,F), + C=suspension(_,active,_,_,D,E), + D==A, + E==B, + !. +'test/1_1_$special_=/2'(A,B) :- + ground(B), + ground(A), + !, + A=B. +'test/1_1_$special_=/2'(A,B) :- + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',F), + 'chr sbag_member'(C,F), + C=suspension(_,active,_,_,D,E), + !, + C=suspension(_,_,_,_,M,N), + setarg(2,C,removed), + term_variables(term(M,N),H), + arg(4,C,I), + ( var(I) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',J), + J=[_|K], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',K), + ( K=[L|_] -> + setarg(4,L,_) + ; + true + ) + ; + I=[_,_|K], + setarg(2,I,K), + ( K=[L|_] -> + setarg(4,L,I) + ; + true + ) + ), + 'detach_known/1_1_$special_;/2___2'(H,C), + \+try(D,A=B), + !, + negate_b(D,G), + known(G), + \+try(E,A=B). +'test/1_1_$special_=/2'(_,_) :- + fail. +'test/1_1_$special_;/2'(_,_) :- + nb_getval('$chr_store_global_ground_guard_entailment____known/1_1_$special_fail/0___0',B), + 'chr sbag_member'(A,B), + A=suspension(_,active,_), + !. +'test/1_1_$special_;/2'(A,B) :- + ( 'chr newvia_2'(A,B,G) -> + get_attr(G,guard_entailment,H), + H=v(_,_,_,F,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',F) + ), + 'chr sbag_member'(C,F), + C=suspension(_,active,_,_,D,E), + D==A, + E==B, + !. +'test/1_1_$special_;/2'(A,B) :- + A==fail, + !, + test(B). +'test/1_1_$special_;/2'(A,B) :- + B==fail, + !, + test(A). +'test/1_1_$special_;/2'(A,B) :- + negate_b(A,C), + negate_b(B,D), + ( + known(D), + test(A) + ; + known(C), + test(B) + ). +'test/1_1_$special_is/2'(_,_) :- + nb_getval('$chr_store_global_ground_guard_entailment____known/1_1_$special_fail/0___0',B), + 'chr sbag_member'(A,B), + A=suspension(_,active,_), + !. +'test/1_1_$special_is/2'(A,B) :- + 'test/1_1_$special_=:=/2'(A,B). +'test/1_1_$special_=/2'(_,_) :- + nb_getval('$chr_store_global_ground_guard_entailment____known/1_1_$special_fail/0___0',B), + 'chr sbag_member'(A,B), + A=suspension(_,active,_), + !. +'test/1_1_$special_>=/2'(A,B) :- + 'test/1_1_$special_=/2'(_,_) :- + nb_getval('$chr_store_global_ground_guard_entailment____known/1_1_$special_fail/0___0',B), + 'chr sbag_member'(A,B), + A=suspension(_,active,_), + !. +'test/1_1_$special_>/2'(A,B) :- + 'test/1_1_$special_ + get_attr(G,guard_entailment,H), + H=v(_,_,_,_,_,_,_,_,_,_,_,_,_,F,_,_,_,_,_,_,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_=\\=/2___2',F) + ), + 'chr sbag_member'(C,F), + C=suspension(_,active,_,_,_,D,E), + D==A, + E==B, + !. +'test/1_1_$special_=\\=/2'(A,B) :- + number(B), + ( 'chr newvia_1'(A,G) -> + get_attr(G,guard_entailment,H), + H=v(_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,F,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_=E, + ! + ; + E==A, + number(D), + B + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',J), + J=[_|K], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',K), + ( K=[L|_] -> + setarg(4,L,_) + ; + true + ) + ; + I=[_,_|K], + setarg(2,I,K), + ( K=[L|_] -> + setarg(4,L,I) + ; + true + ) + ), + 'detach_known/1_1_$special_;/2___2'(H,C), + \+try(D,A=\=B), + !, + negate_b(D,G), + known(G), + \+try(E,A=\=B). +'test/1_1_$special_=\\=/2'(_,_) :- + fail. +'test/1_1_$special_= + get_attr(G,guard_entailment,H), + H=v(_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,F,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_= + get_attr(G,guard_entailment,H), + H=v(_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,F) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_=:=/2___2',F) + ), + 'chr sbag_member'(C,F), + C=suspension(_,active,_,_,_,D,E), + D==A, + E==B, + !. +'test/1_1_$special_= + get_attr(G,guard_entailment,H), + H=v(_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,F) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_=:=/2___2',F) + ), + 'chr sbag_member'(C,F), + C=suspension(_,active,_,_,_,D,E), + D==A, + number(E), + E= + get_attr(G,guard_entailment,H), + H=v(_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,F) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_=:=/2___2',F) + ), + 'chr sbag_member'(C,F), + C=suspension(_,active,_,_,_,D,E), + D==B, + number(E), + A= + get_attr(G,guard_entailment,H), + H=v(_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,F,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_= + get_attr(G,guard_entailment,H), + H=v(_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,F,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_= + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',J), + J=[_|K], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',K), + ( K=[L|_] -> + setarg(4,L,_) + ; + true + ) + ; + I=[_,_|K], + setarg(2,I,K), + ( K=[L|_] -> + setarg(4,L,I) + ; + true + ) + ), + 'detach_known/1_1_$special_;/2___2'(H,C), + \+try(D,A= + get_attr(G,guard_entailment,H), + H=v(_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,F,_,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\==/2___2',F) + ), + 'chr sbag_member'(C,F), + C=suspension(_,active,_,_,_,D,E), + D==A, + E==B, + !. +'test/1_1_$special_\\==/2'(A,B) :- + nonvar(B), + 'chr lock'(B), + functor(B,C,D), + 'chr unlock'(B), + !, + B=..[_|E], + length(F,D), + G=..[C|F], + add_args_nmatch(F,E,H), + I=(\+functor(A,C,D);functor(A,C,D),A=G,H), + test(I). +'test/1_1_$special_\\==/2'(A,B) :- + nonvar(A), + !, + 'test/1_1_$special_\\==/2'(B,A). +'test/1_1_$special_\\==/2'(A,B) :- + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',F), + 'chr sbag_member'(C,F), + C=suspension(_,active,_,_,D,E), + !, + C=suspension(_,_,_,_,M,N), + setarg(2,C,removed), + term_variables(term(M,N),H), + arg(4,C,I), + ( var(I) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',J), + J=[_|K], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',K), + ( K=[L|_] -> + setarg(4,L,_) + ; + true + ) + ; + I=[_,_|K], + setarg(2,I,K), + ( K=[L|_] -> + setarg(4,L,I) + ; + true + ) + ), + 'detach_known/1_1_$special_;/2___2'(H,C), + \+try(D,A\==B), + !, + negate_b(D,G), + known(G), + \+try(E,A\==B). +'test/1_1_$special_\\==/2'(_,_) :- + fail. +'known/1_1_$default'(A) :- + 'known/1_1_$default___1__0'(A,_). +'known/1_1_$default___1__0'(A,B) :- + ( 'chr newvia_1'(A,F) -> + get_attr(F,guard_entailment,G), + G=v(_,_,E,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$default___1',E) + ), + 'chr sbag_member'(C,E), + C=suspension(_,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) + B=suspension(_,M,_,_,N), + setarg(2,B,removed), + ( M==not_stored_yet -> + H=[] ; - true + term_variables(N,H), + arg(4,B,I), + ( var(I) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$default___1',J), + J=[_|K], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$default___1',K), + ( K=[L|_] -> + setarg(4,L,_) + ; + true + ) + ; + I=[_,_|K], + setarg(2,I,K), + ( K=[L|_] -> + setarg(4,L,I) + ; + true + ) + ), + 'detach_known/1_1_$default___1'(H,B) ) ). -'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, +'known/1_1_$default___1__0'(_,A) :- + nb_getval('$chr_store_global_ground_guard_entailment____known/1_1_$special_fail/0___0',C), + 'chr sbag_member'(B,C), + B=suspension(_,active,_), !, ( var(A) -> true ; - remove_constraint_internal(A,H,I), - ( I==yes -> - '$delete_from_store_known/1'(A), - 'detach_known/1'(H,A) + A=suspension(_,I,_,_,J), + setarg(2,A,removed), + ( I==not_stored_yet -> + D=[] + ; + term_variables(J,D), + arg(4,A,E), + ( var(E) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$default___1',F), + F=[_|G], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$default___1',G), + ( G=[H|_] -> + setarg(4,H,_) + ; + true + ) + ; + E=[_,_|G], + setarg(2,E,G), + ( G=[H|_] -> + setarg(4,H,E) + ; + true + ) + ), + 'detach_known/1_1_$default___1'(D,A) + ) + ). +'known/1_1_$default___1__0'(A,B) :- + ( 'chr newvia_1'(A,F) -> + get_attr(F,guard_entailment,G), + G=v(_,_,_,_,_,_,_,_,_,_,_,_,_,_,E,_,_,_,_,_,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',E) + ), + 'chr sbag_member'(C,E), + C=suspension(_,active,_,_,D), + D==A, + !, + C=suspension(_,_,_,_,T), + setarg(2,C,removed), + term_variables(T,H), + arg(4,C,P), + ( var(P) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',Q), + Q=[_|R], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',R), + ( R=[S|_] -> + setarg(4,S,_) ; 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) + ; + P=[_,_|R], + setarg(2,P,R), + ( R=[S|_] -> + setarg(4,S,P) ; 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), - !, + ) + ), + 'detach_known/1_1_$special_\\+/1___1'(H,C), ( var(B) -> true ; - remove_constraint_internal(B,E,F), - ( F==yes -> - '$delete_from_store_known/1'(B), - 'detach_known/1'(E,B) + B=suspension(_,N,_,_,O), + setarg(2,B,removed), + ( N==not_stored_yet -> + I=[] ; - true + term_variables(O,I), + arg(4,B,J), + ( var(J) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$default___1',K), + K=[_|L], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$default___1',L), + ( L=[M|_] -> + setarg(4,M,_) + ; + true + ) + ; + J=[_,_|L], + setarg(2,J,L), + ( L=[M|_] -> + setarg(4,M,J) + ; + true + ) + ), + 'detach_known/1_1_$default___1'(I,B) ) ), - known(C), - known(D). -'known/1__5'(A,B) :- - nonvar(A), - A=(C=:=D), - D==C, + 'known/1_1_$special_fail/0'. +'known/1_1_$default___1__0'(A,B) :- + ( 'chr newvia_1'(A,D) -> + get_attr(D,guard_entailment,E), + E=v(_,_,_,C,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',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) + B=suspension(F,not_stored_yet,0,_,A), + 'chr gen_id'(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), + 'known/1_1_$default___1__0__0__6'(C,A,B). +'known/1_1_$default___1__0__0__6'([],B,A) :- + 'known/1_1_$default___1__1'(B,A). +'known/1_1_$default___1__0__0__6'([E|G],A,B) :- + ( E=suspension(_,active,_,_,C,D), nonvar(C), - C=(E;F), - nonvar(E), - E=(\+G), + C=(\+F), + F==A -> + E=suspension(_,_,_,_,U,V), + setarg(2,E,removed), + term_variables(term(U,V),H), + arg(4,E,Q), + ( var(Q) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',R), + R=[_|S], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',S), + ( S=[T|_] -> + setarg(4,T,_) + ; + true + ) + ; + Q=[_,_|S], + setarg(2,Q,S), + ( S=[T|_] -> + setarg(4,T,Q) + ; + true + ) + ), + 'detach_known/1_1_$special_;/2___2'(H,E), + arg(2,B,L), + setarg(2,B,active), + arg(3,B,K), + J is K+1, + setarg(3,B,J), + ( L==not_stored_yet -> + B=suspension(_,_,_,_,M), + term_variables(M,I), + 'chr none_locked'(I), + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$default___1',N), + O=[B|N], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$default___1',O), + ( N=[P|_] -> + setarg(4,P,O) + ; + true + ), + 'attach_known/1_1_$default___1'(I,B) + ; + true + ), + known(D), + ( B=suspension(_,active,J,_,_) -> + setarg(2,B,inactive), + 'known/1_1_$default___1__0__0__6'(G,A,B) + ; + true + ) + ; + 'known/1_1_$default___1__0__0__6'(G,A,B) + ). +'known/1_1_$default___1__0'(A,B) :- + ( var(B) -> + B=suspension(C,not_stored_yet,0,_,A), + 'chr gen_id'(C) + ; + true + ), + 'known/1_1_$default___1__1'(A,B). +'known/1_1_$default___1__1'(A,B) :- + ( 'chr newvia_1'(A,D) -> + get_attr(D,guard_entailment,E), + E=v(_,_,_,C,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',C) + ), + !, + 'known/1_1_$default___1__1__0__7'(C,A,B). +'known/1_1_$default___1__1__0__7'([],B,A) :- + 'known/1_1_$default___1__2'(B,A). +'known/1_1_$default___1__1__0__7'([E|H],A,B) :- + ( E=suspension(_,active,_,_,C,D), + nonvar(C), + C=(F,_), + nonvar(F), + F=(\+G), G==A -> - remove_constraint_internal(D,I,J), - ( J==yes -> - '$delete_from_store_known/1'(D), - 'detach_known/1'(I,D) + E=suspension(_,_,_,_,V,W), + setarg(2,E,removed), + term_variables(term(V,W),I), + arg(4,E,R), + ( var(R) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',S), + S=[_|T], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',T), + ( T=[U|_] -> + setarg(4,U,_) + ; + true + ) + ; + R=[_,_|T], + setarg(2,R,T), + ( T=[U|_] -> + setarg(4,U,R) + ; + true + ) + ), + 'detach_known/1_1_$special_;/2___2'(I,E), + arg(2,B,M), + setarg(2,B,active), + arg(3,B,L), + K is L+1, + setarg(3,B,K), + ( M==not_stored_yet -> + B=suspension(_,_,_,_,N), + term_variables(N,J), + 'chr none_locked'(J), + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$default___1',O), + P=[B|O], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$default___1',P), + ( O=[Q|_] -> + setarg(4,Q,P) + ; + true + ), + 'attach_known/1_1_$default___1'(J,B) ; 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) + known(D), + ( B=suspension(_,active,K,_,_) -> + setarg(2,B,inactive), + 'known/1_1_$default___1__1__0__7'(H,A,B) ; true ) ; - 'known/1__33__0'(H,A,B) + 'known/1_1_$default___1__1__0__7'(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, +'known/1_1_$default___1__1'(A,B) :- + 'known/1_1_$default___1__2'(A,B). +'known/1_1_$default___1__2'(_,A) :- + arg(2,A,E), + setarg(2,A,active), + arg(3,A,D), + C is D+1, + setarg(3,A,C), + ( E==not_stored_yet -> + A=suspension(_,_,_,_,F), + term_variables(F,B), + 'chr none_locked'(B), + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$default___1',G), + H=[A|G], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$default___1',H), + ( G=[I|_] -> + setarg(4,I,H) + ; + true + ), + 'attach_known/1_1_$default___1'(B,A) + ; + true + ). +'known/1_1_$special_;/2'(A,B) :- + 'known/1_1_$special_;/2___2__0'(A,B,_). +'known/1_1_$special_;/2___2__0'(A,B,C) :- + ( 'chr newvia_2'(A,B,H) -> + get_attr(H,guard_entailment,I), + I=v(_,_,_,G,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',G) + ), + 'chr sbag_member'(D,G), + D=suspension(_,active,_,_,E,F), + E==A, + F==B, !, - ( var(B) -> + ( var(C) -> true ; - remove_constraint_internal(B,M,N), - ( N==yes -> - '$delete_from_store_known/1'(B), - 'detach_known/1'(M,B) + C=suspension(_,O,_,_,P,Q), + setarg(2,C,removed), + ( O==not_stored_yet -> + J=[] + ; + term_variables(term(P,Q),J), + arg(4,C,K), + ( var(K) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',L), + L=[_|M], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',M), + ( M=[N|_] -> + setarg(4,N,_) + ; + true + ) + ; + K=[_,_|M], + setarg(2,K,M), + ( M=[N|_] -> + setarg(4,N,K) + ; + true + ) + ), + 'detach_known/1_1_$special_;/2___2'(J,C) + ) + ). +'known/1_1_$special_;/2___2__0'(_,_,A) :- + nb_getval('$chr_store_global_ground_guard_entailment____known/1_1_$special_fail/0___0',C), + 'chr sbag_member'(B,C), + B=suspension(_,active,_), + !, + ( var(A) -> + true + ; + A=suspension(_,I,_,_,J,K), + setarg(2,A,removed), + ( I==not_stored_yet -> + D=[] + ; + term_variables(term(J,K),D), + arg(4,A,E), + ( var(E) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',F), + F=[_|G], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',G), + ( G=[H|_] -> + setarg(4,H,_) + ; + true + ) + ; + E=[_,_|G], + setarg(2,E,G), + ( G=[H|_] -> + setarg(4,H,E) + ; + true + ) + ), + 'detach_known/1_1_$special_;/2___2'(D,A) + ) + ). +'known/1_1_$special_;/2___2__0'(A,B,C) :- + ( 'chr newvia_2'(A,B,G) -> + get_attr(G,guard_entailment,H), + H=v(_,_,_,_,_,_,_,_,_,_,_,_,_,_,F,_,_,_,_,_,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',F) + ), + 'chr sbag_member'(D,F), + D=suspension(_,active,_,_,E), + nonvar(E), + E=(I;J), + I==A, + J==B, + !, + D=suspension(_,_,_,_,X), + setarg(2,D,removed), + term_variables(X,K), + arg(4,D,T), + ( var(T) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',U), + U=[_|V], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',V), + ( V=[W|_] -> + setarg(4,W,_) + ; + true + ) + ; + T=[_,_|V], + setarg(2,T,V), + ( V=[W|_] -> + setarg(4,W,T) ; 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, + 'detach_known/1_1_$special_\\+/1___1'(K,D), + ( var(C) -> + true + ; + C=suspension(_,Q,_,_,R,S), + setarg(2,C,removed), + ( Q==not_stored_yet -> + L=[] + ; + term_variables(term(R,S),L), + arg(4,C,M), + ( var(M) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',N), + N=[_|O], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',O), + ( O=[P|_] -> + setarg(4,P,_) + ; + true + ) + ; + M=[_,_|O], + setarg(2,M,O), + ( O=[P|_] -> + setarg(4,P,M) + ; + true + ) + ), + 'detach_known/1_1_$special_;/2___2'(L,C) + ) + ), + 'known/1_1_$special_fail/0'. +'known/1_1_$special_;/2___2__0'(A,B,C) :- + nonvar(A), + A=(\+D), + nonvar(D), + D=(E;F), + ( 'chr newvia_2'(E,F,K) -> + get_attr(K,guard_entailment,L), + L=v(_,_,_,J,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',J) + ), + 'chr sbag_member'(G,J), + G=suspension(_,active,_,_,H,I), + H==E, + I==F, !, - '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,_), + ( var(C) -> + true + ; + C=suspension(_,R,_,_,S,T), + setarg(2,C,removed), + ( R==not_stored_yet -> + M=[] + ; + term_variables(term(S,T),M), + arg(4,C,N), + ( var(N) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',O), + O=[_|P], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',P), + ( P=[Q|_] -> + setarg(4,Q,_) + ; + true + ) + ; + N=[_,_|P], + setarg(2,N,P), + ( P=[Q|_] -> + setarg(4,Q,N) + ; + true + ) + ), + 'detach_known/1_1_$special_;/2___2'(M,C) + ) + ), + known(B). +'known/1_1_$special_;/2___2__0'(A,B,C) :- + ( 'chr newvia_2'(A,B,E) -> + get_attr(E,guard_entailment,F), + F=v(_,_,_,D,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',D) + ), + !, + ( var(C) -> + C=suspension(G,not_stored_yet,0,_,A,B), + 'chr gen_id'(G) + ; + true + ), + 'known/1_1_$special_;/2___2__0__0__7'(D,A,B,C). +'known/1_1_$special_;/2___2__0__0__7'([],B,C,A) :- + 'known/1_1_$special_;/2___2__1'(B,C,A). +'known/1_1_$special_;/2___2__0__0__7'([F|J],A,B,C) :- + ( F=suspension(_,active,_,_,D,E), + nonvar(D), + D=(\+G), + nonvar(G), + G=(H;I), + H==A, + I==B -> + F=suspension(_,_,_,_,Y,Z), + setarg(2,F,removed), + term_variables(term(Y,Z),K), + arg(4,F,U), + ( var(U) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',V), + V=[_|W], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',W), + ( W=[X|_] -> + setarg(4,X,_) + ; + true + ) + ; + U=[_,_|W], + setarg(2,U,W), + ( W=[X|_] -> + setarg(4,X,U) + ; + true + ) + ), + 'detach_known/1_1_$special_;/2___2'(K,F), + arg(2,C,O), + setarg(2,C,active), + arg(3,C,N), + M is N+1, + setarg(3,C,M), + ( O==not_stored_yet -> + C=suspension(_,_,_,_,P,Q), + term_variables(term(P,Q),L), + 'chr none_locked'(L), + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',R), + S=[C|R], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',S), + ( R=[T|_] -> + setarg(4,T,S) + ; + true + ), + 'attach_known/1_1_$special_;/2___2'(L,C) + ; + true + ), + known(E), + ( C=suspension(_,active,M,_,_,_) -> + setarg(2,C,inactive), + 'known/1_1_$special_;/2___2__0__0__7'(J,A,B,C) + ; + true + ) + ; + 'known/1_1_$special_;/2___2__0__0__7'(J,A,B,C) + ). +'known/1_1_$special_;/2___2__0'(A,B,C) :- + ( var(C) -> + C=suspension(D,not_stored_yet,0,_,A,B), + 'chr gen_id'(D) + ; + true + ), + 'known/1_1_$special_;/2___2__1'(A,B,C). +'known/1_1_$special_;/2___2__1'(A,B,C) :- + nonvar(A), + ( + A=(\+D), + ( + nonvar(D), + ( + ( + ( + ( + ( + ( + ( + ( + ( + ( + ( + ( + ( + ( + ( + ( + ( + D=nonvar(E), + ( 'chr newvia_1'(E,I) -> + get_attr(I,guard_entailment,J), + J=v(_,_,_,_,H,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_nonvar/1___1',H) + ), + 'chr sbag_member'(F,H), + F=suspension(_,active,_,_,G), + G==E, + !, + ( var(C) -> + true + ; + C=suspension(_,Q11,_,_,R11,S11), + setarg(2,C,removed), + ( Q11==not_stored_yet -> + K=[] + ; + term_variables(term(R11,S11),K), + arg(4,C,M11), + ( var(M11) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',N11), + N11=[_|O11], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',O11), + ( O11=[P11|_] -> + setarg(4,P11,_) + ; + true + ) + ; + M11=[_,_|O11], + setarg(2,M11,O11), + ( O11=[P11|_] -> + setarg(4,P11,M11) + ; + true + ) + ), + 'detach_known/1_1_$special_;/2___2'(K,C) + ) + ), + known(B) + ; + D=var(L), + ( 'chr newvia_1'(L,P) -> + get_attr(P,guard_entailment,Q), + Q=v(_,_,_,_,_,O,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_var/1___1',O) + ), + 'chr sbag_member'(M,O), + M=suspension(_,active,_,_,N), + N==L, + !, + ( var(C) -> + true + ; + C=suspension(_,J11,_,_,K11,L11), + setarg(2,C,removed), + ( J11==not_stored_yet -> + R=[] + ; + term_variables(term(K11,L11),R), + arg(4,C,F11), + ( var(F11) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',G11), + G11=[_|H11], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',H11), + ( H11=[I11|_] -> + setarg(4,I11,_) + ; + true + ) + ; + F11=[_,_|H11], + setarg(2,F11,H11), + ( H11=[I11|_] -> + setarg(4,I11,F11) + ; + true + ) + ), + 'detach_known/1_1_$special_;/2___2'(R,C) + ) + ), + known(B) + ) + ; + D=atom(S), + ( 'chr newvia_1'(S,W) -> + get_attr(W,guard_entailment,X), + X=v(_,_,_,_,_,_,V,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_atom/1___1',V) + ), + 'chr sbag_member'(T,V), + T=suspension(_,active,_,_,_,U), + U==S, + !, + ( var(C) -> + true + ; + C=suspension(_,C11,_,_,D11,E11), + setarg(2,C,removed), + ( C11==not_stored_yet -> + Y=[] + ; + term_variables(term(D11,E11),Y), + arg(4,C,Y10), + ( var(Y10) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',Z10), + Z10=[_|A11], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',A11), + ( A11=[B11|_] -> + setarg(4,B11,_) + ; + true + ) + ; + Y10=[_,_|A11], + setarg(2,Y10,A11), + ( A11=[B11|_] -> + setarg(4,B11,Y10) + ; + true + ) + ), + 'detach_known/1_1_$special_;/2___2'(Y,C) + ) + ), + known(B) + ) + ; + D=atomic(Z), + ( 'chr newvia_1'(Z,D1) -> + get_attr(D1,guard_entailment,E1), + E1=v(_,_,_,_,_,_,_,C1,_,_,_,_,_,_,_,_,_,_,_,_,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_atomic/1___1',C1) + ), + 'chr sbag_member'(A1,C1), + A1=suspension(_,active,_,_,_,B1), + B1==Z, + !, + ( var(C) -> + true + ; + C=suspension(_,V10,_,_,W10,X10), + setarg(2,C,removed), + ( V10==not_stored_yet -> + F1=[] + ; + term_variables(term(W10,X10),F1), + arg(4,C,R10), + ( var(R10) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',S10), + S10=[_|T10], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',T10), + ( T10=[U10|_] -> + setarg(4,U10,_) + ; + true + ) + ; + R10=[_,_|T10], + setarg(2,R10,T10), + ( T10=[U10|_] -> + setarg(4,U10,R10) + ; + true + ) + ), + 'detach_known/1_1_$special_;/2___2'(F1,C) + ) + ), + known(B) + ) + ; + D=compound(G1), + ( 'chr newvia_1'(G1,K1) -> + get_attr(K1,guard_entailment,L1), + L1=v(_,_,_,_,_,_,_,_,J1,_,_,_,_,_,_,_,_,_,_,_,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_compound/1___1',J1) + ), + 'chr sbag_member'(H1,J1), + H1=suspension(_,active,_,_,_,I1), + I1==G1, + !, + ( var(C) -> + true + ; + C=suspension(_,O10,_,_,P10,Q10), + setarg(2,C,removed), + ( O10==not_stored_yet -> + M1=[] + ; + term_variables(term(P10,Q10),M1), + arg(4,C,K10), + ( var(K10) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',L10), + L10=[_|M10], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',M10), + ( M10=[N10|_] -> + setarg(4,N10,_) + ; + true + ) + ; + K10=[_,_|M10], + setarg(2,K10,M10), + ( M10=[N10|_] -> + setarg(4,N10,K10) + ; + true + ) + ), + 'detach_known/1_1_$special_;/2___2'(M1,C) + ) + ), + known(B) + ) + ; + D=ground(N1), + ( 'chr newvia_1'(N1,R1) -> + get_attr(R1,guard_entailment,S1), + S1=v(_,_,_,_,_,_,_,_,_,Q1,_,_,_,_,_,_,_,_,_,_,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_ground/1___1',Q1) + ), + 'chr sbag_member'(O1,Q1), + O1=suspension(_,active,_,_,_,P1), + P1==N1, + !, + ( var(C) -> + true + ; + C=suspension(_,H10,_,_,I10,J10), + setarg(2,C,removed), + ( H10==not_stored_yet -> + T1=[] + ; + term_variables(term(I10,J10),T1), + arg(4,C,D10), + ( var(D10) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',E10), + E10=[_|F10], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',F10), + ( F10=[G10|_] -> + setarg(4,G10,_) + ; + true + ) + ; + D10=[_,_|F10], + setarg(2,D10,F10), + ( F10=[G10|_] -> + setarg(4,G10,D10) + ; + true + ) + ), + 'detach_known/1_1_$special_;/2___2'(T1,C) + ) + ), + known(B) + ) + ; + D=integer(U1), + ( 'chr newvia_1'(U1,Y1) -> + get_attr(Y1,guard_entailment,Z1), + Z1=v(_,_,_,_,_,_,_,_,_,_,X1,_,_,_,_,_,_,_,_,_,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_integer/1___1',X1) + ), + 'chr sbag_member'(V1,X1), + V1=suspension(_,active,_,_,_,W1), + W1==U1, + !, + ( var(C) -> + true + ; + C=suspension(_,A10,_,_,B10,C10), + setarg(2,C,removed), + ( A10==not_stored_yet -> + A2=[] + ; + term_variables(term(B10,C10),A2), + arg(4,C,W9), + ( var(W9) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',X9), + X9=[_|Y9], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',Y9), + ( Y9=[Z9|_] -> + setarg(4,Z9,_) + ; + true + ) + ; + W9=[_,_|Y9], + setarg(2,W9,Y9), + ( Y9=[Z9|_] -> + setarg(4,Z9,W9) + ; + true + ) + ), + 'detach_known/1_1_$special_;/2___2'(A2,C) + ) + ), + known(B) + ) + ; + D=float(B2), + ( 'chr newvia_1'(B2,F2) -> + get_attr(F2,guard_entailment,G2), + G2=v(_,_,_,_,_,_,_,_,_,_,_,E2,_,_,_,_,_,_,_,_,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_float/1___1',E2) + ), + 'chr sbag_member'(C2,E2), + C2=suspension(_,active,_,_,_,D2), + D2==B2, + !, + ( var(C) -> + true + ; + C=suspension(_,T9,_,_,U9,V9), + setarg(2,C,removed), + ( T9==not_stored_yet -> + H2=[] + ; + term_variables(term(U9,V9),H2), + arg(4,C,P9), + ( var(P9) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',Q9), + Q9=[_|R9], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',R9), + ( R9=[S9|_] -> + setarg(4,S9,_) + ; + true + ) + ; + P9=[_,_|R9], + setarg(2,P9,R9), + ( R9=[S9|_] -> + setarg(4,S9,P9) + ; + true + ) + ), + 'detach_known/1_1_$special_;/2___2'(H2,C) + ) + ), + known(B) + ) + ; + D=number(I2), + ( 'chr newvia_1'(I2,M2) -> + get_attr(M2,guard_entailment,N2), + N2=v(_,_,_,_,_,_,_,_,_,_,_,_,L2,_,_,_,_,_,_,_,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_number/1___1',L2) + ), + 'chr sbag_member'(J2,L2), + J2=suspension(_,active,_,_,_,K2), + K2==I2, + !, + ( var(C) -> + true + ; + C=suspension(_,M9,_,_,N9,O9), + setarg(2,C,removed), + ( M9==not_stored_yet -> + O2=[] + ; + term_variables(term(N9,O9),O2), + arg(4,C,I9), + ( var(I9) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',J9), + J9=[_|K9], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',K9), + ( K9=[L9|_] -> + setarg(4,L9,_) + ; + true + ) + ; + I9=[_,_|K9], + setarg(2,I9,K9), + ( K9=[L9|_] -> + setarg(4,L9,I9) + ; + true + ) + ), + 'detach_known/1_1_$special_;/2___2'(O2,C) + ) + ), + known(B) + ) + ; + D=(P2=\=Q2), + ( 'chr newvia_2'(P2,Q2,V2) -> + get_attr(V2,guard_entailment,W2), + W2=v(_,_,_,_,_,_,_,_,_,_,_,_,_,U2,_,_,_,_,_,_,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_=\\=/2___2',U2) + ), + 'chr sbag_member'(R2,U2), + R2=suspension(_,active,_,_,_,S2,T2), + S2==P2, + T2==Q2, + !, + ( var(C) -> + true + ; + C=suspension(_,F9,_,_,G9,H9), + setarg(2,C,removed), + ( F9==not_stored_yet -> + X2=[] + ; + term_variables(term(G9,H9),X2), + arg(4,C,B9), + ( var(B9) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',C9), + C9=[_|D9], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',D9), + ( D9=[E9|_] -> + setarg(4,E9,_) + ; + true + ) + ; + B9=[_,_|D9], + setarg(2,B9,D9), + ( D9=[E9|_] -> + setarg(4,E9,B9) + ; + true + ) + ), + 'detach_known/1_1_$special_;/2___2'(X2,C) + ) + ), + known(B) + ) + ; + D=(\+Y2), + ( 'chr newvia_1'(Y2,C3) -> + get_attr(C3,guard_entailment,D3), + D3=v(_,_,_,_,_,_,_,_,_,_,_,_,_,_,B3,_,_,_,_,_,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',B3) + ), + 'chr sbag_member'(Z2,B3), + Z2=suspension(_,active,_,_,A3), + A3==Y2, + !, + ( var(C) -> + true + ; + C=suspension(_,Y8,_,_,Z8,A9), + setarg(2,C,removed), + ( Y8==not_stored_yet -> + E3=[] + ; + term_variables(term(Z8,A9),E3), + arg(4,C,U8), + ( var(U8) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',V8), + V8=[_|W8], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',W8), + ( W8=[X8|_] -> + setarg(4,X8,_) + ; + true + ) + ; + U8=[_,_|W8], + setarg(2,U8,W8), + ( W8=[X8|_] -> + setarg(4,X8,U8) + ; + true + ) + ), + 'detach_known/1_1_$special_;/2___2'(E3,C) + ) + ), + known(B) + ) + ; + D=functor(F3,G3,H3), + ( 'chr newvia'([F3,G3,H3],N3) -> + get_attr(N3,guard_entailment,O3), + O3=v(_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,M3,_,_,_,_,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_functor/3___3',M3) + ), + 'chr sbag_member'(I3,M3), + I3=suspension(_,active,_,_,J3,K3,L3), + J3==F3, + K3==G3, + L3==H3, + !, + ( var(C) -> + true + ; + C=suspension(_,R8,_,_,S8,T8), + setarg(2,C,removed), + ( R8==not_stored_yet -> + P3=[] + ; + term_variables(term(S8,T8),P3), + arg(4,C,N8), + ( var(N8) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',O8), + O8=[_|P8], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',P8), + ( P8=[Q8|_] -> + setarg(4,Q8,_) + ; + true + ) + ; + N8=[_,_|P8], + setarg(2,N8,P8), + ( P8=[Q8|_] -> + setarg(4,Q8,N8) + ; + true + ) + ), + 'detach_known/1_1_$special_;/2___2'(P3,C) + ) + ), + known(B) + ) + ; + D=(Q3\=R3), + ( 'chr newvia_2'(Q3,R3,W3) -> + get_attr(W3,guard_entailment,X3), + X3=v(_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,V3,_,_,_,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\=/2___2',V3) + ), + 'chr sbag_member'(S3,V3), + S3=suspension(_,active,_,_,_,T3,U3), + T3==Q3, + U3==R3, + !, + ( var(C) -> + true + ; + C=suspension(_,K8,_,_,L8,M8), + setarg(2,C,removed), + ( K8==not_stored_yet -> + Y3=[] + ; + term_variables(term(L8,M8),Y3), + arg(4,C,G8), + ( var(G8) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',H8), + H8=[_|I8], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',I8), + ( I8=[J8|_] -> + setarg(4,J8,_) + ; + true + ) + ; + G8=[_,_|I8], + setarg(2,G8,I8), + ( I8=[J8|_] -> + setarg(4,J8,G8) + ; + true + ) + ), + 'detach_known/1_1_$special_;/2___2'(Y3,C) + ) + ), + known(B) + ) + ; + D=(Z3=A4), + ( 'chr newvia_2'(Z3,A4,F4) -> + get_attr(F4,guard_entailment,G4), + G4=v(_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,E4,_,_,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_=/2___2',E4) + ), + 'chr sbag_member'(B4,E4), + B4=suspension(_,active,_,_,C4,D4), + C4==Z3, + D4==A4, + !, + ( var(C) -> + true + ; + C=suspension(_,D8,_,_,E8,F8), + setarg(2,C,removed), + ( D8==not_stored_yet -> + H4=[] + ; + term_variables(term(E8,F8),H4), + arg(4,C,Z7), + ( var(Z7) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',A8), + A8=[_|B8], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',B8), + ( B8=[C8|_] -> + setarg(4,C8,_) + ; + true + ) + ; + Z7=[_,_|B8], + setarg(2,Z7,B8), + ( B8=[C8|_] -> + setarg(4,C8,Z7) + ; + true + ) + ), + 'detach_known/1_1_$special_;/2___2'(H4,C) + ) + ), + known(B) + ) + ; + D=(I4\==J4), + ( 'chr newvia_2'(I4,J4,O4) -> + get_attr(O4,guard_entailment,P4), + P4=v(_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,N4,_,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\==/2___2',N4) + ), + 'chr sbag_member'(K4,N4), + K4=suspension(_,active,_,_,_,L4,M4), + L4==I4, + M4==J4, + !, + ( var(C) -> + true + ; + C=suspension(_,W7,_,_,X7,Y7), + setarg(2,C,removed), + ( W7==not_stored_yet -> + Q4=[] + ; + term_variables(term(X7,Y7),Q4), + arg(4,C,S7), + ( var(S7) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',T7), + T7=[_|U7], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',U7), + ( U7=[V7|_] -> + setarg(4,V7,_) + ; + true + ) + ; + S7=[_,_|U7], + setarg(2,S7,U7), + ( U7=[V7|_] -> + setarg(4,V7,S7) + ; + true + ) + ), + 'detach_known/1_1_$special_;/2___2'(Q4,C) + ) + ), + known(B) + ) + ; + D=(R4==S4), + ( 'chr newvia_2'(R4,S4,X4) -> + get_attr(X4,guard_entailment,Y4), + Y4=v(_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,W4,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_==/2___2',W4) + ), + 'chr sbag_member'(T4,W4), + T4=suspension(_,active,_,_,_,U4,V4), + U4==R4, + V4==S4, + !, + ( var(C) -> + true + ; + C=suspension(_,P7,_,_,Q7,R7), + setarg(2,C,removed), + ( P7==not_stored_yet -> + Z4=[] + ; + term_variables(term(Q7,R7),Z4), + arg(4,C,L7), + ( var(L7) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',M7), + M7=[_|N7], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',N7), + ( N7=[O7|_] -> + setarg(4,O7,_) + ; + true + ) + ; + L7=[_,_|N7], + setarg(2,L7,N7), + ( N7=[O7|_] -> + setarg(4,O7,L7) + ; + true + ) + ), + 'detach_known/1_1_$special_;/2___2'(Z4,C) + ) + ), + known(B) + ) + ; + D=(A5= + get_attr(G5,guard_entailment,H5), + H5=v(_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,F5,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_= + true + ; + C=suspension(_,I7,_,_,J7,K7), + setarg(2,C,removed), + ( I7==not_stored_yet -> + I5=[] + ; + term_variables(term(J7,K7),I5), + arg(4,C,E7), + ( var(E7) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',F7), + F7=[_|G7], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',G7), + ( G7=[H7|_] -> + setarg(4,H7,_) + ; + true + ) + ; + E7=[_,_|G7], + setarg(2,E7,G7), + ( G7=[H7|_] -> + setarg(4,H7,E7) + ; + true + ) + ), + 'detach_known/1_1_$special_;/2___2'(I5,C) + ) + ), + known(B) + ) + ; + D=(J5=:=K5), + ( 'chr newvia_2'(J5,K5,P5) -> + get_attr(P5,guard_entailment,Q5), + Q5=v(_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,O5) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_=:=/2___2',O5) + ), + 'chr sbag_member'(L5,O5), + L5=suspension(_,active,_,_,_,M5,N5), + M5==J5, + N5==K5, + !, + ( var(C) -> + true + ; + C=suspension(_,B7,_,_,C7,D7), + setarg(2,C,removed), + ( B7==not_stored_yet -> + R5=[] + ; + term_variables(term(C7,D7),R5), + arg(4,C,X6), + ( var(X6) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',Y6), + Y6=[_|Z6], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',Z6), + ( Z6=[A7|_] -> + setarg(4,A7,_) + ; + true + ) + ; + X6=[_,_|Z6], + setarg(2,X6,Z6), + ( Z6=[A7|_] -> + setarg(4,A7,X6) + ; + true + ) + ), + 'detach_known/1_1_$special_;/2___2'(R5,C) + ) + ), + known(B) + ) + ; + ( 'chr newvia_1'(D,V5) -> + get_attr(V5,guard_entailment,W5), + W5=v(_,_,U5,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$default___1',U5) + ), + 'chr sbag_member'(S5,U5), + S5=suspension(_,active,_,_,T5), + T5==D, + !, + ( var(C) -> + true + ; + C=suspension(_,U6,_,_,V6,W6), + setarg(2,C,removed), + ( U6==not_stored_yet -> + X5=[] + ; + term_variables(term(V6,W6),X5), + arg(4,C,Q6), + ( var(Q6) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',R6), + R6=[_|S6], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',S6), + ( S6=[T6|_] -> + setarg(4,T6,_) + ; + true + ) + ; + Q6=[_,_|S6], + setarg(2,Q6,S6), + ( S6=[T6|_] -> + setarg(4,T6,Q6) + ; + true + ) + ), + 'detach_known/1_1_$special_;/2___2'(X5,C) + ) + ), + known(B) + ) + ; + A=(Y5,_), + nonvar(Y5), + Y5=(\+Z5), + nonvar(Z5), + Z5=(A6;B6), + ( 'chr newvia_2'(A6,B6,G6) -> + get_attr(G6,guard_entailment,H6), + H6=v(_,_,_,F6,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',F6) + ), + 'chr sbag_member'(C6,F6), + C6=suspension(_,active,_,_,D6,E6), + D6==A6, + E6==B6, + !, + ( var(C) -> + true + ; + C=suspension(_,N6,_,_,O6,P6), + setarg(2,C,removed), + ( N6==not_stored_yet -> + I6=[] + ; + term_variables(term(O6,P6),I6), + arg(4,C,J6), + ( var(J6) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',K6), + K6=[_|L6], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',L6), + ( L6=[M6|_] -> + setarg(4,M6,_) + ; + true + ) + ; + J6=[_,_|L6], + setarg(2,J6,L6), + ( L6=[M6|_] -> + setarg(4,M6,J6) + ; + true + ) + ), + 'detach_known/1_1_$special_;/2___2'(I6,C) + ) + ), + known(B) + ). +'known/1_1_$special_;/2___2__1'(A,B,C) :- + ( 'chr newvia_2'(A,B,E) -> + get_attr(E,guard_entailment,F), + F=v(_,_,_,D,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',D) + ), + !, + 'known/1_1_$special_;/2___2__1__0__34'(D,A,B,C). +'known/1_1_$special_;/2___2__1__0__34'([],B,C,A) :- + 'known/1_1_$special_;/2___2__2'(B,C,A). +'known/1_1_$special_;/2___2__1__0__34'([F|K],A,B,C) :- + ( F=suspension(_,active,_,_,D,E), + nonvar(D), + D=(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) + nonvar(H), + H=(I;J), + I==A, + J==B -> + F=suspension(_,_,_,_,Z,A1), + setarg(2,F,removed), + term_variables(term(Z,A1),L), + arg(4,F,V), + ( var(V) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',W), + W=[_|X], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',X), + ( X=[Y|_] -> + setarg(4,Y,_) + ; + true + ) + ; + V=[_,_|X], + setarg(2,V,X), + ( X=[Y|_] -> + setarg(4,Y,V) + ; + true + ) + ), + 'detach_known/1_1_$special_;/2___2'(L,F), + arg(2,C,P), + setarg(2,C,active), + arg(3,C,O), + N is O+1, + setarg(3,C,N), + ( P==not_stored_yet -> + C=suspension(_,_,_,_,Q,R), + term_variables(term(Q,R),M), + 'chr none_locked'(M), + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',S), + T=[C|S], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',T), + ( S=[U|_] -> + setarg(4,U,T) + ; + true + ), + 'attach_known/1_1_$special_;/2___2'(M,C) ; 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) + known(E), + ( C=suspension(_,active,N,_,_,_) -> + setarg(2,C,inactive), + 'known/1_1_$special_;/2___2__1__0__34'(K,A,B,C) ; true ) ; - 'known/1__34__0'(I,A,B) + 'known/1_1_$special_;/2___2__1__0__34'(K,A,B,C) ). -'known/1__34'(A,B) :- - 'known/1__35'(A,B). -'known/1__35'(A,B) :- +'known/1_1_$special_;/2___2__1'(A,B,C) :- + 'known/1_1_$special_;/2___2__2'(A,B,C). +'known/1_1_$special_;/2___2__2'(A,B,C) :- 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), + A=(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, + D=(\+E), + ( + nonvar(E), + ( + ( + ( + ( + ( + ( + ( + ( + ( + ( + ( + ( + ( + ( + ( + ( + ( + E=nonvar(F), + ( 'chr newvia_1'(F,J) -> + get_attr(J,guard_entailment,K), + K=v(_,_,_,_,I,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_nonvar/1___1',I) + ), + 'chr sbag_member'(G,I), + G=suspension(_,active,_,_,H), + H==F, + !, + ( var(C) -> + true + ; + C=suspension(_,Z10,_,_,A11,B11), + setarg(2,C,removed), + ( Z10==not_stored_yet -> + L=[] + ; + term_variables(term(A11,B11),L), + arg(4,C,V10), + ( var(V10) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',W10), + W10=[_|X10], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',X10), + ( X10=[Y10|_] -> + setarg(4,Y10,_) + ; + true + ) + ; + V10=[_,_|X10], + setarg(2,V10,X10), + ( X10=[Y10|_] -> + setarg(4,Y10,V10) + ; + true + ) + ), + 'detach_known/1_1_$special_;/2___2'(L,C) + ) + ), + known(B) + ; + E=var(M), + ( 'chr newvia_1'(M,Q) -> + get_attr(Q,guard_entailment,R), + R=v(_,_,_,_,_,P,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_var/1___1',P) + ), + 'chr sbag_member'(N,P), + N=suspension(_,active,_,_,O), + O==M, + !, + ( var(C) -> + true + ; + C=suspension(_,S10,_,_,T10,U10), + setarg(2,C,removed), + ( S10==not_stored_yet -> + S=[] + ; + term_variables(term(T10,U10),S), + arg(4,C,O10), + ( var(O10) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',P10), + P10=[_|Q10], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',Q10), + ( Q10=[R10|_] -> + setarg(4,R10,_) + ; + true + ) + ; + O10=[_,_|Q10], + setarg(2,O10,Q10), + ( Q10=[R10|_] -> + setarg(4,R10,O10) + ; + true + ) + ), + 'detach_known/1_1_$special_;/2___2'(S,C) + ) + ), + known(B) + ) + ; + E=atom(T), + ( 'chr newvia_1'(T,X) -> + get_attr(X,guard_entailment,Y), + Y=v(_,_,_,_,_,_,W,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_atom/1___1',W) + ), + 'chr sbag_member'(U,W), + U=suspension(_,active,_,_,_,V), + V==T, + !, + ( var(C) -> + true + ; + C=suspension(_,L10,_,_,M10,N10), + setarg(2,C,removed), + ( L10==not_stored_yet -> + Z=[] + ; + term_variables(term(M10,N10),Z), + arg(4,C,H10), + ( var(H10) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',I10), + I10=[_|J10], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',J10), + ( J10=[K10|_] -> + setarg(4,K10,_) + ; + true + ) + ; + H10=[_,_|J10], + setarg(2,H10,J10), + ( J10=[K10|_] -> + setarg(4,K10,H10) + ; + true + ) + ), + 'detach_known/1_1_$special_;/2___2'(Z,C) + ) + ), + known(B) + ) + ; + E=atomic(A1), + ( 'chr newvia_1'(A1,E1) -> + get_attr(E1,guard_entailment,F1), + F1=v(_,_,_,_,_,_,_,D1,_,_,_,_,_,_,_,_,_,_,_,_,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_atomic/1___1',D1) + ), + 'chr sbag_member'(B1,D1), + B1=suspension(_,active,_,_,_,C1), + C1==A1, + !, + ( var(C) -> + true + ; + C=suspension(_,E10,_,_,F10,G10), + setarg(2,C,removed), + ( E10==not_stored_yet -> + G1=[] + ; + term_variables(term(F10,G10),G1), + arg(4,C,A10), + ( var(A10) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',B10), + B10=[_|C10], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',C10), + ( C10=[D10|_] -> + setarg(4,D10,_) + ; + true + ) + ; + A10=[_,_|C10], + setarg(2,A10,C10), + ( C10=[D10|_] -> + setarg(4,D10,A10) + ; + true + ) + ), + 'detach_known/1_1_$special_;/2___2'(G1,C) + ) + ), + known(B) + ) + ; + E=compound(H1), + ( 'chr newvia_1'(H1,L1) -> + get_attr(L1,guard_entailment,M1), + M1=v(_,_,_,_,_,_,_,_,K1,_,_,_,_,_,_,_,_,_,_,_,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_compound/1___1',K1) + ), + 'chr sbag_member'(I1,K1), + I1=suspension(_,active,_,_,_,J1), + J1==H1, + !, + ( var(C) -> + true + ; + C=suspension(_,X9,_,_,Y9,Z9), + setarg(2,C,removed), + ( X9==not_stored_yet -> + N1=[] + ; + term_variables(term(Y9,Z9),N1), + arg(4,C,T9), + ( var(T9) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',U9), + U9=[_|V9], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',V9), + ( V9=[W9|_] -> + setarg(4,W9,_) + ; + true + ) + ; + T9=[_,_|V9], + setarg(2,T9,V9), + ( V9=[W9|_] -> + setarg(4,W9,T9) + ; + true + ) + ), + 'detach_known/1_1_$special_;/2___2'(N1,C) + ) + ), + known(B) + ) + ; + E=ground(O1), + ( 'chr newvia_1'(O1,S1) -> + get_attr(S1,guard_entailment,T1), + T1=v(_,_,_,_,_,_,_,_,_,R1,_,_,_,_,_,_,_,_,_,_,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_ground/1___1',R1) + ), + 'chr sbag_member'(P1,R1), + P1=suspension(_,active,_,_,_,Q1), + Q1==O1, + !, + ( var(C) -> + true + ; + C=suspension(_,Q9,_,_,R9,S9), + setarg(2,C,removed), + ( Q9==not_stored_yet -> + U1=[] + ; + term_variables(term(R9,S9),U1), + arg(4,C,M9), + ( var(M9) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',N9), + N9=[_|O9], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',O9), + ( O9=[P9|_] -> + setarg(4,P9,_) + ; + true + ) + ; + M9=[_,_|O9], + setarg(2,M9,O9), + ( O9=[P9|_] -> + setarg(4,P9,M9) + ; + true + ) + ), + 'detach_known/1_1_$special_;/2___2'(U1,C) + ) + ), + known(B) + ) + ; + E=integer(V1), + ( 'chr newvia_1'(V1,Z1) -> + get_attr(Z1,guard_entailment,A2), + A2=v(_,_,_,_,_,_,_,_,_,_,Y1,_,_,_,_,_,_,_,_,_,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_integer/1___1',Y1) + ), + 'chr sbag_member'(W1,Y1), + W1=suspension(_,active,_,_,_,X1), + X1==V1, + !, + ( var(C) -> + true + ; + C=suspension(_,J9,_,_,K9,L9), + setarg(2,C,removed), + ( J9==not_stored_yet -> + B2=[] + ; + term_variables(term(K9,L9),B2), + arg(4,C,F9), + ( var(F9) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',G9), + G9=[_|H9], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',H9), + ( H9=[I9|_] -> + setarg(4,I9,_) + ; + true + ) + ; + F9=[_,_|H9], + setarg(2,F9,H9), + ( H9=[I9|_] -> + setarg(4,I9,F9) + ; + true + ) + ), + 'detach_known/1_1_$special_;/2___2'(B2,C) + ) + ), + known(B) + ) + ; + E=float(C2), + ( 'chr newvia_1'(C2,G2) -> + get_attr(G2,guard_entailment,H2), + H2=v(_,_,_,_,_,_,_,_,_,_,_,F2,_,_,_,_,_,_,_,_,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_float/1___1',F2) + ), + 'chr sbag_member'(D2,F2), + D2=suspension(_,active,_,_,_,E2), + E2==C2, + !, + ( var(C) -> + true + ; + C=suspension(_,C9,_,_,D9,E9), + setarg(2,C,removed), + ( C9==not_stored_yet -> + I2=[] + ; + term_variables(term(D9,E9),I2), + arg(4,C,Y8), + ( var(Y8) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',Z8), + Z8=[_|A9], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',A9), + ( A9=[B9|_] -> + setarg(4,B9,_) + ; + true + ) + ; + Y8=[_,_|A9], + setarg(2,Y8,A9), + ( A9=[B9|_] -> + setarg(4,B9,Y8) + ; + true + ) + ), + 'detach_known/1_1_$special_;/2___2'(I2,C) + ) + ), + known(B) + ) + ; + E=number(J2), + ( 'chr newvia_1'(J2,N2) -> + get_attr(N2,guard_entailment,O2), + O2=v(_,_,_,_,_,_,_,_,_,_,_,_,M2,_,_,_,_,_,_,_,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_number/1___1',M2) + ), + 'chr sbag_member'(K2,M2), + K2=suspension(_,active,_,_,_,L2), + L2==J2, + !, + ( var(C) -> + true + ; + C=suspension(_,V8,_,_,W8,X8), + setarg(2,C,removed), + ( V8==not_stored_yet -> + P2=[] + ; + term_variables(term(W8,X8),P2), + arg(4,C,R8), + ( var(R8) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',S8), + S8=[_|T8], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',T8), + ( T8=[U8|_] -> + setarg(4,U8,_) + ; + true + ) + ; + R8=[_,_|T8], + setarg(2,R8,T8), + ( T8=[U8|_] -> + setarg(4,U8,R8) + ; + true + ) + ), + 'detach_known/1_1_$special_;/2___2'(P2,C) + ) + ), + known(B) + ) + ; + E=(Q2=\=R2), + ( 'chr newvia_2'(Q2,R2,W2) -> + get_attr(W2,guard_entailment,X2), + X2=v(_,_,_,_,_,_,_,_,_,_,_,_,_,V2,_,_,_,_,_,_,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_=\\=/2___2',V2) + ), + 'chr sbag_member'(S2,V2), + S2=suspension(_,active,_,_,_,T2,U2), + T2==Q2, + U2==R2, + !, + ( var(C) -> + true + ; + C=suspension(_,O8,_,_,P8,Q8), + setarg(2,C,removed), + ( O8==not_stored_yet -> + Y2=[] + ; + term_variables(term(P8,Q8),Y2), + arg(4,C,K8), + ( var(K8) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',L8), + L8=[_|M8], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',M8), + ( M8=[N8|_] -> + setarg(4,N8,_) + ; + true + ) + ; + K8=[_,_|M8], + setarg(2,K8,M8), + ( M8=[N8|_] -> + setarg(4,N8,K8) + ; + true + ) + ), + 'detach_known/1_1_$special_;/2___2'(Y2,C) + ) + ), + known(B) + ) + ; + E=(\+Z2), + ( 'chr newvia_1'(Z2,D3) -> + get_attr(D3,guard_entailment,E3), + E3=v(_,_,_,_,_,_,_,_,_,_,_,_,_,_,C3,_,_,_,_,_,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',C3) + ), + 'chr sbag_member'(A3,C3), + A3=suspension(_,active,_,_,B3), + B3==Z2, + !, + ( var(C) -> + true + ; + C=suspension(_,H8,_,_,I8,J8), + setarg(2,C,removed), + ( H8==not_stored_yet -> + F3=[] + ; + term_variables(term(I8,J8),F3), + arg(4,C,D8), + ( var(D8) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',E8), + E8=[_|F8], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',F8), + ( F8=[G8|_] -> + setarg(4,G8,_) + ; + true + ) + ; + D8=[_,_|F8], + setarg(2,D8,F8), + ( F8=[G8|_] -> + setarg(4,G8,D8) + ; + true + ) + ), + 'detach_known/1_1_$special_;/2___2'(F3,C) + ) + ), + known(B) + ) + ; + E=functor(G3,H3,I3), + ( 'chr newvia'([G3,H3,I3],O3) -> + get_attr(O3,guard_entailment,P3), + P3=v(_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,N3,_,_,_,_,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_functor/3___3',N3) + ), + 'chr sbag_member'(J3,N3), + J3=suspension(_,active,_,_,K3,L3,M3), + K3==G3, + L3==H3, + M3==I3, + !, + ( var(C) -> + true + ; + C=suspension(_,A8,_,_,B8,C8), + setarg(2,C,removed), + ( A8==not_stored_yet -> + Q3=[] + ; + term_variables(term(B8,C8),Q3), + arg(4,C,W7), + ( var(W7) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',X7), + X7=[_|Y7], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',Y7), + ( Y7=[Z7|_] -> + setarg(4,Z7,_) + ; + true + ) + ; + W7=[_,_|Y7], + setarg(2,W7,Y7), + ( Y7=[Z7|_] -> + setarg(4,Z7,W7) + ; + true + ) + ), + 'detach_known/1_1_$special_;/2___2'(Q3,C) + ) + ), + known(B) + ) + ; + E=(R3\=S3), + ( 'chr newvia_2'(R3,S3,X3) -> + get_attr(X3,guard_entailment,Y3), + Y3=v(_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,W3,_,_,_,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\=/2___2',W3) + ), + 'chr sbag_member'(T3,W3), + T3=suspension(_,active,_,_,_,U3,V3), + U3==R3, + V3==S3, + !, + ( var(C) -> + true + ; + C=suspension(_,T7,_,_,U7,V7), + setarg(2,C,removed), + ( T7==not_stored_yet -> + Z3=[] + ; + term_variables(term(U7,V7),Z3), + arg(4,C,P7), + ( var(P7) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',Q7), + Q7=[_|R7], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',R7), + ( R7=[S7|_] -> + setarg(4,S7,_) + ; + true + ) + ; + P7=[_,_|R7], + setarg(2,P7,R7), + ( R7=[S7|_] -> + setarg(4,S7,P7) + ; + true + ) + ), + 'detach_known/1_1_$special_;/2___2'(Z3,C) + ) + ), + known(B) + ) + ; + E=(A4=B4), + ( 'chr newvia_2'(A4,B4,G4) -> + get_attr(G4,guard_entailment,H4), + H4=v(_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,F4,_,_,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_=/2___2',F4) + ), + 'chr sbag_member'(C4,F4), + C4=suspension(_,active,_,_,D4,E4), + D4==A4, + E4==B4, + !, + ( var(C) -> + true + ; + C=suspension(_,M7,_,_,N7,O7), + setarg(2,C,removed), + ( M7==not_stored_yet -> + I4=[] + ; + term_variables(term(N7,O7),I4), + arg(4,C,I7), + ( var(I7) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',J7), + J7=[_|K7], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',K7), + ( K7=[L7|_] -> + setarg(4,L7,_) + ; + true + ) + ; + I7=[_,_|K7], + setarg(2,I7,K7), + ( K7=[L7|_] -> + setarg(4,L7,I7) + ; + true + ) + ), + 'detach_known/1_1_$special_;/2___2'(I4,C) + ) + ), + known(B) + ) + ; + E=(J4\==K4), + ( 'chr newvia_2'(J4,K4,P4) -> + get_attr(P4,guard_entailment,Q4), + Q4=v(_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,O4,_,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\==/2___2',O4) + ), + 'chr sbag_member'(L4,O4), + L4=suspension(_,active,_,_,_,M4,N4), + M4==J4, + N4==K4, + !, + ( var(C) -> + true + ; + C=suspension(_,F7,_,_,G7,H7), + setarg(2,C,removed), + ( F7==not_stored_yet -> + R4=[] + ; + term_variables(term(G7,H7),R4), + arg(4,C,B7), + ( var(B7) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',C7), + C7=[_|D7], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',D7), + ( D7=[E7|_] -> + setarg(4,E7,_) + ; + true + ) + ; + B7=[_,_|D7], + setarg(2,B7,D7), + ( D7=[E7|_] -> + setarg(4,E7,B7) + ; + true + ) + ), + 'detach_known/1_1_$special_;/2___2'(R4,C) + ) + ), + known(B) + ) + ; + E=(S4==T4), + ( 'chr newvia_2'(S4,T4,Y4) -> + get_attr(Y4,guard_entailment,Z4), + Z4=v(_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,X4,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_==/2___2',X4) + ), + 'chr sbag_member'(U4,X4), + U4=suspension(_,active,_,_,_,V4,W4), + V4==S4, + W4==T4, + !, + ( var(C) -> + true + ; + C=suspension(_,Y6,_,_,Z6,A7), + setarg(2,C,removed), + ( Y6==not_stored_yet -> + A5=[] + ; + term_variables(term(Z6,A7),A5), + arg(4,C,U6), + ( var(U6) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',V6), + V6=[_|W6], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',W6), + ( W6=[X6|_] -> + setarg(4,X6,_) + ; + true + ) + ; + U6=[_,_|W6], + setarg(2,U6,W6), + ( W6=[X6|_] -> + setarg(4,X6,U6) + ; + true + ) + ), + 'detach_known/1_1_$special_;/2___2'(A5,C) + ) + ), + known(B) + ) + ; + E=(B5= + get_attr(H5,guard_entailment,I5), + I5=v(_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,G5,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_= + true + ; + C=suspension(_,R6,_,_,S6,T6), + setarg(2,C,removed), + ( R6==not_stored_yet -> + J5=[] + ; + term_variables(term(S6,T6),J5), + arg(4,C,N6), + ( var(N6) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',O6), + O6=[_|P6], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',P6), + ( P6=[Q6|_] -> + setarg(4,Q6,_) + ; + true + ) + ; + N6=[_,_|P6], + setarg(2,N6,P6), + ( P6=[Q6|_] -> + setarg(4,Q6,N6) + ; + true + ) + ), + 'detach_known/1_1_$special_;/2___2'(J5,C) + ) + ), + known(B) + ) + ; + E=(K5=:=L5), + ( 'chr newvia_2'(K5,L5,Q5) -> + get_attr(Q5,guard_entailment,R5), + R5=v(_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,P5) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_=:=/2___2',P5) + ), + 'chr sbag_member'(M5,P5), + M5=suspension(_,active,_,_,_,N5,O5), + N5==K5, + O5==L5, + !, + ( var(C) -> + true + ; + C=suspension(_,K6,_,_,L6,M6), + setarg(2,C,removed), + ( K6==not_stored_yet -> + S5=[] + ; + term_variables(term(L6,M6),S5), + arg(4,C,G6), + ( var(G6) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',H6), + H6=[_|I6], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',I6), + ( I6=[J6|_] -> + setarg(4,J6,_) + ; + true + ) + ; + G6=[_,_|I6], + setarg(2,G6,I6), + ( I6=[J6|_] -> + setarg(4,J6,G6) + ; + true + ) + ), + 'detach_known/1_1_$special_;/2___2'(S5,C) + ) + ), + known(B) + ) + ; + ( 'chr newvia_1'(E,W5) -> + get_attr(W5,guard_entailment,X5), + X5=v(_,_,V5,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$default___1',V5) + ), + 'chr sbag_member'(T5,V5), + T5=suspension(_,active,_,_,U5), + U5==E, + !, + ( var(C) -> + true + ; + C=suspension(_,D6,_,_,E6,F6), + setarg(2,C,removed), + ( D6==not_stored_yet -> + Y5=[] + ; + term_variables(term(E6,F6),Y5), + arg(4,C,Z5), + ( var(Z5) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',A6), + A6=[_|B6], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',B6), + ( B6=[C6|_] -> + setarg(4,C6,_) + ; + true + ) + ; + Z5=[_,_|B6], + setarg(2,Z5,B6), + ( B6=[C6|_] -> + setarg(4,C6,Z5) + ; + true + ) + ), + 'detach_known/1_1_$special_;/2___2'(Y5,C) + ) + ), + known(B) + ). +'known/1_1_$special_;/2___2__2'(A,B,C) :- + ( 'chr newvia_1'(A,G) -> + get_attr(G,guard_entailment,H), + H=v(_,_,_,_,_,_,_,_,_,_,_,_,_,_,F,_,_,_,_,_,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',F) + ), + 'chr sbag_member'(D,F), + D=suspension(_,active,_,_,E), + E==A, + !, + ( var(C) -> + true + ; + C=suspension(_,N,_,_,O,P), + setarg(2,C,removed), + ( N==not_stored_yet -> + I=[] + ; + term_variables(term(O,P),I), + arg(4,C,J), + ( var(J) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',K), + K=[_|L], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',L), + ( L=[M|_] -> + setarg(4,M,_) + ; + true + ) + ; + J=[_,_|L], + setarg(2,J,L), + ( L=[M|_] -> + setarg(4,M,J) + ; + true + ) + ), + 'detach_known/1_1_$special_;/2___2'(I,C) + ) + ), + known(B). +'known/1_1_$special_;/2___2__2'(A,B,C) :- + nonvar(A), + A=(D,_), + ( 'chr newvia_1'(D,H) -> + get_attr(H,guard_entailment,I), + I=v(_,_,_,_,_,_,_,_,_,_,_,_,_,_,G,_,_,_,_,_,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',G) + ), + 'chr sbag_member'(E,G), + E=suspension(_,active,_,_,F), + F==D, + !, + ( var(C) -> + true + ; + C=suspension(_,O,_,_,P,Q), + setarg(2,C,removed), + ( O==not_stored_yet -> + J=[] + ; + term_variables(term(P,Q),J), + arg(4,C,K), + ( var(K) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',L), + L=[_|M], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',M), + ( M=[N|_] -> + setarg(4,N,_) + ; + true + ) + ; + K=[_,_|M], + setarg(2,K,M), + ( M=[N|_] -> + setarg(4,N,K) + ; + true + ) + ), + 'detach_known/1_1_$special_;/2___2'(J,C) + ) + ), + known(B). +'known/1_1_$special_;/2___2__2'(A,B,C) :- + A==fail, + !, + ( var(C) -> + true + ; + C=suspension(_,I,_,_,J,K), + setarg(2,C,removed), + ( I==not_stored_yet -> + D=[] + ; + term_variables(term(J,K),D), + arg(4,C,E), + ( var(E) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',F), + F=[_|G], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',G), + ( G=[H|_] -> + setarg(4,H,_) + ; + true + ) + ; + E=[_,_|G], + setarg(2,E,G), + ( G=[H|_] -> + setarg(4,H,E) + ; + true + ) + ), + 'detach_known/1_1_$special_;/2___2'(D,C) + ) + ), + known(B). +'known/1_1_$special_;/2___2__2'(A,B,C) :- + B==fail, + !, + ( var(C) -> + true + ; + C=suspension(_,I,_,_,J,K), + setarg(2,C,removed), + ( I==not_stored_yet -> + D=[] + ; + term_variables(term(J,K),D), + arg(4,C,E), + ( var(E) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',F), + F=[_|G], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',G), + ( G=[H|_] -> + setarg(4,H,_) + ; + true + ) + ; + E=[_,_|G], + setarg(2,E,G), + ( G=[H|_] -> + setarg(4,H,E) + ; + true + ) + ), + 'detach_known/1_1_$special_;/2___2'(D,C) + ) + ), + known(A). +'known/1_1_$special_;/2___2__2'(A,_,B) :- + A==true, !, ( var(B) -> true ; - remove_constraint_internal(B,M,N), - ( N==yes -> - '$delete_from_store_known/1'(B), - 'detach_known/1'(M,B) + B=suspension(_,H,_,_,I,J), + setarg(2,B,removed), + ( H==not_stored_yet -> + C=[] + ; + term_variables(term(I,J),C), + arg(4,B,D), + ( var(D) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',E), + E=[_|F], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',F), + ( F=[G|_] -> + setarg(4,G,_) + ; + true + ) + ; + D=[_,_|F], + setarg(2,D,F), + ( F=[G|_] -> + setarg(4,G,D) + ; + true + ) + ), + 'detach_known/1_1_$special_;/2___2'(C,B) + ) + ). +'known/1_1_$special_;/2___2__2'(_,A,B) :- + A==true, + !, + ( var(B) -> + true + ; + B=suspension(_,H,_,_,I,J), + setarg(2,B,removed), + ( H==not_stored_yet -> + C=[] + ; + term_variables(term(I,J),C), + arg(4,B,D), + ( var(D) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',E), + E=[_|F], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',F), + ( F=[G|_] -> + setarg(4,G,_) + ; + true + ) + ; + D=[_,_|F], + setarg(2,D,F), + ( F=[G|_] -> + setarg(4,G,D) + ; + true + ) + ), + 'detach_known/1_1_$special_;/2___2'(C,B) + ) + ). +'known/1_1_$special_;/2___2__2'(A,B,C) :- + nonvar(A), + A=(\+D), + nonvar(D), + D=functor(E,F,G), + ( + ( + ( 'chr newvia_1'(E,K) -> + get_attr(K,guard_entailment,L), + L=v(_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,J,_,_,_,_,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_functor/3___3',J) + ), + 'chr sbag_member'(H,J), + H=suspension(_,active,_,_,I,_,_), + I==E, + !, + ( var(C) -> + true + ; + C=suspension(_,H1,_,_,I1,J1), + setarg(2,C,removed), + ( H1==not_stored_yet -> + M=[] + ; + term_variables(term(I1,J1),M), + arg(4,C,D1), + ( var(D1) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',E1), + E1=[_|F1], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',F1), + ( F1=[G1|_] -> + setarg(4,G1,_) + ; + true + ) + ; + D1=[_,_|F1], + setarg(2,D1,F1), + ( F1=[G1|_] -> + setarg(4,G1,D1) + ; + true + ) + ), + 'detach_known/1_1_$special_;/2___2'(M,C) + ) + ) + ; + nonvar(E), + 'chr lock'(E), + 'chr lock'(F), + 'chr lock'(G), + functor(E,F,G), + 'chr unlock'(E), + 'chr unlock'(F), + 'chr unlock'(G), + !, + ( var(C) -> + true + ; + C=suspension(_,A1,_,_,B1,C1), + setarg(2,C,removed), + ( A1==not_stored_yet -> + N=[] + ; + term_variables(term(B1,C1),N), + arg(4,C,W), + ( var(W) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',X), + X=[_|Y], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',Y), + ( Y=[Z|_] -> + setarg(4,Z,_) + ; + true + ) + ; + W=[_,_|Y], + setarg(2,W,Y), + ( Y=[Z|_] -> + setarg(4,Z,W) + ; + true + ) + ), + 'detach_known/1_1_$special_;/2___2'(N,C) + ) + ), + known(B) + ) + ; + nonvar(E), + 'chr lock'(E), + 'chr lock'(F), + 'chr lock'(G), + \+functor(E,F,G), + 'chr unlock'(E), + 'chr unlock'(F), + 'chr unlock'(G), + !, + ( var(C) -> + true + ; + C=suspension(_,T,_,_,U,V), + setarg(2,C,removed), + ( T==not_stored_yet -> + O=[] + ; + term_variables(term(U,V),O), + arg(4,C,P), + ( var(P) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',Q), + Q=[_|R], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',R), + ( R=[S|_] -> + setarg(4,S,_) + ; + true + ) + ; + P=[_,_|R], + setarg(2,P,R), + ( R=[S|_] -> + setarg(4,S,P) + ; + true + ) + ), + 'detach_known/1_1_$special_;/2___2'(O,C) + ) + ) + ). +'known/1_1_$special_;/2___2__2'(_,_,A) :- + arg(2,A,E), + setarg(2,A,active), + arg(3,A,D), + C is D+1, + setarg(3,A,C), + ( E==not_stored_yet -> + A=suspension(_,_,_,_,F,G), + term_variables(term(F,G),B), + 'chr none_locked'(B), + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',H), + I=[A|H], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',I), + ( H=[J|_] -> + setarg(4,J,I) + ; + true + ), + 'attach_known/1_1_$special_;/2___2'(B,A) + ; + true + ). +'known/1_1_$special_nonvar/1'(A) :- + 'known/1_1_$special_nonvar/1___1__0'(A,_). +'known/1_1_$special_nonvar/1___1__0'(A,B) :- + ( 'chr newvia_1'(A,F) -> + get_attr(F,guard_entailment,G), + G=v(_,_,_,_,E,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_nonvar/1___1',E) + ), + 'chr sbag_member'(C,E), + C=suspension(_,active,_,_,D), + D==A, + !, + ( var(B) -> + true + ; + B=suspension(_,M,_,_,N), + setarg(2,B,removed), + ( M==not_stored_yet -> + H=[] + ; + term_variables(N,H), + arg(4,B,I), + ( var(I) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_nonvar/1___1',J), + J=[_|K], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_nonvar/1___1',K), + ( K=[L|_] -> + setarg(4,L,_) + ; + true + ) + ; + I=[_,_|K], + setarg(2,I,K), + ( K=[L|_] -> + setarg(4,L,I) + ; + true + ) + ), + 'detach_known/1_1_$special_nonvar/1___1'(H,B) + ) + ). +'known/1_1_$special_nonvar/1___1__0'(_,A) :- + nb_getval('$chr_store_global_ground_guard_entailment____known/1_1_$special_fail/0___0',C), + 'chr sbag_member'(B,C), + B=suspension(_,active,_), + !, + ( var(A) -> + true + ; + A=suspension(_,I,_,_,J), + setarg(2,A,removed), + ( I==not_stored_yet -> + D=[] + ; + term_variables(J,D), + arg(4,A,E), + ( var(E) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_nonvar/1___1',F), + F=[_|G], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_nonvar/1___1',G), + ( G=[H|_] -> + setarg(4,H,_) + ; + true + ) + ; + E=[_,_|G], + setarg(2,E,G), + ( G=[H|_] -> + setarg(4,H,E) + ; + true + ) + ), + 'detach_known/1_1_$special_nonvar/1___1'(D,A) + ) + ). +'known/1_1_$special_nonvar/1___1__0'(A,B) :- + ( 'chr newvia_1'(A,F) -> + get_attr(F,guard_entailment,G), + G=v(_,_,_,_,_,_,_,_,_,_,_,_,_,_,E,_,_,_,_,_,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',E) + ), + 'chr sbag_member'(C,E), + C=suspension(_,active,_,_,D), + nonvar(D), + D=nonvar(H), + H==A, + !, + C=suspension(_,_,_,_,U), + setarg(2,C,removed), + term_variables(U,I), + arg(4,C,Q), + ( var(Q) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',R), + R=[_|S], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',S), + ( S=[T|_] -> + setarg(4,T,_) ; 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, + ; + Q=[_,_|S], + setarg(2,Q,S), + ( S=[T|_] -> + setarg(4,T,Q) + ; + true + ) + ), + 'detach_known/1_1_$special_\\+/1___1'(I,C), + ( var(B) -> + true + ; + B=suspension(_,O,_,_,P), + setarg(2,B,removed), + ( O==not_stored_yet -> + J=[] + ; + term_variables(P,J), + arg(4,B,K), + ( var(K) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_nonvar/1___1',L), + L=[_|M], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_nonvar/1___1',M), + ( M=[N|_] -> + setarg(4,N,_) + ; + true + ) + ; + K=[_,_|M], + setarg(2,K,M), + ( M=[N|_] -> + setarg(4,N,K) + ; + true + ) + ), + 'detach_known/1_1_$special_nonvar/1___1'(J,B) + ) + ), + 'known/1_1_$special_fail/0'. +'known/1_1_$special_nonvar/1___1__0'(A,B) :- + ( 'chr newvia_1'(A,F) -> + get_attr(F,guard_entailment,G), + G=v(_,_,_,_,_,E,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_var/1___1',E) + ), + 'chr sbag_member'(C,E), + C=suspension(_,active,_,_,D), + D==A, !, - '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;_), + C=suspension(_,_,_,_,T), + setarg(2,C,removed), + term_variables(T,H), + arg(4,C,P), + ( var(P) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_var/1___1',Q), + Q=[_|R], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_var/1___1',R), + ( R=[S|_] -> + setarg(4,S,_) + ; + true + ) + ; + P=[_,_|R], + setarg(2,P,R), + ( R=[S|_] -> + setarg(4,S,P) + ; + true + ) + ), + 'detach_known/1_1_$special_var/1___1'(H,C), + ( var(B) -> + true + ; + B=suspension(_,N,_,_,O), + setarg(2,B,removed), + ( N==not_stored_yet -> + I=[] + ; + term_variables(O,I), + arg(4,B,J), + ( var(J) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_nonvar/1___1',K), + K=[_|L], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_nonvar/1___1',L), + ( L=[M|_] -> + setarg(4,M,_) + ; + true + ) + ; + J=[_,_|L], + setarg(2,J,L), + ( L=[M|_] -> + setarg(4,M,J) + ; + true + ) + ), + 'detach_known/1_1_$special_nonvar/1___1'(I,B) + ) + ), + 'known/1_1_$special_fail/0'. +'known/1_1_$special_nonvar/1___1__0'(A,B) :- + ( 'chr newvia_1'(A,D) -> + get_attr(D,guard_entailment,E), + E=v(_,_,_,C,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',C) + ), + !, + ( var(B) -> + B=suspension(F,not_stored_yet,0,_,A), + 'chr gen_id'(F) + ; + true + ), + 'known/1_1_$special_nonvar/1___1__0__0__7'(C,A,B). +'known/1_1_$special_nonvar/1___1__0__0__7'([],B,A) :- + 'known/1_1_$special_nonvar/1___1__1'(B,A). +'known/1_1_$special_nonvar/1___1__0__0__7'([E|H],A,B) :- + ( E=suspension(_,active,_,_,C,D), + nonvar(C), + C=(\+F), + nonvar(F), + F=nonvar(G), + G==A -> + E=suspension(_,_,_,_,V,W), + setarg(2,E,removed), + term_variables(term(V,W),I), + arg(4,E,R), + ( var(R) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',S), + S=[_|T], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',T), + ( T=[U|_] -> + setarg(4,U,_) + ; + true + ) + ; + R=[_,_|T], + setarg(2,R,T), + ( T=[U|_] -> + setarg(4,U,R) + ; + true + ) + ), + 'detach_known/1_1_$special_;/2___2'(I,E), + arg(2,B,M), + setarg(2,B,active), + arg(3,B,L), + K is L+1, + setarg(3,B,K), + ( M==not_stored_yet -> + B=suspension(_,_,_,_,N), + term_variables(N,J), + 'chr none_locked'(J), + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_nonvar/1___1',O), + P=[B|O], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_nonvar/1___1',P), + ( O=[Q|_] -> + setarg(4,Q,P) + ; + true + ), + 'attach_known/1_1_$special_nonvar/1___1'(J,B) + ; + true + ), + known(D), + ( B=suspension(_,active,K,_,_) -> + setarg(2,B,inactive), + 'known/1_1_$special_nonvar/1___1__0__0__7'(H,A,B) + ; + true + ) + ; + 'known/1_1_$special_nonvar/1___1__0__0__7'(H,A,B) + ). +'known/1_1_$special_nonvar/1___1__0'(A,B) :- + ( var(B) -> + B=suspension(C,not_stored_yet,0,_,A), + 'chr gen_id'(C) + ; + true + ), + 'known/1_1_$special_nonvar/1___1__1'(A,B). +'known/1_1_$special_nonvar/1___1__1'(A,B) :- + ( 'chr newvia_1'(A,D) -> + get_attr(D,guard_entailment,E), + E=v(_,_,_,C,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',C) + ), + !, + 'known/1_1_$special_nonvar/1___1__1__0__8'(C,A,B). +'known/1_1_$special_nonvar/1___1__1__0__8'([],B,A) :- + 'known/1_1_$special_nonvar/1___1__2'(B,A). +'known/1_1_$special_nonvar/1___1__1__0__8'([E|I],A,B) :- + ( E=suspension(_,active,_,_,C,D), + nonvar(C), + C=(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) + G=nonvar(H), + H==A -> + E=suspension(_,_,_,_,W,X), + setarg(2,E,removed), + term_variables(term(W,X),J), + arg(4,E,S), + ( var(S) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',T), + T=[_|U], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',U), + ( U=[V|_] -> + setarg(4,V,_) + ; + true + ) + ; + S=[_,_|U], + setarg(2,S,U), + ( U=[V|_] -> + setarg(4,V,S) + ; + true + ) + ), + 'detach_known/1_1_$special_;/2___2'(J,E), + arg(2,B,N), + setarg(2,B,active), + arg(3,B,M), + L is M+1, + setarg(3,B,L), + ( N==not_stored_yet -> + B=suspension(_,_,_,_,O), + term_variables(O,K), + 'chr none_locked'(K), + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_nonvar/1___1',P), + Q=[B|P], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_nonvar/1___1',Q), + ( P=[R|_] -> + setarg(4,R,Q) + ; + true + ), + 'attach_known/1_1_$special_nonvar/1___1'(K,B) ; 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) + ( B=suspension(_,active,L,_,_) -> + setarg(2,B,inactive), + 'known/1_1_$special_nonvar/1___1__1__0__8'(I,A,B) + ; + true + ) ; - 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) + 'known/1_1_$special_nonvar/1___1__1__0__8'(I,A,B) + ). +'known/1_1_$special_nonvar/1___1__1'(A,B) :- + 'known/1_1_$special_nonvar/1___1__2'(A,B). +'known/1_1_$special_nonvar/1___1__2'(_,A) :- + arg(2,A,E), + setarg(2,A,active), + arg(3,A,D), + C is D+1, + setarg(3,A,C), + ( E==not_stored_yet -> + A=suspension(_,_,_,_,F), + term_variables(F,B), + 'chr none_locked'(B), + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_nonvar/1___1',G), + H=[A|G], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_nonvar/1___1',H), + ( G=[I|_] -> + setarg(4,I,H) ; 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) + 'attach_known/1_1_$special_nonvar/1___1'(B,A) ; true + ). +'known/1_1_$special_var/1'(A) :- + 'known/1_1_$special_var/1___1__0'(A,_). +'known/1_1_$special_var/1___1__0'(A,B) :- + ( 'chr newvia_1'(A,F) -> + get_attr(F,guard_entailment,G), + G=v(_,_,_,_,_,E,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_var/1___1',E) ), + 'chr sbag_member'(C,E), + C=suspension(_,active,_,_,D), + D==A, + !, ( var(B) -> true ; - remove_constraint_internal(B,P,Q), - ( Q==yes -> - '$delete_from_store_variables/1'(B), - 'detach_variables/1'(P,B) + B=suspension(_,M,_,_,N), + setarg(2,B,removed), + ( M==not_stored_yet -> + H=[] + ; + term_variables(N,H), + arg(4,B,I), + ( var(I) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_var/1___1',J), + J=[_|K], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_var/1___1',K), + ( K=[L|_] -> + setarg(4,L,_) + ; + true + ) + ; + I=[_,_|K], + setarg(2,I,K), + ( K=[L|_] -> + setarg(4,L,I) + ; + true + ) + ), + 'detach_known/1_1_$special_var/1___1'(H,B) + ) + ). +'known/1_1_$special_var/1___1__0'(_,A) :- + nb_getval('$chr_store_global_ground_guard_entailment____known/1_1_$special_fail/0___0',C), + 'chr sbag_member'(B,C), + B=suspension(_,active,_), + !, + ( var(A) -> + true + ; + A=suspension(_,I,_,_,J), + setarg(2,A,removed), + ( I==not_stored_yet -> + D=[] + ; + term_variables(J,D), + arg(4,A,E), + ( var(E) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_var/1___1',F), + F=[_|G], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_var/1___1',G), + ( G=[H|_] -> + setarg(4,H,_) + ; + true + ) + ; + E=[_,_|G], + setarg(2,E,G), + ( G=[H|_] -> + setarg(4,H,E) + ; + true + ) + ), + 'detach_known/1_1_$special_var/1___1'(D,A) + ) + ). +'known/1_1_$special_var/1___1__0'(A,B) :- + ( 'chr newvia_1'(A,F) -> + get_attr(F,guard_entailment,G), + G=v(_,_,_,_,_,_,_,_,_,_,_,_,_,_,E,_,_,_,_,_,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',E) + ), + 'chr sbag_member'(C,E), + C=suspension(_,active,_,_,D), + nonvar(D), + D=var(H), + H==A, + !, + C=suspension(_,_,_,_,U), + setarg(2,C,removed), + term_variables(U,I), + arg(4,C,Q), + ( var(Q) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',R), + R=[_|S], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',S), + ( S=[T|_] -> + setarg(4,T,_) + ; + true + ) + ; + Q=[_,_|S], + setarg(2,Q,S), + ( S=[T|_] -> + setarg(4,T,Q) ; true ) ), - functor(I,J,K), - I=..[_|L], - append(L,A,M), - variables(M). -'variables/1__0'(A,B) :- + 'detach_known/1_1_$special_\\+/1___1'(I,C), ( var(B) -> - insert_constraint_internal(D,C,B,guard_entailment:'variables/1__0'(A,B),variables(A),[A]) + true ; - activate_constraint(D,C,B,_) + B=suspension(_,O,_,_,P), + setarg(2,B,removed), + ( O==not_stored_yet -> + J=[] + ; + term_variables(P,J), + arg(4,B,K), + ( var(K) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_var/1___1',L), + L=[_|M], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_var/1___1',M), + ( M=[N|_] -> + setarg(4,N,_) + ; + true + ) + ; + K=[_,_|M], + setarg(2,K,M), + ( M=[N|_] -> + setarg(4,N,K) + ; + true + ) + ), + 'detach_known/1_1_$special_var/1___1'(J,B) + ) ), - ( D==yes -> - '$insert_in_store_variables/1'(B), - 'attach_variables/1'(C,B) + 'known/1_1_$special_fail/0'. +'known/1_1_$special_var/1___1__0'(A,B) :- + ( 'chr newvia_1'(A,F) -> + get_attr(F,guard_entailment,G), + G=v(_,_,_,_,E,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_nonvar/1___1',E) + ), + 'chr sbag_member'(C,E), + C=suspension(_,active,_,_,D), + D==A, + !, + C=suspension(_,_,_,_,T), + setarg(2,C,removed), + term_variables(T,H), + arg(4,C,P), + ( var(P) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_nonvar/1___1',Q), + Q=[_|R], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_nonvar/1___1',R), + ( R=[S|_] -> + setarg(4,S,_) + ; + true + ) + ; + P=[_,_|R], + setarg(2,P,R), + ( R=[S|_] -> + setarg(4,S,P) + ; + true + ) + ), + 'detach_known/1_1_$special_nonvar/1___1'(H,C), + ( var(B) -> + true + ; + B=suspension(_,N,_,_,O), + setarg(2,B,removed), + ( N==not_stored_yet -> + I=[] + ; + term_variables(O,I), + arg(4,B,J), + ( var(J) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_var/1___1',K), + K=[_|L], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_var/1___1',L), + ( L=[M|_] -> + setarg(4,M,_) + ; + true + ) + ; + J=[_,_|L], + setarg(2,J,L), + ( L=[M|_] -> + setarg(4,M,J) + ; + true + ) + ), + 'detach_known/1_1_$special_var/1___1'(I,B) + ) + ), + 'known/1_1_$special_fail/0'. +'known/1_1_$special_var/1___1__0'(A,B) :- + ( 'chr newvia_1'(A,D) -> + get_attr(D,guard_entailment,E), + E=v(_,_,_,C,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',C) + ), + !, + ( var(B) -> + B=suspension(F,not_stored_yet,0,_,A), + 'chr gen_id'(F) + ; + true + ), + 'known/1_1_$special_var/1___1__0__0__7'(C,A,B). +'known/1_1_$special_var/1___1__0__0__7'([],B,A) :- + 'known/1_1_$special_var/1___1__1'(B,A). +'known/1_1_$special_var/1___1__0__0__7'([E|H],A,B) :- + ( E=suspension(_,active,_,_,C,D), + nonvar(C), + C=(\+F), + nonvar(F), + F=var(G), + G==A -> + E=suspension(_,_,_,_,V,W), + setarg(2,E,removed), + term_variables(term(V,W),I), + arg(4,E,R), + ( var(R) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',S), + S=[_|T], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',T), + ( T=[U|_] -> + setarg(4,U,_) + ; + true + ) + ; + R=[_,_|T], + setarg(2,R,T), + ( T=[U|_] -> + setarg(4,U,R) + ; + true + ) + ), + 'detach_known/1_1_$special_;/2___2'(I,E), + arg(2,B,M), + setarg(2,B,active), + arg(3,B,L), + K is L+1, + setarg(3,B,K), + ( M==not_stored_yet -> + B=suspension(_,_,_,_,N), + term_variables(N,J), + 'chr none_locked'(J), + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_var/1___1',O), + P=[B|O], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_var/1___1',P), + ( O=[Q|_] -> + setarg(4,Q,P) + ; + true + ), + 'attach_known/1_1_$special_var/1___1'(J,B) + ; + true + ), + known(D), + ( B=suspension(_,active,K,_,_) -> + setarg(2,B,inactive), + 'known/1_1_$special_var/1___1__0__0__7'(H,A,B) + ; + true + ) + ; + 'known/1_1_$special_var/1___1__0__0__7'(H,A,B) + ). +'known/1_1_$special_var/1___1__0'(A,B) :- + ( var(B) -> + B=suspension(C,not_stored_yet,0,_,A), + 'chr gen_id'(C) + ; + true + ), + 'known/1_1_$special_var/1___1__1'(A,B). +'known/1_1_$special_var/1___1__1'(A,B) :- + ( 'chr newvia_1'(A,D) -> + get_attr(D,guard_entailment,E), + E=v(_,_,_,C,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',C) + ), + !, + 'known/1_1_$special_var/1___1__1__0__8'(C,A,B). +'known/1_1_$special_var/1___1__1__0__8'([],B,A) :- + 'known/1_1_$special_var/1___1__2'(B,A). +'known/1_1_$special_var/1___1__1__0__8'([E|I],A,B) :- + ( E=suspension(_,active,_,_,C,D), + nonvar(C), + C=(F,_), + nonvar(F), + F=(\+G), + nonvar(G), + G=var(H), + H==A -> + E=suspension(_,_,_,_,W,X), + setarg(2,E,removed), + term_variables(term(W,X),J), + arg(4,E,S), + ( var(S) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',T), + T=[_|U], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',U), + ( U=[V|_] -> + setarg(4,V,_) + ; + true + ) + ; + S=[_,_|U], + setarg(2,S,U), + ( U=[V|_] -> + setarg(4,V,S) + ; + true + ) + ), + 'detach_known/1_1_$special_;/2___2'(J,E), + arg(2,B,N), + setarg(2,B,active), + arg(3,B,M), + L is M+1, + setarg(3,B,L), + ( N==not_stored_yet -> + B=suspension(_,_,_,_,O), + term_variables(O,K), + 'chr none_locked'(K), + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_var/1___1',P), + Q=[B|P], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_var/1___1',Q), + ( P=[R|_] -> + setarg(4,R,Q) + ; + true + ), + 'attach_known/1_1_$special_var/1___1'(K,B) + ; + true + ), + known(D), + ( B=suspension(_,active,L,_,_) -> + setarg(2,B,inactive), + 'known/1_1_$special_var/1___1__1__0__8'(I,A,B) + ; + true + ) + ; + 'known/1_1_$special_var/1___1__1__0__8'(I,A,B) + ). +'known/1_1_$special_var/1___1__1'(A,B) :- + 'known/1_1_$special_var/1___1__2'(A,B). +'known/1_1_$special_var/1___1__2'(_,A) :- + arg(2,A,E), + setarg(2,A,active), + arg(3,A,D), + C is D+1, + setarg(3,A,C), + ( E==not_stored_yet -> + A=suspension(_,_,_,_,F), + term_variables(F,B), + 'chr none_locked'(B), + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_var/1___1',G), + H=[A|G], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_var/1___1',H), + ( G=[I|_] -> + setarg(4,I,H) + ; + true + ), + 'attach_known/1_1_$special_var/1___1'(B,A) + ; + true + ). +'known/1_1_$special_atom/1'(A) :- + 'known/1_1_$special_atom/1___1__0'(A,_). +'known/1_1_$special_atom/1___1__0'(A,B) :- + ( 'chr newvia_1'(A,F) -> + get_attr(F,guard_entailment,G), + G=v(_,_,_,_,_,_,E,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_atom/1___1',E) + ), + 'chr sbag_member'(C,E), + C=suspension(_,active,_,_,_,D), + D==A, + !, + ( var(B) -> + true + ; + B=suspension(_,M,_,_,_,N), + setarg(2,B,removed), + ( M==not_stored_yet -> + H=[] + ; + term_variables(N,H), + arg(5,B,I), + ( var(I) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_atom/1___1',J), + J=[_|K], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_atom/1___1',K), + ( K=[L|_] -> + setarg(5,L,_) + ; + true + ) + ; + I=[_,_|K], + setarg(2,I,K), + ( K=[L|_] -> + setarg(5,L,I) + ; + true + ) + ), + 'detach_known/1_1_$special_atom/1___1'(H,B) + ) + ). +'known/1_1_$special_atom/1___1__0'(_,A) :- + nb_getval('$chr_store_global_ground_guard_entailment____known/1_1_$special_fail/0___0',C), + 'chr sbag_member'(B,C), + B=suspension(_,active,_), + !, + ( var(A) -> + true + ; + A=suspension(_,I,_,_,_,J), + setarg(2,A,removed), + ( I==not_stored_yet -> + D=[] + ; + term_variables(J,D), + arg(5,A,E), + ( var(E) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_atom/1___1',F), + F=[_|G], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_atom/1___1',G), + ( G=[H|_] -> + setarg(5,H,_) + ; + true + ) + ; + E=[_,_|G], + setarg(2,E,G), + ( G=[H|_] -> + setarg(5,H,E) + ; + true + ) + ), + 'detach_known/1_1_$special_atom/1___1'(D,A) + ) + ). +'known/1_1_$special_atom/1___1__0'(A,B) :- + ( 'chr newvia_1'(A,F) -> + get_attr(F,guard_entailment,G), + G=v(_,_,_,_,_,_,_,_,_,_,_,_,_,_,E,_,_,_,_,_,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',E) + ), + 'chr sbag_member'(C,E), + C=suspension(_,active,_,_,D), + nonvar(D), + D=atom(H), + H==A, + !, + C=suspension(_,_,_,_,U), + setarg(2,C,removed), + term_variables(U,I), + arg(4,C,Q), + ( var(Q) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',R), + R=[_|S], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',S), + ( S=[T|_] -> + setarg(4,T,_) + ; + true + ) + ; + Q=[_,_|S], + setarg(2,Q,S), + ( S=[T|_] -> + setarg(4,T,Q) + ; + true + ) + ), + 'detach_known/1_1_$special_\\+/1___1'(I,C), + ( var(B) -> + true + ; + B=suspension(_,O,_,_,_,P), + setarg(2,B,removed), + ( O==not_stored_yet -> + J=[] + ; + term_variables(P,J), + arg(5,B,K), + ( var(K) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_atom/1___1',L), + L=[_|M], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_atom/1___1',M), + ( M=[N|_] -> + setarg(5,N,_) + ; + true + ) + ; + K=[_,_|M], + setarg(2,K,M), + ( M=[N|_] -> + setarg(5,N,K) + ; + true + ) + ), + 'detach_known/1_1_$special_atom/1___1'(J,B) + ) + ), + 'known/1_1_$special_fail/0'. +'known/1_1_$special_atom/1___1__0'(A,B) :- + ( var(B) -> + B=suspension(E,not_stored_yet,t,0,_,A), + 'chr gen_id'(E) + ; + true + ), + ( + '$novel_production'(B,239), + !, + '$extend_history'(B,239), + arg(2,B,G), + setarg(2,B,active), + arg(4,B,F), + D is F+1, + setarg(4,B,D), + ( G==not_stored_yet -> + B=suspension(_,_,_,_,_,H), + term_variables(H,C), + 'chr none_locked'(C), + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_atom/1___1',I), + J=[B|I], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_atom/1___1',J), + ( I=[K|_] -> + setarg(5,K,J) + ; + true + ), + 'attach_known/1_1_$special_atom/1___1'(C,B) + ; + true + ), + 'known/1_1_$special_nonvar/1'(A), + ( B=suspension(_,active,_,D,_,_) -> + setarg(2,B,inactive), + 'known/1_1_$special_atom/1___1__1'(A,B) + ; + true + ) + ; + 'known/1_1_$special_atom/1___1__1'(A,B) + ). +'known/1_1_$special_atom/1___1__1'(A,B) :- + ( 'chr newvia_1'(A,D) -> + get_attr(D,guard_entailment,E), + E=v(_,_,_,C,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',C) + ), + !, + 'known/1_1_$special_atom/1___1__1__0__7'(C,A,B). +'known/1_1_$special_atom/1___1__1__0__7'([],B,A) :- + 'known/1_1_$special_atom/1___1__2'(B,A). +'known/1_1_$special_atom/1___1__1__0__7'([E|H],A,B) :- + ( E=suspension(_,active,_,_,C,D), + nonvar(C), + C=(\+F), + nonvar(F), + F=atom(G), + G==A -> + E=suspension(_,_,_,_,V,W), + setarg(2,E,removed), + term_variables(term(V,W),I), + arg(4,E,R), + ( var(R) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',S), + S=[_|T], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',T), + ( T=[U|_] -> + setarg(4,U,_) + ; + true + ) + ; + R=[_,_|T], + setarg(2,R,T), + ( T=[U|_] -> + setarg(4,U,R) + ; + true + ) + ), + 'detach_known/1_1_$special_;/2___2'(I,E), + arg(2,B,M), + setarg(2,B,active), + arg(4,B,L), + K is L+1, + setarg(4,B,K), + ( M==not_stored_yet -> + B=suspension(_,_,_,_,_,N), + term_variables(N,J), + 'chr none_locked'(J), + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_atom/1___1',O), + P=[B|O], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_atom/1___1',P), + ( O=[Q|_] -> + setarg(5,Q,P) + ; + true + ), + 'attach_known/1_1_$special_atom/1___1'(J,B) + ; + true + ), + known(D), + ( B=suspension(_,active,_,K,_,_) -> + setarg(2,B,inactive), + 'known/1_1_$special_atom/1___1__1__0__7'(H,A,B) + ; + true + ) + ; + 'known/1_1_$special_atom/1___1__1__0__7'(H,A,B) + ). +'known/1_1_$special_atom/1___1__1'(A,B) :- + 'known/1_1_$special_atom/1___1__2'(A,B). +'known/1_1_$special_atom/1___1__2'(A,B) :- + ( 'chr newvia_1'(A,D) -> + get_attr(D,guard_entailment,E), + E=v(_,_,_,C,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',C) + ), + !, + 'known/1_1_$special_atom/1___1__2__0__8'(C,A,B). +'known/1_1_$special_atom/1___1__2__0__8'([],B,A) :- + 'known/1_1_$special_atom/1___1__3'(B,A). +'known/1_1_$special_atom/1___1__2__0__8'([E|I],A,B) :- + ( E=suspension(_,active,_,_,C,D), + nonvar(C), + C=(F,_), + nonvar(F), + F=(\+G), + nonvar(G), + G=atom(H), + H==A -> + E=suspension(_,_,_,_,W,X), + setarg(2,E,removed), + term_variables(term(W,X),J), + arg(4,E,S), + ( var(S) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',T), + T=[_|U], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',U), + ( U=[V|_] -> + setarg(4,V,_) + ; + true + ) + ; + S=[_,_|U], + setarg(2,S,U), + ( U=[V|_] -> + setarg(4,V,S) + ; + true + ) + ), + 'detach_known/1_1_$special_;/2___2'(J,E), + arg(2,B,N), + setarg(2,B,active), + arg(4,B,M), + L is M+1, + setarg(4,B,L), + ( N==not_stored_yet -> + B=suspension(_,_,_,_,_,O), + term_variables(O,K), + 'chr none_locked'(K), + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_atom/1___1',P), + Q=[B|P], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_atom/1___1',Q), + ( P=[R|_] -> + setarg(5,R,Q) + ; + true + ), + 'attach_known/1_1_$special_atom/1___1'(K,B) + ; + true + ), + known(D), + ( B=suspension(_,active,_,L,_,_) -> + setarg(2,B,inactive), + 'known/1_1_$special_atom/1___1__2__0__8'(I,A,B) + ; + true + ) + ; + 'known/1_1_$special_atom/1___1__2__0__8'(I,A,B) + ). +'known/1_1_$special_atom/1___1__2'(A,B) :- + 'known/1_1_$special_atom/1___1__3'(A,B). +'known/1_1_$special_atom/1___1__3'(_,A) :- + arg(2,A,E), + setarg(2,A,active), + arg(4,A,D), + C is D+1, + setarg(4,A,C), + ( E==not_stored_yet -> + A=suspension(_,_,_,_,_,F), + term_variables(F,B), + 'chr none_locked'(B), + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_atom/1___1',G), + H=[A|G], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_atom/1___1',H), + ( G=[I|_] -> + setarg(5,I,H) + ; + true + ), + 'attach_known/1_1_$special_atom/1___1'(B,A) + ; + true + ). +'known/1_1_$special_atomic/1'(A) :- + 'known/1_1_$special_atomic/1___1__0'(A,_). +'known/1_1_$special_atomic/1___1__0'(A,B) :- + ( 'chr newvia_1'(A,F) -> + get_attr(F,guard_entailment,G), + G=v(_,_,_,_,_,_,_,E,_,_,_,_,_,_,_,_,_,_,_,_,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_atomic/1___1',E) + ), + 'chr sbag_member'(C,E), + C=suspension(_,active,_,_,_,D), + D==A, + !, + ( var(B) -> + true + ; + B=suspension(_,M,_,_,_,N), + setarg(2,B,removed), + ( M==not_stored_yet -> + H=[] + ; + term_variables(N,H), + arg(5,B,I), + ( var(I) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_atomic/1___1',J), + J=[_|K], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_atomic/1___1',K), + ( K=[L|_] -> + setarg(5,L,_) + ; + true + ) + ; + I=[_,_|K], + setarg(2,I,K), + ( K=[L|_] -> + setarg(5,L,I) + ; + true + ) + ), + 'detach_known/1_1_$special_atomic/1___1'(H,B) + ) + ). +'known/1_1_$special_atomic/1___1__0'(_,A) :- + nb_getval('$chr_store_global_ground_guard_entailment____known/1_1_$special_fail/0___0',C), + 'chr sbag_member'(B,C), + B=suspension(_,active,_), + !, + ( var(A) -> + true + ; + A=suspension(_,I,_,_,_,J), + setarg(2,A,removed), + ( I==not_stored_yet -> + D=[] + ; + term_variables(J,D), + arg(5,A,E), + ( var(E) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_atomic/1___1',F), + F=[_|G], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_atomic/1___1',G), + ( G=[H|_] -> + setarg(5,H,_) + ; + true + ) + ; + E=[_,_|G], + setarg(2,E,G), + ( G=[H|_] -> + setarg(5,H,E) + ; + true + ) + ), + 'detach_known/1_1_$special_atomic/1___1'(D,A) + ) + ). +'known/1_1_$special_atomic/1___1__0'(A,B) :- + ( 'chr newvia_1'(A,F) -> + get_attr(F,guard_entailment,G), + G=v(_,_,_,_,_,_,_,_,_,_,_,_,_,_,E,_,_,_,_,_,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',E) + ), + 'chr sbag_member'(C,E), + C=suspension(_,active,_,_,D), + nonvar(D), + D=atomic(H), + H==A, + !, + C=suspension(_,_,_,_,U), + setarg(2,C,removed), + term_variables(U,I), + arg(4,C,Q), + ( var(Q) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',R), + R=[_|S], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',S), + ( S=[T|_] -> + setarg(4,T,_) + ; + true + ) + ; + Q=[_,_|S], + setarg(2,Q,S), + ( S=[T|_] -> + setarg(4,T,Q) + ; + true + ) + ), + 'detach_known/1_1_$special_\\+/1___1'(I,C), + ( var(B) -> + true + ; + B=suspension(_,O,_,_,_,P), + setarg(2,B,removed), + ( O==not_stored_yet -> + J=[] + ; + term_variables(P,J), + arg(5,B,K), + ( var(K) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_atomic/1___1',L), + L=[_|M], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_atomic/1___1',M), + ( M=[N|_] -> + setarg(5,N,_) + ; + true + ) + ; + K=[_,_|M], + setarg(2,K,M), + ( M=[N|_] -> + setarg(5,N,K) + ; + true + ) + ), + 'detach_known/1_1_$special_atomic/1___1'(J,B) + ) + ), + 'known/1_1_$special_fail/0'. +'known/1_1_$special_atomic/1___1__0'(A,B) :- + ( var(B) -> + B=suspension(E,not_stored_yet,t,0,_,A), + 'chr gen_id'(E) + ; + true + ), + ( + '$novel_production'(B,237), + !, + '$extend_history'(B,237), + arg(2,B,G), + setarg(2,B,active), + arg(4,B,F), + D is F+1, + setarg(4,B,D), + ( G==not_stored_yet -> + B=suspension(_,_,_,_,_,H), + term_variables(H,C), + 'chr none_locked'(C), + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_atomic/1___1',I), + J=[B|I], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_atomic/1___1',J), + ( I=[K|_] -> + setarg(5,K,J) + ; + true + ), + 'attach_known/1_1_$special_atomic/1___1'(C,B) + ; + true + ), + 'known/1_1_$special_nonvar/1'(A), + ( B=suspension(_,active,_,D,_,_) -> + setarg(2,B,inactive), + 'known/1_1_$special_atomic/1___1__1'(A,B) + ; + true + ) + ; + 'known/1_1_$special_atomic/1___1__1'(A,B) + ). +'known/1_1_$special_atomic/1___1__1'(A,B) :- + ( 'chr newvia_1'(A,D) -> + get_attr(D,guard_entailment,E), + E=v(_,_,_,C,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',C) + ), + !, + 'known/1_1_$special_atomic/1___1__1__0__7'(C,A,B). +'known/1_1_$special_atomic/1___1__1__0__7'([],B,A) :- + 'known/1_1_$special_atomic/1___1__2'(B,A). +'known/1_1_$special_atomic/1___1__1__0__7'([E|H],A,B) :- + ( E=suspension(_,active,_,_,C,D), + nonvar(C), + C=(\+F), + nonvar(F), + F=atomic(G), + G==A -> + E=suspension(_,_,_,_,V,W), + setarg(2,E,removed), + term_variables(term(V,W),I), + arg(4,E,R), + ( var(R) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',S), + S=[_|T], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',T), + ( T=[U|_] -> + setarg(4,U,_) + ; + true + ) + ; + R=[_,_|T], + setarg(2,R,T), + ( T=[U|_] -> + setarg(4,U,R) + ; + true + ) + ), + 'detach_known/1_1_$special_;/2___2'(I,E), + arg(2,B,M), + setarg(2,B,active), + arg(4,B,L), + K is L+1, + setarg(4,B,K), + ( M==not_stored_yet -> + B=suspension(_,_,_,_,_,N), + term_variables(N,J), + 'chr none_locked'(J), + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_atomic/1___1',O), + P=[B|O], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_atomic/1___1',P), + ( O=[Q|_] -> + setarg(5,Q,P) + ; + true + ), + 'attach_known/1_1_$special_atomic/1___1'(J,B) + ; + true + ), + known(D), + ( B=suspension(_,active,_,K,_,_) -> + setarg(2,B,inactive), + 'known/1_1_$special_atomic/1___1__1__0__7'(H,A,B) + ; + true + ) + ; + 'known/1_1_$special_atomic/1___1__1__0__7'(H,A,B) + ). +'known/1_1_$special_atomic/1___1__1'(A,B) :- + 'known/1_1_$special_atomic/1___1__2'(A,B). +'known/1_1_$special_atomic/1___1__2'(A,B) :- + ( 'chr newvia_1'(A,D) -> + get_attr(D,guard_entailment,E), + E=v(_,_,_,C,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',C) + ), + !, + 'known/1_1_$special_atomic/1___1__2__0__8'(C,A,B). +'known/1_1_$special_atomic/1___1__2__0__8'([],B,A) :- + 'known/1_1_$special_atomic/1___1__3'(B,A). +'known/1_1_$special_atomic/1___1__2__0__8'([E|I],A,B) :- + ( E=suspension(_,active,_,_,C,D), + nonvar(C), + C=(F,_), + nonvar(F), + F=(\+G), + nonvar(G), + G=atomic(H), + H==A -> + E=suspension(_,_,_,_,W,X), + setarg(2,E,removed), + term_variables(term(W,X),J), + arg(4,E,S), + ( var(S) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',T), + T=[_|U], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',U), + ( U=[V|_] -> + setarg(4,V,_) + ; + true + ) + ; + S=[_,_|U], + setarg(2,S,U), + ( U=[V|_] -> + setarg(4,V,S) + ; + true + ) + ), + 'detach_known/1_1_$special_;/2___2'(J,E), + arg(2,B,N), + setarg(2,B,active), + arg(4,B,M), + L is M+1, + setarg(4,B,L), + ( N==not_stored_yet -> + B=suspension(_,_,_,_,_,O), + term_variables(O,K), + 'chr none_locked'(K), + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_atomic/1___1',P), + Q=[B|P], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_atomic/1___1',Q), + ( P=[R|_] -> + setarg(5,R,Q) + ; + true + ), + 'attach_known/1_1_$special_atomic/1___1'(K,B) + ; + true + ), + known(D), + ( B=suspension(_,active,_,L,_,_) -> + setarg(2,B,inactive), + 'known/1_1_$special_atomic/1___1__2__0__8'(I,A,B) + ; + true + ) + ; + 'known/1_1_$special_atomic/1___1__2__0__8'(I,A,B) + ). +'known/1_1_$special_atomic/1___1__2'(A,B) :- + 'known/1_1_$special_atomic/1___1__3'(A,B). +'known/1_1_$special_atomic/1___1__3'(_,A) :- + arg(2,A,E), + setarg(2,A,active), + arg(4,A,D), + C is D+1, + setarg(4,A,C), + ( E==not_stored_yet -> + A=suspension(_,_,_,_,_,F), + term_variables(F,B), + 'chr none_locked'(B), + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_atomic/1___1',G), + H=[A|G], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_atomic/1___1',H), + ( G=[I|_] -> + setarg(5,I,H) + ; + true + ), + 'attach_known/1_1_$special_atomic/1___1'(B,A) + ; + true + ). +'known/1_1_$special_compound/1'(A) :- + 'known/1_1_$special_compound/1___1__0'(A,_). +'known/1_1_$special_compound/1___1__0'(A,B) :- + ( 'chr newvia_1'(A,F) -> + get_attr(F,guard_entailment,G), + G=v(_,_,_,_,_,_,_,_,E,_,_,_,_,_,_,_,_,_,_,_,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_compound/1___1',E) + ), + 'chr sbag_member'(C,E), + C=suspension(_,active,_,_,_,D), + D==A, + !, + ( var(B) -> + true + ; + B=suspension(_,M,_,_,_,N), + setarg(2,B,removed), + ( M==not_stored_yet -> + H=[] + ; + term_variables(N,H), + arg(5,B,I), + ( var(I) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_compound/1___1',J), + J=[_|K], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_compound/1___1',K), + ( K=[L|_] -> + setarg(5,L,_) + ; + true + ) + ; + I=[_,_|K], + setarg(2,I,K), + ( K=[L|_] -> + setarg(5,L,I) + ; + true + ) + ), + 'detach_known/1_1_$special_compound/1___1'(H,B) + ) + ). +'known/1_1_$special_compound/1___1__0'(_,A) :- + nb_getval('$chr_store_global_ground_guard_entailment____known/1_1_$special_fail/0___0',C), + 'chr sbag_member'(B,C), + B=suspension(_,active,_), + !, + ( var(A) -> + true + ; + A=suspension(_,I,_,_,_,J), + setarg(2,A,removed), + ( I==not_stored_yet -> + D=[] + ; + term_variables(J,D), + arg(5,A,E), + ( var(E) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_compound/1___1',F), + F=[_|G], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_compound/1___1',G), + ( G=[H|_] -> + setarg(5,H,_) + ; + true + ) + ; + E=[_,_|G], + setarg(2,E,G), + ( G=[H|_] -> + setarg(5,H,E) + ; + true + ) + ), + 'detach_known/1_1_$special_compound/1___1'(D,A) + ) + ). +'known/1_1_$special_compound/1___1__0'(A,B) :- + ( 'chr newvia_1'(A,F) -> + get_attr(F,guard_entailment,G), + G=v(_,_,_,_,_,_,_,_,_,_,_,_,_,_,E,_,_,_,_,_,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',E) + ), + 'chr sbag_member'(C,E), + C=suspension(_,active,_,_,D), + nonvar(D), + D=compound(H), + H==A, + !, + C=suspension(_,_,_,_,U), + setarg(2,C,removed), + term_variables(U,I), + arg(4,C,Q), + ( var(Q) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',R), + R=[_|S], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',S), + ( S=[T|_] -> + setarg(4,T,_) + ; + true + ) + ; + Q=[_,_|S], + setarg(2,Q,S), + ( S=[T|_] -> + setarg(4,T,Q) + ; + true + ) + ), + 'detach_known/1_1_$special_\\+/1___1'(I,C), + ( var(B) -> + true + ; + B=suspension(_,O,_,_,_,P), + setarg(2,B,removed), + ( O==not_stored_yet -> + J=[] + ; + term_variables(P,J), + arg(5,B,K), + ( var(K) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_compound/1___1',L), + L=[_|M], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_compound/1___1',M), + ( M=[N|_] -> + setarg(5,N,_) + ; + true + ) + ; + K=[_,_|M], + setarg(2,K,M), + ( M=[N|_] -> + setarg(5,N,K) + ; + true + ) + ), + 'detach_known/1_1_$special_compound/1___1'(J,B) + ) + ), + 'known/1_1_$special_fail/0'. +'known/1_1_$special_compound/1___1__0'(A,B) :- + ( var(B) -> + B=suspension(E,not_stored_yet,t,0,_,A), + 'chr gen_id'(E) + ; + true + ), + ( + '$novel_production'(B,236), + !, + '$extend_history'(B,236), + arg(2,B,G), + setarg(2,B,active), + arg(4,B,F), + D is F+1, + setarg(4,B,D), + ( G==not_stored_yet -> + B=suspension(_,_,_,_,_,H), + term_variables(H,C), + 'chr none_locked'(C), + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_compound/1___1',I), + J=[B|I], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_compound/1___1',J), + ( I=[K|_] -> + setarg(5,K,J) + ; + true + ), + 'attach_known/1_1_$special_compound/1___1'(C,B) + ; + true + ), + 'known/1_1_$special_nonvar/1'(A), + ( B=suspension(_,active,_,D,_,_) -> + setarg(2,B,inactive), + 'known/1_1_$special_compound/1___1__1'(A,B) + ; + true + ) + ; + 'known/1_1_$special_compound/1___1__1'(A,B) + ). +'known/1_1_$special_compound/1___1__1'(A,B) :- + ( 'chr newvia_1'(A,D) -> + get_attr(D,guard_entailment,E), + E=v(_,_,_,C,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',C) + ), + !, + 'known/1_1_$special_compound/1___1__1__0__7'(C,A,B). +'known/1_1_$special_compound/1___1__1__0__7'([],B,A) :- + 'known/1_1_$special_compound/1___1__2'(B,A). +'known/1_1_$special_compound/1___1__1__0__7'([E|H],A,B) :- + ( E=suspension(_,active,_,_,C,D), + nonvar(C), + C=(\+F), + nonvar(F), + F=compound(G), + G==A -> + E=suspension(_,_,_,_,V,W), + setarg(2,E,removed), + term_variables(term(V,W),I), + arg(4,E,R), + ( var(R) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',S), + S=[_|T], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',T), + ( T=[U|_] -> + setarg(4,U,_) + ; + true + ) + ; + R=[_,_|T], + setarg(2,R,T), + ( T=[U|_] -> + setarg(4,U,R) + ; + true + ) + ), + 'detach_known/1_1_$special_;/2___2'(I,E), + arg(2,B,M), + setarg(2,B,active), + arg(4,B,L), + K is L+1, + setarg(4,B,K), + ( M==not_stored_yet -> + B=suspension(_,_,_,_,_,N), + term_variables(N,J), + 'chr none_locked'(J), + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_compound/1___1',O), + P=[B|O], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_compound/1___1',P), + ( O=[Q|_] -> + setarg(5,Q,P) + ; + true + ), + 'attach_known/1_1_$special_compound/1___1'(J,B) + ; + true + ), + known(D), + ( B=suspension(_,active,_,K,_,_) -> + setarg(2,B,inactive), + 'known/1_1_$special_compound/1___1__1__0__7'(H,A,B) + ; + true + ) + ; + 'known/1_1_$special_compound/1___1__1__0__7'(H,A,B) + ). +'known/1_1_$special_compound/1___1__1'(A,B) :- + 'known/1_1_$special_compound/1___1__2'(A,B). +'known/1_1_$special_compound/1___1__2'(A,B) :- + ( 'chr newvia_1'(A,D) -> + get_attr(D,guard_entailment,E), + E=v(_,_,_,C,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',C) + ), + !, + 'known/1_1_$special_compound/1___1__2__0__8'(C,A,B). +'known/1_1_$special_compound/1___1__2__0__8'([],B,A) :- + 'known/1_1_$special_compound/1___1__3'(B,A). +'known/1_1_$special_compound/1___1__2__0__8'([E|I],A,B) :- + ( E=suspension(_,active,_,_,C,D), + nonvar(C), + C=(F,_), + nonvar(F), + F=(\+G), + nonvar(G), + G=compound(H), + H==A -> + E=suspension(_,_,_,_,W,X), + setarg(2,E,removed), + term_variables(term(W,X),J), + arg(4,E,S), + ( var(S) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',T), + T=[_|U], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',U), + ( U=[V|_] -> + setarg(4,V,_) + ; + true + ) + ; + S=[_,_|U], + setarg(2,S,U), + ( U=[V|_] -> + setarg(4,V,S) + ; + true + ) + ), + 'detach_known/1_1_$special_;/2___2'(J,E), + arg(2,B,N), + setarg(2,B,active), + arg(4,B,M), + L is M+1, + setarg(4,B,L), + ( N==not_stored_yet -> + B=suspension(_,_,_,_,_,O), + term_variables(O,K), + 'chr none_locked'(K), + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_compound/1___1',P), + Q=[B|P], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_compound/1___1',Q), + ( P=[R|_] -> + setarg(5,R,Q) + ; + true + ), + 'attach_known/1_1_$special_compound/1___1'(K,B) + ; + true + ), + known(D), + ( B=suspension(_,active,_,L,_,_) -> + setarg(2,B,inactive), + 'known/1_1_$special_compound/1___1__2__0__8'(I,A,B) + ; + true + ) + ; + 'known/1_1_$special_compound/1___1__2__0__8'(I,A,B) + ). +'known/1_1_$special_compound/1___1__2'(A,B) :- + 'known/1_1_$special_compound/1___1__3'(A,B). +'known/1_1_$special_compound/1___1__3'(_,A) :- + arg(2,A,E), + setarg(2,A,active), + arg(4,A,D), + C is D+1, + setarg(4,A,C), + ( E==not_stored_yet -> + A=suspension(_,_,_,_,_,F), + term_variables(F,B), + 'chr none_locked'(B), + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_compound/1___1',G), + H=[A|G], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_compound/1___1',H), + ( G=[I|_] -> + setarg(5,I,H) + ; + true + ), + 'attach_known/1_1_$special_compound/1___1'(B,A) + ; + true + ). +'known/1_1_$special_ground/1'(A) :- + 'known/1_1_$special_ground/1___1__0'(A,_). +'known/1_1_$special_ground/1___1__0'(A,B) :- + ( 'chr newvia_1'(A,F) -> + get_attr(F,guard_entailment,G), + G=v(_,_,_,_,_,_,_,_,_,E,_,_,_,_,_,_,_,_,_,_,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_ground/1___1',E) + ), + 'chr sbag_member'(C,E), + C=suspension(_,active,_,_,_,D), + D==A, + !, + ( var(B) -> + true + ; + B=suspension(_,M,_,_,_,N), + setarg(2,B,removed), + ( M==not_stored_yet -> + H=[] + ; + term_variables(N,H), + arg(5,B,I), + ( var(I) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_ground/1___1',J), + J=[_|K], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_ground/1___1',K), + ( K=[L|_] -> + setarg(5,L,_) + ; + true + ) + ; + I=[_,_|K], + setarg(2,I,K), + ( K=[L|_] -> + setarg(5,L,I) + ; + true + ) + ), + 'detach_known/1_1_$special_ground/1___1'(H,B) + ) + ). +'known/1_1_$special_ground/1___1__0'(_,A) :- + nb_getval('$chr_store_global_ground_guard_entailment____known/1_1_$special_fail/0___0',C), + 'chr sbag_member'(B,C), + B=suspension(_,active,_), + !, + ( var(A) -> + true + ; + A=suspension(_,I,_,_,_,J), + setarg(2,A,removed), + ( I==not_stored_yet -> + D=[] + ; + term_variables(J,D), + arg(5,A,E), + ( var(E) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_ground/1___1',F), + F=[_|G], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_ground/1___1',G), + ( G=[H|_] -> + setarg(5,H,_) + ; + true + ) + ; + E=[_,_|G], + setarg(2,E,G), + ( G=[H|_] -> + setarg(5,H,E) + ; + true + ) + ), + 'detach_known/1_1_$special_ground/1___1'(D,A) + ) + ). +'known/1_1_$special_ground/1___1__0'(A,B) :- + ( 'chr newvia_1'(A,F) -> + get_attr(F,guard_entailment,G), + G=v(_,_,_,_,_,_,_,_,_,_,_,_,_,_,E,_,_,_,_,_,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',E) + ), + 'chr sbag_member'(C,E), + C=suspension(_,active,_,_,D), + nonvar(D), + D=ground(H), + H==A, + !, + C=suspension(_,_,_,_,U), + setarg(2,C,removed), + term_variables(U,I), + arg(4,C,Q), + ( var(Q) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',R), + R=[_|S], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',S), + ( S=[T|_] -> + setarg(4,T,_) + ; + true + ) + ; + Q=[_,_|S], + setarg(2,Q,S), + ( S=[T|_] -> + setarg(4,T,Q) + ; + true + ) + ), + 'detach_known/1_1_$special_\\+/1___1'(I,C), + ( var(B) -> + true + ; + B=suspension(_,O,_,_,_,P), + setarg(2,B,removed), + ( O==not_stored_yet -> + J=[] + ; + term_variables(P,J), + arg(5,B,K), + ( var(K) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_ground/1___1',L), + L=[_|M], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_ground/1___1',M), + ( M=[N|_] -> + setarg(5,N,_) + ; + true + ) + ; + K=[_,_|M], + setarg(2,K,M), + ( M=[N|_] -> + setarg(5,N,K) + ; + true + ) + ), + 'detach_known/1_1_$special_ground/1___1'(J,B) + ) + ), + 'known/1_1_$special_fail/0'. +'known/1_1_$special_ground/1___1__0'(A,B) :- + ( var(B) -> + B=suspension(E,not_stored_yet,t,0,_,A), + 'chr gen_id'(E) + ; + true + ), + ( + '$novel_production'(B,235), + !, + '$extend_history'(B,235), + arg(2,B,G), + setarg(2,B,active), + arg(4,B,F), + D is F+1, + setarg(4,B,D), + ( G==not_stored_yet -> + B=suspension(_,_,_,_,_,H), + term_variables(H,C), + 'chr none_locked'(C), + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_ground/1___1',I), + J=[B|I], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_ground/1___1',J), + ( I=[K|_] -> + setarg(5,K,J) + ; + true + ), + 'attach_known/1_1_$special_ground/1___1'(C,B) + ; + true + ), + 'known/1_1_$special_nonvar/1'(A), + ( B=suspension(_,active,_,D,_,_) -> + setarg(2,B,inactive), + 'known/1_1_$special_ground/1___1__1'(A,B) + ; + true + ) + ; + 'known/1_1_$special_ground/1___1__1'(A,B) + ). +'known/1_1_$special_ground/1___1__1'(A,B) :- + ( 'chr newvia_1'(A,D) -> + get_attr(D,guard_entailment,E), + E=v(_,_,_,C,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',C) + ), + !, + 'known/1_1_$special_ground/1___1__1__0__7'(C,A,B). +'known/1_1_$special_ground/1___1__1__0__7'([],B,A) :- + 'known/1_1_$special_ground/1___1__2'(B,A). +'known/1_1_$special_ground/1___1__1__0__7'([E|H],A,B) :- + ( E=suspension(_,active,_,_,C,D), + nonvar(C), + C=(\+F), + nonvar(F), + F=ground(G), + G==A -> + E=suspension(_,_,_,_,V,W), + setarg(2,E,removed), + term_variables(term(V,W),I), + arg(4,E,R), + ( var(R) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',S), + S=[_|T], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',T), + ( T=[U|_] -> + setarg(4,U,_) + ; + true + ) + ; + R=[_,_|T], + setarg(2,R,T), + ( T=[U|_] -> + setarg(4,U,R) + ; + true + ) + ), + 'detach_known/1_1_$special_;/2___2'(I,E), + arg(2,B,M), + setarg(2,B,active), + arg(4,B,L), + K is L+1, + setarg(4,B,K), + ( M==not_stored_yet -> + B=suspension(_,_,_,_,_,N), + term_variables(N,J), + 'chr none_locked'(J), + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_ground/1___1',O), + P=[B|O], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_ground/1___1',P), + ( O=[Q|_] -> + setarg(5,Q,P) + ; + true + ), + 'attach_known/1_1_$special_ground/1___1'(J,B) + ; + true + ), + known(D), + ( B=suspension(_,active,_,K,_,_) -> + setarg(2,B,inactive), + 'known/1_1_$special_ground/1___1__1__0__7'(H,A,B) + ; + true + ) + ; + 'known/1_1_$special_ground/1___1__1__0__7'(H,A,B) + ). +'known/1_1_$special_ground/1___1__1'(A,B) :- + 'known/1_1_$special_ground/1___1__2'(A,B). +'known/1_1_$special_ground/1___1__2'(A,B) :- + ( 'chr newvia_1'(A,D) -> + get_attr(D,guard_entailment,E), + E=v(_,_,_,C,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',C) + ), + !, + 'known/1_1_$special_ground/1___1__2__0__8'(C,A,B). +'known/1_1_$special_ground/1___1__2__0__8'([],B,A) :- + 'known/1_1_$special_ground/1___1__3'(B,A). +'known/1_1_$special_ground/1___1__2__0__8'([E|I],A,B) :- + ( E=suspension(_,active,_,_,C,D), + nonvar(C), + C=(F,_), + nonvar(F), + F=(\+G), + nonvar(G), + G=ground(H), + H==A -> + E=suspension(_,_,_,_,W,X), + setarg(2,E,removed), + term_variables(term(W,X),J), + arg(4,E,S), + ( var(S) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',T), + T=[_|U], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',U), + ( U=[V|_] -> + setarg(4,V,_) + ; + true + ) + ; + S=[_,_|U], + setarg(2,S,U), + ( U=[V|_] -> + setarg(4,V,S) + ; + true + ) + ), + 'detach_known/1_1_$special_;/2___2'(J,E), + arg(2,B,N), + setarg(2,B,active), + arg(4,B,M), + L is M+1, + setarg(4,B,L), + ( N==not_stored_yet -> + B=suspension(_,_,_,_,_,O), + term_variables(O,K), + 'chr none_locked'(K), + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_ground/1___1',P), + Q=[B|P], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_ground/1___1',Q), + ( P=[R|_] -> + setarg(5,R,Q) + ; + true + ), + 'attach_known/1_1_$special_ground/1___1'(K,B) + ; + true + ), + known(D), + ( B=suspension(_,active,_,L,_,_) -> + setarg(2,B,inactive), + 'known/1_1_$special_ground/1___1__2__0__8'(I,A,B) + ; + true + ) + ; + 'known/1_1_$special_ground/1___1__2__0__8'(I,A,B) + ). +'known/1_1_$special_ground/1___1__2'(A,B) :- + 'known/1_1_$special_ground/1___1__3'(A,B). +'known/1_1_$special_ground/1___1__3'(_,A) :- + arg(2,A,E), + setarg(2,A,active), + arg(4,A,D), + C is D+1, + setarg(4,A,C), + ( E==not_stored_yet -> + A=suspension(_,_,_,_,_,F), + term_variables(F,B), + 'chr none_locked'(B), + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_ground/1___1',G), + H=[A|G], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_ground/1___1',H), + ( G=[I|_] -> + setarg(5,I,H) + ; + true + ), + 'attach_known/1_1_$special_ground/1___1'(B,A) + ; + true + ). +'known/1_1_$special_integer/1'(A) :- + 'known/1_1_$special_integer/1___1__0'(A,_). +'known/1_1_$special_integer/1___1__0'(A,B) :- + ( 'chr newvia_1'(A,F) -> + get_attr(F,guard_entailment,G), + G=v(_,_,_,_,_,_,_,_,_,_,E,_,_,_,_,_,_,_,_,_,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_integer/1___1',E) + ), + 'chr sbag_member'(C,E), + C=suspension(_,active,_,_,_,D), + D==A, + !, + ( var(B) -> + true + ; + B=suspension(_,M,_,_,_,N), + setarg(2,B,removed), + ( M==not_stored_yet -> + H=[] + ; + term_variables(N,H), + arg(5,B,I), + ( var(I) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_integer/1___1',J), + J=[_|K], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_integer/1___1',K), + ( K=[L|_] -> + setarg(5,L,_) + ; + true + ) + ; + I=[_,_|K], + setarg(2,I,K), + ( K=[L|_] -> + setarg(5,L,I) + ; + true + ) + ), + 'detach_known/1_1_$special_integer/1___1'(H,B) + ) + ). +'known/1_1_$special_integer/1___1__0'(_,A) :- + nb_getval('$chr_store_global_ground_guard_entailment____known/1_1_$special_fail/0___0',C), + 'chr sbag_member'(B,C), + B=suspension(_,active,_), + !, + ( var(A) -> + true + ; + A=suspension(_,I,_,_,_,J), + setarg(2,A,removed), + ( I==not_stored_yet -> + D=[] + ; + term_variables(J,D), + arg(5,A,E), + ( var(E) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_integer/1___1',F), + F=[_|G], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_integer/1___1',G), + ( G=[H|_] -> + setarg(5,H,_) + ; + true + ) + ; + E=[_,_|G], + setarg(2,E,G), + ( G=[H|_] -> + setarg(5,H,E) + ; + true + ) + ), + 'detach_known/1_1_$special_integer/1___1'(D,A) + ) + ). +'known/1_1_$special_integer/1___1__0'(A,B) :- + nonvar(A), + \+integer(A), + !, + ( var(B) -> + true + ; + B=suspension(_,H,_,_,_,I), + setarg(2,B,removed), + ( H==not_stored_yet -> + C=[] + ; + term_variables(I,C), + arg(5,B,D), + ( var(D) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_integer/1___1',E), + E=[_|F], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_integer/1___1',F), + ( F=[G|_] -> + setarg(5,G,_) + ; + true + ) + ; + D=[_,_|F], + setarg(2,D,F), + ( F=[G|_] -> + setarg(5,G,D) + ; + true + ) + ), + 'detach_known/1_1_$special_integer/1___1'(C,B) + ) + ), + 'known/1_1_$special_fail/0'. +'known/1_1_$special_integer/1___1__0'(A,B) :- + ( var(B) -> + B=suspension(E,not_stored_yet,t,0,_,A), + 'chr gen_id'(E) + ; + true + ), + ( + '$novel_production'(B,199), + !, + '$extend_history'(B,199), + arg(2,B,G), + setarg(2,B,active), + arg(4,B,F), + D is F+1, + setarg(4,B,D), + ( G==not_stored_yet -> + B=suspension(_,_,_,_,_,H), + term_variables(H,C), + 'chr none_locked'(C), + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_integer/1___1',I), + J=[B|I], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_integer/1___1',J), + ( I=[K|_] -> + setarg(5,K,J) + ; + true + ), + 'attach_known/1_1_$special_integer/1___1'(C,B) + ; + true + ), + 'known/1_1_$special_number/1'(A), + ( B=suspension(_,active,_,D,_,_) -> + setarg(2,B,inactive), + 'known/1_1_$special_integer/1___1__1'(A,B) + ; + true + ) + ; + 'known/1_1_$special_integer/1___1__1'(A,B) + ). +'known/1_1_$special_integer/1___1__1'(A,B) :- + ( 'chr newvia_1'(A,F) -> + get_attr(F,guard_entailment,G), + G=v(_,_,_,_,_,_,_,_,_,_,_,_,_,_,E,_,_,_,_,_,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',E) + ), + 'chr sbag_member'(C,E), + C=suspension(_,active,_,_,D), + nonvar(D), + D=integer(H), + H==A, + !, + C=suspension(_,_,_,_,U), + setarg(2,C,removed), + term_variables(U,I), + arg(4,C,Q), + ( var(Q) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',R), + R=[_|S], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',S), + ( S=[T|_] -> + setarg(4,T,_) + ; + true + ) + ; + Q=[_,_|S], + setarg(2,Q,S), + ( S=[T|_] -> + setarg(4,T,Q) + ; + true + ) + ), + 'detach_known/1_1_$special_\\+/1___1'(I,C), + ( var(B) -> + true + ; + B=suspension(_,O,_,_,_,P), + setarg(2,B,removed), + ( O==not_stored_yet -> + J=[] + ; + term_variables(P,J), + arg(5,B,K), + ( var(K) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_integer/1___1',L), + L=[_|M], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_integer/1___1',M), + ( M=[N|_] -> + setarg(5,N,_) + ; + true + ) + ; + K=[_,_|M], + setarg(2,K,M), + ( M=[N|_] -> + setarg(5,N,K) + ; + true + ) + ), + 'detach_known/1_1_$special_integer/1___1'(J,B) + ) + ), + 'known/1_1_$special_fail/0'. +'known/1_1_$special_integer/1___1__1'(A,B) :- + ( 'chr newvia_1'(A,D) -> + get_attr(D,guard_entailment,E), + E=v(_,_,_,C,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',C) + ), + !, + 'known/1_1_$special_integer/1___1__1__0__8'(C,A,B). +'known/1_1_$special_integer/1___1__1__0__8'([],B,A) :- + 'known/1_1_$special_integer/1___1__2'(B,A). +'known/1_1_$special_integer/1___1__1__0__8'([E|H],A,B) :- + ( E=suspension(_,active,_,_,C,D), + nonvar(C), + C=(\+F), + nonvar(F), + F=integer(G), + G==A -> + E=suspension(_,_,_,_,V,W), + setarg(2,E,removed), + term_variables(term(V,W),I), + arg(4,E,R), + ( var(R) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',S), + S=[_|T], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',T), + ( T=[U|_] -> + setarg(4,U,_) + ; + true + ) + ; + R=[_,_|T], + setarg(2,R,T), + ( T=[U|_] -> + setarg(4,U,R) + ; + true + ) + ), + 'detach_known/1_1_$special_;/2___2'(I,E), + arg(2,B,M), + setarg(2,B,active), + arg(4,B,L), + K is L+1, + setarg(4,B,K), + ( M==not_stored_yet -> + B=suspension(_,_,_,_,_,N), + term_variables(N,J), + 'chr none_locked'(J), + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_integer/1___1',O), + P=[B|O], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_integer/1___1',P), + ( O=[Q|_] -> + setarg(5,Q,P) + ; + true + ), + 'attach_known/1_1_$special_integer/1___1'(J,B) + ; + true + ), + known(D), + ( B=suspension(_,active,_,K,_,_) -> + setarg(2,B,inactive), + 'known/1_1_$special_integer/1___1__1__0__8'(H,A,B) + ; + true + ) + ; + 'known/1_1_$special_integer/1___1__1__0__8'(H,A,B) + ). +'known/1_1_$special_integer/1___1__1'(A,B) :- + 'known/1_1_$special_integer/1___1__2'(A,B). +'known/1_1_$special_integer/1___1__2'(A,B) :- + ( 'chr newvia_1'(A,D) -> + get_attr(D,guard_entailment,E), + E=v(_,_,_,C,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',C) + ), + !, + 'known/1_1_$special_integer/1___1__2__0__9'(C,A,B). +'known/1_1_$special_integer/1___1__2__0__9'([],B,A) :- + 'known/1_1_$special_integer/1___1__3'(B,A). +'known/1_1_$special_integer/1___1__2__0__9'([E|I],A,B) :- + ( E=suspension(_,active,_,_,C,D), + nonvar(C), + C=(F,_), + nonvar(F), + F=(\+G), + nonvar(G), + G=integer(H), + H==A -> + E=suspension(_,_,_,_,W,X), + setarg(2,E,removed), + term_variables(term(W,X),J), + arg(4,E,S), + ( var(S) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',T), + T=[_|U], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',U), + ( U=[V|_] -> + setarg(4,V,_) + ; + true + ) + ; + S=[_,_|U], + setarg(2,S,U), + ( U=[V|_] -> + setarg(4,V,S) + ; + true + ) + ), + 'detach_known/1_1_$special_;/2___2'(J,E), + arg(2,B,N), + setarg(2,B,active), + arg(4,B,M), + L is M+1, + setarg(4,B,L), + ( N==not_stored_yet -> + B=suspension(_,_,_,_,_,O), + term_variables(O,K), + 'chr none_locked'(K), + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_integer/1___1',P), + Q=[B|P], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_integer/1___1',Q), + ( P=[R|_] -> + setarg(5,R,Q) + ; + true + ), + 'attach_known/1_1_$special_integer/1___1'(K,B) + ; + true + ), + known(D), + ( B=suspension(_,active,_,L,_,_) -> + setarg(2,B,inactive), + 'known/1_1_$special_integer/1___1__2__0__9'(I,A,B) + ; + true + ) + ; + 'known/1_1_$special_integer/1___1__2__0__9'(I,A,B) + ). +'known/1_1_$special_integer/1___1__2'(A,B) :- + 'known/1_1_$special_integer/1___1__3'(A,B). +'known/1_1_$special_integer/1___1__3'(_,A) :- + arg(2,A,E), + setarg(2,A,active), + arg(4,A,D), + C is D+1, + setarg(4,A,C), + ( E==not_stored_yet -> + A=suspension(_,_,_,_,_,F), + term_variables(F,B), + 'chr none_locked'(B), + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_integer/1___1',G), + H=[A|G], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_integer/1___1',H), + ( G=[I|_] -> + setarg(5,I,H) + ; + true + ), + 'attach_known/1_1_$special_integer/1___1'(B,A) + ; + true + ). +'known/1_1_$special_float/1'(A) :- + 'known/1_1_$special_float/1___1__0'(A,_). +'known/1_1_$special_float/1___1__0'(A,B) :- + ( 'chr newvia_1'(A,F) -> + get_attr(F,guard_entailment,G), + G=v(_,_,_,_,_,_,_,_,_,_,_,E,_,_,_,_,_,_,_,_,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_float/1___1',E) + ), + 'chr sbag_member'(C,E), + C=suspension(_,active,_,_,_,D), + D==A, + !, + ( var(B) -> + true + ; + B=suspension(_,M,_,_,_,N), + setarg(2,B,removed), + ( M==not_stored_yet -> + H=[] + ; + term_variables(N,H), + arg(5,B,I), + ( var(I) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_float/1___1',J), + J=[_|K], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_float/1___1',K), + ( K=[L|_] -> + setarg(5,L,_) + ; + true + ) + ; + I=[_,_|K], + setarg(2,I,K), + ( K=[L|_] -> + setarg(5,L,I) + ; + true + ) + ), + 'detach_known/1_1_$special_float/1___1'(H,B) + ) + ). +'known/1_1_$special_float/1___1__0'(_,A) :- + nb_getval('$chr_store_global_ground_guard_entailment____known/1_1_$special_fail/0___0',C), + 'chr sbag_member'(B,C), + B=suspension(_,active,_), + !, + ( var(A) -> + true + ; + A=suspension(_,I,_,_,_,J), + setarg(2,A,removed), + ( I==not_stored_yet -> + D=[] + ; + term_variables(J,D), + arg(5,A,E), + ( var(E) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_float/1___1',F), + F=[_|G], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_float/1___1',G), + ( G=[H|_] -> + setarg(5,H,_) + ; + true + ) + ; + E=[_,_|G], + setarg(2,E,G), + ( G=[H|_] -> + setarg(5,H,E) + ; + true + ) + ), + 'detach_known/1_1_$special_float/1___1'(D,A) + ) + ). +'known/1_1_$special_float/1___1__0'(A,B) :- + nonvar(A), + \+float(A), + !, + ( var(B) -> + true + ; + B=suspension(_,H,_,_,_,I), + setarg(2,B,removed), + ( H==not_stored_yet -> + C=[] + ; + term_variables(I,C), + arg(5,B,D), + ( var(D) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_float/1___1',E), + E=[_|F], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_float/1___1',F), + ( F=[G|_] -> + setarg(5,G,_) + ; + true + ) + ; + D=[_,_|F], + setarg(2,D,F), + ( F=[G|_] -> + setarg(5,G,D) + ; + true + ) + ), + 'detach_known/1_1_$special_float/1___1'(C,B) + ) + ), + 'known/1_1_$special_fail/0'. +'known/1_1_$special_float/1___1__0'(A,B) :- + ( var(B) -> + B=suspension(E,not_stored_yet,t,0,_,A), + 'chr gen_id'(E) + ; + true + ), + ( + '$novel_production'(B,200), + !, + '$extend_history'(B,200), + arg(2,B,G), + setarg(2,B,active), + arg(4,B,F), + D is F+1, + setarg(4,B,D), + ( G==not_stored_yet -> + B=suspension(_,_,_,_,_,H), + term_variables(H,C), + 'chr none_locked'(C), + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_float/1___1',I), + J=[B|I], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_float/1___1',J), + ( I=[K|_] -> + setarg(5,K,J) + ; + true + ), + 'attach_known/1_1_$special_float/1___1'(C,B) + ; + true + ), + 'known/1_1_$special_number/1'(A), + ( B=suspension(_,active,_,D,_,_) -> + setarg(2,B,inactive), + 'known/1_1_$special_float/1___1__1'(A,B) + ; + true + ) + ; + 'known/1_1_$special_float/1___1__1'(A,B) + ). +'known/1_1_$special_float/1___1__1'(A,B) :- + ( 'chr newvia_1'(A,F) -> + get_attr(F,guard_entailment,G), + G=v(_,_,_,_,_,_,_,_,_,_,_,_,_,_,E,_,_,_,_,_,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',E) + ), + 'chr sbag_member'(C,E), + C=suspension(_,active,_,_,D), + nonvar(D), + D=float(H), + H==A, + !, + C=suspension(_,_,_,_,U), + setarg(2,C,removed), + term_variables(U,I), + arg(4,C,Q), + ( var(Q) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',R), + R=[_|S], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',S), + ( S=[T|_] -> + setarg(4,T,_) + ; + true + ) + ; + Q=[_,_|S], + setarg(2,Q,S), + ( S=[T|_] -> + setarg(4,T,Q) + ; + true + ) + ), + 'detach_known/1_1_$special_\\+/1___1'(I,C), + ( var(B) -> + true + ; + B=suspension(_,O,_,_,_,P), + setarg(2,B,removed), + ( O==not_stored_yet -> + J=[] + ; + term_variables(P,J), + arg(5,B,K), + ( var(K) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_float/1___1',L), + L=[_|M], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_float/1___1',M), + ( M=[N|_] -> + setarg(5,N,_) + ; + true + ) + ; + K=[_,_|M], + setarg(2,K,M), + ( M=[N|_] -> + setarg(5,N,K) + ; + true + ) + ), + 'detach_known/1_1_$special_float/1___1'(J,B) + ) + ), + 'known/1_1_$special_fail/0'. +'known/1_1_$special_float/1___1__1'(A,B) :- + ( 'chr newvia_1'(A,D) -> + get_attr(D,guard_entailment,E), + E=v(_,_,_,C,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',C) + ), + !, + 'known/1_1_$special_float/1___1__1__0__8'(C,A,B). +'known/1_1_$special_float/1___1__1__0__8'([],B,A) :- + 'known/1_1_$special_float/1___1__2'(B,A). +'known/1_1_$special_float/1___1__1__0__8'([E|H],A,B) :- + ( E=suspension(_,active,_,_,C,D), + nonvar(C), + C=(\+F), + nonvar(F), + F=float(G), + G==A -> + E=suspension(_,_,_,_,V,W), + setarg(2,E,removed), + term_variables(term(V,W),I), + arg(4,E,R), + ( var(R) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',S), + S=[_|T], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',T), + ( T=[U|_] -> + setarg(4,U,_) + ; + true + ) + ; + R=[_,_|T], + setarg(2,R,T), + ( T=[U|_] -> + setarg(4,U,R) + ; + true + ) + ), + 'detach_known/1_1_$special_;/2___2'(I,E), + arg(2,B,M), + setarg(2,B,active), + arg(4,B,L), + K is L+1, + setarg(4,B,K), + ( M==not_stored_yet -> + B=suspension(_,_,_,_,_,N), + term_variables(N,J), + 'chr none_locked'(J), + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_float/1___1',O), + P=[B|O], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_float/1___1',P), + ( O=[Q|_] -> + setarg(5,Q,P) + ; + true + ), + 'attach_known/1_1_$special_float/1___1'(J,B) + ; + true + ), + known(D), + ( B=suspension(_,active,_,K,_,_) -> + setarg(2,B,inactive), + 'known/1_1_$special_float/1___1__1__0__8'(H,A,B) + ; + true + ) + ; + 'known/1_1_$special_float/1___1__1__0__8'(H,A,B) + ). +'known/1_1_$special_float/1___1__1'(A,B) :- + 'known/1_1_$special_float/1___1__2'(A,B). +'known/1_1_$special_float/1___1__2'(A,B) :- + ( 'chr newvia_1'(A,D) -> + get_attr(D,guard_entailment,E), + E=v(_,_,_,C,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',C) + ), + !, + 'known/1_1_$special_float/1___1__2__0__9'(C,A,B). +'known/1_1_$special_float/1___1__2__0__9'([],B,A) :- + 'known/1_1_$special_float/1___1__3'(B,A). +'known/1_1_$special_float/1___1__2__0__9'([E|I],A,B) :- + ( E=suspension(_,active,_,_,C,D), + nonvar(C), + C=(F,_), + nonvar(F), + F=(\+G), + nonvar(G), + G=float(H), + H==A -> + E=suspension(_,_,_,_,W,X), + setarg(2,E,removed), + term_variables(term(W,X),J), + arg(4,E,S), + ( var(S) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',T), + T=[_|U], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',U), + ( U=[V|_] -> + setarg(4,V,_) + ; + true + ) + ; + S=[_,_|U], + setarg(2,S,U), + ( U=[V|_] -> + setarg(4,V,S) + ; + true + ) + ), + 'detach_known/1_1_$special_;/2___2'(J,E), + arg(2,B,N), + setarg(2,B,active), + arg(4,B,M), + L is M+1, + setarg(4,B,L), + ( N==not_stored_yet -> + B=suspension(_,_,_,_,_,O), + term_variables(O,K), + 'chr none_locked'(K), + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_float/1___1',P), + Q=[B|P], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_float/1___1',Q), + ( P=[R|_] -> + setarg(5,R,Q) + ; + true + ), + 'attach_known/1_1_$special_float/1___1'(K,B) + ; + true + ), + known(D), + ( B=suspension(_,active,_,L,_,_) -> + setarg(2,B,inactive), + 'known/1_1_$special_float/1___1__2__0__9'(I,A,B) + ; + true + ) + ; + 'known/1_1_$special_float/1___1__2__0__9'(I,A,B) + ). +'known/1_1_$special_float/1___1__2'(A,B) :- + 'known/1_1_$special_float/1___1__3'(A,B). +'known/1_1_$special_float/1___1__3'(_,A) :- + arg(2,A,E), + setarg(2,A,active), + arg(4,A,D), + C is D+1, + setarg(4,A,C), + ( E==not_stored_yet -> + A=suspension(_,_,_,_,_,F), + term_variables(F,B), + 'chr none_locked'(B), + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_float/1___1',G), + H=[A|G], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_float/1___1',H), + ( G=[I|_] -> + setarg(5,I,H) + ; + true + ), + 'attach_known/1_1_$special_float/1___1'(B,A) + ; + true + ). +'known/1_1_$special_number/1'(A) :- + 'known/1_1_$special_number/1___1__0'(A,_). +'known/1_1_$special_number/1___1__0'(A,B) :- + ( 'chr newvia_1'(A,F) -> + get_attr(F,guard_entailment,G), + G=v(_,_,_,_,_,_,_,_,_,_,_,_,E,_,_,_,_,_,_,_,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_number/1___1',E) + ), + 'chr sbag_member'(C,E), + C=suspension(_,active,_,_,_,D), + D==A, + !, + ( var(B) -> + true + ; + B=suspension(_,M,_,_,_,N), + setarg(2,B,removed), + ( M==not_stored_yet -> + H=[] + ; + term_variables(N,H), + arg(5,B,I), + ( var(I) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_number/1___1',J), + J=[_|K], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_number/1___1',K), + ( K=[L|_] -> + setarg(5,L,_) + ; + true + ) + ; + I=[_,_|K], + setarg(2,I,K), + ( K=[L|_] -> + setarg(5,L,I) + ; + true + ) + ), + 'detach_known/1_1_$special_number/1___1'(H,B) + ) + ). +'known/1_1_$special_number/1___1__0'(_,A) :- + nb_getval('$chr_store_global_ground_guard_entailment____known/1_1_$special_fail/0___0',C), + 'chr sbag_member'(B,C), + B=suspension(_,active,_), + !, + ( var(A) -> + true + ; + A=suspension(_,I,_,_,_,J), + setarg(2,A,removed), + ( I==not_stored_yet -> + D=[] + ; + term_variables(J,D), + arg(5,A,E), + ( var(E) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_number/1___1',F), + F=[_|G], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_number/1___1',G), + ( G=[H|_] -> + setarg(5,H,_) + ; + true + ) + ; + E=[_,_|G], + setarg(2,E,G), + ( G=[H|_] -> + setarg(5,H,E) + ; + true + ) + ), + 'detach_known/1_1_$special_number/1___1'(D,A) + ) + ). +'known/1_1_$special_number/1___1__0'(A,B) :- + nonvar(A), + \+number(A), + !, + ( var(B) -> + true + ; + B=suspension(_,H,_,_,_,I), + setarg(2,B,removed), + ( H==not_stored_yet -> + C=[] + ; + term_variables(I,C), + arg(5,B,D), + ( var(D) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_number/1___1',E), + E=[_|F], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_number/1___1',F), + ( F=[G|_] -> + setarg(5,G,_) + ; + true + ) + ; + D=[_,_|F], + setarg(2,D,F), + ( F=[G|_] -> + setarg(5,G,D) + ; + true + ) + ), + 'detach_known/1_1_$special_number/1___1'(C,B) + ) + ), + 'known/1_1_$special_fail/0'. +'known/1_1_$special_number/1___1__0'(A,B) :- + ( 'chr newvia_1'(A,F) -> + get_attr(F,guard_entailment,G), + G=v(_,_,_,_,_,_,_,_,_,_,_,_,_,_,E,_,_,_,_,_,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',E) + ), + 'chr sbag_member'(C,E), + C=suspension(_,active,_,_,D), + nonvar(D), + D=number(H), + H==A, + !, + C=suspension(_,_,_,_,U), + setarg(2,C,removed), + term_variables(U,I), + arg(4,C,Q), + ( var(Q) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',R), + R=[_|S], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',S), + ( S=[T|_] -> + setarg(4,T,_) + ; + true + ) + ; + Q=[_,_|S], + setarg(2,Q,S), + ( S=[T|_] -> + setarg(4,T,Q) + ; + true + ) + ), + 'detach_known/1_1_$special_\\+/1___1'(I,C), + ( var(B) -> + true + ; + B=suspension(_,O,_,_,_,P), + setarg(2,B,removed), + ( O==not_stored_yet -> + J=[] + ; + term_variables(P,J), + arg(5,B,K), + ( var(K) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_number/1___1',L), + L=[_|M], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_number/1___1',M), + ( M=[N|_] -> + setarg(5,N,_) + ; + true + ) + ; + K=[_,_|M], + setarg(2,K,M), + ( M=[N|_] -> + setarg(5,N,K) + ; + true + ) + ), + 'detach_known/1_1_$special_number/1___1'(J,B) + ) + ), + 'known/1_1_$special_fail/0'. +'known/1_1_$special_number/1___1__0'(A,B) :- + ( var(B) -> + B=suspension(E,not_stored_yet,t,0,_,A), + 'chr gen_id'(E) + ; + true + ), + ( + '$novel_production'(B,238), + !, + '$extend_history'(B,238), + arg(2,B,G), + setarg(2,B,active), + arg(4,B,F), + D is F+1, + setarg(4,B,D), + ( G==not_stored_yet -> + B=suspension(_,_,_,_,_,H), + term_variables(H,C), + 'chr none_locked'(C), + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_number/1___1',I), + J=[B|I], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_number/1___1',J), + ( I=[K|_] -> + setarg(5,K,J) + ; + true + ), + 'attach_known/1_1_$special_number/1___1'(C,B) + ; + true + ), + 'known/1_1_$special_nonvar/1'(A), + ( B=suspension(_,active,_,D,_,_) -> + setarg(2,B,inactive), + 'known/1_1_$special_number/1___1__1'(A,B) + ; + true + ) + ; + 'known/1_1_$special_number/1___1__1'(A,B) + ). +'known/1_1_$special_number/1___1__1'(A,B) :- + ( 'chr newvia_1'(A,D) -> + get_attr(D,guard_entailment,E), + E=v(_,_,_,C,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',C) + ), + !, + 'known/1_1_$special_number/1___1__1__0__8'(C,A,B). +'known/1_1_$special_number/1___1__1__0__8'([],B,A) :- + 'known/1_1_$special_number/1___1__2'(B,A). +'known/1_1_$special_number/1___1__1__0__8'([E|H],A,B) :- + ( E=suspension(_,active,_,_,C,D), + nonvar(C), + C=(\+F), + nonvar(F), + F=number(G), + G==A -> + E=suspension(_,_,_,_,V,W), + setarg(2,E,removed), + term_variables(term(V,W),I), + arg(4,E,R), + ( var(R) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',S), + S=[_|T], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',T), + ( T=[U|_] -> + setarg(4,U,_) + ; + true + ) + ; + R=[_,_|T], + setarg(2,R,T), + ( T=[U|_] -> + setarg(4,U,R) + ; + true + ) + ), + 'detach_known/1_1_$special_;/2___2'(I,E), + arg(2,B,M), + setarg(2,B,active), + arg(4,B,L), + K is L+1, + setarg(4,B,K), + ( M==not_stored_yet -> + B=suspension(_,_,_,_,_,N), + term_variables(N,J), + 'chr none_locked'(J), + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_number/1___1',O), + P=[B|O], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_number/1___1',P), + ( O=[Q|_] -> + setarg(5,Q,P) + ; + true + ), + 'attach_known/1_1_$special_number/1___1'(J,B) + ; + true + ), + known(D), + ( B=suspension(_,active,_,K,_,_) -> + setarg(2,B,inactive), + 'known/1_1_$special_number/1___1__1__0__8'(H,A,B) + ; + true + ) + ; + 'known/1_1_$special_number/1___1__1__0__8'(H,A,B) + ). +'known/1_1_$special_number/1___1__1'(A,B) :- + 'known/1_1_$special_number/1___1__2'(A,B). +'known/1_1_$special_number/1___1__2'(A,B) :- + ( 'chr newvia_1'(A,D) -> + get_attr(D,guard_entailment,E), + E=v(_,_,_,C,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',C) + ), + !, + 'known/1_1_$special_number/1___1__2__0__9'(C,A,B). +'known/1_1_$special_number/1___1__2__0__9'([],B,A) :- + 'known/1_1_$special_number/1___1__3'(B,A). +'known/1_1_$special_number/1___1__2__0__9'([E|I],A,B) :- + ( E=suspension(_,active,_,_,C,D), + nonvar(C), + C=(F,_), + nonvar(F), + F=(\+G), + nonvar(G), + G=number(H), + H==A -> + E=suspension(_,_,_,_,W,X), + setarg(2,E,removed), + term_variables(term(W,X),J), + arg(4,E,S), + ( var(S) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',T), + T=[_|U], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',U), + ( U=[V|_] -> + setarg(4,V,_) + ; + true + ) + ; + S=[_,_|U], + setarg(2,S,U), + ( U=[V|_] -> + setarg(4,V,S) + ; + true + ) + ), + 'detach_known/1_1_$special_;/2___2'(J,E), + arg(2,B,N), + setarg(2,B,active), + arg(4,B,M), + L is M+1, + setarg(4,B,L), + ( N==not_stored_yet -> + B=suspension(_,_,_,_,_,O), + term_variables(O,K), + 'chr none_locked'(K), + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_number/1___1',P), + Q=[B|P], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_number/1___1',Q), + ( P=[R|_] -> + setarg(5,R,Q) + ; + true + ), + 'attach_known/1_1_$special_number/1___1'(K,B) + ; + true + ), + known(D), + ( B=suspension(_,active,_,L,_,_) -> + setarg(2,B,inactive), + 'known/1_1_$special_number/1___1__2__0__9'(I,A,B) + ; + true + ) + ; + 'known/1_1_$special_number/1___1__2__0__9'(I,A,B) + ). +'known/1_1_$special_number/1___1__2'(A,B) :- + 'known/1_1_$special_number/1___1__3'(A,B). +'known/1_1_$special_number/1___1__3'(_,A) :- + arg(2,A,E), + setarg(2,A,active), + arg(4,A,D), + C is D+1, + setarg(4,A,C), + ( E==not_stored_yet -> + A=suspension(_,_,_,_,_,F), + term_variables(F,B), + 'chr none_locked'(B), + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_number/1___1',G), + H=[A|G], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_number/1___1',H), + ( G=[I|_] -> + setarg(5,I,H) + ; + true + ), + 'attach_known/1_1_$special_number/1___1'(B,A) + ; + true + ). +'known/1_1_$special_=\\=/2'(A,B) :- + 'known/1_1_$special_=\\=/2___2__0'(A,B,_). +'known/1_1_$special_=\\=/2___2__0'(A,B,C) :- + ( 'chr newvia_2'(A,B,H) -> + get_attr(H,guard_entailment,I), + I=v(_,_,_,_,_,_,_,_,_,_,_,_,_,G,_,_,_,_,_,_,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_=\\=/2___2',G) + ), + 'chr sbag_member'(D,G), + D=suspension(_,active,_,_,_,E,F), + E==A, + F==B, + !, + ( var(C) -> + true + ; + C=suspension(_,O,_,_,_,P,Q), + setarg(2,C,removed), + ( O==not_stored_yet -> + J=[] + ; + term_variables(term(P,Q),J), + arg(5,C,K), + ( var(K) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_=\\=/2___2',L), + L=[_|M], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_=\\=/2___2',M), + ( M=[N|_] -> + setarg(5,N,_) + ; + true + ) + ; + K=[_,_|M], + setarg(2,K,M), + ( M=[N|_] -> + setarg(5,N,K) + ; + true + ) + ), + 'detach_known/1_1_$special_=\\=/2___2'(J,C) + ) + ). +'known/1_1_$special_=\\=/2___2__0'(_,_,A) :- + nb_getval('$chr_store_global_ground_guard_entailment____known/1_1_$special_fail/0___0',C), + 'chr sbag_member'(B,C), + B=suspension(_,active,_), + !, + ( var(A) -> + true + ; + A=suspension(_,I,_,_,_,J,K), + setarg(2,A,removed), + ( I==not_stored_yet -> + D=[] + ; + term_variables(term(J,K),D), + arg(5,A,E), + ( var(E) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_=\\=/2___2',F), + F=[_|G], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_=\\=/2___2',G), + ( G=[H|_] -> + setarg(5,H,_) + ; + true + ) + ; + E=[_,_|G], + setarg(2,E,G), + ( G=[H|_] -> + setarg(5,H,E) + ; + true + ) + ), + 'detach_known/1_1_$special_=\\=/2___2'(D,A) + ) + ). +'known/1_1_$special_=\\=/2___2__0'(A,B,C) :- + ( 'chr newvia_1'(B,E) -> + get_attr(E,guard_entailment,F), + F=v(_,_,_,_,_,_,_,_,_,_,_,_,_,D,_,_,_,_,_,_,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_=\\=/2___2',D) + ), + !, + ( var(C) -> + C=suspension(G,not_stored_yet,t,0,_,A,B), + 'chr gen_id'(G) + ; + true + ), + 'known/1_1_$special_=\\=/2___2__0__0__5'(D,A,B,C). +'known/1_1_$special_=\\=/2___2__0__0__5'([],B,C,A) :- + 'known/1_1_$special_=\\=/2___2__1'(B,C,A). +'known/1_1_$special_=\\=/2___2__0__0__5'([F|J],B,C,A) :- + ( F=suspension(_,active,_,_,_,D,E), + D==C, + ( 'chr newvia_2'(C,E,H) -> + get_attr(H,guard_entailment,I), + I=v(_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,G,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_= + 'known/1_1_$special_=\\=/2___2__0__1__5'(G,E,F,J,B,C,A) + ; + 'known/1_1_$special_=\\=/2___2__0__0__5'(J,B,C,A) + ). +'known/1_1_$special_=\\=/2___2__0__1__5'([],_,_,A,C,D,B) :- + 'known/1_1_$special_=\\=/2___2__0__0__5'(A,C,D,B). +'known/1_1_$special_=\\=/2___2__0__1__5'([I|M],F,A,B,D,E,C) :- + ( I=suspension(_,active,_,_,_,G,H), + G==E, + H==F, + ( 'chr newvia_2'(D,E,K) -> + get_attr(K,guard_entailment,L), + L=v(_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,J,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_= + 'known/1_1_$special_=\\=/2___2__0__2__5'(J,I,M,F,A,B,D,E,C) + ; + 'known/1_1_$special_=\\=/2___2__0__1__5'(M,F,A,B,D,E,C) + ). +'known/1_1_$special_=\\=/2___2__0__2__5'([],_,A,G,B,C,E,F,D) :- + 'known/1_1_$special_=\\=/2___2__0__1__5'(A,G,B,C,E,F,D). +'known/1_1_$special_=\\=/2___2__0__2__5'([K|L],A,B,H,C,D,F,G,E) :- + ( K=suspension(_,active,_,_,_,I,J), + K\==A, + I==F, + J==G, + O=t(188,K,E,A,C), + '$novel_production'(K,O), + '$novel_production'(E,O), + '$novel_production'(A,O), + '$novel_production'(C,O) -> + '$extend_history'(E,O), + arg(2,E,Q), + setarg(2,E,active), + arg(4,E,P), + N is P+1, + setarg(4,E,N), + ( Q==not_stored_yet -> + E=suspension(_,_,_,_,_,R,S), + term_variables(term(R,S),M), + 'chr none_locked'(M), + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_=\\=/2___2',T), + U=[E|T], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_=\\=/2___2',U), + ( T=[V|_] -> + setarg(5,V,U) + ; + true + ), + 'attach_known/1_1_$special_=\\=/2___2'(M,E) + ; + true + ), + 'known/1_1_$special_=\\=/2'(F,H), + ( E=suspension(_,active,_,N,_,_,_) -> + setarg(2,E,inactive), + 'known/1_1_$special_=\\=/2___2__0__2__5'(L,A,B,H,C,D,F,G,E) + ; + true + ) + ; + 'known/1_1_$special_=\\=/2___2__0__2__5'(L,A,B,H,C,D,F,G,E) + ). +'known/1_1_$special_=\\=/2___2__0'(A,B,C) :- + ( var(C) -> + C=suspension(D,not_stored_yet,t,0,_,A,B), + 'chr gen_id'(D) + ; + true + ), + 'known/1_1_$special_=\\=/2___2__1'(A,B,C). +'known/1_1_$special_=\\=/2___2__1'(A,B,C) :- + ( 'chr newvia_1'(A,E) -> + get_attr(E,guard_entailment,F), + F=v(_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,D,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_= + get_attr(H,guard_entailment,I), + I=v(_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,G,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_= + 'known/1_1_$special_=\\=/2___2__1__1__6'(G,D,F,J,B,C,A) + ; + 'known/1_1_$special_=\\=/2___2__1__0__6'(J,B,C,A) + ). +'known/1_1_$special_=\\=/2___2__1__1__6'([],_,_,A,C,D,B) :- + 'known/1_1_$special_=\\=/2___2__1__0__6'(A,C,D,B). +'known/1_1_$special_=\\=/2___2__1__1__6'([I|M],F,A,B,D,E,C) :- + ( I=suspension(_,active,_,_,_,G,H), + I\==A, + G==D, + H==E, + ( 'chr newvia_2'(F,D,K) -> + get_attr(K,guard_entailment,L), + L=v(_,_,_,_,_,_,_,_,_,_,_,_,_,J,_,_,_,_,_,_,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_=\\=/2___2',J) + ) -> + 'known/1_1_$special_=\\=/2___2__1__2__6'(J,I,M,F,A,B,D,E,C) + ; + 'known/1_1_$special_=\\=/2___2__1__1__6'(M,F,A,B,D,E,C) + ). +'known/1_1_$special_=\\=/2___2__1__2__6'([],_,A,G,B,C,E,F,D) :- + 'known/1_1_$special_=\\=/2___2__1__1__6'(A,G,B,C,E,F,D). +'known/1_1_$special_=\\=/2___2__1__2__6'([K|L],A,B,H,C,D,F,G,E) :- + ( K=suspension(_,active,_,_,_,I,J), + I==H, + J==F, + O=t(188,C,K,A,E), + '$novel_production'(C,O), + '$novel_production'(K,O), + '$novel_production'(A,O), + '$novel_production'(E,O) -> + '$extend_history'(E,O), + arg(2,E,Q), + setarg(2,E,active), + arg(4,E,P), + N is P+1, + setarg(4,E,N), + ( Q==not_stored_yet -> + E=suspension(_,_,_,_,_,R,S), + term_variables(term(R,S),M), + 'chr none_locked'(M), + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_=\\=/2___2',T), + U=[E|T], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_=\\=/2___2',U), + ( T=[V|_] -> + setarg(5,V,U) + ; + true + ), + 'attach_known/1_1_$special_=\\=/2___2'(M,E) + ; + true + ), + 'known/1_1_$special_=\\=/2'(H,G), + ( E=suspension(_,active,_,N,_,_,_) -> + setarg(2,E,inactive), + 'known/1_1_$special_=\\=/2___2__1__2__6'(L,A,B,H,C,D,F,G,E) + ; + true + ) + ; + 'known/1_1_$special_=\\=/2___2__1__2__6'(L,A,B,H,C,D,F,G,E) + ). +'known/1_1_$special_=\\=/2___2__1'(A,B,C) :- + 'known/1_1_$special_=\\=/2___2__2'(A,B,C). +'known/1_1_$special_=\\=/2___2__2'(A,B,C) :- + number(B), + number(A), + A=:=B, + !, + ( var(C) -> + true + ; + C=suspension(_,I,_,_,_,J,K), + setarg(2,C,removed), + ( I==not_stored_yet -> + D=[] + ; + term_variables(term(J,K),D), + arg(5,C,E), + ( var(E) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_=\\=/2___2',F), + F=[_|G], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_=\\=/2___2',G), + ( G=[H|_] -> + setarg(5,H,_) + ; + true + ) + ; + E=[_,_|G], + setarg(2,E,G), + ( G=[H|_] -> + setarg(5,H,E) + ; + true + ) + ), + 'detach_known/1_1_$special_=\\=/2___2'(D,C) + ) + ), + 'known/1_1_$special_fail/0'. +'known/1_1_$special_=\\=/2___2__2'(A,B,C) :- + B==A, + !, + ( var(C) -> + true + ; + C=suspension(_,I,_,_,_,J,K), + setarg(2,C,removed), + ( I==not_stored_yet -> + D=[] + ; + term_variables(term(J,K),D), + arg(5,C,E), + ( var(E) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_=\\=/2___2',F), + F=[_|G], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_=\\=/2___2',G), + ( G=[H|_] -> + setarg(5,H,_) + ; + true + ) + ; + E=[_,_|G], + setarg(2,E,G), + ( G=[H|_] -> + setarg(5,H,E) + ; + true + ) + ), + 'detach_known/1_1_$special_=\\=/2___2'(D,C) + ) + ), + 'known/1_1_$special_fail/0'. +'known/1_1_$special_=\\=/2___2__2'(A,B,C) :- + ( 'chr newvia_2'(A,B,H) -> + get_attr(H,guard_entailment,I), + I=v(_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,G) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_=:=/2___2',G) + ), + 'chr sbag_member'(D,G), + D=suspension(_,active,_,_,_,E,F), + E==A, + F==B, + !, + D=suspension(_,_,_,_,_,W,X), + setarg(2,D,removed), + term_variables(term(W,X),J), + arg(5,D,S), + ( var(S) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_=:=/2___2',T), + T=[_|U], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_=:=/2___2',U), + ( U=[V|_] -> + setarg(5,V,_) + ; + true + ) + ; + S=[_,_|U], + setarg(2,S,U), + ( U=[V|_] -> + setarg(5,V,S) + ; + true + ) + ), + 'detach_known/1_1_$special_=:=/2___2'(J,D), + ( var(C) -> + true + ; + C=suspension(_,P,_,_,_,Q,R), + setarg(2,C,removed), + ( P==not_stored_yet -> + K=[] + ; + term_variables(term(Q,R),K), + arg(5,C,L), + ( var(L) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_=\\=/2___2',M), + M=[_|N], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_=\\=/2___2',N), + ( N=[O|_] -> + setarg(5,O,_) + ; + true + ) + ; + L=[_,_|N], + setarg(2,L,N), + ( N=[O|_] -> + setarg(5,O,L) + ; + true + ) + ), + 'detach_known/1_1_$special_=\\=/2___2'(K,C) + ) + ), + 'known/1_1_$special_fail/0'. +'known/1_1_$special_=\\=/2___2__2'(A,B,C) :- + '$novel_production'(C,195), + !, + '$extend_history'(C,195), + arg(2,C,G), + setarg(2,C,active), + arg(4,C,F), + E is F+1, + setarg(4,C,E), + ( G==not_stored_yet -> + C=suspension(_,_,_,_,_,H,I), + term_variables(term(H,I),D), + 'chr none_locked'(D), + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_=\\=/2___2',J), + K=[C|J], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_=\\=/2___2',K), + ( J=[L|_] -> + setarg(5,L,K) + ; + true + ), + 'attach_known/1_1_$special_=\\=/2___2'(D,C) + ; + true + ), + 'known/1_1_$special_=\\=/2'(B,A), + ( C=suspension(_,active,_,E,_,_,_) -> + setarg(2,C,inactive), + 'known/1_1_$special_=\\=/2___2__3'(A,B,C) + ; + true + ). +'known/1_1_$special_=\\=/2___2__2'(A,B,C) :- + 'known/1_1_$special_=\\=/2___2__3'(A,B,C). +'known/1_1_$special_=\\=/2___2__3'(A,B,C) :- + ( 'chr newvia_2'(A,B,G) -> + get_attr(G,guard_entailment,H), + H=v(_,_,_,_,_,_,_,_,_,_,_,_,_,_,F,_,_,_,_,_,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',F) + ), + 'chr sbag_member'(D,F), + D=suspension(_,active,_,_,E), + nonvar(E), + E=(I=\=J), + I==A, + J==B, + !, + D=suspension(_,_,_,_,X), + setarg(2,D,removed), + term_variables(X,K), + arg(4,D,T), + ( var(T) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',U), + U=[_|V], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',V), + ( V=[W|_] -> + setarg(4,W,_) + ; + true + ) + ; + T=[_,_|V], + setarg(2,T,V), + ( V=[W|_] -> + setarg(4,W,T) + ; + true + ) + ), + 'detach_known/1_1_$special_\\+/1___1'(K,D), + ( var(C) -> + true + ; + C=suspension(_,Q,_,_,_,R,S), + setarg(2,C,removed), + ( Q==not_stored_yet -> + L=[] + ; + term_variables(term(R,S),L), + arg(5,C,M), + ( var(M) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_=\\=/2___2',N), + N=[_|O], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_=\\=/2___2',O), + ( O=[P|_] -> + setarg(5,P,_) + ; + true + ) + ; + M=[_,_|O], + setarg(2,M,O), + ( O=[P|_] -> + setarg(5,P,M) + ; + true + ) + ), + 'detach_known/1_1_$special_=\\=/2___2'(L,C) + ) + ), + 'known/1_1_$special_fail/0'. +'known/1_1_$special_=\\=/2___2__3'(A,B,C) :- + ( 'chr newvia_2'(A,B,E) -> + get_attr(E,guard_entailment,F), + F=v(_,_,_,D,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',D) + ), + !, + 'known/1_1_$special_=\\=/2___2__3__0__12'(D,A,B,C). +'known/1_1_$special_=\\=/2___2__3__0__12'([],B,C,A) :- + 'known/1_1_$special_=\\=/2___2__4'(B,C,A). +'known/1_1_$special_=\\=/2___2__3__0__12'([F|J],A,B,C) :- + ( F=suspension(_,active,_,_,D,E), + nonvar(D), + D=(\+G), + nonvar(G), + G=(H=\=I), + H==A, + I==B -> + F=suspension(_,_,_,_,Y,Z), + setarg(2,F,removed), + term_variables(term(Y,Z),K), + arg(4,F,U), + ( var(U) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',V), + V=[_|W], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',W), + ( W=[X|_] -> + setarg(4,X,_) + ; + true + ) + ; + U=[_,_|W], + setarg(2,U,W), + ( W=[X|_] -> + setarg(4,X,U) + ; + true + ) + ), + 'detach_known/1_1_$special_;/2___2'(K,F), + arg(2,C,O), + setarg(2,C,active), + arg(4,C,N), + M is N+1, + setarg(4,C,M), + ( O==not_stored_yet -> + C=suspension(_,_,_,_,_,P,Q), + term_variables(term(P,Q),L), + 'chr none_locked'(L), + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_=\\=/2___2',R), + S=[C|R], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_=\\=/2___2',S), + ( R=[T|_] -> + setarg(5,T,S) + ; + true + ), + 'attach_known/1_1_$special_=\\=/2___2'(L,C) + ; + true + ), + known(E), + ( C=suspension(_,active,_,M,_,_,_) -> + setarg(2,C,inactive), + 'known/1_1_$special_=\\=/2___2__3__0__12'(J,A,B,C) + ; + true + ) + ; + 'known/1_1_$special_=\\=/2___2__3__0__12'(J,A,B,C) + ). +'known/1_1_$special_=\\=/2___2__3'(A,B,C) :- + 'known/1_1_$special_=\\=/2___2__4'(A,B,C). +'known/1_1_$special_=\\=/2___2__4'(A,B,C) :- + ( 'chr newvia_2'(A,B,E) -> + get_attr(E,guard_entailment,F), + F=v(_,_,_,D,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',D) + ), + !, + 'known/1_1_$special_=\\=/2___2__4__0__13'(D,A,B,C). +'known/1_1_$special_=\\=/2___2__4__0__13'([],B,C,A) :- + 'known/1_1_$special_=\\=/2___2__5'(B,C,A). +'known/1_1_$special_=\\=/2___2__4__0__13'([F|K],A,B,C) :- + ( F=suspension(_,active,_,_,D,E), + nonvar(D), + D=(G,_), + nonvar(G), + G=(\+H), + nonvar(H), + H=(I=\=J), + I==A, + J==B -> + F=suspension(_,_,_,_,Z,A1), + setarg(2,F,removed), + term_variables(term(Z,A1),L), + arg(4,F,V), + ( var(V) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',W), + W=[_|X], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',X), + ( X=[Y|_] -> + setarg(4,Y,_) + ; + true + ) + ; + V=[_,_|X], + setarg(2,V,X), + ( X=[Y|_] -> + setarg(4,Y,V) + ; + true + ) + ), + 'detach_known/1_1_$special_;/2___2'(L,F), + arg(2,C,P), + setarg(2,C,active), + arg(4,C,O), + N is O+1, + setarg(4,C,N), + ( P==not_stored_yet -> + C=suspension(_,_,_,_,_,Q,R), + term_variables(term(Q,R),M), + 'chr none_locked'(M), + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_=\\=/2___2',S), + T=[C|S], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_=\\=/2___2',T), + ( S=[U|_] -> + setarg(5,U,T) + ; + true + ), + 'attach_known/1_1_$special_=\\=/2___2'(M,C) + ; + true + ), + known(E), + ( C=suspension(_,active,_,N,_,_,_) -> + setarg(2,C,inactive), + 'known/1_1_$special_=\\=/2___2__4__0__13'(K,A,B,C) + ; + true + ) + ; + 'known/1_1_$special_=\\=/2___2__4__0__13'(K,A,B,C) + ). +'known/1_1_$special_=\\=/2___2__4'(A,B,C) :- + 'known/1_1_$special_=\\=/2___2__5'(A,B,C). +'known/1_1_$special_=\\=/2___2__5'(_,_,A) :- + arg(2,A,E), + setarg(2,A,active), + arg(4,A,D), + C is D+1, + setarg(4,A,C), + ( E==not_stored_yet -> + A=suspension(_,_,_,_,_,F,G), + term_variables(term(F,G),B), + 'chr none_locked'(B), + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_=\\=/2___2',H), + I=[A|H], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_=\\=/2___2',I), + ( H=[J|_] -> + setarg(5,J,I) + ; + true + ), + 'attach_known/1_1_$special_=\\=/2___2'(B,A) + ; + true + ). +'known/1_1_$special_\\+/1'(A) :- + 'known/1_1_$special_\\+/1___1__0'(A,_). +'known/1_1_$special_\\+/1___1__0'(A,B) :- + ( 'chr newvia_1'(A,F) -> + get_attr(F,guard_entailment,G), + G=v(_,_,_,_,_,_,_,_,_,_,_,_,_,_,E,_,_,_,_,_,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',E) + ), + 'chr sbag_member'(C,E), + C=suspension(_,active,_,_,D), + D==A, + !, + ( var(B) -> + true + ; + B=suspension(_,M,_,_,N), + setarg(2,B,removed), + ( M==not_stored_yet -> + H=[] + ; + term_variables(N,H), + arg(4,B,I), + ( var(I) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',J), + J=[_|K], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',K), + ( K=[L|_] -> + setarg(4,L,_) + ; + true + ) + ; + I=[_,_|K], + setarg(2,I,K), + ( K=[L|_] -> + setarg(4,L,I) + ; + true + ) + ), + 'detach_known/1_1_$special_\\+/1___1'(H,B) + ) + ). +'known/1_1_$special_\\+/1___1__0'(_,A) :- + nb_getval('$chr_store_global_ground_guard_entailment____known/1_1_$special_fail/0___0',C), + 'chr sbag_member'(B,C), + B=suspension(_,active,_), + !, + ( var(A) -> + true + ; + A=suspension(_,I,_,_,J), + setarg(2,A,removed), + ( I==not_stored_yet -> + D=[] + ; + term_variables(J,D), + arg(4,A,E), + ( var(E) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',F), + F=[_|G], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',G), + ( G=[H|_] -> + setarg(4,H,_) + ; + true + ) + ; + E=[_,_|G], + setarg(2,E,G), + ( G=[H|_] -> + setarg(4,H,E) + ; + true + ) + ), + 'detach_known/1_1_$special_\\+/1___1'(D,A) + ) + ). +'known/1_1_$special_\\+/1___1__0'(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 unlock'(C), + 'chr unlock'(D), + 'chr unlock'(E), + !, + ( var(B) -> + true + ; + B=suspension(_,R8,_,_,S8), + setarg(2,B,removed), + ( R8==not_stored_yet -> + F=[] + ; + term_variables(S8,F), + arg(4,B,N8), + ( var(N8) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',O8), + O8=[_|P8], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',P8), + ( P8=[Q8|_] -> + setarg(4,Q8,_) + ; + true + ) + ; + N8=[_,_|P8], + setarg(2,N8,P8), + ( P8=[Q8|_] -> + setarg(4,Q8,N8) + ; + true + ) + ), + 'detach_known/1_1_$special_\\+/1___1'(F,B) + ) + ), + 'known/1_1_$special_fail/0' + ; + A=(G;H), + ( 'chr newvia_2'(G,H,M) -> + get_attr(M,guard_entailment,N), + N=v(_,_,_,L,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',L) + ), + 'chr sbag_member'(I,L), + I=suspension(_,active,_,_,J,K), + J==G, + K==H, + !, + I=suspension(_,_,_,_,L8,M8), + setarg(2,I,removed), + term_variables(term(L8,M8),O), + arg(4,I,H8), + ( var(H8) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',I8), + I8=[_|J8], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',J8), + ( J8=[K8|_] -> + setarg(4,K8,_) + ; + true + ) + ; + H8=[_,_|J8], + setarg(2,H8,J8), + ( J8=[K8|_] -> + setarg(4,K8,H8) + ; + true + ) + ), + 'detach_known/1_1_$special_;/2___2'(O,I), + ( var(B) -> + true + ; + B=suspension(_,F8,_,_,G8), + setarg(2,B,removed), + ( F8==not_stored_yet -> + P=[] + ; + term_variables(G8,P), + arg(4,B,B8), + ( var(B8) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',C8), + C8=[_|D8], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',D8), + ( D8=[E8|_] -> + setarg(4,E8,_) + ; + true + ) + ; + B8=[_,_|D8], + setarg(2,B8,D8), + ( D8=[E8|_] -> + setarg(4,E8,B8) + ; + true + ) + ), + 'detach_known/1_1_$special_\\+/1___1'(P,B) + ) + ), + 'known/1_1_$special_fail/0' + ) + ; + A=nonvar(Q), + ( 'chr newvia_1'(Q,U) -> + get_attr(U,guard_entailment,V), + V=v(_,_,_,_,T,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_nonvar/1___1',T) + ), + 'chr sbag_member'(R,T), + R=suspension(_,active,_,_,S), + S==Q, + !, + R=suspension(_,_,_,_,A8), + setarg(2,R,removed), + term_variables(A8,W), + arg(4,R,W7), + ( var(W7) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_nonvar/1___1',X7), + X7=[_|Y7], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_nonvar/1___1',Y7), + ( Y7=[Z7|_] -> + setarg(4,Z7,_) + ; + true + ) + ; + W7=[_,_|Y7], + setarg(2,W7,Y7), + ( Y7=[Z7|_] -> + setarg(4,Z7,W7) + ; + true + ) + ), + 'detach_known/1_1_$special_nonvar/1___1'(W,R), + ( var(B) -> + true + ; + B=suspension(_,U7,_,_,V7), + setarg(2,B,removed), + ( U7==not_stored_yet -> + X=[] + ; + term_variables(V7,X), + arg(4,B,Q7), + ( var(Q7) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',R7), + R7=[_|S7], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',S7), + ( S7=[T7|_] -> + setarg(4,T7,_) + ; + true + ) + ; + Q7=[_,_|S7], + setarg(2,Q7,S7), + ( S7=[T7|_] -> + setarg(4,T7,Q7) + ; + true + ) + ), + 'detach_known/1_1_$special_\\+/1___1'(X,B) + ) + ), + 'known/1_1_$special_fail/0' + ) + ; + A=var(Y), + ( 'chr newvia_1'(Y,C1) -> + get_attr(C1,guard_entailment,D1), + D1=v(_,_,_,_,_,B1,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_var/1___1',B1) + ), + 'chr sbag_member'(Z,B1), + Z=suspension(_,active,_,_,A1), + A1==Y, + !, + Z=suspension(_,_,_,_,P7), + setarg(2,Z,removed), + term_variables(P7,E1), + arg(4,Z,L7), + ( var(L7) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_var/1___1',M7), + M7=[_|N7], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_var/1___1',N7), + ( N7=[O7|_] -> + setarg(4,O7,_) + ; + true + ) + ; + L7=[_,_|N7], + setarg(2,L7,N7), + ( N7=[O7|_] -> + setarg(4,O7,L7) + ; + true + ) + ), + 'detach_known/1_1_$special_var/1___1'(E1,Z), + ( var(B) -> + true + ; + B=suspension(_,J7,_,_,K7), + setarg(2,B,removed), + ( J7==not_stored_yet -> + F1=[] + ; + term_variables(K7,F1), + arg(4,B,F7), + ( var(F7) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',G7), + G7=[_|H7], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',H7), + ( H7=[I7|_] -> + setarg(4,I7,_) + ; + true + ) + ; + F7=[_,_|H7], + setarg(2,F7,H7), + ( H7=[I7|_] -> + setarg(4,I7,F7) + ; + true + ) + ), + 'detach_known/1_1_$special_\\+/1___1'(F1,B) + ) + ), + 'known/1_1_$special_fail/0' + ) + ; + A=atom(G1), + ( 'chr newvia_1'(G1,K1) -> + get_attr(K1,guard_entailment,L1), + L1=v(_,_,_,_,_,_,J1,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_atom/1___1',J1) + ), + 'chr sbag_member'(H1,J1), + H1=suspension(_,active,_,_,_,I1), + I1==G1, + !, + H1=suspension(_,_,_,_,_,E7), + setarg(2,H1,removed), + term_variables(E7,M1), + arg(5,H1,A7), + ( var(A7) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_atom/1___1',B7), + B7=[_|C7], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_atom/1___1',C7), + ( C7=[D7|_] -> + setarg(5,D7,_) + ; + true + ) + ; + A7=[_,_|C7], + setarg(2,A7,C7), + ( C7=[D7|_] -> + setarg(5,D7,A7) + ; + true + ) + ), + 'detach_known/1_1_$special_atom/1___1'(M1,H1), + ( var(B) -> + true + ; + B=suspension(_,Y6,_,_,Z6), + setarg(2,B,removed), + ( Y6==not_stored_yet -> + N1=[] + ; + term_variables(Z6,N1), + arg(4,B,U6), + ( var(U6) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',V6), + V6=[_|W6], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',W6), + ( W6=[X6|_] -> + setarg(4,X6,_) + ; + true + ) + ; + U6=[_,_|W6], + setarg(2,U6,W6), + ( W6=[X6|_] -> + setarg(4,X6,U6) + ; + true + ) + ), + 'detach_known/1_1_$special_\\+/1___1'(N1,B) + ) + ), + 'known/1_1_$special_fail/0' + ) + ; + A=atomic(O1), + ( 'chr newvia_1'(O1,S1) -> + get_attr(S1,guard_entailment,T1), + T1=v(_,_,_,_,_,_,_,R1,_,_,_,_,_,_,_,_,_,_,_,_,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_atomic/1___1',R1) + ), + 'chr sbag_member'(P1,R1), + P1=suspension(_,active,_,_,_,Q1), + Q1==O1, + !, + P1=suspension(_,_,_,_,_,T6), + setarg(2,P1,removed), + term_variables(T6,U1), + arg(5,P1,P6), + ( var(P6) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_atomic/1___1',Q6), + Q6=[_|R6], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_atomic/1___1',R6), + ( R6=[S6|_] -> + setarg(5,S6,_) + ; + true + ) + ; + P6=[_,_|R6], + setarg(2,P6,R6), + ( R6=[S6|_] -> + setarg(5,S6,P6) + ; + true + ) + ), + 'detach_known/1_1_$special_atomic/1___1'(U1,P1), + ( var(B) -> + true + ; + B=suspension(_,N6,_,_,O6), + setarg(2,B,removed), + ( N6==not_stored_yet -> + V1=[] + ; + term_variables(O6,V1), + arg(4,B,J6), + ( var(J6) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',K6), + K6=[_|L6], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',L6), + ( L6=[M6|_] -> + setarg(4,M6,_) + ; + true + ) + ; + J6=[_,_|L6], + setarg(2,J6,L6), + ( L6=[M6|_] -> + setarg(4,M6,J6) + ; + true + ) + ), + 'detach_known/1_1_$special_\\+/1___1'(V1,B) + ) + ), + 'known/1_1_$special_fail/0' + ) + ; + A=compound(W1), + ( 'chr newvia_1'(W1,A2) -> + get_attr(A2,guard_entailment,B2), + B2=v(_,_,_,_,_,_,_,_,Z1,_,_,_,_,_,_,_,_,_,_,_,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_compound/1___1',Z1) + ), + 'chr sbag_member'(X1,Z1), + X1=suspension(_,active,_,_,_,Y1), + Y1==W1, + !, + X1=suspension(_,_,_,_,_,I6), + setarg(2,X1,removed), + term_variables(I6,C2), + arg(5,X1,E6), + ( var(E6) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_compound/1___1',F6), + F6=[_|G6], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_compound/1___1',G6), + ( G6=[H6|_] -> + setarg(5,H6,_) + ; + true + ) + ; + E6=[_,_|G6], + setarg(2,E6,G6), + ( G6=[H6|_] -> + setarg(5,H6,E6) + ; + true + ) + ), + 'detach_known/1_1_$special_compound/1___1'(C2,X1), + ( var(B) -> + true + ; + B=suspension(_,C6,_,_,D6), + setarg(2,B,removed), + ( C6==not_stored_yet -> + D2=[] + ; + term_variables(D6,D2), + arg(4,B,Y5), + ( var(Y5) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',Z5), + Z5=[_|A6], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',A6), + ( A6=[B6|_] -> + setarg(4,B6,_) + ; + true + ) + ; + Y5=[_,_|A6], + setarg(2,Y5,A6), + ( A6=[B6|_] -> + setarg(4,B6,Y5) + ; + true + ) + ), + 'detach_known/1_1_$special_\\+/1___1'(D2,B) + ) + ), + 'known/1_1_$special_fail/0' + ) + ; + A=ground(E2), + ( 'chr newvia_1'(E2,I2) -> + get_attr(I2,guard_entailment,J2), + J2=v(_,_,_,_,_,_,_,_,_,H2,_,_,_,_,_,_,_,_,_,_,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_ground/1___1',H2) + ), + 'chr sbag_member'(F2,H2), + F2=suspension(_,active,_,_,_,G2), + G2==E2, + !, + F2=suspension(_,_,_,_,_,X5), + setarg(2,F2,removed), + term_variables(X5,K2), + arg(5,F2,T5), + ( var(T5) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_ground/1___1',U5), + U5=[_|V5], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_ground/1___1',V5), + ( V5=[W5|_] -> + setarg(5,W5,_) + ; + true + ) + ; + T5=[_,_|V5], + setarg(2,T5,V5), + ( V5=[W5|_] -> + setarg(5,W5,T5) + ; + true + ) + ), + 'detach_known/1_1_$special_ground/1___1'(K2,F2), + ( var(B) -> + true + ; + B=suspension(_,R5,_,_,S5), + setarg(2,B,removed), + ( R5==not_stored_yet -> + L2=[] + ; + term_variables(S5,L2), + arg(4,B,N5), + ( var(N5) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',O5), + O5=[_|P5], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',P5), + ( P5=[Q5|_] -> + setarg(4,Q5,_) + ; + true + ) + ; + N5=[_,_|P5], + setarg(2,N5,P5), + ( P5=[Q5|_] -> + setarg(4,Q5,N5) + ; + true + ) + ), + 'detach_known/1_1_$special_\\+/1___1'(L2,B) + ) + ), + 'known/1_1_$special_fail/0' + ) + ; + A=integer(M2), + ( 'chr newvia_1'(M2,Q2) -> + get_attr(Q2,guard_entailment,R2), + R2=v(_,_,_,_,_,_,_,_,_,_,P2,_,_,_,_,_,_,_,_,_,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_integer/1___1',P2) + ), + 'chr sbag_member'(N2,P2), + N2=suspension(_,active,_,_,_,O2), + O2==M2, + !, + N2=suspension(_,_,_,_,_,M5), + setarg(2,N2,removed), + term_variables(M5,S2), + arg(5,N2,I5), + ( var(I5) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_integer/1___1',J5), + J5=[_|K5], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_integer/1___1',K5), + ( K5=[L5|_] -> + setarg(5,L5,_) + ; + true + ) + ; + I5=[_,_|K5], + setarg(2,I5,K5), + ( K5=[L5|_] -> + setarg(5,L5,I5) + ; + true + ) + ), + 'detach_known/1_1_$special_integer/1___1'(S2,N2), + ( var(B) -> + true + ; + B=suspension(_,G5,_,_,H5), + setarg(2,B,removed), + ( G5==not_stored_yet -> + T2=[] + ; + term_variables(H5,T2), + arg(4,B,C5), + ( var(C5) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',D5), + D5=[_|E5], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',E5), + ( E5=[F5|_] -> + setarg(4,F5,_) + ; + true + ) + ; + C5=[_,_|E5], + setarg(2,C5,E5), + ( E5=[F5|_] -> + setarg(4,F5,C5) + ; + true + ) + ), + 'detach_known/1_1_$special_\\+/1___1'(T2,B) + ) + ), + 'known/1_1_$special_fail/0' + ) + ; + A=float(U2), + ( 'chr newvia_1'(U2,Y2) -> + get_attr(Y2,guard_entailment,Z2), + Z2=v(_,_,_,_,_,_,_,_,_,_,_,X2,_,_,_,_,_,_,_,_,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_float/1___1',X2) + ), + 'chr sbag_member'(V2,X2), + V2=suspension(_,active,_,_,_,W2), + W2==U2, + !, + V2=suspension(_,_,_,_,_,B5), + setarg(2,V2,removed), + term_variables(B5,A3), + arg(5,V2,X4), + ( var(X4) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_float/1___1',Y4), + Y4=[_|Z4], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_float/1___1',Z4), + ( Z4=[A5|_] -> + setarg(5,A5,_) + ; + true + ) + ; + X4=[_,_|Z4], + setarg(2,X4,Z4), + ( Z4=[A5|_] -> + setarg(5,A5,X4) + ; + true + ) + ), + 'detach_known/1_1_$special_float/1___1'(A3,V2), + ( var(B) -> + true + ; + B=suspension(_,V4,_,_,W4), + setarg(2,B,removed), + ( V4==not_stored_yet -> + B3=[] + ; + term_variables(W4,B3), + arg(4,B,R4), + ( var(R4) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',S4), + S4=[_|T4], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',T4), + ( T4=[U4|_] -> + setarg(4,U4,_) + ; + true + ) + ; + R4=[_,_|T4], + setarg(2,R4,T4), + ( T4=[U4|_] -> + setarg(4,U4,R4) + ; + true + ) + ), + 'detach_known/1_1_$special_\\+/1___1'(B3,B) + ) + ), + 'known/1_1_$special_fail/0' + ) + ; + A=number(C3), + ( 'chr newvia_1'(C3,G3) -> + get_attr(G3,guard_entailment,H3), + H3=v(_,_,_,_,_,_,_,_,_,_,_,_,F3,_,_,_,_,_,_,_,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_number/1___1',F3) + ), + 'chr sbag_member'(D3,F3), + D3=suspension(_,active,_,_,_,E3), + E3==C3, + !, + D3=suspension(_,_,_,_,_,Q4), + setarg(2,D3,removed), + term_variables(Q4,I3), + arg(5,D3,M4), + ( var(M4) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_number/1___1',N4), + N4=[_|O4], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_number/1___1',O4), + ( O4=[P4|_] -> + setarg(5,P4,_) + ; + true + ) + ; + M4=[_,_|O4], + setarg(2,M4,O4), + ( O4=[P4|_] -> + setarg(5,P4,M4) + ; + true + ) + ), + 'detach_known/1_1_$special_number/1___1'(I3,D3), + ( var(B) -> + true + ; + B=suspension(_,K4,_,_,L4), + setarg(2,B,removed), + ( K4==not_stored_yet -> + J3=[] + ; + term_variables(L4,J3), + arg(4,B,G4), + ( var(G4) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',H4), + H4=[_|I4], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',I4), + ( I4=[J4|_] -> + setarg(4,J4,_) + ; + true + ) + ; + G4=[_,_|I4], + setarg(2,G4,I4), + ( I4=[J4|_] -> + setarg(4,J4,G4) + ; + true + ) + ), + 'detach_known/1_1_$special_\\+/1___1'(J3,B) + ) + ), + 'known/1_1_$special_fail/0' + ) + ; + A=(K3=\=L3), + ( 'chr newvia_2'(K3,L3,Q3) -> + get_attr(Q3,guard_entailment,R3), + R3=v(_,_,_,_,_,_,_,_,_,_,_,_,_,P3,_,_,_,_,_,_,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_=\\=/2___2',P3) + ), + 'chr sbag_member'(M3,P3), + M3=suspension(_,active,_,_,_,N3,O3), + N3==K3, + O3==L3, + !, + M3=suspension(_,_,_,_,_,E4,F4), + setarg(2,M3,removed), + term_variables(term(E4,F4),S3), + arg(5,M3,A4), + ( var(A4) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_=\\=/2___2',B4), + B4=[_|C4], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_=\\=/2___2',C4), + ( C4=[D4|_] -> + setarg(5,D4,_) + ; + true + ) + ; + A4=[_,_|C4], + setarg(2,A4,C4), + ( C4=[D4|_] -> + setarg(5,D4,A4) + ; + true + ) + ), + 'detach_known/1_1_$special_=\\=/2___2'(S3,M3), + ( var(B) -> + true + ; + B=suspension(_,Y3,_,_,Z3), + setarg(2,B,removed), + ( Y3==not_stored_yet -> + T3=[] + ; + term_variables(Z3,T3), + arg(4,B,U3), + ( var(U3) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',V3), + V3=[_|W3], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',W3), + ( W3=[X3|_] -> + setarg(4,X3,_) + ; + true + ) + ; + U3=[_,_|W3], + setarg(2,U3,W3), + ( W3=[X3|_] -> + setarg(4,X3,U3) + ; + true + ) + ), + 'detach_known/1_1_$special_\\+/1___1'(T3,B) + ) + ), + 'known/1_1_$special_fail/0' + ). +'known/1_1_$special_\\+/1___1__0'(A,B) :- + ( 'chr newvia_1'(A,F) -> + get_attr(F,guard_entailment,G), + G=v(_,_,_,_,_,_,_,_,_,_,_,_,_,_,E,_,_,_,_,_,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',E) + ), + 'chr sbag_member'(C,E), + C=suspension(_,active,_,_,D), + nonvar(D), + D=(\+H), + H==A, + !, + C=suspension(_,_,_,_,U), + setarg(2,C,removed), + term_variables(U,I), + arg(4,C,Q), + ( var(Q) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',R), + R=[_|S], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',S), + ( S=[T|_] -> + setarg(4,T,_) + ; + true + ) + ; + Q=[_,_|S], + setarg(2,Q,S), + ( S=[T|_] -> + setarg(4,T,Q) + ; + true + ) + ), + 'detach_known/1_1_$special_\\+/1___1'(I,C), + ( var(B) -> + true + ; + B=suspension(_,O,_,_,P), + setarg(2,B,removed), + ( O==not_stored_yet -> + J=[] + ; + term_variables(P,J), + arg(4,B,K), + ( var(K) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',L), + L=[_|M], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',M), + ( M=[N|_] -> + setarg(4,N,_) + ; + true + ) + ; + K=[_,_|M], + setarg(2,K,M), + ( M=[N|_] -> + setarg(4,N,K) + ; + true + ) + ), + 'detach_known/1_1_$special_\\+/1___1'(J,B) + ) + ), + 'known/1_1_$special_fail/0'. +'known/1_1_$special_\\+/1___1__0'(A,B) :- + nonvar(A), + ( + ( + ( + ( + ( + ( + ( + A=(\+C), + ( 'chr newvia_1'(C,G) -> + get_attr(G,guard_entailment,H), + H=v(_,_,_,_,_,_,_,_,_,_,_,_,_,_,F,_,_,_,_,_,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',F) + ), + 'chr sbag_member'(D,F), + D=suspension(_,active,_,_,E), + E==C, + !, + D=suspension(_,_,_,_,V6), + setarg(2,D,removed), + term_variables(V6,I), + arg(4,D,R6), + ( var(R6) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',S6), + S6=[_|T6], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',T6), + ( T6=[U6|_] -> + setarg(4,U6,_) + ; + true + ) + ; + R6=[_,_|T6], + setarg(2,R6,T6), + ( T6=[U6|_] -> + setarg(4,U6,R6) + ; + true + ) + ), + 'detach_known/1_1_$special_\\+/1___1'(I,D), + ( var(B) -> + true + ; + B=suspension(_,P6,_,_,Q6), + setarg(2,B,removed), + ( P6==not_stored_yet -> + J=[] + ; + term_variables(Q6,J), + arg(4,B,L6), + ( var(L6) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',M6), + M6=[_|N6], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',N6), + ( N6=[O6|_] -> + setarg(4,O6,_) + ; + true + ) + ; + L6=[_,_|N6], + setarg(2,L6,N6), + ( N6=[O6|_] -> + setarg(4,O6,L6) + ; + true + ) + ), + 'detach_known/1_1_$special_\\+/1___1'(J,B) + ) + ), + 'known/1_1_$special_fail/0' + ; + A=functor(K,L,M), + ( 'chr newvia'([K,L,M],S) -> + get_attr(S,guard_entailment,T), + T=v(_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,R,_,_,_,_,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_functor/3___3',R) + ), + 'chr sbag_member'(N,R), + N=suspension(_,active,_,_,O,P,Q), + O==K, + P==L, + Q==M, + !, + N=suspension(_,_,_,_,I6,J6,K6), + setarg(2,N,removed), + term_variables(term(I6,J6,K6),U), + arg(4,N,E6), + ( var(E6) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_functor/3___3',F6), + F6=[_|G6], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_functor/3___3',G6), + ( G6=[H6|_] -> + setarg(4,H6,_) + ; + true + ) + ; + E6=[_,_|G6], + setarg(2,E6,G6), + ( G6=[H6|_] -> + setarg(4,H6,E6) + ; + true + ) + ), + 'detach_known/1_1_$special_functor/3___3'(U,N), + ( var(B) -> + true + ; + B=suspension(_,C6,_,_,D6), + setarg(2,B,removed), + ( C6==not_stored_yet -> + V=[] + ; + term_variables(D6,V), + arg(4,B,Y5), + ( var(Y5) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',Z5), + Z5=[_|A6], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',A6), + ( A6=[B6|_] -> + setarg(4,B6,_) + ; + true + ) + ; + Y5=[_,_|A6], + setarg(2,Y5,A6), + ( A6=[B6|_] -> + setarg(4,B6,Y5) + ; + true + ) + ), + 'detach_known/1_1_$special_\\+/1___1'(V,B) + ) + ), + 'known/1_1_$special_fail/0' + ) + ; + A=(W\=X), + ( 'chr newvia_2'(W,X,C1) -> + get_attr(C1,guard_entailment,D1), + D1=v(_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,B1,_,_,_,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\=/2___2',B1) + ), + 'chr sbag_member'(Y,B1), + Y=suspension(_,active,_,_,_,Z,A1), + Z==W, + A1==X, + !, + Y=suspension(_,_,_,_,_,W5,X5), + setarg(2,Y,removed), + term_variables(term(W5,X5),E1), + arg(5,Y,S5), + ( var(S5) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\=/2___2',T5), + T5=[_|U5], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\=/2___2',U5), + ( U5=[V5|_] -> + setarg(5,V5,_) + ; + true + ) + ; + S5=[_,_|U5], + setarg(2,S5,U5), + ( U5=[V5|_] -> + setarg(5,V5,S5) + ; + true + ) + ), + 'detach_known/1_1_$special_\\=/2___2'(E1,Y), + ( var(B) -> + true + ; + B=suspension(_,Q5,_,_,R5), + setarg(2,B,removed), + ( Q5==not_stored_yet -> + F1=[] + ; + term_variables(R5,F1), + arg(4,B,M5), + ( var(M5) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',N5), + N5=[_|O5], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',O5), + ( O5=[P5|_] -> + setarg(4,P5,_) + ; + true + ) + ; + M5=[_,_|O5], + setarg(2,M5,O5), + ( O5=[P5|_] -> + setarg(4,P5,M5) + ; + true + ) + ), + 'detach_known/1_1_$special_\\+/1___1'(F1,B) + ) + ), + 'known/1_1_$special_fail/0' + ) + ; + A=(G1=H1), + ( 'chr newvia_2'(G1,H1,M1) -> + get_attr(M1,guard_entailment,N1), + N1=v(_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,L1,_,_,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_=/2___2',L1) + ), + 'chr sbag_member'(I1,L1), + I1=suspension(_,active,_,_,J1,K1), + J1==G1, + K1==H1, + !, + I1=suspension(_,_,_,_,K5,L5), + setarg(2,I1,removed), + term_variables(term(K5,L5),O1), + arg(4,I1,G5), + ( var(G5) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_=/2___2',H5), + H5=[_|I5], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_=/2___2',I5), + ( I5=[J5|_] -> + setarg(4,J5,_) + ; + true + ) + ; + G5=[_,_|I5], + setarg(2,G5,I5), + ( I5=[J5|_] -> + setarg(4,J5,G5) + ; + true + ) + ), + 'detach_known/1_1_$special_=/2___2'(O1,I1), + ( var(B) -> + true + ; + B=suspension(_,E5,_,_,F5), + setarg(2,B,removed), + ( E5==not_stored_yet -> + P1=[] + ; + term_variables(F5,P1), + arg(4,B,A5), + ( var(A5) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',B5), + B5=[_|C5], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',C5), + ( C5=[D5|_] -> + setarg(4,D5,_) + ; + true + ) + ; + A5=[_,_|C5], + setarg(2,A5,C5), + ( C5=[D5|_] -> + setarg(4,D5,A5) + ; + true + ) + ), + 'detach_known/1_1_$special_\\+/1___1'(P1,B) + ) + ), + 'known/1_1_$special_fail/0' + ) + ; + A=(Q1\==R1), + ( 'chr newvia_2'(Q1,R1,W1) -> + get_attr(W1,guard_entailment,X1), + X1=v(_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,V1,_,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\==/2___2',V1) + ), + 'chr sbag_member'(S1,V1), + S1=suspension(_,active,_,_,_,T1,U1), + T1==Q1, + U1==R1, + !, + S1=suspension(_,_,_,_,_,Y4,Z4), + setarg(2,S1,removed), + term_variables(term(Y4,Z4),Y1), + arg(5,S1,U4), + ( var(U4) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\==/2___2',V4), + V4=[_|W4], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\==/2___2',W4), + ( W4=[X4|_] -> + setarg(5,X4,_) + ; + true + ) + ; + U4=[_,_|W4], + setarg(2,U4,W4), + ( W4=[X4|_] -> + setarg(5,X4,U4) + ; + true + ) + ), + 'detach_known/1_1_$special_\\==/2___2'(Y1,S1), + ( var(B) -> + true + ; + B=suspension(_,S4,_,_,T4), + setarg(2,B,removed), + ( S4==not_stored_yet -> + Z1=[] + ; + term_variables(T4,Z1), + arg(4,B,O4), + ( var(O4) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',P4), + P4=[_|Q4], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',Q4), + ( Q4=[R4|_] -> + setarg(4,R4,_) + ; + true + ) + ; + O4=[_,_|Q4], + setarg(2,O4,Q4), + ( Q4=[R4|_] -> + setarg(4,R4,O4) + ; + true + ) + ), + 'detach_known/1_1_$special_\\+/1___1'(Z1,B) + ) + ), + 'known/1_1_$special_fail/0' + ) + ; + A=(A2==B2), + ( 'chr newvia_2'(A2,B2,G2) -> + get_attr(G2,guard_entailment,H2), + H2=v(_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,F2,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_==/2___2',F2) + ), + 'chr sbag_member'(C2,F2), + C2=suspension(_,active,_,_,_,D2,E2), + D2==A2, + E2==B2, + !, + C2=suspension(_,_,_,_,_,M4,N4), + setarg(2,C2,removed), + term_variables(term(M4,N4),I2), + arg(5,C2,I4), + ( var(I4) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_==/2___2',J4), + J4=[_|K4], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_==/2___2',K4), + ( K4=[L4|_] -> + setarg(5,L4,_) + ; + true + ) + ; + I4=[_,_|K4], + setarg(2,I4,K4), + ( K4=[L4|_] -> + setarg(5,L4,I4) + ; + true + ) + ), + 'detach_known/1_1_$special_==/2___2'(I2,C2), + ( var(B) -> + true + ; + B=suspension(_,G4,_,_,H4), + setarg(2,B,removed), + ( G4==not_stored_yet -> + J2=[] + ; + term_variables(H4,J2), + arg(4,B,C4), + ( var(C4) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',D4), + D4=[_|E4], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',E4), + ( E4=[F4|_] -> + setarg(4,F4,_) + ; + true + ) + ; + C4=[_,_|E4], + setarg(2,C4,E4), + ( E4=[F4|_] -> + setarg(4,F4,C4) + ; + true + ) + ), + 'detach_known/1_1_$special_\\+/1___1'(J2,B) + ) + ), + 'known/1_1_$special_fail/0' + ) + ; + A=(K2= + get_attr(Q2,guard_entailment,R2), + R2=v(_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,P2,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_= + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_= + setarg(5,Z3,_) + ; + true + ) + ; + W3=[_,_|Y3], + setarg(2,W3,Y3), + ( Y3=[Z3|_] -> + setarg(5,Z3,W3) + ; + true + ) + ), + 'detach_known/1_1_$special_= + true + ; + B=suspension(_,U3,_,_,V3), + setarg(2,B,removed), + ( U3==not_stored_yet -> + T2=[] + ; + term_variables(V3,T2), + arg(4,B,Q3), + ( var(Q3) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',R3), + R3=[_|S3], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',S3), + ( S3=[T3|_] -> + setarg(4,T3,_) + ; + true + ) + ; + Q3=[_,_|S3], + setarg(2,Q3,S3), + ( S3=[T3|_] -> + setarg(4,T3,Q3) + ; + true + ) + ), + 'detach_known/1_1_$special_\\+/1___1'(T2,B) + ) + ), + 'known/1_1_$special_fail/0' + ) + ; + A=(U2=:=V2), + ( 'chr newvia_2'(U2,V2,A3) -> + get_attr(A3,guard_entailment,B3), + B3=v(_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,Z2) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_=:=/2___2',Z2) + ), + 'chr sbag_member'(W2,Z2), + W2=suspension(_,active,_,_,_,X2,Y2), + X2==U2, + Y2==V2, + !, + W2=suspension(_,_,_,_,_,O3,P3), + setarg(2,W2,removed), + term_variables(term(O3,P3),C3), + arg(5,W2,K3), + ( var(K3) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_=:=/2___2',L3), + L3=[_|M3], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_=:=/2___2',M3), + ( M3=[N3|_] -> + setarg(5,N3,_) + ; + true + ) + ; + K3=[_,_|M3], + setarg(2,K3,M3), + ( M3=[N3|_] -> + setarg(5,N3,K3) + ; + true + ) + ), + 'detach_known/1_1_$special_=:=/2___2'(C3,W2), + ( var(B) -> + true + ; + B=suspension(_,I3,_,_,J3), + setarg(2,B,removed), + ( I3==not_stored_yet -> + D3=[] + ; + term_variables(J3,D3), + arg(4,B,E3), + ( var(E3) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',F3), + F3=[_|G3], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',G3), + ( G3=[H3|_] -> + setarg(4,H3,_) + ; + true + ) + ; + E3=[_,_|G3], + setarg(2,E3,G3), + ( G3=[H3|_] -> + setarg(4,H3,E3) + ; + true + ) + ), + 'detach_known/1_1_$special_\\+/1___1'(D3,B) + ) + ), + 'known/1_1_$special_fail/0' + ). +'known/1_1_$special_\\+/1___1__0'(A,B) :- + ( 'chr newvia_1'(A,F) -> + get_attr(F,guard_entailment,G), + G=v(_,_,E,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$default___1',E) + ), + 'chr sbag_member'(C,E), + C=suspension(_,active,_,_,D), + D==A, + !, + C=suspension(_,_,_,_,T), + setarg(2,C,removed), + term_variables(T,H), + arg(4,C,P), + ( var(P) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$default___1',Q), + Q=[_|R], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$default___1',R), + ( R=[S|_] -> + setarg(4,S,_) + ; + true + ) + ; + P=[_,_|R], + setarg(2,P,R), + ( R=[S|_] -> + setarg(4,S,P) + ; + true + ) + ), + 'detach_known/1_1_$default___1'(H,C), + ( var(B) -> + true + ; + B=suspension(_,N,_,_,O), + setarg(2,B,removed), + ( N==not_stored_yet -> + I=[] + ; + term_variables(O,I), + arg(4,B,J), + ( var(J) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',K), + K=[_|L], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',L), + ( L=[M|_] -> + setarg(4,M,_) + ; + true + ) + ; + J=[_,_|L], + setarg(2,J,L), + ( L=[M|_] -> + setarg(4,M,J) + ; + true + ) + ), + 'detach_known/1_1_$special_\\+/1___1'(I,B) + ) + ), + 'known/1_1_$special_fail/0'. +'known/1_1_$special_\\+/1___1__0'(A,B) :- + ( 'chr newvia_1'(A,D) -> + get_attr(D,guard_entailment,E), + E=v(_,_,_,C,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',C) + ), + !, + ( var(B) -> + B=suspension(F,not_stored_yet,0,_,A), + 'chr gen_id'(F) + ; + true + ), + 'known/1_1_$special_\\+/1___1__0__0__33'(C,A,B). +'known/1_1_$special_\\+/1___1__0__0__33'([],B,A) :- + 'known/1_1_$special_\\+/1___1__1'(B,A). +'known/1_1_$special_\\+/1___1__0__0__33'([E|H],A,B) :- + ( E=suspension(_,active,_,_,C,D), + nonvar(C), + C=(\+F), + nonvar(F), + F=(\+G), + G==A -> + E=suspension(_,_,_,_,V,W), + setarg(2,E,removed), + term_variables(term(V,W),I), + arg(4,E,R), + ( var(R) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',S), + S=[_|T], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',T), + ( T=[U|_] -> + setarg(4,U,_) + ; + true + ) + ; + R=[_,_|T], + setarg(2,R,T), + ( T=[U|_] -> + setarg(4,U,R) + ; + true + ) + ), + 'detach_known/1_1_$special_;/2___2'(I,E), + arg(2,B,M), + setarg(2,B,active), + arg(3,B,L), + K is L+1, + setarg(3,B,K), + ( M==not_stored_yet -> + B=suspension(_,_,_,_,N), + term_variables(N,J), + 'chr none_locked'(J), + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',O), + P=[B|O], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',P), + ( O=[Q|_] -> + setarg(4,Q,P) + ; + true + ), + 'attach_known/1_1_$special_\\+/1___1'(J,B) + ; + true + ), + known(D), + ( B=suspension(_,active,K,_,_) -> + setarg(2,B,inactive), + 'known/1_1_$special_\\+/1___1__0__0__33'(H,A,B) + ; + true + ) + ; + 'known/1_1_$special_\\+/1___1__0__0__33'(H,A,B) + ). +'known/1_1_$special_\\+/1___1__0'(A,B) :- + ( var(B) -> + B=suspension(C,not_stored_yet,0,_,A), + 'chr gen_id'(C) + ; + true + ), + 'known/1_1_$special_\\+/1___1__1'(A,B). +'known/1_1_$special_\\+/1___1__1'(A,B) :- + ( 'chr newvia_1'(A,D) -> + get_attr(D,guard_entailment,E), + E=v(_,_,_,C,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',C) + ), + !, + 'known/1_1_$special_\\+/1___1__1__0__34'(C,A,B). +'known/1_1_$special_\\+/1___1__1__0__34'([],B,A) :- + 'known/1_1_$special_\\+/1___1__2'(B,A). +'known/1_1_$special_\\+/1___1__1__0__34'([E|I],A,B) :- + ( E=suspension(_,active,_,_,C,D), + nonvar(C), + C=(F,_), + nonvar(F), + F=(\+G), + nonvar(G), + G=(\+H), + H==A -> + E=suspension(_,_,_,_,W,X), + setarg(2,E,removed), + term_variables(term(W,X),J), + arg(4,E,S), + ( var(S) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',T), + T=[_|U], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',U), + ( U=[V|_] -> + setarg(4,V,_) + ; + true + ) + ; + S=[_,_|U], + setarg(2,S,U), + ( U=[V|_] -> + setarg(4,V,S) + ; + true + ) + ), + 'detach_known/1_1_$special_;/2___2'(J,E), + arg(2,B,N), + setarg(2,B,active), + arg(3,B,M), + L is M+1, + setarg(3,B,L), + ( N==not_stored_yet -> + B=suspension(_,_,_,_,O), + term_variables(O,K), + 'chr none_locked'(K), + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',P), + Q=[B|P], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',Q), + ( P=[R|_] -> + setarg(4,R,Q) + ; + true + ), + 'attach_known/1_1_$special_\\+/1___1'(K,B) + ; + true + ), + known(D), + ( B=suspension(_,active,L,_,_) -> + setarg(2,B,inactive), + 'known/1_1_$special_\\+/1___1__1__0__34'(I,A,B) + ; + true + ) + ; + 'known/1_1_$special_\\+/1___1__1__0__34'(I,A,B) + ). +'known/1_1_$special_\\+/1___1__1'(A,B) :- + 'known/1_1_$special_\\+/1___1__2'(A,B). +'known/1_1_$special_\\+/1___1__2'(A,B) :- + ( 'chr newvia_1'(A,D) -> + get_attr(D,guard_entailment,E), + E=v(_,_,_,C,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',C) + ), + !, + 'known/1_1_$special_\\+/1___1__2__0__35'(C,A,B). +'known/1_1_$special_\\+/1___1__2__0__35'([],B,A) :- + 'known/1_1_$special_\\+/1___1__3'(B,A). +'known/1_1_$special_\\+/1___1__2__0__35'([E|F],A,B) :- + ( E=suspension(_,active,_,_,C,D), + C==A -> + E=suspension(_,_,_,_,T,U), + setarg(2,E,removed), + term_variables(term(T,U),G), + arg(4,E,P), + ( var(P) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',Q), + Q=[_|R], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',R), + ( R=[S|_] -> + setarg(4,S,_) + ; + true + ) + ; + P=[_,_|R], + setarg(2,P,R), + ( R=[S|_] -> + setarg(4,S,P) + ; + true + ) + ), + 'detach_known/1_1_$special_;/2___2'(G,E), + arg(2,B,K), + setarg(2,B,active), + arg(3,B,J), + I is J+1, + setarg(3,B,I), + ( K==not_stored_yet -> + B=suspension(_,_,_,_,L), + term_variables(L,H), + 'chr none_locked'(H), + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',M), + N=[B|M], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',N), + ( M=[O|_] -> + setarg(4,O,N) + ; + true + ), + 'attach_known/1_1_$special_\\+/1___1'(H,B) + ; + true + ), + known(D), + ( B=suspension(_,active,I,_,_) -> + setarg(2,B,inactive), + 'known/1_1_$special_\\+/1___1__2__0__35'(F,A,B) + ; + true + ) + ; + 'known/1_1_$special_\\+/1___1__2__0__35'(F,A,B) + ). +'known/1_1_$special_\\+/1___1__2'(A,B) :- + 'known/1_1_$special_\\+/1___1__3'(A,B). +'known/1_1_$special_\\+/1___1__3'(A,B) :- + ( 'chr newvia_1'(A,D) -> + get_attr(D,guard_entailment,E), + E=v(_,_,_,C,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',C) + ), + !, + 'known/1_1_$special_\\+/1___1__3__0__36'(C,A,B). +'known/1_1_$special_\\+/1___1__3__0__36'([],B,A) :- + 'known/1_1_$special_\\+/1___1__4'(B,A). +'known/1_1_$special_\\+/1___1__3__0__36'([E|G],A,B) :- + ( E=suspension(_,active,_,_,C,D), + nonvar(C), + C=(F,_), + F==A -> + E=suspension(_,_,_,_,U,V), + setarg(2,E,removed), + term_variables(term(U,V),H), + arg(4,E,Q), + ( var(Q) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',R), + R=[_|S], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',S), + ( S=[T|_] -> + setarg(4,T,_) + ; + true + ) + ; + Q=[_,_|S], + setarg(2,Q,S), + ( S=[T|_] -> + setarg(4,T,Q) + ; + true + ) + ), + 'detach_known/1_1_$special_;/2___2'(H,E), + arg(2,B,L), + setarg(2,B,active), + arg(3,B,K), + J is K+1, + setarg(3,B,J), + ( L==not_stored_yet -> + B=suspension(_,_,_,_,M), + term_variables(M,I), + 'chr none_locked'(I), + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',N), + O=[B|N], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',O), + ( N=[P|_] -> + setarg(4,P,O) + ; + true + ), + 'attach_known/1_1_$special_\\+/1___1'(I,B) + ; + true + ), + known(D), + ( B=suspension(_,active,J,_,_) -> + setarg(2,B,inactive), + 'known/1_1_$special_\\+/1___1__3__0__36'(G,A,B) + ; + true + ) + ; + 'known/1_1_$special_\\+/1___1__3__0__36'(G,A,B) + ). +'known/1_1_$special_\\+/1___1__3'(A,B) :- + 'known/1_1_$special_\\+/1___1__4'(A,B). +'known/1_1_$special_\\+/1___1__4'(_,A) :- + arg(2,A,E), + setarg(2,A,active), + arg(3,A,D), + C is D+1, + setarg(3,A,C), + ( E==not_stored_yet -> + A=suspension(_,_,_,_,F), + term_variables(F,B), + 'chr none_locked'(B), + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',G), + H=[A|G], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',H), + ( G=[I|_] -> + setarg(4,I,H) + ; + true + ), + 'attach_known/1_1_$special_\\+/1___1'(B,A) + ; + true + ). +'known/1_1_$special_functor/3'(A,B,C) :- + 'known/1_1_$special_functor/3___3__0'(A,B,C,_). +'known/1_1_$special_functor/3___3__0'(A,B,C,D) :- + ( 'chr newvia'([A,B,C],J) -> + get_attr(J,guard_entailment,K), + K=v(_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,I,_,_,_,_,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_functor/3___3',I) + ), + 'chr sbag_member'(E,I), + E=suspension(_,active,_,_,F,G,H), + F==A, + G==B, + H==C, + !, + ( var(D) -> + true + ; + D=suspension(_,Q,_,_,R,S,T), + setarg(2,D,removed), + ( Q==not_stored_yet -> + L=[] + ; + term_variables(term(R,S,T),L), + arg(4,D,M), + ( var(M) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_functor/3___3',N), + N=[_|O], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_functor/3___3',O), + ( O=[P|_] -> + setarg(4,P,_) + ; + true + ) + ; + M=[_,_|O], + setarg(2,M,O), + ( O=[P|_] -> + setarg(4,P,M) + ; + true + ) + ), + 'detach_known/1_1_$special_functor/3___3'(L,D) + ) + ). +'known/1_1_$special_functor/3___3__0'(_,_,_,A) :- + nb_getval('$chr_store_global_ground_guard_entailment____known/1_1_$special_fail/0___0',C), + 'chr sbag_member'(B,C), + B=suspension(_,active,_), + !, + ( var(A) -> + true + ; + A=suspension(_,I,_,_,J,K,L), + setarg(2,A,removed), + ( I==not_stored_yet -> + D=[] + ; + term_variables(term(J,K,L),D), + arg(4,A,E), + ( var(E) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_functor/3___3',F), + F=[_|G], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_functor/3___3',G), + ( G=[H|_] -> + setarg(4,H,_) + ; + true + ) + ; + E=[_,_|G], + setarg(2,E,G), + ( G=[H|_] -> + setarg(4,H,E) + ; + true + ) + ), + 'detach_known/1_1_$special_functor/3___3'(D,A) + ) + ). +'known/1_1_$special_functor/3___3__0'(A,B,C,D) :- + ground(C), + ground(B), + var(A), + nb_getval('$chr_store_global_list_guard_entailment____variables___1',G), + 'chr sbag_member'(E,G), + E=suspension(_,active,_,F), + !, + E=suspension(_,_,_,X), + setarg(2,E,removed), + term_variables(X,J), + arg(3,E,T), + ( var(T) -> + nb_getval('$chr_store_global_list_guard_entailment____variables___1',U), + U=[_|V], + b_setval('$chr_store_global_list_guard_entailment____variables___1',V), + ( V=[W|_] -> + setarg(3,W,_) + ; + true + ) + ; + T=[_,_|V], + setarg(2,T,V), + ( V=[W|_] -> + setarg(3,W,T) + ; + true + ) + ), + detach_variables___1(J,E), + ( var(D) -> + true + ; + D=suspension(_,P,_,_,Q,R,S), + setarg(2,D,removed), + ( P==not_stored_yet -> + K=[] + ; + term_variables(term(Q,R,S),K), + arg(4,D,L), + ( var(L) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_functor/3___3',M), + M=[_|N], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_functor/3___3',N), + ( N=[O|_] -> + setarg(4,O,_) + ; + true + ) + ; + L=[_,_|N], + setarg(2,L,N), + ( N=[O|_] -> + setarg(4,O,L) + ; + true + ) + ), + 'detach_known/1_1_$special_functor/3___3'(K,D) + ) + ), + functor(A,B,C), + A=..[_|H], + append(H,F,I), + variables(I). +'known/1_1_$special_functor/3___3__0'(A,B,C,D) :- + nonvar(A), + 'chr lock'(A), + 'chr lock'(B), + 'chr lock'(C), + \+functor(A,B,C), + 'chr unlock'(A), + 'chr unlock'(B), + 'chr unlock'(C), + !, + ( var(D) -> + true + ; + D=suspension(_,J,_,_,K,L,M), + setarg(2,D,removed), + ( J==not_stored_yet -> + E=[] + ; + term_variables(term(K,L,M),E), + arg(4,D,F), + ( var(F) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_functor/3___3',G), + G=[_|H], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_functor/3___3',H), + ( H=[I|_] -> + setarg(4,I,_) + ; + true + ) + ; + F=[_,_|H], + setarg(2,F,H), + ( H=[I|_] -> + setarg(4,I,F) + ; + true + ) + ), + 'detach_known/1_1_$special_functor/3___3'(E,D) + ) + ), + 'known/1_1_$special_fail/0'. +'known/1_1_$special_functor/3___3__0'(A,B,C,D) :- + nonvar(C), + nonvar(B), + ( 'chr newvia_1'(A,J) -> + get_attr(J,guard_entailment,K), + K=v(_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,I,_,_,_,_,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_functor/3___3',I) + ), + 'chr sbag_member'(E,I), + E=suspension(_,active,_,_,F,G,H), + F==A, + nonvar(H), + nonvar(G), + !, + E=suspension(_,_,_,_,Z,A1,B1), + setarg(2,E,removed), + term_variables(term(Z,A1,B1),L), + arg(4,E,V), + ( var(V) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_functor/3___3',W), + W=[_|X], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_functor/3___3',X), + ( X=[Y|_] -> + setarg(4,Y,_) + ; + true + ) + ; + V=[_,_|X], + setarg(2,V,X), + ( X=[Y|_] -> + setarg(4,Y,V) + ; + true + ) + ), + 'detach_known/1_1_$special_functor/3___3'(L,E), + ( var(D) -> + true + ; + D=suspension(_,R,_,_,S,T,U), + setarg(2,D,removed), + ( R==not_stored_yet -> + M=[] + ; + term_variables(term(S,T,U),M), + arg(4,D,N), + ( var(N) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_functor/3___3',O), + O=[_|P], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_functor/3___3',P), + ( P=[Q|_] -> + setarg(4,Q,_) + ; + true + ) + ; + N=[_,_|P], + setarg(2,N,P), + ( P=[Q|_] -> + setarg(4,Q,N) + ; + true + ) + ), + 'detach_known/1_1_$special_functor/3___3'(M,D) + ) + ), + 'known/1_1_$special_fail/0'. +'known/1_1_$special_functor/3___3__0'(A,B,C,D) :- + ( 'chr newvia'([A,B,C],H) -> + get_attr(H,guard_entailment,I), + I=v(_,_,_,_,_,_,_,_,_,_,_,_,_,_,G,_,_,_,_,_,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',G) + ), + 'chr sbag_member'(E,G), + E=suspension(_,active,_,_,F), + nonvar(F), + F=functor(J,K,L), + J==A, + K==B, + L==C, + !, + E=suspension(_,_,_,_,A1), + setarg(2,E,removed), + term_variables(A1,M), + arg(4,E,W), + ( var(W) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',X), + X=[_|Y], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',Y), + ( Y=[Z|_] -> + setarg(4,Z,_) + ; + true + ) + ; + W=[_,_|Y], + setarg(2,W,Y), + ( Y=[Z|_] -> + setarg(4,Z,W) + ; + true + ) + ), + 'detach_known/1_1_$special_\\+/1___1'(M,E), + ( var(D) -> + true + ; + D=suspension(_,S,_,_,T,U,V), + setarg(2,D,removed), + ( S==not_stored_yet -> + N=[] + ; + term_variables(term(T,U,V),N), + arg(4,D,O), + ( var(O) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_functor/3___3',P), + P=[_|Q], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_functor/3___3',Q), + ( Q=[R|_] -> + setarg(4,R,_) + ; + true + ) + ; + O=[_,_|Q], + setarg(2,O,Q), + ( Q=[R|_] -> + setarg(4,R,O) + ; + true + ) + ), + 'detach_known/1_1_$special_functor/3___3'(N,D) + ) + ), + 'known/1_1_$special_fail/0'. +'known/1_1_$special_functor/3___3__0'(A,B,C,D) :- + ( 'chr newvia'([A,B,C],F) -> + get_attr(F,guard_entailment,G), + G=v(_,_,_,E,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',E) + ), + !, + ( var(D) -> + D=suspension(H,not_stored_yet,0,_,A,B,C), + 'chr gen_id'(H) + ; + true + ), + 'known/1_1_$special_functor/3___3__0__0__10'(E,A,B,C,D). +'known/1_1_$special_functor/3___3__0__0__10'([],B,C,D,A) :- + 'known/1_1_$special_functor/3___3__1'(B,C,D,A). +'known/1_1_$special_functor/3___3__0__0__10'([G|L],A,B,C,D) :- + ( G=suspension(_,active,_,_,E,F), + nonvar(E), + E=(\+H), + nonvar(H), + H=functor(I,J,K), + I==A, + J==B, + K==C -> + G=suspension(_,_,_,_,B1,C1), + setarg(2,G,removed), + term_variables(term(B1,C1),M), + arg(4,G,X), + ( var(X) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',Y), + Y=[_|Z], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',Z), + ( Z=[A1|_] -> + setarg(4,A1,_) + ; + true + ) + ; + X=[_,_|Z], + setarg(2,X,Z), + ( Z=[A1|_] -> + setarg(4,A1,X) + ; + true + ) + ), + 'detach_known/1_1_$special_;/2___2'(M,G), + arg(2,D,Q), + setarg(2,D,active), + arg(3,D,P), + O is P+1, + setarg(3,D,O), + ( Q==not_stored_yet -> + D=suspension(_,_,_,_,R,S,T), + term_variables(term(R,S,T),N), + 'chr none_locked'(N), + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_functor/3___3',U), + V=[D|U], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_functor/3___3',V), + ( U=[W|_] -> + setarg(4,W,V) + ; + true + ), + 'attach_known/1_1_$special_functor/3___3'(N,D) + ; + true + ), + known(F), + ( D=suspension(_,active,O,_,_,_,_) -> + setarg(2,D,inactive), + 'known/1_1_$special_functor/3___3__0__0__10'(L,A,B,C,D) + ; + true + ) + ; + 'known/1_1_$special_functor/3___3__0__0__10'(L,A,B,C,D) + ). +'known/1_1_$special_functor/3___3__0'(A,B,C,D) :- + ( var(D) -> + D=suspension(E,not_stored_yet,0,_,A,B,C), + 'chr gen_id'(E) + ; + true + ), + 'known/1_1_$special_functor/3___3__1'(A,B,C,D). +'known/1_1_$special_functor/3___3__1'(A,B,C,D) :- + ( 'chr newvia'([A,B,C],F) -> + get_attr(F,guard_entailment,G), + G=v(_,_,_,E,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',E) + ), + !, + 'known/1_1_$special_functor/3___3__1__0__11'(E,A,B,C,D). +'known/1_1_$special_functor/3___3__1__0__11'([],B,C,D,A) :- + 'known/1_1_$special_functor/3___3__2'(B,C,D,A). +'known/1_1_$special_functor/3___3__1__0__11'([G|M],A,B,C,D) :- + ( G=suspension(_,active,_,_,E,F), + nonvar(E), + E=(H,_), + nonvar(H), + H=(\+I), + nonvar(I), + I=functor(J,K,L), + J==A, + K==B, + L==C -> + G=suspension(_,_,_,_,C1,D1), + setarg(2,G,removed), + term_variables(term(C1,D1),N), + arg(4,G,Y), + ( var(Y) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',Z), + Z=[_|A1], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',A1), + ( A1=[B1|_] -> + setarg(4,B1,_) + ; + true + ) + ; + Y=[_,_|A1], + setarg(2,Y,A1), + ( A1=[B1|_] -> + setarg(4,B1,Y) + ; + true + ) + ), + 'detach_known/1_1_$special_;/2___2'(N,G), + arg(2,D,R), + setarg(2,D,active), + arg(3,D,Q), + P is Q+1, + setarg(3,D,P), + ( R==not_stored_yet -> + D=suspension(_,_,_,_,S,T,U), + term_variables(term(S,T,U),O), + 'chr none_locked'(O), + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_functor/3___3',V), + W=[D|V], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_functor/3___3',W), + ( V=[X|_] -> + setarg(4,X,W) + ; + true + ), + 'attach_known/1_1_$special_functor/3___3'(O,D) + ; + true + ), + known(F), + ( D=suspension(_,active,P,_,_,_,_) -> + setarg(2,D,inactive), + 'known/1_1_$special_functor/3___3__1__0__11'(M,A,B,C,D) + ; + true + ) + ; + 'known/1_1_$special_functor/3___3__1__0__11'(M,A,B,C,D) + ). +'known/1_1_$special_functor/3___3__1'(A,B,C,D) :- + 'known/1_1_$special_functor/3___3__2'(A,B,C,D). +'known/1_1_$special_functor/3___3__2'(A,B,C,D) :- + ( 'chr newvia_1'(A,F) -> + get_attr(F,guard_entailment,G), + G=v(_,_,_,E,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',E) + ), + !, + 'known/1_1_$special_functor/3___3__2__0__12'(E,A,B,C,D). +'known/1_1_$special_functor/3___3__2__0__12'([],B,C,D,A) :- + 'known/1_1_$special_functor/3___3__3'(B,C,D,A). +'known/1_1_$special_functor/3___3__2__0__12'([F|I],A,B,C,D) :- + ( F=suspension(_,active,_,_,E,_), + nonvar(E), + E=(\+G), + nonvar(G), + G=functor(H,_,_), + H==A -> + F=suspension(_,_,_,_,O,P), + setarg(2,F,removed), + term_variables(term(O,P),J), + arg(4,F,K), + ( var(K) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',L), + L=[_|M], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',M), + ( M=[N|_] -> + setarg(4,N,_) + ; + true + ) + ; + K=[_,_|M], + setarg(2,K,M), + ( M=[N|_] -> + setarg(4,N,K) + ; + true + ) + ), + 'detach_known/1_1_$special_;/2___2'(J,F), + 'known/1_1_$special_functor/3___3__2__0__12'(I,A,B,C,D) + ; + 'known/1_1_$special_functor/3___3__2__0__12'(I,A,B,C,D) + ). +'known/1_1_$special_functor/3___3__2'(A,B,C,D) :- + 'known/1_1_$special_functor/3___3__3'(A,B,C,D). +'known/1_1_$special_functor/3___3__3'(_,_,_,A) :- + arg(2,A,E), + setarg(2,A,active), + arg(3,A,D), + C is D+1, + setarg(3,A,C), + ( E==not_stored_yet -> + A=suspension(_,_,_,_,F,G,H), + term_variables(term(F,G,H),B), + 'chr none_locked'(B), + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_functor/3___3',I), + J=[A|I], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_functor/3___3',J), + ( I=[K|_] -> + setarg(4,K,J) + ; + true + ), + 'attach_known/1_1_$special_functor/3___3'(B,A) + ; + true + ). +'known/1_1_$special_\\=/2'(A,B) :- + 'known/1_1_$special_\\=/2___2__0'(A,B,_). +'known/1_1_$special_\\=/2___2__0'(A,B,C) :- + ( 'chr newvia_2'(A,B,H) -> + get_attr(H,guard_entailment,I), + I=v(_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,G,_,_,_,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\=/2___2',G) + ), + 'chr sbag_member'(D,G), + D=suspension(_,active,_,_,_,E,F), + E==A, + F==B, + !, + ( var(C) -> + true + ; + C=suspension(_,O,_,_,_,P,Q), + setarg(2,C,removed), + ( O==not_stored_yet -> + J=[] + ; + term_variables(term(P,Q),J), + arg(5,C,K), + ( var(K) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\=/2___2',L), + L=[_|M], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\=/2___2',M), + ( M=[N|_] -> + setarg(5,N,_) + ; + true + ) + ; + K=[_,_|M], + setarg(2,K,M), + ( M=[N|_] -> + setarg(5,N,K) + ; + true + ) + ), + 'detach_known/1_1_$special_\\=/2___2'(J,C) + ) + ). +'known/1_1_$special_\\=/2___2__0'(_,_,A) :- + nb_getval('$chr_store_global_ground_guard_entailment____known/1_1_$special_fail/0___0',C), + 'chr sbag_member'(B,C), + B=suspension(_,active,_), + !, + ( var(A) -> + true + ; + A=suspension(_,I,_,_,_,J,K), + setarg(2,A,removed), + ( I==not_stored_yet -> + D=[] + ; + term_variables(term(J,K),D), + arg(5,A,E), + ( var(E) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\=/2___2',F), + F=[_|G], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\=/2___2',G), + ( G=[H|_] -> + setarg(5,H,_) + ; + true + ) + ; + E=[_,_|G], + setarg(2,E,G), + ( G=[H|_] -> + setarg(5,H,E) + ; + true + ) + ), + 'detach_known/1_1_$special_\\=/2___2'(D,A) + ) + ). +'known/1_1_$special_\\=/2___2__0'(A,B,C) :- + ground(B), + ground(A), + 'chr lock'(A), + 'chr lock'(B), + A=B, + 'chr unlock'(A), + 'chr unlock'(B), + !, + ( var(C) -> + true + ; + C=suspension(_,I,_,_,_,J,K), + setarg(2,C,removed), + ( I==not_stored_yet -> + D=[] + ; + term_variables(term(J,K),D), + arg(5,C,E), + ( var(E) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\=/2___2',F), + F=[_|G], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\=/2___2',G), + ( G=[H|_] -> + setarg(5,H,_) + ; + true + ) + ; + E=[_,_|G], + setarg(2,E,G), + ( G=[H|_] -> + setarg(5,H,E) + ; + true + ) + ), + 'detach_known/1_1_$special_\\=/2___2'(D,C) + ) + ), + 'known/1_1_$special_fail/0'. +'known/1_1_$special_\\=/2___2__0'(A,B,C) :- + B==A, + !, + ( var(C) -> + true + ; + C=suspension(_,I,_,_,_,J,K), + setarg(2,C,removed), + ( I==not_stored_yet -> + D=[] + ; + term_variables(term(J,K),D), + arg(5,C,E), + ( var(E) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\=/2___2',F), + F=[_|G], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\=/2___2',G), + ( G=[H|_] -> + setarg(5,H,_) + ; + true + ) + ; + E=[_,_|G], + setarg(2,E,G), + ( G=[H|_] -> + setarg(5,H,E) + ; + true + ) + ), + 'detach_known/1_1_$special_\\=/2___2'(D,C) + ) + ), + 'known/1_1_$special_fail/0'. +'known/1_1_$special_\\=/2___2__0'(A,B,C) :- + nonvar(B), + ( + var(A), + 'chr lock'(B), + functor(B,D,E), + E>0, + 'chr unlock'(B), + !, + ( var(C) -> + true + ; + C=suspension(_,C1,_,_,_,D1,E1), + setarg(2,C,removed), + ( C1==not_stored_yet -> + K=[] + ; + term_variables(term(D1,E1),K), + arg(5,C,Y), + ( var(Y) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\=/2___2',Z), + Z=[_|A1], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\=/2___2',A1), + ( A1=[B1|_] -> + setarg(5,B1,_) + ; + true + ) + ; + Y=[_,_|A1], + setarg(2,Y,A1), + ( A1=[B1|_] -> + setarg(5,B1,Y) + ; + true + ) + ), + 'detach_known/1_1_$special_\\=/2___2'(K,C) + ) + ), + length(F,E), + B=..[D|G], + H=..[D|F], + add_args_nunif(G,F,I), + J=(\+functor(A,D,E);A=H,I), + known(J) + ; + nonvar(A), + 'chr lock'(A), + functor(A,L,M), + 'chr unlock'(A), + !, + ( var(C) -> + true + ; + C=suspension(_,V,_,_,_,W,X), + setarg(2,C,removed), + ( V==not_stored_yet -> + Q=[] + ; + term_variables(term(W,X),Q), + arg(5,C,R), + ( var(R) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\=/2___2',S), + S=[_|T], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\=/2___2',T), + ( T=[U|_] -> + setarg(5,U,_) + ; + true + ) + ; + R=[_,_|T], + setarg(2,R,T), + ( T=[U|_] -> + setarg(5,U,R) + ; + true + ) + ), + 'detach_known/1_1_$special_\\=/2___2'(Q,C) + ) + ), + ( functor(B,L,M) -> + A=..[L|N], + B=..[L|O], + add_args_nunif(N,O,P), + known(P) + ; + true + ) + ). +'known/1_1_$special_\\=/2___2__0'(A,B,C) :- + ( var(C) -> + C=suspension(F,not_stored_yet,t,0,_,A,B), + 'chr gen_id'(F) + ; + true + ), + ( + '$novel_production'(C,182), + !, + '$extend_history'(C,182), + arg(2,C,H), + setarg(2,C,active), + arg(4,C,G), + E is G+1, + setarg(4,C,E), + ( H==not_stored_yet -> + C=suspension(_,_,_,_,_,I,J), + term_variables(term(I,J),D), + 'chr none_locked'(D), + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\=/2___2',K), + L=[C|K], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\=/2___2',L), + ( K=[M|_] -> + setarg(5,M,L) + ; + true + ), + 'attach_known/1_1_$special_\\=/2___2'(D,C) + ; + true + ), + 'known/1_1_$special_\\=/2'(B,A), + ( C=suspension(_,active,_,E,_,_,_) -> + setarg(2,C,inactive), + 'known/1_1_$special_\\=/2___2__1'(A,B,C) + ; + true + ) + ; + 'known/1_1_$special_\\=/2___2__1'(A,B,C) + ). +'known/1_1_$special_\\=/2___2__1'(A,B,C) :- + ( 'chr newvia_2'(A,B,G) -> + get_attr(G,guard_entailment,H), + H=v(_,_,_,_,_,_,_,_,_,_,_,_,_,_,F,_,_,_,_,_,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',F) + ), + 'chr sbag_member'(D,F), + D=suspension(_,active,_,_,E), + nonvar(E), + E=(I\=J), + I==A, + J==B, + !, + D=suspension(_,_,_,_,X), + setarg(2,D,removed), + term_variables(X,K), + arg(4,D,T), + ( var(T) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',U), + U=[_|V], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',V), + ( V=[W|_] -> + setarg(4,W,_) + ; + true + ) + ; + T=[_,_|V], + setarg(2,T,V), + ( V=[W|_] -> + setarg(4,W,T) + ; + true + ) + ), + 'detach_known/1_1_$special_\\+/1___1'(K,D), + ( var(C) -> + true + ; + C=suspension(_,Q,_,_,_,R,S), + setarg(2,C,removed), + ( Q==not_stored_yet -> + L=[] + ; + term_variables(term(R,S),L), + arg(5,C,M), + ( var(M) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\=/2___2',N), + N=[_|O], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\=/2___2',O), + ( O=[P|_] -> + setarg(5,P,_) + ; + true + ) + ; + M=[_,_|O], + setarg(2,M,O), + ( O=[P|_] -> + setarg(5,P,M) + ; + true + ) + ), + 'detach_known/1_1_$special_\\=/2___2'(L,C) + ) + ), + 'known/1_1_$special_fail/0'. +'known/1_1_$special_\\=/2___2__1'(A,B,C) :- + ( 'chr newvia_2'(A,B,E) -> + get_attr(E,guard_entailment,F), + F=v(_,_,_,D,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',D) + ), + !, + 'known/1_1_$special_\\=/2___2__1__0__11'(D,A,B,C). +'known/1_1_$special_\\=/2___2__1__0__11'([],B,C,A) :- + 'known/1_1_$special_\\=/2___2__2'(B,C,A). +'known/1_1_$special_\\=/2___2__1__0__11'([F|J],A,B,C) :- + ( F=suspension(_,active,_,_,D,E), + nonvar(D), + D=(\+G), + nonvar(G), + G=(H\=I), + H==A, + I==B -> + F=suspension(_,_,_,_,Y,Z), + setarg(2,F,removed), + term_variables(term(Y,Z),K), + arg(4,F,U), + ( var(U) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',V), + V=[_|W], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',W), + ( W=[X|_] -> + setarg(4,X,_) + ; + true + ) + ; + U=[_,_|W], + setarg(2,U,W), + ( W=[X|_] -> + setarg(4,X,U) + ; + true + ) + ), + 'detach_known/1_1_$special_;/2___2'(K,F), + arg(2,C,O), + setarg(2,C,active), + arg(4,C,N), + M is N+1, + setarg(4,C,M), + ( O==not_stored_yet -> + C=suspension(_,_,_,_,_,P,Q), + term_variables(term(P,Q),L), + 'chr none_locked'(L), + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\=/2___2',R), + S=[C|R], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\=/2___2',S), + ( R=[T|_] -> + setarg(5,T,S) + ; + true + ), + 'attach_known/1_1_$special_\\=/2___2'(L,C) + ; + true + ), + known(E), + ( C=suspension(_,active,_,M,_,_,_) -> + setarg(2,C,inactive), + 'known/1_1_$special_\\=/2___2__1__0__11'(J,A,B,C) + ; + true + ) + ; + 'known/1_1_$special_\\=/2___2__1__0__11'(J,A,B,C) + ). +'known/1_1_$special_\\=/2___2__1'(A,B,C) :- + 'known/1_1_$special_\\=/2___2__2'(A,B,C). +'known/1_1_$special_\\=/2___2__2'(A,B,C) :- + ( 'chr newvia_2'(A,B,E) -> + get_attr(E,guard_entailment,F), + F=v(_,_,_,D,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',D) + ), + !, + 'known/1_1_$special_\\=/2___2__2__0__12'(D,A,B,C). +'known/1_1_$special_\\=/2___2__2__0__12'([],B,C,A) :- + 'known/1_1_$special_\\=/2___2__3'(B,C,A). +'known/1_1_$special_\\=/2___2__2__0__12'([F|K],A,B,C) :- + ( F=suspension(_,active,_,_,D,E), + nonvar(D), + D=(G,_), + nonvar(G), + G=(\+H), + nonvar(H), + H=(I\=J), + I==A, + J==B -> + F=suspension(_,_,_,_,Z,A1), + setarg(2,F,removed), + term_variables(term(Z,A1),L), + arg(4,F,V), + ( var(V) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',W), + W=[_|X], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',X), + ( X=[Y|_] -> + setarg(4,Y,_) + ; + true + ) + ; + V=[_,_|X], + setarg(2,V,X), + ( X=[Y|_] -> + setarg(4,Y,V) + ; + true + ) + ), + 'detach_known/1_1_$special_;/2___2'(L,F), + arg(2,C,P), + setarg(2,C,active), + arg(4,C,O), + N is O+1, + setarg(4,C,N), + ( P==not_stored_yet -> + C=suspension(_,_,_,_,_,Q,R), + term_variables(term(Q,R),M), + 'chr none_locked'(M), + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\=/2___2',S), + T=[C|S], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\=/2___2',T), + ( S=[U|_] -> + setarg(5,U,T) + ; + true + ), + 'attach_known/1_1_$special_\\=/2___2'(M,C) + ; + true + ), + known(E), + ( C=suspension(_,active,_,N,_,_,_) -> + setarg(2,C,inactive), + 'known/1_1_$special_\\=/2___2__2__0__12'(K,A,B,C) + ; + true + ) + ; + 'known/1_1_$special_\\=/2___2__2__0__12'(K,A,B,C) + ). +'known/1_1_$special_\\=/2___2__2'(A,B,C) :- + 'known/1_1_$special_\\=/2___2__3'(A,B,C). +'known/1_1_$special_\\=/2___2__3'(_,_,A) :- + arg(2,A,E), + setarg(2,A,active), + arg(4,A,D), + C is D+1, + setarg(4,A,C), + ( E==not_stored_yet -> + A=suspension(_,_,_,_,_,F,G), + term_variables(term(F,G),B), + 'chr none_locked'(B), + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\=/2___2',H), + I=[A|H], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\=/2___2',I), + ( H=[J|_] -> + setarg(5,J,I) + ; + true + ), + 'attach_known/1_1_$special_\\=/2___2'(B,A) + ; + true + ). +'known/1_1_$special_=/2'(A,B) :- + 'known/1_1_$special_=/2___2__0'(A,B,_). +'known/1_1_$special_=/2___2__0'(A,B,C) :- + ( 'chr newvia_2'(A,B,H) -> + get_attr(H,guard_entailment,I), + I=v(_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,G,_,_,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_=/2___2',G) + ), + 'chr sbag_member'(D,G), + D=suspension(_,active,_,_,E,F), + E==A, + F==B, + !, + ( var(C) -> + true + ; + C=suspension(_,O,_,_,P,Q), + setarg(2,C,removed), + ( O==not_stored_yet -> + J=[] + ; + term_variables(term(P,Q),J), + arg(4,C,K), + ( var(K) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_=/2___2',L), + L=[_|M], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_=/2___2',M), + ( M=[N|_] -> + setarg(4,N,_) + ; + true + ) + ; + K=[_,_|M], + setarg(2,K,M), + ( M=[N|_] -> + setarg(4,N,K) + ; + true + ) + ), + 'detach_known/1_1_$special_=/2___2'(J,C) + ) + ). +'known/1_1_$special_=/2___2__0'(_,_,A) :- + nb_getval('$chr_store_global_ground_guard_entailment____known/1_1_$special_fail/0___0',C), + 'chr sbag_member'(B,C), + B=suspension(_,active,_), + !, + ( var(A) -> + true + ; + A=suspension(_,I,_,_,J,K), + setarg(2,A,removed), + ( I==not_stored_yet -> + D=[] + ; + term_variables(term(J,K),D), + arg(4,A,E), + ( var(E) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_=/2___2',F), + F=[_|G], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_=/2___2',G), + ( G=[H|_] -> + setarg(4,H,_) + ; + true + ) + ; + E=[_,_|G], + setarg(2,E,G), + ( G=[H|_] -> + setarg(4,H,E) + ; + true + ) + ), + 'detach_known/1_1_$special_=/2___2'(D,A) + ) + ). +'known/1_1_$special_=/2___2__0'(A,B,C) :- + B==A, + !, + ( var(C) -> + true + ; + C=suspension(_,I,_,_,J,K), + setarg(2,C,removed), + ( I==not_stored_yet -> + D=[] + ; + term_variables(term(J,K),D), + arg(4,C,E), + ( var(E) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_=/2___2',F), + F=[_|G], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_=/2___2',G), + ( G=[H|_] -> + setarg(4,H,_) + ; + true + ) + ; + E=[_,_|G], + setarg(2,E,G), + ( G=[H|_] -> + setarg(4,H,E) + ; + true + ) + ), + 'detach_known/1_1_$special_=/2___2'(D,C) + ) + ). +'known/1_1_$special_=/2___2__0'(A,B,C) :- + var(A), + !, + ( var(C) -> + true + ; + C=suspension(_,I,_,_,J,K), + setarg(2,C,removed), + ( I==not_stored_yet -> + D=[] + ; + term_variables(term(J,K),D), + arg(4,C,E), + ( var(E) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_=/2___2',F), + F=[_|G], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_=/2___2',G), + ( G=[H|_] -> + setarg(4,H,_) + ; + true + ) + ; + E=[_,_|G], + setarg(2,E,G), + ( G=[H|_] -> + setarg(4,H,E) + ; + true + ) + ), + 'detach_known/1_1_$special_=/2___2'(D,C) + ) + ), + A=B. +'known/1_1_$special_=/2___2__0'(A,B,C) :- + var(B), + !, + ( var(C) -> + true + ; + C=suspension(_,I,_,_,J,K), + setarg(2,C,removed), + ( I==not_stored_yet -> + D=[] + ; + term_variables(term(J,K),D), + arg(4,C,E), + ( var(E) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_=/2___2',F), + F=[_|G], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_=/2___2',G), + ( G=[H|_] -> + setarg(4,H,_) + ; + true + ) + ; + E=[_,_|G], + setarg(2,E,G), + ( G=[H|_] -> + setarg(4,H,E) + ; + true + ) + ), + 'detach_known/1_1_$special_=/2___2'(D,C) + ) + ), + A=B. +'known/1_1_$special_=/2___2__0'(A,B,C) :- + 'chr lock'(A), + functor(A,D,E), + 'chr unlock'(A), + !, + ( var(C) -> + true + ; + C=suspension(_,K,_,_,L,M), + setarg(2,C,removed), + ( K==not_stored_yet -> + F=[] + ; + term_variables(term(L,M),F), + arg(4,C,G), + ( var(G) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_=/2___2',H), + H=[_|I], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_=/2___2',I), + ( I=[J|_] -> + setarg(4,J,_) + ; + true + ) + ; + G=[_,_|I], + setarg(2,G,I), + ( I=[J|_] -> + setarg(4,J,G) + ; + true + ) + ), + 'detach_known/1_1_$special_=/2___2'(F,C) + ) + ), + ( functor(B,D,E), + A=B -> + true + ; + 'known/1_1_$special_fail/0' + ). +'known/1_1_$special_=/2___2__0'(A,B,C) :- + ( 'chr newvia_2'(A,B,G) -> + get_attr(G,guard_entailment,H), + H=v(_,_,_,_,_,_,_,_,_,_,_,_,_,_,F,_,_,_,_,_,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',F) + ), + 'chr sbag_member'(D,F), + D=suspension(_,active,_,_,E), + nonvar(E), + E=(I=J), + I==A, + J==B, + !, + D=suspension(_,_,_,_,X), + setarg(2,D,removed), + term_variables(X,K), + arg(4,D,T), + ( var(T) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',U), + U=[_|V], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',V), + ( V=[W|_] -> + setarg(4,W,_) + ; + true + ) + ; + T=[_,_|V], + setarg(2,T,V), + ( V=[W|_] -> + setarg(4,W,T) + ; + true + ) + ), + 'detach_known/1_1_$special_\\+/1___1'(K,D), + ( var(C) -> + true + ; + C=suspension(_,Q,_,_,R,S), + setarg(2,C,removed), + ( Q==not_stored_yet -> + L=[] + ; + term_variables(term(R,S),L), + arg(4,C,M), + ( var(M) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_=/2___2',N), + N=[_|O], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_=/2___2',O), + ( O=[P|_] -> + setarg(4,P,_) + ; + true + ) + ; + M=[_,_|O], + setarg(2,M,O), + ( O=[P|_] -> + setarg(4,P,M) + ; + true + ) + ), + 'detach_known/1_1_$special_=/2___2'(L,C) + ) + ), + 'known/1_1_$special_fail/0'. +'known/1_1_$special_=/2___2__0'(A,B,C) :- + ( 'chr newvia_2'(A,B,E) -> + get_attr(E,guard_entailment,F), + F=v(_,_,_,D,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',D) + ), + !, + ( var(C) -> + C=suspension(G,not_stored_yet,0,_,A,B), + 'chr gen_id'(G) + ; + true + ), + 'known/1_1_$special_=/2___2__0__0__10'(D,A,B,C). +'known/1_1_$special_=/2___2__0__0__10'([],B,C,A) :- + 'known/1_1_$special_=/2___2__1'(B,C,A). +'known/1_1_$special_=/2___2__0__0__10'([F|J],A,B,C) :- + ( F=suspension(_,active,_,_,D,E), + nonvar(D), + D=(\+G), + nonvar(G), + G=(H=I), + H==A, + I==B -> + F=suspension(_,_,_,_,Y,Z), + setarg(2,F,removed), + term_variables(term(Y,Z),K), + arg(4,F,U), + ( var(U) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',V), + V=[_|W], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',W), + ( W=[X|_] -> + setarg(4,X,_) + ; + true + ) + ; + U=[_,_|W], + setarg(2,U,W), + ( W=[X|_] -> + setarg(4,X,U) + ; + true + ) + ), + 'detach_known/1_1_$special_;/2___2'(K,F), + arg(2,C,O), + setarg(2,C,active), + arg(3,C,N), + M is N+1, + setarg(3,C,M), + ( O==not_stored_yet -> + C=suspension(_,_,_,_,P,Q), + term_variables(term(P,Q),L), + 'chr none_locked'(L), + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_=/2___2',R), + S=[C|R], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_=/2___2',S), + ( R=[T|_] -> + setarg(4,T,S) + ; + true + ), + 'attach_known/1_1_$special_=/2___2'(L,C) + ; + true + ), + known(E), + ( C=suspension(_,active,M,_,_,_) -> + setarg(2,C,inactive), + 'known/1_1_$special_=/2___2__0__0__10'(J,A,B,C) + ; + true + ) + ; + 'known/1_1_$special_=/2___2__0__0__10'(J,A,B,C) + ). +'known/1_1_$special_=/2___2__0'(A,B,C) :- + ( var(C) -> + C=suspension(D,not_stored_yet,0,_,A,B), + 'chr gen_id'(D) + ; + true + ), + 'known/1_1_$special_=/2___2__1'(A,B,C). +'known/1_1_$special_=/2___2__1'(A,B,C) :- + ( 'chr newvia_2'(A,B,E) -> + get_attr(E,guard_entailment,F), + F=v(_,_,_,D,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',D) + ), + !, + 'known/1_1_$special_=/2___2__1__0__11'(D,A,B,C). +'known/1_1_$special_=/2___2__1__0__11'([],B,C,A) :- + 'known/1_1_$special_=/2___2__2'(B,C,A). +'known/1_1_$special_=/2___2__1__0__11'([F|K],A,B,C) :- + ( F=suspension(_,active,_,_,D,E), + nonvar(D), + D=(G,_), + nonvar(G), + G=(\+H), + nonvar(H), + H=(I=J), + I==A, + J==B -> + F=suspension(_,_,_,_,Z,A1), + setarg(2,F,removed), + term_variables(term(Z,A1),L), + arg(4,F,V), + ( var(V) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',W), + W=[_|X], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',X), + ( X=[Y|_] -> + setarg(4,Y,_) + ; + true + ) + ; + V=[_,_|X], + setarg(2,V,X), + ( X=[Y|_] -> + setarg(4,Y,V) + ; + true + ) + ), + 'detach_known/1_1_$special_;/2___2'(L,F), + arg(2,C,P), + setarg(2,C,active), + arg(3,C,O), + N is O+1, + setarg(3,C,N), + ( P==not_stored_yet -> + C=suspension(_,_,_,_,Q,R), + term_variables(term(Q,R),M), + 'chr none_locked'(M), + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_=/2___2',S), + T=[C|S], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_=/2___2',T), + ( S=[U|_] -> + setarg(4,U,T) + ; + true + ), + 'attach_known/1_1_$special_=/2___2'(M,C) + ; + true + ), + known(E), + ( C=suspension(_,active,N,_,_,_) -> + setarg(2,C,inactive), + 'known/1_1_$special_=/2___2__1__0__11'(K,A,B,C) + ; + true + ) + ; + 'known/1_1_$special_=/2___2__1__0__11'(K,A,B,C) + ). +'known/1_1_$special_=/2___2__1'(A,B,C) :- + 'known/1_1_$special_=/2___2__2'(A,B,C). +'known/1_1_$special_=/2___2__2'(_,_,A) :- + arg(2,A,E), + setarg(2,A,active), + arg(3,A,D), + C is D+1, + setarg(3,A,C), + ( E==not_stored_yet -> + A=suspension(_,_,_,_,F,G), + term_variables(term(F,G),B), + 'chr none_locked'(B), + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_=/2___2',H), + I=[A|H], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_=/2___2',I), + ( H=[J|_] -> + setarg(4,J,I) + ; + true + ), + 'attach_known/1_1_$special_=/2___2'(B,A) + ; + true + ). +'known/1_1_$special_,/2'(_,_) :- + nb_getval('$chr_store_global_ground_guard_entailment____known/1_1_$special_fail/0___0',B), + 'chr sbag_member'(A,B), + A=suspension(_,active,_), + !. +'known/1_1_$special_,/2'(A,B) :- + known(A), + known(B). +'known/1_1_$special_\\==/2'(A,B) :- + 'known/1_1_$special_\\==/2___2__0'(A,B,_). +'known/1_1_$special_\\==/2___2__0'(A,B,C) :- + ( 'chr newvia_2'(A,B,H) -> + get_attr(H,guard_entailment,I), + I=v(_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,G,_,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\==/2___2',G) + ), + 'chr sbag_member'(D,G), + D=suspension(_,active,_,_,_,E,F), + E==A, + F==B, + !, + ( var(C) -> + true + ; + C=suspension(_,O,_,_,_,P,Q), + setarg(2,C,removed), + ( O==not_stored_yet -> + J=[] + ; + term_variables(term(P,Q),J), + arg(5,C,K), + ( var(K) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\==/2___2',L), + L=[_|M], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\==/2___2',M), + ( M=[N|_] -> + setarg(5,N,_) + ; + true + ) + ; + K=[_,_|M], + setarg(2,K,M), + ( M=[N|_] -> + setarg(5,N,K) + ; + true + ) + ), + 'detach_known/1_1_$special_\\==/2___2'(J,C) + ) + ). +'known/1_1_$special_\\==/2___2__0'(A,B,C) :- + ( var(C) -> + C=suspension(F,not_stored_yet,t,0,_,A,B), + 'chr gen_id'(F) + ; + true + ), + ( + '$novel_production'(C,138), + number(A), + !, + '$extend_history'(C,138), + arg(2,C,H), + setarg(2,C,active), + arg(4,C,G), + E is G+1, + setarg(4,C,E), + ( H==not_stored_yet -> + C=suspension(_,_,_,_,_,I,J), + term_variables(term(I,J),D), + 'chr none_locked'(D), + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\==/2___2',K), + L=[C|K], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\==/2___2',L), + ( K=[M|_] -> + setarg(5,M,L) + ; + true + ), + 'attach_known/1_1_$special_\\==/2___2'(D,C) + ; + true + ), + 'known/1_1_$special_=\\=/2'(A,B), + ( C=suspension(_,active,_,E,_,_,_) -> + setarg(2,C,inactive), + 'known/1_1_$special_\\==/2___2__1'(A,B,C) + ; + true + ) + ; + 'known/1_1_$special_\\==/2___2__1'(A,B,C) + ). +'known/1_1_$special_\\==/2___2__1'(A,B,C) :- + '$novel_production'(C,139), + number(B), + !, + '$extend_history'(C,139), + arg(2,C,G), + setarg(2,C,active), + arg(4,C,F), + E is F+1, + setarg(4,C,E), + ( G==not_stored_yet -> + C=suspension(_,_,_,_,_,H,I), + term_variables(term(H,I),D), + 'chr none_locked'(D), + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\==/2___2',J), + K=[C|J], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\==/2___2',K), + ( J=[L|_] -> + setarg(5,L,K) + ; + true + ), + 'attach_known/1_1_$special_\\==/2___2'(D,C) + ; + true + ), + 'known/1_1_$special_=\\=/2'(A,B), + ( C=suspension(_,active,_,E,_,_,_) -> + setarg(2,C,inactive), + 'known/1_1_$special_\\==/2___2__2'(A,B,C) + ; + true + ). +'known/1_1_$special_\\==/2___2__1'(A,B,C) :- + 'known/1_1_$special_\\==/2___2__2'(A,B,C). +'known/1_1_$special_\\==/2___2__2'(_,_,A) :- + nb_getval('$chr_store_global_ground_guard_entailment____known/1_1_$special_fail/0___0',C), + 'chr sbag_member'(B,C), + B=suspension(_,active,_), + !, + ( var(A) -> + true + ; + A=suspension(_,I,_,_,_,J,K), + setarg(2,A,removed), + ( I==not_stored_yet -> + D=[] + ; + term_variables(term(J,K),D), + arg(5,A,E), + ( var(E) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\==/2___2',F), + F=[_|G], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\==/2___2',G), + ( G=[H|_] -> + setarg(5,H,_) + ; + true + ) + ; + E=[_,_|G], + setarg(2,E,G), + ( G=[H|_] -> + setarg(5,H,E) + ; + true + ) + ), + 'detach_known/1_1_$special_\\==/2___2'(D,A) + ) + ). +'known/1_1_$special_\\==/2___2__2'(A,B,C) :- + ( 'chr newvia_2'(A,B,G) -> + get_attr(G,guard_entailment,H), + H=v(_,_,_,_,_,_,_,_,_,_,_,_,_,_,F,_,_,_,_,_,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',F) + ), + 'chr sbag_member'(D,F), + D=suspension(_,active,_,_,E), + nonvar(E), + E=(I\==J), + I==A, + J==B, + !, + D=suspension(_,_,_,_,X), + setarg(2,D,removed), + term_variables(X,K), + arg(4,D,T), + ( var(T) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',U), + U=[_|V], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',V), + ( V=[W|_] -> + setarg(4,W,_) + ; + true + ) + ; + T=[_,_|V], + setarg(2,T,V), + ( V=[W|_] -> + setarg(4,W,T) + ; + true + ) + ), + 'detach_known/1_1_$special_\\+/1___1'(K,D), + ( var(C) -> + true + ; + C=suspension(_,Q,_,_,_,R,S), + setarg(2,C,removed), + ( Q==not_stored_yet -> + L=[] + ; + term_variables(term(R,S),L), + arg(5,C,M), + ( var(M) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\==/2___2',N), + N=[_|O], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\==/2___2',O), + ( O=[P|_] -> + setarg(5,P,_) + ; + true + ) + ; + M=[_,_|O], + setarg(2,M,O), + ( O=[P|_] -> + setarg(5,P,M) + ; + true + ) + ), + 'detach_known/1_1_$special_\\==/2___2'(L,C) + ) + ), + 'known/1_1_$special_fail/0'. +'known/1_1_$special_\\==/2___2__2'(A,B,C) :- + ( 'chr newvia_2'(A,B,H) -> + get_attr(H,guard_entailment,I), + I=v(_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,G,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_==/2___2',G) + ), + 'chr sbag_member'(D,G), + D=suspension(_,active,_,_,_,E,F), + E==A, + F==B, + !, + D=suspension(_,_,_,_,_,W,X), + setarg(2,D,removed), + term_variables(term(W,X),J), + arg(5,D,S), + ( var(S) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_==/2___2',T), + T=[_|U], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_==/2___2',U), + ( U=[V|_] -> + setarg(5,V,_) + ; + true + ) + ; + S=[_,_|U], + setarg(2,S,U), + ( U=[V|_] -> + setarg(5,V,S) + ; + true + ) + ), + 'detach_known/1_1_$special_==/2___2'(J,D), + ( var(C) -> + true + ; + C=suspension(_,P,_,_,_,Q,R), + setarg(2,C,removed), + ( P==not_stored_yet -> + K=[] + ; + term_variables(term(Q,R),K), + arg(5,C,L), + ( var(L) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\==/2___2',M), + M=[_|N], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\==/2___2',N), + ( N=[O|_] -> + setarg(5,O,_) + ; + true + ) + ; + L=[_,_|N], + setarg(2,L,N), + ( N=[O|_] -> + setarg(5,O,L) + ; + true + ) + ), + 'detach_known/1_1_$special_\\==/2___2'(K,C) + ) + ), + 'known/1_1_$special_fail/0'. +'known/1_1_$special_\\==/2___2__2'(A,B,C) :- + ( 'chr newvia_1'(A,E) -> + get_attr(E,guard_entailment,F), + F=v(_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,D,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_==/2___2',D) + ), + !, + 'known/1_1_$special_\\==/2___2__2__0__9'(D,A,B,C). +'known/1_1_$special_\\==/2___2__2__0__9'([],B,C,A) :- + 'known/1_1_$special_\\==/2___2__3'(B,C,A). +'known/1_1_$special_\\==/2___2__2__0__9'([F|G],B,C,A) :- + ( F=suspension(_,active,_,_,_,D,E), + E==B, + J=t(229,F,A), + '$novel_production'(F,J), + '$novel_production'(A,J) -> + '$extend_history'(A,J), + arg(2,A,L), + setarg(2,A,active), + arg(4,A,K), + I is K+1, + setarg(4,A,I), + ( L==not_stored_yet -> + A=suspension(_,_,_,_,_,M,N), + term_variables(term(M,N),H), + 'chr none_locked'(H), + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\==/2___2',O), + P=[A|O], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\==/2___2',P), + ( O=[Q|_] -> + setarg(5,Q,P) + ; + true + ), + 'attach_known/1_1_$special_\\==/2___2'(H,A) + ; + true + ), + 'known/1_1_$special_\\==/2'(D,C), + ( A=suspension(_,active,_,I,_,_,_) -> + setarg(2,A,inactive), + 'known/1_1_$special_\\==/2___2__2__0__9'(G,B,C,A) + ; + true + ) + ; + 'known/1_1_$special_\\==/2___2__2__0__9'(G,B,C,A) + ). +'known/1_1_$special_\\==/2___2__2'(A,B,C) :- + 'known/1_1_$special_\\==/2___2__3'(A,B,C). +'known/1_1_$special_\\==/2___2__3'(A,B,C) :- + '$novel_production'(C,231), + !, + '$extend_history'(C,231), + arg(2,C,G), + setarg(2,C,active), + arg(4,C,F), + E is F+1, + setarg(4,C,E), + ( G==not_stored_yet -> + C=suspension(_,_,_,_,_,H,I), + term_variables(term(H,I),D), + 'chr none_locked'(D), + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\==/2___2',J), + K=[C|J], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\==/2___2',K), + ( J=[L|_] -> + setarg(5,L,K) + ; + true + ), + 'attach_known/1_1_$special_\\==/2___2'(D,C) + ; + true + ), + 'known/1_1_$special_\\==/2'(B,A), + ( C=suspension(_,active,_,E,_,_,_) -> + setarg(2,C,inactive), + 'known/1_1_$special_\\==/2___2__4'(A,B,C) + ; + true + ). +'known/1_1_$special_\\==/2___2__3'(A,B,C) :- + 'known/1_1_$special_\\==/2___2__4'(A,B,C). +'known/1_1_$special_\\==/2___2__4'(A,B,C) :- + B==A, + '$novel_production'(C,232), + !, + '$extend_history'(C,232), + arg(2,C,G), + setarg(2,C,active), + arg(4,C,F), + E is F+1, + setarg(4,C,E), + ( G==not_stored_yet -> + C=suspension(_,_,_,_,_,H,I), + term_variables(term(H,I),D), + 'chr none_locked'(D), + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\==/2___2',J), + K=[C|J], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\==/2___2',K), + ( J=[L|_] -> + setarg(5,L,K) + ; + true + ), + 'attach_known/1_1_$special_\\==/2___2'(D,C) + ; + true + ), + 'known/1_1_$special_fail/0', + ( C=suspension(_,active,_,E,_,_,_) -> + setarg(2,C,inactive), + 'known/1_1_$special_\\==/2___2__5'(A,B,C) + ; + true + ). +'known/1_1_$special_\\==/2___2__4'(A,B,C) :- + 'known/1_1_$special_\\==/2___2__5'(A,B,C). +'known/1_1_$special_\\==/2___2__5'(A,B,C) :- + nonvar(B), + nonvar(A), + 'chr lock'(A), + functor(A,D,E), + 'chr unlock'(A), + !, + ( var(C) -> + true + ; + C=suspension(_,N,_,_,_,O,P), + setarg(2,C,removed), + ( N==not_stored_yet -> + I=[] + ; + term_variables(term(O,P),I), + arg(5,C,J), + ( var(J) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\==/2___2',K), + K=[_|L], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\==/2___2',L), + ( L=[M|_] -> + setarg(5,M,_) + ; + true + ) + ; + J=[_,_|L], + setarg(2,J,L), + ( L=[M|_] -> + setarg(5,M,J) + ; + true + ) + ), + 'detach_known/1_1_$special_\\==/2___2'(I,C) + ) + ), + ( functor(B,D,E) -> + A=..[D|F], + B=..[D|G], + add_args_nmatch(F,G,H), + known(H) + ; + true + ). +'known/1_1_$special_\\==/2___2__5'(A,B,C) :- + ( 'chr newvia_2'(A,B,E) -> + get_attr(E,guard_entailment,F), + F=v(_,_,_,D,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',D) + ), + !, + 'known/1_1_$special_\\==/2___2__5__0__13'(D,A,B,C). +'known/1_1_$special_\\==/2___2__5__0__13'([],B,C,A) :- + 'known/1_1_$special_\\==/2___2__6'(B,C,A). +'known/1_1_$special_\\==/2___2__5__0__13'([F|J],A,B,C) :- + ( F=suspension(_,active,_,_,D,E), + nonvar(D), + D=(\+G), + nonvar(G), + G=(H\==I), + H==A, + I==B -> + F=suspension(_,_,_,_,Y,Z), + setarg(2,F,removed), + term_variables(term(Y,Z),K), + arg(4,F,U), + ( var(U) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',V), + V=[_|W], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',W), + ( W=[X|_] -> + setarg(4,X,_) + ; + true + ) + ; + U=[_,_|W], + setarg(2,U,W), + ( W=[X|_] -> + setarg(4,X,U) + ; + true + ) + ), + 'detach_known/1_1_$special_;/2___2'(K,F), + arg(2,C,O), + setarg(2,C,active), + arg(4,C,N), + M is N+1, + setarg(4,C,M), + ( O==not_stored_yet -> + C=suspension(_,_,_,_,_,P,Q), + term_variables(term(P,Q),L), + 'chr none_locked'(L), + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\==/2___2',R), + S=[C|R], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\==/2___2',S), + ( R=[T|_] -> + setarg(5,T,S) + ; + true + ), + 'attach_known/1_1_$special_\\==/2___2'(L,C) + ; + true + ), + known(E), + ( C=suspension(_,active,_,M,_,_,_) -> + setarg(2,C,inactive), + 'known/1_1_$special_\\==/2___2__5__0__13'(J,A,B,C) + ; + true + ) + ; + 'known/1_1_$special_\\==/2___2__5__0__13'(J,A,B,C) + ). +'known/1_1_$special_\\==/2___2__5'(A,B,C) :- + 'known/1_1_$special_\\==/2___2__6'(A,B,C). +'known/1_1_$special_\\==/2___2__6'(A,B,C) :- + ( 'chr newvia_2'(A,B,E) -> + get_attr(E,guard_entailment,F), + F=v(_,_,_,D,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',D) + ), + !, + 'known/1_1_$special_\\==/2___2__6__0__14'(D,A,B,C). +'known/1_1_$special_\\==/2___2__6__0__14'([],B,C,A) :- + 'known/1_1_$special_\\==/2___2__7'(B,C,A). +'known/1_1_$special_\\==/2___2__6__0__14'([F|K],A,B,C) :- + ( F=suspension(_,active,_,_,D,E), + nonvar(D), + D=(G,_), + nonvar(G), + G=(\+H), + nonvar(H), + H=(I\==J), + I==A, + J==B -> + F=suspension(_,_,_,_,Z,A1), + setarg(2,F,removed), + term_variables(term(Z,A1),L), + arg(4,F,V), + ( var(V) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',W), + W=[_|X], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',X), + ( X=[Y|_] -> + setarg(4,Y,_) + ; + true + ) + ; + V=[_,_|X], + setarg(2,V,X), + ( X=[Y|_] -> + setarg(4,Y,V) + ; + true + ) + ), + 'detach_known/1_1_$special_;/2___2'(L,F), + arg(2,C,P), + setarg(2,C,active), + arg(4,C,O), + N is O+1, + setarg(4,C,N), + ( P==not_stored_yet -> + C=suspension(_,_,_,_,_,Q,R), + term_variables(term(Q,R),M), + 'chr none_locked'(M), + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\==/2___2',S), + T=[C|S], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\==/2___2',T), + ( S=[U|_] -> + setarg(5,U,T) + ; + true + ), + 'attach_known/1_1_$special_\\==/2___2'(M,C) + ; + true + ), + known(E), + ( C=suspension(_,active,_,N,_,_,_) -> + setarg(2,C,inactive), + 'known/1_1_$special_\\==/2___2__6__0__14'(K,A,B,C) + ; + true + ) + ; + 'known/1_1_$special_\\==/2___2__6__0__14'(K,A,B,C) + ). +'known/1_1_$special_\\==/2___2__6'(A,B,C) :- + 'known/1_1_$special_\\==/2___2__7'(A,B,C). +'known/1_1_$special_\\==/2___2__7'(_,_,A) :- + arg(2,A,E), + setarg(2,A,active), + arg(4,A,D), + C is D+1, + setarg(4,A,C), + ( E==not_stored_yet -> + A=suspension(_,_,_,_,_,F,G), + term_variables(term(F,G),B), + 'chr none_locked'(B), + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\==/2___2',H), + I=[A|H], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\==/2___2',I), + ( H=[J|_] -> + setarg(5,J,I) + ; + true + ), + 'attach_known/1_1_$special_\\==/2___2'(B,A) + ; + true + ). +'known/1_1_$special_==/2'(A,B) :- + 'known/1_1_$special_==/2___2__0'(A,B,_). +'known/1_1_$special_==/2___2__0'(A,B,C) :- + ( 'chr newvia_2'(A,B,H) -> + get_attr(H,guard_entailment,I), + I=v(_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,G,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_==/2___2',G) + ), + 'chr sbag_member'(D,G), + D=suspension(_,active,_,_,_,E,F), + E==A, + F==B, + !, + ( var(C) -> + true + ; + C=suspension(_,O,_,_,_,P,Q), + setarg(2,C,removed), + ( O==not_stored_yet -> + J=[] + ; + term_variables(term(P,Q),J), + arg(5,C,K), + ( var(K) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_==/2___2',L), + L=[_|M], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_==/2___2',M), + ( M=[N|_] -> + setarg(5,N,_) + ; + true + ) + ; + K=[_,_|M], + setarg(2,K,M), + ( M=[N|_] -> + setarg(5,N,K) + ; + true + ) + ), + 'detach_known/1_1_$special_==/2___2'(J,C) + ) + ). +'known/1_1_$special_==/2___2__0'(A,B,C) :- + ( var(C) -> + C=suspension(F,not_stored_yet,t,0,_,A,B), + 'chr gen_id'(F) + ; + true + ), + ( + '$novel_production'(C,136), + number(A), + !, + '$extend_history'(C,136), + arg(2,C,H), + setarg(2,C,active), + arg(4,C,G), + E is G+1, + setarg(4,C,E), + ( H==not_stored_yet -> + C=suspension(_,_,_,_,_,I,J), + term_variables(term(I,J),D), + 'chr none_locked'(D), + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_==/2___2',K), + L=[C|K], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_==/2___2',L), + ( K=[M|_] -> + setarg(5,M,L) + ; + true + ), + 'attach_known/1_1_$special_==/2___2'(D,C) + ; + true + ), + 'known/1_1_$special_=:=/2'(A,B), + ( C=suspension(_,active,_,E,_,_,_) -> + setarg(2,C,inactive), + 'known/1_1_$special_==/2___2__1'(A,B,C) + ; + true + ) + ; + 'known/1_1_$special_==/2___2__1'(A,B,C) + ). +'known/1_1_$special_==/2___2__1'(A,B,C) :- + '$novel_production'(C,137), + number(B), + !, + '$extend_history'(C,137), + arg(2,C,G), + setarg(2,C,active), + arg(4,C,F), + E is F+1, + setarg(4,C,E), + ( G==not_stored_yet -> + C=suspension(_,_,_,_,_,H,I), + term_variables(term(H,I),D), + 'chr none_locked'(D), + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_==/2___2',J), + K=[C|J], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_==/2___2',K), + ( J=[L|_] -> + setarg(5,L,K) + ; + true + ), + 'attach_known/1_1_$special_==/2___2'(D,C) + ; + true + ), + 'known/1_1_$special_=:=/2'(A,B), + ( C=suspension(_,active,_,E,_,_,_) -> + setarg(2,C,inactive), + 'known/1_1_$special_==/2___2__2'(A,B,C) + ; + true + ). +'known/1_1_$special_==/2___2__1'(A,B,C) :- + 'known/1_1_$special_==/2___2__2'(A,B,C). +'known/1_1_$special_==/2___2__2'(_,_,A) :- + nb_getval('$chr_store_global_ground_guard_entailment____known/1_1_$special_fail/0___0',C), + 'chr sbag_member'(B,C), + B=suspension(_,active,_), + !, + ( var(A) -> + true + ; + A=suspension(_,I,_,_,_,J,K), + setarg(2,A,removed), + ( I==not_stored_yet -> + D=[] + ; + term_variables(term(J,K),D), + arg(5,A,E), + ( var(E) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_==/2___2',F), + F=[_|G], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_==/2___2',G), + ( G=[H|_] -> + setarg(5,H,_) + ; + true + ) + ; + E=[_,_|G], + setarg(2,E,G), + ( G=[H|_] -> + setarg(5,H,E) + ; + true + ) + ), + 'detach_known/1_1_$special_==/2___2'(D,A) + ) + ). +'known/1_1_$special_==/2___2__2'(A,B,C) :- + B==A, + !, + ( var(C) -> + true + ; + C=suspension(_,I,_,_,_,J,K), + setarg(2,C,removed), + ( I==not_stored_yet -> + D=[] + ; + term_variables(term(J,K),D), + arg(5,C,E), + ( var(E) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_==/2___2',F), + F=[_|G], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_==/2___2',G), + ( G=[H|_] -> + setarg(5,H,_) + ; + true + ) + ; + E=[_,_|G], + setarg(2,E,G), + ( G=[H|_] -> + setarg(5,H,E) + ; + true + ) + ), + 'detach_known/1_1_$special_==/2___2'(D,C) + ) + ). +'known/1_1_$special_==/2___2__2'(A,B,C) :- + ( 'chr newvia_2'(A,B,G) -> + get_attr(G,guard_entailment,H), + H=v(_,_,_,_,_,_,_,_,_,_,_,_,_,_,F,_,_,_,_,_,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',F) + ), + 'chr sbag_member'(D,F), + D=suspension(_,active,_,_,E), + nonvar(E), + E=(I==J), + I==A, + J==B, + !, + D=suspension(_,_,_,_,X), + setarg(2,D,removed), + term_variables(X,K), + arg(4,D,T), + ( var(T) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',U), + U=[_|V], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',V), + ( V=[W|_] -> + setarg(4,W,_) + ; + true + ) + ; + T=[_,_|V], + setarg(2,T,V), + ( V=[W|_] -> + setarg(4,W,T) + ; + true + ) + ), + 'detach_known/1_1_$special_\\+/1___1'(K,D), + ( var(C) -> + true + ; + C=suspension(_,Q,_,_,_,R,S), + setarg(2,C,removed), + ( Q==not_stored_yet -> + L=[] + ; + term_variables(term(R,S),L), + arg(5,C,M), + ( var(M) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_==/2___2',N), + N=[_|O], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_==/2___2',O), + ( O=[P|_] -> + setarg(5,P,_) + ; + true + ) + ; + M=[_,_|O], + setarg(2,M,O), + ( O=[P|_] -> + setarg(5,P,M) + ; + true + ) + ), + 'detach_known/1_1_$special_==/2___2'(L,C) + ) + ), + 'known/1_1_$special_fail/0'. +'known/1_1_$special_==/2___2__2'(A,B,C) :- + ( 'chr newvia_2'(A,B,H) -> + get_attr(H,guard_entailment,I), + I=v(_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,G,_,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\==/2___2',G) + ), + 'chr sbag_member'(D,G), + D=suspension(_,active,_,_,_,E,F), + E==A, + F==B, + !, + D=suspension(_,_,_,_,_,W,X), + setarg(2,D,removed), + term_variables(term(W,X),J), + arg(5,D,S), + ( var(S) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\==/2___2',T), + T=[_|U], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\==/2___2',U), + ( U=[V|_] -> + setarg(5,V,_) + ; + true + ) + ; + S=[_,_|U], + setarg(2,S,U), + ( U=[V|_] -> + setarg(5,V,S) + ; + true + ) + ), + 'detach_known/1_1_$special_\\==/2___2'(J,D), + ( var(C) -> + true + ; + C=suspension(_,P,_,_,_,Q,R), + setarg(2,C,removed), + ( P==not_stored_yet -> + K=[] + ; + term_variables(term(Q,R),K), + arg(5,C,L), + ( var(L) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_==/2___2',M), + M=[_|N], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_==/2___2',N), + ( N=[O|_] -> + setarg(5,O,_) + ; + true + ) + ; + L=[_,_|N], + setarg(2,L,N), + ( N=[O|_] -> + setarg(5,O,L) + ; + true + ) + ), + 'detach_known/1_1_$special_==/2___2'(K,C) + ) + ), + 'known/1_1_$special_fail/0'. +'known/1_1_$special_==/2___2__2'(A,B,C) :- + ( 'chr newvia_1'(B,E) -> + get_attr(E,guard_entailment,F), + F=v(_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,D,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_==/2___2',D) + ), + !, + 'known/1_1_$special_==/2___2__2__0__10'(D,A,B,C). +'known/1_1_$special_==/2___2__2__0__10'([],B,C,A) :- + 'known/1_1_$special_==/2___2__3'(B,C,A). +'known/1_1_$special_==/2___2__2__0__10'([F|G],B,C,A) :- + ( F=suspension(_,active,_,_,_,D,E), + D==C, + J=t(228,A,F), + '$novel_production'(A,J), + '$novel_production'(F,J) -> + '$extend_history'(A,J), + arg(2,A,L), + setarg(2,A,active), + arg(4,A,K), + I is K+1, + setarg(4,A,I), + ( L==not_stored_yet -> + A=suspension(_,_,_,_,_,M,N), + term_variables(term(M,N),H), + 'chr none_locked'(H), + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_==/2___2',O), + P=[A|O], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_==/2___2',P), + ( O=[Q|_] -> + setarg(5,Q,P) + ; + true + ), + 'attach_known/1_1_$special_==/2___2'(H,A) + ; + true + ), + 'known/1_1_$special_==/2'(B,E), + ( A=suspension(_,active,_,I,_,_,_) -> + setarg(2,A,inactive), + 'known/1_1_$special_==/2___2__2__0__10'(G,B,C,A) + ; + true + ) + ; + 'known/1_1_$special_==/2___2__2__0__10'(G,B,C,A) + ). +'known/1_1_$special_==/2___2__2'(A,B,C) :- + 'known/1_1_$special_==/2___2__3'(A,B,C). +'known/1_1_$special_==/2___2__3'(A,B,C) :- + ( 'chr newvia_1'(A,E) -> + get_attr(E,guard_entailment,F), + F=v(_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,D,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_==/2___2',D) + ), + !, + 'known/1_1_$special_==/2___2__3__0__11'(D,A,B,C). +'known/1_1_$special_==/2___2__3__0__11'([],B,C,A) :- + 'known/1_1_$special_==/2___2__4'(B,C,A). +'known/1_1_$special_==/2___2__3__0__11'([F|G],B,C,A) :- + ( F=suspension(_,active,_,_,_,D,E), + E==B, + J=t(228,F,A), + '$novel_production'(F,J), + '$novel_production'(A,J) -> + '$extend_history'(A,J), + arg(2,A,L), + setarg(2,A,active), + arg(4,A,K), + I is K+1, + setarg(4,A,I), + ( L==not_stored_yet -> + A=suspension(_,_,_,_,_,M,N), + term_variables(term(M,N),H), + 'chr none_locked'(H), + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_==/2___2',O), + P=[A|O], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_==/2___2',P), + ( O=[Q|_] -> + setarg(5,Q,P) + ; + true + ), + 'attach_known/1_1_$special_==/2___2'(H,A) + ; + true + ), + 'known/1_1_$special_==/2'(D,C), + ( A=suspension(_,active,_,I,_,_,_) -> + setarg(2,A,inactive), + 'known/1_1_$special_==/2___2__3__0__11'(G,B,C,A) + ; + true + ) + ; + 'known/1_1_$special_==/2___2__3__0__11'(G,B,C,A) + ). +'known/1_1_$special_==/2___2__3'(A,B,C) :- + 'known/1_1_$special_==/2___2__4'(A,B,C). +'known/1_1_$special_==/2___2__4'(A,B,C) :- + ( 'chr newvia_1'(B,E) -> + get_attr(E,guard_entailment,F), + F=v(_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,D,_,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\==/2___2',D) + ), + !, + 'known/1_1_$special_==/2___2__4__0__12'(D,A,B,C). +'known/1_1_$special_==/2___2__4__0__12'([],B,C,A) :- + 'known/1_1_$special_==/2___2__5'(B,C,A). +'known/1_1_$special_==/2___2__4__0__12'([F|G],B,C,A) :- + ( F=suspension(_,active,_,_,_,D,E), + D==C, + J=t(229,A,F), + '$novel_production'(A,J), + '$novel_production'(F,J) -> + '$extend_history'(A,J), + arg(2,A,L), + setarg(2,A,active), + arg(4,A,K), + I is K+1, + setarg(4,A,I), + ( L==not_stored_yet -> + A=suspension(_,_,_,_,_,M,N), + term_variables(term(M,N),H), + 'chr none_locked'(H), + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_==/2___2',O), + P=[A|O], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_==/2___2',P), + ( O=[Q|_] -> + setarg(5,Q,P) + ; + true + ), + 'attach_known/1_1_$special_==/2___2'(H,A) + ; + true + ), + 'known/1_1_$special_\\==/2'(B,E), + ( A=suspension(_,active,_,I,_,_,_) -> + setarg(2,A,inactive), + 'known/1_1_$special_==/2___2__4__0__12'(G,B,C,A) + ; + true + ) + ; + 'known/1_1_$special_==/2___2__4__0__12'(G,B,C,A) + ). +'known/1_1_$special_==/2___2__4'(A,B,C) :- + 'known/1_1_$special_==/2___2__5'(A,B,C). +'known/1_1_$special_==/2___2__5'(A,B,C) :- + '$novel_production'(C,230), + !, + '$extend_history'(C,230), + arg(2,C,G), + setarg(2,C,active), + arg(4,C,F), + E is F+1, + setarg(4,C,E), + ( G==not_stored_yet -> + C=suspension(_,_,_,_,_,H,I), + term_variables(term(H,I),D), + 'chr none_locked'(D), + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_==/2___2',J), + K=[C|J], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_==/2___2',K), + ( J=[L|_] -> + setarg(5,L,K) + ; + true + ), + 'attach_known/1_1_$special_==/2___2'(D,C) + ; + true + ), + 'known/1_1_$special_==/2'(B,A), + ( C=suspension(_,active,_,E,_,_,_) -> + setarg(2,C,inactive), + 'known/1_1_$special_==/2___2__6'(A,B,C) + ; + true + ). +'known/1_1_$special_==/2___2__5'(A,B,C) :- + 'known/1_1_$special_==/2___2__6'(A,B,C). +'known/1_1_$special_==/2___2__6'(A,B,C) :- + '$novel_production'(C,234), + !, + '$extend_history'(C,234), + arg(2,C,G), + setarg(2,C,active), + arg(4,C,F), + E is F+1, + setarg(4,C,E), + ( G==not_stored_yet -> + C=suspension(_,_,_,_,_,H,I), + term_variables(term(H,I),D), + 'chr none_locked'(D), + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_==/2___2',J), + K=[C|J], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_==/2___2',K), + ( J=[L|_] -> + setarg(5,L,K) + ; + true + ), + 'attach_known/1_1_$special_==/2___2'(D,C) + ; + true + ), + 'known/1_1_$special_=/2'(A,B), + ( C=suspension(_,active,_,E,_,_,_) -> + setarg(2,C,inactive), + 'known/1_1_$special_==/2___2__7'(A,B,C) + ; + true + ). +'known/1_1_$special_==/2___2__6'(A,B,C) :- + 'known/1_1_$special_==/2___2__7'(A,B,C). +'known/1_1_$special_==/2___2__7'(A,B,C) :- + ( 'chr newvia_2'(A,B,E) -> + get_attr(E,guard_entailment,F), + F=v(_,_,_,D,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',D) + ), + !, + 'known/1_1_$special_==/2___2__7__0__15'(D,A,B,C). +'known/1_1_$special_==/2___2__7__0__15'([],B,C,A) :- + 'known/1_1_$special_==/2___2__8'(B,C,A). +'known/1_1_$special_==/2___2__7__0__15'([F|J],A,B,C) :- + ( F=suspension(_,active,_,_,D,E), + nonvar(D), + D=(\+G), + nonvar(G), + G=(H==I), + H==A, + I==B -> + F=suspension(_,_,_,_,Y,Z), + setarg(2,F,removed), + term_variables(term(Y,Z),K), + arg(4,F,U), + ( var(U) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',V), + V=[_|W], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',W), + ( W=[X|_] -> + setarg(4,X,_) + ; + true + ) + ; + U=[_,_|W], + setarg(2,U,W), + ( W=[X|_] -> + setarg(4,X,U) + ; + true + ) + ), + 'detach_known/1_1_$special_;/2___2'(K,F), + arg(2,C,O), + setarg(2,C,active), + arg(4,C,N), + M is N+1, + setarg(4,C,M), + ( O==not_stored_yet -> + C=suspension(_,_,_,_,_,P,Q), + term_variables(term(P,Q),L), + 'chr none_locked'(L), + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_==/2___2',R), + S=[C|R], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_==/2___2',S), + ( R=[T|_] -> + setarg(5,T,S) + ; + true + ), + 'attach_known/1_1_$special_==/2___2'(L,C) + ; + true + ), + known(E), + ( C=suspension(_,active,_,M,_,_,_) -> + setarg(2,C,inactive), + 'known/1_1_$special_==/2___2__7__0__15'(J,A,B,C) + ; + true + ) + ; + 'known/1_1_$special_==/2___2__7__0__15'(J,A,B,C) + ). +'known/1_1_$special_==/2___2__7'(A,B,C) :- + 'known/1_1_$special_==/2___2__8'(A,B,C). +'known/1_1_$special_==/2___2__8'(A,B,C) :- + ( 'chr newvia_2'(A,B,E) -> + get_attr(E,guard_entailment,F), + F=v(_,_,_,D,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',D) + ), + !, + 'known/1_1_$special_==/2___2__8__0__16'(D,A,B,C). +'known/1_1_$special_==/2___2__8__0__16'([],B,C,A) :- + 'known/1_1_$special_==/2___2__9'(B,C,A). +'known/1_1_$special_==/2___2__8__0__16'([F|K],A,B,C) :- + ( F=suspension(_,active,_,_,D,E), + nonvar(D), + D=(G,_), + nonvar(G), + G=(\+H), + nonvar(H), + H=(I==J), + I==A, + J==B -> + F=suspension(_,_,_,_,Z,A1), + setarg(2,F,removed), + term_variables(term(Z,A1),L), + arg(4,F,V), + ( var(V) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',W), + W=[_|X], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',X), + ( X=[Y|_] -> + setarg(4,Y,_) + ; + true + ) + ; + V=[_,_|X], + setarg(2,V,X), + ( X=[Y|_] -> + setarg(4,Y,V) + ; + true + ) + ), + 'detach_known/1_1_$special_;/2___2'(L,F), + arg(2,C,P), + setarg(2,C,active), + arg(4,C,O), + N is O+1, + setarg(4,C,N), + ( P==not_stored_yet -> + C=suspension(_,_,_,_,_,Q,R), + term_variables(term(Q,R),M), + 'chr none_locked'(M), + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_==/2___2',S), + T=[C|S], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_==/2___2',T), + ( S=[U|_] -> + setarg(5,U,T) + ; + true + ), + 'attach_known/1_1_$special_==/2___2'(M,C) + ; + true + ), + known(E), + ( C=suspension(_,active,_,N,_,_,_) -> + setarg(2,C,inactive), + 'known/1_1_$special_==/2___2__8__0__16'(K,A,B,C) + ; + true + ) + ; + 'known/1_1_$special_==/2___2__8__0__16'(K,A,B,C) + ). +'known/1_1_$special_==/2___2__8'(A,B,C) :- + 'known/1_1_$special_==/2___2__9'(A,B,C). +'known/1_1_$special_==/2___2__9'(_,_,A) :- + arg(2,A,E), + setarg(2,A,active), + arg(4,A,D), + C is D+1, + setarg(4,A,C), + ( E==not_stored_yet -> + A=suspension(_,_,_,_,_,F,G), + term_variables(term(F,G),B), + 'chr none_locked'(B), + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_==/2___2',H), + I=[A|H], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_==/2___2',I), + ( H=[J|_] -> + setarg(5,J,I) + ; + true + ), + 'attach_known/1_1_$special_==/2___2'(B,A) + ; + true + ). +'known/1_1_$special_is/2'(A,B) :- + 'known/1_1_$special_=:=/2'(A,B). +'known/1_1_$special_=/2'(A,B) :- + 'known/1_1_$special_=/2'(A,B) :- + 'known/1_1_$special_ + get_attr(H,guard_entailment,I), + I=v(_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,G,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_= + true + ; + C=suspension(_,O,_,_,_,P,Q), + setarg(2,C,removed), + ( O==not_stored_yet -> + J=[] + ; + term_variables(term(P,Q),J), + arg(5,C,K), + ( var(K) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_= + setarg(5,N,_) + ; + true + ) + ; + K=[_,_|M], + setarg(2,K,M), + ( M=[N|_] -> + setarg(5,N,K) + ; + true + ) + ), + 'detach_known/1_1_$special_= + true + ; + A=suspension(_,I,_,_,_,J,K), + setarg(2,A,removed), + ( I==not_stored_yet -> + D=[] + ; + term_variables(term(J,K),D), + arg(5,A,E), + ( var(E) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_= + setarg(5,H,_) + ; + true + ) + ; + E=[_,_|G], + setarg(2,E,G), + ( G=[H|_] -> + setarg(5,H,E) + ; + true + ) + ), + 'detach_known/1_1_$special_= + true + ; + C=suspension(_,I,_,_,_,J,K), + setarg(2,C,removed), + ( I==not_stored_yet -> + D=[] + ; + term_variables(term(J,K),D), + arg(5,C,E), + ( var(E) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_= + setarg(5,H,_) + ; + true + ) + ; + E=[_,_|G], + setarg(2,E,G), + ( G=[H|_] -> + setarg(5,H,E) + ; + true + ) + ), + 'detach_known/1_1_$special_=B, + !, + ( var(C) -> + true + ; + C=suspension(_,W,_,_,_,X,Y), + setarg(2,C,removed), + ( W==not_stored_yet -> + D=[] + ; + term_variables(term(X,Y),D), + arg(5,C,S), + ( var(S) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_= + setarg(5,V,_) + ; + true + ) + ; + S=[_,_|U], + setarg(2,S,U), + ( U=[V|_] -> + setarg(5,V,S) + ; + true + ) + ), + 'detach_known/1_1_$special_= + get_attr(I,guard_entailment,J), + J=v(_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,H,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_= + true + ; + C=suspension(_,P,_,_,_,Q,R), + setarg(2,C,removed), + ( P==not_stored_yet -> + K=[] + ; + term_variables(term(Q,R),K), + arg(5,C,L), + ( var(L) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_= + setarg(5,O,_) + ; + true + ) + ; + L=[_,_|N], + setarg(2,L,N), + ( N=[O|_] -> + setarg(5,O,L) + ; + true + ) + ), + 'detach_known/1_1_$special_= + get_attr(E,guard_entailment,F), + F=v(_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,D,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_= + F=suspension(_,_,_,_,_,M,N), + setarg(2,F,removed), + term_variables(term(M,N),H), + arg(5,F,I), + ( var(I) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_= + setarg(5,L,_) + ; + true + ) + ; + I=[_,_|K], + setarg(2,I,K), + ( K=[L|_] -> + setarg(5,L,I) + ; + true + ) + ), + 'detach_known/1_1_$special_= + get_attr(H,guard_entailment,I), + I=v(_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,G,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_= + true + ; + C=suspension(_,O,_,_,_,P,Q), + setarg(2,C,removed), + ( O==not_stored_yet -> + J=[] + ; + term_variables(term(P,Q),J), + arg(5,C,K), + ( var(K) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_= + setarg(5,N,_) + ; + true + ) + ; + K=[_,_|M], + setarg(2,K,M), + ( M=[N|_] -> + setarg(5,N,K) + ; + true + ) + ), + 'detach_known/1_1_$special_= + get_attr(E,guard_entailment,F), + F=v(_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,D,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_= + F=suspension(_,_,_,_,_,M,N), + setarg(2,F,removed), + term_variables(term(M,N),H), + arg(5,F,I), + ( var(I) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_= + setarg(5,L,_) + ; + true + ) + ; + I=[_,_|K], + setarg(2,I,K), + ( K=[L|_] -> + setarg(5,L,I) + ; + true + ) + ), + 'detach_known/1_1_$special_= + get_attr(H,guard_entailment,I), + I=v(_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,G,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_= + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_= + setarg(5,V,_) + ; + true + ) + ; + S=[_,_|U], + setarg(2,S,U), + ( U=[V|_] -> + setarg(5,V,S) + ; + true + ) + ), + 'detach_known/1_1_$special_= + true + ; + C=suspension(_,P,_,_,_,Q,R), + setarg(2,C,removed), + ( P==not_stored_yet -> + K=[] + ; + term_variables(term(Q,R),K), + arg(5,C,L), + ( var(L) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_= + setarg(5,O,_) + ; + true + ) + ; + L=[_,_|N], + setarg(2,L,N), + ( N=[O|_] -> + setarg(5,O,L) + ; + true + ) + ), + 'detach_known/1_1_$special_= + get_attr(E,guard_entailment,F), + F=v(_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,D,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_= + C=suspension(G,not_stored_yet,t,0,_,A,B), + 'chr gen_id'(G) + ; + true + ), + 'known/1_1_$special_= + '$extend_history'(A,J), + arg(2,A,L), + setarg(2,A,active), + arg(4,A,K), + I is K+1, + setarg(4,A,I), + ( L==not_stored_yet -> + A=suspension(_,_,_,_,_,M,N), + term_variables(term(M,N),H), + 'chr none_locked'(H), + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_= + setarg(5,Q,P) + ; + true + ), + 'attach_known/1_1_$special_= + setarg(2,A,inactive), + 'known/1_1_$special_= + C=suspension(D,not_stored_yet,t,0,_,A,B), + 'chr gen_id'(D) + ; + true + ), + 'known/1_1_$special_= + get_attr(E,guard_entailment,F), + F=v(_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,D,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_= + '$extend_history'(A,J), + arg(2,A,L), + setarg(2,A,active), + arg(4,A,K), + I is K+1, + setarg(4,A,I), + ( L==not_stored_yet -> + A=suspension(_,_,_,_,_,M,N), + term_variables(term(M,N),H), + 'chr none_locked'(H), + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_= + setarg(5,Q,P) + ; + true + ), + 'attach_known/1_1_$special_= + setarg(2,A,inactive), + 'known/1_1_$special_= + get_attr(E,guard_entailment,F), + F=v(_,_,_,_,_,_,_,_,_,_,_,_,_,D,_,_,_,_,_,_,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_=\\=/2___2',D) + ), + !, + 'known/1_1_$special_= + get_attr(H,guard_entailment,I), + I=v(_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,G,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_= + 'known/1_1_$special_= + get_attr(K,guard_entailment,L), + L=v(_,_,_,_,_,_,_,_,_,_,_,_,_,J,_,_,_,_,_,_,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_=\\=/2___2',J) + ) -> + 'known/1_1_$special_= + '$extend_history'(E,O), + arg(2,E,Q), + setarg(2,E,active), + arg(4,E,P), + N is P+1, + setarg(4,E,N), + ( Q==not_stored_yet -> + E=suspension(_,_,_,_,_,R,S), + term_variables(term(R,S),M), + 'chr none_locked'(M), + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_= + setarg(5,V,U) + ; + true + ), + 'attach_known/1_1_$special_= + setarg(2,E,inactive), + 'known/1_1_$special_= + get_attr(E,guard_entailment,F), + F=v(_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,D,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_= + get_attr(H,guard_entailment,I), + I=v(_,_,_,_,_,_,_,_,_,_,_,_,_,G,_,_,_,_,_,_,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_=\\=/2___2',G) + ) -> + 'known/1_1_$special_= + get_attr(K,guard_entailment,L), + L=v(_,_,_,_,_,_,_,_,_,_,_,_,_,J,_,_,_,_,_,_,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_=\\=/2___2',J) + ) -> + 'known/1_1_$special_= + '$extend_history'(E,O), + arg(2,E,Q), + setarg(2,E,active), + arg(4,E,P), + N is P+1, + setarg(4,E,N), + ( Q==not_stored_yet -> + E=suspension(_,_,_,_,_,R,S), + term_variables(term(R,S),M), + 'chr none_locked'(M), + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_= + setarg(5,V,U) + ; + true + ), + 'attach_known/1_1_$special_= + setarg(2,E,inactive), + 'known/1_1_$special_= + get_attr(G,guard_entailment,H), + H=v(_,_,_,_,_,_,_,_,_,_,_,_,_,_,F,_,_,_,_,_,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',F) + ), + 'chr sbag_member'(D,F), + D=suspension(_,active,_,_,E), + nonvar(E), + E=(I= + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',U), + U=[_|V], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',V), + ( V=[W|_] -> + setarg(4,W,_) + ; + true + ) + ; + T=[_,_|V], + setarg(2,T,V), + ( V=[W|_] -> + setarg(4,W,T) + ; + true + ) + ), + 'detach_known/1_1_$special_\\+/1___1'(K,D), + ( var(C) -> + true + ; + C=suspension(_,Q,_,_,_,R,S), + setarg(2,C,removed), + ( Q==not_stored_yet -> + L=[] + ; + term_variables(term(R,S),L), + arg(5,C,M), + ( var(M) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_= + setarg(5,P,_) + ; + true + ) + ; + M=[_,_|O], + setarg(2,M,O), + ( O=[P|_] -> + setarg(5,P,M) + ; + true + ) + ), + 'detach_known/1_1_$special_= + get_attr(E,guard_entailment,F), + F=v(_,_,_,D,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',D) + ), + !, + 'known/1_1_$special_= + F=suspension(_,_,_,_,Y,Z), + setarg(2,F,removed), + term_variables(term(Y,Z),K), + arg(4,F,U), + ( var(U) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',V), + V=[_|W], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',W), + ( W=[X|_] -> + setarg(4,X,_) + ; + true + ) + ; + U=[_,_|W], + setarg(2,U,W), + ( W=[X|_] -> + setarg(4,X,U) + ; + true + ) + ), + 'detach_known/1_1_$special_;/2___2'(K,F), + arg(2,C,O), + setarg(2,C,active), + arg(4,C,N), + M is N+1, + setarg(4,C,M), + ( O==not_stored_yet -> + C=suspension(_,_,_,_,_,P,Q), + term_variables(term(P,Q),L), + 'chr none_locked'(L), + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_= + setarg(5,T,S) + ; + true + ), + 'attach_known/1_1_$special_= + setarg(2,C,inactive), + 'known/1_1_$special_= + get_attr(E,guard_entailment,F), + F=v(_,_,_,D,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',D) + ), + !, + 'known/1_1_$special_= + F=suspension(_,_,_,_,Z,A1), + setarg(2,F,removed), + term_variables(term(Z,A1),L), + arg(4,F,V), + ( var(V) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',W), + W=[_|X], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',X), + ( X=[Y|_] -> + setarg(4,Y,_) + ; + true + ) + ; + V=[_,_|X], + setarg(2,V,X), + ( X=[Y|_] -> + setarg(4,Y,V) + ; + true + ) + ), + 'detach_known/1_1_$special_;/2___2'(L,F), + arg(2,C,P), + setarg(2,C,active), + arg(4,C,O), + N is O+1, + setarg(4,C,N), + ( P==not_stored_yet -> + C=suspension(_,_,_,_,_,Q,R), + term_variables(term(Q,R),M), + 'chr none_locked'(M), + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_= + setarg(5,U,T) + ; + true + ), + 'attach_known/1_1_$special_= + setarg(2,C,inactive), + 'known/1_1_$special_= + A=suspension(_,_,_,_,_,F,G), + term_variables(term(F,G),B), + 'chr none_locked'(B), + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_= + setarg(5,J,I) + ; + true + ), + 'attach_known/1_1_$special_= + get_attr(H,guard_entailment,I), + I=v(_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,G) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_=:=/2___2',G) + ), + 'chr sbag_member'(D,G), + D=suspension(_,active,_,_,_,E,F), + E==A, + F==B, + !, + ( var(C) -> + true + ; + C=suspension(_,O,_,_,_,P,Q), + setarg(2,C,removed), + ( O==not_stored_yet -> + J=[] + ; + term_variables(term(P,Q),J), + arg(5,C,K), + ( var(K) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_=:=/2___2',L), + L=[_|M], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_=:=/2___2',M), + ( M=[N|_] -> + setarg(5,N,_) + ; + true + ) + ; + K=[_,_|M], + setarg(2,K,M), + ( M=[N|_] -> + setarg(5,N,K) + ; + true + ) + ), + 'detach_known/1_1_$special_=:=/2___2'(J,C) + ) + ). +'known/1_1_$special_=:=/2___2__0'(_,_,A) :- + nb_getval('$chr_store_global_ground_guard_entailment____known/1_1_$special_fail/0___0',C), + 'chr sbag_member'(B,C), + B=suspension(_,active,_), + !, + ( var(A) -> + true + ; + A=suspension(_,I,_,_,_,J,K), + setarg(2,A,removed), + ( I==not_stored_yet -> + D=[] + ; + term_variables(term(J,K),D), + arg(5,A,E), + ( var(E) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_=:=/2___2',F), + F=[_|G], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_=:=/2___2',G), + ( G=[H|_] -> + setarg(5,H,_) + ; + true + ) + ; + E=[_,_|G], + setarg(2,E,G), + ( G=[H|_] -> + setarg(5,H,E) + ; + true + ) + ), + 'detach_known/1_1_$special_=:=/2___2'(D,A) + ) + ). +'known/1_1_$special_=:=/2___2__0'(A,B,C) :- + B==A, + !, + ( var(C) -> + true + ; + C=suspension(_,I,_,_,_,J,K), + setarg(2,C,removed), + ( I==not_stored_yet -> + D=[] + ; + term_variables(term(J,K),D), + arg(5,C,E), + ( var(E) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_=:=/2___2',F), + F=[_|G], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_=:=/2___2',G), + ( G=[H|_] -> + setarg(5,H,_) + ; + true + ) + ; + E=[_,_|G], + setarg(2,E,G), + ( G=[H|_] -> + setarg(5,H,E) + ; + true + ) + ), + 'detach_known/1_1_$special_=:=/2___2'(D,C) + ) + ). +'known/1_1_$special_=:=/2___2__0'(A,B,C) :- + number(B), + number(A), + A=\=B, + !, + ( var(C) -> + true + ; + C=suspension(_,I,_,_,_,J,K), + setarg(2,C,removed), + ( I==not_stored_yet -> + D=[] + ; + term_variables(term(J,K),D), + arg(5,C,E), + ( var(E) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_=:=/2___2',F), + F=[_|G], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_=:=/2___2',G), + ( G=[H|_] -> + setarg(5,H,_) + ; + true + ) + ; + E=[_,_|G], + setarg(2,E,G), + ( G=[H|_] -> + setarg(5,H,E) + ; + true + ) + ), + 'detach_known/1_1_$special_=:=/2___2'(D,C) + ) + ), + 'known/1_1_$special_fail/0'. +'known/1_1_$special_=:=/2___2__0'(A,B,C) :- + ( 'chr newvia_2'(A,B,H) -> + get_attr(H,guard_entailment,I), + I=v(_,_,_,_,_,_,_,_,_,_,_,_,_,G,_,_,_,_,_,_,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_=\\=/2___2',G) + ), + 'chr sbag_member'(D,G), + D=suspension(_,active,_,_,_,E,F), + E==A, + F==B, + !, + D=suspension(_,_,_,_,_,W,X), + setarg(2,D,removed), + term_variables(term(W,X),J), + arg(5,D,S), + ( var(S) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_=\\=/2___2',T), + T=[_|U], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_=\\=/2___2',U), + ( U=[V|_] -> + setarg(5,V,_) + ; + true + ) + ; + S=[_,_|U], + setarg(2,S,U), + ( U=[V|_] -> + setarg(5,V,S) + ; + true + ) + ), + 'detach_known/1_1_$special_=\\=/2___2'(J,D), + ( var(C) -> + true + ; + C=suspension(_,P,_,_,_,Q,R), + setarg(2,C,removed), + ( P==not_stored_yet -> + K=[] + ; + term_variables(term(Q,R),K), + arg(5,C,L), + ( var(L) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_=:=/2___2',M), + M=[_|N], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_=:=/2___2',N), + ( N=[O|_] -> + setarg(5,O,_) + ; + true + ) + ; + L=[_,_|N], + setarg(2,L,N), + ( N=[O|_] -> + setarg(5,O,L) + ; + true + ) + ), + 'detach_known/1_1_$special_=:=/2___2'(K,C) + ) + ), + 'known/1_1_$special_fail/0'. +'known/1_1_$special_=:=/2___2__0'(A,B,C) :- + ( 'chr newvia_1'(B,E) -> + get_attr(E,guard_entailment,F), + F=v(_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,D) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_=:=/2___2',D) + ), + !, + ( var(C) -> + C=suspension(G,not_stored_yet,t,0,_,A,B), + 'chr gen_id'(G) + ; + true + ), + 'known/1_1_$special_=:=/2___2__0__0__11'(D,A,B,C). +'known/1_1_$special_=:=/2___2__0__0__11'([],B,C,A) :- + 'known/1_1_$special_=:=/2___2__1'(B,C,A). +'known/1_1_$special_=:=/2___2__0__0__11'([F|G],B,C,A) :- + ( F=suspension(_,active,_,_,_,D,E), + D==C, + J=t(193,A,F), + '$novel_production'(A,J), + '$novel_production'(F,J), + B\==E -> + '$extend_history'(A,J), + arg(2,A,L), + setarg(2,A,active), + arg(4,A,K), + I is K+1, + setarg(4,A,I), + ( L==not_stored_yet -> + A=suspension(_,_,_,_,_,M,N), + term_variables(term(M,N),H), + 'chr none_locked'(H), + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_=:=/2___2',O), + P=[A|O], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_=:=/2___2',P), + ( O=[Q|_] -> + setarg(5,Q,P) + ; + true + ), + 'attach_known/1_1_$special_=:=/2___2'(H,A) + ; + true + ), + 'known/1_1_$special_=:=/2'(B,E), + ( A=suspension(_,active,_,I,_,_,_) -> + setarg(2,A,inactive), + 'known/1_1_$special_=:=/2___2__0__0__11'(G,B,C,A) + ; + true + ) + ; + 'known/1_1_$special_=:=/2___2__0__0__11'(G,B,C,A) + ). +'known/1_1_$special_=:=/2___2__0'(A,B,C) :- + ( var(C) -> + C=suspension(D,not_stored_yet,t,0,_,A,B), + 'chr gen_id'(D) + ; + true + ), + 'known/1_1_$special_=:=/2___2__1'(A,B,C). +'known/1_1_$special_=:=/2___2__1'(A,B,C) :- + ( 'chr newvia_1'(A,E) -> + get_attr(E,guard_entailment,F), + F=v(_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,D) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_=:=/2___2',D) + ), + !, + 'known/1_1_$special_=:=/2___2__1__0__12'(D,A,B,C). +'known/1_1_$special_=:=/2___2__1__0__12'([],B,C,A) :- + 'known/1_1_$special_=:=/2___2__2'(B,C,A). +'known/1_1_$special_=:=/2___2__1__0__12'([F|G],B,C,A) :- + ( F=suspension(_,active,_,_,_,D,E), + E==B, + J=t(193,F,A), + '$novel_production'(F,J), + '$novel_production'(A,J), + D\==C -> + '$extend_history'(A,J), + arg(2,A,L), + setarg(2,A,active), + arg(4,A,K), + I is K+1, + setarg(4,A,I), + ( L==not_stored_yet -> + A=suspension(_,_,_,_,_,M,N), + term_variables(term(M,N),H), + 'chr none_locked'(H), + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_=:=/2___2',O), + P=[A|O], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_=:=/2___2',P), + ( O=[Q|_] -> + setarg(5,Q,P) + ; + true + ), + 'attach_known/1_1_$special_=:=/2___2'(H,A) + ; + true + ), + 'known/1_1_$special_=:=/2'(D,C), + ( A=suspension(_,active,_,I,_,_,_) -> + setarg(2,A,inactive), + 'known/1_1_$special_=:=/2___2__1__0__12'(G,B,C,A) + ; + true + ) + ; + 'known/1_1_$special_=:=/2___2__1__0__12'(G,B,C,A) + ). +'known/1_1_$special_=:=/2___2__1'(A,B,C) :- + 'known/1_1_$special_=:=/2___2__2'(A,B,C). +'known/1_1_$special_=:=/2___2__2'(A,B,C) :- + '$novel_production'(C,194), + !, + '$extend_history'(C,194), + arg(2,C,G), + setarg(2,C,active), + arg(4,C,F), + E is F+1, + setarg(4,C,E), + ( G==not_stored_yet -> + C=suspension(_,_,_,_,_,H,I), + term_variables(term(H,I),D), + 'chr none_locked'(D), + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_=:=/2___2',J), + K=[C|J], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_=:=/2___2',K), + ( J=[L|_] -> + setarg(5,L,K) + ; + true + ), + 'attach_known/1_1_$special_=:=/2___2'(D,C) + ; + true + ), + 'known/1_1_$special_=:=/2'(B,A), + ( C=suspension(_,active,_,E,_,_,_) -> + setarg(2,C,inactive), + 'known/1_1_$special_=:=/2___2__3'(A,B,C) + ; + true + ). +'known/1_1_$special_=:=/2___2__2'(A,B,C) :- + 'known/1_1_$special_=:=/2___2__3'(A,B,C). +'known/1_1_$special_=:=/2___2__3'(A,B,C) :- + ( 'chr newvia_2'(A,B,G) -> + get_attr(G,guard_entailment,H), + H=v(_,_,_,_,_,_,_,_,_,_,_,_,_,_,F,_,_,_,_,_,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',F) + ), + 'chr sbag_member'(D,F), + D=suspension(_,active,_,_,E), + nonvar(E), + E=(I=:=J), + I==A, + J==B, + !, + D=suspension(_,_,_,_,X), + setarg(2,D,removed), + term_variables(X,K), + arg(4,D,T), + ( var(T) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',U), + U=[_|V], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',V), + ( V=[W|_] -> + setarg(4,W,_) + ; + true + ) + ; + T=[_,_|V], + setarg(2,T,V), + ( V=[W|_] -> + setarg(4,W,T) + ; + true + ) + ), + 'detach_known/1_1_$special_\\+/1___1'(K,D), + ( var(C) -> + true + ; + C=suspension(_,Q,_,_,_,R,S), + setarg(2,C,removed), + ( Q==not_stored_yet -> + L=[] + ; + term_variables(term(R,S),L), + arg(5,C,M), + ( var(M) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_=:=/2___2',N), + N=[_|O], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_=:=/2___2',O), + ( O=[P|_] -> + setarg(5,P,_) + ; + true + ) + ; + M=[_,_|O], + setarg(2,M,O), + ( O=[P|_] -> + setarg(5,P,M) + ; + true + ) + ), + 'detach_known/1_1_$special_=:=/2___2'(L,C) + ) + ), + 'known/1_1_$special_fail/0'. +'known/1_1_$special_=:=/2___2__3'(A,B,C) :- + ( 'chr newvia_2'(A,B,E) -> + get_attr(E,guard_entailment,F), + F=v(_,_,_,D,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',D) + ), + !, + 'known/1_1_$special_=:=/2___2__3__0__15'(D,A,B,C). +'known/1_1_$special_=:=/2___2__3__0__15'([],B,C,A) :- + 'known/1_1_$special_=:=/2___2__4'(B,C,A). +'known/1_1_$special_=:=/2___2__3__0__15'([F|J],A,B,C) :- + ( F=suspension(_,active,_,_,D,E), + nonvar(D), + D=(\+G), + nonvar(G), + G=(H=:=I), + H==A, + I==B -> + F=suspension(_,_,_,_,Y,Z), + setarg(2,F,removed), + term_variables(term(Y,Z),K), + arg(4,F,U), + ( var(U) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',V), + V=[_|W], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',W), + ( W=[X|_] -> + setarg(4,X,_) + ; + true + ) + ; + U=[_,_|W], + setarg(2,U,W), + ( W=[X|_] -> + setarg(4,X,U) + ; + true + ) + ), + 'detach_known/1_1_$special_;/2___2'(K,F), + arg(2,C,O), + setarg(2,C,active), + arg(4,C,N), + M is N+1, + setarg(4,C,M), + ( O==not_stored_yet -> + C=suspension(_,_,_,_,_,P,Q), + term_variables(term(P,Q),L), + 'chr none_locked'(L), + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_=:=/2___2',R), + S=[C|R], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_=:=/2___2',S), + ( R=[T|_] -> + setarg(5,T,S) + ; + true + ), + 'attach_known/1_1_$special_=:=/2___2'(L,C) + ; + true + ), + known(E), + ( C=suspension(_,active,_,M,_,_,_) -> + setarg(2,C,inactive), + 'known/1_1_$special_=:=/2___2__3__0__15'(J,A,B,C) + ; + true + ) + ; + 'known/1_1_$special_=:=/2___2__3__0__15'(J,A,B,C) + ). +'known/1_1_$special_=:=/2___2__3'(A,B,C) :- + 'known/1_1_$special_=:=/2___2__4'(A,B,C). +'known/1_1_$special_=:=/2___2__4'(A,B,C) :- + ( 'chr newvia_2'(A,B,E) -> + get_attr(E,guard_entailment,F), + F=v(_,_,_,D,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_) + ; + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',D) + ), + !, + 'known/1_1_$special_=:=/2___2__4__0__16'(D,A,B,C). +'known/1_1_$special_=:=/2___2__4__0__16'([],B,C,A) :- + 'known/1_1_$special_=:=/2___2__5'(B,C,A). +'known/1_1_$special_=:=/2___2__4__0__16'([F|K],A,B,C) :- + ( F=suspension(_,active,_,_,D,E), + nonvar(D), + D=(G,_), + nonvar(G), + G=(\+H), + nonvar(H), + H=(I=:=J), + I==A, + J==B -> + F=suspension(_,_,_,_,Z,A1), + setarg(2,F,removed), + term_variables(term(Z,A1),L), + arg(4,F,V), + ( var(V) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',W), + W=[_|X], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',X), + ( X=[Y|_] -> + setarg(4,Y,_) + ; + true + ) + ; + V=[_,_|X], + setarg(2,V,X), + ( X=[Y|_] -> + setarg(4,Y,V) + ; + true + ) + ), + 'detach_known/1_1_$special_;/2___2'(L,F), + arg(2,C,P), + setarg(2,C,active), + arg(4,C,O), + N is O+1, + setarg(4,C,N), + ( P==not_stored_yet -> + C=suspension(_,_,_,_,_,Q,R), + term_variables(term(Q,R),M), + 'chr none_locked'(M), + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_=:=/2___2',S), + T=[C|S], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_=:=/2___2',T), + ( S=[U|_] -> + setarg(5,U,T) + ; + true + ), + 'attach_known/1_1_$special_=:=/2___2'(M,C) + ; + true + ), + known(E), + ( C=suspension(_,active,_,N,_,_,_) -> + setarg(2,C,inactive), + 'known/1_1_$special_=:=/2___2__4__0__16'(K,A,B,C) + ; + true + ) + ; + 'known/1_1_$special_=:=/2___2__4__0__16'(K,A,B,C) + ). +'known/1_1_$special_=:=/2___2__4'(A,B,C) :- + 'known/1_1_$special_=:=/2___2__5'(A,B,C). +'known/1_1_$special_=:=/2___2__5'(_,_,A) :- + arg(2,A,E), + setarg(2,A,active), + arg(4,A,D), + C is D+1, + setarg(4,A,C), + ( E==not_stored_yet -> + A=suspension(_,_,_,_,_,F,G), + term_variables(term(F,G),B), + 'chr none_locked'(B), + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_=:=/2___2',H), + I=[A|H], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_=:=/2___2',I), + ( H=[J|_] -> + setarg(5,J,I) + ; + true + ), + 'attach_known/1_1_$special_=:=/2___2'(B,A) + ; + true + ). +'known/1_1_$special_fail/0' :- + nb_getval('$chr_store_global_ground_guard_entailment____known/1_1_$special_fail/0___0',B), + 'chr sbag_member'(A,B), + A=suspension(_,active,_), + !. +'known/1_1_$special_fail/0' :- + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',A), + !, + 'known/1_1_$special_fail/0___0__0__0__24'(A). +'known/1_1_$special_fail/0___0__0__0__24'([]) :- + 'known/1_1_$special_fail/0___0__1'. +'known/1_1_$special_fail/0___0__0__0__24'([A|B]) :- + ( A=suspension(_,active,_,_,_,_) -> + A=suspension(_,_,_,_,H,I), + setarg(2,A,removed), + term_variables(term(H,I),C), + arg(4,A,D), + ( var(D) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',E), + E=[_|F], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_;/2___2',F), + ( F=[G|_] -> + setarg(4,G,_) + ; + true + ) + ; + D=[_,_|F], + setarg(2,D,F), + ( F=[G|_] -> + setarg(4,G,D) + ; + true + ) + ), + 'detach_known/1_1_$special_;/2___2'(C,A), + 'known/1_1_$special_fail/0___0__0__0__24'(B) + ; + 'known/1_1_$special_fail/0___0__0__0__24'(B) + ). +'known/1_1_$special_fail/0' :- + 'known/1_1_$special_fail/0___0__1'. +'known/1_1_$special_fail/0___0__1' :- + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_nonvar/1___1',A), + !, + 'known/1_1_$special_fail/0___0__1__0__25'(A). +'known/1_1_$special_fail/0___0__1__0__25'([]) :- + 'known/1_1_$special_fail/0___0__2'. +'known/1_1_$special_fail/0___0__1__0__25'([A|B]) :- + ( A=suspension(_,active,_,_,_) -> + A=suspension(_,_,_,_,H), + setarg(2,A,removed), + term_variables(H,C), + arg(4,A,D), + ( var(D) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_nonvar/1___1',E), + E=[_|F], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_nonvar/1___1',F), + ( F=[G|_] -> + setarg(4,G,_) + ; + true + ) + ; + D=[_,_|F], + setarg(2,D,F), + ( F=[G|_] -> + setarg(4,G,D) + ; + true + ) + ), + 'detach_known/1_1_$special_nonvar/1___1'(C,A), + 'known/1_1_$special_fail/0___0__1__0__25'(B) + ; + 'known/1_1_$special_fail/0___0__1__0__25'(B) + ). +'known/1_1_$special_fail/0___0__1' :- + 'known/1_1_$special_fail/0___0__2'. +'known/1_1_$special_fail/0___0__2' :- + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_var/1___1',A), + !, + 'known/1_1_$special_fail/0___0__2__0__26'(A). +'known/1_1_$special_fail/0___0__2__0__26'([]) :- + 'known/1_1_$special_fail/0___0__3'. +'known/1_1_$special_fail/0___0__2__0__26'([A|B]) :- + ( A=suspension(_,active,_,_,_) -> + A=suspension(_,_,_,_,H), + setarg(2,A,removed), + term_variables(H,C), + arg(4,A,D), + ( var(D) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_var/1___1',E), + E=[_|F], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_var/1___1',F), + ( F=[G|_] -> + setarg(4,G,_) + ; + true + ) + ; + D=[_,_|F], + setarg(2,D,F), + ( F=[G|_] -> + setarg(4,G,D) + ; + true + ) + ), + 'detach_known/1_1_$special_var/1___1'(C,A), + 'known/1_1_$special_fail/0___0__2__0__26'(B) + ; + 'known/1_1_$special_fail/0___0__2__0__26'(B) + ). +'known/1_1_$special_fail/0___0__2' :- + 'known/1_1_$special_fail/0___0__3'. +'known/1_1_$special_fail/0___0__3' :- + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_atom/1___1',A), + !, + 'known/1_1_$special_fail/0___0__3__0__27'(A). +'known/1_1_$special_fail/0___0__3__0__27'([]) :- + 'known/1_1_$special_fail/0___0__4'. +'known/1_1_$special_fail/0___0__3__0__27'([A|B]) :- + ( A=suspension(_,active,_,_,_,_) -> + A=suspension(_,_,_,_,_,H), + setarg(2,A,removed), + term_variables(H,C), + arg(5,A,D), + ( var(D) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_atom/1___1',E), + E=[_|F], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_atom/1___1',F), + ( F=[G|_] -> + setarg(5,G,_) + ; + true + ) + ; + D=[_,_|F], + setarg(2,D,F), + ( F=[G|_] -> + setarg(5,G,D) + ; + true + ) + ), + 'detach_known/1_1_$special_atom/1___1'(C,A), + 'known/1_1_$special_fail/0___0__3__0__27'(B) + ; + 'known/1_1_$special_fail/0___0__3__0__27'(B) + ). +'known/1_1_$special_fail/0___0__3' :- + 'known/1_1_$special_fail/0___0__4'. +'known/1_1_$special_fail/0___0__4' :- + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_atomic/1___1',A), + !, + 'known/1_1_$special_fail/0___0__4__0__28'(A). +'known/1_1_$special_fail/0___0__4__0__28'([]) :- + 'known/1_1_$special_fail/0___0__5'. +'known/1_1_$special_fail/0___0__4__0__28'([A|B]) :- + ( A=suspension(_,active,_,_,_,_) -> + A=suspension(_,_,_,_,_,H), + setarg(2,A,removed), + term_variables(H,C), + arg(5,A,D), + ( var(D) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_atomic/1___1',E), + E=[_|F], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_atomic/1___1',F), + ( F=[G|_] -> + setarg(5,G,_) + ; + true + ) + ; + D=[_,_|F], + setarg(2,D,F), + ( F=[G|_] -> + setarg(5,G,D) + ; + true + ) + ), + 'detach_known/1_1_$special_atomic/1___1'(C,A), + 'known/1_1_$special_fail/0___0__4__0__28'(B) + ; + 'known/1_1_$special_fail/0___0__4__0__28'(B) + ). +'known/1_1_$special_fail/0___0__4' :- + 'known/1_1_$special_fail/0___0__5'. +'known/1_1_$special_fail/0___0__5' :- + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_compound/1___1',A), + !, + 'known/1_1_$special_fail/0___0__5__0__29'(A). +'known/1_1_$special_fail/0___0__5__0__29'([]) :- + 'known/1_1_$special_fail/0___0__6'. +'known/1_1_$special_fail/0___0__5__0__29'([A|B]) :- + ( A=suspension(_,active,_,_,_,_) -> + A=suspension(_,_,_,_,_,H), + setarg(2,A,removed), + term_variables(H,C), + arg(5,A,D), + ( var(D) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_compound/1___1',E), + E=[_|F], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_compound/1___1',F), + ( F=[G|_] -> + setarg(5,G,_) + ; + true + ) + ; + D=[_,_|F], + setarg(2,D,F), + ( F=[G|_] -> + setarg(5,G,D) + ; + true + ) + ), + 'detach_known/1_1_$special_compound/1___1'(C,A), + 'known/1_1_$special_fail/0___0__5__0__29'(B) + ; + 'known/1_1_$special_fail/0___0__5__0__29'(B) + ). +'known/1_1_$special_fail/0___0__5' :- + 'known/1_1_$special_fail/0___0__6'. +'known/1_1_$special_fail/0___0__6' :- + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_ground/1___1',A), + !, + 'known/1_1_$special_fail/0___0__6__0__30'(A). +'known/1_1_$special_fail/0___0__6__0__30'([]) :- + 'known/1_1_$special_fail/0___0__7'. +'known/1_1_$special_fail/0___0__6__0__30'([A|B]) :- + ( A=suspension(_,active,_,_,_,_) -> + A=suspension(_,_,_,_,_,H), + setarg(2,A,removed), + term_variables(H,C), + arg(5,A,D), + ( var(D) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_ground/1___1',E), + E=[_|F], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_ground/1___1',F), + ( F=[G|_] -> + setarg(5,G,_) + ; + true + ) + ; + D=[_,_|F], + setarg(2,D,F), + ( F=[G|_] -> + setarg(5,G,D) + ; + true + ) + ), + 'detach_known/1_1_$special_ground/1___1'(C,A), + 'known/1_1_$special_fail/0___0__6__0__30'(B) + ; + 'known/1_1_$special_fail/0___0__6__0__30'(B) + ). +'known/1_1_$special_fail/0___0__6' :- + 'known/1_1_$special_fail/0___0__7'. +'known/1_1_$special_fail/0___0__7' :- + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_integer/1___1',A), + !, + 'known/1_1_$special_fail/0___0__7__0__31'(A). +'known/1_1_$special_fail/0___0__7__0__31'([]) :- + 'known/1_1_$special_fail/0___0__8'. +'known/1_1_$special_fail/0___0__7__0__31'([A|B]) :- + ( A=suspension(_,active,_,_,_,_) -> + A=suspension(_,_,_,_,_,H), + setarg(2,A,removed), + term_variables(H,C), + arg(5,A,D), + ( var(D) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_integer/1___1',E), + E=[_|F], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_integer/1___1',F), + ( F=[G|_] -> + setarg(5,G,_) + ; + true + ) + ; + D=[_,_|F], + setarg(2,D,F), + ( F=[G|_] -> + setarg(5,G,D) + ; + true + ) + ), + 'detach_known/1_1_$special_integer/1___1'(C,A), + 'known/1_1_$special_fail/0___0__7__0__31'(B) + ; + 'known/1_1_$special_fail/0___0__7__0__31'(B) + ). +'known/1_1_$special_fail/0___0__7' :- + 'known/1_1_$special_fail/0___0__8'. +'known/1_1_$special_fail/0___0__8' :- + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_float/1___1',A), + !, + 'known/1_1_$special_fail/0___0__8__0__32'(A). +'known/1_1_$special_fail/0___0__8__0__32'([]) :- + 'known/1_1_$special_fail/0___0__9'. +'known/1_1_$special_fail/0___0__8__0__32'([A|B]) :- + ( A=suspension(_,active,_,_,_,_) -> + A=suspension(_,_,_,_,_,H), + setarg(2,A,removed), + term_variables(H,C), + arg(5,A,D), + ( var(D) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_float/1___1',E), + E=[_|F], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_float/1___1',F), + ( F=[G|_] -> + setarg(5,G,_) + ; + true + ) + ; + D=[_,_|F], + setarg(2,D,F), + ( F=[G|_] -> + setarg(5,G,D) + ; + true + ) + ), + 'detach_known/1_1_$special_float/1___1'(C,A), + 'known/1_1_$special_fail/0___0__8__0__32'(B) + ; + 'known/1_1_$special_fail/0___0__8__0__32'(B) + ). +'known/1_1_$special_fail/0___0__8' :- + 'known/1_1_$special_fail/0___0__9'. +'known/1_1_$special_fail/0___0__9' :- + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_number/1___1',A), + !, + 'known/1_1_$special_fail/0___0__9__0__33'(A). +'known/1_1_$special_fail/0___0__9__0__33'([]) :- + 'known/1_1_$special_fail/0___0__10'. +'known/1_1_$special_fail/0___0__9__0__33'([A|B]) :- + ( A=suspension(_,active,_,_,_,_) -> + A=suspension(_,_,_,_,_,H), + setarg(2,A,removed), + term_variables(H,C), + arg(5,A,D), + ( var(D) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_number/1___1',E), + E=[_|F], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_number/1___1',F), + ( F=[G|_] -> + setarg(5,G,_) + ; + true + ) + ; + D=[_,_|F], + setarg(2,D,F), + ( F=[G|_] -> + setarg(5,G,D) + ; + true + ) + ), + 'detach_known/1_1_$special_number/1___1'(C,A), + 'known/1_1_$special_fail/0___0__9__0__33'(B) + ; + 'known/1_1_$special_fail/0___0__9__0__33'(B) + ). +'known/1_1_$special_fail/0___0__9' :- + 'known/1_1_$special_fail/0___0__10'. +'known/1_1_$special_fail/0___0__10' :- + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_=\\=/2___2',A), + !, + 'known/1_1_$special_fail/0___0__10__0__34'(A). +'known/1_1_$special_fail/0___0__10__0__34'([]) :- + 'known/1_1_$special_fail/0___0__11'. +'known/1_1_$special_fail/0___0__10__0__34'([A|B]) :- + ( A=suspension(_,active,_,_,_,_,_) -> + A=suspension(_,_,_,_,_,H,I), + setarg(2,A,removed), + term_variables(term(H,I),C), + arg(5,A,D), + ( var(D) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_=\\=/2___2',E), + E=[_|F], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_=\\=/2___2',F), + ( F=[G|_] -> + setarg(5,G,_) + ; + true + ) + ; + D=[_,_|F], + setarg(2,D,F), + ( F=[G|_] -> + setarg(5,G,D) + ; + true + ) + ), + 'detach_known/1_1_$special_=\\=/2___2'(C,A), + 'known/1_1_$special_fail/0___0__10__0__34'(B) + ; + 'known/1_1_$special_fail/0___0__10__0__34'(B) + ). +'known/1_1_$special_fail/0___0__10' :- + 'known/1_1_$special_fail/0___0__11'. +'known/1_1_$special_fail/0___0__11' :- + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',A), + !, + 'known/1_1_$special_fail/0___0__11__0__35'(A). +'known/1_1_$special_fail/0___0__11__0__35'([]) :- + 'known/1_1_$special_fail/0___0__12'. +'known/1_1_$special_fail/0___0__11__0__35'([A|B]) :- + ( A=suspension(_,active,_,_,_) -> + A=suspension(_,_,_,_,H), + setarg(2,A,removed), + term_variables(H,C), + arg(4,A,D), + ( var(D) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',E), + E=[_|F], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\+/1___1',F), + ( F=[G|_] -> + setarg(4,G,_) + ; + true + ) + ; + D=[_,_|F], + setarg(2,D,F), + ( F=[G|_] -> + setarg(4,G,D) + ; + true + ) + ), + 'detach_known/1_1_$special_\\+/1___1'(C,A), + 'known/1_1_$special_fail/0___0__11__0__35'(B) + ; + 'known/1_1_$special_fail/0___0__11__0__35'(B) + ). +'known/1_1_$special_fail/0___0__11' :- + 'known/1_1_$special_fail/0___0__12'. +'known/1_1_$special_fail/0___0__12' :- + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_functor/3___3',A), + !, + 'known/1_1_$special_fail/0___0__12__0__36'(A). +'known/1_1_$special_fail/0___0__12__0__36'([]) :- + 'known/1_1_$special_fail/0___0__13'. +'known/1_1_$special_fail/0___0__12__0__36'([A|B]) :- + ( A=suspension(_,active,_,_,_,_,_) -> + A=suspension(_,_,_,_,H,I,J), + setarg(2,A,removed), + term_variables(term(H,I,J),C), + arg(4,A,D), + ( var(D) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_functor/3___3',E), + E=[_|F], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_functor/3___3',F), + ( F=[G|_] -> + setarg(4,G,_) + ; + true + ) + ; + D=[_,_|F], + setarg(2,D,F), + ( F=[G|_] -> + setarg(4,G,D) + ; + true + ) + ), + 'detach_known/1_1_$special_functor/3___3'(C,A), + 'known/1_1_$special_fail/0___0__12__0__36'(B) + ; + 'known/1_1_$special_fail/0___0__12__0__36'(B) + ). +'known/1_1_$special_fail/0___0__12' :- + 'known/1_1_$special_fail/0___0__13'. +'known/1_1_$special_fail/0___0__13' :- + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\=/2___2',A), + !, + 'known/1_1_$special_fail/0___0__13__0__37'(A). +'known/1_1_$special_fail/0___0__13__0__37'([]) :- + 'known/1_1_$special_fail/0___0__14'. +'known/1_1_$special_fail/0___0__13__0__37'([A|B]) :- + ( A=suspension(_,active,_,_,_,_,_) -> + A=suspension(_,_,_,_,_,H,I), + setarg(2,A,removed), + term_variables(term(H,I),C), + arg(5,A,D), + ( var(D) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\=/2___2',E), + E=[_|F], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\=/2___2',F), + ( F=[G|_] -> + setarg(5,G,_) + ; + true + ) + ; + D=[_,_|F], + setarg(2,D,F), + ( F=[G|_] -> + setarg(5,G,D) + ; + true + ) + ), + 'detach_known/1_1_$special_\\=/2___2'(C,A), + 'known/1_1_$special_fail/0___0__13__0__37'(B) + ; + 'known/1_1_$special_fail/0___0__13__0__37'(B) + ). +'known/1_1_$special_fail/0___0__13' :- + 'known/1_1_$special_fail/0___0__14'. +'known/1_1_$special_fail/0___0__14' :- + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_=/2___2',A), + !, + 'known/1_1_$special_fail/0___0__14__0__38'(A). +'known/1_1_$special_fail/0___0__14__0__38'([]) :- + 'known/1_1_$special_fail/0___0__15'. +'known/1_1_$special_fail/0___0__14__0__38'([A|B]) :- + ( A=suspension(_,active,_,_,_,_) -> + A=suspension(_,_,_,_,H,I), + setarg(2,A,removed), + term_variables(term(H,I),C), + arg(4,A,D), + ( var(D) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_=/2___2',E), + E=[_|F], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_=/2___2',F), + ( F=[G|_] -> + setarg(4,G,_) + ; + true + ) + ; + D=[_,_|F], + setarg(2,D,F), + ( F=[G|_] -> + setarg(4,G,D) + ; + true + ) + ), + 'detach_known/1_1_$special_=/2___2'(C,A), + 'known/1_1_$special_fail/0___0__14__0__38'(B) + ; + 'known/1_1_$special_fail/0___0__14__0__38'(B) + ). +'known/1_1_$special_fail/0___0__14' :- + 'known/1_1_$special_fail/0___0__15'. +'known/1_1_$special_fail/0___0__15' :- + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\==/2___2',A), + !, + 'known/1_1_$special_fail/0___0__15__0__40'(A). +'known/1_1_$special_fail/0___0__15__0__40'([]) :- + 'known/1_1_$special_fail/0___0__16'. +'known/1_1_$special_fail/0___0__15__0__40'([A|B]) :- + ( A=suspension(_,active,_,_,_,_,_) -> + A=suspension(_,_,_,_,_,H,I), + setarg(2,A,removed), + term_variables(term(H,I),C), + arg(5,A,D), + ( var(D) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\==/2___2',E), + E=[_|F], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\==/2___2',F), + ( F=[G|_] -> + setarg(5,G,_) + ; + true + ) + ; + D=[_,_|F], + setarg(2,D,F), + ( F=[G|_] -> + setarg(5,G,D) + ; + true + ) + ), + 'detach_known/1_1_$special_\\==/2___2'(C,A), + 'known/1_1_$special_fail/0___0__15__0__40'(B) + ; + 'known/1_1_$special_fail/0___0__15__0__40'(B) + ). +'known/1_1_$special_fail/0___0__15' :- + 'known/1_1_$special_fail/0___0__16'. +'known/1_1_$special_fail/0___0__16' :- + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_==/2___2',A), + !, + 'known/1_1_$special_fail/0___0__16__0__41'(A). +'known/1_1_$special_fail/0___0__16__0__41'([]) :- + 'known/1_1_$special_fail/0___0__17'. +'known/1_1_$special_fail/0___0__16__0__41'([A|B]) :- + ( A=suspension(_,active,_,_,_,_,_) -> + A=suspension(_,_,_,_,_,H,I), + setarg(2,A,removed), + term_variables(term(H,I),C), + arg(5,A,D), + ( var(D) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_==/2___2',E), + E=[_|F], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_==/2___2',F), + ( F=[G|_] -> + setarg(5,G,_) + ; + true + ) + ; + D=[_,_|F], + setarg(2,D,F), + ( F=[G|_] -> + setarg(5,G,D) + ; + true + ) + ), + 'detach_known/1_1_$special_==/2___2'(C,A), + 'known/1_1_$special_fail/0___0__16__0__41'(B) + ; + 'known/1_1_$special_fail/0___0__16__0__41'(B) + ). +'known/1_1_$special_fail/0___0__16' :- + 'known/1_1_$special_fail/0___0__17'. +'known/1_1_$special_fail/0___0__17' :- + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_= + A=suspension(_,_,_,_,_,H,I), + setarg(2,A,removed), + term_variables(term(H,I),C), + arg(5,A,D), + ( var(D) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_= + setarg(5,G,_) + ; + true + ) + ; + D=[_,_|F], + setarg(2,D,F), + ( F=[G|_] -> + setarg(5,G,D) + ; + true + ) + ), + 'detach_known/1_1_$special_= + A=suspension(_,_,_,_,_,H,I), + setarg(2,A,removed), + term_variables(term(H,I),C), + arg(5,A,D), + ( var(D) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_=:=/2___2',E), + E=[_|F], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_=:=/2___2',F), + ( F=[G|_] -> + setarg(5,G,_) + ; + true + ) + ; + D=[_,_|F], + setarg(2,D,F), + ( F=[G|_] -> + setarg(5,G,D) + ; + true + ) + ), + 'detach_known/1_1_$special_=:=/2___2'(C,A), + 'known/1_1_$special_fail/0___0__18__0__47'(B) + ; + 'known/1_1_$special_fail/0___0__18__0__47'(B) + ). +'known/1_1_$special_fail/0___0__18' :- + 'known/1_1_$special_fail/0___0__19'. +'known/1_1_$special_fail/0___0__19' :- + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$default___1',A), + !, + 'known/1_1_$special_fail/0___0__19__0__50'(A). +'known/1_1_$special_fail/0___0__19__0__50'([]) :- + 'known/1_1_$special_fail/0___0__20'. +'known/1_1_$special_fail/0___0__19__0__50'([A|B]) :- + ( A=suspension(_,active,_,_,_) -> + A=suspension(_,_,_,_,H), + setarg(2,A,removed), + term_variables(H,C), + arg(4,A,D), + ( var(D) -> + nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$default___1',E), + E=[_|F], + b_setval('$chr_store_global_list_guard_entailment____known/1_1_$default___1',F), + ( F=[G|_] -> + setarg(4,G,_) + ; + true + ) + ; + D=[_,_|F], + setarg(2,D,F), + ( F=[G|_] -> + setarg(4,G,D) + ; + true + ) + ), + 'detach_known/1_1_$default___1'(C,A), + 'known/1_1_$special_fail/0___0__19__0__50'(B) + ; + 'known/1_1_$special_fail/0___0__19__0__50'(B) + ). +'known/1_1_$special_fail/0___0__19' :- + 'known/1_1_$special_fail/0___0__20'. +'known/1_1_$special_fail/0___0__20' :- + A=suspension(B,active,_), + 'chr gen_id'(B), + nb_getval('$chr_store_global_ground_guard_entailment____known/1_1_$special_fail/0___0',C), + D=[A|C], + b_setval('$chr_store_global_ground_guard_entailment____known/1_1_$special_fail/0___0',D), + ( C=[E|_] -> + setarg(3,E,D) ; true ). :-multifile chr:'$chr_module'/1. chr:'$chr_module'(guard_entailment). +end_of_file. diff --git a/sources b/sources index 4d7bcaa..3f3fc92 100644 --- a/sources +++ b/sources @@ -1 +1,5 @@ -1f5c26642a27158c98f6c2fac56d3dad Yap-5.1.1.tar.gz +d04265acead9286b363f7209ac382490 Yap-5.1.3.tar.gz +89b0825d04a5615b78ca0ff67908b047 chr_translate_bootstrap1.pl +ebbc6fe2972f03696e8b5397b0076726 chr_translate_bootstrap2.pl +773fa939564fb229fc7e541e5a74515a chr_translate.pl +72541b7579caf15bebe19fc2fc80dd08 guard_entailment.pl diff --git a/yap.spec b/yap.spec index 13ac828..155f9ef 100644 --- a/yap.spec +++ b/yap.spec @@ -1,12 +1,12 @@ Name: yap -Version: 5.1.1 -Release: 13%{?dist} +Version: 5.1.3 +Release: 1%{?dist} Summary: High-performance Prolog Compiler Group: Development/Languages License: Artistic 2.0 or LGPLv2+ -Source: http://www.ncc.up.pt/~vsc/Yap/current/Yap-5.1.1.tar.gz +Source: http://www.ncc.up.pt/~vsc/Yap/current/Yap-%{version}.tar.gz Source1: guard_entailment.pl Source2: chr_translate_bootstrap1.pl Source3: chr_translate_bootstrap2.pl @@ -53,12 +53,15 @@ Documentation for Yap. %patch2 -p1 %patch3 -p1 +find -name CVS -print0 | xargs -0 rm -rf cp %{SOURCE1} %{SOURCE2} %{SOURCE3} %{SOURCE4} LGPL/chr # remove redundant rpath sed -i '/-Wl,-R/d' configure -# properly link dynamically -sed -i 's/SHLIB_LD=.*/SHLIB_LD="gcc -shared"/' configure +# add soname to library +sed -i 's/@YAPLIB@/@YAPLIB@.%{version}/g' Makefile.in +sed -i 's/@DYNYAPLIB@/@DYNYAPLIB@.%{version}/g' Makefile.in +sed -i 's/@DYNLIB_LD@/@DYNLIB_LD@ -Wl,-soname=@YAPLIB@.%{version} /g' Makefile.in find -name Makefile.in | xargs sed -i 's|$(ROOTDIR)/lib|$(ROOTDIR)/%{_lib}|' find -name Makefile.in | xargs sed -i 's|$(EROOTDIR)/lib|$(EROOTDIR)/%{_lib}|' @@ -89,9 +92,11 @@ find -name '*.lgt' -exec chmod 0644 '{}' ';' find -name '*.h' -exec chmod 0644 '{}' ';' find -name '*.c' -exec chmod 0644 '{}' ';' +(cd $RPM_BUILD_ROOT%{_libdir}; ln -sf libYap.so.%{version} libYap.so) + # move examples to docdir mkdir -p $RPM_BUILD_ROOT%{_docdir}/%{name}-%{version} -mv $RPM_BUILD_ROOT%{_datadir}/Yap/examples $RPM_BUILD_ROOT%{_docdir}/%{name}-%{version} +#mv $RPM_BUILD_ROOT%{_datadir}/Yap/examples $RPM_BUILD_ROOT%{_docdir}/%{name}-%{version} rm -rf $RPM_BUILD_ROOT%{_datadir}/Yap/clpbn/examples %post @@ -119,20 +124,18 @@ rm -rf $RPM_BUILD_ROOT %{_bindir}/yap %{_datadir}/Yap %{_libdir}/Yap -%{_libdir}/libYap.so +%{_libdir}/libYap.so* %{_infodir}/* %files devel %defattr(-,root,root,-) -%{_libdir}/libYap.a +%{_libdir}/libYap.so %{_includedir}/Yap %files docs %defattr(-,root,root,-) -%doc docs/*.html -%doc docs/yap.pdf %doc LGPL/pillow/doc/pillow_doc_html/* %doc LGPL/pillow/doc/article.ps.gz %doc --parent Logtalk/manuals @@ -140,13 +143,13 @@ rm -rf $RPM_BUILD_ROOT %changelog +* Mon Jun 15 2009 Gerard Milmeister - 5.1.3-1 +- new release 5.1.3 + * Sun Mar 01 2009 Ralf Corsépius - 5.1.1-13 - Add Yap-5.1.1-config.sub.patch: Upgrade outdated config.sub to fix rebuild breakdown on ppc64. -* Wed Feb 25 2009 Fedora Release Engineering - 5.1.1-12 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_11_Mass_Rebuild - * Fri Jul 11 2008 Tom "spot" Callaway - 5.1.1-11 - fix license tag From 8a788f4cd786e01c34143ed1be1f1863e19d676e Mon Sep 17 00:00:00 2001 From: Bill Nottingham Date: Thu, 26 Nov 2009 01:12:18 +0000 Subject: [PATCH 3/4] Fix typo that causes a failure to update the common directory. (releng #2781) --- Makefile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Makefile b/Makefile index 4e22fad..0cb1d1b 100644 --- a/Makefile +++ b/Makefile @@ -1,10 +1,10 @@ # Makefile for source rpm: yap -# $Id$ +# $Id: Makefile,v 1.1 2005/02/12 00:22:52 gemi Exp $ NAME := yap SPECFILE = $(firstword $(wildcard *.spec)) define find-makefile-common -for d in common ../common ../../common ; do if [ -f $$d/Makefile.common ] ; then if [ -f $$d/CVS/Root -a -w $$/Makefile.common ] ; then cd $$d ; cvs -Q update ; fi ; echo "$$d/Makefile.common" ; break ; fi ; done +for d in common ../common ../../common ; do if [ -f $$d/Makefile.common ] ; then if [ -f $$d/CVS/Root -a -w $$d/Makefile.common ] ; then cd $$d ; cvs -Q update ; fi ; echo "$$d/Makefile.common" ; break ; fi ; done endef MAKEFILE_COMMON := $(shell $(find-makefile-common)) From d293b30b755abc21093f6f7477f491d84a00fe6c Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Thu, 29 Jul 2010 16:19:09 +0000 Subject: [PATCH 4/4] dist-git conversion --- .cvsignore => .gitignore | 0 Makefile | 21 --------------------- branch | 1 - 3 files changed, 22 deletions(-) rename .cvsignore => .gitignore (100%) delete mode 100644 Makefile delete mode 100644 branch diff --git a/.cvsignore b/.gitignore similarity index 100% rename from .cvsignore rename to .gitignore diff --git a/Makefile b/Makefile deleted file mode 100644 index 0cb1d1b..0000000 --- a/Makefile +++ /dev/null @@ -1,21 +0,0 @@ -# Makefile for source rpm: yap -# $Id: Makefile,v 1.1 2005/02/12 00:22:52 gemi Exp $ -NAME := yap -SPECFILE = $(firstword $(wildcard *.spec)) - -define find-makefile-common -for d in common ../common ../../common ; do if [ -f $$d/Makefile.common ] ; then if [ -f $$d/CVS/Root -a -w $$d/Makefile.common ] ; then cd $$d ; cvs -Q update ; fi ; echo "$$d/Makefile.common" ; break ; fi ; done -endef - -MAKEFILE_COMMON := $(shell $(find-makefile-common)) - -ifeq ($(MAKEFILE_COMMON),) -# attept a checkout -define checkout-makefile-common -test -f CVS/Root && { cvs -Q -d $$(cat CVS/Root) checkout common && echo "common/Makefile.common" ; } || { echo "ERROR: I can't figure out how to checkout the 'common' module." ; exit -1 ; } >&2 -endef - -MAKEFILE_COMMON := $(shell $(checkout-makefile-common)) -endif - -include $(MAKEFILE_COMMON) diff --git a/branch b/branch deleted file mode 100644 index 25c7708..0000000 --- a/branch +++ /dev/null @@ -1 +0,0 @@ -F-11