From b0ecd94faa6bfdd2e9f2a559c867a0fa279425c2 Mon Sep 17 00:00:00 2001 From: Jesse Keating Date: Wed, 15 Apr 2009 08:02:50 +0000 Subject: [PATCH 01/68] 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 02/68] 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 2b60c4a2e7560e45b5db86b5211889a36f6ff77d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?G=C3=A9rard=20Milmeister?= Date: Mon, 15 Jun 2009 20:46:24 +0000 Subject: [PATCH 03/68] 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 5e55525bca3e4f497954fb6a94347db8ac7472ac Mon Sep 17 00:00:00 2001 From: Jesse Keating Date: Mon, 27 Jul 2009 08:52:58 +0000 Subject: [PATCH 04/68] - Rebuilt for https://fedoraproject.org/wiki/Fedora_12_Mass_Rebuild --- yap.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/yap.spec b/yap.spec index 155f9ef..1993835 100644 --- a/yap.spec +++ b/yap.spec @@ -1,6 +1,6 @@ Name: yap Version: 5.1.3 -Release: 1%{?dist} +Release: 2%{?dist} Summary: High-performance Prolog Compiler @@ -143,6 +143,9 @@ rm -rf $RPM_BUILD_ROOT %changelog +* Mon Jul 27 2009 Fedora Release Engineering - 5.1.3-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_12_Mass_Rebuild + * Mon Jun 15 2009 Gerard Milmeister - 5.1.3-1 - new release 5.1.3 From 112eec34f027db2823891740aec5cda3f7033ee1 Mon Sep 17 00:00:00 2001 From: Bill Nottingham Date: Wed, 25 Nov 2009 22:39:35 +0000 Subject: [PATCH 05/68] 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 8a788f4cd786e01c34143ed1be1f1863e19d676e Mon Sep 17 00:00:00 2001 From: Bill Nottingham Date: Thu, 26 Nov 2009 01:12:18 +0000 Subject: [PATCH 06/68] 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 6504b231f39fe1fd1ea844a5d3415f54769f46fa Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Thu, 29 Jul 2010 16:19:06 +0000 Subject: [PATCH 07/68] dist-git conversion --- .cvsignore => .gitignore | 0 Makefile | 21 --------------------- 2 files changed, 21 deletions(-) rename .cvsignore => .gitignore (100%) delete mode 100644 Makefile 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) From d293b30b755abc21093f6f7477f491d84a00fe6c Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Thu, 29 Jul 2010 16:19:09 +0000 Subject: [PATCH 08/68] 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 From 7787720472508e9fb1939f6445edaefc4d735da1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Petr=20P=C3=ADsa=C5=99?= Date: Wed, 8 Dec 2010 18:37:44 +0100 Subject: [PATCH 09/68] Clean the package Hack SWI-compatible libraries build process. Other small tunes to get more conformant packages. --- yap.spec | 95 ++++++++++++++++++++++++++++++++++++++------------------ 1 file changed, 65 insertions(+), 30 deletions(-) diff --git a/yap.spec b/yap.spec index 1993835..cd5bdf1 100644 --- a/yap.spec +++ b/yap.spec @@ -1,24 +1,24 @@ -Name: yap -Version: 5.1.3 -Release: 2%{?dist} +Name: yap +Version: 5.1.3 +Release: 3%{?dist} -Summary: High-performance Prolog Compiler +Summary: High-performance Prolog Compiler -Group: Development/Languages -License: Artistic 2.0 or LGPLv2+ -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 -Source4: chr_translate.pl -Patch1: Yap-noni386.patch -Patch2: Yap-creat.patch +Group: Development/Languages +License: Artistic 2.0 or LGPLv2+ +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 +Source4: chr_translate.pl +Patch1: Yap-noni386.patch +Patch2: Yap-creat.patch # config.sub in the tarball is too old for ppc64 -Patch3: Yap-5.1.1-config.sub.patch -URL: http://www.ncc.up.pt/~vsc/Yap +Patch3: Yap-5.1.1-config.sub.patch +URL: http://www.ncc.up.pt/~vsc/Yap BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) -BuildRequires: readline-devel, gmp-devel, texinfo -Requires(post): /sbin/install-info, /sbin/ldconfig +BuildRequires: readline-devel, gmp-devel, texinfo +Requires(post): /sbin/install-info, /sbin/ldconfig Requires(postun): /sbin/install-info, /sbin/ldconfig %description @@ -30,18 +30,19 @@ ISO-Prolog standard and with Quintus and SICStus Prolog. %package devel -Summary: C-Interface development files for Yap -Group: Development/Languages -Requires: %{name} = %{version}-%{release} +Summary: C-Interface development files for Yap +Group: Development/Languages +Requires: %{name} = %{version}-%{release} %description devel C-Interface development files for Yap. %package docs -Summary: Documentation for Yap -Group: Development/Languages -Requires: %{name} = %{version}-%{release} +Summary: Documentation for Yap +Group: Development/Languages +BuildArch: noarch +Requires: %{name} = %{version}-%{release} %description docs Documentation for Yap. @@ -66,16 +67,43 @@ sed -i 's/@DYNLIB_LD@/@DYNLIB_LD@ -Wl,-soname=@YAPLIB@.%{version} /g' Makefile.i find -name Makefile.in | xargs sed -i 's|$(ROOTDIR)/lib|$(ROOTDIR)/%{_lib}|' find -name Makefile.in | xargs sed -i 's|$(EROOTDIR)/lib|$(EROOTDIR)/%{_lib}|' +# Hack LGPL/chr build environment to run just build interpreter +# yap-6.2.0 have those SWI compatible libraries optional and separate. Package +# them as standalone package in the future and remove this ugly thing: +# Provide path to just built library and libc bindings +sed -i '/LGPL\/chr/ s|\(make install\)|LD_LIBRARY_PATH='"${PWD}:${PWD}/library/system"' \1|' Makefile.in +# Provide paths to Prolog libraries +mkdir -p LGPL/chr/usr/share && ln -s ../../../../library LGPL/chr/usr/share/Yap +mkdir -p library/usr/share && ln -s ../.. library/usr/share/Yap +# Provide paths to parent Prolog libraries +ln -s {../LGPL,library}/maplist.pl +ln -s {../GPL,library}/aggregate.pl +ln -s {../GPL,library}/occurs.yap +ln -s {../GPL,library}/pairs.pl +ln -s {../GPL,library}/error.pl + +# Fix file encoding +for F in README changes.css; do + tr -d '\r' < "$F" > "${F}.new" + touch -r "$F"{,.new} + mv "$F"{.new,} +done +for F in docs/yap.tex; do + iconv -f iso-8859-1 -t utf-8 < "$F" > "${F}.new" + touch -r "$F"{,.new} + mv "$F"{.new,} +done + %build # % define optflags $(echo $RPM_OPT_FLAGS | sed 's|-fstack-protector||') %configure \ - --enable-coroutining \ - --enable-max-performance \ - --enable-depth-limit \ + --enable-coroutining \ + --enable-max-performance \ + --enable-depth-limit \ --enable-dynamic-loading make %{?_smp_mflags} -(cd docs; make info) +make -C docs info %install @@ -96,7 +124,7 @@ find -name '*.c' -exec chmod 0644 '{}' ';' # 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 @@ -124,7 +152,7 @@ rm -rf $RPM_BUILD_ROOT %{_bindir}/yap %{_datadir}/Yap %{_libdir}/Yap -%{_libdir}/libYap.so* +%{_libdir}/libYap.so.* %{_infodir}/* @@ -143,6 +171,13 @@ rm -rf $RPM_BUILD_ROOT %changelog +* Wed Dec 08 2010 Petr Pisar - 5.1.3-3 +- Hack SWI-compatible libraries build system to be compilable (bug #660965) +- Correct spec file syntax (white spaces, percentages) +- Convert documentation into UTF-8/CR +- Do not put unversioned library into main package +- Make docs subpackege architecture independent + * Mon Jul 27 2009 Fedora Release Engineering - 5.1.3-2 - Rebuilt for https://fedoraproject.org/wiki/Fedora_12_Mass_Rebuild @@ -196,7 +231,7 @@ rm -rf $RPM_BUILD_ROOT - New Version 5.0.0 * Sat Jun 18 2005 Gerard Milmeister - 4.5.5-5 -- Use %{_prefix}/lib for x86_64 +- Use %%{_prefix}/lib for x86_64 * Sat Jun 18 2005 Gerard Milmeister - 4.5.5-4 - Fix for non-i386 compilers From 60b065399a8c776bd551360ede40427803a79498 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Petr=20P=C3=ADsa=C5=99?= Date: Mon, 20 Dec 2010 18:05:54 +0100 Subject: [PATCH 10/68] Reorder metadata in spec file --- yap.spec | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/yap.spec b/yap.spec index cd5bdf1..d473a18 100644 --- a/yap.spec +++ b/yap.spec @@ -1,11 +1,10 @@ Name: yap Version: 5.1.3 -Release: 3%{?dist} - +Release: 4%{?dist} Summary: High-performance Prolog Compiler - Group: Development/Languages License: Artistic 2.0 or LGPLv2+ +URL: http://www.ncc.up.pt/~vsc/Yap Source: http://www.ncc.up.pt/~vsc/Yap/current/Yap-%{version}.tar.gz Source1: guard_entailment.pl Source2: chr_translate_bootstrap1.pl @@ -15,7 +14,6 @@ Patch1: Yap-noni386.patch Patch2: Yap-creat.patch # config.sub in the tarball is too old for ppc64 Patch3: Yap-5.1.1-config.sub.patch -URL: http://www.ncc.up.pt/~vsc/Yap BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) BuildRequires: readline-devel, gmp-devel, texinfo Requires(post): /sbin/install-info, /sbin/ldconfig @@ -171,6 +169,9 @@ rm -rf $RPM_BUILD_ROOT %changelog +* Mon Dec 20 2010 Petr Pisar - 5.1.3-4 +- Reorder metadata in spec file + * Wed Dec 08 2010 Petr Pisar - 5.1.3-3 - Hack SWI-compatible libraries build system to be compilable (bug #660965) - Correct spec file syntax (white spaces, percentages) From 44d9ae060b68a53ea2ed6d80be72893efe223b31 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Petr=20P=C3=ADsa=C5=99?= Date: Mon, 20 Dec 2010 18:35:59 +0100 Subject: [PATCH 11/68] Make 6.2.0 prepable --- Yap-5.1.1-config.sub.patch | 1059 ------------------------------------ Yap-creat.patch | 21 - yap.spec | 49 +- 3 files changed, 24 insertions(+), 1105 deletions(-) delete mode 100644 Yap-5.1.1-config.sub.patch delete mode 100644 Yap-creat.patch diff --git a/Yap-5.1.1-config.sub.patch b/Yap-5.1.1-config.sub.patch deleted file mode 100644 index b76e557..0000000 --- a/Yap-5.1.1-config.sub.patch +++ /dev/null @@ -1,1059 +0,0 @@ -diff -Naur Yap-5.1.1.orig/config.sub Yap-5.1.1/config.sub ---- Yap-5.1.1.orig/config.sub 2001-06-11 17:12:07.000000000 +0200 -+++ Yap-5.1.1/config.sub 2009-03-01 05:26:18.000000000 +0100 -@@ -1,9 +1,10 @@ - #! /bin/sh - # Configuration validation subroutine script. --# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001 -+# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, -+# 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008 - # Free Software Foundation, Inc. - --timestamp='2001-05-30' -+timestamp='2009-02-03' - - # This file is (in principle) common to ALL GNU software. - # The presence of a machine in this file suggests that SOME GNU software -@@ -21,15 +22,17 @@ - # - # You should have received a copy of the GNU General Public License - # along with this program; if not, write to the Free Software --# Foundation, Inc., 59 Temple Place - Suite 330, --# Boston, MA 02111-1307, USA. -- -+# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA -+# 02110-1301, USA. -+# - # As a special exception to the GNU General Public License, if you - # distribute this file as part of a program that contains a - # configuration script generated by Autoconf, you may include it under - # the same distribution terms that you use for the rest of that program. - --# Please send patches to . -+ -+# Please send patches to . Submit a context -+# diff and a properly formatted ChangeLog entry. - # - # Configuration subroutine to validate and canonicalize a configuration type. - # Supply the specified configuration type as an argument. -@@ -69,8 +72,8 @@ - version="\ - GNU config.sub ($timestamp) - --Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001 --Free Software Foundation, Inc. -+Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, -+2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc. - - This is free software; see the source for copying conditions. There is NO - warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." -@@ -82,11 +85,11 @@ - while test $# -gt 0 ; do - case $1 in - --time-stamp | --time* | -t ) -- echo "$timestamp" ; exit 0 ;; -+ echo "$timestamp" ; exit ;; - --version | -v ) -- echo "$version" ; exit 0 ;; -+ echo "$version" ; exit ;; - --help | --h* | -h ) -- echo "$usage"; exit 0 ;; -+ echo "$usage"; exit ;; - -- ) # Stop option processing - shift; break ;; - - ) # Use stdin as input. -@@ -98,7 +101,7 @@ - *local*) - # First pass through any local machine types. - echo $1 -- exit 0;; -+ exit ;; - - * ) - break ;; -@@ -117,7 +120,10 @@ - # Here we must recognize all the valid KERNEL-OS combinations. - maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'` - case $maybe_os in -- nto-qnx* | linux-gnu* | storm-chaos* | os2-emx* | windows32-*) -+ nto-qnx* | linux-gnu* | linux-dietlibc | linux-newlib* | linux-uclibc* | \ -+ uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* | \ -+ kopensolaris*-gnu* | \ -+ storm-chaos* | os2-emx* | rtmk-nova*) - os=-$maybe_os - basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'` - ;; -@@ -143,7 +149,7 @@ - -convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\ - -c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \ - -harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \ -- -apple | -axis) -+ -apple | -axis | -knuth | -cray) - os= - basic_machine=$1 - ;; -@@ -157,9 +163,21 @@ - os=-vxworks - basic_machine=$1 - ;; -+ -chorusos*) -+ os=-chorusos -+ basic_machine=$1 -+ ;; -+ -chorusrdb) -+ os=-chorusrdb -+ basic_machine=$1 -+ ;; - -hiux*) - os=-hiuxwe2 - ;; -+ -sco6) -+ os=-sco5v6 -+ basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` -+ ;; - -sco5) - os=-sco3.2v5 - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` -@@ -176,6 +194,10 @@ - # Don't forget version if it is 3.2v4 or newer. - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` - ;; -+ -sco5v6*) -+ # Don't forget version if it is 3.2v4 or newer. -+ basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` -+ ;; - -sco*) - os=-sco3.2v2 - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` -@@ -215,26 +237,60 @@ - case $basic_machine in - # Recognize the basic CPU types without company name. - # Some are omitted here because they have special meanings below. -- tahoe | i860 | ia64 | m32r | m68k | m68000 | m88k | ns32k | arc \ -- | arm | arme[lb] | arm[bl]e | armv[2345] | armv[345][lb] | strongarm | xscale \ -- | pyramid | mn10200 | mn10300 | tron | a29k \ -- | 580 | i960 | h8300 \ -- | x86 | ppcbe | mipsbe | mipsle | shbe | shle \ -- | hppa | hppa1.0 | hppa1.1 | hppa2.0 | hppa2.0w | hppa2.0n \ -- | hppa64 \ -- | alpha | alphaev[4-8] | alphaev56 | alphapca5[67] \ -- | alphaev6[78] \ -- | we32k | ns16k | clipper | i370 | sh | sh[34] \ -- | powerpc | powerpcle \ -- | 1750a | dsp16xx | pdp10 | pdp11 \ -- | mips16 | mips64 | mipsel | mips64el \ -- | mips64orion | mips64orionel | mipstx39 | mipstx39el \ -- | mips64vr4300 | mips64vr4300el | mips64vr4100 | mips64vr4100el \ -- | mips64vr5000 | miprs64vr5000el | mcore | s390 | s390x \ -- | sparc | sparclet | sparclite | sparc64 | sparcv9 | sparcv9b \ -- | v850 | c4x \ -- | thumb | d10v | d30v | fr30 | avr | openrisc | tic80 \ -- | pj | pjl | h8500 | z8k) -+ 1750a | 580 \ -+ | a29k \ -+ | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \ -+ | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \ -+ | am33_2.0 \ -+ | arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr | avr32 \ -+ | bfin \ -+ | c4x | clipper \ -+ | d10v | d30v | dlx | dsp16xx \ -+ | fido | fr30 | frv \ -+ | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ -+ | i370 | i860 | i960 | ia64 \ -+ | ip2k | iq2000 \ -+ | lm32 \ -+ | m32c | m32r | m32rle | m68000 | m68k | m88k \ -+ | maxq | mb | microblaze | mcore | mep | metag \ -+ | mips | mipsbe | mipseb | mipsel | mipsle \ -+ | mips16 \ -+ | mips64 | mips64el \ -+ | mips64octeon | mips64octeonel \ -+ | mips64orion | mips64orionel \ -+ | mips64r5900 | mips64r5900el \ -+ | mips64vr | mips64vrel \ -+ | mips64vr4100 | mips64vr4100el \ -+ | mips64vr4300 | mips64vr4300el \ -+ | mips64vr5000 | mips64vr5000el \ -+ | mips64vr5900 | mips64vr5900el \ -+ | mipsisa32 | mipsisa32el \ -+ | mipsisa32r2 | mipsisa32r2el \ -+ | mipsisa64 | mipsisa64el \ -+ | mipsisa64r2 | mipsisa64r2el \ -+ | mipsisa64sb1 | mipsisa64sb1el \ -+ | mipsisa64sr71k | mipsisa64sr71kel \ -+ | mipstx39 | mipstx39el \ -+ | mn10200 | mn10300 \ -+ | mt \ -+ | msp430 \ -+ | nios | nios2 \ -+ | ns16k | ns32k \ -+ | or32 \ -+ | pdp10 | pdp11 | pj | pjl \ -+ | powerpc | powerpc64 | powerpc64le | powerpcle | ppcbe \ -+ | pyramid \ -+ | score \ -+ | sh | sh[1234] | sh[24]a | sh[24]aeb | sh[23]e | sh[34]eb | sheb | shbe | shle | sh[1234]le | sh3ele \ -+ | sh64 | sh64le \ -+ | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \ -+ | sparcv8 | sparcv9 | sparcv9b | sparcv9v \ -+ | spu | strongarm \ -+ | tahoe | thumb | tic4x | tic80 | tron \ -+ | v850 | v850e \ -+ | we32k \ -+ | x86 | xc16x | xscale | xscalee[bl] | xstormy16 | xtensa \ -+ | z8k | z80) - basic_machine=$basic_machine-unknown - ;; - m6811 | m68hc11 | m6812 | m68hc12) -@@ -244,6 +300,9 @@ - ;; - m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k) - ;; -+ ms1) -+ basic_machine=mt-unknown -+ ;; - - # We use `pc' rather than `unknown' - # because (1) that's what they normally are, and -@@ -257,31 +316,73 @@ - exit 1 - ;; - # Recognize the basic CPU types with company name. -- # FIXME: clean up the formatting here. -- vax-* | tahoe-* | i*86-* | i860-* | ia64-* | m32r-* | m68k-* | m68000-* \ -- | m88k-* | sparc-* | ns32k-* | fx80-* | arc-* | c[123]* \ -- | arm-* | armbe-* | armle-* | armv*-* | strongarm-* | xscale-* \ -- | mips-* | pyramid-* | tron-* | a29k-* | romp-* | rs6000-* \ -- | power-* | none-* | 580-* | cray2-* | h8300-* | h8500-* | i960-* \ -- | xmp-* | ymp-* \ -- | x86-* | ppcbe-* | mipsbe-* | mipsle-* | shbe-* | shle-* \ -- | hppa-* | hppa1.0-* | hppa1.1-* | hppa2.0-* | hppa2.0w-* \ -- | hppa2.0n-* | hppa64-* \ -- | alpha-* | alphaev[4-8]-* | alphaev56-* | alphapca5[67]-* \ -- | alphaev6[78]-* \ -- | we32k-* | cydra-* | ns16k-* | pn-* | np1-* | xps100-* \ -- | clipper-* | orion-* \ -- | sparclite-* | pdp10-* | pdp11-* | sh-* | sh[34]-* | sh[34]eb-* \ -- | powerpc-* | powerpcle-* | sparc64-* | sparcv9-* | sparcv9b-* | sparc86x-* \ -- | mips16-* | mips64-* | mipsel-* \ -- | mips64el-* | mips64orion-* | mips64orionel-* \ -- | mips64vr4100-* | mips64vr4100el-* | mips64vr4300-* | mips64vr4300el-* \ -- | mipstx39-* | mipstx39el-* | mcore-* \ -- | f30[01]-* | f700-* | s390-* | s390x-* | sv1-* | t3e-* \ -- | [cjt]90-* \ -- | m88110-* | m680[01234]0-* | m683?2-* | m68360-* | z8k-* | d10v-* \ -- | thumb-* | v850-* | d30v-* | tic30-* | tic80-* | c30-* | fr30-* \ -- | bs2000-* | tic54x-* | c54x-* | x86_64-* | pj-* | pjl-*) -+ 580-* \ -+ | a29k-* \ -+ | alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \ -+ | alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \ -+ | alphapca5[67]-* | alpha64pca5[67]-* | arc-* \ -+ | arm-* | armbe-* | armle-* | armeb-* | armv*-* \ -+ | avr-* | avr32-* \ -+ | bfin-* | bs2000-* \ -+ | c[123]* | c30-* | [cjt]90-* | c4x-* | c54x-* | c55x-* | c6x-* \ -+ | clipper-* | craynv-* | cydra-* \ -+ | d10v-* | d30v-* | dlx-* \ -+ | elxsi-* \ -+ | f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \ -+ | h8300-* | h8500-* \ -+ | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \ -+ | i*86-* | i860-* | i960-* | ia64-* \ -+ | ip2k-* | iq2000-* \ -+ | lm32-* \ -+ | m32c-* | m32r-* | m32rle-* \ -+ | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \ -+ | m88110-* | m88k-* | maxq-* | mcore-* | metag-* \ -+ | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \ -+ | mips16-* \ -+ | mips64-* | mips64el-* \ -+ | mips64octeon-* | mips64octeonel-* \ -+ | mips64orion-* | mips64orionel-* \ -+ | mips64r5900-* | mips64r5900el-* \ -+ | mips64vr-* | mips64vrel-* \ -+ | mips64vr4100-* | mips64vr4100el-* \ -+ | mips64vr4300-* | mips64vr4300el-* \ -+ | mips64vr5000-* | mips64vr5000el-* \ -+ | mips64vr5900-* | mips64vr5900el-* \ -+ | mipsisa32-* | mipsisa32el-* \ -+ | mipsisa32r2-* | mipsisa32r2el-* \ -+ | mipsisa64-* | mipsisa64el-* \ -+ | mipsisa64r2-* | mipsisa64r2el-* \ -+ | mipsisa64sb1-* | mipsisa64sb1el-* \ -+ | mipsisa64sr71k-* | mipsisa64sr71kel-* \ -+ | mipstx39-* | mipstx39el-* \ -+ | mmix-* \ -+ | mt-* \ -+ | msp430-* \ -+ | nios-* | nios2-* \ -+ | none-* | np1-* | ns16k-* | ns32k-* \ -+ | orion-* \ -+ | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \ -+ | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* | ppcbe-* \ -+ | pyramid-* \ -+ | romp-* | rs6000-* \ -+ | sh-* | sh[1234]-* | sh[24]a-* | sh[24]aeb-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \ -+ | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \ -+ | sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \ -+ | sparclite-* \ -+ | sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | strongarm-* | sv1-* | sx?-* \ -+ | tahoe-* | thumb-* \ -+ | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* | tile-* \ -+ | tron-* \ -+ | v850-* | v850e-* | vax-* \ -+ | we32k-* \ -+ | x86-* | x86_64-* | xc16x-* | xps100-* | xscale-* | xscalee[bl]-* \ -+ | xstormy16-* | xtensa*-* \ -+ | ymp-* \ -+ | z8k-* | z80-*) -+ ;; -+ # Recognize the basic CPU types without company name, with glob match. -+ xtensa*) -+ basic_machine=$basic_machine-unknown - ;; - # Recognize the various machine names and aliases which stand - # for a CPU type and a company and sometimes even an OS. -@@ -299,6 +400,9 @@ - basic_machine=a29k-amd - os=-udi - ;; -+ abacus) -+ basic_machine=abacus-unknown -+ ;; - adobe68k) - basic_machine=m68010-adobe - os=-scout -@@ -313,6 +417,12 @@ - basic_machine=a29k-none - os=-bsd - ;; -+ amd64) -+ basic_machine=x86_64-pc -+ ;; -+ amd64-*) -+ basic_machine=x86_64-`echo $basic_machine | sed 's/^[^-]*-//'` -+ ;; - amdahl) - basic_machine=580-amdahl - os=-sysv -@@ -336,6 +446,10 @@ - basic_machine=m68k-apollo - os=-bsd - ;; -+ aros) -+ basic_machine=i386-pc -+ os=-aros -+ ;; - aux) - basic_machine=m68k-apple - os=-aux -@@ -344,6 +458,22 @@ - basic_machine=ns32k-sequent - os=-dynix - ;; -+ blackfin) -+ basic_machine=bfin-unknown -+ os=-linux -+ ;; -+ blackfin-*) -+ basic_machine=bfin-`echo $basic_machine | sed 's/^[^-]*-//'` -+ os=-linux -+ ;; -+ c90) -+ basic_machine=c90-cray -+ os=-unicos -+ ;; -+ cegcc) -+ basic_machine=arm-unknown -+ os=-cegcc -+ ;; - convex-c1) - basic_machine=c1-convex - os=-bsd -@@ -364,30 +494,45 @@ - basic_machine=c38-convex - os=-bsd - ;; -- cray | ymp) -- basic_machine=ymp-cray -+ cray | j90) -+ basic_machine=j90-cray - os=-unicos - ;; -- cray2) -- basic_machine=cray2-cray -- os=-unicos -+ craynv) -+ basic_machine=craynv-cray -+ os=-unicosmp - ;; -- [cjt]90) -- basic_machine=${basic_machine}-cray -- os=-unicos -+ cr16) -+ basic_machine=cr16-unknown -+ os=-elf - ;; - crds | unos) - basic_machine=m68k-crds - ;; -+ crisv32 | crisv32-* | etraxfs*) -+ basic_machine=crisv32-axis -+ ;; - cris | cris-* | etrax*) - basic_machine=cris-axis - ;; -+ crx) -+ basic_machine=crx-unknown -+ os=-elf -+ ;; - da30 | da30-*) - basic_machine=m68k-da30 - ;; - decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn) - basic_machine=mips-dec - ;; -+ decsystem10* | dec10*) -+ basic_machine=pdp10-dec -+ os=-tops10 -+ ;; -+ decsystem20* | dec20*) -+ basic_machine=pdp10-dec -+ os=-tops20 -+ ;; - delta | 3300 | motorola-3300 | motorola-delta \ - | 3300-motorola | delta-motorola) - basic_machine=m68k-motorola -@@ -396,6 +541,14 @@ - basic_machine=m88k-motorola - os=-sysv3 - ;; -+ dicos) -+ basic_machine=i686-pc -+ os=-dicos -+ ;; -+ djgpp) -+ basic_machine=i586-pc -+ os=-msdosdjgpp -+ ;; - dpx20 | dpx20-*) - basic_machine=rs6000-bull - os=-bosx -@@ -546,6 +699,14 @@ - basic_machine=m68k-isi - os=-sysv - ;; -+ m68knommu) -+ basic_machine=m68k-unknown -+ os=-linux -+ ;; -+ m68knommu-*) -+ basic_machine=m68k-`echo $basic_machine | sed 's/^[^-]*-//'` -+ os=-linux -+ ;; - m88k-omron*) - basic_machine=m88k-omron - ;; -@@ -561,6 +722,10 @@ - basic_machine=i386-pc - os=-mingw32 - ;; -+ mingw32ce) -+ basic_machine=arm-unknown -+ os=-mingw32ce -+ ;; - miniframe) - basic_machine=m68000-convergent - ;; -@@ -568,32 +733,27 @@ - basic_machine=m68k-atari - os=-mint - ;; -- mipsel*-linux*) -- basic_machine=mipsel-unknown -- os=-linux-gnu -- ;; -- mips*-linux*) -- basic_machine=mips-unknown -- os=-linux-gnu -- ;; - mips3*-*) - basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'` - ;; - mips3*) - basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown - ;; -- mmix*) -- basic_machine=mmix-knuth -- os=-mmixware -- ;; - monitor) - basic_machine=m68k-rom68k - os=-coff - ;; -+ morphos) -+ basic_machine=powerpc-unknown -+ os=-morphos -+ ;; - msdos) - basic_machine=i386-pc - os=-msdos - ;; -+ ms1-*) -+ basic_machine=`echo $basic_machine | sed -e 's/ms1-/mt-/'` -+ ;; - mvs) - basic_machine=i370-ibm - os=-mvs -@@ -669,6 +829,13 @@ - basic_machine=hppa1.1-oki - os=-proelf - ;; -+ openrisc | openrisc-*) -+ basic_machine=or32-unknown -+ ;; -+ os400) -+ basic_machine=powerpc-ibm -+ os=-os400 -+ ;; - OSE68000 | ose68000) - basic_machine=m68000-ericsson - os=-ose -@@ -685,48 +852,78 @@ - basic_machine=i860-intel - os=-osf - ;; -+ parisc) -+ basic_machine=hppa-unknown -+ os=-linux -+ ;; -+ parisc-*) -+ basic_machine=hppa-`echo $basic_machine | sed 's/^[^-]*-//'` -+ os=-linux -+ ;; - pbd) - basic_machine=sparc-tti - ;; - pbb) - basic_machine=m68k-tti - ;; -- pc532 | pc532-*) -+ pc532 | pc532-*) - basic_machine=ns32k-pc532 - ;; -- pentium | p5 | k5 | k6 | nexgen) -+ pc98) -+ basic_machine=i386-pc -+ ;; -+ pc98-*) -+ basic_machine=i386-`echo $basic_machine | sed 's/^[^-]*-//'` -+ ;; -+ pentium | p5 | k5 | k6 | nexgen | viac3) - basic_machine=i586-pc - ;; -- pentiumpro | p6 | 6x86 | athlon) -+ pentiumpro | p6 | 6x86 | athlon | athlon_*) - basic_machine=i686-pc - ;; -- pentiumii | pentium2) -+ pentiumii | pentium2 | pentiumiii | pentium3) - basic_machine=i686-pc - ;; -- pentium-* | p5-* | k5-* | k6-* | nexgen-*) -+ pentium4) -+ basic_machine=i786-pc -+ ;; -+ pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*) - basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - pentiumpro-* | p6-* | 6x86-* | athlon-*) - basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; -- pentiumii-* | pentium2-*) -+ pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*) - basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; -+ pentium4-*) -+ basic_machine=i786-`echo $basic_machine | sed 's/^[^-]*-//'` -+ ;; - pn) - basic_machine=pn-gould - ;; - power) basic_machine=power-ibm - ;; - ppc) basic_machine=powerpc-unknown -- ;; -+ ;; - ppc-*) basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - ppcle | powerpclittle | ppc-le | powerpc-little) - basic_machine=powerpcle-unknown -- ;; -+ ;; - ppcle-* | powerpclittle-*) - basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; -+ ppc64) basic_machine=powerpc64-unknown -+ ;; -+ ppc64-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'` -+ ;; -+ ppc64le | powerpc64little | ppc64-le | powerpc64-little) -+ basic_machine=powerpc64le-unknown -+ ;; -+ ppc64le-* | powerpc64little-*) -+ basic_machine=powerpc64le-`echo $basic_machine | sed 's/^[^-]*-//'` -+ ;; - ps2) - basic_machine=i386-ibm - ;; -@@ -734,6 +931,10 @@ - basic_machine=i586-unknown - os=-pw32 - ;; -+ rdos) -+ basic_machine=i386-pc -+ os=-rdos -+ ;; - rom68k) - basic_machine=m68k-rom68k - os=-coff -@@ -744,10 +945,30 @@ - rtpc | rtpc-*) - basic_machine=romp-ibm - ;; -+ s390 | s390-*) -+ basic_machine=s390-ibm -+ ;; -+ s390x | s390x-*) -+ basic_machine=s390x-ibm -+ ;; - sa29200) - basic_machine=a29k-amd - os=-udi - ;; -+ sb1) -+ basic_machine=mipsisa64sb1-unknown -+ ;; -+ sb1el) -+ basic_machine=mipsisa64sb1el-unknown -+ ;; -+ sde) -+ basic_machine=mipsisa32-sde -+ os=-elf -+ ;; -+ sei) -+ basic_machine=mips-sei -+ os=-seiux -+ ;; - sequent) - basic_machine=i386-sequent - ;; -@@ -755,7 +976,13 @@ - basic_machine=sh-hitachi - os=-hms - ;; -- sparclite-wrs) -+ sh5el) -+ basic_machine=sh5le-unknown -+ ;; -+ sh64) -+ basic_machine=sh64-unknown -+ ;; -+ sparclite-wrs | simso-wrs) - basic_machine=sparclite-wrs - os=-vxworks - ;; -@@ -822,22 +1049,46 @@ - os=-dynix - ;; - t3e) -- basic_machine=t3e-cray -+ basic_machine=alphaev5-cray -+ os=-unicos -+ ;; -+ t90) -+ basic_machine=t90-cray - os=-unicos - ;; - tic54x | c54x*) - basic_machine=tic54x-unknown - os=-coff - ;; -+ tic55x | c55x*) -+ basic_machine=tic55x-unknown -+ os=-coff -+ ;; -+ tic6x | c6x*) -+ basic_machine=tic6x-unknown -+ os=-coff -+ ;; -+ tile*) -+ basic_machine=tile-unknown -+ os=-linux-gnu -+ ;; - tx39) - basic_machine=mipstx39-unknown - ;; - tx39el) - basic_machine=mipstx39el-unknown - ;; -+ toad1) -+ basic_machine=pdp10-xkl -+ os=-tops20 -+ ;; - tower | tower-32) - basic_machine=m68k-ncr - ;; -+ tpf) -+ basic_machine=s390x-ibm -+ os=-tpf -+ ;; - udi29k) - basic_machine=a29k-amd - os=-udi -@@ -859,8 +1110,8 @@ - os=-vms - ;; - vpp*|vx|vx-*) -- basic_machine=f301-fujitsu -- ;; -+ basic_machine=f301-fujitsu -+ ;; - vxworks960) - basic_machine=i960-wrs - os=-vxworks -@@ -881,21 +1132,25 @@ - basic_machine=hppa1.1-winbond - os=-proelf - ;; -- windows32) -- basic_machine=i386-pc -- os=-windows32-msvcrt -- ;; -- xmp) -- basic_machine=xmp-cray -- os=-unicos -+ xbox) -+ basic_machine=i686-pc -+ os=-mingw32 - ;; -- xps | xps100) -+ xps | xps100) - basic_machine=xps100-honeywell - ;; -+ ymp) -+ basic_machine=ymp-cray -+ os=-unicos -+ ;; - z8k-*-coff) - basic_machine=z8k-unknown - os=-sim - ;; -+ z80-*-coff) -+ basic_machine=z80-unknown -+ os=-sim -+ ;; - none) - basic_machine=none-none - os=-none -@@ -912,16 +1167,12 @@ - op60c) - basic_machine=hppa1.1-oki - ;; -- mips) -- if [ x$os = x-linux-gnu ]; then -- basic_machine=mips-unknown -- else -- basic_machine=mips-mips -- fi -- ;; - romp) - basic_machine=romp-ibm - ;; -+ mmix) -+ basic_machine=mmix-knuth -+ ;; - rs6000) - basic_machine=rs6000-ibm - ;; -@@ -938,13 +1189,13 @@ - we32k) - basic_machine=we32k-att - ;; -- sh3 | sh4) -+ sh[1234] | sh[24]a | sh[24]aeb | sh[34]eb | sh[1234]le | sh[23]ele) - basic_machine=sh-unknown - ;; -- sparc | sparcv9 | sparcv9b) -+ sparc | sparcv8 | sparcv9 | sparcv9b | sparcv9v) - basic_machine=sparc-sun - ;; -- cydra) -+ cydra) - basic_machine=cydra-cydrome - ;; - orion) -@@ -959,10 +1210,6 @@ - pmac | pmac-mpw) - basic_machine=powerpc-apple - ;; -- c4x*) -- basic_machine=c4x-none -- os=-coff -- ;; - *-unknown) - # Make sure to match an already-canonicalized machine name. - ;; -@@ -1014,19 +1261,28 @@ - -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \ - | -*vms* | -sco* | -esix* | -isc* | -aix* | -sunos | -sunos[34]*\ - | -hpux* | -unos* | -osf* | -luna* | -dgux* | -solaris* | -sym* \ -+ | -kopensolaris* \ - | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \ -- | -aos* \ -+ | -aos* | -aros* \ - | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \ - | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \ -- | -hiux* | -386bsd* | -netbsd* | -openbsd* | -freebsd* | -riscix* \ -- | -lynxos* | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \ -+ | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \ -+ | -openbsd* | -solidbsd* \ -+ | -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \ -+ | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \ - | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \ - | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \ -+ | -chorusos* | -chorusrdb* | -cegcc* \ - | -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \ -- | -mingw32* | -linux-gnu* | -uxpv* | -beos* | -mpeix* | -udk* \ -- | -interix* | -uwin* | -rhapsody* | -darwin* | -opened* \ -+ | -mingw32* | -linux-gnu* | -linux-newlib* | -linux-uclibc* \ -+ | -uxpv* | -beos* | -mpeix* | -udk* \ -+ | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \ - | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \ -- | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* | -os2*) -+ | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \ -+ | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \ -+ | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \ -+ | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \ -+ | -skyos* | -haiku* | -rdos* | -toppers* | -drops*) - # Remember, each alternative MUST END IN *, to match a version number. - ;; - -qnx*) -@@ -1038,16 +1294,21 @@ - ;; - esac - ;; -+ -nto-qnx*) -+ ;; - -nto*) -- os=-nto-qnx -+ os=`echo $os | sed -e 's|nto|nto-qnx|'` - ;; - -sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \ -- | -windows* | -osx | -abug | -netware* | -os9* | -beos* \ -+ | -windows* | -osx | -abug | -netware* | -os9* | -beos* | -haiku* \ - | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*) - ;; - -mac*) - os=`echo $os | sed -e 's|mac|macos|'` - ;; -+ -linux-dietlibc) -+ os=-linux-dietlibc -+ ;; - -linux*) - os=`echo $os | sed -e 's|linux|linux-gnu|'` - ;; -@@ -1060,6 +1321,9 @@ - -opened*) - os=-openedition - ;; -+ -os400*) -+ os=-os400 -+ ;; - -wince*) - os=-wince - ;; -@@ -1078,14 +1342,23 @@ - -acis*) - os=-aos - ;; -+ -atheos*) -+ os=-atheos -+ ;; -+ -syllable*) -+ os=-syllable -+ ;; - -386bsd) - os=-bsd - ;; - -ctix* | -uts*) - os=-sysv - ;; -+ -nova*) -+ os=-rtmk-nova -+ ;; - -ns2 ) -- os=-nextstep2 -+ os=-nextstep2 - ;; - -nsk*) - os=-nsk -@@ -1097,6 +1370,9 @@ - -sinix*) - os=-sysv4 - ;; -+ -tpf*) -+ os=-tpf -+ ;; - -triton*) - os=-sysv3 - ;; -@@ -1124,8 +1400,20 @@ - -xenix) - os=-xenix - ;; -- -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) -- os=-mint -+ -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) -+ os=-mint -+ ;; -+ -aros*) -+ os=-aros -+ ;; -+ -kaos*) -+ os=-kaos -+ ;; -+ -zvmoe) -+ os=-zvmoe -+ ;; -+ -dicos*) -+ os=-dicos - ;; - -none) - ;; -@@ -1149,6 +1437,12 @@ - # system, and we'll never get to this point. - - case $basic_machine in -+ score-*) -+ os=-elf -+ ;; -+ spu-*) -+ os=-elf -+ ;; - *-acorn) - os=-riscix1.2 - ;; -@@ -1158,10 +1452,14 @@ - arm*-semi) - os=-aout - ;; -+ c4x-* | tic4x-*) -+ os=-coff -+ ;; -+ # This must come before the *-dec entry. - pdp10-*) - os=-tops20 - ;; -- pdp11-*) -+ pdp11-*) - os=-none - ;; - *-dec | vax-*) -@@ -1182,12 +1480,18 @@ - m68*-cisco) - os=-aout - ;; -+ mep-*) -+ os=-elf -+ ;; - mips*-cisco) - os=-elf - ;; - mips*-*) - os=-elf - ;; -+ or32-*) -+ os=-coff -+ ;; - *-tti) # must be before sparc entry or we get the wrong os. - os=-sysv3 - ;; -@@ -1197,9 +1501,15 @@ - *-be) - os=-beos - ;; -+ *-haiku) -+ os=-haiku -+ ;; - *-ibm) - os=-aix - ;; -+ *-knuth) -+ os=-mmixware -+ ;; - *-wec) - os=-proelf - ;; -@@ -1251,19 +1561,19 @@ - *-next) - os=-nextstep3 - ;; -- *-gould) -+ *-gould) - os=-sysv - ;; -- *-highlevel) -+ *-highlevel) - os=-bsd - ;; - *-encore) - os=-bsd - ;; -- *-sgi) -+ *-sgi) - os=-irix - ;; -- *-siemens) -+ *-siemens) - os=-sysv4 - ;; - *-masscomp) -@@ -1332,10 +1642,16 @@ - -mvs* | -opened*) - vendor=ibm - ;; -+ -os400*) -+ vendor=ibm -+ ;; - -ptx*) - vendor=sequent - ;; -- -vxsim* | -vxworks*) -+ -tpf*) -+ vendor=ibm -+ ;; -+ -vxsim* | -vxworks* | -windiss*) - vendor=wrs - ;; - -aux*) -@@ -1350,13 +1666,16 @@ - -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) - vendor=atari - ;; -+ -vos*) -+ vendor=stratus -+ ;; - esac - basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"` - ;; - esac - - echo $basic_machine$os --exit 0 -+exit - - # Local variables: - # eval: (add-hook 'write-file-hooks 'time-stamp) diff --git a/Yap-creat.patch b/Yap-creat.patch deleted file mode 100644 index 257bdf6..0000000 --- a/Yap-creat.patch +++ /dev/null @@ -1,21 +0,0 @@ -diff -up Yap-5.1.1/C/alloc.c.creat Yap-5.1.1/C/alloc.c ---- Yap-5.1.1/C/alloc.c.creat 2008-04-10 20:32:14.000000000 +0200 -+++ Yap-5.1.1/C/alloc.c 2008-04-10 20:32:45.000000000 +0200 -@@ -796,7 +796,7 @@ InitWorkSpace(Int s) - itos(getpid(), &file[12]); - #endif /* HAVE_TMPNAM */ - #endif /* HAVE_MKSTEMP */ -- fd = open(file, O_CREAT|O_RDWR); -+ fd = open(file, O_CREAT|O_RDWR, 0644); - if (fd < 0) { - Yap_Error(FATAL_ERROR, TermNil, "mmap could not open %s", file); - return NULL; -@@ -909,7 +909,7 @@ ExtendWorkSpace(Int s, int fixed_allocat - itos(getpid(), &file[12]); - #endif /* HAVE_TMPNAM */ - #endif /* HAVE_MKSTEMP */ -- fd = open(file, O_CREAT|O_RDWR); -+ fd = open(file, O_CREAT|O_RDWR, 0644); - if (fd < 0) { - Yap_ErrorMessage = Yap_ErrorSay; - snprintf4(Yap_ErrorMessage, MAX_ERROR_MSG_SIZE, diff --git a/yap.spec b/yap.spec index d473a18..587210e 100644 --- a/yap.spec +++ b/yap.spec @@ -1,19 +1,16 @@ Name: yap -Version: 5.1.3 -Release: 4%{?dist} +Version: 6.2.0 +Release: 1%{?dist} Summary: High-performance Prolog Compiler Group: Development/Languages License: Artistic 2.0 or LGPLv2+ URL: http://www.ncc.up.pt/~vsc/Yap -Source: http://www.ncc.up.pt/~vsc/Yap/current/Yap-%{version}.tar.gz +Source: http://www.ncc.up.pt/~vsc/Yap/current/%{name}-%{version}.tar.gz Source1: guard_entailment.pl Source2: chr_translate_bootstrap1.pl Source3: chr_translate_bootstrap2.pl Source4: chr_translate.pl Patch1: Yap-noni386.patch -Patch2: Yap-creat.patch -# config.sub in the tarball is too old for ppc64 -Patch3: Yap-5.1.1-config.sub.patch BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) BuildRequires: readline-devel, gmp-devel, texinfo Requires(post): /sbin/install-info, /sbin/ldconfig @@ -47,13 +44,12 @@ Documentation for Yap. %prep -%setup -q -n Yap-%{version} +%setup -q -n %{name}-6 %patch1 -p1 -%patch2 -p1 -%patch3 -p1 find -name CVS -print0 | xargs -0 rm -rf -cp %{SOURCE1} %{SOURCE2} %{SOURCE3} %{SOURCE4} LGPL/chr +# chr and clpqr are optional and they are a copy from SWI Prolog +#cp %{SOURCE1} %{SOURCE2} %{SOURCE3} %{SOURCE4} LGPL/chr # remove redundant rpath sed -i '/-Wl,-R/d' configure @@ -65,20 +61,20 @@ sed -i 's/@DYNLIB_LD@/@DYNLIB_LD@ -Wl,-soname=@YAPLIB@.%{version} /g' Makefile.i find -name Makefile.in | xargs sed -i 's|$(ROOTDIR)/lib|$(ROOTDIR)/%{_lib}|' find -name Makefile.in | xargs sed -i 's|$(EROOTDIR)/lib|$(EROOTDIR)/%{_lib}|' -# Hack LGPL/chr build environment to run just build interpreter -# yap-6.2.0 have those SWI compatible libraries optional and separate. Package -# them as standalone package in the future and remove this ugly thing: -# Provide path to just built library and libc bindings -sed -i '/LGPL\/chr/ s|\(make install\)|LD_LIBRARY_PATH='"${PWD}:${PWD}/library/system"' \1|' Makefile.in -# Provide paths to Prolog libraries -mkdir -p LGPL/chr/usr/share && ln -s ../../../../library LGPL/chr/usr/share/Yap -mkdir -p library/usr/share && ln -s ../.. library/usr/share/Yap -# Provide paths to parent Prolog libraries -ln -s {../LGPL,library}/maplist.pl -ln -s {../GPL,library}/aggregate.pl -ln -s {../GPL,library}/occurs.yap -ln -s {../GPL,library}/pairs.pl -ln -s {../GPL,library}/error.pl +## Hack LGPL/chr build environment to run just build interpreter +## yap-6.2.0 have those SWI compatible libraries optional and separate. Package +## them as standalone package in the future and remove this ugly thing: +## Provide path to just built library and libc bindings +#sed -i '/LGPL\/chr/ s|\(make install\)|LD_LIBRARY_PATH='"${PWD}:${PWD}/library/system"' \1|' Makefile.in +## Provide paths to Prolog libraries +#mkdir -p LGPL/chr/usr/share && ln -s ../../../../library LGPL/chr/usr/share/Yap +#mkdir -p library/usr/share && ln -s ../.. library/usr/share/Yap +## Provide paths to parent Prolog libraries +#ln -s {../LGPL,library}/maplist.pl +#ln -s {../GPL,library}/aggregate.pl +#ln -s {../GPL,library}/occurs.yap +#ln -s {../GPL,library}/pairs.pl +#ln -s {../GPL,library}/error.pl # Fix file encoding for F in README changes.css; do @@ -169,8 +165,11 @@ rm -rf $RPM_BUILD_ROOT %changelog -* Mon Dec 20 2010 Petr Pisar - 5.1.3-4 +* Mon Dec 20 2010 Petr Pisar - 6.2.0-1 - Reorder metadata in spec file +- 6.2.0 bump +- Remove uneeded Yap-creat.patch +- Remove uneeded Yap-5.1.1-config.sub.patch * Wed Dec 08 2010 Petr Pisar - 5.1.3-3 - Hack SWI-compatible libraries build system to be compilable (bug #660965) From 5ae19e749589d9c96ced226a200e817a96c0d49a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Petr=20P=C3=ADsa=C5=99?= Date: Tue, 21 Dec 2010 10:39:09 +0100 Subject: [PATCH 12/68] Locate mysql by mysql_config --- yap-6.2.0-Locate-mysql-by-mysql_config.patch | 25 ++++++++++++++++++++ yap.spec | 6 +++++ 2 files changed, 31 insertions(+) create mode 100644 yap-6.2.0-Locate-mysql-by-mysql_config.patch diff --git a/yap-6.2.0-Locate-mysql-by-mysql_config.patch b/yap-6.2.0-Locate-mysql-by-mysql_config.patch new file mode 100644 index 0000000..ae81528 --- /dev/null +++ b/yap-6.2.0-Locate-mysql-by-mysql_config.patch @@ -0,0 +1,25 @@ +From 131213c12d09cdce8a56b5148ce753b0f5ae8e77 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Petr=20P=C3=ADsa=C5=99?= +Date: Tue, 21 Dec 2010 10:32:02 +0100 +Subject: [PATCH] Locate mysql by mysql_config + +--- + configure.in | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +diff --git a/configure.in b/configure.in +index 4ce9538..80208e5 100755 +--- a/configure.in ++++ b/configure.in +@@ -665,7 +665,7 @@ then + if test "$yap_cv_mysql" = yes + then + YAP_EXTRAS="$YAP_EXTRAS -DMYDDAS_MYSQL" +- LIBS="$LIBS -L${yap_cv_myddas}/lib/mysql -lmysqlclient " ++ LIBS="$LIBS $(mysql_config --libs) " + fi + + dnl check for odbc +-- +1.7.3.4 + diff --git a/yap.spec b/yap.spec index 587210e..0cf8918 100644 --- a/yap.spec +++ b/yap.spec @@ -11,8 +11,10 @@ Source2: chr_translate_bootstrap1.pl Source3: chr_translate_bootstrap2.pl Source4: chr_translate.pl Patch1: Yap-noni386.patch +Patch2: yap-6.2.0-Locate-mysql-by-mysql_config.patch BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) BuildRequires: readline-devel, gmp-devel, texinfo +BuildRequires: autoconf Requires(post): /sbin/install-info, /sbin/ldconfig Requires(postun): /sbin/install-info, /sbin/ldconfig @@ -46,6 +48,9 @@ Documentation for Yap. %prep %setup -q -n %{name}-6 %patch1 -p1 +%patch2 -p1 -b .mysql_config +# Regerenate configure because of yap-6.2.0-Locate-mysql-by-mysql_config.patch +autoconf find -name CVS -print0 | xargs -0 rm -rf # chr and clpqr are optional and they are a copy from SWI Prolog @@ -170,6 +175,7 @@ rm -rf $RPM_BUILD_ROOT - 6.2.0 bump - Remove uneeded Yap-creat.patch - Remove uneeded Yap-5.1.1-config.sub.patch +- Locate mysql by mysql_config * Wed Dec 08 2010 Petr Pisar - 5.1.3-3 - Hack SWI-compatible libraries build system to be compilable (bug #660965) From d963c2ceafe3c72cb1cd0f3a32c5dd0f445d655b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Petr=20P=C3=ADsa=C5=99?= Date: Tue, 21 Dec 2010 11:09:38 +0100 Subject: [PATCH 13/68] Fix info pages installation --- ...2.0-Install-directory-for-info-pages.patch | 24 +++++++++++++++++++ yap.spec | 10 ++++---- 2 files changed, 30 insertions(+), 4 deletions(-) create mode 100644 yap-6.2.0-Install-directory-for-info-pages.patch diff --git a/yap-6.2.0-Install-directory-for-info-pages.patch b/yap-6.2.0-Install-directory-for-info-pages.patch new file mode 100644 index 0000000..cbe8fb5 --- /dev/null +++ b/yap-6.2.0-Install-directory-for-info-pages.patch @@ -0,0 +1,24 @@ +From d6ce7191c9dcac1681a2b29d68db0858133405c3 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Petr=20P=C3=ADsa=C5=99?= +Date: Tue, 21 Dec 2010 11:31:37 +0100 +Subject: [PATCH] Install directory for info pages + +--- + Makefile.in | 1 + + 1 files changed, 1 insertions(+), 0 deletions(-) + +diff --git a/Makefile.in b/Makefile.in +index 5fbf662..522ac0a 100755 +--- a/Makefile.in ++++ b/Makefile.in +@@ -711,6 +711,7 @@ yap.dll: libYap.a + + install_info: + $(MAKE) info; \ ++ mkdir -p $(DESTDIR)$(INFODIR); \ + $(INSTALL) yap.info* $(DESTDIR)$(INFODIR); \ + if test -e $(DESTDIR)$(INFODIR)/emacs.bz2; then \ + bzip2 --quiet --force $(DESTDIR)$(INFODIR)/yap.info*; \ +-- +1.7.3.4 + diff --git a/yap.spec b/yap.spec index 0cf8918..804c897 100644 --- a/yap.spec +++ b/yap.spec @@ -12,6 +12,7 @@ Source3: chr_translate_bootstrap2.pl Source4: chr_translate.pl Patch1: Yap-noni386.patch Patch2: yap-6.2.0-Locate-mysql-by-mysql_config.patch +Patch3: yap-6.2.0-Install-directory-for-info-pages.patch BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) BuildRequires: readline-devel, gmp-devel, texinfo BuildRequires: autoconf @@ -49,7 +50,9 @@ Documentation for Yap. %setup -q -n %{name}-6 %patch1 -p1 %patch2 -p1 -b .mysql_config +%patch3 -p1 -b .install_info_directory # Regerenate configure because of yap-6.2.0-Locate-mysql-by-mysql_config.patch +# and yap-6.2.0-Install-directory-for-info-pages.patch autoconf find -name CVS -print0 | xargs -0 rm -rf @@ -102,15 +105,13 @@ done --enable-depth-limit \ --enable-dynamic-loading make %{?_smp_mflags} -make -C docs info +make %{?_smp_mflags} info %install rm -rf $RPM_BUILD_ROOT make DESTDIR=$RPM_BUILD_ROOT install -mkdir -p $RPM_BUILD_ROOT%{_infodir} -cp -f docs/yap.info* $RPM_BUILD_ROOT%{_infodir} -cp -f LGPL/pillow/doc/pillow_doc.info $RPM_BUILD_ROOT%{_infodir} +make DESTDIR=$RPM_BUILD_ROOT install_info # fix permissions and flags chmod 0644 $RPM_BUILD_ROOT%{_datadir}/Yap/pl/* @@ -176,6 +177,7 @@ rm -rf $RPM_BUILD_ROOT - Remove uneeded Yap-creat.patch - Remove uneeded Yap-5.1.1-config.sub.patch - Locate mysql by mysql_config +- Fix info pages installation * Wed Dec 08 2010 Petr Pisar - 5.1.3-3 - Hack SWI-compatible libraries build system to be compilable (bug #660965) From 0a8f7ed42365940c61cf64d9251da55ca6949f5c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Petr=20P=C3=ADsa=C5=99?= Date: Tue, 21 Dec 2010 11:41:57 +0100 Subject: [PATCH 14/68] Logtalk has been removed from yap --- yap.spec | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/yap.spec b/yap.spec index 804c897..3f6670b 100644 --- a/yap.spec +++ b/yap.spec @@ -166,8 +166,6 @@ rm -rf $RPM_BUILD_ROOT %defattr(-,root,root,-) %doc LGPL/pillow/doc/pillow_doc_html/* %doc LGPL/pillow/doc/article.ps.gz -%doc --parent Logtalk/manuals -%doc --parent Logtalk/examples %changelog @@ -178,6 +176,7 @@ rm -rf $RPM_BUILD_ROOT - Remove uneeded Yap-5.1.1-config.sub.patch - Locate mysql by mysql_config - Fix info pages installation +- Logtalk is no logner distributed with yap * Wed Dec 08 2010 Petr Pisar - 5.1.3-3 - Hack SWI-compatible libraries build system to be compilable (bug #660965) From b6860f6edea8e838a2f4a67c7ad20ad54e4bde61 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Petr=20P=C3=ADsa=C5=99?= Date: Tue, 21 Dec 2010 13:02:57 +0100 Subject: [PATCH 15/68] Install http module CSS files into correct place --- ...Install-http-CSS-files-into-PLTARGET.patch | 30 +++++++++++++++++++ yap.spec | 6 ++-- 2 files changed, 34 insertions(+), 2 deletions(-) create mode 100644 yap-6.2.0-Install-http-CSS-files-into-PLTARGET.patch diff --git a/yap-6.2.0-Install-http-CSS-files-into-PLTARGET.patch b/yap-6.2.0-Install-http-CSS-files-into-PLTARGET.patch new file mode 100644 index 0000000..6b3f949 --- /dev/null +++ b/yap-6.2.0-Install-http-CSS-files-into-PLTARGET.patch @@ -0,0 +1,30 @@ +From 1ea44f8db749d81a790c55d63bfa4c1dbd5cb211 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Petr=20P=C3=ADsa=C5=99?= +Date: Tue, 21 Dec 2010 12:59:55 +0100 +Subject: [PATCH] Install http CSS files into PLTARGET + +--- + packages/http/Makefile.in | 4 ++-- + 1 files changed, 2 insertions(+), 2 deletions(-) + +diff --git a/packages/http/Makefile.in b/packages/http/Makefile.in +index 8609697..1c3dbda 100755 +--- a/packages/http/Makefile.in ++++ b/packages/http/Makefile.in +@@ -111,11 +111,11 @@ install: $(LIBPL) $(SOLIBS) + $(INSTALL_PROGRAM) $(SOLIBS) $(BINTARGET) + mkdir -p $(PLTARGET) + mkdir -p $(PLTARGET)/web/icons +- mkdir -p $(DESTDIR)$(LIBDIR)/web/css ++ mkdir -p $(PLTARGET)/web/css + $(INSTALL_DATA) $(LIBPL) $(PLTARGET) + $(INSTALL_DATA) $(srcdir)/README $(PLTARGET) + $(INSTALL_DATA) $(srcdir)/web/icons/*.png $(PLTARGET)/web/icons +- $(INSTALL_DATA) $(srcdir)/web/css/*.css $(DESTDIR)$(LIBDIR)/web/css ++ $(INSTALL_DATA) $(srcdir)/web/css/*.css $(PLTARGET)/web/css + $(PL) -f none -g make -t halt + + ln-install: $(LIBPL) +-- +1.7.3.4 + diff --git a/yap.spec b/yap.spec index 3f6670b..20e3f63 100644 --- a/yap.spec +++ b/yap.spec @@ -13,6 +13,7 @@ Source4: chr_translate.pl Patch1: Yap-noni386.patch Patch2: yap-6.2.0-Locate-mysql-by-mysql_config.patch Patch3: yap-6.2.0-Install-directory-for-info-pages.patch +Patch4: yap-6.2.0-Install-http-CSS-files-into-PLTARGET.patch BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) BuildRequires: readline-devel, gmp-devel, texinfo BuildRequires: autoconf @@ -51,8 +52,8 @@ Documentation for Yap. %patch1 -p1 %patch2 -p1 -b .mysql_config %patch3 -p1 -b .install_info_directory -# Regerenate configure because of yap-6.2.0-Locate-mysql-by-mysql_config.patch -# and yap-6.2.0-Install-directory-for-info-pages.patch +%patch4 -p1 -b .install_css_into_pltarget +# Regerenate configure because of patching autoconf find -name CVS -print0 | xargs -0 rm -rf @@ -177,6 +178,7 @@ rm -rf $RPM_BUILD_ROOT - Locate mysql by mysql_config - Fix info pages installation - Logtalk is no logner distributed with yap +- Install http module CSS files to correct place * Wed Dec 08 2010 Petr Pisar - 5.1.3-3 - Hack SWI-compatible libraries build system to be compilable (bug #660965) From b1853a30a937910033299bf0f6fef20b81a51292 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Petr=20P=C3=ADsa=C5=99?= Date: Wed, 22 Dec 2010 09:33:35 +0100 Subject: [PATCH 16/68] Package documentation --- yap-6.2.0-Do-not-install-README-etc.patch | 26 +++++++++++++++++++++++ yap.spec | 9 ++++++-- 2 files changed, 33 insertions(+), 2 deletions(-) create mode 100644 yap-6.2.0-Do-not-install-README-etc.patch diff --git a/yap-6.2.0-Do-not-install-README-etc.patch b/yap-6.2.0-Do-not-install-README-etc.patch new file mode 100644 index 0000000..b5a4b57 --- /dev/null +++ b/yap-6.2.0-Do-not-install-README-etc.patch @@ -0,0 +1,26 @@ +From d9acef3be4ca926d0f138184535e3f16b15d6045 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Petr=20P=C3=ADsa=C5=99?= +Date: Wed, 22 Dec 2010 09:31:28 +0100 +Subject: [PATCH] Do not install README etc. + +--- + Makefile.in | 3 --- + 1 files changed, 0 insertions(+), 3 deletions(-) + +diff --git a/Makefile.in b/Makefile.in +index 522ac0a..8f37d05 100755 +--- a/Makefile.in ++++ b/Makefile.in +@@ -554,9 +554,6 @@ install_unix: startup.yss libYap.a + mkdir -p $(DESTDIR)$(SHAREDIR)/Yap + mkdir -p $(DESTDIR)$(SHAREDIR)/Yap/pl + mkdir -p $(DESTDIR)$(DOCSDIR) +- $(INSTALL) $(srcdir)/Artistic $(DESTDIR)$(DOCSDIR) +- $(INSTALL) $(srcdir)/README $(DESTDIR)$(DOCSDIR) +- $(INSTALL) $(srcdir)/COPYING $(DESTDIR)$(DOCSDIR) + for f in $(PL_SOURCES); do $(INSTALL) $$f $(DESTDIR)$(SHAREDIR)/Yap/pl; done + @INSTALL_DLLS@ (cd packages/PLStream; $(MAKE) install) + @INSTALL_DLLS@ (cd library/lammpi; $(MAKE) install) +-- +1.7.3.4 + diff --git a/yap.spec b/yap.spec index 20e3f63..e3d1322 100644 --- a/yap.spec +++ b/yap.spec @@ -14,6 +14,7 @@ Patch1: Yap-noni386.patch Patch2: yap-6.2.0-Locate-mysql-by-mysql_config.patch Patch3: yap-6.2.0-Install-directory-for-info-pages.patch Patch4: yap-6.2.0-Install-http-CSS-files-into-PLTARGET.patch +Patch5: yap-6.2.0-Do-not-install-README-etc.patch BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) BuildRequires: readline-devel, gmp-devel, texinfo BuildRequires: autoconf @@ -53,6 +54,7 @@ Documentation for Yap. %patch2 -p1 -b .mysql_config %patch3 -p1 -b .install_info_directory %patch4 -p1 -b .install_css_into_pltarget +%patch5 -p1 -b .do_not_install_readme # Regerenate configure because of patching autoconf @@ -106,7 +108,9 @@ done --enable-depth-limit \ --enable-dynamic-loading make %{?_smp_mflags} +make %{?_smp_mflags} html make %{?_smp_mflags} info +make %{?_smp_mflags} pdf %install @@ -148,8 +152,8 @@ rm -rf $RPM_BUILD_ROOT %files %defattr(-,root,root,-) -%doc README -%doc changes* +%doc Artistic changes* COPYING README TO_DO +# TODO: experimental %doc README.EAM.html %{_bindir}/yap %{_datadir}/Yap %{_libdir}/Yap @@ -165,6 +169,7 @@ rm -rf $RPM_BUILD_ROOT %files docs %defattr(-,root,root,-) +%doc yap.html* yap.pdf %doc LGPL/pillow/doc/pillow_doc_html/* %doc LGPL/pillow/doc/article.ps.gz From 06167f6b624de3e0b09b7ca2501e113c16bd686b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Petr=20P=C3=ADsa=C5=99?= Date: Wed, 22 Dec 2010 09:43:55 +0100 Subject: [PATCH 17/68] Do not install HTML and PDF documentation It's from the same source as info pages. --- yap.spec | 3 --- 1 file changed, 3 deletions(-) diff --git a/yap.spec b/yap.spec index e3d1322..77f33b3 100644 --- a/yap.spec +++ b/yap.spec @@ -108,9 +108,7 @@ done --enable-depth-limit \ --enable-dynamic-loading make %{?_smp_mflags} -make %{?_smp_mflags} html make %{?_smp_mflags} info -make %{?_smp_mflags} pdf %install @@ -169,7 +167,6 @@ rm -rf $RPM_BUILD_ROOT %files docs %defattr(-,root,root,-) -%doc yap.html* yap.pdf %doc LGPL/pillow/doc/pillow_doc_html/* %doc LGPL/pillow/doc/article.ps.gz From 7f0edccb0266335b7b4b43c34d60c14868647fe6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Petr=20P=C3=ADsa=C5=99?= Date: Wed, 22 Dec 2010 10:02:30 +0100 Subject: [PATCH 18/68] Do not rpm-provide private libraries --- yap.spec | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/yap.spec b/yap.spec index 77f33b3..20bc7c6 100644 --- a/yap.spec +++ b/yap.spec @@ -21,6 +21,10 @@ BuildRequires: autoconf Requires(post): /sbin/install-info, /sbin/ldconfig Requires(postun): /sbin/install-info, /sbin/ldconfig +# Do not provide private libraries +%filter_provides_in /usr/lib64/Yap/ +%filter_setup + %description A high-performance Prolog compiler developed at LIACC, Universidade do Porto. The Prolog engine is based in the WAM (Warren Abstract From bbceeeb05e79b90cc7629e330152d3e94ef9a1f8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Petr=20P=C3=ADsa=C5=99?= Date: Wed, 22 Dec 2010 10:35:33 +0100 Subject: [PATCH 19/68] Make info pages non-executable --- ....0-Install-info-pages-non-executable.patch | 34 +++++++++++++++++++ yap.spec | 2 ++ 2 files changed, 36 insertions(+) create mode 100644 yap-6.2.0-Install-info-pages-non-executable.patch diff --git a/yap-6.2.0-Install-info-pages-non-executable.patch b/yap-6.2.0-Install-info-pages-non-executable.patch new file mode 100644 index 0000000..44b2837 --- /dev/null +++ b/yap-6.2.0-Install-info-pages-non-executable.patch @@ -0,0 +1,34 @@ +From 84f7e2e5ac18dd130d1656b677d40ebdd7cda9a1 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Petr=20P=C3=ADsa=C5=99?= +Date: Wed, 22 Dec 2010 10:18:17 +0100 +Subject: [PATCH] Install info pages non-executable + +--- + Makefile.in | 4 ++-- + 1 files changed, 2 insertions(+), 2 deletions(-) + +diff --git a/Makefile.in b/Makefile.in +index 8f37d05..c513d0c 100755 +--- a/Makefile.in ++++ b/Makefile.in +@@ -709,7 +709,7 @@ yap.dll: libYap.a + install_info: + $(MAKE) info; \ + mkdir -p $(DESTDIR)$(INFODIR); \ +- $(INSTALL) yap.info* $(DESTDIR)$(INFODIR); \ ++ $(INSTALL_DATA) yap.info* $(DESTDIR)$(INFODIR); \ + if test -e $(DESTDIR)$(INFODIR)/emacs.bz2; then \ + bzip2 --quiet --force $(DESTDIR)$(INFODIR)/yap.info*; \ + else \ +@@ -719,7 +719,7 @@ install_info: + fi; \ + $(INSTALL_INFO) --quiet --section "Programming Languages" yap.info $(DESTDIR)$(INFODIR)/dir; \ + cd $(srcdir)/LGPL/pillow/doc ; \ +- $(INSTALL) pillow_doc.info $(DESTDIR)$(INFODIR); \ ++ $(INSTALL_DATA) pillow_doc.info $(DESTDIR)$(INFODIR); \ + if test -e $(DESTDIR)$(INFODIR)/emacs.bz2; then \ + bzip2 --quiet --force $(DESTDIR)$(INFODIR)/pillow_doc.info; \ + else \ +-- +1.7.3.4 + diff --git a/yap.spec b/yap.spec index 20bc7c6..b925132 100644 --- a/yap.spec +++ b/yap.spec @@ -15,6 +15,7 @@ Patch2: yap-6.2.0-Locate-mysql-by-mysql_config.patch Patch3: yap-6.2.0-Install-directory-for-info-pages.patch Patch4: yap-6.2.0-Install-http-CSS-files-into-PLTARGET.patch Patch5: yap-6.2.0-Do-not-install-README-etc.patch +Patch6: yap-6.2.0-Install-info-pages-non-executable.patch BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) BuildRequires: readline-devel, gmp-devel, texinfo BuildRequires: autoconf @@ -59,6 +60,7 @@ Documentation for Yap. %patch3 -p1 -b .install_info_directory %patch4 -p1 -b .install_css_into_pltarget %patch5 -p1 -b .do_not_install_readme +%patch6 -p1 -b .non_executable_info # Regerenate configure because of patching autoconf From a2ee584fff9e3a08a20737b492d12e7e4f3e8bd0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Petr=20P=C3=ADsa=C5=99?= Date: Wed, 22 Dec 2010 10:39:55 +0100 Subject: [PATCH 20/68] Convert TO_DO into UTF-8 --- yap.spec | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/yap.spec b/yap.spec index b925132..24424bf 100644 --- a/yap.spec +++ b/yap.spec @@ -99,7 +99,7 @@ for F in README changes.css; do touch -r "$F"{,.new} mv "$F"{.new,} done -for F in docs/yap.tex; do +for F in docs/yap.tex TO_DO; do iconv -f iso-8859-1 -t utf-8 < "$F" > "${F}.new" touch -r "$F"{,.new} mv "$F"{.new,} @@ -187,6 +187,7 @@ rm -rf $RPM_BUILD_ROOT - Fix info pages installation - Logtalk is no logner distributed with yap - Install http module CSS files to correct place +- Convert TO_DO into UTF-8 * Wed Dec 08 2010 Petr Pisar - 5.1.3-3 - Hack SWI-compatible libraries build system to be compilable (bug #660965) From 5c994d40231c0a55c5c8d66fe2177ef61c7a0d51 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Petr=20P=C3=ADsa=C5=99?= Date: Wed, 22 Dec 2010 10:57:25 +0100 Subject: [PATCH 21/68] Make COPYING non-executable --- yap.spec | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/yap.spec b/yap.spec index 24424bf..3c9608f 100644 --- a/yap.spec +++ b/yap.spec @@ -105,6 +105,9 @@ for F in docs/yap.tex TO_DO; do mv "$F"{.new,} done +# Fix file permissions +chmod -x COPYING + %build # % define optflags $(echo $RPM_OPT_FLAGS | sed 's|-fstack-protector||') @@ -188,6 +191,7 @@ rm -rf $RPM_BUILD_ROOT - Logtalk is no logner distributed with yap - Install http module CSS files to correct place - Convert TO_DO into UTF-8 +- Make COPYING non-executable * Wed Dec 08 2010 Petr Pisar - 5.1.3-3 - Hack SWI-compatible libraries build system to be compilable (bug #660965) From 9778eb02cff305dcad4c26377d5d5322b9468d69 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Petr=20P=C3=ADsa=C5=99?= Date: Wed, 22 Dec 2010 11:05:12 +0100 Subject: [PATCH 22/68] Do not install info dir index --- yap-6.2.0-Do-not-install-info-dir-index.patch | 32 +++++++++++++++++++ yap.spec | 2 ++ 2 files changed, 34 insertions(+) create mode 100644 yap-6.2.0-Do-not-install-info-dir-index.patch diff --git a/yap-6.2.0-Do-not-install-info-dir-index.patch b/yap-6.2.0-Do-not-install-info-dir-index.patch new file mode 100644 index 0000000..6cc701d --- /dev/null +++ b/yap-6.2.0-Do-not-install-info-dir-index.patch @@ -0,0 +1,32 @@ +From 07a8f2b1e905d9133c057d2a2d83a2b7a5bb44ba Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Petr=20P=C3=ADsa=C5=99?= +Date: Wed, 22 Dec 2010 10:59:06 +0100 +Subject: [PATCH] Do not install info dir index + +--- + Makefile.in | 2 -- + 1 files changed, 0 insertions(+), 2 deletions(-) + +diff --git a/Makefile.in b/Makefile.in +index c513d0c..cbdfcaf 100755 +--- a/Makefile.in ++++ b/Makefile.in +@@ -717,7 +717,6 @@ install_info: + gzip --quiet --force $(DESTDIR)$(INFODIR)/yap.info*; \ + fi \ + fi; \ +- $(INSTALL_INFO) --quiet --section "Programming Languages" yap.info $(DESTDIR)$(INFODIR)/dir; \ + cd $(srcdir)/LGPL/pillow/doc ; \ + $(INSTALL_DATA) pillow_doc.info $(DESTDIR)$(INFODIR); \ + if test -e $(DESTDIR)$(INFODIR)/emacs.bz2; then \ +@@ -727,7 +726,6 @@ install_info: + gzip --quiet --force $(DESTDIR)$(INFODIR)/pillow_doc.info; \ + fi \ + fi; \ +- $(INSTALL_INFO) --quiet --section "Programming Languages" --entry="`cat pillow_doc.infoindex`" --info-dir=$(DESTDIR)$(INFODIR) pillow_doc.info + + install_docs: + $(MAKE) pdf +-- +1.7.3.4 + diff --git a/yap.spec b/yap.spec index 3c9608f..3ac15b8 100644 --- a/yap.spec +++ b/yap.spec @@ -16,6 +16,7 @@ Patch3: yap-6.2.0-Install-directory-for-info-pages.patch Patch4: yap-6.2.0-Install-http-CSS-files-into-PLTARGET.patch Patch5: yap-6.2.0-Do-not-install-README-etc.patch Patch6: yap-6.2.0-Install-info-pages-non-executable.patch +Patch7: yap-6.2.0-Do-not-install-info-dir-index.patch BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) BuildRequires: readline-devel, gmp-devel, texinfo BuildRequires: autoconf @@ -61,6 +62,7 @@ Documentation for Yap. %patch4 -p1 -b .install_css_into_pltarget %patch5 -p1 -b .do_not_install_readme %patch6 -p1 -b .non_executable_info +%patch7 -p1 -b .do_not_install_info_index # Regerenate configure because of patching autoconf From 4898d89ab3955917172b11caad7aaa9037c5ff46 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Petr=20P=C3=ADsa=C5=99?= Date: Wed, 22 Dec 2010 12:50:14 +0100 Subject: [PATCH 23/68] Remove empty myddas_top_level.yap file --- yap.spec | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/yap.spec b/yap.spec index 3ac15b8..53ccd5f 100644 --- a/yap.spec +++ b/yap.spec @@ -141,6 +141,12 @@ mkdir -p $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 +# Remove empty files +for F in $RPM_BUILD_ROOT%{_datadir}/Yap/myddas_top_level.yap; do + test -s "$F" || rm "$F" +done + + %post /sbin/install-info %{_infodir}/yap.info --section "Programming Languages" %{_infodir}/dir 2>/dev/null || : /sbin/install-info %{_infodir}/pillow_doc.info --section "Programming Languages" %{_infodir}/dir 2>/dev/null || : @@ -194,6 +200,7 @@ rm -rf $RPM_BUILD_ROOT - Install http module CSS files to correct place - Convert TO_DO into UTF-8 - Make COPYING non-executable +- Remove empty myddas_top_level.yap file * Wed Dec 08 2010 Petr Pisar - 5.1.3-3 - Hack SWI-compatible libraries build system to be compilable (bug #660965) From 366fe0f9bc1936b3f42a6a00c48f5fcb9b707514 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Petr=20P=C3=ADsa=C5=99?= Date: Wed, 22 Dec 2010 14:16:43 +0100 Subject: [PATCH 24/68] Fix soname injection --- yap.spec | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/yap.spec b/yap.spec index 53ccd5f..3ab40f0 100644 --- a/yap.spec +++ b/yap.spec @@ -73,9 +73,9 @@ find -name CVS -print0 | xargs -0 rm -rf # remove redundant rpath sed -i '/-Wl,-R/d' 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 +sed -i 's/\(@YAPLIB@\)/\1.%{version}/g' Makefile.in +sed -i 's/\(@DYNYAPLIB@\)/\1.%{version}/g' Makefile.in +sed -i 's/\(@YAPLIB_LD@\)/\1 -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}|' @@ -201,6 +201,7 @@ rm -rf $RPM_BUILD_ROOT - Convert TO_DO into UTF-8 - Make COPYING non-executable - Remove empty myddas_top_level.yap file +- Fix soname injection * Wed Dec 08 2010 Petr Pisar - 5.1.3-3 - Hack SWI-compatible libraries build system to be compilable (bug #660965) From 059266f7253e51d7490d039ec5502142c56ce835 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Petr=20P=C3=ADsa=C5=99?= Date: Wed, 22 Dec 2010 14:52:13 +0100 Subject: [PATCH 25/68] Fix BuildRequires MySQL, ODBC, zlib support --- yap.spec | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/yap.spec b/yap.spec index 3ab40f0..20bd4dd 100644 --- a/yap.spec +++ b/yap.spec @@ -18,8 +18,14 @@ Patch5: yap-6.2.0-Do-not-install-README-etc.patch Patch6: yap-6.2.0-Install-info-pages-non-executable.patch Patch7: yap-6.2.0-Do-not-install-info-dir-index.patch BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) -BuildRequires: readline-devel, gmp-devel, texinfo BuildRequires: autoconf +BuildRequires: gmp-devel +BuildRequires: mysql-devel +# TODO: BuildRequires: openmpi-devel +BuildRequires: readline-devel +BuildRequires: texinfo +BuildRequires: unixODBC-devel +BuildRequires: zlib-devel Requires(post): /sbin/install-info, /sbin/ldconfig Requires(postun): /sbin/install-info, /sbin/ldconfig @@ -117,7 +123,10 @@ chmod -x COPYING --enable-coroutining \ --enable-max-performance \ --enable-depth-limit \ - --enable-dynamic-loading + --enable-dynamic-loading \ + --enable-myddas +# TODO: --with-java + make %{?_smp_mflags} make %{?_smp_mflags} info @@ -202,6 +211,7 @@ rm -rf $RPM_BUILD_ROOT - Make COPYING non-executable - Remove empty myddas_top_level.yap file - Fix soname injection +- Fix BuildRequires * Wed Dec 08 2010 Petr Pisar - 5.1.3-3 - Hack SWI-compatible libraries build system to be compilable (bug #660965) From d96baec1e28a896fee9db4af69cdce79eb8bf798 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Petr=20P=C3=ADsa=C5=99?= Date: Wed, 22 Dec 2010 15:00:27 +0100 Subject: [PATCH 26/68] Update changelog date --- yap.spec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/yap.spec b/yap.spec index 20bd4dd..5f204eb 100644 --- a/yap.spec +++ b/yap.spec @@ -198,7 +198,7 @@ rm -rf $RPM_BUILD_ROOT %changelog -* Mon Dec 20 2010 Petr Pisar - 6.2.0-1 +* Wed Dec 22 2010 Petr Pisar - 6.2.0-1 - Reorder metadata in spec file - 6.2.0 bump - Remove uneeded Yap-creat.patch From 04310f956ac82b3a8dc19c1b67827754b3eb899f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Petr=20P=C3=ADsa=C5=99?= Date: Wed, 22 Dec 2010 16:59:38 +0100 Subject: [PATCH 27/68] Package clpbn examples and clean spec file --- yap.spec | 27 +++++++++++++++------------ 1 file changed, 15 insertions(+), 12 deletions(-) diff --git a/yap.spec b/yap.spec index 5f204eb..7da8f7e 100644 --- a/yap.spec +++ b/yap.spec @@ -72,9 +72,8 @@ Documentation for Yap. # Regerenate configure because of patching autoconf -find -name CVS -print0 | xargs -0 rm -rf # chr and clpqr are optional and they are a copy from SWI Prolog -#cp %{SOURCE1} %{SOURCE2} %{SOURCE3} %{SOURCE4} LGPL/chr +# TODO: Bundle chr and clpqr libraries: cp %%{SOURCE1} LGPL/chr # remove redundant rpath sed -i '/-Wl,-R/d' configure @@ -83,9 +82,7 @@ sed -i 's/\(@YAPLIB@\)/\1.%{version}/g' Makefile.in sed -i 's/\(@DYNYAPLIB@\)/\1.%{version}/g' Makefile.in sed -i 's/\(@YAPLIB_LD@\)/\1 -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}|' - +# TODO: Bumdle SWI chr and clpqr libraries ## Hack LGPL/chr build environment to run just build interpreter ## yap-6.2.0 have those SWI compatible libraries optional and separate. Package ## them as standalone package in the future and remove this ugly thing: @@ -115,6 +112,9 @@ done # Fix file permissions chmod -x COPYING +# Permissions for debuginfo content +find -name '*.h' -exec chmod 0644 '{}' ';' +find -name '*.c' -exec chmod 0644 '{}' ';' %build @@ -139,16 +139,17 @@ make DESTDIR=$RPM_BUILD_ROOT install_info # fix permissions and flags chmod 0644 $RPM_BUILD_ROOT%{_datadir}/Yap/pl/* chmod 0644 $RPM_BUILD_ROOT%{_includedir}/Yap/* -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} -rm -rf $RPM_BUILD_ROOT%{_datadir}/Yap/clpbn/examples +# move examples to docs dir +%global documentation docs-documentation +for P in clpbn; do + mkdir -p "%{documentation}/examples/${P}" + mv "$RPM_BUILD_ROOT%{_datadir}/Yap/${P}/examples/"* \ + "%{documentation}/examples/${P}" + rmdir "$RPM_BUILD_ROOT%{_datadir}/Yap/${P}/examples" +done # Remove empty files for F in $RPM_BUILD_ROOT%{_datadir}/Yap/myddas_top_level.yap; do @@ -195,6 +196,7 @@ rm -rf $RPM_BUILD_ROOT %defattr(-,root,root,-) %doc LGPL/pillow/doc/pillow_doc_html/* %doc LGPL/pillow/doc/article.ps.gz +%doc %{documentation}/* %changelog @@ -212,6 +214,7 @@ rm -rf $RPM_BUILD_ROOT - Remove empty myddas_top_level.yap file - Fix soname injection - Fix BuildRequires +- Package clpbn examples * Wed Dec 08 2010 Petr Pisar - 5.1.3-3 - Hack SWI-compatible libraries build system to be compilable (bug #660965) From 596555d0a48fe6826f33e5084468bd083c48b343 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Petr=20P=C3=ADsa=C5=99?= Date: Wed, 22 Dec 2010 17:05:41 +0100 Subject: [PATCH 28/68] Fix source URL --- yap.spec | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/yap.spec b/yap.spec index 7da8f7e..aa0c2b8 100644 --- a/yap.spec +++ b/yap.spec @@ -5,7 +5,7 @@ Summary: High-performance Prolog Compiler Group: Development/Languages License: Artistic 2.0 or LGPLv2+ URL: http://www.ncc.up.pt/~vsc/Yap -Source: http://www.ncc.up.pt/~vsc/Yap/current/%{name}-%{version}.tar.gz +Source: http://www.ncc.up.pt/~vsc/Yap/%{name}-%{version}.tar.gz Source1: guard_entailment.pl Source2: chr_translate_bootstrap1.pl Source3: chr_translate_bootstrap2.pl @@ -215,6 +215,7 @@ rm -rf $RPM_BUILD_ROOT - Fix soname injection - Fix BuildRequires - Package clpbn examples +- Fix Source URL * Wed Dec 08 2010 Petr Pisar - 5.1.3-3 - Hack SWI-compatible libraries build system to be compilable (bug #660965) From 71deafb34cfe563c2e580e3d51aa3e25833fcac2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Petr=20P=C3=ADsa=C5=99?= Date: Thu, 23 Dec 2010 10:45:53 +0100 Subject: [PATCH 29/68] Clean exported Requires libplstream.so is private library needed by other private libraries. Do not export it. --- yap.spec | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/yap.spec b/yap.spec index aa0c2b8..0aecbfc 100644 --- a/yap.spec +++ b/yap.spec @@ -29,8 +29,9 @@ BuildRequires: zlib-devel Requires(post): /sbin/install-info, /sbin/ldconfig Requires(postun): /sbin/install-info, /sbin/ldconfig -# Do not provide private libraries +# Do not export provides and requires on private libraries %filter_provides_in /usr/lib64/Yap/ +%filter_from_requires /^libplstream.so(/d %filter_setup %description @@ -200,7 +201,7 @@ rm -rf $RPM_BUILD_ROOT %changelog -* Wed Dec 22 2010 Petr Pisar - 6.2.0-1 +* Thu Dec 23 2010 Petr Pisar - 6.2.0-1 - Reorder metadata in spec file - 6.2.0 bump - Remove uneeded Yap-creat.patch @@ -216,6 +217,7 @@ rm -rf $RPM_BUILD_ROOT - Fix BuildRequires - Package clpbn examples - Fix Source URL +- Clean exported Requires * Wed Dec 08 2010 Petr Pisar - 5.1.3-3 - Hack SWI-compatible libraries build system to be compilable (bug #660965) From ee2d16d5686c8bfbedb9d355aa525746a0c286ab Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Petr=20P=C3=ADsa=C5=99?= Date: Mon, 3 Jan 2011 16:17:58 +0100 Subject: [PATCH 30/68] Correct RPATH The unversioned library file is needed while linking plug-ins at compilation. The versioned library file is needed while compiling some plug-ins as just-compiled yap interpreted is used for it. --- yap.spec | 23 ++++++++++++++--------- 1 file changed, 14 insertions(+), 9 deletions(-) diff --git a/yap.spec b/yap.spec index 0aecbfc..b0ae1de 100644 --- a/yap.spec +++ b/yap.spec @@ -70,18 +70,24 @@ Documentation for Yap. %patch5 -p1 -b .do_not_install_readme %patch6 -p1 -b .non_executable_info %patch7 -p1 -b .do_not_install_info_index + +# remove redundant RPATH +sed -i 's/-Wl,-R\(,\)\{0,1\}\\$(LIBDIR)//' configure.in +# transform RPATH into RUN_PATH. Private libraries dlopen()ed depend each on +# other +sed -i 's/-Wl,-R/-Wl,--enable-new-dtags,-R/g' configure.in + # Regerenate configure because of patching autoconf # chr and clpqr are optional and they are a copy from SWI Prolog # TODO: Bundle chr and clpqr libraries: cp %%{SOURCE1} LGPL/chr -# remove redundant rpath -sed -i '/-Wl,-R/d' configure -# add soname to library -sed -i 's/\(@YAPLIB@\)/\1.%{version}/g' Makefile.in -sed -i 's/\(@DYNYAPLIB@\)/\1.%{version}/g' Makefile.in -sed -i 's/\(@YAPLIB_LD@\)/\1 -Wl,-soname=@YAPLIB@.%{version} /g' Makefile.in +# Add soname to library and symlink from unversioned to versioned one +sed -i \ + -e '/@YAPLIB_LD@/ s/\(-o @YAPLIB@\)\(.*\)/-Wl,-soname=@YAPLIB@.%{version} \1.%{version}\2\n\tln -s @YAPLIB@.%{version} @YAPLIB@/' \ + -e '/@INSTALL_DLLS@.* @YAPLIB@/ s/\(@YAPLIB@\)\(.*\)/\1.%{version}\2\n\t@LN_S@ @YAPLIB@.%{version} $(DESTDIR)$(LIBDIR)\/@YAPLIB@/' \ + Makefile.in # TODO: Bumdle SWI chr and clpqr libraries ## Hack LGPL/chr build environment to run just build interpreter @@ -141,8 +147,6 @@ make DESTDIR=$RPM_BUILD_ROOT install_info chmod 0644 $RPM_BUILD_ROOT%{_datadir}/Yap/pl/* chmod 0644 $RPM_BUILD_ROOT%{_includedir}/Yap/* -(cd $RPM_BUILD_ROOT%{_libdir}; ln -sf libYap.so.%{version} libYap.so) - # move examples to docs dir %global documentation docs-documentation for P in clpbn; do @@ -201,7 +205,7 @@ rm -rf $RPM_BUILD_ROOT %changelog -* Thu Dec 23 2010 Petr Pisar - 6.2.0-1 +* Mon Jan 03 2011 Petr Pisar - 6.2.0-1 - Reorder metadata in spec file - 6.2.0 bump - Remove uneeded Yap-creat.patch @@ -218,6 +222,7 @@ rm -rf $RPM_BUILD_ROOT - Package clpbn examples - Fix Source URL - Clean exported Requires +- Correct RPATH * Wed Dec 08 2010 Petr Pisar - 5.1.3-3 - Hack SWI-compatible libraries build system to be compilable (bug #660965) From a51a466f2d3108cface8b811636381e6f8e7635e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Petr=20P=C3=ADsa=C5=99?= Date: Mon, 3 Jan 2011 17:39:56 +0100 Subject: [PATCH 31/68] Enable chr and clpqr libraries installation The two libraries are copied from SWI Prolog (LGPLv2+ license) and they are still bundled with the tar ball. VCS repository handles them as git module. --- chr_translate.pl | 21472 -------------------- chr_translate_bootstrap1.pl | 2609 --- chr_translate_bootstrap2.pl | 3708 ---- guard_entailment.pl | 18061 ---------------- sources | 4 - yap-6.2.0-fix-chr-install-from-Keri.patch | 106 + yap.spec | 33 +- 7 files changed, 116 insertions(+), 45877 deletions(-) delete mode 100644 chr_translate.pl delete mode 100644 chr_translate_bootstrap1.pl delete mode 100644 chr_translate_bootstrap2.pl delete mode 100644 guard_entailment.pl create mode 100644 yap-6.2.0-fix-chr-install-from-Keri.patch diff --git a/chr_translate.pl b/chr_translate.pl deleted file mode 100644 index fab72a4..0000000 --- a/chr_translate.pl +++ /dev/null @@ -1,21472 +0,0 @@ -/* Generated by CHR bootstrap compiler - From: chr_translate.chr - Date: Mon Jun 15 21:44:05 2009 - - - DO NOT EDIT. EDIT THE CHR FILE INSTEAD -*/ - -:-module(chr_translate,[chr_translate/2,chr_translate_line_info/3]). -:-use_module(chr_runtime). -:-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(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) :- - B is A-1, - max_constraint_index(B). -set_constraint_indices([A|B],C) :- - ( - ( - chr_pp_flag(debugable,on) - ; - \+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, - set_constraint_indices(B,D) - ; - set_constraint_indices(B,C) - ). -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 - ; - 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_attr_unify_hook(D), - generate_attach_increment(E), - 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) :- - 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))] - ; - A=[] - ). -chr_module_declaration(A) :- - get_target_module(B), - ( B\==chr_translate, - chr_pp_flag(toplevel_show_store,on) -> - A=[(:-multifile chr:'$chr_module'/1),chr:'$chr_module'(B)] - ; - A=[] - ). -partition_clauses([],[],[],[]). -partition_clauses([A|B],C,D,E) :- - ( parse_rule(A,F) -> - C=G, - D=[F|H], - E=I - ; - ( is_declaration(A,J) -> - append(J,G,C), - D=H, - E=I - ) - ; - ( is_module_declaration(A,K) -> - target_module(K), - C=G, - D=H, - E=[A|I] - ) - ; - ( is_type_definition(A) -> - C=G, - D=H, - E=I - ) - ; - ( is_chr_declaration(A) -> - C=G, - D=H, - E=I - ) - ; - ( A=(handler _) -> - chr_warning(deprecated(A),'Backward compatibility: ignoring handler/1 declaration. -',[]), - C=G, - D=H, - E=I - ) - ; - ( A=(rules _) -> - chr_warning(deprecated(A),'Backward compatibility: ignoring rules/1 declaration. -',[]), - C=G, - D=H, - E=I - ) - ; - ( 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), - C=..[D,E], - D==chr_constraint -> - conj2list(E,F) - ; - ( A=(:-C) -> - C=..[constraints,E] - ; - A=..[constraints,E] - ), - conj2list(E,F), - chr_warning(deprecated(A),'Instead use :- chr_constraint ~w. -',[E]) - ), - 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]) :- - ( 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],[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) :- - 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=C - ), - C=..[chr_type,D], - ( D=(E--->F) -> - tdisj2list(F,G), - B=typedef(E,G) - ; - ( 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,[]). -tdisj2list(A,B,C) :- - A=(D;E), - !, - tdisj2list(D,B,F), - tdisj2list(E,F,C). -tdisj2list(A,[A|B],B). -parse_rule(A,B) :- - A=(C@D), - !, - rule(D,yes(C),B). -parse_rule(A,B) :- - rule(A,no,B). -rule(A,B,C) :- - A=(D pragma E), - !, - ( 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) :- - 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(E,G), - get_ids(G,H,I,D), - C=ids([],H), - ( F=(J '|' K) -> - B=rule([],I,J,K) - ; - B=rule([],I,true,F) - ). -is_rule(A,B,C,D) :- - A=(E<=>F), - !, - ( F=(G '|' H) -> - I=G, - J=H - ; - I=true, - J=F - ), - ( E=(K\L) -> - conj2list(K,M), - conj2list(L,N), - get_ids(M,O,P,0,Q,D), - get_ids(N,R,S,Q,_,D), - C=ids(R,O) - ; - conj2list(E,N), - P=[], - get_ids(N,R,S,D), - C=ids(R,[]) - ), - 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 - ), - 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([]). -add_constraints([A|B]) :- - max_occurrence(A,0), - A=_/C, - length(D,C), - set_elems(D,?), - constraint_mode(A,D), - add_constraints(B). -add_rules([]). -add_rules([A|B]) :- - A=pragma(_,_,_,_,C), - rule(C,A), - add_rules(B). -check_declared_constraints(A) :- - tree_set_empty(B), - check_declared_constraints(A,B). -check_declared_constraints([],_). -check_declared_constraints([A|B],C) :- - ( tree_set_memberchk(A,C) -> - chr_error(syntax(A),'Constraint multiply defined: ~w. - Remove redundant declaration! -',[A]) - ; - true - ), - 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), - ( memberchk(E/F,C) -> - check_head_constraints(B,C,D) - ; - 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) :- - check_pragma(A,C), - check_pragmas(B,C). -check_pragma(A,B) :- - var(A), - !, - 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), - ( memberchk_eq(A,C) -> - true - ; - ( memberchk_eq(A,D) -> - true - ) - ; - 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, - !, - chr_warning(unsupported_pragma(A,B),'Termination and correctness may be affected. -',[]). -check_pragma(A,B) :- - A=already_in_head(_), - !, - chr_warning(unsupported_pragma(A,B),'Termination and correctness may be affected. -',[]). -check_pragma(A,B) :- - A=no_history, - !, - chr_warning(experimental,'Experimental pragma no_history. Use with care! -',[]), - 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) -> - write('rule '), - write(D) - ; - 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), - ( 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), - list2conj(E,C). -remove_anti_monotonic_guard_list([],_,[]). -remove_anti_monotonic_guard_list([A|B],C,D) :- - ( A=var(E), - memberchk_eq(E,C) -> - D=F - ; - D=[A|F] - ), - remove_anti_monotonic_guard_list(B,C,F). -check_indexing([],_). -check_indexing([A|B],C) :- - functor(A,D,E), - A=..[_|F], - term_variables(B-C,G), - check_indexing(F,1,D/E,G), - check_indexing(B,[A|C]). -check_indexing([],_,_,_). -check_indexing([A|B],C,D,E) :- - ( is_indexed_argument(D,C) -> - true - ; - ( nonvar(A) -> - indexed_argument(D,C) - ) - ; - term_variables(B,F), - append(F,E,G), - ( memberchk_eq(A,G) -> - indexed_argument(D,C) - ; - true - ) - ), - H is C+1, - 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,simplification,G), - add_occurrences(D,F,propagation,G), - add_occurrences(B). -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 - ; - ( var(B) -> - spawns_all(A,C) - ) - ; - ( B=true -> - true - ) - ; - ( B=fail -> - true - ) - ; - ( B=! -> - true - ) - ; - ( B=(E,F) -> - observation_analysis(A,E,C,D), - observation_analysis(A,F,C,D) - ) - ; - ( B=(E;F) -> - observation_analysis(A,E,C,D), - observation_analysis(A,F,C,D) - ) - ; - ( 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=(_=_) -> - spawns_all_triggers(A,C) - ) - ; - ( B=(_ is _) -> - spawns_all_triggers(A,C) - ) - ; - ( builtin_binds_b(B,J) -> - ( J==[] -> - true - ; - spawns_all_triggers(A,C) - ) - ) - ; - spawns_all(A,C) - ). -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) - ; - 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) - ; - D=[], - E=[] - ), - generate_attach_detach_a_constraint_all(B,F), - append([D,E,F],C). -generate_attach_a_constraint(A,[B,C]) :- - 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), - 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) - ; - generate_attach_body_n(A,E,G,I) - ), - 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)->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), - 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_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_body_n(A,E,G,I) - ). -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_body_n(A/B,C,D,E) :- - get_constraint_index(A/B,F), - 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=[] - ; - P=N - ) - ; - ( 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), - ( is_used_auxiliary_predicate(attach_increment), - B>0 -> - A=[C,D], - generate_attach_increment_empty(C), - ( B==1 -> - generate_attach_increment_one(D) - ; - generate_attach_increment_many(B,D) - ) - ; - A=[] - ). -generate_attach_increment_empty((attach_increment([],_):-true)). -generate_attach_increment_one(A) :- - B=attach_increment([C|D],E), - get_target_module(F), - ( 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) :- - 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=[] - ; - ( B==1 -> - generate_attr_unify_hook_one(A) - ) - ; - generate_attr_unify_hook_many(B,A) - ). -generate_attr_unify_hook_one([A]) :- - B=attr_unify_hook(C,D), - get_target_module(E), - 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), - 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 - ; - 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 - ; - 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) -> - generate_insert_delete_constraint(A,C,D) - ; - C=D - ), - generate_insert_delete_constraints(B,D). -generate_insert_delete_constraint(A,B,C) :- - 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) - ; - delay_phase_end(validate_store_type_assumptions,(insert_constraint_body(A,B,E,D),insert_constraint_direct_used_vars(E,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]. -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,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_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), - 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), - 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), - 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) - ), - 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), - 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) - ; - 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) - ; - 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) :- - 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] - ; - 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). -global_singleton_store_name(A/B,C) :- - get_target_module(D), - 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,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=N - ), - enumerate_store_bodies(B,C,N). -enumerate_store_body(default,A,B,C) :- - 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), - 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), - make_get_store_goal(D,B,E), - C=(E,B\==[]). -enumerate_store_body(multi_store(A),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), - make_get_store_goal(E,F,G), - D=(G,value_ht(F,C)). -guard_simplification :- - ( chr_pp_flag(guard_simplification,on) -> - precompute_head_matchings, - simplify_guards(1) - ; - true - ). -next_prev_rule(A,B,C) :- - ( find_min_q(A,_-D) -> - D=(-B), - normalize_heap(A,D,C) - ; - 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=[] - ), - 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), - list2conj(G,D). -new_vars([],_,[]). -new_vars([A|B],C,D) :- - ( memberchk_eq(A,C) -> - new_vars(B,C,D) - ; - D=[A-E,E-A|F], - new_vars(B,C,F) - ). -head_subset(A,B,C) :- - head_subset(A,B,C,[],_). -head_subset([],A,B,B,A). -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) :- - ( - variable_replacement(C,A,E,D), - F=B - ; - F=[A|G], - head_member(B,C,D,E,G) - ). -make_head_matchings_explicit(A,B,C) :- - 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), - substitute_arguments(A,E,B). -make_head_matchings_explicit_not_negated(A,B,C) :- - 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_arguments(A,D), - extract_arguments(B,E), - make_matchings_explicit_not_negated(D,E,C). -extract_arguments([],[]). -extract_arguments([A|B],C) :- - A=..[_|D], - 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) -> - ( memberchk_eq(A,E) -> - list2disj(F,I), - H=[(I;C==A)|J], - K=E - ; - H=J, - C=A, - K=[A|E] - ), - L=F - ; - functor(A,M,N), - A=..[M|O], - make_matchings_explicit(O,P,E,F,Q,R), - S=..[M|P], - ( R==[] -> - H=[functor(C,M,N)|J] - ; - list2conj(R,T), - list2disj(F,I), - U=(C\=S;I;T), - H=[functor(C,M,N),U|J] - ), - L=[C\=S|Q], - 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) :- - 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) -> - apply_guard_wrt_variable(C,A,D) - ; - A=..[F|G], - apply_guard_wrt_term(G,C,H), - D=..[F|H] - ), - apply_guard_wrt_term(B,C,E). -apply_guard_wrt_variable((A,B),C,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 - ; - ( A=functor(F,G,H), - B==F, - ground(G), - ground(H) -> - functor(C,G,H) - ) - ; - C=B - ). -replace_some_heads(A,B,_,[],A,B,_,_,[]) :- - !. -replace_some_heads([],[A|B],[C|D],[E|F],[],[G|H],I,J,K) :- - !, - ( C==E -> - G=E, - replace_some_heads([],B,D,F,[],H,I,J,K) - ; - ( E=functor(L,M,N), - C==L -> - length(O,N), - ( var(A) -> - P=[], - G=..[M|O] - ; - A=..[M|Q], - use_same_args(Q,O,R,I,J,P), - G=..[M|R] - ), - replace_some_heads([],B,D,F,[],H,I,J,S), - append(P,S,K) - ) - ; - G=A, - replace_some_heads([],B,D,[E|F],[],H,I,J,K) - ). -replace_some_heads([A|B],C,[D|E],[F|G],[H|I],J,K,L,M) :- - !, - ( D==F -> - H=F, - replace_some_heads(B,C,E,G,I,J,K,L,M) - ; - ( F=functor(N,O,P), - D==N -> - length(Q,P), - ( var(A) -> - R=[], - H=..[O|Q] - ; - A=..[O|S], - use_same_args(S,Q,T,K,L,R), - H=..[O|T] - ), - replace_some_heads(B,C,E,G,I,J,K,L,U), - append(R,U,M) - ) - ; - H=A, - replace_some_heads(B,C,E,[F|G],I,J,K,L,M) - ). -use_same_args([],[],[],_,_,[]). -use_same_args([A|B],[_|C],[D|E],F,G,H) :- - var(A), - !, - D=A, - use_same_args(B,C,E,F,G,H). -use_same_args([A|B],[C|D],[E|F],G,H,I) :- - nonvar(A), - !, - ( common_variables(A,H) -> - I=[C=A|J] - ; - I=J - ), - E=C, - use_same_args(B,D,F,G,H,J). -simplify_heads([],_,_,_,[],[]). -simplify_heads([A|B],C,D,E,F,G) :- - A=(H=I), - ( - ( - nonvar(I) - ; - common_variables(I,B-C) - ), - guard_entailment:entails_guard(C,H=I) -> - ( common_variables(I,D-B-C) -> - G=J, - F=K - ; - ( common_variables(I,E) -> - G=[H=I|J] - ; - G=J - ), - F=[H|K] - ) - ; - ( nonvar(I), - functor(I,L,M), - guard_entailment:entails_guard([functor(H,L,M)|C],H=I) -> - G=J, - ( common_variables(I,D-B-C) -> - F=K - ; - F=[functor(H,L,M)|K] - ) - ) - ; - F=K, - G=J - ), - simplify_heads(B,[A|C],D,E,K,J). -common_variables(A,B) :- - term_variables(A,C), - term_variables(B,D), - intersect_eq(C,D,E), - E\==[]. -add_failing_occ(A,B,C,D,E,F,_,G,H) :- - A=pragma(rule(_,_,I,_),ids(J,K),_,_,_), - append(K,J,L), - missing_partner_cond(B,C,L,D,M,N,G), - copy_term((N,B,C),(O,P,Q)), - variable_replacement((N,B,C),(O,P,Q),H), - copy_with_variable_replacement(I,R,H), - extract_explicit_matchings(R,S), - negate_b(S,T), - copy_with_variable_replacement(M,U,H), - ( subsumes(F,O) -> - E=[(T;U)] - ; - E=[chr_pp_void_info] - ). -missing_partner_cond([],[],[],_,fail,_,_). -missing_partner_cond([A|B],[_|C],[D|E],D,F,A,G) :- - !, - missing_partner_cond(B,C,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),C) :- - !, - ( extract_explicit_matchings(A) -> - extract_explicit_matchings(B,C) - ; - C=(A,D), - extract_explicit_matchings(B,D) - ). -extract_explicit_matchings(A,B) :- - !, - ( extract_explicit_matchings(A) -> - B=true - ; - B=A - ). -extract_explicit_matchings(A=B) :- - var(A), - var(B), - !, - A=B. -extract_explicit_matchings(A==B) :- - var(A), - var(B), - !, - A=B. -assert_constraint_type(A,B) :- - ( ground(B) -> - constraint_type(A,B) - ; - chr_error(type_error,'Declared argument types "~w" for constraint "~w" must be ground! -',[B,A]) - ). -get_type_definition_det(A,B) :- - ( get_type_definition(A,B) -> - true - ; - chr_error(type,'Could not find type definition for type `~w''. -',[A]) - ). -get_constraint_type_det(A,B) :- - ( get_constraint_type(A,B) -> - true - ; - 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) - ) - ; - 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) -> - check_constraint_storages(A) - ; - true - ). -check_constraint_storages([]). -check_constraint_storages([A|B]) :- - check_constraint_storage(A), - check_constraint_storages(B). -check_constraint_storage(A) :- - get_max_occurrence(A,B), - check_occurrences_storage(A,1,B). -check_occurrences_storage(A,B,C) :- - ( B>C -> - stored_completing(A,1,0) - ; - check_occurrence_storage(A,B), - D is B+1, - check_occurrences_storage(A,D,C) - ). -check_occurrence_storage(A,B) :- - get_occurrence(A,B,C,D), - ( is_passive(C,D) -> - stored(A,B,maybe) - ; - get_rule(C,E), - E=pragma(rule(F,G,H,I),ids(J,K),_,_,_), - ( select2(D,L,J,F,_,_) -> - check_storage_head1(L,B,F,G,H) - ; - ( select2(D,M,K,G,_,_) -> - check_storage_head2(M,B,F,I) - ) - ) - ). -check_storage_head1(A,B,C,D,E) :- - functor(A,F,G), - H=F/G, - ( C==[A], - D==[], - guard_entailment:entails_guard([chr_pp_headvariables(A)],E), - A=..[_|I], - no_matching(I,[]) -> - stored(H,B,no) - ; - stored(H,B,maybe) - ). -no_matching([],_). -no_matching([A|B],C) :- - var(A), - \+memberchk_eq(A,C), - no_matching(B,[A|C]). -check_storage_head2(A,B,C,D) :- - functor(A,E,F), - G=E/F, - ( C\==[], - D==true -> - stored(G,B,maybe) - ; - stored(G,B,yes) - ). -constraints_code(A,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], - make_suspension_continuation_goal(A/B,F,H), - build_head(A,B,[0],F,I), - ( chr_pp_flag(debugable,on) -> - 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,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:-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) -> - get_allocation_occurrence(A/B,F), - get_max_occurrence(A/B,G), - ( chr_pp_flag(debugable,off), - G - ( 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,J,H,_) - ), - 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), - 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) -> - 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 - ), - _=..[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) - ; - 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) - ; - G=true - ), - insert_constraint_goal(A,B,C,H), - ( chr_pp_flag(late_allocation,on) -> - activate_constraint_goal(A,(H,G),F,B,E,D) - ; - activate_constraint_goal(A,true,F,B,E,D) - ). -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,F,G,H,I,J) - ). -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,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,M), - N=(J:-M,L), - 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), - H==G -> - allocate_constraint_goal(A,D,C,I), - ( may_trigger(A) -> - E=(var(D)->I;true) - ; - E=I - ) - ; - E=true - ). -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 - ) - ; - E=true - ). -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) :- - reverse(A,B). -dependency_reorder([A|B],C,D) :- - A=unit(_,_,E,F), - ( E==fixed -> - G=[A|C] - ; - dependency_insert(C,A,F,G) - ), - dependency_reorder(B,G,D). -dependency_insert([],A,_,[A]). -dependency_insert([A|B],C,D,E) :- - A=unit(F,_,_,_), - ( memberchk(F,D) -> - E=[C,A|B] - ; - E=[A|G], - dependency_insert(B,C,D,G) - ). -build_units(A,B,C,D) :- - build_retrieval_units(A,1,E,C,F,D,G), - 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,fixed,K)|L], - M is C+1, - build_retrieval_units(B,M,D,J,F,L,H). -initialize_unit_dictionary(A,B) :- - term_variables(A,C), - pair_all_with(C,0,B). -update_unit_dictionary([],_,A,A,B,B). -update_unit_dictionary([A|B],C,D,E,F,G) :- - ( lookup_eq(D,A,H) -> - ( - ( - H==C - ; - memberchk(H,F) - ) -> - I=F - ; - I=[H|F] - ), - J=D - ; - J=[A-C|D], - I=F - ), - update_unit_dictionary(B,C,J,E,I,G). -build_guard_units(A,B,C,D) :- - ( A=[E] -> - D=[unit(B,E,fixed,[])] - ; - ( A=[E|F] -> - term_variables(E,G), - update_unit_dictionary2(G,B,C,H,[],I), - D=[unit(B,E,movable,I)|J], - K is B+1, - build_guard_units(F,K,H,J) - ) - ). -update_unit_dictionary2([],_,A,A,B,B). -update_unit_dictionary2([A|B],C,D,E,F,G) :- - ( lookup_eq(D,A,H) -> - ( - ( - H==C - ; - memberchk(H,F) - ) -> - I=F - ; - I=[H|F] - ), - J=[A-C|D] - ; - J=[A-C|D], - I=F - ), - update_unit_dictionary2(B,C,J,E,I,G). -functional_dependency_analysis(A) :- - ( fail, - chr_pp_flag(functional_dependency_analysis,on) -> - functional_dependency_analysis_main(A) - ; - true - ). -functional_dependency_analysis_main([]). -functional_dependency_analysis_main([A|B]) :- - ( discover_unique_pattern(A,C,D,E,F) -> - functional_dependency(C,D,E,F) - ; - true - ), - functional_dependency_analysis_main(B). -discover_unique_pattern(A,B/C,D,E,F) :- - A=pragma(G,_,_,_,D), - G=rule(H,I,J,_), - ( H=[K], - I=[L] -> - true - ; - ( H=[K,L], - I==[] -> - true - ) - ), - check_unique_constraints(K,L,J,D,M), - term_variables(K,N), - \+ (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) :- - ( lookup_eq(C,A,_) -> - D=E - ; - D=[A|E] - ), - select_pragma_unique_variables(B,C,E). -set_semantics_rules(A) :- - ( fail, - chr_pp_flag(set_semantics_rule,on) -> - set_semantics_rules_main(A) - ; - true - ). -set_semantics_rules_main([]). -set_semantics_rules_main([A|B]) :- - set_semantics_rule_main(A), - set_semantics_rules_main(B). -set_semantics_rule_main(A) :- - A=pragma(B,C,_,_,D), - ( B=rule([E],[F],true,_), - C=ids([G],[H]), - \+is_passive(D,G), - functor(E,I,J), - get_functional_dependency(I/J,D,K,L), - copy_term_nat(K-L,E-M), - copy_term_nat(K-L,F-N), - M==N -> - passive(D,H) - ; - true - ). -check_unique_constraints(A,B,C,D,E) :- - \+any_passive_head(D), - variable_replacement(A-B,B-A,E), - copy_with_variable_replacement(C,F,E), - negate_b(C,G), - once(entails_b(G,F)). -symmetry_analysis(A) :- - ( chr_pp_flag(check_unnecessary_active,off) -> - true - ; - symmetry_analysis_main(A) - ). -symmetry_analysis_main([]). -symmetry_analysis_main([A|B]) :- - A=pragma(C,ids(D,E),_,_,F), - C=rule(G,H,_,_), - ( - ( - \+chr_pp_flag(check_unnecessary_active,simplification) - ; - H==[] - ), - G\==[] -> - symmetry_analysis_heads_simplification(G,D,[],[],C,F), - symmetry_analysis_heads_propagation(H,E,[],[],C,F) - ; - true - ), - symmetry_analysis_main(B). -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), - variable_replacement(I,A,K), - copy_with_variable_replacement(G,L,K), - identical_rules(G,L) -> - passive(H,C) - ; - true - ), - 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) -> - 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) - ; - R1=Q1 - ), - ( unconditional_occurrence(F/G,H), - chr_pp_flag(late_allocation,on) -> - Q1=true - ; - Q1=! - ), - 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) -> - ( D= + -> - ( memberchk_eq(A,G) -> - H=[B=K|L], - M=G - ; - H=[B==K|L], - M=[A|G] - ) - ; - H=[B==K|L], - M=G - ), - N=F - ; - N=[A-B|F], - H=L, - ( D= + -> - M=[A|G] - ; - M=G - ) - ), - 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= + -> - H=[B=A|L] - ; - H=[B==A|L] - ), - F=N, - M=G, - O=C, - P=E - ) - ; - ( D== +, - is_ground(G,A) -> - copy_with_variable_replacement(A,T,F), - H=[B=T|L], - F=N, - M=G, - O=C, - P=E - ) - ; - ( 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=X|L] - ; - H=[nonvar(B),B=X|L] - ), - 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 - ; - ( compound(B) -> - B=..[_|C], - maplist(is_ground(A),C) - ) - ; - memberchk_eq(B,A) - ). -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) :- - ( A=[_|_] -> - rest_heads_retrieval_and_matching_n(A,B,H,I,C,D,E,F,G,J,K,L) - ; - D=[], - E=[], - F=G, - K=L - ). -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) - ; - 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) - ), - 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 -> - H=[F|I], - filter_mode(C,E,G,I) - ; - filter_mode([A-B|C],E,G,H) - ). -filter_append([],A,A). -filter_append([A|B],C,D) :- - ( A=silent(_) -> - filter_append(B,C,D) - ; - D=[A|E], - filter_append(B,C,E) - ). -check_unique_keys([],_). -check_unique_keys([A|B],C) :- - lookup_eq(C,A,_), - check_unique_keys(B,C). -different_from_other_susps(A,B,C,D,E) :- - different_from_other_susps_(C,D,A,B,F), - list2conj(F,E). -different_from_other_susps_(_,[],_,_,[]) :- - !. -different_from_other_susps_([A|B],[C|D],E,F,G) :- - ( functor(E,H,I), - functor(A,H,I), - copy_term_nat(A-E,J-K), - \+ \+J=K -> - G=[F\==C|L] - ; - G=L - ), - different_from_other_susps_(B,D,E,F,L). -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 - ; - ( 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,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 - ; - 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) - ) - ) - ; - ( 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,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'(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)) - ; - V=[], - W=[] - ), - 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) -> - D=[A|F], - split_off_simple_guard(B,C,F,E) - ; - D=[], - E=[A|B] - ). -simple_guard(A,B) :- - binds_b(A,C), - \+ (member(D,C),lookup_eq(B,D,_)). -active_constraint_detachment(A,B,C,D,E) :- - functor(C,F,G), - H=F/G, - ( is_stored(H) -> - ( - ( - A==[0], - chr_pp_flag(store_in_guards,off) - ; - get_allocation_occurrence(H,I), - get_max_occurrence(H,J), - J - E=true - ; - gen_uncond_susp_detachment(C,B,active,D,K), - ( chr_pp_flag(late_allocation,on) -> - E=(var(B)->true;K) - ; - E=K - ) - ) - ; - 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) -> - I='chr debug_event'(remove(B)) - ; - I=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 - ) - ; - E=true - ). -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] - ; - E1=D1 - ), - 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) -> - F=[C|H], - G=I - ; - F=H, - G=[C|I] - ), - split_by_ids(B,D,E,H,I). -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 - ; - F=J, - G=K, - H=[C|L], - I=[A|M] - ), - 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) - ; - 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,[],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). -passive_delegate_variables(A,B,C,D,E) :- - term_variables(B,F), - delegate_variables(A,C,D,F,E). -delegate_variables(A,B,C,D,E) :- - term_variables(A,F), - term_variables(B,G), - intersect_eq(F,G,H), - list_difference_eq(H,D,I), - translate(I,C,E). -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] - ; - 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(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)) - ; - I2=true, - J2=true - ), - ( is_stored_in_guard(F/G,O) -> - B2=C2, - K2=true - ; - B2=true, - K2=C2 - ), - ( 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) :- - ( 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))) - ; - 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) :- - 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,[],_), - guard_body_copies(B,S,T,U), - V=P, - ( unconditional_occurrence(D/E,F), - chr_pp_flag(late_allocation,on) -> - W=true - ; - W=! - ), - B=rule(_,_,X,Y), - ( chr_pp_flag(debugable,on) -> - 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) - ; - D1=W - ), - ( 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, - ( 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 - ) - ), - ( 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), - extend_id(H,N), - propagation_nested_code(L,[K,A],C,D,E,F,G,N,M,J). -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,[],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,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,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,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 - ; - I1=[X|T], - H1=I - ), - ( H1=[_] -> - J1=H1 - ; - 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(_,_,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)) - ; - P2=true, - Q2=true - ), - ( 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), - 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), - !, - named_history_susps(B,G,H,F). -gen_var_susp_list_for([A],B,C,D,E,F) :- - !, - 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([A|B],C,D,E,F,G) :- - gen_var_susp_list_for(B,[A|C],H,F,_,_), - functor(A,I,J), - gen_var(G), - head_info(A,J,_,K,_,L), - get_constraint_mode(I/J,M), - head_arg_matches(L,M,H,_,D), - passive_delegate_variables(A,B,C,D,N), - append(N,[K,G|F],E). -gen_var_susp_list_for_b([A],B,C,[D],E,[F],[]) :- - !, - 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), - length(C,G), - G=<6 -> - reorder_heads_main(A,B,C,D,E,F) - ; - E=C, - F=D - ). -reorder_heads_main(A,B,C,D,E,F) :- - term_variables(B,G), - H=entry([],[],G,C,D,A), - copy_term_nat(H,I), - a_star(I,J^(chr_translate:final_data(J)),K^L^M^(chr_translate:expand_data(K,L,M)),N), - I=H, - N=entry(O,P,_,_,_,_), - reverse(O,E), - reverse(P,F). -final_data(A) :- - A=entry(_,_,_,_,[],_). -expand_data(A,B,C) :- - A=entry(D,E,F,G,H,I), - select2(J,K,G,H,L,M), - term_variables([J|F],N), - B=entry([J|D],[K|E],N,L,M,I), - order_score(J,K,F,L,I,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,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 - ; - order_score_indexes(A,B,C,E) - ). -order_score(multi_hash(A),B,_,C,_,_,D,E) :- - ( D=<100 -> - E=D - ; - 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 - ), - 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 -> - D=0 - ; - ( E>0 -> - D is max(10-E,0) - ) - ; - ( F>0 -> - D is max(10-F,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) :- - order_score_count_vars(B,C,D,H-I-J), - ( memberchk_eq(A,C) -> - E is H+1, - F=I, - G=J - ; - ( memberchk_eq(A,D) -> - F is I+1, - E=H, - G=J - ) - ; - G is J+1, - 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. -gen_var(_). -gen_vars(A,B) :- - length(B,A). -head_info(A,B,C,D,E,F) :- - vars_susp(B,C,D,E), - A=..[_|G], - pairup(G,C,F). -inc_id([A|B],[C|B]) :- - C is A+1. -dec_id([A|B],[C|B]) :- - C is A-1. -extend_id(A,[0|A]). -next_id([_,A|B],[C|B]) :- - C is A+1. -build_head(A,B,C,D,E) :- - buildName(A,B,C,F), - ( - ( - chr_pp_flag(debugable,on) - ; - is_stored(A/B), - ( - has_active_occurrence(A/B) - ; - chr_pp_flag(late_allocation,off) - ), - ( - may_trigger(A/B) - ; - get_allocation_occurrence(A/B,G), - get_max_occurrence(A/B,H), - H>=G - ) - ) -> - E=..[F|D] - ; - init(D,I), - E=..[F|I] - ). -buildName(A,B,C,D) :- - ( - ( - chr_pp_flag(debugable,on) - ; - 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), - atomic_concat(G,B,H), - buildName_(C,H,D) - ; - D=A - ). -buildName_([],A,A). -buildName_([A|B],C,D) :- - buildName_(B,C,E), - atom_concat(E,'__',F), - atomic_concat(F,A,D). -vars_susp(A,B,C,D) :- - length(B,A), - append(B,[C],D). -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(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), - make_get_store_goal(F,C,B), - update_store_type(D/E,global_ground). -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), - 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,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), - 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) :- - !, - 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]) - ; - sbag_member_call(H,L,O) - ), - 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,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]) - ; - sbag_member_call(H,L,P) - ), - 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] -> - H is D+1, - ( F>D -> - E=[A|I], - hash_index_filter(B,[F|G],H,I) - ; - ( F==D -> - E=[silent(A)|I], - hash_index_filter(B,G,H,I) - ) - ) - ; - E=[A|B] - ). -assume_constraint_stores([]). -assume_constraint_stores([A|B]) :- - ( 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), - 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) - ; - ( - ( - 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) :- - 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). -get_indexed_arguments(A,B,C,D) :- - ( A>B -> - D=[] - ; - ( is_indexed_argument(C,A) -> - D=[A|E] - ; - D=E - ), - F is A+1, - get_indexed_arguments(F,B,C,E) - ). -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,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] - ; - V=[G|Q] - ), - 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), - 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],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([],_). -ai_observation_schedule_new_calls([A|B],C) :- - C=odom(_,D), - 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_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_set(A,B,C) :- - ord_subtract(A,B,C). -ai_observation_abstract_constraint(A,B,C) :- - functor(A,D,E), - C=D/E, - 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,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,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,[],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,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(writeln(_),_,A,A,_) :- - !. -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). -unconditional_occurrence(A,B) :- - get_occurrence(A,B,C,_), - get_rule(C,D), - D=pragma(E,_,_,_,_), - copy_term_nat(E,F), - 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))), - 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], - generate_show_rules(A,D,[E|C]), - inc_rule_count(F), - E=pragma(rule(['$show'],[],true,true),ids([0],[]),[],no,F) - ; - B=A, - D=C - ). -generate_show_rules([],A,A). -generate_show_rules([A/B|C],[D|E],F) :- - functor(G,A,B), - 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)). -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) - ; - 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_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) :- - ( 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(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) - ; - 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(A) -> - term_variables(A,D2), - attach_increment(D2,v(L,M,N,O,P,Q,R,S,T,U,V)) - ; - true - ), - '$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) - ). -'$novel_production'(A,B) :- - arg(3,A,C), - ( hprolog:get_ds(B,C,_) -> - fail - ; - 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 - ), - '$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) - ; - 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) - ; - 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) - ). -'$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), - ( - 'chr sbag_member'(B,C), - B=suspension(_,active,_,_), - ! - ; - !, - chr_source_file___1__0__0__2(C,A) - ). -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) :- - 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_ground_chr_translate____target_module___1',D), - 'chr sbag_member'(B,D), - B=suspension(_,active,_,C), - !, - A=C. -get_target_module(user). -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(_,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) :- - 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) :- - 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,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____types_modes_condition___3',F), - !, - 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) -> - 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 - ), - 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__1__0__7(N,A,B,C,D,E) - ). -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) :- - 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(_,active,_,_,_,D), - !, - B=D. -get_constraint_mode(_/B,A) :- - replicate(B,?,A). -may_trigger(A) :- - \+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(_,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\== +, - !, - is_stored(A). -may_trigger(_) :- - chr_pp_flag(debugable,on). -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\== +, - !, - 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) :- - 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) :- - 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(_,active,_,D), - !, - B=D. -get_store_type(A,B) :- - 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(_,active,_,D), - !, - B=D. -get_store_type(_,default). -update_store_type(A,B) :- - 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(_,active,_,D), - ( - memberchk(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) :- - 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) :- - 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) :- - 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), - !, - 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 - ) - ; - 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), - !, - 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 - ) - ; - 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 - ; - 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) :- - 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,_) :- - 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_multi_hash_chr_translate____least_occurrence___2-1',F), - lookup_ht(F,A,D), - !, - 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, - 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(_,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(_,active,_,_,_) -> - setarg(2,C,inactive), - passive___2__0__0__6(I,A,B,C) - ; - true - ) - ; - passive___2__0__0__6(I,A,B,C) - ). -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__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 - ), - 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__1__1__8(L,E,F,A,G,B,C,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__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(B,J), - ( A=suspension(_,active,_,_,_) -> - setarg(2,A,inactive), - passive___2__2__0__9(G,B,C,A) - ; - true - ) - ; - passive___2__2__0__9(G,B,C,A) - ). -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__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(B,H), - ( A=suspension(_,active,_,_,_) -> - setarg(2,A,inactive), - passive___2__3__0__10(G,B,C,A) - ; - true - ) - ; - passive___2__3__0__10(G,B,C,A) - ). -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__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 -> - 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(_,active,_,_,_) -> - setarg(2,C,inactive), - passive___2__4__0__11(I,A,B,C) - ; - true - ) - ; - passive___2__4__0__11(I,A,B,C) - ). -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) :- - 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) :- - nb_getval('$chr_store_multi_hash_chr_translate____passive___2-1',D), - lookup_ht(D,A,C), - 'chr sbag_member'(B,C), - B=suspension(_,active,_,_,_), - !. -any_passive_head(_) :- - fail. -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), - !, - 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) - ; - 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 - ), - \+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 - ), - ( C=suspension(_,active,_,_,_,_,_,_,_) -> - setarg(2,C,inactive), - occurrence___5__0__1__3(M,I,A,B,D,E,F,G,H,C) - ; - true - ) - ; - occurrence___5__0__1__3(M,I,A,B,D,E,F,G,H,C) - ). -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___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(_,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) -> - 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 - ), - 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___5__1__0__6(L,A,B,C,D,E,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___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(D,E), - ( A=suspension(_,active,_,_,_,_,_,_,_) -> - setarg(2,A,inactive), - occurrence___5__2__0__28(I,B,C,D,E,F,A) - ; - true - ) - ; - occurrence___5__2__0__28(I,B,C,D,E,F,A) - ). -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___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 - 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 - ), - 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___5__3__3__29(Q,A,N,L,B,M,J,C,K,D,E,F,G,H,I) - ). -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___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 - 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 - ), - 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___5__4__3__30(R,A,O,L,M,B,N,J,C,K,D,E,F,G,H,I) - ). -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___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(_,active,_,_,O,P), - B - 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 - ), - R is P-1, - stored(A,B,maybe), - 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___5__5__0__34(K,A,B,C,D,E,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___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___5__6__0__35(K,B,C,D,E,F,A) - ). -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___5__6__1__35(N,I,A,B,D,E,F,G,H,C) - ). -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(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___5__6__2__35(Q,L,A,B,K,C,D,F,G,H,I,J,E) - ). -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___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___5__7__0__36(K,B,C,D,E,F,A) - ). -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___5__7__1__36(N,I,A,B,D,E,F,G,H,C) - ). -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(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___5__7__2__36(Q,L,A,B,K,C,D,F,G,H,I,J,E) - ). -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___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(D,E), - ( A=suspension(_,active,_,_,_,_,_,_,_) -> - setarg(2,A,inactive), - occurrence___5__8__0__37(J,B,C,D,E,F,A) - ; - true - ) - ; - occurrence___5__8__0__37(J,B,C,D,E,F,A) - ). -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___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, - 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 - ), - 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___5__9__0__41(L,A,B,C,D,E,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___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___5__10__0__47(K,B,C,D,E,F,A) - ). -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___5__10__1__47(L,I,A,B,D,E,F,G,H,C) - ). -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 - ), - 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___5__10__2__47(O,A,B,K,C,D,F,G,H,I,J,E) - ). -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___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___5__11__0__49(K,B,C,D,E,F,A) - ). -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, - 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 - ), - 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___5__11__1__49(L,A,B,D,E,F,G,H,C) - ). -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) :- - 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,_), - !, - F=C, - G=D. -get_occurrence(A,B,_,_) :- - 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,_,_,_), - !, - 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 -> - 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__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_multi_hash_chr_translate____stored_complete___3-1',F), - lookup_ht(F,A,D), - !, - 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__5(I,B,C,A) - ). -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__5(K,F,A,B,D,E,C) - ). -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(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__5(M,I,A,B,H,C,D,F,G,E) - ). -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) :- - 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. -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,0,B) :- - !, - 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), - !, - 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 - ), - \+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 - ), - ( 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__1__1__2(L,F,G,H,A,B,D,E,C) - ). -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__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 - ), - 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(_,active,_,_,_) -> - setarg(2,C,inactive), - allocation_occurrence___2__3__0__5(I,A,B,C) - ; - true - ) - ; - allocation_occurrence___2__3__0__5(I,A,B,C) - ). -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) :- - 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(_,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_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), - 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 - ), - \+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 - ), - ( 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__1__1(M,F,G,H,I,A,B,D,E,C) - ). -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__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], - 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(_,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) -> - 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(_,active,_,_,_,_) -> - setarg(2,C,inactive), - rule___2__1__0__2(I,A,B,C) - ; - true - ) - ; - rule___2__1__0__2(I,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_multi_hash_chr_translate____least_occurrence___2-1',E), - lookup_ht(E,A,D), - !, - 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], - 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(_,active,_,_,_,_) -> - setarg(2,C,inactive), - rule___2__2__0__3(I,A,B,C) - ; - true - ) - ; - rule___2__2__0__3(I,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),_,_,_), - !, - 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(_,active,_,_,_,_) -> - setarg(2,C,inactive), - rule___2__4(A,B,C) - ; - true - ). -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, - !, - 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 - ) - ; - 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 - ; - 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___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__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), - C=pragma(rule(_,_,E,_),_,_,_,B), - conj2list(E,J), - append(G,F,K), - append(K,J,L), - guard_entailment:entails_guard(L,fail) -> - '$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 - ), - 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__5__0__11(I,B,C,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), - ( - M\==X - ; - N\==Y - ), - !, - ( var(C) -> - true - ; - 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,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__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__6__0__13(I,B,C,A) - ). -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 - 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 - ), - 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__6__3__13(P,A,M,J,K,B,L,G,H,C,I,D,E,F) - ). -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__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(B,J), - ( A=suspension(_,active,_,_,_,_) -> - setarg(2,A,inactive), - rule___2__8__0__16(G,B,C,A) - ; - true - ) - ; - rule___2__8__0__16(G,B,C,A) - ). -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__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(B,H), - ( A=suspension(_,active,_,_,_,_) -> - setarg(2,A,inactive), - rule___2__9__0__17(G,B,C,A) - ; - true - ) - ; - rule___2__9__0__17(G,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_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__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=[] -> - 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 - ), - chr_warning(weird_program,'All heads passive in ~@. - This rule never fires. Please check your program. -',[format_rule(B)]), - ( C=suspension(_,active,_,_,_,_) -> - setarg(2,C,inactive), - rule___2__10__0__18(G,A,B,C) - ; - true - ) - ; - rule___2__10__0__18(G,A,B,C) - ). -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__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__11__0__23(J,B,C,A) - ). -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__11__1__23(K,F,G,H,A,B,D,E,C) - ). -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 - ), - 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__11__2__23(N,A,B,H,I,J,C,D,F,G,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 - ), - nb_getval('$chr_store_multi_hash_chr_translate____rule___2-1',G), - insert_ht(G,A,B) - ; - true - ). -get_rule(A,B) :- - 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(_,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) :- - 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) :- - 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) :- - 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) :- - 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(_,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) :- - 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), - 'chr sbag_member'(B,D), - B=suspension(_,active,_,C), - !, - A=C. -get_max_constraint_index(0). -identifier_size(A) :- - nb_getval('$chr_store_global_ground_chr_translate____identifier_size___1',C), - ( - 'chr sbag_member'(B,C), - B=suspension(_,active,_,_), - ! - ; - !, - identifier_size___1__0__0__2(C,A) - ). -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 - ) - ; - D=[_,_|F], - setarg(2,D,F), - ( F=[G|_] -> - setarg(3,G,D) - ; - true - ) - ), - identifier_size___1__0__0__2(C,A) - ; - identifier_size___1__0__0__2(C,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 - ). -get_identifier_size(A) :- - nb_getval('$chr_store_global_ground_chr_translate____identifier_size___1',D), - 'chr sbag_member'(B,D), - B=suspension(_,active,_,C), - !, - 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,_,_,_), - ! - ; - !, - 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 - ) - ; - H=[_,_|J], - setarg(2,H,J), - ( J=[K|_] -> - setarg(3,K,H) - ; - true - ) - ), - 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,_,_), - ! - ; - !, - 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(_,active,_,_,_,F), - !, - 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), - !, - 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(_,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), - !, - 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 - ; - 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) - ). -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) :- - 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(_,active,_,_,_,C), - !, - 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) :- - nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-3',E), - lookup_ht1(E,A,A,C), - !, - 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(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__1(F,B,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 - ; - 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,_) :- - nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-1',I), - lookup_ht(I,B,H), - 'chr sbag_member'(D,H), - D=suspension(_,active,_,_,_,E,F,G,_), - F=A, - E - next_occ_in_rule(A,B,Q,S,E,F) - ; - 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 - ) - ; - true - ), - !, - next_occ_in_rule(A,B,Q,S,Z,F) - ). -next_occ_in_rule(_,_,_,_,_,_). -multiple_occ_constraints_checked(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 - ). -type_definition(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]) - ; - 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 - ) - ), - 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) :- - 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), - !, - 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) :- - 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(_,active,_,_,D), - !, - B=D. -get_constraint_type(_,_) :- - fail. -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. -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(_,active,_,_,G,H), - G=J/K, - functor(B,J,K), - !, - B=..[_|L], - 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), - 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. -enumerated_atomic_type___2__0(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(A,H,I), - functor(E,H,I), - !, - ( 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) - ), - maplist(atomic,F), - B=F. -enumerated_atomic_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(A,H,I), - functor(E,H,I), - !, - ( 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) - ), - 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 - stored_complete___3__0__1__3(H,F,G,I,B,C,D,A) - ; - stored_complete___3__0__0__3(I,B,C,D,A) - ). -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__3(L,G,A,B,D,E,F,C) - ). -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(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__3(N,J,A,B,I,C,D,F,G,H,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__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), - ( A=suspension(_,active,_,_,_,_) -> - setarg(2,A,inactive), - stored_complete___3__1__0__4(J,B,C,D,A) - ; - true - ) - ; - 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,_,_,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) :- - 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(_,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(_,active,_,_,F,G), - G=0, - F= - setarg(3,H,G) - ; - true - ). -constraint_code(A,B,C) :- - ( - ( - chr_pp_flag(debugable,on) - ; - is_stored(A), - ( - has_active_occurrence(A) - ; - chr_pp_flag(late_allocation,off) - ), - ( - may_trigger(A) - ; - get_allocation_occurrence(A,D), - get_max_occurrence(A,E), - E>=D - ) - ) -> - constraint_prelude(A,F), - add_dummy_location(F,G), - B=[G|H] - ; - B=H - ), - I=[0], - occurrences_code(A,1,I,J,H,K), - gen_cond_attach_clause(A,J,K,C). -has_active_occurrence(A) :- - 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) :- - 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, - !, - fail. -has_active_occurrence(A,B) :- - 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(_,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,_,_,_), - !, - 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) :- - 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,_), - !. -use_auxiliary_predicate(A) :- - 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) :- - 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) :- - 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) :- - 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(_,active,_,_,H), - B>H, - !, - D=C, - E=F. -occurrences_code(A,B,C,D,E,F) :- - occurrence_code(A,B,C,G,E,H), - I is B+1, - occurrences_code(A,I,G,D,H,F). -occurrence_code(A,B,C,D,E,F) :- - 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, - E=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,_,_,_,_) :- - chr_error(internal,'occurrence_code/6: missing information to compile ~w:~w -',[A,B]). -functional_dependency(A,B,C,D) :- - B>1, - 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(_,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(_,active,_,_,_,I,J,_,_), - J=B, - F>I, - !, - functional_dependency(A,1,C,D). -functional_dependency(A,B,C,D) :- - 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) :- - 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(_,active,_,F,G,H), - B>=F, - !, - C=G, - D=H. -get_functional_dependency(_,_,_,_) :- - fail. -initial_call_pattern(A) :- - 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(_,active,_,_), - !. -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(_,active,_,_) -> - setarg(2,B,inactive), - initial_call_pattern___1__1(A,B) - ; - true - ). -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__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__4(G,B,A) - ). -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__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,_) :- - 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(_,active,_), - !. -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__1(_,A) :- - setarg(2,A,active). -call_pattern_worker(odom([],A)) :- - !, - 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), - depends_on_as(D,F,G). -call_pattern_worker(odom(builtin,A)) :- - !, - 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, - !, - 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) - ; - 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)) - ) - ; - 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 - ; - T=yes - ), - 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,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) -> - 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__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) :- - nb_getval('$chr_store_multi_hash_chr_translate____initial_call_pattern___1-1',F), - lookup_ht(F,A,D), - !, - 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__3(G,B,C,A) - ). -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,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__3(H,A,B,D,E,C) - ). -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__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,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__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_multi_hash_chr_translate____depends_on_goal___2-2',E), - lookup_ht(E,A,D), - !, - 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__5(H,B,C,A) - ). -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__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],_), - C=odom([],I), - J=odom(H,I), - call_pattern(J), - depends_on(D,J), - ( 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__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) :- - 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__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__7(I,B,C,A) - ). -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(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__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) :- - 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__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__8(I,B,C,A) - ). -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,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__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) :- - 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__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 -> - E=odom([],O), - ord_del_element(O,M,P), - Q=odom([],P) - ; - Q=E - ), - ai_observation_lub(Q,J,R), - 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__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) :- - 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__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__11(J,B,C,A) - ). -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 - ), - F=odom(occ(M,N),_), - ( ai_observation_is_observed(J,M) -> - ai_observed_internal(M,N) - ; - ai_not_observed_internal(M,N) - ), - ( H==yes -> - J=odom([],O), - ord_del_element(O,M,P), - Q=odom([],P) - ; - Q=J - ), - 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__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,_,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) :- - 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__2(C,A) - ). -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 - ) - ; - D=[_,_|F], - setarg(2,D,F), - ( F=[G|_] -> - setarg(3,G,D) - ; - true - ) - ), - abstract_constraints___1__0__0__2(C,A) - ; - abstract_constraints___1__0__0__2(C,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) :- - nb_getval('$chr_store_multi_hash_chr_translate____final_answer_pattern___2-1',F), - lookup_ht(F,B,D), - !, - 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(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__1(G,B,C,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) :- - nb_getval('$chr_store_multi_hash_chr_translate____final_answer_pattern___2-1',H), - lookup_ht(H,C,F), - !, - 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(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__1(I,B,C,D,E,A) - ). -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__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__2(J,B,C,D,E,A) - ). -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==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 - ), - D=odom(occ(M,N),_), - ( ai_observation_is_observed(H,M) -> - ai_observed_internal(M,N) - ; - ai_not_observed_internal(M,N) - ), - ( G==yes -> - H=odom([],O), - ord_del_element(O,M,P), - Q=odom([],P) - ; - Q=H - ), - ai_observation_lub(Q,J,R), - 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__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,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) :- - nb_getval('$chr_store_multi_hash_chr_translate____depends_on___2-1',E), - lookup_ht(E,A,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, - 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__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) :- - nb_getval('$chr_store_multi_hash_chr_translate____final_answer_pattern___2-1',F), - lookup_ht(F,B,D), - !, - 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 - ), - B=odom([_|H],_), - E=odom([],I), - J=odom(H,I), - call_pattern(J), - 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__2(G,B,C,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_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_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 -> - 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 - ) - ; - G=[_,_|I], - setarg(2,G,I), - ( I=[J|_] -> - setarg(3,J,G) - ; - true - ) - ), - 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_internal___2__0__0__1(F,A,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_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,_), - !, - 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, - 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(_,active,_,_,J,K), - B - 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 - ), - M is K-1, - stored(A,B,maybe), - 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__1(H,A,B,C) - ). -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) :- - 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) :- - nb_getval('$chr_store_multi_hash_chr_translate____final_answer_pattern___2-1',G), - lookup_ht(G,B,E), - !, - 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__1(I,B,C,D,A) - ). -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==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(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__1(K,G,A,B,D,E,F,C) - ). -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 deleted file mode 100644 index d9c856e..0000000 --- a/chr_translate_bootstrap1.pl +++ /dev/null @@ -1,2609 +0,0 @@ -/* Generated by CHR bootstrap compiler - From: chr_translate_bootstrap1.chr - 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(-discontiguous). -:-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, - partition_clauses(A,C,D,E), - ( C==[] -> - B=E - ; - check_rules(D,C), - unique_analyse_optimise(D,F), - check_attachments(F), - set_constraint_indices(C,1), - store_management_preds(C,G), - constraints_code(C,F,H), - 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([C,D,E],B). -partition_clauses([],[],[],[]). -partition_clauses([A|B],C,D,E) :- - ( rule(A,F) -> - C=G, - D=[F|H], - E=I - ; - ( is_declaration(A,J) -> - append(J,G,C), - D=H, - E=I - ) - ; - ( is_module_declaration(A,K) -> - target_module(K), - C=G, - D=H, - E=[A|I] - ) - ; - ( A=(handler _) -> - format('CHR compiler WARNING: ~w. -',[A]), - format(' `--> SICStus compatibility: ignoring handler/1 declaration. -',[]), - C=G, - D=H, - E=I - ) - ; - ( A=(rules _) -> - format('CHR compiler WARNING: ~w. -',[A]), - format(' `--> SICStus compatibility: ignoring rules/1 declaration. -',[]), - C=G, - D=H, - E=I - ) - ; - ( A=(:-chr_option(L,M)) -> - handle_option(L,M), - C=G, - D=H, - E=I - ) - ; - C=G, - D=H, - E=[A|I] - ), - partition_clauses(B,G,H,I). -is_declaration(A,B) :- - A=(:-C), - ( - C=..[chr_constraint,D] - ; - C=..[chr_constraint,D] - ), - conj2list(D,B). -rule(A,B) :- - A=(C@D), - !, - rule(D,yes(C),B). -rule(A,B) :- - rule(A,no,B). -rule(A,B,C) :- - A=(D pragma E), - !, - is_rule(D,F,G), - conj2list(E,H), - C=pragma(F,G,H,B). -rule(A,B,C) :- - is_rule(A,D,E), - C=pragma(D,E,[],B). -is_rule(A,B,C) :- - A=(D==>E), - !, - conj2list(D,F), - get_ids(F,G,H), - C=ids([],G), - ( E=(I '|' J) -> - B=rule([],H,I,J) - ; - B=rule([],H,true,E) - ). -is_rule(A,B,C) :- - A=(D<=>E), - !, - ( E=(F '|' G) -> - H=F, - I=G - ; - H=true, - I=E - ), - ( D=(J\K) -> - conj2list(J,L), - conj2list(K,M), - get_ids(L,N,O,0,P), - get_ids(M,Q,R,P,_), - C=ids(Q,N) - ; - conj2list(D,M), - O=[], - get_ids(M,Q,R), - C=ids(Q,[]) - ), - 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 - ; - E=A - ), - H is C+1, - get_ids(B,D,F,H,G). -is_module_declaration((:-module(A)),A). -is_module_declaration((:-module(A,_)),A). -check_rules(A,B) :- - check_rules(A,B,1). -check_rules([],_,_). -check_rules([A|B],C,D) :- - check_rule(A,C,D), - E is D+1, - check_rules(B,C,E). -check_rule(A,B,C) :- - A=pragma(D,_,E,_), - D=rule(F,G,_,_), - append(F,G,H), - check_head_constraints(H,B,A,C), - check_pragmas(E,A,C). -check_head_constraints([],_,_,_). -check_head_constraints([A|B],C,D,E) :- - functor(A,F,G), - ( member(F/G,C) -> - check_head_constraints(B,C,D,E) - ; - format('CHR compiler ERROR: Undeclared constraint ~w in head of ~@. -',[F/G,format_rule(D,E)]), - format(' `--> Constraint should be on of ~w. -',[C]), - fail - ). -check_pragmas([],_,_). -check_pragmas([A|B],C,D) :- - check_pragma(A,C,D), - check_pragmas(B,C,D). -check_pragma(A,B,C) :- - var(A), - !, - format('CHR compiler ERROR: invalid pragma ~w in ~@. -',[A,format_rule(B,C)]), - format(' `--> Pragma should not be a variable! -',[]), - fail. -check_pragma(passive(A),B,C) :- - !, - B=pragma(_,ids(D,E),_,_), - ( memberchk_eq(A,D) -> - true - ; - ( memberchk_eq(A,E) -> - true - ) - ; - format('CHR compiler ERROR: invalid identifier ~w in pragma passive in ~@. -',[A,format_rule(B,C)]), - fail - ). -check_pragma(A,B,C) :- - A=unique(_,_), - !, - 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. -',[]). -check_pragma(A,B,C) :- - A=already_in_heads, - !, - format('CHR compiler WARNING: currently unsupported pragma ~w in ~@. -',[A,format_rule(B,C)]), - format(' `--> Pragma is ignored. Termination and correctness may be affected -',[]). -check_pragma(A,B,C) :- - A=already_in_head(_), - !, - format('CHR compiler WARNING: currently unsupported pragma ~w in ~@. -',[A,format_rule(B,C)]), - format(' `--> Pragma is ignored. Termination and correctness may be affected -',[]). -check_pragma(A,B,C) :- - format('CHR compiler ERROR: invalid pragma ~w in ~@. -',[A,format_rule(B,C)]), - format(' `--> Pragma should be one of passive/1! -',[]), - fail. -format_rule(A,B) :- - A=pragma(_,_,_,C), - ( C=yes(D) -> - write('rule '), - write(D) - ; - write('rule number '), - write(B) - ). -handle_option(A,B) :- - var(A), - !, - format('CHR compiler ERROR: ~w. -',[option(A,B)]), - format(' `--> First argument should be an atom, not a variable. -',[]), - fail. -handle_option(A,B) :- - var(B), - !, - format('CHR compiler ERROR: ~w. -',[option(A,B)]), - format(' `--> Second argument should be a nonvariable. -',[]), - fail. -handle_option(A,B) :- - option_definition(A,B,C), - !, - set_chr_pp_flags(C). -handle_option(A,_) :- - \+option_definition(A,_,_), - !. -handle_option(A,B) :- - findall(C,option_definition(A,C,_),D), - format('CHR compiler ERROR: ~w. -',[option(A,B)]), - format(' `--> Invalid value ~w: should be one of ~w. -',[B,D]), - fail. -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]. -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) :- - A=[unique_analyse_optimise-off,check_unnecessary_active-off,reorder_heads-off,set_semantics_rule-off,check_attachments-off,guard_via_reschedule-off]. -option_definition(debug,off,A) :- - A=[debugable-off]. -option_definition(debug,on,A) :- - A=[debugable-on]. -option_definition(check_guard_bindings,on,A) :- - A=[guard_locks-on]. -option_definition(check_guard_bindings,off,A) :- - A=[guard_locks-off]. -init_chr_pp_flags :- - chr_pp_flag_definition(A,[B|_]), - set_chr_pp_flag(A,B), - fail. -init_chr_pp_flags. -set_chr_pp_flags([]). -set_chr_pp_flags([A-B|C]) :- - set_chr_pp_flag(A,B), - set_chr_pp_flags(C). -set_chr_pp_flag(A,B) :- - 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]). -chr_pp_flag_definition(reorder_heads,[on,off]). -chr_pp_flag_definition(set_semantics_rule,[on,off]). -chr_pp_flag_definition(guard_via_reschedule,[on,off]). -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) :- - atomic_concat('$chr_pp_',A,C), - nb_getval(C,D), - ( D==[] -> - chr_pp_flag_definition(A,[B|_]) - ; - D=B - ). -generate_attach_detach_a_constraint_all([],[]). -generate_attach_detach_a_constraint_all([A|B],C) :- - ( is_attached(A) -> - generate_attach_a_constraint(A,D), - generate_detach_a_constraint(A,E) - ; - D=[], - E=[] - ), - generate_attach_detach_a_constraint_all(B,F), - 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_empty_list(A/B,C) :- - atom_concat_list([attach_,A,/,B],D), - E=[[],_], - F=..[D|E], - C=(F:-true). -generate_attach_a_constraint_1_1(A/B,C) :- - atom_concat_list([attach_,A,/,B],D), - E=[[F|G],H], - I=..[D|E], - J=..[D,G,H], - get_target_module(K), - L=((get_attr(F,K,M)->N=[H|M],put_attr(F,K,N);put_attr(F,K,[H])),J), - C=(I:-L). -generate_attach_a_constraint_t_p(A/B,C) :- - atom_concat_list([attach_,A,/,B],D), - E=[[F|G],H], - I=..[D|E], - J=..[D,G,H], - get_constraint_index(A/B,K), - or_pattern(K,L), - get_max_constraint_index(M), - make_attr(M,N,O,P), - nth1(K,O,Q), - substitute_eq(Q,O,[H|Q],R), - make_attr(M,N,R,S), - substitute_eq(Q,O,[H],T), - make_attr(M,U,T,V), - copy_term_nat(O,W), - nth1(K,W,[H]), - chr_delete(W,[H],X), - set_elems(X,[]), - make_attr(M,L,W,Y), - get_target_module(Z), - A1=((get_attr(F,Z,B1)->B1=P,(N/\L=:=L->put_attr(F,Z,S);U is N\/L,put_attr(F,Z,V));put_attr(F,Z,Y)),J), - C=(I:-A1). -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_t_p(A,C) - ). -generate_detach_a_constraint_empty_list(A/B,C) :- - atom_concat_list([detach_,A,/,B],D), - E=[[],_], - F=..[D|E], - C=(F:-true). -generate_detach_a_constraint_1_1(A/B,C) :- - atom_concat_list([detach_,A,/,B],D), - E=[[F|G],H], - I=..[D|E], - J=..[D,G,H], - get_target_module(K), - L=((get_attr(F,K,M)->'chr sbag_del_element'(M,H,N),(N==[]->del_attr(F,K);put_attr(F,K,N));true),J), - C=(I:-L). -generate_detach_a_constraint_t_p(A/B,C) :- - atom_concat_list([detach_,A,/,B],D), - E=[[F|G],H], - I=..[D|E], - J=..[D,G,H], - get_constraint_index(A/B,K), - or_pattern(K,L), - and_pattern(K,M), - get_max_constraint_index(N), - make_attr(N,O,P,Q), - nth1(K,P,R), - substitute_eq(R,P,[],S), - make_attr(N,T,S,U), - 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), - C=(I:-Z). -generate_attach_increment([A,B]) :- - generate_attach_increment_empty(A), - get_max_constraint_index(C), - ( C==1 -> - generate_attach_increment_one(B) - ; - generate_attach_increment_many(C,B) - ). -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). -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). -generate_attr_unify_hook([A]) :- - get_max_constraint_index(B), - ( B==1 -> - generate_attr_unify_hook_one(A) - ; - generate_attr_unify_hook_many(B,A) - ). -generate_attr_unify_hook_one(A) :- - B=C:attr_unify_hook(D,E), - get_target_module(C), - make_run_suspensions(F,G), - make_run_suspensions(D,H), - I=(sort(D,J),(var(E)->(get_attr(E,C,K)->true;K=[]),sort(K,L),'chr merge_attributes'(J,L,F),put_attr(E,C,F),G;(compound(E)->term_variables(E,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), - 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=B1:attr_unify_hook(E,C1), - get_target_module(B1), - make_run_suspensions_loop(V,D1), - make_run_suspensions_loop(N,E1), - F1=(M,(var(C1)->(get_attr(C1,B1,G1)->G1=H,W,X is C\/F,put_attr(C1,B1,Y),D1;put_attr(C1,B1,Z),E1);(compound(C1)->term_variables(C1,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) - ; - B='chr run_suspensions'(A) - ). -make_run_suspensions_loop(A,B) :- - ( chr_pp_flag(debugable,on) -> - B='chr run_suspensions_loop_d'(A) - ; - B='chr run_suspensions_loop'(A) - ). -check_attachments(A) :- - ( chr_pp_flag(check_attachments,on) -> - check_attachments_(A) - ; - true - ). -check_attachments_([]). -check_attachments_([A|B]) :- - check_attachment(A), - check_attachments_(B). -check_attachment(A) :- - A=pragma(B,_,_,_), - B=rule(C,D,E,F), - check_attachment_heads1(C,C,D,E), - check_attachment_heads2(D,C,F). -check_attachment_heads1([],_,_,_). -check_attachment_heads1([A|B],C,D,E) :- - functor(A,F,G), - ( C==[A], - D==[], - E==true, - A=..[_|H], - no_matching(H,[]) -> - attached(F/G,no) - ; - attached(F/G,maybe) - ), - check_attachment_heads1(B,C,D,E). -no_matching([],_). -no_matching([A|B],C) :- - var(A), - \+memberchk_eq(A,C), - no_matching(B,[A|C]). -check_attachment_heads2([],_,_). -check_attachment_heads2([A|B],C,D) :- - functor(A,E,F), - ( C\==[], - D==true -> - attached(E/F,maybe) - ; - attached(E/F,yes) - ), - check_attachment_heads2(B,C,D). -all_attached([]). -all_attached([A|B]) :- - functor(A,C,D), - is_attached(C/D), - all_attached(B). -set_constraint_indices([],A) :- - B is A-1, - max_constraint_index(B). -set_constraint_indices([A|B],C) :- - ( is_attached(A) -> - constraint_index(A,C), - D is C+1, - set_constraint_indices(B,D) - ; - set_constraint_indices(B,C) - ). -constraints_code(A,B,C) :- - post_constraints(A,1), - constraints_code1(1,B,D,[]), - clean_clauses(D,C). -post_constraints([],A) :- - B is A-1, - constraint_count(B). -post_constraints([A/B|C],D) :- - constraint(A/B,D), - E is D+1, - post_constraints(C,E). -constraints_code1(A,B,C,D) :- - constraint_count(E), - ( A>E -> - D=C - ; - constraint_code(A,B,C,F), - G is A+1, - constraints_code1(G,B,F,D) - ). -constraint_code(A,B,C,D) :- - constraint(E,A), - constraint_prelude(E,F), - C=[F|G], - H=[0], - rules_code(B,1,A,H,I,G,J), - gen_cond_attach_clause(E,I,J,D). -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), - ( chr_pp_flag(debugable,on) -> - C=(G:-'chr allocate_constraint'(I:H,E,A,D),('chr debug_event'(call(E)),H;'chr debug_event'(fail(E)),!,fail),('chr debug_event'(exit(E));'chr debug_event'(redo(E)),fail)) - ; - C=(G:-H) - ). -gen_cond_attach_clause(A/B,C,D,E) :- - ( is_attached(A/B) -> - ( C==[0] -> - gen_cond_attach_goal(A/B,F,G,H,I) - ; - vars_susp(B,H,I,G), - gen_uncond_attach_goal(A/B,I,F,_) - ), - ( chr_pp_flag(debugable,on) -> - J=..[A|H], - K='chr debug_event'(insert(J#I)) - ; - K=true - ), - build_head(A,B,C,G,L), - M=(L:-K,F), - D=[M|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), - atom_concat_list([attach_,A,/,B],H), - I=..[H,J,F], - get_target_module(K), - C=((var(F)->'chr insert_constraint_internal'(J,F,K:G,A,E);'chr activate_constraint'(J,F,_)),I). -gen_uncond_attach_goal(A/B,C,D,E) :- - atom_concat_list([attach_,A,/,B],F), - G=..[F,H,C], - D=('chr activate_constraint'(H,C,E),G). -rules_code([],_,_,A,A,B,B). -rules_code([A|B],C,D,E,F,G,H) :- - rule_code(A,C,D,E,I,G,J), - K is C+1, - rules_code(B,K,D,I,F,J,H). -rule_code(A,B,C,D,E,F,G) :- - A=pragma(H,I,_,_), - I=ids(J,K), - H=rule(L,M,_,_), - heads1_code(L,[],J,[],A,C,D,F,N), - heads2_code(M,[],K,[],A,B,C,D,E,N,G). -heads1_code([],_,_,_,_,_,_,A,A). -heads1_code([A|B],C,[D|E],F,G,H,I,J,K) :- - G=pragma(L,_,M,_), - constraint(N/O,H), - ( functor(A,N,O), - \+check_unnecessary_active(A,C,L), - \+memberchk_eq(passive(D),M), - all_attached(B), - all_attached(C), - L=rule(_,P,_,_), - all_attached(P) -> - append(B,C,Q), - append(E,F,R), - head1_code(A,Q,R,G,N/O,H,I,J,S) - ; - J=S - ), - heads1_code(B,[A|C],E,[D|F],G,H,I,S,K). -head1_code(A,B,C,D,E,_,F,G,H) :- - D=pragma(I,_,_,_), - I=rule(_,J,_,_), - ( J==[] -> - reorder_heads(A,B,C,K,L), - simplification_code(A,K,L,D,E,F,G,H) - ; - simpagation_head1_code(A,B,C,D,E,F,G,H) - ). -heads2_code([],_,_,_,_,_,_,A,A,B,B). -heads2_code([A|B],C,[D|E],F,G,H,I,J,K,L,M) :- - G=pragma(N,_,O,_), - constraint(P/Q,I), - ( functor(A,P,Q), - \+check_unnecessary_active(A,C,N), - \+memberchk_eq(passive(D),O), - \+set_semantics_rule(G), - all_attached(B), - all_attached(C), - N=rule(R,_,_,_), - all_attached(R) -> - append(B,C,S), - append(E,F,T), - length(B,U), - head2_code(A,S,T,G,H,U,P/Q,J,L,V), - inc_id(J,W), - gen_alloc_inc_clause(P/Q,J,V,X) - ; - L=X, - W=J - ), - heads2_code(B,[A|C],E,[D|F],G,H,I,W,K,X,M). -head2_code(A,B,C,D,E,F,G,H,I,J) :- - D=pragma(K,_,_,_), - K=rule(L,_,_,_), - ( L==[] -> - reorder_heads(A,B,M), - propagation_code(A,M,K,E,F,G,H,I,J) - ; - simpagation_head2_code(A,B,C,D,G,H,I,J) - ). -gen_alloc_inc_clause(A/B,C,D,E) :- - vars_susp(B,F,G,H), - build_head(A,B,C,H,I), - inc_id(C,J), - build_head(A,B,J,H,K), - ( C==[0] -> - gen_cond_allocation(F,G,A/B,H,L) - ; - L=true - ), - M=(I:-L,K), - D=[M|E]. -gen_cond_allocation(A,B,C/D,E,F) :- - build_head(C,D,[0],E,G), - get_target_module(H), - F=(var(B)->'chr allocate_constraint'(H:G,B,C,A);true). -guard_via_reschedule(A,B,C,D) :- - ( chr_pp_flag(guard_via_reschedule,on) -> - guard_via_reschedule_main(A,B,C,D) - ; - append(A,B,E), - list2conj(E,D) - ). -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). -dependency_reorder(A,B) :- - dependency_reorder(A,[],B). -dependency_reorder([],A,B) :- - reverse(A,B). -dependency_reorder([A|B],C,D) :- - A=unit(_,_,E,F), - ( E==fixed -> - G=[A|C] - ; - dependency_insert(C,A,F,G) - ), - dependency_reorder(B,G,D). -dependency_insert([],A,_,[A]). -dependency_insert([A|B],C,D,E) :- - A=unit(F,_,_,_), - ( memberchk(F,D) -> - E=[C,A|B] - ; - E=[A|G], - dependency_insert(B,C,D,G) - ). -build_units(A,B,C,D) :- - build_retrieval_units(A,1,E,C,F,D,G), - 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], - M is C+1, - build_retrieval_units(B,M,D,J,F,L,H). -initialize_unit_dictionary(A,B) :- - term_variables(A,C), - pair_all_with(C,0,B). -update_unit_dictionary([],_,A,A,B,B). -update_unit_dictionary([A|B],C,D,E,F,G) :- - ( lookup_eq(D,A,H) -> - ( - ( - H==C - ; - memberchk(H,F) - ) -> - I=F - ; - I=[H|F] - ), - J=D - ; - J=[A-C|D], - I=F - ), - update_unit_dictionary(B,C,J,E,I,G). -build_guard_units(A,B,C,D) :- - ( A=[E] -> - D=[unit(B,E,fixed,[])] - ; - ( A=[E|F] -> - term_variables(E,G), - update_unit_dictionary2(G,B,C,H,[],I), - D=[unit(B,E,movable,I)|J], - K is B+1, - build_guard_units(F,K,H,J) - ) - ). -update_unit_dictionary2([],_,A,A,B,B). -update_unit_dictionary2([A|B],C,D,E,F,G) :- - ( lookup_eq(D,A,H) -> - ( - ( - H==C - ; - memberchk(H,F) - ) -> - I=F - ; - I=[H|F] - ), - J=[A-C|D] - ; - J=[A-C|D], - I=F - ), - update_unit_dictionary2(B,C,J,E,I,G). -unique_analyse_optimise(A,B) :- - ( chr_pp_flag(unique_analyse_optimise,on) -> - unique_analyse_optimise_main(A,1,[],B) - ; - B=A - ). -unique_analyse_optimise_main([],_,_,[]). -unique_analyse_optimise_main([A|B],C,D,[E|F]) :- - ( discover_unique_pattern(A,C,G) -> - H=[G|D] - ; - H=D - ), - A=pragma(I,J,K,L), - I=rule(M,N,_,_), - J=ids(O,P), - apply_unique_patterns_to_constraints(M,O,H,Q), - apply_unique_patterns_to_constraints(N,P,H,R), - append([Q,R,K],S), - E=pragma(I,J,S,L), - T is C+1, - unique_analyse_optimise_main(B,T,H,F). -apply_unique_patterns_to_constraints([],_,_,[]). -apply_unique_patterns_to_constraints([A|B],[C|D],E,F) :- - ( member(G,E), - apply_unique_pattern(A,C,G,H) -> - F=[H|I] - ; - F=I - ), - apply_unique_patterns_to_constraints(B,D,E,I). -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). -subsumes(A,B,C) :- - empty_ds(D), - subsumes_aux(A,B,D,E), - ds_to_list(E,F), - build_unifier(F,C). -subsumes_aux(A,B,C,D) :- - ( compound(B), - functor(B,E,F) -> - compound(A), - functor(A,E,F), - subsumes_aux(F,A,B,C,D) - ; - ( A==B -> - D=C - ) - ; - ( var(B), - get_ds(A,C,G) -> - G==B, - D=C - ) - ; - var(B), - put_ds(A,C,B,D) - ). -subsumes_aux(0,_,_,A,A) :- - !. -subsumes_aux(A,B,C,D,E) :- - arg(A,B,F), - arg(A,C,G), - subsumes_aux(F,G,D,H), - I is A-1, - subsumes_aux(I,B,C,H,E). -build_unifier([],[]). -build_unifier([A-B|C],[B-A|D]) :- - build_unifier(C,D). -discover_unique_pattern(A,B,C) :- - A=pragma(D,_,E,F), - ( D=rule([G],[H],I,J) -> - true - ; - D=rule([G,H],[],I,J) - ), - check_unique_constraints(G,H,I,J,E,K), - term_variables(G,L), - select_pragma_unique_variables(K,L,M), - N=unique(G,M), - copy_term_nat(N,C), - ( verbosity_on -> - format('Found unique pattern ~w in rule ~d~@ -',[C,B,(F=yes(O)->write([58,32]),write(O);true)]) - ; - true - ). -select_pragma_unique_variables([],_,[]). -select_pragma_unique_variables([A-B|C],D,E) :- - ( A==B -> - E=[A|F] - ; - once((\+memberchk_eq(A,D);\+memberchk_eq(B,D))), - E=F - ), - select_pragma_unique_variables(C,D,F). -check_unique_constraints(A,B,C,_,D,E) :- - \+member(passive(_),D), - variable_replacement(A-B,B-A,E), - copy_with_variable_replacement(C,F,E), - negate(C,G), - once(entails(G,F)). -negate(true,fail). -negate(fail,true). -negate(A=B,B>=A). -negate(A>=B,B>A). -negate(AB,C>=D) :- - C==A, - D==B. -entails(A - check_unnecessary_active_main(A,B,C) - ; - ( chr_pp_flag(check_unnecessary_active,simplification), - C=rule(_,[],_,_) -> - check_unnecessary_active_main(A,B,C) - ) - ; - fail - ). -check_unnecessary_active_main(A,B,C) :- - member(D,B), - variable_replacement(D,A,E), - copy_with_variable_replacement(C,F,E), - identical_rules(C,F), - !. -set_semantics_rule(A) :- - ( chr_pp_flag(set_semantics_rule,on) -> - set_semantics_rule_main(A) - ; - fail - ). -set_semantics_rule_main(A) :- - A=pragma(B,C,D,_), - B=rule([_],[_],true,_), - C=ids([E],[F]), - once(member(unique(E,G),D)), - once(member(unique(F,H),D)), - G==H, - \+memberchk_eq(passive(E),D). -identical_rules(rule(A,B,C,D),rule(E,F,G,H)) :- - C==G, - identical_bodies(D,H), - permutation(A,I), - I==E, - permutation(B,J), - J==F. -identical_bodies(A,B) :- - ( A=(C=D), - B=(E=F) -> - ( - C==E, - D==F - ; - C==F, - E==D - ), - ! - ; - A==B - ). -copy_with_variable_replacement(A,B,C) :- - ( var(A) -> - ( lookup_eq(C,A,B) -> - true - ; - A=B - ) - ; - functor(A,D,E), - functor(B,D,E), - A=..[_|F], - B=..[_|G], - copy_with_variable_replacement_l(F,G,C) - ). -copy_with_variable_replacement_l([],[],_). -copy_with_variable_replacement_l([A|B],[C|D],E) :- - copy_with_variable_replacement(A,C,E), - copy_with_variable_replacement_l(B,D,E). -variable_replacement(A,B,C) :- - variable_replacement(A,B,[],C). -variable_replacement(A,B,C,D) :- - ( var(A) -> - var(B), - ( lookup_eq(C,A,E) -> - E==B, - D=C - ; - D=[A-B|C] - ) - ; - A=..[F|G], - nonvar(B), - B=..[F|H], - variable_replacement_l(G,H,C,D) - ). -variable_replacement_l([],[],A,A). -variable_replacement_l([A|B],[C|D],E,F) :- - variable_replacement(A,C,E,G), - variable_replacement_l(B,D,G,F). -simplification_code(A,B,C,D,E/F,G,H,I) :- - D=pragma(J,_,K,_), - head_info(A,F,_,L,M,N), - build_head(E,F,G,M,O), - head_arg_matches(N,[],P,Q), - ( B==[] -> - R=[], - S=Q, - T=[] - ; - rest_heads_retrieval_and_matching(B,C,K,A,T,R,Q,S) - ), - guard_body_copies2(J,S,U,V), - guard_via_reschedule(T,U,O-P,W), - gen_uncond_susps_detachments(R,B,X), - gen_cond_susp_detachment(L,E/F,Y), - ( chr_pp_flag(debugable,on) -> - J=rule(_,_,Z,A1), - my_term_copy(Z-A1,S,_,B1-C1), - D1='chr debug_event'(try([L|E1],[],B1,C1)), - F1='chr debug_event'(apply([L|E1],[],B1,C1)) - ; - D1=true, - F1=true - ), - G1=(O:-P,W,D1,!,F1,X,Y,V), - H=[G1|I]. -head_arg_matches(A,B,C,D) :- - head_arg_matches_(A,B,E,D), - list2conj(E,C). -head_arg_matches_([],A,[],A). -head_arg_matches_([A-B|C],D,E,F) :- - ( var(A) -> - ( lookup_eq(D,A,G) -> - E=[B==G|H], - I=D - ; - I=[A-B|D], - E=H - ), - J=C - ; - ( atomic(A) -> - E=[B==A|H], - D=I, - J=C - ) - ; - A=..[_|K], - functor(A,L,M), - functor(N,L,M), - N=..[_|O], - E=[nonvar(B),B=N|H], - pairup(K,O,P), - append(P,C,J), - I=D - ), - head_arg_matches_(J,I,H,F). -rest_heads_retrieval_and_matching(A,B,C,D,E,F,G,H) :- - rest_heads_retrieval_and_matching(A,B,C,D,E,F,G,H,[],[],[]). -rest_heads_retrieval_and_matching(A,B,C,D,E,F,G,H,I,J,K) :- - ( A=[_|_] -> - rest_heads_retrieval_and_matching_n(A,B,C,I,J,D,E,F,G,H,K) - ; - E=[], - F=[], - G=H - ). -rest_heads_retrieval_and_matching_n([],_,_,_,_,_,[],[],A,A,B) :- - 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,P) :- - passive_head_via(A,[H|F],P,N,I,Q,R), - functor(A,S,T), - head_info(A,T,U,_,_,V), - head_arg_matches(V,N,W,X), - Y=..[suspension,_,Z,_,_,_,_|U], - get_max_constraint_index(A1), - ( A1==1 -> - B1=Q - ; - get_constraint_index(S/T,C1), - make_attr(A1,_,D1,Q), - nth1(C1,D1,B1) - ), - different_from_other_susps(A,L,F,G,E1), - 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) -> - J=(G1->true) - ; - J=G1 - ), - rest_heads_retrieval_and_matching_n(B,D,E,[A|F],[L|G],H,K,M,X,O,R). -instantiate_pattern_goals([]). -instantiate_pattern_goals([_-attr(A,B,C)|D]) :- - get_max_constraint_index(E), - ( E==1 -> - C=true - ; - make_attr(E,F,_,A), - or_list(B,G), - !, - C=(F/\G=:=G) - ), - instantiate_pattern_goals(D). -check_unique_keys([],_). -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^(nth1(G,C,H),\+A\=H,nth1(G,D,I),F=(B\==I)),J) -> - list2conj(J,E) - ; - E=true - ). -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 - ; - E=(P,Q), - gen_get_mod_constraints(L,P,F), - G=[L-attr(F,[M|_],Q)|C] - ). -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 default_store'(E),get_attr(E,D,F),F=C) - ; - ( A=[G] -> - H='chr via_1'(G,I) - ; - ( A=[G,J] -> - H='chr via_2'(G,J,I) - ) - ; - H='chr via'(A,I) - ), - B=(H,get_attr(I,D,F),F=C) - ). -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), - ( 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) -> - once(pairup(S,T,R)) - ; - S=[], - T=[] - ), - list2conj(S,U), - list2conj(T,V), - list2conj(L,W), - M=(U,W,V), - my_term_copy(F,J,D). -split_off_simple_guard([],_,[],[]). -split_off_simple_guard([A|B],C,D,E) :- - ( simple_guard(A,C) -> - D=[A|F], - split_off_simple_guard(B,C,F,E) - ; - D=[], - E=[A|B] - ). -simple_guard(var(_),_). -simple_guard(nonvar(_),_). -simple_guard(ground(_),_). -simple_guard(number(_),_). -simple_guard(atom(_),_). -simple_guard(integer(_),_). -simple_guard(float(_),_). -simple_guard(_>_,_). -simple_guard(_<_,_). -simple_guard(_=<_,_). -simple_guard(_>=_,_). -simple_guard(_=:=_,_). -simple_guard(_==_,_). -simple_guard(A is _,B) :- - \+lookup_eq(B,A,_). -simple_guard((A,B),C) :- - simple_guard(A,C), - simple_guard(B,C). -simple_guard(\+A,B) :- - simple_guard(A,B). -my_term_copy(A,B,C) :- - my_term_copy(A,B,_,C). -my_term_copy(A,B,C,D) :- - ( var(A) -> - ( lookup_eq(B,A,D) -> - C=B - ; - C=[A-D|B] - ) - ; - functor(A,E,F), - functor(D,E,F), - A=..[_|G], - D=..[_|H], - my_term_copy_list(G,B,C,H) - ). -my_term_copy_list([],A,A,[]). -my_term_copy_list([A|B],C,D,[E|F]) :- - my_term_copy(A,C,G,E), - my_term_copy_list(B,G,D,F). -gen_cond_susp_detachment(A,B,C) :- - ( is_attached(B) -> - gen_uncond_susp_detachment(A,B,D), - C=(var(A)->true;D) - ; - C=true - ). -gen_uncond_susp_detachment(A,B/C,D) :- - ( is_attached(B/C) -> - atom_concat_list([detach_,B,/,C],E), - F=..[E,G,A], - ( chr_pp_flag(debugable,on) -> - H='chr debug_event'(remove(A)) - ; - H=true - ), - D=(H,'chr remove_constraint_internal'(A,G),F) - ; - D=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),L,_), - J=rule(_,M,N,O), - head_info(A,F,_,P,Q,R), - head_arg_matches(R,[],S,T), - build_head(E,F,G,Q,U), - append(B,M,V), - append(C,K,W), - reorder_heads(A,V,W,X,Y), - rest_heads_retrieval_and_matching(X,Y,L,A,Z,A1,T,B1), - split_by_ids(Y,A1,C,C1,D1), - guard_body_copies2(J,B1,E1,F1), - guard_via_reschedule(Z,E1,U-S,G1), - gen_uncond_susps_detachments(C1,B,H1), - gen_cond_susp_detachment(P,E/F,I1), - ( chr_pp_flag(debugable,on) -> - my_term_copy(N-O,B1,_,J1-K1), - L1='chr debug_event'(try([P|C1],D1,J1,K1)), - M1='chr debug_event'(apply([P|C1],D1,J1,K1)) - ; - L1=true, - M1=true - ), - N1=(U:-S,G1,L1,!,M1,H1,I1,F1), - H=[N1|I]. -split_by_ids([],[],_,[],[]). -split_by_ids([A|B],[C|D],E,F,G) :- - ( memberchk_eq(A,E) -> - F=[C|H], - G=I - ; - F=H, - G=[C|I] - ), - split_by_ids(B,D,E,H,I). -simpagation_head2_code(A,B,C,D,E,F,G,H) :- - D=pragma(I,ids(J,_),K,_), - I=rule(L,_,M,N), - reorder_heads(A,L,J,[O|P],[Q|R]), - simpagation_head2_prelude(A,O,[B,L,M,N],E,F,G,S), - extend_id(F,T), - simpagation_head2_worker(A,O,Q,P,R,B,C,I,K,E,T,S,H). -simpagation_head2_prelude(A,B,C,D/E,F,G,H) :- - head_info(A,E,I,J,K,L), - build_head(D,E,F,K,M), - head_arg_matches(L,[],N,O), - passive_head_via(B,[A],[],O,P,Q,R), - instantiate_pattern_goals(R), - get_max_constraint_index(S), - ( S==1 -> - T=Q - ; - functor(B,U,V), - get_constraint_index(U/V,W), - make_attr(S,_,X,Q), - nth1(W,X,T) - ), - ( F==[0] -> - gen_cond_allocation(I,J,D/E,K,Y) - ; - Y=true - ), - extend_id(F,Z), - extra_active_delegate_variables(A,C,O,A1), - append([T|K],A1,B1), - build_head(D,E,Z,B1,C1), - D1=(M:-N,P,!,Y,C1), - G=[D1|H]. -extra_active_delegate_variables(A,B,C,D) :- - A=..[_|E], - delegate_variables(A,B,C,E,D). -passive_delegate_variables(A,B,C,D,E) :- - term_variables(B,F), - delegate_variables(A,C,D,F,E). -delegate_variables(A,B,C,D,E) :- - term_variables(A,F), - term_variables(B,G), - intersect_eq(F,G,H), - list_difference_eq(H,D,I), - translate(I,C,E). -simpagation_head2_worker(A,B,C,D,E,F,G,H,I,J,K,L,M) :- - H=rule(_,_,N,O), - simpagation_head2_worker_end(A,[B,D,F,N,O],J,K,L,P), - simpagation_head2_worker_body(A,B,C,D,E,F,G,H,I,J,K,P,M). -simpagation_head2_worker_body(A,B,C,D,E,F,G,H,I,J/K,L,M,N) :- - gen_var(O), - gen_var(P), - head_info(A,K,_,Q,R,S), - head_arg_matches(S,[],_,T), - H=rule(_,_,U,V), - extra_active_delegate_variables(A,[B,D,F,U,V],T,W), - append([[O|P]|R],W,X), - build_head(J,K,L,X,Y), - functor(B,_,Z), - head_info(B,Z,A1,_,_,B1), - head_arg_matches(B1,T,C1,D1), - E1=..[suspension,_,F1,_,_,_,_|A1], - create_get_mutable_ref(active,F1,G1), - H1=(O=E1,G1), - ( - ( - D\==[] - ; - F\==[] - ) -> - append(D,F,I1), - append(E,G,J1), - reorder_heads(B-A,I1,J1,K1,L1), - rest_heads_retrieval_and_matching(K1,L1,I,[B,A],M1,N1,D1,O1,[B],[O],[]), - split_by_ids(L1,N1,E,P1,Q1) - ; - M1=[], - P1=[], - Q1=[], - O1=D1 - ), - gen_uncond_susps_detachments([O|P1],[B|D],R1), - append([P|R],W,S1), - build_head(J,K,L,S1,T1), - append([[]|R],W,U1), - build_head(J,K,L,U1,V1), - guard_body_copies2(H,O1,W1,X1), - guard_via_reschedule(M1,W1,v(Y,H1,C1),Y1), - ( X1\==true -> - gen_uncond_attach_goal(J/K,Q,Z1,A2), - gen_state_cond_call(Q,K,T1,A2,B2), - gen_state_cond_call(Q,K,V1,A2,C2) - ; - Z1=true, - B2=T1, - C2=V1 - ), - ( chr_pp_flag(debugable,on) -> - my_term_copy(U-V,O1,_,D2-E2), - F2='chr debug_event'(try([O|P1],[Q|Q1],D2,E2)), - G2='chr debug_event'(apply([O|P1],[Q|Q1],D2,E2)) - ; - F2=true, - G2=true - ), - ( member(unique(C,H2),I), - check_unique_keys(H2,T) -> - I2=(Y:-H1,C1->(Y1,F2->G2,R1,Z1,X1,C2;V1);T1) - ; - I2=(Y:-H1,C1,Y1,F2->G2,R1,Z1,X1,B2;T1) - ), - M=[I2|N]. -gen_state_cond_call(A,B,C,D,E) :- - length(F,B), - G=..[suspension,_,H,_,I,_,_|F], - 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), - head_arg_matches(I,[],_,J), - extra_active_delegate_variables(A,B,J,K), - append([[]|H],K,L), - build_head(C,D,E,L,M), - next_id(E,N), - build_head(C,D,N,H,O), - P=(M:-O), - F=[P|G]. -propagation_code(A,B,C,D,E,F,G,H,I) :- - ( B==[] -> - propagation_single_headed(A,C,D,F,G,H,I) - ; - propagation_multi_headed(A,B,C,D,E,F,G,H,I) - ). -propagation_single_headed(A,B,C,D/E,F,G,H) :- - head_info(A,E,I,J,K,L), - build_head(D,E,F,K,M), - inc_id(F,N), - build_head(D,E,N,K,O), - P=O, - head_arg_matches(L,[],Q,R), - guard_body_copies(B,R,S,T), - ( F==[0] -> - gen_cond_allocation(I,J,D/E,K,U), - V=U - ; - V=true - ), - gen_uncond_attach_goal(D/E,J,W,X), - gen_state_cond_call(J,E,P,X,Y), - ( chr_pp_flag(debugable,on) -> - B=rule(_,_,Z,A1), - my_term_copy(Z-A1,R,_,B1-C1), - D1='chr debug_event'(try([],[J],B1,C1)), - E1='chr debug_event'(apply([],[J],B1,C1)) - ; - D1=true, - E1=true - ), - F1=(M:-Q,V,'chr novel_production'(J,C),S,D1,!,E1,'chr extend_history'(J,C),W,T,Y), - G=[F1|H]. -propagation_multi_headed(A,B,C,D,E,F,G,H,I) :- - B=[J|K], - propagation_prelude(A,B,C,F,G,H,L), - extend_id(G,M), - propagation_nested_code(K,[J,A],C,D,E,F,M,L,I). -propagation_prelude(A,[B|C],D,E/F,G,H,I) :- - head_info(A,F,J,K,L,M), - build_head(E,F,G,L,N), - head_arg_matches(M,[],O,P), - D=rule(_,_,Q,R), - extra_active_delegate_variables(A,[B,C,Q,R],P,S), - passive_head_via(B,[A],[],P,T,U,V), - instantiate_pattern_goals(V), - get_max_constraint_index(W), - ( W==1 -> - X=U - ; - functor(B,Y,Z), - make_attr(W,_,A1,U), - get_constraint_index(Y/Z,B1), - nth1(B1,A1,X) - ), - ( G==[0] -> - gen_cond_allocation(J,K,E/F,L,C1) - ; - C1=true - ), - extend_id(G,D1), - append([X|L],S,E1), - build_head(E,F,D1,E1,F1), - G1=F1, - H1=(N:-O,T,!,C1,G1), - H=[H1|I]. -propagation_nested_code([],[A|B],C,D,E,F,G,H,I) :- - propagation_end([A|B],[],C,F,G,H,J), - propagation_body(A,B,C,D,E,F,G,J,I). -propagation_nested_code([A|B],C,D,E,F,G,H,I,J) :- - propagation_end(C,[A|B],D,G,H,I,K), - propagation_accumulator([A|B],C,D,G,H,K,L), - inc_id(H,M), - propagation_nested_code(B,[A|C],D,E,F,G,M,L,J). -propagation_body(A,B,C,D,E,F/G,H,I,J) :- - C=rule(_,_,K,L), - get_prop_inner_loop_vars(B,[A,K,L],M,N,O,P), - gen_var(Q), - gen_var(R), - functor(A,_,S), - gen_vars(S,T), - U=..[suspension,_,V,_,_,_,_|T], - create_get_mutable_ref(active,V,W), - X=(Q=U,W), - Y=[[Q|R]|M], - build_head(F,G,H,Y,Z), - A1=[R|M], - build_head(F,G,H,A1,B1), - C1=B1, - A=..[_|D1], - pairup(D1,T,E1), - head_arg_matches(E1,N,F1,G1), - different_from_other_susps(A,Q,B,P,H1), - guard_body_copies(C,G1,I1,J1), - gen_uncond_attach_goal(F/G,O,K1,L1), - gen_state_cond_call(O,G,C1,L1,M1), - history_susps(E,[Q|P],O,[],N1), - bagof('chr novel_production'(O1,P1),(member(O1,N1),P1=Q1),R1), - list2conj(R1,S1), - T1=..[t,D|N1], - ( chr_pp_flag(debugable,on) -> - C=rule(_,_,K,L), - my_term_copy(K-L,G1,_,U1-V1), - W1='chr debug_event'(try([],[O,Q|P],U1,V1)), - X1='chr debug_event'(apply([],[O,Q|P],U1,V1)) - ; - W1=true, - X1=true - ), - Y1=(Z:-X,H1,F1,Q1=T1,S1,I1,W1->X1,'chr extend_history'(O,Q1),K1,J1,M1;C1), - I=[Y1|J]. -history_susps(A,B,C,D,E) :- - ( A==0 -> - reverse(B,F), - append(F,[C|D],E) - ; - B=[G|H], - I is A-1, - history_susps(I,H,C,[G|D],E) - ). -get_prop_inner_loop_vars([A],B,C,D,E,[]) :- - !, - functor(A,_,F), - head_info(A,F,_,E,G,H), - head_arg_matches(H,[],_,D), - extra_active_delegate_variables(A,B,D,I), - append(G,I,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), - gen_var(L), - head_info(A,K,_,G,_,M), - head_arg_matches(M,J,_,E), - passive_delegate_variables(A,B,C,E,N), - append(N,[G,L|I],D). -propagation_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 - ; - dec_id(G,Q), - R=[N|M] - ), - build_head(E,F,Q,R,S), - T=S, - U=(P:-T), - H=[U|I]. -gen_var_susp_list_for([A],B,C,D,E,F) :- - !, - functor(A,_,G), - head_info(A,G,_,F,E,H), - head_arg_matches(H,[],_,C), - extra_active_delegate_variables(A,B,C,I), - append(E,I,D). -gen_var_susp_list_for([A|B],C,D,E,F,G) :- - gen_var_susp_list_for(B,[A|C],H,F,_,_), - functor(A,_,I), - gen_var(G), - head_info(A,I,_,J,_,K), - head_arg_matches(K,H,_,D), - passive_delegate_variables(A,B,C,D,L), - append(L,[J,G|F],E). -propagation_accumulator([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), - gen_vars(Q,R), - head_info(C,Q,R,S,_,T), - head_arg_matches(T,N,U,V), - W=..[suspension,_,X,_,_,_,_|R], - different_from_other_susps(C,S,D,O,Y), - 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), - instantiate_pattern_goals(F1), - get_max_constraint_index(G1), - ( G1==1 -> - H1=E1 - ; - get_constraint_index(B1/C1,I1), - make_attr(G1,_,J1,E1), - nth1(I1,J1,H1) - ), - inc_id(H,K1), - L1=[[S|P]|M], - build_head(F,G,H,L1,M1), - passive_delegate_variables(C,D,[A,B,K,L],V,N1), - append([H1|N1],[S,P|M],O1), - build_head(F,G,K1,O1,P1), - Q1=[P|M], - build_head(F,G,H,Q1,R1), - S1=(M1:-A1,D1->P1;R1), - I=[S1|J]. -pre_vars_and_susps([A],B,C,D,[]) :- - !, - functor(A,_,E), - head_info(A,E,_,_,F,G), - head_arg_matches(G,[],_,D), - extra_active_delegate_variables(A,B,D,H), - append(F,H,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), - gen_var(K), - head_info(A,J,_,F,_,L), - head_arg_matches(L,I,_,E), - passive_delegate_variables(A,B,C,E,M), - append(M,[F,K|H],D). -reorder_heads(A,B,C,D,E) :- - ( chr_pp_flag(reorder_heads,on) -> - reorder_heads_main(A,B,C,D,E) - ; - D=B, - E=C - ). -reorder_heads_main(A,B,C,D,E) :- - term_variables(A,F), - reorder_heads1(B,C,F,D,E). -reorder_heads1(A,B,C,D,E) :- - ( A==[] -> - D=[], - E=[] - ; - D=[F|G], - E=[H|I], - select_best_head(A,B,C,F,H,J,K,L), - reorder_heads1(J,K,L,G,I) - ). -select_best_head(A,B,C,D,E,F,G,H) :- - ( bagof(tuple(I,J,K,L,M),(select2(J,K,A,B,L,M),order_score(J,C,L,I)),N) -> - true - ; - N=[] - ), - max_go_list(N,tuple(_,D,E,F,G)), - term_variables(D,O), - ( setof(P,(member(P,O),\+memberchk_eq(P,C)),Q) -> - true - ; - Q=[] - ), - append(Q,C,H). -reorder_heads(A,B,C) :- - term_variables(A,D), - reorder_heads1(B,D,C). -reorder_heads1(A,B,C) :- - ( A==[] -> - C=[] - ; - C=[D|E], - select_best_head(A,B,D,F,G), - reorder_heads1(F,G,E) - ). -select_best_head(A,B,C,D,E) :- - ( bagof(tuple(F,G,H),(select(G,A,H),order_score(G,B,H,F)),I) -> - true - ; - I=[] - ), - max_go_list(I,tuple(_,C,D)), - term_variables(C,J), - ( setof(K,(member(K,J),\+memberchk_eq(K,B)),L) -> - true - ; - L=[] - ), - append(L,B,E). -order_score(A,B,C,D) :- - term_variables(A,E), - term_variables(C,F), - order_score_vars(E,B,F,0,D). -order_score_vars([],_,_,A,B) :- - ( A==0 -> - B=99999 - ; - B=A - ). -order_score_vars([A|B],C,D,E,F) :- - ( memberchk_eq(A,C) -> - G is E+1 - ; - ( memberchk_eq(A,D) -> - G is E+1 - ) - ; - G=E - ), - order_score_vars(B,C,D,G,F). -create_get_mutable_ref(A,B,C) :- - C=(B=mutable(A)). -clean_clauses([],[]). -clean_clauses([A|B],[C|D]) :- - clean_clause(A,C), - clean_clauses(B,D). -clean_clause(A,B) :- - ( A=(C:-D) -> - clean_goal(D,E), - ( E==true -> - B=C - ; - B=(C:-E) - ) - ; - B=A - ). -clean_goal(A,B) :- - var(A), - !, - B=A. -clean_goal((A,B),C) :- - !, - clean_goal(A,D), - clean_goal(B,E), - ( D==true -> - C=E - ; - ( E==true -> - C=D - ) - ; - C=(D,E) - ). -clean_goal((A->B;C),D) :- - !, - clean_goal(A,E), - ( E==true -> - clean_goal(B,F), - D=F - ; - ( E==fail -> - clean_goal(C,G), - D=G - ) - ; - clean_goal(B,F), - clean_goal(C,G), - D=(E->F;G) - ). -clean_goal((A;B),C) :- - !, - clean_goal(A,D), - clean_goal(B,E), - ( D==fail -> - C=E - ; - ( E==fail -> - C=D - ) - ; - C=(D;E) - ). -clean_goal(once(A),B) :- - !, - clean_goal(A,C), - ( C==true -> - B=true - ; - ( C==fail -> - B=fail - ) - ; - B=once(C) - ). -clean_goal((A->B),C) :- - !, - clean_goal(A,D), - ( D==true -> - clean_goal(B,C) - ; - ( D==fail -> - C=fail - ) - ; - clean_goal(B,E), - C=(D->E) - ). -clean_goal(A,A). -gen_var(_). -gen_vars(A,B) :- - length(B,A). -head_info(A,B,C,D,E,F) :- - vars_susp(B,C,D,E), - A=..[_|G], - pairup(G,C,F). -inc_id([A|B],[C|B]) :- - C is A+1. -dec_id([A|B],[C|B]) :- - C is A-1. -extend_id(A,[0|A]). -next_id([_,A|B],[C|B]) :- - C is A+1. -build_head(A,B,C,D,E) :- - buildName(A,B,C,F), - E=..[F|D]. -buildName(A,B,C,D) :- - atom_concat(A,/,E), - 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), - 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< - list2conj(B,C) - ; - C=(A,D), - list2conj(B,D) - ). -atom_concat_list([A],A) :- - !. -atom_concat_list([A|B],C) :- - atom_concat_list(B,D), - 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). -member2([A|_],[B|_],A-B). -member2([_|A],[_|B],C) :- - member2(A,B,C). -select2(A,B,[A|C],[B|D],C,D). -select2(A,B,[C|D],[E|F],[C|G],[E|H]) :- - select2(A,B,D,F,G,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,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)) - ; - 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],[],[],[],[],[])) - ), - 'attach_constraint/2'(B,C). -'detach_constraint/2'([],_). -'detach_constraint/2'([A|B],C) :- - ( 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==[] -> - M is E/\ -2, - ( M==0 -> - del_attr(A,chr_translate_bootstrap1) - ; - put_attr(A,chr_translate_bootstrap1,v(M,[],G,H,I,J,K)) - ) - ; - put_attr(A,chr_translate_bootstrap1,v(E,L,G,H,I,J,K)) - ) - ; - true - ) - ; - true - ), - 'detach_constraint/2'(B,C). -'attach_constraint_count/1'([],_). -'attach_constraint_count/1'([A|B],C) :- - ( 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)) - ; - 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],[],[],[],[])) - ), - 'attach_constraint_count/1'(B,C). -'detach_constraint_count/1'([],_). -'detach_constraint_count/1'([A|B],C) :- - ( 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==[] -> - M is E/\ -3, - ( M==0 -> - del_attr(A,chr_translate_bootstrap1) - ; - put_attr(A,chr_translate_bootstrap1,v(M,F,[],H,I,J,K)) - ) - ; - put_attr(A,chr_translate_bootstrap1,v(E,F,L,H,I,J,K)) - ) - ; - true - ) - ; - true - ), - 'detach_constraint_count/1'(B,C). -'attach_constraint_index/2'([],_). -'attach_constraint_index/2'([A|B],C) :- - ( 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)) - ; - 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],[],[],[])) - ), - 'attach_constraint_index/2'(B,C). -'detach_constraint_index/2'([],_). -'detach_constraint_index/2'([A|B],C) :- - ( 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==[] -> - M is E/\ -5, - ( M==0 -> - del_attr(A,chr_translate_bootstrap1) - ; - put_attr(A,chr_translate_bootstrap1,v(M,F,G,[],I,J,K)) - ) - ; - put_attr(A,chr_translate_bootstrap1,v(E,F,G,L,I,J,K)) - ) - ; - true - ) - ; - true - ), - '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,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)) - ; - 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],[],[])) - ), - '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,D) -> - D=v(E,F,G,H,I,J,K), - ( E/\8=:=8 -> - 'chr sbag_del_element'(I,C,L), - ( L==[] -> - M is E/\ -9, - ( M==0 -> - del_attr(A,chr_translate_bootstrap1) - ; - put_attr(A,chr_translate_bootstrap1,v(M,F,G,H,[],J,K)) - ) - ; - put_attr(A,chr_translate_bootstrap1,v(E,F,G,H,L,J,K)) - ) - ; - true - ) - ; - true - ), - 'detach_max_constraint_index/1'(B,C). -'attach_target_module/1'([],_). -'attach_target_module/1'([A|B],C) :- - ( 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)) - ; - 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],[])) - ), - 'attach_target_module/1'(B,C). -'detach_target_module/1'([],_). -'detach_target_module/1'([A|B],C) :- - ( 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==[] -> - M is E/\ -17, - ( M==0 -> - del_attr(A,chr_translate_bootstrap1) - ; - put_attr(A,chr_translate_bootstrap1,v(M,F,G,H,I,[],K)) - ) - ; - put_attr(A,chr_translate_bootstrap1,v(E,F,G,H,I,L,K)) - ) - ; - true - ) - ; - true - ), - 'detach_target_module/1'(B,C). -'attach_attached/2'([],_). -'attach_attached/2'([A|B],C) :- - ( 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])) - ; - 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])) - ), - 'attach_attached/2'(B,C). -'detach_attached/2'([],_). -'detach_attached/2'([A|B],C) :- - ( 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==[] -> - M is E/\ -33, - ( M==0 -> - del_attr(A,chr_translate_bootstrap1) - ; - put_attr(A,chr_translate_bootstrap1,v(M,F,G,H,I,J,[])) - ) - ; - put_attr(A,chr_translate_bootstrap1,v(E,F,G,H,I,J,L)) - ) - ; - true - ) - ; - true - ), - 'detach_attached/2'(B,C). -attach_increment([],_). -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(A,chr_translate_bootstrap1,v(C,D,E,F,G,H,I)) - ), - 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(H,chr_translate_bootstrap1,v(A,I,J,K,L,M,N)), - 'chr run_suspensions_loop'([I,J,K,L,M,N]) - ) - ; - ( compound(H) -> - term_variables(H,J1), - attach_increment(J1,v(A,I,J,K,L,M,N)) - ; - true - ), - '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,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), - J==A -> - true - ), - !, - ( var(C) -> - true - ; - 'chr remove_constraint_internal'(C,L), - 'detach_constraint/2'(L,C) - ), - B=K. -'constraint/2__0'(A,B,C) :- - '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), - K==B, - !, - ( var(C) -> - true - ; - 'chr remove_constraint_internal'(C,L), - 'detach_constraint/2'(L,C) - ), - 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]) - ; - 'chr activate_constraint'(D,C,_) - ), - 'attach_constraint/2'(D,C). -constraint_count(A) :- - 'constraint_count/1__0'(A,_). -'constraint_count/1__0'(A,B) :- - '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 - ; - 'chr remove_constraint_internal'(B,J), - 'detach_constraint_count/1'(J,B) - ), - 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]) - ; - 'chr activate_constraint'(C,B,_) - ), - 'attach_constraint_count/1'(C,B). -constraint_index(A,B) :- - 'constraint_index/2__0'(A,B,_). -'constraint_index/2__0'(A,B,C) :- - ( var(C) -> - 'chr insert_constraint_internal'(D,C,chr_translate_bootstrap1:'constraint_index/2__0'(A,B,C),constraint_index,[A,B]) - ; - 'chr activate_constraint'(D,C,_) - ), - 'attach_constraint_index/2'(D,C). -get_constraint_index(A,B) :- - 'get_constraint_index/2__0'(A,B,_). -'get_constraint_index/2__0'(A,B,_) :- - '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), - I==A, - !, - B=J. -'get_constraint_index/2__0'(_,_,_) :- - !, - fail. -max_constraint_index(A) :- - 'max_constraint_index/1__0'(A,_). -'max_constraint_index/1__0'(A,B) :- - ( var(B) -> - 'chr insert_constraint_internal'(C,B,chr_translate_bootstrap1:'max_constraint_index/1__0'(A,B),max_constraint_index,[A]) - ; - 'chr activate_constraint'(C,B,_) - ), - 'attach_max_constraint_index/1'(C,B). -get_max_constraint_index(A) :- - 'get_max_constraint_index/1__0'(A,_). -'get_max_constraint_index/1__0'(A,_) :- - '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=H. -'get_max_constraint_index/1__0'(_,_) :- - !, - fail. -target_module(A) :- - 'target_module/1__0'(A,_). -'target_module/1__0'(A,B) :- - ( var(B) -> - 'chr insert_constraint_internal'(C,B,chr_translate_bootstrap1:'target_module/1__0'(A,B),target_module,[A]) - ; - 'chr activate_constraint'(C,B,_) - ), - 'attach_target_module/1'(C,B). -get_target_module(A) :- - 'get_target_module/1__0'(A,_). -'get_target_module/1__0'(A,_) :- - '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=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,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), - I==A, - J==yes, - !, - ( var(B) -> - true - ; - 'chr remove_constraint_internal'(B,K), - 'detach_attached/2'(K,B) - ). -'attached/2__0'(A,B,C) :- - B==yes, - 'chr via_1'(A,D), - get_attr(D,chr_translate_bootstrap1,E), - 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'(G,A,B,C). -'attached/2__0__0'([],A,B,C) :- - 'attached/2__1'(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'(B,C,D,E) - ). -'attached/2__0'(A,B,C) :- - ( var(C) -> - 'chr allocate_constraint'(chr_translate_bootstrap1:'attached/2__0'(A,B,C),C,attached,[A,B]) - ; - true - ), - 'attached/2__1'(A,B,C). -'attached/2__1'(A,_,B) :- - '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), - I==A, - J==no, - !, - ( var(B) -> - true - ; - 'chr remove_constraint_internal'(B,K), - 'detach_attached/2'(K,B) - ). -'attached/2__1'(A,B,C) :- - B==no, - 'chr via_1'(A,D), - get_attr(D,chr_translate_bootstrap1,E), - E=v(F,_,_,_,_,_,G), - F/\32=:=32, - !, - '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'([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'(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,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), - J==A, - K==maybe -> - true - ), - !, - ( var(C) -> - true - ; - 'chr remove_constraint_internal'(C,L), - 'detach_attached/2'(L,C) - ). -'attached/2__2'(_,_,A) :- - 'chr activate_constraint'(B,A,_), - 'attach_attached/2'(B,A). -is_attached(A) :- - 'is_attached/1__0'(A,_). -'is_attached/1__0'(A,_) :- - '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), - H==A, - !, - ( I==no -> - fail - ; - true - ). -'is_attached/1__0'(_,_) :- - !. -chr_clear :- - 'chr_clear/0__0'(_). -'chr_clear/0__0'(A) :- - 'chr default_store'(B), - get_attr(B,chr_translate_bootstrap1,C), - 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'(E,A). -'chr_clear/0__0__0'([],A) :- - 'chr_clear/0__1'(A). -'chr_clear/0__0__0'([A|B],C) :- - ( A=suspension(_,D,_,_,_,_,_,_), - D=mutable(active) -> - 'chr remove_constraint_internal'(A,E), - 'detach_constraint/2'(E,A), - 'chr_clear/0__0__0'(B,C) - ; - 'chr_clear/0__0__0'(B,C) - ). -'chr_clear/0__0'(A) :- - ( var(A) -> - 'chr allocate_constraint'(chr_translate_bootstrap1:'chr_clear/0__0'(A),A,chr_clear,[]) - ; - true - ), - 'chr_clear/0__1'(A). -'chr_clear/0__1'(A) :- - 'chr default_store'(B), - get_attr(B,chr_translate_bootstrap1,C), - C=v(D,_,E,_,_,_,_), - D/\2=:=2, - !, - 'chr_clear/0__1__0'(E,A). -'chr_clear/0__1__0'([],A) :- - 'chr_clear/0__2'(A). -'chr_clear/0__1__0'([A|B],C) :- - ( A=suspension(_,D,_,_,_,_,_), - D=mutable(active) -> - 'chr remove_constraint_internal'(A,E), - 'detach_constraint_count/1'(E,A), - 'chr_clear/0__1__0'(B,C) - ; - 'chr_clear/0__1__0'(B,C) - ). -'chr_clear/0__1'(A) :- - 'chr_clear/0__2'(A). -'chr_clear/0__2'(A) :- - 'chr default_store'(B), - get_attr(B,chr_translate_bootstrap1,C), - C=v(D,_,_,E,_,_,_), - D/\4=:=4, - !, - 'chr_clear/0__2__0'(E,A). -'chr_clear/0__2__0'([],A) :- - 'chr_clear/0__3'(A). -'chr_clear/0__2__0'([A|B],C) :- - ( A=suspension(_,D,_,_,_,_,_,_), - D=mutable(active) -> - 'chr remove_constraint_internal'(A,E), - 'detach_constraint_index/2'(E,A), - 'chr_clear/0__2__0'(B,C) - ; - 'chr_clear/0__2__0'(B,C) - ). -'chr_clear/0__2'(A) :- - 'chr_clear/0__3'(A). -'chr_clear/0__3'(A) :- - 'chr default_store'(B), - get_attr(B,chr_translate_bootstrap1,C), - C=v(D,_,_,_,E,_,_), - D/\8=:=8, - !, - 'chr_clear/0__3__0'(E,A). -'chr_clear/0__3__0'([],A) :- - 'chr_clear/0__4'(A). -'chr_clear/0__3__0'([A|B],C) :- - ( A=suspension(_,D,_,_,_,_,_), - D=mutable(active) -> - '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'(B,C) - ). -'chr_clear/0__3'(A) :- - 'chr_clear/0__4'(A). -'chr_clear/0__4'(A) :- - 'chr default_store'(B), - get_attr(B,chr_translate_bootstrap1,C), - C=v(D,_,_,_,_,E,_), - D/\16=:=16, - !, - 'chr_clear/0__4__0'(E,A). -'chr_clear/0__4__0'([],A) :- - 'chr_clear/0__5'(A). -'chr_clear/0__4__0'([A|B],C) :- - ( A=suspension(_,D,_,_,_,_,_), - D=mutable(active) -> - 'chr remove_constraint_internal'(A,E), - 'detach_target_module/1'(E,A), - 'chr_clear/0__4__0'(B,C) - ; - 'chr_clear/0__4__0'(B,C) - ). -'chr_clear/0__4'(A) :- - 'chr_clear/0__5'(A). -'chr_clear/0__5'(A) :- - 'chr default_store'(B), - get_attr(B,chr_translate_bootstrap1,C), - C=v(D,_,_,_,_,_,E), - D/\32=:=32, - !, - 'chr_clear/0__5__0'(E,A). -'chr_clear/0__5__0'([],A) :- - 'chr_clear/0__6'(A). -'chr_clear/0__5__0'([A|B],C) :- - ( A=suspension(_,D,_,_,_,_,_,_), - D=mutable(active) -> - 'chr remove_constraint_internal'(A,E), - 'detach_attached/2'(E,A), - 'chr_clear/0__5__0'(B,C) - ; - 'chr_clear/0__5__0'(B,C) - ). -'chr_clear/0__5'(A) :- - 'chr_clear/0__6'(A). -'chr_clear/0__6'(_) :- - !. diff --git a/chr_translate_bootstrap2.pl b/chr_translate_bootstrap2.pl deleted file mode 100644 index 617ff93..0000000 --- a/chr_translate_bootstrap2.pl +++ /dev/null @@ -1,3708 +0,0 @@ -/* Generated by CHR bootstrap compiler - From: chr_translate_bootstrap2.chr - 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(-discontiguous). -:-use_module(chr_runtime). -:-use_module(chr_hashtable_store). -:-style_check(-discontiguous). -:-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). -:-use_module(find). -:-include(chr_op2). -chr_translate(A,B) :- - init_chr_pp_flags, - partition_clauses(A,C,D,E), - ( C==[] -> - insert_declarations(E,B) - ; - add_rules(D), - check_rules(D,C), - add_occurrences(D), - late_allocation(C), - unique_analyse_optimise(D,F), - check_attachments(C), - assume_constraint_stores(C), - set_constraint_indices(C,1), - constraints_code(C,F,G), - validate_store_type_assumptions(C), - store_management_preds(C,H), - insert_declarations(E,I), - chr_module_declaration(J), - append([I,H,G,J],B) - ). -store_management_preds(A,B) :- - generate_attach_detach_a_constraint_all(A,C), - generate_indexed_variables_clauses(A,D), - generate_attach_increment(E), - generate_attr_unify_hook(F), - generate_extra_clauses(A,G), - generate_insert_delete_constraints(A,H), - generate_store_code(A,I), - 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) :- - specific_declarations(C,D), - ( A=[(:-module(E,F))|G] -> - B=[(:-module(E,F))|C], - D=G - ; - B=C, - D=A - ). -chr_module_declaration(A) :- - get_target_module(B), - ( B\==chr_translate -> - A=[(:-multifile chr:'$chr_module'/1),chr:'$chr_module'(B)] - ; - A=[] - ). -partition_clauses([],[],[],[]). -partition_clauses([A|B],C,D,E) :- - ( parse_rule(A,F) -> - C=G, - D=[F|H], - E=I - ; - ( is_declaration(A,J) -> - append(J,G,C), - D=H, - E=I - ) - ; - ( is_module_declaration(A,K) -> - target_module(K), - C=G, - D=H, - E=[A|I] - ) - ; - ( A=(handler _) -> - format('CHR compiler WARNING: ~w. -',[A]), - format(' `--> SICStus compatibility: ignoring handler/1 declaration. -',[]), - C=G, - D=H, - E=I - ) - ; - ( A=(rules _) -> - format('CHR compiler WARNING: ~w. -',[A]), - format(' `--> SICStus compatibility: ignoring rules/1 declaration. -',[]), - C=G, - D=H, - E=I - ) - ; - ( 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, - E=[A|I] - ), - partition_clauses(B,G,H,I). -is_declaration(A,B) :- - A=(:-C), - ( - C=..[chr_constraint,D] - ; - C=..[chr_constraint,D] - ), - conj2list(D,B). -parse_rule(A,B) :- - A=(C@D), - !, - rule(D,yes(C),B). -parse_rule(A,B) :- - rule(A,no,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). -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), - !, - conj2list(D,F), - get_ids(F,G,H), - C=ids([],G), - ( E=(I '|' J) -> - B=rule([],H,I,J) - ; - B=rule([],H,true,E) - ). -is_rule(A,B,C) :- - A=(D<=>E), - !, - ( E=(F '|' G) -> - H=F, - I=G - ; - H=true, - I=E - ), - ( D=(J\K) -> - conj2list(J,L), - conj2list(K,M), - get_ids(L,N,O,0,P), - get_ids(M,Q,R,P,_), - C=ids(Q,N) - ; - conj2list(D,M), - O=[], - get_ids(M,Q,R), - C=ids(Q,[]) - ), - 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 - ; - E=A - ), - H is C+1, - get_ids(B,D,F,H,G). -is_module_declaration((:-module(A)),A). -is_module_declaration((:-module(A,_)),A). -add_rules([]). -add_rules([A|B]) :- - A=pragma(_,_,_,_,C), - rule(C,A), - add_rules(B). -check_rules([],_). -check_rules([A|B],C) :- - check_rule(A,C), - check_rules(B,C). -check_rule(A,B) :- - check_rule_indexing(A), - A=pragma(C,_,D,_,_), - C=rule(E,F,_,_), - append(E,F,G), - check_head_constraints(G,B,A), - check_pragmas(D,A). -check_head_constraints([],_,_). -check_head_constraints([A|B],C,D) :- - functor(A,E,F), - ( member(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 - ). -check_pragmas([],_). -check_pragmas([A|B],C) :- - check_pragma(A,C), - check_pragmas(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. -check_pragma(passive(A),B) :- - !, - B=pragma(_,ids(C,D),_,_,E), - ( memberchk_eq(A,C) -> - true - ; - ( memberchk_eq(A,D) -> - true - ) - ; - format('CHR compiler ERROR: invalid identifier ~w in pragma passive in ~@. -',[A,format_rule(B)]), - fail - ), - passive(E,A). -check_pragma(A,B) :- - A=unique(C,D), - !, - B=pragma(_,_,_,_,E), - pragma_unique(E,C,D), - format('CHR compiler WARNING: undocumented pragma ~w in ~@. -',[A,format_rule(B)]), - format(' `--> Only use this pragma if you know what you are doing. -',[]). -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 -',[]). -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 -',[]). -check_pragma(A,B) :- - format('CHR compiler ERROR: invalid pragma ~w in ~@. -',[A,format_rule(B)]), - format(' `--> Pragma should be one of passive/1! -',[]), - fail. -format_rule(A) :- - A=pragma(_,_,_,B,C), - ( B=yes(D) -> - write('rule '), - write(D) - ; - write('rule number '), - write(C) - ). -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). -remove_anti_monotonic_guards(A,B,C) :- - conj2list(A,D), - remove_anti_monotonic_guard_list(D,B,E), - list2conj(E,C). -remove_anti_monotonic_guard_list([],_,[]). -remove_anti_monotonic_guard_list([A|B],C,D) :- - ( A=var(E), - memberchk_eq(E,C) -> - D=F - ; - D=[A|F] - ), - remove_anti_monotonic_guard_list(B,C,F). -check_indexing([],_). -check_indexing([A|B],C) :- - functor(A,D,E), - A=..[_|F], - term_variables(B-C,G), - check_indexing(F,1,D/E,G), - check_indexing(B,[A|C]). -check_indexing([],_,_,_). -check_indexing([A|B],C,D,E) :- - ( is_indexed_argument(D,C) -> - true - ; - ( nonvar(A) -> - indexed_argument(D,C) - ) - ; - term_variables(B,F), - append(F,E,G), - ( memberchk_eq(A,G) -> - indexed_argument(D,C) - ; - true - ) - ), - H is C+1, - term_variables(A,I), - append(I,E,J), - check_indexing(B,H,D,J). -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(B). -add_occurrences([],[],_). -add_occurrences([A|B],[C|D],E) :- - functor(A,F,G), - H=F/G, - get_max_occurrence(H,I), - J is I+1, - occurrence(H,J,E,C), - add_occurrences(B,D,E). -late_allocation([]). -late_allocation([A|B]) :- - allocation_occurrence(A,1), - late_allocation(B). -handle_option(A,B) :- - var(A), - !, - format('CHR compiler ERROR: ~w. -',[option(A,B)]), - format(' `--> First argument should be an atom, not a variable. -',[]), - fail. -handle_option(A,B) :- - var(B), - !, - format('CHR compiler ERROR: ~w. -',[option(A,B)]), - format(' `--> Second argument should be a nonvariable. -',[]), - fail. -handle_option(A,B) :- - option_definition(A,B,C), - !, - set_chr_pp_flags(C). -handle_option(A,B) :- - \+option_definition(A,_,_), - !, - format('CHR compiler WARNING: ~w. -',[option(A,B)]), - format(' `--> Invalid option name -',[]). -handle_option(A,B) :- - findall(C,option_definition(A,C,_),D), - format('CHR compiler ERROR: ~w. -',[option(A,B)]), - format(' `--> Invalid value ~w: should be one of ~w. -',[B,D]), - fail. -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-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) :- - A=[unique_analyse_optimise-off,check_unnecessary_active-off,reorder_heads-off,set_semantics_rule-off,check_attachments-off,guard_via_reschedule-off]. -option_definition(check_guard_bindings,on,A) :- - A=[guard_locks-on]. -option_definition(check_guard_bindings,off,A) :- - A=[guard_locks-off]. -option_definition(reduced_indexing,on,A) :- - A=[reduced_indexing-on]. -option_definition(reduced_indexing,off,A) :- - A=[reduced_indexing-off]. -option_definition(mode,A,[]) :- - ( nonvar(A) -> - functor(A,B,C), - A=..[_|D], - constraint_mode(B/C,D) - ; - true - ). -option_definition(store,A-B,[]) :- - store_type(A,B). -option_definition(debug,on,A) :- - A=[debugable-on]. -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), - fail. -init_chr_pp_flags. -set_chr_pp_flags([]). -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), - nb_setval(C,B). -chr_pp_flag_definition(unique_analyse_optimise,[on,off]). -chr_pp_flag_definition(check_unnecessary_active,[full,simplification,off]). -chr_pp_flag_definition(reorder_heads,[on,off]). -chr_pp_flag_definition(set_semantics_rule,[on,off]). -chr_pp_flag_definition(guard_via_reschedule,[on,off]). -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_definition(reduced_indexing,[on,off]). -chr_pp_flag(A,B) :- - atom_concat('$chr_pp_',A,C), - nb_getval(C,D), - ( D==[] -> - chr_pp_flag_definition(A,[B|_]) - ; - D=B - ). -generate_attach_detach_a_constraint_all([],[]). -generate_attach_detach_a_constraint_all([A|B],C) :- - ( may_trigger(A) -> - generate_attach_a_constraint(A,D), - generate_detach_a_constraint(A,E) - ; - D=[], - E=[] - ), - generate_attach_detach_a_constraint_all(B,F), - 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) :- - 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], - G=(H,J). -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), - G=(J,I). -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), - nth1(F,J,L), - substitute_eq(L,J,[D|L],M), - make_attr(H,I,M,N), - substitute_eq(L,J,[D],O), - make_attr(H,P,O,Q), - copy_term_nat(J,R), - nth1(F,R,[D]), - 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)). -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_t_p(A,C) - ). -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), - nth1(F,K,M), - substitute_eq(M,K,[],N), - make_attr(I,O,N,P), - 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). -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_attached(A) - ; - chr_pp_flag(debugable,on) - ) -> - C=[D|E], - generate_indexed_variables_clause(A,D) - ; - C=E - ), - generate_indexed_variables_clauses_(B,E). -generate_indexed_variables_clause(A/B,C) :- - functor(D,A,B), - get_constraint_mode(A/B,E), - D=..[_|F], - create_indexed_variables_body(F,E,G,1,A/B,H,I), - ( H==empty -> - J=(G=[]) - ; - ( I==0 -> - J=term_variables(K,G) - ) - ; - H=J - ), - C=('$indexed_variables'(K,G):-K=D,J). -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,C,D,E,F]) :- - ( chr_pp_flag(reduced_indexing,on) -> - global_indexed_variables_clause(A,E) - ; - E=(chr_indexed_variables(G,H):-'chr chr_indexed_variables'(G,H)) - ), - generate_remove_clause(B), - generate_activate_clause(C), - generate_allocate_clause(D), - generate_insert_constraint_internal(F). -generate_remove_clause(A) :- - 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),'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],'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),'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)) - ; - D=true, - G=[] - ), - B=(chr_indexed_variables(E,G):-D). -generate_attach_increment(A) :- - get_max_constraint_index(B), - ( B>0 -> - A=[C,D], - generate_attach_increment_empty(C), - ( B==1 -> - generate_attach_increment_one(D) - ; - generate_attach_increment_many(B,D) - ) - ; - A=[] - ). -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). -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). -generate_attr_unify_hook([A]) :- - get_max_constraint_index(B), - ( B==0 -> - get_target_module(C), - A=(attr_unify_hook(_,_):-write('ERROR: Unexpected triggering of attr_unify_hook/2 in module '),writeln(C)) - ; - ( B==1 -> - generate_attr_unify_hook_one(A) - ) - ; - generate_attr_unify_hook_many(B,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), - 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) - ; - B='chr run_suspensions'(A) - ). -make_run_suspensions_loop(A,B) :- - ( chr_pp_flag(debugable,on) -> - B='chr run_suspensions_loop_d'(A) - ; - B='chr run_suspensions_loop'(A) - ). -generate_insert_delete_constraints([],[]). -generate_insert_delete_constraints([A|B],C) :- - ( is_attached(A) -> - C=[D,E|F], - generate_insert_delete_constraint(A,D,E) - ; - C=F - ), - generate_insert_delete_constraints(B,F). -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), - C=(E:-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 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), - 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). -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), - 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), - E=..[D,F], - generate_delete_constraint_body(A,B,F,G), - C=(E:-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 default_store'(E),F) - ; - generate_detach_body_n(A,E,B,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), - 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). -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), - 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), - C=..[D,B]. -generate_insert_constraint_call(A,B,C) :- - make_name('$insert_in_store_',A,D), - C=..[D,B]. -generate_store_code(A,[B|C]) :- - enumerate_stores_code(A,B), - generate_store_code(A,C,[]). -generate_store_code([],A,A). -generate_store_code([A|B],C,D) :- - get_store_type(A,E), - generate_store_code(E,A,C,F), - generate_store_code(B,F,D). -generate_store_code(default,_,A,A). -generate_store_code(multi_hash(A),B,C,D) :- - multi_hash_store_initialisations(A,B,C,E), - multi_hash_via_lookups(A,B,E,D). -generate_store_code(global_ground,A,B,C) :- - global_ground_store_initialisation(A,B,C). -generate_store_code(multi_store(A),B,C,D) :- - multi_store_generate_store_code(A,B,C,D). -multi_store_generate_store_code([],_,A,A). -multi_store_generate_store_code([A|B],C,D,E) :- - generate_store_code(A,C,D,F), - multi_store_generate_store_code(B,C,F,E). -multi_hash_store_initialisations([],_,A,A). -multi_hash_store_initialisations([A|B],C,D,E) :- - multi_hash_store_name(C,A,F), - 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), - 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), - 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 - ; - ( is_list(C) -> - 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 - ; - ( 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) - ; - ( 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) - ) - ). -multi_hash_key_args(A,B,C) :- - ( integer(A) -> - arg(A,B,D), - C=[D] - ; - ( is_list(A) -> - sort(A,E), - term_variables(B,F), - find_with_var_identity(D,F,(member(G,E),arg(G,B,D)),C) - ) - ). -global_ground_store_name(A/B,C) :- - get_target_module(D), - atom_concat_list(['$chr_store_global_ground_',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). -enumerate_store_bodies([],_,[]). -enumerate_store_bodies([A|B],C,D) :- - ( is_attached(A) -> - get_store_type(A,E), - enumerate_store_body(E,A,C,F), - D=[F|G] - ; - D=G - ), - enumerate_store_bodies(B,C,G). -enumerate_store_body(default,A,B,C) :- - get_constraint_index(A,D), - get_target_module(E), - get_max_constraint_index(F), - 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)) - ; - K='chr sbag_member'(B,I) - ), - C=(G,K). -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), - 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), - 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) - ; - true - ). -check_constraint_attachments([]). -check_constraint_attachments([A|B]) :- - check_constraint_attachment(A), - check_constraint_attachments(B). -check_constraint_attachment(A) :- - get_max_occurrence(A,B), - check_occurrences_attachment(A,1,B). -check_occurrences_attachment(A,B,C) :- - ( B>C -> - true - ; - check_occurrence_attachment(A,B), - D is B+1, - check_occurrences_attachment(A,D,C) - ). -check_occurrence_attachment(A,B) :- - get_occurrence(A,B,C,D), - get_rule(C,E), - E=pragma(rule(F,G,H,I),ids(J,K),_,_,_), - ( select2(D,L,J,F,_,_) -> - check_attachment_head1(L,D,C,F,G,H) - ; - ( select2(D,M,K,G,_,_) -> - check_attachment_head2(M,D,C,F,I) - ) - ). -check_attachment_head1(A,B,C,D,E,F) :- - functor(A,G,H), - ( D==[A], - E==[], - F==true, - A=..[_|I], - no_matching(I,[]), - \+is_passive(C,B) -> - attached(G/H,no) - ; - attached(G/H,maybe) - ). -no_matching([],_). -no_matching([A|B],C) :- - var(A), - \+memberchk_eq(A,C), - no_matching(B,[A|C]). -check_attachment_head2(A,B,C,D,E) :- - functor(A,F,G), - ( is_passive(C,B) -> - attached(F/G,maybe) - ; - ( D\==[], - E==true -> - attached(F/G,maybe) - ) - ; - attached(F/G,yes) - ). -all_attached([]). -all_attached([A|B]) :- - functor(A,C,D), - is_attached(C/D), - all_attached(B). -set_constraint_indices([],A) :- - B is A-1, - max_constraint_index(B). -set_constraint_indices([A|B],C) :- - ( - ( - may_trigger(A) - ; - is_attached(A), - get_store_type(A,default) - ) -> - constraint_index(A,C), - D is C+1, - set_constraint_indices(B,D) - ; - set_constraint_indices(B,C) - ). -constraints_code(A,B,C) :- - post_constraints(A,1), - constraints_code1(1,B,D,[]), - clean_clauses(D,C). -post_constraints([],A) :- - B is A-1, - constraint_count(B). -post_constraints([A/B|C],D) :- - constraint(A/B,D), - E is D+1, - post_constraints(C,E). -constraints_code1(A,B,C,D) :- - get_constraint_count(E), - ( A>E -> - D=C - ; - constraint_code(A,B,C,F), - G is A+1, - constraints_code1(G,B,F,D) - ). -constraint_code(A,B,C,D) :- - get_constraint(E,A), - constraint_prelude(E,F), - C=[F|G], - H=[0], - rules_code(B,A,H,I,G,J), - gen_cond_attach_clause(E,I,J,D). -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], - ( chr_pp_flag(debugable,on) -> - C=(G:-allocate_constraint(I:H,E,J,D),('chr debug_event'(call(E)),H;'chr debug_event'(fail(E)),!,fail),('chr debug_event'(exit(E));'chr debug_event'(redo(E)),fail)) - ; - C=(G:-H) - ). -gen_cond_attach_clause(A/B,C,D,E) :- - ( is_attached(A/B) -> - ( C==[0] -> - ( may_trigger(A/B) -> - gen_cond_attach_goal(A/B,F,G,H,I) - ; - gen_insert_constraint_internal_goal(A/B,F,G,H,I) - ) - ; - vars_susp(B,H,I,G), - gen_uncond_attach_goal(A/B,I,F,_) - ), - ( chr_pp_flag(debugable,on) -> - J=..[A|H], - K='chr debug_event'(insert(J#I)) - ; - K=true - ), - build_head(A,B,C,G,L), - M=(L:-K,F), - D=[M|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), - ( may_trigger(A/B) -> - make_name(attach_,A/B,H), - I=..[H,J,F] - ; - I=true - ), - get_target_module(K), - L=..[A|E], - generate_insert_constraint_call(A/B,F,M), - 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), - build_head(A,B,[0],D,G), - ( may_trigger(A/B) -> - make_name(attach_,A/B,H), - I=..[H,J,F] - ; - I=true - ), - get_target_module(K), - L=..[A|E], - generate_insert_constraint_call(A/B,F,M), - C=(insert_constraint_internal(_,J,F,K:G,L,E),M,I). -gen_uncond_attach_goal(A,B,C,D) :- - ( may_trigger(A) -> - make_name(attach_,A,E), - F=..[E,G,B] - ; - F=true - ), - generate_insert_constraint_call(A,B,H), - C=(activate_constraint(I,G,B,D),(I==yes->H,F;true)). -rules_code([],_,A,A,B,B). -rules_code([A|B],C,D,E,F,G) :- - rule_code(A,C,D,H,F,I), - rules_code(B,C,H,E,I,G). -rule_code(A,B,C,D,E,F) :- - A=pragma(G,H,_,_,_), - H=ids(I,J), - G=rule(K,L,_,_), - heads1_code(K,[],I,[],A,B,C,E,M), - heads2_code(L,[],J,[],A,B,C,D,M,F). -heads1_code([],_,_,_,_,_,_,A,A). -heads1_code([A|B],C,[D|E],F,G,H,I,J,K) :- - G=pragma(L,_,_,_,M), - get_constraint(N/O,H), - ( functor(A,N,O), - \+is_passive(M,D), - \+check_unnecessary_active(A,C,L), - all_attached(B), - all_attached(C), - L=rule(_,P,_,_), - all_attached(P) -> - append(B,C,Q), - append(E,F,R), - head1_code(A,Q,R,G,N/O,H,I,J,S) - ; - J=S - ), - heads1_code(B,[A|C],E,[D|F],G,H,I,S,K). -head1_code(A,B,C,D,E,_,F,G,H) :- - D=pragma(I,_,_,_,J), - I=rule(_,K,_,_), - ( K==[] -> - reorder_heads(J,A,B,C,L,M), - simplification_code(A,L,M,D,E,F,G,H) - ; - simpagation_head1_code(A,B,C,D,E,F,G,H) - ). -heads2_code([],_,_,_,_,_,A,A,B,B). -heads2_code([A|B],C,[D|E],F,G,H,I,J,K,L) :- - G=pragma(M,_,_,_,N), - get_constraint(O/P,H), - ( functor(A,O,P), - \+is_passive(N,D), - \+check_unnecessary_active(A,C,M), - \+set_semantics_rule(G), - all_attached(B), - all_attached(C), - M=rule(Q,_,_,_), - all_attached(Q) -> - append(B,C,R), - append(E,F,S), - length(B,T), - head2_code(A,R,S,G,T,O/P,I,K,U), - inc_id(I,V), - gen_alloc_inc_clause(O/P,I,U,W) - ; - K=W, - V=I - ), - heads2_code(B,[A|C],E,[D|F],G,H,V,J,W,L). -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,_), - propagation_code(A,M,J,K,E,F,G,H,I) - ; - simpagation_head2_code(A,B,C,D,F,G,H,I) - ). -gen_alloc_inc_clause(A/B,C,D,E) :- - vars_susp(B,F,G,H), - build_head(A,B,C,H,I), - inc_id(C,J), - build_head(A,B,J,H,K), - gen_allocation(C,F,G,A/B,H,L), - M=(I:-L,K), - D=[M|E]. -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) :- - build_head(C,D,[0],E,G), - get_target_module(H), - I=..[C|A], - F=allocate_constraint(H:G,B,I,A). -gen_allocation(A,B,C,D,E,F) :- - ( A==[0] -> - ( is_attached(D) -> - ( may_trigger(D) -> - gen_cond_allocation(B,C,D,E,F) - ; - gen_allocation(B,C,D,E,F) - ) - ; - F=true - ) - ; - F=true - ). -guard_via_reschedule(A,B,C,D) :- - ( chr_pp_flag(guard_via_reschedule,on) -> - guard_via_reschedule_main(A,B,C,D) - ; - append(A,B,E), - list2conj(E,D) - ). -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). -dependency_reorder(A,B) :- - dependency_reorder(A,[],B). -dependency_reorder([],A,B) :- - reverse(A,B). -dependency_reorder([A|B],C,D) :- - A=unit(_,_,E,F), - ( E==fixed -> - G=[A|C] - ; - dependency_insert(C,A,F,G) - ), - dependency_reorder(B,G,D). -dependency_insert([],A,_,[A]). -dependency_insert([A|B],C,D,E) :- - A=unit(F,_,_,_), - ( memberchk(F,D) -> - E=[C,A|B] - ; - E=[A|G], - dependency_insert(B,C,D,G) - ). -build_units(A,B,C,D) :- - build_retrieval_units(A,1,E,C,F,D,G), - 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], - M is C+1, - build_retrieval_units(B,M,D,J,F,L,H). -initialize_unit_dictionary(A,B) :- - term_variables(A,C), - pair_all_with(C,0,B). -update_unit_dictionary([],_,A,A,B,B). -update_unit_dictionary([A|B],C,D,E,F,G) :- - ( lookup_eq(D,A,H) -> - ( - ( - H==C - ; - memberchk(H,F) - ) -> - I=F - ; - I=[H|F] - ), - J=D - ; - J=[A-C|D], - I=F - ), - update_unit_dictionary(B,C,J,E,I,G). -build_guard_units(A,B,C,D) :- - ( A=[E] -> - D=[unit(B,E,fixed,[])] - ; - ( A=[E|F] -> - term_variables(E,G), - update_unit_dictionary2(G,B,C,H,[],I), - D=[unit(B,E,movable,I)|J], - K is B+1, - build_guard_units(F,K,H,J) - ) - ). -update_unit_dictionary2([],_,A,A,B,B). -update_unit_dictionary2([A|B],C,D,E,F,G) :- - ( lookup_eq(D,A,H) -> - ( - ( - H==C - ; - memberchk(H,F) - ) -> - I=F - ; - I=[H|F] - ), - J=[A-C|D] - ; - J=[A-C|D], - I=F - ), - update_unit_dictionary2(B,C,J,E,I,G). -unique_analyse_optimise(A,B) :- - ( chr_pp_flag(unique_analyse_optimise,on) -> - unique_analyse_optimise_main(A,1,[],B) - ; - B=A - ). -unique_analyse_optimise_main([],_,_,[]). -unique_analyse_optimise_main([A|B],C,D,[E|F]) :- - ( discover_unique_pattern(A,C,G) -> - H=[G|D] - ; - H=D - ), - A=pragma(I,J,K,L,M), - I=rule(N,O,_,_), - J=ids(P,Q), - apply_unique_patterns_to_constraints(N,P,H,R), - apply_unique_patterns_to_constraints(O,Q,H,S), - globalize_unique_pragmas(R,M), - globalize_unique_pragmas(S,M), - append([R,S,K],T), - E=pragma(I,J,T,L,M), - U is C+1, - unique_analyse_optimise_main(B,U,H,F). -globalize_unique_pragmas([],_). -globalize_unique_pragmas([unique(A,B)|C],D) :- - pragma_unique(D,A,B), - globalize_unique_pragmas(C,D). -apply_unique_patterns_to_constraints([],_,_,[]). -apply_unique_patterns_to_constraints([A|B],[C|D],E,F) :- - ( member(G,E), - apply_unique_pattern(A,C,G,H) -> - F=[H|I] - ; - F=I - ), - apply_unique_patterns_to_constraints(B,D,E,I). -apply_unique_pattern(A,B,C,D) :- - C=unique(E,F), - subsumes(A,E,G), - 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_ds(D), - subsumes_aux(A,B,D,E), - ds_to_list(E,F), - build_unifier(F,C). -subsumes_aux(A,B,C,D) :- - ( compound(B), - functor(B,E,F) -> - compound(A), - functor(A,E,F), - subsumes_aux(F,A,B,C,D) - ; - ( A==B -> - D=C - ) - ; - ( var(B), - get_ds(A,C,G) -> - G==B, - D=C - ) - ; - var(B), - put_ds(A,C,B,D) - ). -subsumes_aux(0,_,_,A,A) :- - !. -subsumes_aux(A,B,C,D,E) :- - arg(A,B,F), - arg(A,C,G), - subsumes_aux(F,G,D,H), - I is A-1, - subsumes_aux(I,B,C,H,E). -build_unifier([],[]). -build_unifier([A-B|C],[B-A|D]) :- - build_unifier(C,D). -discover_unique_pattern(A,B,C) :- - A=pragma(D,_,_,E,B), - D=rule(F,G,H,_), - ( F=[I], - G=[J] -> - true - ; - ( F=[I,J], - G==[] -> - true - ) - ), - check_unique_constraints(I,J,H,B,K), - term_variables(I,L), - select_pragma_unique_variables(K,L,M), - N=unique(I,M), - copy_term_nat(N,C), - ( verbosity_on -> - format('Found unique pattern ~w in rule ~d~@ -',[C,B,(E=yes(O)->write([58,32]),write(O);true)]) - ; - true - ). -select_pragma_unique_variables([],_,[]). -select_pragma_unique_variables([A-B|C],D,E) :- - ( A==B -> - E=[A|F] - ; - once((\+memberchk_eq(A,D);\+memberchk_eq(B,D))), - E=F - ), - select_pragma_unique_variables(C,D,F). -check_unique_constraints(A,B,C,D,E) :- - \+any_passive_head(D), - variable_replacement(A-B,B-A,E), - copy_with_variable_replacement(C,F,E), - negate_b(C,G), - once(entails_b(G,F)). -check_unnecessary_active(A,B,C) :- - ( chr_pp_flag(check_unnecessary_active,full) -> - check_unnecessary_active_main(A,B,C) - ; - ( chr_pp_flag(check_unnecessary_active,simplification), - C=rule(_,[],_,_) -> - check_unnecessary_active_main(A,B,C) - ) - ; - fail - ). -check_unnecessary_active_main(A,B,C) :- - member(D,B), - variable_replacement(D,A,E), - copy_with_variable_replacement(C,F,E), - identical_rules(C,F), - !. -set_semantics_rule(A) :- - ( chr_pp_flag(set_semantics_rule,on) -> - set_semantics_rule_main(A) - ; - fail - ). -set_semantics_rule_main(A) :- - A=pragma(B,C,D,_,E), - B=rule([_],[_],true,_), - C=ids([F],[G]), - once(member(unique(F,H),D)), - once(member(unique(G,I),D)), - H==I, - \+is_passive(E,F). -identical_rules(rule(A,B,C,D),rule(E,F,G,H)) :- - C==G, - identical_bodies(D,H), - permutation(A,I), - I==E, - permutation(B,J), - J==F. -identical_bodies(A,B) :- - ( A=(C=D), - B=(E=F) -> - ( - C==E, - D==F - ; - C==F, - E==D - ), - ! - ; - A==B - ). -copy_with_variable_replacement(A,B,C) :- - ( var(A) -> - ( lookup_eq(C,A,B) -> - true - ; - A=B - ) - ; - functor(A,D,E), - functor(B,D,E), - A=..[_|F], - B=..[_|G], - copy_with_variable_replacement_l(F,G,C) - ). -copy_with_variable_replacement_l([],[],_). -copy_with_variable_replacement_l([A|B],[C|D],E) :- - copy_with_variable_replacement(A,C,E), - copy_with_variable_replacement_l(B,D,E). -variable_replacement(A,B,C) :- - variable_replacement(A,B,[],C). -variable_replacement(A,B,C,D) :- - ( var(A) -> - var(B), - ( lookup_eq(C,A,E) -> - E==B, - D=C - ; - D=[A-B|C] - ) - ; - A=..[F|G], - nonvar(B), - B=..[F|H], - variable_replacement_l(G,H,C,D) - ). -variable_replacement_l([],[],A,A). -variable_replacement_l([A|B],[C|D],E,F) :- - variable_replacement(A,C,E,G), - variable_replacement_l(B,D,G,F). -simplification_code(A,B,C,D,E/F,G,H,I) :- - D=pragma(J,_,K,_,_), - head_info(A,F,_,L,M,N), - build_head(E,F,G,M,O), - head_arg_matches(N,[],P,Q), - ( B==[] -> - R=[], - S=Q, - T=[] - ; - rest_heads_retrieval_and_matching(B,C,K,A,T,R,Q,S) - ), - guard_body_copies2(J,S,U,V), - guard_via_reschedule(T,U,O-P,W), - gen_uncond_susps_detachments(R,B,X), - gen_cond_susp_detachment(G,L,E/F,Y), - ( chr_pp_flag(debugable,on) -> - J=rule(_,_,Z,A1), - my_term_copy(Z-A1,S,_,B1-C1), - D1='chr debug_event'(try([L|E1],[],B1,C1)), - F1='chr debug_event'(apply([L|E1],[],B1,C1)) - ; - D1=true, - F1=true - ), - G1=(O:-P,W,D1,!,F1,X,Y,V), - H=[G1|I]. -head_arg_matches(A,B,C,D) :- - head_arg_matches_(A,B,E,D), - list2conj(E,C). -head_arg_matches_([],A,[],A). -head_arg_matches_([A-B|C],D,E,F) :- - ( var(A) -> - ( lookup_eq(D,A,G) -> - E=[B==G|H], - I=D - ; - I=[A-B|D], - E=H - ), - J=C - ; - ( atomic(A) -> - E=[B==A|H], - D=I, - J=C - ) - ; - A=..[_|K], - functor(A,L,M), - functor(N,L,M), - N=..[_|O], - E=[nonvar(B),B=N|H], - pairup(K,O,P), - append(P,C,J), - I=D - ), - head_arg_matches_(J,I,H,F). -rest_heads_retrieval_and_matching(A,B,C,D,E,F,G,H) :- - rest_heads_retrieval_and_matching(A,B,C,D,E,F,G,H,[],[],[]). -rest_heads_retrieval_and_matching(A,B,C,D,E,F,G,H,I,J,K) :- - ( A=[_|_] -> - rest_heads_retrieval_and_matching_n(A,B,C,I,J,D,E,F,G,H,K) - ; - E=[], - F=[], - G=H - ). -rest_heads_retrieval_and_matching_n([],_,_,_,_,_,[],[],A,A,B) :- - 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,P) :- - functor(A,Q,R), - get_store_type(Q/R,S), - ( S==default -> - passive_head_via(A,[H|F],P,N,I,T,U), - get_max_constraint_index(V), - ( V==1 -> - W=T - ; - get_constraint_index(Q/R,X), - make_attr(V,_,Y,T), - nth1(X,Y,W) - ) - ; - lookup_passive_head(S,A,[H|F],N,I,W), - U=P - ), - head_info(A,R,Z,_,_,A1), - head_arg_matches(A1,N,B1,C1), - D1=..[suspension,_,E1,_,_,_,_|Z], - different_from_other_susps(A,L,F,G,F1), - 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) -> - J=(H1->true) - ; - J=H1 - ), - rest_heads_retrieval_and_matching_n(B,D,E,[A|F],[L|G],H,K,M,C1,O,U). -instantiate_pattern_goals([]). -instantiate_pattern_goals([_-attr(A,B,C)|D]) :- - get_max_constraint_index(E), - ( E==1 -> - C=true - ; - make_attr(E,F,_,A), - or_list(B,G), - !, - C=(F/\G=:=G) - ), - instantiate_pattern_goals(D). -check_unique_keys([],_). -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^(nth1(G,C,H),\+A\=H,nth1(G,D,I),F=(B\==I)),J) -> - list2conj(J,E) - ; - E=true - ). -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 - ; - E=(P,Q), - gen_get_mod_constraints(L,P,F), - G=[L-attr(F,[M|_],Q)|C] - ). -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 default_store'(E),get_attr(E,D,F),F=C) - ; - ( A=[G] -> - H='chr via_1'(G,I) - ; - ( A=[G,J] -> - H='chr via_2'(G,J,I) - ) - ; - H='chr via'(A,I) - ), - B=(H,get_attr(I,D,F),F=C) - ). -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), - ( chr_pp_flag(guard_locks,on), - 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=[], - T=[] - ), - list2conj(S,U), - list2conj(T,V), - list2conj(L,W), - M=(U,W,V), - my_term_copy(F,J,D). -split_off_simple_guard([],_,[],[]). -split_off_simple_guard([A|B],C,D,E) :- - ( simple_guard(A,C) -> - D=[A|F], - split_off_simple_guard(B,C,F,E) - ; - D=[], - E=[A|B] - ). -simple_guard(A,B) :- - binds_b(A,C), - \+ (member(D,C),lookup_eq(B,D,_)). -my_term_copy(A,B,C) :- - my_term_copy(A,B,_,C). -my_term_copy(A,B,C,D) :- - ( var(A) -> - ( lookup_eq(B,A,D) -> - C=B - ; - C=[A-D|B] - ) - ; - functor(A,E,F), - functor(D,E,F), - A=..[_|G], - D=..[_|H], - my_term_copy_list(G,B,C,H) - ). -my_term_copy_list([],A,A,[]). -my_term_copy_list([A|B],C,D,[E|F]) :- - my_term_copy(A,C,G,E), - my_term_copy_list(B,G,D,F). -gen_cond_susp_detachment(A,B,C,D) :- - ( is_attached(C) -> - ( A==[0], - \+may_trigger(C) -> - D=true - ; - gen_uncond_susp_detachment(B,C,E), - D=(var(B)->true;E) - ) - ; - D=true - ). -gen_uncond_susp_detachment(A,B,C) :- - ( is_attached(B) -> - ( may_trigger(B) -> - make_name(detach_,B,D), - E=..[D,F,A] - ; - E=true - ), - ( chr_pp_flag(debugable,on) -> - G='chr debug_event'(remove(A)) - ; - G=true - ), - generate_delete_constraint_call(B,A,H), - C=(G,remove_constraint_internal(A,F,I),(I==yes->H,E;true)) - ; - C=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),L,_,M), - J=rule(_,N,O,P), - head_info(A,F,_,Q,R,S), - head_arg_matches(S,[],T,U), - build_head(E,F,G,R,V), - append(B,N,W), - append(C,K,X), - reorder_heads(M,A,W,X,Y,Z), - rest_heads_retrieval_and_matching(Y,Z,L,A,A1,B1,U,C1), - split_by_ids(Z,B1,C,D1,E1), - guard_body_copies2(J,C1,F1,G1), - guard_via_reschedule(A1,F1,V-T,H1), - gen_uncond_susps_detachments(D1,B,I1), - gen_cond_susp_detachment(G,Q,E/F,J1), - ( chr_pp_flag(debugable,on) -> - my_term_copy(O-P,C1,_,K1-L1), - M1='chr debug_event'(try([Q|D1],E1,K1,L1)), - N1='chr debug_event'(apply([Q|D1],E1,K1,L1)) - ; - M1=true, - N1=true - ), - O1=(V:-T,H1,M1,!,N1,I1,J1,G1), - H=[O1|I]. -split_by_ids([],[],_,[],[]). -split_by_ids([A|B],[C|D],E,F,G) :- - ( memberchk_eq(A,E) -> - F=[C|H], - G=I - ; - F=H, - G=[C|I] - ), - split_by_ids(B,D,E,H,I). -simpagation_head2_code(A,B,C,D,E,F,G,H) :- - D=pragma(I,ids(J,_),_,_,K), - I=rule(L,_,M,N), - reorder_heads(K,A,L,J,[O|P],[Q|R]), - simpagation_head2_prelude(A,O,[B,L,M,N],E,F,G,S), - extend_id(F,T), - simpagation_head2_worker(A,O,Q,P,R,B,C,D,E,T,S,H). -simpagation_head2_prelude(A,B,C,D/E,F,G,H) :- - head_info(A,E,I,J,K,L), - build_head(D,E,F,K,M), - head_arg_matches(L,[],N,O), - lookup_passive_head(B,[A],O,P,Q), - gen_allocation(F,I,J,D/E,K,R), - extend_id(F,S), - extra_active_delegate_variables(A,C,O,T), - append([Q|K],T,U), - build_head(D,E,S,U,V), - W=(M:-N,P,!,R,V), - G=[W|H]. -extra_active_delegate_variables(A,B,C,D) :- - A=..[_|E], - delegate_variables(A,B,C,E,D). -passive_delegate_variables(A,B,C,D,E) :- - term_variables(B,F), - delegate_variables(A,C,D,F,E). -delegate_variables(A,B,C,D,E) :- - term_variables(A,F), - term_variables(B,G), - intersect_eq(F,G,H), - list_difference_eq(H,D,I), - translate(I,C,E). -simpagation_head2_worker(A,B,C,D,E,F,G,H,I,J,K,L) :- - H=pragma(M,_,_,_,_), - M=rule(_,_,N,O), - simpagation_head2_worker_end(A,[B,D,F,N,O],I,J,K,P), - simpagation_head2_worker_body(A,B,C,D,E,F,G,H,I,J,P,L). -simpagation_head2_worker_body(A,B,C,D,E,F,G,H,I/J,K,L,M) :- - gen_var(N), - gen_var(O), - head_info(A,J,_,P,Q,R), - head_arg_matches(R,[],_,S), - H=pragma(T,_,U,_,V), - T=rule(_,_,W,X), - extra_active_delegate_variables(A,[B,D,F,W,X],S,Y), - append([[N|O]|Q],Y,Z), - build_head(I,J,K,Z,A1), - functor(B,_,B1), - head_info(B,B1,C1,_,_,D1), - head_arg_matches(D1,S,E1,F1), - G1=..[suspension,_,H1,_,_,_,_|C1], - create_get_mutable_ref(active,H1,I1), - J1=(N=G1,I1), - ( - ( - D\==[] - ; - F\==[] - ) -> - append(D,F,K1), - append(E,G,L1), - reorder_heads(V,B-A,K1,L1,M1,N1), - rest_heads_retrieval_and_matching(M1,N1,U,[B,A],O1,P1,F1,Q1,[B],[N],[]), - split_by_ids(N1,P1,E,R1,S1) - ; - O1=[], - R1=[], - S1=[], - Q1=F1 - ), - gen_uncond_susps_detachments([N|R1],[B|D],T1), - append([O|Q],Y,U1), - build_head(I,J,K,U1,V1), - append([[]|Q],Y,W1), - build_head(I,J,K,W1,X1), - guard_body_copies2(T,Q1,Y1,Z1), - guard_via_reschedule(O1,Y1,v(A1,J1,E1),A2), - ( Z1\==true -> - gen_uncond_attach_goal(I/J,P,B2,C2), - gen_state_cond_call(P,J,V1,C2,D2), - gen_state_cond_call(P,J,X1,C2,E2) - ; - B2=true, - D2=V1, - E2=X1 - ), - ( chr_pp_flag(debugable,on) -> - my_term_copy(W-X,Q1,_,F2-G2), - H2='chr debug_event'(try([N|R1],[P|S1],F2,G2)), - I2='chr debug_event'(apply([N|R1],[P|S1],F2,G2)) - ; - H2=true, - I2=true - ), - ( member(unique(C,J2),U), - check_unique_keys(J2,S) -> - K2=(A1:-J1,E1->(A2,H2->I2,T1,B2,Z1,E2;X1);V1) - ; - K2=(A1:-J1,E1,A2,H2->I2,T1,B2,Z1,D2;V1) - ), - L=[K2|M]. -gen_state_cond_call(A,B,C,D,E) :- - length(F,B), - G=..[suspension,_,H,_,I,_,_|F], - 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), - head_arg_matches(I,[],_,J), - extra_active_delegate_variables(A,B,J,K), - append([[]|H],K,L), - build_head(C,D,E,L,M), - next_id(E,N), - build_head(C,D,N,H,O), - P=(M:-O), - F=[P|G]. -propagation_code(A,B,C,D,E,F,G,H,I) :- - ( B==[] -> - propagation_single_headed(A,C,D,F,G,H,I) - ; - propagation_multi_headed(A,B,C,D,E,F,G,H,I) - ). -propagation_single_headed(A,B,C,D/E,F,G,H) :- - head_info(A,E,I,J,K,L), - build_head(D,E,F,K,M), - inc_id(F,N), - build_head(D,E,N,K,O), - P=O, - head_arg_matches(L,[],Q,R), - guard_body_copies(B,R,S,T), - gen_allocation(F,I,J,D/E,K,U), - gen_uncond_attach_goal(D/E,J,V,W), - gen_state_cond_call(J,E,P,W,X), - ( chr_pp_flag(debugable,on) -> - B=rule(_,_,Y,Z), - my_term_copy(Y-Z,R,_,A1-B1), - C1='chr debug_event'(try([],[J],A1,B1)), - D1='chr debug_event'(apply([],[J],A1,B1)) - ; - C1=true, - D1=true - ), - E1=(M:-Q,U,'chr novel_production'(J,C),S,C1,!,D1,'chr extend_history'(J,C),V,T,X), - G=[E1|H]. -propagation_multi_headed(A,B,C,D,E,F,G,H,I) :- - B=[J|K], - propagation_prelude(A,B,C,F,G,H,L), - extend_id(G,M), - propagation_nested_code(K,[J,A],C,D,E,F,M,L,I). -propagation_prelude(A,[B|C],D,E/F,G,H,I) :- - head_info(A,F,J,K,L,M), - build_head(E,F,G,L,N), - head_arg_matches(M,[],O,P), - D=rule(_,_,Q,R), - extra_active_delegate_variables(A,[B,C,Q,R],P,S), - lookup_passive_head(B,[A],P,T,U), - gen_allocation(G,J,K,E/F,L,V), - extend_id(G,W), - append([U|L],S,X), - build_head(E,F,W,X,Y), - Z=Y, - A1=(N:-O,T,!,V,Z), - H=[A1|I]. -propagation_nested_code([],[A|B],C,D,E,F,G,H,I) :- - propagation_end([A|B],[],C,F,G,H,J), - propagation_body(A,B,C,D,E,F,G,J,I). -propagation_nested_code([A|B],C,D,E,F,G,H,I,J) :- - propagation_end(C,[A|B],D,G,H,I,K), - propagation_accumulator([A|B],C,D,G,H,K,L), - inc_id(H,M), - propagation_nested_code(B,[A|C],D,E,F,G,M,L,J). -propagation_body(A,B,C,D,E,F/G,H,I,J) :- - C=rule(_,_,K,L), - get_prop_inner_loop_vars(B,[A,K,L],M,N,O,P), - gen_var(Q), - gen_var(R), - functor(A,_,S), - gen_vars(S,T), - U=..[suspension,_,V,_,_,_,_|T], - create_get_mutable_ref(active,V,W), - X=(Q=U,W), - Y=[[Q|R]|M], - build_head(F,G,H,Y,Z), - A1=[R|M], - build_head(F,G,H,A1,B1), - C1=B1, - A=..[_|D1], - pairup(D1,T,E1), - head_arg_matches(E1,N,F1,G1), - different_from_other_susps(A,Q,B,P,H1), - guard_body_copies(C,G1,I1,J1), - gen_uncond_attach_goal(F/G,O,K1,L1), - gen_state_cond_call(O,G,C1,L1,M1), - history_susps(E,[Q|P],O,[],N1), - bagof('chr novel_production'(O1,P1),(member(O1,N1),P1=Q1),R1), - list2conj(R1,S1), - T1=..[t,D|N1], - ( chr_pp_flag(debugable,on) -> - C=rule(_,_,K,L), - my_term_copy(K-L,G1,_,U1-V1), - W1='chr debug_event'(try([],[O,Q|P],U1,V1)), - X1='chr debug_event'(apply([],[O,Q|P],U1,V1)) - ; - W1=true, - X1=true - ), - Y1=(Z:-X,H1,F1,Q1=T1,S1,I1,W1->X1,'chr extend_history'(O,Q1),K1,J1,M1;C1), - I=[Y1|J]. -history_susps(A,B,C,D,E) :- - ( A==0 -> - reverse(B,F), - append(F,[C|D],E) - ; - B=[G|H], - I is A-1, - history_susps(I,H,C,[G|D],E) - ). -get_prop_inner_loop_vars([A],B,C,D,E,[]) :- - !, - functor(A,_,F), - head_info(A,F,_,E,G,H), - head_arg_matches(H,[],_,D), - extra_active_delegate_variables(A,B,D,I), - append(G,I,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), - gen_var(L), - head_info(A,K,_,G,_,M), - head_arg_matches(M,J,_,E), - passive_delegate_variables(A,B,C,E,N), - append(N,[G,L|I],D). -propagation_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 - ; - dec_id(G,Q), - R=[N|M] - ), - build_head(E,F,Q,R,S), - T=S, - U=(P:-T), - H=[U|I]. -gen_var_susp_list_for([A],B,C,D,E,F) :- - !, - functor(A,_,G), - head_info(A,G,_,F,E,H), - head_arg_matches(H,[],_,C), - extra_active_delegate_variables(A,B,C,I), - append(E,I,D). -gen_var_susp_list_for([A|B],C,D,E,F,G) :- - gen_var_susp_list_for(B,[A|C],H,F,_,_), - functor(A,_,I), - gen_var(G), - head_info(A,I,_,J,_,K), - head_arg_matches(K,H,_,D), - passive_delegate_variables(A,B,C,D,L), - append(L,[J,G|F],E). -propagation_accumulator([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), - gen_vars(Q,R), - head_info(C,Q,R,S,_,T), - head_arg_matches(T,N,U,V), - W=..[suspension,_,X,_,_,_,_|R], - different_from_other_susps(C,S,D,O,Y), - 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), - E1=[[S|P]|M], - build_head(F,G,H,E1,F1), - passive_delegate_variables(C,D,[A,B,K,L],V,G1), - append([C1|G1],[S,P|M],H1), - build_head(F,G,D1,H1,I1), - J1=[P|M], - build_head(F,G,H,J1,K1), - L1=(F1:-A1,B1->I1;K1), - I=[L1|J]. -pre_vars_and_susps([A],B,C,D,[]) :- - !, - functor(A,_,E), - head_info(A,E,_,_,F,G), - head_arg_matches(G,[],_,D), - extra_active_delegate_variables(A,B,D,H), - append(F,H,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), - gen_var(K), - head_info(A,J,_,F,_,L), - head_arg_matches(L,I,_,E), - passive_delegate_variables(A,B,C,E,M), - append(M,[F,K|H],D). -reorder_heads(A,B,C,D,E,F) :- - ( chr_pp_flag(reorder_heads,on) -> - reorder_heads_main(A,B,C,D,E,F) - ; - E=C, - F=D - ). -reorder_heads_main(A,B,C,D,E,F) :- - term_variables(B,G), - H=entry([],[],G,C,D,A), - a_star(H,I^(chr_translate:final_data(I)),J^K^L^(chr_translate:expand_data(J,K,L)),M), - M=entry(N,O,_,_,_,_), - reverse(N,E), - reverse(O,F). -final_data(A) :- - A=entry(_,_,_,_,[],_). -expand_data(A,B,C) :- - A=entry(D,E,F,G,H,I), - term_variables(A,_), - B=entry([J|D],[K|E],L,M,N,I), - select2(J,K,G,H,M,N), - order_score(J,K,F,M,I,C), - term_variables([J|F],L). -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,_), - order_score_vars(E,B,C,0,D). -order_score(multi_hash(A),B,_,C,_,_,D) :- - order_score_indexes(A,B,C,0,D). -order_score(global_ground,A,B,_,_,C,D) :- - functor(A,_,E), - ( get_pragma_unique(C,B,F), - F==[] -> - D=1 - ; - ( E==0 -> - D=10 - ) - ; - ( E>0 -> - D=100 - ) - ). -order_score(multi_store(A),B,C,D,E,F,G) :- - find_with_var_identity(H,t(B,D,E),(member(I,A),chr_translate:order_score(I,B,C,D,E,F,H)),J), - min_list(J,G). -order_score_indexes([],_,_,A,A) :- - A>0. -order_score_indexes([A|B],C,D,E,F) :- - multi_hash_key_args(A,C,G), - ( forall(H,G,hprolog:memberchk_eq(H,D)) -> - I is E+10 - ; - I=E - ), - order_score_indexes(B,C,D,I,F). -order_score_vars([],_,_,A,B) :- - ( A==0 -> - B=0 - ; - B=A - ). -order_score_vars([A|B],C,D,E,F) :- - ( memberchk_eq(A,C) -> - G is E+10 - ; - ( memberchk_eq(A,D) -> - G is E+100 - ) - ; - G=E - ), - order_score_vars(B,C,D,G,F). -create_get_mutable_ref(A,B,C) :- - C=(B=mutable(A)). -gen_var(_). -gen_vars(A,B) :- - length(B,A). -head_info(A,B,C,D,E,F) :- - vars_susp(B,C,D,E), - A=..[_|G], - pairup(G,C,F). -inc_id([A|B],[C|B]) :- - C is A+1. -dec_id([A|B],[C|B]) :- - C is A-1. -extend_id(A,[0|A]). -next_id([_,A|B],[C|B]) :- - C is A+1. -build_head(A,B,C,D,E) :- - buildName(A,B,C,F), - E=..[F|D]. -buildName(A,B,C,D) :- - atom_concat(A,/,E), - 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), - 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< - list2conj(B,C) - ; - C=(A,D), - list2conj(B,D) - ). -list2disj([],fail). -list2disj([A],B) :- - !, - B=A. -list2disj([A|B],C) :- - ( A==fail -> - list2disj(B,C) - ; - C=(A;D), - list2disj(B,D) - ). -atom_concat_list([A],A) :- - !. -atom_concat_list([A|B],C) :- - atom_concat_list(B,D), - 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([],_). -set_elems([A|B],A) :- - set_elems(B,A). -member2([A|_],[B|_],A-B). -member2([_|A],[_|B],C) :- - member2(A,B,C). -select2(A,B,[A|C],[B|D],C,D). -select2(A,B,[C|D],[E|F],[C|G],[E|H]) :- - select2(A,B,D,F,G,H). -pair_all_with([],_,[]). -pair_all_with([A|B],C,[A-C|D]) :- - pair_all_with(B,C,D). -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), - 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))), - ( 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) :- - functor(A,D,E), - global_ground_store_name(D/E,F), - 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))). -assume_constraint_stores([]). -assume_constraint_stores([A|B]) :- - ( \+may_trigger(A), - is_attached(A), - get_store_type(A,default) -> - get_indexed_arguments(A,C), - findall(D,(sublist(D,C),D\==[]),E), - assumed_store_type(A,multi_store([multi_hash(E),global_ground])) - ; - true - ), - assume_constraint_stores(B). -get_indexed_arguments(A,B) :- - A=_/C, - get_indexed_arguments(1,C,A,B). -get_indexed_arguments(A,B,C,D) :- - ( A>B -> - D=[] - ; - ( is_indexed_argument(C,A) -> - D=[A|E] - ; - D=E - ), - F is A+1, - get_indexed_arguments(F,B,C,E) - ). -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), - 'chr get_mutable'(E,D), - 'chr update_mutable'(removed,D), - ( compound(E) -> - B=[], - C=no - ; - ( E==removed -> - B=[], - C=no - ) - ; - C=yes, - chr_indexed_variables(A,B) - ). -activate_constraint(A,B,C,D) :- - arg(2,C,E), - 'chr get_mutable'(F,E), - 'chr update_mutable'(active,E), - ( nonvar(D) -> - true - ; - arg(4,C,G), - 'chr get_mutable'(H,G), - D is H+1, - 'chr update_mutable'(D,G) - ), - ( compound(F) -> - term_variables(F,B), - 'chr none_locked'(B), - A=yes - ; - ( F==removed -> - chr_indexed_variables(C,B), - A=yes - ) - ; - B=[], - A=no - ). -allocate_constraint(A,B,C,D) :- - B=..[suspension,E,F,A,G,H,C|D], - 'chr create_mutable'(0,G), - 'chr empty_history'(I), - 'chr create_mutable'(I,H), - chr_indexed_variables(B,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), - '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), - nb_getval('$chr_store_multi_hash_chr_translate:constraint/2-2',C), - insert_ht(C,B,A), - true. -'$delete_from_store_constraint/2'(A) :- - arg(8,A,B), - nb_getval('$chr_store_multi_hash_chr_translate:constraint/2-2',C), - delete_ht(C,B,A), - true. -'$insert_in_store_constraint_count/1'(A) :- - nb_getval('$chr_store_global_ground_chr_translate:constraint_count/1',B), - b_setval('$chr_store_global_ground_chr_translate:constraint_count/1',[A|B]). -'$delete_from_store_constraint_count/1'(A) :- - nb_getval('$chr_store_global_ground_chr_translate:constraint_count/1',B), - 'chr sbag_del_element'(B,A,C), - b_setval('$chr_store_global_ground_chr_translate:constraint_count/1',C). -'$insert_in_store_constraint_index/2'(A) :- - 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) :- - 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) :- - 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) :- - 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_target_module/1'(A) :- - nb_getval('$chr_store_global_ground_chr_translate:target_module/1',B), - b_setval('$chr_store_global_ground_chr_translate:target_module/1',[A|B]). -'$delete_from_store_target_module/1'(A) :- - nb_getval('$chr_store_global_ground_chr_translate:target_module/1',B), - 'chr sbag_del_element'(B,A,C), - b_setval('$chr_store_global_ground_chr_translate:target_module/1',C). -'$insert_in_store_attached/2'(A) :- - arg(7,A,B), - nb_getval('$chr_store_multi_hash_chr_translate:attached/2-1',C), - insert_ht(C,B,A), - true. -'$delete_from_store_attached/2'(A) :- - arg(7,A,B), - nb_getval('$chr_store_multi_hash_chr_translate:attached/2-1',C), - delete_ht(C,B,A), - true. -'$insert_in_store_indexed_argument/2'(A) :- - 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) :- - 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) :- - arg(7,A,B), - nb_getval('$chr_store_multi_hash_chr_translate:constraint_mode/2-1',C), - insert_ht(C,B,A), - true. -'$delete_from_store_constraint_mode/2'(A) :- - arg(7,A,B), - nb_getval('$chr_store_multi_hash_chr_translate:constraint_mode/2-1',C), - delete_ht(C,B,A), - true. -'$insert_in_store_store_type/2'(A) :- - 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) :- - 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) :- - 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) :- - 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) :- - 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) :- - 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) :- - 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) :- - 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) :- - arg(7,A,B), - nb_getval('$chr_store_multi_hash_chr_translate:passive/2-1',C), - insert_ht(C,B,A), - true. -'$delete_from_store_passive/2'(A) :- - arg(7,A,B), - nb_getval('$chr_store_multi_hash_chr_translate:passive/2-1',C), - delete_ht(C,B,A), - true. -'$insert_in_store_pragma_unique/3'(A) :- - arg(7,A,B), - nb_getval('$chr_store_multi_hash_chr_translate:pragma_unique/3-1',C), - insert_ht(C,B,A), - true. -'$delete_from_store_pragma_unique/3'(A) :- - arg(7,A,B), - nb_getval('$chr_store_multi_hash_chr_translate:pragma_unique/3-1',C), - delete_ht(C,B,A), - true. -'$insert_in_store_occurrence/4'(A) :- - arg(7,A,B), - nb_getval('$chr_store_multi_hash_chr_translate:occurrence/4-1',C), - insert_ht(C,B,A), - true. -'$delete_from_store_occurrence/4'(A) :- - arg(7,A,B), - nb_getval('$chr_store_multi_hash_chr_translate:occurrence/4-1',C), - delete_ht(C,B,A), - true. -'$insert_in_store_max_occurrence/2'(A) :- - 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) :- - 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) :- - 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) :- - 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) :- - 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) :- - 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) :- - ( - nb_getval('$chr_store_multi_hash_chr_translate:constraint/2-2',B), - value_ht(B,A) - ; - nb_getval('$chr_store_global_ground_chr_translate:constraint_count/1',C), - 'chr sbag_member'(A,C) - ; - nb_getval('$chr_store_multi_hash_chr_translate:constraint_index/2-1',D), - value_ht(D,A) - ; - nb_getval('$chr_store_global_ground_chr_translate:max_constraint_index/1',E), - 'chr sbag_member'(A,E) - ; - nb_getval('$chr_store_global_ground_chr_translate:target_module/1',F), - 'chr sbag_member'(A,F) - ; - nb_getval('$chr_store_multi_hash_chr_translate:attached/2-1',G), - value_ht(G,A) - ; - nb_getval('$chr_store_multi_hash_chr_translate:indexed_argument/2-1',H), - value_ht(H,A) - ; - nb_getval('$chr_store_multi_hash_chr_translate:constraint_mode/2-1',I), - value_ht(I,A) - ; - nb_getval('$chr_store_multi_hash_chr_translate:store_type/2-1',J), - value_ht(J,A) - ; - nb_getval('$chr_store_multi_hash_chr_translate:actual_store_types/2-1',K), - value_ht(K,A) - ; - nb_getval('$chr_store_multi_hash_chr_translate:assumed_store_type/2-1',L), - value_ht(L,A) - ; - nb_getval('$chr_store_global_ground_chr_translate:rule_count/1',M), - 'chr sbag_member'(A,M) - ; - nb_getval('$chr_store_multi_hash_chr_translate:passive/2-1',N), - value_ht(N,A) - ; - nb_getval('$chr_store_multi_hash_chr_translate:pragma_unique/3-1',O), - value_ht(O,A) - ; - nb_getval('$chr_store_multi_hash_chr_translate:occurrence/4-1',P), - value_ht(P,A) - ; - nb_getval('$chr_store_multi_hash_chr_translate:max_occurrence/2-1',Q), - value_ht(Q,A) - ; - nb_getval('$chr_store_multi_hash_chr_translate:allocation_occurrence/2-1',R), - value_ht(R,A) - ; - 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) :- - nb_getval('$chr_store_multi_hash_chr_translate:constraint/2-2',C), - lookup_ht(C,A,B). -:-nb_setval('$chr_store_global_ground_chr_translate:constraint_count/1',[]). -:-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',[]). -:-nb_setval('$chr_store_global_ground_chr_translate:target_module/1',[]). -:-new_ht(A),nb_setval('$chr_store_multi_hash_chr_translate:attached/2-1',A). -'$via1_multi_hash_attached/2-1'(A,B) :- - nb_getval('$chr_store_multi_hash_chr_translate:attached/2-1',C), - lookup_ht(C,A,B). -:-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). -:-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',[]). -:-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). -:-new_ht(A),nb_setval('$chr_store_multi_hash_chr_translate:pragma_unique/3-1',A). -'$via1_multi_hash_pragma_unique/3-1'(A,B) :- - nb_getval('$chr_store_multi_hash_chr_translate:pragma_unique/3-1',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',[]). -:-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). -constraint(A,B) :- - 'constraint/2__0'(A,B,_). -'constraint/2__0'(A,B,C) :- - insert_constraint_internal(_,_,C,chr_translate:'constraint/2__0'(A,B,C),constraint(A,B),[A,B]), - '$insert_in_store_constraint/2'(C). -get_constraint(A,B) :- - 'get_constraint/2__0'(A,B,_). -'get_constraint/2__0'(A,B,_) :- - '$via1_multi_hash_constraint/2-2'(B,D), - 'chr sbag_member'(C,D), - C=suspension(_,G,_,_,_,_,E,F), - G=mutable(active), - F==B, - !, - A=E. -'get_constraint/2__0'(_,_,_) :- - !, - fail. -constraint_count(A) :- - 'constraint_count/1__0'(A,_). -'constraint_count/1__0'(A,B) :- - insert_constraint_internal(_,_,B,chr_translate:'constraint_count/1__0'(A,B),constraint_count(A),[A]), - '$insert_in_store_constraint_count/1'(B). -get_constraint_count(A) :- - 'get_constraint_count/1__0'(A,_). -'get_constraint_count/1__0'(A,_) :- - nb_getval('$chr_store_global_ground_chr_translate:constraint_count/1',C), - 'chr sbag_member'(B,C), - B=suspension(_,E,_,_,_,_,D), - E=mutable(active), - !, - A=D. -'get_constraint_count/1__0'(A,_) :- - !, - A=0. -constraint_index(A,B) :- - 'constraint_index/2__0'(A,B,_). -'constraint_index/2__0'(A,B,C) :- - insert_constraint_internal(_,_,C,chr_translate:'constraint_index/2__0'(A,B,C),constraint_index(A,B),[A,B]), - '$insert_in_store_constraint_index/2'(C). -get_constraint_index(A,B) :- - 'get_constraint_index/2__0'(A,B,_). -'get_constraint_index/2__0'(A,B,_) :- - '$via1_multi_hash_constraint_index/2-1'(A,D), - 'chr sbag_member'(C,D), - C=suspension(_,G,_,_,_,_,E,F), - G=mutable(active), - E==A, - !, - B=F. -'get_constraint_index/2__0'(_,_,_) :- - !, - fail. -max_constraint_index(A) :- - 'max_constraint_index/1__0'(A,_). -'max_constraint_index/1__0'(A,B) :- - insert_constraint_internal(_,_,B,chr_translate:'max_constraint_index/1__0'(A,B),max_constraint_index(A),[A]), - '$insert_in_store_max_constraint_index/1'(B). -get_max_constraint_index(A) :- - 'get_max_constraint_index/1__0'(A,_). -'get_max_constraint_index/1__0'(A,_) :- - nb_getval('$chr_store_global_ground_chr_translate:max_constraint_index/1',C), - 'chr sbag_member'(B,C), - B=suspension(_,E,_,_,_,_,D), - E=mutable(active), - !, - A=D. -'get_max_constraint_index/1__0'(A,_) :- - !, - A=0. -target_module(A) :- - 'target_module/1__0'(A,_). -'target_module/1__0'(A,B) :- - insert_constraint_internal(_,_,B,chr_translate:'target_module/1__0'(A,B),target_module(A),[A]), - '$insert_in_store_target_module/1'(B). -get_target_module(A) :- - 'get_target_module/1__0'(A,_). -'get_target_module/1__0'(A,_) :- - nb_getval('$chr_store_global_ground_chr_translate:target_module/1',C), - 'chr sbag_member'(B,C), - B=suspension(_,E,_,_,_,_,D), - E=mutable(active), - !, - A=D. -'get_target_module/1__0'(A,_) :- - !, - A=user. -attached(A,B) :- - 'attached/2__0'(A,B,_). -'attached/2__0'(A,_,_) :- - '$via1_multi_hash_attached/2-1'(A,C), - 'chr sbag_member'(B,C), - B=suspension(_,F,_,_,_,_,D,E), - F=mutable(active), - D==A, - E==yes, - !. -'attached/2__0'(A,B,C) :- - B==yes, - '$via1_multi_hash_attached/2-1'(A,D), - !, - allocate_constraint(chr_translate:'attached/2__0'(A,B,C),C,attached(A,B),[A,B]), - 'attached/2__0__0'(D,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 -> - remove_constraint_internal(D,_,H), - ( H==yes -> - '$delete_from_store_attached/2'(D) - ; - true - ), - 'attached/2__0__0'(E,A,B,C) - ; - 'attached/2__0__0'(E,A,B,C) - ). -'attached/2__0'(A,B,C) :- - allocate_constraint(chr_translate:'attached/2__0'(A,B,C),C,attached(A,B),[A,B]), - 'attached/2__1'(A,B,C). -'attached/2__1'(A,_,B) :- - '$via1_multi_hash_attached/2-1'(A,D), - 'chr sbag_member'(C,D), - C=suspension(_,G,_,_,_,_,E,F), - G=mutable(active), - E==A, - F==no, - !, - ( var(B) -> - true - ; - remove_constraint_internal(B,_,H), - ( H==yes -> - '$delete_from_store_attached/2'(B) - ; - true - ) - ). -'attached/2__1'(A,B,C) :- - B==no, - '$via1_multi_hash_attached/2-1'(A,D), - !, - 'attached/2__1__0'(D,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 -> - remove_constraint_internal(D,_,H), - ( H==yes -> - '$delete_from_store_attached/2'(D) - ; - true - ), - 'attached/2__1__0'(E,A,B,C) - ; - 'attached/2__1__0'(E,A,B,C) - ). -'attached/2__1'(A,B,C) :- - 'attached/2__2'(A,B,C). -'attached/2__2'(A,B,C) :- - B==maybe, - '$via1_multi_hash_attached/2-1'(A,E), - ( - 'chr sbag_member'(D,E), - D=suspension(_,H,_,_,_,_,F,G), - H=mutable(active), - F==A, - G==maybe, - !, - ( var(C) -> - true - ; - remove_constraint_internal(C,_,I), - ( I==yes -> - '$delete_from_store_attached/2'(C) - ; - true - ) - ) - ; - !, - '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'(D) - ; - true - ), - 'attached/2__2__0'(E,A,B,C) - ; - 'attached/2__2__0'(E,A,B,C) - ). -'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) - ; - true - ). -is_attached(A) :- - 'is_attached/1__0'(A,_). -'is_attached/1__0'(A,_) :- - '$via1_multi_hash_attached/2-1'(A,C), - 'chr sbag_member'(B,C), - B=suspension(_,F,_,_,_,_,D,E), - F=mutable(active), - D==A, - !, - E\==no. -'is_attached/1__0'(_,_) :- - !. -indexed_argument(A,B) :- - 'indexed_argument/2__0'(A,B,_). -'indexed_argument/2__0'(A,B,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, - !. -'is_indexed_argument/2__0'(_,_,_) :- - !, - fail. -constraint_mode(A,B) :- - 'constraint_mode/2__0'(A,B,_). -'constraint_mode/2__0'(A,B,C) :- - insert_constraint_internal(_,_,C,chr_translate:'constraint_mode/2__0'(A,B,C),constraint_mode(A,B),[A,B]), - '$insert_in_store_constraint_mode/2'(C). -get_constraint_mode(A,B) :- - 'get_constraint_mode/2__0'(A,B,_). -'get_constraint_mode/2__0'(A,B,_) :- - '$via1_multi_hash_constraint_mode/2-1'(A,D), - 'chr sbag_member'(C,D), - C=suspension(_,G,_,_,_,_,E,F), - G=mutable(active), - E==A, - !, - B=F. -'get_constraint_mode/2__0'(A,B,_) :- - !, - A=_/C, - length(B,C), - set_elems(B,?). -may_trigger(A) :- - 'may_trigger/1__0'(A,_). -'may_trigger/1__0'(A,_) :- - !, - is_attached(A), - get_constraint_mode(A,B), - has_nonground_indexed_argument(A,1,B). -has_nonground_indexed_argument(A,B,C) :- - 'has_nonground_indexed_argument/3__0'(A,B,C,_). -'has_nonground_indexed_argument/3__0'(A,B,C,_) :- - nonvar(C), - C=[D|E], - !, - ( is_indexed_argument(A,B), - D\== + -> - true - ; - F is B+1, - has_nonground_indexed_argument(A,F,E) - ). -'has_nonground_indexed_argument/3__0'(_,_,_,_) :- - !, - fail. -store_type(A,B) :- - 'store_type/2__0'(A,B,_). -'store_type/2__0'(A,B,_) :- - nonvar(B), - B=atom_hash(C), - !, - store_type(A,multi_hash([C])). -'store_type/2__0'(A,B,C) :- - insert_constraint_internal(_,_,C,chr_translate:'store_type/2__0'(A,B,C),store_type(A,B),[A,B]), - '$insert_in_store_store_type/2'(C). -get_store_type(A,B) :- - 'get_store_type/2__0'(A,B,_). -'get_store_type/2__0'(A,B,_) :- - '$via1_multi_hash_store_type/2-1'(A,D), - 'chr sbag_member'(C,D), - C=suspension(_,G,_,_,_,_,E,F), - G=mutable(active), - E==A, - !, - B=F. -'get_store_type/2__0'(A,B,_) :- - '$via1_multi_hash_assumed_store_type/2-1'(A,D), - 'chr sbag_member'(C,D), - C=suspension(_,G,_,_,_,_,E,F), - G=mutable(active), - E==A, - !, - B=F. -'get_store_type/2__0'(_,A,_) :- - !, - A=default. -update_store_type(A,B) :- - 'update_store_type/2__0'(A,B,_). -'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, - ( - 'chr lock'(B), - 'chr lock'(F), - member(B,F), - 'chr unlock'(B), - 'chr unlock'(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]). -actual_store_types(A,B) :- - 'actual_store_types/2__0'(A,B,_). -'actual_store_types/2__0'(A,B,C) :- - insert_constraint_internal(_,_,C,chr_translate:'actual_store_types/2__0'(A,B,C),actual_store_types(A,B),[A,B]), - '$insert_in_store_actual_store_types/2'(C). -assumed_store_type(A,B) :- - 'assumed_store_type/2__0'(A,B,_). -'assumed_store_type/2__0'(A,B,C) :- - insert_constraint_internal(_,_,C,chr_translate:'assumed_store_type/2__0'(A,B,C),assumed_store_type(A,B),[A,B]), - '$insert_in_store_assumed_store_type/2'(C). -validate_store_type_assumption(A) :- - 'validate_store_type_assumption/1__0'(A,_). -'validate_store_type_assumption/1__0'(A,_) :- - '$via1_multi_hash_assumed_store_type/2-1'(A,H), - '$via1_multi_hash_actual_store_types/2-1'(A,C), - 'chr sbag_member'(B,C), - B=suspension(_,F,_,_,_,_,D,E), - F=mutable(active), - D==A, - 'chr sbag_member'(G,H), - G=suspension(_,J,_,_,_,_,I,_), - J=mutable(active), - I==A, - !, - remove_constraint_internal(B,_,K), - ( K==yes -> - '$delete_from_store_actual_store_types/2'(B) - ; - true - ), - remove_constraint_internal(G,_,L), - ( L==yes -> - '$delete_from_store_assumed_store_type/2'(G) - ; - true - ), - store_type(A,multi_store(E)). -'validate_store_type_assumption/1__0'(A,_) :- - '$via1_multi_hash_store_type/2-1'(A,H), - '$via1_multi_hash_actual_store_types/2-1'(A,C), - 'chr sbag_member'(B,C), - B=suspension(_,F,_,_,_,_,D,E), - F=mutable(active), - D==A, - 'chr sbag_member'(G,H), - G=suspension(_,J,_,_,_,_,I,_), - J=mutable(active), - I==A, - !, - remove_constraint_internal(B,_,K), - ( K==yes -> - '$delete_from_store_actual_store_types/2'(B) - ; - true - ), - remove_constraint_internal(G,_,L), - ( L==yes -> - '$delete_from_store_store_type/2'(G) - ; - true - ), - store_type(A,multi_store(E)). -'validate_store_type_assumption/1__0'(_,_) :- - !. -rule_count(A) :- - 'rule_count/1__0'(A,_). -'rule_count/1__0'(A,B) :- - insert_constraint_internal(_,_,B,chr_translate:'rule_count/1__0'(A,B),rule_count(A),[A]), - '$insert_in_store_rule_count/1'(B). -inc_rule_count(A) :- - 'inc_rule_count/1__0'(A,_). -'inc_rule_count/1__0'(A,_) :- - nb_getval('$chr_store_global_ground_chr_translate:rule_count/1',C), - 'chr sbag_member'(B,C), - B=suspension(_,E,_,_,_,_,D), - E=mutable(active), - !, - remove_constraint_internal(B,_,F), - ( F==yes -> - '$delete_from_store_rule_count/1'(B) - ; - true - ), - A is D+1, - rule_count(A). -'inc_rule_count/1__0'(A,_) :- - !, - A=1, - rule_count(A). -get_rule_count(A) :- - 'get_rule_count/1__0'(A,_). -'get_rule_count/1__0'(A,_) :- - nb_getval('$chr_store_global_ground_chr_translate:rule_count/1',C), - 'chr sbag_member'(B,C), - B=suspension(_,E,_,_,_,_,D), - E=mutable(active), - !, - A=D. -'get_rule_count/1__0'(A,_) :- - !, - A=0. -passive(A,B) :- - 'passive/2__0'(A,B,_). -'passive/2__0'(A,B,C) :- - nb_getval('$chr_store_global_ground_chr_translate:allocation_occurrence/2',D), - !, - allocate_constraint(chr_translate:'passive/2__0'(A,B,C),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'([D|E],A,B,C) :- - ( D=suspension(_,H,_,_,_,_,F,G), - H=mutable(active), - '$via1_multi_hash_occurrence/4-1'(F,J), - 'chr sbag_member'(I,J), - I=suspension(_,O,_,_,_,_,K,L,M,N), - O=mutable(active), - K==F, - L==G, - M==A, - N==B -> - remove_constraint_internal(D,_,P), - ( P==yes -> - '$delete_from_store_allocation_occurrence/2'(D) - ; - true - ), - activate_constraint(R,_,C,S), - ( R==yes -> - '$insert_in_store_passive/2'(C) - ; - true - ), - Q is G+1, - allocation_occurrence(F,Q), - ( C=suspension(_,T,_,U,_,_,_,_), - T=mutable(active), - U=mutable(S) -> - 'chr update_mutable'(inactive,T), - 'passive/2__0__0'(E,A,B,C) - ; - true - ) - ; - 'passive/2__0__0'(E,A,B,C) - ). -'passive/2__0'(A,B,C) :- - allocate_constraint(chr_translate:'passive/2__0'(A,B,C),C,passive(A,B),[A,B]), - 'passive/2__1'(A,B,C). -'passive/2__1'(_,_,A) :- - activate_constraint(B,_,A,_), - ( B==yes -> - '$insert_in_store_passive/2'(A) - ; - true - ). -is_passive(A,B) :- - 'is_passive/2__0'(A,B,_). -'is_passive/2__0'(A,B,_) :- - '$via1_multi_hash_passive/2-1'(A,D), - 'chr sbag_member'(C,D), - C=suspension(_,G,_,_,_,_,E,F), - G=mutable(active), - E==A, - F==B, - !. -'is_passive/2__0'(_,_,_) :- - !, - fail. -any_passive_head(A) :- - 'any_passive_head/1__0'(A,_). -'any_passive_head/1__0'(A,_) :- - '$via1_multi_hash_passive/2-1'(A,C), - 'chr sbag_member'(B,C), - B=suspension(_,E,_,_,_,_,D,_), - E=mutable(active), - D==A, - !. -'any_passive_head/1__0'(_,_) :- - !, - fail. -pragma_unique(A,B,C) :- - 'pragma_unique/3__0'(A,B,C,_). -'pragma_unique/3__0'(A,B,C,D) :- - insert_constraint_internal(_,_,D,chr_translate:'pragma_unique/3__0'(A,B,C,D),pragma_unique(A,B,C),[A,B,C]), - '$insert_in_store_pragma_unique/3'(D). -get_pragma_unique(A,B,C) :- - 'get_pragma_unique/3__0'(A,B,C,_). -'get_pragma_unique/3__0'(A,B,C,_) :- - '$via1_multi_hash_pragma_unique/3-1'(A,E), - 'chr sbag_member'(D,E), - D=suspension(_,I,_,_,_,_,F,G,H), - I=mutable(active), - F==A, - G==B, - !, - C=H. -'get_pragma_unique/3__0'(_,_,_,_) :- - !. -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) - ; - 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__1'(A,B,C,D,E) - ). -'occurrence/4__1'(A,B,C,D,E) :- - '$via1_multi_hash_allocation_occurrence/2-1'(A,F), - !, - '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'([F|G],A,B,C,D,E) :- - ( F=suspension(_,J,_,_,_,_,H,I), - J=mutable(active), - H==A, - I==B, - '$via1_multi_hash_rule/2-1'(C,L), - 'chr sbag_member'(K,L), - K=suspension(_,O,_,_,_,_,M,N), - O=mutable(active), - M==C, - 'chr lock'(N), - 'chr lock'(D), - N=pragma(_,ids(_,_),_,_,_), - member(D,_), - 'chr unlock'(N), - 'chr unlock'(D) -> - remove_constraint_internal(F,_,P), - ( P==yes -> - '$delete_from_store_allocation_occurrence/2'(F) - ; - 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(_,T,_,U,_,_,_,_,_,_), - T=mutable(active), - U=mutable(S) -> - 'chr update_mutable'(inactive,T), - 'occurrence/4__1__0'(G,A,B,C,D,E) - ; - true - ) - ; - 'occurrence/4__1__0'(G,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'([F|G],A,B,C,D,E) :- - ( F=suspension(_,J,_,_,_,_,H,I), - J=mutable(active), - H==A, - I==B, - '$via1_multi_hash_rule/2-1'(C,L), - 'chr sbag_member'(K,L), - K=suspension(_,O,_,_,_,_,M,N), - O=mutable(active), - M==C, - 'chr lock'(N), - N=pragma(rule(_,_,_,true),_,_,_,_), - 'chr unlock'(N) -> - remove_constraint_internal(F,_,P), - ( P==yes -> - '$delete_from_store_allocation_occurrence/2'(F) - ; - 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(_,T,_,U,_,_,_,_,_,_), - T=mutable(active), - U=mutable(S) -> - 'chr update_mutable'(inactive,T), - 'occurrence/4__2__0'(G,A,B,C,D,E) - ; - true - ) - ; - 'occurrence/4__2__0'(G,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'([F|G],A,B,C,D,E) :- - ( F=suspension(_,J,_,_,_,_,H,I), - J=mutable(active), - H==A, - I==B, - '$via1_multi_hash_passive/2-1'(C,L), - 'chr sbag_member'(K,L), - K=suspension(_,O,_,_,_,_,M,N), - O=mutable(active), - M==C, - N==D -> - remove_constraint_internal(F,_,P), - ( P==yes -> - '$delete_from_store_allocation_occurrence/2'(F) - ; - 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(_,T,_,U,_,_,_,_,_,_), - T=mutable(active), - U=mutable(S) -> - 'chr update_mutable'(inactive,T), - 'occurrence/4__3__0'(G,A,B,C,D,E) - ; - true - ) - ; - 'occurrence/4__3__0'(G,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) :- - activate_constraint(B,_,A,_), - ( B==yes -> - '$insert_in_store_occurrence/4'(A) - ; - true - ). -get_occurrence(A,B,C,D) :- - 'get_occurrence/4__0'(A,B,C,D,_). -'get_occurrence/4__0'(A,B,C,D,_) :- - '$via1_multi_hash_occurrence/4-1'(A,F), - 'chr sbag_member'(E,F), - E=suspension(_,K,_,_,_,_,G,H,I,J), - K=mutable(active), - G==A, - H==B, - !, - I=C, - J=D. -'get_occurrence/4__0'(_,_,_,_,_) :- - !, - fail. -max_occurrence(A,B) :- - 'max_occurrence/2__0'(A,B,_). -'max_occurrence/2__0'(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'(E,A,B,C) - ; - 'max_occurrence/2__0__0'(E,A,B,C) - ). -'max_occurrence/2__0'(A,B,C) :- - allocate_constraint(chr_translate:'max_occurrence/2__0'(A,B,C),C,max_occurrence(A,B),[A,B]), - 'max_occurrence/2__1'(A,B,C). -'max_occurrence/2__1'(_,_,A) :- - activate_constraint(B,_,A,_), - ( B==yes -> - '$insert_in_store_max_occurrence/2'(A) - ; - true - ). -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, - !, - B=F. -'get_max_occurrence/2__0'(_,A,_) :- - !, - 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,D), - 'chr sbag_member'(C,D), - C=suspension(_,I,_,_,_,_,E,F,G,H), - I=mutable(active), - E==A, - F==B, - ( - '$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). -get_allocation_occurrence(A,B) :- - 'get_allocation_occurrence/2__0'(A,B,_). -'get_allocation_occurrence/2__0'(A,B,_) :- - '$via1_multi_hash_allocation_occurrence/2-1'(A,D), - 'chr sbag_member'(C,D), - C=suspension(_,G,_,_,_,_,E,F), - G=mutable(active), - E==A, - !, - B=F. -'get_allocation_occurrence/2__0'(_,_,_) :- - !, - fail. -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), - !, - allocate_constraint(chr_translate:'rule/2__0'(A,B,C),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'([D|E],A,B,C) :- - ( D=suspension(_,H,_,_,_,_,F,G), - H=mutable(active), - '$via1_multi_hash_occurrence/4-1'(F,J), - 'chr sbag_member'(I,J), - I=suspension(_,O,_,_,_,_,K,L,M,N), - O=mutable(active), - K==F, - L==G, - M==A, - 'chr lock'(B), - 'chr lock'(N), - B=pragma(_,ids(_,_),_,_,_), - member(N,_), - 'chr unlock'(B), - 'chr unlock'(N) -> - remove_constraint_internal(D,_,P), - ( P==yes -> - '$delete_from_store_allocation_occurrence/2'(D) - ; - true - ), - activate_constraint(R,_,C,S), - ( R==yes -> - '$insert_in_store_rule/2'(C) - ; - true - ), - Q is G+1, - allocation_occurrence(F,Q), - ( C=suspension(_,T,_,U,_,_,_,_), - T=mutable(active), - U=mutable(S) -> - 'chr update_mutable'(inactive,T), - 'rule/2__0__0'(E,A,B,C) - ; - true - ) - ; - 'rule/2__0__0'(E,A,B,C) - ). -'rule/2__0'(A,B,C) :- - allocate_constraint(chr_translate:'rule/2__0'(A,B,C),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__1__0'(D,A,B,C). -'rule/2__1__0'([],A,B,C) :- - 'rule/2__2'(A,B,C). -'rule/2__1__0'([D|E],A,B,C) :- - ( D=suspension(_,H,_,_,_,_,F,G), - H=mutable(active), - '$via1_multi_hash_occurrence/4-1'(F,J), - 'chr sbag_member'(I,J), - I=suspension(_,N,_,_,_,_,K,L,M,_), - N=mutable(active), - K==F, - L==G, - M==A, - 'chr lock'(B), - B=pragma(rule(_,_,_,true),_,_,_,_), - 'chr unlock'(B) -> - remove_constraint_internal(D,_,O), - ( O==yes -> - '$delete_from_store_allocation_occurrence/2'(D) - ; - true - ), - activate_constraint(Q,_,C,R), - ( Q==yes -> - '$insert_in_store_rule/2'(C) - ; - true - ), - P is G+1, - allocation_occurrence(F,P), - ( C=suspension(_,S,_,T,_,_,_,_), - S=mutable(active), - T=mutable(R) -> - 'chr update_mutable'(inactive,S), - 'rule/2__1__0'(E,A,B,C) - ; - true - ) - ; - 'rule/2__1__0'(E,A,B,C) - ). -'rule/2__1'(A,B,C) :- - 'rule/2__2'(A,B,C). -'rule/2__2'(_,_,A) :- - activate_constraint(B,_,A,_), - ( B==yes -> - '$insert_in_store_rule/2'(A) - ; - true - ). -get_rule(A,B) :- - 'get_rule/2__0'(A,B,_). -'get_rule/2__0'(A,B,_) :- - '$via1_multi_hash_rule/2-1'(A,D), - 'chr sbag_member'(C,D), - C=suspension(_,G,_,_,_,_,E,F), - G=mutable(active), - E==A, - !, - B=F. -'get_rule/2__0'(_,_,_) :- - !, - fail. diff --git a/guard_entailment.pl b/guard_entailment.pl deleted file mode 100644 index 6c3a81a..0000000 --- a/guard_entailment.pl +++ /dev/null @@ -1,18061 +0,0 @@ -/* Generated by CHR bootstrap compiler - From: guard_entailment.chr - 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(-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), - sort(C,F), - entails_guard2(F), - !, - test(D), - !, - cleanup. -entails_guard2([]). -entails_guard2([A|B]) :- - known(A), - entails_guard2(B). -simplify_guards(A,B,C,D,E) :- - copy_term_nat((A,C),(F,G)), - term_variables(F,H), - variables(H), - sort(F,I), - entails_guard2(I), - !, - simplify(G,J), - simplified(C,J,D,B,E), - !, - cleanup. -simplified([],[],[],A,A). -simplified([A|B],[keep|C],[A|D],E,F) :- - simplified(B,C,D,E,F). -simplified([_|_],[fail|_],fail,A,A). -simplified([A|B],[true|C],[D|E],F,G) :- - builtins:binds_b(A,H), - term_variables(B,I), - intersect_eq(H,I,J), - !, - ( J=[] -> - term_variables(F,K), - intersect_eq(H,K,L), - !, - ( L=[] -> - D=true, - G=M - ; - D=true, - G=(A,M) - ) - ; - D=A, - G=M - ), - simplified(B,C,E,F,M). -simplify([],[]). -simplify([A|B],[C|D]) :- - ( \+try(true,A) -> - C=true - ; - builtins:negate_b(A,E), - ( \+try(true,E) -> - C=fail - ; - C=keep - ) - ), - known(A), - simplify(B,D). -try(A,B) :- - ( known(A) -> - true - ; - chr_error(internal,'Entailment Checker: try/2. -',[]) - ), - ( test(B) -> - fail - ; - true - ). -add_args_unif([],[],true). -add_args_unif([A|B],[C|D],(A=C,E)) :- - add_args_unif(B,D,E). -add_args_nunif([],[],fail). -add_args_nunif([A|B],[C|D],(A\=C;E)) :- - add_args_nunif(B,D,E). -add_args_nmatch([],[],fail). -add_args_nmatch([A|B],[C|D],(A\==C;E)) :- - add_args_nmatch(B,D,E). -all_unique_vars(A,B) :- - all_unique_vars(A,B,[]). -all_unique_vars([],_,_). -all_unique_vars([A|B],C,D) :- - var(A), - \+memberchk_eq(A,C), - \+memberchk_eq(A,D), - all_unique_vars(B,[A|D]). -:-use_module(chr(chr_runtime)). -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) - ; - 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],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[])) - ), - 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(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(Y,A1,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X)) - ) - ; - true - ) - ; - true - ), - 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) - ; - 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],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[])) - ), - '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(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(Y,D,A1,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X)) - ) - ; - true - ) - ; - true - ), - '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([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(B,guard_entailment,A) - ), - 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(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 - ), - '$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_= - fail - ; - 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 - ), - '$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 - ), - '$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_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(_,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 - ; - 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_$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_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 - ; - 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 - ) - ; - P=[_,_|R], - setarg(2,P,R), - ( R=[S|_] -> - setarg(4,S,P) - ; - true - ) - ), - 'detach_known/1_1_$special_\\+/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_$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/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) -> - B=suspension(F,not_stored_yet,0,_,A), - 'chr gen_id'(F) - ; - true - ), - '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=(\+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 -> - 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 - ), - known(D), - ( B=suspension(_,active,K,_,_) -> - setarg(2,B,inactive), - 'known/1_1_$default___1__1__0__7'(H,A,B) - ; - true - ) - ; - 'known/1_1_$default___1__1__0__7'(H,A,B) - ). -'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(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) :- - ( '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) :- - 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, - !, - ( 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), - 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__34'(K,A,B,C) - ; - true - ) - ; - 'known/1_1_$special_;/2___2__1__0__34'(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,B,C) :- - nonvar(A), - A=(D,_), - nonvar(D), - 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 - ; - 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 - ) - ; - 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, - !, - 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=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(D), - ( B=suspension(_,active,L,_,_) -> - setarg(2,B,inactive), - 'known/1_1_$special_nonvar/1___1__1__0__8'(I,A,B) - ; - true - ) - ; - '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 - ), - '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 - ; - 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 - ) - ), - '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_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) - ) - ), - '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 3f3fc92..42ac065 100644 --- a/sources +++ b/sources @@ -1,5 +1 @@ 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-6.2.0-fix-chr-install-from-Keri.patch b/yap-6.2.0-fix-chr-install-from-Keri.patch new file mode 100644 index 0000000..bbdee5f --- /dev/null +++ b/yap-6.2.0-fix-chr-install-from-Keri.patch @@ -0,0 +1,106 @@ +From 23d07e2d78cf285e32b6f42c635edf506ff70c78 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?V=C3=ADtor=20Santos=20Costa?= +Date: Tue, 9 Nov 2010 16:39:34 +0000 +Subject: [PATCH] fix chr install (from Keri) + +--- + configure.in | 20 ++++++++++---------- + 1 files changed, 10 insertions(+), 10 deletions(-) + +diff --git a/configure.in b/configure.in +index 920d01a..3bc0c1d 100755 +--- a/configure.in ++++ b/configure.in +@@ -924,7 +924,7 @@ case "$target_os" in + then + YAPLIB_LD="\$(CC) -shared" + EXTRA_LIBS_FOR_DLLS="$EXTRA_LIBS_FOR_DLLS -L\$(abs_top_builddir) -lYap -Wl,-R,\$(YAPLIBDIR) -Wl,-R,\$(LIBDIR)" +- INSTALL_ENV="LD_LIBRARY_PATH=\$(DESTDIR)\$(LIBDIR): YAPSHAREDIR=\$(DESTDIR)\$(SHAREDIR) YAPLIBDIR=\$(DESTDIR)\$(YAPLIBDIR)" ++ INSTALL_ENV="LD_LIBRARY_PATH=\$(DESTDIR)\$(LIBDIR):\$(DESTDIR)\$(YAPLIBDIR): YAPSHAREDIR=\$(DESTDIR)\$(SHAREDIR) YAPLIBDIR=\$(DESTDIR)\$(YAPLIBDIR)" + PRE_INSTALL_ENV="LD_LIBRARY_PATH=\$(abs_top_builddir)" + else + YAPLIB_LD="\$(CC)" +@@ -946,7 +946,7 @@ case "$target_os" in + DYNYAPLIB=libYap."$SO" + EXTRA_LIBS_FOR_DLLS="$EXTRA_LIBS_FOR_DLLS -L\$(abs_top_builddir) -lYap -Wl,-R,\$(YAPLIBDIR) -Wl,-R,\$(LIBDIR)" + PRE_INSTALL_ENV="LD_LIBRARY_PATH=\$(abs_top_builddir)" +- INSTALL_ENV="LD_LIBRARY_PATH=\$(DESTDIR)\$(LIBDIR): YAPSHAREDIR=\$(DESTDIR)\$(SHAREDIR) YAPLIBDIR=\$(DESTDIR)\$(YAPLIBDIR)" ++ INSTALL_ENV="LD_LIBRARY_PATH=\$(DESTDIR)\$(LIBDIR):\$(DESTDIR)\$(YAPLIBDIR): YAPSHAREDIR=\$(DESTDIR)\$(SHAREDIR) YAPLIBDIR=\$(DESTDIR)\$(YAPLIBDIR)" + ;; + *hpux*) + #do not use the first memory quadrant +@@ -985,7 +985,7 @@ case "$target_os" in + DYNYAPLIB=libYap."$SO" + EXTRA_LIBS_FOR_DLLS="$EXTRA_LIBS_FOR_DLLS -L\$(abs_top_builddir) -lYap -Wl,-R,\$(YAPLIBDIR) -Wl,-R,\$(LIBDIR)" + PRE_INSTALL_ENV="LD_LIBRARY_PATH=\$(abs_top_builddir)" +- INSTALL_ENV="LD_LIBRARY_PATH=\$(DESTDIR)\$(LIBDIR): YAPSHAREDIR=\$(DESTDIR)\$(SHAREDIR) YAPLIBDIR=\$(DESTDIR)\$(YAPLIBDIR)" ++ INSTALL_ENV="LD_LIBRARY_PATH=\$(DESTDIR)\$(LIBDIR):\$(DESTDIR)\$(YAPLIBDIR): YAPSHAREDIR=\$(DESTDIR)\$(SHAREDIR) YAPLIBDIR=\$(DESTDIR)\$(YAPLIBDIR)" + ;; + *aix*) + # To actually use dlls in AIX I'd need to build YAP as a DLL first. +@@ -998,7 +998,7 @@ case "$target_os" in + DYNYAPLIB=libYap."$SO" + EXTRA_LIBS_FOR_DLLS="$EXTRA_LIBS_FOR_DLLS -L\$(abs_top_builddir) -lYap -Wl,-R,\$(YAPLIBDIR) -Wl,\$(LIBDIR)" + PRE_INSTALL_ENV="LD_LIBRARY_PATH=\$(abs_top_builddir)" +- INSTALL_ENV="LD_LIBRARY_PATH=\$(DESTDIR)\$(LIBDIR): YAPSHAREDIR=\$(DESTDIR)\$(SHAREDIR) YAPLIBDIR=\$(DESTDIR)\$(YAPLIBDIR)" ++ INSTALL_ENV="LD_LIBRARY_PATH=\$(DESTDIR)\$(LIBDIR):\$(DESTDIR)\$(YAPLIBDIR): YAPSHAREDIR=\$(DESTDIR)\$(SHAREDIR) YAPLIBDIR=\$(DESTDIR)\$(YAPLIBDIR)" + ;; + *osf*) + if ${use_condor} = no +@@ -1016,7 +1016,7 @@ dnl Linux has both elf and a.out, in this case we found elf + DYNYAPLIB=libYap."$SO" + EXTRA_LIBS_FOR_DLLS="$EXTRA_LIBS_FOR_DLLS -L\$(abs_top_builddir) -lYap -Wl,-R,\$(YAPLIBDIR) -Wl,-R,\$(LIBDIR)" + PRE_INSTALL_ENV="LD_LIBRARY_PATH=\$(abs_top_builddir)" +- INSTALL_ENV="LD_LIBRARY_PATH=\$(DESTDIR)\$(LIBDIR): YAPSHAREDIR=\$(DESTDIR)\$(SHAREDIR) YAPLIBDIR=\$(DESTDIR)\$(YAPLIBDIR)" ++ INSTALL_ENV="LD_LIBRARY_PATH=\$(DESTDIR)\$(LIBDIR):\$(DESTDIR)\$(YAPLIBDIR): YAPSHAREDIR=\$(DESTDIR)\$(SHAREDIR) YAPLIBDIR=\$(DESTDIR)\$(YAPLIBDIR)" + ;; + *irix6*) + SHLIB_CFLAGS="$CFLAGS" +@@ -1030,7 +1030,7 @@ dnl Linux has both elf and a.out, in this case we found elf + DYNYAPLIB=libYap."$SO" + EXTRA_LIBS_FOR_DLLS="$EXTRA_LIBS_FOR_DLLS -L\$(abs_top_builddir) -lYap -Wl,-R,\$(YAPLIBDIR) -Wl,-R,\$(LIBDIR)" + PRE_INSTALL_ENV="LD_LIBRARY_PATH=\$(abs_top_builddir)" +- INSTALL_ENV="LD_LIBRARY_PATH=\$(DESTDIR)\$(LIBDIR): YAPSHAREDIR=\$(DESTDIR)\$(SHAREDIR) YAPLIBDIR=\$(DESTDIR)\$(YAPLIBDIR)" ++ INSTALL_ENV="LD_LIBRARY_PATH=\$(DESTDIR)\$(LIBDIR):\$(DESTDIR)\$(YAPLIBDIR): YAPSHAREDIR=\$(DESTDIR)\$(SHAREDIR) YAPLIBDIR=\$(DESTDIR)\$(YAPLIBDIR)" + ;; + *darwin*) + if test ${use_dlcompat} = yes +@@ -1051,7 +1051,7 @@ dnl Linux has both elf and a.out, in this case we found elf + SHLIB_LD="$CC -dynamiclib" + SHLIB_CXX_LD="$CXX -dynamiclib" + EXTRA_LIBS_FOR_DLLS="$EXTRA_LIBS_FOR_DLLS -L\$(abs_top_builddir) -lYap -Wl,-install_name,\$(YAPLIBDIR)/\$@" +- INSTALL_ENV="DYLD_LIBRARY_PATH=\$(DESTDIR)\$(LIBDIR): YAPSHAREDIR=\$(DESTDIR)\$(SHAREDIR) YAPLIBDIR=\$(DESTDIR)\$(YAPLIBDIR)" ++ INSTALL_ENV="DYLD_LIBRARY_PATH=\$(DESTDIR)\$(LIBDIR):\$(DESTDIR)\$(YAPLIBDIR): YAPSHAREDIR=\$(DESTDIR)\$(SHAREDIR) YAPLIBDIR=\$(DESTDIR)\$(YAPLIBDIR)" + else + SHLIB_LD="$CC -dynamiclib -Wl,-undefined,dynamic_lookup" + SHLIB_CXX_LD="$CXX -dynamiclib -Wl,-undefined,dynamic_lookup" +@@ -1091,7 +1091,7 @@ dnl Linux has both elf and a.out, in this case we found elf + DYNYAPLIB=libYap."$SO" + EXTRA_LIBS_FOR_DLLS="$EXTRA_LIBS_FOR_DLLS -L\$(abs_top_builddir) -Wl,-R,\$(YAPLIBDIR)" + PRE_INSTALL_ENV="LD_LIBRARY_PATH=\$(abs_top_builddir)" +- INSTALL_ENV="LD_LIBRARY_PATH=\$(DESTDIR)\$(LIBDIR): YAPSHAREDIR=\$(DESTDIR)\$(SHAREDIR) YAPLIBDIR=\$(DESTDIR)\$(YAPLIBDIR)" ++ INSTALL_ENV="LD_LIBRARY_PATH=\$(DESTDIR)\$(LIBDIR):\$(DESTDIR)\$(YAPLIBDIR): YAPSHAREDIR=\$(DESTDIR)\$(SHAREDIR) YAPLIBDIR=\$(DESTDIR)\$(YAPLIBDIR)" + ;; + *solaris*) + #an elf system +@@ -1110,7 +1110,7 @@ dnl Linux has both elf and a.out, in this case we found elf + YAPLIB_LD="\$(CC)" + EXTRA_LIBS_FOR_DLLS="$EXTRA_LIBS_FOR_DLLS -L\$(abs_top_builddir) -lYap -Wl,-R,\$(YAPLIBDIR) -Wl,-R,\$(LIBDIR)" + PRE_INSTALL_ENV="LD_LIBRARY_PATH=\$(abs_top_builddir)" +- INSTALL_ENV="LD_LIBRARY_PATH=\$(DESTDIR)\$(LIBDIR): YAPSHAREDIR=\$(DESTDIR)\$(SHAREDIR) YAPLIBDIR=\$(DESTDIR)\$(YAPLIBDIR)" ++ INSTALL_ENV="LD_LIBRARY_PATH=\$(DESTDIR)\$(LIBDIR):\$(DESTDIR)\$(YAPLIBDIR): YAPSHAREDIR=\$(DESTDIR)\$(SHAREDIR) YAPLIBDIR=\$(DESTDIR)\$(YAPLIBDIR)" + else + EXTRA_LIBS_FOR_DLLS="$EXTRA_LIBS_FOR_DLLS -Wl,-R,\$(YAPLIBDIR) -Wl,-R,\$(LIBDIR)" + PRE_INSTALL_ENV="" +@@ -1165,7 +1165,7 @@ dnl Linux has both elf and a.out, in this case we found elf + DYNYAPLIB=libYap."$SO" + EXTRA_LIBS_FOR_DLLS="$EXTRA_LIBS_FOR_DLLS -L\$(abs_top_builddir) -lYap -Wl,-R,\$(YAPLIBDIR) -Wl,-R,\$(LIBDIR)" + PRE_INSTALL_ENV="LD_LIBRARY_PATH=\$(abs_top_builddir)" +- INSTALL_ENV="LD_LIBRARY_PATH=\$(DESTDIR)\$(LIBDIR): YAPSHAREDIR=\$(DESTDIR)\$(SHAREDIR) YAPLIBDIR=\$(DESTDIR)\$(YAPLIBDIR)" ++ INSTALL_ENV="LD_LIBRARY_PATH=\$(DESTDIR)\$(LIBDIR):\$(DESTDIR)\$(YAPLIBDIR): YAPSHAREDIR=\$(DESTDIR)\$(SHAREDIR) YAPLIBDIR=\$(DESTDIR)\$(YAPLIBDIR)" + ;; + esac + +-- +1.7.3.4 + diff --git a/yap.spec b/yap.spec index b0ae1de..de09838 100644 --- a/yap.spec +++ b/yap.spec @@ -6,10 +6,6 @@ Group: Development/Languages License: Artistic 2.0 or LGPLv2+ URL: http://www.ncc.up.pt/~vsc/Yap Source: http://www.ncc.up.pt/~vsc/Yap/%{name}-%{version}.tar.gz -Source1: guard_entailment.pl -Source2: chr_translate_bootstrap1.pl -Source3: chr_translate_bootstrap2.pl -Source4: chr_translate.pl Patch1: Yap-noni386.patch Patch2: yap-6.2.0-Locate-mysql-by-mysql_config.patch Patch3: yap-6.2.0-Install-directory-for-info-pages.patch @@ -17,6 +13,8 @@ Patch4: yap-6.2.0-Install-http-CSS-files-into-PLTARGET.patch Patch5: yap-6.2.0-Do-not-install-README-etc.patch Patch6: yap-6.2.0-Install-info-pages-non-executable.patch Patch7: yap-6.2.0-Do-not-install-info-dir-index.patch +# In upstream already +Patch8: yap-6.2.0-fix-chr-install-from-Keri.patch BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) BuildRequires: autoconf BuildRequires: gmp-devel @@ -70,6 +68,7 @@ Documentation for Yap. %patch5 -p1 -b .do_not_install_readme %patch6 -p1 -b .non_executable_info %patch7 -p1 -b .do_not_install_info_index +%patch8 -p1 -b .fix_chr_install # remove redundant RPATH sed -i 's/-Wl,-R\(,\)\{0,1\}\\$(LIBDIR)//' configure.in @@ -80,8 +79,8 @@ sed -i 's/-Wl,-R/-Wl,--enable-new-dtags,-R/g' configure.in # Regerenate configure because of patching autoconf -# chr and clpqr are optional and they are a copy from SWI Prolog -# TODO: Bundle chr and clpqr libraries: cp %%{SOURCE1} LGPL/chr +# chr and clpqr are optional and they are a copy from SWI Prolog (LGPLv2+) +# TODO: Unbundle chr and clpqr libraries as subpackages # Add soname to library and symlink from unversioned to versioned one sed -i \ @@ -89,22 +88,6 @@ sed -i \ -e '/@INSTALL_DLLS@.* @YAPLIB@/ s/\(@YAPLIB@\)\(.*\)/\1.%{version}\2\n\t@LN_S@ @YAPLIB@.%{version} $(DESTDIR)$(LIBDIR)\/@YAPLIB@/' \ Makefile.in -# TODO: Bumdle SWI chr and clpqr libraries -## Hack LGPL/chr build environment to run just build interpreter -## yap-6.2.0 have those SWI compatible libraries optional and separate. Package -## them as standalone package in the future and remove this ugly thing: -## Provide path to just built library and libc bindings -#sed -i '/LGPL\/chr/ s|\(make install\)|LD_LIBRARY_PATH='"${PWD}:${PWD}/library/system"' \1|' Makefile.in -## Provide paths to Prolog libraries -#mkdir -p LGPL/chr/usr/share && ln -s ../../../../library LGPL/chr/usr/share/Yap -#mkdir -p library/usr/share && ln -s ../.. library/usr/share/Yap -## Provide paths to parent Prolog libraries -#ln -s {../LGPL,library}/maplist.pl -#ln -s {../GPL,library}/aggregate.pl -#ln -s {../GPL,library}/occurs.yap -#ln -s {../GPL,library}/pairs.pl -#ln -s {../GPL,library}/error.pl - # Fix file encoding for F in README changes.css; do tr -d '\r' < "$F" > "${F}.new" @@ -131,7 +114,9 @@ find -name '*.c' -exec chmod 0644 '{}' ';' --enable-max-performance \ --enable-depth-limit \ --enable-dynamic-loading \ - --enable-myddas + --enable-myddas \ + --enable-chr \ + --enable-clpqr # TODO: --with-java make %{?_smp_mflags} @@ -223,6 +208,8 @@ rm -rf $RPM_BUILD_ROOT - Fix Source URL - Clean exported Requires - Correct RPATH +- Enable chr and clpqr libraries installation (still bundled with source tar + ball) * Wed Dec 08 2010 Petr Pisar - 5.1.3-3 - Hack SWI-compatible libraries build system to be compilable (bug #660965) From f4bb864ff97f8ac4330999e9a83fc6c19c458b6d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Petr=20P=C3=ADsa=C5=99?= Date: Mon, 3 Jan 2011 18:04:13 +0100 Subject: [PATCH 32/68] EAM is experimental --- yap.spec | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/yap.spec b/yap.spec index de09838..6fe7b6f 100644 --- a/yap.spec +++ b/yap.spec @@ -1,3 +1,7 @@ +# BEAM is experimantal and some interpreter code unimplemented. See +# README.EAM.html for more details. +%global use_eam 0 + Name: yap Version: 6.2.0 Release: 1%{?dist} @@ -115,6 +119,9 @@ find -name '*.c' -exec chmod 0644 '{}' ';' --enable-depth-limit \ --enable-dynamic-loading \ --enable-myddas \ +%if %{use_eam} + --enable-eam \ +%endif --enable-chr \ --enable-clpqr # TODO: --with-java @@ -168,7 +175,9 @@ rm -rf $RPM_BUILD_ROOT %files %defattr(-,root,root,-) %doc Artistic changes* COPYING README TO_DO -# TODO: experimental %doc README.EAM.html +%if %{use_eam} +%doc README.EAM.html +%endif %{_bindir}/yap %{_datadir}/Yap %{_libdir}/Yap From 723bc7b2fcf87c042ba70d89bc69913560f27771 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Petr=20P=C3=ADsa=C5=99?= Date: Tue, 4 Jan 2011 10:46:32 +0100 Subject: [PATCH 33/68] Package not-installed examples --- yap.spec | 23 +++++++++++++++++++++-- 1 file changed, 21 insertions(+), 2 deletions(-) diff --git a/yap.spec b/yap.spec index 6fe7b6f..a4601e9 100644 --- a/yap.spec +++ b/yap.spec @@ -139,7 +139,7 @@ make DESTDIR=$RPM_BUILD_ROOT install_info chmod 0644 $RPM_BUILD_ROOT%{_datadir}/Yap/pl/* chmod 0644 $RPM_BUILD_ROOT%{_includedir}/Yap/* -# move examples to docs dir +# Move installed examples to docs dir %global documentation docs-documentation for P in clpbn; do mkdir -p "%{documentation}/examples/${P}" @@ -147,6 +147,24 @@ for P in clpbn; do "%{documentation}/examples/${P}" rmdir "$RPM_BUILD_ROOT%{_datadir}/Yap/${P}/examples" done +for P in minisat problog; do + mkdir -p "%{documentation}/examples/${P}" + mv "$RPM_BUILD_ROOT%{_datadir}/Yap/${P}_examples/"* \ + "%{documentation}/examples/${P}" + rmdir "$RPM_BUILD_ROOT%{_datadir}/Yap/${P}_examples" +done +# Copy not-installed examples to docs dir +# CLPBN/*, swi-minisat2 installed already +# TODO: jpl documentation with java support +# TODO: mpi documentation with mpi support +for P in pyswip cplint http plunit; do + mkdir -p "%{documentation}/examples/${P}" + cp -a "packages/${P}/examples/"* "%{documentation}/examples/${P}" +done +for P in LGPL/pillow; do + mkdir -p "%{documentation}/examples/${P}" + cp -a "${P}/examples/"* "%{documentation}/examples/${P}" +done # Remove empty files for F in $RPM_BUILD_ROOT%{_datadir}/Yap/myddas_top_level.yap; do @@ -199,7 +217,7 @@ rm -rf $RPM_BUILD_ROOT %changelog -* Mon Jan 03 2011 Petr Pisar - 6.2.0-1 +* Tue Jan 04 2011 Petr Pisar - 6.2.0-1 - Reorder metadata in spec file - 6.2.0 bump - Remove uneeded Yap-creat.patch @@ -219,6 +237,7 @@ rm -rf $RPM_BUILD_ROOT - Correct RPATH - Enable chr and clpqr libraries installation (still bundled with source tar ball) +- Package uninstalled examples * Wed Dec 08 2010 Petr Pisar - 5.1.3-3 - Hack SWI-compatible libraries build system to be compilable (bug #660965) From fab6edd205612e25e02ec99cc941a49bc368e913 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Petr=20P=C3=ADsa=C5=99?= Date: Tue, 4 Jan 2011 11:12:07 +0100 Subject: [PATCH 34/68] Update license tag --- yap.spec | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/yap.spec b/yap.spec index a4601e9..b461034 100644 --- a/yap.spec +++ b/yap.spec @@ -7,7 +7,13 @@ Version: 6.2.0 Release: 1%{?dist} Summary: High-performance Prolog Compiler Group: Development/Languages -License: Artistic 2.0 or LGPLv2+ +# README Perl Artistic license 2 and the FSF's LGPL +# packages/ProbLog/ Artistic 2.0 +# COPYING LGPL +# LGPL/pillow/pillow.pl LGPLv2+ +# packages/clib/sha1/sha2.c BSD or GPL +# packages/http/examples/demo_threads.pl GPLv2+ +License: Artistic 2.0 and LGPLv2+ and (BSD or GPL+) and (GPLv2+) URL: http://www.ncc.up.pt/~vsc/Yap Source: http://www.ncc.up.pt/~vsc/Yap/%{name}-%{version}.tar.gz Patch1: Yap-noni386.patch From 199c2a1ed39919360883acb8ae7de05c38a3b49f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Petr=20P=C3=ADsa=C5=99?= Date: Tue, 4 Jan 2011 11:43:10 +0100 Subject: [PATCH 35/68] Fix examples attributes --- yap.spec | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/yap.spec b/yap.spec index b461034..17308c8 100644 --- a/yap.spec +++ b/yap.spec @@ -111,7 +111,7 @@ for F in docs/yap.tex TO_DO; do done # Fix file permissions -chmod -x COPYING +chmod -x COPYING packages/http/examples/demo_inetd # Permissions for debuginfo content find -name '*.h' -exec chmod 0644 '{}' ';' find -name '*.c' -exec chmod 0644 '{}' ';' @@ -173,7 +173,8 @@ for P in LGPL/pillow; do done # Remove empty files -for F in $RPM_BUILD_ROOT%{_datadir}/Yap/myddas_top_level.yap; do +for F in $RPM_BUILD_ROOT%{_datadir}/Yap/myddas_top_level.yap \ + %{documentation}/examples/cplint/coin.uni; do test -s "$F" || rm "$F" done From c4157d206d3126eedcba8716856e127dcd35b574 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Petr=20P=C3=ADsa=C5=99?= Date: Tue, 4 Jan 2011 12:30:28 +0100 Subject: [PATCH 36/68] Add source tar ball --- .gitignore | 1 + sources | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index 43c48d6..318a656 100644 --- a/.gitignore +++ b/.gitignore @@ -3,3 +3,4 @@ chr_translate_bootstrap1.pl chr_translate_bootstrap2.pl chr_translate.pl guard_entailment.pl +/yap-6.2.0.tar.gz diff --git a/sources b/sources index 42ac065..ca55625 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -d04265acead9286b363f7209ac382490 Yap-5.1.3.tar.gz +df250bab67a7576ac9293f78156d4ee0 yap-6.2.0.tar.gz From 607e8dd91ef2be63f67f29458fe1c475f27c86c8 Mon Sep 17 00:00:00 2001 From: Dennis Gilmore Date: Tue, 8 Feb 2011 01:21:02 -0600 Subject: [PATCH 37/68] - Rebuilt for https://fedoraproject.org/wiki/Fedora_15_Mass_Rebuild --- yap.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/yap.spec b/yap.spec index 17308c8..75821dc 100644 --- a/yap.spec +++ b/yap.spec @@ -4,7 +4,7 @@ Name: yap Version: 6.2.0 -Release: 1%{?dist} +Release: 2%{?dist} Summary: High-performance Prolog Compiler Group: Development/Languages # README Perl Artistic license 2 and the FSF's LGPL @@ -224,6 +224,9 @@ rm -rf $RPM_BUILD_ROOT %changelog +* Tue Feb 08 2011 Fedora Release Engineering - 6.2.0-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_15_Mass_Rebuild + * Tue Jan 04 2011 Petr Pisar - 6.2.0-1 - Reorder metadata in spec file - 6.2.0 bump From bb6808f392aa7e1d4c840b0640637c7673aadb1d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Petr=20P=C3=ADsa=C5=99?= Date: Wed, 23 Mar 2011 08:56:15 +0100 Subject: [PATCH 38/68] Rebuild against mysql 5.5.10 --- yap.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/yap.spec b/yap.spec index 75821dc..fa6de04 100644 --- a/yap.spec +++ b/yap.spec @@ -4,7 +4,7 @@ Name: yap Version: 6.2.0 -Release: 2%{?dist} +Release: 3%{?dist} Summary: High-performance Prolog Compiler Group: Development/Languages # README Perl Artistic license 2 and the FSF's LGPL @@ -224,6 +224,9 @@ rm -rf $RPM_BUILD_ROOT %changelog +* Wed Mar 23 2011 Petr Pisar - 6.2.0-3 +- Rebuild against mysql 5.5.10 + * Tue Feb 08 2011 Fedora Release Engineering - 6.2.0-2 - Rebuilt for https://fedoraproject.org/wiki/Fedora_15_Mass_Rebuild From 68b39832b2811c463bf3e57c075c036a5fec6602 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dan=20Hor=C3=A1k?= Date: Wed, 23 Mar 2011 19:57:30 +0100 Subject: [PATCH 39/68] rebuilt for mysql 5.5.10 (soname bump in libmysqlclient) --- yap.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/yap.spec b/yap.spec index fa6de04..ba467f6 100644 --- a/yap.spec +++ b/yap.spec @@ -4,7 +4,7 @@ Name: yap Version: 6.2.0 -Release: 3%{?dist} +Release: 4%{?dist} Summary: High-performance Prolog Compiler Group: Development/Languages # README Perl Artistic license 2 and the FSF's LGPL @@ -224,6 +224,9 @@ rm -rf $RPM_BUILD_ROOT %changelog +* Wed Mar 23 2011 Dan Horák - 6.2.0-4 +- rebuilt for mysql 5.5.10 (soname bump in libmysqlclient) + * Wed Mar 23 2011 Petr Pisar - 6.2.0-3 - Rebuild against mysql 5.5.10 From 18430d4bed6e8e9e0897faaecf2822e801616c0c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dan=20Hor=C3=A1k?= Date: Thu, 23 Jun 2011 15:22:08 +0200 Subject: [PATCH 40/68] fix non-x86 builds with recent gcc --- yap-6.2.0-gprof-macro.patch | 14 ++++++++++++++ yap.spec | 8 +++++++- 2 files changed, 21 insertions(+), 1 deletion(-) create mode 100644 yap-6.2.0-gprof-macro.patch diff --git a/yap-6.2.0-gprof-macro.patch b/yap-6.2.0-gprof-macro.patch new file mode 100644 index 0000000..1d18164 --- /dev/null +++ b/yap-6.2.0-gprof-macro.patch @@ -0,0 +1,14 @@ +diff -up yap-6/C/gprof.c.macro yap-6/C/gprof.c +--- yap-6/C/gprof.c.macro 2011-06-23 14:45:25.000000000 +0200 ++++ yap-6/C/gprof.c 2011-06-23 14:45:43.000000000 +0200 +@@ -102,8 +102,8 @@ typedef greg_t context_reg; + + #else + +-#define CONTEXT_PC NULL +-#define CONTEXT_BP NULL ++#define CONTEXT_PC(scv) NULL ++#define CONTEXT_BP(scv) NULL + + #endif + diff --git a/yap.spec b/yap.spec index ba467f6..67fdee4 100644 --- a/yap.spec +++ b/yap.spec @@ -4,7 +4,7 @@ Name: yap Version: 6.2.0 -Release: 4%{?dist} +Release: 5%{?dist} Summary: High-performance Prolog Compiler Group: Development/Languages # README Perl Artistic license 2 and the FSF's LGPL @@ -25,6 +25,8 @@ Patch6: yap-6.2.0-Install-info-pages-non-executable.patch Patch7: yap-6.2.0-Do-not-install-info-dir-index.patch # In upstream already Patch8: yap-6.2.0-fix-chr-install-from-Keri.patch +# fix non-x86 build with recent gcc +Patch9: yap-6.2.0-gprof-macro.patch BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) BuildRequires: autoconf BuildRequires: gmp-devel @@ -79,6 +81,7 @@ Documentation for Yap. %patch6 -p1 -b .non_executable_info %patch7 -p1 -b .do_not_install_info_index %patch8 -p1 -b .fix_chr_install +%patch9 -p1 -b .macro # remove redundant RPATH sed -i 's/-Wl,-R\(,\)\{0,1\}\\$(LIBDIR)//' configure.in @@ -224,6 +227,9 @@ rm -rf $RPM_BUILD_ROOT %changelog +* Thu Jun 23 2011 Dan Horák - 6.2.0-5 +- fix non-x86 builds with recent gcc + * Wed Mar 23 2011 Dan Horák - 6.2.0-4 - rebuilt for mysql 5.5.10 (soname bump in libmysqlclient) From 005b5f8138199f45e4c36787850b744beba6ffac Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marcela=20Ma=C5=A1l=C3=A1=C5=88ov=C3=A1?= Date: Wed, 12 Oct 2011 11:38:35 +0200 Subject: [PATCH 41/68] rebuild with new gmp --- yap.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/yap.spec b/yap.spec index 67fdee4..d200e6b 100644 --- a/yap.spec +++ b/yap.spec @@ -4,7 +4,7 @@ Name: yap Version: 6.2.0 -Release: 5%{?dist} +Release: 5%{?dist}.1 Summary: High-performance Prolog Compiler Group: Development/Languages # README Perl Artistic license 2 and the FSF's LGPL @@ -227,6 +227,9 @@ rm -rf $RPM_BUILD_ROOT %changelog +* Wed Oct 12 2011 Peter Schiffer - 6.2.0-5.1 +- rebuild with new gmp + * Thu Jun 23 2011 Dan Horák - 6.2.0-5 - fix non-x86 builds with recent gcc From e76bbf2152c7820bc8a9b6ab471037a7744f8fea Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marcela=20Ma=C5=A1l=C3=A1=C5=88ov=C3=A1?= Date: Wed, 26 Oct 2011 16:08:48 +0200 Subject: [PATCH 42/68] rebuild with new gmp without compat lib --- yap.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/yap.spec b/yap.spec index d200e6b..90b3e7f 100644 --- a/yap.spec +++ b/yap.spec @@ -4,7 +4,7 @@ Name: yap Version: 6.2.0 -Release: 5%{?dist}.1 +Release: 5%{?dist}.2 Summary: High-performance Prolog Compiler Group: Development/Languages # README Perl Artistic license 2 and the FSF's LGPL @@ -227,6 +227,9 @@ rm -rf $RPM_BUILD_ROOT %changelog +* Wed Oct 26 2011 Marcela Mašláňová - 6.2.0-5.2 +- rebuild with new gmp without compat lib + * Wed Oct 12 2011 Peter Schiffer - 6.2.0-5.1 - rebuild with new gmp From 457501a6ecb812964840265c168400297b274b2f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Petr=20P=C3=ADsa=C5=99?= Date: Wed, 7 Dec 2011 15:04:40 +0100 Subject: [PATCH 43/68] Fix building on PPC --- yap-6.2.0-Remove-feature-macro.patch | 27 +++++++++++++++++++++++++++ yap-6.2.0-ppc-mmap-addr.patch | 11 +++++++++++ yap.spec | 14 +++++++++++++- 3 files changed, 51 insertions(+), 1 deletion(-) create mode 100644 yap-6.2.0-Remove-feature-macro.patch create mode 100644 yap-6.2.0-ppc-mmap-addr.patch diff --git a/yap-6.2.0-Remove-feature-macro.patch b/yap-6.2.0-Remove-feature-macro.patch new file mode 100644 index 0000000..75201ee --- /dev/null +++ b/yap-6.2.0-Remove-feature-macro.patch @@ -0,0 +1,27 @@ +From 9419d68dc09a4e3f7adfe7e654ef3952327cd9bf Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Petr=20P=C3=ADsa=C5=99?= +Date: Wed, 7 Dec 2011 14:14:25 +0100 +Subject: [PATCH] Remove feature macro + +This macro clashes with struct ppc_debug_info member in +on PPC. The macro is not used anywhere in yap. +--- + packages/PLStream/pl-incl.h | 2 -- + 1 files changed, 0 insertions(+), 2 deletions(-) + +diff --git a/packages/PLStream/pl-incl.h b/packages/PLStream/pl-incl.h +index aa7b99c..8bf63de 100755 +--- a/packages/PLStream/pl-incl.h ++++ b/packages/PLStream/pl-incl.h +@@ -363,8 +363,6 @@ typedef struct PL_local_data { + + #define usedStack(D) 0 + +-#define features (LD->feature.mask) +- + extern PL_local_data_t lds; + + #define exception_term (LD->exception.term) +-- +1.7.7.4 + diff --git a/yap-6.2.0-ppc-mmap-addr.patch b/yap-6.2.0-ppc-mmap-addr.patch new file mode 100644 index 0000000..e29aebc --- /dev/null +++ b/yap-6.2.0-ppc-mmap-addr.patch @@ -0,0 +1,11 @@ +--- yap-6.orig/H/Yap.h 2010-10-18 21:48:20.000000000 +1300 ++++ yap-6/H/Yap.h 2010-12-01 20:09:57.000000000 +1300 +@@ -268,6 +268,8 @@ + #define MMAP_ADDR 0x200000000 + #elif defined(__APPLE__) && !__LP64__ + #define MMAP_ADDR 0x20000000 ++#elif defined(__powerpc__) ++#define MMAP_ADDR 0x20000000 + #else + #define MMAP_ADDR 0x10000000 + #endif diff --git a/yap.spec b/yap.spec index 90b3e7f..9c7687a 100644 --- a/yap.spec +++ b/yap.spec @@ -4,7 +4,7 @@ Name: yap Version: 6.2.0 -Release: 5%{?dist}.2 +Release: 6%{?dist} Summary: High-performance Prolog Compiler Group: Development/Languages # README Perl Artistic license 2 and the FSF's LGPL @@ -27,6 +27,10 @@ Patch7: yap-6.2.0-Do-not-install-info-dir-index.patch Patch8: yap-6.2.0-fix-chr-install-from-Keri.patch # fix non-x86 build with recent gcc Patch9: yap-6.2.0-gprof-macro.patch +# Fix segfaults on PPC. Taken from Gentoo yap-6.2.0-gentoo-patchset-5.tar.gz +Patch10: yap-6.2.0-ppc-mmap-addr.patch +# Fix compilation of PLStream package on PPC +Patch11: yap-6.2.0-Remove-feature-macro.patch BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) BuildRequires: autoconf BuildRequires: gmp-devel @@ -82,6 +86,8 @@ Documentation for Yap. %patch7 -p1 -b .do_not_install_info_index %patch8 -p1 -b .fix_chr_install %patch9 -p1 -b .macro +%patch10 -p1 -b .ppc +%patch11 -p1 -b .remove_feature_macro # remove redundant RPATH sed -i 's/-Wl,-R\(,\)\{0,1\}\\$(LIBDIR)//' configure.in @@ -141,6 +147,9 @@ make %{?_smp_mflags} info %install rm -rf $RPM_BUILD_ROOT +%ifarch ppc ppc64 +ulimit -s unlimited +%endif make DESTDIR=$RPM_BUILD_ROOT install make DESTDIR=$RPM_BUILD_ROOT install_info @@ -227,6 +236,9 @@ rm -rf $RPM_BUILD_ROOT %changelog +* Wed Dec 07 2011 Petr Pisar - 6.2.0-6 +- Fix building on PowerPC (bug #751144) + * Wed Oct 26 2011 Marcela Mašláňová - 6.2.0-5.2 - rebuild with new gmp without compat lib From 1085e27b3badaec03ba8249177bd938adcc24cb0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Petr=20P=C3=ADsa=C5=99?= Date: Fri, 9 Dec 2011 14:22:16 +0100 Subject: [PATCH 44/68] 6.2.2 bump --- .gitignore | 1 + sources | 2 +- yap-6.2.0-fix-chr-install-from-Keri.patch | 106 ---------------------- yap-6.2.0-ppc-mmap-addr.patch | 11 --- yap.spec | 43 ++++----- 5 files changed, 19 insertions(+), 144 deletions(-) delete mode 100644 yap-6.2.0-fix-chr-install-from-Keri.patch delete mode 100644 yap-6.2.0-ppc-mmap-addr.patch diff --git a/.gitignore b/.gitignore index 318a656..6225908 100644 --- a/.gitignore +++ b/.gitignore @@ -4,3 +4,4 @@ chr_translate_bootstrap2.pl chr_translate.pl guard_entailment.pl /yap-6.2.0.tar.gz +/yap-6.2.2.tar.gz diff --git a/sources b/sources index ca55625..cf4d846 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -df250bab67a7576ac9293f78156d4ee0 yap-6.2.0.tar.gz +5010225464ffe8b2aa3e0bca9d935937 yap-6.2.2.tar.gz diff --git a/yap-6.2.0-fix-chr-install-from-Keri.patch b/yap-6.2.0-fix-chr-install-from-Keri.patch deleted file mode 100644 index bbdee5f..0000000 --- a/yap-6.2.0-fix-chr-install-from-Keri.patch +++ /dev/null @@ -1,106 +0,0 @@ -From 23d07e2d78cf285e32b6f42c635edf506ff70c78 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?V=C3=ADtor=20Santos=20Costa?= -Date: Tue, 9 Nov 2010 16:39:34 +0000 -Subject: [PATCH] fix chr install (from Keri) - ---- - configure.in | 20 ++++++++++---------- - 1 files changed, 10 insertions(+), 10 deletions(-) - -diff --git a/configure.in b/configure.in -index 920d01a..3bc0c1d 100755 ---- a/configure.in -+++ b/configure.in -@@ -924,7 +924,7 @@ case "$target_os" in - then - YAPLIB_LD="\$(CC) -shared" - EXTRA_LIBS_FOR_DLLS="$EXTRA_LIBS_FOR_DLLS -L\$(abs_top_builddir) -lYap -Wl,-R,\$(YAPLIBDIR) -Wl,-R,\$(LIBDIR)" -- INSTALL_ENV="LD_LIBRARY_PATH=\$(DESTDIR)\$(LIBDIR): YAPSHAREDIR=\$(DESTDIR)\$(SHAREDIR) YAPLIBDIR=\$(DESTDIR)\$(YAPLIBDIR)" -+ INSTALL_ENV="LD_LIBRARY_PATH=\$(DESTDIR)\$(LIBDIR):\$(DESTDIR)\$(YAPLIBDIR): YAPSHAREDIR=\$(DESTDIR)\$(SHAREDIR) YAPLIBDIR=\$(DESTDIR)\$(YAPLIBDIR)" - PRE_INSTALL_ENV="LD_LIBRARY_PATH=\$(abs_top_builddir)" - else - YAPLIB_LD="\$(CC)" -@@ -946,7 +946,7 @@ case "$target_os" in - DYNYAPLIB=libYap."$SO" - EXTRA_LIBS_FOR_DLLS="$EXTRA_LIBS_FOR_DLLS -L\$(abs_top_builddir) -lYap -Wl,-R,\$(YAPLIBDIR) -Wl,-R,\$(LIBDIR)" - PRE_INSTALL_ENV="LD_LIBRARY_PATH=\$(abs_top_builddir)" -- INSTALL_ENV="LD_LIBRARY_PATH=\$(DESTDIR)\$(LIBDIR): YAPSHAREDIR=\$(DESTDIR)\$(SHAREDIR) YAPLIBDIR=\$(DESTDIR)\$(YAPLIBDIR)" -+ INSTALL_ENV="LD_LIBRARY_PATH=\$(DESTDIR)\$(LIBDIR):\$(DESTDIR)\$(YAPLIBDIR): YAPSHAREDIR=\$(DESTDIR)\$(SHAREDIR) YAPLIBDIR=\$(DESTDIR)\$(YAPLIBDIR)" - ;; - *hpux*) - #do not use the first memory quadrant -@@ -985,7 +985,7 @@ case "$target_os" in - DYNYAPLIB=libYap."$SO" - EXTRA_LIBS_FOR_DLLS="$EXTRA_LIBS_FOR_DLLS -L\$(abs_top_builddir) -lYap -Wl,-R,\$(YAPLIBDIR) -Wl,-R,\$(LIBDIR)" - PRE_INSTALL_ENV="LD_LIBRARY_PATH=\$(abs_top_builddir)" -- INSTALL_ENV="LD_LIBRARY_PATH=\$(DESTDIR)\$(LIBDIR): YAPSHAREDIR=\$(DESTDIR)\$(SHAREDIR) YAPLIBDIR=\$(DESTDIR)\$(YAPLIBDIR)" -+ INSTALL_ENV="LD_LIBRARY_PATH=\$(DESTDIR)\$(LIBDIR):\$(DESTDIR)\$(YAPLIBDIR): YAPSHAREDIR=\$(DESTDIR)\$(SHAREDIR) YAPLIBDIR=\$(DESTDIR)\$(YAPLIBDIR)" - ;; - *aix*) - # To actually use dlls in AIX I'd need to build YAP as a DLL first. -@@ -998,7 +998,7 @@ case "$target_os" in - DYNYAPLIB=libYap."$SO" - EXTRA_LIBS_FOR_DLLS="$EXTRA_LIBS_FOR_DLLS -L\$(abs_top_builddir) -lYap -Wl,-R,\$(YAPLIBDIR) -Wl,\$(LIBDIR)" - PRE_INSTALL_ENV="LD_LIBRARY_PATH=\$(abs_top_builddir)" -- INSTALL_ENV="LD_LIBRARY_PATH=\$(DESTDIR)\$(LIBDIR): YAPSHAREDIR=\$(DESTDIR)\$(SHAREDIR) YAPLIBDIR=\$(DESTDIR)\$(YAPLIBDIR)" -+ INSTALL_ENV="LD_LIBRARY_PATH=\$(DESTDIR)\$(LIBDIR):\$(DESTDIR)\$(YAPLIBDIR): YAPSHAREDIR=\$(DESTDIR)\$(SHAREDIR) YAPLIBDIR=\$(DESTDIR)\$(YAPLIBDIR)" - ;; - *osf*) - if ${use_condor} = no -@@ -1016,7 +1016,7 @@ dnl Linux has both elf and a.out, in this case we found elf - DYNYAPLIB=libYap."$SO" - EXTRA_LIBS_FOR_DLLS="$EXTRA_LIBS_FOR_DLLS -L\$(abs_top_builddir) -lYap -Wl,-R,\$(YAPLIBDIR) -Wl,-R,\$(LIBDIR)" - PRE_INSTALL_ENV="LD_LIBRARY_PATH=\$(abs_top_builddir)" -- INSTALL_ENV="LD_LIBRARY_PATH=\$(DESTDIR)\$(LIBDIR): YAPSHAREDIR=\$(DESTDIR)\$(SHAREDIR) YAPLIBDIR=\$(DESTDIR)\$(YAPLIBDIR)" -+ INSTALL_ENV="LD_LIBRARY_PATH=\$(DESTDIR)\$(LIBDIR):\$(DESTDIR)\$(YAPLIBDIR): YAPSHAREDIR=\$(DESTDIR)\$(SHAREDIR) YAPLIBDIR=\$(DESTDIR)\$(YAPLIBDIR)" - ;; - *irix6*) - SHLIB_CFLAGS="$CFLAGS" -@@ -1030,7 +1030,7 @@ dnl Linux has both elf and a.out, in this case we found elf - DYNYAPLIB=libYap."$SO" - EXTRA_LIBS_FOR_DLLS="$EXTRA_LIBS_FOR_DLLS -L\$(abs_top_builddir) -lYap -Wl,-R,\$(YAPLIBDIR) -Wl,-R,\$(LIBDIR)" - PRE_INSTALL_ENV="LD_LIBRARY_PATH=\$(abs_top_builddir)" -- INSTALL_ENV="LD_LIBRARY_PATH=\$(DESTDIR)\$(LIBDIR): YAPSHAREDIR=\$(DESTDIR)\$(SHAREDIR) YAPLIBDIR=\$(DESTDIR)\$(YAPLIBDIR)" -+ INSTALL_ENV="LD_LIBRARY_PATH=\$(DESTDIR)\$(LIBDIR):\$(DESTDIR)\$(YAPLIBDIR): YAPSHAREDIR=\$(DESTDIR)\$(SHAREDIR) YAPLIBDIR=\$(DESTDIR)\$(YAPLIBDIR)" - ;; - *darwin*) - if test ${use_dlcompat} = yes -@@ -1051,7 +1051,7 @@ dnl Linux has both elf and a.out, in this case we found elf - SHLIB_LD="$CC -dynamiclib" - SHLIB_CXX_LD="$CXX -dynamiclib" - EXTRA_LIBS_FOR_DLLS="$EXTRA_LIBS_FOR_DLLS -L\$(abs_top_builddir) -lYap -Wl,-install_name,\$(YAPLIBDIR)/\$@" -- INSTALL_ENV="DYLD_LIBRARY_PATH=\$(DESTDIR)\$(LIBDIR): YAPSHAREDIR=\$(DESTDIR)\$(SHAREDIR) YAPLIBDIR=\$(DESTDIR)\$(YAPLIBDIR)" -+ INSTALL_ENV="DYLD_LIBRARY_PATH=\$(DESTDIR)\$(LIBDIR):\$(DESTDIR)\$(YAPLIBDIR): YAPSHAREDIR=\$(DESTDIR)\$(SHAREDIR) YAPLIBDIR=\$(DESTDIR)\$(YAPLIBDIR)" - else - SHLIB_LD="$CC -dynamiclib -Wl,-undefined,dynamic_lookup" - SHLIB_CXX_LD="$CXX -dynamiclib -Wl,-undefined,dynamic_lookup" -@@ -1091,7 +1091,7 @@ dnl Linux has both elf and a.out, in this case we found elf - DYNYAPLIB=libYap."$SO" - EXTRA_LIBS_FOR_DLLS="$EXTRA_LIBS_FOR_DLLS -L\$(abs_top_builddir) -Wl,-R,\$(YAPLIBDIR)" - PRE_INSTALL_ENV="LD_LIBRARY_PATH=\$(abs_top_builddir)" -- INSTALL_ENV="LD_LIBRARY_PATH=\$(DESTDIR)\$(LIBDIR): YAPSHAREDIR=\$(DESTDIR)\$(SHAREDIR) YAPLIBDIR=\$(DESTDIR)\$(YAPLIBDIR)" -+ INSTALL_ENV="LD_LIBRARY_PATH=\$(DESTDIR)\$(LIBDIR):\$(DESTDIR)\$(YAPLIBDIR): YAPSHAREDIR=\$(DESTDIR)\$(SHAREDIR) YAPLIBDIR=\$(DESTDIR)\$(YAPLIBDIR)" - ;; - *solaris*) - #an elf system -@@ -1110,7 +1110,7 @@ dnl Linux has both elf and a.out, in this case we found elf - YAPLIB_LD="\$(CC)" - EXTRA_LIBS_FOR_DLLS="$EXTRA_LIBS_FOR_DLLS -L\$(abs_top_builddir) -lYap -Wl,-R,\$(YAPLIBDIR) -Wl,-R,\$(LIBDIR)" - PRE_INSTALL_ENV="LD_LIBRARY_PATH=\$(abs_top_builddir)" -- INSTALL_ENV="LD_LIBRARY_PATH=\$(DESTDIR)\$(LIBDIR): YAPSHAREDIR=\$(DESTDIR)\$(SHAREDIR) YAPLIBDIR=\$(DESTDIR)\$(YAPLIBDIR)" -+ INSTALL_ENV="LD_LIBRARY_PATH=\$(DESTDIR)\$(LIBDIR):\$(DESTDIR)\$(YAPLIBDIR): YAPSHAREDIR=\$(DESTDIR)\$(SHAREDIR) YAPLIBDIR=\$(DESTDIR)\$(YAPLIBDIR)" - else - EXTRA_LIBS_FOR_DLLS="$EXTRA_LIBS_FOR_DLLS -Wl,-R,\$(YAPLIBDIR) -Wl,-R,\$(LIBDIR)" - PRE_INSTALL_ENV="" -@@ -1165,7 +1165,7 @@ dnl Linux has both elf and a.out, in this case we found elf - DYNYAPLIB=libYap."$SO" - EXTRA_LIBS_FOR_DLLS="$EXTRA_LIBS_FOR_DLLS -L\$(abs_top_builddir) -lYap -Wl,-R,\$(YAPLIBDIR) -Wl,-R,\$(LIBDIR)" - PRE_INSTALL_ENV="LD_LIBRARY_PATH=\$(abs_top_builddir)" -- INSTALL_ENV="LD_LIBRARY_PATH=\$(DESTDIR)\$(LIBDIR): YAPSHAREDIR=\$(DESTDIR)\$(SHAREDIR) YAPLIBDIR=\$(DESTDIR)\$(YAPLIBDIR)" -+ INSTALL_ENV="LD_LIBRARY_PATH=\$(DESTDIR)\$(LIBDIR):\$(DESTDIR)\$(YAPLIBDIR): YAPSHAREDIR=\$(DESTDIR)\$(SHAREDIR) YAPLIBDIR=\$(DESTDIR)\$(YAPLIBDIR)" - ;; - esac - --- -1.7.3.4 - diff --git a/yap-6.2.0-ppc-mmap-addr.patch b/yap-6.2.0-ppc-mmap-addr.patch deleted file mode 100644 index e29aebc..0000000 --- a/yap-6.2.0-ppc-mmap-addr.patch +++ /dev/null @@ -1,11 +0,0 @@ ---- yap-6.orig/H/Yap.h 2010-10-18 21:48:20.000000000 +1300 -+++ yap-6/H/Yap.h 2010-12-01 20:09:57.000000000 +1300 -@@ -268,6 +268,8 @@ - #define MMAP_ADDR 0x200000000 - #elif defined(__APPLE__) && !__LP64__ - #define MMAP_ADDR 0x20000000 -+#elif defined(__powerpc__) -+#define MMAP_ADDR 0x20000000 - #else - #define MMAP_ADDR 0x10000000 - #endif diff --git a/yap.spec b/yap.spec index 9c7687a..9602157 100644 --- a/yap.spec +++ b/yap.spec @@ -3,8 +3,8 @@ %global use_eam 0 Name: yap -Version: 6.2.0 -Release: 6%{?dist} +Version: 6.2.2 +Release: 1%{?dist} Summary: High-performance Prolog Compiler Group: Development/Languages # README Perl Artistic license 2 and the FSF's LGPL @@ -14,8 +14,8 @@ Group: Development/Languages # packages/clib/sha1/sha2.c BSD or GPL # packages/http/examples/demo_threads.pl GPLv2+ License: Artistic 2.0 and LGPLv2+ and (BSD or GPL+) and (GPLv2+) -URL: http://www.ncc.up.pt/~vsc/Yap -Source: http://www.ncc.up.pt/~vsc/Yap/%{name}-%{version}.tar.gz +URL: http://www.ncc.up.pt/~vsc/Yap/ +Source: %{url}%{name}-%{version}.tar.gz Patch1: Yap-noni386.patch Patch2: yap-6.2.0-Locate-mysql-by-mysql_config.patch Patch3: yap-6.2.0-Install-directory-for-info-pages.patch @@ -23,15 +23,10 @@ Patch4: yap-6.2.0-Install-http-CSS-files-into-PLTARGET.patch Patch5: yap-6.2.0-Do-not-install-README-etc.patch Patch6: yap-6.2.0-Install-info-pages-non-executable.patch Patch7: yap-6.2.0-Do-not-install-info-dir-index.patch -# In upstream already -Patch8: yap-6.2.0-fix-chr-install-from-Keri.patch # fix non-x86 build with recent gcc -Patch9: yap-6.2.0-gprof-macro.patch -# Fix segfaults on PPC. Taken from Gentoo yap-6.2.0-gentoo-patchset-5.tar.gz -Patch10: yap-6.2.0-ppc-mmap-addr.patch +Patch8: yap-6.2.0-gprof-macro.patch # Fix compilation of PLStream package on PPC -Patch11: yap-6.2.0-Remove-feature-macro.patch -BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) +Patch9: yap-6.2.0-Remove-feature-macro.patch BuildRequires: autoconf BuildRequires: gmp-devel BuildRequires: mysql-devel @@ -76,7 +71,7 @@ Documentation for Yap. %prep -%setup -q -n %{name}-6 +%setup -q %patch1 -p1 %patch2 -p1 -b .mysql_config %patch3 -p1 -b .install_info_directory @@ -84,16 +79,16 @@ Documentation for Yap. %patch5 -p1 -b .do_not_install_readme %patch6 -p1 -b .non_executable_info %patch7 -p1 -b .do_not_install_info_index -%patch8 -p1 -b .fix_chr_install -%patch9 -p1 -b .macro -%patch10 -p1 -b .ppc -%patch11 -p1 -b .remove_feature_macro +%patch8 -p1 -b .macro +%patch9 -p1 -b .remove_feature_macro # remove redundant RPATH sed -i 's/-Wl,-R\(,\)\{0,1\}\\$(LIBDIR)//' configure.in # transform RPATH into RUN_PATH. Private libraries dlopen()ed depend each on # other sed -i 's/-Wl,-R/-Wl,--enable-new-dtags,-R/g' configure.in +# Add soname to library +sed -i -e 's/\(-soname=\$DYNYAPLIB\)/\1.%{version}/' configure.in # Regerenate configure because of patching autoconf @@ -103,7 +98,7 @@ autoconf # Add soname to library and symlink from unversioned to versioned one sed -i \ - -e '/@YAPLIB_LD@/ s/\(-o @YAPLIB@\)\(.*\)/-Wl,-soname=@YAPLIB@.%{version} \1.%{version}\2\n\tln -s @YAPLIB@.%{version} @YAPLIB@/' \ + -e '/@YAPLIB_LD@/ s/\(-o @YAPLIB@\)\(.*\)/\1.%{version}\2\n\tln -s @YAPLIB@.%{version} @YAPLIB@/' \ -e '/@INSTALL_DLLS@.* @YAPLIB@/ s/\(@YAPLIB@\)\(.*\)/\1.%{version}\2\n\t@LN_S@ @YAPLIB@.%{version} $(DESTDIR)$(LIBDIR)\/@YAPLIB@/' \ Makefile.in @@ -115,6 +110,7 @@ for F in README changes.css; do done for F in docs/yap.tex TO_DO; do iconv -f iso-8859-1 -t utf-8 < "$F" > "${F}.new" + sed -i -e '/mode: texinfo/ s/\(coding: \)latin-1/\1utf-8/' "${F}.new" touch -r "$F"{,.new} mv "$F"{.new,} done @@ -146,7 +142,6 @@ make %{?_smp_mflags} info %install -rm -rf $RPM_BUILD_ROOT %ifarch ppc ppc64 ulimit -s unlimited %endif @@ -205,13 +200,8 @@ fi /sbin/ldconfig -%clean -rm -rf $RPM_BUILD_ROOT - - %files -%defattr(-,root,root,-) -%doc Artistic changes* COPYING README TO_DO +%doc Artistic changes* COPYING GIT README TO_DO %if %{use_eam} %doc README.EAM.html %endif @@ -223,19 +213,20 @@ rm -rf $RPM_BUILD_ROOT %files devel -%defattr(-,root,root,-) %{_libdir}/libYap.so %{_includedir}/Yap %files docs -%defattr(-,root,root,-) %doc LGPL/pillow/doc/pillow_doc_html/* %doc LGPL/pillow/doc/article.ps.gz %doc %{documentation}/* %changelog +* Fri Dec 09 2011 Petr Pisar - 6.2.2-1 +- 6.2.2 bump + * Wed Dec 07 2011 Petr Pisar - 6.2.0-6 - Fix building on PowerPC (bug #751144) From aa1839244f5789628e2acaec42f26f725835383c Mon Sep 17 00:00:00 2001 From: Dennis Gilmore Date: Sat, 14 Jan 2012 03:25:35 -0600 Subject: [PATCH 45/68] - Rebuilt for https://fedoraproject.org/wiki/Fedora_17_Mass_Rebuild --- yap.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/yap.spec b/yap.spec index 9602157..0a1d6b4 100644 --- a/yap.spec +++ b/yap.spec @@ -4,7 +4,7 @@ Name: yap Version: 6.2.2 -Release: 1%{?dist} +Release: 2%{?dist} Summary: High-performance Prolog Compiler Group: Development/Languages # README Perl Artistic license 2 and the FSF's LGPL @@ -224,6 +224,9 @@ fi %changelog +* Sat Jan 14 2012 Fedora Release Engineering - 6.2.2-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_17_Mass_Rebuild + * Fri Dec 09 2011 Petr Pisar - 6.2.2-1 - 6.2.2 bump From 2eb96469003d1f3321cb1b3fb06a7f2d7b2c9cfe Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Petr=20P=C3=ADsa=C5=99?= Date: Thu, 23 Feb 2012 15:23:13 +0100 Subject: [PATCH 46/68] Exclude building on PPC --- yap.spec | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/yap.spec b/yap.spec index 0a1d6b4..f9b139f 100644 --- a/yap.spec +++ b/yap.spec @@ -4,7 +4,7 @@ Name: yap Version: 6.2.2 -Release: 2%{?dist} +Release: 3%{?dist} Summary: High-performance Prolog Compiler Group: Development/Languages # README Perl Artistic license 2 and the FSF's LGPL @@ -27,6 +27,8 @@ Patch7: yap-6.2.0-Do-not-install-info-dir-index.patch Patch8: yap-6.2.0-gprof-macro.patch # Fix compilation of PLStream package on PPC Patch9: yap-6.2.0-Remove-feature-macro.patch +# yap 6.2.2 does not work on PPC (bug #790625) +ExcludeArch: ppc ppc64 BuildRequires: autoconf BuildRequires: gmp-devel BuildRequires: mysql-devel @@ -224,6 +226,9 @@ fi %changelog +* Thu Feb 23 2012 Petr Pisar - 6.2.2-3 +- yap 6.2.2 does not work on PPC (bug #790625) + * Sat Jan 14 2012 Fedora Release Engineering - 6.2.2-2 - Rebuilt for https://fedoraproject.org/wiki/Fedora_17_Mass_Rebuild From ee40d15c6ffa134a84d8dd1e257e28360ea7e98c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Petr=20P=C3=ADsa=C5=99?= Date: Thu, 23 Feb 2012 15:28:16 +0100 Subject: [PATCH 47/68] Remove PPC conditions from the spec --- yap.spec | 3 --- 1 file changed, 3 deletions(-) diff --git a/yap.spec b/yap.spec index f9b139f..f63fde3 100644 --- a/yap.spec +++ b/yap.spec @@ -144,9 +144,6 @@ make %{?_smp_mflags} info %install -%ifarch ppc ppc64 -ulimit -s unlimited -%endif make DESTDIR=$RPM_BUILD_ROOT install make DESTDIR=$RPM_BUILD_ROOT install_info From 83343f6a0aaae1e6b57383a067d4ec3e4a522945 Mon Sep 17 00:00:00 2001 From: Dennis Gilmore Date: Sun, 22 Jul 2012 02:34:43 -0500 Subject: [PATCH 48/68] - Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild --- yap.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/yap.spec b/yap.spec index f63fde3..27f2c70 100644 --- a/yap.spec +++ b/yap.spec @@ -4,7 +4,7 @@ Name: yap Version: 6.2.2 -Release: 3%{?dist} +Release: 4%{?dist} Summary: High-performance Prolog Compiler Group: Development/Languages # README Perl Artistic license 2 and the FSF's LGPL @@ -223,6 +223,9 @@ fi %changelog +* Sun Jul 22 2012 Fedora Release Engineering - 6.2.2-4 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild + * Thu Feb 23 2012 Petr Pisar - 6.2.2-3 - yap 6.2.2 does not work on PPC (bug #790625) From 1246ea087880eec48940207420518083d9c98f01 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Petr=20P=C3=ADsa=C5=99?= Date: Mon, 7 Jan 2013 17:42:05 +0100 Subject: [PATCH 49/68] Fix off-by-one error when initializing yap_flags --- ...ne-error-when-initializing-yap_flags.patch | 27 +++++++++++++++++++ yap.spec | 8 +++++- 2 files changed, 34 insertions(+), 1 deletion(-) create mode 100644 yap-6.2.2-Off-by-one-error-when-initializing-yap_flags.patch diff --git a/yap-6.2.2-Off-by-one-error-when-initializing-yap_flags.patch b/yap-6.2.2-Off-by-one-error-when-initializing-yap_flags.patch new file mode 100644 index 0000000..e0b59a5 --- /dev/null +++ b/yap-6.2.2-Off-by-one-error-when-initializing-yap_flags.patch @@ -0,0 +1,27 @@ +From 1fba7f121d0f3e93faa94be4dbeba383176717f6 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Petr=20P=C3=ADsa=C5=99?= +Date: Mon, 7 Jan 2013 17:31:08 +0100 +Subject: [PATCH] Off-by-one error when initializing yap_flags + +The yap_flags_field of all_heap_codes structure is of type +Int[LAST_FLAG], thus the loop should iterate from 0 to LAST_FLAG - 1. +--- + C/init.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/C/init.c b/C/init.c +index dda09cc..8f01864 100755 +--- a/C/init.c ++++ b/C/init.c +@@ -1348,7 +1348,7 @@ Yap_InitWorkspace(UInt Heap, UInt Stack, UInt Trail, UInt Atts, UInt max_table_s + Yap_InitTime (); + /* InitAbsmi must be done before InitCodes */ + /* This must be done before initialising predicates */ +- for (i = 0; i <= LAST_FLAG; i++) { ++ for (i = 0; i < LAST_FLAG; i++) { + yap_flags[i] = 0; + } + #ifdef MPW +-- +1.7.11.7 + diff --git a/yap.spec b/yap.spec index 27f2c70..5b09f26 100644 --- a/yap.spec +++ b/yap.spec @@ -4,7 +4,7 @@ Name: yap Version: 6.2.2 -Release: 4%{?dist} +Release: 5%{?dist} Summary: High-performance Prolog Compiler Group: Development/Languages # README Perl Artistic license 2 and the FSF's LGPL @@ -27,6 +27,8 @@ Patch7: yap-6.2.0-Do-not-install-info-dir-index.patch Patch8: yap-6.2.0-gprof-macro.patch # Fix compilation of PLStream package on PPC Patch9: yap-6.2.0-Remove-feature-macro.patch +# Reported to upstream +Patch10: yap-6.2.2-Off-by-one-error-when-initializing-yap_flags.patch # yap 6.2.2 does not work on PPC (bug #790625) ExcludeArch: ppc ppc64 BuildRequires: autoconf @@ -83,6 +85,7 @@ Documentation for Yap. %patch7 -p1 -b .do_not_install_info_index %patch8 -p1 -b .macro %patch9 -p1 -b .remove_feature_macro +%patch10 -p1 -b .initialization # remove redundant RPATH sed -i 's/-Wl,-R\(,\)\{0,1\}\\$(LIBDIR)//' configure.in @@ -223,6 +226,9 @@ fi %changelog +* Mon Jan 07 2013 Petr Pisar - 6.2.2-5 +- Fix off-by-one error when initializing yap_flags + * Sun Jul 22 2012 Fedora Release Engineering - 6.2.2-4 - Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild From d282bdccd8b2785dc882e7fc1c1bc1541d261caf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Petr=20P=C3=ADsa=C5=99?= Date: Mon, 7 Jan 2013 18:07:53 +0100 Subject: [PATCH 50/68] Complete fix for accessing yap_flags array --- ...ne-error-when-initializing-yap_flags.patch | 20 ++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/yap-6.2.2-Off-by-one-error-when-initializing-yap_flags.patch b/yap-6.2.2-Off-by-one-error-when-initializing-yap_flags.patch index e0b59a5..a376743 100644 --- a/yap-6.2.2-Off-by-one-error-when-initializing-yap_flags.patch +++ b/yap-6.2.2-Off-by-one-error-when-initializing-yap_flags.patch @@ -1,4 +1,4 @@ -From 1fba7f121d0f3e93faa94be4dbeba383176717f6 Mon Sep 17 00:00:00 2001 +From fa8f0f7b2d107770ae4d37bc77c902eafc59c86c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Petr=20P=C3=ADsa=C5=99?= Date: Mon, 7 Jan 2013 17:31:08 +0100 Subject: [PATCH] Off-by-one error when initializing yap_flags @@ -6,8 +6,9 @@ Subject: [PATCH] Off-by-one error when initializing yap_flags The yap_flags_field of all_heap_codes structure is of type Int[LAST_FLAG], thus the loop should iterate from 0 to LAST_FLAG - 1. --- - C/init.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) + C/init.c | 2 +- + C/stdpreds.c | 2 +- + 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/C/init.c b/C/init.c index dda09cc..8f01864 100755 @@ -22,6 +23,19 @@ index dda09cc..8f01864 100755 yap_flags[i] = 0; } #ifdef MPW +diff --git a/C/stdpreds.c b/C/stdpreds.c +index a4c0e86..8a4183f 100755 +--- a/C/stdpreds.c ++++ b/C/stdpreds.c +@@ -3637,7 +3637,7 @@ p_access_yap_flags(void) + return(FALSE); + } + flag = IntOfTerm(tflag); +- if (flag < 0 || flag > NUMBER_OF_YAP_FLAGS) { ++ if (flag < 0 || flag >= NUMBER_OF_YAP_FLAGS) { + return(FALSE); + } + #ifdef TABLING -- 1.7.11.7 From 661276ad6abe16495174c1d803640cabc7d71160 Mon Sep 17 00:00:00 2001 From: Dennis Gilmore Date: Thu, 14 Feb 2013 22:09:35 -0600 Subject: [PATCH 51/68] - Rebuilt for https://fedoraproject.org/wiki/Fedora_19_Mass_Rebuild --- yap.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/yap.spec b/yap.spec index 5b09f26..8df7e09 100644 --- a/yap.spec +++ b/yap.spec @@ -4,7 +4,7 @@ Name: yap Version: 6.2.2 -Release: 5%{?dist} +Release: 6%{?dist} Summary: High-performance Prolog Compiler Group: Development/Languages # README Perl Artistic license 2 and the FSF's LGPL @@ -226,6 +226,9 @@ fi %changelog +* Fri Feb 15 2013 Fedora Release Engineering - 6.2.2-6 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_19_Mass_Rebuild + * Mon Jan 07 2013 Petr Pisar - 6.2.2-5 - Fix off-by-one error when initializing yap_flags From bea198350f2702212bb4ff394683c42a7cf11f6d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Petr=20P=C3=ADsa=C5=99?= Date: Thu, 28 Mar 2013 08:44:41 +0100 Subject: [PATCH 52/68] Update config.sub to support aarch64 --- yap.spec | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/yap.spec b/yap.spec index 8df7e09..041dd3e 100644 --- a/yap.spec +++ b/yap.spec @@ -4,7 +4,7 @@ Name: yap Version: 6.2.2 -Release: 6%{?dist} +Release: 7%{?dist} Summary: High-performance Prolog Compiler Group: Development/Languages # README Perl Artistic license 2 and the FSF's LGPL @@ -32,6 +32,8 @@ Patch10: yap-6.2.2-Off-by-one-error-when-initializing-yap_flags.patch # yap 6.2.2 does not work on PPC (bug #790625) ExcludeArch: ppc ppc64 BuildRequires: autoconf +# Update config.sub to support aarch64, bug #926852 +BuildRequires: automake BuildRequires: gmp-devel BuildRequires: mysql-devel # TODO: BuildRequires: openmpi-devel @@ -95,6 +97,9 @@ sed -i 's/-Wl,-R/-Wl,--enable-new-dtags,-R/g' configure.in # Add soname to library sed -i -e 's/\(-soname=\$DYNYAPLIB\)/\1.%{version}/' configure.in +# Update config.sub to support aarch64, bug #926852 +cp -p %{_datadir}/automake-*/config.{sub,guess} . +cp -p %{_datadir}/automake-*/config.{sub,guess} packages/jpl # Regerenate configure because of patching autoconf @@ -226,6 +231,9 @@ fi %changelog +* Thu Mar 28 2013 Petr Pisar - 6.2.2-7 +- Update config.sub to support aarch64 (bug #926852) + * Fri Feb 15 2013 Fedora Release Engineering - 6.2.2-6 - Rebuilt for https://fedoraproject.org/wiki/Fedora_19_Mass_Rebuild From 860508bfdc2e8b16606703bfe604361ba89e631e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Petr=20P=C3=ADsa=C5=99?= Date: Thu, 28 Mar 2013 10:20:12 +0100 Subject: [PATCH 53/68] Adjust to Texinfo 5 --- ...-not-allow-bullet-as-table-indicator.patch | 34 +++++++++++++++++++ yap.spec | 4 +++ 2 files changed, 38 insertions(+) create mode 100644 yap-6.2.2-Texinfo-5-does-not-allow-bullet-as-table-indicator.patch diff --git a/yap-6.2.2-Texinfo-5-does-not-allow-bullet-as-table-indicator.patch b/yap-6.2.2-Texinfo-5-does-not-allow-bullet-as-table-indicator.patch new file mode 100644 index 0000000..1c65631 --- /dev/null +++ b/yap-6.2.2-Texinfo-5-does-not-allow-bullet-as-table-indicator.patch @@ -0,0 +1,34 @@ +From 04fae092c7dd5e55846073887a9604e1008cbc82 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Petr=20P=C3=ADsa=C5=99?= +Date: Thu, 28 Mar 2013 10:13:43 +0100 +Subject: [PATCH] Texinfo 5 does not allow @bullet as @table indicator + +From Texinfo 5 documentation: + +Write the '@table' command at the beginning of a line, after a blank +line, and follow it on the same line with an argument that is +a Texinfo "indicating" command [...] You may also use the '@asis' +command as an argument to '@table'. '@asis' is a command that does +nothing; + +Documentation for Indicating commands does not list @bullet. +--- + docs/yap.tex | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/docs/yap.tex b/docs/yap.tex +index 162a184..df40c71 100644 +--- a/docs/yap.tex ++++ b/docs/yap.tex +@@ -15820,7 +15820,7 @@ be lost. + We next discuss several issues on trying to make Prolog programs run + fast in YAP. We assume two different programming styles: + +-@table @bullet ++@table @asis + @item Execution of @emph{deterministic} programs often + boils down to a recursive loop of the form: + @example +-- +1.8.1.4 + diff --git a/yap.spec b/yap.spec index 041dd3e..c6e2222 100644 --- a/yap.spec +++ b/yap.spec @@ -30,6 +30,8 @@ Patch9: yap-6.2.0-Remove-feature-macro.patch # Reported to upstream Patch10: yap-6.2.2-Off-by-one-error-when-initializing-yap_flags.patch # yap 6.2.2 does not work on PPC (bug #790625) +# Reported to upstream +Patch11: yap-6.2.2-Texinfo-5-does-not-allow-bullet-as-table-indicator.patch ExcludeArch: ppc ppc64 BuildRequires: autoconf # Update config.sub to support aarch64, bug #926852 @@ -88,6 +90,7 @@ Documentation for Yap. %patch8 -p1 -b .macro %patch9 -p1 -b .remove_feature_macro %patch10 -p1 -b .initialization +%patch11 -p1 -b .texinfo5 # remove redundant RPATH sed -i 's/-Wl,-R\(,\)\{0,1\}\\$(LIBDIR)//' configure.in @@ -233,6 +236,7 @@ fi %changelog * Thu Mar 28 2013 Petr Pisar - 6.2.2-7 - Update config.sub to support aarch64 (bug #926852) +- Adjust to Texinfo 5 * Fri Feb 15 2013 Fedora Release Engineering - 6.2.2-6 - Rebuilt for https://fedoraproject.org/wiki/Fedora_19_Mass_Rebuild From 471f4747fd145eef3dbeda8ba3335521d3aad398 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Petr=20P=C3=ADsa=C5=99?= Date: Thu, 28 Mar 2013 10:34:18 +0100 Subject: [PATCH 54/68] Correct changelog dates --- yap.spec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/yap.spec b/yap.spec index c6e2222..6895818 100644 --- a/yap.spec +++ b/yap.spec @@ -367,7 +367,7 @@ fi * Sat Jun 18 2005 Gerard Milmeister - 4.5.5-3 - Compiler fix for FC4 -* Fri Apr 7 2005 Michael Schwendt +* Fri Apr 6 2005 Michael Schwendt - rebuilt * Sat Feb 12 2005 Gerard Milmeister - 0:4.5.5-1 From 8fb0cbeeaae9771ee0592508af87e2f6caae6690 Mon Sep 17 00:00:00 2001 From: Dennis Gilmore Date: Sun, 4 Aug 2013 04:29:42 -0500 Subject: [PATCH 55/68] - Rebuilt for https://fedoraproject.org/wiki/Fedora_20_Mass_Rebuild --- yap.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/yap.spec b/yap.spec index 6895818..4212c3f 100644 --- a/yap.spec +++ b/yap.spec @@ -4,7 +4,7 @@ Name: yap Version: 6.2.2 -Release: 7%{?dist} +Release: 8%{?dist} Summary: High-performance Prolog Compiler Group: Development/Languages # README Perl Artistic license 2 and the FSF's LGPL @@ -234,6 +234,9 @@ fi %changelog +* Sun Aug 04 2013 Fedora Release Engineering - 6.2.2-8 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_20_Mass_Rebuild + * Thu Mar 28 2013 Petr Pisar - 6.2.2-7 - Update config.sub to support aarch64 (bug #926852) - Adjust to Texinfo 5 From 3ec3d93b126d082183e3c86f6eb250f5527e2507 Mon Sep 17 00:00:00 2001 From: Jaromir Capik Date: Mon, 19 May 2014 16:20:11 +0200 Subject: [PATCH 56/68] Replacing ppc64 with the power64 macro --- yap.spec | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/yap.spec b/yap.spec index 4212c3f..1a1da21 100644 --- a/yap.spec +++ b/yap.spec @@ -4,7 +4,7 @@ Name: yap Version: 6.2.2 -Release: 8%{?dist} +Release: 9%{?dist} Summary: High-performance Prolog Compiler Group: Development/Languages # README Perl Artistic license 2 and the FSF's LGPL @@ -32,7 +32,7 @@ Patch10: yap-6.2.2-Off-by-one-error-when-initializing-yap_flags.patch # yap 6.2.2 does not work on PPC (bug #790625) # Reported to upstream Patch11: yap-6.2.2-Texinfo-5-does-not-allow-bullet-as-table-indicator.patch -ExcludeArch: ppc ppc64 +ExcludeArch: ppc %{power64} BuildRequires: autoconf # Update config.sub to support aarch64, bug #926852 BuildRequires: automake @@ -234,6 +234,9 @@ fi %changelog +* Mon May 19 2014 Jaromir Capik - 6.2.2-9 +- Replacing ppc64 with the power64 macro + * Sun Aug 04 2013 Fedora Release Engineering - 6.2.2-8 - Rebuilt for https://fedoraproject.org/wiki/Fedora_20_Mass_Rebuild From ebcec3e68867b76484a61b82327ad8d59d091c2b Mon Sep 17 00:00:00 2001 From: Dennis Gilmore Date: Sat, 7 Jun 2014 12:43:06 -0500 Subject: [PATCH 57/68] - Rebuilt for https://fedoraproject.org/wiki/Fedora_21_Mass_Rebuild --- yap.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/yap.spec b/yap.spec index 1a1da21..1502b37 100644 --- a/yap.spec +++ b/yap.spec @@ -4,7 +4,7 @@ Name: yap Version: 6.2.2 -Release: 9%{?dist} +Release: 10%{?dist} Summary: High-performance Prolog Compiler Group: Development/Languages # README Perl Artistic license 2 and the FSF's LGPL @@ -234,6 +234,9 @@ fi %changelog +* Sat Jun 07 2014 Fedora Release Engineering - 6.2.2-10 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_Mass_Rebuild + * Mon May 19 2014 Jaromir Capik - 6.2.2-9 - Replacing ppc64 with the power64 macro From cf30181d806f6c9ea8f49b494f2b2484c0eb1933 Mon Sep 17 00:00:00 2001 From: Peter Robinson Date: Mon, 18 Aug 2014 11:18:10 +0000 Subject: [PATCH 58/68] - Rebuilt for https://fedoraproject.org/wiki/Fedora_21_22_Mass_Rebuild --- yap.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/yap.spec b/yap.spec index 1502b37..734d1d0 100644 --- a/yap.spec +++ b/yap.spec @@ -4,7 +4,7 @@ Name: yap Version: 6.2.2 -Release: 10%{?dist} +Release: 11%{?dist} Summary: High-performance Prolog Compiler Group: Development/Languages # README Perl Artistic license 2 and the FSF's LGPL @@ -234,6 +234,9 @@ fi %changelog +* Mon Aug 18 2014 Fedora Release Engineering - 6.2.2-11 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_22_Mass_Rebuild + * Sat Jun 07 2014 Fedora Release Engineering - 6.2.2-10 - Rebuilt for https://fedoraproject.org/wiki/Fedora_21_Mass_Rebuild From e1d0a468a6cea0881564e0fc671cb4f14cb0befe Mon Sep 17 00:00:00 2001 From: Kevin Fenzi Date: Wed, 20 Aug 2014 17:34:00 -0600 Subject: [PATCH 59/68] Rebuild for rpm bug 1131892 --- yap.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/yap.spec b/yap.spec index 734d1d0..c88e9c3 100644 --- a/yap.spec +++ b/yap.spec @@ -4,7 +4,7 @@ Name: yap Version: 6.2.2 -Release: 11%{?dist} +Release: 12%{?dist} Summary: High-performance Prolog Compiler Group: Development/Languages # README Perl Artistic license 2 and the FSF's LGPL @@ -234,6 +234,9 @@ fi %changelog +* Wed Aug 20 2014 Kevin Fenzi - 6.2.2-12 +- Rebuild for rpm bug 1131892 + * Mon Aug 18 2014 Fedora Release Engineering - 6.2.2-11 - Rebuilt for https://fedoraproject.org/wiki/Fedora_21_22_Mass_Rebuild From cbff981ec5af2f6649ef0ceb3d285bce1fe806b7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Petr=20P=C3=ADsa=C5=99?= Date: Thu, 12 Feb 2015 17:56:03 +0100 Subject: [PATCH 60/68] Fix regression with GCC 5.0 --- ...template-defined-in-a-class-cannot-b.patch | 62 +++++++++++++++++++ yap.spec | 9 ++- 2 files changed, 70 insertions(+), 1 deletion(-) create mode 100644 yap-6.2.2-Friend-function-template-defined-in-a-class-cannot-b.patch diff --git a/yap-6.2.2-Friend-function-template-defined-in-a-class-cannot-b.patch b/yap-6.2.2-Friend-function-template-defined-in-a-class-cannot-b.patch new file mode 100644 index 0000000..6a018c8 --- /dev/null +++ b/yap-6.2.2-Friend-function-template-defined-in-a-class-cannot-b.patch @@ -0,0 +1,62 @@ +From 92d5303c23fcc698233b754fc8f180df1fa2aa9b Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Petr=20P=C3=ADsa=C5=99?= +Date: Thu, 12 Feb 2015 17:37:57 +0100 +Subject: [PATCH] Friend function template defined in a class cannot be used + without ADL +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +GCC 5.0 stopped searching friend function templates without ADL. + +The Clause_new() function can be kept a friend but must be defined out +of scope of the Clause class, or the callers must use fully +qualificated name (Clause::Clause_new()) and the method must be +changed from friend to static. + +So far my poor C++ knowledge. + +Signed-off-by: Petr Písař +--- + packages/swi-minisat2/C/Solver.C | 4 ++-- + packages/swi-minisat2/C/SolverTypes.h | 2 +- + 2 files changed, 3 insertions(+), 3 deletions(-) + +diff --git a/packages/swi-minisat2/C/Solver.C b/packages/swi-minisat2/C/Solver.C +index 2de3e6d..1bcdbff 100644 +--- a/packages/swi-minisat2/C/Solver.C ++++ b/packages/swi-minisat2/C/Solver.C +@@ -120,7 +120,7 @@ bool Solver::addClause(vec& ps) + uncheckedEnqueue(ps[0]); + return ok = (propagate() == NULL); + }else{ +- Clause* c = Clause_new(ps, false); ++ Clause* c = Clause::Clause_new(ps, false); + clauses.push(c); + attachClause(*c); + } +@@ -599,7 +599,7 @@ lbool Solver::search(int nof_conflicts, int nof_learnts) + if (learnt_clause.size() == 1){ + uncheckedEnqueue(learnt_clause[0]); + }else{ +- Clause* c = Clause_new(learnt_clause, true); ++ Clause* c = Clause::Clause_new(learnt_clause, true); + learnts.push(c); + attachClause(*c); + claBumpActivity(*c); +diff --git a/packages/swi-minisat2/C/SolverTypes.h b/packages/swi-minisat2/C/SolverTypes.h +index 47e3023..919b60b 100644 +--- a/packages/swi-minisat2/C/SolverTypes.h ++++ b/packages/swi-minisat2/C/SolverTypes.h +@@ -119,7 +119,7 @@ public: + + // -- use this function instead: + template +- friend Clause* Clause_new(const V& ps, bool learnt = false) { ++ static Clause* Clause_new(const V& ps, bool learnt = false) { + assert(sizeof(Lit) == sizeof(uint32_t)); + assert(sizeof(float) == sizeof(uint32_t)); + void* mem = malloc(sizeof(Clause) + sizeof(uint32_t)*(ps.size())); +-- +1.9.3 + diff --git a/yap.spec b/yap.spec index c88e9c3..df96215 100644 --- a/yap.spec +++ b/yap.spec @@ -4,7 +4,7 @@ Name: yap Version: 6.2.2 -Release: 12%{?dist} +Release: 13%{?dist} Summary: High-performance Prolog Compiler Group: Development/Languages # README Perl Artistic license 2 and the FSF's LGPL @@ -32,6 +32,9 @@ Patch10: yap-6.2.2-Off-by-one-error-when-initializing-yap_flags.patch # yap 6.2.2 does not work on PPC (bug #790625) # Reported to upstream Patch11: yap-6.2.2-Texinfo-5-does-not-allow-bullet-as-table-indicator.patch +# Fix regression with GCC 5.0 +# +Patch12: yap-6.2.2-Friend-function-template-defined-in-a-class-cannot-b.patch ExcludeArch: ppc %{power64} BuildRequires: autoconf # Update config.sub to support aarch64, bug #926852 @@ -91,6 +94,7 @@ Documentation for Yap. %patch9 -p1 -b .remove_feature_macro %patch10 -p1 -b .initialization %patch11 -p1 -b .texinfo5 +%patch12 -p1 -b .gcc5 # remove redundant RPATH sed -i 's/-Wl,-R\(,\)\{0,1\}\\$(LIBDIR)//' configure.in @@ -234,6 +238,9 @@ fi %changelog +* Thu Feb 12 2015 Petr Pisar - 6.2.2-13 +- Fix regression with GCC 5.0 + * Wed Aug 20 2014 Kevin Fenzi - 6.2.2-12 - Rebuild for rpm bug 1131892 From f1f40796f7f5bb4e39b97d9641889238b9e4c53e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Petr=20P=C3=ADsa=C5=99?= Date: Wed, 15 Apr 2015 13:32:41 +0200 Subject: [PATCH 61/68] Disable private malloc on AArch64 --- yap.spec | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/yap.spec b/yap.spec index df96215..43fab95 100644 --- a/yap.spec +++ b/yap.spec @@ -4,7 +4,7 @@ Name: yap Version: 6.2.2 -Release: 13%{?dist} +Release: 14%{?dist} Summary: High-performance Prolog Compiler Group: Development/Languages # README Perl Artistic license 2 and the FSF's LGPL @@ -141,7 +141,13 @@ find -name '*.c' -exec chmod 0644 '{}' ';' %build # % define optflags $(echo $RPM_OPT_FLAGS | sed 's|-fstack-protector||') +# Private malloc does not work on AArch64, bug #1142068 %configure \ +%ifarch aarch64 + --enable-use-malloc \ +%else + --disable-use-malloc \ +%endif --enable-coroutining \ --enable-max-performance \ --enable-depth-limit \ @@ -238,6 +244,9 @@ fi %changelog +* Wed Apr 15 2015 Petr Pisar - 6.2.2-14 +- Disable private malloc on AArch64 (bug #1142068) + * Thu Feb 12 2015 Petr Pisar - 6.2.2-13 - Fix regression with GCC 5.0 From 9eb7f8bbf3bc7dfe5fe2b8595d317cc70d82496f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Petr=20P=C3=ADsa=C5=99?= Date: Wed, 15 Apr 2015 13:34:36 +0200 Subject: [PATCH 62/68] Correct change log entry date --- yap.spec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/yap.spec b/yap.spec index 43fab95..1b82436 100644 --- a/yap.spec +++ b/yap.spec @@ -398,7 +398,7 @@ fi * Sat Jun 18 2005 Gerard Milmeister - 4.5.5-3 - Compiler fix for FC4 -* Fri Apr 6 2005 Michael Schwendt +* Wed Apr 6 2005 Michael Schwendt - rebuilt * Sat Feb 12 2005 Gerard Milmeister - 0:4.5.5-1 From 0b81d6a014891a3e33ced71811bb61345b22b49a Mon Sep 17 00:00:00 2001 From: Dennis Gilmore Date: Fri, 19 Jun 2015 04:34:51 +0000 Subject: [PATCH 63/68] - Rebuilt for https://fedoraproject.org/wiki/Fedora_23_Mass_Rebuild --- yap.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/yap.spec b/yap.spec index 1b82436..affc182 100644 --- a/yap.spec +++ b/yap.spec @@ -4,7 +4,7 @@ Name: yap Version: 6.2.2 -Release: 14%{?dist} +Release: 15%{?dist} Summary: High-performance Prolog Compiler Group: Development/Languages # README Perl Artistic license 2 and the FSF's LGPL @@ -244,6 +244,9 @@ fi %changelog +* Fri Jun 19 2015 Fedora Release Engineering - 6.2.2-15 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_23_Mass_Rebuild + * Wed Apr 15 2015 Petr Pisar - 6.2.2-14 - Disable private malloc on AArch64 (bug #1142068) From 5f9640eb9778787b2535b4bd831f8eb4bf2a1262 Mon Sep 17 00:00:00 2001 From: Peter Robinson Date: Wed, 16 Dec 2015 02:56:21 +0000 Subject: [PATCH 64/68] Disable private malloc on power64 too --- yap.spec | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/yap.spec b/yap.spec index affc182..df19a1e 100644 --- a/yap.spec +++ b/yap.spec @@ -4,7 +4,7 @@ Name: yap Version: 6.2.2 -Release: 15%{?dist} +Release: 16%{?dist} Summary: High-performance Prolog Compiler Group: Development/Languages # README Perl Artistic license 2 and the FSF's LGPL @@ -35,7 +35,7 @@ Patch11: yap-6.2.2-Texinfo-5-does-not-allow-bullet-as-table-indicator.patch # Fix regression with GCC 5.0 # Patch12: yap-6.2.2-Friend-function-template-defined-in-a-class-cannot-b.patch -ExcludeArch: ppc %{power64} + BuildRequires: autoconf # Update config.sub to support aarch64, bug #926852 BuildRequires: automake @@ -104,7 +104,7 @@ sed -i 's/-Wl,-R/-Wl,--enable-new-dtags,-R/g' configure.in # Add soname to library sed -i -e 's/\(-soname=\$DYNYAPLIB\)/\1.%{version}/' configure.in -# Update config.sub to support aarch64, bug #926852 +# Update config.sub to support aarch64/ppc64le, bug #926852 cp -p %{_datadir}/automake-*/config.{sub,guess} . cp -p %{_datadir}/automake-*/config.{sub,guess} packages/jpl # Regerenate configure because of patching @@ -143,7 +143,7 @@ find -name '*.c' -exec chmod 0644 '{}' ';' # % define optflags $(echo $RPM_OPT_FLAGS | sed 's|-fstack-protector||') # Private malloc does not work on AArch64, bug #1142068 %configure \ -%ifarch aarch64 +%ifarch aarch64 %{power64} --enable-use-malloc \ %else --disable-use-malloc \ @@ -244,6 +244,9 @@ fi %changelog +* Wed Dec 16 2015 Peter Robinson 6.2.2-16 +- Disable private malloc on power64 too + * Fri Jun 19 2015 Fedora Release Engineering - 6.2.2-15 - Rebuilt for https://fedoraproject.org/wiki/Fedora_23_Mass_Rebuild From 730725ba455e29881cc0b07e7261968cff791288 Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Fri, 5 Feb 2016 03:56:07 +0000 Subject: [PATCH 65/68] - Rebuilt for https://fedoraproject.org/wiki/Fedora_24_Mass_Rebuild --- yap.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/yap.spec b/yap.spec index df19a1e..c6a5730 100644 --- a/yap.spec +++ b/yap.spec @@ -4,7 +4,7 @@ Name: yap Version: 6.2.2 -Release: 16%{?dist} +Release: 17%{?dist} Summary: High-performance Prolog Compiler Group: Development/Languages # README Perl Artistic license 2 and the FSF's LGPL @@ -244,6 +244,9 @@ fi %changelog +* Fri Feb 05 2016 Fedora Release Engineering - 6.2.2-17 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_24_Mass_Rebuild + * Wed Dec 16 2015 Peter Robinson 6.2.2-16 - Disable private malloc on power64 too From b15a44e6ad8b70cd4eb553d12ecd39223ae00b59 Mon Sep 17 00:00:00 2001 From: Igor Gnatenko Date: Thu, 12 Jan 2017 17:30:45 +0100 Subject: [PATCH 66/68] Rebuild for readline 7.x Signed-off-by: Igor Gnatenko --- yap.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/yap.spec b/yap.spec index c6a5730..9d2b5f4 100644 --- a/yap.spec +++ b/yap.spec @@ -4,7 +4,7 @@ Name: yap Version: 6.2.2 -Release: 17%{?dist} +Release: 18%{?dist} Summary: High-performance Prolog Compiler Group: Development/Languages # README Perl Artistic license 2 and the FSF's LGPL @@ -244,6 +244,9 @@ fi %changelog +* Thu Jan 12 2017 Igor Gnatenko - 6.2.2-18 +- Rebuild for readline 7.x + * Fri Feb 05 2016 Fedora Release Engineering - 6.2.2-17 - Rebuilt for https://fedoraproject.org/wiki/Fedora_24_Mass_Rebuild From 45b1c0bc9a8ac301cd5c42105d1e282748823baa Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Sat, 11 Feb 2017 18:14:49 +0000 Subject: [PATCH 67/68] - Rebuilt for https://fedoraproject.org/wiki/Fedora_26_Mass_Rebuild --- yap.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/yap.spec b/yap.spec index 9d2b5f4..cd0443a 100644 --- a/yap.spec +++ b/yap.spec @@ -4,7 +4,7 @@ Name: yap Version: 6.2.2 -Release: 18%{?dist} +Release: 19%{?dist} Summary: High-performance Prolog Compiler Group: Development/Languages # README Perl Artistic license 2 and the FSF's LGPL @@ -244,6 +244,9 @@ fi %changelog +* Sat Feb 11 2017 Fedora Release Engineering - 6.2.2-19 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_26_Mass_Rebuild + * Thu Jan 12 2017 Igor Gnatenko - 6.2.2-18 - Rebuild for readline 7.x From 124682cb274ffe980744b2fadc0d0dde2f294dc4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Petr=20P=C3=ADsa=C5=99?= Date: Fri, 3 Mar 2017 13:08:03 +0100 Subject: [PATCH 68/68] Fails to build with GCC 7, upstream does not respond (bug #1421711). --- .gitignore | 7 - Yap-5.1.3-soname.patch | 42 -- Yap-noni386.patch | 11 - dead.package | 1 + sources | 1 - yap-6.2.0-Do-not-install-README-etc.patch | 26 -- yap-6.2.0-Do-not-install-info-dir-index.patch | 32 -- ...2.0-Install-directory-for-info-pages.patch | 24 - ...Install-http-CSS-files-into-PLTARGET.patch | 30 -- ....0-Install-info-pages-non-executable.patch | 34 -- yap-6.2.0-Locate-mysql-by-mysql_config.patch | 25 - yap-6.2.0-Remove-feature-macro.patch | 27 -- yap-6.2.0-gprof-macro.patch | 14 - ...template-defined-in-a-class-cannot-b.patch | 62 --- ...ne-error-when-initializing-yap_flags.patch | 41 -- ...-not-allow-bullet-as-table-indicator.patch | 34 -- yap.spec | 429 ------------------ 17 files changed, 1 insertion(+), 839 deletions(-) delete mode 100644 .gitignore delete mode 100644 Yap-5.1.3-soname.patch delete mode 100644 Yap-noni386.patch create mode 100644 dead.package delete mode 100644 sources delete mode 100644 yap-6.2.0-Do-not-install-README-etc.patch delete mode 100644 yap-6.2.0-Do-not-install-info-dir-index.patch delete mode 100644 yap-6.2.0-Install-directory-for-info-pages.patch delete mode 100644 yap-6.2.0-Install-http-CSS-files-into-PLTARGET.patch delete mode 100644 yap-6.2.0-Install-info-pages-non-executable.patch delete mode 100644 yap-6.2.0-Locate-mysql-by-mysql_config.patch delete mode 100644 yap-6.2.0-Remove-feature-macro.patch delete mode 100644 yap-6.2.0-gprof-macro.patch delete mode 100644 yap-6.2.2-Friend-function-template-defined-in-a-class-cannot-b.patch delete mode 100644 yap-6.2.2-Off-by-one-error-when-initializing-yap_flags.patch delete mode 100644 yap-6.2.2-Texinfo-5-does-not-allow-bullet-as-table-indicator.patch delete mode 100644 yap.spec diff --git a/.gitignore b/.gitignore deleted file mode 100644 index 6225908..0000000 --- a/.gitignore +++ /dev/null @@ -1,7 +0,0 @@ -Yap-5.1.3.tar.gz -chr_translate_bootstrap1.pl -chr_translate_bootstrap2.pl -chr_translate.pl -guard_entailment.pl -/yap-6.2.0.tar.gz -/yap-6.2.2.tar.gz diff --git a/Yap-5.1.3-soname.patch b/Yap-5.1.3-soname.patch deleted file mode 100644 index d05937a..0000000 --- a/Yap-5.1.3-soname.patch +++ /dev/null @@ -1,42 +0,0 @@ -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/Yap-noni386.patch b/Yap-noni386.patch deleted file mode 100644 index ce01f3f..0000000 --- a/Yap-noni386.patch +++ /dev/null @@ -1,11 +0,0 @@ ---- Yap-4.5.5/H/absmi.h.noni386 2005-06-18 15:52:24.000000000 +0200 -+++ Yap-4.5.5/H/absmi.h 2005-06-18 15:52:34.000000000 +0200 -@@ -282,7 +282,7 @@ - - #define CACHE_A1() (SREG = (CELL *)ARG1) - --#define CACHED_A1() ((CELL)SREG) -+#define CACHED_A1() SREG - - #endif /* S_IN_MEM */ - diff --git a/dead.package b/dead.package new file mode 100644 index 0000000..9ed1316 --- /dev/null +++ b/dead.package @@ -0,0 +1 @@ +Fails to build with GCC 7, upstream does not respond (bug #1421711). diff --git a/sources b/sources deleted file mode 100644 index cf4d846..0000000 --- a/sources +++ /dev/null @@ -1 +0,0 @@ -5010225464ffe8b2aa3e0bca9d935937 yap-6.2.2.tar.gz diff --git a/yap-6.2.0-Do-not-install-README-etc.patch b/yap-6.2.0-Do-not-install-README-etc.patch deleted file mode 100644 index b5a4b57..0000000 --- a/yap-6.2.0-Do-not-install-README-etc.patch +++ /dev/null @@ -1,26 +0,0 @@ -From d9acef3be4ca926d0f138184535e3f16b15d6045 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Petr=20P=C3=ADsa=C5=99?= -Date: Wed, 22 Dec 2010 09:31:28 +0100 -Subject: [PATCH] Do not install README etc. - ---- - Makefile.in | 3 --- - 1 files changed, 0 insertions(+), 3 deletions(-) - -diff --git a/Makefile.in b/Makefile.in -index 522ac0a..8f37d05 100755 ---- a/Makefile.in -+++ b/Makefile.in -@@ -554,9 +554,6 @@ install_unix: startup.yss libYap.a - mkdir -p $(DESTDIR)$(SHAREDIR)/Yap - mkdir -p $(DESTDIR)$(SHAREDIR)/Yap/pl - mkdir -p $(DESTDIR)$(DOCSDIR) -- $(INSTALL) $(srcdir)/Artistic $(DESTDIR)$(DOCSDIR) -- $(INSTALL) $(srcdir)/README $(DESTDIR)$(DOCSDIR) -- $(INSTALL) $(srcdir)/COPYING $(DESTDIR)$(DOCSDIR) - for f in $(PL_SOURCES); do $(INSTALL) $$f $(DESTDIR)$(SHAREDIR)/Yap/pl; done - @INSTALL_DLLS@ (cd packages/PLStream; $(MAKE) install) - @INSTALL_DLLS@ (cd library/lammpi; $(MAKE) install) --- -1.7.3.4 - diff --git a/yap-6.2.0-Do-not-install-info-dir-index.patch b/yap-6.2.0-Do-not-install-info-dir-index.patch deleted file mode 100644 index 6cc701d..0000000 --- a/yap-6.2.0-Do-not-install-info-dir-index.patch +++ /dev/null @@ -1,32 +0,0 @@ -From 07a8f2b1e905d9133c057d2a2d83a2b7a5bb44ba Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Petr=20P=C3=ADsa=C5=99?= -Date: Wed, 22 Dec 2010 10:59:06 +0100 -Subject: [PATCH] Do not install info dir index - ---- - Makefile.in | 2 -- - 1 files changed, 0 insertions(+), 2 deletions(-) - -diff --git a/Makefile.in b/Makefile.in -index c513d0c..cbdfcaf 100755 ---- a/Makefile.in -+++ b/Makefile.in -@@ -717,7 +717,6 @@ install_info: - gzip --quiet --force $(DESTDIR)$(INFODIR)/yap.info*; \ - fi \ - fi; \ -- $(INSTALL_INFO) --quiet --section "Programming Languages" yap.info $(DESTDIR)$(INFODIR)/dir; \ - cd $(srcdir)/LGPL/pillow/doc ; \ - $(INSTALL_DATA) pillow_doc.info $(DESTDIR)$(INFODIR); \ - if test -e $(DESTDIR)$(INFODIR)/emacs.bz2; then \ -@@ -727,7 +726,6 @@ install_info: - gzip --quiet --force $(DESTDIR)$(INFODIR)/pillow_doc.info; \ - fi \ - fi; \ -- $(INSTALL_INFO) --quiet --section "Programming Languages" --entry="`cat pillow_doc.infoindex`" --info-dir=$(DESTDIR)$(INFODIR) pillow_doc.info - - install_docs: - $(MAKE) pdf --- -1.7.3.4 - diff --git a/yap-6.2.0-Install-directory-for-info-pages.patch b/yap-6.2.0-Install-directory-for-info-pages.patch deleted file mode 100644 index cbe8fb5..0000000 --- a/yap-6.2.0-Install-directory-for-info-pages.patch +++ /dev/null @@ -1,24 +0,0 @@ -From d6ce7191c9dcac1681a2b29d68db0858133405c3 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Petr=20P=C3=ADsa=C5=99?= -Date: Tue, 21 Dec 2010 11:31:37 +0100 -Subject: [PATCH] Install directory for info pages - ---- - Makefile.in | 1 + - 1 files changed, 1 insertions(+), 0 deletions(-) - -diff --git a/Makefile.in b/Makefile.in -index 5fbf662..522ac0a 100755 ---- a/Makefile.in -+++ b/Makefile.in -@@ -711,6 +711,7 @@ yap.dll: libYap.a - - install_info: - $(MAKE) info; \ -+ mkdir -p $(DESTDIR)$(INFODIR); \ - $(INSTALL) yap.info* $(DESTDIR)$(INFODIR); \ - if test -e $(DESTDIR)$(INFODIR)/emacs.bz2; then \ - bzip2 --quiet --force $(DESTDIR)$(INFODIR)/yap.info*; \ --- -1.7.3.4 - diff --git a/yap-6.2.0-Install-http-CSS-files-into-PLTARGET.patch b/yap-6.2.0-Install-http-CSS-files-into-PLTARGET.patch deleted file mode 100644 index 6b3f949..0000000 --- a/yap-6.2.0-Install-http-CSS-files-into-PLTARGET.patch +++ /dev/null @@ -1,30 +0,0 @@ -From 1ea44f8db749d81a790c55d63bfa4c1dbd5cb211 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Petr=20P=C3=ADsa=C5=99?= -Date: Tue, 21 Dec 2010 12:59:55 +0100 -Subject: [PATCH] Install http CSS files into PLTARGET - ---- - packages/http/Makefile.in | 4 ++-- - 1 files changed, 2 insertions(+), 2 deletions(-) - -diff --git a/packages/http/Makefile.in b/packages/http/Makefile.in -index 8609697..1c3dbda 100755 ---- a/packages/http/Makefile.in -+++ b/packages/http/Makefile.in -@@ -111,11 +111,11 @@ install: $(LIBPL) $(SOLIBS) - $(INSTALL_PROGRAM) $(SOLIBS) $(BINTARGET) - mkdir -p $(PLTARGET) - mkdir -p $(PLTARGET)/web/icons -- mkdir -p $(DESTDIR)$(LIBDIR)/web/css -+ mkdir -p $(PLTARGET)/web/css - $(INSTALL_DATA) $(LIBPL) $(PLTARGET) - $(INSTALL_DATA) $(srcdir)/README $(PLTARGET) - $(INSTALL_DATA) $(srcdir)/web/icons/*.png $(PLTARGET)/web/icons -- $(INSTALL_DATA) $(srcdir)/web/css/*.css $(DESTDIR)$(LIBDIR)/web/css -+ $(INSTALL_DATA) $(srcdir)/web/css/*.css $(PLTARGET)/web/css - $(PL) -f none -g make -t halt - - ln-install: $(LIBPL) --- -1.7.3.4 - diff --git a/yap-6.2.0-Install-info-pages-non-executable.patch b/yap-6.2.0-Install-info-pages-non-executable.patch deleted file mode 100644 index 44b2837..0000000 --- a/yap-6.2.0-Install-info-pages-non-executable.patch +++ /dev/null @@ -1,34 +0,0 @@ -From 84f7e2e5ac18dd130d1656b677d40ebdd7cda9a1 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Petr=20P=C3=ADsa=C5=99?= -Date: Wed, 22 Dec 2010 10:18:17 +0100 -Subject: [PATCH] Install info pages non-executable - ---- - Makefile.in | 4 ++-- - 1 files changed, 2 insertions(+), 2 deletions(-) - -diff --git a/Makefile.in b/Makefile.in -index 8f37d05..c513d0c 100755 ---- a/Makefile.in -+++ b/Makefile.in -@@ -709,7 +709,7 @@ yap.dll: libYap.a - install_info: - $(MAKE) info; \ - mkdir -p $(DESTDIR)$(INFODIR); \ -- $(INSTALL) yap.info* $(DESTDIR)$(INFODIR); \ -+ $(INSTALL_DATA) yap.info* $(DESTDIR)$(INFODIR); \ - if test -e $(DESTDIR)$(INFODIR)/emacs.bz2; then \ - bzip2 --quiet --force $(DESTDIR)$(INFODIR)/yap.info*; \ - else \ -@@ -719,7 +719,7 @@ install_info: - fi; \ - $(INSTALL_INFO) --quiet --section "Programming Languages" yap.info $(DESTDIR)$(INFODIR)/dir; \ - cd $(srcdir)/LGPL/pillow/doc ; \ -- $(INSTALL) pillow_doc.info $(DESTDIR)$(INFODIR); \ -+ $(INSTALL_DATA) pillow_doc.info $(DESTDIR)$(INFODIR); \ - if test -e $(DESTDIR)$(INFODIR)/emacs.bz2; then \ - bzip2 --quiet --force $(DESTDIR)$(INFODIR)/pillow_doc.info; \ - else \ --- -1.7.3.4 - diff --git a/yap-6.2.0-Locate-mysql-by-mysql_config.patch b/yap-6.2.0-Locate-mysql-by-mysql_config.patch deleted file mode 100644 index ae81528..0000000 --- a/yap-6.2.0-Locate-mysql-by-mysql_config.patch +++ /dev/null @@ -1,25 +0,0 @@ -From 131213c12d09cdce8a56b5148ce753b0f5ae8e77 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Petr=20P=C3=ADsa=C5=99?= -Date: Tue, 21 Dec 2010 10:32:02 +0100 -Subject: [PATCH] Locate mysql by mysql_config - ---- - configure.in | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -diff --git a/configure.in b/configure.in -index 4ce9538..80208e5 100755 ---- a/configure.in -+++ b/configure.in -@@ -665,7 +665,7 @@ then - if test "$yap_cv_mysql" = yes - then - YAP_EXTRAS="$YAP_EXTRAS -DMYDDAS_MYSQL" -- LIBS="$LIBS -L${yap_cv_myddas}/lib/mysql -lmysqlclient " -+ LIBS="$LIBS $(mysql_config --libs) " - fi - - dnl check for odbc --- -1.7.3.4 - diff --git a/yap-6.2.0-Remove-feature-macro.patch b/yap-6.2.0-Remove-feature-macro.patch deleted file mode 100644 index 75201ee..0000000 --- a/yap-6.2.0-Remove-feature-macro.patch +++ /dev/null @@ -1,27 +0,0 @@ -From 9419d68dc09a4e3f7adfe7e654ef3952327cd9bf Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Petr=20P=C3=ADsa=C5=99?= -Date: Wed, 7 Dec 2011 14:14:25 +0100 -Subject: [PATCH] Remove feature macro - -This macro clashes with struct ppc_debug_info member in -on PPC. The macro is not used anywhere in yap. ---- - packages/PLStream/pl-incl.h | 2 -- - 1 files changed, 0 insertions(+), 2 deletions(-) - -diff --git a/packages/PLStream/pl-incl.h b/packages/PLStream/pl-incl.h -index aa7b99c..8bf63de 100755 ---- a/packages/PLStream/pl-incl.h -+++ b/packages/PLStream/pl-incl.h -@@ -363,8 +363,6 @@ typedef struct PL_local_data { - - #define usedStack(D) 0 - --#define features (LD->feature.mask) -- - extern PL_local_data_t lds; - - #define exception_term (LD->exception.term) --- -1.7.7.4 - diff --git a/yap-6.2.0-gprof-macro.patch b/yap-6.2.0-gprof-macro.patch deleted file mode 100644 index 1d18164..0000000 --- a/yap-6.2.0-gprof-macro.patch +++ /dev/null @@ -1,14 +0,0 @@ -diff -up yap-6/C/gprof.c.macro yap-6/C/gprof.c ---- yap-6/C/gprof.c.macro 2011-06-23 14:45:25.000000000 +0200 -+++ yap-6/C/gprof.c 2011-06-23 14:45:43.000000000 +0200 -@@ -102,8 +102,8 @@ typedef greg_t context_reg; - - #else - --#define CONTEXT_PC NULL --#define CONTEXT_BP NULL -+#define CONTEXT_PC(scv) NULL -+#define CONTEXT_BP(scv) NULL - - #endif - diff --git a/yap-6.2.2-Friend-function-template-defined-in-a-class-cannot-b.patch b/yap-6.2.2-Friend-function-template-defined-in-a-class-cannot-b.patch deleted file mode 100644 index 6a018c8..0000000 --- a/yap-6.2.2-Friend-function-template-defined-in-a-class-cannot-b.patch +++ /dev/null @@ -1,62 +0,0 @@ -From 92d5303c23fcc698233b754fc8f180df1fa2aa9b Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Petr=20P=C3=ADsa=C5=99?= -Date: Thu, 12 Feb 2015 17:37:57 +0100 -Subject: [PATCH] Friend function template defined in a class cannot be used - without ADL -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -GCC 5.0 stopped searching friend function templates without ADL. - -The Clause_new() function can be kept a friend but must be defined out -of scope of the Clause class, or the callers must use fully -qualificated name (Clause::Clause_new()) and the method must be -changed from friend to static. - -So far my poor C++ knowledge. - -Signed-off-by: Petr Písař ---- - packages/swi-minisat2/C/Solver.C | 4 ++-- - packages/swi-minisat2/C/SolverTypes.h | 2 +- - 2 files changed, 3 insertions(+), 3 deletions(-) - -diff --git a/packages/swi-minisat2/C/Solver.C b/packages/swi-minisat2/C/Solver.C -index 2de3e6d..1bcdbff 100644 ---- a/packages/swi-minisat2/C/Solver.C -+++ b/packages/swi-minisat2/C/Solver.C -@@ -120,7 +120,7 @@ bool Solver::addClause(vec& ps) - uncheckedEnqueue(ps[0]); - return ok = (propagate() == NULL); - }else{ -- Clause* c = Clause_new(ps, false); -+ Clause* c = Clause::Clause_new(ps, false); - clauses.push(c); - attachClause(*c); - } -@@ -599,7 +599,7 @@ lbool Solver::search(int nof_conflicts, int nof_learnts) - if (learnt_clause.size() == 1){ - uncheckedEnqueue(learnt_clause[0]); - }else{ -- Clause* c = Clause_new(learnt_clause, true); -+ Clause* c = Clause::Clause_new(learnt_clause, true); - learnts.push(c); - attachClause(*c); - claBumpActivity(*c); -diff --git a/packages/swi-minisat2/C/SolverTypes.h b/packages/swi-minisat2/C/SolverTypes.h -index 47e3023..919b60b 100644 ---- a/packages/swi-minisat2/C/SolverTypes.h -+++ b/packages/swi-minisat2/C/SolverTypes.h -@@ -119,7 +119,7 @@ public: - - // -- use this function instead: - template -- friend Clause* Clause_new(const V& ps, bool learnt = false) { -+ static Clause* Clause_new(const V& ps, bool learnt = false) { - assert(sizeof(Lit) == sizeof(uint32_t)); - assert(sizeof(float) == sizeof(uint32_t)); - void* mem = malloc(sizeof(Clause) + sizeof(uint32_t)*(ps.size())); --- -1.9.3 - diff --git a/yap-6.2.2-Off-by-one-error-when-initializing-yap_flags.patch b/yap-6.2.2-Off-by-one-error-when-initializing-yap_flags.patch deleted file mode 100644 index a376743..0000000 --- a/yap-6.2.2-Off-by-one-error-when-initializing-yap_flags.patch +++ /dev/null @@ -1,41 +0,0 @@ -From fa8f0f7b2d107770ae4d37bc77c902eafc59c86c Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Petr=20P=C3=ADsa=C5=99?= -Date: Mon, 7 Jan 2013 17:31:08 +0100 -Subject: [PATCH] Off-by-one error when initializing yap_flags - -The yap_flags_field of all_heap_codes structure is of type -Int[LAST_FLAG], thus the loop should iterate from 0 to LAST_FLAG - 1. ---- - C/init.c | 2 +- - C/stdpreds.c | 2 +- - 2 files changed, 2 insertions(+), 2 deletions(-) - -diff --git a/C/init.c b/C/init.c -index dda09cc..8f01864 100755 ---- a/C/init.c -+++ b/C/init.c -@@ -1348,7 +1348,7 @@ Yap_InitWorkspace(UInt Heap, UInt Stack, UInt Trail, UInt Atts, UInt max_table_s - Yap_InitTime (); - /* InitAbsmi must be done before InitCodes */ - /* This must be done before initialising predicates */ -- for (i = 0; i <= LAST_FLAG; i++) { -+ for (i = 0; i < LAST_FLAG; i++) { - yap_flags[i] = 0; - } - #ifdef MPW -diff --git a/C/stdpreds.c b/C/stdpreds.c -index a4c0e86..8a4183f 100755 ---- a/C/stdpreds.c -+++ b/C/stdpreds.c -@@ -3637,7 +3637,7 @@ p_access_yap_flags(void) - return(FALSE); - } - flag = IntOfTerm(tflag); -- if (flag < 0 || flag > NUMBER_OF_YAP_FLAGS) { -+ if (flag < 0 || flag >= NUMBER_OF_YAP_FLAGS) { - return(FALSE); - } - #ifdef TABLING --- -1.7.11.7 - diff --git a/yap-6.2.2-Texinfo-5-does-not-allow-bullet-as-table-indicator.patch b/yap-6.2.2-Texinfo-5-does-not-allow-bullet-as-table-indicator.patch deleted file mode 100644 index 1c65631..0000000 --- a/yap-6.2.2-Texinfo-5-does-not-allow-bullet-as-table-indicator.patch +++ /dev/null @@ -1,34 +0,0 @@ -From 04fae092c7dd5e55846073887a9604e1008cbc82 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Petr=20P=C3=ADsa=C5=99?= -Date: Thu, 28 Mar 2013 10:13:43 +0100 -Subject: [PATCH] Texinfo 5 does not allow @bullet as @table indicator - -From Texinfo 5 documentation: - -Write the '@table' command at the beginning of a line, after a blank -line, and follow it on the same line with an argument that is -a Texinfo "indicating" command [...] You may also use the '@asis' -command as an argument to '@table'. '@asis' is a command that does -nothing; - -Documentation for Indicating commands does not list @bullet. ---- - docs/yap.tex | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/docs/yap.tex b/docs/yap.tex -index 162a184..df40c71 100644 ---- a/docs/yap.tex -+++ b/docs/yap.tex -@@ -15820,7 +15820,7 @@ be lost. - We next discuss several issues on trying to make Prolog programs run - fast in YAP. We assume two different programming styles: - --@table @bullet -+@table @asis - @item Execution of @emph{deterministic} programs often - boils down to a recursive loop of the form: - @example --- -1.8.1.4 - diff --git a/yap.spec b/yap.spec deleted file mode 100644 index cd0443a..0000000 --- a/yap.spec +++ /dev/null @@ -1,429 +0,0 @@ -# BEAM is experimantal and some interpreter code unimplemented. See -# README.EAM.html for more details. -%global use_eam 0 - -Name: yap -Version: 6.2.2 -Release: 19%{?dist} -Summary: High-performance Prolog Compiler -Group: Development/Languages -# README Perl Artistic license 2 and the FSF's LGPL -# packages/ProbLog/ Artistic 2.0 -# COPYING LGPL -# LGPL/pillow/pillow.pl LGPLv2+ -# packages/clib/sha1/sha2.c BSD or GPL -# packages/http/examples/demo_threads.pl GPLv2+ -License: Artistic 2.0 and LGPLv2+ and (BSD or GPL+) and (GPLv2+) -URL: http://www.ncc.up.pt/~vsc/Yap/ -Source: %{url}%{name}-%{version}.tar.gz -Patch1: Yap-noni386.patch -Patch2: yap-6.2.0-Locate-mysql-by-mysql_config.patch -Patch3: yap-6.2.0-Install-directory-for-info-pages.patch -Patch4: yap-6.2.0-Install-http-CSS-files-into-PLTARGET.patch -Patch5: yap-6.2.0-Do-not-install-README-etc.patch -Patch6: yap-6.2.0-Install-info-pages-non-executable.patch -Patch7: yap-6.2.0-Do-not-install-info-dir-index.patch -# fix non-x86 build with recent gcc -Patch8: yap-6.2.0-gprof-macro.patch -# Fix compilation of PLStream package on PPC -Patch9: yap-6.2.0-Remove-feature-macro.patch -# Reported to upstream -Patch10: yap-6.2.2-Off-by-one-error-when-initializing-yap_flags.patch -# yap 6.2.2 does not work on PPC (bug #790625) -# Reported to upstream -Patch11: yap-6.2.2-Texinfo-5-does-not-allow-bullet-as-table-indicator.patch -# Fix regression with GCC 5.0 -# -Patch12: yap-6.2.2-Friend-function-template-defined-in-a-class-cannot-b.patch - -BuildRequires: autoconf -# Update config.sub to support aarch64, bug #926852 -BuildRequires: automake -BuildRequires: gmp-devel -BuildRequires: mysql-devel -# TODO: BuildRequires: openmpi-devel -BuildRequires: readline-devel -BuildRequires: texinfo -BuildRequires: unixODBC-devel -BuildRequires: zlib-devel -Requires(post): /sbin/install-info, /sbin/ldconfig -Requires(postun): /sbin/install-info, /sbin/ldconfig - -# Do not export provides and requires on private libraries -%filter_provides_in /usr/lib64/Yap/ -%filter_from_requires /^libplstream.so(/d -%filter_setup - -%description -A high-performance Prolog compiler developed at LIACC, Universidade do -Porto. The Prolog engine is based in the WAM (Warren Abstract -Machine), with several optimizations for better performance. YAP -follows the Edinburgh tradition, and is largely compatible with the -ISO-Prolog standard and with Quintus and SICStus Prolog. - - -%package devel -Summary: C-Interface development files for Yap -Group: Development/Languages -Requires: %{name} = %{version}-%{release} - -%description devel -C-Interface development files for Yap. - - -%package docs -Summary: Documentation for Yap -Group: Development/Languages -BuildArch: noarch -Requires: %{name} = %{version}-%{release} - -%description docs -Documentation for Yap. - - -%prep -%setup -q -%patch1 -p1 -%patch2 -p1 -b .mysql_config -%patch3 -p1 -b .install_info_directory -%patch4 -p1 -b .install_css_into_pltarget -%patch5 -p1 -b .do_not_install_readme -%patch6 -p1 -b .non_executable_info -%patch7 -p1 -b .do_not_install_info_index -%patch8 -p1 -b .macro -%patch9 -p1 -b .remove_feature_macro -%patch10 -p1 -b .initialization -%patch11 -p1 -b .texinfo5 -%patch12 -p1 -b .gcc5 - -# remove redundant RPATH -sed -i 's/-Wl,-R\(,\)\{0,1\}\\$(LIBDIR)//' configure.in -# transform RPATH into RUN_PATH. Private libraries dlopen()ed depend each on -# other -sed -i 's/-Wl,-R/-Wl,--enable-new-dtags,-R/g' configure.in -# Add soname to library -sed -i -e 's/\(-soname=\$DYNYAPLIB\)/\1.%{version}/' configure.in - -# Update config.sub to support aarch64/ppc64le, bug #926852 -cp -p %{_datadir}/automake-*/config.{sub,guess} . -cp -p %{_datadir}/automake-*/config.{sub,guess} packages/jpl -# Regerenate configure because of patching -autoconf - -# chr and clpqr are optional and they are a copy from SWI Prolog (LGPLv2+) -# TODO: Unbundle chr and clpqr libraries as subpackages - -# Add soname to library and symlink from unversioned to versioned one -sed -i \ - -e '/@YAPLIB_LD@/ s/\(-o @YAPLIB@\)\(.*\)/\1.%{version}\2\n\tln -s @YAPLIB@.%{version} @YAPLIB@/' \ - -e '/@INSTALL_DLLS@.* @YAPLIB@/ s/\(@YAPLIB@\)\(.*\)/\1.%{version}\2\n\t@LN_S@ @YAPLIB@.%{version} $(DESTDIR)$(LIBDIR)\/@YAPLIB@/' \ - Makefile.in - -# Fix file encoding -for F in README changes.css; do - tr -d '\r' < "$F" > "${F}.new" - touch -r "$F"{,.new} - mv "$F"{.new,} -done -for F in docs/yap.tex TO_DO; do - iconv -f iso-8859-1 -t utf-8 < "$F" > "${F}.new" - sed -i -e '/mode: texinfo/ s/\(coding: \)latin-1/\1utf-8/' "${F}.new" - touch -r "$F"{,.new} - mv "$F"{.new,} -done - -# Fix file permissions -chmod -x COPYING packages/http/examples/demo_inetd -# Permissions for debuginfo content -find -name '*.h' -exec chmod 0644 '{}' ';' -find -name '*.c' -exec chmod 0644 '{}' ';' - - -%build -# % define optflags $(echo $RPM_OPT_FLAGS | sed 's|-fstack-protector||') -# Private malloc does not work on AArch64, bug #1142068 -%configure \ -%ifarch aarch64 %{power64} - --enable-use-malloc \ -%else - --disable-use-malloc \ -%endif - --enable-coroutining \ - --enable-max-performance \ - --enable-depth-limit \ - --enable-dynamic-loading \ - --enable-myddas \ -%if %{use_eam} - --enable-eam \ -%endif - --enable-chr \ - --enable-clpqr -# TODO: --with-java - -make %{?_smp_mflags} -make %{?_smp_mflags} info - - -%install -make DESTDIR=$RPM_BUILD_ROOT install -make DESTDIR=$RPM_BUILD_ROOT install_info - -# fix permissions and flags -chmod 0644 $RPM_BUILD_ROOT%{_datadir}/Yap/pl/* -chmod 0644 $RPM_BUILD_ROOT%{_includedir}/Yap/* - -# Move installed examples to docs dir -%global documentation docs-documentation -for P in clpbn; do - mkdir -p "%{documentation}/examples/${P}" - mv "$RPM_BUILD_ROOT%{_datadir}/Yap/${P}/examples/"* \ - "%{documentation}/examples/${P}" - rmdir "$RPM_BUILD_ROOT%{_datadir}/Yap/${P}/examples" -done -for P in minisat problog; do - mkdir -p "%{documentation}/examples/${P}" - mv "$RPM_BUILD_ROOT%{_datadir}/Yap/${P}_examples/"* \ - "%{documentation}/examples/${P}" - rmdir "$RPM_BUILD_ROOT%{_datadir}/Yap/${P}_examples" -done -# Copy not-installed examples to docs dir -# CLPBN/*, swi-minisat2 installed already -# TODO: jpl documentation with java support -# TODO: mpi documentation with mpi support -for P in pyswip cplint http plunit; do - mkdir -p "%{documentation}/examples/${P}" - cp -a "packages/${P}/examples/"* "%{documentation}/examples/${P}" -done -for P in LGPL/pillow; do - mkdir -p "%{documentation}/examples/${P}" - cp -a "${P}/examples/"* "%{documentation}/examples/${P}" -done - -# Remove empty files -for F in $RPM_BUILD_ROOT%{_datadir}/Yap/myddas_top_level.yap \ - %{documentation}/examples/cplint/coin.uni; do - test -s "$F" || rm "$F" -done - - -%post -/sbin/install-info %{_infodir}/yap.info --section "Programming Languages" %{_infodir}/dir 2>/dev/null || : -/sbin/install-info %{_infodir}/pillow_doc.info --section "Programming Languages" %{_infodir}/dir 2>/dev/null || : -/sbin/ldconfig - - -%postun -if [ $1 -eq 0 ]; then - /sbin/install-info --delete %{_infodir}/yap.info %{_infodir}/dir 2>/dev/null || : - /sbin/install-info --delete %{_infodir}/pillow_doc.info %{_infodir}/dir 2>/dev/null || : -fi -/sbin/ldconfig - - -%files -%doc Artistic changes* COPYING GIT README TO_DO -%if %{use_eam} -%doc README.EAM.html -%endif -%{_bindir}/yap -%{_datadir}/Yap -%{_libdir}/Yap -%{_libdir}/libYap.so.* -%{_infodir}/* - - -%files devel -%{_libdir}/libYap.so -%{_includedir}/Yap - - -%files docs -%doc LGPL/pillow/doc/pillow_doc_html/* -%doc LGPL/pillow/doc/article.ps.gz -%doc %{documentation}/* - - -%changelog -* Sat Feb 11 2017 Fedora Release Engineering - 6.2.2-19 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_26_Mass_Rebuild - -* Thu Jan 12 2017 Igor Gnatenko - 6.2.2-18 -- Rebuild for readline 7.x - -* Fri Feb 05 2016 Fedora Release Engineering - 6.2.2-17 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_24_Mass_Rebuild - -* Wed Dec 16 2015 Peter Robinson 6.2.2-16 -- Disable private malloc on power64 too - -* Fri Jun 19 2015 Fedora Release Engineering - 6.2.2-15 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_23_Mass_Rebuild - -* Wed Apr 15 2015 Petr Pisar - 6.2.2-14 -- Disable private malloc on AArch64 (bug #1142068) - -* Thu Feb 12 2015 Petr Pisar - 6.2.2-13 -- Fix regression with GCC 5.0 - -* Wed Aug 20 2014 Kevin Fenzi - 6.2.2-12 -- Rebuild for rpm bug 1131892 - -* Mon Aug 18 2014 Fedora Release Engineering - 6.2.2-11 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_22_Mass_Rebuild - -* Sat Jun 07 2014 Fedora Release Engineering - 6.2.2-10 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_Mass_Rebuild - -* Mon May 19 2014 Jaromir Capik - 6.2.2-9 -- Replacing ppc64 with the power64 macro - -* Sun Aug 04 2013 Fedora Release Engineering - 6.2.2-8 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_20_Mass_Rebuild - -* Thu Mar 28 2013 Petr Pisar - 6.2.2-7 -- Update config.sub to support aarch64 (bug #926852) -- Adjust to Texinfo 5 - -* Fri Feb 15 2013 Fedora Release Engineering - 6.2.2-6 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_19_Mass_Rebuild - -* Mon Jan 07 2013 Petr Pisar - 6.2.2-5 -- Fix off-by-one error when initializing yap_flags - -* Sun Jul 22 2012 Fedora Release Engineering - 6.2.2-4 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild - -* Thu Feb 23 2012 Petr Pisar - 6.2.2-3 -- yap 6.2.2 does not work on PPC (bug #790625) - -* Sat Jan 14 2012 Fedora Release Engineering - 6.2.2-2 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_17_Mass_Rebuild - -* Fri Dec 09 2011 Petr Pisar - 6.2.2-1 -- 6.2.2 bump - -* Wed Dec 07 2011 Petr Pisar - 6.2.0-6 -- Fix building on PowerPC (bug #751144) - -* Wed Oct 26 2011 Marcela Mašláňová - 6.2.0-5.2 -- rebuild with new gmp without compat lib - -* Wed Oct 12 2011 Peter Schiffer - 6.2.0-5.1 -- rebuild with new gmp - -* Thu Jun 23 2011 Dan Horák - 6.2.0-5 -- fix non-x86 builds with recent gcc - -* Wed Mar 23 2011 Dan Horák - 6.2.0-4 -- rebuilt for mysql 5.5.10 (soname bump in libmysqlclient) - -* Wed Mar 23 2011 Petr Pisar - 6.2.0-3 -- Rebuild against mysql 5.5.10 - -* Tue Feb 08 2011 Fedora Release Engineering - 6.2.0-2 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_15_Mass_Rebuild - -* Tue Jan 04 2011 Petr Pisar - 6.2.0-1 -- Reorder metadata in spec file -- 6.2.0 bump -- Remove uneeded Yap-creat.patch -- Remove uneeded Yap-5.1.1-config.sub.patch -- Locate mysql by mysql_config -- Fix info pages installation -- Logtalk is no logner distributed with yap -- Install http module CSS files to correct place -- Convert TO_DO into UTF-8 -- Make COPYING non-executable -- Remove empty myddas_top_level.yap file -- Fix soname injection -- Fix BuildRequires -- Package clpbn examples -- Fix Source URL -- Clean exported Requires -- Correct RPATH -- Enable chr and clpqr libraries installation (still bundled with source tar - ball) -- Package uninstalled examples - -* Wed Dec 08 2010 Petr Pisar - 5.1.3-3 -- Hack SWI-compatible libraries build system to be compilable (bug #660965) -- Correct spec file syntax (white spaces, percentages) -- Convert documentation into UTF-8/CR -- Do not put unversioned library into main package -- Make docs subpackege architecture independent - -* Mon Jul 27 2009 Fedora Release Engineering - 5.1.3-2 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_12_Mass_Rebuild - -* 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. - -* Fri Jul 11 2008 Tom "spot" Callaway - 5.1.1-11 -- fix license tag - -* Thu Apr 10 2008 Gerard Milmeister - 5.1.1-10 -- enable rpm_opt_flags -- patch for incorrect open call with O_CREAT - -* Mon Feb 18 2008 Fedora Release Engineering - 5.1.1-9 -- Autorebuild for GCC 4.3 - -* Sat Oct 20 2007 Gerard Milmeister - 5.1.1-8 -- fix library path for 64-bit platforms - -* Wed Aug 29 2007 Gerard Milmeister - 5.1.1-7 -- replaced ld -shared with gcc -shared - -* Wed Aug 29 2007 Fedora Release Engineering - 5.1.1-6 -- Rebuild for selinux ppc32 issue. - -* Thu Jul 5 2007 Gerard Milmeister - 5.1.1-5 -- also build libYap.so - -* Fri May 11 2007 Gerard Milmeister - 5.1.1-3 -- remove -fstack-protector from optflags in order to enable - loading of .so modules - -* Mon Aug 28 2006 Gerard Milmeister - 5.1.1-2 -- Rebuild for FE6 - -* Mon May 1 2006 Gerard Milmeister - 5.1.1-1 -- new version 5.1.1 -- split off devel and docs packages - -* Fri Feb 17 2006 Gerard Milmeister - 5.0.1-2 -- Rebuild for Fedora Extras 5 - -* Tue Oct 25 2005 Gerard Milmeister - 5.0.1-1 -- New Version 5.0.1 - -* Wed Sep 7 2005 Gerard Milmeister - 5.0.0-1 -- New Version 5.0.0 - -* Sat Jun 18 2005 Gerard Milmeister - 4.5.5-5 -- Use %%{_prefix}/lib for x86_64 - -* Sat Jun 18 2005 Gerard Milmeister - 4.5.5-4 -- Fix for non-i386 compilers - -* Sat Jun 18 2005 Gerard Milmeister - 4.5.5-3 -- Compiler fix for FC4 - -* Wed Apr 6 2005 Michael Schwendt -- rebuilt - -* Sat Feb 12 2005 Gerard Milmeister - 0:4.5.5-1 -- New Version 4.5.5 - -* Mon Nov 29 2004 Gerard Milmeister - 0:4.5.3-0.fdr.1 -- New Version 4.5.3 - -* Sat Mar 13 2004 Gerard Milmeister - 0:4.5.2-0.fdr.1 -- New Version 4.5.2 - -* Sat Nov 22 2003 Gerard Milmeister - 0:4.4.3-0.fdr.1 -- First Fedora release