/* Generated by CHR bootstrap compiler From: chr_translate.chr Date: Wed Mar 26 03:32:05 2008 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.