1c6b91cb72
git-svn-id: https://yap.svn.sf.net/svnroot/yap/trunk@2170 b08c6af1-5177-4d33-ba66-4b1c6b8b522a
21473 lines
638 KiB
Prolog
21473 lines
638 KiB
Prolog
/* 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('<id:'),print(L),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('<id:'),print(U),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<F ->
|
|
( 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<F ->
|
|
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<I
|
|
),
|
|
only_ground_indexed_arguments(H),
|
|
chr_pp_flag(late_allocation,on) ->
|
|
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<<C.
|
|
and_pattern(A,B) :-
|
|
C is A-1,
|
|
D is 1<<C,
|
|
B is-1*(D+1).
|
|
make_name(A,B/C,D) :-
|
|
atom_concat_list([A,B,'___',C],D).
|
|
make_attr(A,B,C,D) :-
|
|
length(C,A),
|
|
D=..[v,B|C].
|
|
get_all_suspensions2(A,B,C) :-
|
|
chr_pp_flag(dynattr,off),
|
|
!,
|
|
make_attr(A,_,C,B).
|
|
get_all_suspensions2(A,B,C,D) :-
|
|
length(D,A),
|
|
C='chr all_suspensions'(D,1,B).
|
|
normalize_attr(A,B,C) :-
|
|
B='chr normalize_attr'(A,C).
|
|
get_suspensions(A,B,C,C=D,E) :-
|
|
chr_pp_flag(dynattr,off),
|
|
!,
|
|
make_attr(A,_,F,D),
|
|
nth1(B,F,E).
|
|
get_suspensions(_,A,B,C,D) :-
|
|
C=(memberchk(A-D,B)->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<I,
|
|
ground(E),
|
|
ground(F),
|
|
nb_getval('$chr_store_multi_hash_chr_translate____stored___3-123',V),
|
|
hash_term(k(E,F,1887087),W),
|
|
lookup_ht1(V,W,k(E,F,yes),N),
|
|
'chr sbag_member'(M,N),
|
|
M=suspension(_,active,_,_,_) ->
|
|
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<L,
|
|
chr_pp_flag(occurrence_subsumption,on),
|
|
J=pragma(rule(R,_,_,_),_,_,_,_),
|
|
R\==[],
|
|
\+tree_set_memberchk(D,O) ->
|
|
setarg(2,P,removed),
|
|
arg(3,P,B1),
|
|
( var(B1) ->
|
|
nb_getval('$chr_store_global_ground_chr_translate____multiple_occ_constraints_checked___1',C1),
|
|
C1=[_|D1],
|
|
b_setval('$chr_store_global_ground_chr_translate____multiple_occ_constraints_checked___1',D1),
|
|
( D1=[E1|_] ->
|
|
setarg(3,E1,_)
|
|
;
|
|
true
|
|
)
|
|
;
|
|
B1=[_,_|D1],
|
|
setarg(2,B1,D1),
|
|
( D1=[E1|_] ->
|
|
setarg(3,E1,B1)
|
|
;
|
|
true
|
|
)
|
|
),
|
|
arg(2,I,T),
|
|
setarg(2,I,active),
|
|
( T==not_stored_yet ->
|
|
nb_getval('$chr_store_global_ground_chr_translate____occurrence___5',U),
|
|
V=[I|U],
|
|
b_setval('$chr_store_global_ground_chr_translate____occurrence___5',V),
|
|
( U=[W|_] ->
|
|
setarg(4,W,V)
|
|
;
|
|
true
|
|
),
|
|
nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-12',X),
|
|
insert_ht(X,k(D,E),I),
|
|
nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-3',Y),
|
|
insert_ht(Y,F,I),
|
|
nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-34',Z),
|
|
insert_ht(Z,k(F,G),I),
|
|
nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-1',A1),
|
|
insert_ht(A1,D,I)
|
|
;
|
|
true
|
|
),
|
|
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<E,
|
|
chr_pp_flag(occurrence_subsumption,on),
|
|
J=pragma(rule(S,_,_,_),_,_,_,_),
|
|
S\==[],
|
|
\+tree_set_memberchk(D,P) ->
|
|
setarg(2,Q,removed),
|
|
arg(3,Q,C1),
|
|
( var(C1) ->
|
|
nb_getval('$chr_store_global_ground_chr_translate____multiple_occ_constraints_checked___1',D1),
|
|
D1=[_|E1],
|
|
b_setval('$chr_store_global_ground_chr_translate____multiple_occ_constraints_checked___1',E1),
|
|
( E1=[F1|_] ->
|
|
setarg(3,F1,_)
|
|
;
|
|
true
|
|
)
|
|
;
|
|
C1=[_,_|E1],
|
|
setarg(2,C1,E1),
|
|
( E1=[F1|_] ->
|
|
setarg(3,F1,C1)
|
|
;
|
|
true
|
|
)
|
|
),
|
|
arg(2,I,U),
|
|
setarg(2,I,active),
|
|
( U==not_stored_yet ->
|
|
nb_getval('$chr_store_global_ground_chr_translate____occurrence___5',V),
|
|
W=[I|V],
|
|
b_setval('$chr_store_global_ground_chr_translate____occurrence___5',W),
|
|
( V=[X|_] ->
|
|
setarg(4,X,W)
|
|
;
|
|
true
|
|
),
|
|
nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-12',Y),
|
|
insert_ht(Y,k(D,E),I),
|
|
nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-3',Z),
|
|
insert_ht(Z,F,I),
|
|
nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-34',A1),
|
|
insert_ht(A1,k(F,G),I),
|
|
nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-1',B1),
|
|
insert_ht(B1,D,I)
|
|
;
|
|
true
|
|
),
|
|
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<O ->
|
|
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=<L ->
|
|
'$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=<L ->
|
|
'$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=<G ->
|
|
'$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<H,
|
|
chr_pp_flag(occurrence_subsumption,on),
|
|
E=pragma(rule(Q,_,_,_),_,_,_,_),
|
|
Q\==[],
|
|
\+tree_set_memberchk(G,N) ->
|
|
setarg(2,O,removed),
|
|
arg(3,O,X),
|
|
( var(X) ->
|
|
nb_getval('$chr_store_global_ground_chr_translate____multiple_occ_constraints_checked___1',Y),
|
|
Y=[_|Z],
|
|
b_setval('$chr_store_global_ground_chr_translate____multiple_occ_constraints_checked___1',Z),
|
|
( Z=[A1|_] ->
|
|
setarg(3,A1,_)
|
|
;
|
|
true
|
|
)
|
|
;
|
|
X=[_,_|Z],
|
|
setarg(2,X,Z),
|
|
( Z=[A1|_] ->
|
|
setarg(3,A1,X)
|
|
;
|
|
true
|
|
)
|
|
),
|
|
arg(2,F,S),
|
|
setarg(2,F,active),
|
|
( S==not_stored_yet ->
|
|
nb_getval('$chr_store_global_ground_chr_translate____rule___2',T),
|
|
U=[F|T],
|
|
b_setval('$chr_store_global_ground_chr_translate____rule___2',U),
|
|
( T=[V|_] ->
|
|
setarg(4,V,U)
|
|
;
|
|
true
|
|
),
|
|
nb_getval('$chr_store_multi_hash_chr_translate____rule___2-1',W),
|
|
insert_ht(W,D,F)
|
|
;
|
|
true
|
|
),
|
|
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<N,
|
|
chr_pp_flag(occurrence_subsumption,on),
|
|
K=pragma(rule(V,_,_,_),_,_,_,_),
|
|
V\==[],
|
|
\+tree_set_memberchk(M,S) ->
|
|
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<C,
|
|
!,
|
|
first_occ_in_rule(A,B,E,G).
|
|
first_occ_in_rule(A,B,C,D) :-
|
|
B=E/F,
|
|
functor(G,E,F),
|
|
next_occ_in_rule(A,B,C,D,[],G).
|
|
next_occ_in_rule(A,B,C,D,_,E) :-
|
|
nb_getval('$chr_store_multi_hash_chr_translate____passive___2-1',N),
|
|
lookup_ht(N,A,H),
|
|
'chr sbag_member'(F,H),
|
|
F=suspension(_,active,_,_,G),
|
|
nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-34',M),
|
|
lookup_ht(M,k(A,G),L),
|
|
'chr sbag_member'(I,L),
|
|
I=suspension(_,active,_,_,J,K,_,_,_),
|
|
J=B,
|
|
K is C+1,
|
|
!,
|
|
next_occ_in_rule(A,B,K,D,_,E).
|
|
next_occ_in_rule(A,B,C,D,E,F) :-
|
|
nb_getval('$chr_store_multi_hash_chr_translate____prev_guard_list___6-1',S1),
|
|
lookup_ht(S1,A,L),
|
|
'chr sbag_member'(G,L),
|
|
G=suspension(_,active,_,_,_,H,I,J,K,_),
|
|
nb_getval('$chr_store_multi_hash_chr_translate____rule___2-1',R1),
|
|
lookup_ht1(R1,A,A,O),
|
|
'chr sbag_member'(M,O),
|
|
M=suspension(_,active,_,_,_,N),
|
|
nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-1',Q1),
|
|
lookup_ht(Q1,B,T),
|
|
'chr sbag_member'(P,T),
|
|
P=suspension(_,active,_,_,_,Q,R,S,_),
|
|
R=A,
|
|
Q is C+1,
|
|
N=pragma(rule(U,V,I,_),ids(_,_),_,_,A),
|
|
!,
|
|
append(U,V,W),
|
|
add_failing_occ(N,W,H,D,X,F,K,B,Y),
|
|
( X==[chr_pp_void_info] ->
|
|
next_occ_in_rule(A,B,Q,S,E,F)
|
|
;
|
|
append(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<G,
|
|
chr_pp_flag(occurrence_subsumption,on),
|
|
J=pragma(rule(Q,_,_,_),_,_,_,_),
|
|
Q\==[],
|
|
\+tree_set_memberchk(F,A),
|
|
!,
|
|
first_occ_in_rule(C,F,M,O),
|
|
tree_set_add(A,F,R),
|
|
multiple_occ_constraints_checked(R)
|
|
;
|
|
!,
|
|
setarg(2,B,removed),
|
|
arg(4,B,S),
|
|
( var(S) ->
|
|
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<J,
|
|
!,
|
|
setarg(2,I,removed),
|
|
nb_getval('$chr_store_multi_hash_chr_translate____stored_complete___3-1',N),
|
|
delete_ht(N,A,I),
|
|
M is K-1,
|
|
stored(A,B,maybe),
|
|
stored_complete(A,J,M).
|
|
stored(A,B,yes) :-
|
|
nb_getval('$chr_store_multi_hash_chr_translate____stored_complete___3-1',L),
|
|
lookup_ht(L,A,F),
|
|
'chr sbag_member'(C,F),
|
|
C=suspension(_,active,_,_,D,E),
|
|
B<D,
|
|
nb_getval('$chr_store_multi_hash_chr_translate____ai_not_observed___2-12',K),
|
|
lookup_ht(K,k(A,B),H),
|
|
'chr sbag_member'(G,H),
|
|
G=suspension(_,active,_,_),
|
|
!,
|
|
setarg(2,C,removed),
|
|
nb_getval('$chr_store_multi_hash_chr_translate____stored_complete___3-1',J),
|
|
delete_ht(J,A,C),
|
|
I is E-1,
|
|
stored(A,B,maybe),
|
|
stored_complete(A,D,I).
|
|
stored(A,B,C) :-
|
|
D=suspension(E,active,A,B,C),
|
|
'chr gen_id'(E),
|
|
nb_getval('$chr_store_multi_hash_chr_translate____stored___3-1',F),
|
|
insert_ht(F,A,D),
|
|
nb_getval('$chr_store_multi_hash_chr_translate____stored___3-123',G),
|
|
insert_ht(G,k(A,B,C),D).
|
|
stored_completing(A,B,C) :-
|
|
ground(A),
|
|
ground(B),
|
|
nb_getval('$chr_store_multi_hash_chr_translate____stored___3-123',M),
|
|
(
|
|
(
|
|
hash_term(k(A,B,1887087),P),
|
|
lookup_ht1(M,P,k(A,B,yes),E),
|
|
'chr sbag_member'(D,E),
|
|
D=suspension(_,active,_,_,_),
|
|
!,
|
|
F is B+1,
|
|
G is C+1,
|
|
stored_completing(A,F,G)
|
|
;
|
|
hash_term(k(A,B,2007024),O),
|
|
lookup_ht1(M,O,k(A,B,maybe),I),
|
|
'chr sbag_member'(H,I),
|
|
H=suspension(_,active,_,_,_),
|
|
!,
|
|
J is B+1,
|
|
stored_completing(A,J,C)
|
|
)
|
|
;
|
|
hash_term(k(A,B,14209),N),
|
|
lookup_ht1(M,N,k(A,B,no),L),
|
|
'chr sbag_member'(K,L),
|
|
K=suspension(_,active,_,_,_),
|
|
!,
|
|
stored_complete(A,B,C)
|
|
).
|
|
stored_completing(A,B,C) :-
|
|
stored_complete(A,B,C).
|
|
stored_complete(A,B,C) :-
|
|
stored_complete___3__0(A,B,C,_).
|
|
stored_complete___3__0(A,B,C,_) :-
|
|
nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-1',S),
|
|
lookup_ht(S,A,H),
|
|
'chr sbag_member'(D,H),
|
|
D=suspension(_,active,_,_,_,E,F,G,_),
|
|
E<B,
|
|
nb_getval('$chr_store_multi_hash_chr_translate____passive___2-12',R),
|
|
lookup_ht(R,k(F,G),J),
|
|
'chr sbag_member'(I,J),
|
|
I=suspension(_,active,_,_,_),
|
|
nb_getval('$chr_store_multi_hash_chr_translate____stored___3-123',P),
|
|
hash_term(k(A,E,1887087),Q),
|
|
lookup_ht1(P,Q,k(A,E,yes),L),
|
|
'chr sbag_member'(K,L),
|
|
K=suspension(_,active,_,_,_),
|
|
!,
|
|
setarg(2,K,removed),
|
|
nb_getval('$chr_store_multi_hash_chr_translate____stored___3-1',N),
|
|
delete_ht(N,A,K),
|
|
nb_getval('$chr_store_multi_hash_chr_translate____stored___3-123',O),
|
|
delete_ht(O,k(A,E,yes),K),
|
|
M is C-1,
|
|
stored(A,E,maybe),
|
|
stored_complete(A,B,M).
|
|
stored_complete___3__0(A,B,C,_) :-
|
|
nb_getval('$chr_store_multi_hash_chr_translate____stored___3-1',N),
|
|
lookup_ht(N,A,G),
|
|
'chr sbag_member'(D,G),
|
|
D=suspension(_,active,_,E,F),
|
|
F=yes,
|
|
E<B,
|
|
nb_getval('$chr_store_multi_hash_chr_translate____ai_not_observed___2-12',M),
|
|
lookup_ht(M,k(A,E),I),
|
|
'chr sbag_member'(H,I),
|
|
H=suspension(_,active,_,_),
|
|
!,
|
|
setarg(2,D,removed),
|
|
nb_getval('$chr_store_multi_hash_chr_translate____stored___3-1',K),
|
|
delete_ht(K,A,D),
|
|
nb_getval('$chr_store_multi_hash_chr_translate____stored___3-123',L),
|
|
delete_ht(L,k(A,E,yes),D),
|
|
J is C-1,
|
|
stored(A,E,maybe),
|
|
stored_complete(A,B,J).
|
|
stored_complete___3__0(A,B,0,C) :-
|
|
nb_getval('$chr_store_multi_hash_chr_translate____max_occurrence___2-1',F),
|
|
lookup_ht(F,A,D),
|
|
!,
|
|
C=suspension(E,not_stored_yet,t,A,B,0),
|
|
'chr gen_id'(E),
|
|
stored_complete___3__0__0__3(D,A,B,0,C).
|
|
stored_complete___3__0__0__3([],B,C,D,A) :-
|
|
stored_complete___3__1(B,C,D,A).
|
|
stored_complete___3__0__0__3([G|I],B,C,D,A) :-
|
|
( G=suspension(_,active,_,E,F),
|
|
E==B,
|
|
nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-1',J),
|
|
lookup_ht(J,B,H) ->
|
|
stored_complete___3__0__1__3(H,F,G,I,B,C,D,A)
|
|
;
|
|
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=<I ->
|
|
'$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=<C,
|
|
!,
|
|
fail.
|
|
is_stored(_).
|
|
is_finally_stored(A) :-
|
|
ground(A),
|
|
nb_getval('$chr_store_multi_hash_chr_translate____max_occurrence___2-1',I),
|
|
lookup_ht(I,A,D),
|
|
'chr sbag_member'(B,D),
|
|
B=suspension(_,active,_,_,C),
|
|
nb_getval('$chr_store_multi_hash_chr_translate____stored_complete___3-1',H),
|
|
lookup_ht(H,A,G),
|
|
'chr sbag_member'(E,G),
|
|
E=suspension(_,active,_,_,F,_),
|
|
F=<C,
|
|
!,
|
|
fail.
|
|
is_finally_stored(_).
|
|
check_all_passive(A,[B|C]) :-
|
|
nb_getval('$chr_store_multi_hash_chr_translate____passive___2-12',F),
|
|
lookup_ht(F,k(A,B),E),
|
|
'chr sbag_member'(D,E),
|
|
D=suspension(_,active,_,_,_),
|
|
!,
|
|
check_all_passive(A,C).
|
|
check_all_passive(A,[]) :-
|
|
nb_getval('$chr_store_multi_hash_chr_translate____rule___2-1',E),
|
|
lookup_ht1(E,A,A,D),
|
|
'chr sbag_member'(B,D),
|
|
B=suspension(_,active,_,_,_,C),
|
|
!,
|
|
chr_warning(weird_program,'All heads passive in ~@.
|
|
This rule never fires. Please check your program.
|
|
',[format_rule(C)]).
|
|
check_all_passive(A,B) :-
|
|
C=suspension(D,active,A,B),
|
|
'chr gen_id'(D),
|
|
nb_getval('$chr_store_multi_hash_chr_translate____check_all_passive___2-12',E),
|
|
insert_ht(E,k(A,B),C),
|
|
nb_getval('$chr_store_multi_hash_chr_translate____check_all_passive___2-1',F),
|
|
insert_ht(F,A,C).
|
|
constraints_code1([],A,B) :-
|
|
!,
|
|
A=B.
|
|
constraints_code1([C|D],A,B) :-
|
|
!,
|
|
constraint_code(C,A,E),
|
|
constraints_code1(D,E,B).
|
|
constraints_code1(A,B,C) :-
|
|
D=suspension(E,active,_,A,B,C),
|
|
'chr gen_id'(E),
|
|
nb_getval('$chr_store_global_ground_chr_translate____constraints_code1___3',F),
|
|
G=[D|F],
|
|
b_setval('$chr_store_global_ground_chr_translate____constraints_code1___3',G),
|
|
( F=[H|_] ->
|
|
setarg(3,H,G)
|
|
;
|
|
true
|
|
).
|
|
constraint_code(A,B,C) :-
|
|
(
|
|
(
|
|
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<J ->
|
|
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.
|