7
8:- module(chr_translate,
9 [ chr_translate/2,
10 chr_translate_line_info/3
11 ]). 12:- use_module(chr(chr_runtime)). 13:- style_check(- (discontiguous)). 14:- style_check(-singleton). 15:- style_check(-no_effect). 16:- use_module(library(lists)). 17:- use_module(library(sort)). 18:- use_module(library(ordsets)). 19:- use_module(library(aggregate)). 20:- use_module(library(apply_macros)). 21:- use_module(library(occurs)). 22:- use_module(library(assoc)). 23:- use_module(library(dialect/hprolog)). 24:- use_module(chr(pairlist)). 25:- use_module(chr(a_star)). 26:- use_module(chr(listmap)). 27:- use_module(chr(clean_code)). 28:- use_module(chr(builtins)). 29:- use_module(chr(find)). 30:- use_module(chr(binomialheap)). 31:- use_module(chr(guard_entailment)). 32:- use_module(chr(chr_compiler_options)). 33:- use_module(chr(chr_compiler_utility)). 34:- use_module(chr(chr_compiler_errors)). 35:- include(chr(chr_op)).
36:- op(1150, fx, chr_type). 37:- op(1150, fx, chr_declaration). 38:- op(1130, xfx, --->). 39:- op(980, fx, +). 40:- op(980, fx, -). 41:- op(980, fx, ?). 42:- op(1150, fx, constraints). 43:- op(1150, fx, chr_constraint). 44format_storetype(multi_store(A)) :-
45 !,
46 maplist(format_storetype, A).
47format_storetype(atomic_constants(A, B, _)) :-
48 format('\t* a trie index on the argument(s) ~w for the ground terms ~w\n',
49 [A, B]).
50format_storetype(ground_constants(A, B, _)) :-
51 format('\t* a trie index on the argument(s) ~w for the ground terms ~w\n',
52 [A, B]).
53format_storetype(A) :-
54 format('\t* ~w\n', [A]).
55get_constraint_arg_type(A, B, C) :-
56 get_constraint_type(A, D),
57 nth1(B, D, E),
58 unalias_type(E, C).
59partial_store(ground_constants(_, _, incomplete)).
60partial_store(atomic_constants(_, _, incomplete)).
61late_allocation_analysis(A) :-
62 ( chr_pp_flag(late_allocation, on)
63 -> maplist(late_allocation, A)
64 ; true
65 ).
66late_allocation(A) :-
67 late_allocation(A, 0).
68late_allocation(A, B) :-
69 allocation_occurrence(A, B),
70 !.
71late_allocation(A, B) :-
72 C is B+1,
73 late_allocation(A, C).
74stored_in_guard_before_next_kept_occurrence(A, B) :-
75 chr_pp_flag(store_in_guards, on),
76 C is B+1,
77 stored_in_guard_lookahead(A, C).
78set_constraint_indices(A) :-
79 set_constraint_indices(A, 1).
80set_constraint_indices([], A) :-
81 B is A-1,
82 max_constraint_index(B).
83set_constraint_indices([A|B], C) :-
84 ( ( chr_pp_flag(debugable, on)
85 ; \+ only_ground_indexed_arguments(A),
86 is_stored(A)
87 ; is_stored(A),
88 get_store_type(A, default)
89 ; get_store_type(A, var_assoc_store(_, _))
90 )
91 -> constraint_index(A, C),
92 D is C+1,
93 set_constraint_indices(B, D)
94 ; set_constraint_indices(B, C)
95 ).
96type_indexed_identifier_structure(A, B) :-
97 type_indexed_identifier_name(A,
98 type_indexed_identifier_struct,
99 C),
100 get_type_indexed_identifier_size(A, D),
101 functor(B, C, D).
102type_indexed_identifier_name(A, B, C) :-
103 ( atom(A)
104 -> D=A
105 ; term_to_atom(A, D)
106 ),
107 atom_concat_list([B, '_', D], C).
108chr_translate(A, B) :-
109 chr_translate_line_info(A, bootstrap, B).
110chr_translate_line_info(A, B, C) :-
111 chr_banner,
112 restart_after_flattening(A, D),
113 init_chr_pp_flags,
114 chr_source_file(B),
115 partition_clauses(D, E, F, G),
116 chr_compiler_options:sanity_check,
117 dump_code(D),
118 check_declared_constraints(E),
119 generate_show_constraint(E, H, F, I),
120 add_constraints(H),
121 add_rules(I),
122 generate_never_stored_rules(H, J),
123 add_rules(J),
124 append(I, J, K),
125 chr_analysis(K, H, D),
126 time('constraint code generation',
127 chr_translate:constraints_code(H, L)),
128 time('validate store assumptions',
129 chr_translate:validate_store_type_assumptions(H)),
130 phase_end(validate_store_type_assumptions),
131 used_states_known,
132 time('store code generation',
133 chr_translate:store_management_preds(H, M)),
134 insert_declarations(G, N),
135 chr_module_declaration(O),
136 append([M, L, O, [end_of_file]], P),
137 clean_clauses(P, Q),
138 append([N, Q], C),
139 dump_code(C),
140 !.
141chr_analysis(A, B, C) :-
142 maplist(pragma_rule_to_ast_rule, A, D),
143 check_rules(A, D, B),
144 time('type checking', chr_translate:static_type_check(A, D)),
145 collect_constants(A, D, B, C),
146 add_occurrences(A, D),
147 time('functional dependency',
148 chr_translate:functional_dependency_analysis(A)),
149 time('set semantics', chr_translate:set_semantics_rules(A)),
150 time('symmetry analysis', chr_translate:symmetry_analysis(A)),
151 time('guard simplification', chr_translate:guard_simplification),
152 time('late storage', chr_translate:storage_analysis(B)),
153 time(observation, chr_translate:observation_analysis(B)),
154 time('ai observation', chr_translate:ai_observation_analysis(B)),
155 time('late allocation', chr_translate:late_allocation_analysis(B)),
156 partial_wake_analysis,
157 time('assume constraint stores',
158 chr_translate:assume_constraint_stores(B)),
159 time('default constraint indices',
160 chr_translate:set_constraint_indices(B)),
161 time('check storedness assertions',
162 chr_translate:check_storedness_assertions(B)),
163 time('continuation analysis', chr_translate:continuation_analysis(B)).
164store_management_preds(A, B) :-
165 generate_attach_detach_a_constraint_all(A, C),
166 generate_attr_unify_hook(D),
167 generate_attach_increment(E),
168 generate_extra_clauses(A, F),
169 generate_insert_delete_constraints(A, G),
170 generate_attach_code(A, H),
171 generate_counter_code(I),
172 generate_dynamic_type_check_clauses(J),
173 append([C, E, D, F, G, H, I, J],
174 B).
175insert_declarations(A, B) :-
176 findall((:-use_module(chr(C))),
177 ( auxiliary_module(C),
178 is_used_auxiliary_module(C)
179 ),
180 D),
181 append(A, [(:-use_module(chr(chr_runtime)))|D], B).
182auxiliary_module(chr_hashtable_store).
183auxiliary_module(chr_integertable_store).
184auxiliary_module(chr_assoc_store).
185generate_counter_code(A) :-
186 ( chr_pp_flag(store_counter, on)
187 -> 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))]
188 ; A=[]
189 ).
190chr_module_declaration([]) :-
191 tmp_module,
192 !.
193chr_module_declaration(A) :-
194 get_target_module(B),
195 ( B\==chr_translate,
196 chr_pp_flag(toplevel_show_store, on)
197 -> A=[(:-multifile chr:'$chr_module'/1), chr:'$chr_module'(B)]
198 ; A=[]
199 ).
200partition_clauses([], [], [], []).
201partition_clauses([A|B], C, D, E) :-
202 ( parse_rule(A, F)
203 -> C=G,
204 D=[F|H],
205 E=I
206 ; is_declaration(A, J)
207 -> append(J, G, C),
208 D=H,
209 E=I
210 ; is_module_declaration(A, K)
211 -> target_module(K),
212 C=G,
213 D=H,
214 E=[A|I]
215 ; is_type_definition(A)
216 -> C=G,
217 D=H,
218 E=I
219 ; is_chr_declaration(A)
220 -> C=G,
221 D=H,
222 E=I
223 ; A=handler(_)
224 -> chr_warning(deprecated(A),
225 'Backward compatibility: ignoring handler/1 declaration.\n',
226 []),
227 C=G,
228 D=H,
229 E=I
230 ; A=rules(_)
231 -> chr_warning(deprecated(A),
232 'Backward compatibility: ignoring rules/1 declaration.\n',
233 []),
234 C=G,
235 D=H,
236 E=I
237 ; A=option(L, M)
238 -> chr_warning(deprecated(A),
239 'Instead use `:-chr_option(~w,~w).\'\n',
240 [L, M]),
241 handle_option(L, M),
242 C=G,
243 D=H,
244 E=I
245 ; A=(:-chr_option(L, M))
246 -> handle_option(L, M),
247 C=G,
248 D=H,
249 E=I
250 ; A='$chr_compiled_with_version'(_)
251 -> C=G,
252 D=H,
253 E=['$chr_compiled_with_version'(3)|I]
254 ; C=G,
255 D=H,
256 E=[A|I]
257 ),
258 partition_clauses(B, G, H, I).
259'$chr_compiled_with_version'(3).
260is_declaration(A, B) :-
261 ( A=(:-C),
262 C=..[D, E],
263 D==(chr_constraint)
264 -> conj2list(E, F)
265 ; ( A=(:-C)
266 -> C=..[constraints, E]
267 ; A=..[constraints, E]
268 ),
269 conj2list(E, F),
270 chr_warning(deprecated(A),
271 'Instead use :- chr_constraint ~w.\n',
272 [E])
273 ),
274 extract_type_mode(F, B).
([], []).
276extract_type_mode([A/B|C], [A/B|D]) :-
277 !,
278 extract_type_mode(C, D).
279extract_type_mode([A|B], [C|D]) :-
280 ( A= #(E, F)
281 -> functor(E, G, H),
282 extract_annotation(F, G/H)
283 ; A=E,
284 functor(E, G, H)
285 ),
286 C=G/H,
287 E=..[_|I],
288 extract_types_and_modes(I, J, K),
289 assert_constraint_type(C, J),
290 constraint_mode(C, K),
291 extract_type_mode(B, D).
(stored, A) :-
293 stored_assertion(A).
294extract_annotation(default(A), B) :-
295 never_stored_default(B, A).
296extract_types_and_modes([], [], []).
297extract_types_and_modes([A|B], [C|D], [E|F]) :-
298 extract_type_and_mode(A, C, E),
299 extract_types_and_modes(B, D, F).
300extract_type_and_mode(+A, A, +) :-
301 !.
302extract_type_and_mode(?A, A, ?) :-
303 !.
304extract_type_and_mode(-A, A, -) :-
305 !.
306extract_type_and_mode(+, any, +) :-
307 !.
308extract_type_and_mode(?, any, ?) :-
309 !.
310extract_type_and_mode(-, any, -) :-
311 !.
312extract_type_and_mode(A, _, _) :-
313 chr_error(syntax(A),
314 'Illegal mode/type declaration.\n\tCorrect syntax is +type, -type or ?type\n\tor +, - or ?.\n',
315 []).
316is_chr_declaration(A) :-
317 A=(:-chr_declaration B),
318 ( B=(C--->D)
319 -> background_info(C, D)
320 ; B=D
321 -> background_info([D])
322 ).
323is_type_definition(A) :-
324 is_type_definition(A, B),
325 assert_type_definition(B).
326assert_type_definition(typedef(A, B)) :-
327 type_definition(A, B).
328assert_type_definition(alias(A, B)) :-
329 type_alias(A, B).
330is_type_definition(A, B) :-
331 ( A=(:-C)
332 -> true
333 ; A=C
334 ),
335 C=..[chr_type, D],
336 ( D=(E--->F)
337 -> tdisj2list(F, G),
338 B=typedef(E, G)
339 ; D=(H==E)
340 -> B=alias(H, E)
341 ; B=typedef(D, []),
342 chr_warning(syntax,
343 'Empty type definition `~w\'.\nAre you sure you want to declare a phantom type?\n',
344 [A])
345 ).
346tdisj2list(A, B) :-
347 tdisj2list(A, B, []).
348tdisj2list(A, B, C) :-
349 A=(D;E),
350 !,
351 tdisj2list(D, B, F),
352 tdisj2list(E, F, C).
353tdisj2list(A, [A|B], B).
354parse_rule(A, B) :-
355 A= @(C, D),
356 !,
357 rule(D, yes(C), B).
358parse_rule(A, B) :-
359 rule(A, no, B).
360rule(A, B, C) :-
361 A=pragma(D, E),
362 !,
363 ( var(E)
364 -> F=[_]
365 ; conj2list(E, F)
366 ),
367 inc_rule_count(G),
368 C=pragma(H, I, F, B, G),
369 is_rule(D, H, I, C).
370rule(A, B, C) :-
371 inc_rule_count(D),
372 C=pragma(E, F, [], B, D),
373 is_rule(A, E, F, C).
374is_rule(A, B, C, D) :-
375 A= ==>(E, F),
376 !,
377 conj2list(E, G),
378 get_ids(G, H, I, D),
379 C=ids([], H),
380 ( F=(J| K)
381 -> B=rule([], I, J, K)
382 ; B=rule([], I, true, F)
383 ).
384is_rule(A, B, C, D) :-
385 A= <=>(E, F),
386 !,
387 ( F=(G| H)
388 -> I=G,
389 J=H
390 ; I=true,
391 J=F
392 ),
393 ( E= \(K, L)
394 -> conj2list(K, M),
395 conj2list(L, N),
396 get_ids(M, O, P, 0, Q, D),
397 get_ids(N, R, S, Q, _, D),
398 C=ids(R, O)
399 ; conj2list(E, N),
400 P=[],
401 get_ids(N, R, S, D),
402 C=ids(R, [])
403 ),
404 B=rule(S, P, I, J).
405get_ids(A, B, C, D) :-
406 get_ids(A, B, C, 0, _, D).
407get_ids([], [], [], A, A, _).
408get_ids([A|B], [C|D], [E|F], C, G, H) :-
409 ( A= #(E, I)
410 -> ( var(I)
411 -> I=C
412 ; check_direct_pragma(I, C, H)
413 )
414 ; E=A
415 ),
416 J is C+1,
417 get_ids(B, D, F, J, G, H).
418check_direct_pragma(passive, A, B) :-
419 !,
420 B=pragma(_, _, _, _, C),
421 passive(C, A).
422check_direct_pragma(A, _, B) :-
423 ( direct_pragma(C),
424 atom_concat(A, _, C)
425 -> chr_warning(problem_pragma(A, B),
426 'completed `~w\' to `~w\'\n',
427 [A, C])
428 ; chr_warning(unsupported_pragma(A, B), '', [])
429 ).
430direct_pragma(passive).
431is_module_declaration((:-module(A)), A).
432is_module_declaration((:-module(A, _)), A).
433add_constraints([]).
434add_constraints([A|B]) :-
435 max_occurrence(A, 0),
436 A=_/C,
437 length(D, C),
438 set_elems(D, ?),
439 constraint_mode(A, D),
440 add_constraints(B).
441add_rules([]).
442add_rules([A|B]) :-
443 A=pragma(_, _, _, _, C),
444 rule(C, A),
445 add_rules(B).
446check_declared_constraints(A) :-
447 tree_set_empty(B),
448 check_declared_constraints(A, B).
449check_declared_constraints([], _).
450check_declared_constraints([A|B], C) :-
451 ( tree_set_memberchk(A, C)
452 -> chr_error(syntax(A),
453 'Constraint multiply defined: ~w.\n\tRemove redundant declaration!\n',
454 [A])
455 ; true
456 ),
457 tree_set_add(C, A, D),
458 check_declared_constraints(B, D).
459check_rules(A, B, C) :-
460 maplist(check_rule(C), A, B).
461check_rule(A, B, C) :-
462 B=pragma(_, _, D, _, _),
463 check_ast_rule_indexing(C, B),
464 check_ast_trivial_propagation_rule(C, B),
465 check_ast_head_constraints(C, A, B),
466 check_pragmas(D, B).
467check_ast_trivial_propagation_rule(A, B) :-
468 A=ast_rule(C, _, _, D, _),
469 ( C=propagation(_),
470 D==[]
471 -> chr_warning(weird_program,
472 'Ignoring propagation rule with empty body: ~@.\n\t\n',
473 [format_rule(B)]),
474 set_rule_passive(B)
475 ; true
476 ).
477set_rule_passive(A) :-
478 A=pragma(_, _, _, _, B),
479 set_all_passive(B).
480check_trivial_propagation_rule(A) :-
481 A=pragma(B, _, _, _, C),
482 ( B=rule([], _, _, true)
483 -> chr_warning(weird_program,
484 'Ignoring propagation rule with empty body: ~@.\n\t\n',
485 [format_rule(A)]),
486 set_all_passive(C)
487 ; true
488 ).
489check_ast_head_constraints(ast_rule(A, _, _, _, _), B, C) :-
490 check_ast_head_constraints_(A, B, C).
491check_ast_head_constraints_(simplification(A), B, C) :-
492 maplist(check_ast_head_constraint(B, C), A).
493check_ast_head_constraints_(propagation(A), B, C) :-
494 maplist(check_ast_head_constraint(B, C), A).
495check_ast_head_constraints_(simpagation(A, B), C, D) :-
496 maplist(check_ast_head_constraint(C, D), A),
497 maplist(check_ast_head_constraint(C, D), B).
498check_ast_head_constraint(A, B, chr_constraint(C, _, D)) :-
499 ( memberchk(C, A)
500 -> true
501 ; chr_error(syntax(D),
502 'Undeclared constraint ~w in head of ~@.\n\tConstraint should be one of ~w.\n',
503 [_/_, format_rule(B), A])
504 ).
505check_head_constraints([], _, _).
506check_head_constraints([A|B], C, D) :-
507 functor(A, E, F),
508 ( memberchk(E/F, C)
509 -> check_head_constraints(B, C, D)
510 ; chr_error(syntax(A),
511 'Undeclared constraint ~w in head of ~@.\n\tConstraint should be one of ~w.\n',
512 [E/F, format_rule(D), C])
513 ).
514check_pragmas([], _).
515check_pragmas([A|B], C) :-
516 check_pragma(A, C),
517 check_pragmas(B, C).
518check_pragma(A, B) :-
519 var(A),
520 !,
521 chr_error(syntax(A),
522 'Invalid pragma ~w in ~@.\n\tPragma should not be a variable!\n',
523 [A, format_rule(B)]).
524check_pragma(passive(A), B) :-
525 !,
526 B=pragma(_, ids(C, D), _, _, E),
527 ( memberchk_eq(A, C)
528 -> true
529 ; memberchk_eq(A, D)
530 -> true
531 ; chr_error(syntax(A),
532 'Invalid identifier ~w in pragma passive in ~@.\n',
533 [A, format_rule(B)])
534 ),
535 passive(E, A).
536check_pragma(mpassive(A), B) :-
537 !,
538 B=pragma(_, _, _, _, C),
539 chr_warning(experimental,
540 'Experimental pragma ~w. Use with care!\n',
541 [mpassive(A)]),
542 maplist(passive(C), A).
543check_pragma(A, B) :-
544 A=already_in_heads,
545 !,
546 chr_warning(unsupported_pragma(A, B),
547 'Termination and correctness may be affected.\n',
548 []).
549check_pragma(A, B) :-
550 A=already_in_head(_),
551 !,
552 chr_warning(unsupported_pragma(A, B),
553 'Termination and correctness may be affected.\n',
554 []).
555check_pragma(A, B) :-
556 A=no_history,
557 !,
558 chr_warning(experimental,
559 'Experimental pragma no_history. Use with care!\n',
560 []),
561 B=pragma(_, _, _, _, C),
562 no_history(C).
563check_pragma(A, B) :-
564 A=history(C, D),
565 !,
566 B=pragma(_, ids(E, F), _, _, G),
567 chr_warning(experimental,
568 'Experimental pragma ~w. Use with care!\n',
569 [A]),
570 ( E\==[]
571 -> chr_error(syntax(A),
572 'Pragma history only implemented for propagation rules.\n',
573 [])
574 ; \+ atom(C)
575 -> chr_error(syntax(A),
576 'Illegal argument for pragma history: ~w is not an atom (rule number ~w).\n',
577 [C, G])
578 ; \+ is_set(D)
579 -> chr_error(syntax(A),
580 'Illegal argument for pragma history: ~w is not a set (rule number ~w).\n',
581 [D, G])
582 ; check_history_pragma_ids(D, E, F)
583 -> history(G, C, D)
584 ; chr_error(syntax(A),
585 'Invalid identifier(s) in pragma ~w of rule number ~w.\n',
586 [A, G])
587 ).
588check_pragma(A, B) :-
589 A=source_location(C),
590 !,
591 B=pragma(_, _, _, _, D),
592 source_location(D, C).
593check_history_pragma_ids([], _, _).
594check_history_pragma_ids([A|B], C, D) :-
595 ( memberchk_eq(A, D)
596 ; memberchk_eq(A, C)
597 ),
598 check_history_pragma_ids(B, C, D).
599check_pragma(A, B) :-
600 chr_error(syntax(A),
601 'Unknown pragma ~w in ~@.\n',
602 [A, format_rule(B)]).
603test_named_history_id_pairs(_, [], _, []).
604test_named_history_id_pairs(A, [B|C], D, [E|F]) :-
605 test_named_history_id_pair(A, B, D, E),
606 test_named_history_id_pairs(A, C, D, F).
607format_rule(A) :-
608 A=pragma(_, _, _, B, C),
609 ( B=yes(D)
610 -> write('rule '),
611 write(D)
612 ; write('rule number '),
613 write(C)
614 ),
615 get_line_number(C, E),
616 write(' at '),
617 write(E).
618check_ast_rule_indexing(A, B) :-
619 A=ast_rule(C, D, _, _, _),
620 tree_set_empty(E),
621 ast_head_variables(C, E, F),
622 ast_remove_anti_monotonic_guards(D, F, G),
623 ast_term_list_variables(G, E, H),
624 check_ast_head_indexing(C, H),
625 ( chr_pp_flag(term_indexing, on)
626 -> B=pragma(I, _, _, _, _),
627 I=rule(J, K, L, _),
628 term_variables(J-K, M),
629 remove_anti_monotonic_guards(L, M, N),
630 term_variables(N, O),
631 append(J, K, P),
632 check_specs_indexing(P, O, _)
633 ; true
634 ).
635check_ast_head_indexing(simplification(A), B) :-
636 check_ast_indexing(A, B).
637check_ast_head_indexing(propagation(A), B) :-
638 check_ast_indexing(A, B).
639check_ast_head_indexing(simpagation(A, B), C) :-
640 ast_constraint_list_variables(B, C, D),
641 check_ast_indexing(A, D),
642 ast_constraint_list_variables(A, C, E),
643 check_ast_indexing(B, E).
644check_rule_indexing(A) :-
645 A=pragma(B, _, _, _, _),
646 B=rule(C, D, E, _),
647 term_variables(C-D, F),
648 remove_anti_monotonic_guards(E, F, G),
649 check_indexing(C, G-D),
650 check_indexing(D, G-C),
651 ( chr_pp_flag(term_indexing, on)
652 -> term_variables(G, H),
653 append(C, D, I),
654 check_specs_indexing(I, H, _)
655 ; true
656 ).
657remove_anti_monotonic_guards(A, B, C) :-
658 conj2list(A, D),
659 remove_anti_monotonic_guard_list(D, B, E),
660 list2conj(E, C).
661remove_anti_monotonic_guard_list([], _, []).
662remove_anti_monotonic_guard_list([A|B], C, D) :-
663 ( A=var(E),
664 memberchk_eq(E, C)
665 -> D=F
666 ; D=[A|F]
667 ),
668 remove_anti_monotonic_guard_list(B, C, F).
669ast_remove_anti_monotonic_guards([], _, []).
670ast_remove_anti_monotonic_guards([A|B], C, D) :-
671 ( A=compound(var, 1, [E], _),
672 ast_var_memberchk(E, C)
673 -> D=F
674 ; D=[A|F]
675 ),
676 ast_remove_anti_monotonic_guards(B, C, F).
677check_ast_indexing([], _).
678check_ast_indexing([A|B], C) :-
679 A=chr_constraint(D, E, _),
680 ast_constraint_list_variables(B, C, F),
681 check_ast_indexing(E, 1, D, F),
682 ast_constraint_variables(A, C, G),
683 check_ast_indexing(B, G).
684check_ast_indexing([], _, _, _).
685check_ast_indexing([A|B], C, D, E) :-
686 ( is_indexed_argument(D, C)
687 -> true
688 ; ast_nonvar(A)
689 -> indexed_argument(D, C)
690 ; ast_term_list_variables(B, E, F),
691 ( ast_var_memberchk(A, F)
692 -> indexed_argument(D, C)
693 ; true
694 )
695 ),
696 G is C+1,
697 ast_term_variables(A, E, H),
698 check_ast_indexing(B, G, D, H).
699check_indexing([], _).
700check_indexing([A|B], C) :-
701 functor(A, D, E),
702 A=..[_|F],
703 term_variables(B-C, G),
704 check_indexing(F, 1, D/E, G),
705 check_indexing(B, [A|C]).
706check_indexing([], _, _, _).
707check_indexing([A|B], C, D, E) :-
708 ( is_indexed_argument(D, C)
709 -> true
710 ; nonvar(A)
711 -> indexed_argument(D, C)
712 ; term_variables(B, F),
713 append(F, E, G),
714 ( memberchk_eq(A, G)
715 -> indexed_argument(D, C)
716 ; true
717 )
718 ),
719 H is C+1,
720 term_variables(A, I),
721 append(I, E, J),
722 check_indexing(B, H, D, J).
723check_specs_indexing([], _, []).
724check_specs_indexing([A|B], C, D) :-
725 D=[E|F],
726 term_variables(B, G, C),
727 check_spec_indexing(A, G, E),
728 term_variables(A, H, C),
729 check_specs_indexing(B, H, F).
730check_spec_indexing(A, B, C) :-
731 functor(A, D, E),
732 C=spec(D, E, F),
733 A=..[_|G],
734 check_args_spec_indexing(G, 1, B, F),
735 indexing_spec(D/E, [F]).
736check_args_spec_indexing([], _, _, []).
737check_args_spec_indexing([A|B], C, D, E) :-
738 term_variables(B, F, D),
739 ( check_arg_spec_indexing(A, C, F, G)
740 -> E=[G|H]
741 ; E=H
742 ),
743 I is C+1,
744 term_variables(A, J, D),
745 check_args_spec_indexing(B, I, J, H).
746check_arg_spec_indexing(A, B, C, D) :-
747 ( var(A)
748 -> memberchk_eq(A, C),
749 D=specinfo(B, any, [])
750 ; functor(A, E, F),
751 D=specinfo(B, E/F, [G]),
752 A=..[_|H],
753 check_args_spec_indexing(H, 1, C, G)
754 ).
755add_occurrences(A, B) :-
756 maplist(add_rule_occurrences, A, B).
757add_rule_occurrences(A, B) :-
758 A=pragma(_, C, _, _, D),
759 B=ast_rule(E, _, _, _, _),
760 add_head_occurrences(E, C, D).
761add_head_occurrences(simplification(A), ids(B, _), C) :-
762 maplist(add_constraint_occurrence(C, simplification), A, B).
763add_head_occurrences(propagation(A), ids(_, B), C) :-
764 maplist(add_constraint_occurrence(C, propagation), A, B).
765add_head_occurrences(simpagation(A, B), ids(C, D), E) :-
766 maplist(add_constraint_occurrence(E, simplification), A, C),
767 maplist(add_constraint_occurrence(E, propagation), B, D).
768add_constraint_occurrence(A, B, C, D) :-
769 C=chr_constraint(E, _, _),
770 new_occurrence(E, A, D, B).
771observation_analysis(A, B, C, D) :-
772 ( all_spawned(A, C)
773 -> true
774 ; var(B)
775 -> spawns_all(A, C)
776 ; B=true
777 -> true
778 ; B=fail
779 -> true
780 ; B=!
781 -> true
782 ; B=(E, F)
783 -> observation_analysis(A, E, C, D),
784 observation_analysis(A, F, C, D)
785 ; B=(E;F)
786 -> observation_analysis(A, E, C, D),
787 observation_analysis(A, F, C, D)
788 ; B=(E->F)
789 -> observation_analysis(A, E, C, D),
790 observation_analysis(A, F, C, D)
791 ; B=(\+G)
792 -> observation_analysis(A, G, C, D)
793 ; functor(B, H, I),
794 memberchk(H/I, D)
795 -> spawns(A, C, H/I)
796 ; B=(_=_)
797 -> spawns_all_triggers(A, C)
798 ; B=(_ is _)
799 -> spawns_all_triggers(A, C)
800 ; builtin_binds_b(B, J)
801 -> ( J==[]
802 -> true
803 ; spawns_all_triggers(A, C)
804 )
805 ; spawns_all(A, C)
806 ).
807is_observed(A, B) :-
808 is_observed(A, B, _),
809 ai_is_observed(A, B).
810is_stored_in_guard(A, B) :-
811 chr_pp_flag(store_in_guards, on),
812 do_is_observed(A, B, guard).
813generate_attach_detach_a_constraint_all([], []).
814generate_attach_detach_a_constraint_all([A|B], C) :-
815 ( ( chr_pp_flag(debugable, on)
816 ; is_stored(A),
817 \+ only_ground_indexed_arguments(A),
818 \+ get_store_type(A, var_assoc_store(_, _))
819 )
820 -> generate_attach_a_constraint(A, D),
821 generate_detach_a_constraint(A, E)
822 ; D=[],
823 E=[]
824 ),
825 generate_attach_detach_a_constraint_all(B, F),
826 append([D, E, F], C).
827generate_attach_a_constraint(A, [B, C]) :-
828 generate_attach_a_constraint_nil(A, B),
829 generate_attach_a_constraint_cons(A, C).
830attach_constraint_atom(A, B, C, D) :-
831 make_name(attach_, A, E),
832 D=..[E, B, C].
833generate_attach_a_constraint_nil(A, B) :-
834 B=(C:-true),
835 attach_constraint_atom(A, [], _, C).
836generate_attach_a_constraint_cons(A, B) :-
837 B=(C:-D),
838 attach_constraint_atom(A, [E|F], G, C),
839 attach_constraint_atom(A, F, G, H),
840 D=(I, J, H),
841 get_max_constraint_index(K),
842 ( K==1
843 -> generate_attach_body_1(A, E, G, I)
844 ; generate_attach_body_n(A, E, G, I)
845 ),
846 chr_pp_flag(solver_events, L),
847 ( L\==none
848 -> _=[[E|_], G],
849 get_target_module(M),
850 use_auxiliary_predicate(run_suspensions),
851 J=clp_events:subscribe(E, L, M, M:'$run_suspensions'([G]))
852 ; J=true
853 ).
854generate_attach_body_1(_, A, B, C) :-
855 get_target_module(D),
856 C=(get_attr(A, D, E)->put_attr(A, D, [B|E]);put_attr(A, D, [B])).
857generate_attach_body_n(A/B, C, D, E) :-
858 chr_pp_flag(experiment, off),
859 !,
860 get_constraint_index(A/B, F),
861 get_max_constraint_index(G),
862 get_target_module(H),
863 add_attr(G, D, F, I, J, K),
864 singleton_attr(G, D, F, L),
865 E=(get_attr(C, H, I)->J, put_attr(C, H, K);put_attr(C, H, L)),
866 !.
867generate_attach_body_n(A/B, C, D, E) :-
868 chr_pp_flag(experiment, on),
869 !,
870 get_constraint_index(A/B, F),
871 or_pattern(F, G),
872 H is F+1,
873 get_max_constraint_index(I),
874 get_target_module(J),
875 singleton_attr(I, D, F, K),
876 E=(get_attr(C, J, L)->arg(1, L, M), arg(H, L, N), O is M\/G, setarg(1, L, O), setarg(H, L, [D|N]);put_attr(C, J, K)),
877 !.
878generate_detach_a_constraint(A, [B, C]) :-
879 generate_detach_a_constraint_nil(A, B),
880 generate_detach_a_constraint_cons(A, C).
881detach_constraint_atom(A, B, C, D) :-
882 make_name(detach_, A, E),
883 D=..[E, B, C].
884generate_detach_a_constraint_nil(A, B) :-
885 B=(C:-true),
886 detach_constraint_atom(A, [], _, C).
887generate_detach_a_constraint_cons(A, B) :-
888 B=(C:-D),
889 detach_constraint_atom(A, [E|F], G, C),
890 detach_constraint_atom(A, F, G, H),
891 D=(I, H),
892 get_max_constraint_index(J),
893 ( J==1
894 -> generate_detach_body_1(A, E, G, I)
895 ; generate_detach_body_n(A, E, G, I)
896 ).
897generate_detach_body_1(_, A, B, C) :-
898 get_target_module(D),
899 C=(get_attr(A, D, E)->'chr sbag_del_element'(E, B, F), (F==[]->del_attr(A, D);put_attr(A, D, F));true).
900generate_detach_body_n(A/B, C, D, E) :-
901 get_constraint_index(A/B, F),
902 get_max_constraint_index(G),
903 rem_attr(G, C, D, F, H, I),
904 get_target_module(J),
905 E=(get_attr(C, J, H)->I;true),
906 !.
907create_indexed_variables_body([], [], [], _, _, _, empty, 0).
908create_indexed_variables_body([A|B], [C|D], [E|F], G, H, I, J, K) :-
909 L is H+1,
910 create_indexed_variables_body(B,
911 D,
912 F,
913 M,
914 L,
915 I,
916 N,
917 O),
918 ( C==(?),
919 is_indexed_argument(I, H)
920 -> ( atomic_type(E)
921 -> J=((var(A)->G=[A|M];G=M), P),
922 ( N==empty
923 -> P=true,
924 M=[]
925 ; P=N
926 )
927 ; N==empty
928 -> J=term_variables(A, G)
929 ; J=(term_variables(A, G, M), N)
930 ),
931 K=O
932 ; C==(-),
933 is_indexed_argument(I, H)
934 -> ( N==empty
935 -> J=(G=[A])
936 ; J=(G=[A|M], N)
937 ),
938 K is O+1
939 ; G=M,
940 J=N,
941 K is O+1
942 ).
943spectermvars(A, B, C, D, E, F) :-
944 spectermvars(B, 1, A, C, D, F, [], E).
945spectermvars([], A, _, _, B, C, C, true) :-
946 A>B,
947 !.
948spectermvars([A|B], C, D, E, F, G, H, I) :-
949 I=(J, K),
950 argspecs(D, C, L, M),
951 merge_argspecs(L, N),
952 arggoal(N, A, J, G, O),
953 P is C+1,
954 spectermvars(B,
955 P,
956 M,
957 E,
958 F,
959 O,
960 H,
961 K).
962argspecs([], _, [], []).
963argspecs([[]|A], B, C, D) :-
964 argspecs(A, B, C, D).
965argspecs([[specinfo(A, B, C)|D]|E], F, G, H) :-
966 ( F==A
967 -> G=[specinfo(A, B, C)|I],
968 ( D=[]
969 -> J=H
970 ; H=[D|J]
971 )
972 ; G=I,
973 H=[[specinfo(A, B, C)|D]|J]
974 ),
975 argspecs(E, F, I, J).
976merge_argspecs(A, B) :-
977 sort(A, C),
978 merge_argspecs_(C, B).
979merge_argspecs_([], []).
980merge_argspecs_([A], B) :-
981 !,
982 B=[A].
983merge_argspecs_([specinfo(A, B, C), specinfo(A, D, E)|F], G) :-
984 ( ( B==any
985 ; D==any
986 )
987 -> merge_argspecs_([specinfo(A, any, [])|F], G)
988 ; B==D
989 -> append(C, E, H),
990 merge_argspecs_([specinfo(A, B, H)|F], G)
991 ; G=[specinfo(A, B, C)|I],
992 merge_argspecs_([specinfo(A, D, E)|F], I)
993 ).
994arggoal(A, B, C, D, E) :-
995 ( A==[]
996 -> D=E,
997 C=true
998 ; A=[specinfo(_, any, _)]
999 -> C=term_variables(B, D, E)
1000 ; C=(var(B)->D=[B|E];F),
1001 arggoal_cases(A, B, D, E, F)
1002 ).
1003arggoal_cases([], _, A, B, A=B).
1004arggoal_cases([specinfo(_, A, B)|C], D, E, F, G) :-
1005 ( B==[]
1006 -> G=H
1007 ; B==[[]]
1008 -> G=H
1009 ; A=I/J
1010 -> G=(K;H),
1011 functor(L, I, J),
1012 L=..[_|M],
1013 K=(D=L->N),
1014 spectermvars(M,
1015 1,
1016 B,
1017 I,
1018 J,
1019 E,
1020 F,
1021 N)
1022 ),
1023 arggoal_cases(C, D, E, F, H).
(A, B) :-
1025 generate_activate_clauses(A, B, C),
1026 generate_remove_clauses(A, C, D),
1027 generate_allocate_clauses(A, D, E),
1028 generate_insert_constraint_internal_clauses(A, E, F),
1029 generate_novel_production(F, G),
1030 generate_extend_history(G, H),
1031 generate_run_suspensions_clauses(A, H, I),
1032 generate_empty_named_history_initialisations(I, J),
1033 J=[].
1034generate_remove_clauses([], A, A).
1035generate_remove_clauses([A|B], C, D) :-
1036 generate_remove_clause(A, C, E),
1037 generate_remove_clauses(B, E, D).
1038remove_constraint_goal(A, B, C, D, E, F, G) :-
1039 uses_state(A, removed),
1040 ( chr_pp_flag(inline_insertremove, off)
1041 -> use_auxiliary_predicate(remove_constraint_internal, A),
1042 G=(H, (I==yes->E;D)),
1043 remove_constraint_atom(A, B, C, I, H)
1044 ; delay_phase_end(validate_store_type_assumptions,
1045 generate_remove_body(A,
1046 B,
1047 C,
1048 D,
1049 E,
1050 F,
1051 G))
1052 ).
1053remove_constraint_atom(A, B, C, D, E) :-
1054 make_name('$remove_constraint_internal_', A, F),
1055 ( chr_pp_flag(debugable, off),
1056 ( only_ground_indexed_arguments(A)
1057 ; get_store_type(A, var_assoc_store(_, _))
1058 )
1059 -> E=..[F, B, D]
1060 ; E=..[F, B, C, D]
1061 ).
1062generate_remove_clause(A, B, C) :-
1063 ( is_used_auxiliary_predicate(remove_constraint_internal, A)
1064 -> B=[D|C],
1065 D=(E:-F),
1066 remove_constraint_atom(A, G, H, I, E),
1067 generate_remove_body(A,
1068 G,
1069 H,
1070 I=no,
1071 I=yes,
1072 active,
1073 F)
1074 ; B=C
1075 ).
1076generate_remove_body(A, B, C, D, E, F, G) :-
1077 ( chr_pp_flag(debugable, off),
1078 ( only_ground_indexed_arguments(A)
1079 ; get_store_type(A, var_assoc_store(_, _))
1080 )
1081 -> ( F==active
1082 -> get_update_suspension_field(A,
1083 B,
1084 state,
1085 H,
1086 removed,
1087 I,
1088 J,
1089 K),
1090 if_used_state(A, not_stored_yet, J, true, L),
1091 if_used_state(A,
1092 not_stored_yet,
1093 (H==not_stored_yet->D;E),
1094 E,
1095 M)
1096 ; F==partner
1097 -> get_update_suspension_field(A,
1098 B,
1099 state,
1100 H,
1101 removed,
1102 I,
1103 _,
1104 K),
1105 L=true,
1106 M=E
1107 ),
1108 G=(I, L, K, M)
1109 ; static_suspension_term(A, N),
1110 get_static_suspension_term_field(arguments, A, N, O),
1111 generate_indexed_variables_body(A, O, P, C),
1112 ( chr_pp_flag(debugable, on)
1113 -> A=Q/_,
1114 get_static_suspension_term_field(functor,
1115 A,
1116 N,
1117 Q)
1118 ; true
1119 ),
1120 ( F==active
1121 -> get_update_static_suspension_field(A,
1122 B,
1123 N,
1124 state,
1125 H,
1126 removed,
1127 J,
1128 K),
1129 if_used_state(A, not_stored_yet, J, true, L),
1130 if_used_state(A,
1131 not_stored_yet,
1132 (H==not_stored_yet->C=[], D;P, E),
1133 (P, E),
1134 M)
1135 ; F==partner
1136 -> get_update_static_suspension_field(A,
1137 B,
1138 N,
1139 state,
1140 H,
1141 removed,
1142 _,
1143 K),
1144 L=true,
1145 M=(P, E)
1146 ),
1147 G=(B=N, L, K, M)
1148 ).
1149generate_activate_clauses([], A, A).
1150generate_activate_clauses([A|B], C, D) :-
1151 generate_activate_clause(A, C, E),
1152 generate_activate_clauses(B, E, D).
1153activate_constraint_goal(A, B, C, D, E, F) :-
1154 ( chr_pp_flag(inline_insertremove, off)
1155 -> use_auxiliary_predicate(activate_constraint, A),
1156 F=(G, (H==yes->B;true)),
1157 activate_constraint_atom(A,
1158 H,
1159 C,
1160 D,
1161 E,
1162 G)
1163 ; delay_phase_end(validate_store_type_assumptions,
1164 activate_constraint_body(A,
1165 B,
1166 true,
1167 C,
1168 D,
1169 E,
1170 F))
1171 ).
1172activate_constraint_atom(A, B, C, D, E, F) :-
1173 make_name('$activate_constraint_', A, G),
1174 ( chr_pp_flag(debugable, off),
1175 only_ground_indexed_arguments(A)
1176 -> F=..[G, B, D]
1177 ; chr_pp_flag(debugable, off),
1178 may_trigger(A),
1179 get_store_type(A, var_assoc_store(_, _))
1180 -> F=..[G, B, D, E]
1181 ; chr_pp_flag(debugable, off),
1182 may_trigger(A),
1183 get_store_type(A, var_assoc_store(_, _))
1184 -> F=..[G, B, C, D, E]
1185 ; F=..[G, B, C, D]
1186 ).
1187generate_activate_clause(A, B, C) :-
1188 ( is_used_auxiliary_predicate(activate_constraint, A)
1189 -> B=[D|C],
1190 D=(E:-F),
1191 activate_constraint_atom(A,
1192 G,
1193 H,
1194 I,
1195 J,
1196 E),
1197 activate_constraint_body(A,
1198 G=yes,
1199 G=no,
1200 H,
1201 I,
1202 J,
1203 F)
1204 ; B=C
1205 ).
1206activate_constraint_body(A, B, C, D, E, F, G) :-
1207 ( chr_pp_flag(debugable, off),
1208 may_trigger(A),
1209 uses_field(A, generation)
1210 -> get_update_suspension_field(A,
1211 E,
1212 generation,
1213 H,
1214 F,
1215 I,
1216 J,
1217 K),
1218 L=(I, J, F is H+1, K)
1219 ; L=true
1220 ),
1221 get_update_suspension_field(A,
1222 E,
1223 state,
1224 M,
1225 active,
1226 N,
1227 O,
1228 P),
1229 if_used_state(A, not_stored_yet, O, true, Q),
1230 ( chr_pp_flag(debugable, off),
1231 ( only_ground_indexed_arguments(A)
1232 ; get_store_type(A, var_assoc_store(_, _))
1233 )
1234 -> if_used_state(A,
1235 not_stored_yet,
1236 (M==not_stored_yet->B;C),
1237 C,
1238 R)
1239 ; get_dynamic_suspension_term_field(arguments,
1240 A,
1241 E,
1242 S,
1243 T),
1244 generate_indexed_variables_body(A, S, U, D),
1245 chr_none_locked(D, V),
1246 if_used_state(A,
1247 not_stored_yet,
1248 (M==not_stored_yet->T, U, V, B;C),
1249 C,
1250 R)
1251 ),
1252 G=(N, Q, P, L, R).
1253generate_allocate_clauses([], A, A).
1254generate_allocate_clauses([A|B], C, D) :-
1255 generate_allocate_clause(A, C, E),
1256 generate_allocate_clauses(B, E, D).
1257allocate_constraint_goal(A, B, C, D) :-
1258 uses_state(A, not_stored_yet),
1259 ( chr_pp_flag(inline_insertremove, off)
1260 -> use_auxiliary_predicate(allocate_constraint, A),
1261 allocate_constraint_atom(A, B, C, D)
1262 ; D=(B=E, F),
1263 delay_phase_end(validate_store_type_assumptions,
1264 allocate_constraint_body(A,
1265 E,
1266 C,
1267 F))
1268 ).
1269allocate_constraint_atom(A, B, C, D) :-
1270 make_name('$allocate_constraint_', A, E),
1271 D=..[E, B|C].
1272generate_allocate_clause(A, B, C) :-
1273 ( is_used_auxiliary_predicate(allocate_constraint, A)
1274 -> B=[D|C],
1275 D=(E:-F),
1276 A=_/G,
1277 length(H, G),
1278 allocate_constraint_atom(A, I, H, E),
1279 allocate_constraint_body(A, I, H, F)
1280 ; B=C
1281 ).
1282allocate_constraint_body(A, B, C, D) :-
1283 static_suspension_term(A, E),
1284 get_static_suspension_term_field(arguments, A, E, C),
1285 ( chr_pp_flag(debugable, on)
1286 -> A=F/_,
1287 get_static_suspension_term_field(functor, A, E, F)
1288 ; true
1289 ),
1290 ( chr_pp_flag(debugable, on)
1291 -> ( may_trigger(A)
1292 -> append(C, [B], G),
1293 build_head(_, _, [0], G, H),
1294 get_target_module(I),
1295 J=I:H
1296 ; J=true
1297 ),
1298 K=(B=E),
1299 create_static_suspension_field(A,
1300 E,
1301 continuation,
1302 J,
1303 L),
1304 create_static_suspension_field(A, E, generation, 0, M)
1305 ; may_trigger(A),
1306 uses_field(A, generation)
1307 -> create_static_suspension_field(A, E, generation, 0, M),
1308 B=E,
1309 K=true,
1310 L=true
1311 ; M=true,
1312 B=E,
1313 K=true,
1314 L=true
1315 ),
1316 ( uses_history(A)
1317 -> create_static_suspension_field(A, E, history, t, N)
1318 ; N=true
1319 ),
1320 create_static_suspension_field(A,
1321 E,
1322 state,
1323 not_stored_yet,
1324 O),
1325 ( has_suspension_field(A, id)
1326 -> get_static_suspension_term_field(id, A, E, P),
1327 gen_id(P, Q)
1328 ; Q=true
1329 ),
1330 D=(K, L, M, N, O, Q).
1331gen_id(A, 'chr gen_id'(A)).
1332generate_insert_constraint_internal_clauses([], A, A).
1333generate_insert_constraint_internal_clauses([A|B], C, D) :-
1334 generate_insert_constraint_internal_clause(A, C, E),
1335 generate_insert_constraint_internal_clauses(B, E, D).
1336insert_constraint_internal_constraint_goal(A, B, C, D, E, F) :-
1337 ( chr_pp_flag(inline_insertremove, off)
1338 -> use_auxiliary_predicate(remove_constraint_internal, A),
1339 insert_constraint_internal_constraint_atom(A,
1340 B,
1341 C,
1342 D,
1343 E,
1344 F)
1345 ; delay_phase_end(validate_store_type_assumptions,
1346 generate_insert_constraint_internal_body(A,
1347 C,
1348 D,
1349 E,
1350 B,
1351 F))
1352 ).
1353insert_constraint_internal_constraint_atom(A, B, C, D, E, F) :-
1354 insert_constraint_internal_constraint_name(A, G),
1355 ( chr_pp_flag(debugable, on)
1356 -> F=..[G, B, C, D|E]
1357 ; ( only_ground_indexed_arguments(A)
1358 ; get_store_type(A, var_assoc_store(_, _))
1359 )
1360 -> F=..[G, C|E]
1361 ; F=..[G, B, C|E]
1362 ).
1363insert_constraint_internal_constraint_name(A, B) :-
1364 make_name('$insert_constraint_internal_', A, B).
1365generate_insert_constraint_internal_clause(A, B, C) :-
1366 ( is_used_auxiliary_predicate(insert_constraint_internal, A)
1367 -> B=[D|C],
1368 D=(E:-F),
1369 A=_/G,
1370 length(H, G),
1371 insert_constraint_internal_constraint_atom(A,
1372 I,
1373 J,
1374 K,
1375 H,
1376 E),
1377 generate_insert_constraint_internal_body(A,
1378 J,
1379 K,
1380 H,
1381 I,
1382 F)
1383 ; B=C
1384 ).
1385generate_insert_constraint_internal_body(A, B, C, D, E, F) :-
1386 static_suspension_term(A, G),
1387 create_static_suspension_field(A, G, state, active, H),
1388 ( chr_pp_flag(debugable, on)
1389 -> get_static_suspension_term_field(continuation, A, G, C),
1390 create_static_suspension_field(A, G, generation, 0, I)
1391 ; may_trigger(A),
1392 uses_field(A, generation)
1393 -> create_static_suspension_field(A, G, generation, 0, I)
1394 ; I=true
1395 ),
1396 ( chr_pp_flag(debugable, on)
1397 -> A=J/_,
1398 get_static_suspension_term_field(functor, A, G, J)
1399 ; true
1400 ),
1401 ( uses_history(A)
1402 -> create_static_suspension_field(A, G, history, t, K)
1403 ; K=true
1404 ),
1405 get_static_suspension_term_field(arguments, A, G, D),
1406 _=[_|_],
1407 ( chr_pp_flag(debugable, off),
1408 ( only_ground_indexed_arguments(A)
1409 ; get_store_type(A, var_assoc_store(_, _))
1410 )
1411 -> suspension_term_base_fields(A, _),
1412 ( has_suspension_field(A, id)
1413 -> get_static_suspension_term_field(id, A, G, L),
1414 gen_id(L, M)
1415 ; M=true
1416 ),
1417 F=(B=G, H, I, K, M)
1418 ; ( has_suspension_field(A, id)
1419 -> get_static_suspension_term_field(id, A, G, L),
1420 gen_id(L, M)
1421 ; M=true
1422 ),
1423 generate_indexed_variables_body(A, D, N, E),
1424 chr_none_locked(E, O),
1425 F=(B=G, N, O, H, I, K, M)
1426 ).
1427generate_novel_production(A, B) :-
1428 ( is_used_auxiliary_predicate(novel_production)
1429 -> A=[C|B],
1430 C=('$novel_production'(D, E):-arg(3, D, F), (hprolog:get_ds(E, F, _)->fail;true))
1431 ; A=B
1432 ).
1433generate_extend_history(A, B) :-
1434 ( is_used_auxiliary_predicate(extend_history)
1435 -> A=[C|B],
1436 C=('$extend_history'(D, E):-arg(3, D, F), hprolog:put_ds(E, F, x, G), setarg(3, D, G))
1437 ; A=B
1438 ).
1439generate_empty_named_history_initialisations(A, B) :-
1440 empty_named_history_initialisations(A, B),
1441 find_empty_named_histories.
1442empty_named_history_global_variable(A, B) :-
1443 atom_concat('chr empty named history ', A, B).
1444empty_named_history_novel_production(A, nb_getval(B, 0)) :-
1445 empty_named_history_global_variable(A, B).
1446empty_named_history_extend_history(A, b_setval(B, 1)) :-
1447 empty_named_history_global_variable(A, B).
1448generate_run_suspensions_clauses([], A, A).
1449generate_run_suspensions_clauses([A|B], C, D) :-
1450 generate_run_suspensions_clause(A, C, E),
1451 generate_run_suspensions_clauses(B, E, D).
1452run_suspensions_goal(A, B, C) :-
1453 make_name('$run_suspensions_', A, D),
1454 C=..[D, B].
1455generate_run_suspensions_clause(A, B, C) :-
1456 ( is_used_auxiliary_predicate(run_suspensions, A)
1457 -> B=[D, E|C],
1458 run_suspensions_goal(A, [], D),
1459 ( chr_pp_flag(debugable, on)
1460 -> run_suspensions_goal(A, [F|G], H),
1461 get_update_suspension_field(A,
1462 F,
1463 state,
1464 I,
1465 triggered,
1466 J,
1467 K,
1468 L),
1469 get_update_suspension_field(A,
1470 F,
1471 state,
1472 M,
1473 active,
1474 N,
1475 O,
1476 P),
1477 get_update_suspension_field(A,
1478 F,
1479 generation,
1480 Q,
1481 R,
1482 S,
1483 T,
1484 U),
1485 get_dynamic_suspension_term_field(continuation,
1486 A,
1487 F,
1488 V,
1489 W),
1490 run_suspensions_goal(A, G, X),
1491 E=(H:-J, K, (I==active->L, S, T, R is Q+1, U, W, ('chr debugging'->('chr debug_event'(wake(F)), call(V);'chr debug_event'(fail(F)), !, fail), ('chr debug_event'(exit(F));'chr debug_event'(redo(F)), fail);call(V)), N, O, (M==triggered->P;true);true), X)
1492 ; run_suspensions_goal(A, [F|G], H),
1493 static_suspension_term(A, Y),
1494 get_static_suspension_term_field(arguments,
1495 A,
1496 Y,
1497 Z),
1498 append(Z, [F], A1),
1499 make_suspension_continuation_goal(A, A1, V),
1500 run_suspensions_goal(A, G, X),
1501 ( uses_field(A, generation)
1502 -> get_update_static_suspension_field(A,
1503 F,
1504 Y,
1505 generation,
1506 Q,
1507 R,
1508 S,
1509 U),
1510 B1=(S, R is Q+1, U)
1511 ; B1=true
1512 ),
1513 get_update_static_suspension_field(A,
1514 F,
1515 Y,
1516 state,
1517 I,
1518 triggered,
1519 J,
1520 L),
1521 get_update_static_suspension_field(A,
1522 F,
1523 Y,
1524 state,
1525 M,
1526 active,
1527 C1,
1528 D1),
1529 if_used_state(A,
1530 removed,
1531 (J, (I==active->E1;true)),
1532 E1,
1533 F1),
1534 E1=(L, B1, V, C1, (M==triggered->D1;true)),
1535 E=(H:-F=Y, F1, X)
1536 )
1537 ; B=C
1538 ).
1539generate_attach_increment(A) :-
1540 get_max_constraint_index(B),
1541 ( is_used_auxiliary_predicate(attach_increment),
1542 B>0
1543 -> A=[C, D],
1544 generate_attach_increment_empty(C),
1545 ( B==1
1546 -> generate_attach_increment_one(D)
1547 ; generate_attach_increment_many(B, D)
1548 )
1549 ; A=[]
1550 ).
1551generate_attach_increment_empty((attach_increment([], _):-true)).
1552generate_attach_increment_one(A) :-
1553 B=attach_increment([C|D], E),
1554 get_target_module(F),
1555 chr_not_locked(C, G),
1556 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)),
1557 A=(B:-H).
1558generate_attach_increment_many(A, B) :-
1559 C=attach_increment([D|E], F),
1560 merge_attributes(A, F, G, H, I),
1561 get_target_module(J),
1562 chr_not_locked(D, K),
1563 L=(K, (get_attr(D, J, G)->H, put_attr(D, J, I);put_attr(D, J, F)), attach_increment(E, F)),
1564 B=(C:-L).
1565generate_attr_unify_hook(A) :-
1566 get_max_constraint_index(B),
1567 ( B==0
1568 -> A=[]
1569 ; A=[C|D],
1570 C=attribute_goals(_, E, E),
1571 ( B==1
1572 -> generate_attr_unify_hook_one(D)
1573 ; generate_attr_unify_hook_many(B, D)
1574 )
1575 ).
1576generate_attr_unify_hook_one([A]) :-
1577 B=attr_unify_hook(C, D),
1578 get_target_module(E),
1579 get_indexed_constraint(1, F),
1580 ( get_store_type(F, G),
1581 ( G=default
1582 ; G=multi_store(H),
1583 memberchk(default, H)
1584 )
1585 -> make_run_suspensions(I, J, K),
1586 make_run_suspensions(J, J, L),
1587 ( atomic_types_suspended_constraint(F)
1588 -> M=true,
1589 J=C,
1590 N=true,
1591 O=P,
1592 Q=(append(C, P, R), sort(R, I)),
1593 S=true
1594 ; M=sort(C, J),
1595 N=sort(P, O),
1596 Q='chr merge_attributes'(J, O, I),
1597 use_auxiliary_predicate(attach_increment),
1598 S=(compound(D)->term_variables(D, T), attach_increment(T, J);true)
1599 ),
1600 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)),
1601 A=(B:-U)
1602 ; get_store_type(F, var_assoc_store(_, _))
1603 -> make_run_suspensions(R, R, K),
1604 Q=merge_into_assoc_store(C, P, R),
1605 U=(get_attr(D, E, P)->Q, K;put_attr(D, E, C)),
1606 A=(B:-U)
1607 ).
1608generate_attr_unify_hook_many(A, [B]) :-
1609 chr_pp_flag(dynattr, off),
1610 !,
1611 C=attr_unify_hook(D, E),
1612 get_target_module(F),
1613 make_attr(A, G, H, D),
1614 bagof(I,
1615 J^K^(member(J, H), I=sort(J, K)),
1616 L),
1617 list2conj(L, M),
1618 bagof(K, J^member(sort(J, K), L), N),
1619 merge_attributes2(A, G, N, O, P, Q),
1620 get_all_suspensions2(A, Q, R),
1621 make_attr(A, G, N, S),
1622 make_run_suspensions_loop(R, N, T),
1623 make_run_suspensions_loop(N, N, U),
1624 ( forall(( between(1, A, V),
1625 get_indexed_constraint(V, W)
1626 ),
1627 atomic_types_suspended_constraint(W))
1628 -> X=true
1629 ; use_auxiliary_predicate(attach_increment),
1630 X=(compound(E)->term_variables(E, Y), attach_increment(Y, S);true)
1631 ),
1632 Z=(M, (var(E)->(get_attr(E, F, O)->P, put_attr(E, F, Q), T;put_attr(E, F, S), U);X, U)),
1633 B=(C:-Z).
1634generate_attr_unify_hook_many(A, B) :-
1635 C=attr_unify_hook(D, E),
1636 get_target_module(F),
1637 normalize_attr(D, G, H),
1638 normalize_attr(I, J, K),
1639 merge_attributes(A, H, K, L, M),
1640 make_run_suspensions(A),
1641 ( forall(( between(1, A, N),
1642 get_indexed_constraint(N, O)
1643 ),
1644 atomic_types_suspended_constraint(O))
1645 -> P=true
1646 ; use_auxiliary_predicate(attach_increment),
1647 P=(compound(E)->term_variables(E, Q), attach_increment(Q, H);true)
1648 ),
1649 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))),
1650 S=(C:-R),
1651 B=[S, T, U|V],
1652 T='$dispatch_run_suspensions'([]),
1653 U=('$dispatch_run_suspensions'([W-X|Y]):-'$dispatch_run_suspensions'(W, X), '$dispatch_run_suspensions'(Y)),
1654 run_suspensions_dispatchers(A, [], V).
1655run_suspensions_dispatchers(A, B, C) :-
1656 ( A>0
1657 -> get_indexed_constraint(A, D),
1658 E=[('$dispatch_run_suspensions'(A, F):-G)|B],
1659 ( may_trigger(D)
1660 -> run_suspensions_goal(D, F, G)
1661 ; G=true
1662 ),
1663 H is A-1,
1664 run_suspensions_dispatchers(H, E, C)
1665 ; C=B
1666 ).
1667make_run_suspensions(A) :-
1668 ( A>0
1669 -> ( get_indexed_constraint(A, B),
1670 may_trigger(B)
1671 -> use_auxiliary_predicate(run_suspensions, B)
1672 ; true
1673 ),
1674 C is A-1,
1675 make_run_suspensions(C)
1676 ; true
1677 ).
1678make_run_suspensions(A, B, C) :-
1679 make_run_suspensions(1, A, B, C).
1680make_run_suspensions(A, B, C, D) :-
1681 ( get_indexed_constraint(A, E),
1682 may_trigger(E)
1683 -> use_auxiliary_predicate(run_suspensions, E),
1684 ( wakes_partially(E)
1685 -> run_suspensions_goal(E, C, D)
1686 ; run_suspensions_goal(E, B, D)
1687 )
1688 ; D=true
1689 ).
1690make_run_suspensions_loop(A, B, C) :-
1691 make_run_suspensions_loop(A, B, 1, C).
1692make_run_suspensions_loop([], [], _, true).
1693make_run_suspensions_loop([A|B], [C|D], E, (F, G)) :-
1694 make_run_suspensions(E, A, C, F),
1695 H is E+1,
1696 make_run_suspensions_loop(B, D, H, G).
1697generate_insert_delete_constraints([], []).
1698generate_insert_delete_constraints([A|B], C) :-
1699 ( is_stored(A)
1700 -> generate_insert_delete_constraint(A, C, D)
1701 ; C=D
1702 ),
1703 generate_insert_delete_constraints(B, D).
1704generate_insert_delete_constraint(A, B, C) :-
1705 insert_constraint_clause(A, B, D),
1706 delete_constraint_clause(A, D, C).
1707insert_constraint_goal(A, B, C, D) :-
1708 ( chr_pp_flag(inline_insertremove, off)
1709 -> use_auxiliary_predicate(insert_in_store, A),
1710 insert_constraint_atom(A, B, D)
1711 ; delay_phase_end(validate_store_type_assumptions,
1712 (insert_constraint_body(A, B, E, D), insert_constraint_direct_used_vars(E, C)))
1713 ).
1714insert_constraint_direct_used_vars([], _).
1715insert_constraint_direct_used_vars([A-B|C], D) :-
1716 nth1(A, D, B),
1717 insert_constraint_direct_used_vars(C, D).
1718insert_constraint_atom(A, B, C) :-
1719 make_name('$insert_in_store_', A, D),
1720 C=..[D, B].
1721insert_constraint_clause(A, B, C) :-
1722 ( is_used_auxiliary_predicate(insert_in_store, A)
1723 -> B=[D|C],
1724 D=(E:-F, G, H),
1725 insert_constraint_atom(A, I, E),
1726 insert_constraint_body(A, I, J, H),
1727 insert_constraint_used_vars(J, A, I, G),
1728 ( chr_pp_flag(store_counter, on)
1729 -> F='$insert_counter_inc'
1730 ; F=true
1731 )
1732 ; B=C
1733 ).
1734insert_constraint_used_vars([], _, _, true).
1735insert_constraint_used_vars([A-B|C], D, E, (F, G)) :-
1736 get_dynamic_suspension_term_field(argument(A),
1737 D,
1738 E,
1739 B,
1740 F),
1741 insert_constraint_used_vars(C, D, E, G).
1742insert_constraint_body(A, B, C, D) :-
1743 get_store_type(A, E),
1744 insert_constraint_body(E, A, B, C, D).
1745insert_constraint_body(default, A, B, [], C) :-
1746 global_list_store_name(A, D),
1747 make_get_store_goal(D, E, F),
1748 make_update_store_goal(D, G, H),
1749 ( chr_pp_flag(debugable, on)
1750 -> G=[B|E],
1751 C=(F, H)
1752 ; set_dynamic_suspension_term_field(global_list_prev,
1753 A,
1754 I,
1755 G,
1756 J),
1757 C=(F, G=[B|E], H, (E=[I|_]->J;true))
1758 ).
1759insert_constraint_body(multi_inthash(A), B, C, [], D) :-
1760 generate_multi_inthash_insert_constraint_bodies(A,
1761 B,
1762 C,
1763 D).
1764insert_constraint_body(multi_hash(A), B, C, D, E) :-
1765 generate_multi_hash_insert_constraint_bodies(A,
1766 B,
1767 C,
1768 E,
1769 D),
1770 sort_out_used_vars(D, _).
1771insert_constraint_body(atomic_constants(A, _, _), B, C, D, E) :-
1772 multi_hash_key_direct(B, A, C, F, D),
1773 constants_store_index_name(B, A, G),
1774 H=..[G, F, I],
1775 E=(H->nb_getval(I, J), b_setval(I, [C|J]);true).
1776insert_constraint_body(ground_constants(A, _, _), B, C, D, E) :-
1777 multi_hash_key_direct(B, A, C, F, D),
1778 constants_store_index_name(B, A, G),
1779 H=..[G, F, I],
1780 E=(H->nb_getval(I, J), b_setval(I, [C|J]);true).
1781insert_constraint_body(global_ground, A, B, [], C) :-
1782 global_ground_store_name(A, D),
1783 make_get_store_goal(D, E, F),
1784 make_update_store_goal(D, G, H),
1785 ( chr_pp_flag(debugable, on)
1786 -> G=[B|E],
1787 C=(F, H)
1788 ; set_dynamic_suspension_term_field(global_list_prev,
1789 A,
1790 I,
1791 G,
1792 J),
1793 C=(F, G=[B|E], H, (E=[I|_]->J;true))
1794 ).
1795insert_constraint_body(var_assoc_store(A, B), _, C, [A-D, B-E], F) :-
1796 get_target_module(G),
1797 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)).
1798insert_constraint_body(global_singleton, A, B, [], C) :-
1799 global_singleton_store_name(A, D),
1800 make_update_store_goal(D, B, E),
1801 C=E.
1802insert_constraint_body(multi_store(A), B, C, D, E) :-
1803 maplist(insert_constraint_body1(B, C), A, F, G),
1804 list2conj(G, E),
1805 sort_out_used_vars(F, D).
1806insert_constraint_body1(A, B, C, D, E) :-
1807 insert_constraint_body(C, A, B, D, E).
1808insert_constraint_body(identifier_store(A), B, C, D, E) :-
1809 D=[A-F],
1810 get_identifier_size(G),
1811 functor(H, struct, G),
1812 get_identifier_index(B, A, I),
1813 arg(I, H, J),
1814 E=(F=H, setarg(I, F, [C|J])).
1815insert_constraint_body(type_indexed_identifier_store(A, B), C, D, E, F) :-
1816 E=[A-G],
1817 type_indexed_identifier_structure(B, H),
1818 get_type_indexed_identifier_index(B, C, A, I),
1819 arg(I, H, J),
1820 F=(G=H, setarg(I, G, [D|J])).
1821sort_out_used_vars(A, B) :-
1822 flatten(A, C),
1823 sort(C, D),
1824 sort_out_used_vars1(D, B).
1825sort_out_used_vars1([], []).
1826sort_out_used_vars1([A-B], C) :-
1827 !,
1828 C=[A-B].
1829sort_out_used_vars1([A-B, C-D|E], F) :-
1830 ( A==C
1831 -> B=D,
1832 sort_out_used_vars1([A-B|E], F)
1833 ; F=[A-B|G],
1834 sort_out_used_vars1([C-D|E], G)
1835 ).
1836generate_multi_inthash_insert_constraint_bodies([], _, _, true).
1837generate_multi_inthash_insert_constraint_bodies([A|B], C, D, (E, F)) :-
1838 multi_hash_store_name(C, A, G),
1839 multi_hash_key(C, A, D, H, I),
1840 E=(H, nb_getval(G, J), insert_iht(J, I, D)),
1841 generate_multi_inthash_insert_constraint_bodies(B,
1842 C,
1843 D,
1844 F).
1845generate_multi_hash_insert_constraint_bodies([], _, _, true, []).
1846generate_multi_hash_insert_constraint_bodies([A|B], C, D, (E, F), [G|H]) :-
1847 multi_hash_store_name(C, A, I),
1848 multi_hash_key_direct(C, A, D, J, G),
1849 make_get_store_goal(I, K, L),
1850 ( chr_pp_flag(ht_removal, on)
1851 -> ht_prev_field(A, M),
1852 set_dynamic_suspension_term_field(M,
1853 C,
1854 N,
1855 O,
1856 P),
1857 E=(L, insert_ht(K, J, D, O), (O=[_, N|_]->P;true))
1858 ; E=(L, insert_ht(K, J, D))
1859 ),
1860 generate_multi_hash_insert_constraint_bodies(B,
1861 C,
1862 D,
1863 F,
1864 H).
1865delete_constraint_clause(A, B, C) :-
1866 ( is_used_auxiliary_predicate(delete_from_store, A)
1867 -> B=[D|C],
1868 D=(E:-F),
1869 delete_constraint_atom(A, G, E),
1870 A=H/I,
1871 functor(E, H, I),
1872 delete_constraint_body(A, E, G, [], F)
1873 ; B=C
1874 ).
1875delete_constraint_goal(A, B, C, D) :-
1876 functor(A, E, F),
1877 G=E/F,
1878 ( chr_pp_flag(inline_insertremove, off)
1879 -> use_auxiliary_predicate(delete_from_store, G),
1880 delete_constraint_atom(G, B, D)
1881 ; delay_phase_end(validate_store_type_assumptions,
1882 delete_constraint_body(G,
1883 A,
1884 B,
1885 C,
1886 D))
1887 ).
1888delete_constraint_atom(A, B, C) :-
1889 make_name('$delete_from_store_', A, D),
1890 C=..[D, B].
1891delete_constraint_body(A, B, C, D, E) :-
1892 E=(F, G),
1893 ( chr_pp_flag(store_counter, on)
1894 -> F='$delete_counter_inc'
1895 ; F=true
1896 ),
1897 get_store_type(A, H),
1898 delete_constraint_body(H, A, B, C, D, G).
1899delete_constraint_body(default, A, _, B, _, C) :-
1900 ( chr_pp_flag(debugable, on)
1901 -> global_list_store_name(A, D),
1902 make_get_store_goal(D, E, F),
1903 make_update_store_goal(D, G, H),
1904 C=(F, 'chr sbag_del_element'(E, B, G), H)
1905 ; get_dynamic_suspension_term_field(global_list_prev,
1906 A,
1907 B,
1908 I,
1909 J),
1910 global_list_store_name(A, D),
1911 make_get_store_goal(D, E, F),
1912 make_update_store_goal(D, K, H),
1913 set_dynamic_suspension_term_field(global_list_prev,
1914 A,
1915 L,
1916 _,
1917 M),
1918 set_dynamic_suspension_term_field(global_list_prev,
1919 A,
1920 L,
1921 I,
1922 N),
1923 C=(J, (var(I)->F, E=[_|K], H, (K=[L|_]->M;true);I=[_, _|K], setarg(2, I, K), (K=[L|_]->N;true)))
1924 ).
1925delete_constraint_body(multi_inthash(A), B, _, C, _, D) :-
1926 generate_multi_inthash_delete_constraint_bodies(A,
1927 B,
1928 C,
1929 D).
1930delete_constraint_body(multi_hash(A), B, C, D, E, F) :-
1931 generate_multi_hash_delete_constraint_bodies(A,
1932 B,
1933 C,
1934 D,
1935 E,
1936 F).
1937delete_constraint_body(atomic_constants(A, _, _), B, C, D, E, F) :-
1938 multi_hash_key(B, C, A, D, E, G, H),
1939 constants_store_index_name(B, A, I),
1940 J=..[I, H, K],
1941 F=(G, (J->nb_getval(K, L), 'chr sbag_del_element'(L, D, M), b_setval(K, M);true)).
1942delete_constraint_body(ground_constants(A, _, _), B, C, D, E, F) :-
1943 multi_hash_key(B, C, A, D, E, G, H),
1944 constants_store_index_name(B, A, I),
1945 J=..[I, H, K],
1946 F=(G, (J->nb_getval(K, L), 'chr sbag_del_element'(L, D, M), b_setval(K, M);true)).
1947delete_constraint_body(global_ground, A, _, B, _, C) :-
1948 ( chr_pp_flag(debugable, on)
1949 -> global_ground_store_name(A, D),
1950 make_get_store_goal(D, E, F),
1951 make_update_store_goal(D, G, H),
1952 C=(F, 'chr sbag_del_element'(E, B, G), H)
1953 ; get_dynamic_suspension_term_field(global_list_prev,
1954 A,
1955 B,
1956 I,
1957 J),
1958 global_ground_store_name(A, D),
1959 make_get_store_goal(D, E, F),
1960 make_update_store_goal(D, K, H),
1961 set_dynamic_suspension_term_field(global_list_prev,
1962 A,
1963 L,
1964 _,
1965 M),
1966 set_dynamic_suspension_term_field(global_list_prev,
1967 A,
1968 L,
1969 I,
1970 N),
1971 C=(J, (var(I)->F, E=[_|K], H, (K=[L|_]->M;true);I=[_, _|K], setarg(2, I, K), (K=[L|_]->N;true)))
1972 ).
1973delete_constraint_body(var_assoc_store(A, B), C, _, D, _, E) :-
1974 get_target_module(F),
1975 get_dynamic_suspension_term_field(argument(A),
1976 C,
1977 D,
1978 G,
1979 H),
1980 get_dynamic_suspension_term_field(argument(B),
1981 C,
1982 D,
1983 I,
1984 J),
1985 E=(H, get_attr(G, F, K), J, delete_assoc_store(K, I, D)).
1986delete_constraint_body(global_singleton, A, _, _, _, B) :-
1987 global_singleton_store_name(A, C),
1988 make_update_store_goal(C, [], D),
1989 B=D.
1990delete_constraint_body(multi_store(A), B, C, D, E, F) :-
1991 maplist(delete_constraint_body1(B, C, D, E),
1992 A,
1993 G),
1994 list2conj(G, F).
1995delete_constraint_body1(A, B, C, D, E, F) :-
1996 delete_constraint_body(E, A, B, C, D, F).
1997delete_constraint_body(identifier_store(A), B, C, D, E, F) :-
1998 get_suspension_argument_possibly_in_scope(C,
1999 E,
2000 D,
2001 A,
2002 G,
2003 H),
2004 get_identifier_size(I),
2005 functor(J, struct, I),
2006 get_identifier_index(B, A, K),
2007 arg(K, J, L),
2008 F=(H, G=J, 'chr sbag_del_element'(L, D, M), setarg(K, G, M)).
2009delete_constraint_body(type_indexed_identifier_store(A, B), C, D, E, F, G) :-
2010 get_suspension_argument_possibly_in_scope(D,
2011 F,
2012 E,
2013 A,
2014 H,
2015 I),
2016 type_indexed_identifier_structure(B, J),
2017 get_type_indexed_identifier_index(B, C, A, K),
2018 arg(K, J, L),
2019 G=(I, H=J, 'chr sbag_del_element'(L, E, M), setarg(K, H, M)).
2020generate_multi_inthash_delete_constraint_bodies([], _, _, true).
2021generate_multi_inthash_delete_constraint_bodies([A|B], C, D, (E, F)) :-
2022 multi_hash_store_name(C, A, G),
2023 multi_hash_key(C, A, D, H, I),
2024 E=(H, nb_getval(G, J), delete_iht(J, I, D)),
2025 generate_multi_inthash_delete_constraint_bodies(B,
2026 C,
2027 D,
2028 F).
2029generate_multi_hash_delete_constraint_bodies([], _, _, _, _, true).
2030generate_multi_hash_delete_constraint_bodies([A|B], C, D, E, F, (G, H)) :-
2031 multi_hash_store_name(C, A, I),
2032 multi_hash_key(C, D, A, E, F, J, K),
2033 make_get_store_goal(I, L, M),
2034 ( chr_pp_flag(ht_removal, on)
2035 -> ht_prev_field(A, N),
2036 get_dynamic_suspension_term_field(N,
2037 C,
2038 E,
2039 O,
2040 P),
2041 set_dynamic_suspension_term_field(N,
2042 C,
2043 Q,
2044 _,
2045 R),
2046 set_dynamic_suspension_term_field(N,
2047 C,
2048 Q,
2049 O,
2050 S),
2051 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)))
2052 ; G=(J, M, delete_ht(L, K, E))
2053 ),
2054 generate_multi_hash_delete_constraint_bodies(B,
2055 _,
2056 D,
2057 E,
2058 F,
2059 H).
2060generate_attach_code(A, B) :-
2061 enumerate_stores_code(A, C),
2062 append(C, D, B),
2063 generate_attach_code(A, D, E),
2064 module_initializers(F),
2065 prolog_global_variables_code(G),
2066 E=[('$chr_initialization':-F), (:-initialization'$chr_initialization')|G].
2067generate_attach_code([], A, A).
2068generate_attach_code([A|B], C, D) :-
2069 get_store_type(A, E),
2070 generate_attach_code(E, A, C, F),
2071 generate_attach_code(B, F, D).
2072generate_attach_code(default, A, B, C) :-
2073 global_list_store_initialisation(A, B, C).
2074generate_attach_code(multi_inthash(A), B, C, D) :-
2075 multi_inthash_store_initialisations(A, B, C, E),
2076 multi_inthash_via_lookups(A, B, E, D).
2077generate_attach_code(multi_hash(A), B, C, D) :-
2078 multi_hash_store_initialisations(A, B, C, E),
2079 multi_hash_lookups(A, B, E, D).
2080generate_attach_code(atomic_constants(A, B, _), C, D, E) :-
2081 constants_initializers(C, A, B),
2082 atomic_constants_code(C, A, B, D, E).
2083generate_attach_code(ground_constants(A, B, _), C, D, E) :-
2084 constants_initializers(C, A, B),
2085 ground_constants_code(C, A, B, D, E).
2086generate_attach_code(global_ground, A, B, C) :-
2087 global_ground_store_initialisation(A, B, C).
2088generate_attach_code(var_assoc_store(_, _), _, A, A) :-
2089 use_auxiliary_module(chr_assoc_store).
2090generate_attach_code(global_singleton, A, B, C) :-
2091 global_singleton_store_initialisation(A, B, C).
2092generate_attach_code(multi_store(A), B, C, D) :-
2093 multi_store_generate_attach_code(A, B, C, D).
2094generate_attach_code(identifier_store(A), B, C, D) :-
2095 get_identifier_index(B, A, E),
2096 ( E==2
2097 -> get_identifier_size(F),
2098 functor(G, struct, F),
2099 G=..[_, H|I],
2100 set_elems(I, []),
2101 J=new_identifier(H, G),
2102 functor(K, struct, F),
2103 arg(1, K, L),
2104 M=(user:portray(K):-write('<id:'), print(L), write(>)),
2105 functor(N, struct, F),
2106 arg(1, N, O),
2107 P=identifier_label(N, O),
2108 C=[J, M, P|D]
2109 ; C=D
2110 ).
2111generate_attach_code(type_indexed_identifier_store(A, B), C, D, E) :-
2112 get_type_indexed_identifier_index(B, C, A, F),
2113 ( F==2
2114 -> identifier_store_initialization(B, D, G),
2115 get_type_indexed_identifier_size(B, _),
2116 type_indexed_identifier_structure(B, H),
2117 H=..[_, I|J],
2118 set_elems(J, []),
2119 type_indexed_identifier_name(B, new_identifier, K),
2120 L=..[K, I, H],
2121 M=..[K, N, O],
2122 type_indexed_identifier_structure(B, P),
2123 P=..[_, N|Q],
2124 set_elems(Q, []),
2125 R=(O=P),
2126 S=user:goal_expansion(M, R),
2127 type_indexed_identifier_structure(B, T),
2128 arg(1, T, U),
2129 V=(user:portray(T):-write('<id:'), print(U), write(>)),
2130 type_indexed_identifier_structure(B, W),
2131 arg(1, W, X),
2132 type_indexed_identifier_name(B, identifier_label, Y),
2133 Z=..[Y, W, X],
2134 A1=..[Y, B1, C1],
2135 type_indexed_identifier_structure(B, D1),
2136 arg(1, D1, C1),
2137 E1=(B1=D1),
2138 F1=(user:goal_expansion(A1, E1):-writeln(expanding)),
2139 identifier_store_name(B, G1),
2140 lookup_identifier_atom(B, H1, I1, J1),
2141 type_indexed_identifier_name(B, new_identifier, K1),
2142 L1=..[K1, H1, I1],
2143 M1=(J1:-nb_getval(G1, N1), (lookup_ht(N1, H1, [I1])->true;L1, insert_ht(N1, H1, I1))),
2144 lookup_only_identifier_atom(B, O1, P1, Q1),
2145 R1=(Q1:-nb_getval(G1, S1), lookup_ht(S1, O1, [P1])),
2146 G=[(:-multifile goal_expansion/2), (:-dynamic goal_expansion/2), L, S, V, Z, F1, M1, R1|E]
2147 ; D=E
2148 ).
2149constants_initializers(A, B, C) :-
2150 maplist(constant_initializer(A, B), C).
2151constant_initializer(A, B, C) :-
2152 constants_store_name(A, B, C, D),
2153 prolog_global_variable(D),
2154 module_initializer(nb_setval(D, [])).
2155lookup_identifier_atom(A, B, C, D) :-
2156 atom_concat(lookup_identifier_, A, E),
2157 D=..[E, B, C].
2158lookup_only_identifier_atom(A, B, C, D) :-
2159 atom_concat(lookup_only_identifier_, A, E),
2160 D=..[E, B, C].
2161identifier_label_atom(A, B, C, D) :-
2162 type_indexed_identifier_name(A, identifier_label, E),
2163 D=..[E, B, C].
2164multi_store_generate_attach_code([], _, A, A).
2165multi_store_generate_attach_code([A|B], C, D, E) :-
2166 generate_attach_code(A, C, D, F),
2167 multi_store_generate_attach_code(B, C, F, E).
2168multi_inthash_store_initialisations([], _, A, A).
2169multi_inthash_store_initialisations([A|B], C, D, E) :-
2170 use_auxiliary_module(chr_integertable_store),
2171 multi_hash_store_name(C, A, F),
2172 module_initializer((new_iht(G), nb_setval(F, G))),
2173 H=D,
2174 multi_inthash_store_initialisations(B, C, H, E).
2175multi_hash_store_initialisations([], _, A, A).
2176multi_hash_store_initialisations([A|B], C, D, E) :-
2177 use_auxiliary_module(chr_hashtable_store),
2178 multi_hash_store_name(C, A, F),
2179 prolog_global_variable(F),
2180 make_init_store_goal(F, G, H),
2181 module_initializer((new_ht(G), H)),
2182 I=D,
2183 multi_hash_store_initialisations(B, C, I, E).
2184global_list_store_initialisation(A, B, C) :-
2185 ( is_stored(A)
2186 -> global_list_store_name(A, D),
2187 prolog_global_variable(D),
2188 make_init_store_goal(D, [], E),
2189 module_initializer(E)
2190 ; true
2191 ),
2192 B=C.
2193global_ground_store_initialisation(A, B, C) :-
2194 global_ground_store_name(A, D),
2195 prolog_global_variable(D),
2196 make_init_store_goal(D, [], E),
2197 module_initializer(E),
2198 B=C.
2199global_singleton_store_initialisation(A, B, C) :-
2200 global_singleton_store_name(A, D),
2201 prolog_global_variable(D),
2202 make_init_store_goal(D, [], E),
2203 module_initializer(E),
2204 B=C.
2205identifier_store_initialization(A, B, C) :-
2206 use_auxiliary_module(chr_hashtable_store),
2207 identifier_store_name(A, D),
2208 prolog_global_variable(D),
2209 make_init_store_goal(D, E, F),
2210 module_initializer((new_ht(E), F)),
2211 B=C.
2212multi_inthash_via_lookups([], _, A, A).
2213multi_inthash_via_lookups([A|B], C, D, E) :-
2214 multi_hash_lookup_head(C, A, F, G, H),
2215 multi_hash_lookup_body(C, inthash, A, F, G, I),
2216 D=[(H:-I)|J],
2217 multi_inthash_via_lookups(B, C, J, E).
2218multi_hash_lookups([], _, A, A).
2219multi_hash_lookups([A|B], C, D, E) :-
2220 multi_hash_lookup_head(C, A, F, G, H),
2221 multi_hash_lookup_body(C, hash, A, F, G, I),
2222 D=[(H:-I)|J],
2223 multi_hash_lookups(B, C, J, E).
2224multi_hash_lookup_head(A, B, C, D, E) :-
2225 multi_hash_lookup_name(A, B, F),
2226 E=..[F, C, D].
2227multi_hash_lookup_body(A, B, C, D, E, F) :-
2228 get_store_type(A, multi_store(G)),
2229 ( memberchk(atomic_constants(C, H, _), G)
2230 -> ( ground(D)
2231 -> constants_store_name(A, C, D, I),
2232 F=nb_getval(I, E)
2233 ; constants_store_index_name(A, C, J),
2234 K=..[J, D, I],
2235 F=(K, nb_getval(I, E))
2236 )
2237 ; memberchk(ground_constants(C, H, _), G)
2238 -> ( ground(D)
2239 -> constants_store_name(A, C, D, I),
2240 F=nb_getval(I, E)
2241 ; constants_store_index_name(A, C, J),
2242 K=..[J, D, I],
2243 F=(K, nb_getval(I, E))
2244 )
2245 ; memberchk(multi_hash([C]), G)
2246 -> multi_hash_store_name(A, C, I),
2247 make_get_store_goal(I, L, M),
2248 ( B==hash,
2249 specialized_hash_term_call(A,
2250 C,
2251 D,
2252 N,
2253 O)
2254 -> F=(M, O, lookup_ht1(L, N, D, E))
2255 ; lookup_hash_call(B, L, D, E, K),
2256 F=(M, K)
2257 )
2258 ; B==inthash
2259 -> multi_hash_store_name(A, C, I),
2260 make_get_store_goal(I, L, M),
2261 lookup_hash_call(B, L, D, E, K),
2262 F=(M, K)
2263 ).
2264lookup_hash_call(hash, A, B, C, lookup_ht(A, B, C)).
2265lookup_hash_call(inthash, A, B, C, lookup_iht(A, B, C)).
2266specialized_hash_term_call(_, _, A, B, C) :-
2267 ( ground(A)
2268 -> term_hash(A, B),
2269 C=true
2270 ).
2271multi_hash_lookup_goal(A, B, C, D, E, F) :-
2272 ( atomic(D)
2273 -> actual_atomic_multi_hash_keys(A, C, [D])
2274 ; ground(D)
2275 -> actual_ground_multi_hash_keys(A, C, [D])
2276 ; C=[G],
2277 get_constraint_arg_type(A, G, H),
2278 is_chr_constants_type(H, _, _)
2279 -> true
2280 ; actual_non_ground_multi_hash_key(A, C)
2281 ),
2282 delay_phase_end(validate_store_type_assumptions,
2283 multi_hash_lookup_body(A,
2284 B,
2285 C,
2286 D,
2287 E,
2288 F)).
2289multi_hash_lookup_name(A/B, C, D) :-
2290 atom_concat_list(C, E),
2291 atom_concat_list(['$via1_multi_hash_', A, '___', B, -, E],
2292 D).
2293multi_hash_store_name(A/B, C, D) :-
2294 get_target_module(E),
2295 atom_concat_list(C, F),
2296 atom_concat_list([ '$chr_store_multi_hash_',
2297 E,
2298 '____',
2299 A,
2300 '___',
2301 B,
2302 -,
2303 F
2304 ],
2305 D).
2306multi_hash_key(A, B, C, D, E) :-
2307 ( B=[F]
2308 -> get_dynamic_suspension_term_field(argument(F),
2309 A,
2310 C,
2311 E,
2312 D)
2313 ; maplist(get_dynamic_suspension_term_field1(A, C),
2314 B,
2315 G,
2316 H),
2317 E=..[k|G],
2318 list2conj(H, D)
2319 ).
2320get_dynamic_suspension_term_field1(A, B, C, D, E) :-
2321 get_dynamic_suspension_term_field(argument(C),
2322 A,
2323 B,
2324 D,
2325 E).
2326multi_hash_key(_, A, B, C, D, E, F) :-
2327 ( B=[G]
2328 -> get_suspension_argument_possibly_in_scope(A,
2329 D,
2330 C,
2331 G,
2332 F,
2333 E)
2334 ; maplist(get_suspension_argument_possibly_in_scope(A,
2335 D,
2336 C),
2337 B,
2338 H,
2339 I),
2340 F=..[k|H],
2341 list2conj(I, E)
2342 ).
2343get_suspension_argument_possibly_in_scope(A, B, C, D, E, F) :-
2344 arg(D, A, G),
2345 ( ground(G),
2346 G='$chr_identifier_match'(H, I)
2347 -> functor(A, J, K),
2348 lookup_identifier_atom(I, H, E, F)
2349 ; term_variables(G, L),
2350 copy_term_nat(G-L, E-M),
2351 translate(L, B, M)
2352 -> F=true
2353 ; functor(A, J, K),
2354 N=J/K,
2355 get_dynamic_suspension_term_field(argument(D),
2356 N,
2357 C,
2358 E,
2359 F)
2360 ).
2361multi_hash_key_direct(_, A, _, B, C) :-
2362 ( A=[D]
2363 -> C=[D-B]
2364 ; pairup(A, E, C),
2365 B=..[k|E]
2366 ).
2367args(A, B, C) :-
2368 maplist(arg1(B), A, C).
2369split_args(A, B, C, D) :-
2370 split_args(A, B, 1, C, D).
2371split_args([], A, _, [], A).
2372split_args([A|B], [C|D], E, F, G) :-
2373 H is E+1,
2374 ( A==E
2375 -> F=[C|I],
2376 split_args(B, D, H, I, G)
2377 ; G=[C|I],
2378 split_args([A|B], D, H, F, I)
2379 ).
2380atomic_constants_code(A, B, C, D, E) :-
2381 constants_store_index_name(A, B, F),
2382 maplist(atomic_constant_code(A, B, F), C, G),
2383 append(G, E, D).
2384atomic_constant_code(A, B, C, D, E) :-
2385 constants_store_name(A, B, D, F),
2386 E=..[C, D, F].
2387ground_constants_code(A, B, C, D, E) :-
2388 constants_store_index_name(A, B, F),
2389 maplist(constants_store_name(A, B), C, G),
2390 length(C, H),
2391 replicate(H, [], I),
2392 trie_index([C|I], G, F, D, E).
2393constants_store_name(A/B, C, D, E) :-
2394 get_target_module(F),
2395 term_to_atom(D, G),
2396 term_to_atom(C, H),
2397 atom_concat_list([ '$chr_store_constants_',
2398 F,
2399 '____',
2400 A,
2401 '___',
2402 B,
2403 '___',
2404 H,
2405 '___',
2406 G
2407 ],
2408 E).
2409constants_store_index_name(A/B, C, D) :-
2410 get_target_module(E),
2411 term_to_atom(C, F),
2412 atom_concat_list([ '$chr_store_constants_',
2413 E,
2414 '____',
2415 A,
2416 '___',
2417 B,
2418 '___',
2419 F
2420 ],
2421 D).
2422trie_index([A|B], C, D, E, F) :-
2423 trie_step(A, D, D, B, C, E, F).
2424trie_step([], _, _, [], [], A, A) :-
2425 !.
2426trie_step(A, B, C, D, E, F, G) :-
2427 D=[H|_],
2428 length(H, I),
2429 aggregate_all(set(J/K),
2430 ( member(L, A),
2431 functor(L, J, K)
2432 ),
2433 M),
2434 N is I+1,
2435 trie_step_cases(M,
2436 N,
2437 A,
2438 D,
2439 E,
2440 B,
2441 C,
2442 F,
2443 G).
2444trie_step_cases([], _, _, _, _, _, _, A, A).
2445trie_step_cases([A|B], C, D, E, F, G, H, I, J) :-
2446 trie_step_case(A,
2447 C,
2448 D,
2449 E,
2450 F,
2451 G,
2452 H,
2453 I,
2454 K),
2455 trie_step_cases(B,
2456 C,
2457 D,
2458 E,
2459 F,
2460 G,
2461 H,
2462 K,
2463 J).
2464trie_step_case(A/B, C, D, E, F, G, H, [I|J], K) :-
2465 I=(L:-M),
2466 N is C+1,
2467 functor(L, G, N),
2468 arg(1, L, O),
2469 L=..[_, _|P],
2470 once(append(Q, [R], P)),
2471 functor(O, A, B),
2472 O=..[_|S],
2473 append(S, P, T),
2474 ( T==[R]
2475 -> J=K,
2476 M=true,
2477 rec_cases(D,
2478 _,
2479 F,
2480 A/B,
2481 _,
2482 _,
2483 U),
2484 U=[R]
2485 ; rec_cases(D,
2486 E,
2487 F,
2488 A/B,
2489 V,
2490 W,
2491 U),
2492 ( W=[X]
2493 -> J=K,
2494 M=true,
2495 append([V, X, U], T)
2496 ; pairup(V, W, Y),
2497 common_pattern(Y, Z, A1, B1),
2498 append(S, Q, [C1|D1]),
2499 C1-D1=Z,
2500 fresh_symbol(H, E1),
2501 append(A1, [R], F1),
2502 M=..[E1|F1],
2503 maplist(head_tail, B1, G1, H1),
2504 trie_step(G1,
2505 E1,
2506 H,
2507 H1,
2508 U,
2509 J,
2510 K)
2511 )
2512 ).
2513head_tail([A|B], A, B).
2514rec_cases([], [], [], _, [], [], []).
2515rec_cases([A|B], [C|D], [E|F], G/H, I, J, K) :-
2516 ( functor(A, G, H),
2517 A=..[_|L],
2518 append(L, C, [M|N])
2519 -> I=[M|O],
2520 J=[N|P],
2521 K=[E|Q],
2522 rec_cases(B,
2523 D,
2524 F,
2525 G/H,
2526 O,
2527 P,
2528 Q)
2529 ; rec_cases(B,
2530 D,
2531 F,
2532 G/H,
2533 I,
2534 J,
2535 K)
2536 ).
2537common_pattern(A, B, C, D) :-
2538 fold1(chr_translate:gct, A, B),
2539 term_variables(B, C),
2540 findall(C, member(B, A), D).
2541gct(A, B, C) :-
2542 gct_(A, B, C, [], _).
2543gct_(A, B, C, D, E) :-
2544 ( nonvar(A),
2545 nonvar(B),
2546 functor(A, F, G),
2547 functor(B, H, I),
2548 F==H,
2549 G==I
2550 -> functor(C, F, G),
2551 A=..[_|J],
2552 B=..[_|K],
2553 C=..[_|L],
2554 maplist_dcg(chr_translate:gct_,
2555 J,
2556 K,
2557 L,
2558 D,
2559 E)
2560 ; lookup_eq(D, A+B, C)
2561 -> E=D
2562 ; E=[A+B-C|D]
2563 ).
2564global_list_store_name(A/B, C) :-
2565 get_target_module(D),
2566 atom_concat_list([ '$chr_store_global_list_',
2567 D,
2568 '____',
2569 A,
2570 '___',
2571 B
2572 ],
2573 C).
2574global_ground_store_name(A/B, C) :-
2575 get_target_module(D),
2576 atom_concat_list([ '$chr_store_global_ground_',
2577 D,
2578 '____',
2579 A,
2580 '___',
2581 B
2582 ],
2583 C).
2584global_singleton_store_name(A/B, C) :-
2585 get_target_module(D),
2586 atom_concat_list([ '$chr_store_global_singleton_',
2587 D,
2588 '____',
2589 A,
2590 '___',
2591 B
2592 ],
2593 C).
2594identifier_store_name(A, B) :-
2595 get_target_module(C),
2596 atom_concat_list(['$chr_identifier_lookup_', C, '____', A], B).
2597:- if(current_predicate(user:exception/3)). 2598prolog_global_variables_code([]) :-
2599 tmp_module,
2600 !.
2601prolog_global_variables_code(A) :-
2602 prolog_global_variables(B),
2603 ( B==[]
2604 -> A=[]
2605 ; maplist(wrap_in_functor('$chr_prolog_global_variable'), B, C),
2606 A=[(:-dynamic user:exception/3), (:-multifile user:exception/3), (user:exception(undefined_global_variable, D, retry):-'$chr_prolog_global_variable'(D), '$chr_initialization')|C]
2607 ).
2608tmp_module :-
2609 prolog_load_context(module, A),
2610 module_property(A, class(temporary)).
2611:- else. 2612prolog_global_variables_code([]).
2613:- endif. 2614sbag_member_call(A, B, member(A, B)).
2615update_mutable_call(A, B, 'chr update_mutable'(A, B)).
2616create_mutable_call(A, B, true) :-
2617 B=mutable(A).
2618get_suspension_field(A, B, C, D, E) :-
2619 get_dynamic_suspension_term_field(C, A, B, D, E).
2620update_suspension_field(A, B, C, D, E) :-
2621 set_dynamic_suspension_term_field(C, A, B, D, E).
2622get_update_suspension_field(A, B, C, D, E, true, F, G) :-
2623 get_dynamic_suspension_term_field(C, A, B, D, F),
2624 set_dynamic_suspension_term_field(C, A, B, E, G).
2625create_static_suspension_field(A, B, C, D, true) :-
2626 get_static_suspension_term_field(C, A, B, D).
2627get_static_suspension_field(A, B, C, D, true) :-
2628 get_static_suspension_term_field(C, A, B, D).
2629get_update_static_suspension_field(A, B, C, D, E, F, true, G) :-
2630 get_static_suspension_term_field(D, A, C, E),
2631 set_dynamic_suspension_term_field(D, A, B, F, G).
2632enumerate_stores_code(A, [B|C]) :-
2633 D='$enumerate_constraints'(E),
2634 B=(D:-F),
2635 enumerate_store_bodies(A, E, C),
2636 ( C=[]
2637 -> F=fail
2638 ; F=(nonvar(E)->functor(E, G, _), '$enumerate_constraints'(G, E);'$enumerate_constraints'(_, E))
2639 ).
2640enumerate_store_bodies([], _, []).
2641enumerate_store_bodies([A|B], C, D) :-
2642 ( is_stored(A)
2643 -> get_store_type(A, E),
2644 ( enumerate_store_body(E, A, F, G)
2645 -> true
2646 ; chr_error(internal,
2647 'Could not generate enumeration code for constraint ~w.\n',
2648 [A])
2649 ),
2650 get_dynamic_suspension_term_field(arguments,
2651 A,
2652 F,
2653 H,
2654 I),
2655 A=J/_,
2656 K=..[J|H],
2657 L='$enumerate_constraints'(J, C),
2658 M=(G, I, C=K),
2659 D=[(L:-M)|N]
2660 ; D=N
2661 ),
2662 enumerate_store_bodies(B, C, N).
2663enumerate_store_body(default, A, B, C) :-
2664 global_list_store_name(A, D),
2665 sbag_member_call(B, E, F),
2666 make_get_store_goal_no_error(D, E, G),
2667 C=(G, F).
2668enumerate_store_body(multi_inthash([A|_]), B, C, D) :-
2669 multi_inthash_enumerate_store_body(A, B, C, D).
2670enumerate_store_body(multi_hash([A|_]), B, C, D) :-
2671 multi_hash_enumerate_store_body(A, B, C, D).
2672enumerate_store_body(atomic_constants(A, B, C), D, E, F) :-
2673 C==complete,
2674 maplist(enumerate_constant_store_body(D, A, G),
2675 B,
2676 H),
2677 list2disj(H, I),
2678 F=(I, member(E, G)).
2679enumerate_constant_store_body(A, B, C, D, nb_getval(E, C)) :-
2680 constants_store_name(A, B, D, E).
2681enumerate_store_body(ground_constants(A, B, C), D, E, F) :-
2682 enumerate_store_body(atomic_constants(A, B, C),
2683 D,
2684 E,
2685 F).
2686enumerate_store_body(global_ground, A, B, C) :-
2687 global_ground_store_name(A, D),
2688 sbag_member_call(B, E, F),
2689 make_get_store_goal(D, E, G),
2690 C=(G, F).
2691enumerate_store_body(var_assoc_store(_, _), _, _, A) :-
2692 A=fail.
2693enumerate_store_body(global_singleton, A, B, C) :-
2694 global_singleton_store_name(A, D),
2695 make_get_store_goal(D, B, E),
2696 C=(E, B\==[]).
2697enumerate_store_body(multi_store(A), B, C, D) :-
2698 ( memberchk(global_ground, A)
2699 -> enumerate_store_body(global_ground, B, C, D)
2700 ; once(( member(E, A),
2701 enumerate_store_body(E, B, C, D)
2702 ))
2703 ).
2704enumerate_store_body(identifier_store(_), _, _, A) :-
2705 A=fail.
2706enumerate_store_body(type_indexed_identifier_store(_, _), _, _, A) :-
2707 A=fail.
2708multi_inthash_enumerate_store_body(A, B, C, D) :-
2709 multi_hash_store_name(B, A, E),
2710 D=(nb_getval(E, F), value_iht(F, C)).
2711multi_hash_enumerate_store_body(A, B, C, D) :-
2712 multi_hash_store_name(B, A, E),
2713 make_get_store_goal(E, F, G),
2714 D=(G, value_ht(F, C)).
2715guard_simplification :-
2716 ( chr_pp_flag(guard_simplification, on)
2717 -> precompute_head_matchings,
2718 simplify_guards(1)
2719 ; true
2720 ).
2721next_prev_rule(A, B, C) :-
2722 ( find_min_q(A, _-D)
2723 -> D=(-B),
2724 normalize_heap(A, D, C)
2725 ; B=0,
2726 C=A
2727 ).
2728normalize_heap(A, B, C) :-
2729 ( find_min_q(A, _-B)
2730 -> delete_min_q(A, D, tuple(E, F, _)-_),
2731 ( F>1
2732 -> G is F-1,
2733 get_occurrence(E, G, H, _),
2734 insert_q(D,
2735 tuple(E, G, H)-(-H),
2736 I)
2737 ; I=D
2738 ),
2739 normalize_heap(I, B, C)
2740 ; C=A
2741 ).
2742head_types_modes_condition([], _, true).
2743head_types_modes_condition([A|B], C, (D, E)) :-
2744 types_modes_condition(C, A, D),
2745 head_types_modes_condition(B, C, E).
2746add_background_info(A, B) :-
2747 get_bg_info(C),
2748 add_background_info2(A, D),
2749 append(C, D, B).
2750add_background_info2(A, []) :-
2751 var(A),
2752 !.
2753add_background_info2([], []) :-
2754 !.
2755add_background_info2([A|B], C) :-
2756 !,
2757 add_background_info2(A, D),
2758 add_background_info2(B, E),
2759 append(D, E, C).
2760add_background_info2(A, B) :-
2761 ( functor(A, _, C),
2762 C>0
2763 -> A=..[_|D],
2764 add_background_info2(D, E)
2765 ; E=[]
2766 ),
2767 get_bg_info(A, F),
2768 append(F, E, B).
2769normalize_conj_list(A, B) :-
2770 list2conj(A, C),
2771 conj2list(C, B).
2772compute_derived_info([], _, _, _, _, _, _, _, [], []).
2773compute_derived_info([A|B], C, D, E, F, G, H, I, [J|K], [L|M]) :-
2774 copy_term(C-F, N),
2775 variable_replacement(C-F, N, O),
2776 append(A, O, P),
2777 list2conj(C, Q),
2778 negate_b(Q, R),
2779 make_head_matchings_explicit_not_negated2(E, D, S),
2780 list2conj(S, T),
2781 term_variables(P, U),
2782 term_variables(C-F-S, V),
2783 new_vars(V, U, W),
2784 append(P, W, X),
2785 ( F==true
2786 -> Y=R
2787 ; negate_b(F, Z),
2788 Y=(R;T, Z)
2789 ),
2790 copy_with_variable_replacement(Y, J, X),
2791 copy_with_variable_replacement(F, A1, X),
2792 copy_with_variable_replacement(C, B1, X),
2793 list2conj(B1, C1),
2794 apply_guard_wrt_term(H, A1, D1),
2795 apply_guard_wrt_term(D1, C1, L),
2796 compute_derived_info(B,
2797 C,
2798 D,
2799 E,
2800 F,
2801 G,
2802 H,
2803 I,
2804 K,
2805 M).
2806simplify_guard(A, B, C, D, E) :-
2807 conj2list(A, F),
2808 guard_entailment:simplify_guards(C, B, F, G, E),
2809 list2conj(G, D).
2810new_vars([], _, []).
2811new_vars([A|B], C, D) :-
2812 ( memberchk_eq(A, C)
2813 -> new_vars(B, C, D)
2814 ; D=[A-E, E-A|F],
2815 new_vars(B, C, F)
2816 ).
2817head_subset(A, B, C) :-
2818 head_subset(A, B, C, [], _).
2819head_subset([], A, B, B, A).
2820head_subset([A|B], C, D, E, F) :-
2821 head_member(C, A, G, E, H),
2822 head_subset(B, H, D, G, F).
2823head_member([A|B], C, D, E, F) :-
2824 ( variable_replacement(C, A, E, D),
2825 F=B
2826 ; F=[A|G],
2827 head_member(B, C, D, E, G)
2828 ).
2829make_head_matchings_explicit(A, B, C) :-
2830 make_head_matchings_explicit_memo_lookup(A, D, E),
2831 copy_term_nat(D-E, B-C).
2832make_head_matchings_explicit_(A, B, C) :-
2833 extract_arguments(A, D),
2834 make_matchings_explicit(D, E, [], [], _, C),
2835 substitute_arguments(A, E, B).
2836make_head_matchings_explicit_not_negated(A, B, C) :-
2837 extract_arguments(A, D),
2838 make_matchings_explicit_not_negated(D, E, C),
2839 substitute_arguments(A, E, B).
2840make_head_matchings_explicit_not_negated2(A, B, C) :-
2841 extract_arguments(A, D),
2842 extract_arguments(B, E),
2843 make_matchings_explicit_not_negated(D, E, C).
([], []).
2845extract_arguments([A|B], C) :-
2846 A=..[_|D],
2847 append(D, E, C),
2848 extract_arguments(B, E).
2849substitute_arguments([], [], []).
2850substitute_arguments([A|B], C, [D|E]) :-
2851 functor(A, F, G),
2852 split_at(G, C, H, I),
2853 D=..[F|H],
2854 substitute_arguments(B, I, E).
2855make_matchings_explicit([], [], _, A, A, []).
2856make_matchings_explicit([A|B], [C|D], E, F, G, H) :-
2857 ( var(A)
2858 -> ( memberchk_eq(A, E)
2859 -> list2disj(F, I),
2860 H=[(I;C==A)|J],
2861 K=E
2862 ; H=J,
2863 C=A,
2864 K=[A|E]
2865 ),
2866 L=F
2867 ; functor(A, M, N),
2868 A=..[M|O],
2869 make_matchings_explicit(O,
2870 P,
2871 E,
2872 F,
2873 Q,
2874 R),
2875 S=..[M|P],
2876 ( R==[]
2877 -> H=[functor(C, M, N)|J]
2878 ; list2conj(R, T),
2879 list2disj(F, I),
2880 U=(C\=S;I;T),
2881 H=[functor(C, M, N), U|J]
2882 ),
2883 L=[C\=S|Q],
2884 term_variables(B, V),
2885 append(V, E, K)
2886 ),
2887 make_matchings_explicit(B, D, K, L, G, J).
2888make_matchings_explicit_not_negated([], [], []).
2889make_matchings_explicit_not_negated([A|B], [C|D], E) :-
2890 E=[C=A|F],
2891 make_matchings_explicit_not_negated(B, D, F).
2892apply_guard_wrt_term([], _, []).
2893apply_guard_wrt_term([A|B], C, [D|E]) :-
2894 ( var(A)
2895 -> apply_guard_wrt_variable(C, A, D)
2896 ; A=..[F|G],
2897 apply_guard_wrt_term(G, C, H),
2898 D=..[F|H]
2899 ),
2900 apply_guard_wrt_term(B, C, E).
2901apply_guard_wrt_variable((A, B), C, D) :-
2902 !,
2903 apply_guard_wrt_variable(A, C, E),
2904 apply_guard_wrt_variable(B, E, D).
2905apply_guard_wrt_variable(A, B, C) :-
2906 ( A=(D=E),
2907 B==D
2908 -> C=E
2909 ; A=functor(F, G, H),
2910 B==F,
2911 ground(G),
2912 ground(H)
2913 -> functor(C, G, H)
2914 ; C=B
2915 ).
2916replace_some_heads(A, B, _, [], A, B, _, _, []) :-
2917 !.
2918replace_some_heads([], [A|B], [C|D], [E|F], [], [G|H], I, J, K) :-
2919 !,
2920 ( C==E
2921 -> G=E,
2922 replace_some_heads([],
2923 B,
2924 D,
2925 F,
2926 [],
2927 H,
2928 I,
2929 J,
2930 K)
2931 ; E=functor(L, M, N),
2932 C==L
2933 -> length(O, N),
2934 ( var(A)
2935 -> P=[],
2936 G=..[M|O]
2937 ; A=..[M|Q],
2938 use_same_args(Q, O, R, I, J, P),
2939 G=..[M|R]
2940 ),
2941 replace_some_heads([],
2942 B,
2943 D,
2944 F,
2945 [],
2946 H,
2947 I,
2948 J,
2949 S),
2950 append(P, S, K)
2951 ; G=A,
2952 replace_some_heads([],
2953 B,
2954 D,
2955 [E|F],
2956 [],
2957 H,
2958 I,
2959 J,
2960 K)
2961 ).
2962replace_some_heads([A|B], C, [D|E], [F|G], [H|I], J, K, L, M) :-
2963 !,
2964 ( D==F
2965 -> H=F,
2966 replace_some_heads(B,
2967 C,
2968 E,
2969 G,
2970 I,
2971 J,
2972 K,
2973 L,
2974 M)
2975 ; F=functor(N, O, P),
2976 D==N
2977 -> length(Q, P),
2978 ( var(A)
2979 -> R=[],
2980 H=..[O|Q]
2981 ; A=..[O|S],
2982 use_same_args(S,
2983 Q,
2984 T,
2985 K,
2986 L,
2987 R),
2988 H=..[O|T]
2989 ),
2990 replace_some_heads(B,
2991 C,
2992 E,
2993 G,
2994 I,
2995 J,
2996 K,
2997 L,
2998 U),
2999 append(R, U, M)
3000 ; H=A,
3001 replace_some_heads(B,
3002 C,
3003 E,
3004 [F|G],
3005 I,
3006 J,
3007 K,
3008 L,
3009 M)
3010 ).
3011use_same_args([], [], [], _, _, []).
3012use_same_args([A|B], [_|C], [D|E], F, G, H) :-
3013 var(A),
3014 !,
3015 D=A,
3016 use_same_args(B, C, E, F, G, H).
3017use_same_args([A|B], [C|D], [E|F], G, H, I) :-
3018 nonvar(A),
3019 !,
3020 ( common_variables(A, H)
3021 -> I=[C=A|J]
3022 ; I=J
3023 ),
3024 E=C,
3025 use_same_args(B, D, F, G, H, J).
3026simplify_heads([], _, _, _, [], []).
3027simplify_heads([A|B], C, D, E, F, G) :-
3028 A=(H=I),
3029 ( ( nonvar(I)
3030 ; common_variables(I, B-C)
3031 ),
3032 guard_entailment:entails_guard(C, H=I)
3033 -> ( common_variables(I, D-B-C)
3034 -> G=J,
3035 F=K
3036 ; ( common_variables(I, E)
3037 -> G=[H=I|J]
3038 ; G=J
3039 ),
3040 F=[H|K]
3041 )
3042 ; nonvar(I),
3043 functor(I, L, M),
3044 guard_entailment:entails_guard([functor(H, L, M)|C], H=I)
3045 -> G=J,
3046 ( common_variables(I, D-B-C)
3047 -> F=K
3048 ; F=[functor(H, L, M)|K]
3049 )
3050 ; F=K,
3051 G=J
3052 ),
3053 simplify_heads(B, [A|C], D, E, K, J).
3054common_variables(A, B) :-
3055 term_variables(A, C),
3056 term_variables(B, D),
3057 intersect_eq(C, D, E),
3058 E\==[].
3059add_failing_occ(A, B, C, D, E, F, _, G, H) :-
3060 A=pragma(rule(_, _, I, _), ids(J, K), _, _, _),
3061 append(K, J, L),
3062 missing_partner_cond(B,
3063 C,
3064 L,
3065 D,
3066 M,
3067 N,
3068 G),
3069 copy_term((N, B, C), (O, P, Q)),
3070 variable_replacement((N, B, C),
3071 (O, P, Q),
3072 H),
3073 copy_with_variable_replacement(I, R, H),
3074 extract_explicit_matchings(R, S),
3075 negate_b(S, T),
3076 copy_with_variable_replacement(M, U, H),
3077 ( subsumes_term(F, O),
3078 F=O
3079 -> E=[(T;U)]
3080 ; E=[chr_pp_void_info]
3081 ).
3082missing_partner_cond([], [], [], _, fail, _, _).
3083missing_partner_cond([A|B], [_|C], [D|E], D, F, A, G) :-
3084 !,
3085 missing_partner_cond(B,
3086 C,
3087 E,
3088 D,
3089 F,
3090 A,
3091 G).
3092missing_partner_cond([A|B], [_|C], [_|D], E, F, G, H/I) :-
3093 F=(chr_pp_not_in_store(A);J),
3094 missing_partner_cond(B,
3095 C,
3096 D,
3097 E,
3098 J,
3099 G,
3100 H/I).
((A, B), C) :-
3102 !,
3103 ( extract_explicit_matchings(A)
3104 -> extract_explicit_matchings(B, C)
3105 ; C=(A, D),
3106 extract_explicit_matchings(B, D)
3107 ).
3108extract_explicit_matchings(A, B) :-
3109 !,
3110 ( extract_explicit_matchings(A)
3111 -> B=true
3112 ; B=A
3113 ).
(A=B) :-
3115 var(A),
3116 var(B),
3117 !,
3118 A=B.
3119extract_explicit_matchings(A==B) :-
3120 var(A),
3121 var(B),
3122 !,
3123 A=B.
3124assert_constraint_type(A, B) :-
3125 ( ground(B)
3126 -> constraint_type(A, B)
3127 ; chr_error(type_error,
3128 'Declared argument types "~w" for constraint "~w" must be ground!\n',
3129 [B, A])
3130 ).
3131get_type_definition_det(A, B) :-
3132 ( get_type_definition(A, B)
3133 -> true
3134 ; chr_error(type,
3135 'Could not find type definition for type `~w\'.\n',
3136 [A])
3137 ).
3138get_constraint_type_det(A, B) :-
3139 ( get_constraint_type(A, B)
3140 -> true
3141 ; A=_/C,
3142 replicate(C, any, B)
3143 ).
3144modes_condition([], [], true).
3145modes_condition([A|B], [C|D], E) :-
3146 ( A==(+)
3147 -> E=(ground(C), F)
3148 ; A==(-)
3149 -> E=(var(C), F)
3150 ; E=F
3151 ),
3152 modes_condition(B, D, F).
3153types_condition([], [], [], [], true).
3154types_condition([A|B], [C|D], [E|F], [G|H], (I, J)) :-
3155 ( G==(-)
3156 -> K=[true]
3157 ; get_type_definition_det(A, L),
3158 type_condition(L, C, E, G, M),
3159 ( G==(+)
3160 -> K=M
3161 ; K=[\+ground(C)|M]
3162 )
3163 ),
3164 list2disj(K, I),
3165 types_condition(B, D, F, H, J).
3166type_condition([], _, _, _, []).
3167type_condition([A|B], C, D, E, [F|G]) :-
3168 ( var(A)
3169 -> chr_error(type, 'Unexpected variable type in type definition!\n', [])
3170 ; atomic_builtin_type(A, C, F)
3171 -> true
3172 ; compound_builtin_type(A, C, F, _)
3173 -> true
3174 ; type_def_case_condition(A, C, D, E, F)
3175 ),
3176 type_condition(B, C, D, E, G).
3177ast_atomic_builtin_type(A, B, C) :-
3178 ast_term_to_term(B, D),
3179 atomic_builtin_type(A, D, C).
3180ast_compound_builtin_type(A, B, C) :-
3181 ast_term_to_term(B, D),
3182 compound_builtin_type(A, D, _, C).
3183atomic_builtin_type(any, _, true).
3184atomic_builtin_type(dense_int, A, (integer(A), A>=0)).
3185atomic_builtin_type(int, A, integer(A)).
3186atomic_builtin_type(number, A, number(A)).
3187atomic_builtin_type(float, A, float(A)).
3188atomic_builtin_type(natural, A, (integer(A), A>=0)).
3189atomic_builtin_type(chr_identifier, _, true).
3190compound_builtin_type(chr_constants(_), _, true, true).
3191compound_builtin_type(chr_constants(_, _), _, true, true).
3192compound_builtin_type(chr_identifier(_), _, true, true).
3193compound_builtin_type(chr_enum(A), B, (ground(B), memberchk(B, A)), once((member(C, A), unifiable(B, C, _)))).
3194compound_builtin_type(chr_enum(_, _), _, true, true).
3195is_chr_constants_type(chr_constants(A), A, no).
3196is_chr_constants_type(chr_constants(A, B), A, yes(B)).
3197is_chr_enum_type(chr_enum(A), A, no).
3198is_chr_enum_type(chr_enum(A, B), A, yes(B)).
3199type_def_case_condition(A, B, C, D, E) :-
3200 ( nonvar(A)
3201 -> functor(A, F, G),
3202 ( G==0
3203 -> E=(B=A)
3204 ; var(C)
3205 -> E=functor(B, F, G)
3206 ; functor(C, F, G)
3207 -> E=(functor(B, F, G), B=H, I),
3208 A=..[_|J],
3209 C=..[_|K],
3210 functor(H, F, G),
3211 H=..[_|L],
3212 replicate(G, D, M),
3213 types_condition(J, L, K, M, I)
3214 ; E=functor(B, F, G)
3215 )
3216 ; chr_error(internal, 'Illegal type definition (must be nonvar).\n', [])
3217 ).
3218static_type_check_rule(A, B) :-
3219 B=ast_rule(C, _, _, D, _),
3220 ( catch(( ast_static_type_check_head(C),
3221 ast_static_type_check_body(D)
3222 ),
3223 type_error(E),
3224 ( E=invalid_functor(F, G, H)
3225 -> chr_error(type_error,
3226 'Invalid functor in ~@ of ~@:\n\t\tfound `~w\',\n\t\texpected type `~w\'!\n',
3227 [ chr_translate:format_src(F),
3228 format_rule(A),
3229 G,
3230 H
3231 ])
3232 ; E=type_clash(I, J, K, L, M)
3233 -> chr_error(type_error,
3234 'Type clash for variable ~w in ~@:\n\t\texpected type ~w in ~@\n\t\texpected type ~w in ~@\n',
3235 [ I,
3236 format_rule(A),
3237 L,
3238 chr_translate:format_src(J),
3239 M,
3240 chr_translate:format_src(K)
3241 ])
3242 )),
3243 fail
3244 ; true
3245 ).
3246ast_static_type_check_head(simplification(A)) :-
3247 maplist(ast_static_type_check_head_constraint, A).
3248ast_static_type_check_head(propagation(A)) :-
3249 maplist(ast_static_type_check_head_constraint, A).
3250ast_static_type_check_head(simpagation(A, B)) :-
3251 maplist(ast_static_type_check_head_constraint, A),
3252 maplist(ast_static_type_check_head_constraint, B).
3253ast_static_type_check_head_constraint(A) :-
3254 A=chr_constraint(B, C, _),
3255 get_constraint_type_det(B, D),
3256 maplist(ast_static_type_check_term(head(_)), C, D).
3257ast_static_type_check_body([]).
3258ast_static_type_check_body([A|B]) :-
3259 ast_symbol(A, C),
3260 get_constraint_type_det(C, D),
3261 ast_args(A, E),
3262 maplist(ast_static_type_check_term(body(A)), E, D),
3263 ast_static_type_check_body(B).
3264format_src(head(A)) :-
3265 format('head ~w', [A]).
3266format_src(body(A)) :-
3267 format('body goal ~w', [A]).
3268generate_dynamic_type_check_clauses(A) :-
3269 ( chr_pp_flag(debugable, on)
3270 -> dynamic_type_check,
3271 get_dynamic_type_check_clauses(B),
3272 append(B,
3273 [ ('$dynamic_type_check'(C, D):-throw(error(type_error(C, D), context(_, 'CHR Runtime Type Error'))))
3274 ],
3275 A)
3276 ; A=[]
3277 ).
3278dynamic_type_check_clause(A, B, C) :-
3279 copy_term(A-B, D-E),
3280 functor(E, F, G),
3281 functor(H, F, G),
3282 E=..[_|I],
3283 H=..[_|J],
3284 maplist(dynamic_type_check_call, I, J, K),
3285 list2conj(K, L),
3286 C=('$dynamic_type_check'(D, H):-L).
3287dynamic_type_check_alias_clause(A, B, C) :-
3288 C=('$dynamic_type_check'(A, D):-'$dynamic_type_check'(B, D)).
3289dynamic_type_check_call(A, B, C) :-
3290 ( A==any
3291 -> C=true
3292 ; C=when(nonvar(B), once('$dynamic_type_check'(A, B)))
3293 ).
3294atomic_types_suspended_constraint(A) :-
3295 A=_/B,
3296 get_constraint_type(A, C),
3297 get_constraint_mode(A, D),
3298 numlist(1, B, E),
3299 maplist(atomic_types_suspended_constraint(A),
3300 C,
3301 D,
3302 E).
3303atomic_types_suspended_constraint(A, B, C, D) :-
3304 ( is_indexed_argument(A, D)
3305 -> ( C==(?)
3306 -> atomic_type(B)
3307 ; true
3308 )
3309 ; true
3310 ).
3311storage_analysis(A) :-
3312 ( chr_pp_flag(storage_analysis, on)
3313 -> check_constraint_storages(A)
3314 ; true
3315 ).
3316check_constraint_storages(A) :-
3317 maplist(check_constraint_storage, A).
3318check_constraint_storage(A) :-
3319 get_max_occurrence(A, B),
3320 check_occurrences_storage(A, 1, B).
3321check_occurrences_storage(A, B, C) :-
3322 ( B>C
3323 -> stored_completing(A, 1, 0)
3324 ; check_occurrence_storage(A, B),
3325 D is B+1,
3326 check_occurrences_storage(A, D, C)
3327 ).
3328check_occurrence_storage(A, B) :-
3329 get_occurrence(A, B, C, D, E),
3330 ( is_passive(C, D)
3331 -> stored(A, B, maybe)
3332 ; get_rule(C, F),
3333 F=pragma(rule(G, H, I, J), ids(K, L), _, _, _),
3334 ( E==simplification,
3335 select2(D, M, K, G, _, _)
3336 -> check_storage_head1(M, B, G, H, I)
3337 ; E==propagation,
3338 select2(D, N, L, H, _, _)
3339 -> check_storage_head2(N, B, G, J)
3340 )
3341 ).
3342check_storage_head1(A, B, C, D, E) :-
3343 functor(A, F, G),
3344 H=F/G,
3345 ( C==[A],
3346 D==[],
3347 guard_entailment:entails_guard([chr_pp_headvariables(A)], E),
3348 A=..[_|I],
3349 no_matching(I, [])
3350 -> stored(H, B, no)
3351 ; stored(H, B, maybe)
3352 ).
3353no_matching([], _).
3354no_matching([A|B], C) :-
3355 var(A),
3356 \+ memberchk_eq(A, C),
3357 no_matching(B, [A|C]).
3358check_storage_head2(A, B, C, D) :-
3359 functor(A, E, F),
3360 G=E/F,
3361 ( C\==[],
3362 D==true
3363 -> stored(G, B, maybe)
3364 ; stored(G, B, yes)
3365 ).
3366constraints_code(A, B) :-
3367 ( chr_pp_flag(reduced_indexing, on),
3368 forall(C,
3369 A,
3370 chr_translate:only_ground_indexed_arguments(C))
3371 -> none_suspended_on_variables
3372 ; true
3373 ),
3374 constraints_code1(A, B, []).
3375constraint_prelude(A/B, C) :-
3376 vars_susp(B, D, E, F),
3377 G=..[A|D],
3378 make_suspension_continuation_goal(A/B, F, H),
3379 build_head(A, B, [0], F, I),
3380 ( chr_pp_flag(debugable, on)
3381 -> insert_constraint_goal(A/B, E, D, J),
3382 attach_constraint_atom(A/B, K, E, L),
3383 delay_phase_end(validate_store_type_assumptions,
3384 chr_translate:update_suspension_field(A/B, E, state, inactive, M)),
3385 insert_constraint_internal_constraint_goal(A/B,
3386 K,
3387 E,
3388 H,
3389 D,
3390 N),
3391 ( get_constraint_type(A/B, O)
3392 -> maplist(dynamic_type_check_call, O, D, P),
3393 list2conj(P, Q)
3394 ; Q=true
3395 ),
3396 C=(G:-Q, N, J, L, M, 'chr debug_event'(insert(#(G, E))), ('chr debugging'->('chr debug_event'(call(E)), I;'chr debug_event'(fail(E)), !, fail), ('chr debug_event'(exit(E));'chr debug_event'(redo(E)), fail);I))
3397 ; get_allocation_occurrence(A/B, 0)
3398 -> gen_insert_constraint_internal_goal(A/B,
3399 R,
3400 F,
3401 D,
3402 E),
3403 delay_phase_end(validate_store_type_assumptions,
3404 chr_translate:update_suspension_field(A/B, E, state, inactive, M)),
3405 C=(G:-R, M, I)
3406 ; C=(G:-I)
3407 ).
3408make_suspension_continuation_goal(A/B, C, D) :-
3409 ( may_trigger(A/B)
3410 -> build_head(A, B, [0], C, E),
3411 ( chr_pp_flag(debugable, off)
3412 -> D=E
3413 ; get_target_module(F),
3414 D=F:E
3415 )
3416 ; D=true
3417 ).
3418gen_cond_attach_clause(A/B, C, D, E) :-
3419 ( is_finally_stored(A/B)
3420 -> get_allocation_occurrence(A/B, F),
3421 get_max_occurrence(A/B, G),
3422 ( chr_pp_flag(debugable, off),
3423 G<F
3424 -> ( only_ground_indexed_arguments(A/B)
3425 -> gen_insert_constraint_internal_goal(A/B,
3426 H,
3427 I,
3428 J,
3429 K)
3430 ; gen_cond_attach_goal(A/B,
3431 H,
3432 I,
3433 J,
3434 K)
3435 )
3436 ; vars_susp(B, J, K, I),
3437 gen_uncond_attach_goal(A/B,
3438 K,
3439 J,
3440 H,
3441 _)
3442 ),
3443 build_head(A, B, C, I, L),
3444 M=(L:-H),
3445 add_dummy_location(M, N),
3446 D=[N|E]
3447 ; D=E
3448 ).
3449gen_cond_attach_goal(A/B, C, D, E, F) :-
3450 vars_susp(B, E, F, D),
3451 make_suspension_continuation_goal(A/B, D, G),
3452 ( get_store_type(A/B, var_assoc_store(_, _))
3453 -> H=true
3454 ; attach_constraint_atom(A/B, I, F, H)
3455 ),
3456 _=..[A|E],
3457 insert_constraint_goal(A/B, F, E, J),
3458 insert_constraint_internal_constraint_goal(A/B,
3459 I,
3460 F,
3461 G,
3462 E,
3463 K),
3464 ( may_trigger(A/B)
3465 -> activate_constraint_goal(A/B,
3466 (J, H),
3467 I,
3468 F,
3469 _,
3470 L),
3471 C=(var(F)->K, J, H;L)
3472 ; C=(K, J, H)
3473 ).
3474gen_insert_constraint_internal_goal(A/B, C, D, E, F) :-
3475 vars_susp(B, E, F, D),
3476 make_suspension_continuation_goal(A/B, D, G),
3477 ( \+ only_ground_indexed_arguments(A/B),
3478 \+ get_store_type(A/B, var_assoc_store(_, _))
3479 -> attach_constraint_atom(A/B, H, F, I)
3480 ; I=true
3481 ),
3482 _=..[A|E],
3483 insert_constraint_goal(A/B, F, E, J),
3484 insert_constraint_internal_constraint_goal(A/B,
3485 H,
3486 F,
3487 G,
3488 E,
3489 K),
3490 ( only_ground_indexed_arguments(A/B),
3491 chr_pp_flag(debugable, off)
3492 -> C=(K, J)
3493 ; C=(K, J, I)
3494 ).
3495gen_uncond_attach_goal(A, B, C, D, E) :-
3496 ( \+ only_ground_indexed_arguments(A),
3497 \+ get_store_type(A, var_assoc_store(_, _))
3498 -> attach_constraint_atom(A, F, B, G)
3499 ; G=true
3500 ),
3501 insert_constraint_goal(A, B, C, H),
3502 ( chr_pp_flag(late_allocation, on)
3503 -> activate_constraint_goal(A,
3504 (H, G),
3505 F,
3506 B,
3507 E,
3508 D)
3509 ; activate_constraint_goal(A, true, F, B, E, D)
3510 ).
3511head1_code(A, B, C, D, E, F, G, H, I, J) :-
3512 E=pragma(K, _, _, _, L),
3513 K=rule(_, M, _, _),
3514 ( M==[]
3515 -> reorder_heads(L, A, C, D, N, O),
3516 simplification_code(A,
3517 B,
3518 N,
3519 O,
3520 E,
3521 F,
3522 G,
3523 H,
3524 I,
3525 J)
3526 ; simpagation_head1_code(A,
3527 B,
3528 C,
3529 D,
3530 E,
3531 F,
3532 G,
3533 H,
3534 I,
3535 J)
3536 ).
3537head2_code(A, B, C, D, E, F, G, H, I, J) :-
3538 E=pragma(K, _, _, _, L),
3539 K=rule(M, _, _, _),
3540 ( M==[]
3541 -> reorder_heads(L, A, C, D, N, O),
3542 propagation_code(A,
3543 B,
3544 N,
3545 O,
3546 K,
3547 L,
3548 F,
3549 G,
3550 H,
3551 I,
3552 J)
3553 ; simpagation_head2_code(A,
3554 B,
3555 C,
3556 D,
3557 E,
3558 F,
3559 G,
3560 H,
3561 I,
3562 J)
3563 ).
3564gen_alloc_inc_clause(A/B, C, D, E, F) :-
3565 vars_susp(B, G, H, I),
3566 build_head(A, B, D, I, J),
3567 inc_id(D, K),
3568 build_head(A, B, K, I, L),
3569 gen_occ_allocation(A/B, C, G, H, M),
3570 N=(J:-M, L),
3571 add_dummy_location(N, O),
3572 E=[O|F].
3573gen_occ_allocation(A, B, C, D, E) :-
3574 get_allocation_occurrence(A, F),
3575 get_occurrence_code_id(A, F, G),
3576 get_occurrence_code_id(A, B, H),
3577 ( chr_pp_flag(debugable, off),
3578 H==G
3579 -> allocate_constraint_goal(A, D, C, I),
3580 ( may_trigger(A)
3581 -> E=(var(D)->I;true)
3582 ; E=I
3583 )
3584 ; E=true
3585 ).
3586gen_occ_allocation_in_guard(A, B, C, D, E) :-
3587 get_allocation_occurrence(A, F),
3588 ( chr_pp_flag(debugable, off),
3589 B<F
3590 -> allocate_constraint_goal(A, D, C, G),
3591 ( may_trigger(A)
3592 -> E=(var(D)->G;true)
3593 ; E=G
3594 )
3595 ; E=true
3596 ).
3597guard_via_reschedule_new(A, B, C, D, E, F) :-
3598 ( chr_pp_flag(guard_via_reschedule, on)
3599 -> guard_via_reschedule_main_new(A,
3600 B,
3601 C,
3602 D,
3603 E,
3604 G),
3605 list2conj(G, F)
3606 ; length(A, H),
3607 length(E, H),
3608 length(B, I),
3609 length(D, I),
3610 append(E, D, J),
3611 list2conj(J, F)
3612 ).
3613guard_via_reschedule_main_new(A, B, C, D, E, F) :-
3614 initialize_unit_dictionary(C, G),
3615 maplist(wrap_in_functor(lookup), A, H),
3616 maplist(wrap_in_functor(guard), B, I),
3617 build_units(H, I, G, J),
3618 dependency_reorder(J, K),
3619 wrappedunits2lists(K, L, E, F),
3620 sort(L, M),
3621 snd_of_pairs(M, D).
3622wrappedunits2lists([], [], [], []).
3623wrappedunits2lists([unit(A, B, _, _)|C], D, E, F) :-
3624 F=[G|H],
3625 ( B=lookup(I)
3626 -> E=[G|J],
3627 D=K
3628 ; B=guard(I)
3629 -> D=[A-G|K],
3630 E=J
3631 ),
3632 wrappedunits2lists(C, K, J, H).
3633guard_splitting(A, B) :-
3634 A=rule(C, D, E, _),
3635 append(C, D, F),
3636 conj2list(E, G),
3637 term_variables(F, H),
3638 split_off_simple_guard_new(G, H, I, J),
3639 append(I, [K], B),
3640 term_variables(J, L),
3641 ground_vars(F, M),
3642 list_difference_eq(H, M, N),
3643 intersect_eq(N, L, O),
3644 maplist(chr_lock, O, P),
3645 maplist(chr_unlock, O, Q),
3646 list2conj(P, R),
3647 list2conj(Q, S),
3648 list2conj(J, T),
3649 K=(R, T, S).
3650guard_body_copies3(A, B, C, D, E) :-
3651 A=rule(_, _, _, F),
3652 my_term_copy(B, C, G, D),
3653 my_term_copy(F, G, E).
3654split_off_simple_guard_new([], _, [], []).
3655split_off_simple_guard_new([A|B], C, D, E) :-
3656 ( simple_guard_new(A, C)
3657 -> D=[A|F],
3658 split_off_simple_guard_new(B, C, F, E)
3659 ; D=[],
3660 E=[A|B]
3661 ).
3662simple_guard_new(A, B) :-
3663 builtin_binds_b(A, C),
3664 not(( member(D, C),
3665 memberchk_eq(D, B)
3666 )).
3667dependency_reorder(A, B) :-
3668 dependency_reorder(A, [], B).
3669dependency_reorder([], A, B) :-
3670 reverse(A, B).
3671dependency_reorder([A|B], C, D) :-
3672 A=unit(_, _, E, F),
3673 ( E==fixed
3674 -> G=[A|C]
3675 ; dependency_insert(C, A, F, G)
3676 ),
3677 dependency_reorder(B, G, D).
3678dependency_insert([], A, _, [A]).
3679dependency_insert([A|B], C, D, E) :-
3680 A=unit(F, _, _, _),
3681 ( memberchk(F, D)
3682 -> E=[C, A|B]
3683 ; E=[A|G],
3684 dependency_insert(B, C, D, G)
3685 ).
3686build_units(A, B, C, D) :-
3687 build_retrieval_units(A, 1, E, C, F, D, G),
3688 build_guard_units(B, E, F, G).
3689build_retrieval_units([], A, A, B, B, C, C).
3690build_retrieval_units([A|B], C, D, E, F, G, H) :-
3691 term_variables(A, I),
3692 update_unit_dictionary(I, C, E, J, [], K),
3693 G=[unit(C, A, fixed, K)|L],
3694 M is C+1,
3695 build_retrieval_units(B,
3696 M,
3697 D,
3698 J,
3699 F,
3700 L,
3701 H).
3702initialize_unit_dictionary(A, B) :-
3703 term_variables(A, C),
3704 pair_all_with(C, 0, B).
3705update_unit_dictionary([], _, A, A, B, B).
3706update_unit_dictionary([A|B], C, D, E, F, G) :-
3707 ( lookup_eq(D, A, H)
3708 -> ( ( H==C
3709 ; memberchk(H, F)
3710 )
3711 -> I=F
3712 ; I=[H|F]
3713 ),
3714 J=D
3715 ; J=[A-C|D],
3716 I=F
3717 ),
3718 update_unit_dictionary(B, C, J, E, I, G).
3719build_guard_units(A, B, C, D) :-
3720 ( A=[E]
3721 -> D=[unit(B, E, fixed, [])]
3722 ; A=[E|F]
3723 -> term_variables(E, G),
3724 update_unit_dictionary2(G, B, C, H, [], I),
3725 D=[unit(B, E, movable, I)|J],
3726 K is B+1,
3727 build_guard_units(F, K, H, J)
3728 ).
3729update_unit_dictionary2([], _, A, A, B, B).
3730update_unit_dictionary2([A|B], C, D, E, F, G) :-
3731 ( lookup_eq(D, A, H)
3732 -> ( ( H==C
3733 ; memberchk(H, F)
3734 )
3735 -> I=F
3736 ; I=[H|F]
3737 ),
3738 J=[A-C|D]
3739 ; J=[A-C|D],
3740 I=F
3741 ),
3742 update_unit_dictionary2(B, C, J, E, I, G).
3743functional_dependency_analysis(A) :-
3744 ( fail,
3745 chr_pp_flag(functional_dependency_analysis, on)
3746 -> functional_dependency_analysis_main(A)
3747 ; true
3748 ).
3749functional_dependency_analysis_main([]).
3750functional_dependency_analysis_main([A|B]) :-
3751 ( discover_unique_pattern(A, C, D, E, F)
3752 -> functional_dependency(C, D, E, F)
3753 ; true
3754 ),
3755 functional_dependency_analysis_main(B).
3756discover_unique_pattern(A, B/C, D, E, F) :-
3757 A=pragma(G, _, _, _, D),
3758 G=rule(H, I, J, _),
3759 ( H=[K],
3760 I=[L]
3761 -> true
3762 ; H=[K, L],
3763 I==[]
3764 -> true
3765 ),
3766 check_unique_constraints(K, L, J, D, M),
3767 term_variables(K, N),
3768 \+ ( member(O, N),
3769 lookup_eq(M, O, P),
3770 memberchk_eq(P, N)
3771 ),
3772 select_pragma_unique_variables(N, M, Q),
3773 copy_term_nat(K-Q, E-F),
3774 functor(K, B, C).
3775select_pragma_unique_variables([], _, []).
3776select_pragma_unique_variables([A|B], C, D) :-
3777 ( lookup_eq(C, A, _)
3778 -> D=E
3779 ; D=[A|E]
3780 ),
3781 select_pragma_unique_variables(B, C, E).
3782set_semantics_rules(A) :-
3783 ( fail,
3784 chr_pp_flag(set_semantics_rule, on)
3785 -> set_semantics_rules_main(A)
3786 ; true
3787 ).
3788set_semantics_rules_main([]).
3789set_semantics_rules_main([A|B]) :-
3790 set_semantics_rule_main(A),
3791 set_semantics_rules_main(B).
3792set_semantics_rule_main(A) :-
3793 A=pragma(B, C, _, _, D),
3794 ( B=rule([E], [F], true, _),
3795 C=ids([G], [H]),
3796 \+ is_passive(D, G),
3797 functor(E, I, J),
3798 get_functional_dependency(I/J, D, K, L),
3799 copy_term_nat(K-L, E-M),
3800 copy_term_nat(K-L, F-N),
3801 M==N
3802 -> passive(D, H)
3803 ; true
3804 ).
3805check_unique_constraints(A, B, C, D, E) :-
3806 \+ any_passive_head(D),
3807 variable_replacement(A-B, B-A, E),
3808 copy_with_variable_replacement(C, F, E),
3809 negate_b(C, G),
3810 once(entails_b(G, F)).
3811symmetry_analysis(A) :-
3812 ( chr_pp_flag(check_unnecessary_active, off)
3813 -> true
3814 ; symmetry_analysis_main(A)
3815 ).
3816symmetry_analysis_main([]).
3817symmetry_analysis_main([A|B]) :-
3818 A=pragma(C, ids(D, E), _, _, F),
3819 C=rule(G, H, _, _),
3820 ( ( \+ chr_pp_flag(check_unnecessary_active, simplification)
3821 ; H==[]
3822 ),
3823 G\==[]
3824 -> symmetry_analysis_heads_simplification(G,
3825 D,
3826 [],
3827 [],
3828 C,
3829 F),
3830 symmetry_analysis_heads_propagation(H,
3831 E,
3832 [],
3833 [],
3834 C,
3835 F)
3836 ; true
3837 ),
3838 symmetry_analysis_main(B).
3839symmetry_analysis_heads_simplification([], [], _, _, _, _).
3840symmetry_analysis_heads_simplification([A|B], [C|D], E, F, G, H) :-
3841 ( \+ is_passive(H, C),
3842 member2(E, F, I-J),
3843 \+ is_passive(H, J),
3844 variable_replacement(I, A, K),
3845 copy_with_variable_replacement(G, L, K),
3846 identical_guarded_rules(G, L)
3847 -> passive(H, C)
3848 ; true
3849 ),
3850 symmetry_analysis_heads_simplification(B,
3851 D,
3852 [A|E],
3853 [C|F],
3854 G,
3855 H).
3856symmetry_analysis_heads_propagation([], [], _, _, _, _).
3857symmetry_analysis_heads_propagation([A|B], [C|D], E, F, G, H) :-
3858 ( \+ is_passive(H, C),
3859 member2(E, F, I-J),
3860 \+ is_passive(H, J),
3861 variable_replacement(I, A, K),
3862 copy_with_variable_replacement(G, L, K),
3863 identical_rules(G, L)
3864 -> passive(H, C)
3865 ; true
3866 ),
3867 symmetry_analysis_heads_propagation(B,
3868 D,
3869 [A|E],
3870 [C|F],
3871 G,
3872 H).
3873simplification_code(A, B, C, D, E, F, G, H, I, J) :-
3874 E=pragma(K, _, _, _, L),
3875 head_info1(A, F, _, M, N, O),
3876 build_head(F, H, N, P),
3877 get_constraint_mode(F, Q),
3878 head_arg_matches(O, Q, [], R, S, [], T),
3879 guard_splitting(K, U),
3880 ( is_stored_in_guard(F, L)
3881 -> V=[_|U]
3882 ; V=U
3883 ),
3884 guard_via_reschedule_new(C,
3885 V,
3886 A,
3887 W,
3888 X,
3889 Y),
3890 rest_heads_retrieval_and_matching(C,
3891 D,
3892 A,
3893 X,
3894 Z,
3895 S,
3896 A1,
3897 [],
3898 [],
3899 [],
3900 T,
3901 _),
3902 guard_body_copies3(K, V, A1, W, B1),
3903 ( is_stored_in_guard(F, L)
3904 -> gen_occ_allocation_in_guard(F,
3905 G,
3906 C1,
3907 M,
3908 D1),
3909 gen_uncond_attach_goal(F, M, C1, E1, _),
3910 W=[F1|_],
3911 F1=(D1, E1)
3912 ; true
3913 ),
3914 partner_constraint_detachments(Z, C, A1, G1),
3915 active_constraint_detachment(H, M, A, A1, H1),
3916 ( chr_pp_flag(debugable, on)
3917 -> K=rule(_, _, I1, J1),
3918 my_term_copy(I1-J1, A1, K1-L1),
3919 sort_by_key([M|Z], [B|D], M1),
3920 N1='chr debug_event'(try(M1, [], K1, L1)),
3921 O1='chr debug_event'(apply(M1, [], K1, L1)),
3922 instrument_goal(P1, N1, O1, Q1)
3923 ; Q1=P1
3924 ),
3925 actual_cut(F, G, P1),
3926 R1=(P:-R, Y, Q1, G1, H1, B1),
3927 add_location(R1, L, S1),
3928 I=[S1|J].
3929actual_cut(A, B, C) :-
3930 ( unconditional_occurrence(A, B),
3931 chr_pp_flag(late_allocation, on)
3932 -> C=true
3933 ; C=!
3934 ).
3935add_location(A, B, C) :-
3936 ( chr_pp_flag(line_numbers, on)
3937 -> get_line_number(B, D:E),
3938 C='$source_location'(D, E):A
3939 ; C=A
3940 ).
3941add_dummy_location(A, B) :-
3942 ( chr_pp_flag(line_numbers, on)
3943 -> get_chr_source_file(C),
3944 B='$source_location'(C, 1):A
3945 ; B=A
3946 ).
3947head_arg_matches(A, B, C, D, E) :-
3948 head_arg_matches(A, B, C, D, E, [], _).
3949head_arg_matches(A, B, C, D, E, F, G) :-
3950 head_arg_matches_(A, B, C, F, H, E, G),
3951 list2conj(H, D).
3952head_arg_matches_([], [], A, B, [], A, B).
3953head_arg_matches_([silent(A-_)|B], [C|D], E, F, G, H, I) :-
3954 !,
3955 ( C==(+)
3956 -> term_variables(A, J, F),
3957 head_arg_matches_(B,
3958 D,
3959 E,
3960 J,
3961 G,
3962 H,
3963 I)
3964 ; head_arg_matches_(B,
3965 D,
3966 E,
3967 F,
3968 G,
3969 H,
3970 I)
3971 ).
3972head_arg_matches_([A-B|C], [D|E], F, G, H, I, J) :-
3973 ( var(A)
3974 -> ( lookup_eq(F, A, K)
3975 -> ( D=(+)
3976 -> ( memberchk_eq(A, G)
3977 -> H=[B=K|L],
3978 M=G
3979 ; H=[B==K|L],
3980 M=[A|G]
3981 )
3982 ; H=[B==K|L],
3983 M=G
3984 ),
3985 N=F
3986 ; N=[A-B|F],
3987 H=L,
3988 ( D=(+)
3989 -> M=[A|G]
3990 ; M=G
3991 )
3992 ),
3993 O=C,
3994 P=E
3995 ; ground(A),
3996 A='$chr_identifier_match'(Q, R)
3997 -> identifier_label_atom(R, B, Q, S),
3998 H=[S|L],
3999 F=N,
4000 M=G,
4001 O=C,
4002 P=E
4003 ; atomic(A)
4004 -> ( D=(+)
4005 -> H=[B=A|L]
4006 ; H=[B==A|L]
4007 ),
4008 F=N,
4009 M=G,
4010 O=C,
4011 P=E
4012 ; D==(+),
4013 is_ground(G, A)
4014 -> copy_with_variable_replacement(A, T, F),
4015 H=[B=T|L],
4016 F=N,
4017 M=G,
4018 O=C,
4019 P=E
4020 ; D==(?),
4021 is_ground(G, A)
4022 -> copy_with_variable_replacement(A, T, F),
4023 H=[B==T|L],
4024 F=N,
4025 M=G,
4026 O=C,
4027 P=E
4028 ; A=..[_|U],
4029 functor(A, V, W),
4030 functor(X, V, W),
4031 X=..[_|Y],
4032 ( D=(+)
4033 -> H=[B=X|L]
4034 ; H=[nonvar(B), B=X|L]
4035 ),
4036 pairup(U, Y, Z),
4037 append(Z, C, O),
4038 replicate(W, D, A1),
4039 append(A1, E, P),
4040 N=F,
4041 M=G
4042 ),
4043 head_arg_matches_(O,
4044 P,
4045 N,
4046 M,
4047 L,
4048 I,
4049 J).
4050add_heads_types([], A, A).
4051add_heads_types([A|B], C, D) :-
4052 add_head_types(A, C, E),
4053 add_heads_types(B, E, D).
4054add_head_types(A, B, C) :-
4055 functor(A, D, E),
4056 get_constraint_type_det(D/E, F),
4057 A=..[_|G],
4058 add_args_types(G, F, B, C).
4059add_args_types([], [], A, A).
4060add_args_types([A|B], [C|D], E, F) :-
4061 add_arg_types(A, C, E, G),
4062 add_args_types(B, D, G, F).
4063add_arg_types(A, B, C, D) :-
4064 ( B==any
4065 -> D=C
4066 ; var(A)
4067 -> ( lookup_eq(C, A, _)
4068 -> D=C
4069 ; D=[A-B|C]
4070 )
4071 ; D=C
4072 ).
4073add_heads_ground_variables([], A, A).
4074add_heads_ground_variables([A|B], C, D) :-
4075 add_head_ground_variables(A, C, E),
4076 add_heads_ground_variables(B, E, D).
4077add_head_ground_variables(A, B, C) :-
4078 functor(A, D, E),
4079 get_constraint_mode(D/E, F),
4080 A=..[_|G],
4081 add_arg_ground_variables(G, F, B, C).
4082add_arg_ground_variables([], [], A, A).
4083add_arg_ground_variables([A|B], [C|D], E, F) :-
4084 ( C==(+)
4085 -> term_variables(A, G),
4086 add_var_ground_variables(G, E, H)
4087 ; E=H
4088 ),
4089 add_arg_ground_variables(B, D, H, F).
4090add_var_ground_variables([], A, A).
4091add_var_ground_variables([A|B], C, D) :-
4092 ( memberchk_eq(A, C)
4093 -> E=C
4094 ; E=[A|C]
4095 ),
4096 add_var_ground_variables(B, E, D).
4097is_ground(A, B) :-
4098 ( ground(B)
4099 -> true
4100 ; compound(B)
4101 -> B=..[_|C],
4102 maplist(is_ground(A), C)
4103 ; memberchk_eq(B, A)
4104 ).
4105check_ground(A, B, C) :-
4106 term_variables(B, D),
4107 check_ground_variables(D, A, C).
4108check_ground_variables([], _, true).
4109check_ground_variables([A|B], C, D) :-
4110 ( memberchk_eq(A, C)
4111 -> check_ground_variables(B, C, D)
4112 ; D=(ground(A), E),
4113 check_ground_variables(B, C, E)
4114 ).
4115rest_heads_retrieval_and_matching(A, B, C, D, E, F, G, H, I, J) :-
4116 rest_heads_retrieval_and_matching(A,
4117 B,
4118 C,
4119 D,
4120 E,
4121 F,
4122 G,
4123 H,
4124 I,
4125 J,
4126 [],
4127 _).
4128rest_heads_retrieval_and_matching(A, B, C, D, E, F, G, H, I, J, K, L) :-
4129 ( A=[_|_]
4130 -> rest_heads_retrieval_and_matching_n(A,
4131 B,
4132 H,
4133 I,
4134 C,
4135 D,
4136 E,
4137 F,
4138 G,
4139 J,
4140 K,
4141 L)
4142 ; D=[],
4143 E=[],
4144 F=G,
4145 K=L
4146 ).
4147rest_heads_retrieval_and_matching_n([], _, _, _, _, [], [], A, A, _, B, B).
4148rest_heads_retrieval_and_matching_n([A|B], [_|C], D, E, F, [G|H], [I|J], K, L, _, M, N) :-
4149 functor(A, O, P),
4150 head_info(A, P, Q, _, _, R),
4151 get_store_type(O/P, S),
4152 ( S==default
4153 -> passive_head_via(A, [F|D], K, T, U),
4154 delay_phase_end(validate_store_type_assumptions,
4155 (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))),
4156 get_constraint_mode(O/P, X),
4157 head_arg_matches(R,
4158 X,
4159 K,
4160 Y,
4161 Z,
4162 M,
4163 A1),
4164 B1=R,
4165 sbag_member_call(I, U, C1),
4166 D1=(T, C1, I=V, W),
4167 inline_matching_goal(Y, E1)
4168 ; delay_phase_end(validate_store_type_assumptions,
4169 (static_suspension_term(O/P, V), get_static_suspension_term_field(arguments, O/P, V, Q))),
4170 existential_lookup(S,
4171 A,
4172 [F|D],
4173 K,
4174 M,
4175 V,
4176 D1,
4177 I,
4178 R,
4179 B1),
4180 get_constraint_mode(O/P, X),
4181 F1=X,
4182 head_arg_matches(B1,
4183 F1,
4184 K,
4185 Y,
4186 Z,
4187 M,
4188 A1),
4189 filter_append(B1, Z, G1),
4190 translate(A1, G1, H1),
4191 translate(A1, Z, I1),
4192 inline_matching_goal(Y, E1, H1, I1)
4193 ),
4194 different_from_other_susps(A, I, D, E, J1),
4195 G=(D1, J1, E1),
4196 rest_heads_retrieval_and_matching_n(B,
4197 C,
4198 [A|D],
4199 [I|E],
4200 F,
4201 H,
4202 J,
4203 Z,
4204 L,
4205 _,
4206 A1,
4207 N).
4208inline_matching_goal(A, B) :-
4209 inline_matching_goal(A, B, [], []).
4210inline_matching_goal(A==B, true, C, D) :-
4211 memberchk_eq(A, C),
4212 memberchk_eq(B, D),
4213 A=B,
4214 !.
4215inline_matching_goal((A, B), (C, D), E, F) :-
4216 !,
4217 inline_matching_goal(A, C, E, F),
4218 inline_matching_goal(B, D, E, F).
4219inline_matching_goal(A, A, _, _).
4220filter_mode([], _, _, []).
4221filter_mode([A-B|C], [_-D|E], [F|G], H) :-
4222 ( B==D
4223 -> H=[F|I],
4224 filter_mode(C, E, G, I)
4225 ; filter_mode([A-B|C], E, G, H)
4226 ).
4227filter_append([], A, A).
4228filter_append([A|B], C, D) :-
4229 ( A=silent(_)
4230 -> filter_append(B, C, D)
4231 ; D=[A|E],
4232 filter_append(B, C, E)
4233 ).
4234check_unique_keys([], _).
4235check_unique_keys([A|B], C) :-
4236 lookup_eq(C, A, _),
4237 check_unique_keys(B, C).
4238different_from_other_susps(A, B, C, D, E) :-
4239 different_from_other_susps_(C, D, A, B, F),
4240 list2conj(F, E).
4241different_from_other_susps_(_, [], _, _, []) :-
4242 !.
4243different_from_other_susps_([A|B], [C|D], E, F, G) :-
4244 ( functor(E, H, I),
4245 functor(A, H, I),
4246 copy_term_nat(A-E, J-K),
4247 \+ \+ J=K
4248 -> G=[F\==C|L]
4249 ; G=L
4250 ),
4251 different_from_other_susps_(B, D, E, F, L).
4252passive_head_via(A, B, C, D, E) :-
4253 functor(A, F, G),
4254 get_constraint_index(F/G, _),
4255 common_variables(A, B, H),
4256 ground_vars([A], I),
4257 list_difference_eq(H, I, J),
4258 global_list_store_name(F/G, K),
4259 L=nb_getval(K, E),
4260 get_constraint_mode(F/G, M),
4261 ( N==[]
4262 -> D=L
4263 ; member(O, J),
4264 nth1(P, M, -),
4265 arg(P, A, Q),
4266 Q==O
4267 -> translate([O], C, [R]),
4268 gen_get_mod_constraints(F/G, R, S, E),
4269 D=S
4270 ; translate(J, C, N),
4271 add_heads_types(B, [], T),
4272 my_term_copy(T, C, U),
4273 gen_get_mod_constraints(F/G,
4274 N,
4275 U,
4276 V,
4277 S,
4278 E),
4279 D=(V->S;L)
4280 ).
4281common_variables(A, B, C) :-
4282 term_variables(A, D),
4283 term_variables(B, E),
4284 intersect_eq(D, E, C).
4285gen_get_mod_constraints(A, B, C, D, E, F) :-
4286 via_goal(B, C, D, G),
4287 get_target_module(H),
4288 E=(get_attr(G, H, I), J),
4289 get_max_constraint_index(K),
4290 ( K==1
4291 -> J=true,
4292 F=I
4293 ; get_constraint_index(A, L),
4294 get_suspensions(K, L, I, J, F)
4295 ).
4296via_goal(A, B, C, D) :-
4297 ( A=[]
4298 -> C=fail
4299 ; A=[E]
4300 -> lookup_type(B, E, F),
4301 ( atomic_type(F)
4302 -> C=var(E),
4303 E=D
4304 ; C='chr newvia_1'(E, D)
4305 )
4306 ; A=[E, G]
4307 -> C='chr newvia_2'(E, G, D)
4308 ; C='chr newvia'(A, D)
4309 ).
4310lookup_type(A, B, C) :-
4311 ( lookup_eq(A, B, C)
4312 -> true
4313 ; C=any
4314 ).
4315gen_get_mod_constraints(A, B, C, D) :-
4316 get_target_module(E),
4317 C=(get_attr(B, E, F), G),
4318 get_max_constraint_index(H),
4319 ( H==1
4320 -> G=true,
4321 D=F
4322 ; get_constraint_index(A, I),
4323 get_suspensions(H, I, F, G, D)
4324 ).
4325guard_body_copies(A, B, C, D) :-
4326 guard_body_copies2(A, B, E, D),
4327 list2conj(E, C).
4328guard_body_copies2(A, B, C, D) :-
4329 A=rule(_, E, F, G),
4330 conj2list(F, H),
4331 split_off_simple_guard(H, B, I, J),
4332 my_term_copy(I-J, B, K, L-M),
4333 append(L, [N], C),
4334 term_variables(J, O),
4335 term_variables(M, P),
4336 ground_vars(E, Q),
4337 list_difference_eq(O, Q, R),
4338 ( chr_pp_flag(guard_locks, off)
4339 -> S=[],
4340 T=[]
4341 ; bagof(U-V,
4342 W^X^(lists:member(W, R), pairlist:lookup_eq(B, W, X), memberchk_eq(X, P), chr_lock(X, U), chr_unlock(X, V)),
4343 Y)
4344 -> once(pairup(S, T, Y))
4345 ; S=[],
4346 T=[]
4347 ),
4348 list2conj(S, Z),
4349 list2conj(T, A1),
4350 list2conj(M, B1),
4351 N=(Z, B1, A1),
4352 my_term_copy(G, K, D).
4353split_off_simple_guard([], _, [], []).
4354split_off_simple_guard([A|B], C, D, E) :-
4355 ( simple_guard(A, C)
4356 -> D=[A|F],
4357 split_off_simple_guard(B, C, F, E)
4358 ; D=[],
4359 E=[A|B]
4360 ).
4361simple_guard(A, B) :-
4362 binds_b(A, C),
4363 \+ ( member(D, C),
4364 lookup_eq(B, D, _)
4365 ).
4366active_constraint_detachment(A, B, C, D, E) :-
4367 functor(C, F, G),
4368 H=F/G,
4369 ( is_stored(H)
4370 -> ( ( A==[0],
4371 chr_pp_flag(store_in_guards, off)
4372 ; get_allocation_occurrence(H, I),
4373 get_max_occurrence(H, J),
4374 J<I
4375 ),
4376 only_ground_indexed_arguments(H),
4377 chr_pp_flag(late_allocation, on)
4378 -> E=true
4379 ; gen_uncond_susp_detachment(C,
4380 B,
4381 active,
4382 D,
4383 K),
4384 ( chr_pp_flag(late_allocation, on)
4385 -> E=(var(B)->true;K)
4386 ; E=K
4387 )
4388 )
4389 ; E=true
4390 ).
4391partner_constraint_detachments([], [], _, true).
4392partner_constraint_detachments([A|B], [C|D], E, (F, G)) :-
4393 gen_uncond_susp_detachment(C, A, partner, E, F),
4394 partner_constraint_detachments(B, D, E, G).
4395gen_uncond_susp_detachment(A, B, C, D, E) :-
4396 functor(A, F, G),
4397 H=F/G,
4398 ( is_stored(H)
4399 -> E=(I, J),
4400 ( chr_pp_flag(debugable, on)
4401 -> I='chr debug_event'(remove(B))
4402 ; I=true
4403 ),
4404 remove_constraint_goal(H,
4405 B,
4406 K,
4407 true,
4408 (L, M),
4409 C,
4410 J),
4411 delete_constraint_goal(A, B, D, L),
4412 ( \+ only_ground_indexed_arguments(H),
4413 \+ get_store_type(H, var_assoc_store(_, _))
4414 -> detach_constraint_atom(H, K, B, M)
4415 ; M=true
4416 )
4417 ; E=true
4418 ).
4419simpagation_head1_code(A, B, C, D, E, F/G, _, H, I, J) :-
4420 E=pragma(K, ids(_, L), _, _, M),
4421 K=rule(_, N, O, P),
4422 head_info(A, G, Q, R, S, T),
4423 get_constraint_mode(F/G, U),
4424 head_arg_matches(T, U, [], V, W, [], X),
4425 build_head(F, G, H, S, Y),
4426 append(C, N, Z),
4427 append(D, L, A1),
4428 reorder_heads(M, A, Z, A1, B1, C1),
4429 guard_splitting(K, D1),
4430 ( is_stored_in_guard(F/G, M)
4431 -> E1=[_|D1]
4432 ; E1=D1
4433 ),
4434 guard_via_reschedule_new(B1,
4435 E1,
4436 A,
4437 F1,
4438 G1,
4439 H1),
4440 rest_heads_retrieval_and_matching(B1,
4441 C1,
4442 A,
4443 G1,
4444 I1,
4445 W,
4446 J1,
4447 [],
4448 [],
4449 [],
4450 X,
4451 _),
4452 split_by_ids(C1,
4453 I1,
4454 D,
4455 K1,
4456 L1,
4457 M1,
4458 N1),
4459 guard_body_copies3(K, E1, J1, F1, O1),
4460 ( is_stored_in_guard(F/G, M)
4461 -> gen_uncond_attach_goal(F/G,
4462 R,
4463 Q,
4464 P1,
4465 _),
4466 F1=[Q1|_],
4467 Q1=P1
4468 ; true
4469 ),
4470 sort_by_key(K1, L1, R1),
4471 partner_constraint_detachments(R1, C, J1, S1),
4472 active_constraint_detachment(H, R, A, J1, T1),
4473 ( chr_pp_flag(debugable, on)
4474 -> my_term_copy(O-P, J1, U1-V1),
4475 sort_by_key([R|K1], [B|L1], W1),
4476 sort_by_key(M1, N1, X1),
4477 Y1='chr debug_event'(try(W1, X1, U1, V1)),
4478 Z1='chr debug_event'(apply(W1, X1, U1, V1)),
4479 instrument_goal(!, Y1, Z1, A2)
4480 ; A2=!
4481 ),
4482 B2=(Y:-V, H1, A2, S1, T1, O1),
4483 add_location(B2, M, C2),
4484 I=[C2|J].
4485split_by_ids([], [], _, [], []).
4486split_by_ids([A|B], [C|D], E, F, G) :-
4487 ( memberchk_eq(A, E)
4488 -> F=[C|H],
4489 G=I
4490 ; F=H,
4491 G=[C|I]
4492 ),
4493 split_by_ids(B, D, E, H, I).
4494split_by_ids([], [], _, [], [], [], []).
4495split_by_ids([A|B], [C|D], E, F, G, H, I) :-
4496 ( memberchk_eq(A, E)
4497 -> F=[C|J],
4498 G=[A|K],
4499 H=L,
4500 I=M
4501 ; F=J,
4502 G=K,
4503 H=[C|L],
4504 I=[A|M]
4505 ),
4506 split_by_ids(B, D, E, J, K, L, M).
4507simpagation_head2_code(A, B, C, D, E, F, G, H, I, J) :-
4508 E=pragma(K, ids(L, M), _, _, N),
4509 K=rule(O, _, P, Q),
4510 append(O, C, R),
4511 append(L, D, S),
4512 reorder_heads(N,
4513 A,
4514 R,
4515 S,
4516 [T|U],
4517 [V|W]),
4518 simpagation_head2_prelude(A,
4519 T,
4520 [U, P, Q],
4521 F,
4522 G,
4523 H,
4524 I,
4525 X),
4526 extend_id(H, Y),
4527 ( memberchk_eq(V, M)
4528 -> simpagation_universal_searches(U,
4529 W,
4530 M,
4531 [T, A],
4532 K,
4533 F,
4534 G,
4535 Z,
4536 A1,
4537 B1,
4538 Y,
4539 C1,
4540 X,
4541 D1)
4542 ; X=D1,
4543 Y=C1,
4544 Z=U,
4545 A1=[T, A],
4546 B1=W
4547 ),
4548 universal_search_iterator_end(A1,
4549 Z,
4550 K,
4551 F,
4552 G,
4553 C1,
4554 D1,
4555 E1),
4556 simpagation_head2_worker(A1,
4557 Z,
4558 B1,
4559 B,
4560 E,
4561 F,
4562 G,
4563 C1,
4564 E1,
4565 J).
4566simpagation_universal_searches([], [], _, A, _, _, _, [], A, [], B, B, C, C).
4567simpagation_universal_searches(A, [B|C], D, E, F, G, H, I, J, K, L, M, N, O) :-
4568 A=[P|Q],
4569 inc_id(L, R),
4570 universal_search_iterator_end(E,
4571 A,
4572 F,
4573 G,
4574 H,
4575 L,
4576 N,
4577 S),
4578 universal_search_iterator(A,
4579 E,
4580 F,
4581 G,
4582 H,
4583 L,
4584 S,
4585 T),
4586 ( memberchk_eq(B, D)
4587 -> simpagation_universal_searches(Q,
4588 C,
4589 D,
4590 [P|E],
4591 F,
4592 G,
4593 H,
4594 I,
4595 J,
4596 K,
4597 R,
4598 M,
4599 T,
4600 O)
4601 ; M=R,
4602 T=O,
4603 I=Q,
4604 J=[P|E],
4605 C=K
4606 ).
4607simpagation_head2_prelude(A, B, C, D/E, F, G, H, I) :-
4608 head_info(A, E, J, K, L, M),
4609 build_head(D, E, G, L, N),
4610 get_constraint_mode(D/E, O),
4611 head_arg_matches(M, O, [], P, Q, [], R),
4612 lookup_passive_head(B, [A], Q, R, S, T),
4613 gen_occ_allocation(D/E, F, J, K, U),
4614 extend_id(G, V),
4615 extra_active_delegate_variables(A,
4616 [B|C],
4617 Q,
4618 W),
4619 append([T|L], W, X),
4620 build_head(D, E, [F|V], X, Y),
4621 Z=(N:-P, S, !, U, Y),
4622 add_dummy_location(Z, A1),
4623 H=[A1|I].
(A, B, C, D) :-
4625 A=..[_|E],
4626 delegate_variables(A, B, C, E, D).
4627passive_delegate_variables(A, B, C, D, E) :-
4628 term_variables(B, F),
4629 delegate_variables(A, C, D, F, E).
4630delegate_variables(A, B, C, D, E) :-
4631 term_variables(A, F),
4632 term_variables(B, G),
4633 intersect_eq(F, G, H),
4634 list_difference_eq(H, D, I),
4635 translate(I, C, E).
4636simpagation_head2_worker([A|B], C, D, _, E, F/G, H, I, J, K) :-
4637 E=pragma(L, ids(M, _), N, _, O),
4638 L=rule(_, _, P, Q),
4639 get_prop_inner_loop_vars(B,
4640 [A, C, P, Q],
4641 R,
4642 S,
4643 T,
4644 U,
4645 V),
4646 gen_var(W),
4647 gen_var(X),
4648 functor(A, Y, Z),
4649 gen_vars(Z, A1),
4650 head_info(A, Z, A1, W, _, B1),
4651 get_constraint_mode(Y/Z, C1),
4652 head_arg_matches(B1, C1, S, D1, E1, [], _),
4653 delay_phase_end(validate_store_type_assumptions,
4654 (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))),
4655 different_from_other_susps(A, W, B, V, H1),
4656 I1=(W=F1, G1, H1, D1),
4657 J1=[[W|X]|R],
4658 build_head(F, G, [H|I], J1, K1),
4659 guard_splitting(L, L1),
4660 ( is_stored_in_guard(F/G, O)
4661 -> M1=[_|L1]
4662 ; M1=L1
4663 ),
4664 guard_via_reschedule_new(C,
4665 M1,
4666 [A|B],
4667 N1,
4668 O1,
4669 P1),
4670 rest_heads_retrieval_and_matching(C,
4671 D,
4672 [A|B],
4673 O1,
4674 Q1,
4675 E1,
4676 R1,
4677 [A|B],
4678 [W|V],
4679 []),
4680 split_by_ids(D, Q1, M, S1, T1),
4681 split_by_ids(D, C, M, U1, _),
4682 partner_constraint_detachments([W|S1],
4683 [A|U1],
4684 R1,
4685 V1),
4686 W1=[X|R],
4687 build_head(F, G, [H|I], W1, X1),
4688 Y1=[[]|R],
4689 build_head(F, G, [H|I], Y1, Z1),
4690 guard_body_copies3(L, M1, R1, N1, A2),
4691 ( is_stored_in_guard(F/G, O)
4692 -> N1=[B2|_]
4693 ; true
4694 ),
4695 ( is_observed(F/G, H)
4696 -> gen_uncond_attach_goal(F/G,
4697 T,
4698 U,
4699 C2,
4700 D2),
4701 gen_state_cond_call(T,
4702 F/G,
4703 X1,
4704 D2,
4705 E2),
4706 gen_state_cond_call(T,
4707 F/G,
4708 Z1,
4709 D2,
4710 F2)
4711 ; C2=true,
4712 E2=X1,
4713 F2=Z1
4714 ),
4715 ( chr_pp_flag(debugable, on)
4716 -> my_term_copy(P-Q, S, G2-H2),
4717 I2='chr debug_event'(try([W|S1], [T|T1], G2, H2)),
4718 J2='chr debug_event'(apply([W|S1], [T|T1], G2, H2))
4719 ; I2=true,
4720 J2=true
4721 ),
4722 ( is_stored_in_guard(F/G, O)
4723 -> B2=C2,
4724 K2=true
4725 ; B2=true,
4726 K2=C2
4727 ),
4728 ( member(unique(_, L2), N),
4729 check_unique_keys(L2, S)
4730 -> M2=(K1:-I1->(P1, I2->J2, V1, K2, A2, F2;Z1);X1)
4731 ; M2=(K1:-I1, P1, I2->J2, V1, K2, A2, E2;X1)
4732 ),
4733 add_location(M2, O, N2),
4734 J=[N2|K].
4735gen_state_cond_call(A, B, C, D, E) :-
4736 ( may_trigger(B)
4737 -> does_use_field(B, generation),
4738 delay_phase_end(validate_store_type_assumptions,
4739 (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)))
4740 ; delay_phase_end(validate_store_type_assumptions,
4741 (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))),
4742 I=true
4743 ),
4744 E=(A=F, G, I->H, C;true).
4745propagation_code(A, B, C, D, E, F, G, H, I, J, K) :-
4746 ( C==[]
4747 -> propagation_single_headed(A,
4748 B,
4749 E,
4750 F,
4751 G,
4752 H,
4753 I,
4754 J,
4755 K)
4756 ; propagation_multi_headed(A,
4757 C,
4758 D,
4759 E,
4760 F,
4761 G,
4762 H,
4763 I,
4764 J,
4765 K)
4766 ).
4767propagation_single_headed(A, _, B, C, D/E, F, G, H, I) :-
4768 head_info(A, E, J, K, L, M),
4769 build_head(D, E, G, L, N),
4770 inc_id(G, O),
4771 build_head(D, E, O, L, P),
4772 get_constraint_mode(D/E, Q),
4773 head_arg_matches(M, Q, [], R, S, [], _),
4774 guard_body_copies(B, S, T, U),
4775 V=P,
4776 actual_cut(D/E, F, W),
4777 B=rule(_, _, X, Y),
4778 ( chr_pp_flag(debugable, on)
4779 -> my_term_copy(X-Y, S, Z-A1),
4780 B1='chr debug_event'(try([], [K], Z, A1)),
4781 C1='chr debug_event'(apply([], [K], Z, A1)),
4782 instrument_goal(W, B1, C1, D1)
4783 ; D1=W
4784 ),
4785 ( may_trigger(D/E),
4786 \+ has_no_history(C)
4787 -> use_auxiliary_predicate(novel_production),
4788 use_auxiliary_predicate(extend_history),
4789 does_use_history(D/E, F),
4790 gen_occ_allocation(D/E, F, J, K, E1),
4791 ( named_history(C, F1, G1)
4792 -> ( G1==[]
4793 -> empty_named_history_novel_production(F1, H1),
4794 empty_named_history_extend_history(F1, I1)
4795 ; J1=F1
4796 )
4797 ; J1=C
4798 ),
4799 ( var(H1)
4800 -> H1='$novel_production'(K, J1),
4801 I1='$extend_history'(K, J1)
4802 ; true
4803 ),
4804 ( is_observed(D/E, F)
4805 -> gen_uncond_attach_goal(D/E,
4806 K,
4807 J,
4808 K1,
4809 L1),
4810 gen_state_cond_call(K,
4811 D/E,
4812 V,
4813 L1,
4814 M1)
4815 ; K1=true,
4816 M1=V
4817 )
4818 ; E1=true,
4819 H1=true,
4820 I1=true,
4821 ( is_observed(D/E, F)
4822 -> get_allocation_occurrence(D/E, N1),
4823 ( F==N1
4824 -> gen_insert_constraint_internal_goal(D/E,
4825 K1,
4826 L,
4827 J,
4828 K),
4829 L1=0
4830 ; K1=(O1, P1),
4831 gen_occ_allocation(D/E,
4832 F,
4833 J,
4834 K,
4835 O1),
4836 gen_uncond_attach_goal(D/E,
4837 K,
4838 J,
4839 P1,
4840 L1)
4841 ),
4842 gen_state_cond_call(K,
4843 D/E,
4844 V,
4845 L1,
4846 M1)
4847 ; gen_occ_allocation(D/E,
4848 F,
4849 J,
4850 K,
4851 K1),
4852 M1=V
4853 )
4854 ),
4855 ( is_stored_in_guard(D/E, C)
4856 -> Q1=K1,
4857 R1=true
4858 ; Q1=true,
4859 R1=K1
4860 ),
4861 S1=(N:-R, E1, H1, Q1, T, D1, I1, R1, U, M1),
4862 add_location(S1, C, T1),
4863 H=[T1|I].
4864propagation_multi_headed(A, B, C, D, E, F, G, H, I, J) :-
4865 B=[K|L],
4866 propagation_prelude(A,
4867 B,
4868 D,
4869 F,
4870 G,
4871 H,
4872 I,
4873 M),
4874 extend_id(H, N),
4875 propagation_nested_code(L,
4876 [K, A],
4877 C,
4878 D,
4879 E,
4880 F,
4881 G,
4882 N,
4883 M,
4884 J).
4885propagation_prelude(A, [B|C], D, E/F, G, H, I, J) :-
4886 head_info(A, F, K, L, M, N),
4887 build_head(E, F, H, M, O),
4888 get_constraint_mode(E/F, P),
4889 head_arg_matches(N, P, [], Q, R, [], S),
4890 D=rule(_, _, T, U),
4891 extra_active_delegate_variables(A,
4892 [B, C, T, U],
4893 R,
4894 V),
4895 lookup_passive_head(B, [A], R, S, W, X),
4896 gen_occ_allocation(E/F, G, K, L, Y),
4897 extend_id(H, Z),
4898 append([X|M], V, A1),
4899 build_head(E, F, [G|Z], A1, B1),
4900 C1=B1,
4901 D1=(O:-Q, W, !, Y, C1),
4902 add_dummy_location(D1, E1),
4903 I=[E1|J].
4904propagation_nested_code([], [A|B], C, D, E, F, G, H, I, J) :-
4905 universal_search_iterator_end([A|B],
4906 [],
4907 D,
4908 F,
4909 G,
4910 H,
4911 I,
4912 K),
4913 propagation_body(A,
4914 B,
4915 C,
4916 D,
4917 E,
4918 F,
4919 G,
4920 H,
4921 K,
4922 J).
4923propagation_nested_code([A|B], C, D, E, F, G, H, I, J, K) :-
4924 universal_search_iterator_end(C,
4925 [A|B],
4926 E,
4927 G,
4928 H,
4929 I,
4930 J,
4931 L),
4932 universal_search_iterator([A|B],
4933 C,
4934 E,
4935 G,
4936 H,
4937 I,
4938 L,
4939 M),
4940 inc_id(I, N),
4941 propagation_nested_code(B,
4942 [A|C],
4943 D,
4944 E,
4945 F,
4946 G,
4947 H,
4948 N,
4949 M,
4950 K).
4951check_fd_lookup_condition(A, B, _, _) :-
4952 get_store_type(A/B, global_singleton),
4953 !.
4954check_fd_lookup_condition(A, B, C, D) :-
4955 \+ may_trigger(A/B),
4956 get_functional_dependency(A/B, 1, E, F),
4957 copy_term(E-F, C-G),
4958 term_variables(D, H),
4959 intersect_eq(G, H, G),
4960 !.
4961propagation_body(A, B, C, D, E, F/G, H, I, J, K) :-
4962 D=rule(_, L, M, N),
4963 gen_var_susp_list_for_b(B,
4964 [A, M, N],
4965 O,
4966 P,
4967 Q,
4968 R,
4969 S),
4970 flatten(P, T),
4971 init(R, U),
4972 last(R, V),
4973 gen_var(W),
4974 gen_var(X),
4975 functor(A, Y, Z),
4976 gen_vars(Z, A1),
4977 delay_phase_end(validate_store_type_assumptions,
4978 (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))),
4979 D1=(W=B1, C1),
4980 E1=[[W|X]|T],
4981 build_head(F, G, [H|I], E1, F1),
4982 ( check_fd_lookup_condition(Y, Z, A, B)
4983 -> universal_search_iterator_failure_vars(B,
4984 I,
4985 P,
4986 Q,
4987 S,
4988 G1,
4989 H1),
4990 I1=G1
4991 ; I1=[X|T],
4992 H1=I
4993 ),
4994 ( H1=[_]
4995 -> J1=H1
4996 ; J1=[H|H1]
4997 ),
4998 build_head(F, G, J1, I1, K1),
4999 L1=K1,
5000 A=..[_|M1],
5001 pairup(M1, A1, N1),
5002 get_constraint_mode(Y/Z, O1),
5003 head_arg_matches(N1, O1, O, P1, Q1),
5004 different_from_other_susps(A, W, B, U, R1),
5005 guard_body_copies(D, Q1, S1, T1),
5006 get_occurrence(F/G, H, _, U1),
5007 ( is_observed(F/G, H)
5008 -> init(Q, V1),
5009 gen_uncond_attach_goal(F/G,
5010 V,
5011 V1,
5012 W1,
5013 X1),
5014 gen_state_cond_call(V,
5015 F/G,
5016 L1,
5017 X1,
5018 Y1)
5019 ; W1=true,
5020 Y1=L1
5021 ),
5022 ( ( is_least_occurrence(E)
5023 ; has_no_history(E)
5024 )
5025 -> Z1=true,
5026 A2=true
5027 ; \+ may_trigger(F/G),
5028 maplist(is_passive(E), C)
5029 -> Z1=true,
5030 A2=true
5031 ; get_occurrence(F/G, H, _, U1),
5032 use_auxiliary_predicate(novel_production),
5033 use_auxiliary_predicate(extend_history),
5034 does_use_history(F/G, H),
5035 ( named_history(E, B2, C2)
5036 -> ( C2==[]
5037 -> empty_named_history_novel_production(B2, Z1),
5038 empty_named_history_extend_history(B2, A2)
5039 ; reverse([W|U], D2),
5040 named_history_susps(C2,
5041 [U1|C],
5042 [V|D2],
5043 E2),
5044 E2=[F2|_],
5045 ( length(C2, 1)
5046 -> A2='$extend_history'(F2, B2),
5047 Z1='$novel_production'(F2, B2)
5048 ; findall(G2,
5049 ( member(H2, C2),
5050 get_occurrence_from_id(G2,
5051 _,
5052 E,
5053 H2)
5054 ),
5055 I2),
5056 J2=..[t, B2|E2]
5057 )
5058 )
5059 ; F2=V,
5060 maplist(extract_symbol, L, I2),
5061 sort([U1|C], C2),
5062 history_susps(C,
5063 [W|U],
5064 V,
5065 U1,
5066 E2),
5067 J2=..[t, E|E2]
5068 ),
5069 ( var(Z1)
5070 -> novel_production_calls(I2,
5071 C2,
5072 E2,
5073 E,
5074 K2,
5075 L2),
5076 A2='$extend_history'(F2, K2),
5077 Z1=(K2=J2, L2)
5078 ; true
5079 )
5080 ),
5081 ( chr_pp_flag(debugable, on)
5082 -> D=rule(_, _, M, N),
5083 my_term_copy(M-N, Q1, M2-N2),
5084 get_occurrence(F/G, H, _, U1),
5085 sort_by_key([V, W|U], [U1|C], O2),
5086 P2='chr debug_event'(try([], O2, M2, N2)),
5087 Q2='chr debug_event'(apply([], O2, M2, N2))
5088 ; P2=true,
5089 Q2=true
5090 ),
5091 ( is_stored_in_guard(F/G, E)
5092 -> R2=W1,
5093 S2=true
5094 ; R2=true,
5095 S2=W1
5096 ),
5097 T2=(F1:-D1, R1, P1, Z1, R2, S1, P2->Q2, A2, S2, T1, Y1;L1),
5098 add_location(T2, E, U2),
5099 J=[U2|K].
(A, B/C) :-
5101 functor(A, B, C).
5102novel_production_calls([], [], [], _, _, true).
5103novel_production_calls([A|B], [C|D], [E|F], G, H, (I, J)) :-
5104 get_occurrence_from_id(A, K, G, C),
5105 delay_phase_end(validate_store_type_assumptions,
5106 novel_production_call(A,
5107 K,
5108 '$novel_production'(E, H),
5109 I)),
5110 novel_production_calls(B, D, F, G, H, J).
5111history_susps(A, B, C, D, E) :-
5112 reverse(B, F),
5113 sort_by_key([C|F], [D|A], E).
5114named_history_susps([], _, _, []).
5115named_history_susps([A|B], C, D, [E|F]) :-
5116 select2(A, E, C, D, G, H),
5117 !,
5118 named_history_susps(B, G, H, F).
5119gen_var_susp_list_for([A], B, C, D, E, F) :-
5120 !,
5121 functor(A, G, H),
5122 head_info(A, H, _, F, E, I),
5123 get_constraint_mode(G/H, J),
5124 head_arg_matches(I, J, [], _, C),
5125 extra_active_delegate_variables(A, B, C, K),
5126 append(E, K, D).
5127gen_var_susp_list_for([A|B], C, D, E, F, G) :-
5128 gen_var_susp_list_for(B,
5129 [A|C],
5130 H,
5131 F,
5132 _,
5133 _),
5134 functor(A, I, J),
5135 gen_var(G),
5136 head_info(A, J, _, K, _, L),
5137 get_constraint_mode(I/J, M),
5138 head_arg_matches(L, M, H, _, D),
5139 passive_delegate_variables(A, B, C, D, N),
5140 append(N, [K, G|F], E).
5141gen_var_susp_list_for_b([A], B, C, [D], E, [F], []) :-
5142 !,
5143 functor(A, G, H),
5144 head_info(A, H, _, F, E, I),
5145 get_constraint_mode(G/H, J),
5146 head_arg_matches(I, J, [], _, C),
5147 extra_active_delegate_variables(A, B, C, K),
5148 append(E, K, D).
5149gen_var_susp_list_for_b([A|B], C, D, [E|F], G, [H|I], [J|K]) :-
5150 gen_var_susp_list_for_b(B,
5151 [A|C],
5152 L,
5153 F,
5154 G,
5155 I,
5156 K),
5157 functor(A, M, N),
5158 gen_var(J),
5159 head_info(A, N, _, H, _, O),
5160 get_constraint_mode(M/N, P),
5161 head_arg_matches(O, P, L, _, D),
5162 passive_delegate_variables(A, B, C, D, Q),
5163 append(Q, [H, J], E).
5164get_prop_inner_loop_vars([A], B, C, D, E, F, []) :-
5165 !,
5166 functor(A, G, H),
5167 head_info(A, H, F, E, I, J),
5168 get_constraint_mode(G/H, K),
5169 head_arg_matches(J, K, [], _, D),
5170 extra_active_delegate_variables(A, B, D, L),
5171 append(I, L, C).
5172get_prop_inner_loop_vars([A|B], C, D, E, F, G, [H|I]) :-
5173 get_prop_inner_loop_vars(B,
5174 [A|C],
5175 J,
5176 K,
5177 F,
5178 G,
5179 I),
5180 functor(A, L, M),
5181 gen_var(N),
5182 head_info(A, M, _, H, _, O),
5183 get_constraint_mode(L/M, P),
5184 head_arg_matches(O, P, K, _, E),
5185 passive_delegate_variables(A, B, C, E, Q),
5186 append(Q, [H, N|J], D).
5187reorder_heads(A, B, C, D, E, F) :-
5188 ( chr_pp_flag(reorder_heads, on),
5189 length(C, G),
5190 G=<6
5191 -> reorder_heads_main(A, B, C, D, E, F)
5192 ; E=C,
5193 F=D
5194 ).
5195reorder_heads_main(A, B, C, D, E, F) :-
5196 term_variables(B, G),
5197 H=entry([], [], G, C, D, A),
5198 copy_term_nat(H, I),
5199 a_star(I,
5200 J^(chr_translate:final_data(J)),
5201 K^L^M^(chr_translate:expand_data(K, L, M)),
5202 N),
5203 I=H,
5204 N=entry(O, P, _, _, _, _),
5205 reverse(O, E),
5206 reverse(P, F).
5207final_data(A) :-
5208 A=entry(_, _, _, _, [], _).
5209expand_data(A, B, C) :-
5210 A=entry(D, E, F, G, H, I),
5211 select2(J, K, G, H, L, M),
5212 term_variables([J|F], N),
5213 B=entry([J|D], [K|E], N, L, M, I),
5214 order_score(J, K, F, L, I, C).
5215order_score(A, B, C, D, E, F) :-
5216 functor(A, G, H),
5217 get_store_type(G/H, I),
5218 order_score(I, A, B, C, D, E, 99999, F).
5219order_score(default, A, _, B, C, _, D, E) :-
5220 term_variables(A, F),
5221 term_variables(C, G),
5222 ground_vars([A], H),
5223 list_difference_eq(F, H, I),
5224 order_score_vars(I, B, G, J),
5225 E is min(D, J).
5226order_score(multi_inthash(A), B, _, C, _, _, D, E) :-
5227 ( D=<100
5228 -> E=D
5229 ; order_score_indexes(A, B, C, E)
5230 ).
5231order_score(multi_hash(A), B, _, C, _, _, D, E) :-
5232 ( D=<100
5233 -> E=D
5234 ; order_score_indexes(A, B, C, E)
5235 ).
5236order_score(global_ground, A, _, B, C, _, D, E) :-
5237 term_variables(A, F),
5238 term_variables(C, G),
5239 order_score_vars(F, B, G, H),
5240 I is H*200,
5241 E is min(D, I).
5242order_score(var_assoc_store(_, _), _, _, _, _, _, _, 1).
5243order_score(global_singleton, _, _, _, _, _, _, A) :-
5244 A=1.
5245order_score(multi_store(A), B, C, D, E, F, G, H) :-
5246 multi_order_score(A,
5247 B,
5248 C,
5249 D,
5250 E,
5251 F,
5252 G,
5253 H).
5254multi_order_score([], _, _, _, _, _, A, A).
5255multi_order_score([A|B], C, D, E, F, G, H, I) :-
5256 ( order_score(A,
5257 C,
5258 D,
5259 E,
5260 F,
5261 G,
5262 H,
5263 J)
5264 -> true
5265 ; J=H
5266 ),
5267 multi_order_score(B,
5268 C,
5269 D,
5270 E,
5271 F,
5272 G,
5273 J,
5274 I).
5275order_score(identifier_store(A), B, _, C, _, _, D, E) :-
5276 arg(A, B, F),
5277 memberchk_eq(F, C),
5278 E is min(D, 10).
5279order_score(type_indexed_identifier_store(A, _), B, _, C, _, _, D, E) :-
5280 arg(A, B, F),
5281 memberchk_eq(F, C),
5282 E is min(D, 10).
5283order_score_indexes(A, B, C, D) :-
5284 copy_term_nat(B+C, E+F),
5285 numbervars(F, 0, _),
5286 order_score_indexes(A, E, D).
5287order_score_indexes([A|B], C, D) :-
5288 args(A, C, E),
5289 ( maplist(ground, E)
5290 -> D=100
5291 ; order_score_indexes(B, C, D)
5292 ).
5293memberchk_eq_flip(A, B) :-
5294 memberchk_eq(B, A).
5295order_score_vars(A, B, C, D) :-
5296 order_score_count_vars(A, B, C, E-F-G),
5297 ( E-F-G==0-0-0
5298 -> D=0
5299 ; E>0
5300 -> D is max(10-E, 0)
5301 ; F>0
5302 -> D is max(10-F, 1)*100
5303 ; D is max(10-G, 1)*1000
5304 ).
5305order_score_count_vars([], _, _, 0-0-0).
5306order_score_count_vars([A|B], C, D, E-F-G) :-
5307 order_score_count_vars(B, C, D, H-I-J),
5308 ( memberchk_eq(A, C)
5309 -> E is H+1,
5310 F=I,
5311 G=J
5312 ; memberchk_eq(A, D)
5313 -> F is I+1,
5314 E=H,
5315 G=J
5316 ; G is J+1,
5317 E=H,
5318 F=I
5319 ).
5320create_get_mutable_ref(A, B, C) :-
5321 C=(B=mutable(A)).
5322create_get_mutable(A, B, C) :-
5323 B=mutable(A),
5324 C=true.
5325gen_var(_).
5326gen_vars(A, B) :-
5327 length(B, A).
5328ast_head_info1(A, B, C, D, E) :-
5329 A=chr_constraint(_/F, G, _),
5330 vars_susp(F, B, C, D),
5331 pairup(G, B, E).
5332head_info1(A, _/B, C, D, E, F) :-
5333 vars_susp(B, C, D, E),
5334 A=..[_|G],
5335 pairup(G, C, F).
5336head_info(A, B, C, D, E, F) :-
5337 vars_susp(B, C, D, E),
5338 A=..[_|G],
5339 pairup(G, C, F).
5340inc_id([A|B], [C|B]) :-
5341 C is A+1.
5342dec_id([A|B], [C|B]) :-
5343 C is A-1.
5344extend_id(A, [0|A]).
5345next_id([_, A|B], [C|B]) :-
5346 C is A+1.
5347build_head(A/B, C, D, E) :-
5348 build_head(A, B, C, D, E).
5349build_head(A, B, C, D, E) :-
5350 buildName(A, B, C, F),
5351 ( ( chr_pp_flag(debugable, on)
5352 ; is_stored(A/B),
5353 ( has_active_occurrence(A/B)
5354 ; chr_pp_flag(late_allocation, off)
5355 ),
5356 ( may_trigger(A/B)
5357 ; get_allocation_occurrence(A/B, G),
5358 get_max_occurrence(A/B, H),
5359 H>=G
5360 )
5361 )
5362 -> E=..[F|D]
5363 ; init(D, I),
5364 E=..[F|I]
5365 ).
5366buildName(A, B, C, D) :-
5367 ( ( chr_pp_flag(debugable, on)
5368 ; once(( is_stored(A/B),
5369 ( has_active_occurrence(A/B)
5370 ; chr_pp_flag(late_allocation, off)
5371 ),
5372 ( may_trigger(A/B)
5373 ; get_allocation_occurrence(A/B, E),
5374 get_max_occurrence(A/B, F),
5375 F>=E
5376 )
5377 ; C\=[0]
5378 ))
5379 )
5380 -> atom_concat(A, '___', G),
5381 atomic_concat(G, B, H),
5382 buildName_(C, H, D)
5383 ; D=A
5384 ).
5385buildName_([], A, A).
5386buildName_([A|B], C, D) :-
5387 buildName_(B, C, E),
5388 atom_concat(E, '__', F),
5389 atomic_concat(F, A, D).
5390vars_susp(A, B, C, D) :-
5391 length(B, A),
5392 append(B, [C], D).
5393or_pattern(A, B) :-
5394 C is A-1,
5395 B is 1<<C.
5396and_pattern(A, B) :-
5397 C is A-1,
5398 D is 1<<C,
5399 B is -1*(D+1).
5400make_name(A, B/C, D) :-
5401 atom_concat_list([A, B, '___', C], D).
5402make_attr(A, B, C, D) :-
5403 length(C, A),
5404 D=..[v, B|C].
5405get_all_suspensions2(A, B, C) :-
5406 chr_pp_flag(dynattr, off),
5407 !,
5408 make_attr(A, _, C, B).
5409get_all_suspensions2(A, B, C, D) :-
5410 length(D, A),
5411 C='chr all_suspensions'(D, 1, B).
5412normalize_attr(A, B, C) :-
5413 B='chr normalize_attr'(A, C).
5414get_suspensions(A, B, C, C=D, E) :-
5415 chr_pp_flag(dynattr, off),
5416 !,
5417 make_attr(A, _, F, D),
5418 nth1(B, F, E).
5419get_suspensions(_, A, B, C, D) :-
5420 C=(memberchk(A-D, B)->true;D=[]).
5421singleton_attr(A, B, C, D) :-
5422 chr_pp_flag(dynattr, off),
5423 !,
5424 or_pattern(C, E),
5425 make_attr(A, E, F, D),
5426 nth1(C, F, [B], G),
5427 set_elems(G, []).
5428singleton_attr(_, A, B, C) :-
5429 C=[B-[A]].
5430add_attr(A, B, C, D, E, F) :-
5431 chr_pp_flag(dynattr, off),
5432 !,
5433 make_attr(A, G, H, I),
5434 or_pattern(C, J),
5435 nth1(C, H, K),
5436 substitute_eq(K, H, [B|K], L),
5437 make_attr(A, G, L, M),
5438 substitute_eq(K, H, [B], N),
5439 make_attr(A, O, N, P),
5440 E=(D=I, (G/\J=:=J->F=M;O is G\/J, F=P)),
5441 !.
5442add_attr(_, A, B, C, D, E) :-
5443 D=('chr select'(C, B-F, G)->E=[B-[A|F]|G];E=[B-[A]|C]).
5444rem_attr(A, B, C, D, E, F) :-
5445 chr_pp_flag(dynattr, off),
5446 chr_pp_flag(experiment, off),
5447 !,
5448 or_pattern(D, G),
5449 and_pattern(D, H),
5450 make_attr(A, I, J, K),
5451 nth1(D, J, L),
5452 substitute_eq(L, J, [], M),
5453 make_attr(A, N, M, O),
5454 substitute_eq(L, J, P, Q),
5455 make_attr(A, I, Q, R),
5456 get_target_module(S),
5457 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)),
5458 !.
5459rem_attr(_, A, B, C, D, E) :-
5460 chr_pp_flag(dynattr, off),
5461 chr_pp_flag(experiment, on),
5462 !,
5463 or_pattern(C, F),
5464 and_pattern(C, G),
5465 H is C+1,
5466 get_target_module(I),
5467 E=(arg(1, D, J), (J/\F=:=F->arg(H, D, K), 'chr sbag_del_element'(K, B, L), (L==[]->M is J/\G, (M==0->del_attr(A, I);setarg(1, D, M), setarg(H, D, L));setarg(H, D, L));true)),
5468 !.
5469rem_attr(_, A, B, C, D, E) :-
5470 get_target_module(F),
5471 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).
5472merge_attributes(A, B, C, D, E) :-
5473 chr_pp_flag(dynattr, off),
5474 !,
5475 make_attr(A, F, G, H),
5476 merge_attributes2(A, F, G, C, I, E),
5477 D=(B=H, I).
5478merge_attributes(_, A, B, C, D) :-
5479 C=(sort(A, E), sort(B, F), 'chr new_merge_attributes'(E, F, D)).
5480merge_attributes2(A, B, C, D, E, F) :-
5481 make_attr(A, G, H, I),
5482 bagof(J,
5483 K^L^M^N^(member2(C, H, K-L), J=(sort(L, M), 'chr merge_attributes'(K, M, N))),
5484 O),
5485 list2conj(O, P),
5486 bagof(Q,
5487 R^S^T^member((R, 'chr merge_attributes'(S, T, Q)), O),
5488 U),
5489 make_attr(A, V, U, F),
5490 E=(D=I, P, V is B\/G).
5491lookup_passive_head(A, B, C, D, E) :-
5492 functor(A, F, G),
5493 get_store_type(F/G, H),
5494 lookup_passive_head(H, A, B, C, [], D, E).
5495lookup_passive_head(A, B, C, D, E, F) :-
5496 functor(A, G, H),
5497 get_store_type(G/H, I),
5498 lookup_passive_head(I,
5499 A,
5500 B,
5501 C,
5502 D,
5503 E,
5504 F).
5505lookup_passive_head(default, A, B, C, _, D, E) :-
5506 functor(A, F, G),
5507 passive_head_via(A, B, C, D, E),
5508 update_store_type(F/G, default).
5509lookup_passive_head(multi_inthash(A), B, _, C, D, E, F) :-
5510 hash_lookup_passive_head(inthash,
5511 A,
5512 B,
5513 C,
5514 D,
5515 E,
5516 F,
5517 _).
5518lookup_passive_head(multi_hash(A), B, _, C, D, E, F) :-
5519 hash_lookup_passive_head(hash,
5520 A,
5521 B,
5522 C,
5523 D,
5524 E,
5525 F,
5526 _).
5527lookup_passive_head(global_ground, A, _, _, _, B, C) :-
5528 functor(A, D, E),
5529 global_ground_store_name(D/E, F),
5530 make_get_store_goal(F, C, B),
5531 update_store_type(D/E, global_ground).
5532lookup_passive_head(var_assoc_store(A, B), C, _, D, _, E, F) :-
5533 arg(A, C, G),
5534 arg(B, C, H),
5535 translate([G, H], D, [I, J]),
5536 get_target_module(K),
5537 E=(get_attr(I, K, L), lookup_assoc_store(L, J, F)).
5538lookup_passive_head(global_singleton, A, _, _, _, B, C) :-
5539 functor(A, D, E),
5540 global_singleton_store_name(D/E, F),
5541 make_get_store_goal(F, G, H),
5542 B=(H, G\==[], C=[G]),
5543 update_store_type(D/E, global_singleton).
5544lookup_passive_head(multi_store(A), B, C, D, E, F, G) :-
5545 once(( member(H, A),
5546 lookup_passive_head(H,
5547 B,
5548 C,
5549 D,
5550 E,
5551 F,
5552 G)
5553 )).
5554lookup_passive_head(identifier_store(A), B, _, C, _, D, E) :-
5555 functor(B, F, G),
5556 arg(A, B, H),
5557 translate([H], C, [I]),
5558 delay_phase_end(validate_store_type_assumptions,
5559 identifier_lookup(F/G,
5560 A,
5561 E,
5562 I,
5563 D)),
5564 update_store_type(F/G, identifier_store(A)),
5565 get_identifier_index(F/G, A, _).
5566lookup_passive_head(type_indexed_identifier_store(A, B), C, _, D, _, E, F) :-
5567 functor(C, G, H),
5568 arg(A, C, I),
5569 ( var(I)
5570 -> translate([I], D, [J]),
5571 E=K
5572 ; ground(I),
5573 I='$chr_identifier_match'(L, _)
5574 -> lookup_only_identifier_atom(B, L, J, M),
5575 E=(M, K)
5576 ),
5577 delay_phase_end(validate_store_type_assumptions,
5578 type_indexed_identifier_lookup(G/H,
5579 A,
5580 B,
5581 F,
5582 J,
5583 K)),
5584 update_store_type(G/H,
5585 type_indexed_identifier_store(A, B)),
5586 get_type_indexed_identifier_index(B,
5587 G/H,
5588 A,
5589 _).
5590identifier_lookup(A, B, C, D, E) :-
5591 get_identifier_size(F),
5592 functor(G, struct, F),
5593 get_identifier_index(A, B, H),
5594 arg(H, G, C),
5595 E=(D=G).
5596type_indexed_identifier_lookup(A, B, C, D, E, F) :-
5597 type_indexed_identifier_structure(C, G),
5598 get_type_indexed_identifier_index(C, A, B, H),
5599 arg(H, G, D),
5600 F=(E=G).
5601hash_lookup_passive_head(A, B, C, D, E, F, G, H) :-
5602 pick_hash_index(B, C, D, H, I, J),
5603 ( J=[K]
5604 -> true
5605 ; K=..[k|J]
5606 ),
5607 functor(C, L, M),
5608 multi_hash_lookup_goal(L/M,
5609 A,
5610 H,
5611 K,
5612 G,
5613 N),
5614 check_ground(E, I, O),
5615 my_term_copy(O, D, P),
5616 F=(P, N),
5617 ( A==inthash
5618 -> update_store_type(L/M, multi_inthash([H]))
5619 ; update_store_type(L/M, multi_hash([H]))
5620 ).
5621pick_hash_index(A, B, C, D, E, F) :-
5622 member(D, A),
5623 args(D, B, E),
5624 key_in_scope(E, C, F),
5625 !.
5626key_in_scope([], _, []).
5627key_in_scope([A|B], C, [D|E]) :-
5628 term_variables(A, F),
5629 translate(F, C, G),
5630 copy_term(A/F, D/G),
5631 key_in_scope(B, C, E).
5632existential_lookup(var_assoc_store(A, B), C, D, E, F, G, H, I, J, J) :-
5633 !,
5634 lookup_passive_head(var_assoc_store(A, B),
5635 C,
5636 D,
5637 E,
5638 F,
5639 K,
5640 L),
5641 sbag_member_call(I, L, M),
5642 functor(C, N, O),
5643 delay_phase_end(validate_store_type_assumptions,
5644 (static_suspension_term(N/O, G), get_static_suspension_field(N/O, G, state, active, P))),
5645 H=(K, M, I=G, P).
5646existential_lookup(global_singleton, A, _, _, _, B, C, D, E, E) :-
5647 !,
5648 functor(A, F, G),
5649 global_singleton_store_name(F/G, H),
5650 make_get_store_goal(H, D, I),
5651 C=(I, D\==[], D=B),
5652 update_store_type(F/G, global_singleton).
5653existential_lookup(multi_store(A), B, C, D, E, F, G, H, I, J) :-
5654 !,
5655 once(( member(K, A),
5656 existential_lookup(K,
5657 B,
5658 C,
5659 D,
5660 E,
5661 F,
5662 G,
5663 H,
5664 I,
5665 J)
5666 )).
5667existential_lookup(multi_inthash(A), B, _, C, D, E, F, G, H, I) :-
5668 !,
5669 existential_hash_lookup(inthash,
5670 A,
5671 B,
5672 C,
5673 D,
5674 E,
5675 F,
5676 G,
5677 H,
5678 I).
5679existential_lookup(multi_hash(A), B, _, C, D, E, F, G, H, I) :-
5680 !,
5681 existential_hash_lookup(hash,
5682 A,
5683 B,
5684 C,
5685 D,
5686 E,
5687 F,
5688 G,
5689 H,
5690 I).
5691existential_lookup(identifier_store(A), B, C, D, E, F, G, H, I, J) :-
5692 !,
5693 lookup_passive_head(identifier_store(A),
5694 B,
5695 C,
5696 D,
5697 E,
5698 K,
5699 L),
5700 hash_index_filter(I, [A], J),
5701 functor(B, M, N),
5702 ( check_fd_lookup_condition(M, N, B, _)
5703 -> O=(L=[H])
5704 ; sbag_member_call(H, L, O)
5705 ),
5706 delay_phase_end(validate_store_type_assumptions,
5707 (static_suspension_term(M/N, F), get_static_suspension_field(M/N, F, state, active, P))),
5708 G=(K, O, H=F, P).
5709existential_lookup(type_indexed_identifier_store(A, B), C, D, E, F, G, H, I, J, K) :-
5710 !,
5711 lookup_passive_head(type_indexed_identifier_store(A, B),
5712 C,
5713 D,
5714 E,
5715 F,
5716 L,
5717 M),
5718 hash_index_filter(J, [A], K),
5719 functor(C, N, O),
5720 ( check_fd_lookup_condition(N, O, C, _)
5721 -> P=(M=[I])
5722 ; sbag_member_call(I, M, P)
5723 ),
5724 delay_phase_end(validate_store_type_assumptions,
5725 (static_suspension_term(N/O, G), get_static_suspension_field(N/O, G, state, active, Q))),
5726 H=(L, P, I=G, Q).
5727existential_lookup(A, B, C, D, E, F, G, H, I, I) :-
5728 lookup_passive_head(A,
5729 B,
5730 C,
5731 D,
5732 E,
5733 J,
5734 K),
5735 sbag_member_call(H, K, L),
5736 functor(B, M, N),
5737 delay_phase_end(validate_store_type_assumptions,
5738 (static_suspension_term(M/N, F), get_static_suspension_field(M/N, F, state, active, O))),
5739 G=(J, L, H=F, O).
5740existential_hash_lookup(A, B, C, D, E, F, G, H, I, J) :-
5741 hash_lookup_passive_head(A,
5742 B,
5743 C,
5744 D,
5745 E,
5746 K,
5747 L,
5748 M),
5749 hash_index_filter(I, M, J),
5750 functor(C, N, O),
5751 ( check_fd_lookup_condition(N, O, C, _)
5752 -> P=(L=[H])
5753 ; sbag_member_call(H, L, P)
5754 ),
5755 delay_phase_end(validate_store_type_assumptions,
5756 (static_suspension_term(N/O, F), get_static_suspension_field(N/O, F, state, active, Q))),
5757 G=(K, P, H=F, Q).
5758hash_index_filter(A, B, C) :-
5759 hash_index_filter(A, B, 1, C).
5760hash_index_filter([], _, _, []).
5761hash_index_filter([A|B], C, D, E) :-
5762 ( C=[F|G]
5763 -> H is D+1,
5764 ( F>D
5765 -> E=[A|I],
5766 hash_index_filter(B, [F|G], H, I)
5767 ; F==D
5768 -> E=[silent(A)|I],
5769 hash_index_filter(B, G, H, I)
5770 )
5771 ; E=[A|B]
5772 ).
5773assume_constraint_stores([]).
5774assume_constraint_stores([A|B]) :-
5775 ( chr_pp_flag(debugable, off),
5776 ( only_ground_indexed_arguments(A)
5777 ; chr_pp_flag(mixed_stores, on)
5778 ),
5779 is_stored(A),
5780 get_store_type(A, default)
5781 -> get_indexed_arguments(A, C),
5782 get_constraint_mode(A, D),
5783 aggregate_all(bag(E)-count,
5784 ( member(E, C),
5785 nth1(E, D, +)
5786 ),
5787 F-G),
5788 ( G>10
5789 -> findall([E], member(E, F), H)
5790 ; findall(E,
5791 ( sublist(E, F),
5792 E\==[]
5793 ),
5794 I),
5795 predsort(longer_list, I, H)
5796 ),
5797 ( get_functional_dependency(A, 1, J, K),
5798 all_distinct_var_args(J),
5799 K==[]
5800 -> assumed_store_type(A, global_singleton)
5801 ; ( only_ground_indexed_arguments(A)
5802 ; G>0
5803 )
5804 -> get_constraint_type_det(A, L),
5805 partition_indexes(H,
5806 L,
5807 M,
5808 N,
5809 O,
5810 P),
5811 ( N=[]
5812 -> Q=R
5813 ; Q=[multi_inthash(N)|R]
5814 ),
5815 ( M=[]
5816 -> R=S
5817 ; R=[multi_hash(M)|S]
5818 ),
5819 ( O=[]
5820 -> S=T
5821 ; maplist(wrap_in_functor(identifier_store), O, U),
5822 append(U, T, S)
5823 ),
5824 append(P, V, T),
5825 ( only_ground_indexed_arguments(A)
5826 -> V=[global_ground]
5827 ; V=[default]
5828 ),
5829 assumed_store_type(A, multi_store(Q))
5830 ; true
5831 )
5832 ; true
5833 ),
5834 assume_constraint_stores(B).
5835partition_indexes([], _, [], [], [], []).
5836partition_indexes([A|B], C, D, E, F, G) :-
5837 ( A=[H],
5838 nth1(H, C, I),
5839 unalias_type(I, J),
5840 J==chr_identifier
5841 -> F=[H|K],
5842 E=L,
5843 D=M,
5844 G=N
5845 ; A=[H],
5846 nth1(H, C, I),
5847 unalias_type(I, J),
5848 nonvar(J),
5849 J=chr_identifier(O)
5850 -> G=[type_indexed_identifier_store(H, O)|N],
5851 F=K,
5852 E=L,
5853 D=M
5854 ; A=[H],
5855 nth1(H, C, I),
5856 unalias_type(I, J),
5857 J==dense_int
5858 -> E=[A|L],
5859 D=M,
5860 F=K,
5861 G=N
5862 ; member(H, A),
5863 nth1(H, C, I),
5864 unalias_type(I, J),
5865 nonvar(J),
5866 J=chr_identifier(_)
5867 -> E=L,
5868 D=M,
5869 F=K,
5870 G=N
5871 ; E=L,
5872 D=[A|M],
5873 F=K,
5874 G=N
5875 ),
5876 partition_indexes(B, C, M, L, K, N).
5877longer_list(A, B, C) :-
5878 length(B, D),
5879 length(C, E),
5880 compare(F, E, D),
5881 ( F==(=)
5882 -> compare(A, B, C)
5883 ; A=F
5884 ).
5885all_distinct_var_args(A) :-
5886 copy_term_nat(A, B),
5887 functor(A, C, D),
5888 functor(E, C, D),
5889 E=@=B.
5890get_indexed_arguments(A, B) :-
5891 A=_/C,
5892 get_indexed_arguments(1, C, A, B).
5893get_indexed_arguments(A, B, C, D) :-
5894 ( A>B
5895 -> D=[]
5896 ; ( is_indexed_argument(C, A)
5897 -> D=[A|E]
5898 ; D=E
5899 ),
5900 F is A+1,
5901 get_indexed_arguments(F, B, C, E)
5902 ).
5903validate_store_type_assumptions([]).
5904validate_store_type_assumptions([A|B]) :-
5905 validate_store_type_assumption(A),
5906 validate_store_type_assumptions(B).
5907universal_search_iterator_end([A|B], C, D, E/F, G, H, I, J) :-
5908 D=rule(_, _, K, L),
5909 gen_var_susp_list_for_b(B,
5910 [A, C, K, L],
5911 _,
5912 M,
5913 N,
5914 _,
5915 O),
5916 universal_search_iterator_failure_vars(B,
5917 H,
5918 M,
5919 N,
5920 O,
5921 P,
5922 Q),
5923 flatten(M, R),
5924 S=[[]|R],
5925 build_head(E, F, [G|H], S, T),
5926 ( Q=[_]
5927 -> get_success_continuation_code_id(E/F, G, U),
5928 V=[U]
5929 ; V=[G|Q]
5930 ),
5931 build_head(E, F, V, P, W),
5932 X=(T:-W),
5933 add_dummy_location(X, Y),
5934 I=[Y|J].
5935universal_search_iterator_failure_vars(A, B, C, D, E, F, G) :-
5936 ( B=[0|_]
5937 -> next_id(B, G),
5938 F=D
5939 ; C=[_|H],
5940 dec_id(B, I),
5941 ( A=[J|K],
5942 functor(J, L, M),
5943 check_fd_lookup_condition(L, M, J, K)
5944 -> E=[_|N],
5945 universal_search_iterator_failure_vars(K,
5946 I,
5947 H,
5948 D,
5949 N,
5950 F,
5951 G)
5952 ; G=I,
5953 flatten(H, O),
5954 E=[P|_],
5955 F=[P|O]
5956 )
5957 ).
5958universal_search_iterator([A|B], [C|D], E, F/G, H, I, J, K) :-
5959 E=rule(_, _, L, M),
5960 gen_var_susp_list_for_b(D,
5961 [C, A, B, L, M],
5962 N,
5963 O,
5964 P,
5965 Q,
5966 R),
5967 init(Q, S),
5968 flatten(O, T),
5969 gen_var(U),
5970 functor(C, V, W),
5971 gen_vars(W, X),
5972 head_info(C, W, X, Y, _, Z),
5973 get_constraint_mode(V/W, A1),
5974 head_arg_matches(Z, A1, N, B1, C1),
5975 delay_phase_end(validate_store_type_assumptions,
5976 (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))),
5977 different_from_other_susps(C, Y, D, S, F1),
5978 G1=(Y=D1, E1, F1, B1),
5979 add_heads_ground_variables([C|D], [], H1),
5980 lookup_passive_head(A,
5981 [C|D],
5982 C1,
5983 H1,
5984 I1,
5985 J1),
5986 inc_id(I, K1),
5987 L1=[[Y|U]|T],
5988 build_head(F, G, [H|I], L1, M1),
5989 passive_delegate_variables(C,
5990 D,
5991 [A, B, L, M],
5992 C1,
5993 N1),
5994 append([J1|N1], [Y, U|T], O1),
5995 build_head(F, G, [H|K1], O1, P1),
5996 ( check_fd_lookup_condition(V, W, C, D)
5997 -> universal_search_iterator_failure_vars(D,
5998 I,
5999 O,
6000 P,
6001 R,
6002 Q1,
6003 R1),
6004 S1=Q1
6005 ; S1=[U|T],
6006 R1=I
6007 ),
6008 ( R1=[_]
6009 -> T1=R1
6010 ; T1=[H|R1]
6011 ),
6012 build_head(F, G, T1, S1, U1),
6013 V1=(M1:-G1, I1->P1;U1),
6014 add_dummy_location(V1, W1),
6015 J=[W1|K].
6016ai_observation_analysis(A) :-
6017 ( chr_pp_flag(ai_observation_analysis, on),
6018 get_target_module(_),
6019 '$chr_compiled_with_version'(3)
6020 -> list_to_ord_set(A, B),
6021 abstract_constraints(B),
6022 ai_observation_schedule_initial_calls(B, B),
6023 ai_observation_gather_results
6024 ; true
6025 ).
6026ai_observation_schedule_initial_calls([], _).
6027ai_observation_schedule_initial_calls([A|B], C) :-
6028 ai_observation_schedule_initial_call(A, C),
6029 ai_observation_schedule_initial_calls(B, C).
6030ai_observation_schedule_initial_call(A, _) :-
6031 ai_observation_top(A, B),
6032 initial_call_pattern(B).
6033ai_observation_schedule_new_calls([], _).
6034ai_observation_schedule_new_calls([A|B], C) :-
6035 C=odom(_, D),
6036 initial_call_pattern(odom(A, D)),
6037 ai_observation_schedule_new_calls(B, C).
6038ai_observation_lub(odom(A, B), odom(A, C), odom(A, D)) :-
6039 ord_intersection(B, C, D).
6040ai_observation_bot(A, B, odom(A, B)).
6041ai_observation_top(A, odom(A, B)) :-
6042 ord_empty(B).
6043ai_observation_leq(odom(A, B), odom(A, C)) :-
6044 ord_subset(C, B).
6045ai_observation_observe_set(A, B, C) :-
6046 ord_subtract(A, B, C).
6047ai_observation_abstract_constraint(A, B, C) :-
6048 functor(A, D, E),
6049 C=D/E,
6050 memberchk(C, B).
6051ai_observation_abstract_constraints(A, B, C) :-
6052 findall(D,
6053 ( member(E, A),
6054 ai_observation_abstract_constraint(E, B, D)
6055 ),
6056 C).
6057ai_observation_abstract_goal_(A, B, C, D, E, F) :-
6058 term_variables((A, B, C), G),
6059 append(A, B, H),
6060 ground_vars(H, I),
6061 list_difference_eq(G, I, J),
6062 ai_observation_abstract_goal(D, E, F, [], J),
6063 !.
6064ground_vars([], []).
6065ground_vars([A|B], C) :-
6066 functor(A, D, E),
6067 get_constraint_mode(D/E, F),
6068 head_info(A, E, _, _, _, G),
6069 head_arg_matches(G, F, [], _, _, [], H),
6070 ground_vars(B, I),
6071 append(H, I, C).
6072ai_observation_abstract_goal((A, B), C, D, E, F) :-
6073 !,
6074 ai_observation_abstract_goal(A, C, D, G, F),
6075 ai_observation_abstract_goal(B, C, G, E, F).
6076ai_observation_abstract_goal((A;B), C, [(D;E)|F], F, G) :-
6077 !,
6078 ai_observation_abstract_goal(A, C, D, [], G),
6079 ai_observation_abstract_goal(B, C, E, [], G).
6080ai_observation_abstract_goal((A->B), C, D, E, F) :-
6081 !,
6082 ai_observation_abstract_goal(A, C, D, G, F),
6083 ai_observation_abstract_goal(B, C, G, E, F).
6084ai_observation_abstract_goal(A, B, [C|D], D, _) :-
6085 ai_observation_abstract_constraint(A, B, C),
6086 !.
6087ai_observation_abstract_goal(true, _, A, A, _) :-
6088 !.
6089ai_observation_abstract_goal(writeln(_), _, A, A, _) :-
6090 !.
6091ai_observation_abstract_goal(A, _, B, B, C) :-
6092 builtin_binds_b(A, D),
6093 intersect_eq(D, C, []),
6094 !.
6095ai_observation_abstract_goal(_, _, [A|B], B, _) :-
6096 A=builtin.
6097ai_observation_is_observed(odom(_, A), B) :-
6098 \+ ord_memberchk(B, A).
6099unconditional_occurrence(A, B) :-
6100 get_occurrence(A, B, C, _),
6101 get_rule(C, D),
6102 D=pragma(E, _, _, _, _),
6103 copy_term_nat(E, F),
6104 F=rule(G, H, I, _),
6105 guard_entailment:entails_guard([chr_pp_headvariables(G, H)], I),
6106 once(( G=[J],
6107 H==[]
6108 ; H=[J],
6109 G==[],
6110 \+ may_trigger(A)
6111 )),
6112 all_distinct_var_args(J).
6113partial_wake_args([], _, _, _).
6114partial_wake_args([A|B], [C|D], E, F) :-
6115 ( C\==(+)
6116 -> ( nonvar(A)
6117 -> no_partial_wake(F)
6118 ; memberchk_eq(A, E)
6119 -> no_partial_wake(F)
6120 ; true
6121 )
6122 ; true
6123 ),
6124 partial_wake_args(B, D, E, F).
6125generate_show_constraint(A, B, C, D) :-
6126 ( chr_pp_flag(show, on)
6127 -> B=['$show'/0|A],
6128 generate_show_rules(A, D, [E|C]),
6129 inc_rule_count(F),
6130 E=pragma(rule(['$show'], [], true, true), ids([0], []), [], no, F)
6131 ; B=A,
6132 D=C
6133 ).
6134generate_show_rules([], A, A).
6135generate_show_rules([A/B|C], [D|E], F) :-
6136 functor(G, A, B),
6137 inc_rule_count(H),
6138 D=pragma(rule([], ['$show', G], true, writeln(G)), ids([], [0, 1]), [passive(1)], no, H),
6139 generate_show_rules(C, E, F).
6140static_suspension_term(A/B, C) :-
6141 suspension_term_base(A/B, D),
6142 E is D+B,
6143 functor(C, suspension, E).
6144has_suspension_field(A, B) :-
6145 suspension_term_base_fields(A, C),
6146 memberchk(B, C).
6147suspension_term_base(A, B) :-
6148 suspension_term_base_fields(A, C),
6149 length(C, B).
6150suspension_term_base_fields(A, B) :-
6151 ( chr_pp_flag(debugable, on)
6152 -> B=[id, state, history, generation, continuation, functor]
6153 ; ( uses_history(A)
6154 -> B=[id, state, history|C]
6155 ; only_ground_indexed_arguments(A),
6156 get_functional_dependency(A, 1, _, _)
6157 -> B=[state|C]
6158 ; B=[id, state|C]
6159 ),
6160 ( only_ground_indexed_arguments(A)
6161 -> get_store_type(A, D),
6162 basic_store_types(D, E),
6163 ( memberchk(global_ground, E)
6164 -> C=[global_list_prev|F]
6165 ; C=F
6166 ),
6167 ( chr_pp_flag(ht_removal, on)
6168 -> ht_prev_fields(E, F)
6169 ; F=[]
6170 )
6171 ; may_trigger(A)
6172 -> ( uses_field(A, generation)
6173 -> C=[generation, global_list_prev|F]
6174 ; C=[global_list_prev|F]
6175 ),
6176 ( chr_pp_flag(mixed_stores, on),
6177 chr_pp_flag(ht_removal, on)
6178 -> get_store_type(A, D),
6179 basic_store_types(D, E),
6180 ht_prev_fields(E, F)
6181 ; F=[]
6182 )
6183 ; C=[global_list_prev|F],
6184 ( chr_pp_flag(mixed_stores, on),
6185 chr_pp_flag(ht_removal, on)
6186 -> get_store_type(A, D),
6187 basic_store_types(D, E),
6188 ht_prev_fields(E, F)
6189 ; F=[]
6190 )
6191 )
6192 ).
6193ht_prev_fields(A, B) :-
6194 ht_prev_fields_int(A, C),
6195 append(C, B).
6196ht_prev_fields_int([], []).
6197ht_prev_fields_int([A|B], C) :-
6198 ( A=multi_hash(D)
6199 -> maplist(ht_prev_field, D, E),
6200 C=[E|F]
6201 ; C=F
6202 ),
6203 ht_prev_fields_int(B, F).
6204ht_prev_field(A, B) :-
6205 atomic_list_concat(['multi_hash_prev-'|A], B).
6206get_static_suspension_term_field(A, B, C, D) :-
6207 suspension_term_base_fields(B, E),
6208 nth1(F, E, A),
6209 !,
6210 arg(F, C, D).
6211get_static_suspension_term_field(arguments, A, B, C) :-
6212 !,
6213 suspension_term_base(A, D),
6214 B=..[_|E],
6215 drop(D, E, C).
6216get_static_suspension_term_field(A, B, _, _) :-
6217 chr_error(internal,
6218 'Trying to obtain field ~w of ~w, wich does not have it!',
6219 [A, B]).
6220get_dynamic_suspension_term_field(A, B, C, D, E) :-
6221 suspension_term_base_fields(B, F),
6222 nth1(G, F, A),
6223 !,
6224 E=arg(G, C, D).
6225get_dynamic_suspension_term_field(arguments, A, B, C, D) :-
6226 !,
6227 static_suspension_term(A, E),
6228 get_static_suspension_term_field(arguments, A, E, C),
6229 D=(B=E).
6230get_dynamic_suspension_term_field(argument(A), B, C, D, E) :-
6231 !,
6232 suspension_term_base(B, F),
6233 G is A+F,
6234 E=arg(G, C, D).
6235get_dynamic_suspension_term_field(A, B, _, _, _) :-
6236 chr_error(internal,
6237 'Dynamic goal to get ~w of ~w, which does not have this field!',
6238 [A, B]).
6239set_dynamic_suspension_term_field(A, B, C, D, E) :-
6240 suspension_term_base_fields(B, F),
6241 nth1(G, F, A),
6242 !,
6243 E=setarg(G, C, D).
6244set_dynamic_suspension_term_field(A, B, _, _, _) :-
6245 chr_error(internal,
6246 'Dynamic goal to set ~w of ~w, which does not have this field!',
6247 [A, B]).
6248basic_store_types(multi_store(A), A) :-
6249 !.
6250basic_store_types(A, [A]).
6251generate_never_stored_rules(A, B) :-
6252 ( chr_pp_flag(declare_stored_constraints, on)
6253 -> never_stored_rules(A, B)
6254 ; B=[]
6255 ).
6256check_storedness_assertions(A) :-
6257 ( chr_pp_flag(storage_analysis, on),
6258 chr_pp_flag(declare_stored_constraints, on)
6259 -> forall(B, A, check_storedness_assertion(B))
6260 ; true
6261 ).
6262continuation_analysis(A) :-
6263 maplist(analyse_continuations, A).
6264analyse_continuations(A) :-
6265 continuation_analysis(A, 1),
6266 get_max_occurrence(A, B),
6267 C is B+1,
6268 bulk_propagation(A, 1, C),
6269 set_occurrence_code_id(A, 1, 0).
6270continuation_analysis(A, B) :-
6271 get_max_occurrence(A, C),
6272 ( B>C
6273 -> true
6274 ; B==C
6275 -> D is B+1,
6276 continuation_occurrence(A, B, D)
6277 ; constraint_continuation(A, B, C, D),
6278 continuation_occurrence(A, B, D),
6279 E is B+1,
6280 continuation_analysis(A, E)
6281 ).
6282constraint_continuation(A, B, C, D) :-
6283 ( get_occurrence_head(A, B, E)
6284 -> F is B+1,
6285 ( between(F, C, D),
6286 get_occurrence_head(A, D, G),
6287 unifiable(E, G, _)
6288 -> true
6289 ; D is C+1
6290 )
6291 ; D=C
6292 ).
6293get_occurrence_head(A, B, C) :-
6294 get_occurrence(A, B, D, E),
6295 \+ is_passive(D, E),
6296 get_rule(D, F),
6297 F=pragma(rule(G, H, _, _), ids(I, J), _, _, _),
6298 ( select2(E, C, I, G, _, _)
6299 -> true
6300 ; select2(E, C, J, H, _, _)
6301 ).
6302get_success_continuation_code_id(A, B, C) :-
6303 get_success_continuation_occurrence(A, B, D),
6304 get_occurrence_code_id(A, D, C).
6305collect_constants(_, A, B, C) :-
6306 ( not_restarted,
6307 chr_pp_flag(experiment, on)
6308 -> ( chr_pp_flag(sss, on)
6309 -> D=[fep/4-[2, 3]-[[a, b]-fep1, [c, d]-fep2]-no],
6310 copy_term_nat(C, E),
6311 flatten_clauses(E, D, F),
6312 install_new_declarations_and_restart(F)
6313 ; maplist(collect_rule_constants(B), A),
6314 ( chr_pp_flag(verbose, on)
6315 -> print_chr_constants
6316 ; true
6317 ),
6318 ( chr_pp_flag(experiment, on)
6319 -> flattening_dictionary(B, D),
6320 copy_term_nat(C, E),
6321 flatten_clauses(E, D, F),
6322 install_new_declarations_and_restart(F)
6323 ; true
6324 )
6325 )
6326 ; true
6327 ).
6328collect_rule_constants(A, B) :-
6329 B=ast_rule(C, _, _, D, _),
6330 collect_head_constants(C),
6331 collect_body_constants(D, A).
6332collect_head_constants(simplification(A)) :-
6333 maplist(collect_constraint_constants, A).
6334collect_head_constants(propagation(A)) :-
6335 maplist(collect_constraint_constants, A).
6336collect_head_constants(simpagation(A, B)) :-
6337 maplist(collect_constraint_constants, A),
6338 maplist(collect_constraint_constants, B).
6339collect_body_constants(A, B) :-
6340 maplist(collect_goal_constants(B), A).
6341collect_goal_constants(A, B) :-
6342 ( ast_nonvar(B)
6343 -> ast_symbol(B, C),
6344 ( memberchk(C, A)
6345 -> ast_term_to_term(B, D),
6346 ast_args(B, E),
6347 collect_constraint_constants(chr_constraint(C,
6348 E,
6349 D))
6350 ; C==(:)/2,
6351 ast_args(B, [F, G]),
6352 F=atomic(H),
6353 get_target_module(I),
6354 H==I,
6355 ast_nonvar(G),
6356 ast_symbol(G, J),
6357 memberchk(J, A)
6358 -> ast_term_to_term(G, K),
6359 ast_args(G, L),
6360 collect_constraint_constants(chr_constraint(J,
6361 L,
6362 K))
6363 ; true
6364 )
6365 ; true
6366 ).
6367collect_constraint_constants(A) :-
6368 A=chr_constraint(B, C, _),
6369 get_constraint_type_det(B, D),
6370 collect_all_arg_constants(C, D, []).
6371collect_all_arg_constants([], [], A) :-
6372 ( A\==[]
6373 -> add_chr_constants(A)
6374 ; true
6375 ).
6376collect_all_arg_constants([A|B], [C|D], E) :-
6377 unalias_type(C, F),
6378 ( is_chr_constants_type(F, G, _)
6379 -> ( ast_ground(A)
6380 -> ast_term_to_term(A, H),
6381 collect_all_arg_constants(B,
6382 D,
6383 [G-H|E])
6384 ; true
6385 )
6386 ; collect_all_arg_constants(B, D, E)
6387 ).
6388add_chr_constants(A) :-
6389 keysort(A, B),
6390 add_chr_constants_(B).
6391flattening_dictionary([], []).
6392flattening_dictionary([A|B], C) :-
6393 ( flattening_dictionary_entry(A, D)
6394 -> C=[D|E]
6395 ; C=E
6396 ),
6397 flattening_dictionary(B, E).
6398flattening_dictionary_entry(A, B) :-
6399 get_constraint_type_det(A, C),
6400 constant_positions(C, 1, D, E, F, G),
6401 ( D\==[]
6402 -> pairup(E, H, I),
6403 keysort(I, J),
6404 B=A-D-K-F,
6405 get_chr_constants(L),
6406 findall(M,
6407 ( member(J, L),
6408 flat_spec(A, D, H, M)
6409 ),
6410 K)
6411 ; G==yes
6412 -> enum_positions(C, 1, N, O, P),
6413 B=A-N-K-P,
6414 findall(M,
6415 ( cartesian_product(Q, O),
6416 flat_spec(A, N, Q, M)
6417 ),
6418 K)
6419 ).
6420constant_positions([], _, [], [], no, no).
6421constant_positions([A|B], C, D, E, F, G) :-
6422 unalias_type(A, H),
6423 ( is_chr_constants_type(H, I, J)
6424 -> compose_error_handlers(J, K, F),
6425 D=[C|L],
6426 E=[I|M],
6427 G=N
6428 ; ( is_chr_enum_type(H, _, _)
6429 -> G=yes
6430 ; G=N
6431 ),
6432 L=D,
6433 M=E,
6434 K=F
6435 ),
6436 O is C+1,
6437 constant_positions(B, O, L, M, K, N).
6438compose_error_handlers(no, A, A).
6439compose_error_handlers(yes(A), _, yes(A)).
6440enum_positions([], _, [], [], no).
6441enum_positions([A|B], C, D, E, F) :-
6442 unalias_type(A, G),
6443 ( is_chr_enum_type(G, H, I)
6444 -> compose_error_handlers(I, J, F),
6445 D=[C|K],
6446 E=[H|L]
6447 ; D=K,
6448 E=L,
6449 F=J
6450 ),
6451 M is C+1,
6452 enum_positions(B, M, K, L, J).
6453cartesian_product([], []).
6454cartesian_product([A|B], [C|D]) :-
6455 member(A, C),
6456 cartesian_product(B, D).
6457flat_spec(A/B, C, D, E) :-
6458 E=D-F,
6459 term_to_atom(D, G),
6460 term_to_atom(C, H),
6461 atom_concat_list(['$flat_', A, /, B, '___', H, '___', G],
6462 F).
6463restart_after_flattening(A, A) :-
6464 nb_setval('$chr_restart_after_flattening', started).
6465restart_after_flattening(_, A) :-
6466 nb_getval('$chr_restart_after_flattening', restart(A)),
6467 nb_setval('$chr_restart_after_flattening', restarted).
6468not_restarted :-
6469 nb_getval('$chr_restart_after_flattening', started).
6470install_new_declarations_and_restart(A) :-
6471 nb_setval('$chr_restart_after_flattening', restart(A)),
6472 fail.
6473flatten_clauses(A, B, C) :-
6474 flatten_readcontent(A,
6475 D,
6476 E,
6477 F,
6478 _,
6479 G,
6480 H),
6481 flatten_clauses_(B, D, H, E, F, G, C).
6482flatten_clauses_(A, B, C, D, E, F, G) :-
6483 auxiliary_constraints_declarations(A, E, F, H),
6484 dispatching_rules(A, I),
6485 declarations(D, A, E, F, J),
6486 flatten_rules(B, A, K),
6487 append([C, H, I, J, K], G).
6488declarations(A, B, C, D, E) :-
6489 findall(F,
6490 ( member(F, A),
6491 \+ memberchk(F-_-_-_, B)
6492 ),
6493 G),
6494 maplist(declaration(C, D), G, H),
6495 flatten(H, E).
6496declaration(A, B, C, [(:-chr_constraint C), (:-chr_option(mode, D)), (:-chr_option(type_declaration, E))]) :-
6497 C=F/G,
6498 functor(D, F, G),
6499 ( memberchk(D, A)
6500 -> true
6501 ; replicate(G, ?, H),
6502 D=..[_|H]
6503 ),
6504 functor(E, F, G),
6505 ( memberchk(E, B)
6506 -> true
6507 ; replicate(G, any, I),
6508 E=..[_|I]
6509 ).
6510flatten_readcontent([], [], [], [], [], [], []).
6511flatten_readcontent([A|B], C, D, E, F, G, H) :-
6512 ( A==end_of_file
6513 -> C=[],
6514 D=[],
6515 E=[],
6516 G=[],
6517 F=[],
6518 H=[]
6519 ; crude_is_rule(A)
6520 -> C=[A|I],
6521 flatten_readcontent(B,
6522 I,
6523 D,
6524 E,
6525 F,
6526 G,
6527 H)
6528 ; pure_is_declaration(A, J, K, L)
6529 -> append(J, M, D),
6530 append(K, N, E),
6531 append(L, O, G),
6532 flatten_readcontent(B,
6533 C,
6534 M,
6535 N,
6536 F,
6537 O,
6538 H)
6539 ; is_mode_declaration(A, P)
6540 -> E=[P|N],
6541 flatten_readcontent(B,
6542 C,
6543 D,
6544 N,
6545 F,
6546 G,
6547 H)
6548 ; is_type_declaration(A, Q)
6549 -> G=[Q|O],
6550 flatten_readcontent(B,
6551 C,
6552 D,
6553 E,
6554 F,
6555 O,
6556 H)
6557 ; is_type_definition(A, R)
6558 -> H=[A|S],
6559 F=[R|T],
6560 flatten_readcontent(B,
6561 C,
6562 D,
6563 E,
6564 T,
6565 G,
6566 S)
6567 ; ( A=(:-op(U, V, W))
6568 -> op(U, V, W)
6569 ; true
6570 ),
6571 H=[A|S],
6572 flatten_readcontent(B,
6573 C,
6574 D,
6575 E,
6576 F,
6577 G,
6578 S)
6579 ).
6580crude_is_rule(@(_, _)).
6581crude_is_rule(pragma(_, _)).
6582crude_is_rule(==>(_, _)).
6583crude_is_rule(<=>(_, _)).
6584pure_is_declaration(A, B, C, D) :-
6585 A=(:-E),
6586 E=..[F, G],
6587 F==(chr_constraint),
6588 conj2list(G, H),
6589 pure_extract_type_mode(H, B, C, D).
([], [], [], []).
6591pure_extract_type_mode([A/B|C], [A/B|D], E, F) :-
6592 !,
6593 pure_extract_type_mode(C, D, E, F).
6594pure_extract_type_mode([A|B], [C|D], [E|F], G) :-
6595 functor(A, H, I),
6596 C=H/I,
6597 A=..[_|J],
6598 extract_types_and_modes(J, K, L),
6599 E=..[H|L],
6600 ( forall(member(M, K), M==any)
6601 -> G=N
6602 ; G=[O|N],
6603 O=..[H|K]
6604 ),
6605 pure_extract_type_mode(B, D, F, N).
6606is_mode_declaration((:-chr_option(mode, A)), A).
6607is_type_declaration((:-chr_option(type_declaration, A)), A).
6608auxiliary_constraints_declarations(A, B, C, D) :-
6609 findall(E,
6610 auxiliary_constraints_declaration(A, B, C, E),
6611 F),
6612 flatten(F, D).
6613auxiliary_constraints_declaration(A, B, C, [(:-chr_constraint D), (:-chr_option(mode, E)), (:-chr_option(type_declaration, F))]) :-
6614 member(G/H-I-J-_, A),
6615 arg_modes(G, H, B, K),
6616 specialize_modes(K, I, L),
6617 arg_types(G, H, C, M),
6618 specialize_types(M, I, N),
6619 length(I, O),
6620 P is H-O,
6621 member(_-Q, J),
6622 D=Q/P,
6623 E=..[Q|L],
6624 F=..[Q|N].
6625arg_modes(A, B, C, D) :-
6626 functor(E, A, B),
6627 ( memberchk(E, C)
6628 -> E=..[_|D]
6629 ; replicate(B, ?, D)
6630 ).
6631specialize_modes(A, B, C) :-
6632 split_args(B, A, _, C).
6633arg_types(A, B, C, D) :-
6634 functor(E, A, B),
6635 ( memberchk(E, C)
6636 -> E=..[_|D]
6637 ; replicate(B, any, D)
6638 ).
6639specialize_types(A, B, C) :-
6640 split_args(B, A, _, C).
6641dispatching_rules([], []).
6642dispatching_rules([A-B-C-D|E], F) :-
6643 constraint_dispatching_rule(C,
6644 A,
6645 B,
6646 D,
6647 F,
6648 G),
6649 dispatching_rules(E, G).
6650constraint_dispatching_rule(A, B/C, D, E, F, G) :-
6651 ( increasing_numbers(D, 1)
6652 -> H=F,
6653 I=B/C
6654 ; functor(J, B, C),
6655 J=..[_|K],
6656 split_args(D, K, L, M),
6657 append(L, M, N),
6658 atom_concat(B, '_$shuffled', O),
6659 P=..[O|N],
6660 [(J:-P)|H]=F,
6661 I=O/C
6662 ),
6663 Q=swap(B, D),
6664 dispatching_rule_term_cases(A,
6665 D,
6666 I,
6667 E,
6668 Q,
6669 H,
6670 G).
6671increasing_numbers([], _).
6672increasing_numbers([A|B], A) :-
6673 C is A+1,
6674 increasing_numbers(B, C).
6675dispatching_rule_term_cases(A, B, C/D, E, F, G, H) :-
6676 length(B, I),
6677 once(pairup(J, K, A)),
6678 maplist(head_tail, J, L, M),
6679 N is D-I,
6680 maplist(wrap_in_functor(dispatching_action), K, O),
6681 dispatch_trie_index(L,
6682 M,
6683 N,
6684 E,
6685 F,
6686 O,
6687 C,
6688 G,
6689 H).
6690dispatching_action(A, B, C) :-
6691 C=..[A|B].
6692dispatch_trie_index(A, B, C, D, E, F, G, H, I) :-
6693 dispatch_trie_step(A,
6694 G,
6695 G,
6696 B,
6697 C,
6698 D,
6699 E,
6700 F,
6701 H,
6702 I).
6703dispatch_trie_step([], _, _, _, [], _, _, [], A, A) :-
6704 !.
6705dispatch_trie_step(A, B, C, D, E, F, G, H, I, J) :-
6706 D=[K|_],
6707 length(K, L),
6708 aggregate_all(set(M/N),
6709 ( member(O, A),
6710 functor(O, M, N)
6711 ),
6712 P),
6713 Q is L+1,
6714 dispatch_trie_step_cases(P,
6715 Q,
6716 A,
6717 D,
6718 E,
6719 F,
6720 G,
6721 H,
6722 B,
6723 C,
6724 I,
6725 J).
6726dispatch_trie_step_cases([], A, _, _, B, C, D, _, E, _, F, G) :-
6727 ( C=yes(H)
6728 -> F=[I|G],
6729 I=(J:-K),
6730 L is A+B,
6731 functor(J, E, L),
6732 reconstruct_original_term(D, J, M),
6733 K=..[H, M]
6734 ; F=G
6735 ).
6736dispatch_trie_step_cases([A|B], C, D, E, F, G, H, I, J, K, L, M) :-
6737 dispatch_trie_step_case(A,
6738 C,
6739 D,
6740 E,
6741 F,
6742 G,
6743 H,
6744 I,
6745 J,
6746 K,
6747 L,
6748 N),
6749 dispatch_trie_step_cases(B,
6750 C,
6751 D,
6752 E,
6753 F,
6754 G,
6755 H,
6756 I,
6757 J,
6758 K,
6759 N,
6760 M).
6761dispatch_trie_step_case(A/B, C, D, E, F, G, H, I, J, K, [L|M], N) :-
6762 L=(O:-P, Q),
6763 ( G=yes(_)
6764 -> P=!
6765 ; P=true
6766 ),
6767 R is C+F,
6768 functor(O, J, R),
6769 arg(1, O, S),
6770 O=..[_, _|T],
6771 length(U, F),
6772 once(append(V, U, T)),
6773 functor(S, A, B),
6774 W=index_functor(A, B, H),
6775 S=..[_|X],
6776 append(X, T, Y),
6777 ( Y==U
6778 -> M=N,
6779 rec_cases(D,
6780 _,
6781 I,
6782 A/B,
6783 _,
6784 _,
6785 Z),
6786 Z=[A1],
6787 call(A1, U, Q)
6788 ; rec_cases(D,
6789 E,
6790 I,
6791 A/B,
6792 B1,
6793 C1,
6794 Z),
6795 ( Z=[D1]
6796 -> C1=[E1],
6797 append([B1, E1, U], Y),
6798 M=N,
6799 call(D1, U, Q)
6800 ; pairup(B1, C1, F1),
6801 common_pattern(F1, G1, H1, I1),
6802 append(X, V, [J1|K1]),
6803 J1-K1=G1,
6804 L1=gct([J1|K1], W),
6805 fresh_symbol(K, M1),
6806 append(H1, U, N1),
6807 Q=..[M1|N1],
6808 findall(O1-P1,
6809 member([O1|P1], I1),
6810 Q1),
6811 once(pairup(R1, S1, Q1)),
6812 dispatch_trie_step(R1,
6813 M1,
6814 K,
6815 S1,
6816 F,
6817 G,
6818 L1,
6819 Z,
6820 M,
6821 N)
6822 )
6823 ).
6824split([A|B], C, D, E, F) :-
6825 ( C==1
6826 -> D=[],
6827 E=A,
6828 F=B
6829 ; G is C-1,
6830 D=[A|H],
6831 split(B, G, H, E, F)
6832 ).
6833reconstruct_original_term(swap(A, B), C, D) :-
6834 functor(C, _, E),
6835 functor(D, A, E),
6836 D=..[_|F],
6837 split_args(B, F, G, H),
6838 C=..[_|I],
6839 append(G, H, I).
6840reconstruct_original_term(index_functor(A, B, C), D, E) :-
6841 D=..[F|G],
6842 split_at(B, G, H, I),
6843 J=..[A|H],
6844 K=..[F, J|I],
6845 reconstruct_original_term(C, K, E).
6846reconstruct_original_term(gct(A, B), C, D) :-
6847 copy_term_nat(A, E),
6848 term_variables(E, F),
6849 C=..[G|H],
6850 append(F, I, H),
6851 append(E, I, J),
6852 K=..[G|J],
6853 reconstruct_original_term(B, K, D).
6854flatten_rules(A, B, C) :-
6855 flatten_rules1(A, B, D),
6856 flatten(D, C).
6857flatten_rules1([], _, []).
6858flatten_rules1([A|B], C, [D|E]) :-
6859 findall(F, flatten_rule(A, C, F), D),
6860 flatten_rules1(B, C, E).
6861flatten_rule(@(A, B), C, @(A, D)) :-
6862 !,
6863 flatten_rule(B, C, D).
6864flatten_rule(pragma(A, B), C, pragma(D, B)) :-
6865 !,
6866 flatten_rule(A, C, D).
6867flatten_rule(==>(A, B), C, ==>(D, E)) :-
6868 !,
6869 flatten_heads(A, C, D),
6870 flatten_body(B, C, E).
6871flatten_rule(<=>(\(A, B), C), D, <=>(\(E, F), G)) :-
6872 !,
6873 flatten_heads((A, B), D, (E, F)),
6874 flatten_body(C, D, G).
6875flatten_rule(<=>(A, B), C, <=>(D, E)) :-
6876 flatten_heads(A, C, D),
6877 flatten_body(B, C, E).
6878flatten_heads((A, B), C, (D, E)) :-
6879 !,
6880 flatten_heads(A, C, D),
6881 flatten_heads(B, C, E).
6882flatten_heads(#(A, B), C, #(D, B)) :-
6883 !,
6884 flatten_heads(A, C, D).
6885flatten_heads(A, B, C) :-
6886 ( functor(A, D, E),
6887 memberchk(D/E-F-G-_, B)
6888 -> A=..[_|H],
6889 split_args(F, H, I, J),
6890 member(I-K, G),
6891 C=..[K|J]
6892 ; C=A
6893 ).
6894flatten_body((A| B), C, (D| E)) :-
6895 !,
6896 conj2list(A, F),
6897 maplist(flatten_goal(C), F, G),
6898 list2conj(G, D),
6899 conj2list(B, H),
6900 maplist(flatten_goal(C), H, I),
6901 list2conj(I, E).
6902flatten_body(A, B, C) :-
6903 conj2list(A, D),
6904 maplist(flatten_goal(B), D, E),
6905 list2conj(E, C).
6906flatten_goal(_, A, B) :-
6907 var(A),
6908 !,
6909 B=A.
6910flatten_goal(A, B, C) :-
6911 ( is_specializable_goal(B, A, D)
6912 -> specialize_goal(B, D, C)
6913 ; B=E:F,
6914 get_target_module(G),
6915 E==G,
6916 nonvar(F),
6917 is_specializable_goal(F, A, D)
6918 -> specialize_goal(F, D, H),
6919 C=E:H
6920 ; partial_eval(B, C)
6921 -> true
6922 ; C=B
6923 ).
6924is_specializable_goal(A, B, C) :-
6925 functor(A, D, E),
6926 memberchk(D/E-C-_-_, B),
6927 args(C, A, F),
6928 ground(F).
6929specialize_goal(A, B, C) :-
6930 functor(A, D, E),
6931 A=..[_|F],
6932 split_args(B, F, G, H),
6933 flat_spec(D/E, B, G, _-I),
6934 C=..[I|H].
6935partial_eval(append(A, B, C), D) :-
6936 ( A==[]
6937 -> D=(C=B)
6938 ; B==[]
6939 -> D=(C=A)
6940 ).
6941partial_eval(flatten_path(A, B), C) :-
6942 ( nonvar(A),
6943 flatten(A, D),
6944 D\==A
6945 -> C=flatten_path(D, B)
6946 ).
6947dump_code(A) :-
6948 ( chr_pp_flag(dump, on)
6949 -> maplist(portray_clause, A)
6950 ; true
6951 ).
6952chr_banner :-
6953 chr_info(banner,
6954 '\tThe K.U.Leuven CHR System\n\t\tMain Developer:\tTom Schrijvers\n\t\tContributors:\tJon Sneyers, Bart Demoen, Jan Wielemaker\n\t\tCopyright:\tK.U.Leuven, Belgium\n\t\tURL:\t\thttp://www.cs.kuleuven.be/~~toms/CHR/\n',
6955 []).
6956chr_none_locked(A, B) :-
6957 chr_pp_flag(guard_locks, C),
6958 ( C==off
6959 -> B=true
6960 ; C==on
6961 -> B='chr none_locked'(A)
6962 ; C==error
6963 -> B='chr none_error_locked'(A)
6964 ).
6965chr_not_locked(A, B) :-
6966 chr_pp_flag(guard_locks, C),
6967 ( C==off
6968 -> B=true
6969 ; C==on
6970 -> B='chr not_locked'(A)
6971 ; C==error
6972 -> B='chr not_error_locked'(A)
6973 ).
6974chr_lock(A, B) :-
6975 chr_pp_flag(guard_locks, C),
6976 ( C==off
6977 -> B=true
6978 ; C==on
6979 -> B='chr lock'(A)
6980 ; C==error
6981 -> B='chr error_lock'(A)
6982 ).
6983chr_unlock(A, B) :-
6984 chr_pp_flag(guard_locks, C),
6985 ( C==off
6986 -> B=true
6987 ; C==on
6988 -> B='chr unlock'(A)
6989 ; C==error
6990 -> B='chr unerror_lock'(A)
6991 ).
6992term_to_ast_term(A, B, C, D) :-
6993 ( atomic(A)
6994 -> B=atomic(A),
6995 D=C
6996 ; compound(A)
6997 -> functor(A, E, F),
6998 B=compound(E, F, G, A),
6999 A=..[_|H],
7000 maplist_dcg(chr_translate:term_to_ast_term,
7001 H,
7002 G,
7003 C,
7004 D)
7005 ; var(A)
7006 -> var_to_ast_term(A, C, B, D)
7007 ).
7008var_to_ast_term(A, B, C, D) :-
7009 B=E-F,
7010 ( lookup_eq(E, A, C)
7011 -> D=B
7012 ; C=var(F, A),
7013 G is F+1,
7014 H=[A-C|E],
7015 D=H-G
7016 ).
7017chr_constraint_to_ast_constraint(A, B, C, D) :-
7018 B=chr_constraint(E/F, G, A),
7019 functor(A, E, F),
7020 A=..[_|H],
7021 maplist_dcg(chr_translate:term_to_ast_term,
7022 H,
7023 G,
7024 C,
7025 D).
7026rule_to_ast_rule(A, B) :-
7027 B=ast_rule(C, D, E, F, G),
7028 A=rule(H, I, E, G),
7029 J=[]-1,
7030 ( H==[]
7031 -> C=propagation(K),
7032 maplist_dcg(chr_translate:chr_constraint_to_ast_constraint,
7033 I,
7034 K,
7035 J,
7036 L)
7037 ; I==[]
7038 -> C=simplification(K),
7039 maplist_dcg(chr_translate:chr_constraint_to_ast_constraint,
7040 H,
7041 K,
7042 J,
7043 L)
7044 ; C=simpagation(M, N),
7045 maplist_dcg(chr_translate:chr_constraint_to_ast_constraint,
7046 H,
7047 M,
7048 J,
7049 O),
7050 maplist_dcg(chr_translate:chr_constraint_to_ast_constraint,
7051 I,
7052 N,
7053 O,
7054 L)
7055 ),
7056 conj2list(E, P),
7057 maplist_dcg(chr_translate:term_to_ast_term,
7058 P,
7059 D,
7060 L,
7061 Q),
7062 conj2list(G, R),
7063 maplist_dcg(chr_translate:term_to_ast_term,
7064 R,
7065 F,
7066 Q,
7067 _).
7068pragma_rule_to_ast_rule(pragma(A, _, _, _, _), B) :-
7069 rule_to_ast_rule(A, B).
7070check_rule_to_ast_rule(A) :-
7071 ( rule_to_ast_rule(A, B)
7072 -> writeln(B)
7073 ; writeln(failed(rule_to_ast_rule(A, B)))
7074 ).
7075ast_term_to_term(var(_, A), A).
7076ast_term_to_term(atomic(A), A).
7077ast_term_to_term(compound(_, _, _, A), A).
7078ast_nonvar(atomic(_)).
7079ast_nonvar(compound(_, _, _, _)).
7080ast_ground(atomic(_)).
7081ast_ground(compound(_, _, A, _)) :-
7082 maplist(ast_ground, A).
7083ast_is_ground(A, B) :-
7084 ast_is_ground_(B, A).
7085ast_is_ground_(var(A, _), B) :-
7086 tree_set_memberchk(A, B).
7087ast_is_ground_(atomic(_), _).
7088ast_is_ground_(compound(_, _, A, _), B) :-
7089 maplist(ast_is_ground(B), A).
7090ast_functor(atomic(A), A, 0).
7091ast_functor(compound(A, B, _, _), A, B).
7092ast_symbol(atomic(A), A/0).
7093ast_symbol(compound(A, B, _, _), A/B).
7094ast_args(atomic(_), []).
7095ast_args(compound(_, _, A, _), A).
7096ast_term_variables(atomic(_), A, A).
7097ast_term_variables(compound(_, _, A, _), B, C) :-
7098 ast_term_list_variables(A, B, C).
7099ast_term_variables(var(A, _), B, C) :-
7100 tree_set_add(B, A, C).
7101ast_term_list_variables(A, B, C) :-
7102 fold(A, chr_translate:ast_term_variables, B, C).
7103ast_constraint_variables(chr_constraint(_, A, _), B, C) :-
7104 ast_term_list_variables(A, B, C).
7105ast_constraint_list_variables(A, B, C) :-
7106 fold(A, chr_translate:ast_constraint_variables, B, C).
7107ast_head_variables(simplification(A), B, C) :-
7108 ast_constraint_list_variables(A, B, C).
7109ast_head_variables(propagation(A), B, C) :-
7110 ast_constraint_list_variables(A, B, C).
7111ast_head_variables(simpagation(A, B), C, D) :-
7112 ast_constraint_list_variables(A, C, E),
7113 ast_constraint_list_variables(B, E, D).
7114ast_var_memberchk(var(A, _), B) :-
7115 tree_set_memberchk(A, B).
7116ast_instantiate(A, B, C) :-
7117 ast_instantiate_(B, A, C).
7118ast_instantiate_(var(A, _), B, C) :-
7119 get_assoc(A, B, C).
7120ast_instantiate_(atomic(A), _, A).
7121ast_instantiate_(compound(A, B, C, _), D, E) :-
7122 functor(E, A, B),
7123 E=..[_|F],
7124 maplist(ast_instantiate(D), C, F).
7125ast_head_arg_matches_([], [], A, B, [], A, B).
7126ast_head_arg_matches_([silent(A-_)|B], [C|D], E, F, G, H, I) :-
7127 !,
7128 ( C==(+)
7129 -> ast_term_variables(A, J, F),
7130 ast_head_arg_matches_(B,
7131 D,
7132 E,
7133 J,
7134 G,
7135 H,
7136 I)
7137 ; ast_head_arg_matches_(B,
7138 D,
7139 E,
7140 F,
7141 G,
7142 H,
7143 I)
7144 ).
7145ast_head_arg_matches_([A-B|C], [D|E], F, G, H, I, J) :-
7146 ( A=var(K, _)
7147 -> ( get_assoc(K, F, L)
7148 -> ( D=(+)
7149 -> ( tree_set_memberchk(K, G)
7150 -> H=[B=L|M],
7151 N=G
7152 ; H=[B==L|M],
7153 tree_set_add(G, K, N)
7154 )
7155 ; H=[B==L|M],
7156 N=G
7157 ),
7158 O=F
7159 ; put_assoc(K, F, B, O),
7160 H=M,
7161 ( D=(+)
7162 -> tree_set_add(G, K, N)
7163 ; N=G
7164 )
7165 ),
7166 P=C,
7167 Q=E
7168 ; ground(A),
7169 A='$chr_identifier_match'(R, S)
7170 -> identifier_label_atom(S, B, R, T),
7171 H=[T|M],
7172 F=O,
7173 N=G,
7174 P=C,
7175 Q=E
7176 ; A=atomic(U)
7177 -> ( D=(+)
7178 -> H=[B=U|M]
7179 ; H=[B==U|M]
7180 ),
7181 F=O,
7182 N=G,
7183 P=C,
7184 Q=E
7185 ; D==(+),
7186 ast_is_ground(G, A)
7187 -> ast_instantiate(F, A, V),
7188 H=[B=V|M],
7189 F=O,
7190 N=G,
7191 P=C,
7192 Q=E
7193 ; D==(?),
7194 ast_is_ground(G, A)
7195 -> ast_instantiate(F, A, V),
7196 H=[B==V|M],
7197 F=O,
7198 N=G,
7199 P=C,
7200 Q=E
7201 ; A=compound(W, X, Y, _),
7202 functor(Z, W, X),
7203 Z=..[_|A1],
7204 ( D=(+)
7205 -> H=[B=Z|M]
7206 ; H=[nonvar(B), B=Z|M]
7207 ),
7208 pairup(Y, A1, B1),
7209 append(B1, C, P),
7210 replicate(_, D, C1),
7211 append(C1, E, Q),
7212 O=F,
7213 N=G
7214 ),
7215 ast_head_arg_matches_(P,
7216 Q,
7217 O,
7218 N,
7219 M,
7220 I,
7221 J).
7222:- use_module(chr(chr_runtime)). 7223:- use_module(chr(chr_hashtable_store)). 7224attach_generate_empty_named_history_initialisation___1([], _).
7225attach_generate_empty_named_history_initialisation___1([A|B], C) :-
7226 ( get_attr(A, chr_translate, D)
7227 -> D=v(E, F, G, H, I, J, K, L, M, N, O),
7228 ( E/\1=:=1
7229 -> P=v(E, [C|F], G, H, I, J, K, L, M, N, O)
7230 ; Q is E\/1,
7231 P=v(Q, [C], G, H, I, J, K, L, M, N, O)
7232 ),
7233 put_attr(A, chr_translate, P)
7234 ; put_attr(A,
7235 chr_translate,
7236 v(1, [C], [], [], [], [], [], [], [], [], []))
7237 ),
7238 attach_generate_empty_named_history_initialisation___1(B, C).
7239detach_generate_empty_named_history_initialisation___1([], _).
7240detach_generate_empty_named_history_initialisation___1([A|B], C) :-
7241 ( get_attr(A, chr_translate, D)
7242 -> D=v(E, F, G, H, I, J, K, L, M, N, O),
7243 ( E/\1=:=1
7244 -> 'chr sbag_del_element'(F, C, P),
7245 ( P==[]
7246 -> Q is E/\ -2,
7247 ( Q==0
7248 -> del_attr(A, chr_translate)
7249 ; put_attr(A,
7250 chr_translate,
7251 v(Q,
7252 [],
7253 G,
7254 H,
7255 I,
7256 J,
7257 K,
7258 L,
7259 M,
7260 N,
7261 O))
7262 )
7263 ; put_attr(A,
7264 chr_translate,
7265 v(E,
7266 P,
7267 G,
7268 H,
7269 I,
7270 J,
7271 K,
7272 L,
7273 M,
7274 N,
7275 O))
7276 )
7277 ; true
7278 )
7279 ; true
7280 ),
7281 detach_generate_empty_named_history_initialisation___1(B, C).
7282attach_symbol_count___2([], _).
7283attach_symbol_count___2([A|B], C) :-
7284 ( get_attr(A, chr_translate, D)
7285 -> D=v(E, F, G, H, I, J, K, L, M, N, O),
7286 ( E/\2=:=2
7287 -> P=v(E, F, [C|G], H, I, J, K, L, M, N, O)
7288 ; Q is E\/2,
7289 P=v(Q, F, [C], H, I, J, K, L, M, N, O)
7290 ),
7291 put_attr(A, chr_translate, P)
7292 ; put_attr(A,
7293 chr_translate,
7294 v(2, [], [C], [], [], [], [], [], [], [], []))
7295 ),
7296 attach_symbol_count___2(B, C).
7297detach_symbol_count___2([], _).
7298detach_symbol_count___2([A|B], C) :-
7299 ( get_attr(A, chr_translate, D)
7300 -> D=v(E, F, G, H, I, J, K, L, M, N, O),
7301 ( E/\2=:=2
7302 -> 'chr sbag_del_element'(G, C, P),
7303 ( P==[]
7304 -> Q is E/\ -3,
7305 ( Q==0
7306 -> del_attr(A, chr_translate)
7307 ; put_attr(A,
7308 chr_translate,
7309 v(Q,
7310 F,
7311 [],
7312 H,
7313 I,
7314 J,
7315 K,
7316 L,
7317 M,
7318 N,
7319 O))
7320 )
7321 ; put_attr(A,
7322 chr_translate,
7323 v(E,
7324 F,
7325 P,
7326 H,
7327 I,
7328 J,
7329 K,
7330 L,
7331 M,
7332 N,
7333 O))
7334 )
7335 ; true
7336 )
7337 ; true
7338 ),
7339 detach_symbol_count___2(B, C).
7340attach_fresh_symbol___2([], _).
7341attach_fresh_symbol___2([A|B], C) :-
7342 ( get_attr(A, chr_translate, D)
7343 -> D=v(E, F, G, H, I, J, K, L, M, N, O),
7344 ( E/\4=:=4
7345 -> P=v(E, F, G, [C|H], I, J, K, L, M, N, O)
7346 ; Q is E\/4,
7347 P=v(Q, F, G, [C], I, J, K, L, M, N, O)
7348 ),
7349 put_attr(A, chr_translate, P)
7350 ; put_attr(A,
7351 chr_translate,
7352 v(4, [], [], [C], [], [], [], [], [], [], []))
7353 ),
7354 attach_fresh_symbol___2(B, C).
7355detach_fresh_symbol___2([], _).
7356detach_fresh_symbol___2([A|B], C) :-
7357 ( get_attr(A, chr_translate, D)
7358 -> D=v(E, F, G, H, I, J, K, L, M, N, O),
7359 ( E/\4=:=4
7360 -> 'chr sbag_del_element'(H, C, P),
7361 ( P==[]
7362 -> Q is E/\ -5,
7363 ( Q==0
7364 -> del_attr(A, chr_translate)
7365 ; put_attr(A,
7366 chr_translate,
7367 v(Q,
7368 F,
7369 G,
7370 [],
7371 I,
7372 J,
7373 K,
7374 L,
7375 M,
7376 N,
7377 O))
7378 )
7379 ; put_attr(A,
7380 chr_translate,
7381 v(E,
7382 F,
7383 G,
7384 P,
7385 I,
7386 J,
7387 K,
7388 L,
7389 M,
7390 N,
7391 O))
7392 )
7393 ; true
7394 )
7395 ; true
7396 ),
7397 detach_fresh_symbol___2(B, C).
7398attach_background_info___2([], _).
7399attach_background_info___2([A|B], C) :-
7400 ( get_attr(A, chr_translate, D)
7401 -> D=v(E, F, G, H, I, J, K, L, M, N, O),
7402 ( E/\8=:=8
7403 -> P=v(E, F, G, H, [C|I], J, K, L, M, N, O)
7404 ; Q is E\/8,
7405 P=v(Q, F, G, H, [C], J, K, L, M, N, O)
7406 ),
7407 put_attr(A, chr_translate, P)
7408 ; put_attr(A,
7409 chr_translate,
7410 v(8, [], [], [], [C], [], [], [], [], [], []))
7411 ),
7412 attach_background_info___2(B, C).
7413detach_background_info___2([], _).
7414detach_background_info___2([A|B], C) :-
7415 ( get_attr(A, chr_translate, D)
7416 -> D=v(E, F, G, H, I, J, K, L, M, N, O),
7417 ( E/\8=:=8
7418 -> 'chr sbag_del_element'(I, C, P),
7419 ( P==[]
7420 -> Q is E/\ -9,
7421 ( Q==0
7422 -> del_attr(A, chr_translate)
7423 ; put_attr(A,
7424 chr_translate,
7425 v(Q,
7426 F,
7427 G,
7428 H,
7429 [],
7430 J,
7431 K,
7432 L,
7433 M,
7434 N,
7435 O))
7436 )
7437 ; put_attr(A,
7438 chr_translate,
7439 v(E,
7440 F,
7441 G,
7442 H,
7443 P,
7444 J,
7445 K,
7446 L,
7447 M,
7448 N,
7449 O))
7450 )
7451 ; true
7452 )
7453 ; true
7454 ),
7455 detach_background_info___2(B, C).
7456attach_get_bg_info___2([], _).
7457attach_get_bg_info___2([A|B], C) :-
7458 ( get_attr(A, chr_translate, D)
7459 -> D=v(E, F, G, H, I, J, K, L, M, N, O),
7460 ( E/\16=:=16
7461 -> P=v(E, F, G, H, I, [C|J], K, L, M, N, O)
7462 ; Q is E\/16,
7463 P=v(Q, F, G, H, I, [C], K, L, M, N, O)
7464 ),
7465 put_attr(A, chr_translate, P)
7466 ; put_attr(A,
7467 chr_translate,
7468 v(16, [], [], [], [], [C], [], [], [], [], []))
7469 ),
7470 attach_get_bg_info___2(B, C).
7471detach_get_bg_info___2([], _).
7472detach_get_bg_info___2([A|B], C) :-
7473 ( get_attr(A, chr_translate, D)
7474 -> D=v(E, F, G, H, I, J, K, L, M, N, O),
7475 ( E/\16=:=16
7476 -> 'chr sbag_del_element'(J, C, P),
7477 ( P==[]
7478 -> Q is E/\ -17,
7479 ( Q==0
7480 -> del_attr(A, chr_translate)
7481 ; put_attr(A,
7482 chr_translate,
7483 v(Q,
7484 F,
7485 G,
7486 H,
7487 I,
7488 [],
7489 K,
7490 L,
7491 M,
7492 N,
7493 O))
7494 )
7495 ; put_attr(A,
7496 chr_translate,
7497 v(E,
7498 F,
7499 G,
7500 H,
7501 I,
7502 P,
7503 K,
7504 L,
7505 M,
7506 N,
7507 O))
7508 )
7509 ; true
7510 )
7511 ; true
7512 ),
7513 detach_get_bg_info___2(B, C).
7514attach_type_definition___2([], _).
7515attach_type_definition___2([A|B], C) :-
7516 ( get_attr(A, chr_translate, D)
7517 -> D=v(E, F, G, H, I, J, K, L, M, N, O),
7518 ( E/\32=:=32
7519 -> P=v(E, F, G, H, I, J, [C|K], L, M, N, O)
7520 ; Q is E\/32,
7521 P=v(Q, F, G, H, I, J, [C], L, M, N, O)
7522 ),
7523 put_attr(A, chr_translate, P)
7524 ; put_attr(A,
7525 chr_translate,
7526 v(32, [], [], [], [], [], [C], [], [], [], []))
7527 ),
7528 attach_type_definition___2(B, C).
7529detach_type_definition___2([], _).
7530detach_type_definition___2([A|B], C) :-
7531 ( get_attr(A, chr_translate, D)
7532 -> D=v(E, F, G, H, I, J, K, L, M, N, O),
7533 ( E/\32=:=32
7534 -> 'chr sbag_del_element'(K, C, P),
7535 ( P==[]
7536 -> Q is E/\ -33,
7537 ( Q==0
7538 -> del_attr(A, chr_translate)
7539 ; put_attr(A,
7540 chr_translate,
7541 v(Q,
7542 F,
7543 G,
7544 H,
7545 I,
7546 J,
7547 [],
7548 L,
7549 M,
7550 N,
7551 O))
7552 )
7553 ; put_attr(A,
7554 chr_translate,
7555 v(E,
7556 F,
7557 G,
7558 H,
7559 I,
7560 J,
7561 P,
7562 L,
7563 M,
7564 N,
7565 O))
7566 )
7567 ; true
7568 )
7569 ; true
7570 ),
7571 detach_type_definition___2(B, C).
7572attach_type_alias___2([], _).
7573attach_type_alias___2([A|B], C) :-
7574 ( get_attr(A, chr_translate, D)
7575 -> D=v(E, F, G, H, I, J, K, L, M, N, O),
7576 ( E/\64=:=64
7577 -> P=v(E, F, G, H, I, J, K, [C|L], M, N, O)
7578 ; Q is E\/64,
7579 P=v(Q, F, G, H, I, J, K, [C], M, N, O)
7580 ),
7581 put_attr(A, chr_translate, P)
7582 ; put_attr(A,
7583 chr_translate,
7584 v(64, [], [], [], [], [], [], [C], [], [], []))
7585 ),
7586 attach_type_alias___2(B, C).
7587detach_type_alias___2([], _).
7588detach_type_alias___2([A|B], C) :-
7589 ( get_attr(A, chr_translate, D)
7590 -> D=v(E, F, G, H, I, J, K, L, M, N, O),
7591 ( E/\64=:=64
7592 -> 'chr sbag_del_element'(L, C, P),
7593 ( P==[]
7594 -> Q is E/\ -65,
7595 ( Q==0
7596 -> del_attr(A, chr_translate)
7597 ; put_attr(A,
7598 chr_translate,
7599 v(Q,
7600 F,
7601 G,
7602 H,
7603 I,
7604 J,
7605 K,
7606 [],
7607 M,
7608 N,
7609 O))
7610 )
7611 ; put_attr(A,
7612 chr_translate,
7613 v(E,
7614 F,
7615 G,
7616 H,
7617 I,
7618 J,
7619 K,
7620 P,
7621 M,
7622 N,
7623 O))
7624 )
7625 ; true
7626 )
7627 ; true
7628 ),
7629 detach_type_alias___2(B, C).
7630attach_unalias_type___2([], _).
7631attach_unalias_type___2([A|B], C) :-
7632 ( get_attr(A, chr_translate, D)
7633 -> D=v(E, F, G, H, I, J, K, L, M, N, O),
7634 ( E/\128=:=128
7635 -> P=v(E, F, G, H, I, J, K, L, [C|M], N, O)
7636 ; Q is E\/128,
7637 P=v(Q, F, G, H, I, J, K, L, [C], N, O)
7638 ),
7639 put_attr(A, chr_translate, P)
7640 ; put_attr(A,
7641 chr_translate,
7642 v(128, [], [], [], [], [], [], [], [C], [], []))
7643 ),
7644 attach_unalias_type___2(B, C).
7645detach_unalias_type___2([], _).
7646detach_unalias_type___2([A|B], C) :-
7647 ( get_attr(A, chr_translate, D)
7648 -> D=v(E, F, G, H, I, J, K, L, M, N, O),
7649 ( E/\128=:=128
7650 -> 'chr sbag_del_element'(M, C, P),
7651 ( P==[]
7652 -> Q is E/\ -129,
7653 ( Q==0
7654 -> del_attr(A, chr_translate)
7655 ; put_attr(A,
7656 chr_translate,
7657 v(Q,
7658 F,
7659 G,
7660 H,
7661 I,
7662 J,
7663 K,
7664 L,
7665 [],
7666 N,
7667 O))
7668 )
7669 ; put_attr(A,
7670 chr_translate,
7671 v(E,
7672 F,
7673 G,
7674 H,
7675 I,
7676 J,
7677 K,
7678 L,
7679 P,
7680 N,
7681 O))
7682 )
7683 ; true
7684 )
7685 ; true
7686 ),
7687 detach_unalias_type___2(B, C).
7688attach_ast_static_type_check_var___4([], _).
7689attach_ast_static_type_check_var___4([A|B], C) :-
7690 ( get_attr(A, chr_translate, D)
7691 -> D=v(E, F, G, H, I, J, K, L, M, N, O),
7692 ( E/\256=:=256
7693 -> P=v(E, F, G, H, I, J, K, L, M, [C|N], O)
7694 ; Q is E\/256,
7695 P=v(Q, F, G, H, I, J, K, L, M, [C], O)
7696 ),
7697 put_attr(A, chr_translate, P)
7698 ; put_attr(A,
7699 chr_translate,
7700 v(256, [], [], [], [], [], [], [], [], [C], []))
7701 ),
7702 attach_ast_static_type_check_var___4(B, C).
7703detach_ast_static_type_check_var___4([], _).
7704detach_ast_static_type_check_var___4([A|B], C) :-
7705 ( get_attr(A, chr_translate, D)
7706 -> D=v(E, F, G, H, I, J, K, L, M, N, O),
7707 ( E/\256=:=256
7708 -> 'chr sbag_del_element'(N, C, P),
7709 ( P==[]
7710 -> Q is E/\ -257,
7711 ( Q==0
7712 -> del_attr(A, chr_translate)
7713 ; put_attr(A,
7714 chr_translate,
7715 v(Q,
7716 F,
7717 G,
7718 H,
7719 I,
7720 J,
7721 K,
7722 L,
7723 M,
7724 [],
7725 O))
7726 )
7727 ; put_attr(A,
7728 chr_translate,
7729 v(E,
7730 F,
7731 G,
7732 H,
7733 I,
7734 J,
7735 K,
7736 L,
7737 M,
7738 P,
7739 O))
7740 )
7741 ; true
7742 )
7743 ; true
7744 ),
7745 detach_ast_static_type_check_var___4(B, C).
7746attach_atomic_type___1([], _).
7747attach_atomic_type___1([A|B], C) :-
7748 ( get_attr(A, chr_translate, D)
7749 -> D=v(E, F, G, H, I, J, K, L, M, N, O),
7750 ( E/\512=:=512
7751 -> P=v(E, F, G, H, I, J, K, L, M, N, [C|O])
7752 ; Q is E\/512,
7753 P=v(Q, F, G, H, I, J, K, L, M, N, [C])
7754 ),
7755 put_attr(A, chr_translate, P)
7756 ; put_attr(A,
7757 chr_translate,
7758 v(512, [], [], [], [], [], [], [], [], [], [C]))
7759 ),
7760 attach_atomic_type___1(B, C).
7761detach_atomic_type___1([], _).
7762detach_atomic_type___1([A|B], C) :-
7763 ( get_attr(A, chr_translate, D)
7764 -> D=v(E, F, G, H, I, J, K, L, M, N, O),
7765 ( E/\512=:=512
7766 -> 'chr sbag_del_element'(O, C, P),
7767 ( P==[]
7768 -> Q is E/\ -513,
7769 ( Q==0
7770 -> del_attr(A, chr_translate)
7771 ; put_attr(A,
7772 chr_translate,
7773 v(Q,
7774 F,
7775 G,
7776 H,
7777 I,
7778 J,
7779 K,
7780 L,
7781 M,
7782 N,
7783 []))
7784 )
7785 ; put_attr(A,
7786 chr_translate,
7787 v(E,
7788 F,
7789 G,
7790 H,
7791 I,
7792 J,
7793 K,
7794 L,
7795 M,
7796 N,
7797 P))
7798 )
7799 ; true
7800 )
7801 ; true
7802 ),
7803 detach_atomic_type___1(B, C).
7804attach_increment([], _).
7805attach_increment([A|B], C) :-
7806 ( get_attr(A, chr_translate, D)
7807 -> C=v(E, F, G, H, I, J, K, L, M, N, O),
7808 D=v(P, Q, R, S, T, U, V, W, X, Y, Z),
7809 ( sort(Q, A1),
7810 'chr merge_attributes'(F, A1, B1),
7811 sort(R, C1),
7812 'chr merge_attributes'(G, C1, D1),
7813 sort(S, E1),
7814 'chr merge_attributes'(H, E1, F1),
7815 sort(T, G1),
7816 'chr merge_attributes'(I, G1, H1),
7817 sort(U, I1),
7818 'chr merge_attributes'(J, I1, J1),
7819 sort(V, K1),
7820 'chr merge_attributes'(K, K1, L1),
7821 sort(W, M1),
7822 'chr merge_attributes'(L, M1, N1),
7823 sort(X, O1),
7824 'chr merge_attributes'(M, O1, P1),
7825 sort(Y, Q1),
7826 'chr merge_attributes'(N, Q1, R1),
7827 sort(Z, S1),
7828 'chr merge_attributes'(O, S1, T1)
7829 ),
7830 U1 is E\/P,
7831 put_attr(A,
7832 chr_translate,
7833 v(U1,
7834 B1,
7835 D1,
7836 F1,
7837 H1,
7838 J1,
7839 L1,
7840 N1,
7841 P1,
7842 R1,
7843 T1))
7844 ; put_attr(A, chr_translate, C)
7845 ),
7846 attach_increment(B, C).
7847attribute_goals(_, A, A).
7848attr_unify_hook(v(A, B, C, D, E, F, G, H, I, J, K), L) :-
7849 sort(B, M),
7850 sort(C, N),
7851 sort(D, O),
7852 sort(E, P),
7853 sort(F, Q),
7854 sort(G, R),
7855 sort(H, S),
7856 sort(I, T),
7857 sort(J, U),
7858 sort(K, V),
7859 ( var(L)
7860 -> ( get_attr(L, chr_translate, W)
7861 -> W=v(X, Y, Z, A1, B1, C1, D1, E1, F1, G1, H1),
7862 ( sort(Y, I1),
7863 'chr merge_attributes'(M, I1, J1),
7864 sort(Z, K1),
7865 'chr merge_attributes'(N, K1, L1),
7866 sort(A1, M1),
7867 'chr merge_attributes'(O, M1, N1),
7868 sort(B1, O1),
7869 'chr merge_attributes'(P, O1, P1),
7870 sort(C1, Q1),
7871 'chr merge_attributes'(Q, Q1, R1),
7872 sort(D1, S1),
7873 'chr merge_attributes'(R, S1, T1),
7874 sort(E1, U1),
7875 'chr merge_attributes'(S, U1, V1),
7876 sort(F1, W1),
7877 'chr merge_attributes'(T, W1, X1),
7878 sort(G1, Y1),
7879 'chr merge_attributes'(U, Y1, Z1),
7880 sort(H1, A2),
7881 'chr merge_attributes'(V, A2, B2)
7882 ),
7883 C2 is A\/X,
7884 put_attr(L,
7885 chr_translate,
7886 v(C2,
7887 J1,
7888 L1,
7889 N1,
7890 P1,
7891 R1,
7892 T1,
7893 V1,
7894 X1,
7895 Z1,
7896 B2)),
7897 '$run_suspensions_generate_empty_named_history_initialisation___1'(M),
7898 '$run_suspensions_symbol_count___2'(N),
7899 '$run_suspensions_fresh_symbol___2'(O),
7900 '$run_suspensions_background_info___2'(P1),
7901 '$run_suspensions_get_bg_info___2'(R1),
7902 '$run_suspensions_type_definition___2'(T1),
7903 '$run_suspensions_type_alias___2'(V1),
7904 '$run_suspensions_unalias_type___2'(X1),
7905 '$run_suspensions_ast_static_type_check_var___4'(Z1),
7906 '$run_suspensions_atomic_type___1'(B2)
7907 ; put_attr(L,
7908 chr_translate,
7909 v(A,
7910 M,
7911 N,
7912 O,
7913 P,
7914 Q,
7915 R,
7916 S,
7917 T,
7918 U,
7919 V)),
7920 '$run_suspensions_generate_empty_named_history_initialisation___1'(M),
7921 '$run_suspensions_symbol_count___2'(N),
7922 '$run_suspensions_fresh_symbol___2'(O),
7923 '$run_suspensions_background_info___2'(P),
7924 '$run_suspensions_get_bg_info___2'(Q),
7925 '$run_suspensions_type_definition___2'(R),
7926 '$run_suspensions_type_alias___2'(S),
7927 '$run_suspensions_unalias_type___2'(T),
7928 '$run_suspensions_ast_static_type_check_var___4'(U),
7929 '$run_suspensions_atomic_type___1'(V)
7930 )
7931 ; ( compound(L)
7932 -> term_variables(L, D2),
7933 attach_increment(D2,
7934 v(A,
7935 M,
7936 N,
7937 O,
7938 P,
7939 Q,
7940 R,
7941 S,
7942 T,
7943 U,
7944 V))
7945 ; true
7946 ),
7947 '$run_suspensions_generate_empty_named_history_initialisation___1'(M),
7948 '$run_suspensions_symbol_count___2'(N),
7949 '$run_suspensions_fresh_symbol___2'(O),
7950 '$run_suspensions_background_info___2'(P),
7951 '$run_suspensions_get_bg_info___2'(Q),
7952 '$run_suspensions_type_definition___2'(R),
7953 '$run_suspensions_type_alias___2'(S),
7954 '$run_suspensions_unalias_type___2'(T),
7955 '$run_suspensions_ast_static_type_check_var___4'(U),
7956 '$run_suspensions_atomic_type___1'(V)
7957 ).
7958'$novel_production'(A, B) :-
7959 arg(3, A, C),
7960 ( hprolog:get_ds(B, C, _)
7961 -> fail
7962 ; true
7963 ).
7964'$extend_history'(A, B) :-
7965 arg(3, A, C),
7966 hprolog:put_ds(B, C, x, D),
7967 setarg(3, A, D).
7968'$run_suspensions_generate_empty_named_history_initialisation___1'([]).
7969'$run_suspensions_generate_empty_named_history_initialisation___1'([A|B]) :-
7970 A=suspension(_, C, D, _, E),
7971 ( C==active
7972 -> setarg(2, A, triggered),
7973 F is D+1,
7974 setarg(3, A, F),
7975 generate_empty_named_history_initialisation___1__0(E, A),
7976 ( C==triggered
7977 -> setarg(2, A, active)
7978 ; true
7979 )
7980 ; true
7981 ),
7982 '$run_suspensions_generate_empty_named_history_initialisation___1'(B).
7983'$run_suspensions_symbol_count___2'([]).
7984'$run_suspensions_symbol_count___2'([A|B]) :-
7985 A=suspension(_, C, _, D, E),
7986 ( C==active
7987 -> setarg(2, A, triggered),
7988 symbol_count___2__0(D, E, A),
7989 ( C==triggered
7990 -> setarg(2, A, active)
7991 ; true
7992 )
7993 ; true
7994 ),
7995 '$run_suspensions_symbol_count___2'(B).
7996'$run_suspensions_fresh_symbol___2'([]).
7997'$run_suspensions_fresh_symbol___2'([A|B]) :-
7998 A=suspension(_, C, _, D, _, E, F),
7999 ( C==active
8000 -> setarg(2, A, triggered),
8001 G is D+1,
8002 setarg(4, A, G),
8003 fresh_symbol___2__0(E, F, A),
8004 ( C==triggered
8005 -> setarg(2, A, active)
8006 ; true
8007 )
8008 ; true
8009 ),
8010 '$run_suspensions_fresh_symbol___2'(B).
8011'$run_suspensions_background_info___2'([]).
8012'$run_suspensions_background_info___2'([A|B]) :-
8013 A=suspension(_, C, _, D, _, E, F),
8014 setarg(2, A, triggered),
8015 G is D+1,
8016 setarg(4, A, G),
8017 background_info___2__0(E, F, A),
8018 ( C==triggered
8019 -> setarg(2, A, active)
8020 ; true
8021 ),
8022 '$run_suspensions_background_info___2'(B).
8023'$run_suspensions_get_bg_info___2'([]).
8024'$run_suspensions_get_bg_info___2'([A|B]) :-
8025 A=suspension(_, C, _, D, _, E, F),
8026 ( C==active
8027 -> setarg(2, A, triggered),
8028 G is D+1,
8029 setarg(4, A, G),
8030 get_bg_info___2__0(E, F, A),
8031 ( C==triggered
8032 -> setarg(2, A, active)
8033 ; true
8034 )
8035 ; true
8036 ),
8037 '$run_suspensions_get_bg_info___2'(B).
8038'$run_suspensions_type_definition___2'([]).
8039'$run_suspensions_type_definition___2'([A|B]) :-
8040 A=suspension(_, C, _, D, _, E, F),
8041 ( C==active
8042 -> setarg(2, A, triggered),
8043 G is D+1,
8044 setarg(4, A, G),
8045 type_definition___2__0(E, F, A),
8046 ( C==triggered
8047 -> setarg(2, A, active)
8048 ; true
8049 )
8050 ; true
8051 ),
8052 '$run_suspensions_type_definition___2'(B).
8053'$run_suspensions_type_alias___2'([]).
8054'$run_suspensions_type_alias___2'([A|B]) :-
8055 A=suspension(_, C, _, D, _, E, F),
8056 ( C==active
8057 -> setarg(2, A, triggered),
8058 G is D+1,
8059 setarg(4, A, G),
8060 type_alias___2__0(E, F, A),
8061 ( C==triggered
8062 -> setarg(2, A, active)
8063 ; true
8064 )
8065 ; true
8066 ),
8067 '$run_suspensions_type_alias___2'(B).
8068'$run_suspensions_unalias_type___2'([]).
8069'$run_suspensions_unalias_type___2'([A|B]) :-
8070 A=suspension(_, C, _, D, E),
8071 ( C==active
8072 -> setarg(2, A, triggered),
8073 unalias_type___2__0(D, E, A),
8074 ( C==triggered
8075 -> setarg(2, A, active)
8076 ; true
8077 )
8078 ; true
8079 ),
8080 '$run_suspensions_unalias_type___2'(B).
8081'$run_suspensions_ast_static_type_check_var___4'([]).
8082'$run_suspensions_ast_static_type_check_var___4'([A|B]) :-
8083 A=suspension(_, C, _, D, E, F, G),
8084 ( C==active
8085 -> setarg(2, A, triggered),
8086 ast_static_type_check_var___4__0(D,
8087 E,
8088 F,
8089 G,
8090 A),
8091 ( C==triggered
8092 -> setarg(2, A, active)
8093 ; true
8094 )
8095 ; true
8096 ),
8097 '$run_suspensions_ast_static_type_check_var___4'(B).
8098'$run_suspensions_atomic_type___1'([]).
8099'$run_suspensions_atomic_type___1'([A|B]) :-
8100 A=suspension(_, C, _, D),
8101 ( C==active
8102 -> setarg(2, A, triggered),
8103 atomic_type___1__0(D, A),
8104 ( C==triggered
8105 -> setarg(2, A, active)
8106 ; true
8107 )
8108 ; true
8109 ),
8110 '$run_suspensions_atomic_type___1'(B).
8111'$enumerate_constraints'(A) :-
8112 ( nonvar(A)
8113 -> functor(A, B, _),
8114 '$enumerate_constraints'(B, A)
8115 ; '$enumerate_constraints'(_, A)
8116 ).
8117'$enumerate_constraints'(chr_source_file, A) :-
8118 nb_getval('$chr_store_global_ground_chr_translate____chr_source_file___1',
8119 B),
8120 member(C, B),
8121 C=suspension(_, _, _, D),
8122 A=chr_source_file(D).
8123'$enumerate_constraints'(target_module, A) :-
8124 nb_getval('$chr_store_global_ground_chr_translate____target_module___1',
8125 B),
8126 member(C, B),
8127 C=suspension(_, _, _, D),
8128 A=target_module(D).
8129'$enumerate_constraints'(source_location, A) :-
8130 nb_getval('$chr_store_multi_hash_chr_translate____source_location___2-1',
8131 B),
8132 value_ht(B, C),
8133 C=suspension(_, _, D, E),
8134 A=source_location(D, E).
8135'$enumerate_constraints'(indexed_argument, A) :-
8136 nb_getval('$chr_store_multi_hash_chr_translate____indexed_argument___2-1',
8137 B),
8138 value_ht(B, C),
8139 C=suspension(_, _, D, E),
8140 A=indexed_argument(D, E).
8141'$enumerate_constraints'(constraint_mode, A) :-
8142 nb_getval('$chr_store_global_ground_chr_translate____constraint_mode___2',
8143 B),
8144 member(C, B),
8145 C=suspension(_, _, _, _, D, E),
8146 A=constraint_mode(D, E).
8147'$enumerate_constraints'(none_suspended_on_variables, A) :-
8148 nb_getval('$chr_store_global_ground_chr_translate____none_suspended_on_variables___0',
8149 B),
8150 member(C, B),
8151 C=suspension(_, _, _),
8152 A=none_suspended_on_variables.
8153'$enumerate_constraints'(store_type, A) :-
8154 nb_getval('$chr_store_multi_hash_chr_translate____store_type___2-1', B),
8155 value_ht(B, C),
8156 C=suspension(_, _, D, E),
8157 A=store_type(D, E).
8158'$enumerate_constraints'(actual_store_types, A) :-
8159 nb_getval('$chr_store_multi_hash_chr_translate____actual_store_types___2-1',
8160 B),
8161 value_ht(B, C),
8162 C=suspension(_, _, D, E),
8163 A=actual_store_types(D, E).
8164'$enumerate_constraints'(assumed_store_type, A) :-
8165 nb_getval('$chr_store_multi_hash_chr_translate____assumed_store_type___2-1',
8166 B),
8167 value_ht(B, C),
8168 C=suspension(_, _, D, E),
8169 A=assumed_store_type(D, E).
8170'$enumerate_constraints'(validate_store_type_assumption, A) :-
8171 nb_getval('$chr_store_multi_hash_chr_translate____validate_store_type_assumption___1-1',
8172 B),
8173 value_ht(B, C),
8174 C=suspension(_, _, D),
8175 A=validate_store_type_assumption(D).
8176'$enumerate_constraints'(rule_count, A) :-
8177 nb_getval('$chr_store_global_ground_chr_translate____rule_count___1',
8178 B),
8179 member(C, B),
8180 C=suspension(_, _, _, D),
8181 A=rule_count(D).
8182'$enumerate_constraints'(passive, A) :-
8183 nb_getval('$chr_store_multi_hash_chr_translate____passive___2-1', B),
8184 value_ht(B, C),
8185 C=suspension(_, _, _, D, E),
8186 A=passive(D, E).
8187'$enumerate_constraints'(occurrence, A) :-
8188 nb_getval('$chr_store_global_ground_chr_translate____occurrence___5',
8189 B),
8190 member(C, B),
8191 C=suspension(_, _, _, _, D, E, F, G, H),
8192 A=occurrence(D, E, F, G, H).
8193'$enumerate_constraints'(max_occurrence, A) :-
8194 nb_getval('$chr_store_multi_hash_chr_translate____max_occurrence___2-1',
8195 B),
8196 value_ht(B, C),
8197 C=suspension(_, _, _, D, E),
8198 A=max_occurrence(D, E).
8199'$enumerate_constraints'(allocation_occurrence, A) :-
8200 nb_getval('$chr_store_multi_hash_chr_translate____allocation_occurrence___2-1',
8201 B),
8202 value_ht(B, C),
8203 C=suspension(_, _, _, D, E),
8204 A=allocation_occurrence(D, E).
8205'$enumerate_constraints'(rule, A) :-
8206 nb_getval('$chr_store_global_ground_chr_translate____rule___2', B),
8207 member(C, B),
8208 C=suspension(_, _, _, _, D, E),
8209 A=rule(D, E).
8210'$enumerate_constraints'(least_occurrence, A) :-
8211 nb_getval('$chr_store_multi_hash_chr_translate____least_occurrence___2-12',
8212 B),
8213 value_ht(B, C),
8214 C=suspension(_, _, D, E),
8215 A=least_occurrence(D, E).
8216'$enumerate_constraints'(constraint_index, A) :-
8217 nb_getval('$chr_store_multi_hash_chr_translate____constraint_index___2-2',
8218 B),
8219 value_ht(B, C),
8220 C=suspension(_, _, D, E),
8221 A=constraint_index(D, E).
8222'$enumerate_constraints'(max_constraint_index, A) :-
8223 nb_getval('$chr_store_global_ground_chr_translate____max_constraint_index___1',
8224 B),
8225 member(C, B),
8226 C=suspension(_, _, _, D),
8227 A=max_constraint_index(D).
8228'$enumerate_constraints'(identifier_size, A) :-
8229 nb_getval('$chr_store_global_ground_chr_translate____identifier_size___1',
8230 B),
8231 member(C, B),
8232 C=suspension(_, _, _, D),
8233 A=identifier_size(D).
8234'$enumerate_constraints'(identifier_index, A) :-
8235 nb_getval('$chr_store_multi_hash_chr_translate____identifier_index___3-12',
8236 B),
8237 value_ht(B, C),
8238 C=suspension(_, _, D, E, F),
8239 A=identifier_index(D, E, F).
8240'$enumerate_constraints'(type_indexed_identifier_size, A) :-
8241 nb_getval('$chr_store_multi_hash_chr_translate____type_indexed_identifier_size___2-1',
8242 B),
8243 value_ht(B, C),
8244 C=suspension(_, _, D, E),
8245 A=type_indexed_identifier_size(D, E).
8246'$enumerate_constraints'(type_indexed_identifier_index, A) :-
8247 nb_getval('$chr_store_multi_hash_chr_translate____type_indexed_identifier_index___4-123',
8248 B),
8249 value_ht(B, C),
8250 C=suspension(_, _, D, E, F, G),
8251 A=type_indexed_identifier_index(D, E, F, G).
8252'$enumerate_constraints'(no_history, A) :-
8253 nb_getval('$chr_store_multi_hash_chr_translate____no_history___1-1', B),
8254 value_ht(B, C),
8255 C=suspension(_, _, D),
8256 A=no_history(D).
8257'$enumerate_constraints'(history, A) :-
8258 nb_getval('$chr_store_multi_hash_chr_translate____history___3-2', B),
8259 value_ht(B, C),
8260 C=suspension(_, _, _, D, E, F),
8261 A=history(D, E, F).
8262'$enumerate_constraints'(indexing_spec, A) :-
8263 nb_getval('$chr_store_multi_hash_chr_translate____indexing_spec___2-1',
8264 B),
8265 value_ht(B, C),
8266 C=suspension(_, _, D, E),
8267 A=indexing_spec(D, E).
8268'$enumerate_constraints'(observation_analysis, A) :-
8269 nb_getval('$chr_store_global_ground_chr_translate____observation_analysis___1',
8270 B),
8271 member(C, B),
8272 C=suspension(_, _, _, D),
8273 A=observation_analysis(D).
8274'$enumerate_constraints'(spawns, A) :-
8275 nb_getval('$chr_store_global_ground_chr_translate____spawns___3', B),
8276 member(C, B),
8277 C=suspension(_, _, _, _, D, E, F),
8278 A=spawns(D, E, F).
8279'$enumerate_constraints'(spawns_all, A) :-
8280 nb_getval('$chr_store_multi_hash_chr_translate____spawns_all___2-1', B),
8281 value_ht(B, C),
8282 C=suspension(_, _, D, E),
8283 A=spawns_all(D, E).
8284'$enumerate_constraints'(spawns_all_triggers, A) :-
8285 nb_getval('$chr_store_global_ground_chr_translate____spawns_all_triggers___2',
8286 B),
8287 member(C, B),
8288 C=suspension(_, _, _, _, D, E),
8289 A=spawns_all_triggers(D, E).
8290'$enumerate_constraints'(spawns_all_triggers_implies_spawns_all, A) :-
8291 nb_getval('$chr_store_global_ground_chr_translate____spawns_all_triggers_implies_spawns_all___0',
8292 B),
8293 member(C, B),
8294 C=suspension(_, _, _),
8295 A=spawns_all_triggers_implies_spawns_all.
8296'$enumerate_constraints'(empty_named_history_initialisations, A) :-
8297 nb_getval('$chr_store_global_ground_chr_translate____empty_named_history_initialisations___2',
8298 B),
8299 member(C, B),
8300 C=suspension(_, _, _, D, E),
8301 A=empty_named_history_initialisations(D, E).
8302'$enumerate_constraints'(generate_empty_named_history_initialisation, A) :-
8303 nb_current('$chr_store_global_list_chr_translate____generate_empty_named_history_initialisation___1',
8304 B),
8305 member(C, B),
8306 C=suspension(_, _, _, _, D),
8307 A=generate_empty_named_history_initialisation(D).
8308'$enumerate_constraints'(find_empty_named_histories, A) :-
8309 nb_getval('$chr_store_global_ground_chr_translate____find_empty_named_histories___0',
8310 B),
8311 member(C, B),
8312 C=suspension(_, _, _, _),
8313 A=find_empty_named_histories.
8314'$enumerate_constraints'(module_initializer, A) :-
8315 nb_getval('$chr_store_global_ground_chr_translate____module_initializer___1',
8316 B),
8317 member(C, B),
8318 C=suspension(_, _, _, D),
8319 A=module_initializer(D).
8320'$enumerate_constraints'(actual_atomic_multi_hash_keys, A) :-
8321 nb_getval('$chr_store_multi_hash_chr_translate____actual_atomic_multi_hash_keys___3-12',
8322 B),
8323 value_ht(B, C),
8324 C=suspension(_, _, D, E, F),
8325 A=actual_atomic_multi_hash_keys(D, E, F).
8326'$enumerate_constraints'(actual_ground_multi_hash_keys, A) :-
8327 nb_getval('$chr_store_multi_hash_chr_translate____actual_ground_multi_hash_keys___3-12',
8328 B),
8329 value_ht(B, C),
8330 C=suspension(_, _, D, E, F),
8331 A=actual_ground_multi_hash_keys(D, E, F).
8332'$enumerate_constraints'(actual_non_ground_multi_hash_key, A) :-
8333 nb_getval('$chr_store_multi_hash_chr_translate____actual_non_ground_multi_hash_key___2-12',
8334 B),
8335 value_ht(B, C),
8336 C=suspension(_, _, D, E),
8337 A=actual_non_ground_multi_hash_key(D, E).
8338'$enumerate_constraints'(symbol_count, A) :-
8339 nb_current('$chr_store_global_list_chr_translate____symbol_count___2',
8340 B),
8341 member(C, B),
8342 C=suspension(_, _, _, D, E),
8343 A=symbol_count(D, E).
8344'$enumerate_constraints'(fresh_symbol, A) :-
8345 nb_current('$chr_store_global_list_chr_translate____fresh_symbol___2',
8346 B),
8347 member(C, B),
8348 C=suspension(_, _, _, _, _, D, E),
8349 A=fresh_symbol(D, E).
8350'$enumerate_constraints'(prolog_global_variable, A) :-
8351 nb_getval('$chr_store_global_ground_chr_translate____prolog_global_variable___1',
8352 B),
8353 member(C, B),
8354 C=suspension(_, _, _, D),
8355 A=prolog_global_variable(D).
8356'$enumerate_constraints'(background_info, A) :-
8357 nb_getval('$chr_store_global_ground_chr_translate____background_info___1',
8358 B),
8359 member(C, B),
8360 C=suspension(_, _, _, D),
8361 A=background_info(D).
8362'$enumerate_constraints'(background_info, A) :-
8363 nb_current('$chr_store_global_list_chr_translate____background_info___2',
8364 B),
8365 member(C, B),
8366 C=suspension(_, _, _, _, _, D, E),
8367 A=background_info(D, E).
8368'$enumerate_constraints'(get_bg_info, A) :-
8369 nb_current('$chr_store_global_list_chr_translate____get_bg_info___2',
8370 B),
8371 member(C, B),
8372 C=suspension(_, _, _, _, _, D, E),
8373 A=get_bg_info(D, E).
8374'$enumerate_constraints'(get_bg_info_answer, A) :-
8375 nb_getval('$chr_store_global_ground_chr_translate____get_bg_info_answer___1',
8376 B),
8377 member(C, B),
8378 C=suspension(_, _, _, D),
8379 A=get_bg_info_answer(D).
8380'$enumerate_constraints'(prev_guard_list, A) :-
8381 nb_getval('$chr_store_global_ground_chr_translate____prev_guard_list___6',
8382 B),
8383 member(C, B),
8384 C=suspension(_, _, _, _, D, E, F, G, H, I),
8385 A=prev_guard_list(D, E, F, G, H, I).
8386'$enumerate_constraints'(set_all_passive, A) :-
8387 nb_getval('$chr_store_multi_hash_chr_translate____set_all_passive___1-1',
8388 B),
8389 value_ht(B, C),
8390 C=suspension(_, _, _, D),
8391 A=set_all_passive(D).
8392'$enumerate_constraints'(precompute_head_matchings, A) :-
8393 nb_getval('$chr_store_global_ground_chr_translate____precompute_head_matchings___0',
8394 B),
8395 member(C, B),
8396 C=suspension(_, _, _, _),
8397 A=precompute_head_matchings.
8398'$enumerate_constraints'(make_head_matchings_explicit_memo_table, A) :-
8399 nb_getval('$chr_store_multi_hash_chr_translate____make_head_matchings_explicit_memo_table___3-1',
8400 B),
8401 value_ht(B, C),
8402 C=suspension(_, _, D, E, F),
8403 A=make_head_matchings_explicit_memo_table(D, E, F).
8404'$enumerate_constraints'(multiple_occ_constraints_checked, A) :-
8405 nb_getval('$chr_store_global_ground_chr_translate____multiple_occ_constraints_checked___1',
8406 B),
8407 member(C, B),
8408 C=suspension(_, _, _, D),
8409 A=multiple_occ_constraints_checked(D).
8410'$enumerate_constraints'(type_definition, A) :-
8411 nb_current('$chr_store_global_list_chr_translate____type_definition___2',
8412 B),
8413 member(C, B),
8414 C=suspension(_, _, _, _, _, D, E),
8415 A=type_definition(D, E).
8416'$enumerate_constraints'(type_alias, A) :-
8417 nb_current('$chr_store_global_list_chr_translate____type_alias___2', B),
8418 member(C, B),
8419 C=suspension(_, _, _, _, _, D, E),
8420 A=type_alias(D, E).
8421'$enumerate_constraints'(constraint_type, A) :-
8422 nb_getval('$chr_store_global_ground_chr_translate____constraint_type___2',
8423 B),
8424 member(C, B),
8425 C=suspension(_, _, _, D, E),
8426 A=constraint_type(D, E).
8427'$enumerate_constraints'(unalias_type, A) :-
8428 nb_current('$chr_store_global_list_chr_translate____unalias_type___2',
8429 B),
8430 member(C, B),
8431 C=suspension(_, _, _, D, E),
8432 A=unalias_type(D, E).
8433'$enumerate_constraints'(types_modes_condition, A) :-
8434 nb_getval('$chr_store_global_ground_chr_translate____types_modes_condition___3',
8435 B),
8436 member(C, B),
8437 C=suspension(_, _, _, D, E, F),
8438 A=types_modes_condition(D, E, F).
8439'$enumerate_constraints'(static_type_check, A) :-
8440 nb_getval('$chr_store_global_ground_chr_translate____static_type_check___2',
8441 B),
8442 member(C, B),
8443 C=suspension(_, _, _, D, E),
8444 A=static_type_check(D, E).
8445'$enumerate_constraints'(ast_static_type_check_var, A) :-
8446 nb_current('$chr_store_global_list_chr_translate____ast_static_type_check_var___4',
8447 B),
8448 member(C, B),
8449 C=suspension(_, _, _, D, E, F, G),
8450 A=ast_static_type_check_var(D, E, F, G).
8451'$enumerate_constraints'(ast_static_atomic_builtin_type_check_var, A) :-
8452 nb_getval('$chr_store_multi_hash_chr_translate____ast_static_atomic_builtin_type_check_var___4-1',
8453 B),
8454 value_ht(B, C),
8455 C=suspension(_, _, D, E, F, G),
8456 A=ast_static_atomic_builtin_type_check_var(D, E, F, G).
8457'$enumerate_constraints'(dynamic_type_check, A) :-
8458 nb_getval('$chr_store_global_ground_chr_translate____dynamic_type_check___0',
8459 B),
8460 member(C, B),
8461 C=suspension(_, _, _, _),
8462 A=dynamic_type_check.
8463'$enumerate_constraints'(dynamic_type_check_clauses, A) :-
8464 nb_getval('$chr_store_global_ground_chr_translate____dynamic_type_check_clauses___1',
8465 B),
8466 member(C, B),
8467 C=suspension(_, _, _, D),
8468 A=dynamic_type_check_clauses(D).
8469'$enumerate_constraints'(atomic_type, A) :-
8470 nb_current('$chr_store_global_list_chr_translate____atomic_type___1',
8471 B),
8472 member(C, B),
8473 C=suspension(_, _, _, D),
8474 A=atomic_type(D).
8475'$enumerate_constraints'(stored, A) :-
8476 nb_getval('$chr_store_multi_hash_chr_translate____stored___3-13', B),
8477 value_ht(B, C),
8478 C=suspension(_, _, D, E, F),
8479 A=stored(D, E, F).
8480'$enumerate_constraints'(stored_complete, A) :-
8481 nb_getval('$chr_store_multi_hash_chr_translate____stored_complete___3-13',
8482 B),
8483 value_ht(B, C),
8484 C=suspension(_, _, _, D, E, F),
8485 A=stored_complete(D, E, F).
8486'$enumerate_constraints'(check_all_passive, A) :-
8487 nb_getval('$chr_store_multi_hash_chr_translate____check_all_passive___2-12',
8488 B),
8489 value_ht(B, C),
8490 C=suspension(_, _, D, E),
8491 A=check_all_passive(D, E).
8492'$enumerate_constraints'(constraints_code1, A) :-
8493 nb_getval('$chr_store_global_ground_chr_translate____constraints_code1___3',
8494 B),
8495 member(C, B),
8496 C=suspension(_, _, _, D, E, F),
8497 A=constraints_code1(D, E, F).
8498'$enumerate_constraints'(memo_has_active_occurrence, A) :-
8499 nb_getval('$chr_store_multi_hash_chr_translate____memo_has_active_occurrence___1-1',
8500 B),
8501 value_ht(B, C),
8502 C=suspension(_, _, D),
8503 A=memo_has_active_occurrence(D).
8504'$enumerate_constraints'(use_auxiliary_predicate, A) :-
8505 nb_getval('$chr_store_multi_hash_chr_translate____use_auxiliary_predicate___1-1',
8506 B),
8507 value_ht(B, C),
8508 C=suspension(_, _, D),
8509 A=use_auxiliary_predicate(D).
8510'$enumerate_constraints'(use_auxiliary_predicate, A) :-
8511 nb_getval('$chr_store_multi_hash_chr_translate____use_auxiliary_predicate___2-1',
8512 B),
8513 value_ht(B, C),
8514 C=suspension(_, _, D, E),
8515 A=use_auxiliary_predicate(D, E).
8516'$enumerate_constraints'(use_auxiliary_module, A) :-
8517 nb_getval('$chr_store_multi_hash_chr_translate____use_auxiliary_module___1-1',
8518 B),
8519 value_ht(B, C),
8520 C=suspension(_, _, D),
8521 A=use_auxiliary_module(D).
8522'$enumerate_constraints'(functional_dependency, A) :-
8523 nb_getval('$chr_store_multi_hash_chr_translate____functional_dependency___4-1',
8524 B),
8525 value_ht(B, C),
8526 C=suspension(_, _, D, E, F, G),
8527 A=functional_dependency(D, E, F, G).
8528'$enumerate_constraints'(initial_call_pattern, A) :-
8529 nb_getval('$chr_store_multi_hash_chr_translate____initial_call_pattern___1-1',
8530 B),
8531 value_ht(B, C),
8532 C=suspension(_, _, _, D),
8533 A=initial_call_pattern(D).
8534'$enumerate_constraints'(call_pattern, A) :-
8535 nb_getval('$chr_store_multi_hash_chr_translate____call_pattern___1-1',
8536 B),
8537 value_ht(B, C),
8538 C=suspension(_, _, D),
8539 A=call_pattern(D).
8540'$enumerate_constraints'(final_answer_pattern, A) :-
8541 nb_getval('$chr_store_multi_hash_chr_translate____final_answer_pattern___2-1',
8542 B),
8543 value_ht(B, C),
8544 C=suspension(_, _, _, D, E),
8545 A=final_answer_pattern(D, E).
8546'$enumerate_constraints'(abstract_constraints, A) :-
8547 nb_getval('$chr_store_global_ground_chr_translate____abstract_constraints___1',
8548 B),
8549 member(C, B),
8550 C=suspension(_, _, _, D),
8551 A=abstract_constraints(D).
8552'$enumerate_constraints'(depends_on, A) :-
8553 nb_getval('$chr_store_multi_hash_chr_translate____depends_on___2-1', B),
8554 value_ht(B, C),
8555 C=suspension(_, _, _, D, E),
8556 A=depends_on(D, E).
8557'$enumerate_constraints'(depends_on_ap, A) :-
8558 nb_getval('$chr_store_multi_hash_chr_translate____depends_on_ap___4-2',
8559 B),
8560 value_ht(B, C),
8561 C=suspension(_, _, _, D, E, F, G),
8562 A=depends_on_ap(D, E, F, G).
8563'$enumerate_constraints'(depends_on_goal, A) :-
8564 nb_getval('$chr_store_multi_hash_chr_translate____depends_on_goal___2-2',
8565 B),
8566 value_ht(B, C),
8567 C=suspension(_, _, _, D, E),
8568 A=depends_on_goal(D, E).
8569'$enumerate_constraints'(ai_observed_internal, A) :-
8570 nb_getval('$chr_store_global_ground_chr_translate____ai_observed_internal___2',
8571 B),
8572 member(C, B),
8573 C=suspension(_, _, _, D, E),
8574 A=ai_observed_internal(D, E).
8575'$enumerate_constraints'(ai_not_observed_internal, A) :-
8576 nb_getval('$chr_store_global_ground_chr_translate____ai_not_observed_internal___2',
8577 B),
8578 member(C, B),
8579 C=suspension(_, _, _, D, E),
8580 A=ai_not_observed_internal(D, E).
8581'$enumerate_constraints'(ai_not_observed, A) :-
8582 nb_getval('$chr_store_multi_hash_chr_translate____ai_not_observed___2-12',
8583 B),
8584 value_ht(B, C),
8585 C=suspension(_, _, D, E),
8586 A=ai_not_observed(D, E).
8587'$enumerate_constraints'(depends_on_as, A) :-
8588 nb_getval('$chr_store_multi_hash_chr_translate____depends_on_as___3-3',
8589 B),
8590 value_ht(B, C),
8591 C=suspension(_, _, _, D, E, F),
8592 A=depends_on_as(D, E, F).
8593'$enumerate_constraints'(ai_observation_gather_results, A) :-
8594 nb_getval('$chr_store_global_ground_chr_translate____ai_observation_gather_results___0',
8595 B),
8596 member(C, B),
8597 C=suspension(_, _, _),
8598 A=ai_observation_gather_results.
8599'$enumerate_constraints'(ai_observation_memoed_simplification_rest_heads, A) :-
8600 nb_getval('$chr_store_multi_hash_chr_translate____ai_observation_memoed_simplification_rest_heads___3-12',
8601 B),
8602 value_ht(B, C),
8603 C=suspension(_, _, D, E, F),
8604 A=ai_observation_memoed_simplification_rest_heads(D, E, F).
8605'$enumerate_constraints'(ai_observation_memoed_propagation_rest_heads, A) :-
8606 nb_getval('$chr_store_multi_hash_chr_translate____ai_observation_memoed_propagation_rest_heads___3-12',
8607 B),
8608 value_ht(B, C),
8609 C=suspension(_, _, D, E, F),
8610 A=ai_observation_memoed_propagation_rest_heads(D, E, F).
8611'$enumerate_constraints'(ai_observation_memoed_abstract_goal, A) :-
8612 nb_getval('$chr_store_multi_hash_chr_translate____ai_observation_memoed_abstract_goal___2-1',
8613 B),
8614 value_ht(B, C),
8615 C=suspension(_, _, D, E),
8616 A=ai_observation_memoed_abstract_goal(D, E).
8617'$enumerate_constraints'(ai_observation_memo_abstract_goal, A) :-
8618 nb_getval('$chr_store_global_ground_chr_translate____ai_observation_memo_abstract_goal___2',
8619 B),
8620 member(C, B),
8621 C=suspension(_, _, _, D, E),
8622 A=ai_observation_memo_abstract_goal(D, E).
8623'$enumerate_constraints'(partial_wake_analysis, A) :-
8624 nb_getval('$chr_store_global_ground_chr_translate____partial_wake_analysis___0',
8625 B),
8626 member(C, B),
8627 C=suspension(_, _, _, _),
8628 A=partial_wake_analysis.
8629'$enumerate_constraints'(no_partial_wake, A) :-
8630 nb_getval('$chr_store_multi_hash_chr_translate____no_partial_wake___1-1',
8631 B),
8632 value_ht(B, C),
8633 C=suspension(_, _, D),
8634 A=no_partial_wake(D).
8635'$enumerate_constraints'(phase_end, A) :-
8636 nb_getval('$chr_store_multi_hash_chr_translate____phase_end___1-1', B),
8637 value_ht(B, C),
8638 C=suspension(_, _, D),
8639 A=phase_end(D).
8640'$enumerate_constraints'(delay_phase_end, A) :-
8641 nb_getval('$chr_store_multi_hash_chr_translate____delay_phase_end___2-1',
8642 B),
8643 value_ht(B, C),
8644 C=suspension(_, _, D, E),
8645 A=delay_phase_end(D, E).
8646'$enumerate_constraints'(does_use_history, A) :-
8647 nb_getval('$chr_store_multi_hash_chr_translate____does_use_history___2-1',
8648 B),
8649 value_ht(B, C),
8650 C=suspension(_, _, D, E),
8651 A=does_use_history(D, E).
8652'$enumerate_constraints'(does_use_field, A) :-
8653 nb_getval('$chr_store_multi_hash_chr_translate____does_use_field___2-12',
8654 B),
8655 value_ht(B, C),
8656 C=suspension(_, _, D, E),
8657 A=does_use_field(D, E).
8658'$enumerate_constraints'(uses_state, A) :-
8659 nb_getval('$chr_store_multi_hash_chr_translate____uses_state___2-12',
8660 B),
8661 value_ht(B, C),
8662 C=suspension(_, _, D, E),
8663 A=uses_state(D, E).
8664'$enumerate_constraints'(if_used_state, A) :-
8665 nb_getval('$chr_store_global_ground_chr_translate____if_used_state___5',
8666 B),
8667 member(C, B),
8668 C=suspension(_, _, _, D, E, F, G, H),
8669 A=if_used_state(D, E, F, G, H).
8670'$enumerate_constraints'(used_states_known, A) :-
8671 nb_getval('$chr_store_global_ground_chr_translate____used_states_known___0',
8672 B),
8673 member(C, B),
8674 C=suspension(_, _, _),
8675 A=used_states_known.
8676'$enumerate_constraints'(stored_assertion, A) :-
8677 nb_getval('$chr_store_multi_hash_chr_translate____stored_assertion___1-1',
8678 B),
8679 value_ht(B, C),
8680 C=suspension(_, _, D),
8681 A=stored_assertion(D).
8682'$enumerate_constraints'(never_stored_default, A) :-
8683 nb_getval('$chr_store_multi_hash_chr_translate____never_stored_default___2-1',
8684 B),
8685 value_ht(B, C),
8686 C=suspension(_, _, D, E),
8687 A=never_stored_default(D, E).
8688'$enumerate_constraints'(never_stored_rules, A) :-
8689 nb_getval('$chr_store_global_ground_chr_translate____never_stored_rules___2',
8690 B),
8691 member(C, B),
8692 C=suspension(_, _, _, D, E),
8693 A=never_stored_rules(D, E).
8694'$enumerate_constraints'(continuation_occurrence, A) :-
8695 nb_getval('$chr_store_multi_hash_chr_translate____continuation_occurrence___3-12',
8696 B),
8697 value_ht(B, C),
8698 C=suspension(_, _, D, E, F),
8699 A=continuation_occurrence(D, E, F).
8700'$enumerate_constraints'(skip_to_next_id, A) :-
8701 nb_getval('$chr_store_multi_hash_chr_translate____skip_to_next_id___2-12',
8702 B),
8703 value_ht(B, C),
8704 C=suspension(_, _, _, D, E),
8705 A=skip_to_next_id(D, E).
8706'$enumerate_constraints'(set_occurrence_code_id, A) :-
8707 nb_getval('$chr_store_multi_hash_chr_translate____set_occurrence_code_id___3-12',
8708 B),
8709 value_ht(B, C),
8710 C=suspension(_, _, D, E, F),
8711 A=set_occurrence_code_id(D, E, F).
8712'$enumerate_constraints'(occurrence_code_id, A) :-
8713 nb_getval('$chr_store_multi_hash_chr_translate____occurrence_code_id___3-12',
8714 B),
8715 value_ht(B, C),
8716 C=suspension(_, _, D, E, F),
8717 A=occurrence_code_id(D, E, F).
8718'$enumerate_constraints'(chr_constants, A) :-
8719 nb_getval('$chr_store_global_ground_chr_translate____chr_constants___1',
8720 B),
8721 member(C, B),
8722 C=suspension(_, _, _, D),
8723 A=chr_constants(D).
8724'$enumerate_constraints'(print_chr_constants, A) :-
8725 nb_getval('$chr_store_global_ground_chr_translate____print_chr_constants___0',
8726 B),
8727 member(C, B),
8728 C=suspension(_, _, _),
8729 A=print_chr_constants.
8730'$via1_multi_hash_source_location___2-1'(A, B) :-
8731 nb_getval('$chr_store_multi_hash_chr_translate____source_location___2-1',
8732 C),
8733 lookup_ht(C, A, B).
8734'$via1_multi_hash_indexed_argument___2-1'(A, B) :-
8735 nb_getval('$chr_store_multi_hash_chr_translate____indexed_argument___2-1',
8736 C),
8737 lookup_ht(C, A, B).
8738'$via1_multi_hash_indexed_argument___2-12'(A, B) :-
8739 nb_getval('$chr_store_multi_hash_chr_translate____indexed_argument___2-12',
8740 C),
8741 lookup_ht(C, A, B).
8742'$via1_multi_hash_constraint_mode___2-1'(A, B) :-
8743 nb_getval('$chr_store_multi_hash_chr_translate____constraint_mode___2-1',
8744 C),
8745 lookup_ht(C, A, B).
8746'$via1_multi_hash_store_type___2-1'(A, B) :-
8747 nb_getval('$chr_store_multi_hash_chr_translate____store_type___2-1', C),
8748 lookup_ht(C, A, B).
8749'$via1_multi_hash_actual_store_types___2-1'(A, B) :-
8750 nb_getval('$chr_store_multi_hash_chr_translate____actual_store_types___2-1',
8751 C),
8752 lookup_ht(C, A, B).
8753'$via1_multi_hash_assumed_store_type___2-1'(A, B) :-
8754 nb_getval('$chr_store_multi_hash_chr_translate____assumed_store_type___2-1',
8755 C),
8756 lookup_ht(C, A, B).
8757'$via1_multi_hash_validate_store_type_assumption___1-1'(A, B) :-
8758 nb_getval('$chr_store_multi_hash_chr_translate____validate_store_type_assumption___1-1',
8759 C),
8760 lookup_ht(C, A, B).
8761'$via1_multi_hash_passive___2-1'(A, B) :-
8762 nb_getval('$chr_store_multi_hash_chr_translate____passive___2-1', C),
8763 lookup_ht(C, A, B).
8764'$via1_multi_hash_passive___2-12'(A, B) :-
8765 nb_getval('$chr_store_multi_hash_chr_translate____passive___2-12', C),
8766 lookup_ht(C, A, B).
8767'$via1_multi_hash_occurrence___5-15'(A, B) :-
8768 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-15',
8769 C),
8770 lookup_ht(C, A, B).
8771'$via1_multi_hash_occurrence___5-125'(A, B) :-
8772 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-125',
8773 C),
8774 lookup_ht(C, A, B).
8775'$via1_multi_hash_occurrence___5-134'(A, B) :-
8776 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-134',
8777 C),
8778 lookup_ht(C, A, B).
8779'$via1_multi_hash_occurrence___5-12'(A, B) :-
8780 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-12',
8781 C),
8782 lookup_ht(C, A, B).
8783'$via1_multi_hash_occurrence___5-3'(A, B) :-
8784 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-3', C),
8785 lookup_ht(C, A, B).
8786'$via1_multi_hash_occurrence___5-13'(A, B) :-
8787 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-13',
8788 C),
8789 lookup_ht(C, A, B).
8790'$via1_multi_hash_occurrence___5-34'(A, B) :-
8791 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-34',
8792 C),
8793 lookup_ht(C, A, B).
8794'$via1_multi_hash_occurrence___5-1'(A, B) :-
8795 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-1', C),
8796 lookup_ht(C, A, B).
8797'$via1_multi_hash_max_occurrence___2-1'(A, B) :-
8798 nb_getval('$chr_store_multi_hash_chr_translate____max_occurrence___2-1',
8799 C),
8800 lookup_ht(C, A, B).
8801'$via1_multi_hash_allocation_occurrence___2-1'(A, B) :-
8802 nb_getval('$chr_store_multi_hash_chr_translate____allocation_occurrence___2-1',
8803 C),
8804 lookup_ht(C, A, B).
8805'$via1_multi_hash_allocation_occurrence___2-12'(A, B) :-
8806 nb_getval('$chr_store_multi_hash_chr_translate____allocation_occurrence___2-12',
8807 C),
8808 lookup_ht(C, A, B).
8809'$via1_multi_hash_rule___2-1'(A, B) :-
8810 nb_getval('$chr_store_multi_hash_chr_translate____rule___2-1', C),
8811 lookup_ht(C, A, B).
8812'$via1_multi_hash_least_occurrence___2-12'(A, B) :-
8813 nb_getval('$chr_store_multi_hash_chr_translate____least_occurrence___2-12',
8814 C),
8815 lookup_ht(C, A, B).
8816'$via1_multi_hash_least_occurrence___2-1'(A, B) :-
8817 nb_getval('$chr_store_multi_hash_chr_translate____least_occurrence___2-1',
8818 C),
8819 lookup_ht(C, A, B).
8820'$via1_multi_hash_constraint_index___2-2'(A, B) :-
8821 nb_getval('$chr_store_multi_hash_chr_translate____constraint_index___2-2',
8822 C),
8823 lookup_ht(C, A, B).
8824'$via1_multi_hash_constraint_index___2-1'(A, B) :-
8825 nb_getval('$chr_store_multi_hash_chr_translate____constraint_index___2-1',
8826 C),
8827 lookup_ht(C, A, B).
8828'$via1_multi_hash_identifier_index___3-12'(A, B) :-
8829 nb_getval('$chr_store_multi_hash_chr_translate____identifier_index___3-12',
8830 C),
8831 lookup_ht(C, A, B).
8832'$via1_multi_hash_type_indexed_identifier_size___2-1'(A, B) :-
8833 nb_getval('$chr_store_multi_hash_chr_translate____type_indexed_identifier_size___2-1',
8834 C),
8835 lookup_ht(C, A, B).
8836'$via1_multi_hash_type_indexed_identifier_index___4-123'(A, B) :-
8837 nb_getval('$chr_store_multi_hash_chr_translate____type_indexed_identifier_index___4-123',
8838 C),
8839 lookup_ht(C, A, B).
8840'$via1_multi_hash_type_indexed_identifier_index___4-23'(A, B) :-
8841 nb_getval('$chr_store_multi_hash_chr_translate____type_indexed_identifier_index___4-23',
8842 C),
8843 lookup_ht(C, A, B).
8844'$via1_multi_hash_no_history___1-1'(A, B) :-
8845 nb_getval('$chr_store_multi_hash_chr_translate____no_history___1-1', C),
8846 lookup_ht(C, A, B).
8847'$chr_store_constants_chr_translate____history___3___[3]'([], '$chr_store_constants_chr_translate____history___3___[3]___[]').
8848'$via1_multi_hash_history___3-2'(A, B) :-
8849 nb_getval('$chr_store_multi_hash_chr_translate____history___3-2', C),
8850 lookup_ht(C, A, B).
8851'$via1_multi_hash_history___3-1'(A, B) :-
8852 nb_getval('$chr_store_multi_hash_chr_translate____history___3-1', C),
8853 lookup_ht(C, A, B).
8854'$via1_multi_hash_indexing_spec___2-1'(A, B) :-
8855 nb_getval('$chr_store_multi_hash_chr_translate____indexing_spec___2-1',
8856 C),
8857 lookup_ht(C, A, B).
8858'$via1_multi_hash_spawns___3-13'(A, B) :-
8859 nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-13', C),
8860 lookup_ht(C, A, B).
8861'$via1_multi_hash_spawns___3-12'(A, B) :-
8862 nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-12', C),
8863 lookup_ht(C, A, B).
8864'$via1_multi_hash_spawns___3-1'(A, B) :-
8865 nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-1', C),
8866 lookup_ht(C, A, B).
8867'$via1_multi_hash_spawns___3-3'(A, B) :-
8868 nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-3', C),
8869 lookup_ht(C, A, B).
8870'$via1_multi_hash_spawns___3-123'(A, B) :-
8871 nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-123', C),
8872 lookup_ht(C, A, B).
8873'$via1_multi_hash_spawns_all___2-1'(A, B) :-
8874 nb_getval('$chr_store_multi_hash_chr_translate____spawns_all___2-1', C),
8875 lookup_ht(C, A, B).
8876'$via1_multi_hash_spawns_all___2-12'(A, B) :-
8877 nb_getval('$chr_store_multi_hash_chr_translate____spawns_all___2-12',
8878 C),
8879 lookup_ht(C, A, B).
8880'$via1_multi_hash_spawns_all_triggers___2-1'(A, B) :-
8881 nb_getval('$chr_store_multi_hash_chr_translate____spawns_all_triggers___2-1',
8882 C),
8883 lookup_ht(C, A, B).
8884'$via1_multi_hash_spawns_all_triggers___2-12'(A, B) :-
8885 nb_getval('$chr_store_multi_hash_chr_translate____spawns_all_triggers___2-12',
8886 C),
8887 lookup_ht(C, A, B).
8888'$via1_multi_hash_actual_atomic_multi_hash_keys___3-12'(A, B) :-
8889 nb_getval('$chr_store_multi_hash_chr_translate____actual_atomic_multi_hash_keys___3-12',
8890 C),
8891 lookup_ht(C, A, B).
8892'$via1_multi_hash_actual_atomic_multi_hash_keys___3-1'(A, B) :-
8893 nb_getval('$chr_store_multi_hash_chr_translate____actual_atomic_multi_hash_keys___3-1',
8894 C),
8895 lookup_ht(C, A, B).
8896'$via1_multi_hash_actual_ground_multi_hash_keys___3-12'(A, B) :-
8897 nb_getval('$chr_store_multi_hash_chr_translate____actual_ground_multi_hash_keys___3-12',
8898 C),
8899 lookup_ht(C, A, B).
8900'$via1_multi_hash_actual_ground_multi_hash_keys___3-1'(A, B) :-
8901 nb_getval('$chr_store_multi_hash_chr_translate____actual_ground_multi_hash_keys___3-1',
8902 C),
8903 lookup_ht(C, A, B).
8904'$via1_multi_hash_actual_non_ground_multi_hash_key___2-12'(A, B) :-
8905 nb_getval('$chr_store_multi_hash_chr_translate____actual_non_ground_multi_hash_key___2-12',
8906 C),
8907 lookup_ht(C, A, B).
8908'$via1_multi_hash_prolog_global_variable___1-1'(A, B) :-
8909 nb_getval('$chr_store_multi_hash_chr_translate____prolog_global_variable___1-1',
8910 C),
8911 lookup_ht(C, A, B).
8912'$via1_multi_hash_prev_guard_list___6-1'(A, B) :-
8913 nb_getval('$chr_store_multi_hash_chr_translate____prev_guard_list___6-1',
8914 C),
8915 lookup_ht(C, A, B).
8916'$via1_multi_hash_set_all_passive___1-1'(A, B) :-
8917 nb_getval('$chr_store_multi_hash_chr_translate____set_all_passive___1-1',
8918 C),
8919 lookup_ht(C, A, B).
8920'$via1_multi_hash_make_head_matchings_explicit_memo_table___3-1'(A, B) :-
8921 nb_getval('$chr_store_multi_hash_chr_translate____make_head_matchings_explicit_memo_table___3-1',
8922 C),
8923 lookup_ht(C, A, B).
8924'$via1_multi_hash_constraint_type___2-1'(A, B) :-
8925 nb_getval('$chr_store_multi_hash_chr_translate____constraint_type___2-1',
8926 C),
8927 lookup_ht(C, A, B).
8928'$via1_multi_hash_ast_static_atomic_builtin_type_check_var___4-1'(A, B) :-
8929 nb_getval('$chr_store_multi_hash_chr_translate____ast_static_atomic_builtin_type_check_var___4-1',
8930 C),
8931 lookup_ht(C, A, B).
8932'$via1_multi_hash_ast_static_atomic_builtin_type_check_var___4-13'(A, B) :-
8933 nb_getval('$chr_store_multi_hash_chr_translate____ast_static_atomic_builtin_type_check_var___4-13',
8934 C),
8935 lookup_ht(C, A, B).
8936'$via1_multi_hash_stored___3-13'(A, B) :-
8937 nb_getval('$chr_store_multi_hash_chr_translate____stored___3-13', C),
8938 lookup_ht(C, A, B).
8939'$via1_multi_hash_stored___3-123'(A, B) :-
8940 nb_getval('$chr_store_multi_hash_chr_translate____stored___3-123', C),
8941 lookup_ht(C, A, B).
8942'$via1_multi_hash_stored_complete___3-13'(A, B) :-
8943 nb_getval('$chr_store_multi_hash_chr_translate____stored_complete___3-13',
8944 C),
8945 lookup_ht(C, A, B).
8946'$via1_multi_hash_stored_complete___3-1'(A, B) :-
8947 nb_getval('$chr_store_multi_hash_chr_translate____stored_complete___3-1',
8948 C),
8949 lookup_ht(C, A, B).
8950'$via1_multi_hash_check_all_passive___2-12'(A, B) :-
8951 nb_getval('$chr_store_multi_hash_chr_translate____check_all_passive___2-12',
8952 C),
8953 lookup_ht(C, A, B).
8954'$via1_multi_hash_check_all_passive___2-1'(A, B) :-
8955 nb_getval('$chr_store_multi_hash_chr_translate____check_all_passive___2-1',
8956 C),
8957 lookup_ht(C, A, B).
8958'$via1_multi_hash_memo_has_active_occurrence___1-1'(A, B) :-
8959 nb_getval('$chr_store_multi_hash_chr_translate____memo_has_active_occurrence___1-1',
8960 C),
8961 lookup_ht(C, A, B).
8962'$via1_multi_hash_use_auxiliary_predicate___1-1'(A, B) :-
8963 nb_getval('$chr_store_multi_hash_chr_translate____use_auxiliary_predicate___1-1',
8964 C),
8965 lookup_ht(C, A, B).
8966'$via1_multi_hash_use_auxiliary_predicate___2-1'(A, B) :-
8967 nb_getval('$chr_store_multi_hash_chr_translate____use_auxiliary_predicate___2-1',
8968 C),
8969 lookup_ht(C, A, B).
8970'$via1_multi_hash_use_auxiliary_predicate___2-12'(A, B) :-
8971 nb_getval('$chr_store_multi_hash_chr_translate____use_auxiliary_predicate___2-12',
8972 C),
8973 lookup_ht(C, A, B).
8974'$via1_multi_hash_use_auxiliary_module___1-1'(A, B) :-
8975 nb_getval('$chr_store_multi_hash_chr_translate____use_auxiliary_module___1-1',
8976 C),
8977 lookup_ht(C, A, B).
8978'$via1_multi_hash_functional_dependency___4-1'(A, B) :-
8979 nb_getval('$chr_store_multi_hash_chr_translate____functional_dependency___4-1',
8980 C),
8981 lookup_ht(C, A, B).
8982'$via1_multi_hash_functional_dependency___4-12'(A, B) :-
8983 nb_getval('$chr_store_multi_hash_chr_translate____functional_dependency___4-12',
8984 C),
8985 lookup_ht(C, A, B).
8986'$via1_multi_hash_initial_call_pattern___1-1'(A, B) :-
8987 nb_getval('$chr_store_multi_hash_chr_translate____initial_call_pattern___1-1',
8988 C),
8989 lookup_ht(C, A, B).
8990'$via1_multi_hash_call_pattern___1-1'(A, B) :-
8991 nb_getval('$chr_store_multi_hash_chr_translate____call_pattern___1-1',
8992 C),
8993 lookup_ht(C, A, B).
8994'$via1_multi_hash_final_answer_pattern___2-1'(A, B) :-
8995 nb_getval('$chr_store_multi_hash_chr_translate____final_answer_pattern___2-1',
8996 C),
8997 lookup_ht(C, A, B).
8998'$via1_multi_hash_depends_on___2-1'(A, B) :-
8999 nb_getval('$chr_store_multi_hash_chr_translate____depends_on___2-1', C),
9000 lookup_ht(C, A, B).
9001'$via1_multi_hash_depends_on___2-2'(A, B) :-
9002 nb_getval('$chr_store_multi_hash_chr_translate____depends_on___2-2', C),
9003 lookup_ht(C, A, B).
9004'$via1_multi_hash_depends_on_ap___4-2'(A, B) :-
9005 nb_getval('$chr_store_multi_hash_chr_translate____depends_on_ap___4-2',
9006 C),
9007 lookup_ht(C, A, B).
9008'$via1_multi_hash_depends_on_ap___4-3'(A, B) :-
9009 nb_getval('$chr_store_multi_hash_chr_translate____depends_on_ap___4-3',
9010 C),
9011 lookup_ht(C, A, B).
9012'$via1_multi_hash_depends_on_goal___2-2'(A, B) :-
9013 nb_getval('$chr_store_multi_hash_chr_translate____depends_on_goal___2-2',
9014 C),
9015 lookup_ht(C, A, B).
9016'$via1_multi_hash_ai_observed_internal___2-12'(A, B) :-
9017 nb_getval('$chr_store_multi_hash_chr_translate____ai_observed_internal___2-12',
9018 C),
9019 lookup_ht(C, A, B).
9020'$via1_multi_hash_ai_not_observed_internal___2-12'(A, B) :-
9021 nb_getval('$chr_store_multi_hash_chr_translate____ai_not_observed_internal___2-12',
9022 C),
9023 lookup_ht(C, A, B).
9024'$via1_multi_hash_ai_not_observed___2-12'(A, B) :-
9025 nb_getval('$chr_store_multi_hash_chr_translate____ai_not_observed___2-12',
9026 C),
9027 lookup_ht(C, A, B).
9028'$via1_multi_hash_depends_on_as___3-3'(A, B) :-
9029 nb_getval('$chr_store_multi_hash_chr_translate____depends_on_as___3-3',
9030 C),
9031 lookup_ht(C, A, B).
9032'$via1_multi_hash_depends_on_as___3-2'(A, B) :-
9033 nb_getval('$chr_store_multi_hash_chr_translate____depends_on_as___3-2',
9034 C),
9035 lookup_ht(C, A, B).
9036'$via1_multi_hash_ai_observation_memoed_simplification_rest_heads___3-12'(A, B) :-
9037 nb_getval('$chr_store_multi_hash_chr_translate____ai_observation_memoed_simplification_rest_heads___3-12',
9038 C),
9039 lookup_ht(C, A, B).
9040'$via1_multi_hash_ai_observation_memoed_propagation_rest_heads___3-12'(A, B) :-
9041 nb_getval('$chr_store_multi_hash_chr_translate____ai_observation_memoed_propagation_rest_heads___3-12',
9042 C),
9043 lookup_ht(C, A, B).
9044'$via1_multi_hash_ai_observation_memoed_abstract_goal___2-1'(A, B) :-
9045 nb_getval('$chr_store_multi_hash_chr_translate____ai_observation_memoed_abstract_goal___2-1',
9046 C),
9047 lookup_ht(C, A, B).
9048'$via1_multi_hash_no_partial_wake___1-1'(A, B) :-
9049 nb_getval('$chr_store_multi_hash_chr_translate____no_partial_wake___1-1',
9050 C),
9051 lookup_ht(C, A, B).
9052'$via1_multi_hash_phase_end___1-1'(A, B) :-
9053 nb_getval('$chr_store_multi_hash_chr_translate____phase_end___1-1', C),
9054 lookup_ht(C, A, B).
9055'$via1_multi_hash_delay_phase_end___2-1'(A, B) :-
9056 nb_getval('$chr_store_multi_hash_chr_translate____delay_phase_end___2-1',
9057 C),
9058 lookup_ht(C, A, B).
9059'$via1_multi_hash_does_use_history___2-1'(A, B) :-
9060 nb_getval('$chr_store_multi_hash_chr_translate____does_use_history___2-1',
9061 C),
9062 lookup_ht(C, A, B).
9063'$via1_multi_hash_does_use_history___2-12'(A, B) :-
9064 nb_getval('$chr_store_multi_hash_chr_translate____does_use_history___2-12',
9065 C),
9066 lookup_ht(C, A, B).
9067'$via1_multi_hash_does_use_field___2-12'(A, B) :-
9068 nb_getval('$chr_store_multi_hash_chr_translate____does_use_field___2-12',
9069 C),
9070 lookup_ht(C, A, B).
9071'$via1_multi_hash_uses_state___2-12'(A, B) :-
9072 nb_getval('$chr_store_multi_hash_chr_translate____uses_state___2-12',
9073 C),
9074 lookup_ht(C, A, B).
9075'$via1_multi_hash_if_used_state___5-12'(A, B) :-
9076 nb_getval('$chr_store_multi_hash_chr_translate____if_used_state___5-12',
9077 C),
9078 lookup_ht(C, A, B).
9079'$via1_multi_hash_stored_assertion___1-1'(A, B) :-
9080 nb_getval('$chr_store_multi_hash_chr_translate____stored_assertion___1-1',
9081 C),
9082 lookup_ht(C, A, B).
9083'$via1_multi_hash_never_stored_default___2-1'(A, B) :-
9084 nb_getval('$chr_store_multi_hash_chr_translate____never_stored_default___2-1',
9085 C),
9086 lookup_ht(C, A, B).
9087'$via1_multi_hash_continuation_occurrence___3-12'(A, B) :-
9088 nb_getval('$chr_store_multi_hash_chr_translate____continuation_occurrence___3-12',
9089 C),
9090 lookup_ht(C, A, B).
9091'$via1_multi_hash_skip_to_next_id___2-12'(A, B) :-
9092 nb_getval('$chr_store_multi_hash_chr_translate____skip_to_next_id___2-12',
9093 C),
9094 lookup_ht(C, A, B).
9095'$via1_multi_hash_set_occurrence_code_id___3-12'(A, B) :-
9096 nb_getval('$chr_store_multi_hash_chr_translate____set_occurrence_code_id___3-12',
9097 C),
9098 lookup_ht(C, A, B).
9099'$via1_multi_hash_occurrence_code_id___3-12'(A, B) :-
9100 nb_getval('$chr_store_multi_hash_chr_translate____occurrence_code_id___3-12',
9101 C),
9102 lookup_ht(C, A, B).
9103'$chr_initialization' :-
9104 nb_setval('$chr_store_global_ground_chr_translate____print_chr_constants___0',
9105 []),
9106 nb_setval('$chr_store_global_ground_chr_translate____chr_constants___1', []),
9107 new_ht(A),
9108 nb_setval('$chr_store_multi_hash_chr_translate____occurrence_code_id___3-12',
9109 A),
9110 new_ht(B),
9111 nb_setval('$chr_store_multi_hash_chr_translate____set_occurrence_code_id___3-12',
9112 B),
9113 new_ht(C),
9114 nb_setval('$chr_store_multi_hash_chr_translate____skip_to_next_id___2-12',
9115 C),
9116 new_ht(D),
9117 nb_setval('$chr_store_multi_hash_chr_translate____continuation_occurrence___3-12',
9118 D),
9119 nb_setval('$chr_store_global_ground_chr_translate____never_stored_rules___2',
9120 []),
9121 new_ht(E),
9122 nb_setval('$chr_store_multi_hash_chr_translate____never_stored_default___2-1',
9123 E),
9124 new_ht(F),
9125 nb_setval('$chr_store_multi_hash_chr_translate____stored_assertion___1-1',
9126 F),
9127 nb_setval('$chr_store_global_ground_chr_translate____used_states_known___0',
9128 []),
9129 new_ht(G),
9130 nb_setval('$chr_store_multi_hash_chr_translate____if_used_state___5-12',
9131 G),
9132 nb_setval('$chr_store_global_ground_chr_translate____if_used_state___5', []),
9133 new_ht(H),
9134 nb_setval('$chr_store_multi_hash_chr_translate____uses_state___2-12',
9135 H),
9136 new_ht(I),
9137 nb_setval('$chr_store_multi_hash_chr_translate____does_use_field___2-12',
9138 I),
9139 new_ht(J),
9140 nb_setval('$chr_store_multi_hash_chr_translate____does_use_history___2-12',
9141 J),
9142 new_ht(K),
9143 nb_setval('$chr_store_multi_hash_chr_translate____does_use_history___2-1',
9144 K),
9145 new_ht(L),
9146 nb_setval('$chr_store_multi_hash_chr_translate____delay_phase_end___2-1',
9147 L),
9148 new_ht(M),
9149 nb_setval('$chr_store_multi_hash_chr_translate____phase_end___1-1', M),
9150 new_ht(N),
9151 nb_setval('$chr_store_multi_hash_chr_translate____no_partial_wake___1-1',
9152 N),
9153 nb_setval('$chr_store_global_ground_chr_translate____partial_wake_analysis___0',
9154 []),
9155 nb_setval('$chr_store_global_ground_chr_translate____ai_observation_memo_abstract_goal___2',
9156 []),
9157 new_ht(O),
9158 nb_setval('$chr_store_multi_hash_chr_translate____ai_observation_memoed_abstract_goal___2-1',
9159 O),
9160 new_ht(P),
9161 nb_setval('$chr_store_multi_hash_chr_translate____ai_observation_memoed_propagation_rest_heads___3-12',
9162 P),
9163 new_ht(Q),
9164 nb_setval('$chr_store_multi_hash_chr_translate____ai_observation_memoed_simplification_rest_heads___3-12',
9165 Q),
9166 nb_setval('$chr_store_global_ground_chr_translate____ai_observation_gather_results___0',
9167 []),
9168 new_ht(R),
9169 nb_setval('$chr_store_multi_hash_chr_translate____depends_on_as___3-2',
9170 R),
9171 new_ht(S),
9172 nb_setval('$chr_store_multi_hash_chr_translate____depends_on_as___3-3',
9173 S),
9174 new_ht(T),
9175 nb_setval('$chr_store_multi_hash_chr_translate____ai_not_observed___2-12',
9176 T),
9177 new_ht(U),
9178 nb_setval('$chr_store_multi_hash_chr_translate____ai_not_observed_internal___2-12',
9179 U),
9180 nb_setval('$chr_store_global_ground_chr_translate____ai_not_observed_internal___2',
9181 []),
9182 new_ht(V),
9183 nb_setval('$chr_store_multi_hash_chr_translate____ai_observed_internal___2-12',
9184 V),
9185 nb_setval('$chr_store_global_ground_chr_translate____ai_observed_internal___2',
9186 []),
9187 new_ht(W),
9188 nb_setval('$chr_store_multi_hash_chr_translate____depends_on_goal___2-2',
9189 W),
9190 new_ht(X),
9191 nb_setval('$chr_store_multi_hash_chr_translate____depends_on_ap___4-3',
9192 X),
9193 new_ht(Y),
9194 nb_setval('$chr_store_multi_hash_chr_translate____depends_on_ap___4-2',
9195 Y),
9196 new_ht(Z),
9197 nb_setval('$chr_store_multi_hash_chr_translate____depends_on___2-2',
9198 Z),
9199 new_ht(A1),
9200 nb_setval('$chr_store_multi_hash_chr_translate____depends_on___2-1',
9201 A1),
9202 nb_setval('$chr_store_global_ground_chr_translate____abstract_constraints___1',
9203 []),
9204 new_ht(B1),
9205 nb_setval('$chr_store_multi_hash_chr_translate____final_answer_pattern___2-1',
9206 B1),
9207 new_ht(C1),
9208 nb_setval('$chr_store_multi_hash_chr_translate____call_pattern___1-1',
9209 C1),
9210 new_ht(D1),
9211 nb_setval('$chr_store_multi_hash_chr_translate____initial_call_pattern___1-1',
9212 D1),
9213 new_ht(E1),
9214 nb_setval('$chr_store_multi_hash_chr_translate____functional_dependency___4-12',
9215 E1),
9216 new_ht(F1),
9217 nb_setval('$chr_store_multi_hash_chr_translate____functional_dependency___4-1',
9218 F1),
9219 new_ht(G1),
9220 nb_setval('$chr_store_multi_hash_chr_translate____use_auxiliary_module___1-1',
9221 G1),
9222 new_ht(H1),
9223 nb_setval('$chr_store_multi_hash_chr_translate____use_auxiliary_predicate___2-12',
9224 H1),
9225 new_ht(I1),
9226 nb_setval('$chr_store_multi_hash_chr_translate____use_auxiliary_predicate___2-1',
9227 I1),
9228 new_ht(J1),
9229 nb_setval('$chr_store_multi_hash_chr_translate____use_auxiliary_predicate___1-1',
9230 J1),
9231 new_ht(K1),
9232 nb_setval('$chr_store_multi_hash_chr_translate____memo_has_active_occurrence___1-1',
9233 K1),
9234 nb_setval('$chr_store_global_ground_chr_translate____constraints_code1___3',
9235 []),
9236 new_ht(L1),
9237 nb_setval('$chr_store_multi_hash_chr_translate____check_all_passive___2-1',
9238 L1),
9239 new_ht(M1),
9240 nb_setval('$chr_store_multi_hash_chr_translate____check_all_passive___2-12',
9241 M1),
9242 new_ht(N1),
9243 nb_setval('$chr_store_multi_hash_chr_translate____stored_complete___3-1',
9244 N1),
9245 new_ht(O1),
9246 nb_setval('$chr_store_multi_hash_chr_translate____stored_complete___3-13',
9247 O1),
9248 new_ht(P1),
9249 nb_setval('$chr_store_multi_hash_chr_translate____stored___3-123', P1),
9250 new_ht(Q1),
9251 nb_setval('$chr_store_multi_hash_chr_translate____stored___3-13', Q1),
9252 nb_setval('$chr_store_global_list_chr_translate____atomic_type___1', []),
9253 nb_setval('$chr_store_global_ground_chr_translate____dynamic_type_check_clauses___1',
9254 []),
9255 nb_setval('$chr_store_global_ground_chr_translate____dynamic_type_check___0',
9256 []),
9257 new_ht(R1),
9258 nb_setval('$chr_store_multi_hash_chr_translate____ast_static_atomic_builtin_type_check_var___4-13',
9259 R1),
9260 new_ht(S1),
9261 nb_setval('$chr_store_multi_hash_chr_translate____ast_static_atomic_builtin_type_check_var___4-1',
9262 S1),
9263 nb_setval('$chr_store_global_list_chr_translate____ast_static_type_check_var___4',
9264 []),
9265 nb_setval('$chr_store_global_ground_chr_translate____static_type_check___2',
9266 []),
9267 nb_setval('$chr_store_global_ground_chr_translate____types_modes_condition___3',
9268 []),
9269 nb_setval('$chr_store_global_list_chr_translate____unalias_type___2', []),
9270 new_ht(T1),
9271 nb_setval('$chr_store_multi_hash_chr_translate____constraint_type___2-1',
9272 T1),
9273 nb_setval('$chr_store_global_ground_chr_translate____constraint_type___2',
9274 []),
9275 nb_setval('$chr_store_global_list_chr_translate____type_alias___2', []),
9276 nb_setval('$chr_store_global_list_chr_translate____type_definition___2', []),
9277 nb_setval('$chr_store_global_ground_chr_translate____multiple_occ_constraints_checked___1',
9278 []),
9279 new_ht(U1),
9280 nb_setval('$chr_store_multi_hash_chr_translate____make_head_matchings_explicit_memo_table___3-1',
9281 U1),
9282 nb_setval('$chr_store_global_ground_chr_translate____precompute_head_matchings___0',
9283 []),
9284 new_ht(V1),
9285 nb_setval('$chr_store_multi_hash_chr_translate____set_all_passive___1-1',
9286 V1),
9287 new_ht(W1),
9288 nb_setval('$chr_store_multi_hash_chr_translate____prev_guard_list___6-1',
9289 W1),
9290 nb_setval('$chr_store_global_ground_chr_translate____prev_guard_list___6',
9291 []),
9292 nb_setval('$chr_store_global_ground_chr_translate____get_bg_info_answer___1',
9293 []),
9294 nb_setval('$chr_store_global_list_chr_translate____get_bg_info___2', []),
9295 nb_setval('$chr_store_global_list_chr_translate____background_info___2', []),
9296 nb_setval('$chr_store_global_ground_chr_translate____background_info___1',
9297 []),
9298 new_ht(X1),
9299 nb_setval('$chr_store_multi_hash_chr_translate____prolog_global_variable___1-1',
9300 X1),
9301 nb_setval('$chr_store_global_ground_chr_translate____prolog_global_variable___1',
9302 []),
9303 nb_setval('$chr_store_global_list_chr_translate____fresh_symbol___2', []),
9304 nb_setval('$chr_store_global_list_chr_translate____symbol_count___2', []),
9305 new_ht(Y1),
9306 nb_setval('$chr_store_multi_hash_chr_translate____actual_non_ground_multi_hash_key___2-12',
9307 Y1),
9308 new_ht(Z1),
9309 nb_setval('$chr_store_multi_hash_chr_translate____actual_ground_multi_hash_keys___3-1',
9310 Z1),
9311 new_ht(A2),
9312 nb_setval('$chr_store_multi_hash_chr_translate____actual_ground_multi_hash_keys___3-12',
9313 A2),
9314 new_ht(B2),
9315 nb_setval('$chr_store_multi_hash_chr_translate____actual_atomic_multi_hash_keys___3-1',
9316 B2),
9317 new_ht(C2),
9318 nb_setval('$chr_store_multi_hash_chr_translate____actual_atomic_multi_hash_keys___3-12',
9319 C2),
9320 nb_setval('$chr_store_global_ground_chr_translate____module_initializer___1',
9321 []),
9322 nb_setval('$chr_store_global_ground_chr_translate____find_empty_named_histories___0',
9323 []),
9324 nb_setval('$chr_store_global_list_chr_translate____generate_empty_named_history_initialisation___1',
9325 []),
9326 nb_setval('$chr_store_global_ground_chr_translate____empty_named_history_initialisations___2',
9327 []),
9328 nb_setval('$chr_store_global_ground_chr_translate____spawns_all_triggers_implies_spawns_all___0',
9329 []),
9330 new_ht(D2),
9331 nb_setval('$chr_store_multi_hash_chr_translate____spawns_all_triggers___2-12',
9332 D2),
9333 new_ht(E2),
9334 nb_setval('$chr_store_multi_hash_chr_translate____spawns_all_triggers___2-1',
9335 E2),
9336 nb_setval('$chr_store_global_ground_chr_translate____spawns_all_triggers___2',
9337 []),
9338 new_ht(F2),
9339 nb_setval('$chr_store_multi_hash_chr_translate____spawns_all___2-12',
9340 F2),
9341 new_ht(G2),
9342 nb_setval('$chr_store_multi_hash_chr_translate____spawns_all___2-1',
9343 G2),
9344 new_ht(H2),
9345 nb_setval('$chr_store_multi_hash_chr_translate____spawns___3-123', H2),
9346 new_ht(I2),
9347 nb_setval('$chr_store_multi_hash_chr_translate____spawns___3-3', I2),
9348 new_ht(J2),
9349 nb_setval('$chr_store_multi_hash_chr_translate____spawns___3-1', J2),
9350 new_ht(K2),
9351 nb_setval('$chr_store_multi_hash_chr_translate____spawns___3-12', K2),
9352 nb_setval('$chr_store_global_ground_chr_translate____spawns___3', []),
9353 new_ht(L2),
9354 nb_setval('$chr_store_multi_hash_chr_translate____spawns___3-13', L2),
9355 nb_setval('$chr_store_global_ground_chr_translate____observation_analysis___1',
9356 []),
9357 new_ht(M2),
9358 nb_setval('$chr_store_multi_hash_chr_translate____indexing_spec___2-1',
9359 M2),
9360 new_ht(N2),
9361 nb_setval('$chr_store_multi_hash_chr_translate____history___3-1', N2),
9362 new_ht(O2),
9363 nb_setval('$chr_store_multi_hash_chr_translate____history___3-2', O2),
9364 nb_setval('$chr_store_constants_chr_translate____history___3___[3]___[]', []),
9365 new_ht(P2),
9366 nb_setval('$chr_store_multi_hash_chr_translate____no_history___1-1',
9367 P2),
9368 new_ht(Q2),
9369 nb_setval('$chr_store_multi_hash_chr_translate____type_indexed_identifier_index___4-23',
9370 Q2),
9371 new_ht(R2),
9372 nb_setval('$chr_store_multi_hash_chr_translate____type_indexed_identifier_index___4-123',
9373 R2),
9374 new_ht(S2),
9375 nb_setval('$chr_store_multi_hash_chr_translate____type_indexed_identifier_size___2-1',
9376 S2),
9377 new_ht(T2),
9378 nb_setval('$chr_store_multi_hash_chr_translate____identifier_index___3-12',
9379 T2),
9380 nb_setval('$chr_store_global_ground_chr_translate____identifier_size___1',
9381 []),
9382 nb_setval('$chr_store_global_ground_chr_translate____max_constraint_index___1',
9383 []),
9384 new_ht(U2),
9385 nb_setval('$chr_store_multi_hash_chr_translate____constraint_index___2-1',
9386 U2),
9387 new_ht(V2),
9388 nb_setval('$chr_store_multi_hash_chr_translate____constraint_index___2-2',
9389 V2),
9390 new_ht(W2),
9391 nb_setval('$chr_store_multi_hash_chr_translate____least_occurrence___2-1',
9392 W2),
9393 new_ht(X2),
9394 nb_setval('$chr_store_multi_hash_chr_translate____least_occurrence___2-12',
9395 X2),
9396 new_ht(Y2),
9397 nb_setval('$chr_store_multi_hash_chr_translate____rule___2-1', Y2),
9398 nb_setval('$chr_store_global_ground_chr_translate____rule___2', []),
9399 new_ht(Z2),
9400 nb_setval('$chr_store_multi_hash_chr_translate____allocation_occurrence___2-12',
9401 Z2),
9402 new_ht(A3),
9403 nb_setval('$chr_store_multi_hash_chr_translate____allocation_occurrence___2-1',
9404 A3),
9405 new_ht(B3),
9406 nb_setval('$chr_store_multi_hash_chr_translate____max_occurrence___2-1',
9407 B3),
9408 new_ht(C3),
9409 nb_setval('$chr_store_multi_hash_chr_translate____occurrence___5-1',
9410 C3),
9411 new_ht(D3),
9412 nb_setval('$chr_store_multi_hash_chr_translate____occurrence___5-34',
9413 D3),
9414 new_ht(E3),
9415 nb_setval('$chr_store_multi_hash_chr_translate____occurrence___5-13',
9416 E3),
9417 new_ht(F3),
9418 nb_setval('$chr_store_multi_hash_chr_translate____occurrence___5-3',
9419 F3),
9420 new_ht(G3),
9421 nb_setval('$chr_store_multi_hash_chr_translate____occurrence___5-12',
9422 G3),
9423 new_ht(H3),
9424 nb_setval('$chr_store_multi_hash_chr_translate____occurrence___5-134',
9425 H3),
9426 new_ht(I3),
9427 nb_setval('$chr_store_multi_hash_chr_translate____occurrence___5-125',
9428 I3),
9429 nb_setval('$chr_store_global_ground_chr_translate____occurrence___5', []),
9430 new_ht(J3),
9431 nb_setval('$chr_store_multi_hash_chr_translate____occurrence___5-15',
9432 J3),
9433 new_ht(K3),
9434 nb_setval('$chr_store_multi_hash_chr_translate____passive___2-12', K3),
9435 new_ht(L3),
9436 nb_setval('$chr_store_multi_hash_chr_translate____passive___2-1', L3),
9437 nb_setval('$chr_store_global_ground_chr_translate____rule_count___1', []),
9438 new_ht(M3),
9439 nb_setval('$chr_store_multi_hash_chr_translate____validate_store_type_assumption___1-1',
9440 M3),
9441 new_ht(N3),
9442 nb_setval('$chr_store_multi_hash_chr_translate____assumed_store_type___2-1',
9443 N3),
9444 new_ht(O3),
9445 nb_setval('$chr_store_multi_hash_chr_translate____actual_store_types___2-1',
9446 O3),
9447 new_ht(P3),
9448 nb_setval('$chr_store_multi_hash_chr_translate____store_type___2-1',
9449 P3),
9450 nb_setval('$chr_store_global_ground_chr_translate____none_suspended_on_variables___0',
9451 []),
9452 new_ht(Q3),
9453 nb_setval('$chr_store_multi_hash_chr_translate____constraint_mode___2-1',
9454 Q3),
9455 nb_setval('$chr_store_global_ground_chr_translate____constraint_mode___2',
9456 []),
9457 new_ht(R3),
9458 nb_setval('$chr_store_multi_hash_chr_translate____indexed_argument___2-12',
9459 R3),
9460 new_ht(S3),
9461 nb_setval('$chr_store_multi_hash_chr_translate____indexed_argument___2-1',
9462 S3),
9463 new_ht(T3),
9464 nb_setval('$chr_store_multi_hash_chr_translate____source_location___2-1',
9465 T3),
9466 nb_setval('$chr_store_global_ground_chr_translate____target_module___1', []),
9467 nb_setval('$chr_store_global_ground_chr_translate____chr_source_file___1',
9468 []).
9469:- (initialization'$chr_initialization'). 9470:- (dynamic user:exception/3). 9471:- (multifile user:exception/3). 9472user:exception(undefined_global_variable, A, retry) :-
9473 '$chr_prolog_global_variable'(A),
9474 '$chr_initialization'.
9475'$chr_prolog_global_variable'('$chr_store_global_ground_chr_translate____print_chr_constants___0').
9476'$chr_prolog_global_variable'('$chr_store_global_ground_chr_translate____chr_constants___1').
9477'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____occurrence_code_id___3-12').
9478'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____set_occurrence_code_id___3-12').
9479'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____skip_to_next_id___2-12').
9480'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____continuation_occurrence___3-12').
9481'$chr_prolog_global_variable'('$chr_store_global_ground_chr_translate____never_stored_rules___2').
9482'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____never_stored_default___2-1').
9483'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____stored_assertion___1-1').
9484'$chr_prolog_global_variable'('$chr_store_global_ground_chr_translate____used_states_known___0').
9485'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____if_used_state___5-12').
9486'$chr_prolog_global_variable'('$chr_store_global_ground_chr_translate____if_used_state___5').
9487'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____uses_state___2-12').
9488'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____does_use_field___2-12').
9489'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____does_use_history___2-12').
9490'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____does_use_history___2-1').
9491'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____delay_phase_end___2-1').
9492'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____phase_end___1-1').
9493'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____no_partial_wake___1-1').
9494'$chr_prolog_global_variable'('$chr_store_global_ground_chr_translate____partial_wake_analysis___0').
9495'$chr_prolog_global_variable'('$chr_store_global_ground_chr_translate____ai_observation_memo_abstract_goal___2').
9496'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____ai_observation_memoed_abstract_goal___2-1').
9497'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____ai_observation_memoed_propagation_rest_heads___3-12').
9498'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____ai_observation_memoed_simplification_rest_heads___3-12').
9499'$chr_prolog_global_variable'('$chr_store_global_ground_chr_translate____ai_observation_gather_results___0').
9500'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____depends_on_as___3-2').
9501'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____depends_on_as___3-3').
9502'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____ai_not_observed___2-12').
9503'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____ai_not_observed_internal___2-12').
9504'$chr_prolog_global_variable'('$chr_store_global_ground_chr_translate____ai_not_observed_internal___2').
9505'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____ai_observed_internal___2-12').
9506'$chr_prolog_global_variable'('$chr_store_global_ground_chr_translate____ai_observed_internal___2').
9507'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____depends_on_goal___2-2').
9508'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____depends_on_ap___4-3').
9509'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____depends_on_ap___4-2').
9510'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____depends_on___2-2').
9511'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____depends_on___2-1').
9512'$chr_prolog_global_variable'('$chr_store_global_ground_chr_translate____abstract_constraints___1').
9513'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____final_answer_pattern___2-1').
9514'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____call_pattern___1-1').
9515'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____initial_call_pattern___1-1').
9516'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____functional_dependency___4-12').
9517'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____functional_dependency___4-1').
9518'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____use_auxiliary_module___1-1').
9519'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____use_auxiliary_predicate___2-12').
9520'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____use_auxiliary_predicate___2-1').
9521'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____use_auxiliary_predicate___1-1').
9522'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____memo_has_active_occurrence___1-1').
9523'$chr_prolog_global_variable'('$chr_store_global_ground_chr_translate____constraints_code1___3').
9524'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____check_all_passive___2-1').
9525'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____check_all_passive___2-12').
9526'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____stored_complete___3-1').
9527'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____stored_complete___3-13').
9528'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____stored___3-123').
9529'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____stored___3-13').
9530'$chr_prolog_global_variable'('$chr_store_global_list_chr_translate____atomic_type___1').
9531'$chr_prolog_global_variable'('$chr_store_global_ground_chr_translate____dynamic_type_check_clauses___1').
9532'$chr_prolog_global_variable'('$chr_store_global_ground_chr_translate____dynamic_type_check___0').
9533'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____ast_static_atomic_builtin_type_check_var___4-13').
9534'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____ast_static_atomic_builtin_type_check_var___4-1').
9535'$chr_prolog_global_variable'('$chr_store_global_list_chr_translate____ast_static_type_check_var___4').
9536'$chr_prolog_global_variable'('$chr_store_global_ground_chr_translate____static_type_check___2').
9537'$chr_prolog_global_variable'('$chr_store_global_ground_chr_translate____types_modes_condition___3').
9538'$chr_prolog_global_variable'('$chr_store_global_list_chr_translate____unalias_type___2').
9539'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____constraint_type___2-1').
9540'$chr_prolog_global_variable'('$chr_store_global_ground_chr_translate____constraint_type___2').
9541'$chr_prolog_global_variable'('$chr_store_global_list_chr_translate____type_alias___2').
9542'$chr_prolog_global_variable'('$chr_store_global_list_chr_translate____type_definition___2').
9543'$chr_prolog_global_variable'('$chr_store_global_ground_chr_translate____multiple_occ_constraints_checked___1').
9544'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____make_head_matchings_explicit_memo_table___3-1').
9545'$chr_prolog_global_variable'('$chr_store_global_ground_chr_translate____precompute_head_matchings___0').
9546'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____set_all_passive___1-1').
9547'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____prev_guard_list___6-1').
9548'$chr_prolog_global_variable'('$chr_store_global_ground_chr_translate____prev_guard_list___6').
9549'$chr_prolog_global_variable'('$chr_store_global_ground_chr_translate____get_bg_info_answer___1').
9550'$chr_prolog_global_variable'('$chr_store_global_list_chr_translate____get_bg_info___2').
9551'$chr_prolog_global_variable'('$chr_store_global_list_chr_translate____background_info___2').
9552'$chr_prolog_global_variable'('$chr_store_global_ground_chr_translate____background_info___1').
9553'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____prolog_global_variable___1-1').
9554'$chr_prolog_global_variable'('$chr_store_global_ground_chr_translate____prolog_global_variable___1').
9555'$chr_prolog_global_variable'('$chr_store_global_list_chr_translate____fresh_symbol___2').
9556'$chr_prolog_global_variable'('$chr_store_global_list_chr_translate____symbol_count___2').
9557'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____actual_non_ground_multi_hash_key___2-12').
9558'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____actual_ground_multi_hash_keys___3-1').
9559'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____actual_ground_multi_hash_keys___3-12').
9560'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____actual_atomic_multi_hash_keys___3-1').
9561'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____actual_atomic_multi_hash_keys___3-12').
9562'$chr_prolog_global_variable'('$chr_store_global_ground_chr_translate____module_initializer___1').
9563'$chr_prolog_global_variable'('$chr_store_global_ground_chr_translate____find_empty_named_histories___0').
9564'$chr_prolog_global_variable'('$chr_store_global_list_chr_translate____generate_empty_named_history_initialisation___1').
9565'$chr_prolog_global_variable'('$chr_store_global_ground_chr_translate____empty_named_history_initialisations___2').
9566'$chr_prolog_global_variable'('$chr_store_global_ground_chr_translate____spawns_all_triggers_implies_spawns_all___0').
9567'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____spawns_all_triggers___2-12').
9568'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____spawns_all_triggers___2-1').
9569'$chr_prolog_global_variable'('$chr_store_global_ground_chr_translate____spawns_all_triggers___2').
9570'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____spawns_all___2-12').
9571'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____spawns_all___2-1').
9572'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____spawns___3-123').
9573'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____spawns___3-3').
9574'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____spawns___3-1').
9575'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____spawns___3-12').
9576'$chr_prolog_global_variable'('$chr_store_global_ground_chr_translate____spawns___3').
9577'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____spawns___3-13').
9578'$chr_prolog_global_variable'('$chr_store_global_ground_chr_translate____observation_analysis___1').
9579'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____indexing_spec___2-1').
9580'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____history___3-1').
9581'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____history___3-2').
9582'$chr_prolog_global_variable'('$chr_store_constants_chr_translate____history___3___[3]___[]').
9583'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____no_history___1-1').
9584'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____type_indexed_identifier_index___4-23').
9585'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____type_indexed_identifier_index___4-123').
9586'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____type_indexed_identifier_size___2-1').
9587'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____identifier_index___3-12').
9588'$chr_prolog_global_variable'('$chr_store_global_ground_chr_translate____identifier_size___1').
9589'$chr_prolog_global_variable'('$chr_store_global_ground_chr_translate____max_constraint_index___1').
9590'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____constraint_index___2-1').
9591'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____constraint_index___2-2').
9592'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____least_occurrence___2-1').
9593'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____least_occurrence___2-12').
9594'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____rule___2-1').
9595'$chr_prolog_global_variable'('$chr_store_global_ground_chr_translate____rule___2').
9596'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____allocation_occurrence___2-12').
9597'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____allocation_occurrence___2-1').
9598'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____max_occurrence___2-1').
9599'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____occurrence___5-1').
9600'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____occurrence___5-34').
9601'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____occurrence___5-13').
9602'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____occurrence___5-3').
9603'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____occurrence___5-12').
9604'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____occurrence___5-134').
9605'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____occurrence___5-125').
9606'$chr_prolog_global_variable'('$chr_store_global_ground_chr_translate____occurrence___5').
9607'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____occurrence___5-15').
9608'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____passive___2-12').
9609'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____passive___2-1').
9610'$chr_prolog_global_variable'('$chr_store_global_ground_chr_translate____rule_count___1').
9611'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____validate_store_type_assumption___1-1').
9612'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____assumed_store_type___2-1').
9613'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____actual_store_types___2-1').
9614'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____store_type___2-1').
9615'$chr_prolog_global_variable'('$chr_store_global_ground_chr_translate____none_suspended_on_variables___0').
9616'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____constraint_mode___2-1').
9617'$chr_prolog_global_variable'('$chr_store_global_ground_chr_translate____constraint_mode___2').
9618'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____indexed_argument___2-12').
9619'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____indexed_argument___2-1').
9620'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____source_location___2-1').
9621'$chr_prolog_global_variable'('$chr_store_global_ground_chr_translate____target_module___1').
9622'$chr_prolog_global_variable'('$chr_store_global_ground_chr_translate____chr_source_file___1').
9623chr_source_file(A) :-
9624 nb_getval('$chr_store_global_ground_chr_translate____chr_source_file___1',
9625 B),
9626 ( member(C, B),
9627 C=suspension(_, active, _, _),
9628 !
9629 ; !,
9630 chr_source_file___1__0__0__2(B, A)
9631 ).
9632chr_source_file___1__0__0__2([], A) :-
9633 chr_source_file___1__1(A).
9634chr_source_file___1__0__0__2([A|B], C) :-
9635 ( A=suspension(_, active, _, _)
9636 -> setarg(2, A, removed),
9637 arg(3, A, D),
9638 ( var(D)
9639 -> nb_getval('$chr_store_global_ground_chr_translate____chr_source_file___1',
9640 E),
9641 E=[_|F],
9642 b_setval('$chr_store_global_ground_chr_translate____chr_source_file___1',
9643 F),
9644 ( F=[G|_]
9645 -> setarg(3, G, _)
9646 ; true
9647 )
9648 ; D=[_, _|F],
9649 setarg(2, D, F),
9650 ( F=[G|_]
9651 -> setarg(3, G, D)
9652 ; true
9653 )
9654 ),
9655 chr_source_file___1__0__0__2(B, C)
9656 ; chr_source_file___1__0__0__2(B, C)
9657 ).
9658chr_source_file(A) :-
9659 chr_source_file___1__1(A).
9660chr_source_file___1__1(A) :-
9661 B=suspension(C, active, _, A),
9662 'chr gen_id'(C),
9663 nb_getval('$chr_store_global_ground_chr_translate____chr_source_file___1',
9664 D),
9665 E=[B|D],
9666 b_setval('$chr_store_global_ground_chr_translate____chr_source_file___1',
9667 E),
9668 ( D=[F|_]
9669 -> setarg(3, F, E)
9670 ; true
9671 ).
9672get_chr_source_file(A) :-
9673 nb_getval('$chr_store_global_ground_chr_translate____chr_source_file___1',
9674 B),
9675 member(C, B),
9676 C=suspension(_, active, _, D),
9677 !,
9678 A=D.
9679get_chr_source_file(user).
9680target_module(A) :-
9681 nb_getval('$chr_store_global_ground_chr_translate____target_module___1',
9682 B),
9683 ( member(C, B),
9684 C=suspension(_, active, _, _),
9685 !
9686 ; !,
9687 target_module___1__0__0__2(B, A)
9688 ).
9689target_module___1__0__0__2([], A) :-
9690 target_module___1__1(A).
9691target_module___1__0__0__2([A|B], C) :-
9692 ( A=suspension(_, active, _, _)
9693 -> setarg(2, A, removed),
9694 arg(3, A, D),
9695 ( var(D)
9696 -> nb_getval('$chr_store_global_ground_chr_translate____target_module___1',
9697 E),
9698 E=[_|F],
9699 b_setval('$chr_store_global_ground_chr_translate____target_module___1',
9700 F),
9701 ( F=[G|_]
9702 -> setarg(3, G, _)
9703 ; true
9704 )
9705 ; D=[_, _|F],
9706 setarg(2, D, F),
9707 ( F=[G|_]
9708 -> setarg(3, G, D)
9709 ; true
9710 )
9711 ),
9712 target_module___1__0__0__2(B, C)
9713 ; target_module___1__0__0__2(B, C)
9714 ).
9715target_module(A) :-
9716 target_module___1__1(A).
9717target_module___1__1(A) :-
9718 B=suspension(C, active, _, A),
9719 'chr gen_id'(C),
9720 nb_getval('$chr_store_global_ground_chr_translate____target_module___1',
9721 D),
9722 E=[B|D],
9723 b_setval('$chr_store_global_ground_chr_translate____target_module___1',
9724 E),
9725 ( D=[F|_]
9726 -> setarg(3, F, E)
9727 ; true
9728 ).
9729get_target_module(A) :-
9730 nb_getval('$chr_store_global_ground_chr_translate____target_module___1',
9731 B),
9732 member(C, B),
9733 C=suspension(_, active, _, D),
9734 !,
9735 A=D.
9736get_target_module(user).
9737source_location(A, B) :-
9738 nb_getval('$chr_store_multi_hash_chr_translate____source_location___2-1',
9739 C),
9740 lookup_ht(C, A, D),
9741 ( member(E, D),
9742 E=suspension(_, active, _, _),
9743 !
9744 ; !,
9745 source_location___2__0__0__2(D, A, B)
9746 ).
9747source_location___2__0__0__2([], A, B) :-
9748 source_location___2__1(A, B).
9749source_location___2__0__0__2([A|B], C, D) :-
9750 ( A=suspension(_, active, E, _),
9751 E==C
9752 -> setarg(2, A, removed),
9753 nb_getval('$chr_store_multi_hash_chr_translate____source_location___2-1',
9754 F),
9755 delete_ht(F, C, A),
9756 source_location___2__0__0__2(B, C, D)
9757 ; source_location___2__0__0__2(B, C, D)
9758 ).
9759source_location(A, B) :-
9760 source_location___2__1(A, B).
9761source_location___2__1(A, B) :-
9762 C=suspension(D, active, A, B),
9763 'chr gen_id'(D),
9764 nb_getval('$chr_store_multi_hash_chr_translate____source_location___2-1',
9765 E),
9766 insert_ht(E, A, C).
9767get_line_number(A, B) :-
9768 nb_getval('$chr_store_multi_hash_chr_translate____source_location___2-1',
9769 C),
9770 lookup_ht(C, A, D),
9771 member(E, D),
9772 E=suspension(_, active, _, F),
9773 !,
9774 B=F.
9775get_line_number(_, (?):0).
9776indexed_argument(A, B) :-
9777 nb_getval('$chr_store_multi_hash_chr_translate____indexed_argument___2-12',
9778 C),
9779 lookup_ht(C, k(A, B), D),
9780 member(E, D),
9781 E=suspension(_, active, _, _),
9782 !.
9783indexed_argument(A, B) :-
9784 C=suspension(D, active, A, B),
9785 'chr gen_id'(D),
9786 nb_getval('$chr_store_multi_hash_chr_translate____indexed_argument___2-1',
9787 E),
9788 insert_ht(E, A, C),
9789 nb_getval('$chr_store_multi_hash_chr_translate____indexed_argument___2-12',
9790 F),
9791 insert_ht(F, k(A, B), C).
9792is_indexed_argument(A, B) :-
9793 nb_getval('$chr_store_multi_hash_chr_translate____indexed_argument___2-12',
9794 C),
9795 lookup_ht(C, k(A, B), D),
9796 member(E, D),
9797 E=suspension(_, active, _, _),
9798 !.
9799is_indexed_argument(_, _) :-
9800 fail.
9801constraint_mode(A, B) :-
9802 constraint_mode___2__0(A, B, _).
9803constraint_mode___2__0(A, B, C) :-
9804 nb_getval('$chr_store_multi_hash_chr_translate____constraint_mode___2-1',
9805 D),
9806 lookup_ht(D, A, E),
9807 ( member(F, E),
9808 F=suspension(_, active, _, _, _, _),
9809 !
9810 ; !,
9811 constraint_mode___2__0__0__2(E, A, B, C)
9812 ).
9813constraint_mode___2__0__0__2([], A, B, C) :-
9814 constraint_mode___2__1(A, B, C).
9815constraint_mode___2__0__0__2([A|B], C, D, E) :-
9816 ( A=suspension(_, active, _, _, F, _),
9817 F==C
9818 -> setarg(2, A, removed),
9819 ( arg(4, A, G),
9820 ( var(G)
9821 -> nb_getval('$chr_store_global_ground_chr_translate____constraint_mode___2',
9822 H),
9823 H=[_|I],
9824 b_setval('$chr_store_global_ground_chr_translate____constraint_mode___2',
9825 I),
9826 ( I=[J|_]
9827 -> setarg(4, J, _)
9828 ; true
9829 )
9830 ; G=[_, _|I],
9831 setarg(2, G, I),
9832 ( I=[J|_]
9833 -> setarg(4, J, G)
9834 ; true
9835 )
9836 )
9837 ),
9838 nb_getval('$chr_store_multi_hash_chr_translate____constraint_mode___2-1',
9839 K),
9840 delete_ht(K, C, A),
9841 constraint_mode___2__0__0__2(B, C, D, E)
9842 ; constraint_mode___2__0__0__2(B, C, D, E)
9843 ).
9844constraint_mode___2__0(A, B, C) :-
9845 constraint_mode___2__1(A, B, C).
9846constraint_mode___2__1(A, B, C) :-
9847 A=D/E,
9848 nb_getval('$chr_store_global_ground_chr_translate____types_modes_condition___3',
9849 F),
9850 !,
9851 C=suspension(G, not_stored_yet, t, _, A, B),
9852 'chr gen_id'(G),
9853 constraint_mode___2__1__0__7(F,
9854 A,
9855 B,
9856 C,
9857 D,
9858 E).
9859constraint_mode___2__1__0__7([], A, B, C, _, _) :-
9860 constraint_mode___2__2(A, B, C).
9861constraint_mode___2__1__0__7([A|B], C, D, E, F, G) :-
9862 ( A=suspension(_, active, _, H, I, J),
9863 H=[K|L],
9864 I=[M|N],
9865 functor(K, F, G)
9866 -> setarg(2, A, removed),
9867 arg(3, A, O),
9868 ( var(O)
9869 -> nb_getval('$chr_store_global_ground_chr_translate____types_modes_condition___3',
9870 P),
9871 P=[_|Q],
9872 b_setval('$chr_store_global_ground_chr_translate____types_modes_condition___3',
9873 Q),
9874 ( Q=[R|_]
9875 -> setarg(3, R, _)
9876 ; true
9877 )
9878 ; O=[_, _|Q],
9879 setarg(2, O, Q),
9880 ( Q=[R|_]
9881 -> setarg(3, R, O)
9882 ; true
9883 )
9884 ),
9885 arg(2, E, S),
9886 setarg(2, E, active),
9887 ( S==not_stored_yet
9888 -> nb_getval('$chr_store_global_ground_chr_translate____constraint_mode___2',
9889 T),
9890 U=[E|T],
9891 b_setval('$chr_store_global_ground_chr_translate____constraint_mode___2',
9892 U),
9893 ( T=[V|_]
9894 -> setarg(4, V, U)
9895 ; true
9896 ),
9897 nb_getval('$chr_store_multi_hash_chr_translate____constraint_mode___2-1',
9898 W),
9899 insert_ht(W, C, E)
9900 ; true
9901 ),
9902 K=..[_|X],
9903 J=(Y, Z, A1),
9904 modes_condition(D, X, Y),
9905 get_constraint_type_det(F/G, B1),
9906 M=..[_|C1],
9907 types_condition(B1, X, C1, D, Z),
9908 types_modes_condition(L, N, A1),
9909 ( E=suspension(_, active, _, _, _, _)
9910 -> setarg(2, E, inactive),
9911 constraint_mode___2__1__0__7(B,
9912 C,
9913 D,
9914 E,
9915 F,
9916 G)
9917 ; true
9918 )
9919 ; constraint_mode___2__1__0__7(B,
9920 C,
9921 D,
9922 E,
9923 F,
9924 G)
9925 ).
9926constraint_mode___2__1(A, B, C) :-
9927 C=suspension(D, not_stored_yet, t, _, A, B),
9928 'chr gen_id'(D),
9929 constraint_mode___2__2(A, B, C).
9930constraint_mode___2__2(A, B, C) :-
9931 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-1', D),
9932 lookup_ht(D, A, E),
9933 !,
9934 constraint_mode___2__2__0__8(E, A, B, C).
9935constraint_mode___2__2__0__8([], A, B, C) :-
9936 constraint_mode___2__3(A, B, C).
9937constraint_mode___2__2__0__8([A|B], C, D, E) :-
9938 ( A=suspension(_, active, _, _, F, _, G, H, I),
9939 F==C,
9940 nb_getval('$chr_store_global_ground_chr_translate____partial_wake_analysis___0',
9941 J)
9942 -> constraint_mode___2__2__1__8(J,
9943 G,
9944 H,
9945 I,
9946 A,
9947 B,
9948 C,
9949 D,
9950 E)
9951 ; constraint_mode___2__2__0__8(B, C, D, E)
9952 ).
9953constraint_mode___2__2__1__8([], _, _, _, _, A, B, C, D) :-
9954 constraint_mode___2__2__0__8(A, B, C, D).
9955constraint_mode___2__2__1__8([A|B], C, D, E, F, G, H, I, J) :-
9956 ( A=suspension(_, active, _, _),
9957 nb_getval('$chr_store_multi_hash_chr_translate____rule___2-1', K),
9958 lookup_ht(K, C, L)
9959 -> constraint_mode___2__2__2__8(L,
9960 A,
9961 B,
9962 C,
9963 D,
9964 E,
9965 F,
9966 G,
9967 H,
9968 I,
9969 J)
9970 ; constraint_mode___2__2__1__8(B,
9971 C,
9972 D,
9973 E,
9974 F,
9975 G,
9976 H,
9977 I,
9978 J)
9979 ).
9980constraint_mode___2__2__2__8([], _, A, B, C, D, E, F, G, H, I) :-
9981 constraint_mode___2__2__1__8(A,
9982 B,
9983 C,
9984 D,
9985 E,
9986 F,
9987 G,
9988 H,
9989 I).
9990constraint_mode___2__2__2__8([A|B], C, D, E, F, G, H, I, J, K, L) :-
9991 ( A=suspension(_, active, _, _, M, N),
9992 M==E,
9993 O=t(330, C, H, A, L),
9994 '$novel_production'(C, O),
9995 '$novel_production'(H, O),
9996 '$novel_production'(A, O),
9997 '$novel_production'(L, O)
9998 -> '$extend_history'(L, O),
9999 arg(2, L, P),
10000 setarg(2, L, active),
10001 ( P==not_stored_yet
10002 -> nb_getval('$chr_store_global_ground_chr_translate____constraint_mode___2',
10003 Q),
10004 R=[L|Q],
10005 b_setval('$chr_store_global_ground_chr_translate____constraint_mode___2',
10006 R),
10007 ( Q=[S|_]
10008 -> setarg(4, S, R)
10009 ; true
10010 ),
10011 nb_getval('$chr_store_multi_hash_chr_translate____constraint_mode___2-1',
10012 T),
10013 insert_ht(T, J, L)
10014 ; true
10015 ),
10016 N=pragma(rule(U, V, W, _), _, _, _, _),
10017 ( is_passive(E, F)
10018 -> true
10019 ; G==simplification
10020 -> select(X, U, _),
10021 X=..[_|Y],
10022 term_variables(W, Z),
10023 partial_wake_args(Y, K, Z, J)
10024 ; select(X, V, _),
10025 X=..[_|Y],
10026 term_variables(W, Z),
10027 partial_wake_args(Y, K, Z, J)
10028 ),
10029 ( L=suspension(_, active, _, _, _, _)
10030 -> setarg(2, L, inactive),
10031 constraint_mode___2__2__2__8(B,
10032 C,
10033 D,
10034 E,
10035 F,
10036 G,
10037 H,
10038 I,
10039 J,
10040 K,
10041 L)
10042 ; true
10043 )
10044 ; constraint_mode___2__2__2__8(B,
10045 C,
10046 D,
10047 E,
10048 F,
10049 G,
10050 H,
10051 I,
10052 J,
10053 K,
10054 L)
10055 ).
10056constraint_mode___2__2(A, B, C) :-
10057 constraint_mode___2__3(A, B, C).
10058constraint_mode___2__3(A, _, B) :-
10059 arg(2, B, C),
10060 setarg(2, B, active),
10061 ( C==not_stored_yet
10062 -> nb_getval('$chr_store_global_ground_chr_translate____constraint_mode___2',
10063 D),
10064 E=[B|D],
10065 b_setval('$chr_store_global_ground_chr_translate____constraint_mode___2',
10066 E),
10067 ( D=[F|_]
10068 -> setarg(4, F, E)
10069 ; true
10070 ),
10071 nb_getval('$chr_store_multi_hash_chr_translate____constraint_mode___2-1',
10072 G),
10073 insert_ht(G, A, B)
10074 ; true
10075 ).
10076get_constraint_mode(A, B) :-
10077 nb_getval('$chr_store_multi_hash_chr_translate____constraint_mode___2-1',
10078 C),
10079 lookup_ht(C, A, D),
10080 member(E, D),
10081 E=suspension(_, active, _, _, _, F),
10082 !,
10083 B=F.
10084get_constraint_mode(_/A, B) :-
10085 replicate(A, ?, B).
10086may_trigger(A) :-
10087 \+ has_active_occurrence(A),
10088 !,
10089 fail.
10090may_trigger(A) :-
10091 nb_getval('$chr_store_multi_hash_chr_translate____constraint_mode___2-1',
10092 B),
10093 lookup_ht(B, A, C),
10094 member(D, C),
10095 D=suspension(_, active, _, _, _, E),
10096 nb_getval('$chr_store_multi_hash_chr_translate____indexed_argument___2-1',
10097 F),
10098 lookup_ht(F, A, G),
10099 member(H, G),
10100 H=suspension(_, active, _, I),
10101 nth1(I, E, J),
10102 J\==(+),
10103 !,
10104 is_stored(A).
10105may_trigger(_) :-
10106 chr_pp_flag(debugable, on).
10107only_ground_indexed_arguments(A) :-
10108 nb_getval('$chr_store_multi_hash_chr_translate____constraint_mode___2-1',
10109 B),
10110 lookup_ht(B, A, C),
10111 member(D, C),
10112 D=suspension(_, active, _, _, _, E),
10113 nb_getval('$chr_store_multi_hash_chr_translate____indexed_argument___2-1',
10114 F),
10115 lookup_ht(F, A, G),
10116 member(H, G),
10117 H=suspension(_, active, _, I),
10118 nth1(I, E, J),
10119 J\==(+),
10120 !,
10121 fail.
10122only_ground_indexed_arguments(_).
10123none_suspended_on_variables :-
10124 nb_getval('$chr_store_global_ground_chr_translate____none_suspended_on_variables___0',
10125 A),
10126 member(B, A),
10127 B=suspension(_, active, _),
10128 !.
10129none_suspended_on_variables :-
10130 A=suspension(B, active, _),
10131 'chr gen_id'(B),
10132 nb_getval('$chr_store_global_ground_chr_translate____none_suspended_on_variables___0',
10133 C),
10134 D=[A|C],
10135 b_setval('$chr_store_global_ground_chr_translate____none_suspended_on_variables___0',
10136 D),
10137 ( C=[E|_]
10138 -> setarg(3, E, D)
10139 ; true
10140 ).
10141are_none_suspended_on_variables :-
10142 nb_getval('$chr_store_global_ground_chr_translate____none_suspended_on_variables___0',
10143 A),
10144 member(B, A),
10145 B=suspension(_, active, _),
10146 !.
10147are_none_suspended_on_variables :-
10148 fail.
10149store_type(A, B) :-
10150 store_type___2__0(A, B, _).
10151store_type___2__0(A, B, C) :-
10152 chr_pp_flag(verbose, on),
10153 !,
10154 C=suspension(D, active, A, B),
10155 'chr gen_id'(D),
10156 nb_getval('$chr_store_multi_hash_chr_translate____store_type___2-1', E),
10157 insert_ht(E, A, C),
10158 format('The indexes for ~w are:\n', [A]),
10159 format_storetype(B),
10160 ( C=suspension(_, active, _, _)
10161 -> setarg(2, C, inactive),
10162 store_type___2__1(A, B, C)
10163 ; true
10164 ).
10165store_type___2__0(A, B, C) :-
10166 C=suspension(D, not_stored_yet, A, B),
10167 'chr gen_id'(D),
10168 store_type___2__1(A, B, C).
10169store_type___2__1(A, _, B) :-
10170 nb_getval('$chr_store_multi_hash_chr_translate____validate_store_type_assumption___1-1',
10171 C),
10172 lookup_ht(C, A, D),
10173 member(E, D),
10174 E=suspension(_, active, _),
10175 nb_getval('$chr_store_multi_hash_chr_translate____actual_store_types___2-1',
10176 F),
10177 lookup_ht(F, A, G),
10178 member(H, G),
10179 H=suspension(_, active, _, I),
10180 !,
10181 setarg(2, E, removed),
10182 nb_getval('$chr_store_multi_hash_chr_translate____validate_store_type_assumption___1-1',
10183 J),
10184 delete_ht(J, A, E),
10185 setarg(2, H, removed),
10186 nb_getval('$chr_store_multi_hash_chr_translate____actual_store_types___2-1',
10187 K),
10188 delete_ht(K, A, H),
10189 ( var(B)
10190 -> true
10191 ; arg(2, B, L),
10192 setarg(2, B, removed),
10193 ( L==not_stored_yet
10194 -> true
10195 ; nb_getval('$chr_store_multi_hash_chr_translate____store_type___2-1',
10196 M),
10197 delete_ht(M, A, B)
10198 )
10199 ),
10200 store_type(A, multi_store(I)).
10201store_type___2__1(A, _, B) :-
10202 arg(2, B, C),
10203 setarg(2, B, active),
10204 ( C==not_stored_yet
10205 -> nb_getval('$chr_store_multi_hash_chr_translate____store_type___2-1',
10206 D),
10207 insert_ht(D, A, B)
10208 ; true
10209 ).
10210get_store_type(A, B) :-
10211 nb_getval('$chr_store_multi_hash_chr_translate____store_type___2-1', C),
10212 lookup_ht(C, A, D),
10213 member(E, D),
10214 E=suspension(_, active, _, F),
10215 !,
10216 B=F.
10217get_store_type(A, B) :-
10218 nb_getval('$chr_store_multi_hash_chr_translate____assumed_store_type___2-1',
10219 C),
10220 lookup_ht(C, A, D),
10221 member(E, D),
10222 E=suspension(_, active, _, F),
10223 !,
10224 B=F.
10225get_store_type(_, default).
10226update_store_type(A, B) :-
10227 nb_getval('$chr_store_multi_hash_chr_translate____actual_store_types___2-1',
10228 C),
10229 lookup_ht(C, A, D),
10230 member(E, D),
10231 E=suspension(_, active, _, F),
10232 ( memberchk(B, F),
10233 !
10234 ; !,
10235 setarg(2, E, removed),
10236 nb_getval('$chr_store_multi_hash_chr_translate____actual_store_types___2-1',
10237 G),
10238 delete_ht(G, A, E),
10239 actual_store_types(A, [B|F])
10240 ).
10241update_store_type(A, B) :-
10242 actual_store_types(A, [B]).
10243actual_store_types(A, B) :-
10244 nb_getval('$chr_store_multi_hash_chr_translate____actual_atomic_multi_hash_keys___3-1',
10245 C),
10246 lookup_ht(C, A, D),
10247 member(E, D),
10248 E=suspension(_, active, _, F, G),
10249 nb_getval('$chr_store_multi_hash_chr_translate____validate_store_type_assumption___1-1',
10250 H),
10251 lookup_ht(H, A, I),
10252 member(J, I),
10253 J=suspension(_, active, _),
10254 !,
10255 setarg(2, E, removed),
10256 nb_getval('$chr_store_multi_hash_chr_translate____actual_atomic_multi_hash_keys___3-12',
10257 K),
10258 delete_ht(K, k(A, F), E),
10259 nb_getval('$chr_store_multi_hash_chr_translate____actual_atomic_multi_hash_keys___3-1',
10260 L),
10261 delete_ht(L, A, E),
10262 selectchk(multi_hash([F]), B, M),
10263 F=[N],
10264 ( get_constraint_arg_type(A, N, O),
10265 enumerated_atomic_type(O, P)
10266 -> Q=P,
10267 R=complete
10268 ; Q=G,
10269 R=incomplete
10270 ),
10271 actual_store_types(A,
10272 [atomic_constants(F, Q, R)|M]).
10273actual_store_types(A, B) :-
10274 nb_getval('$chr_store_multi_hash_chr_translate____actual_ground_multi_hash_keys___3-1',
10275 C),
10276 lookup_ht(C, A, D),
10277 member(E, D),
10278 E=suspension(_, active, _, F, G),
10279 nb_getval('$chr_store_multi_hash_chr_translate____validate_store_type_assumption___1-1',
10280 H),
10281 lookup_ht(H, A, I),
10282 member(J, I),
10283 J=suspension(_, active, _),
10284 !,
10285 setarg(2, E, removed),
10286 nb_getval('$chr_store_multi_hash_chr_translate____actual_ground_multi_hash_keys___3-12',
10287 K),
10288 delete_ht(K, k(A, F), E),
10289 nb_getval('$chr_store_multi_hash_chr_translate____actual_ground_multi_hash_keys___3-1',
10290 L),
10291 delete_ht(L, A, E),
10292 ( F=[M],
10293 get_constraint_arg_type(A, M, N),
10294 N=chr_enum(O)
10295 -> P=complete
10296 ; O=G,
10297 P=incomplete
10298 ),
10299 selectchk(multi_hash([F]), B, Q),
10300 actual_store_types(A,
10301 [ground_constants(F, O, P)|Q]).
10302actual_store_types(A, B) :-
10303 nb_getval('$chr_store_multi_hash_chr_translate____validate_store_type_assumption___1-1',
10304 C),
10305 lookup_ht(C, A, D),
10306 member(E, D),
10307 E=suspension(_, active, _),
10308 ( ( memberchk(multi_hash([[F]]), B),
10309 ( get_constraint_type(A, G),
10310 nth1(F, G, H),
10311 enumerated_atomic_type(H, I),
10312 !,
10313 selectchk(multi_hash([[F]]), B, J),
10314 actual_store_types(A,
10315 [ atomic_constants([F],
10316 I,
10317 complete)
10318 | J
10319 ])
10320 ; get_constraint_arg_type(A, F, K),
10321 K=chr_enum(L),
10322 !,
10323 selectchk(multi_hash([[F]]), B, M),
10324 actual_store_types(A,
10325 [ ground_constants([F],
10326 L,
10327 complete)
10328 | M
10329 ])
10330 )
10331 ; nb_getval('$chr_store_multi_hash_chr_translate____assumed_store_type___2-1',
10332 N),
10333 lookup_ht(N, A, O),
10334 member(P, O),
10335 P=suspension(_, active, _, _),
10336 !,
10337 setarg(2, E, removed),
10338 nb_getval('$chr_store_multi_hash_chr_translate____validate_store_type_assumption___1-1',
10339 Q),
10340 delete_ht(Q, A, E),
10341 setarg(2, P, removed),
10342 nb_getval('$chr_store_multi_hash_chr_translate____assumed_store_type___2-1',
10343 R),
10344 delete_ht(R, A, P),
10345 ( maplist(partial_store, B)
10346 -> S=[global_ground|B]
10347 ; S=B
10348 ),
10349 store_type(A, multi_store(S))
10350 )
10351 ; nb_getval('$chr_store_multi_hash_chr_translate____store_type___2-1',
10352 T),
10353 lookup_ht(T, A, U),
10354 member(V, U),
10355 V=suspension(_, active, _, _),
10356 !,
10357 setarg(2, E, removed),
10358 nb_getval('$chr_store_multi_hash_chr_translate____validate_store_type_assumption___1-1',
10359 W),
10360 delete_ht(W, A, E),
10361 setarg(2, V, removed),
10362 nb_getval('$chr_store_multi_hash_chr_translate____store_type___2-1',
10363 X),
10364 delete_ht(X, A, V),
10365 store_type(A, multi_store(B))
10366 ).
10367actual_store_types(A, B) :-
10368 C=suspension(D, active, A, B),
10369 'chr gen_id'(D),
10370 nb_getval('$chr_store_multi_hash_chr_translate____actual_store_types___2-1',
10371 E),
10372 insert_ht(E, A, C).
10373assumed_store_type(A, _) :-
10374 nb_getval('$chr_store_multi_hash_chr_translate____validate_store_type_assumption___1-1',
10375 B),
10376 lookup_ht(B, A, C),
10377 member(D, C),
10378 D=suspension(_, active, _),
10379 ( ( nb_getval('$chr_store_multi_hash_chr_translate____actual_store_types___2-1',
10380 E),
10381 lookup_ht(E, A, F),
10382 member(G, F),
10383 G=suspension(_, active, _, H),
10384 !,
10385 setarg(2, D, removed),
10386 nb_getval('$chr_store_multi_hash_chr_translate____validate_store_type_assumption___1-1',
10387 I),
10388 delete_ht(I, A, D),
10389 setarg(2, G, removed),
10390 nb_getval('$chr_store_multi_hash_chr_translate____actual_store_types___2-1',
10391 J),
10392 delete_ht(J, A, G),
10393 ( maplist(partial_store, H)
10394 -> K=[global_ground|H]
10395 ; K=H
10396 ),
10397 store_type(A, multi_store(K))
10398 ; chr_pp_flag(debugable, on),
10399 !,
10400 setarg(2, D, removed),
10401 nb_getval('$chr_store_multi_hash_chr_translate____validate_store_type_assumption___1-1',
10402 L),
10403 delete_ht(L, A, D),
10404 store_type(A, default)
10405 )
10406 ; !,
10407 setarg(2, D, removed),
10408 nb_getval('$chr_store_multi_hash_chr_translate____validate_store_type_assumption___1-1',
10409 M),
10410 delete_ht(M, A, D),
10411 store_type(A, global_ground)
10412 ).
10413assumed_store_type(A, B) :-
10414 C=suspension(D, active, A, B),
10415 'chr gen_id'(D),
10416 nb_getval('$chr_store_multi_hash_chr_translate____assumed_store_type___2-1',
10417 E),
10418 insert_ht(E, A, C).
10419validate_store_type_assumption(A) :-
10420 validate_store_type_assumption___1__0(A, _).
10421validate_store_type_assumption___1__0(A, B) :-
10422 nb_getval('$chr_store_multi_hash_chr_translate____actual_store_types___2-1',
10423 C),
10424 lookup_ht(C, A, D),
10425 !,
10426 B=suspension(E, not_stored_yet, A),
10427 'chr gen_id'(E),
10428 validate_store_type_assumption___1__0__0__1(D, A, B).
10429validate_store_type_assumption___1__0__0__1([], A, B) :-
10430 validate_store_type_assumption___1__1(A, B).
10431validate_store_type_assumption___1__0__0__1([A|B], C, D) :-
10432 ( A=suspension(_, active, E, F),
10433 E==C,
10434 ground(C),
10435 nb_getval('$chr_store_multi_hash_chr_translate____actual_atomic_multi_hash_keys___3-1',
10436 G),
10437 lookup_ht(G, C, H),
10438 member(I, H),
10439 I=suspension(_, active, _, J, K)
10440 -> ( setarg(2, A, removed),
10441 nb_getval('$chr_store_multi_hash_chr_translate____actual_store_types___2-1',
10442 L),
10443 delete_ht(L, C, A)
10444 ),
10445 setarg(2, I, removed),
10446 ( nb_getval('$chr_store_multi_hash_chr_translate____actual_atomic_multi_hash_keys___3-12',
10447 M),
10448 delete_ht(M, k(C, J), I)
10449 ),
10450 nb_getval('$chr_store_multi_hash_chr_translate____actual_atomic_multi_hash_keys___3-1',
10451 N),
10452 delete_ht(N, C, I),
10453 arg(2, D, O),
10454 setarg(2, D, active),
10455 ( O==not_stored_yet
10456 -> nb_getval('$chr_store_multi_hash_chr_translate____validate_store_type_assumption___1-1',
10457 P),
10458 insert_ht(P, C, D)
10459 ; true
10460 ),
10461 selectchk(multi_hash([J]), F, Q),
10462 J=[R],
10463 ( get_constraint_arg_type(C, R, S),
10464 enumerated_atomic_type(S, T)
10465 -> U=T,
10466 V=complete
10467 ; U=K,
10468 V=incomplete
10469 ),
10470 actual_store_types(C,
10471 [ atomic_constants(J, U, V)
10472 | Q
10473 ]),
10474 ( D=suspension(_, active, _)
10475 -> setarg(2, D, inactive),
10476 validate_store_type_assumption___1__0__0__1(B,
10477 C,
10478 D)
10479 ; true
10480 )
10481 ; validate_store_type_assumption___1__0__0__1(B, C, D)
10482 ).
10483validate_store_type_assumption___1__0(A, B) :-
10484 B=suspension(C, not_stored_yet, A),
10485 'chr gen_id'(C),
10486 validate_store_type_assumption___1__1(A, B).
10487validate_store_type_assumption___1__1(A, B) :-
10488 nb_getval('$chr_store_multi_hash_chr_translate____actual_store_types___2-1',
10489 C),
10490 lookup_ht(C, A, D),
10491 !,
10492 validate_store_type_assumption___1__1__0__2(D, A, B).
10493validate_store_type_assumption___1__1__0__2([], A, B) :-
10494 validate_store_type_assumption___1__2(A, B).
10495validate_store_type_assumption___1__1__0__2([A|B], C, D) :-
10496 ( A=suspension(_, active, E, F),
10497 E==C,
10498 ground(C),
10499 nb_getval('$chr_store_multi_hash_chr_translate____actual_ground_multi_hash_keys___3-1',
10500 G),
10501 lookup_ht(G, C, H),
10502 member(I, H),
10503 I=suspension(_, active, _, J, K)
10504 -> ( setarg(2, A, removed),
10505 nb_getval('$chr_store_multi_hash_chr_translate____actual_store_types___2-1',
10506 L),
10507 delete_ht(L, C, A)
10508 ),
10509 setarg(2, I, removed),
10510 ( nb_getval('$chr_store_multi_hash_chr_translate____actual_ground_multi_hash_keys___3-12',
10511 M),
10512 delete_ht(M, k(C, J), I)
10513 ),
10514 nb_getval('$chr_store_multi_hash_chr_translate____actual_ground_multi_hash_keys___3-1',
10515 N),
10516 delete_ht(N, C, I),
10517 arg(2, D, O),
10518 setarg(2, D, active),
10519 ( O==not_stored_yet
10520 -> nb_getval('$chr_store_multi_hash_chr_translate____validate_store_type_assumption___1-1',
10521 P),
10522 insert_ht(P, C, D)
10523 ; true
10524 ),
10525 ( J=[Q],
10526 get_constraint_arg_type(C, Q, R),
10527 R=chr_enum(S)
10528 -> T=complete
10529 ; S=K,
10530 T=incomplete
10531 ),
10532 selectchk(multi_hash([J]), F, U),
10533 actual_store_types(C,
10534 [ ground_constants(J, S, T)
10535 | U
10536 ]),
10537 ( D=suspension(_, active, _)
10538 -> setarg(2, D, inactive),
10539 validate_store_type_assumption___1__1__0__2(B,
10540 C,
10541 D)
10542 ; true
10543 )
10544 ; validate_store_type_assumption___1__1__0__2(B, C, D)
10545 ).
10546validate_store_type_assumption___1__1(A, B) :-
10547 validate_store_type_assumption___1__2(A, B).
10548validate_store_type_assumption___1__2(A, B) :-
10549 nb_getval('$chr_store_multi_hash_chr_translate____actual_store_types___2-1',
10550 C),
10551 lookup_ht(C, A, D),
10552 !,
10553 validate_store_type_assumption___1__2__0__3(D, A, B).
10554validate_store_type_assumption___1__2__0__3([], A, B) :-
10555 validate_store_type_assumption___1__3(A, B).
10556validate_store_type_assumption___1__2__0__3([A|B], C, D) :-
10557 ( A=suspension(_, active, E, F),
10558 E==C,
10559 memberchk(multi_hash([[G]]), F),
10560 get_constraint_type(C, H),
10561 nth1(G, H, I),
10562 enumerated_atomic_type(I, J)
10563 -> setarg(2, A, removed),
10564 nb_getval('$chr_store_multi_hash_chr_translate____actual_store_types___2-1',
10565 K),
10566 delete_ht(K, C, A),
10567 arg(2, D, L),
10568 setarg(2, D, active),
10569 ( L==not_stored_yet
10570 -> nb_getval('$chr_store_multi_hash_chr_translate____validate_store_type_assumption___1-1',
10571 M),
10572 insert_ht(M, C, D)
10573 ; true
10574 ),
10575 selectchk(multi_hash([[G]]), F, N),
10576 actual_store_types(C,
10577 [ atomic_constants([G], J, complete)
10578 | N
10579 ]),
10580 ( D=suspension(_, active, _)
10581 -> setarg(2, D, inactive),
10582 validate_store_type_assumption___1__2__0__3(B,
10583 C,
10584 D)
10585 ; true
10586 )
10587 ; validate_store_type_assumption___1__2__0__3(B, C, D)
10588 ).
10589validate_store_type_assumption___1__2(A, B) :-
10590 validate_store_type_assumption___1__3(A, B).
10591validate_store_type_assumption___1__3(A, B) :-
10592 nb_getval('$chr_store_multi_hash_chr_translate____actual_store_types___2-1',
10593 C),
10594 lookup_ht(C, A, D),
10595 !,
10596 validate_store_type_assumption___1__3__0__4(D, A, B).
10597validate_store_type_assumption___1__3__0__4([], A, B) :-
10598 validate_store_type_assumption___1__4(A, B).
10599validate_store_type_assumption___1__3__0__4([A|B], C, D) :-
10600 ( A=suspension(_, active, E, F),
10601 E==C,
10602 memberchk(multi_hash([[G]]), F),
10603 get_constraint_arg_type(C, G, H),
10604 H=chr_enum(I)
10605 -> setarg(2, A, removed),
10606 nb_getval('$chr_store_multi_hash_chr_translate____actual_store_types___2-1',
10607 J),
10608 delete_ht(J, C, A),
10609 arg(2, D, K),
10610 setarg(2, D, active),
10611 ( K==not_stored_yet
10612 -> nb_getval('$chr_store_multi_hash_chr_translate____validate_store_type_assumption___1-1',
10613 L),
10614 insert_ht(L, C, D)
10615 ; true
10616 ),
10617 selectchk(multi_hash([[G]]), F, M),
10618 actual_store_types(C,
10619 [ ground_constants([G], I, complete)
10620 | M
10621 ]),
10622 ( D=suspension(_, active, _)
10623 -> setarg(2, D, inactive),
10624 validate_store_type_assumption___1__3__0__4(B,
10625 C,
10626 D)
10627 ; true
10628 )
10629 ; validate_store_type_assumption___1__3__0__4(B, C, D)
10630 ).
10631validate_store_type_assumption___1__3(A, B) :-
10632 validate_store_type_assumption___1__4(A, B).
10633validate_store_type_assumption___1__4(A, B) :-
10634 nb_getval('$chr_store_multi_hash_chr_translate____actual_store_types___2-1',
10635 C),
10636 lookup_ht(C, A, D),
10637 member(E, D),
10638 E=suspension(_, active, _, F),
10639 ( nb_getval('$chr_store_multi_hash_chr_translate____assumed_store_type___2-1',
10640 G),
10641 lookup_ht(G, A, H),
10642 member(I, H),
10643 I=suspension(_, active, _, _),
10644 !,
10645 setarg(2, E, removed),
10646 nb_getval('$chr_store_multi_hash_chr_translate____actual_store_types___2-1',
10647 J),
10648 delete_ht(J, A, E),
10649 setarg(2, I, removed),
10650 nb_getval('$chr_store_multi_hash_chr_translate____assumed_store_type___2-1',
10651 K),
10652 delete_ht(K, A, I),
10653 ( var(B)
10654 -> true
10655 ; arg(2, B, L),
10656 setarg(2, B, removed),
10657 ( L==not_stored_yet
10658 -> true
10659 ; nb_getval('$chr_store_multi_hash_chr_translate____validate_store_type_assumption___1-1',
10660 M),
10661 delete_ht(M, A, B)
10662 )
10663 ),
10664 ( maplist(partial_store, F)
10665 -> N=[global_ground|F]
10666 ; N=F
10667 ),
10668 store_type(A, multi_store(N))
10669 ; nb_getval('$chr_store_multi_hash_chr_translate____store_type___2-1',
10670 O),
10671 lookup_ht(O, A, P),
10672 member(Q, P),
10673 Q=suspension(_, active, _, _),
10674 !,
10675 setarg(2, E, removed),
10676 nb_getval('$chr_store_multi_hash_chr_translate____actual_store_types___2-1',
10677 R),
10678 delete_ht(R, A, E),
10679 setarg(2, Q, removed),
10680 nb_getval('$chr_store_multi_hash_chr_translate____store_type___2-1',
10681 S),
10682 delete_ht(S, A, Q),
10683 ( var(B)
10684 -> true
10685 ; arg(2, B, T),
10686 setarg(2, B, removed),
10687 ( T==not_stored_yet
10688 -> true
10689 ; nb_getval('$chr_store_multi_hash_chr_translate____validate_store_type_assumption___1-1',
10690 U),
10691 delete_ht(U, A, B)
10692 )
10693 ),
10694 store_type(A, multi_store(F))
10695 ).
10696validate_store_type_assumption___1__4(A, B) :-
10697 nb_getval('$chr_store_multi_hash_chr_translate____assumed_store_type___2-1',
10698 C),
10699 lookup_ht(C, A, D),
10700 member(E, D),
10701 E=suspension(_, active, _, _),
10702 ( chr_pp_flag(debugable, on),
10703 !,
10704 setarg(2, E, removed),
10705 nb_getval('$chr_store_multi_hash_chr_translate____assumed_store_type___2-1',
10706 F),
10707 delete_ht(F, A, E),
10708 ( var(B)
10709 -> true
10710 ; arg(2, B, G),
10711 setarg(2, B, removed),
10712 ( G==not_stored_yet
10713 -> true
10714 ; nb_getval('$chr_store_multi_hash_chr_translate____validate_store_type_assumption___1-1',
10715 H),
10716 delete_ht(H, A, B)
10717 )
10718 ),
10719 store_type(A, default)
10720 ; !,
10721 setarg(2, E, removed),
10722 nb_getval('$chr_store_multi_hash_chr_translate____assumed_store_type___2-1',
10723 I),
10724 delete_ht(I, A, E),
10725 ( var(B)
10726 -> true
10727 ; arg(2, B, J),
10728 setarg(2, B, removed),
10729 ( J==not_stored_yet
10730 -> true
10731 ; nb_getval('$chr_store_multi_hash_chr_translate____validate_store_type_assumption___1-1',
10732 K),
10733 delete_ht(K, A, B)
10734 )
10735 ),
10736 store_type(A, global_ground)
10737 ).
10738validate_store_type_assumption___1__4(A, B) :-
10739 ( var(B)
10740 -> true
10741 ; arg(2, B, C),
10742 setarg(2, B, removed),
10743 ( C==not_stored_yet
10744 -> true
10745 ; nb_getval('$chr_store_multi_hash_chr_translate____validate_store_type_assumption___1-1',
10746 D),
10747 delete_ht(D, A, B)
10748 )
10749 ).
10750rule_count(A) :-
10751 nb_getval('$chr_store_global_ground_chr_translate____rule_count___1',
10752 B),
10753 ( member(C, B),
10754 C=suspension(_, active, _, _),
10755 !
10756 ; !,
10757 rule_count___1__0__0__2(B, A)
10758 ).
10759rule_count___1__0__0__2([], A) :-
10760 rule_count___1__1(A).
10761rule_count___1__0__0__2([A|B], C) :-
10762 ( A=suspension(_, active, _, _)
10763 -> setarg(2, A, removed),
10764 arg(3, A, D),
10765 ( var(D)
10766 -> nb_getval('$chr_store_global_ground_chr_translate____rule_count___1',
10767 E),
10768 E=[_|F],
10769 b_setval('$chr_store_global_ground_chr_translate____rule_count___1',
10770 F),
10771 ( F=[G|_]
10772 -> setarg(3, G, _)
10773 ; true
10774 )
10775 ; D=[_, _|F],
10776 setarg(2, D, F),
10777 ( F=[G|_]
10778 -> setarg(3, G, D)
10779 ; true
10780 )
10781 ),
10782 rule_count___1__0__0__2(B, C)
10783 ; rule_count___1__0__0__2(B, C)
10784 ).
10785rule_count(A) :-
10786 rule_count___1__1(A).
10787rule_count___1__1(A) :-
10788 B=suspension(C, active, _, A),
10789 'chr gen_id'(C),
10790 nb_getval('$chr_store_global_ground_chr_translate____rule_count___1',
10791 D),
10792 E=[B|D],
10793 b_setval('$chr_store_global_ground_chr_translate____rule_count___1', E),
10794 ( D=[F|_]
10795 -> setarg(3, F, E)
10796 ; true
10797 ).
10798inc_rule_count(A) :-
10799 nb_getval('$chr_store_global_ground_chr_translate____rule_count___1',
10800 B),
10801 member(C, B),
10802 C=suspension(_, active, _, D),
10803 !,
10804 setarg(2, C, removed),
10805 arg(3, C, E),
10806 ( var(E)
10807 -> nb_getval('$chr_store_global_ground_chr_translate____rule_count___1',
10808 F),
10809 F=[_|G],
10810 b_setval('$chr_store_global_ground_chr_translate____rule_count___1',
10811 G),
10812 ( G=[H|_]
10813 -> setarg(3, H, _)
10814 ; true
10815 )
10816 ; E=[_, _|G],
10817 setarg(2, E, G),
10818 ( G=[H|_]
10819 -> setarg(3, H, E)
10820 ; true
10821 )
10822 ),
10823 A is D+1,
10824 rule_count(A).
10825inc_rule_count(1) :-
10826 rule_count(1).
10827passive(A, B) :-
10828 passive___2__0(A, B, _).
10829passive___2__0(A, B, _) :-
10830 nb_getval('$chr_store_multi_hash_chr_translate____passive___2-12', C),
10831 lookup_ht(C, k(A, B), D),
10832 member(E, D),
10833 E=suspension(_, active, _, _, _),
10834 !.
10835passive___2__0(A, B, C) :-
10836 nb_getval('$chr_store_multi_hash_chr_translate____least_occurrence___2-1',
10837 D),
10838 lookup_ht(D, A, E),
10839 !,
10840 C=suspension(F, not_stored_yet, t, A, B),
10841 'chr gen_id'(F),
10842 passive___2__0__0__6(E, A, B, C).
10843passive___2__0__0__6([], A, B, C) :-
10844 passive___2__1(A, B, C).
10845passive___2__0__0__6([A|B], C, D, E) :-
10846 ( A=suspension(_, active, F, G),
10847 F==C,
10848 G=[H|I],
10849 H==D,
10850 ground(C),
10851 nb_getval('$chr_store_multi_hash_chr_translate____rule___2-1', J),
10852 lookup_ht(J, C, K),
10853 member(L, K),
10854 L=suspension(_, active, _, _, _, _)
10855 -> setarg(2, A, removed),
10856 ( nb_getval('$chr_store_multi_hash_chr_translate____least_occurrence___2-12',
10857 M),
10858 delete_ht(M, k(C, [D|I]), A)
10859 ),
10860 nb_getval('$chr_store_multi_hash_chr_translate____least_occurrence___2-1',
10861 N),
10862 delete_ht(N, C, A),
10863 arg(2, E, O),
10864 setarg(2, E, active),
10865 ( O==not_stored_yet
10866 -> nb_getval('$chr_store_multi_hash_chr_translate____passive___2-1',
10867 P),
10868 insert_ht(P, C, E),
10869 nb_getval('$chr_store_multi_hash_chr_translate____passive___2-12',
10870 Q),
10871 insert_ht(Q, k(C, D), E)
10872 ; true
10873 ),
10874 least_occurrence(C, I),
10875 ( E=suspension(_, active, _, _, _)
10876 -> setarg(2, E, inactive),
10877 passive___2__0__0__6(B, C, D, E)
10878 ; true
10879 )
10880 ; passive___2__0__0__6(B, C, D, E)
10881 ).
10882passive___2__0(A, B, C) :-
10883 C=suspension(D, not_stored_yet, t, A, B),
10884 'chr gen_id'(D),
10885 passive___2__1(A, B, C).
10886passive___2__1(A, B, C) :-
10887 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-34',
10888 D),
10889 lookup_ht(D, k(A, B), E),
10890 !,
10891 passive___2__1__0__8(E, A, B, C).
10892passive___2__1__0__8([], A, B, C) :-
10893 passive___2__2(A, B, C).
10894passive___2__1__0__8([A|B], C, D, E) :-
10895 ( A=suspension(_, active, _, _, F, G, H, I, _),
10896 H==C,
10897 I==D,
10898 nb_getval('$chr_store_multi_hash_chr_translate____stored_complete___3-1',
10899 J),
10900 lookup_ht(J, F, K)
10901 -> passive___2__1__1__8(K,
10902 F,
10903 G,
10904 A,
10905 B,
10906 C,
10907 D,
10908 E)
10909 ; passive___2__1__0__8(B, C, D, E)
10910 ).
10911passive___2__1__1__8([], _, _, _, A, B, C, D) :-
10912 passive___2__1__0__8(A, B, C, D).
10913passive___2__1__1__8([A|B], C, D, E, F, G, H, I) :-
10914 ( A=suspension(_, active, _, J, K, L),
10915 J==C,
10916 D<K,
10917 ( ground(C),
10918 ground(D)
10919 ),
10920 nb_getval('$chr_store_multi_hash_chr_translate____stored___3-123',
10921 M),
10922 lookup_ht(M, k(C, D, yes), N),
10923 member(O, N),
10924 O=suspension(_, active, _, _, _)
10925 -> ( setarg(2, A, removed),
10926 nb_getval('$chr_store_multi_hash_chr_translate____stored_complete___3-13',
10927 P),
10928 delete_ht(P, k(C, L), A),
10929 nb_getval('$chr_store_multi_hash_chr_translate____stored_complete___3-1',
10930 Q),
10931 delete_ht(Q, C, A)
10932 ),
10933 setarg(2, O, removed),
10934 ( nb_getval('$chr_store_multi_hash_chr_translate____stored___3-13',
10935 R),
10936 delete_ht(R, k(C, yes), O)
10937 ),
10938 nb_getval('$chr_store_multi_hash_chr_translate____stored___3-123',
10939 S),
10940 delete_ht(S, k(C, D, yes), O),
10941 arg(2, I, T),
10942 setarg(2, I, active),
10943 ( T==not_stored_yet
10944 -> nb_getval('$chr_store_multi_hash_chr_translate____passive___2-1',
10945 U),
10946 insert_ht(U, G, I),
10947 nb_getval('$chr_store_multi_hash_chr_translate____passive___2-12',
10948 V),
10949 insert_ht(V, k(G, H), I)
10950 ; true
10951 ),
10952 W is L-1,
10953 stored(C, D, maybe),
10954 stored_complete(C, K, W),
10955 ( I=suspension(_, active, _, _, _)
10956 -> setarg(2, I, inactive),
10957 passive___2__1__1__8(B,
10958 C,
10959 D,
10960 E,
10961 F,
10962 G,
10963 H,
10964 I)
10965 ; true
10966 )
10967 ; passive___2__1__1__8(B,
10968 C,
10969 D,
10970 E,
10971 F,
10972 G,
10973 H,
10974 I)
10975 ).
10976passive___2__1(A, B, C) :-
10977 passive___2__2(A, B, C).
10978passive___2__2(A, B, C) :-
10979 nb_getval('$chr_store_multi_hash_chr_translate____rule___2-1', D),
10980 lookup_ht(D, A, E),
10981 !,
10982 passive___2__2__0__9(E, A, B, C).
10983passive___2__2__0__9([], A, B, C) :-
10984 passive___2__3(A, B, C).
10985passive___2__2__0__9([A|B], C, D, E) :-
10986 ( A=suspension(_, active, _, _, F, G),
10987 F==C,
10988 H=t(251, A, E),
10989 '$novel_production'(A, H),
10990 '$novel_production'(E, H),
10991 G=pragma(rule(_, _, _, _), ids([D|I], J), _, _, C)
10992 -> '$extend_history'(E, H),
10993 arg(2, E, K),
10994 setarg(2, E, active),
10995 ( K==not_stored_yet
10996 -> nb_getval('$chr_store_multi_hash_chr_translate____passive___2-1',
10997 L),
10998 insert_ht(L, C, E),
10999 nb_getval('$chr_store_multi_hash_chr_translate____passive___2-12',
11000 M),
11001 insert_ht(M, k(C, D), E)
11002 ; true
11003 ),
11004 append(I, J, N),
11005 check_all_passive(C, N),
11006 ( E=suspension(_, active, _, _, _)
11007 -> setarg(2, E, inactive),
11008 passive___2__2__0__9(B, C, D, E)
11009 ; true
11010 )
11011 ; passive___2__2__0__9(B, C, D, E)
11012 ).
11013passive___2__2(A, B, C) :-
11014 passive___2__3(A, B, C).
11015passive___2__3(A, B, C) :-
11016 nb_getval('$chr_store_multi_hash_chr_translate____rule___2-1', D),
11017 lookup_ht(D, A, E),
11018 !,
11019 passive___2__3__0__10(E, A, B, C).
11020passive___2__3__0__10([], A, B, C) :-
11021 passive___2__4(A, B, C).
11022passive___2__3__0__10([A|B], C, D, E) :-
11023 ( A=suspension(_, active, _, _, F, G),
11024 F==C,
11025 H=t(252, A, E),
11026 '$novel_production'(A, H),
11027 '$novel_production'(E, H),
11028 G=pragma(rule(_, _, _, _), ids([], [D|I]), _, _, C)
11029 -> '$extend_history'(E, H),
11030 arg(2, E, J),
11031 setarg(2, E, active),
11032 ( J==not_stored_yet
11033 -> nb_getval('$chr_store_multi_hash_chr_translate____passive___2-1',
11034 K),
11035 insert_ht(K, C, E),
11036 nb_getval('$chr_store_multi_hash_chr_translate____passive___2-12',
11037 L),
11038 insert_ht(L, k(C, D), E)
11039 ; true
11040 ),
11041 check_all_passive(C, I),
11042 ( E=suspension(_, active, _, _, _)
11043 -> setarg(2, E, inactive),
11044 passive___2__3__0__10(B, C, D, E)
11045 ; true
11046 )
11047 ; passive___2__3__0__10(B, C, D, E)
11048 ).
11049passive___2__3(A, B, C) :-
11050 passive___2__4(A, B, C).
11051passive___2__4(A, B, C) :-
11052 nb_getval('$chr_store_multi_hash_chr_translate____check_all_passive___2-1',
11053 D),
11054 lookup_ht(D, A, E),
11055 !,
11056 passive___2__4__0__11(E, A, B, C).
11057passive___2__4__0__11([], A, B, C) :-
11058 passive___2__5(A, B, C).
11059passive___2__4__0__11([A|B], C, D, E) :-
11060 ( A=suspension(_, active, F, G),
11061 F==C,
11062 G=[H|I],
11063 H==D
11064 -> setarg(2, A, removed),
11065 ( nb_getval('$chr_store_multi_hash_chr_translate____check_all_passive___2-12',
11066 J),
11067 delete_ht(J, k(C, [D|I]), A)
11068 ),
11069 nb_getval('$chr_store_multi_hash_chr_translate____check_all_passive___2-1',
11070 K),
11071 delete_ht(K, C, A),
11072 arg(2, E, L),
11073 setarg(2, E, active),
11074 ( L==not_stored_yet
11075 -> nb_getval('$chr_store_multi_hash_chr_translate____passive___2-1',
11076 M),
11077 insert_ht(M, C, E),
11078 nb_getval('$chr_store_multi_hash_chr_translate____passive___2-12',
11079 N),
11080 insert_ht(N, k(C, D), E)
11081 ; true
11082 ),
11083 check_all_passive(C, I),
11084 ( E=suspension(_, active, _, _, _)
11085 -> setarg(2, E, inactive),
11086 passive___2__4__0__11(B, C, D, E)
11087 ; true
11088 )
11089 ; passive___2__4__0__11(B, C, D, E)
11090 ).
11091passive___2__4(A, B, C) :-
11092 passive___2__5(A, B, C).
11093passive___2__5(A, B, C) :-
11094 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-34',
11095 D),
11096 lookup_ht(D, k(A, B), E),
11097 !,
11098 passive___2__5__0__14(E, A, B, C).
11099passive___2__5__0__14([], A, B, C) :-
11100 passive___2__6(A, B, C).
11101passive___2__5__0__14([A|B], C, D, E) :-
11102 ( A=suspension(_, active, _, _, F, G, H, I, _),
11103 H==C,
11104 I==D,
11105 nb_getval('$chr_store_multi_hash_chr_translate____skip_to_next_id___2-12',
11106 J),
11107 lookup_ht(J, k(F, G), K)
11108 -> passive___2__5__1__14(K,
11109 F,
11110 G,
11111 A,
11112 B,
11113 C,
11114 D,
11115 E)
11116 ; passive___2__5__0__14(B, C, D, E)
11117 ).
11118passive___2__5__1__14([], _, _, _, A, B, C, D) :-
11119 passive___2__5__0__14(A, B, C, D).
11120passive___2__5__1__14([A|B], C, D, E, F, G, H, I) :-
11121 ( A=suspension(_, active, _, J, K),
11122 J==C,
11123 K==D,
11124 L=t(362, E, I, A),
11125 '$novel_production'(E, L),
11126 '$novel_production'(I, L),
11127 '$novel_production'(A, L),
11128 D>1
11129 -> '$extend_history'(I, L),
11130 arg(2, I, M),
11131 setarg(2, I, active),
11132 ( M==not_stored_yet
11133 -> nb_getval('$chr_store_multi_hash_chr_translate____passive___2-1',
11134 N),
11135 insert_ht(N, G, I),
11136 nb_getval('$chr_store_multi_hash_chr_translate____passive___2-12',
11137 O),
11138 insert_ht(O, k(G, H), I)
11139 ; true
11140 ),
11141 P is D-1,
11142 skip_to_next_id(C, P),
11143 ( I=suspension(_, active, _, _, _)
11144 -> setarg(2, I, inactive),
11145 passive___2__5__1__14(B,
11146 C,
11147 D,
11148 E,
11149 F,
11150 G,
11151 H,
11152 I)
11153 ; true
11154 )
11155 ; passive___2__5__1__14(B,
11156 C,
11157 D,
11158 E,
11159 F,
11160 G,
11161 H,
11162 I)
11163 ).
11164passive___2__5(A, B, C) :-
11165 passive___2__6(A, B, C).
11166passive___2__6(A, B, C) :-
11167 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-34',
11168 D),
11169 lookup_ht(D, k(A, B), E),
11170 !,
11171 passive___2__6__0__15(E, A, B, C).
11172passive___2__6__0__15([], A, B, C) :-
11173 passive___2__7(A, B, C).
11174passive___2__6__0__15([A|B], C, D, E) :-
11175 ( A=suspension(_, active, _, _, F, G, H, I, _),
11176 H==C,
11177 I==D,
11178 nb_getval('$chr_store_multi_hash_chr_translate____set_occurrence_code_id___3-12',
11179 J),
11180 lookup_ht(J, k(F, G), K)
11181 -> passive___2__6__1__15(K,
11182 F,
11183 G,
11184 A,
11185 B,
11186 C,
11187 D,
11188 E)
11189 ; passive___2__6__0__15(B, C, D, E)
11190 ).
11191passive___2__6__1__15([], _, _, _, A, B, C, D) :-
11192 passive___2__6__0__15(A, B, C, D).
11193passive___2__6__1__15([A|B], C, D, E, F, G, H, I) :-
11194 ( A=suspension(_, active, J, K, L),
11195 J==C,
11196 K==D
11197 -> setarg(2, A, removed),
11198 nb_getval('$chr_store_multi_hash_chr_translate____set_occurrence_code_id___3-12',
11199 M),
11200 delete_ht(M, k(C, D), A),
11201 arg(2, I, N),
11202 setarg(2, I, active),
11203 ( N==not_stored_yet
11204 -> nb_getval('$chr_store_multi_hash_chr_translate____passive___2-1',
11205 O),
11206 insert_ht(O, G, I),
11207 nb_getval('$chr_store_multi_hash_chr_translate____passive___2-12',
11208 P),
11209 insert_ht(P, k(G, H), I)
11210 ; true
11211 ),
11212 occurrence_code_id(C, D, L),
11213 Q is D+1,
11214 set_occurrence_code_id(C, Q, L),
11215 ( I=suspension(_, active, _, _, _)
11216 -> setarg(2, I, inactive),
11217 passive___2__6__1__15(B,
11218 C,
11219 D,
11220 E,
11221 F,
11222 G,
11223 H,
11224 I)
11225 ; true
11226 )
11227 ; passive___2__6__1__15(B,
11228 C,
11229 D,
11230 E,
11231 F,
11232 G,
11233 H,
11234 I)
11235 ).
11236passive___2__6(A, B, C) :-
11237 passive___2__7(A, B, C).
11238passive___2__7(A, B, C) :-
11239 arg(2, C, D),
11240 setarg(2, C, active),
11241 ( D==not_stored_yet
11242 -> nb_getval('$chr_store_multi_hash_chr_translate____passive___2-1',
11243 E),
11244 insert_ht(E, A, C),
11245 nb_getval('$chr_store_multi_hash_chr_translate____passive___2-12',
11246 F),
11247 insert_ht(F, k(A, B), C)
11248 ; true
11249 ).
11250is_passive(A, B) :-
11251 nb_getval('$chr_store_multi_hash_chr_translate____passive___2-12', C),
11252 lookup_ht(C, k(A, B), D),
11253 member(E, D),
11254 E=suspension(_, active, _, _, _),
11255 !.
11256is_passive(_, _) :-
11257 fail.
11258any_passive_head(A) :-
11259 nb_getval('$chr_store_multi_hash_chr_translate____passive___2-1', B),
11260 lookup_ht(B, A, C),
11261 member(D, C),
11262 D=suspension(_, active, _, _, _),
11263 !.
11264any_passive_head(_) :-
11265 fail.
11266new_occurrence(A, B, C, D) :-
11267 nb_getval('$chr_store_multi_hash_chr_translate____max_occurrence___2-1',
11268 E),
11269 lookup_ht(E, A, F),
11270 member(G, F),
11271 G=suspension(_, active, _, _, H),
11272 !,
11273 setarg(2, G, removed),
11274 nb_getval('$chr_store_multi_hash_chr_translate____max_occurrence___2-1',
11275 I),
11276 delete_ht(I, A, G),
11277 J is H+1,
11278 occurrence(A, J, B, C, D),
11279 max_occurrence(A, J).
11280new_occurrence(A, B, _, _) :-
11281 chr_error(internal,
11282 'new_occurrence: missing max_occurrence for ~w in rule ~w\n',
11283 [A, B]).
11284occurrence(A, B, C, D, E) :-
11285 occurrence___5__0(A, B, C, D, E, _).
11286occurrence___5__0(A, B, C, D, E, F) :-
11287 nb_getval('$chr_store_multi_hash_chr_translate____rule___2-1', G),
11288 lookup_ht(G, C, H),
11289 !,
11290 F=suspension(I, not_stored_yet, t, _, A, B, C, D, E),
11291 'chr gen_id'(I),
11292 occurrence___5__0__0__4(H,
11293 A,
11294 B,
11295 C,
11296 D,
11297 E,
11298 F).
11299occurrence___5__0__0__4([], A, B, C, D, E, F) :-
11300 occurrence___5__1(A, B, C, D, E, F).
11301occurrence___5__0__0__4([A|B], C, D, E, F, G, H) :-
11302 ( A=suspension(_, active, _, _, I, J),
11303 I==E,
11304 nb_getval('$chr_store_multi_hash_chr_translate____allocation_occurrence___2-12',
11305 K),
11306 lookup_ht(K, k(C, D), L)
11307 -> occurrence___5__0__1__4(L,
11308 J,
11309 A,
11310 B,
11311 C,
11312 D,
11313 E,
11314 F,
11315 G,
11316 H)
11317 ; occurrence___5__0__0__4(B,
11318 C,
11319 D,
11320 E,
11321 F,
11322 G,
11323 H)
11324 ).
11325occurrence___5__0__1__4([], _, _, A, B, C, D, E, F, G) :-
11326 occurrence___5__0__0__4(A,
11327 B,
11328 C,
11329 D,
11330 E,
11331 F,
11332 G).
11333occurrence___5__0__1__4([A|B], C, D, E, F, G, H, I, J, K) :-
11334 ( A=suspension(_, active, _, L, M),
11335 L==F,
11336 M==G,
11337 N=t(60, D, K, A),
11338 '$novel_production'(D, N),
11339 '$novel_production'(K, N),
11340 '$novel_production'(A, N)
11341 -> '$extend_history'(K, N),
11342 arg(2, K, O),
11343 setarg(2, K, active),
11344 ( O==not_stored_yet
11345 -> nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-15',
11346 P),
11347 insert_ht(P, k(F, J), K),
11348 nb_getval('$chr_store_global_ground_chr_translate____occurrence___5',
11349 Q),
11350 R=[K|Q],
11351 b_setval('$chr_store_global_ground_chr_translate____occurrence___5',
11352 R),
11353 ( Q=[S|_]
11354 -> setarg(4, S, R)
11355 ; true
11356 ),
11357 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-125',
11358 T),
11359 insert_ht(T, k(F, G, J), K),
11360 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-134',
11361 U),
11362 insert_ht(U, k(F, H, I), K),
11363 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-12',
11364 V),
11365 insert_ht(V, k(F, G), K),
11366 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-3',
11367 W),
11368 insert_ht(W, H, K),
11369 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-13',
11370 X),
11371 insert_ht(X, k(F, H), K),
11372 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-34',
11373 Y),
11374 insert_ht(Y, k(H, I), K),
11375 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-1',
11376 Z),
11377 insert_ht(Z, F, K)
11378 ; true
11379 ),
11380 \+ is_passive(H, I),
11381 J==propagation,
11382 ( stored_in_guard_before_next_kept_occurrence(F, G)
11383 -> true
11384 ; C=pragma(rule([_|_], _, _, _), _, _, _, _)
11385 -> is_observed(F, G)
11386 ; is_least_occurrence(H)
11387 -> is_observed(F, G)
11388 ; true
11389 ),
11390 ( K=suspension(_, active, _, _, _, _, _, _, _)
11391 -> setarg(2, K, inactive),
11392 occurrence___5__0__1__4(B,
11393 C,
11394 D,
11395 E,
11396 F,
11397 G,
11398 H,
11399 I,
11400 J,
11401 K)
11402 ; true
11403 )
11404 ; occurrence___5__0__1__4(B,
11405 C,
11406 D,
11407 E,
11408 F,
11409 G,
11410 H,
11411 I,
11412 J,
11413 K)
11414 ).
11415occurrence___5__0(A, B, C, D, E, F) :-
11416 F=suspension(G, not_stored_yet, t, _, A, B, C, D, E),
11417 'chr gen_id'(G),
11418 occurrence___5__1(A, B, C, D, E, F).
11419occurrence___5__1(A, B, C, D, E, F) :-
11420 nb_getval('$chr_store_multi_hash_chr_translate____least_occurrence___2-1',
11421 G),
11422 lookup_ht(G, C, H),
11423 !,
11424 occurrence___5__1__0__7(H,
11425 A,
11426 B,
11427 C,
11428 D,
11429 E,
11430 F).
11431occurrence___5__1__0__7([], A, B, C, D, E, F) :-
11432 occurrence___5__2(A, B, C, D, E, F).
11433occurrence___5__1__0__7([A|B], C, D, E, F, G, H) :-
11434 ( A=suspension(_, active, I, J),
11435 I==E,
11436 J=[K|L],
11437 K==F,
11438 ( ground(C),
11439 nb_getval('$chr_store_multi_hash_chr_translate____allocation_occurrence___2-1',
11440 M),
11441 lookup_ht(M, C, N)
11442 ),
11443 member(O, N),
11444 O=suspension(_, active, _, _, P),
11445 P>=D,
11446 ( ground(E),
11447 nb_getval('$chr_store_multi_hash_chr_translate____rule___2-1',
11448 Q),
11449 lookup_ht(Q, E, R)
11450 ),
11451 member(S, R),
11452 S=suspension(_, active, _, _, _, _),
11453 \+ may_trigger(C)
11454 -> setarg(2, A, removed),
11455 ( nb_getval('$chr_store_multi_hash_chr_translate____least_occurrence___2-12',
11456 T),
11457 delete_ht(T, k(E, [F|L]), A)
11458 ),
11459 nb_getval('$chr_store_multi_hash_chr_translate____least_occurrence___2-1',
11460 U),
11461 delete_ht(U, E, A),
11462 arg(2, H, V),
11463 setarg(2, H, active),
11464 ( V==not_stored_yet
11465 -> nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-15',
11466 W),
11467 insert_ht(W, k(C, G), H),
11468 nb_getval('$chr_store_global_ground_chr_translate____occurrence___5',
11469 X),
11470 Y=[H|X],
11471 b_setval('$chr_store_global_ground_chr_translate____occurrence___5',
11472 Y),
11473 ( X=[Z|_]
11474 -> setarg(4, Z, Y)
11475 ; true
11476 ),
11477 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-125',
11478 A1),
11479 insert_ht(A1, k(C, D, G), H),
11480 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-134',
11481 B1),
11482 insert_ht(B1, k(C, E, F), H),
11483 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-12',
11484 C1),
11485 insert_ht(C1, k(C, D), H),
11486 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-3',
11487 D1),
11488 insert_ht(D1, E, H),
11489 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-13',
11490 E1),
11491 insert_ht(E1, k(C, E), H),
11492 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-34',
11493 F1),
11494 insert_ht(F1, k(E, F), H),
11495 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-1',
11496 G1),
11497 insert_ht(G1, C, H)
11498 ; true
11499 ),
11500 least_occurrence(E, L),
11501 ( H=suspension(_, active, _, _, _, _, _, _, _)
11502 -> setarg(2, H, inactive),
11503 occurrence___5__1__0__7(B,
11504 C,
11505 D,
11506 E,
11507 F,
11508 G,
11509 H)
11510 ; true
11511 )
11512 ; occurrence___5__1__0__7(B,
11513 C,
11514 D,
11515 E,
11516 F,
11517 G,
11518 H)
11519 ).
11520occurrence___5__1(A, B, C, D, E, F) :-
11521 occurrence___5__2(A, B, C, D, E, F).
11522occurrence___5__2(A, B, C, D, E, F) :-
11523 nb_getval('$chr_store_multi_hash_chr_translate____set_all_passive___1-1',
11524 G),
11525 lookup_ht(G, C, H),
11526 !,
11527 occurrence___5__2__0__29(H,
11528 A,
11529 B,
11530 C,
11531 D,
11532 E,
11533 F).
11534occurrence___5__2__0__29([], A, B, C, D, E, F) :-
11535 occurrence___5__3(A, B, C, D, E, F).
11536occurrence___5__2__0__29([A|B], C, D, E, F, G, H) :-
11537 ( A=suspension(_, active, _, I),
11538 I==E,
11539 J=t(180, A, H),
11540 '$novel_production'(A, J),
11541 '$novel_production'(H, J)
11542 -> '$extend_history'(H, J),
11543 arg(2, H, K),
11544 setarg(2, H, active),
11545 ( K==not_stored_yet
11546 -> nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-15',
11547 L),
11548 insert_ht(L, k(C, G), H),
11549 nb_getval('$chr_store_global_ground_chr_translate____occurrence___5',
11550 M),
11551 N=[H|M],
11552 b_setval('$chr_store_global_ground_chr_translate____occurrence___5',
11553 N),
11554 ( M=[O|_]
11555 -> setarg(4, O, N)
11556 ; true
11557 ),
11558 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-125',
11559 P),
11560 insert_ht(P, k(C, D, G), H),
11561 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-134',
11562 Q),
11563 insert_ht(Q, k(C, E, F), H),
11564 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-12',
11565 R),
11566 insert_ht(R, k(C, D), H),
11567 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-3',
11568 S),
11569 insert_ht(S, E, H),
11570 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-13',
11571 T),
11572 insert_ht(T, k(C, E), H),
11573 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-34',
11574 U),
11575 insert_ht(U, k(E, F), H),
11576 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-1',
11577 V),
11578 insert_ht(V, C, H)
11579 ; true
11580 ),
11581 passive(E, F),
11582 ( H=suspension(_, active, _, _, _, _, _, _, _)
11583 -> setarg(2, H, inactive),
11584 occurrence___5__2__0__29(B,
11585 C,
11586 D,
11587 E,
11588 F,
11589 G,
11590 H)
11591 ; true
11592 )
11593 ; occurrence___5__2__0__29(B,
11594 C,
11595 D,
11596 E,
11597 F,
11598 G,
11599 H)
11600 ).
11601occurrence___5__2(A, B, C, D, E, F) :-
11602 occurrence___5__3(A, B, C, D, E, F).
11603occurrence___5__3(A, B, C, D, E, F) :-
11604 nb_getval('$chr_store_multi_hash_chr_translate____rule___2-1', G),
11605 lookup_ht(G, C, H),
11606 !,
11607 occurrence___5__3__0__30(H,
11608 A,
11609 B,
11610 C,
11611 D,
11612 E,
11613 F).
11614occurrence___5__3__0__30([], A, B, C, D, E, F) :-
11615 occurrence___5__4(A, B, C, D, E, F).
11616occurrence___5__3__0__30([A|B], C, D, E, F, G, H) :-
11617 ( A=suspension(_, active, _, _, I, J),
11618 I==E,
11619 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-13',
11620 K),
11621 lookup_ht(K, k(C, E), L)
11622 -> occurrence___5__3__1__30(L,
11623 J,
11624 A,
11625 B,
11626 C,
11627 D,
11628 E,
11629 F,
11630 G,
11631 H)
11632 ; occurrence___5__3__0__30(B,
11633 C,
11634 D,
11635 E,
11636 F,
11637 G,
11638 H)
11639 ).
11640occurrence___5__3__1__30([], _, _, A, B, C, D, E, F, G) :-
11641 occurrence___5__3__0__30(A,
11642 B,
11643 C,
11644 D,
11645 E,
11646 F,
11647 G).
11648occurrence___5__3__1__30([A|B], C, D, E, F, G, H, I, J, K) :-
11649 ( A=suspension(_, active, _, _, L, M, N, _, _),
11650 L==F,
11651 N==H,
11652 nb_getval('$chr_store_multi_hash_chr_translate____prev_guard_list___6-1',
11653 O),
11654 lookup_ht(O, H, P)
11655 -> occurrence___5__3__2__30(P,
11656 M,
11657 A,
11658 B,
11659 C,
11660 D,
11661 E,
11662 F,
11663 G,
11664 H,
11665 I,
11666 J,
11667 K)
11668 ; occurrence___5__3__1__30(B,
11669 C,
11670 D,
11671 E,
11672 F,
11673 G,
11674 H,
11675 I,
11676 J,
11677 K)
11678 ).
11679occurrence___5__3__2__30([], _, _, A, B, C, D, E, F, G, H, I, J) :-
11680 occurrence___5__3__1__30(A,
11681 B,
11682 C,
11683 D,
11684 E,
11685 F,
11686 G,
11687 H,
11688 I,
11689 J).
11690occurrence___5__3__2__30([A|B], C, D, E, F, G, H, I, J, K, L, M, N) :-
11691 ( A=suspension(_, active, _, _, O, _, _, _, _, _),
11692 O==K,
11693 nb_getval('$chr_store_global_ground_chr_translate____multiple_occ_constraints_checked___1',
11694 P)
11695 -> occurrence___5__3__3__30(P,
11696 A,
11697 B,
11698 C,
11699 D,
11700 E,
11701 F,
11702 G,
11703 H,
11704 I,
11705 J,
11706 K,
11707 L,
11708 M,
11709 N)
11710 ; occurrence___5__3__2__30(B,
11711 C,
11712 D,
11713 E,
11714 F,
11715 G,
11716 H,
11717 I,
11718 J,
11719 K,
11720 L,
11721 M,
11722 N)
11723 ).
11724occurrence___5__3__3__30([], _, A, B, C, D, E, F, G, H, I, J, K, L, M) :-
11725 occurrence___5__3__2__30(A,
11726 B,
11727 C,
11728 D,
11729 E,
11730 F,
11731 G,
11732 H,
11733 I,
11734 J,
11735 K,
11736 L,
11737 M).
11738occurrence___5__3__3__30([A|B], C, D, E, F, G, H, I, J, K, L, M, N, O, P) :-
11739 ( A=suspension(_, active, _, Q),
11740 L<E,
11741 chr_pp_flag(occurrence_subsumption, on),
11742 H=pragma(rule(R, _, _, _), _, _, _, _),
11743 R\==[],
11744 \+ tree_set_memberchk(K, Q)
11745 -> setarg(2, A, removed),
11746 arg(3, A, S),
11747 ( var(S)
11748 -> nb_getval('$chr_store_global_ground_chr_translate____multiple_occ_constraints_checked___1',
11749 T),
11750 T=[_|U],
11751 b_setval('$chr_store_global_ground_chr_translate____multiple_occ_constraints_checked___1',
11752 U),
11753 ( U=[V|_]
11754 -> setarg(3, V, _)
11755 ; true
11756 )
11757 ; S=[_, _|U],
11758 setarg(2, S, U),
11759 ( U=[V|_]
11760 -> setarg(3, V, S)
11761 ; true
11762 )
11763 ),
11764 arg(2, P, W),
11765 setarg(2, P, active),
11766 ( W==not_stored_yet
11767 -> nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-15',
11768 X),
11769 insert_ht(X, k(K, O), P),
11770 nb_getval('$chr_store_global_ground_chr_translate____occurrence___5',
11771 Y),
11772 Z=[P|Y],
11773 b_setval('$chr_store_global_ground_chr_translate____occurrence___5',
11774 Z),
11775 ( Y=[A1|_]
11776 -> setarg(4, A1, Z)
11777 ; true
11778 ),
11779 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-125',
11780 B1),
11781 insert_ht(B1, k(K, L, O), P),
11782 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-134',
11783 C1),
11784 insert_ht(C1, k(K, M, N), P),
11785 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-12',
11786 D1),
11787 insert_ht(D1, k(K, L), P),
11788 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-3',
11789 E1),
11790 insert_ht(E1, M, P),
11791 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-13',
11792 F1),
11793 insert_ht(F1, k(K, M), P),
11794 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-34',
11795 G1),
11796 insert_ht(G1, k(M, N), P),
11797 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-1',
11798 H1),
11799 insert_ht(H1, K, P)
11800 ; true
11801 ),
11802 first_occ_in_rule(M, K, L, N),
11803 tree_set_add(Q, K, I1),
11804 multiple_occ_constraints_checked(I1),
11805 ( P=suspension(_, active, _, _, _, _, _, _, _)
11806 -> setarg(2, P, inactive),
11807 occurrence___5__3__3__30(B,
11808 C,
11809 D,
11810 E,
11811 F,
11812 G,
11813 H,
11814 I,
11815 J,
11816 K,
11817 L,
11818 M,
11819 N,
11820 O,
11821 P)
11822 ; true
11823 )
11824 ; occurrence___5__3__3__30(B,
11825 C,
11826 D,
11827 E,
11828 F,
11829 G,
11830 H,
11831 I,
11832 J,
11833 K,
11834 L,
11835 M,
11836 N,
11837 O,
11838 P)
11839 ).
11840occurrence___5__3(A, B, C, D, E, F) :-
11841 occurrence___5__4(A, B, C, D, E, F).
11842occurrence___5__4(A, B, C, D, E, F) :-
11843 nb_getval('$chr_store_multi_hash_chr_translate____rule___2-1', G),
11844 lookup_ht(G, C, H),
11845 !,
11846 occurrence___5__4__0__31(H,
11847 A,
11848 B,
11849 C,
11850 D,
11851 E,
11852 F).
11853occurrence___5__4__0__31([], A, B, C, D, E, F) :-
11854 occurrence___5__5(A, B, C, D, E, F).
11855occurrence___5__4__0__31([A|B], C, D, E, F, G, H) :-
11856 ( A=suspension(_, active, _, _, I, J),
11857 I==E,
11858 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-13',
11859 K),
11860 lookup_ht(K, k(C, E), L)
11861 -> occurrence___5__4__1__31(L,
11862 J,
11863 A,
11864 B,
11865 C,
11866 D,
11867 E,
11868 F,
11869 G,
11870 H)
11871 ; occurrence___5__4__0__31(B,
11872 C,
11873 D,
11874 E,
11875 F,
11876 G,
11877 H)
11878 ).
11879occurrence___5__4__1__31([], _, _, A, B, C, D, E, F, G) :-
11880 occurrence___5__4__0__31(A,
11881 B,
11882 C,
11883 D,
11884 E,
11885 F,
11886 G).
11887occurrence___5__4__1__31([A|B], C, D, E, F, G, H, I, J, K) :-
11888 ( A=suspension(_, active, _, _, L, M, N, O, _),
11889 L==F,
11890 N==H,
11891 nb_getval('$chr_store_multi_hash_chr_translate____prev_guard_list___6-1',
11892 P),
11893 lookup_ht(P, H, Q)
11894 -> occurrence___5__4__2__31(Q,
11895 M,
11896 O,
11897 A,
11898 B,
11899 C,
11900 D,
11901 E,
11902 F,
11903 G,
11904 H,
11905 I,
11906 J,
11907 K)
11908 ; occurrence___5__4__1__31(B,
11909 C,
11910 D,
11911 E,
11912 F,
11913 G,
11914 H,
11915 I,
11916 J,
11917 K)
11918 ).
11919occurrence___5__4__2__31([], _, _, _, A, B, C, D, E, F, G, H, I, J) :-
11920 occurrence___5__4__1__31(A,
11921 B,
11922 C,
11923 D,
11924 E,
11925 F,
11926 G,
11927 H,
11928 I,
11929 J).
11930occurrence___5__4__2__31([A|B], C, D, E, F, G, H, I, J, K, L, M, N, O) :-
11931 ( A=suspension(_, active, _, _, P, _, _, _, _, _),
11932 P==L,
11933 nb_getval('$chr_store_global_ground_chr_translate____multiple_occ_constraints_checked___1',
11934 Q)
11935 -> occurrence___5__4__3__31(Q,
11936 A,
11937 B,
11938 C,
11939 D,
11940 E,
11941 F,
11942 G,
11943 H,
11944 I,
11945 J,
11946 K,
11947 L,
11948 M,
11949 N,
11950 O)
11951 ; occurrence___5__4__2__31(B,
11952 C,
11953 D,
11954 E,
11955 F,
11956 G,
11957 H,
11958 I,
11959 J,
11960 K,
11961 L,
11962 M,
11963 N,
11964 O)
11965 ).
11966occurrence___5__4__3__31([], _, A, B, C, D, E, F, G, H, I, J, K, L, M, N) :-
11967 occurrence___5__4__2__31(A,
11968 B,
11969 C,
11970 D,
11971 E,
11972 F,
11973 G,
11974 H,
11975 I,
11976 J,
11977 K,
11978 L,
11979 M,
11980 N).
11981occurrence___5__4__3__31([A|B], C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q) :-
11982 ( A=suspension(_, active, _, R),
11983 E<M,
11984 chr_pp_flag(occurrence_subsumption, on),
11985 I=pragma(rule(S, _, _, _), _, _, _, _),
11986 S\==[],
11987 \+ tree_set_memberchk(L, R)
11988 -> setarg(2, A, removed),
11989 arg(3, A, T),
11990 ( var(T)
11991 -> nb_getval('$chr_store_global_ground_chr_translate____multiple_occ_constraints_checked___1',
11992 U),
11993 U=[_|V],
11994 b_setval('$chr_store_global_ground_chr_translate____multiple_occ_constraints_checked___1',
11995 V),
11996 ( V=[W|_]
11997 -> setarg(3, W, _)
11998 ; true
11999 )
12000 ; T=[_, _|V],
12001 setarg(2, T, V),
12002 ( V=[W|_]
12003 -> setarg(3, W, T)
12004 ; true
12005 )
12006 ),
12007 arg(2, Q, X),
12008 setarg(2, Q, active),
12009 ( X==not_stored_yet
12010 -> nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-15',
12011 Y),
12012 insert_ht(Y, k(L, P), Q),
12013 nb_getval('$chr_store_global_ground_chr_translate____occurrence___5',
12014 Z),
12015 A1=[Q|Z],
12016 b_setval('$chr_store_global_ground_chr_translate____occurrence___5',
12017 A1),
12018 ( Z=[B1|_]
12019 -> setarg(4, B1, A1)
12020 ; true
12021 ),
12022 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-125',
12023 C1),
12024 insert_ht(C1, k(L, M, P), Q),
12025 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-134',
12026 D1),
12027 insert_ht(D1, k(L, N, O), Q),
12028 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-12',
12029 E1),
12030 insert_ht(E1, k(L, M), Q),
12031 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-3',
12032 F1),
12033 insert_ht(F1, N, Q),
12034 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-13',
12035 G1),
12036 insert_ht(G1, k(L, N), Q),
12037 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-34',
12038 H1),
12039 insert_ht(H1, k(N, O), Q),
12040 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-1',
12041 I1),
12042 insert_ht(I1, L, Q)
12043 ; true
12044 ),
12045 first_occ_in_rule(N, L, E, F),
12046 tree_set_add(R, L, J1),
12047 multiple_occ_constraints_checked(J1),
12048 ( Q=suspension(_, active, _, _, _, _, _, _, _)
12049 -> setarg(2, Q, inactive),
12050 occurrence___5__4__3__31(B,
12051 C,
12052 D,
12053 E,
12054 F,
12055 G,
12056 H,
12057 I,
12058 J,
12059 K,
12060 L,
12061 M,
12062 N,
12063 O,
12064 P,
12065 Q)
12066 ; true
12067 )
12068 ; occurrence___5__4__3__31(B,
12069 C,
12070 D,
12071 E,
12072 F,
12073 G,
12074 H,
12075 I,
12076 J,
12077 K,
12078 L,
12079 M,
12080 N,
12081 O,
12082 P,
12083 Q)
12084 ).
12085occurrence___5__4(A, B, C, D, E, F) :-
12086 occurrence___5__5(A, B, C, D, E, F).
12087occurrence___5__5(A, B, C, D, E, F) :-
12088 nb_getval('$chr_store_multi_hash_chr_translate____stored___3-123', G),
12089 lookup_ht(G, k(A, B, yes), H),
12090 !,
12091 occurrence___5__5__0__35(H,
12092 A,
12093 B,
12094 C,
12095 D,
12096 E,
12097 F).
12098occurrence___5__5__0__35([], A, B, C, D, E, F) :-
12099 occurrence___5__6(A, B, C, D, E, F).
12100occurrence___5__5__0__35([A|B], C, D, E, F, G, H) :-
12101 ( A=suspension(_, active, I, J, K),
12102 I==C,
12103 J==D,
12104 K=yes,
12105 ( ground(E),
12106 ground(F),
12107 nb_getval('$chr_store_multi_hash_chr_translate____passive___2-12',
12108 L),
12109 lookup_ht(L, k(E, F), M)
12110 ),
12111 member(N, M),
12112 N=suspension(_, active, _, _, _),
12113 ( ground(C),
12114 nb_getval('$chr_store_multi_hash_chr_translate____stored_complete___3-1',
12115 O),
12116 lookup_ht(O, C, P)
12117 ),
12118 member(Q, P),
12119 Q=suspension(_, active, _, _, R, S),
12120 D<R
12121 -> ( setarg(2, A, removed),
12122 nb_getval('$chr_store_multi_hash_chr_translate____stored___3-13',
12123 T),
12124 delete_ht(T, k(C, yes), A),
12125 nb_getval('$chr_store_multi_hash_chr_translate____stored___3-123',
12126 U),
12127 delete_ht(U, k(C, D, yes), A)
12128 ),
12129 setarg(2, Q, removed),
12130 ( nb_getval('$chr_store_multi_hash_chr_translate____stored_complete___3-13',
12131 V),
12132 delete_ht(V, k(C, S), Q)
12133 ),
12134 nb_getval('$chr_store_multi_hash_chr_translate____stored_complete___3-1',
12135 W),
12136 delete_ht(W, C, Q),
12137 arg(2, H, X),
12138 setarg(2, H, active),
12139 ( X==not_stored_yet
12140 -> nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-15',
12141 Y),
12142 insert_ht(Y, k(C, G), H),
12143 nb_getval('$chr_store_global_ground_chr_translate____occurrence___5',
12144 Z),
12145 A1=[H|Z],
12146 b_setval('$chr_store_global_ground_chr_translate____occurrence___5',
12147 A1),
12148 ( Z=[B1|_]
12149 -> setarg(4, B1, A1)
12150 ; true
12151 ),
12152 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-125',
12153 C1),
12154 insert_ht(C1, k(C, D, G), H),
12155 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-134',
12156 D1),
12157 insert_ht(D1, k(C, E, F), H),
12158 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-12',
12159 E1),
12160 insert_ht(E1, k(C, D), H),
12161 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-3',
12162 F1),
12163 insert_ht(F1, E, H),
12164 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-13',
12165 G1),
12166 insert_ht(G1, k(C, E), H),
12167 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-34',
12168 H1),
12169 insert_ht(H1, k(E, F), H),
12170 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-1',
12171 I1),
12172 insert_ht(I1, C, H)
12173 ; true
12174 ),
12175 J1 is S-1,
12176 stored(C, D, maybe),
12177 stored_complete(C, R, J1),
12178 ( H=suspension(_, active, _, _, _, _, _, _, _)
12179 -> setarg(2, H, inactive),
12180 occurrence___5__5__0__35(B,
12181 C,
12182 D,
12183 E,
12184 F,
12185 G,
12186 H)
12187 ; true
12188 )
12189 ; occurrence___5__5__0__35(B,
12190 C,
12191 D,
12192 E,
12193 F,
12194 G,
12195 H)
12196 ).
12197occurrence___5__5(A, B, C, D, E, F) :-
12198 occurrence___5__6(A, B, C, D, E, F).
12199occurrence___5__6(A, B, C, D, E, F) :-
12200 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-3', G),
12201 lookup_ht(G, C, H),
12202 !,
12203 occurrence___5__6__0__36(H,
12204 A,
12205 B,
12206 C,
12207 D,
12208 E,
12209 F).
12210occurrence___5__6__0__36([], A, B, C, D, E, F) :-
12211 occurrence___5__7(A, B, C, D, E, F).
12212occurrence___5__6__0__36([A|B], C, D, E, F, G, H) :-
12213 ( A=suspension(_, active, _, _, I, _, J, _, _),
12214 J==E,
12215 nb_getval('$chr_store_multi_hash_chr_translate____max_occurrence___2-1',
12216 K),
12217 lookup_ht(K, I, L)
12218 -> occurrence___5__6__1__36(L,
12219 I,
12220 A,
12221 B,
12222 C,
12223 D,
12224 E,
12225 F,
12226 G,
12227 H)
12228 ; occurrence___5__6__0__36(B,
12229 C,
12230 D,
12231 E,
12232 F,
12233 G,
12234 H)
12235 ).
12236occurrence___5__6__1__36([], _, _, A, B, C, D, E, F, G) :-
12237 occurrence___5__6__0__36(A,
12238 B,
12239 C,
12240 D,
12241 E,
12242 F,
12243 G).
12244occurrence___5__6__1__36([A|B], C, D, E, F, G, H, I, J, K) :-
12245 ( A=suspension(_, active, _, L, M),
12246 L==C,
12247 nb_getval('$chr_store_multi_hash_chr_translate____stored_complete___3-13',
12248 N),
12249 lookup_ht(N, k(C, 0), O)
12250 -> occurrence___5__6__2__36(O,
12251 M,
12252 A,
12253 B,
12254 C,
12255 D,
12256 E,
12257 F,
12258 G,
12259 H,
12260 I,
12261 J,
12262 K)
12263 ; occurrence___5__6__1__36(B,
12264 C,
12265 D,
12266 E,
12267 F,
12268 G,
12269 H,
12270 I,
12271 J,
12272 K)
12273 ).
12274occurrence___5__6__2__36([], _, _, A, B, C, D, E, F, G, H, I, J) :-
12275 occurrence___5__6__1__36(A,
12276 B,
12277 C,
12278 D,
12279 E,
12280 F,
12281 G,
12282 H,
12283 I,
12284 J).
12285occurrence___5__6__2__36([A|B], C, D, E, F, G, H, I, J, K, L, M, N) :-
12286 ( A=suspension(_, active, _, O, P, Q),
12287 O==F,
12288 Q=0,
12289 R=t(250, N, G, A, D),
12290 '$novel_production'(N, R),
12291 '$novel_production'(G, R),
12292 '$novel_production'(A, R),
12293 '$novel_production'(D, R),
12294 P=<C
12295 -> '$extend_history'(N, R),
12296 arg(2, N, S),
12297 setarg(2, N, active),
12298 ( S==not_stored_yet
12299 -> nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-15',
12300 T),
12301 insert_ht(T, k(I, M), N),
12302 nb_getval('$chr_store_global_ground_chr_translate____occurrence___5',
12303 U),
12304 V=[N|U],
12305 b_setval('$chr_store_global_ground_chr_translate____occurrence___5',
12306 V),
12307 ( U=[W|_]
12308 -> setarg(4, W, V)
12309 ; true
12310 ),
12311 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-125',
12312 X),
12313 insert_ht(X, k(I, J, M), N),
12314 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-134',
12315 Y),
12316 insert_ht(Y, k(I, K, L), N),
12317 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-12',
12318 Z),
12319 insert_ht(Z, k(I, J), N),
12320 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-3',
12321 A1),
12322 insert_ht(A1, K, N),
12323 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-13',
12324 B1),
12325 insert_ht(B1, k(I, K), N),
12326 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-34',
12327 C1),
12328 insert_ht(C1, k(K, L), N),
12329 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-1',
12330 D1),
12331 insert_ht(D1, I, N)
12332 ; true
12333 ),
12334 passive(K, L),
12335 ( N=suspension(_, active, _, _, _, _, _, _, _)
12336 -> setarg(2, N, inactive),
12337 occurrence___5__6__2__36(B,
12338 C,
12339 D,
12340 E,
12341 F,
12342 G,
12343 H,
12344 I,
12345 J,
12346 K,
12347 L,
12348 M,
12349 N)
12350 ; true
12351 )
12352 ; occurrence___5__6__2__36(B,
12353 C,
12354 D,
12355 E,
12356 F,
12357 G,
12358 H,
12359 I,
12360 J,
12361 K,
12362 L,
12363 M,
12364 N)
12365 ).
12366occurrence___5__6(A, B, C, D, E, F) :-
12367 occurrence___5__7(A, B, C, D, E, F).
12368occurrence___5__7(A, B, C, D, E, F) :-
12369 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-3', G),
12370 lookup_ht(G, C, H),
12371 !,
12372 occurrence___5__7__0__37(H,
12373 A,
12374 B,
12375 C,
12376 D,
12377 E,
12378 F).
12379occurrence___5__7__0__37([], A, B, C, D, E, F) :-
12380 occurrence___5__8(A, B, C, D, E, F).
12381occurrence___5__7__0__37([A|B], C, D, E, F, G, H) :-
12382 ( A=suspension(_, active, _, _, _, _, I, J, _),
12383 I==E,
12384 nb_getval('$chr_store_multi_hash_chr_translate____max_occurrence___2-1',
12385 K),
12386 lookup_ht(K, C, L)
12387 -> occurrence___5__7__1__37(L,
12388 J,
12389 A,
12390 B,
12391 C,
12392 D,
12393 E,
12394 F,
12395 G,
12396 H)
12397 ; occurrence___5__7__0__37(B,
12398 C,
12399 D,
12400 E,
12401 F,
12402 G,
12403 H)
12404 ).
12405occurrence___5__7__1__37([], _, _, A, B, C, D, E, F, G) :-
12406 occurrence___5__7__0__37(A,
12407 B,
12408 C,
12409 D,
12410 E,
12411 F,
12412 G).
12413occurrence___5__7__1__37([A|B], C, D, E, F, G, H, I, J, K) :-
12414 ( A=suspension(_, active, _, L, M),
12415 L==F,
12416 nb_getval('$chr_store_multi_hash_chr_translate____stored_complete___3-13',
12417 N),
12418 lookup_ht(N, k(F, 0), O)
12419 -> occurrence___5__7__2__37(O,
12420 M,
12421 A,
12422 B,
12423 C,
12424 D,
12425 E,
12426 F,
12427 G,
12428 H,
12429 I,
12430 J,
12431 K)
12432 ; occurrence___5__7__1__37(B,
12433 C,
12434 D,
12435 E,
12436 F,
12437 G,
12438 H,
12439 I,
12440 J,
12441 K)
12442 ).
12443occurrence___5__7__2__37([], _, _, A, B, C, D, E, F, G, H, I, J) :-
12444 occurrence___5__7__1__37(A,
12445 B,
12446 C,
12447 D,
12448 E,
12449 F,
12450 G,
12451 H,
12452 I,
12453 J).
12454occurrence___5__7__2__37([A|B], C, D, E, F, G, H, I, J, K, L, M, N) :-
12455 ( A=suspension(_, active, _, O, P, Q),
12456 O==I,
12457 Q=0,
12458 R=t(250, G, N, A, D),
12459 '$novel_production'(G, R),
12460 '$novel_production'(N, R),
12461 '$novel_production'(A, R),
12462 '$novel_production'(D, R),
12463 P=<C
12464 -> '$extend_history'(N, R),
12465 arg(2, N, S),
12466 setarg(2, N, active),
12467 ( S==not_stored_yet
12468 -> nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-15',
12469 T),
12470 insert_ht(T, k(I, M), N),
12471 nb_getval('$chr_store_global_ground_chr_translate____occurrence___5',
12472 U),
12473 V=[N|U],
12474 b_setval('$chr_store_global_ground_chr_translate____occurrence___5',
12475 V),
12476 ( U=[W|_]
12477 -> setarg(4, W, V)
12478 ; true
12479 ),
12480 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-125',
12481 X),
12482 insert_ht(X, k(I, J, M), N),
12483 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-134',
12484 Y),
12485 insert_ht(Y, k(I, K, L), N),
12486 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-12',
12487 Z),
12488 insert_ht(Z, k(I, J), N),
12489 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-3',
12490 A1),
12491 insert_ht(A1, K, N),
12492 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-13',
12493 B1),
12494 insert_ht(B1, k(I, K), N),
12495 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-34',
12496 C1),
12497 insert_ht(C1, k(K, L), N),
12498 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-1',
12499 D1),
12500 insert_ht(D1, I, N)
12501 ; true
12502 ),
12503 passive(K, F),
12504 ( N=suspension(_, active, _, _, _, _, _, _, _)
12505 -> setarg(2, N, inactive),
12506 occurrence___5__7__2__37(B,
12507 C,
12508 D,
12509 E,
12510 F,
12511 G,
12512 H,
12513 I,
12514 J,
12515 K,
12516 L,
12517 M,
12518 N)
12519 ; true
12520 )
12521 ; occurrence___5__7__2__37(B,
12522 C,
12523 D,
12524 E,
12525 F,
12526 G,
12527 H,
12528 I,
12529 J,
12530 K,
12531 L,
12532 M,
12533 N)
12534 ).
12535occurrence___5__7(A, B, C, D, E, F) :-
12536 occurrence___5__8(A, B, C, D, E, F).
12537occurrence___5__8(A, B, C, D, E, F) :-
12538 nb_getval('$chr_store_multi_hash_chr_translate____stored_complete___3-1',
12539 G),
12540 lookup_ht(G, A, H),
12541 !,
12542 occurrence___5__8__0__38(H,
12543 A,
12544 B,
12545 C,
12546 D,
12547 E,
12548 F).
12549occurrence___5__8__0__38([], A, B, C, D, E, F) :-
12550 occurrence___5__9(A, B, C, D, E, F).
12551occurrence___5__8__0__38([A|B], C, D, E, F, G, H) :-
12552 ( A=suspension(_, active, _, I, J, _),
12553 I==C,
12554 K=t(259, A, H),
12555 '$novel_production'(A, K),
12556 '$novel_production'(H, K),
12557 D>J
12558 -> '$extend_history'(H, K),
12559 arg(2, H, L),
12560 setarg(2, H, active),
12561 ( L==not_stored_yet
12562 -> nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-15',
12563 M),
12564 insert_ht(M, k(C, G), H),
12565 nb_getval('$chr_store_global_ground_chr_translate____occurrence___5',
12566 N),
12567 O=[H|N],
12568 b_setval('$chr_store_global_ground_chr_translate____occurrence___5',
12569 O),
12570 ( N=[P|_]
12571 -> setarg(4, P, O)
12572 ; true
12573 ),
12574 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-125',
12575 Q),
12576 insert_ht(Q, k(C, D, G), H),
12577 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-134',
12578 R),
12579 insert_ht(R, k(C, E, F), H),
12580 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-12',
12581 S),
12582 insert_ht(S, k(C, D), H),
12583 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-3',
12584 T),
12585 insert_ht(T, E, H),
12586 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-13',
12587 U),
12588 insert_ht(U, k(C, E), H),
12589 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-34',
12590 V),
12591 insert_ht(V, k(E, F), H),
12592 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-1',
12593 W),
12594 insert_ht(W, C, H)
12595 ; true
12596 ),
12597 passive(E, F),
12598 ( H=suspension(_, active, _, _, _, _, _, _, _)
12599 -> setarg(2, H, inactive),
12600 occurrence___5__8__0__38(B,
12601 C,
12602 D,
12603 E,
12604 F,
12605 G,
12606 H)
12607 ; true
12608 )
12609 ; occurrence___5__8__0__38(B,
12610 C,
12611 D,
12612 E,
12613 F,
12614 G,
12615 H)
12616 ).
12617occurrence___5__8(A, B, C, D, E, F) :-
12618 occurrence___5__9(A, B, C, D, E, F).
12619occurrence___5__9(A, B, C, D, E, F) :-
12620 nb_getval('$chr_store_multi_hash_chr_translate____functional_dependency___4-12',
12621 G),
12622 lookup_ht(G, k(A, C), H),
12623 !,
12624 occurrence___5__9__0__42(H,
12625 A,
12626 B,
12627 C,
12628 D,
12629 E,
12630 F).
12631occurrence___5__9__0__42([], A, B, C, D, E, F) :-
12632 occurrence___5__10(A, B, C, D, E, F).
12633occurrence___5__9__0__42([A|B], C, D, E, F, G, H) :-
12634 ( A=suspension(_, active, I, J, K, L),
12635 I==C,
12636 J==E,
12637 E>1,
12638 ( ground(C),
12639 nb_getval('$chr_store_multi_hash_chr_translate____allocation_occurrence___2-1',
12640 M),
12641 lookup_ht(M, C, N)
12642 ),
12643 member(O, N),
12644 O=suspension(_, active, _, _, P),
12645 P>D
12646 -> setarg(2, A, removed),
12647 ( nb_getval('$chr_store_multi_hash_chr_translate____functional_dependency___4-1',
12648 Q),
12649 delete_ht(Q, C, A)
12650 ),
12651 nb_getval('$chr_store_multi_hash_chr_translate____functional_dependency___4-12',
12652 R),
12653 delete_ht(R, k(C, E), A),
12654 arg(2, H, S),
12655 setarg(2, H, active),
12656 ( S==not_stored_yet
12657 -> nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-15',
12658 T),
12659 insert_ht(T, k(C, G), H),
12660 nb_getval('$chr_store_global_ground_chr_translate____occurrence___5',
12661 U),
12662 V=[H|U],
12663 b_setval('$chr_store_global_ground_chr_translate____occurrence___5',
12664 V),
12665 ( U=[W|_]
12666 -> setarg(4, W, V)
12667 ; true
12668 ),
12669 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-125',
12670 X),
12671 insert_ht(X, k(C, D, G), H),
12672 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-134',
12673 Y),
12674 insert_ht(Y, k(C, E, F), H),
12675 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-12',
12676 Z),
12677 insert_ht(Z, k(C, D), H),
12678 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-3',
12679 A1),
12680 insert_ht(A1, E, H),
12681 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-13',
12682 B1),
12683 insert_ht(B1, k(C, E), H),
12684 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-34',
12685 C1),
12686 insert_ht(C1, k(E, F), H),
12687 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-1',
12688 D1),
12689 insert_ht(D1, C, H)
12690 ; true
12691 ),
12692 functional_dependency(C, 1, K, L),
12693 ( H=suspension(_, active, _, _, _, _, _, _, _)
12694 -> setarg(2, H, inactive),
12695 occurrence___5__9__0__42(B,
12696 C,
12697 D,
12698 E,
12699 F,
12700 G,
12701 H)
12702 ; true
12703 )
12704 ; occurrence___5__9__0__42(B,
12705 C,
12706 D,
12707 E,
12708 F,
12709 G,
12710 H)
12711 ).
12712occurrence___5__9(A, B, C, D, E, F) :-
12713 occurrence___5__10(A, B, C, D, E, F).
12714occurrence___5__10(A, B, C, D, E, F) :-
12715 nb_getval('$chr_store_multi_hash_chr_translate____constraint_mode___2-1',
12716 G),
12717 lookup_ht(G, A, H),
12718 !,
12719 occurrence___5__10__0__48(H,
12720 A,
12721 B,
12722 C,
12723 D,
12724 E,
12725 F).
12726occurrence___5__10__0__48([], A, B, C, D, E, F) :-
12727 occurrence___5__11(A, B, C, D, E, F).
12728occurrence___5__10__0__48([A|B], C, D, E, F, G, H) :-
12729 ( A=suspension(_, active, _, _, I, J),
12730 I==C,
12731 nb_getval('$chr_store_global_ground_chr_translate____partial_wake_analysis___0',
12732 K)
12733 -> occurrence___5__10__1__48(K,
12734 J,
12735 A,
12736 B,
12737 C,
12738 D,
12739 E,
12740 F,
12741 G,
12742 H)
12743 ; occurrence___5__10__0__48(B,
12744 C,
12745 D,
12746 E,
12747 F,
12748 G,
12749 H)
12750 ).
12751occurrence___5__10__1__48([], _, _, A, B, C, D, E, F, G) :-
12752 occurrence___5__10__0__48(A,
12753 B,
12754 C,
12755 D,
12756 E,
12757 F,
12758 G).
12759occurrence___5__10__1__48([A|B], C, D, E, F, G, H, I, J, K) :-
12760 ( A=suspension(_, active, _, _),
12761 nb_getval('$chr_store_multi_hash_chr_translate____rule___2-1', L),
12762 lookup_ht(L, H, M)
12763 -> occurrence___5__10__2__48(M,
12764 A,
12765 B,
12766 C,
12767 D,
12768 E,
12769 F,
12770 G,
12771 H,
12772 I,
12773 J,
12774 K)
12775 ; occurrence___5__10__1__48(B,
12776 C,
12777 D,
12778 E,
12779 F,
12780 G,
12781 H,
12782 I,
12783 J,
12784 K)
12785 ).
12786occurrence___5__10__2__48([], _, A, B, C, D, E, F, G, H, I, J) :-
12787 occurrence___5__10__1__48(A,
12788 B,
12789 C,
12790 D,
12791 E,
12792 F,
12793 G,
12794 H,
12795 I,
12796 J).
12797occurrence___5__10__2__48([A|B], C, D, E, F, G, H, I, J, K, L, M) :-
12798 ( A=suspension(_, active, _, _, N, O),
12799 N==J,
12800 P=t(330, C, M, A, F),
12801 '$novel_production'(C, P),
12802 '$novel_production'(M, P),
12803 '$novel_production'(A, P),
12804 '$novel_production'(F, P)
12805 -> '$extend_history'(M, P),
12806 arg(2, M, Q),
12807 setarg(2, M, active),
12808 ( Q==not_stored_yet
12809 -> nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-15',
12810 R),
12811 insert_ht(R, k(H, L), M),
12812 nb_getval('$chr_store_global_ground_chr_translate____occurrence___5',
12813 S),
12814 T=[M|S],
12815 b_setval('$chr_store_global_ground_chr_translate____occurrence___5',
12816 T),
12817 ( S=[U|_]
12818 -> setarg(4, U, T)
12819 ; true
12820 ),
12821 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-125',
12822 V),
12823 insert_ht(V, k(H, I, L), M),
12824 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-134',
12825 W),
12826 insert_ht(W, k(H, J, K), M),
12827 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-12',
12828 X),
12829 insert_ht(X, k(H, I), M),
12830 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-3',
12831 Y),
12832 insert_ht(Y, J, M),
12833 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-13',
12834 Z),
12835 insert_ht(Z, k(H, J), M),
12836 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-34',
12837 A1),
12838 insert_ht(A1, k(J, K), M),
12839 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-1',
12840 B1),
12841 insert_ht(B1, H, M)
12842 ; true
12843 ),
12844 O=pragma(rule(C1, D1, E1, _), _, _, _, _),
12845 ( is_passive(J, K)
12846 -> true
12847 ; L==simplification
12848 -> select(F1, C1, _),
12849 F1=..[_|G1],
12850 term_variables(E1, H1),
12851 partial_wake_args(G1, E, H1, H)
12852 ; select(F1, D1, _),
12853 F1=..[_|G1],
12854 term_variables(E1, H1),
12855 partial_wake_args(G1, E, H1, H)
12856 ),
12857 ( M=suspension(_, active, _, _, _, _, _, _, _)
12858 -> setarg(2, M, inactive),
12859 occurrence___5__10__2__48(B,
12860 C,
12861 D,
12862 E,
12863 F,
12864 G,
12865 H,
12866 I,
12867 J,
12868 K,
12869 L,
12870 M)
12871 ; true
12872 )
12873 ; occurrence___5__10__2__48(B,
12874 C,
12875 D,
12876 E,
12877 F,
12878 G,
12879 H,
12880 I,
12881 J,
12882 K,
12883 L,
12884 M)
12885 ).
12886occurrence___5__10(A, B, C, D, E, F) :-
12887 occurrence___5__11(A, B, C, D, E, F).
12888occurrence___5__11(A, B, C, D, E, F) :-
12889 nb_getval('$chr_store_multi_hash_chr_translate____passive___2-12', G),
12890 lookup_ht(G, k(C, D), H),
12891 !,
12892 occurrence___5__11__0__50(H,
12893 A,
12894 B,
12895 C,
12896 D,
12897 E,
12898 F).
12899occurrence___5__11__0__50([], A, B, C, D, E, F) :-
12900 occurrence___5__12(A, B, C, D, E, F).
12901occurrence___5__11__0__50([A|B], C, D, E, F, G, H) :-
12902 ( A=suspension(_, active, _, I, J),
12903 I==E,
12904 J==F,
12905 nb_getval('$chr_store_multi_hash_chr_translate____skip_to_next_id___2-12',
12906 K),
12907 lookup_ht(K, k(C, D), L)
12908 -> occurrence___5__11__1__50(L,
12909 A,
12910 B,
12911 C,
12912 D,
12913 E,
12914 F,
12915 G,
12916 H)
12917 ; occurrence___5__11__0__50(B,
12918 C,
12919 D,
12920 E,
12921 F,
12922 G,
12923 H)
12924 ).
12925occurrence___5__11__1__50([], _, A, B, C, D, E, F, G) :-
12926 occurrence___5__11__0__50(A,
12927 B,
12928 C,
12929 D,
12930 E,
12931 F,
12932 G).
12933occurrence___5__11__1__50([A|B], C, D, E, F, G, H, I, J) :-
12934 ( A=suspension(_, active, _, K, L),
12935 K==E,
12936 L==F,
12937 M=t(362, J, C, A),
12938 '$novel_production'(J, M),
12939 '$novel_production'(C, M),
12940 '$novel_production'(A, M),
12941 F>1
12942 -> '$extend_history'(J, M),
12943 arg(2, J, N),
12944 setarg(2, J, active),
12945 ( N==not_stored_yet
12946 -> nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-15',
12947 O),
12948 insert_ht(O, k(E, I), J),
12949 nb_getval('$chr_store_global_ground_chr_translate____occurrence___5',
12950 P),
12951 Q=[J|P],
12952 b_setval('$chr_store_global_ground_chr_translate____occurrence___5',
12953 Q),
12954 ( P=[R|_]
12955 -> setarg(4, R, Q)
12956 ; true
12957 ),
12958 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-125',
12959 S),
12960 insert_ht(S, k(E, F, I), J),
12961 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-134',
12962 T),
12963 insert_ht(T, k(E, G, H), J),
12964 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-12',
12965 U),
12966 insert_ht(U, k(E, F), J),
12967 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-3',
12968 V),
12969 insert_ht(V, G, J),
12970 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-13',
12971 W),
12972 insert_ht(W, k(E, G), J),
12973 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-34',
12974 X),
12975 insert_ht(X, k(G, H), J),
12976 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-1',
12977 Y),
12978 insert_ht(Y, E, J)
12979 ; true
12980 ),
12981 Z is F-1,
12982 skip_to_next_id(E, Z),
12983 ( J=suspension(_, active, _, _, _, _, _, _, _)
12984 -> setarg(2, J, inactive),
12985 occurrence___5__11__1__50(B,
12986 C,
12987 D,
12988 E,
12989 F,
12990 G,
12991 H,
12992 I,
12993 J)
12994 ; true
12995 )
12996 ; occurrence___5__11__1__50(B,
12997 C,
12998 D,
12999 E,
13000 F,
13001 G,
13002 H,
13003 I,
13004 J)
13005 ).
13006occurrence___5__11(A, B, C, D, E, F) :-
13007 occurrence___5__12(A, B, C, D, E, F).
13008occurrence___5__12(A, B, C, D, E, F) :-
13009 nb_getval('$chr_store_multi_hash_chr_translate____set_occurrence_code_id___3-12',
13010 G),
13011 lookup_ht(G, k(A, B), H),
13012 !,
13013 occurrence___5__12__0__51(H,
13014 A,
13015 B,
13016 C,
13017 D,
13018 E,
13019 F).
13020occurrence___5__12__0__51([], A, B, C, D, E, F) :-
13021 occurrence___5__13(A, B, C, D, E, F).
13022occurrence___5__12__0__51([A|B], C, D, E, F, G, H) :-
13023 ( A=suspension(_, active, I, J, K),
13024 I==C,
13025 J==D,
13026 ( ground(E),
13027 ground(F)
13028 ),
13029 nb_getval('$chr_store_multi_hash_chr_translate____passive___2-12',
13030 L),
13031 lookup_ht(L, k(E, F), M),
13032 member(N, M),
13033 N=suspension(_, active, _, _, _)
13034 -> setarg(2, A, removed),
13035 nb_getval('$chr_store_multi_hash_chr_translate____set_occurrence_code_id___3-12',
13036 O),
13037 delete_ht(O, k(C, D), A),
13038 arg(2, H, P),
13039 setarg(2, H, active),
13040 ( P==not_stored_yet
13041 -> nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-15',
13042 Q),
13043 insert_ht(Q, k(C, G), H),
13044 nb_getval('$chr_store_global_ground_chr_translate____occurrence___5',
13045 R),
13046 S=[H|R],
13047 b_setval('$chr_store_global_ground_chr_translate____occurrence___5',
13048 S),
13049 ( R=[T|_]
13050 -> setarg(4, T, S)
13051 ; true
13052 ),
13053 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-125',
13054 U),
13055 insert_ht(U, k(C, D, G), H),
13056 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-134',
13057 V),
13058 insert_ht(V, k(C, E, F), H),
13059 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-12',
13060 W),
13061 insert_ht(W, k(C, D), H),
13062 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-3',
13063 X),
13064 insert_ht(X, E, H),
13065 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-13',
13066 Y),
13067 insert_ht(Y, k(C, E), H),
13068 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-34',
13069 Z),
13070 insert_ht(Z, k(E, F), H),
13071 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-1',
13072 A1),
13073 insert_ht(A1, C, H)
13074 ; true
13075 ),
13076 occurrence_code_id(C, D, K),
13077 B1 is D+1,
13078 set_occurrence_code_id(C, B1, K),
13079 ( H=suspension(_, active, _, _, _, _, _, _, _)
13080 -> setarg(2, H, inactive),
13081 occurrence___5__12__0__51(B,
13082 C,
13083 D,
13084 E,
13085 F,
13086 G,
13087 H)
13088 ; true
13089 )
13090 ; occurrence___5__12__0__51(B,
13091 C,
13092 D,
13093 E,
13094 F,
13095 G,
13096 H)
13097 ).
13098occurrence___5__12(A, B, C, D, E, F) :-
13099 occurrence___5__13(A, B, C, D, E, F).
13100occurrence___5__13(A, B, C, D, simplification, E) :-
13101 nb_getval('$chr_store_multi_hash_chr_translate____set_occurrence_code_id___3-12',
13102 F),
13103 lookup_ht(F, k(A, B), G),
13104 !,
13105 occurrence___5__13__0__52(G,
13106 A,
13107 B,
13108 C,
13109 D,
13110 simplification,
13111 E).
13112occurrence___5__13__0__52([], A, B, C, D, E, F) :-
13113 occurrence___5__15(A, B, C, D, E, F).
13114occurrence___5__13__0__52([A|B], C, D, E, F, G, H) :-
13115 ( A=suspension(_, active, I, J, K),
13116 I==C,
13117 J==D
13118 -> setarg(2, A, removed),
13119 nb_getval('$chr_store_multi_hash_chr_translate____set_occurrence_code_id___3-12',
13120 L),
13121 delete_ht(L, k(C, D), A),
13122 arg(2, H, M),
13123 setarg(2, H, active),
13124 ( M==not_stored_yet
13125 -> nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-15',
13126 N),
13127 insert_ht(N, k(C, G), H),
13128 nb_getval('$chr_store_global_ground_chr_translate____occurrence___5',
13129 O),
13130 P=[H|O],
13131 b_setval('$chr_store_global_ground_chr_translate____occurrence___5',
13132 P),
13133 ( O=[Q|_]
13134 -> setarg(4, Q, P)
13135 ; true
13136 ),
13137 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-125',
13138 R),
13139 insert_ht(R, k(C, D, G), H),
13140 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-134',
13141 S),
13142 insert_ht(S, k(C, E, F), H),
13143 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-12',
13144 T),
13145 insert_ht(T, k(C, D), H),
13146 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-3',
13147 U),
13148 insert_ht(U, E, H),
13149 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-13',
13150 V),
13151 insert_ht(V, k(C, E), H),
13152 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-34',
13153 W),
13154 insert_ht(W, k(E, F), H),
13155 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-1',
13156 X),
13157 insert_ht(X, C, H)
13158 ; true
13159 ),
13160 occurrence_code_id(C, D, K),
13161 Y is D+1,
13162 set_occurrence_code_id(C, Y, K),
13163 ( H=suspension(_, active, _, _, _, _, _, _, _)
13164 -> setarg(2, H, inactive),
13165 occurrence___5__13__0__52(B,
13166 C,
13167 D,
13168 E,
13169 F,
13170 G,
13171 H)
13172 ; true
13173 )
13174 ; occurrence___5__13__0__52(B,
13175 C,
13176 D,
13177 E,
13178 F,
13179 G,
13180 H)
13181 ).
13182occurrence___5__13(A, B, C, D, propagation, E) :-
13183 nb_getval('$chr_store_multi_hash_chr_translate____set_occurrence_code_id___3-12',
13184 F),
13185 lookup_ht(F, k(A, B), G),
13186 !,
13187 occurrence___5__13__0__53(G,
13188 A,
13189 B,
13190 C,
13191 D,
13192 propagation,
13193 E).
13194occurrence___5__13__0__53([], A, B, C, D, E, F) :-
13195 occurrence___5__14(A, B, C, D, E, F).
13196occurrence___5__13__0__53([A|B], C, D, E, F, G, H) :-
13197 ( A=suspension(_, active, I, J, K),
13198 I==C,
13199 J==D,
13200 ( ground(C),
13201 ground(D)
13202 ),
13203 nb_getval('$chr_store_multi_hash_chr_translate____skip_to_next_id___2-12',
13204 L),
13205 lookup_ht(L, k(C, D), M),
13206 member(N, M),
13207 N=suspension(_, active, _, _, _)
13208 -> setarg(2, A, removed),
13209 nb_getval('$chr_store_multi_hash_chr_translate____set_occurrence_code_id___3-12',
13210 O),
13211 delete_ht(O, k(C, D), A),
13212 arg(2, H, P),
13213 setarg(2, H, active),
13214 ( P==not_stored_yet
13215 -> nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-15',
13216 Q),
13217 insert_ht(Q, k(C, G), H),
13218 nb_getval('$chr_store_global_ground_chr_translate____occurrence___5',
13219 R),
13220 S=[H|R],
13221 b_setval('$chr_store_global_ground_chr_translate____occurrence___5',
13222 S),
13223 ( R=[T|_]
13224 -> setarg(4, T, S)
13225 ; true
13226 ),
13227 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-125',
13228 U),
13229 insert_ht(U, k(C, D, G), H),
13230 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-134',
13231 V),
13232 insert_ht(V, k(C, E, F), H),
13233 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-12',
13234 W),
13235 insert_ht(W, k(C, D), H),
13236 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-3',
13237 X),
13238 insert_ht(X, E, H),
13239 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-13',
13240 Y),
13241 insert_ht(Y, k(C, E), H),
13242 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-34',
13243 Z),
13244 insert_ht(Z, k(E, F), H),
13245 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-1',
13246 A1),
13247 insert_ht(A1, C, H)
13248 ; true
13249 ),
13250 occurrence_code_id(C, D, K),
13251 B1 is D+1,
13252 C1 is K+1,
13253 set_occurrence_code_id(C, B1, C1),
13254 ( H=suspension(_, active, _, _, _, _, _, _, _)
13255 -> setarg(2, H, inactive),
13256 occurrence___5__13__0__53(B,
13257 C,
13258 D,
13259 E,
13260 F,
13261 G,
13262 H)
13263 ; true
13264 )
13265 ; occurrence___5__13__0__53(B,
13266 C,
13267 D,
13268 E,
13269 F,
13270 G,
13271 H)
13272 ).
13273occurrence___5__13(A, B, C, D, E, F) :-
13274 occurrence___5__14(A, B, C, D, E, F).
13275occurrence___5__14(A, B, C, D, propagation, E) :-
13276 nb_getval('$chr_store_multi_hash_chr_translate____set_occurrence_code_id___3-12',
13277 F),
13278 lookup_ht(F, k(A, B), G),
13279 !,
13280 occurrence___5__14__0__54(G,
13281 A,
13282 B,
13283 C,
13284 D,
13285 propagation,
13286 E).
13287occurrence___5__14__0__54([], A, B, C, D, E, F) :-
13288 occurrence___5__15(A, B, C, D, E, F).
13289occurrence___5__14__0__54([A|B], C, D, E, F, G, H) :-
13290 ( A=suspension(_, active, I, J, K),
13291 I==C,
13292 J==D
13293 -> setarg(2, A, removed),
13294 nb_getval('$chr_store_multi_hash_chr_translate____set_occurrence_code_id___3-12',
13295 L),
13296 delete_ht(L, k(C, D), A),
13297 arg(2, H, M),
13298 setarg(2, H, active),
13299 ( M==not_stored_yet
13300 -> nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-15',
13301 N),
13302 insert_ht(N, k(C, G), H),
13303 nb_getval('$chr_store_global_ground_chr_translate____occurrence___5',
13304 O),
13305 P=[H|O],
13306 b_setval('$chr_store_global_ground_chr_translate____occurrence___5',
13307 P),
13308 ( O=[Q|_]
13309 -> setarg(4, Q, P)
13310 ; true
13311 ),
13312 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-125',
13313 R),
13314 insert_ht(R, k(C, D, G), H),
13315 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-134',
13316 S),
13317 insert_ht(S, k(C, E, F), H),
13318 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-12',
13319 T),
13320 insert_ht(T, k(C, D), H),
13321 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-3',
13322 U),
13323 insert_ht(U, E, H),
13324 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-13',
13325 V),
13326 insert_ht(V, k(C, E), H),
13327 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-34',
13328 W),
13329 insert_ht(W, k(E, F), H),
13330 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-1',
13331 X),
13332 insert_ht(X, C, H)
13333 ; true
13334 ),
13335 occurrence_code_id(C, D, K),
13336 Y is D+1,
13337 set_occurrence_code_id(C, Y, K),
13338 ( H=suspension(_, active, _, _, _, _, _, _, _)
13339 -> setarg(2, H, inactive),
13340 occurrence___5__14__0__54(B,
13341 C,
13342 D,
13343 E,
13344 F,
13345 G,
13346 H)
13347 ; true
13348 )
13349 ; occurrence___5__14__0__54(B,
13350 C,
13351 D,
13352 E,
13353 F,
13354 G,
13355 H)
13356 ).
13357occurrence___5__14(A, B, C, D, E, F) :-
13358 occurrence___5__15(A, B, C, D, E, F).
13359occurrence___5__15(A, B, C, D, E, F) :-
13360 arg(2, F, G),
13361 setarg(2, F, active),
13362 ( G==not_stored_yet
13363 -> nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-15',
13364 H),
13365 insert_ht(H, k(A, E), F),
13366 nb_getval('$chr_store_global_ground_chr_translate____occurrence___5',
13367 I),
13368 J=[F|I],
13369 b_setval('$chr_store_global_ground_chr_translate____occurrence___5',
13370 J),
13371 ( I=[K|_]
13372 -> setarg(4, K, J)
13373 ; true
13374 ),
13375 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-125',
13376 L),
13377 insert_ht(L, k(A, B, E), F),
13378 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-134',
13379 M),
13380 insert_ht(M, k(A, C, D), F),
13381 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-12',
13382 N),
13383 insert_ht(N, k(A, B), F),
13384 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-3',
13385 O),
13386 insert_ht(O, C, F),
13387 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-13',
13388 P),
13389 insert_ht(P, k(A, C), F),
13390 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-34',
13391 Q),
13392 insert_ht(Q, k(C, D), F),
13393 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-1',
13394 R),
13395 insert_ht(R, A, F)
13396 ; true
13397 ).
13398get_occurrence(A, B, C, D) :-
13399 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-12',
13400 E),
13401 lookup_ht(E, k(A, B), F),
13402 member(G, F),
13403 G=suspension(_, active, _, _, _, _, H, I, _),
13404 !,
13405 H=C,
13406 I=D.
13407get_occurrence(A, B, _, _) :-
13408 chr_error(internal,
13409 'get_occurrence: missing occurrence ~w:~w\n',
13410 [A, B]).
13411get_occurrence(A, B, C, D, E) :-
13412 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-12',
13413 F),
13414 lookup_ht(F, k(A, B), G),
13415 member(H, G),
13416 H=suspension(_, active, _, _, _, _, I, J, K),
13417 !,
13418 I=C,
13419 J=D,
13420 K=E.
13421get_occurrence(A, B, _, _, _) :-
13422 chr_error(internal,
13423 'get_occurrence: missing occurrence ~w:~w\n',
13424 [A, B]).
13425get_occurrence_from_id(A, B, C, D) :-
13426 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-34',
13427 E),
13428 lookup_ht(E, k(C, D), F),
13429 member(G, F),
13430 G=suspension(_, active, _, _, H, I, _, _, _),
13431 !,
13432 A=H,
13433 B=I.
13434get_occurrence_from_id(_, _, _, _) :-
13435 chr_error(internal, 'get_occurrence_from_id: missing occurrence ~w:~w\n', []).
13436max_occurrence(A, B) :-
13437 max_occurrence___2__0(A, B, _).
13438max_occurrence___2__0(A, B, C) :-
13439 nb_getval('$chr_store_multi_hash_chr_translate____max_occurrence___2-1',
13440 D),
13441 lookup_ht(D, A, E),
13442 ( member(F, E),
13443 F=suspension(_, active, _, _, G),
13444 G>=B,
13445 !
13446 ; !,
13447 max_occurrence___2__0__0__2(E, A, B, C)
13448 ).
13449max_occurrence___2__0__0__2([], A, B, C) :-
13450 max_occurrence___2__1(A, B, C).
13451max_occurrence___2__0__0__2([A|B], C, D, E) :-
13452 ( A=suspension(_, active, _, F, G),
13453 F==C,
13454 D>=G
13455 -> setarg(2, A, removed),
13456 nb_getval('$chr_store_multi_hash_chr_translate____max_occurrence___2-1',
13457 H),
13458 delete_ht(H, C, A),
13459 max_occurrence___2__0__0__2(B, C, D, E)
13460 ; max_occurrence___2__0__0__2(B, C, D, E)
13461 ).
13462max_occurrence___2__0(A, B, C) :-
13463 max_occurrence___2__1(A, B, C).
13464max_occurrence___2__1(A, B, C) :-
13465 nb_getval('$chr_store_multi_hash_chr_translate____stored_complete___3-13',
13466 D),
13467 lookup_ht(D, k(A, 0), E),
13468 !,
13469 C=suspension(F, not_stored_yet, t, A, B),
13470 'chr gen_id'(F),
13471 max_occurrence___2__1__0__5(E, A, B, C).
13472max_occurrence___2__1__0__5([], A, B, C) :-
13473 max_occurrence___2__2(A, B, C).
13474max_occurrence___2__1__0__5([A|B], C, D, E) :-
13475 ( A=suspension(_, active, _, F, G, H),
13476 F==C,
13477 H=0,
13478 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-1',
13479 I),
13480 lookup_ht(I, C, J)
13481 -> max_occurrence___2__1__1__5(J,
13482 G,
13483 A,
13484 B,
13485 C,
13486 D,
13487 E)
13488 ; max_occurrence___2__1__0__5(B, C, D, E)
13489 ).
13490max_occurrence___2__1__1__5([], _, _, A, B, C, D) :-
13491 max_occurrence___2__1__0__5(A, B, C, D).
13492max_occurrence___2__1__1__5([A|B], C, D, E, F, G, H) :-
13493 ( A=suspension(_, active, _, _, I, _, J, _, _),
13494 I==F,
13495 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-3',
13496 K),
13497 lookup_ht(K, J, L)
13498 -> max_occurrence___2__1__2__5(L,
13499 J,
13500 A,
13501 B,
13502 C,
13503 D,
13504 E,
13505 F,
13506 G,
13507 H)
13508 ; max_occurrence___2__1__1__5(B,
13509 C,
13510 D,
13511 E,
13512 F,
13513 G,
13514 H)
13515 ).
13516max_occurrence___2__1__2__5([], _, _, A, B, C, D, E, F, G) :-
13517 max_occurrence___2__1__1__5(A,
13518 B,
13519 C,
13520 D,
13521 E,
13522 F,
13523 G).
13524max_occurrence___2__1__2__5([A|B], C, D, E, F, G, H, I, J, K) :-
13525 ( A=suspension(_, active, _, _, _, _, L, M, _),
13526 A\==D,
13527 L==C,
13528 N=t(250, A, D, G, K),
13529 '$novel_production'(A, N),
13530 '$novel_production'(D, N),
13531 '$novel_production'(G, N),
13532 '$novel_production'(K, N),
13533 F=<J
13534 -> '$extend_history'(K, N),
13535 arg(2, K, O),
13536 setarg(2, K, active),
13537 ( O==not_stored_yet
13538 -> nb_getval('$chr_store_multi_hash_chr_translate____max_occurrence___2-1',
13539 P),
13540 insert_ht(P, I, K)
13541 ; true
13542 ),
13543 passive(C, M),
13544 ( K=suspension(_, active, _, _, _)
13545 -> setarg(2, K, inactive),
13546 max_occurrence___2__1__2__5(B,
13547 C,
13548 D,
13549 E,
13550 F,
13551 G,
13552 H,
13553 I,
13554 J,
13555 K)
13556 ; true
13557 )
13558 ; max_occurrence___2__1__2__5(B,
13559 C,
13560 D,
13561 E,
13562 F,
13563 G,
13564 H,
13565 I,
13566 J,
13567 K)
13568 ).
13569max_occurrence___2__1(A, B, C) :-
13570 C=suspension(D, not_stored_yet, t, A, B),
13571 'chr gen_id'(D),
13572 max_occurrence___2__2(A, B, C).
13573max_occurrence___2__2(A, _, B) :-
13574 arg(2, B, C),
13575 setarg(2, B, active),
13576 ( C==not_stored_yet
13577 -> nb_getval('$chr_store_multi_hash_chr_translate____max_occurrence___2-1',
13578 D),
13579 insert_ht(D, A, B)
13580 ; true
13581 ).
13582get_max_occurrence(A, B) :-
13583 nb_getval('$chr_store_multi_hash_chr_translate____max_occurrence___2-1',
13584 C),
13585 lookup_ht(C, A, D),
13586 member(E, D),
13587 E=suspension(_, active, _, _, F),
13588 !,
13589 B=F.
13590get_max_occurrence(A, _) :-
13591 chr_error(internal,
13592 'get_max_occurrence: missing max occurrence for ~w\n',
13593 [A]).
13594allocation_occurrence(A, B) :-
13595 allocation_occurrence___2__0(A, B, _).
13596allocation_occurrence___2__0(A, 0, B) :-
13597 !,
13598 B=suspension(C, active, t, A, 0),
13599 'chr gen_id'(C),
13600 nb_getval('$chr_store_multi_hash_chr_translate____allocation_occurrence___2-1',
13601 D),
13602 insert_ht(D, A, B),
13603 nb_getval('$chr_store_multi_hash_chr_translate____allocation_occurrence___2-12',
13604 E),
13605 insert_ht(E, k(A, 0), B),
13606 stored_in_guard_before_next_kept_occurrence(A, 0),
13607 ( B=suspension(_, active, _, _, _)
13608 -> setarg(2, B, inactive),
13609 allocation_occurrence___2__1(A, 0, B)
13610 ; true
13611 ).
13612allocation_occurrence___2__0(A, B, C) :-
13613 C=suspension(D, not_stored_yet, t, A, B),
13614 'chr gen_id'(D),
13615 allocation_occurrence___2__1(A, B, C).
13616allocation_occurrence___2__1(A, B, C) :-
13617 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-12',
13618 D),
13619 lookup_ht(D, k(A, B), E),
13620 !,
13621 allocation_occurrence___2__1__0__2(E, A, B, C).
13622allocation_occurrence___2__1__0__2([], A, B, C) :-
13623 allocation_occurrence___2__2(A, B, C).
13624allocation_occurrence___2__1__0__2([A|B], C, D, E) :-
13625 ( A=suspension(_, active, _, _, F, G, H, I, J),
13626 F==C,
13627 G==D,
13628 nb_getval('$chr_store_multi_hash_chr_translate____rule___2-1', K),
13629 lookup_ht(K, H, L)
13630 -> allocation_occurrence___2__1__1__2(L,
13631 H,
13632 I,
13633 J,
13634 A,
13635 B,
13636 C,
13637 D,
13638 E)
13639 ; allocation_occurrence___2__1__0__2(B, C, D, E)
13640 ).
13641allocation_occurrence___2__1__1__2([], _, _, _, _, A, B, C, D) :-
13642 allocation_occurrence___2__1__0__2(A, B, C, D).
13643allocation_occurrence___2__1__1__2([A|B], C, D, E, F, G, H, I, J) :-
13644 ( A=suspension(_, active, _, _, K, L),
13645 K==C,
13646 M=t(60, A, F, J),
13647 '$novel_production'(A, M),
13648 '$novel_production'(F, M),
13649 '$novel_production'(J, M)
13650 -> '$extend_history'(J, M),
13651 arg(2, J, N),
13652 setarg(2, J, active),
13653 ( N==not_stored_yet
13654 -> nb_getval('$chr_store_multi_hash_chr_translate____allocation_occurrence___2-1',
13655 O),
13656 insert_ht(O, H, J),
13657 nb_getval('$chr_store_multi_hash_chr_translate____allocation_occurrence___2-12',
13658 P),
13659 insert_ht(P, k(H, I), J)
13660 ; true
13661 ),
13662 \+ is_passive(C, D),
13663 E==propagation,
13664 ( stored_in_guard_before_next_kept_occurrence(H, I)
13665 -> true
13666 ; L=pragma(rule([_|_], _, _, _), _, _, _, _)
13667 -> is_observed(H, I)
13668 ; is_least_occurrence(C)
13669 -> is_observed(H, I)
13670 ; true
13671 ),
13672 ( J=suspension(_, active, _, _, _)
13673 -> setarg(2, J, inactive),
13674 allocation_occurrence___2__1__1__2(B,
13675 C,
13676 D,
13677 E,
13678 F,
13679 G,
13680 H,
13681 I,
13682 J)
13683 ; true
13684 )
13685 ; allocation_occurrence___2__1__1__2(B,
13686 C,
13687 D,
13688 E,
13689 F,
13690 G,
13691 H,
13692 I,
13693 J)
13694 ).
13695allocation_occurrence___2__1(A, B, C) :-
13696 allocation_occurrence___2__2(A, B, C).
13697allocation_occurrence___2__2(A, B, C) :-
13698 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-1', D),
13699 lookup_ht(D, A, E),
13700 !,
13701 allocation_occurrence___2__2__0__3(E, A, B, C).
13702allocation_occurrence___2__2__0__3([], A, B, C) :-
13703 allocation_occurrence___2__3(A, B, C).
13704allocation_occurrence___2__2__0__3([A|B], C, D, E) :-
13705 ( A=suspension(_, active, _, _, F, G, H, I, _),
13706 F==C,
13707 nb_getval('$chr_store_multi_hash_chr_translate____least_occurrence___2-1',
13708 J),
13709 lookup_ht(J, H, K)
13710 -> allocation_occurrence___2__2__1__3(K,
13711 G,
13712 H,
13713 I,
13714 A,
13715 B,
13716 C,
13717 D,
13718 E)
13719 ; allocation_occurrence___2__2__0__3(B, C, D, E)
13720 ).
13721allocation_occurrence___2__2__1__3([], _, _, _, _, A, B, C, D) :-
13722 allocation_occurrence___2__2__0__3(A, B, C, D).
13723allocation_occurrence___2__2__1__3([A|B], C, D, E, F, G, H, I, J) :-
13724 ( A=suspension(_, active, K, L),
13725 K==D,
13726 L=[M|N],
13727 M==E,
13728 I>=C,
13729 ( ground(D),
13730 nb_getval('$chr_store_multi_hash_chr_translate____rule___2-1',
13731 O),
13732 lookup_ht(O, D, P)
13733 ),
13734 member(Q, P),
13735 Q=suspension(_, active, _, _, _, _),
13736 \+ may_trigger(H)
13737 -> setarg(2, A, removed),
13738 ( nb_getval('$chr_store_multi_hash_chr_translate____least_occurrence___2-12',
13739 R),
13740 delete_ht(R, k(D, [E|N]), A)
13741 ),
13742 nb_getval('$chr_store_multi_hash_chr_translate____least_occurrence___2-1',
13743 S),
13744 delete_ht(S, D, A),
13745 arg(2, J, T),
13746 setarg(2, J, active),
13747 ( T==not_stored_yet
13748 -> nb_getval('$chr_store_multi_hash_chr_translate____allocation_occurrence___2-1',
13749 U),
13750 insert_ht(U, H, J),
13751 nb_getval('$chr_store_multi_hash_chr_translate____allocation_occurrence___2-12',
13752 V),
13753 insert_ht(V, k(H, I), J)
13754 ; true
13755 ),
13756 least_occurrence(D, N),
13757 ( J=suspension(_, active, _, _, _)
13758 -> setarg(2, J, inactive),
13759 allocation_occurrence___2__2__1__3(B,
13760 C,
13761 D,
13762 E,
13763 F,
13764 G,
13765 H,
13766 I,
13767 J)
13768 ; true
13769 )
13770 ; allocation_occurrence___2__2__1__3(B,
13771 C,
13772 D,
13773 E,
13774 F,
13775 G,
13776 H,
13777 I,
13778 J)
13779 ).
13780allocation_occurrence___2__2(A, B, C) :-
13781 allocation_occurrence___2__3(A, B, C).
13782allocation_occurrence___2__3(A, B, C) :-
13783 nb_getval('$chr_store_multi_hash_chr_translate____functional_dependency___4-1',
13784 D),
13785 lookup_ht(D, A, E),
13786 !,
13787 allocation_occurrence___2__3__0__5(E, A, B, C).
13788allocation_occurrence___2__3__0__5([], A, B, C) :-
13789 allocation_occurrence___2__4(A, B, C).
13790allocation_occurrence___2__3__0__5([A|B], C, D, E) :-
13791 ( A=suspension(_, active, F, G, H, I),
13792 F==C,
13793 G>1,
13794 ( ground(C),
13795 ground(G),
13796 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-13',
13797 J),
13798 lookup_ht(J, k(C, G), K)
13799 ),
13800 member(L, K),
13801 L=suspension(_, active, _, _, _, M, _, _, _),
13802 D>M
13803 -> setarg(2, A, removed),
13804 ( nb_getval('$chr_store_multi_hash_chr_translate____functional_dependency___4-1',
13805 N),
13806 delete_ht(N, C, A)
13807 ),
13808 nb_getval('$chr_store_multi_hash_chr_translate____functional_dependency___4-12',
13809 O),
13810 delete_ht(O, k(C, G), A),
13811 arg(2, E, P),
13812 setarg(2, E, active),
13813 ( P==not_stored_yet
13814 -> nb_getval('$chr_store_multi_hash_chr_translate____allocation_occurrence___2-1',
13815 Q),
13816 insert_ht(Q, C, E),
13817 nb_getval('$chr_store_multi_hash_chr_translate____allocation_occurrence___2-12',
13818 R),
13819 insert_ht(R, k(C, D), E)
13820 ; true
13821 ),
13822 functional_dependency(C, 1, H, I),
13823 ( E=suspension(_, active, _, _, _)
13824 -> setarg(2, E, inactive),
13825 allocation_occurrence___2__3__0__5(B,
13826 C,
13827 D,
13828 E)
13829 ; true
13830 )
13831 ; allocation_occurrence___2__3__0__5(B, C, D, E)
13832 ).
13833allocation_occurrence___2__3(A, B, C) :-
13834 allocation_occurrence___2__4(A, B, C).
13835allocation_occurrence___2__4(A, B, C) :-
13836 arg(2, C, D),
13837 setarg(2, C, active),
13838 ( D==not_stored_yet
13839 -> nb_getval('$chr_store_multi_hash_chr_translate____allocation_occurrence___2-1',
13840 E),
13841 insert_ht(E, A, C),
13842 nb_getval('$chr_store_multi_hash_chr_translate____allocation_occurrence___2-12',
13843 F),
13844 insert_ht(F, k(A, B), C)
13845 ; true
13846 ).
13847get_allocation_occurrence(A, B) :-
13848 nb_getval('$chr_store_multi_hash_chr_translate____allocation_occurrence___2-1',
13849 C),
13850 lookup_ht(C, A, D),
13851 member(E, D),
13852 E=suspension(_, active, _, _, F),
13853 !,
13854 B=F.
13855get_allocation_occurrence(_, A) :-
13856 chr_pp_flag(late_allocation, off),
13857 A=0.
13858rule(A, B) :-
13859 rule___2__0(A, B, _).
13860rule___2__0(A, B, C) :-
13861 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-3', D),
13862 lookup_ht(D, A, E),
13863 !,
13864 C=suspension(F, not_stored_yet, t, _, A, B),
13865 'chr gen_id'(F),
13866 rule___2__0__0__1(E, A, B, C).
13867rule___2__0__0__1([], A, B, C) :-
13868 rule___2__1(A, B, C).
13869rule___2__0__0__1([A|B], C, D, E) :-
13870 ( A=suspension(_, active, _, _, F, G, H, I, J),
13871 H==C,
13872 nb_getval('$chr_store_multi_hash_chr_translate____allocation_occurrence___2-12',
13873 K),
13874 lookup_ht(K, k(F, G), L)
13875 -> rule___2__0__1__1(L,
13876 F,
13877 G,
13878 I,
13879 J,
13880 A,
13881 B,
13882 C,
13883 D,
13884 E)
13885 ; rule___2__0__0__1(B, C, D, E)
13886 ).
13887rule___2__0__1__1([], _, _, _, _, _, A, B, C, D) :-
13888 rule___2__0__0__1(A, B, C, D).
13889rule___2__0__1__1([A|B], C, D, E, F, G, H, I, J, K) :-
13890 ( A=suspension(_, active, _, L, M),
13891 L==C,
13892 M==D,
13893 N=t(60, K, G, A),
13894 '$novel_production'(K, N),
13895 '$novel_production'(G, N),
13896 '$novel_production'(A, N)
13897 -> '$extend_history'(K, N),
13898 arg(2, K, O),
13899 setarg(2, K, active),
13900 ( O==not_stored_yet
13901 -> nb_getval('$chr_store_global_ground_chr_translate____rule___2',
13902 P),
13903 Q=[K|P],
13904 b_setval('$chr_store_global_ground_chr_translate____rule___2',
13905 Q),
13906 ( P=[R|_]
13907 -> setarg(4, R, Q)
13908 ; true
13909 ),
13910 nb_getval('$chr_store_multi_hash_chr_translate____rule___2-1',
13911 S),
13912 insert_ht(S, I, K)
13913 ; true
13914 ),
13915 \+ is_passive(I, E),
13916 F==propagation,
13917 ( stored_in_guard_before_next_kept_occurrence(C, D)
13918 -> true
13919 ; J=pragma(rule([_|_], _, _, _), _, _, _, _)
13920 -> is_observed(C, D)
13921 ; is_least_occurrence(I)
13922 -> is_observed(C, D)
13923 ; true
13924 ),
13925 ( K=suspension(_, active, _, _, _, _)
13926 -> setarg(2, K, inactive),
13927 rule___2__0__1__1(B,
13928 C,
13929 D,
13930 E,
13931 F,
13932 G,
13933 H,
13934 I,
13935 J,
13936 K)
13937 ; true
13938 )
13939 ; rule___2__0__1__1(B,
13940 C,
13941 D,
13942 E,
13943 F,
13944 G,
13945 H,
13946 I,
13947 J,
13948 K)
13949 ).
13950rule___2__0(A, B, C) :-
13951 C=suspension(D, not_stored_yet, t, _, A, B),
13952 'chr gen_id'(D),
13953 rule___2__1(A, B, C).
13954rule___2__1(A, B, C) :-
13955 nb_getval('$chr_store_multi_hash_chr_translate____least_occurrence___2-1',
13956 D),
13957 lookup_ht(D, A, E),
13958 !,
13959 rule___2__1__0__2(E, A, B, C).
13960rule___2__1__0__2([], A, B, C) :-
13961 rule___2__2(A, B, C).
13962rule___2__1__0__2([A|B], C, D, E) :-
13963 ( A=suspension(_, active, F, G),
13964 F==C,
13965 G=[H|I],
13966 ( ground(C),
13967 ground(H),
13968 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-34',
13969 J),
13970 lookup_ht(J, k(C, H), K)
13971 ),
13972 member(L, K),
13973 L=suspension(_, active, _, _, M, N, _, _, _),
13974 ( nb_getval('$chr_store_multi_hash_chr_translate____allocation_occurrence___2-1',
13975 O),
13976 lookup_ht(O, M, P)
13977 ),
13978 member(Q, P),
13979 Q=suspension(_, active, _, _, R),
13980 R>=N,
13981 \+ may_trigger(M)
13982 -> setarg(2, A, removed),
13983 ( nb_getval('$chr_store_multi_hash_chr_translate____least_occurrence___2-12',
13984 S),
13985 delete_ht(S, k(C, [H|I]), A)
13986 ),
13987 nb_getval('$chr_store_multi_hash_chr_translate____least_occurrence___2-1',
13988 T),
13989 delete_ht(T, C, A),
13990 arg(2, E, U),
13991 setarg(2, E, active),
13992 ( U==not_stored_yet
13993 -> nb_getval('$chr_store_global_ground_chr_translate____rule___2',
13994 V),
13995 W=[E|V],
13996 b_setval('$chr_store_global_ground_chr_translate____rule___2',
13997 W),
13998 ( V=[X|_]
13999 -> setarg(4, X, W)
14000 ; true
14001 ),
14002 nb_getval('$chr_store_multi_hash_chr_translate____rule___2-1',
14003 Y),
14004 insert_ht(Y, C, E)
14005 ; true
14006 ),
14007 least_occurrence(C, I),
14008 ( E=suspension(_, active, _, _, _, _)
14009 -> setarg(2, E, inactive),
14010 rule___2__1__0__2(B, C, D, E)
14011 ; true
14012 )
14013 ; rule___2__1__0__2(B, C, D, E)
14014 ).
14015rule___2__1(A, B, C) :-
14016 rule___2__2(A, B, C).
14017rule___2__2(A, B, C) :-
14018 nb_getval('$chr_store_multi_hash_chr_translate____least_occurrence___2-1',
14019 D),
14020 lookup_ht(D, A, E),
14021 !,
14022 rule___2__2__0__3(E, A, B, C).
14023rule___2__2__0__3([], A, B, C) :-
14024 rule___2__3(A, B, C).
14025rule___2__2__0__3([A|B], C, D, E) :-
14026 ( A=suspension(_, active, F, G),
14027 F==C,
14028 G=[H|I],
14029 ( ground(C),
14030 ground(H)
14031 ),
14032 nb_getval('$chr_store_multi_hash_chr_translate____passive___2-12',
14033 J),
14034 lookup_ht(J, k(C, H), K),
14035 member(L, K),
14036 L=suspension(_, active, _, _, _)
14037 -> setarg(2, A, removed),
14038 ( nb_getval('$chr_store_multi_hash_chr_translate____least_occurrence___2-12',
14039 M),
14040 delete_ht(M, k(C, [H|I]), A)
14041 ),
14042 nb_getval('$chr_store_multi_hash_chr_translate____least_occurrence___2-1',
14043 N),
14044 delete_ht(N, C, A),
14045 arg(2, E, O),
14046 setarg(2, E, active),
14047 ( O==not_stored_yet
14048 -> nb_getval('$chr_store_global_ground_chr_translate____rule___2',
14049 P),
14050 Q=[E|P],
14051 b_setval('$chr_store_global_ground_chr_translate____rule___2',
14052 Q),
14053 ( P=[R|_]
14054 -> setarg(4, R, Q)
14055 ; true
14056 ),
14057 nb_getval('$chr_store_multi_hash_chr_translate____rule___2-1',
14058 S),
14059 insert_ht(S, C, E)
14060 ; true
14061 ),
14062 least_occurrence(C, I),
14063 ( E=suspension(_, active, _, _, _, _)
14064 -> setarg(2, E, inactive),
14065 rule___2__2__0__3(B, C, D, E)
14066 ; true
14067 )
14068 ; rule___2__2__0__3(B, C, D, E)
14069 ).
14070rule___2__2(A, B, C) :-
14071 rule___2__3(A, B, C).
14072rule___2__3(A, B, C) :-
14073 B=pragma(rule([], _, _, _), ids([], D), _, _, _),
14074 !,
14075 arg(2, C, E),
14076 setarg(2, C, active),
14077 ( E==not_stored_yet
14078 -> nb_getval('$chr_store_global_ground_chr_translate____rule___2', F),
14079 G=[C|F],
14080 b_setval('$chr_store_global_ground_chr_translate____rule___2', G),
14081 ( F=[H|_]
14082 -> setarg(4, H, G)
14083 ; true
14084 ),
14085 nb_getval('$chr_store_multi_hash_chr_translate____rule___2-1', I),
14086 insert_ht(I, A, C)
14087 ; true
14088 ),
14089 least_occurrence(A, D),
14090 ( C=suspension(_, active, _, _, _, _)
14091 -> setarg(2, C, inactive),
14092 rule___2__4(A, B, C)
14093 ; true
14094 ).
14095rule___2__3(A, B, C) :-
14096 rule___2__4(A, B, C).
14097rule___2__4(A, B, C) :-
14098 nb_getval('$chr_store_multi_hash_chr_translate____prev_guard_list___6-1',
14099 D),
14100 lookup_ht(D, A, E),
14101 member(F, E),
14102 F=suspension(_, active, _, _, _, G, H, I, J, _),
14103 B=pragma(rule(K, L, H, M), N, O, P, A),
14104 H\==true,
14105 append(J, I, Q),
14106 ( conj2list(H, R),
14107 append(Q, R, S),
14108 guard_entailment:entails_guard(S, fail)
14109 -> T=fail
14110 ; simplify_guard(H, M, Q, T, U)
14111 ),
14112 H\==T,
14113 !,
14114 setarg(2, F, removed),
14115 arg(4, F, V),
14116 ( var(V)
14117 -> nb_getval('$chr_store_global_ground_chr_translate____prev_guard_list___6',
14118 W),
14119 W=[_|X],
14120 b_setval('$chr_store_global_ground_chr_translate____prev_guard_list___6',
14121 X),
14122 ( X=[Y|_]
14123 -> setarg(4, Y, _)
14124 ; true
14125 )
14126 ; V=[_, _|X],
14127 setarg(2, V, X),
14128 ( X=[Y|_]
14129 -> setarg(4, Y, V)
14130 ; true
14131 )
14132 ),
14133 nb_getval('$chr_store_multi_hash_chr_translate____prev_guard_list___6-1',
14134 Z),
14135 delete_ht(Z, A, F),
14136 ( var(C)
14137 -> true
14138 ; arg(2, C, A1),
14139 setarg(2, C, removed),
14140 ( A1==not_stored_yet
14141 -> true
14142 ; arg(4, C, B1),
14143 ( var(B1)
14144 -> nb_getval('$chr_store_global_ground_chr_translate____rule___2',
14145 C1),
14146 C1=[_|D1],
14147 b_setval('$chr_store_global_ground_chr_translate____rule___2',
14148 D1),
14149 ( D1=[E1|_]
14150 -> setarg(4, E1, _)
14151 ; true
14152 )
14153 ; B1=[_, _|D1],
14154 setarg(2, B1, D1),
14155 ( D1=[E1|_]
14156 -> setarg(4, E1, B1)
14157 ; true
14158 )
14159 ),
14160 nb_getval('$chr_store_multi_hash_chr_translate____rule___2-1',
14161 F1),
14162 delete_ht(F1, A, C)
14163 )
14164 ),
14165 rule(A,
14166 pragma(rule(K, L, T, U),
14167 N,
14168 O,
14169 P,
14170 A)),
14171 prev_guard_list(A, G, T, I, J, []).
14172rule___2__4(A, B, C) :-
14173 nb_getval('$chr_store_global_ground_chr_translate____precompute_head_matchings___0',
14174 D),
14175 !,
14176 rule___2__4__0__10(D, A, B, C).
14177rule___2__4__0__10([], A, B, C) :-
14178 rule___2__5(A, B, C).
14179rule___2__4__0__10([A|B], C, D, E) :-
14180 ( A=suspension(_, active, _, _),
14181 F=t(174, E, A),
14182 '$novel_production'(E, F),
14183 '$novel_production'(A, F)
14184 -> '$extend_history'(E, F),
14185 arg(2, E, G),
14186 setarg(2, E, active),
14187 ( G==not_stored_yet
14188 -> nb_getval('$chr_store_global_ground_chr_translate____rule___2',
14189 H),
14190 I=[E|H],
14191 b_setval('$chr_store_global_ground_chr_translate____rule___2',
14192 I),
14193 ( H=[J|_]
14194 -> setarg(4, J, I)
14195 ; true
14196 ),
14197 nb_getval('$chr_store_multi_hash_chr_translate____rule___2-1',
14198 K),
14199 insert_ht(K, C, E)
14200 ; true
14201 ),
14202 D=pragma(rule(L, M, _, _), _, _, _, _),
14203 append(L, M, N),
14204 make_head_matchings_explicit_(N, O, P),
14205 copy_term_nat(O-P, Q-R),
14206 make_head_matchings_explicit_memo_table(C, Q, R),
14207 ( E=suspension(_, active, _, _, _, _)
14208 -> setarg(2, E, inactive),
14209 rule___2__4__0__10(B, C, D, E)
14210 ; true
14211 )
14212 ; rule___2__4__0__10(B, C, D, E)
14213 ).
14214rule___2__4(A, B, C) :-
14215 rule___2__5(A, B, C).
14216rule___2__5(A, B, C) :-
14217 nb_getval('$chr_store_multi_hash_chr_translate____prev_guard_list___6-1',
14218 D),
14219 lookup_ht(D, A, E),
14220 !,
14221 rule___2__5__0__11(E, A, B, C).
14222rule___2__5__0__11([], A, B, C) :-
14223 rule___2__6(A, B, C).
14224rule___2__5__0__11([A|B], C, D, E) :-
14225 ( A=suspension(_, active, _, _, F, _, G, H, I, _),
14226 F==C,
14227 J=t(178, A, E),
14228 '$novel_production'(A, J),
14229 '$novel_production'(E, J),
14230 chr_pp_flag(check_impossible_rules, on),
14231 D=pragma(rule(_, _, G, _), _, _, _, C),
14232 conj2list(G, K),
14233 append(I, H, L),
14234 append(L, K, M),
14235 guard_entailment:entails_guard(M, fail)
14236 -> '$extend_history'(E, J),
14237 arg(2, E, N),
14238 setarg(2, E, active),
14239 ( N==not_stored_yet
14240 -> nb_getval('$chr_store_global_ground_chr_translate____rule___2',
14241 O),
14242 P=[E|O],
14243 b_setval('$chr_store_global_ground_chr_translate____rule___2',
14244 P),
14245 ( O=[Q|_]
14246 -> setarg(4, Q, P)
14247 ; true
14248 ),
14249 nb_getval('$chr_store_multi_hash_chr_translate____rule___2-1',
14250 R),
14251 insert_ht(R, C, E)
14252 ; true
14253 ),
14254 chr_warning(weird_program,
14255 'Heads will never match or guard will always fail in ~@.\n\tThis rule will never fire!\n',
14256 [format_rule(D)]),
14257 set_all_passive(C),
14258 ( E=suspension(_, active, _, _, _, _)
14259 -> setarg(2, E, inactive),
14260 rule___2__5__0__11(B, C, D, E)
14261 ; true
14262 )
14263 ; rule___2__5__0__11(B, C, D, E)
14264 ).
14265rule___2__5(A, B, C) :-
14266 rule___2__6(A, B, C).
14267rule___2__6(A, B, C) :-
14268 nb_getval('$chr_store_multi_hash_chr_translate____prev_guard_list___6-1',
14269 D),
14270 lookup_ht(D, A, E),
14271 member(F, E),
14272 F=suspension(_, active, _, _, _, G, H, I, J, _),
14273 B=pragma(rule(K, L, H, M), N, O, P, A),
14274 simplify_heads(J, I, H, M, Q, R),
14275 Q\==[],
14276 extract_arguments(K, S),
14277 extract_arguments(L, T),
14278 extract_arguments(G, U),
14279 replace_some_heads(S,
14280 T,
14281 U,
14282 Q,
14283 V,
14284 W,
14285 H,
14286 M,
14287 X),
14288 substitute_arguments(K, V, Y),
14289 substitute_arguments(L, W, Z),
14290 append(R, X, A1),
14291 list2conj(A1, B1),
14292 C1=pragma(rule(Y, Z, H, (B1, M)), N, O, P, A),
14293 ( K\==Y
14294 ; L\==Z
14295 ),
14296 !,
14297 ( var(C)
14298 -> true
14299 ; arg(2, C, D1),
14300 setarg(2, C, removed),
14301 ( D1==not_stored_yet
14302 -> true
14303 ; arg(4, C, E1),
14304 ( var(E1)
14305 -> nb_getval('$chr_store_global_ground_chr_translate____rule___2',
14306 F1),
14307 F1=[_|G1],
14308 b_setval('$chr_store_global_ground_chr_translate____rule___2',
14309 G1),
14310 ( G1=[H1|_]
14311 -> setarg(4, H1, _)
14312 ; true
14313 )
14314 ; E1=[_, _|G1],
14315 setarg(2, E1, G1),
14316 ( G1=[H1|_]
14317 -> setarg(4, H1, E1)
14318 ; true
14319 )
14320 ),
14321 nb_getval('$chr_store_multi_hash_chr_translate____rule___2-1',
14322 I1),
14323 delete_ht(I1, A, C)
14324 )
14325 ),
14326 rule(A, C1).
14327rule___2__6(A, B, C) :-
14328 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-3', D),
14329 lookup_ht(D, A, E),
14330 !,
14331 rule___2__6__0__13(E, A, B, C).
14332rule___2__6__0__13([], A, B, C) :-
14333 rule___2__7(A, B, C).
14334rule___2__6__0__13([A|B], C, D, E) :-
14335 ( A=suspension(_, active, _, _, F, G, H, _, _),
14336 H==C,
14337 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-13',
14338 I),
14339 lookup_ht(I, k(F, C), J)
14340 -> rule___2__6__1__13(J,
14341 F,
14342 G,
14343 A,
14344 B,
14345 C,
14346 D,
14347 E)
14348 ; rule___2__6__0__13(B, C, D, E)
14349 ).
14350rule___2__6__1__13([], _, _, _, A, B, C, D) :-
14351 rule___2__6__0__13(A, B, C, D).
14352rule___2__6__1__13([A|B], C, D, E, F, G, H, I) :-
14353 ( A=suspension(_, active, _, _, J, K, L, M, _),
14354 A\==E,
14355 J==C,
14356 L==G,
14357 nb_getval('$chr_store_multi_hash_chr_translate____prev_guard_list___6-1',
14358 N),
14359 lookup_ht(N, G, O)
14360 -> rule___2__6__2__13(O,
14361 K,
14362 M,
14363 A,
14364 B,
14365 C,
14366 D,
14367 E,
14368 F,
14369 G,
14370 H,
14371 I)
14372 ; rule___2__6__1__13(B,
14373 C,
14374 D,
14375 E,
14376 F,
14377 G,
14378 H,
14379 I)
14380 ).
14381rule___2__6__2__13([], _, _, _, A, B, C, D, E, F, G, H) :-
14382 rule___2__6__1__13(A,
14383 B,
14384 C,
14385 D,
14386 E,
14387 F,
14388 G,
14389 H).
14390rule___2__6__2__13([A|B], C, D, E, F, G, H, I, J, K, L, M) :-
14391 ( A=suspension(_, active, _, _, N, _, _, _, _, _),
14392 N==K,
14393 nb_getval('$chr_store_global_ground_chr_translate____multiple_occ_constraints_checked___1',
14394 O)
14395 -> rule___2__6__3__13(O,
14396 A,
14397 B,
14398 C,
14399 D,
14400 E,
14401 F,
14402 G,
14403 H,
14404 I,
14405 J,
14406 K,
14407 L,
14408 M)
14409 ; rule___2__6__2__13(B,
14410 C,
14411 D,
14412 E,
14413 F,
14414 G,
14415 H,
14416 I,
14417 J,
14418 K,
14419 L,
14420 M)
14421 ).
14422rule___2__6__3__13([], _, A, B, C, D, E, F, G, H, I, J, K, L) :-
14423 rule___2__6__2__13(A,
14424 B,
14425 C,
14426 D,
14427 E,
14428 F,
14429 G,
14430 H,
14431 I,
14432 J,
14433 K,
14434 L).
14435rule___2__6__3__13([A|B], C, D, E, F, G, H, I, J, K, L, M, N, O) :-
14436 ( A=suspension(_, active, _, P),
14437 E<J,
14438 chr_pp_flag(occurrence_subsumption, on),
14439 N=pragma(rule(Q, _, _, _), _, _, _, _),
14440 Q\==[],
14441 \+ tree_set_memberchk(I, P)
14442 -> setarg(2, A, removed),
14443 arg(3, A, R),
14444 ( var(R)
14445 -> nb_getval('$chr_store_global_ground_chr_translate____multiple_occ_constraints_checked___1',
14446 S),
14447 S=[_|T],
14448 b_setval('$chr_store_global_ground_chr_translate____multiple_occ_constraints_checked___1',
14449 T),
14450 ( T=[U|_]
14451 -> setarg(3, U, _)
14452 ; true
14453 )
14454 ; R=[_, _|T],
14455 setarg(2, R, T),
14456 ( T=[U|_]
14457 -> setarg(3, U, R)
14458 ; true
14459 )
14460 ),
14461 arg(2, O, V),
14462 setarg(2, O, active),
14463 ( V==not_stored_yet
14464 -> nb_getval('$chr_store_global_ground_chr_translate____rule___2',
14465 W),
14466 X=[O|W],
14467 b_setval('$chr_store_global_ground_chr_translate____rule___2',
14468 X),
14469 ( W=[Y|_]
14470 -> setarg(4, Y, X)
14471 ; true
14472 ),
14473 nb_getval('$chr_store_multi_hash_chr_translate____rule___2-1',
14474 Z),
14475 insert_ht(Z, M, O)
14476 ; true
14477 ),
14478 first_occ_in_rule(M, I, E, F),
14479 tree_set_add(P, I, A1),
14480 multiple_occ_constraints_checked(A1),
14481 ( O=suspension(_, active, _, _, _, _)
14482 -> setarg(2, O, inactive),
14483 rule___2__6__3__13(B,
14484 C,
14485 D,
14486 E,
14487 F,
14488 G,
14489 H,
14490 I,
14491 J,
14492 K,
14493 L,
14494 M,
14495 N,
14496 O)
14497 ; true
14498 )
14499 ; rule___2__6__3__13(B,
14500 C,
14501 D,
14502 E,
14503 F,
14504 G,
14505 H,
14506 I,
14507 J,
14508 K,
14509 L,
14510 M,
14511 N,
14512 O)
14513 ).
14514rule___2__6(A, B, C) :-
14515 rule___2__7(A, B, C).
14516rule___2__7(A, B, C) :-
14517 nb_getval('$chr_store_multi_hash_chr_translate____passive___2-1', D),
14518 lookup_ht(D, A, E),
14519 !,
14520 rule___2__7__0__15(E, A, B, C).
14521rule___2__7__0__15([], A, B, C) :-
14522 rule___2__8(A, B, C).
14523rule___2__7__0__15([A|B], C, D, E) :-
14524 ( A=suspension(_, active, _, F, G),
14525 F==C,
14526 H=t(251, E, A),
14527 '$novel_production'(E, H),
14528 '$novel_production'(A, H),
14529 D=pragma(rule(_, _, _, _), ids([G|I], J), _, _, C)
14530 -> '$extend_history'(E, H),
14531 arg(2, E, K),
14532 setarg(2, E, active),
14533 ( K==not_stored_yet
14534 -> nb_getval('$chr_store_global_ground_chr_translate____rule___2',
14535 L),
14536 M=[E|L],
14537 b_setval('$chr_store_global_ground_chr_translate____rule___2',
14538 M),
14539 ( L=[N|_]
14540 -> setarg(4, N, M)
14541 ; true
14542 ),
14543 nb_getval('$chr_store_multi_hash_chr_translate____rule___2-1',
14544 O),
14545 insert_ht(O, C, E)
14546 ; true
14547 ),
14548 append(I, J, P),
14549 check_all_passive(C, P),
14550 ( E=suspension(_, active, _, _, _, _)
14551 -> setarg(2, E, inactive),
14552 rule___2__7__0__15(B, C, D, E)
14553 ; true
14554 )
14555 ; rule___2__7__0__15(B, C, D, E)
14556 ).
14557rule___2__7(A, B, C) :-
14558 rule___2__8(A, B, C).
14559rule___2__8(A, B, C) :-
14560 nb_getval('$chr_store_multi_hash_chr_translate____passive___2-1', D),
14561 lookup_ht(D, A, E),
14562 !,
14563 rule___2__8__0__16(E, A, B, C).
14564rule___2__8__0__16([], A, B, C) :-
14565 rule___2__9(A, B, C).
14566rule___2__8__0__16([A|B], C, D, E) :-
14567 ( A=suspension(_, active, _, F, G),
14568 F==C,
14569 H=t(252, E, A),
14570 '$novel_production'(E, H),
14571 '$novel_production'(A, H),
14572 D=pragma(rule(_, _, _, _), ids([], [G|I]), _, _, C)
14573 -> '$extend_history'(E, H),
14574 arg(2, E, J),
14575 setarg(2, E, active),
14576 ( J==not_stored_yet
14577 -> nb_getval('$chr_store_global_ground_chr_translate____rule___2',
14578 K),
14579 L=[E|K],
14580 b_setval('$chr_store_global_ground_chr_translate____rule___2',
14581 L),
14582 ( K=[M|_]
14583 -> setarg(4, M, L)
14584 ; true
14585 ),
14586 nb_getval('$chr_store_multi_hash_chr_translate____rule___2-1',
14587 N),
14588 insert_ht(N, C, E)
14589 ; true
14590 ),
14591 check_all_passive(C, I),
14592 ( E=suspension(_, active, _, _, _, _)
14593 -> setarg(2, E, inactive),
14594 rule___2__8__0__16(B, C, D, E)
14595 ; true
14596 )
14597 ; rule___2__8__0__16(B, C, D, E)
14598 ).
14599rule___2__8(A, B, C) :-
14600 rule___2__9(A, B, C).
14601rule___2__9(A, B, C) :-
14602 nb_getval('$chr_store_multi_hash_chr_translate____check_all_passive___2-12',
14603 D),
14604 lookup_ht(D, k(A, []), E),
14605 !,
14606 rule___2__9__0__17(E, A, B, C).
14607rule___2__9__0__17([], A, B, C) :-
14608 rule___2__10(A, B, C).
14609rule___2__9__0__17([A|B], C, D, E) :-
14610 ( A=suspension(_, active, F, G),
14611 F==C,
14612 G=[]
14613 -> setarg(2, A, removed),
14614 ( nb_getval('$chr_store_multi_hash_chr_translate____check_all_passive___2-12',
14615 H),
14616 delete_ht(H, k(C, []), A)
14617 ),
14618 nb_getval('$chr_store_multi_hash_chr_translate____check_all_passive___2-1',
14619 I),
14620 delete_ht(I, C, A),
14621 arg(2, E, J),
14622 setarg(2, E, active),
14623 ( J==not_stored_yet
14624 -> nb_getval('$chr_store_global_ground_chr_translate____rule___2',
14625 K),
14626 L=[E|K],
14627 b_setval('$chr_store_global_ground_chr_translate____rule___2',
14628 L),
14629 ( K=[M|_]
14630 -> setarg(4, M, L)
14631 ; true
14632 ),
14633 nb_getval('$chr_store_multi_hash_chr_translate____rule___2-1',
14634 N),
14635 insert_ht(N, C, E)
14636 ; true
14637 ),
14638 chr_warning(weird_program,
14639 'All heads passive in ~@.\n\tThis rule never fires. Please check your program.\n',
14640 [format_rule(D)]),
14641 ( E=suspension(_, active, _, _, _, _)
14642 -> setarg(2, E, inactive),
14643 rule___2__9__0__17(B, C, D, E)
14644 ; true
14645 )
14646 ; rule___2__9__0__17(B, C, D, E)
14647 ).
14648rule___2__9(A, B, C) :-
14649 rule___2__10(A, B, C).
14650rule___2__10(A, B, C) :-
14651 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-3', D),
14652 lookup_ht(D, A, E),
14653 !,
14654 rule___2__10__0__22(E, A, B, C).
14655rule___2__10__0__22([], A, B, C) :-
14656 rule___2__11(A, B, C).
14657rule___2__10__0__22([A|B], C, D, E) :-
14658 ( A=suspension(_, active, _, _, F, _, G, H, I),
14659 G==C,
14660 nb_getval('$chr_store_global_ground_chr_translate____partial_wake_analysis___0',
14661 J)
14662 -> rule___2__10__1__22(J,
14663 F,
14664 H,
14665 I,
14666 A,
14667 B,
14668 C,
14669 D,
14670 E)
14671 ; rule___2__10__0__22(B, C, D, E)
14672 ).
14673rule___2__10__1__22([], _, _, _, _, A, B, C, D) :-
14674 rule___2__10__0__22(A, B, C, D).
14675rule___2__10__1__22([A|B], C, D, E, F, G, H, I, J) :-
14676 ( A=suspension(_, active, _, _),
14677 nb_getval('$chr_store_multi_hash_chr_translate____constraint_mode___2-1',
14678 K),
14679 lookup_ht(K, C, L)
14680 -> rule___2__10__2__22(L,
14681 A,
14682 B,
14683 C,
14684 D,
14685 E,
14686 F,
14687 G,
14688 H,
14689 I,
14690 J)
14691 ; rule___2__10__1__22(B,
14692 C,
14693 D,
14694 E,
14695 F,
14696 G,
14697 H,
14698 I,
14699 J)
14700 ).
14701rule___2__10__2__22([], _, A, B, C, D, E, F, G, H, I) :-
14702 rule___2__10__1__22(A,
14703 B,
14704 C,
14705 D,
14706 E,
14707 F,
14708 G,
14709 H,
14710 I).
14711rule___2__10__2__22([A|B], C, D, E, F, G, H, I, J, K, L) :-
14712 ( A=suspension(_, active, _, _, M, N),
14713 M==E,
14714 O=t(330, C, H, L, A),
14715 '$novel_production'(C, O),
14716 '$novel_production'(H, O),
14717 '$novel_production'(L, O),
14718 '$novel_production'(A, O)
14719 -> '$extend_history'(L, O),
14720 arg(2, L, P),
14721 setarg(2, L, active),
14722 ( P==not_stored_yet
14723 -> nb_getval('$chr_store_global_ground_chr_translate____rule___2',
14724 Q),
14725 R=[L|Q],
14726 b_setval('$chr_store_global_ground_chr_translate____rule___2',
14727 R),
14728 ( Q=[S|_]
14729 -> setarg(4, S, R)
14730 ; true
14731 ),
14732 nb_getval('$chr_store_multi_hash_chr_translate____rule___2-1',
14733 T),
14734 insert_ht(T, J, L)
14735 ; true
14736 ),
14737 K=pragma(rule(U, V, W, _), _, _, _, _),
14738 ( is_passive(J, F)
14739 -> true
14740 ; G==simplification
14741 -> select(X, U, _),
14742 X=..[_|Y],
14743 term_variables(W, Z),
14744 partial_wake_args(Y, N, Z, E)
14745 ; select(X, V, _),
14746 X=..[_|Y],
14747 term_variables(W, Z),
14748 partial_wake_args(Y, N, Z, E)
14749 ),
14750 ( L=suspension(_, active, _, _, _, _)
14751 -> setarg(2, L, inactive),
14752 rule___2__10__2__22(B,
14753 C,
14754 D,
14755 E,
14756 F,
14757 G,
14758 H,
14759 I,
14760 J,
14761 K,
14762 L)
14763 ; true
14764 )
14765 ; rule___2__10__2__22(B,
14766 C,
14767 D,
14768 E,
14769 F,
14770 G,
14771 H,
14772 I,
14773 J,
14774 K,
14775 L)
14776 ).
14777rule___2__10(A, B, C) :-
14778 rule___2__11(A, B, C).
14779rule___2__11(A, _, B) :-
14780 arg(2, B, C),
14781 setarg(2, B, active),
14782 ( C==not_stored_yet
14783 -> nb_getval('$chr_store_global_ground_chr_translate____rule___2', D),
14784 E=[B|D],
14785 b_setval('$chr_store_global_ground_chr_translate____rule___2', E),
14786 ( D=[F|_]
14787 -> setarg(4, F, E)
14788 ; true
14789 ),
14790 nb_getval('$chr_store_multi_hash_chr_translate____rule___2-1', G),
14791 insert_ht(G, A, B)
14792 ; true
14793 ).
14794get_rule(A, B) :-
14795 nb_getval('$chr_store_multi_hash_chr_translate____rule___2-1', C),
14796 lookup_ht(C, A, D),
14797 member(E, D),
14798 E=suspension(_, active, _, _, _, F),
14799 !,
14800 B=F.
14801get_rule(_, _) :-
14802 fail.
14803least_occurrence(A, [B|C]) :-
14804 nb_getval('$chr_store_multi_hash_chr_translate____rule___2-1', D),
14805 lookup_ht(D, A, E),
14806 member(F, E),
14807 F=suspension(_, active, _, _, _, _),
14808 ( nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-34',
14809 G),
14810 lookup_ht(G, k(A, B), H),
14811 member(I, H),
14812 I=suspension(_, active, _, _, J, K, _, _, _),
14813 nb_getval('$chr_store_multi_hash_chr_translate____allocation_occurrence___2-1',
14814 L),
14815 lookup_ht(L, J, M),
14816 member(N, M),
14817 N=suspension(_, active, _, _, O),
14818 O>=K,
14819 \+ may_trigger(J),
14820 !,
14821 least_occurrence(A, C)
14822 ; nb_getval('$chr_store_multi_hash_chr_translate____passive___2-12',
14823 P),
14824 lookup_ht(P, k(A, B), Q),
14825 member(R, Q),
14826 R=suspension(_, active, _, _, _),
14827 !,
14828 least_occurrence(A, C)
14829 ).
14830least_occurrence(A, B) :-
14831 C=suspension(D, active, A, B),
14832 'chr gen_id'(D),
14833 nb_getval('$chr_store_multi_hash_chr_translate____least_occurrence___2-12',
14834 E),
14835 insert_ht(E, k(A, B), C),
14836 nb_getval('$chr_store_multi_hash_chr_translate____least_occurrence___2-1',
14837 F),
14838 insert_ht(F, A, C).
14839is_least_occurrence(A) :-
14840 nb_getval('$chr_store_multi_hash_chr_translate____least_occurrence___2-12',
14841 B),
14842 lookup_ht(B, k(A, []), C),
14843 member(D, C),
14844 D=suspension(_, active, _, _),
14845 !.
14846is_least_occurrence(_) :-
14847 fail.
14848stored_in_guard_lookahead(A, B) :-
14849 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-12',
14850 C),
14851 lookup_ht(C, k(A, B), D),
14852 member(E, D),
14853 E=suspension(_, active, _, _, _, _, F, G, H),
14854 ( nb_getval('$chr_store_multi_hash_chr_translate____passive___2-12',
14855 I),
14856 lookup_ht(I, k(F, G), J),
14857 member(K, J),
14858 K=suspension(_, active, _, _, _),
14859 !,
14860 L is B+1,
14861 stored_in_guard_lookahead(A, L)
14862 ; !,
14863 H==simplification,
14864 ( is_stored_in_guard(A, F)
14865 -> true
14866 ; M is B+1,
14867 stored_in_guard_lookahead(A, M)
14868 )
14869 ).
14870stored_in_guard_lookahead(_, _) :-
14871 fail.
14872constraint_index(A, B) :-
14873 C=suspension(D, active, A, B),
14874 'chr gen_id'(D),
14875 nb_getval('$chr_store_multi_hash_chr_translate____constraint_index___2-2',
14876 E),
14877 insert_ht(E, B, C),
14878 nb_getval('$chr_store_multi_hash_chr_translate____constraint_index___2-1',
14879 F),
14880 insert_ht(F, A, C).
14881get_constraint_index(A, B) :-
14882 nb_getval('$chr_store_multi_hash_chr_translate____constraint_index___2-1',
14883 C),
14884 lookup_ht(C, A, D),
14885 member(E, D),
14886 E=suspension(_, active, _, F),
14887 !,
14888 B=F.
14889get_constraint_index(_, _) :-
14890 fail.
14891get_indexed_constraint(A, B) :-
14892 nb_getval('$chr_store_multi_hash_chr_translate____constraint_index___2-2',
14893 C),
14894 lookup_ht(C, A, D),
14895 member(E, D),
14896 E=suspension(_, active, F, _),
14897 !,
14898 B=F.
14899get_indexed_constraint(_, _) :-
14900 fail.
14901max_constraint_index(A) :-
14902 B=suspension(C, active, _, A),
14903 'chr gen_id'(C),
14904 nb_getval('$chr_store_global_ground_chr_translate____max_constraint_index___1',
14905 D),
14906 E=[B|D],
14907 b_setval('$chr_store_global_ground_chr_translate____max_constraint_index___1',
14908 E),
14909 ( D=[F|_]
14910 -> setarg(3, F, E)
14911 ; true
14912 ).
14913get_max_constraint_index(A) :-
14914 nb_getval('$chr_store_global_ground_chr_translate____max_constraint_index___1',
14915 B),
14916 member(C, B),
14917 C=suspension(_, active, _, D),
14918 !,
14919 A=D.
14920get_max_constraint_index(0).
14921identifier_size(A) :-
14922 nb_getval('$chr_store_global_ground_chr_translate____identifier_size___1',
14923 B),
14924 ( member(C, B),
14925 C=suspension(_, active, _, _),
14926 !
14927 ; !,
14928 identifier_size___1__0__0__2(B, A)
14929 ).
14930identifier_size___1__0__0__2([], A) :-
14931 identifier_size___1__1(A).
14932identifier_size___1__0__0__2([A|B], C) :-
14933 ( A=suspension(_, active, _, _)
14934 -> setarg(2, A, removed),
14935 arg(3, A, D),
14936 ( var(D)
14937 -> nb_getval('$chr_store_global_ground_chr_translate____identifier_size___1',
14938 E),
14939 E=[_|F],
14940 b_setval('$chr_store_global_ground_chr_translate____identifier_size___1',
14941 F),
14942 ( F=[G|_]
14943 -> setarg(3, G, _)
14944 ; true
14945 )
14946 ; D=[_, _|F],
14947 setarg(2, D, F),
14948 ( F=[G|_]
14949 -> setarg(3, G, D)
14950 ; true
14951 )
14952 ),
14953 identifier_size___1__0__0__2(B, C)
14954 ; identifier_size___1__0__0__2(B, C)
14955 ).
14956identifier_size(A) :-
14957 identifier_size___1__1(A).
14958identifier_size___1__1(A) :-
14959 B=suspension(C, active, _, A),
14960 'chr gen_id'(C),
14961 nb_getval('$chr_store_global_ground_chr_translate____identifier_size___1',
14962 D),
14963 E=[B|D],
14964 b_setval('$chr_store_global_ground_chr_translate____identifier_size___1',
14965 E),
14966 ( D=[F|_]
14967 -> setarg(3, F, E)
14968 ; true
14969 ).
14970get_identifier_size(A) :-
14971 nb_getval('$chr_store_global_ground_chr_translate____identifier_size___1',
14972 B),
14973 member(C, B),
14974 C=suspension(_, active, _, D),
14975 !,
14976 A=D.
14977get_identifier_size(1).
14978identifier_index(A, B, C) :-
14979 nb_getval('$chr_store_multi_hash_chr_translate____identifier_index___3-12',
14980 D),
14981 lookup_ht(D, k(A, B), E),
14982 ( member(F, E),
14983 F=suspension(_, active, _, _, _),
14984 !
14985 ; !,
14986 identifier_index___3__0__0__2(E, A, B, C)
14987 ).
14988identifier_index___3__0__0__2([], A, B, C) :-
14989 identifier_index___3__1(A, B, C).
14990identifier_index___3__0__0__2([A|B], C, D, E) :-
14991 ( A=suspension(_, active, F, G, _),
14992 F==C,
14993 G==D
14994 -> setarg(2, A, removed),
14995 nb_getval('$chr_store_multi_hash_chr_translate____identifier_index___3-12',
14996 H),
14997 delete_ht(H, k(C, D), A),
14998 identifier_index___3__0__0__2(B, C, D, E)
14999 ; identifier_index___3__0__0__2(B, C, D, E)
15000 ).
15001identifier_index(A, B, C) :-
15002 identifier_index___3__1(A, B, C).
15003identifier_index___3__1(A, B, C) :-
15004 D=suspension(E, active, A, B, C),
15005 'chr gen_id'(E),
15006 nb_getval('$chr_store_multi_hash_chr_translate____identifier_index___3-12',
15007 F),
15008 insert_ht(F, k(A, B), D).
15009get_identifier_index(A, B, C) :-
15010 nb_getval('$chr_store_multi_hash_chr_translate____identifier_index___3-12',
15011 D),
15012 lookup_ht(D, k(A, B), E),
15013 member(F, E),
15014 F=suspension(_, active, _, _, G),
15015 !,
15016 C=G.
15017get_identifier_index(A, B, C) :-
15018 nb_getval('$chr_store_global_ground_chr_translate____identifier_size___1',
15019 D),
15020 member(E, D),
15021 E=suspension(_, active, _, F),
15022 !,
15023 setarg(2, E, removed),
15024 arg(3, E, G),
15025 ( var(G)
15026 -> nb_getval('$chr_store_global_ground_chr_translate____identifier_size___1',
15027 H),
15028 H=[_|I],
15029 b_setval('$chr_store_global_ground_chr_translate____identifier_size___1',
15030 I),
15031 ( I=[J|_]
15032 -> setarg(3, J, _)
15033 ; true
15034 )
15035 ; G=[_, _|I],
15036 setarg(2, G, I),
15037 ( I=[J|_]
15038 -> setarg(3, J, G)
15039 ; true
15040 )
15041 ),
15042 K is F+1,
15043 identifier_index(A, B, K),
15044 identifier_size(K),
15045 C=K.
15046get_identifier_index(A, B, C) :-
15047 identifier_index(A, B, 2),
15048 identifier_size(2),
15049 C=2.
15050type_indexed_identifier_size(A, B) :-
15051 nb_getval('$chr_store_multi_hash_chr_translate____type_indexed_identifier_size___2-1',
15052 C),
15053 lookup_ht(C, A, D),
15054 ( member(E, D),
15055 E=suspension(_, active, _, _),
15056 !
15057 ; !,
15058 type_indexed_identifier_size___2__0__0__2(D, A, B)
15059 ).
15060type_indexed_identifier_size___2__0__0__2([], A, B) :-
15061 type_indexed_identifier_size___2__1(A, B).
15062type_indexed_identifier_size___2__0__0__2([A|B], C, D) :-
15063 ( A=suspension(_, active, E, _),
15064 E==C
15065 -> setarg(2, A, removed),
15066 nb_getval('$chr_store_multi_hash_chr_translate____type_indexed_identifier_size___2-1',
15067 F),
15068 delete_ht(F, C, A),
15069 type_indexed_identifier_size___2__0__0__2(B, C, D)
15070 ; type_indexed_identifier_size___2__0__0__2(B, C, D)
15071 ).
15072type_indexed_identifier_size(A, B) :-
15073 type_indexed_identifier_size___2__1(A, B).
15074type_indexed_identifier_size___2__1(A, B) :-
15075 C=suspension(D, active, A, B),
15076 'chr gen_id'(D),
15077 nb_getval('$chr_store_multi_hash_chr_translate____type_indexed_identifier_size___2-1',
15078 E),
15079 insert_ht(E, A, C).
15080get_type_indexed_identifier_size(A, B) :-
15081 nb_getval('$chr_store_multi_hash_chr_translate____type_indexed_identifier_size___2-1',
15082 C),
15083 lookup_ht(C, A, D),
15084 member(E, D),
15085 E=suspension(_, active, _, F),
15086 !,
15087 B=F.
15088get_type_indexed_identifier_size(_, 1).
15089type_indexed_identifier_index(A, B, C, D) :-
15090 nb_getval('$chr_store_multi_hash_chr_translate____type_indexed_identifier_index___4-23',
15091 E),
15092 lookup_ht(E, k(B, C), F),
15093 ( member(G, F),
15094 G=suspension(_, active, _, _, _, _),
15095 !
15096 ; !,
15097 type_indexed_identifier_index___4__0__0__2(F,
15098 A,
15099 B,
15100 C,
15101 D)
15102 ).
15103type_indexed_identifier_index___4__0__0__2([], A, B, C, D) :-
15104 type_indexed_identifier_index___4__1(A, B, C, D).
15105type_indexed_identifier_index___4__0__0__2([A|B], C, D, E, F) :-
15106 ( A=suspension(_, active, G, H, I, _),
15107 H==D,
15108 I==E
15109 -> setarg(2, A, removed),
15110 ( nb_getval('$chr_store_multi_hash_chr_translate____type_indexed_identifier_index___4-123',
15111 J),
15112 delete_ht(J, k(G, D, E), A)
15113 ),
15114 nb_getval('$chr_store_multi_hash_chr_translate____type_indexed_identifier_index___4-23',
15115 K),
15116 delete_ht(K, k(D, E), A),
15117 type_indexed_identifier_index___4__0__0__2(B,
15118 C,
15119 D,
15120 E,
15121 F)
15122 ; type_indexed_identifier_index___4__0__0__2(B,
15123 C,
15124 D,
15125 E,
15126 F)
15127 ).
15128type_indexed_identifier_index(A, B, C, D) :-
15129 type_indexed_identifier_index___4__1(A, B, C, D).
15130type_indexed_identifier_index___4__1(A, B, C, D) :-
15131 E=suspension(F, active, A, B, C, D),
15132 'chr gen_id'(F),
15133 nb_getval('$chr_store_multi_hash_chr_translate____type_indexed_identifier_index___4-123',
15134 G),
15135 insert_ht(G, k(A, B, C), E),
15136 nb_getval('$chr_store_multi_hash_chr_translate____type_indexed_identifier_index___4-23',
15137 H),
15138 insert_ht(H, k(B, C), E).
15139get_type_indexed_identifier_index(A, B, C, D) :-
15140 nb_getval('$chr_store_multi_hash_chr_translate____type_indexed_identifier_index___4-123',
15141 E),
15142 lookup_ht(E, k(A, B, C), F),
15143 member(G, F),
15144 G=suspension(_, active, _, _, _, H),
15145 !,
15146 D=H.
15147get_type_indexed_identifier_index(A, B, C, D) :-
15148 nb_getval('$chr_store_multi_hash_chr_translate____type_indexed_identifier_size___2-1',
15149 E),
15150 lookup_ht(E, A, F),
15151 member(G, F),
15152 G=suspension(_, active, _, H),
15153 !,
15154 setarg(2, G, removed),
15155 nb_getval('$chr_store_multi_hash_chr_translate____type_indexed_identifier_size___2-1',
15156 I),
15157 delete_ht(I, A, G),
15158 J is H+1,
15159 type_indexed_identifier_index(A, B, C, J),
15160 type_indexed_identifier_size(A, J),
15161 D=J.
15162get_type_indexed_identifier_index(A, B, C, D) :-
15163 type_indexed_identifier_index(A, B, C, 2),
15164 type_indexed_identifier_size(A, 2),
15165 D=2.
15166no_history(A) :-
15167 B=suspension(C, active, A),
15168 'chr gen_id'(C),
15169 nb_getval('$chr_store_multi_hash_chr_translate____no_history___1-1', D),
15170 insert_ht(D, A, B).
15171has_no_history(A) :-
15172 nb_getval('$chr_store_multi_hash_chr_translate____no_history___1-1', B),
15173 lookup_ht(B, A, C),
15174 member(D, C),
15175 D=suspension(_, active, _),
15176 !.
15177has_no_history(_) :-
15178 fail.
15179history(A, B, C) :-
15180 history___3__0(A, B, C, _).
15181history___3__0(A, B, C, D) :-
15182 nb_getval('$chr_store_multi_hash_chr_translate____history___3-1', E),
15183 lookup_ht(E, A, F),
15184 !,
15185 D=suspension(G, not_stored_yet, t, A, B, C),
15186 'chr gen_id'(G),
15187 history___3__0__0__1(F, A, B, C, D).
15188history___3__0__0__1([], A, B, C, D) :-
15189 history___3__1(A, B, C, D).
15190history___3__0__0__1([A|B], C, D, E, F) :-
15191 ( A=suspension(_, active, _, G, _, _),
15192 G==C,
15193 H=t(95, F, A),
15194 '$novel_production'(F, H),
15195 '$novel_production'(A, H)
15196 -> '$extend_history'(F, H),
15197 arg(2, F, I),
15198 setarg(2, F, active),
15199 ( I==not_stored_yet
15200 -> ( '$chr_store_constants_chr_translate____history___3___[3]'(E,
15201 J)
15202 -> nb_getval(J, K),
15203 b_setval(J, [F|K])
15204 ; true
15205 ),
15206 nb_getval('$chr_store_multi_hash_chr_translate____history___3-2',
15207 L),
15208 insert_ht(L, D, F),
15209 nb_getval('$chr_store_multi_hash_chr_translate____history___3-1',
15210 M),
15211 insert_ht(M, C, F)
15212 ; true
15213 ),
15214 chr_error(syntax,
15215 'Only one pragma history allowed per rule (rule number ~w)\n',
15216 [C]),
15217 ( F=suspension(_, active, _, _, _, _)
15218 -> setarg(2, F, inactive),
15219 history___3__0__0__1(B, C, D, E, F)
15220 ; true
15221 )
15222 ; history___3__0__0__1(B, C, D, E, F)
15223 ).
15224history___3__0(A, B, C, D) :-
15225 D=suspension(E, not_stored_yet, t, A, B, C),
15226 'chr gen_id'(E),
15227 history___3__1(A, B, C, D).
15228history___3__1(A, B, C, D) :-
15229 nb_getval('$chr_store_multi_hash_chr_translate____history___3-1', E),
15230 lookup_ht(E, A, F),
15231 !,
15232 history___3__1__0__2(F, A, B, C, D).
15233history___3__1__0__2([], A, B, C, D) :-
15234 history___3__2(A, B, C, D).
15235history___3__1__0__2([A|B], C, D, E, F) :-
15236 ( A=suspension(_, active, _, G, _, _),
15237 G==C,
15238 H=t(95, A, F),
15239 '$novel_production'(A, H),
15240 '$novel_production'(F, H)
15241 -> '$extend_history'(F, H),
15242 arg(2, F, I),
15243 setarg(2, F, active),
15244 ( I==not_stored_yet
15245 -> ( '$chr_store_constants_chr_translate____history___3___[3]'(E,
15246 J)
15247 -> nb_getval(J, K),
15248 b_setval(J, [F|K])
15249 ; true
15250 ),
15251 nb_getval('$chr_store_multi_hash_chr_translate____history___3-2',
15252 L),
15253 insert_ht(L, D, F),
15254 nb_getval('$chr_store_multi_hash_chr_translate____history___3-1',
15255 M),
15256 insert_ht(M, C, F)
15257 ; true
15258 ),
15259 chr_error(syntax,
15260 'Only one pragma history allowed per rule (rule number ~w)\n',
15261 [C]),
15262 ( F=suspension(_, active, _, _, _, _)
15263 -> setarg(2, F, inactive),
15264 history___3__1__0__2(B, C, D, E, F)
15265 ; true
15266 )
15267 ; history___3__1__0__2(B, C, D, E, F)
15268 ).
15269history___3__1(A, B, C, D) :-
15270 history___3__2(A, B, C, D).
15271history___3__2(A, B, C, D) :-
15272 nb_getval('$chr_store_multi_hash_chr_translate____history___3-2', E),
15273 lookup_ht(E, B, F),
15274 !,
15275 history___3__2__0__3(F, A, B, C, D).
15276history___3__2__0__3([], A, B, C, D) :-
15277 history___3__3(A, B, C, D).
15278history___3__2__0__3([A|B], C, D, E, F) :-
15279 ( A=suspension(_, active, _, G, H, I),
15280 H==D,
15281 J=t(96, F, A),
15282 '$novel_production'(F, J),
15283 '$novel_production'(A, J)
15284 -> '$extend_history'(F, J),
15285 arg(2, F, K),
15286 setarg(2, F, active),
15287 ( K==not_stored_yet
15288 -> ( '$chr_store_constants_chr_translate____history___3___[3]'(E,
15289 L)
15290 -> nb_getval(L, M),
15291 b_setval(L, [F|M])
15292 ; true
15293 ),
15294 nb_getval('$chr_store_multi_hash_chr_translate____history___3-2',
15295 N),
15296 insert_ht(N, D, F),
15297 nb_getval('$chr_store_multi_hash_chr_translate____history___3-1',
15298 O),
15299 insert_ht(O, C, F)
15300 ; true
15301 ),
15302 length(E, P),
15303 length(I, Q),
15304 ( P\==Q
15305 -> chr_error(syntax,
15306 'The history named ~w does not always range over an equal amount of occurrences.\n',
15307 [D])
15308 ; test_named_history_id_pairs(C, E, G, I)
15309 ),
15310 ( F=suspension(_, active, _, _, _, _)
15311 -> setarg(2, F, inactive),
15312 history___3__2__0__3(B, C, D, E, F)
15313 ; true
15314 )
15315 ; history___3__2__0__3(B, C, D, E, F)
15316 ).
15317history___3__2(A, B, C, D) :-
15318 history___3__3(A, B, C, D).
15319history___3__3(A, B, C, D) :-
15320 nb_getval('$chr_store_multi_hash_chr_translate____history___3-2', E),
15321 lookup_ht(E, B, F),
15322 !,
15323 history___3__3__0__4(F, A, B, C, D).
15324history___3__3__0__4([], A, B, C, D) :-
15325 history___3__4(A, B, C, D).
15326history___3__3__0__4([A|B], C, D, E, F) :-
15327 ( A=suspension(_, active, _, G, H, I),
15328 H==D,
15329 J=t(96, A, F),
15330 '$novel_production'(A, J),
15331 '$novel_production'(F, J)
15332 -> '$extend_history'(F, J),
15333 arg(2, F, K),
15334 setarg(2, F, active),
15335 ( K==not_stored_yet
15336 -> ( '$chr_store_constants_chr_translate____history___3___[3]'(E,
15337 L)
15338 -> nb_getval(L, M),
15339 b_setval(L, [F|M])
15340 ; true
15341 ),
15342 nb_getval('$chr_store_multi_hash_chr_translate____history___3-2',
15343 N),
15344 insert_ht(N, D, F),
15345 nb_getval('$chr_store_multi_hash_chr_translate____history___3-1',
15346 O),
15347 insert_ht(O, C, F)
15348 ; true
15349 ),
15350 length(I, P),
15351 length(E, Q),
15352 ( P\==Q
15353 -> chr_error(syntax,
15354 'The history named ~w does not always range over an equal amount of occurrences.\n',
15355 [D])
15356 ; test_named_history_id_pairs(G, I, C, E)
15357 ),
15358 ( F=suspension(_, active, _, _, _, _)
15359 -> setarg(2, F, inactive),
15360 history___3__3__0__4(B, C, D, E, F)
15361 ; true
15362 )
15363 ; history___3__3__0__4(B, C, D, E, F)
15364 ).
15365history___3__3(A, B, C, D) :-
15366 history___3__4(A, B, C, D).
15367history___3__4(A, B, [], C) :-
15368 nb_getval('$chr_store_global_ground_chr_translate____find_empty_named_histories___0',
15369 D),
15370 !,
15371 history___3__4__0__6(D, A, B, [], C).
15372history___3__4__0__6([], A, B, C, D) :-
15373 history___3__5(A, B, C, D).
15374history___3__4__0__6([A|B], C, D, E, F) :-
15375 ( A=suspension(_, active, _, _),
15376 G=t(142, A, F),
15377 '$novel_production'(A, G),
15378 '$novel_production'(F, G)
15379 -> '$extend_history'(F, G),
15380 arg(2, F, H),
15381 setarg(2, F, active),
15382 ( H==not_stored_yet
15383 -> ( '$chr_store_constants_chr_translate____history___3___[3]'(E,
15384 I)
15385 -> nb_getval(I, J),
15386 b_setval(I, [F|J])
15387 ; true
15388 ),
15389 nb_getval('$chr_store_multi_hash_chr_translate____history___3-2',
15390 K),
15391 insert_ht(K, D, F),
15392 nb_getval('$chr_store_multi_hash_chr_translate____history___3-1',
15393 L),
15394 insert_ht(L, C, F)
15395 ; true
15396 ),
15397 generate_empty_named_history_initialisation(D),
15398 ( F=suspension(_, active, _, _, _, _)
15399 -> setarg(2, F, inactive),
15400 history___3__4__0__6(B, C, D, E, F)
15401 ; true
15402 )
15403 ; history___3__4__0__6(B, C, D, E, F)
15404 ).
15405history___3__4(A, B, C, D) :-
15406 history___3__5(A, B, C, D).
15407history___3__5(A, B, C, D) :-
15408 arg(2, D, E),
15409 setarg(2, D, active),
15410 ( E==not_stored_yet
15411 -> ( '$chr_store_constants_chr_translate____history___3___[3]'(C,
15412 F)
15413 -> nb_getval(F, G),
15414 b_setval(F, [D|G])
15415 ; true
15416 ),
15417 nb_getval('$chr_store_multi_hash_chr_translate____history___3-2',
15418 H),
15419 insert_ht(H, B, D),
15420 nb_getval('$chr_store_multi_hash_chr_translate____history___3-1',
15421 I),
15422 insert_ht(I, A, D)
15423 ; true
15424 ).
15425named_history(A, B, C) :-
15426 ground(A),
15427 nb_getval('$chr_store_multi_hash_chr_translate____history___3-1', D),
15428 lookup_ht(D, A, E),
15429 member(F, E),
15430 F=suspension(_, active, _, _, G, H),
15431 !,
15432 B=G,
15433 C=H.
15434named_history(_, _, _) :-
15435 fail.
15436test_named_history_id_pair(A, B, C, D) :-
15437 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-34',
15438 E),
15439 lookup_ht(E, k(A, B), F),
15440 member(G, F),
15441 G=suspension(_, active, _, _, H, _, _, _, _),
15442 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-134',
15443 I),
15444 lookup_ht(I, k(H, C, D), J),
15445 member(K, J),
15446 K=suspension(_, active, _, _, _, _, _, _, _),
15447 K\==G,
15448 !.
15449test_named_history_id_pair(A, _, B, _) :-
15450 chr_error(syntax,
15451 'Occurrences of shared history in rules number ~w and ~w do not correspond\n',
15452 [B, A]).
15453indexing_spec(A, B) :-
15454 nb_getval('$chr_store_multi_hash_chr_translate____indexing_spec___2-1',
15455 C),
15456 lookup_ht(C, A, D),
15457 member(E, D),
15458 E=suspension(_, active, _, F),
15459 !,
15460 setarg(2, E, removed),
15461 nb_getval('$chr_store_multi_hash_chr_translate____indexing_spec___2-1',
15462 G),
15463 delete_ht(G, A, E),
15464 append(B, F, H),
15465 indexing_spec(A, H).
15466indexing_spec(A, B) :-
15467 C=suspension(D, active, A, B),
15468 'chr gen_id'(D),
15469 nb_getval('$chr_store_multi_hash_chr_translate____indexing_spec___2-1',
15470 E),
15471 insert_ht(E, A, C).
15472get_indexing_spec(A, B) :-
15473 nb_getval('$chr_store_multi_hash_chr_translate____indexing_spec___2-1',
15474 C),
15475 lookup_ht(C, A, D),
15476 member(E, D),
15477 E=suspension(_, active, _, F),
15478 !,
15479 B=F.
15480get_indexing_spec(_, []).
15481observation_analysis(A) :-
15482 observation_analysis___1__0(A, _).
15483observation_analysis___1__0(A, B) :-
15484 nb_getval('$chr_store_global_ground_chr_translate____rule___2', C),
15485 !,
15486 B=suspension(D, not_stored_yet, _, A),
15487 'chr gen_id'(D),
15488 observation_analysis___1__0__0__1(C, A, B).
15489observation_analysis___1__0__0__1([], A, B) :-
15490 observation_analysis___1__1(A, B).
15491observation_analysis___1__0__0__1([A|B], C, D) :-
15492 ( A=suspension(_, active, _, _, E, F)
15493 -> F=pragma(rule(_, _, G, H), _, _, _, _),
15494 ( chr_pp_flag(store_in_guards, on)
15495 -> observation_analysis(E, G, guard, C)
15496 ; true
15497 ),
15498 observation_analysis(E, H, body, C),
15499 observation_analysis___1__0__0__1(B, C, D)
15500 ; observation_analysis___1__0__0__1(B, C, D)
15501 ).
15502observation_analysis___1__0(A, B) :-
15503 B=suspension(C, not_stored_yet, _, A),
15504 'chr gen_id'(C),
15505 observation_analysis___1__1(A, B).
15506observation_analysis___1__1(_, A) :-
15507 ( var(A)
15508 -> true
15509 ; arg(2, A, B),
15510 setarg(2, A, removed),
15511 ( B==not_stored_yet
15512 -> true
15513 ; arg(3, A, C),
15514 ( var(C)
15515 -> nb_getval('$chr_store_global_ground_chr_translate____observation_analysis___1',
15516 D),
15517 D=[_|E],
15518 b_setval('$chr_store_global_ground_chr_translate____observation_analysis___1',
15519 E),
15520 ( E=[F|_]
15521 -> setarg(3, F, _)
15522 ; true
15523 )
15524 ; C=[_, _|E],
15525 setarg(2, C, E),
15526 ( E=[F|_]
15527 -> setarg(3, F, C)
15528 ; true
15529 )
15530 )
15531 )
15532 ).
15533spawns(A, B, C) :-
15534 spawns___3__0(A, B, C, _).
15535spawns___3__0(A, B, C, _) :-
15536 nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-123', D),
15537 lookup_ht(D, k(A, B, C), E),
15538 member(F, E),
15539 F=suspension(_, active, _, _, _, _, _),
15540 !.
15541spawns___3__0(A, body, B, _) :-
15542 nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-123', C),
15543 lookup_ht(C, k(A, guard, B), D),
15544 member(E, D),
15545 E=suspension(_, active, _, _, _, _, _),
15546 !.
15547spawns___3__0(A, guard, B, C) :-
15548 nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-123', D),
15549 lookup_ht(D, k(A, body, B), E),
15550 !,
15551 spawns___3__0__0__4(E, A, guard, B, C).
15552spawns___3__0__0__4([], A, B, C, D) :-
15553 spawns___3__1(A, B, C, D).
15554spawns___3__0__0__4([A|B], C, D, E, F) :-
15555 ( A=suspension(_, active, _, _, G, H, I),
15556 G==C,
15557 H=body,
15558 I==E
15559 -> setarg(2, A, removed),
15560 ( nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-13',
15561 J),
15562 delete_ht(J, k(C, E), A)
15563 ),
15564 ( arg(4, A, K),
15565 ( var(K)
15566 -> nb_getval('$chr_store_global_ground_chr_translate____spawns___3',
15567 L),
15568 L=[_|M],
15569 b_setval('$chr_store_global_ground_chr_translate____spawns___3',
15570 M),
15571 ( M=[N|_]
15572 -> setarg(4, N, _)
15573 ; true
15574 )
15575 ; K=[_, _|M],
15576 setarg(2, K, M),
15577 ( M=[N|_]
15578 -> setarg(4, N, K)
15579 ; true
15580 )
15581 )
15582 ),
15583 ( nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-12',
15584 O),
15585 delete_ht(O, k(C, body), A)
15586 ),
15587 ( nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-1',
15588 P),
15589 delete_ht(P, C, A)
15590 ),
15591 ( nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-3',
15592 Q),
15593 delete_ht(Q, E, A)
15594 ),
15595 nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-123',
15596 R),
15597 delete_ht(R, k(C, body, E), A),
15598 spawns___3__0__0__4(B, C, D, E, F)
15599 ; spawns___3__0__0__4(B, C, D, E, F)
15600 ).
15601spawns___3__0(A, B, C, D) :-
15602 spawns___3__1(A, B, C, D).
15603spawns___3__1(A, B, C, D) :-
15604 nb_getval('$chr_store_multi_hash_chr_translate____spawns_all___2-12',
15605 E),
15606 lookup_ht(E, k(A, B), F),
15607 member(G, F),
15608 G=suspension(_, active, _, _),
15609 !,
15610 ( var(D)
15611 -> true
15612 ; arg(2, D, H),
15613 setarg(2, D, removed),
15614 ( H==not_stored_yet
15615 -> true
15616 ; nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-13',
15617 I),
15618 delete_ht(I, k(A, C), D),
15619 arg(4, D, J),
15620 ( var(J)
15621 -> nb_getval('$chr_store_global_ground_chr_translate____spawns___3',
15622 K),
15623 K=[_|L],
15624 b_setval('$chr_store_global_ground_chr_translate____spawns___3',
15625 L),
15626 ( L=[M|_]
15627 -> setarg(4, M, _)
15628 ; true
15629 )
15630 ; J=[_, _|L],
15631 setarg(2, J, L),
15632 ( L=[M|_]
15633 -> setarg(4, M, J)
15634 ; true
15635 )
15636 ),
15637 nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-12',
15638 N),
15639 delete_ht(N, k(A, B), D),
15640 nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-1',
15641 O),
15642 delete_ht(O, A, D),
15643 nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-3',
15644 P),
15645 delete_ht(P, C, D),
15646 nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-123',
15647 Q),
15648 delete_ht(Q, k(A, B, C), D)
15649 )
15650 ).
15651spawns___3__1(A, body, B, C) :-
15652 nb_getval('$chr_store_multi_hash_chr_translate____spawns_all___2-12',
15653 D),
15654 lookup_ht(D, k(A, guard), E),
15655 member(F, E),
15656 F=suspension(_, active, _, _),
15657 !,
15658 ( var(C)
15659 -> true
15660 ; arg(2, C, G),
15661 setarg(2, C, removed),
15662 ( G==not_stored_yet
15663 -> true
15664 ; nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-13',
15665 H),
15666 delete_ht(H, k(A, B), C),
15667 arg(4, C, I),
15668 ( var(I)
15669 -> nb_getval('$chr_store_global_ground_chr_translate____spawns___3',
15670 J),
15671 J=[_|K],
15672 b_setval('$chr_store_global_ground_chr_translate____spawns___3',
15673 K),
15674 ( K=[L|_]
15675 -> setarg(4, L, _)
15676 ; true
15677 )
15678 ; I=[_, _|K],
15679 setarg(2, I, K),
15680 ( K=[L|_]
15681 -> setarg(4, L, I)
15682 ; true
15683 )
15684 ),
15685 nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-12',
15686 M),
15687 delete_ht(M, k(A, body), C),
15688 nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-1',
15689 N),
15690 delete_ht(N, A, C),
15691 nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-3',
15692 O),
15693 delete_ht(O, B, C),
15694 nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-123',
15695 P),
15696 delete_ht(P, k(A, body, B), C)
15697 )
15698 ).
15699spawns___3__1(A, B, C, D) :-
15700 nb_getval('$chr_store_multi_hash_chr_translate____spawns_all_triggers___2-12',
15701 E),
15702 lookup_ht(E, k(A, B), F),
15703 member(G, F),
15704 G=suspension(_, active, _, _, _, _),
15705 may_trigger(C),
15706 !,
15707 ( var(D)
15708 -> true
15709 ; arg(2, D, H),
15710 setarg(2, D, removed),
15711 ( H==not_stored_yet
15712 -> true
15713 ; nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-13',
15714 I),
15715 delete_ht(I, k(A, C), D),
15716 arg(4, D, J),
15717 ( var(J)
15718 -> nb_getval('$chr_store_global_ground_chr_translate____spawns___3',
15719 K),
15720 K=[_|L],
15721 b_setval('$chr_store_global_ground_chr_translate____spawns___3',
15722 L),
15723 ( L=[M|_]
15724 -> setarg(4, M, _)
15725 ; true
15726 )
15727 ; J=[_, _|L],
15728 setarg(2, J, L),
15729 ( L=[M|_]
15730 -> setarg(4, M, J)
15731 ; true
15732 )
15733 ),
15734 nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-12',
15735 N),
15736 delete_ht(N, k(A, B), D),
15737 nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-1',
15738 O),
15739 delete_ht(O, A, D),
15740 nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-3',
15741 P),
15742 delete_ht(P, C, D),
15743 nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-123',
15744 Q),
15745 delete_ht(Q, k(A, B, C), D)
15746 )
15747 ).
15748spawns___3__1(A, body, B, C) :-
15749 nb_getval('$chr_store_multi_hash_chr_translate____spawns_all_triggers___2-12',
15750 D),
15751 lookup_ht(D, k(A, guard), E),
15752 member(F, E),
15753 F=suspension(_, active, _, _, _, _),
15754 may_trigger(B),
15755 !,
15756 ( var(C)
15757 -> true
15758 ; arg(2, C, G),
15759 setarg(2, C, removed),
15760 ( G==not_stored_yet
15761 -> true
15762 ; nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-13',
15763 H),
15764 delete_ht(H, k(A, B), C),
15765 arg(4, C, I),
15766 ( var(I)
15767 -> nb_getval('$chr_store_global_ground_chr_translate____spawns___3',
15768 J),
15769 J=[_|K],
15770 b_setval('$chr_store_global_ground_chr_translate____spawns___3',
15771 K),
15772 ( K=[L|_]
15773 -> setarg(4, L, _)
15774 ; true
15775 )
15776 ; I=[_, _|K],
15777 setarg(2, I, K),
15778 ( K=[L|_]
15779 -> setarg(4, L, I)
15780 ; true
15781 )
15782 ),
15783 nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-12',
15784 M),
15785 delete_ht(M, k(A, body), C),
15786 nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-1',
15787 N),
15788 delete_ht(N, A, C),
15789 nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-3',
15790 O),
15791 delete_ht(O, B, C),
15792 nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-123',
15793 P),
15794 delete_ht(P, k(A, body, B), C)
15795 )
15796 ).
15797spawns___3__1(A, B, C, D) :-
15798 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-1', E),
15799 lookup_ht(E, C, F),
15800 ( member(G, F),
15801 G=suspension(_, active, _, _, _, _, H, I, _),
15802 ( nb_getval('$chr_store_multi_hash_chr_translate____spawns_all___2-1',
15803 J),
15804 lookup_ht(J, H, K),
15805 member(L, K),
15806 L=suspension(_, active, _, _),
15807 \+ is_passive(H, I),
15808 !,
15809 ( var(D)
15810 -> true
15811 ; arg(2, D, M),
15812 setarg(2, D, removed),
15813 ( M==not_stored_yet
15814 -> true
15815 ; nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-13',
15816 N),
15817 delete_ht(N, k(A, C), D),
15818 arg(4, D, O),
15819 ( var(O)
15820 -> nb_getval('$chr_store_global_ground_chr_translate____spawns___3',
15821 P),
15822 P=[_|Q],
15823 b_setval('$chr_store_global_ground_chr_translate____spawns___3',
15824 Q),
15825 ( Q=[R|_]
15826 -> setarg(4, R, _)
15827 ; true
15828 )
15829 ; O=[_, _|Q],
15830 setarg(2, O, Q),
15831 ( Q=[R|_]
15832 -> setarg(4, R, O)
15833 ; true
15834 )
15835 ),
15836 nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-12',
15837 S),
15838 delete_ht(S, k(A, B), D),
15839 nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-1',
15840 T),
15841 delete_ht(T, A, D),
15842 nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-3',
15843 U),
15844 delete_ht(U, C, D),
15845 nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-123',
15846 V),
15847 delete_ht(V, k(A, B, C), D)
15848 )
15849 ),
15850 spawns_all(A, B)
15851 ; nb_getval('$chr_store_multi_hash_chr_translate____spawns_all_triggers___2-1',
15852 W),
15853 lookup_ht(W, H, X),
15854 member(Y, X),
15855 Y=suspension(_, active, _, _, _, _),
15856 may_trigger(C),
15857 \+ is_passive(H, I),
15858 !,
15859 ( var(D)
15860 -> true
15861 ; arg(2, D, Z),
15862 setarg(2, D, removed),
15863 ( Z==not_stored_yet
15864 -> true
15865 ; nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-13',
15866 A1),
15867 delete_ht(A1, k(A, C), D),
15868 arg(4, D, B1),
15869 ( var(B1)
15870 -> nb_getval('$chr_store_global_ground_chr_translate____spawns___3',
15871 C1),
15872 C1=[_|D1],
15873 b_setval('$chr_store_global_ground_chr_translate____spawns___3',
15874 D1),
15875 ( D1=[E1|_]
15876 -> setarg(4, E1, _)
15877 ; true
15878 )
15879 ; B1=[_, _|D1],
15880 setarg(2, B1, D1),
15881 ( D1=[E1|_]
15882 -> setarg(4, E1, B1)
15883 ; true
15884 )
15885 ),
15886 nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-12',
15887 F1),
15888 delete_ht(F1, k(A, B), D),
15889 nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-1',
15890 G1),
15891 delete_ht(G1, A, D),
15892 nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-3',
15893 H1),
15894 delete_ht(H1, C, D),
15895 nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-123',
15896 I1),
15897 delete_ht(I1, k(A, B, C), D)
15898 )
15899 ),
15900 spawns_all_triggers(A, B)
15901 )
15902 ; !,
15903 D=suspension(J1, not_stored_yet, t, _, A, B, C),
15904 'chr gen_id'(J1),
15905 spawns___3__1__0__11(F, A, B, C, D)
15906 ).
15907spawns___3__1__0__11([], A, B, C, D) :-
15908 spawns___3__2(A, B, C, D).
15909spawns___3__1__0__11([A|B], C, D, E, F) :-
15910 ( A=suspension(_, active, _, _, G, _, H, I, _),
15911 G==E,
15912 nb_getval('$chr_store_multi_hash_chr_translate____spawns_all_triggers___2-1',
15913 J),
15914 lookup_ht(J, H, K)
15915 -> spawns___3__1__1__11(K,
15916 H,
15917 I,
15918 A,
15919 B,
15920 C,
15921 D,
15922 E,
15923 F)
15924 ; spawns___3__1__0__11(B, C, D, E, F)
15925 ).
15926spawns___3__1__1__11([], _, _, _, A, B, C, D, E) :-
15927 spawns___3__1__0__11(A, B, C, D, E).
15928spawns___3__1__1__11([A|B], C, D, E, F, G, H, I, J) :-
15929 ( A=suspension(_, active, _, _, K, _),
15930 K==C,
15931 L=t(123, A, E, J),
15932 '$novel_production'(A, L),
15933 '$novel_production'(J, L),
15934 \+ may_trigger(I),
15935 \+ is_passive(C, D)
15936 -> '$extend_history'(J, L),
15937 arg(2, J, M),
15938 setarg(2, J, active),
15939 ( M==not_stored_yet
15940 -> nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-13',
15941 N),
15942 insert_ht(N, k(G, I), J),
15943 nb_getval('$chr_store_global_ground_chr_translate____spawns___3',
15944 O),
15945 P=[J|O],
15946 b_setval('$chr_store_global_ground_chr_translate____spawns___3',
15947 P),
15948 ( O=[Q|_]
15949 -> setarg(4, Q, P)
15950 ; true
15951 ),
15952 nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-12',
15953 R),
15954 insert_ht(R, k(G, H), J),
15955 nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-1',
15956 S),
15957 insert_ht(S, G, J),
15958 nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-3',
15959 T),
15960 insert_ht(T, I, J),
15961 nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-123',
15962 U),
15963 insert_ht(U, k(G, H, I), J)
15964 ; true
15965 ),
15966 spawns_all_triggers(G, H),
15967 ( J=suspension(_, active, _, _, _, _, _)
15968 -> setarg(2, J, inactive),
15969 spawns___3__1__1__11(B,
15970 C,
15971 D,
15972 E,
15973 F,
15974 G,
15975 H,
15976 I,
15977 J)
15978 ; true
15979 )
15980 ; spawns___3__1__1__11(B,
15981 C,
15982 D,
15983 E,
15984 F,
15985 G,
15986 H,
15987 I,
15988 J)
15989 ).
15990spawns___3__1(A, B, C, D) :-
15991 D=suspension(E, not_stored_yet, t, _, A, B, C),
15992 'chr gen_id'(E),
15993 spawns___3__2(A, B, C, D).
15994spawns___3__2(A, B, C, D) :-
15995 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-3', E),
15996 lookup_ht(E, A, F),
15997 !,
15998 spawns___3__2__0__12(F, A, B, C, D).
15999spawns___3__2__0__12([], A, B, C, D) :-
16000 spawns___3__3(A, B, C, D).
16001spawns___3__2__0__12([A|B], C, D, E, F) :-
16002 ( A=suspension(_, active, _, _, G, _, H, I, _),
16003 H==C,
16004 nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-3', J),
16005 lookup_ht(J, G, K)
16006 -> spawns___3__2__1__12(K,
16007 G,
16008 I,
16009 A,
16010 B,
16011 C,
16012 D,
16013 E,
16014 F)
16015 ; spawns___3__2__0__12(B, C, D, E, F)
16016 ).
16017spawns___3__2__1__12([], _, _, _, A, B, C, D, E) :-
16018 spawns___3__2__0__12(A, B, C, D, E).
16019spawns___3__2__1__12([A|B], C, D, E, F, G, H, I, J) :-
16020 ( A=suspension(_, active, _, _, K, L, M),
16021 M==C,
16022 N=t(124, J, E, A),
16023 '$novel_production'(J, N),
16024 '$novel_production'(A, N),
16025 K\==G,
16026 C\==I,
16027 \+ is_passive(G, D)
16028 -> '$extend_history'(J, N),
16029 arg(2, J, O),
16030 setarg(2, J, active),
16031 ( O==not_stored_yet
16032 -> nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-13',
16033 P),
16034 insert_ht(P, k(G, I), J),
16035 nb_getval('$chr_store_global_ground_chr_translate____spawns___3',
16036 Q),
16037 R=[J|Q],
16038 b_setval('$chr_store_global_ground_chr_translate____spawns___3',
16039 R),
16040 ( Q=[S|_]
16041 -> setarg(4, S, R)
16042 ; true
16043 ),
16044 nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-12',
16045 T),
16046 insert_ht(T, k(G, H), J),
16047 nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-1',
16048 U),
16049 insert_ht(U, G, J),
16050 nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-3',
16051 V),
16052 insert_ht(V, I, J),
16053 nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-123',
16054 W),
16055 insert_ht(W, k(G, H, I), J)
16056 ; true
16057 ),
16058 spawns(K, L, I),
16059 ( J=suspension(_, active, _, _, _, _, _)
16060 -> setarg(2, J, inactive),
16061 spawns___3__2__1__12(B,
16062 C,
16063 D,
16064 E,
16065 F,
16066 G,
16067 H,
16068 I,
16069 J)
16070 ; true
16071 )
16072 ; spawns___3__2__1__12(B,
16073 C,
16074 D,
16075 E,
16076 F,
16077 G,
16078 H,
16079 I,
16080 J)
16081 ).
16082spawns___3__2(A, B, C, D) :-
16083 spawns___3__3(A, B, C, D).
16084spawns___3__3(A, B, C, D) :-
16085 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-1', E),
16086 lookup_ht(E, C, F),
16087 !,
16088 spawns___3__3__0__13(F, A, B, C, D).
16089spawns___3__3__0__13([], A, B, C, D) :-
16090 spawns___3__4(A, B, C, D).
16091spawns___3__3__0__13([A|B], C, D, E, F) :-
16092 ( A=suspension(_, active, _, _, G, _, H, I, _),
16093 G==E,
16094 nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-1', J),
16095 lookup_ht(J, H, K)
16096 -> spawns___3__3__1__13(K,
16097 H,
16098 I,
16099 A,
16100 B,
16101 C,
16102 D,
16103 E,
16104 F)
16105 ; spawns___3__3__0__13(B, C, D, E, F)
16106 ).
16107spawns___3__3__1__13([], _, _, _, A, B, C, D, E) :-
16108 spawns___3__3__0__13(A, B, C, D, E).
16109spawns___3__3__1__13([A|B], C, D, E, F, G, H, I, J) :-
16110 ( A=suspension(_, active, _, _, K, _, L),
16111 K==C,
16112 M=t(124, A, E, J),
16113 '$novel_production'(A, M),
16114 '$novel_production'(J, M),
16115 G\==C,
16116 I\==L,
16117 \+ is_passive(C, D)
16118 -> '$extend_history'(J, M),
16119 arg(2, J, N),
16120 setarg(2, J, active),
16121 ( N==not_stored_yet
16122 -> nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-13',
16123 O),
16124 insert_ht(O, k(G, I), J),
16125 nb_getval('$chr_store_global_ground_chr_translate____spawns___3',
16126 P),
16127 Q=[J|P],
16128 b_setval('$chr_store_global_ground_chr_translate____spawns___3',
16129 Q),
16130 ( P=[R|_]
16131 -> setarg(4, R, Q)
16132 ; true
16133 ),
16134 nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-12',
16135 S),
16136 insert_ht(S, k(G, H), J),
16137 nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-1',
16138 T),
16139 insert_ht(T, G, J),
16140 nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-3',
16141 U),
16142 insert_ht(U, I, J),
16143 nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-123',
16144 V),
16145 insert_ht(V, k(G, H, I), J)
16146 ; true
16147 ),
16148 spawns(G, H, L),
16149 ( J=suspension(_, active, _, _, _, _, _)
16150 -> setarg(2, J, inactive),
16151 spawns___3__3__1__13(B,
16152 C,
16153 D,
16154 E,
16155 F,
16156 G,
16157 H,
16158 I,
16159 J)
16160 ; true
16161 )
16162 ; spawns___3__3__1__13(B,
16163 C,
16164 D,
16165 E,
16166 F,
16167 G,
16168 H,
16169 I,
16170 J)
16171 ).
16172spawns___3__3(A, B, C, D) :-
16173 spawns___3__4(A, B, C, D).
16174spawns___3__4(A, B, C, D) :-
16175 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-3', E),
16176 lookup_ht(E, A, F),
16177 !,
16178 spawns___3__4__0__14(F, A, B, C, D).
16179spawns___3__4__0__14([], A, B, C, D) :-
16180 spawns___3__5(A, B, C, D).
16181spawns___3__4__0__14([A|B], C, D, E, F) :-
16182 ( A=suspension(_, active, _, _, G, _, H, I, _),
16183 H==C,
16184 nb_getval('$chr_store_global_ground_chr_translate____spawns_all_triggers___2',
16185 J)
16186 -> spawns___3__4__1__14(J,
16187 G,
16188 I,
16189 A,
16190 B,
16191 C,
16192 D,
16193 E,
16194 F)
16195 ; spawns___3__4__0__14(B, C, D, E, F)
16196 ).
16197spawns___3__4__1__14([], _, _, _, A, B, C, D, E) :-
16198 spawns___3__4__0__14(A, B, C, D, E).
16199spawns___3__4__1__14([A|B], C, D, E, F, G, H, I, J) :-
16200 ( A=suspension(_, active, _, _, K, L),
16201 M=t(125, J, E, A),
16202 '$novel_production'(J, M),
16203 '$novel_production'(A, M),
16204 \+ is_passive(G, D),
16205 may_trigger(C),
16206 \+ may_trigger(I)
16207 -> '$extend_history'(J, M),
16208 arg(2, J, N),
16209 setarg(2, J, active),
16210 ( N==not_stored_yet
16211 -> nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-13',
16212 O),
16213 insert_ht(O, k(G, I), J),
16214 nb_getval('$chr_store_global_ground_chr_translate____spawns___3',
16215 P),
16216 Q=[J|P],
16217 b_setval('$chr_store_global_ground_chr_translate____spawns___3',
16218 Q),
16219 ( P=[R|_]
16220 -> setarg(4, R, Q)
16221 ; true
16222 ),
16223 nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-12',
16224 S),
16225 insert_ht(S, k(G, H), J),
16226 nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-1',
16227 T),
16228 insert_ht(T, G, J),
16229 nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-3',
16230 U),
16231 insert_ht(U, I, J),
16232 nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-123',
16233 V),
16234 insert_ht(V, k(G, H, I), J)
16235 ; true
16236 ),
16237 spawns(K, L, I),
16238 ( J=suspension(_, active, _, _, _, _, _)
16239 -> setarg(2, J, inactive),
16240 spawns___3__4__1__14(B,
16241 C,
16242 D,
16243 E,
16244 F,
16245 G,
16246 H,
16247 I,
16248 J)
16249 ; true
16250 )
16251 ; spawns___3__4__1__14(B,
16252 C,
16253 D,
16254 E,
16255 F,
16256 G,
16257 H,
16258 I,
16259 J)
16260 ).
16261spawns___3__4(A, B, C, D) :-
16262 spawns___3__5(A, B, C, D).
16263spawns___3__5(A, B, C, D) :-
16264 arg(2, D, E),
16265 setarg(2, D, active),
16266 ( E==not_stored_yet
16267 -> nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-13',
16268 F),
16269 insert_ht(F, k(A, C), D),
16270 nb_getval('$chr_store_global_ground_chr_translate____spawns___3',
16271 G),
16272 H=[D|G],
16273 b_setval('$chr_store_global_ground_chr_translate____spawns___3', H),
16274 ( G=[I|_]
16275 -> setarg(4, I, H)
16276 ; true
16277 ),
16278 nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-12',
16279 J),
16280 insert_ht(J, k(A, B), D),
16281 nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-1',
16282 K),
16283 insert_ht(K, A, D),
16284 nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-3',
16285 L),
16286 insert_ht(L, C, D),
16287 nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-123',
16288 M),
16289 insert_ht(M, k(A, B, C), D)
16290 ; true
16291 ).
16292spawns_all(A, B) :-
16293 spawns_all___2__0(A, B, _).
16294spawns_all___2__0(A, B, _) :-
16295 nb_getval('$chr_store_multi_hash_chr_translate____spawns_all___2-12',
16296 C),
16297 lookup_ht(C, k(A, B), D),
16298 member(E, D),
16299 E=suspension(_, active, _, _),
16300 !.
16301spawns_all___2__0(A, body, _) :-
16302 nb_getval('$chr_store_multi_hash_chr_translate____spawns_all___2-12',
16303 B),
16304 lookup_ht(B, k(A, guard), C),
16305 member(D, C),
16306 D=suspension(_, active, _, _),
16307 !.
16308spawns_all___2__0(A, guard, B) :-
16309 nb_getval('$chr_store_multi_hash_chr_translate____spawns_all___2-12',
16310 C),
16311 lookup_ht(C, k(A, body), D),
16312 !,
16313 spawns_all___2__0__0__4(D, A, guard, B).
16314spawns_all___2__0__0__4([], A, B, C) :-
16315 spawns_all___2__1(A, B, C).
16316spawns_all___2__0__0__4([A|B], C, D, E) :-
16317 ( A=suspension(_, active, F, G),
16318 F==C,
16319 G=body
16320 -> setarg(2, A, removed),
16321 ( nb_getval('$chr_store_multi_hash_chr_translate____spawns_all___2-1',
16322 H),
16323 delete_ht(H, C, A)
16324 ),
16325 nb_getval('$chr_store_multi_hash_chr_translate____spawns_all___2-12',
16326 I),
16327 delete_ht(I, k(C, body), A),
16328 spawns_all___2__0__0__4(B, C, D, E)
16329 ; spawns_all___2__0__0__4(B, C, D, E)
16330 ).
16331spawns_all___2__0(A, B, C) :-
16332 spawns_all___2__1(A, B, C).
16333spawns_all___2__1(A, B, C) :-
16334 nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-12', D),
16335 lookup_ht(D, k(A, B), E),
16336 !,
16337 spawns_all___2__1__0__5(E, A, B, C).
16338spawns_all___2__1__0__5([], A, B, C) :-
16339 spawns_all___2__2(A, B, C).
16340spawns_all___2__1__0__5([A|B], C, D, E) :-
16341 ( A=suspension(_, active, _, _, F, G, H),
16342 F==C,
16343 G==D
16344 -> setarg(2, A, removed),
16345 ( nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-13',
16346 I),
16347 delete_ht(I, k(C, H), A)
16348 ),
16349 ( arg(4, A, J),
16350 ( var(J)
16351 -> nb_getval('$chr_store_global_ground_chr_translate____spawns___3',
16352 K),
16353 K=[_|L],
16354 b_setval('$chr_store_global_ground_chr_translate____spawns___3',
16355 L),
16356 ( L=[M|_]
16357 -> setarg(4, M, _)
16358 ; true
16359 )
16360 ; J=[_, _|L],
16361 setarg(2, J, L),
16362 ( L=[M|_]
16363 -> setarg(4, M, J)
16364 ; true
16365 )
16366 )
16367 ),
16368 ( nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-12',
16369 N),
16370 delete_ht(N, k(C, D), A)
16371 ),
16372 ( nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-1',
16373 O),
16374 delete_ht(O, C, A)
16375 ),
16376 ( nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-3',
16377 P),
16378 delete_ht(P, H, A)
16379 ),
16380 nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-123',
16381 Q),
16382 delete_ht(Q, k(C, D, H), A),
16383 spawns_all___2__1__0__5(B, C, D, E)
16384 ; spawns_all___2__1__0__5(B, C, D, E)
16385 ).
16386spawns_all___2__1(A, B, C) :-
16387 spawns_all___2__2(A, B, C).
16388spawns_all___2__2(A, guard, B) :-
16389 nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-12', C),
16390 lookup_ht(C, k(A, body), D),
16391 !,
16392 spawns_all___2__2__0__6(D, A, guard, B).
16393spawns_all___2__2__0__6([], A, B, C) :-
16394 spawns_all___2__3(A, B, C).
16395spawns_all___2__2__0__6([A|B], C, D, E) :-
16396 ( A=suspension(_, active, _, _, F, G, H),
16397 F==C,
16398 G=body
16399 -> setarg(2, A, removed),
16400 ( nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-13',
16401 I),
16402 delete_ht(I, k(C, H), A)
16403 ),
16404 ( arg(4, A, J),
16405 ( var(J)
16406 -> nb_getval('$chr_store_global_ground_chr_translate____spawns___3',
16407 K),
16408 K=[_|L],
16409 b_setval('$chr_store_global_ground_chr_translate____spawns___3',
16410 L),
16411 ( L=[M|_]
16412 -> setarg(4, M, _)
16413 ; true
16414 )
16415 ; J=[_, _|L],
16416 setarg(2, J, L),
16417 ( L=[M|_]
16418 -> setarg(4, M, J)
16419 ; true
16420 )
16421 )
16422 ),
16423 ( nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-12',
16424 N),
16425 delete_ht(N, k(C, body), A)
16426 ),
16427 ( nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-1',
16428 O),
16429 delete_ht(O, C, A)
16430 ),
16431 ( nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-3',
16432 P),
16433 delete_ht(P, H, A)
16434 ),
16435 nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-123',
16436 Q),
16437 delete_ht(Q, k(C, body, H), A),
16438 spawns_all___2__2__0__6(B, C, D, E)
16439 ; spawns_all___2__2__0__6(B, C, D, E)
16440 ).
16441spawns_all___2__2(A, B, C) :-
16442 spawns_all___2__3(A, B, C).
16443spawns_all___2__3(A, B, C) :-
16444 nb_getval('$chr_store_multi_hash_chr_translate____spawns_all_triggers___2-12',
16445 D),
16446 lookup_ht(D, k(A, B), E),
16447 !,
16448 spawns_all___2__3__0__7(E, A, B, C).
16449spawns_all___2__3__0__7([], A, B, C) :-
16450 spawns_all___2__4(A, B, C).
16451spawns_all___2__3__0__7([A|B], C, D, E) :-
16452 ( A=suspension(_, active, _, _, F, G),
16453 F==C,
16454 G==D
16455 -> setarg(2, A, removed),
16456 ( arg(4, A, H),
16457 ( var(H)
16458 -> nb_getval('$chr_store_global_ground_chr_translate____spawns_all_triggers___2',
16459 I),
16460 I=[_|J],
16461 b_setval('$chr_store_global_ground_chr_translate____spawns_all_triggers___2',
16462 J),
16463 ( J=[K|_]
16464 -> setarg(4, K, _)
16465 ; true
16466 )
16467 ; H=[_, _|J],
16468 setarg(2, H, J),
16469 ( J=[K|_]
16470 -> setarg(4, K, H)
16471 ; true
16472 )
16473 )
16474 ),
16475 ( nb_getval('$chr_store_multi_hash_chr_translate____spawns_all_triggers___2-1',
16476 L),
16477 delete_ht(L, C, A)
16478 ),
16479 nb_getval('$chr_store_multi_hash_chr_translate____spawns_all_triggers___2-12',
16480 M),
16481 delete_ht(M, k(C, D), A),
16482 spawns_all___2__3__0__7(B, C, D, E)
16483 ; spawns_all___2__3__0__7(B, C, D, E)
16484 ).
16485spawns_all___2__3(A, B, C) :-
16486 spawns_all___2__4(A, B, C).
16487spawns_all___2__4(A, guard, B) :-
16488 nb_getval('$chr_store_multi_hash_chr_translate____spawns_all_triggers___2-12',
16489 C),
16490 lookup_ht(C, k(A, body), D),
16491 !,
16492 spawns_all___2__4__0__8(D, A, guard, B).
16493spawns_all___2__4__0__8([], A, B, C) :-
16494 spawns_all___2__5(A, B, C).
16495spawns_all___2__4__0__8([A|B], C, D, E) :-
16496 ( A=suspension(_, active, _, _, F, G),
16497 F==C,
16498 G=body
16499 -> setarg(2, A, removed),
16500 ( arg(4, A, H),
16501 ( var(H)
16502 -> nb_getval('$chr_store_global_ground_chr_translate____spawns_all_triggers___2',
16503 I),
16504 I=[_|J],
16505 b_setval('$chr_store_global_ground_chr_translate____spawns_all_triggers___2',
16506 J),
16507 ( J=[K|_]
16508 -> setarg(4, K, _)
16509 ; true
16510 )
16511 ; H=[_, _|J],
16512 setarg(2, H, J),
16513 ( J=[K|_]
16514 -> setarg(4, K, H)
16515 ; true
16516 )
16517 )
16518 ),
16519 ( nb_getval('$chr_store_multi_hash_chr_translate____spawns_all_triggers___2-1',
16520 L),
16521 delete_ht(L, C, A)
16522 ),
16523 nb_getval('$chr_store_multi_hash_chr_translate____spawns_all_triggers___2-12',
16524 M),
16525 delete_ht(M, k(C, body), A),
16526 spawns_all___2__4__0__8(B, C, D, E)
16527 ; spawns_all___2__4__0__8(B, C, D, E)
16528 ).
16529spawns_all___2__4(A, B, C) :-
16530 spawns_all___2__5(A, B, C).
16531spawns_all___2__5(A, B, C) :-
16532 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-3', D),
16533 lookup_ht(D, A, E),
16534 !,
16535 C=suspension(F, not_stored_yet, A, B),
16536 'chr gen_id'(F),
16537 spawns_all___2__5__0__9(E, A, B, C).
16538spawns_all___2__5__0__9([], A, B, C) :-
16539 spawns_all___2__6(A, B, C).
16540spawns_all___2__5__0__9([A|B], C, D, E) :-
16541 ( A=suspension(_, active, _, _, F, _, G, H, _),
16542 G==C,
16543 nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-3', I),
16544 lookup_ht(I, F, J)
16545 -> spawns_all___2__5__1__9(J,
16546 F,
16547 H,
16548 A,
16549 B,
16550 C,
16551 D,
16552 E)
16553 ; spawns_all___2__5__0__9(B, C, D, E)
16554 ).
16555spawns_all___2__5__1__9([], _, _, _, A, B, C, D) :-
16556 spawns_all___2__5__0__9(A, B, C, D).
16557spawns_all___2__5__1__9([A|B], C, D, E, F, G, H, I) :-
16558 ( A=suspension(_, active, _, _, J, K, L),
16559 L==C,
16560 \+ is_passive(G, D)
16561 -> setarg(2, A, removed),
16562 ( nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-13',
16563 M),
16564 delete_ht(M, k(J, C), A)
16565 ),
16566 ( arg(4, A, N),
16567 ( var(N)
16568 -> nb_getval('$chr_store_global_ground_chr_translate____spawns___3',
16569 O),
16570 O=[_|P],
16571 b_setval('$chr_store_global_ground_chr_translate____spawns___3',
16572 P),
16573 ( P=[Q|_]
16574 -> setarg(4, Q, _)
16575 ; true
16576 )
16577 ; N=[_, _|P],
16578 setarg(2, N, P),
16579 ( P=[Q|_]
16580 -> setarg(4, Q, N)
16581 ; true
16582 )
16583 )
16584 ),
16585 ( nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-12',
16586 R),
16587 delete_ht(R, k(J, K), A)
16588 ),
16589 ( nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-1',
16590 S),
16591 delete_ht(S, J, A)
16592 ),
16593 ( nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-3',
16594 T),
16595 delete_ht(T, C, A)
16596 ),
16597 nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-123',
16598 U),
16599 delete_ht(U, k(J, K, C), A),
16600 arg(2, I, V),
16601 setarg(2, I, active),
16602 ( V==not_stored_yet
16603 -> nb_getval('$chr_store_multi_hash_chr_translate____spawns_all___2-1',
16604 W),
16605 insert_ht(W, G, I),
16606 nb_getval('$chr_store_multi_hash_chr_translate____spawns_all___2-12',
16607 X),
16608 insert_ht(X, k(G, H), I)
16609 ; true
16610 ),
16611 spawns_all(J, K),
16612 ( I=suspension(_, active, _, _)
16613 -> setarg(2, I, inactive),
16614 spawns_all___2__5__1__9(B,
16615 C,
16616 D,
16617 E,
16618 F,
16619 G,
16620 H,
16621 I)
16622 ; true
16623 )
16624 ; spawns_all___2__5__1__9(B,
16625 C,
16626 D,
16627 E,
16628 F,
16629 G,
16630 H,
16631 I)
16632 ).
16633spawns_all___2__5(A, B, C) :-
16634 C=suspension(D, not_stored_yet, A, B),
16635 'chr gen_id'(D),
16636 spawns_all___2__6(A, B, C).
16637spawns_all___2__6(A, B, C) :-
16638 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-3', D),
16639 lookup_ht(D, A, E),
16640 !,
16641 spawns_all___2__6__0__10(E, A, B, C).
16642spawns_all___2__6__0__10([], A, B, C) :-
16643 spawns_all___2__7(A, B, C).
16644spawns_all___2__6__0__10([A|B], C, D, E) :-
16645 ( A=suspension(_, active, _, _, F, _, G, H, _),
16646 G==C,
16647 \+ \+ spawns_all_triggers_implies_spawns_all,
16648 \+ is_passive(C, H),
16649 may_trigger(F)
16650 -> arg(2, E, I),
16651 setarg(2, E, active),
16652 ( I==not_stored_yet
16653 -> nb_getval('$chr_store_multi_hash_chr_translate____spawns_all___2-1',
16654 J),
16655 insert_ht(J, C, E),
16656 nb_getval('$chr_store_multi_hash_chr_translate____spawns_all___2-12',
16657 K),
16658 insert_ht(K, k(C, D), E)
16659 ; true
16660 ),
16661 spawns_all_triggers_implies_spawns_all,
16662 ( E=suspension(_, active, _, _)
16663 -> setarg(2, E, inactive),
16664 spawns_all___2__6__0__10(B, C, D, E)
16665 ; true
16666 )
16667 ; spawns_all___2__6__0__10(B, C, D, E)
16668 ).
16669spawns_all___2__6(A, B, C) :-
16670 spawns_all___2__7(A, B, C).
16671spawns_all___2__7(A, B, C) :-
16672 arg(2, C, D),
16673 setarg(2, C, active),
16674 ( D==not_stored_yet
16675 -> nb_getval('$chr_store_multi_hash_chr_translate____spawns_all___2-1',
16676 E),
16677 insert_ht(E, A, C),
16678 nb_getval('$chr_store_multi_hash_chr_translate____spawns_all___2-12',
16679 F),
16680 insert_ht(F, k(A, B), C)
16681 ; true
16682 ).
16683spawns_all_triggers(A, B) :-
16684 spawns_all_triggers___2__0(A, B, _).
16685spawns_all_triggers___2__0(A, B, _) :-
16686 nb_getval('$chr_store_multi_hash_chr_translate____spawns_all_triggers___2-12',
16687 C),
16688 lookup_ht(C, k(A, B), D),
16689 member(E, D),
16690 E=suspension(_, active, _, _, _, _),
16691 !.
16692spawns_all_triggers___2__0(A, body, _) :-
16693 nb_getval('$chr_store_multi_hash_chr_translate____spawns_all_triggers___2-12',
16694 B),
16695 lookup_ht(B, k(A, guard), C),
16696 member(D, C),
16697 D=suspension(_, active, _, _, _, _),
16698 !.
16699spawns_all_triggers___2__0(A, guard, B) :-
16700 nb_getval('$chr_store_multi_hash_chr_translate____spawns_all_triggers___2-12',
16701 C),
16702 lookup_ht(C, k(A, body), D),
16703 !,
16704 spawns_all_triggers___2__0__0__4(D, A, guard, B).
16705spawns_all_triggers___2__0__0__4([], A, B, C) :-
16706 spawns_all_triggers___2__1(A, B, C).
16707spawns_all_triggers___2__0__0__4([A|B], C, D, E) :-
16708 ( A=suspension(_, active, _, _, F, G),
16709 F==C,
16710 G=body
16711 -> setarg(2, A, removed),
16712 ( arg(4, A, H),
16713 ( var(H)
16714 -> nb_getval('$chr_store_global_ground_chr_translate____spawns_all_triggers___2',
16715 I),
16716 I=[_|J],
16717 b_setval('$chr_store_global_ground_chr_translate____spawns_all_triggers___2',
16718 J),
16719 ( J=[K|_]
16720 -> setarg(4, K, _)
16721 ; true
16722 )
16723 ; H=[_, _|J],
16724 setarg(2, H, J),
16725 ( J=[K|_]
16726 -> setarg(4, K, H)
16727 ; true
16728 )
16729 )
16730 ),
16731 ( nb_getval('$chr_store_multi_hash_chr_translate____spawns_all_triggers___2-1',
16732 L),
16733 delete_ht(L, C, A)
16734 ),
16735 nb_getval('$chr_store_multi_hash_chr_translate____spawns_all_triggers___2-12',
16736 M),
16737 delete_ht(M, k(C, body), A),
16738 spawns_all_triggers___2__0__0__4(B, C, D, E)
16739 ; spawns_all_triggers___2__0__0__4(B, C, D, E)
16740 ).
16741spawns_all_triggers___2__0(A, B, C) :-
16742 spawns_all_triggers___2__1(A, B, C).
16743spawns_all_triggers___2__1(A, B, C) :-
16744 nb_getval('$chr_store_multi_hash_chr_translate____spawns_all___2-12',
16745 D),
16746 lookup_ht(D, k(A, B), E),
16747 member(F, E),
16748 F=suspension(_, active, _, _),
16749 !,
16750 ( var(C)
16751 -> true
16752 ; arg(2, C, G),
16753 setarg(2, C, removed),
16754 ( G==not_stored_yet
16755 -> true
16756 ; arg(4, C, H),
16757 ( var(H)
16758 -> nb_getval('$chr_store_global_ground_chr_translate____spawns_all_triggers___2',
16759 I),
16760 I=[_|J],
16761 b_setval('$chr_store_global_ground_chr_translate____spawns_all_triggers___2',
16762 J),
16763 ( J=[K|_]
16764 -> setarg(4, K, _)
16765 ; true
16766 )
16767 ; H=[_, _|J],
16768 setarg(2, H, J),
16769 ( J=[K|_]
16770 -> setarg(4, K, H)
16771 ; true
16772 )
16773 ),
16774 nb_getval('$chr_store_multi_hash_chr_translate____spawns_all_triggers___2-1',
16775 L),
16776 delete_ht(L, A, C),
16777 nb_getval('$chr_store_multi_hash_chr_translate____spawns_all_triggers___2-12',
16778 M),
16779 delete_ht(M, k(A, B), C)
16780 )
16781 ).
16782spawns_all_triggers___2__1(A, body, B) :-
16783 nb_getval('$chr_store_multi_hash_chr_translate____spawns_all___2-12',
16784 C),
16785 lookup_ht(C, k(A, guard), D),
16786 member(E, D),
16787 E=suspension(_, active, _, _),
16788 !,
16789 ( var(B)
16790 -> true
16791 ; arg(2, B, F),
16792 setarg(2, B, removed),
16793 ( F==not_stored_yet
16794 -> true
16795 ; arg(4, B, G),
16796 ( var(G)
16797 -> nb_getval('$chr_store_global_ground_chr_translate____spawns_all_triggers___2',
16798 H),
16799 H=[_|I],
16800 b_setval('$chr_store_global_ground_chr_translate____spawns_all_triggers___2',
16801 I),
16802 ( I=[J|_]
16803 -> setarg(4, J, _)
16804 ; true
16805 )
16806 ; G=[_, _|I],
16807 setarg(2, G, I),
16808 ( I=[J|_]
16809 -> setarg(4, J, G)
16810 ; true
16811 )
16812 ),
16813 nb_getval('$chr_store_multi_hash_chr_translate____spawns_all_triggers___2-1',
16814 K),
16815 delete_ht(K, A, B),
16816 nb_getval('$chr_store_multi_hash_chr_translate____spawns_all_triggers___2-12',
16817 L),
16818 delete_ht(L, k(A, body), B)
16819 )
16820 ).
16821spawns_all_triggers___2__1(A, B, C) :-
16822 nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-12', D),
16823 lookup_ht(D, k(A, B), E),
16824 !,
16825 spawns_all_triggers___2__1__0__7(E, A, B, C).
16826spawns_all_triggers___2__1__0__7([], A, B, C) :-
16827 spawns_all_triggers___2__2(A, B, C).
16828spawns_all_triggers___2__1__0__7([A|B], C, D, E) :-
16829 ( A=suspension(_, active, _, _, F, G, H),
16830 F==C,
16831 G==D,
16832 may_trigger(H)
16833 -> setarg(2, A, removed),
16834 ( nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-13',
16835 I),
16836 delete_ht(I, k(C, H), A)
16837 ),
16838 ( arg(4, A, J),
16839 ( var(J)
16840 -> nb_getval('$chr_store_global_ground_chr_translate____spawns___3',
16841 K),
16842 K=[_|L],
16843 b_setval('$chr_store_global_ground_chr_translate____spawns___3',
16844 L),
16845 ( L=[M|_]
16846 -> setarg(4, M, _)
16847 ; true
16848 )
16849 ; J=[_, _|L],
16850 setarg(2, J, L),
16851 ( L=[M|_]
16852 -> setarg(4, M, J)
16853 ; true
16854 )
16855 )
16856 ),
16857 ( nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-12',
16858 N),
16859 delete_ht(N, k(C, D), A)
16860 ),
16861 ( nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-1',
16862 O),
16863 delete_ht(O, C, A)
16864 ),
16865 ( nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-3',
16866 P),
16867 delete_ht(P, H, A)
16868 ),
16869 nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-123',
16870 Q),
16871 delete_ht(Q, k(C, D, H), A),
16872 spawns_all_triggers___2__1__0__7(B, C, D, E)
16873 ; spawns_all_triggers___2__1__0__7(B, C, D, E)
16874 ).
16875spawns_all_triggers___2__1(A, B, C) :-
16876 spawns_all_triggers___2__2(A, B, C).
16877spawns_all_triggers___2__2(A, guard, B) :-
16878 nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-12', C),
16879 lookup_ht(C, k(A, body), D),
16880 !,
16881 spawns_all_triggers___2__2__0__8(D, A, guard, B).
16882spawns_all_triggers___2__2__0__8([], A, B, C) :-
16883 spawns_all_triggers___2__3(A, B, C).
16884spawns_all_triggers___2__2__0__8([A|B], C, D, E) :-
16885 ( A=suspension(_, active, _, _, F, G, H),
16886 F==C,
16887 G=body,
16888 may_trigger(H)
16889 -> setarg(2, A, removed),
16890 ( nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-13',
16891 I),
16892 delete_ht(I, k(C, H), A)
16893 ),
16894 ( arg(4, A, J),
16895 ( var(J)
16896 -> nb_getval('$chr_store_global_ground_chr_translate____spawns___3',
16897 K),
16898 K=[_|L],
16899 b_setval('$chr_store_global_ground_chr_translate____spawns___3',
16900 L),
16901 ( L=[M|_]
16902 -> setarg(4, M, _)
16903 ; true
16904 )
16905 ; J=[_, _|L],
16906 setarg(2, J, L),
16907 ( L=[M|_]
16908 -> setarg(4, M, J)
16909 ; true
16910 )
16911 )
16912 ),
16913 ( nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-12',
16914 N),
16915 delete_ht(N, k(C, body), A)
16916 ),
16917 ( nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-1',
16918 O),
16919 delete_ht(O, C, A)
16920 ),
16921 ( nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-3',
16922 P),
16923 delete_ht(P, H, A)
16924 ),
16925 nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-123',
16926 Q),
16927 delete_ht(Q, k(C, body, H), A),
16928 spawns_all_triggers___2__2__0__8(B, C, D, E)
16929 ; spawns_all_triggers___2__2__0__8(B, C, D, E)
16930 ).
16931spawns_all_triggers___2__2(A, B, C) :-
16932 spawns_all_triggers___2__3(A, B, C).
16933spawns_all_triggers___2__3(A, B, C) :-
16934 nb_getval('$chr_store_global_ground_chr_translate____spawns_all_triggers_implies_spawns_all___0',
16935 D),
16936 member(E, D),
16937 E=suspension(_, active, _),
16938 !,
16939 ( var(C)
16940 -> true
16941 ; arg(2, C, F),
16942 setarg(2, C, removed),
16943 ( F==not_stored_yet
16944 -> true
16945 ; arg(4, C, G),
16946 ( var(G)
16947 -> nb_getval('$chr_store_global_ground_chr_translate____spawns_all_triggers___2',
16948 H),
16949 H=[_|I],
16950 b_setval('$chr_store_global_ground_chr_translate____spawns_all_triggers___2',
16951 I),
16952 ( I=[J|_]
16953 -> setarg(4, J, _)
16954 ; true
16955 )
16956 ; G=[_, _|I],
16957 setarg(2, G, I),
16958 ( I=[J|_]
16959 -> setarg(4, J, G)
16960 ; true
16961 )
16962 ),
16963 nb_getval('$chr_store_multi_hash_chr_translate____spawns_all_triggers___2-1',
16964 K),
16965 delete_ht(K, A, C),
16966 nb_getval('$chr_store_multi_hash_chr_translate____spawns_all_triggers___2-12',
16967 L),
16968 delete_ht(L, k(A, B), C)
16969 )
16970 ),
16971 spawns_all(A, B).
16972spawns_all_triggers___2__3(A, B, C) :-
16973 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-3', D),
16974 lookup_ht(D, A, E),
16975 !,
16976 C=suspension(F, not_stored_yet, t, _, A, B),
16977 'chr gen_id'(F),
16978 spawns_all_triggers___2__3__0__10(E, A, B, C).
16979spawns_all_triggers___2__3__0__10([], A, B, C) :-
16980 spawns_all_triggers___2__4(A, B, C).
16981spawns_all_triggers___2__3__0__10([A|B], C, D, E) :-
16982 ( A=suspension(_, active, _, _, F, _, G, H, _),
16983 G==C,
16984 nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-3', I),
16985 lookup_ht(I, F, J)
16986 -> spawns_all_triggers___2__3__1__10(J,
16987 F,
16988 H,
16989 A,
16990 B,
16991 C,
16992 D,
16993 E)
16994 ; spawns_all_triggers___2__3__0__10(B, C, D, E)
16995 ).
16996spawns_all_triggers___2__3__1__10([], _, _, _, A, B, C, D) :-
16997 spawns_all_triggers___2__3__0__10(A, B, C, D).
16998spawns_all_triggers___2__3__1__10([A|B], C, D, E, F, G, H, I) :-
16999 ( A=suspension(_, active, _, _, J, K, L),
17000 L==C,
17001 may_trigger(C),
17002 \+ is_passive(G, D)
17003 -> setarg(2, A, removed),
17004 ( nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-13',
17005 M),
17006 delete_ht(M, k(J, C), A)
17007 ),
17008 ( arg(4, A, N),
17009 ( var(N)
17010 -> nb_getval('$chr_store_global_ground_chr_translate____spawns___3',
17011 O),
17012 O=[_|P],
17013 b_setval('$chr_store_global_ground_chr_translate____spawns___3',
17014 P),
17015 ( P=[Q|_]
17016 -> setarg(4, Q, _)
17017 ; true
17018 )
17019 ; N=[_, _|P],
17020 setarg(2, N, P),
17021 ( P=[Q|_]
17022 -> setarg(4, Q, N)
17023 ; true
17024 )
17025 )
17026 ),
17027 ( nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-12',
17028 R),
17029 delete_ht(R, k(J, K), A)
17030 ),
17031 ( nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-1',
17032 S),
17033 delete_ht(S, J, A)
17034 ),
17035 ( nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-3',
17036 T),
17037 delete_ht(T, C, A)
17038 ),
17039 nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-123',
17040 U),
17041 delete_ht(U, k(J, K, C), A),
17042 arg(2, I, V),
17043 setarg(2, I, active),
17044 ( V==not_stored_yet
17045 -> nb_getval('$chr_store_global_ground_chr_translate____spawns_all_triggers___2',
17046 W),
17047 X=[I|W],
17048 b_setval('$chr_store_global_ground_chr_translate____spawns_all_triggers___2',
17049 X),
17050 ( W=[Y|_]
17051 -> setarg(4, Y, X)
17052 ; true
17053 ),
17054 nb_getval('$chr_store_multi_hash_chr_translate____spawns_all_triggers___2-1',
17055 Z),
17056 insert_ht(Z, G, I),
17057 nb_getval('$chr_store_multi_hash_chr_translate____spawns_all_triggers___2-12',
17058 A1),
17059 insert_ht(A1, k(G, H), I)
17060 ; true
17061 ),
17062 spawns_all_triggers(J, K),
17063 ( I=suspension(_, active, _, _, _, _)
17064 -> setarg(2, I, inactive),
17065 spawns_all_triggers___2__3__1__10(B,
17066 C,
17067 D,
17068 E,
17069 F,
17070 G,
17071 H,
17072 I)
17073 ; true
17074 )
17075 ; spawns_all_triggers___2__3__1__10(B,
17076 C,
17077 D,
17078 E,
17079 F,
17080 G,
17081 H,
17082 I)
17083 ).
17084spawns_all_triggers___2__3(A, B, C) :-
17085 C=suspension(D, not_stored_yet, t, _, A, B),
17086 'chr gen_id'(D),
17087 spawns_all_triggers___2__4(A, B, C).
17088spawns_all_triggers___2__4(A, B, C) :-
17089 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-3', D),
17090 lookup_ht(D, A, E),
17091 !,
17092 spawns_all_triggers___2__4__0__11(E, A, B, C).
17093spawns_all_triggers___2__4__0__11([], A, B, C) :-
17094 spawns_all_triggers___2__5(A, B, C).
17095spawns_all_triggers___2__4__0__11([A|B], C, D, E) :-
17096 ( A=suspension(_, active, _, _, F, _, G, H, _),
17097 G==C,
17098 nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-3', I),
17099 lookup_ht(I, F, J)
17100 -> spawns_all_triggers___2__4__1__11(J,
17101 F,
17102 H,
17103 A,
17104 B,
17105 C,
17106 D,
17107 E)
17108 ; spawns_all_triggers___2__4__0__11(B, C, D, E)
17109 ).
17110spawns_all_triggers___2__4__1__11([], _, _, _, A, B, C, D) :-
17111 spawns_all_triggers___2__4__0__11(A, B, C, D).
17112spawns_all_triggers___2__4__1__11([A|B], C, D, E, F, G, H, I) :-
17113 ( A=suspension(_, active, _, _, J, K, L),
17114 L==C,
17115 M=t(123, I, E, A),
17116 '$novel_production'(I, M),
17117 '$novel_production'(A, M),
17118 \+ may_trigger(C),
17119 \+ is_passive(G, D)
17120 -> '$extend_history'(I, M),
17121 arg(2, I, N),
17122 setarg(2, I, active),
17123 ( N==not_stored_yet
17124 -> nb_getval('$chr_store_global_ground_chr_translate____spawns_all_triggers___2',
17125 O),
17126 P=[I|O],
17127 b_setval('$chr_store_global_ground_chr_translate____spawns_all_triggers___2',
17128 P),
17129 ( O=[Q|_]
17130 -> setarg(4, Q, P)
17131 ; true
17132 ),
17133 nb_getval('$chr_store_multi_hash_chr_translate____spawns_all_triggers___2-1',
17134 R),
17135 insert_ht(R, G, I),
17136 nb_getval('$chr_store_multi_hash_chr_translate____spawns_all_triggers___2-12',
17137 S),
17138 insert_ht(S, k(G, H), I)
17139 ; true
17140 ),
17141 spawns_all_triggers(J, K),
17142 ( I=suspension(_, active, _, _, _, _)
17143 -> setarg(2, I, inactive),
17144 spawns_all_triggers___2__4__1__11(B,
17145 C,
17146 D,
17147 E,
17148 F,
17149 G,
17150 H,
17151 I)
17152 ; true
17153 )
17154 ; spawns_all_triggers___2__4__1__11(B,
17155 C,
17156 D,
17157 E,
17158 F,
17159 G,
17160 H,
17161 I)
17162 ).
17163spawns_all_triggers___2__4(A, B, C) :-
17164 spawns_all_triggers___2__5(A, B, C).
17165spawns_all_triggers___2__5(A, B, C) :-
17166 nb_getval('$chr_store_global_ground_chr_translate____spawns___3', D),
17167 !,
17168 spawns_all_triggers___2__5__0__12(D, A, B, C).
17169spawns_all_triggers___2__5__0__12([], A, B, C) :-
17170 spawns_all_triggers___2__6(A, B, C).
17171spawns_all_triggers___2__5__0__12([A|B], C, D, E) :-
17172 ( A=suspension(_, active, _, _, F, _, G),
17173 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-3',
17174 H),
17175 lookup_ht(H, F, I)
17176 -> spawns_all_triggers___2__5__1__12(I,
17177 F,
17178 G,
17179 A,
17180 B,
17181 C,
17182 D,
17183 E)
17184 ; spawns_all_triggers___2__5__0__12(B, C, D, E)
17185 ).
17186spawns_all_triggers___2__5__1__12([], _, _, _, A, B, C, D) :-
17187 spawns_all_triggers___2__5__0__12(A, B, C, D).
17188spawns_all_triggers___2__5__1__12([A|B], C, D, E, F, G, H, I) :-
17189 ( A=suspension(_, active, _, _, J, _, K, L, _),
17190 K==C,
17191 M=t(125, E, A, I),
17192 '$novel_production'(E, M),
17193 '$novel_production'(I, M),
17194 \+ is_passive(C, L),
17195 may_trigger(J),
17196 \+ may_trigger(D)
17197 -> '$extend_history'(I, M),
17198 arg(2, I, N),
17199 setarg(2, I, active),
17200 ( N==not_stored_yet
17201 -> nb_getval('$chr_store_global_ground_chr_translate____spawns_all_triggers___2',
17202 O),
17203 P=[I|O],
17204 b_setval('$chr_store_global_ground_chr_translate____spawns_all_triggers___2',
17205 P),
17206 ( O=[Q|_]
17207 -> setarg(4, Q, P)
17208 ; true
17209 ),
17210 nb_getval('$chr_store_multi_hash_chr_translate____spawns_all_triggers___2-1',
17211 R),
17212 insert_ht(R, G, I),
17213 nb_getval('$chr_store_multi_hash_chr_translate____spawns_all_triggers___2-12',
17214 S),
17215 insert_ht(S, k(G, H), I)
17216 ; true
17217 ),
17218 spawns(G, H, D),
17219 ( I=suspension(_, active, _, _, _, _)
17220 -> setarg(2, I, inactive),
17221 spawns_all_triggers___2__5__1__12(B,
17222 C,
17223 D,
17224 E,
17225 F,
17226 G,
17227 H,
17228 I)
17229 ; true
17230 )
17231 ; spawns_all_triggers___2__5__1__12(B,
17232 C,
17233 D,
17234 E,
17235 F,
17236 G,
17237 H,
17238 I)
17239 ).
17240spawns_all_triggers___2__5(A, B, C) :-
17241 spawns_all_triggers___2__6(A, B, C).
17242spawns_all_triggers___2__6(A, B, C) :-
17243 arg(2, C, D),
17244 setarg(2, C, active),
17245 ( D==not_stored_yet
17246 -> nb_getval('$chr_store_global_ground_chr_translate____spawns_all_triggers___2',
17247 E),
17248 F=[C|E],
17249 b_setval('$chr_store_global_ground_chr_translate____spawns_all_triggers___2',
17250 F),
17251 ( E=[G|_]
17252 -> setarg(4, G, F)
17253 ; true
17254 ),
17255 nb_getval('$chr_store_multi_hash_chr_translate____spawns_all_triggers___2-1',
17256 H),
17257 insert_ht(H, A, C),
17258 nb_getval('$chr_store_multi_hash_chr_translate____spawns_all_triggers___2-12',
17259 I),
17260 insert_ht(I, k(A, B), C)
17261 ; true
17262 ).
17263spawns_all_triggers_implies_spawns_all :-
17264 spawns_all_triggers_implies_spawns_all___0__0(_).
17265spawns_all_triggers_implies_spawns_all___0__0(_) :-
17266 nb_getval('$chr_store_global_ground_chr_translate____spawns_all_triggers_implies_spawns_all___0',
17267 A),
17268 member(B, A),
17269 B=suspension(_, active, _),
17270 !,
17271 setarg(2, B, removed),
17272 arg(3, B, C),
17273 ( var(C)
17274 -> nb_getval('$chr_store_global_ground_chr_translate____spawns_all_triggers_implies_spawns_all___0',
17275 D),
17276 D=[_|E],
17277 b_setval('$chr_store_global_ground_chr_translate____spawns_all_triggers_implies_spawns_all___0',
17278 E),
17279 ( E=[F|_]
17280 -> setarg(3, F, _)
17281 ; true
17282 )
17283 ; C=[_, _|E],
17284 setarg(2, C, E),
17285 ( E=[F|_]
17286 -> setarg(3, F, C)
17287 ; true
17288 )
17289 ),
17290 fail.
17291spawns_all_triggers_implies_spawns_all___0__0(A) :-
17292 nb_getval('$chr_store_global_ground_chr_translate____spawns_all_triggers___2',
17293 B),
17294 !,
17295 A=suspension(C, not_stored_yet, _),
17296 'chr gen_id'(C),
17297 spawns_all_triggers_implies_spawns_all___0__0__0__3(B, A).
17298spawns_all_triggers_implies_spawns_all___0__0__0__3([], A) :-
17299 spawns_all_triggers_implies_spawns_all___0__1(A).
17300spawns_all_triggers_implies_spawns_all___0__0__0__3([A|B], C) :-
17301 ( A=suspension(_, active, _, _, D, E)
17302 -> setarg(2, A, removed),
17303 ( arg(4, A, F),
17304 ( var(F)
17305 -> nb_getval('$chr_store_global_ground_chr_translate____spawns_all_triggers___2',
17306 G),
17307 G=[_|H],
17308 b_setval('$chr_store_global_ground_chr_translate____spawns_all_triggers___2',
17309 H),
17310 ( H=[I|_]
17311 -> setarg(4, I, _)
17312 ; true
17313 )
17314 ; F=[_, _|H],
17315 setarg(2, F, H),
17316 ( H=[I|_]
17317 -> setarg(4, I, F)
17318 ; true
17319 )
17320 )
17321 ),
17322 ( nb_getval('$chr_store_multi_hash_chr_translate____spawns_all_triggers___2-1',
17323 J),
17324 delete_ht(J, D, A)
17325 ),
17326 nb_getval('$chr_store_multi_hash_chr_translate____spawns_all_triggers___2-12',
17327 K),
17328 delete_ht(K, k(D, E), A),
17329 arg(2, C, L),
17330 setarg(2, C, active),
17331 ( L==not_stored_yet
17332 -> nb_getval('$chr_store_global_ground_chr_translate____spawns_all_triggers_implies_spawns_all___0',
17333 M),
17334 N=[C|M],
17335 b_setval('$chr_store_global_ground_chr_translate____spawns_all_triggers_implies_spawns_all___0',
17336 N),
17337 ( M=[O|_]
17338 -> setarg(3, O, N)
17339 ; true
17340 )
17341 ; true
17342 ),
17343 spawns_all(D, E),
17344 ( C=suspension(_, active, _)
17345 -> setarg(2, C, inactive),
17346 spawns_all_triggers_implies_spawns_all___0__0__0__3(B,
17347 C)
17348 ; true
17349 )
17350 ; spawns_all_triggers_implies_spawns_all___0__0__0__3(B, C)
17351 ).
17352spawns_all_triggers_implies_spawns_all___0__0(A) :-
17353 A=suspension(B, not_stored_yet, _),
17354 'chr gen_id'(B),
17355 spawns_all_triggers_implies_spawns_all___0__1(A).
17356spawns_all_triggers_implies_spawns_all___0__1(A) :-
17357 arg(2, A, B),
17358 setarg(2, A, active),
17359 ( B==not_stored_yet
17360 -> nb_getval('$chr_store_global_ground_chr_translate____spawns_all_triggers_implies_spawns_all___0',
17361 C),
17362 D=[A|C],
17363 b_setval('$chr_store_global_ground_chr_translate____spawns_all_triggers_implies_spawns_all___0',
17364 D),
17365 ( C=[E|_]
17366 -> setarg(3, E, D)
17367 ; true
17368 )
17369 ; true
17370 ).
17371all_spawned(A, B) :-
17372 nb_getval('$chr_store_multi_hash_chr_translate____spawns_all___2-12',
17373 C),
17374 ( lookup_ht(C, k(A, guard), D),
17375 member(E, D),
17376 E=suspension(_, active, _, _),
17377 !
17378 ; lookup_ht(C, k(A, B), F),
17379 member(G, F),
17380 G=suspension(_, active, _, _),
17381 !
17382 ).
17383all_spawned(_, _) :-
17384 fail.
17385is_observed(A, B, C) :-
17386 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-12',
17387 D),
17388 lookup_ht(D, k(A, B), E),
17389 member(F, E),
17390 F=suspension(_, active, _, _, _, _, G, _, _),
17391 !,
17392 do_is_observed(A, G, C).
17393is_observed(_, _, _) :-
17394 fail.
17395do_is_observed(A, B, C) :-
17396 var(C),
17397 !,
17398 do_is_observed(A, B).
17399do_is_observed(A, B, C) :-
17400 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-1', D),
17401 lookup_ht(D, A, E),
17402 member(F, E),
17403 F=suspension(_, active, _, _, _, _, G, _, _),
17404 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-3', H),
17405 lookup_ht(H, G, I),
17406 member(J, I),
17407 J=suspension(_, active, _, _, K, _, _, L, _),
17408 J\==F,
17409 ground(C),
17410 ( ( nb_getval('$chr_store_multi_hash_chr_translate____spawns_all___2-12',
17411 M),
17412 lookup_ht(M, k(B, C), N),
17413 member(O, N),
17414 O=suspension(_, active, _, _),
17415 \+ is_passive(G, L),
17416 !
17417 ; nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-123',
17418 P),
17419 lookup_ht(P, k(B, C, K), Q),
17420 member(R, Q),
17421 R=suspension(_, active, _, _, _, _, _),
17422 \+ is_passive(G, L),
17423 !
17424 )
17425 ; nb_getval('$chr_store_multi_hash_chr_translate____spawns_all_triggers___2-12',
17426 S),
17427 lookup_ht(S, k(B, C), T),
17428 member(U, T),
17429 U=suspension(_, active, _, _, _, _),
17430 \+ is_passive(G, L),
17431 may_trigger(K),
17432 !
17433 ).
17434do_is_observed(_, _, _) :-
17435 chr_pp_flag(observation_analysis, off).
17436do_is_observed(A, B) :-
17437 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-1', C),
17438 lookup_ht(C, A, D),
17439 member(E, D),
17440 E=suspension(_, active, _, _, _, _, F, _, _),
17441 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-3', G),
17442 lookup_ht(G, F, H),
17443 member(I, H),
17444 I=suspension(_, active, _, _, J, _, _, K, _),
17445 I\==E,
17446 ( ( nb_getval('$chr_store_multi_hash_chr_translate____spawns_all___2-1',
17447 L),
17448 lookup_ht(L, B, M),
17449 member(N, M),
17450 N=suspension(_, active, _, _),
17451 \+ is_passive(F, K),
17452 !
17453 ; nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-13',
17454 O),
17455 lookup_ht(O, k(B, J), P),
17456 member(Q, P),
17457 Q=suspension(_, active, _, _, _, _, _),
17458 \+ is_passive(F, K),
17459 !
17460 )
17461 ; nb_getval('$chr_store_multi_hash_chr_translate____spawns_all_triggers___2-1',
17462 R),
17463 lookup_ht(R, B, S),
17464 member(T, S),
17465 T=suspension(_, active, _, _, _, _),
17466 \+ is_passive(F, K),
17467 may_trigger(J),
17468 !
17469 ).
17470do_is_observed(_, _) :-
17471 chr_pp_flag(observation_analysis, off).
17472generate_indexed_variables_body(A/B, C, D, E) :-
17473 nb_getval('$chr_store_multi_hash_chr_translate____constraint_mode___2-1',
17474 F),
17475 lookup_ht(F, A/B, G),
17476 member(H, G),
17477 H=suspension(_, active, _, _, _, I),
17478 !,
17479 get_indexing_spec(A/B, J),
17480 ( chr_pp_flag(term_indexing, on)
17481 -> spectermvars(J, C, A, B, D, E)
17482 ; get_constraint_type_det(A/B, K),
17483 create_indexed_variables_body(C,
17484 I,
17485 K,
17486 E,
17487 1,
17488 A/B,
17489 L,
17490 M),
17491 ( L==empty
17492 -> D=true,
17493 E=[]
17494 ; M==0
17495 -> ( C=[N]
17496 -> true
17497 ; N=..[term|C]
17498 ),
17499 D=term_variables(N, E)
17500 ; L=D
17501 )
17502 ).
17503generate_indexed_variables_body(A, _, _, _) :-
17504 chr_error(internal,
17505 'generate_indexed_variables_body: missing mode info for ~w.\n',
17506 [A]).
17507empty_named_history_initialisations(A, B) :-
17508 C=suspension(D, active, _, A, B),
17509 'chr gen_id'(D),
17510 nb_getval('$chr_store_global_ground_chr_translate____empty_named_history_initialisations___2',
17511 E),
17512 F=[C|E],
17513 b_setval('$chr_store_global_ground_chr_translate____empty_named_history_initialisations___2',
17514 F),
17515 ( E=[G|_]
17516 -> setarg(3, G, F)
17517 ; true
17518 ).
17519generate_empty_named_history_initialisation(A) :-
17520 generate_empty_named_history_initialisation___1__0(A, _).
17521generate_empty_named_history_initialisation___1__0(A, B) :-
17522 ( 'chr newvia_1'(A, C)
17523 -> get_attr(C, chr_translate, D),
17524 D=v(_, E, _, _, _, _, _, _, _, _, _)
17525 ; nb_getval('$chr_store_global_list_chr_translate____generate_empty_named_history_initialisation___1',
17526 E)
17527 ),
17528 member(F, E),
17529 F=suspension(_, active, _, _, G),
17530 G==A,
17531 !,
17532 ( var(B)
17533 -> true
17534 ; B=suspension(_, H, _, _, I),
17535 setarg(2, B, removed),
17536 ( H==not_stored_yet
17537 -> J=[]
17538 ; term_variables(I, J),
17539 arg(4, B, K),
17540 ( var(K)
17541 -> nb_getval('$chr_store_global_list_chr_translate____generate_empty_named_history_initialisation___1',
17542 L),
17543 L=[_|M],
17544 b_setval('$chr_store_global_list_chr_translate____generate_empty_named_history_initialisation___1',
17545 M),
17546 ( M=[N|_]
17547 -> setarg(4, N, _)
17548 ; true
17549 )
17550 ; K=[_, _|M],
17551 setarg(2, K, M),
17552 ( M=[N|_]
17553 -> setarg(4, N, K)
17554 ; true
17555 )
17556 ),
17557 detach_generate_empty_named_history_initialisation___1(J,
17558 B)
17559 )
17560 ).
17561generate_empty_named_history_initialisation___1__0(A, B) :-
17562 nb_getval('$chr_store_global_ground_chr_translate____empty_named_history_initialisations___2',
17563 C),
17564 !,
17565 ( var(B)
17566 -> B=suspension(D, not_stored_yet, 0, _, A),
17567 'chr gen_id'(D)
17568 ; true
17569 ),
17570 generate_empty_named_history_initialisation___1__0__0__3(C,
17571 A,
17572 B).
17573generate_empty_named_history_initialisation___1__0__0__3([], A, B) :-
17574 generate_empty_named_history_initialisation___1__1(A, B).
17575generate_empty_named_history_initialisation___1__0__0__3([A|B], C, D) :-
17576 ( A=suspension(_, active, _, E, F)
17577 -> setarg(2, A, removed),
17578 arg(3, A, G),
17579 ( var(G)
17580 -> nb_getval('$chr_store_global_ground_chr_translate____empty_named_history_initialisations___2',
17581 H),
17582 H=[_|I],
17583 b_setval('$chr_store_global_ground_chr_translate____empty_named_history_initialisations___2',
17584 I),
17585 ( I=[J|_]
17586 -> setarg(3, J, _)
17587 ; true
17588 )
17589 ; G=[_, _|I],
17590 setarg(2, G, I),
17591 ( I=[J|_]
17592 -> setarg(3, J, G)
17593 ; true
17594 )
17595 ),
17596 arg(2, D, K),
17597 setarg(2, D, active),
17598 ( arg(3, D, L),
17599 M is L+1,
17600 setarg(3, D, M)
17601 ),
17602 ( K==not_stored_yet
17603 -> D=suspension(_, _, _, _, N),
17604 term_variables(N, O),
17605 nb_getval('$chr_store_global_list_chr_translate____generate_empty_named_history_initialisation___1',
17606 P),
17607 Q=[D|P],
17608 b_setval('$chr_store_global_list_chr_translate____generate_empty_named_history_initialisation___1',
17609 Q),
17610 ( P=[R|_]
17611 -> setarg(4, R, Q)
17612 ; true
17613 ),
17614 attach_generate_empty_named_history_initialisation___1(O,
17615 D)
17616 ; true
17617 ),
17618 empty_named_history_global_variable(C, S),
17619 E=[(:-nb_setval(S, 0))|T],
17620 empty_named_history_initialisations(T, F),
17621 ( D=suspension(_, active, M, _, _)
17622 -> setarg(2, D, inactive),
17623 generate_empty_named_history_initialisation___1__0__0__3(B,
17624 C,
17625 D)
17626 ; true
17627 )
17628 ; generate_empty_named_history_initialisation___1__0__0__3(B,
17629 C,
17630 D)
17631 ).
17632generate_empty_named_history_initialisation___1__0(A, B) :-
17633 ( var(B)
17634 -> B=suspension(C, not_stored_yet, 0, _, A),
17635 'chr gen_id'(C)
17636 ; true
17637 ),
17638 generate_empty_named_history_initialisation___1__1(A, B).
17639generate_empty_named_history_initialisation___1__1(_, A) :-
17640 arg(2, A, B),
17641 setarg(2, A, active),
17642 arg(3, A, C),
17643 D is C+1,
17644 setarg(3, A, D),
17645 ( B==not_stored_yet
17646 -> A=suspension(_, _, _, _, E),
17647 term_variables(E, F),
17648 nb_getval('$chr_store_global_list_chr_translate____generate_empty_named_history_initialisation___1',
17649 G),
17650 H=[A|G],
17651 b_setval('$chr_store_global_list_chr_translate____generate_empty_named_history_initialisation___1',
17652 H),
17653 ( G=[I|_]
17654 -> setarg(4, I, H)
17655 ; true
17656 ),
17657 attach_generate_empty_named_history_initialisation___1(F,
17658 A)
17659 ; true
17660 ).
17661find_empty_named_histories :-
17662 find_empty_named_histories___0__0(_).
17663find_empty_named_histories___0__0(A) :-
17664 nb_getval('$chr_store_constants_chr_translate____history___3___[3]___[]',
17665 B),
17666 !,
17667 A=suspension(C, not_stored_yet, t, _),
17668 'chr gen_id'(C),
17669 find_empty_named_histories___0__0__0__1(B, A).
17670find_empty_named_histories___0__0__0__1([], A) :-
17671 find_empty_named_histories___0__1(A).
17672find_empty_named_histories___0__0__0__1([A|B], C) :-
17673 ( A=suspension(_, active, _, _, D, E),
17674 E=[],
17675 F=t(142, C, A),
17676 '$novel_production'(C, F),
17677 '$novel_production'(A, F)
17678 -> '$extend_history'(C, F),
17679 arg(2, C, G),
17680 setarg(2, C, active),
17681 ( G==not_stored_yet
17682 -> nb_getval('$chr_store_global_ground_chr_translate____find_empty_named_histories___0',
17683 H),
17684 I=[C|H],
17685 b_setval('$chr_store_global_ground_chr_translate____find_empty_named_histories___0',
17686 I),
17687 ( H=[J|_]
17688 -> setarg(4, J, I)
17689 ; true
17690 )
17691 ; true
17692 ),
17693 generate_empty_named_history_initialisation(D),
17694 ( C=suspension(_, active, _, _)
17695 -> setarg(2, C, inactive),
17696 find_empty_named_histories___0__0__0__1(B, C)
17697 ; true
17698 )
17699 ; find_empty_named_histories___0__0__0__1(B, C)
17700 ).
17701find_empty_named_histories___0__0(A) :-
17702 A=suspension(B, not_stored_yet, t, _),
17703 'chr gen_id'(B),
17704 find_empty_named_histories___0__1(A).
17705find_empty_named_histories___0__1(A) :-
17706 nb_getval('$chr_store_global_list_chr_translate____generate_empty_named_history_initialisation___1',
17707 B),
17708 !,
17709 find_empty_named_histories___0__1__0__2(B, A).
17710find_empty_named_histories___0__1__0__2([], A) :-
17711 find_empty_named_histories___0__2(A).
17712find_empty_named_histories___0__1__0__2([A|B], C) :-
17713 ( A=suspension(_, active, _, _, _)
17714 -> A=suspension(_, _, _, _, D),
17715 setarg(2, A, removed),
17716 term_variables(D, E),
17717 ( arg(4, A, F),
17718 ( var(F)
17719 -> nb_getval('$chr_store_global_list_chr_translate____generate_empty_named_history_initialisation___1',
17720 G),
17721 G=[_|H],
17722 b_setval('$chr_store_global_list_chr_translate____generate_empty_named_history_initialisation___1',
17723 H),
17724 ( H=[I|_]
17725 -> setarg(4, I, _)
17726 ; true
17727 )
17728 ; F=[_, _|H],
17729 setarg(2, F, H),
17730 ( H=[I|_]
17731 -> setarg(4, I, F)
17732 ; true
17733 )
17734 )
17735 ),
17736 detach_generate_empty_named_history_initialisation___1(E,
17737 A),
17738 find_empty_named_histories___0__1__0__2(B, C)
17739 ; find_empty_named_histories___0__1__0__2(B, C)
17740 ).
17741find_empty_named_histories___0__1(A) :-
17742 find_empty_named_histories___0__2(A).
17743find_empty_named_histories___0__2(A) :-
17744 nb_getval('$chr_store_global_ground_chr_translate____empty_named_history_initialisations___2',
17745 B),
17746 member(C, B),
17747 C=suspension(_, active, _, D, E),
17748 !,
17749 setarg(2, C, removed),
17750 arg(3, C, F),
17751 ( var(F)
17752 -> nb_getval('$chr_store_global_ground_chr_translate____empty_named_history_initialisations___2',
17753 G),
17754 G=[_|H],
17755 b_setval('$chr_store_global_ground_chr_translate____empty_named_history_initialisations___2',
17756 H),
17757 ( H=[I|_]
17758 -> setarg(3, I, _)
17759 ; true
17760 )
17761 ; F=[_, _|H],
17762 setarg(2, F, H),
17763 ( H=[I|_]
17764 -> setarg(3, I, F)
17765 ; true
17766 )
17767 ),
17768 ( var(A)
17769 -> true
17770 ; arg(2, A, J),
17771 setarg(2, A, removed),
17772 ( J==not_stored_yet
17773 -> true
17774 ; arg(4, A, K),
17775 ( var(K)
17776 -> nb_getval('$chr_store_global_ground_chr_translate____find_empty_named_histories___0',
17777 L),
17778 L=[_|M],
17779 b_setval('$chr_store_global_ground_chr_translate____find_empty_named_histories___0',
17780 M),
17781 ( M=[N|_]
17782 -> setarg(4, N, _)
17783 ; true
17784 )
17785 ; K=[_, _|M],
17786 setarg(2, K, M),
17787 ( M=[N|_]
17788 -> setarg(4, N, K)
17789 ; true
17790 )
17791 )
17792 )
17793 ),
17794 D=E.
17795find_empty_named_histories___0__2(A) :-
17796 ( var(A)
17797 -> true
17798 ; arg(2, A, B),
17799 setarg(2, A, removed),
17800 ( B==not_stored_yet
17801 -> true
17802 ; arg(4, A, C),
17803 ( var(C)
17804 -> nb_getval('$chr_store_global_ground_chr_translate____find_empty_named_histories___0',
17805 D),
17806 D=[_|E],
17807 b_setval('$chr_store_global_ground_chr_translate____find_empty_named_histories___0',
17808 E),
17809 ( E=[F|_]
17810 -> setarg(4, F, _)
17811 ; true
17812 )
17813 ; C=[_, _|E],
17814 setarg(2, C, E),
17815 ( E=[F|_]
17816 -> setarg(4, F, C)
17817 ; true
17818 )
17819 )
17820 )
17821 ),
17822 chr_error(internal, 'find_empty_named_histories was not removed', []).
17823module_initializer(A) :-
17824 B=suspension(C, active, _, A),
17825 'chr gen_id'(C),
17826 nb_getval('$chr_store_global_ground_chr_translate____module_initializer___1',
17827 D),
17828 E=[B|D],
17829 b_setval('$chr_store_global_ground_chr_translate____module_initializer___1',
17830 E),
17831 ( D=[F|_]
17832 -> setarg(3, F, E)
17833 ; true
17834 ).
17835module_initializers(A) :-
17836 nb_getval('$chr_store_global_ground_chr_translate____module_initializer___1',
17837 B),
17838 member(C, B),
17839 C=suspension(_, active, _, D),
17840 !,
17841 setarg(2, C, removed),
17842 arg(3, C, E),
17843 ( var(E)
17844 -> nb_getval('$chr_store_global_ground_chr_translate____module_initializer___1',
17845 F),
17846 F=[_|G],
17847 b_setval('$chr_store_global_ground_chr_translate____module_initializer___1',
17848 G),
17849 ( G=[H|_]
17850 -> setarg(3, H, _)
17851 ; true
17852 )
17853 ; E=[_, _|G],
17854 setarg(2, E, G),
17855 ( G=[H|_]
17856 -> setarg(3, H, E)
17857 ; true
17858 )
17859 ),
17860 A=(D, I),
17861 module_initializers(I).
17862module_initializers(true).
17863actual_atomic_multi_hash_keys(A, B, C) :-
17864 nb_getval('$chr_store_multi_hash_chr_translate____actual_store_types___2-1',
17865 D),
17866 lookup_ht(D, A, E),
17867 member(F, E),
17868 F=suspension(_, active, _, G),
17869 nb_getval('$chr_store_multi_hash_chr_translate____validate_store_type_assumption___1-1',
17870 H),
17871 lookup_ht(H, A, I),
17872 member(J, I),
17873 J=suspension(_, active, _),
17874 !,
17875 setarg(2, F, removed),
17876 nb_getval('$chr_store_multi_hash_chr_translate____actual_store_types___2-1',
17877 K),
17878 delete_ht(K, A, F),
17879 selectchk(multi_hash([B]), G, L),
17880 B=[M],
17881 ( get_constraint_arg_type(A, M, N),
17882 enumerated_atomic_type(N, O)
17883 -> P=O,
17884 Q=complete
17885 ; P=C,
17886 Q=incomplete
17887 ),
17888 actual_store_types(A,
17889 [atomic_constants(B, P, Q)|L]).
17890actual_atomic_multi_hash_keys(A, B, C) :-
17891 nb_getval('$chr_store_multi_hash_chr_translate____actual_atomic_multi_hash_keys___3-12',
17892 D),
17893 lookup_ht(D, k(A, B), E),
17894 member(F, E),
17895 F=suspension(_, active, _, _, G),
17896 !,
17897 setarg(2, F, removed),
17898 nb_getval('$chr_store_multi_hash_chr_translate____actual_atomic_multi_hash_keys___3-12',
17899 H),
17900 delete_ht(H, k(A, B), F),
17901 nb_getval('$chr_store_multi_hash_chr_translate____actual_atomic_multi_hash_keys___3-1',
17902 I),
17903 delete_ht(I, A, F),
17904 append(C, G, J),
17905 sort(J, K),
17906 actual_atomic_multi_hash_keys(A, B, K).
17907actual_atomic_multi_hash_keys(A, B, C) :-
17908 nb_getval('$chr_store_multi_hash_chr_translate____actual_ground_multi_hash_keys___3-12',
17909 D),
17910 lookup_ht(D, k(A, B), E),
17911 member(F, E),
17912 F=suspension(_, active, _, _, G),
17913 !,
17914 setarg(2, F, removed),
17915 nb_getval('$chr_store_multi_hash_chr_translate____actual_ground_multi_hash_keys___3-12',
17916 H),
17917 delete_ht(H, k(A, B), F),
17918 nb_getval('$chr_store_multi_hash_chr_translate____actual_ground_multi_hash_keys___3-1',
17919 I),
17920 delete_ht(I, A, F),
17921 append(G, C, J),
17922 sort(J, K),
17923 actual_ground_multi_hash_keys(A, B, K).
17924actual_atomic_multi_hash_keys(A, B, _) :-
17925 nb_getval('$chr_store_multi_hash_chr_translate____actual_non_ground_multi_hash_key___2-12',
17926 C),
17927 lookup_ht(C, k(A, B), D),
17928 member(E, D),
17929 E=suspension(_, active, _, _),
17930 !.
17931actual_atomic_multi_hash_keys(A, B, C) :-
17932 D=suspension(E, active, A, B, C),
17933 'chr gen_id'(E),
17934 nb_getval('$chr_store_multi_hash_chr_translate____actual_atomic_multi_hash_keys___3-12',
17935 F),
17936 insert_ht(F, k(A, B), D),
17937 nb_getval('$chr_store_multi_hash_chr_translate____actual_atomic_multi_hash_keys___3-1',
17938 G),
17939 insert_ht(G, A, D).
17940actual_ground_multi_hash_keys(A, B, C) :-
17941 nb_getval('$chr_store_multi_hash_chr_translate____actual_store_types___2-1',
17942 D),
17943 lookup_ht(D, A, E),
17944 member(F, E),
17945 F=suspension(_, active, _, G),
17946 nb_getval('$chr_store_multi_hash_chr_translate____validate_store_type_assumption___1-1',
17947 H),
17948 lookup_ht(H, A, I),
17949 member(J, I),
17950 J=suspension(_, active, _),
17951 !,
17952 setarg(2, F, removed),
17953 nb_getval('$chr_store_multi_hash_chr_translate____actual_store_types___2-1',
17954 K),
17955 delete_ht(K, A, F),
17956 ( B=[L],
17957 get_constraint_arg_type(A, L, M),
17958 M=chr_enum(N)
17959 -> O=complete
17960 ; N=C,
17961 O=incomplete
17962 ),
17963 selectchk(multi_hash([B]), G, P),
17964 actual_store_types(A,
17965 [ground_constants(B, N, O)|P]).
17966actual_ground_multi_hash_keys(A, B, C) :-
17967 nb_getval('$chr_store_multi_hash_chr_translate____actual_atomic_multi_hash_keys___3-12',
17968 D),
17969 lookup_ht(D, k(A, B), E),
17970 member(F, E),
17971 F=suspension(_, active, _, _, G),
17972 !,
17973 setarg(2, F, removed),
17974 nb_getval('$chr_store_multi_hash_chr_translate____actual_atomic_multi_hash_keys___3-12',
17975 H),
17976 delete_ht(H, k(A, B), F),
17977 nb_getval('$chr_store_multi_hash_chr_translate____actual_atomic_multi_hash_keys___3-1',
17978 I),
17979 delete_ht(I, A, F),
17980 append(C, G, J),
17981 sort(J, K),
17982 actual_ground_multi_hash_keys(A, B, K).
17983actual_ground_multi_hash_keys(A, B, C) :-
17984 nb_getval('$chr_store_multi_hash_chr_translate____actual_ground_multi_hash_keys___3-12',
17985 D),
17986 lookup_ht(D, k(A, B), E),
17987 member(F, E),
17988 F=suspension(_, active, _, _, G),
17989 !,
17990 setarg(2, F, removed),
17991 nb_getval('$chr_store_multi_hash_chr_translate____actual_ground_multi_hash_keys___3-12',
17992 H),
17993 delete_ht(H, k(A, B), F),
17994 nb_getval('$chr_store_multi_hash_chr_translate____actual_ground_multi_hash_keys___3-1',
17995 I),
17996 delete_ht(I, A, F),
17997 append(C, G, J),
17998 sort(J, K),
17999 actual_ground_multi_hash_keys(A, B, K).
18000actual_ground_multi_hash_keys(A, B, _) :-
18001 nb_getval('$chr_store_multi_hash_chr_translate____actual_non_ground_multi_hash_key___2-12',
18002 C),
18003 lookup_ht(C, k(A, B), D),
18004 member(E, D),
18005 E=suspension(_, active, _, _),
18006 !.
18007actual_ground_multi_hash_keys(A, B, C) :-
18008 D=suspension(E, active, A, B, C),
18009 'chr gen_id'(E),
18010 nb_getval('$chr_store_multi_hash_chr_translate____actual_ground_multi_hash_keys___3-12',
18011 F),
18012 insert_ht(F, k(A, B), D),
18013 nb_getval('$chr_store_multi_hash_chr_translate____actual_ground_multi_hash_keys___3-1',
18014 G),
18015 insert_ht(G, A, D).
18016actual_non_ground_multi_hash_key(A, B) :-
18017 nb_getval('$chr_store_multi_hash_chr_translate____actual_non_ground_multi_hash_key___2-12',
18018 C),
18019 lookup_ht(C, k(A, B), D),
18020 member(E, D),
18021 E=suspension(_, active, _, _),
18022 !.
18023actual_non_ground_multi_hash_key(A, B) :-
18024 nb_getval('$chr_store_multi_hash_chr_translate____actual_atomic_multi_hash_keys___3-12',
18025 C),
18026 lookup_ht(C, k(A, B), D),
18027 !,
18028 actual_non_ground_multi_hash_key___2__0__0__3(D, A, B).
18029actual_non_ground_multi_hash_key___2__0__0__3([], A, B) :-
18030 actual_non_ground_multi_hash_key___2__1(A, B).
18031actual_non_ground_multi_hash_key___2__0__0__3([A|B], C, D) :-
18032 ( A=suspension(_, active, E, F, _),
18033 E==C,
18034 F==D
18035 -> setarg(2, A, removed),
18036 ( nb_getval('$chr_store_multi_hash_chr_translate____actual_atomic_multi_hash_keys___3-12',
18037 G),
18038 delete_ht(G, k(C, D), A)
18039 ),
18040 nb_getval('$chr_store_multi_hash_chr_translate____actual_atomic_multi_hash_keys___3-1',
18041 H),
18042 delete_ht(H, C, A),
18043 actual_non_ground_multi_hash_key___2__0__0__3(B, C, D)
18044 ; actual_non_ground_multi_hash_key___2__0__0__3(B, C, D)
18045 ).
18046actual_non_ground_multi_hash_key(A, B) :-
18047 actual_non_ground_multi_hash_key___2__1(A, B).
18048actual_non_ground_multi_hash_key___2__1(A, B) :-
18049 nb_getval('$chr_store_multi_hash_chr_translate____actual_ground_multi_hash_keys___3-12',
18050 C),
18051 lookup_ht(C, k(A, B), D),
18052 !,
18053 actual_non_ground_multi_hash_key___2__1__0__4(D, A, B).
18054actual_non_ground_multi_hash_key___2__1__0__4([], A, B) :-
18055 actual_non_ground_multi_hash_key___2__2(A, B).
18056actual_non_ground_multi_hash_key___2__1__0__4([A|B], C, D) :-
18057 ( A=suspension(_, active, E, F, _),
18058 E==C,
18059 F==D
18060 -> setarg(2, A, removed),
18061 ( nb_getval('$chr_store_multi_hash_chr_translate____actual_ground_multi_hash_keys___3-12',
18062 G),
18063 delete_ht(G, k(C, D), A)
18064 ),
18065 nb_getval('$chr_store_multi_hash_chr_translate____actual_ground_multi_hash_keys___3-1',
18066 H),
18067 delete_ht(H, C, A),
18068 actual_non_ground_multi_hash_key___2__1__0__4(B, C, D)
18069 ; actual_non_ground_multi_hash_key___2__1__0__4(B, C, D)
18070 ).
18071actual_non_ground_multi_hash_key___2__1(A, B) :-
18072 actual_non_ground_multi_hash_key___2__2(A, B).
18073actual_non_ground_multi_hash_key___2__2(A, B) :-
18074 C=suspension(D, active, A, B),
18075 'chr gen_id'(D),
18076 nb_getval('$chr_store_multi_hash_chr_translate____actual_non_ground_multi_hash_key___2-12',
18077 E),
18078 insert_ht(E, k(A, B), C).
18079symbol_count(A, B) :-
18080 symbol_count___2__0(A, B, _).
18081symbol_count___2__0(A, B, C) :-
18082 ( 'chr newvia_1'(A, D)
18083 -> get_attr(D, chr_translate, E),
18084 E=v(_, _, _, F, _, _, _, _, _, _, _)
18085 ; nb_getval('$chr_store_global_list_chr_translate____fresh_symbol___2',
18086 F)
18087 ),
18088 member(G, F),
18089 G=suspension(_, active, _, _, _, H, I),
18090 H==A,
18091 !,
18092 G=suspension(_, _, _, _, _, J, _),
18093 setarg(2, G, removed),
18094 term_variables(J, K),
18095 arg(5, G, L),
18096 ( var(L)
18097 -> nb_getval('$chr_store_global_list_chr_translate____fresh_symbol___2',
18098 M),
18099 M=[_|N],
18100 b_setval('$chr_store_global_list_chr_translate____fresh_symbol___2',
18101 N),
18102 ( N=[O|_]
18103 -> setarg(5, O, _)
18104 ; true
18105 )
18106 ; L=[_, _|N],
18107 setarg(2, L, N),
18108 ( N=[O|_]
18109 -> setarg(5, O, L)
18110 ; true
18111 )
18112 ),
18113 detach_fresh_symbol___2(K, G),
18114 ( var(C)
18115 -> true
18116 ; C=suspension(_, _, _, P, _),
18117 setarg(2, C, removed),
18118 term_variables(P, Q),
18119 arg(3, C, R),
18120 ( var(R)
18121 -> nb_getval('$chr_store_global_list_chr_translate____symbol_count___2',
18122 S),
18123 S=[_|T],
18124 b_setval('$chr_store_global_list_chr_translate____symbol_count___2',
18125 T),
18126 ( T=[U|_]
18127 -> setarg(3, U, _)
18128 ; true
18129 )
18130 ; R=[_, _|T],
18131 setarg(2, R, T),
18132 ( T=[U|_]
18133 -> setarg(3, U, R)
18134 ; true
18135 )
18136 ),
18137 detach_symbol_count___2(Q, C)
18138 ),
18139 atom_concat(A, B, I),
18140 V is B+1,
18141 symbol_count(A, V).
18142symbol_count___2__0(A, B, C) :-
18143 ( var(C)
18144 -> C=suspension(D, active, _, A, B),
18145 term_variables(A, E),
18146 'chr gen_id'(D),
18147 nb_getval('$chr_store_global_list_chr_translate____symbol_count___2',
18148 F),
18149 G=[C|F],
18150 b_setval('$chr_store_global_list_chr_translate____symbol_count___2',
18151 G),
18152 ( F=[H|_]
18153 -> setarg(3, H, G)
18154 ; true
18155 ),
18156 attach_symbol_count___2(E, C)
18157 ; setarg(2, C, active)
18158 ).
18159fresh_symbol(A, B) :-
18160 fresh_symbol___2__0(A, B, _).
18161fresh_symbol___2__0(A, B, C) :-
18162 ( 'chr newvia_1'(A, D)
18163 -> get_attr(D, chr_translate, E),
18164 E=v(_, _, F, _, _, _, _, _, _, _, _)
18165 ; nb_getval('$chr_store_global_list_chr_translate____symbol_count___2',
18166 F)
18167 ),
18168 member(G, F),
18169 G=suspension(_, active, _, H, I),
18170 H==A,
18171 !,
18172 G=suspension(_, _, _, J, _),
18173 setarg(2, G, removed),
18174 term_variables(J, K),
18175 arg(3, G, L),
18176 ( var(L)
18177 -> nb_getval('$chr_store_global_list_chr_translate____symbol_count___2',
18178 M),
18179 M=[_|N],
18180 b_setval('$chr_store_global_list_chr_translate____symbol_count___2',
18181 N),
18182 ( N=[O|_]
18183 -> setarg(3, O, _)
18184 ; true
18185 )
18186 ; L=[_, _|N],
18187 setarg(2, L, N),
18188 ( N=[O|_]
18189 -> setarg(3, O, L)
18190 ; true
18191 )
18192 ),
18193 detach_symbol_count___2(K, G),
18194 ( var(C)
18195 -> true
18196 ; C=suspension(_, P, _, _, _, Q, _),
18197 setarg(2, C, removed),
18198 ( P==not_stored_yet
18199 -> R=[]
18200 ; term_variables(Q, R),
18201 arg(5, C, S),
18202 ( var(S)
18203 -> nb_getval('$chr_store_global_list_chr_translate____fresh_symbol___2',
18204 T),
18205 T=[_|U],
18206 b_setval('$chr_store_global_list_chr_translate____fresh_symbol___2',
18207 U),
18208 ( U=[V|_]
18209 -> setarg(5, V, _)
18210 ; true
18211 )
18212 ; S=[_, _|U],
18213 setarg(2, S, U),
18214 ( U=[V|_]
18215 -> setarg(5, V, S)
18216 ; true
18217 )
18218 ),
18219 detach_fresh_symbol___2(R, C)
18220 )
18221 ),
18222 atom_concat(A, I, B),
18223 W is I+1,
18224 symbol_count(A, W).
18225fresh_symbol___2__0(A, B, C) :-
18226 ( var(C)
18227 -> C=suspension(D, not_stored_yet, t, 0, _, A, B),
18228 'chr gen_id'(D)
18229 ; true
18230 ),
18231 ( '$novel_production'(C, 157),
18232 !,
18233 '$extend_history'(C, 157),
18234 arg(2, C, E),
18235 setarg(2, C, active),
18236 arg(4, C, F),
18237 G is F+1,
18238 setarg(4, C, G),
18239 ( E==not_stored_yet
18240 -> C=suspension(_, _, _, _, _, H, _),
18241 term_variables(H, I),
18242 nb_getval('$chr_store_global_list_chr_translate____fresh_symbol___2',
18243 J),
18244 K=[C|J],
18245 b_setval('$chr_store_global_list_chr_translate____fresh_symbol___2',
18246 K),
18247 ( J=[L|_]
18248 -> setarg(5, L, K)
18249 ; true
18250 ),
18251 attach_fresh_symbol___2(I, C)
18252 ; true
18253 ),
18254 symbol_count(A, 0),
18255 ( C=suspension(_, active, _, G, _, _, _)
18256 -> setarg(2, C, inactive),
18257 fresh_symbol___2__1(A, B, C)
18258 ; true
18259 )
18260 ; fresh_symbol___2__1(A, B, C)
18261 ).
18262fresh_symbol___2__1(_, _, A) :-
18263 arg(2, A, B),
18264 setarg(2, A, active),
18265 arg(4, A, C),
18266 D is C+1,
18267 setarg(4, A, D),
18268 ( B==not_stored_yet
18269 -> A=suspension(_, _, _, _, _, E, _),
18270 term_variables(E, F),
18271 nb_getval('$chr_store_global_list_chr_translate____fresh_symbol___2',
18272 G),
18273 H=[A|G],
18274 b_setval('$chr_store_global_list_chr_translate____fresh_symbol___2',
18275 H),
18276 ( G=[I|_]
18277 -> setarg(5, I, H)
18278 ; true
18279 ),
18280 attach_fresh_symbol___2(F, A)
18281 ; true
18282 ).
18283prolog_global_variable(A) :-
18284 nb_getval('$chr_store_multi_hash_chr_translate____prolog_global_variable___1-1',
18285 B),
18286 lookup_ht(B, A, C),
18287 member(D, C),
18288 D=suspension(_, active, _, _),
18289 !.
18290prolog_global_variable(A) :-
18291 B=suspension(C, active, _, A),
18292 'chr gen_id'(C),
18293 nb_getval('$chr_store_global_ground_chr_translate____prolog_global_variable___1',
18294 D),
18295 E=[B|D],
18296 b_setval('$chr_store_global_ground_chr_translate____prolog_global_variable___1',
18297 E),
18298 ( D=[F|_]
18299 -> setarg(3, F, E)
18300 ; true
18301 ),
18302 nb_getval('$chr_store_multi_hash_chr_translate____prolog_global_variable___1-1',
18303 G),
18304 insert_ht(G, A, B).
18305prolog_global_variables(A) :-
18306 nb_getval('$chr_store_global_ground_chr_translate____prolog_global_variable___1',
18307 B),
18308 member(C, B),
18309 C=suspension(_, active, _, D),
18310 !,
18311 setarg(2, C, removed),
18312 arg(3, C, E),
18313 ( var(E)
18314 -> nb_getval('$chr_store_global_ground_chr_translate____prolog_global_variable___1',
18315 F),
18316 F=[_|G],
18317 b_setval('$chr_store_global_ground_chr_translate____prolog_global_variable___1',
18318 G),
18319 ( G=[H|_]
18320 -> setarg(3, H, _)
18321 ; true
18322 )
18323 ; E=[_, _|G],
18324 setarg(2, E, G),
18325 ( G=[H|_]
18326 -> setarg(3, H, E)
18327 ; true
18328 )
18329 ),
18330 nb_getval('$chr_store_multi_hash_chr_translate____prolog_global_variable___1-1',
18331 I),
18332 delete_ht(I, D, C),
18333 A=[D|J],
18334 prolog_global_variables(J).
18335prolog_global_variables([]).
18336background_info(A) :-
18337 nb_getval('$chr_store_global_ground_chr_translate____background_info___1',
18338 B),
18339 member(C, B),
18340 C=suspension(_, active, _, D),
18341 !,
18342 setarg(2, C, removed),
18343 arg(3, C, E),
18344 ( var(E)
18345 -> nb_getval('$chr_store_global_ground_chr_translate____background_info___1',
18346 F),
18347 F=[_|G],
18348 b_setval('$chr_store_global_ground_chr_translate____background_info___1',
18349 G),
18350 ( G=[H|_]
18351 -> setarg(3, H, _)
18352 ; true
18353 )
18354 ; E=[_, _|G],
18355 setarg(2, E, G),
18356 ( G=[H|_]
18357 -> setarg(3, H, E)
18358 ; true
18359 )
18360 ),
18361 append(A, D, I),
18362 background_info(I).
18363background_info(A) :-
18364 B=suspension(C, active, _, A),
18365 'chr gen_id'(C),
18366 nb_getval('$chr_store_global_ground_chr_translate____background_info___1',
18367 D),
18368 E=[B|D],
18369 b_setval('$chr_store_global_ground_chr_translate____background_info___1',
18370 E),
18371 ( D=[F|_]
18372 -> setarg(3, F, E)
18373 ; true
18374 ).
18375background_info(A, B) :-
18376 background_info___2__0(A, B, _).
18377background_info___2__0(A, B, C) :-
18378 nb_getval('$chr_store_global_list_chr_translate____get_bg_info___2', D),
18379 !,
18380 ( var(C)
18381 -> C=suspension(E, not_stored_yet, t, 0, _, A, B),
18382 'chr gen_id'(E)
18383 ; true
18384 ),
18385 background_info___2__0__0__1(D, A, B, C).
18386background_info___2__0__0__1([], A, B, C) :-
18387 background_info___2__1(A, B, C).
18388background_info___2__0__0__1([A|B], C, D, E) :-
18389 ( A=suspension(_, active, _, _, _, F, _),
18390 G=t(164, E, A),
18391 '$novel_production'(E, G),
18392 '$novel_production'(A, G),
18393 copy_term_nat(C, H),
18394 subsumes_term(H, F)
18395 -> '$extend_history'(E, G),
18396 arg(2, E, I),
18397 setarg(2, E, active),
18398 ( arg(4, E, J),
18399 K is J+1,
18400 setarg(4, E, K)
18401 ),
18402 ( I==not_stored_yet
18403 -> E=suspension(_, _, _, _, _, L, _),
18404 term_variables(L, M),
18405 nb_getval('$chr_store_global_list_chr_translate____background_info___2',
18406 N),
18407 O=[E|N],
18408 b_setval('$chr_store_global_list_chr_translate____background_info___2',
18409 O),
18410 ( N=[P|_]
18411 -> setarg(5, P, O)
18412 ; true
18413 ),
18414 attach_background_info___2(M, E)
18415 ; true
18416 ),
18417 copy_term_nat(C-D, F-Q),
18418 get_bg_info_answer([Q]),
18419 ( E=suspension(_, active, _, K, _, _, _)
18420 -> setarg(2, E, inactive),
18421 background_info___2__0__0__1(B, C, D, E)
18422 ; true
18423 )
18424 ; background_info___2__0__0__1(B, C, D, E)
18425 ).
18426background_info___2__0(A, B, C) :-
18427 ( var(C)
18428 -> C=suspension(D, not_stored_yet, t, 0, _, A, B),
18429 'chr gen_id'(D)
18430 ; true
18431 ),
18432 background_info___2__1(A, B, C).
18433background_info___2__1(_, _, A) :-
18434 arg(2, A, B),
18435 setarg(2, A, active),
18436 arg(4, A, C),
18437 D is C+1,
18438 setarg(4, A, D),
18439 ( B==not_stored_yet
18440 -> A=suspension(_, _, _, _, _, E, _),
18441 term_variables(E, F),
18442 nb_getval('$chr_store_global_list_chr_translate____background_info___2',
18443 G),
18444 H=[A|G],
18445 b_setval('$chr_store_global_list_chr_translate____background_info___2',
18446 H),
18447 ( G=[I|_]
18448 -> setarg(5, I, H)
18449 ; true
18450 ),
18451 attach_background_info___2(F, A)
18452 ; true
18453 ).
18454get_bg_info(A) :-
18455 nb_getval('$chr_store_global_ground_chr_translate____background_info___1',
18456 B),
18457 member(C, B),
18458 C=suspension(_, active, _, D),
18459 !,
18460 A=D.
18461get_bg_info([]).
18462get_bg_info(A, B) :-
18463 get_bg_info___2__0(A, B, _).
18464get_bg_info___2__0(A, B, C) :-
18465 nb_getval('$chr_store_global_list_chr_translate____background_info___2',
18466 D),
18467 !,
18468 ( var(C)
18469 -> C=suspension(E, not_stored_yet, t, 0, _, A, B),
18470 'chr gen_id'(E)
18471 ; true
18472 ),
18473 get_bg_info___2__0__0__1(D, A, B, C).
18474get_bg_info___2__0__0__1([], A, B, C) :-
18475 get_bg_info___2__1(A, B, C).
18476get_bg_info___2__0__0__1([A|B], C, D, E) :-
18477 ( A=suspension(_, active, _, _, _, F, G),
18478 H=t(164, A, E),
18479 '$novel_production'(A, H),
18480 '$novel_production'(E, H),
18481 copy_term_nat(F, I),
18482 subsumes_term(I, C)
18483 -> '$extend_history'(E, H),
18484 arg(2, E, J),
18485 setarg(2, E, active),
18486 ( arg(4, E, K),
18487 L is K+1,
18488 setarg(4, E, L)
18489 ),
18490 ( J==not_stored_yet
18491 -> E=suspension(_, _, _, _, _, M, _),
18492 term_variables(M, N),
18493 nb_getval('$chr_store_global_list_chr_translate____get_bg_info___2',
18494 O),
18495 P=[E|O],
18496 b_setval('$chr_store_global_list_chr_translate____get_bg_info___2',
18497 P),
18498 ( O=[Q|_]
18499 -> setarg(5, Q, P)
18500 ; true
18501 ),
18502 attach_get_bg_info___2(N, E)
18503 ; true
18504 ),
18505 copy_term_nat(F-G, C-R),
18506 get_bg_info_answer([R]),
18507 ( E=suspension(_, active, _, L, _, _, _)
18508 -> setarg(2, E, inactive),
18509 get_bg_info___2__0__0__1(B, C, D, E)
18510 ; true
18511 )
18512 ; get_bg_info___2__0__0__1(B, C, D, E)
18513 ).
18514get_bg_info___2__0(A, B, C) :-
18515 ( var(C)
18516 -> C=suspension(D, not_stored_yet, t, 0, _, A, B),
18517 'chr gen_id'(D)
18518 ; true
18519 ),
18520 get_bg_info___2__1(A, B, C).
18521get_bg_info___2__1(_, A, B) :-
18522 nb_getval('$chr_store_global_ground_chr_translate____get_bg_info_answer___1',
18523 C),
18524 member(D, C),
18525 D=suspension(_, active, _, E),
18526 !,
18527 setarg(2, D, removed),
18528 arg(3, D, F),
18529 ( var(F)
18530 -> nb_getval('$chr_store_global_ground_chr_translate____get_bg_info_answer___1',
18531 G),
18532 G=[_|H],
18533 b_setval('$chr_store_global_ground_chr_translate____get_bg_info_answer___1',
18534 H),
18535 ( H=[I|_]
18536 -> setarg(3, I, _)
18537 ; true
18538 )
18539 ; F=[_, _|H],
18540 setarg(2, F, H),
18541 ( H=[I|_]
18542 -> setarg(3, I, F)
18543 ; true
18544 )
18545 ),
18546 ( var(B)
18547 -> true
18548 ; B=suspension(_, J, _, _, _, K, _),
18549 setarg(2, B, removed),
18550 ( J==not_stored_yet
18551 -> L=[]
18552 ; term_variables(K, L),
18553 arg(5, B, M),
18554 ( var(M)
18555 -> nb_getval('$chr_store_global_list_chr_translate____get_bg_info___2',
18556 N),
18557 N=[_|O],
18558 b_setval('$chr_store_global_list_chr_translate____get_bg_info___2',
18559 O),
18560 ( O=[P|_]
18561 -> setarg(5, P, _)
18562 ; true
18563 )
18564 ; M=[_, _|O],
18565 setarg(2, M, O),
18566 ( O=[P|_]
18567 -> setarg(5, P, M)
18568 ; true
18569 )
18570 ),
18571 detach_get_bg_info___2(L, B)
18572 )
18573 ),
18574 A=E.
18575get_bg_info___2__1(_, A, B) :-
18576 ( var(B)
18577 -> true
18578 ; B=suspension(_, C, _, _, _, D, _),
18579 setarg(2, B, removed),
18580 ( C==not_stored_yet
18581 -> E=[]
18582 ; term_variables(D, E),
18583 arg(5, B, F),
18584 ( var(F)
18585 -> nb_getval('$chr_store_global_list_chr_translate____get_bg_info___2',
18586 G),
18587 G=[_|H],
18588 b_setval('$chr_store_global_list_chr_translate____get_bg_info___2',
18589 H),
18590 ( H=[I|_]
18591 -> setarg(5, I, _)
18592 ; true
18593 )
18594 ; F=[_, _|H],
18595 setarg(2, F, H),
18596 ( H=[I|_]
18597 -> setarg(5, I, F)
18598 ; true
18599 )
18600 ),
18601 detach_get_bg_info___2(E, B)
18602 )
18603 ),
18604 A=[].
18605get_bg_info_answer(A) :-
18606 nb_getval('$chr_store_global_ground_chr_translate____get_bg_info_answer___1',
18607 B),
18608 member(C, B),
18609 C=suspension(_, active, _, D),
18610 !,
18611 setarg(2, C, removed),
18612 arg(3, C, E),
18613 ( var(E)
18614 -> nb_getval('$chr_store_global_ground_chr_translate____get_bg_info_answer___1',
18615 F),
18616 F=[_|G],
18617 b_setval('$chr_store_global_ground_chr_translate____get_bg_info_answer___1',
18618 G),
18619 ( G=[H|_]
18620 -> setarg(3, H, _)
18621 ; true
18622 )
18623 ; E=[_, _|G],
18624 setarg(2, E, G),
18625 ( G=[H|_]
18626 -> setarg(3, H, E)
18627 ; true
18628 )
18629 ),
18630 append(A, D, I),
18631 get_bg_info_answer(I).
18632get_bg_info_answer(A) :-
18633 B=suspension(C, active, _, A),
18634 'chr gen_id'(C),
18635 nb_getval('$chr_store_global_ground_chr_translate____get_bg_info_answer___1',
18636 D),
18637 E=[B|D],
18638 b_setval('$chr_store_global_ground_chr_translate____get_bg_info_answer___1',
18639 E),
18640 ( D=[F|_]
18641 -> setarg(3, F, E)
18642 ; true
18643 ).
18644prev_guard_list(A, B, C, D, E, F, G, H) :-
18645 nb_getval('$chr_store_multi_hash_chr_translate____rule___2-1', I),
18646 lookup_ht(I, B, J),
18647 member(K, J),
18648 K=suspension(_, active, _, _, _, L),
18649 L=pragma(rule(M, N, O, _), _, _, _, _),
18650 M\==[],
18651 make_head_matchings_explicit(B, P, Q),
18652 setof(R,
18653 chr_translate:head_subset(P, D, R),
18654 S),
18655 !,
18656 append(M, N, T),
18657 compute_derived_info(S,
18658 Q,
18659 P,
18660 T,
18661 O,
18662 G,
18663 D,
18664 H,
18665 U,
18666 V),
18667 append(F, U, W),
18668 normalize_conj_list(W, X),
18669 append(V, H, Y),
18670 normalize_conj_list(Y, Z),
18671 next_prev_rule(C, A1, B1),
18672 prev_guard_list(A,
18673 A1,
18674 B1,
18675 D,
18676 E,
18677 X,
18678 G,
18679 Z).
18680prev_guard_list(A, B, C, D, E, F, G, H) :-
18681 ( B>0
18682 -> next_prev_rule(C, I, J),
18683 prev_guard_list(A,
18684 I,
18685 J,
18686 D,
18687 E,
18688 F,
18689 G,
18690 H)
18691 ; prev_guard_list(A, D, E, F, G, H)
18692 ).
18693prev_guard_list(A, B, C, D, E, F) :-
18694 prev_guard_list___6__0(A,
18695 B,
18696 C,
18697 D,
18698 E,
18699 F,
18700 _).
18701prev_guard_list___6__0(A, B, C, D, E, F, _) :-
18702 F\==[],
18703 !,
18704 head_types_modes_condition(F, B, G),
18705 conj2list(G, H),
18706 term_variables(B, I),
18707 append([chr_pp_headvariables(I)|H], D, J),
18708 normalize_conj_list(J, K),
18709 append(B, K, L),
18710 add_background_info([C|L], M),
18711 append(K, M, N),
18712 normalize_conj_list(N, O),
18713 prev_guard_list(A, B, C, O, E, []).
18714prev_guard_list___6__0(A, B, C, D, E, F, G) :-
18715 nb_getval('$chr_store_multi_hash_chr_translate____rule___2-1', H),
18716 lookup_ht(H, A, I),
18717 ( member(J, I),
18718 J=suspension(_, active, _, _, _, K),
18719 K=pragma(rule(L, M, C, N), O, P, Q, A),
18720 C\==true,
18721 append(E, D, R),
18722 ( conj2list(C, S),
18723 append(R, S, T),
18724 guard_entailment:entails_guard(T, fail)
18725 -> U=fail
18726 ; simplify_guard(C, N, R, U, V)
18727 ),
18728 C\==U,
18729 !,
18730 setarg(2, J, removed),
18731 arg(4, J, W),
18732 ( var(W)
18733 -> nb_getval('$chr_store_global_ground_chr_translate____rule___2',
18734 X),
18735 X=[_|Y],
18736 b_setval('$chr_store_global_ground_chr_translate____rule___2',
18737 Y),
18738 ( Y=[Z|_]
18739 -> setarg(4, Z, _)
18740 ; true
18741 )
18742 ; W=[_, _|Y],
18743 setarg(2, W, Y),
18744 ( Y=[Z|_]
18745 -> setarg(4, Z, W)
18746 ; true
18747 )
18748 ),
18749 nb_getval('$chr_store_multi_hash_chr_translate____rule___2-1', A1),
18750 delete_ht(A1, A, J),
18751 rule(A,
18752 pragma(rule(L, M, U, V),
18753 O,
18754 P,
18755 Q,
18756 A)),
18757 prev_guard_list(A, B, U, D, E, [])
18758 ; !,
18759 G=suspension(B1, not_stored_yet, t, _, A, B, C, D, E, F),
18760 'chr gen_id'(B1),
18761 prev_guard_list___6__0__0__3(I,
18762 A,
18763 B,
18764 C,
18765 D,
18766 E,
18767 F,
18768 G)
18769 ).
18770prev_guard_list___6__0__0__3([], A, B, C, D, E, F, G) :-
18771 prev_guard_list___6__1(A,
18772 B,
18773 C,
18774 D,
18775 E,
18776 F,
18777 G).
18778prev_guard_list___6__0__0__3([A|B], C, D, E, F, G, H, I) :-
18779 ( A=suspension(_, active, _, _, J, K),
18780 J==C,
18781 L=t(178, I, A),
18782 '$novel_production'(I, L),
18783 '$novel_production'(A, L),
18784 chr_pp_flag(check_impossible_rules, on),
18785 K=pragma(rule(_, _, E, _), _, _, _, C),
18786 conj2list(E, M),
18787 append(G, F, N),
18788 append(N, M, O),
18789 guard_entailment:entails_guard(O, fail)
18790 -> '$extend_history'(I, L),
18791 arg(2, I, P),
18792 setarg(2, I, active),
18793 ( P==not_stored_yet
18794 -> nb_getval('$chr_store_global_ground_chr_translate____prev_guard_list___6',
18795 Q),
18796 R=[I|Q],
18797 b_setval('$chr_store_global_ground_chr_translate____prev_guard_list___6',
18798 R),
18799 ( Q=[S|_]
18800 -> setarg(4, S, R)
18801 ; true
18802 ),
18803 nb_getval('$chr_store_multi_hash_chr_translate____prev_guard_list___6-1',
18804 T),
18805 insert_ht(T, C, I)
18806 ; true
18807 ),
18808 chr_warning(weird_program,
18809 'Heads will never match or guard will always fail in ~@.\n\tThis rule will never fire!\n',
18810 [format_rule(K)]),
18811 set_all_passive(C),
18812 ( I=suspension(_, active, _, _, _, _, _, _, _, _)
18813 -> setarg(2, I, inactive),
18814 prev_guard_list___6__0__0__3(B,
18815 C,
18816 D,
18817 E,
18818 F,
18819 G,
18820 H,
18821 I)
18822 ; true
18823 )
18824 ; prev_guard_list___6__0__0__3(B,
18825 C,
18826 D,
18827 E,
18828 F,
18829 G,
18830 H,
18831 I)
18832 ).
18833prev_guard_list___6__0(A, B, C, D, E, F, G) :-
18834 G=suspension(H, not_stored_yet, t, _, A, B, C, D, E, F),
18835 'chr gen_id'(H),
18836 prev_guard_list___6__1(A,
18837 B,
18838 C,
18839 D,
18840 E,
18841 F,
18842 G).
18843prev_guard_list___6__1(A, B, C, D, E, F, G) :-
18844 nb_getval('$chr_store_multi_hash_chr_translate____rule___2-1', H),
18845 lookup_ht(H, A, I),
18846 !,
18847 prev_guard_list___6__1__0__4(I,
18848 A,
18849 B,
18850 C,
18851 D,
18852 E,
18853 F,
18854 G).
18855prev_guard_list___6__1__0__4([], A, B, C, D, E, F, G) :-
18856 prev_guard_list___6__2(A,
18857 B,
18858 C,
18859 D,
18860 E,
18861 F,
18862 G).
18863prev_guard_list___6__1__0__4([A|B], C, D, E, F, G, H, I) :-
18864 ( A=suspension(_, active, _, _, J, K),
18865 J==C,
18866 K=pragma(rule(L, M, E, N), O, P, Q, C),
18867 simplify_heads(G, F, E, N, R, S),
18868 R\==[],
18869 extract_arguments(L, T),
18870 extract_arguments(M, U),
18871 extract_arguments(D, V),
18872 replace_some_heads(T,
18873 U,
18874 V,
18875 R,
18876 W,
18877 X,
18878 E,
18879 N,
18880 Y),
18881 substitute_arguments(L, W, Z),
18882 substitute_arguments(M, X, A1),
18883 append(S, Y, B1),
18884 list2conj(B1, C1),
18885 D1=pragma(rule(Z, A1, E, (C1, N)), O, P, Q, C),
18886 ( L\==Z
18887 ; M\==A1
18888 )
18889 -> setarg(2, A, removed),
18890 ( arg(4, A, E1),
18891 ( var(E1)
18892 -> nb_getval('$chr_store_global_ground_chr_translate____rule___2',
18893 F1),
18894 F1=[_|G1],
18895 b_setval('$chr_store_global_ground_chr_translate____rule___2',
18896 G1),
18897 ( G1=[H1|_]
18898 -> setarg(4, H1, _)
18899 ; true
18900 )
18901 ; E1=[_, _|G1],
18902 setarg(2, E1, G1),
18903 ( G1=[H1|_]
18904 -> setarg(4, H1, E1)
18905 ; true
18906 )
18907 )
18908 ),
18909 nb_getval('$chr_store_multi_hash_chr_translate____rule___2-1', I1),
18910 delete_ht(I1, C, A),
18911 arg(2, I, J1),
18912 setarg(2, I, active),
18913 ( J1==not_stored_yet
18914 -> nb_getval('$chr_store_global_ground_chr_translate____prev_guard_list___6',
18915 K1),
18916 L1=[I|K1],
18917 b_setval('$chr_store_global_ground_chr_translate____prev_guard_list___6',
18918 L1),
18919 ( K1=[M1|_]
18920 -> setarg(4, M1, L1)
18921 ; true
18922 ),
18923 nb_getval('$chr_store_multi_hash_chr_translate____prev_guard_list___6-1',
18924 N1),
18925 insert_ht(N1, C, I)
18926 ; true
18927 ),
18928 rule(C, D1),
18929 ( I=suspension(_, active, _, _, _, _, _, _, _, _)
18930 -> setarg(2, I, inactive),
18931 prev_guard_list___6__1__0__4(B,
18932 C,
18933 D,
18934 E,
18935 F,
18936 G,
18937 H,
18938 I)
18939 ; true
18940 )
18941 ; prev_guard_list___6__1__0__4(B,
18942 C,
18943 D,
18944 E,
18945 F,
18946 G,
18947 H,
18948 I)
18949 ).
18950prev_guard_list___6__1(A, B, C, D, E, F, G) :-
18951 prev_guard_list___6__2(A,
18952 B,
18953 C,
18954 D,
18955 E,
18956 F,
18957 G).
18958prev_guard_list___6__2(A, B, C, D, E, F, G) :-
18959 nb_getval('$chr_store_multi_hash_chr_translate____rule___2-1', H),
18960 lookup_ht(H, A, I),
18961 !,
18962 prev_guard_list___6__2__0__5(I,
18963 A,
18964 B,
18965 C,
18966 D,
18967 E,
18968 F,
18969 G).
18970prev_guard_list___6__2__0__5([], A, B, C, D, E, F, G) :-
18971 prev_guard_list___6__3(A,
18972 B,
18973 C,
18974 D,
18975 E,
18976 F,
18977 G).
18978prev_guard_list___6__2__0__5([A|B], C, D, E, F, G, H, I) :-
18979 ( A=suspension(_, active, _, _, J, K),
18980 J==C,
18981 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-3',
18982 L),
18983 lookup_ht(L, C, M)
18984 -> prev_guard_list___6__2__1__5(M,
18985 K,
18986 A,
18987 B,
18988 C,
18989 D,
18990 E,
18991 F,
18992 G,
18993 H,
18994 I)
18995 ; prev_guard_list___6__2__0__5(B,
18996 C,
18997 D,
18998 E,
18999 F,
19000 G,
19001 H,
19002 I)
19003 ).
19004prev_guard_list___6__2__1__5([], _, _, A, B, C, D, E, F, G, H) :-
19005 prev_guard_list___6__2__0__5(A,
19006 B,
19007 C,
19008 D,
19009 E,
19010 F,
19011 G,
19012 H).
19013prev_guard_list___6__2__1__5([A|B], C, D, E, F, G, H, I, J, K, L) :-
19014 ( A=suspension(_, active, _, _, M, N, O, _, _),
19015 O==F,
19016 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-13',
19017 P),
19018 lookup_ht(P, k(M, F), Q)
19019 -> prev_guard_list___6__2__2__5(Q,
19020 M,
19021 N,
19022 A,
19023 B,
19024 C,
19025 D,
19026 E,
19027 F,
19028 G,
19029 H,
19030 I,
19031 J,
19032 K,
19033 L)
19034 ; prev_guard_list___6__2__1__5(B,
19035 C,
19036 D,
19037 E,
19038 F,
19039 G,
19040 H,
19041 I,
19042 J,
19043 K,
19044 L)
19045 ).
19046prev_guard_list___6__2__2__5([], _, _, _, A, B, C, D, E, F, G, H, I, J, K) :-
19047 prev_guard_list___6__2__1__5(A,
19048 B,
19049 C,
19050 D,
19051 E,
19052 F,
19053 G,
19054 H,
19055 I,
19056 J,
19057 K).
19058prev_guard_list___6__2__2__5([A|B], C, D, E, F, G, H, I, J, K, L, M, N, O, P) :-
19059 ( A=suspension(_, active, _, _, Q, R, S, T, _),
19060 A\==E,
19061 Q==C,
19062 S==J,
19063 nb_getval('$chr_store_global_ground_chr_translate____multiple_occ_constraints_checked___1',
19064 U)
19065 -> prev_guard_list___6__2__3__5(U,
19066 R,
19067 T,
19068 A,
19069 B,
19070 C,
19071 D,
19072 E,
19073 F,
19074 G,
19075 H,
19076 I,
19077 J,
19078 K,
19079 L,
19080 M,
19081 N,
19082 O,
19083 P)
19084 ; prev_guard_list___6__2__2__5(B,
19085 C,
19086 D,
19087 E,
19088 F,
19089 G,
19090 H,
19091 I,
19092 J,
19093 K,
19094 L,
19095 M,
19096 N,
19097 O,
19098 P)
19099 ).
19100prev_guard_list___6__2__3__5([], _, _, _, A, B, C, D, E, F, G, H, I, J, K, L, M, N, O) :-
19101 prev_guard_list___6__2__2__5(A,
19102 B,
19103 C,
19104 D,
19105 E,
19106 F,
19107 G,
19108 H,
19109 I,
19110 J,
19111 K,
19112 L,
19113 M,
19114 N,
19115 O).
19116prev_guard_list___6__2__3__5([A|B], C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T) :-
19117 ( A=suspension(_, active, _, U),
19118 C<H,
19119 chr_pp_flag(occurrence_subsumption, on),
19120 K=pragma(rule(V, _, _, _), _, _, _, _),
19121 V\==[],
19122 \+ tree_set_memberchk(G, U)
19123 -> setarg(2, A, removed),
19124 arg(3, A, W),
19125 ( var(W)
19126 -> nb_getval('$chr_store_global_ground_chr_translate____multiple_occ_constraints_checked___1',
19127 X),
19128 X=[_|Y],
19129 b_setval('$chr_store_global_ground_chr_translate____multiple_occ_constraints_checked___1',
19130 Y),
19131 ( Y=[Z|_]
19132 -> setarg(3, Z, _)
19133 ; true
19134 )
19135 ; W=[_, _|Y],
19136 setarg(2, W, Y),
19137 ( Y=[Z|_]
19138 -> setarg(3, Z, W)
19139 ; true
19140 )
19141 ),
19142 arg(2, T, A1),
19143 setarg(2, T, active),
19144 ( A1==not_stored_yet
19145 -> nb_getval('$chr_store_global_ground_chr_translate____prev_guard_list___6',
19146 B1),
19147 C1=[T|B1],
19148 b_setval('$chr_store_global_ground_chr_translate____prev_guard_list___6',
19149 C1),
19150 ( B1=[D1|_]
19151 -> setarg(4, D1, C1)
19152 ; true
19153 ),
19154 nb_getval('$chr_store_multi_hash_chr_translate____prev_guard_list___6-1',
19155 E1),
19156 insert_ht(E1, N, T)
19157 ; true
19158 ),
19159 first_occ_in_rule(N, G, C, D),
19160 tree_set_add(U, G, F1),
19161 multiple_occ_constraints_checked(F1),
19162 ( T=suspension(_, active, _, _, _, _, _, _, _, _)
19163 -> setarg(2, T, inactive),
19164 prev_guard_list___6__2__3__5(B,
19165 C,
19166 D,
19167 E,
19168 F,
19169 G,
19170 H,
19171 I,
19172 J,
19173 K,
19174 L,
19175 M,
19176 N,
19177 O,
19178 P,
19179 Q,
19180 R,
19181 S,
19182 T)
19183 ; true
19184 )
19185 ; prev_guard_list___6__2__3__5(B,
19186 C,
19187 D,
19188 E,
19189 F,
19190 G,
19191 H,
19192 I,
19193 J,
19194 K,
19195 L,
19196 M,
19197 N,
19198 O,
19199 P,
19200 Q,
19201 R,
19202 S,
19203 T)
19204 ).
19205prev_guard_list___6__2(A, B, C, D, E, F, G) :-
19206 prev_guard_list___6__3(A,
19207 B,
19208 C,
19209 D,
19210 E,
19211 F,
19212 G).
19213prev_guard_list___6__3(A, _, _, _, _, _, B) :-
19214 nb_getval('$chr_store_global_ground_chr_translate____multiple_occ_constraints_checked___1',
19215 C),
19216 member(D, C),
19217 D=suspension(_, active, _, _),
19218 !,
19219 setarg(2, D, removed),
19220 arg(3, D, E),
19221 ( var(E)
19222 -> nb_getval('$chr_store_global_ground_chr_translate____multiple_occ_constraints_checked___1',
19223 F),
19224 F=[_|G],
19225 b_setval('$chr_store_global_ground_chr_translate____multiple_occ_constraints_checked___1',
19226 G),
19227 ( G=[H|_]
19228 -> setarg(3, H, _)
19229 ; true
19230 )
19231 ; E=[_, _|G],
19232 setarg(2, E, G),
19233 ( G=[H|_]
19234 -> setarg(3, H, E)
19235 ; true
19236 )
19237 ),
19238 ( var(B)
19239 -> true
19240 ; arg(2, B, I),
19241 setarg(2, B, removed),
19242 ( I==not_stored_yet
19243 -> true
19244 ; arg(4, B, J),
19245 ( var(J)
19246 -> nb_getval('$chr_store_global_ground_chr_translate____prev_guard_list___6',
19247 K),
19248 K=[_|L],
19249 b_setval('$chr_store_global_ground_chr_translate____prev_guard_list___6',
19250 L),
19251 ( L=[M|_]
19252 -> setarg(4, M, _)
19253 ; true
19254 )
19255 ; J=[_, _|L],
19256 setarg(2, J, L),
19257 ( L=[M|_]
19258 -> setarg(4, M, J)
19259 ; true
19260 )
19261 ),
19262 nb_getval('$chr_store_multi_hash_chr_translate____prev_guard_list___6-1',
19263 N),
19264 delete_ht(N, A, B)
19265 )
19266 ).
19267prev_guard_list___6__3(A, _, _, _, _, _, B) :-
19268 arg(2, B, C),
19269 setarg(2, B, active),
19270 ( C==not_stored_yet
19271 -> nb_getval('$chr_store_global_ground_chr_translate____prev_guard_list___6',
19272 D),
19273 E=[B|D],
19274 b_setval('$chr_store_global_ground_chr_translate____prev_guard_list___6',
19275 E),
19276 ( D=[F|_]
19277 -> setarg(4, F, E)
19278 ; true
19279 ),
19280 nb_getval('$chr_store_multi_hash_chr_translate____prev_guard_list___6-1',
19281 G),
19282 insert_ht(G, A, B)
19283 ; true
19284 ).
19285simplify_guards(A) :-
19286 nb_getval('$chr_store_multi_hash_chr_translate____rule___2-1', B),
19287 lookup_ht(B, A, C),
19288 member(D, C),
19289 D=suspension(_, active, _, _, _, E),
19290 !,
19291 E=pragma(rule(F, G, H, _), ids(I, J), _, _, A),
19292 append(F, G, K),
19293 make_head_matchings_explicit_not_negated(K, L, M),
19294 tree_set_empty(N),
19295 multiple_occ_constraints_checked(N),
19296 apply_guard_wrt_term(K, H, O),
19297 append(I, J, P),
19298 findall(tuple(Q, R, A)-(-A),
19299 ( member(S, P),
19300 get_occurrence_from_id(Q, R, A, S)
19301 ),
19302 T),
19303 empty_q(U),
19304 insert_list_q(T, U, V),
19305 next_prev_rule(V, _, W),
19306 next_prev_rule(W, X, Y),
19307 prev_guard_list(A,
19308 X,
19309 Y,
19310 L,
19311 H,
19312 [],
19313 M,
19314 [O]),
19315 Z is A+1,
19316 simplify_guards(Z).
19317simplify_guards(_).
19318set_all_passive(A) :-
19319 set_all_passive___1__0(A, _).
19320set_all_passive___1__0(A, B) :-
19321 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-3', C),
19322 lookup_ht(C, A, D),
19323 !,
19324 B=suspension(E, not_stored_yet, t, A),
19325 'chr gen_id'(E),
19326 set_all_passive___1__0__0__1(D, A, B).
19327set_all_passive___1__0__0__1([], A, B) :-
19328 set_all_passive___1__1(A, B).
19329set_all_passive___1__0__0__1([A|B], C, D) :-
19330 ( A=suspension(_, active, _, _, _, _, E, F, _),
19331 E==C,
19332 G=t(180, D, A),
19333 '$novel_production'(D, G),
19334 '$novel_production'(A, G)
19335 -> '$extend_history'(D, G),
19336 arg(2, D, H),
19337 setarg(2, D, active),
19338 ( H==not_stored_yet
19339 -> nb_getval('$chr_store_multi_hash_chr_translate____set_all_passive___1-1',
19340 I),
19341 insert_ht(I, C, D)
19342 ; true
19343 ),
19344 passive(C, F),
19345 ( D=suspension(_, active, _, _)
19346 -> setarg(2, D, inactive),
19347 set_all_passive___1__0__0__1(B, C, D)
19348 ; true
19349 )
19350 ; set_all_passive___1__0__0__1(B, C, D)
19351 ).
19352set_all_passive___1__0(A, B) :-
19353 B=suspension(C, not_stored_yet, t, A),
19354 'chr gen_id'(C),
19355 set_all_passive___1__1(A, B).
19356set_all_passive___1__1(A, B) :-
19357 ( var(B)
19358 -> true
19359 ; arg(2, B, C),
19360 setarg(2, B, removed),
19361 ( C==not_stored_yet
19362 -> true
19363 ; nb_getval('$chr_store_multi_hash_chr_translate____set_all_passive___1-1',
19364 D),
19365 delete_ht(D, A, B)
19366 )
19367 ).
19368precompute_head_matchings :-
19369 precompute_head_matchings___0__0(_).
19370precompute_head_matchings___0__0(A) :-
19371 nb_getval('$chr_store_global_ground_chr_translate____rule___2', B),
19372 !,
19373 A=suspension(C, not_stored_yet, t, _),
19374 'chr gen_id'(C),
19375 precompute_head_matchings___0__0__0__1(B, A).
19376precompute_head_matchings___0__0__0__1([], A) :-
19377 precompute_head_matchings___0__1(A).
19378precompute_head_matchings___0__0__0__1([A|B], C) :-
19379 ( A=suspension(_, active, _, _, D, E),
19380 F=t(174, A, C),
19381 '$novel_production'(A, F),
19382 '$novel_production'(C, F)
19383 -> '$extend_history'(C, F),
19384 arg(2, C, G),
19385 setarg(2, C, active),
19386 ( G==not_stored_yet
19387 -> nb_getval('$chr_store_global_ground_chr_translate____precompute_head_matchings___0',
19388 H),
19389 I=[C|H],
19390 b_setval('$chr_store_global_ground_chr_translate____precompute_head_matchings___0',
19391 I),
19392 ( H=[J|_]
19393 -> setarg(4, J, I)
19394 ; true
19395 )
19396 ; true
19397 ),
19398 E=pragma(rule(K, L, _, _), _, _, _, _),
19399 append(K, L, M),
19400 make_head_matchings_explicit_(M, N, O),
19401 copy_term_nat(N-O, P-Q),
19402 make_head_matchings_explicit_memo_table(D, P, Q),
19403 ( C=suspension(_, active, _, _)
19404 -> setarg(2, C, inactive),
19405 precompute_head_matchings___0__0__0__1(B, C)
19406 ; true
19407 )
19408 ; precompute_head_matchings___0__0__0__1(B, C)
19409 ).
19410precompute_head_matchings___0__0(A) :-
19411 A=suspension(B, not_stored_yet, t, _),
19412 'chr gen_id'(B),
19413 precompute_head_matchings___0__1(A).
19414precompute_head_matchings___0__1(A) :-
19415 ( var(A)
19416 -> true
19417 ; arg(2, A, B),
19418 setarg(2, A, removed),
19419 ( B==not_stored_yet
19420 -> true
19421 ; arg(4, A, C),
19422 ( var(C)
19423 -> nb_getval('$chr_store_global_ground_chr_translate____precompute_head_matchings___0',
19424 D),
19425 D=[_|E],
19426 b_setval('$chr_store_global_ground_chr_translate____precompute_head_matchings___0',
19427 E),
19428 ( E=[F|_]
19429 -> setarg(4, F, _)
19430 ; true
19431 )
19432 ; C=[_, _|E],
19433 setarg(2, C, E),
19434 ( E=[F|_]
19435 -> setarg(4, F, C)
19436 ; true
19437 )
19438 )
19439 )
19440 ).
19441make_head_matchings_explicit_memo_table(A, B, C) :-
19442 D=suspension(E, active, A, B, C),
19443 'chr gen_id'(E),
19444 nb_getval('$chr_store_multi_hash_chr_translate____make_head_matchings_explicit_memo_table___3-1',
19445 F),
19446 insert_ht(F, A, D).
19447make_head_matchings_explicit_memo_lookup(A, B, C) :-
19448 nb_getval('$chr_store_multi_hash_chr_translate____make_head_matchings_explicit_memo_table___3-1',
19449 D),
19450 lookup_ht(D, A, E),
19451 member(F, E),
19452 F=suspension(_, active, _, G, H),
19453 !,
19454 B=G,
19455 C=H.
19456make_head_matchings_explicit_memo_lookup(_, _, _) :-
19457 fail.
19458first_occ_in_rule(A, B, C, _) :-
19459 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-13',
19460 D),
19461 lookup_ht(D, k(B, A), E),
19462 member(F, E),
19463 F=suspension(_, active, _, _, _, G, _, H, _),
19464 G<C,
19465 !,
19466 first_occ_in_rule(A, B, G, H).
19467first_occ_in_rule(A, B, C, D) :-
19468 B=E/F,
19469 functor(G, E, F),
19470 next_occ_in_rule(A, B, C, D, [], G).
19471next_occ_in_rule(A, B, C, D, _, E) :-
19472 nb_getval('$chr_store_multi_hash_chr_translate____passive___2-1', F),
19473 lookup_ht(F, A, G),
19474 member(H, G),
19475 H=suspension(_, active, _, _, I),
19476 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-134',
19477 J),
19478 lookup_ht(J, k(B, A, I), K),
19479 member(L, K),
19480 L=suspension(_, active, _, _, _, M, _, _, _),
19481 M is C+1,
19482 !,
19483 next_occ_in_rule(A, B, M, D, _, E).
19484next_occ_in_rule(A, B, C, D, E, F) :-
19485 nb_getval('$chr_store_multi_hash_chr_translate____prev_guard_list___6-1',
19486 G),
19487 lookup_ht(G, A, H),
19488 member(I, H),
19489 I=suspension(_, active, _, _, _, J, K, L, M, _),
19490 nb_getval('$chr_store_multi_hash_chr_translate____rule___2-1', N),
19491 lookup_ht(N, A, O),
19492 member(P, O),
19493 P=suspension(_, active, _, _, _, Q),
19494 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-13',
19495 R),
19496 lookup_ht(R, k(B, A), S),
19497 member(T, S),
19498 T=suspension(_, active, _, _, _, U, _, V, _),
19499 U is C+1,
19500 Q=pragma(rule(W, X, K, _), ids(_, _), _, _, A),
19501 !,
19502 append(W, X, Y),
19503 add_failing_occ(Q,
19504 Y,
19505 J,
19506 D,
19507 Z,
19508 F,
19509 M,
19510 B,
19511 A1),
19512 ( Z==[chr_pp_void_info]
19513 -> next_occ_in_rule(A, B, U, V, E, F)
19514 ; append(Z, E, B1),
19515 add_failing_occ(Q,
19516 Y,
19517 J,
19518 V,
19519 C1,
19520 F,
19521 M,
19522 B,
19523 D1),
19524 copy_term(L, E1),
19525 variable_replacement(L, E1, F1),
19526 copy_with_variable_replacement(L, G1, A1),
19527 copy_with_variable_replacement(L, H1, D1),
19528 copy_with_variable_replacement(H1, I1, F1),
19529 append(B1, G1, J1),
19530 append(J1, I1, K1),
19531 copy_with_variable_replacement(M, L1, A1),
19532 copy_with_variable_replacement(M, M1, D1),
19533 append(M1, K1, N1),
19534 append([chr_pp_active_constraint(F)|L1], N1, O1),
19535 list2conj(C1, P1),
19536 copy_term((B1, K1, O1, P1, F),
19537 (_, _, Q1, R1, _)),
19538 ( P1\=chr_pp_void_info
19539 -> ( guard_entailment:entails_guard(Q1, R1)
19540 -> passive(A, V)
19541 ; true
19542 )
19543 ; true
19544 ),
19545 !,
19546 next_occ_in_rule(A, B, U, V, B1, F)
19547 ).
19548next_occ_in_rule(_, _, _, _, _, _).
19549multiple_occ_constraints_checked(A) :-
19550 nb_getval('$chr_store_global_ground_chr_translate____prev_guard_list___6',
19551 B),
19552 member(C, B),
19553 C=suspension(_, active, _, _, D, _, _, _, _, _),
19554 ( nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-3',
19555 E),
19556 lookup_ht(E, D, F),
19557 member(G, F),
19558 G=suspension(_, active, _, _, H, I, _, _, _),
19559 nb_getval('$chr_store_multi_hash_chr_translate____rule___2-1', J),
19560 lookup_ht(J, D, K),
19561 member(L, K),
19562 L=suspension(_, active, _, _, _, M),
19563 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-13',
19564 N),
19565 lookup_ht(N, k(H, D), O),
19566 member(P, O),
19567 P=suspension(_, active, _, _, _, Q, _, R, _),
19568 P\==G,
19569 Q<I,
19570 chr_pp_flag(occurrence_subsumption, on),
19571 M=pragma(rule(S, _, _, _), _, _, _, _),
19572 S\==[],
19573 \+ tree_set_memberchk(H, A),
19574 !,
19575 first_occ_in_rule(D, H, Q, R),
19576 tree_set_add(A, H, T),
19577 multiple_occ_constraints_checked(T)
19578 ; !,
19579 setarg(2, C, removed),
19580 arg(4, C, U),
19581 ( var(U)
19582 -> nb_getval('$chr_store_global_ground_chr_translate____prev_guard_list___6',
19583 V),
19584 V=[_|W],
19585 b_setval('$chr_store_global_ground_chr_translate____prev_guard_list___6',
19586 W),
19587 ( W=[X|_]
19588 -> setarg(4, X, _)
19589 ; true
19590 )
19591 ; U=[_, _|W],
19592 setarg(2, U, W),
19593 ( W=[X|_]
19594 -> setarg(4, X, U)
19595 ; true
19596 )
19597 ),
19598 nb_getval('$chr_store_multi_hash_chr_translate____prev_guard_list___6-1',
19599 Y),
19600 delete_ht(Y, D, C)
19601 ).
19602multiple_occ_constraints_checked(A) :-
19603 B=suspension(C, active, _, A),
19604 'chr gen_id'(C),
19605 nb_getval('$chr_store_global_ground_chr_translate____multiple_occ_constraints_checked___1',
19606 D),
19607 E=[B|D],
19608 b_setval('$chr_store_global_ground_chr_translate____multiple_occ_constraints_checked___1',
19609 E),
19610 ( D=[F|_]
19611 -> setarg(3, F, E)
19612 ; true
19613 ).
19614type_definition(A, B) :-
19615 type_definition___2__0(A, B, _).
19616type_definition___2__0(A, _, B) :-
19617 nb_getval('$chr_store_global_list_chr_translate____type_definition___2',
19618 C),
19619 member(D, C),
19620 D=suspension(_, active, _, _, _, E, _),
19621 ( functor(A, F, G),
19622 functor(E, F, G),
19623 !,
19624 D=suspension(_, _, _, _, _, H, I),
19625 setarg(2, D, removed),
19626 term_variables(term(H, I), J),
19627 arg(5, D, K),
19628 ( var(K)
19629 -> nb_getval('$chr_store_global_list_chr_translate____type_definition___2',
19630 L),
19631 L=[_|M],
19632 b_setval('$chr_store_global_list_chr_translate____type_definition___2',
19633 M),
19634 ( M=[N|_]
19635 -> setarg(5, N, _)
19636 ; true
19637 )
19638 ; K=[_, _|M],
19639 setarg(2, K, M),
19640 ( M=[N|_]
19641 -> setarg(5, N, K)
19642 ; true
19643 )
19644 ),
19645 detach_type_definition___2(J, D),
19646 ( var(B)
19647 -> true
19648 ; B=suspension(_, O, _, _, _, P, Q),
19649 setarg(2, B, removed),
19650 ( O==not_stored_yet
19651 -> R=[]
19652 ; term_variables(term(P, Q), R),
19653 arg(5, B, S),
19654 ( var(S)
19655 -> nb_getval('$chr_store_global_list_chr_translate____type_definition___2',
19656 T),
19657 T=[_|U],
19658 b_setval('$chr_store_global_list_chr_translate____type_definition___2',
19659 U),
19660 ( U=[V|_]
19661 -> setarg(5, V, _)
19662 ; true
19663 )
19664 ; S=[_, _|U],
19665 setarg(2, S, U),
19666 ( U=[V|_]
19667 -> setarg(5, V, S)
19668 ; true
19669 )
19670 ),
19671 detach_type_definition___2(R, B)
19672 )
19673 ),
19674 chr_error(type_error,
19675 'Multiple definitions for type: ~w/~w.\n',
19676 [F, G])
19677 ; functor(E, W, X),
19678 functor(A, W, X),
19679 !,
19680 D=suspension(_, _, _, _, _, Y, Z),
19681 setarg(2, D, removed),
19682 term_variables(term(Y, Z), A1),
19683 arg(5, D, B1),
19684 ( var(B1)
19685 -> nb_getval('$chr_store_global_list_chr_translate____type_definition___2',
19686 C1),
19687 C1=[_|D1],
19688 b_setval('$chr_store_global_list_chr_translate____type_definition___2',
19689 D1),
19690 ( D1=[E1|_]
19691 -> setarg(5, E1, _)
19692 ; true
19693 )
19694 ; B1=[_, _|D1],
19695 setarg(2, B1, D1),
19696 ( D1=[E1|_]
19697 -> setarg(5, E1, B1)
19698 ; true
19699 )
19700 ),
19701 detach_type_definition___2(A1, D),
19702 ( var(B)
19703 -> true
19704 ; B=suspension(_, F1, _, _, _, G1, H1),
19705 setarg(2, B, removed),
19706 ( F1==not_stored_yet
19707 -> I1=[]
19708 ; term_variables(term(G1, H1), I1),
19709 arg(5, B, J1),
19710 ( var(J1)
19711 -> nb_getval('$chr_store_global_list_chr_translate____type_definition___2',
19712 K1),
19713 K1=[_|L1],
19714 b_setval('$chr_store_global_list_chr_translate____type_definition___2',
19715 L1),
19716 ( L1=[M1|_]
19717 -> setarg(5, M1, _)
19718 ; true
19719 )
19720 ; J1=[_, _|L1],
19721 setarg(2, J1, L1),
19722 ( L1=[M1|_]
19723 -> setarg(5, M1, J1)
19724 ; true
19725 )
19726 ),
19727 detach_type_definition___2(I1, B)
19728 )
19729 ),
19730 chr_error(type_error,
19731 'Multiple definitions for type: ~w/~w.\n',
19732 [W, X])
19733 ).
19734type_definition___2__0(A, _, B) :-
19735 nb_getval('$chr_store_global_list_chr_translate____type_alias___2', C),
19736 member(D, C),
19737 D=suspension(_, active, _, _, _, E, _),
19738 functor(A, F, G),
19739 functor(E, F, G),
19740 !,
19741 D=suspension(_, _, _, _, _, H, I),
19742 setarg(2, D, removed),
19743 term_variables(term(H, I), J),
19744 arg(5, D, K),
19745 ( var(K)
19746 -> nb_getval('$chr_store_global_list_chr_translate____type_alias___2',
19747 L),
19748 L=[_|M],
19749 b_setval('$chr_store_global_list_chr_translate____type_alias___2',
19750 M),
19751 ( M=[N|_]
19752 -> setarg(5, N, _)
19753 ; true
19754 )
19755 ; K=[_, _|M],
19756 setarg(2, K, M),
19757 ( M=[N|_]
19758 -> setarg(5, N, K)
19759 ; true
19760 )
19761 ),
19762 detach_type_alias___2(J, D),
19763 ( var(B)
19764 -> true
19765 ; B=suspension(_, O, _, _, _, P, Q),
19766 setarg(2, B, removed),
19767 ( O==not_stored_yet
19768 -> R=[]
19769 ; term_variables(term(P, Q), R),
19770 arg(5, B, S),
19771 ( var(S)
19772 -> nb_getval('$chr_store_global_list_chr_translate____type_definition___2',
19773 T),
19774 T=[_|U],
19775 b_setval('$chr_store_global_list_chr_translate____type_definition___2',
19776 U),
19777 ( U=[V|_]
19778 -> setarg(5, V, _)
19779 ; true
19780 )
19781 ; S=[_, _|U],
19782 setarg(2, S, U),
19783 ( U=[V|_]
19784 -> setarg(5, V, S)
19785 ; true
19786 )
19787 ),
19788 detach_type_definition___2(R, B)
19789 )
19790 ),
19791 chr_error(type_error,
19792 'Multiple definitions for type, once in a type definition and once as a type alias: ~w/~w.\n',
19793 [F, G]).
19794type_definition___2__0(A, B, C) :-
19795 nb_getval('$chr_store_global_list_chr_translate____unalias_type___2',
19796 D),
19797 !,
19798 ( var(C)
19799 -> C=suspension(E, not_stored_yet, t, 0, _, A, B),
19800 'chr gen_id'(E)
19801 ; true
19802 ),
19803 type_definition___2__0__0__5(D, A, B, C).
19804type_definition___2__0__0__5([], A, B, C) :-
19805 type_definition___2__1(A, B, C).
19806type_definition___2__0__0__5([A|B], C, D, E) :-
19807 ( A=suspension(_, active, _, F, G),
19808 nonvar(C),
19809 functor(C, H, I),
19810 functor(F, H, I)
19811 -> A=suspension(_, _, _, J, _),
19812 setarg(2, A, removed),
19813 term_variables(J, K),
19814 ( arg(3, A, L),
19815 ( var(L)
19816 -> nb_getval('$chr_store_global_list_chr_translate____unalias_type___2',
19817 M),
19818 M=[_|N],
19819 b_setval('$chr_store_global_list_chr_translate____unalias_type___2',
19820 N),
19821 ( N=[O|_]
19822 -> setarg(3, O, _)
19823 ; true
19824 )
19825 ; L=[_, _|N],
19826 setarg(2, L, N),
19827 ( N=[O|_]
19828 -> setarg(3, O, L)
19829 ; true
19830 )
19831 )
19832 ),
19833 detach_unalias_type___2(K, A),
19834 arg(2, E, P),
19835 setarg(2, E, active),
19836 ( arg(4, E, Q),
19837 R is Q+1,
19838 setarg(4, E, R)
19839 ),
19840 ( P==not_stored_yet
19841 -> E=suspension(_, _, _, _, _, S, T),
19842 term_variables(term(S, T), U),
19843 nb_getval('$chr_store_global_list_chr_translate____type_definition___2',
19844 V),
19845 W=[E|V],
19846 b_setval('$chr_store_global_list_chr_translate____type_definition___2',
19847 W),
19848 ( V=[X|_]
19849 -> setarg(5, X, W)
19850 ; true
19851 ),
19852 attach_type_definition___2(U, E)
19853 ; true
19854 ),
19855 G=F,
19856 ( E=suspension(_, active, _, R, _, _, _)
19857 -> setarg(2, E, inactive),
19858 type_definition___2__0__0__5(B, C, D, E)
19859 ; true
19860 )
19861 ; type_definition___2__0__0__5(B, C, D, E)
19862 ).
19863type_definition___2__0(A, B, C) :-
19864 ( var(C)
19865 -> C=suspension(D, not_stored_yet, t, 0, _, A, B),
19866 'chr gen_id'(D)
19867 ; true
19868 ),
19869 type_definition___2__1(A, B, C).
19870type_definition___2__1(A, B, C) :-
19871 nb_getval('$chr_store_global_ground_chr_translate____dynamic_type_check___0',
19872 D),
19873 !,
19874 type_definition___2__1__0__7(D, A, B, C).
19875type_definition___2__1__0__7([], A, B, C) :-
19876 type_definition___2__2(A, B, C).
19877type_definition___2__1__0__7([A|B], C, D, E) :-
19878 ( A=suspension(_, active, _, _),
19879 F=t(235, E, A),
19880 '$novel_production'(E, F),
19881 '$novel_production'(A, F)
19882 -> '$extend_history'(E, F),
19883 arg(2, E, G),
19884 setarg(2, E, active),
19885 ( arg(4, E, H),
19886 I is H+1,
19887 setarg(4, E, I)
19888 ),
19889 ( G==not_stored_yet
19890 -> E=suspension(_, _, _, _, _, J, K),
19891 term_variables(term(J, K), L),
19892 nb_getval('$chr_store_global_list_chr_translate____type_definition___2',
19893 M),
19894 N=[E|M],
19895 b_setval('$chr_store_global_list_chr_translate____type_definition___2',
19896 N),
19897 ( M=[O|_]
19898 -> setarg(5, O, N)
19899 ; true
19900 ),
19901 attach_type_definition___2(L, E)
19902 ; true
19903 ),
19904 copy_term_nat(C-D, P-Q),
19905 maplist(dynamic_type_check_clause(P), Q, R),
19906 dynamic_type_check_clauses(R),
19907 ( E=suspension(_, active, _, I, _, _, _)
19908 -> setarg(2, E, inactive),
19909 type_definition___2__1__0__7(B, C, D, E)
19910 ; true
19911 )
19912 ; type_definition___2__1__0__7(B, C, D, E)
19913 ).
19914type_definition___2__1(A, B, C) :-
19915 type_definition___2__2(A, B, C).
19916type_definition___2__2(A, B, C) :-
19917 nb_getval('$chr_store_global_list_chr_translate____atomic_type___1', D),
19918 !,
19919 type_definition___2__2__0__8(D, A, B, C).
19920type_definition___2__2__0__8([], A, B, C) :-
19921 type_definition___2__3(A, B, C).
19922type_definition___2__2__0__8([A|B], C, D, E) :-
19923 ( A=suspension(_, active, _, F),
19924 functor(F, G, H),
19925 functor(C, G, H)
19926 -> A=suspension(_, _, _, I),
19927 setarg(2, A, removed),
19928 term_variables(I, J),
19929 ( arg(3, A, K),
19930 ( var(K)
19931 -> nb_getval('$chr_store_global_list_chr_translate____atomic_type___1',
19932 L),
19933 L=[_|M],
19934 b_setval('$chr_store_global_list_chr_translate____atomic_type___1',
19935 M),
19936 ( M=[N|_]
19937 -> setarg(3, N, _)
19938 ; true
19939 )
19940 ; K=[_, _|M],
19941 setarg(2, K, M),
19942 ( M=[N|_]
19943 -> setarg(3, N, K)
19944 ; true
19945 )
19946 )
19947 ),
19948 detach_atomic_type___1(J, A),
19949 arg(2, E, O),
19950 setarg(2, E, active),
19951 ( arg(4, E, P),
19952 Q is P+1,
19953 setarg(4, E, Q)
19954 ),
19955 ( O==not_stored_yet
19956 -> E=suspension(_, _, _, _, _, R, S),
19957 term_variables(term(R, S), T),
19958 nb_getval('$chr_store_global_list_chr_translate____type_definition___2',
19959 U),
19960 V=[E|U],
19961 b_setval('$chr_store_global_list_chr_translate____type_definition___2',
19962 V),
19963 ( U=[W|_]
19964 -> setarg(5, W, V)
19965 ; true
19966 ),
19967 attach_type_definition___2(T, E)
19968 ; true
19969 ),
19970 maplist(atomic, D),
19971 ( E=suspension(_, active, _, Q, _, _, _)
19972 -> setarg(2, E, inactive),
19973 type_definition___2__2__0__8(B, C, D, E)
19974 ; true
19975 )
19976 ; type_definition___2__2__0__8(B, C, D, E)
19977 ).
19978type_definition___2__2(A, B, C) :-
19979 type_definition___2__3(A, B, C).
19980type_definition___2__3(_, _, A) :-
19981 arg(2, A, B),
19982 setarg(2, A, active),
19983 arg(4, A, C),
19984 D is C+1,
19985 setarg(4, A, D),
19986 ( B==not_stored_yet
19987 -> A=suspension(_, _, _, _, _, E, F),
19988 term_variables(term(E, F), G),
19989 nb_getval('$chr_store_global_list_chr_translate____type_definition___2',
19990 H),
19991 I=[A|H],
19992 b_setval('$chr_store_global_list_chr_translate____type_definition___2',
19993 I),
19994 ( H=[J|_]
19995 -> setarg(5, J, I)
19996 ; true
19997 ),
19998 attach_type_definition___2(G, A)
19999 ; true
20000 ).
20001type_alias(A, B) :-
20002 type_alias___2__0(A, B, _).
20003type_alias___2__0(A, B, C) :-
20004 var(A),
20005 !,
20006 ( var(C)
20007 -> true
20008 ; C=suspension(_, D, _, _, _, E, F),
20009 setarg(2, C, removed),
20010 ( D==not_stored_yet
20011 -> G=[]
20012 ; term_variables(term(E, F), G),
20013 arg(5, C, H),
20014 ( var(H)
20015 -> nb_getval('$chr_store_global_list_chr_translate____type_alias___2',
20016 I),
20017 I=[_|J],
20018 b_setval('$chr_store_global_list_chr_translate____type_alias___2',
20019 J),
20020 ( J=[K|_]
20021 -> setarg(5, K, _)
20022 ; true
20023 )
20024 ; H=[_, _|J],
20025 setarg(2, H, J),
20026 ( J=[K|_]
20027 -> setarg(5, K, H)
20028 ; true
20029 )
20030 ),
20031 detach_type_alias___2(G, C)
20032 )
20033 ),
20034 chr_error(type_error,
20035 'Variable alias definition: "~w".\n',
20036 [(:-chr_type A==B)]).
20037type_alias___2__0(A, B, C) :-
20038 var(B),
20039 !,
20040 ( var(C)
20041 -> true
20042 ; C=suspension(_, D, _, _, _, E, F),
20043 setarg(2, C, removed),
20044 ( D==not_stored_yet
20045 -> G=[]
20046 ; term_variables(term(E, F), G),
20047 arg(5, C, H),
20048 ( var(H)
20049 -> nb_getval('$chr_store_global_list_chr_translate____type_alias___2',
20050 I),
20051 I=[_|J],
20052 b_setval('$chr_store_global_list_chr_translate____type_alias___2',
20053 J),
20054 ( J=[K|_]
20055 -> setarg(5, K, _)
20056 ; true
20057 )
20058 ; H=[_, _|J],
20059 setarg(2, H, J),
20060 ( J=[K|_]
20061 -> setarg(5, K, H)
20062 ; true
20063 )
20064 ),
20065 detach_type_alias___2(G, C)
20066 )
20067 ),
20068 chr_error(type_error,
20069 'Variable alias definition: "~w".\n',
20070 [(:-chr_type A==B)]).
20071type_alias___2__0(A, B, C) :-
20072 subsumes_term(A, B),
20073 !,
20074 ( var(C)
20075 -> true
20076 ; C=suspension(_, D, _, _, _, E, F),
20077 setarg(2, C, removed),
20078 ( D==not_stored_yet
20079 -> G=[]
20080 ; term_variables(term(E, F), G),
20081 arg(5, C, H),
20082 ( var(H)
20083 -> nb_getval('$chr_store_global_list_chr_translate____type_alias___2',
20084 I),
20085 I=[_|J],
20086 b_setval('$chr_store_global_list_chr_translate____type_alias___2',
20087 J),
20088 ( J=[K|_]
20089 -> setarg(5, K, _)
20090 ; true
20091 )
20092 ; H=[_, _|J],
20093 setarg(2, H, J),
20094 ( J=[K|_]
20095 -> setarg(5, K, H)
20096 ; true
20097 )
20098 ),
20099 detach_type_alias___2(G, C)
20100 )
20101 ),
20102 chr_error(type_error, 'Cyclic alias definition: "~w".\n', [A==B]).
20103type_alias___2__0(A, B, C) :-
20104 nb_getval('$chr_store_global_list_chr_translate____type_alias___2', D),
20105 ( member(E, D),
20106 E=suspension(_, active, _, _, _, F, G),
20107 ( ( functor(A, H, I),
20108 functor(F, H, I),
20109 \+ A\=F,
20110 !,
20111 E=suspension(_, _, _, _, _, J, K),
20112 setarg(2, E, removed),
20113 term_variables(term(J, K), L),
20114 arg(5, E, M),
20115 ( var(M)
20116 -> nb_getval('$chr_store_global_list_chr_translate____type_alias___2',
20117 N),
20118 N=[_|O],
20119 b_setval('$chr_store_global_list_chr_translate____type_alias___2',
20120 O),
20121 ( O=[P|_]
20122 -> setarg(5, P, _)
20123 ; true
20124 )
20125 ; M=[_, _|O],
20126 setarg(2, M, O),
20127 ( O=[P|_]
20128 -> setarg(5, P, M)
20129 ; true
20130 )
20131 ),
20132 detach_type_alias___2(L, E),
20133 ( var(C)
20134 -> true
20135 ; C=suspension(_, Q, _, _, _, R, S),
20136 setarg(2, C, removed),
20137 ( Q==not_stored_yet
20138 -> T=[]
20139 ; term_variables(term(R, S), T),
20140 arg(5, C, U),
20141 ( var(U)
20142 -> nb_getval('$chr_store_global_list_chr_translate____type_alias___2',
20143 V),
20144 V=[_|W],
20145 b_setval('$chr_store_global_list_chr_translate____type_alias___2',
20146 W),
20147 ( W=[X|_]
20148 -> setarg(5, X, _)
20149 ; true
20150 )
20151 ; U=[_, _|W],
20152 setarg(2, U, W),
20153 ( W=[X|_]
20154 -> setarg(5, X, U)
20155 ; true
20156 )
20157 ),
20158 detach_type_alias___2(T, C)
20159 )
20160 ),
20161 copy_term_nat(A, Y),
20162 copy_term_nat(F, Z),
20163 Y=Z,
20164 chr_error(type_error,
20165 'Ambiguous type aliases: you have defined \n\t`~w\'\n\t`~w\'\n\tresulting in two definitions for "~w".\n',
20166 [A==B, F==G, Y])
20167 ; functor(F, A1, B1),
20168 functor(A, A1, B1),
20169 \+ F\=A,
20170 !,
20171 E=suspension(_, _, _, _, _, C1, D1),
20172 setarg(2, E, removed),
20173 term_variables(term(C1, D1), E1),
20174 arg(5, E, F1),
20175 ( var(F1)
20176 -> nb_getval('$chr_store_global_list_chr_translate____type_alias___2',
20177 G1),
20178 G1=[_|H1],
20179 b_setval('$chr_store_global_list_chr_translate____type_alias___2',
20180 H1),
20181 ( H1=[I1|_]
20182 -> setarg(5, I1, _)
20183 ; true
20184 )
20185 ; F1=[_, _|H1],
20186 setarg(2, F1, H1),
20187 ( H1=[I1|_]
20188 -> setarg(5, I1, F1)
20189 ; true
20190 )
20191 ),
20192 detach_type_alias___2(E1, E),
20193 ( var(C)
20194 -> true
20195 ; C=suspension(_, J1, _, _, _, K1, L1),
20196 setarg(2, C, removed),
20197 ( J1==not_stored_yet
20198 -> M1=[]
20199 ; term_variables(term(K1, L1), M1),
20200 arg(5, C, N1),
20201 ( var(N1)
20202 -> nb_getval('$chr_store_global_list_chr_translate____type_alias___2',
20203 O1),
20204 O1=[_|P1],
20205 b_setval('$chr_store_global_list_chr_translate____type_alias___2',
20206 P1),
20207 ( P1=[Q1|_]
20208 -> setarg(5, Q1, _)
20209 ; true
20210 )
20211 ; N1=[_, _|P1],
20212 setarg(2, N1, P1),
20213 ( P1=[Q1|_]
20214 -> setarg(5, Q1, N1)
20215 ; true
20216 )
20217 ),
20218 detach_type_alias___2(M1, C)
20219 )
20220 ),
20221 copy_term_nat(F, R1),
20222 copy_term_nat(A, S1),
20223 R1=S1,
20224 chr_error(type_error,
20225 'Ambiguous type aliases: you have defined \n\t`~w\'\n\t`~w\'\n\tresulting in two definitions for "~w".\n',
20226 [F==G, A==B, R1])
20227 )
20228 ; functor(F, T1, U1),
20229 functor(B, T1, U1),
20230 copy_term_nat((A, B, F, G),
20231 (V1, W1, X1, Y1)),
20232 subsumes_term(X1, W1),
20233 !,
20234 ( var(C)
20235 -> true
20236 ; C=suspension(_, Z1, _, _, _, A2, B2),
20237 setarg(2, C, removed),
20238 ( Z1==not_stored_yet
20239 -> C2=[]
20240 ; term_variables(term(A2, B2), C2),
20241 arg(5, C, D2),
20242 ( var(D2)
20243 -> nb_getval('$chr_store_global_list_chr_translate____type_alias___2',
20244 E2),
20245 E2=[_|F2],
20246 b_setval('$chr_store_global_list_chr_translate____type_alias___2',
20247 F2),
20248 ( F2=[G2|_]
20249 -> setarg(5, G2, _)
20250 ; true
20251 )
20252 ; D2=[_, _|F2],
20253 setarg(2, D2, F2),
20254 ( F2=[G2|_]
20255 -> setarg(5, G2, D2)
20256 ; true
20257 )
20258 ),
20259 detach_type_alias___2(C2, C)
20260 )
20261 ),
20262 type_alias(V1, Y1)
20263 )
20264 ; !,
20265 ( var(C)
20266 -> C=suspension(H2, not_stored_yet, t, 0, _, A, B),
20267 'chr gen_id'(H2)
20268 ; true
20269 ),
20270 type_alias___2__0__0__7(D, A, B, C)
20271 ).
20272type_alias___2__0__0__7([], A, B, C) :-
20273 type_alias___2__1(A, B, C).
20274type_alias___2__0__0__7([A|B], C, D, E) :-
20275 ( A=suspension(_, active, _, _, _, F, G),
20276 functor(C, H, I),
20277 functor(G, H, I),
20278 copy_term_nat((F, G, C, D),
20279 (J, K, L, M)),
20280 subsumes_term(L, K)
20281 -> A=suspension(_, _, _, _, _, N, O),
20282 setarg(2, A, removed),
20283 term_variables(term(N, O), P),
20284 ( arg(5, A, Q),
20285 ( var(Q)
20286 -> nb_getval('$chr_store_global_list_chr_translate____type_alias___2',
20287 R),
20288 R=[_|S],
20289 b_setval('$chr_store_global_list_chr_translate____type_alias___2',
20290 S),
20291 ( S=[T|_]
20292 -> setarg(5, T, _)
20293 ; true
20294 )
20295 ; Q=[_, _|S],
20296 setarg(2, Q, S),
20297 ( S=[T|_]
20298 -> setarg(5, T, Q)
20299 ; true
20300 )
20301 )
20302 ),
20303 detach_type_alias___2(P, A),
20304 arg(2, E, U),
20305 setarg(2, E, active),
20306 ( arg(4, E, V),
20307 W is V+1,
20308 setarg(4, E, W)
20309 ),
20310 ( U==not_stored_yet
20311 -> E=suspension(_, _, _, _, _, X, Y),
20312 term_variables(term(X, Y), Z),
20313 nb_getval('$chr_store_global_list_chr_translate____type_alias___2',
20314 A1),
20315 B1=[E|A1],
20316 b_setval('$chr_store_global_list_chr_translate____type_alias___2',
20317 B1),
20318 ( A1=[C1|_]
20319 -> setarg(5, C1, B1)
20320 ; true
20321 ),
20322 attach_type_alias___2(Z, E)
20323 ; true
20324 ),
20325 type_alias(J, M),
20326 ( E=suspension(_, active, _, W, _, _, _)
20327 -> setarg(2, E, inactive),
20328 type_alias___2__0__0__7(B, C, D, E)
20329 ; true
20330 )
20331 ; type_alias___2__0__0__7(B, C, D, E)
20332 ).
20333type_alias___2__0(A, B, C) :-
20334 ( var(C)
20335 -> C=suspension(D, not_stored_yet, t, 0, _, A, B),
20336 'chr gen_id'(D)
20337 ; true
20338 ),
20339 type_alias___2__1(A, B, C).
20340type_alias___2__1(A, _, B) :-
20341 nb_getval('$chr_store_global_list_chr_translate____type_definition___2',
20342 C),
20343 member(D, C),
20344 D=suspension(_, active, _, _, _, E, _),
20345 functor(E, F, G),
20346 functor(A, F, G),
20347 !,
20348 D=suspension(_, _, _, _, _, H, I),
20349 setarg(2, D, removed),
20350 term_variables(term(H, I), J),
20351 arg(5, D, K),
20352 ( var(K)
20353 -> nb_getval('$chr_store_global_list_chr_translate____type_definition___2',
20354 L),
20355 L=[_|M],
20356 b_setval('$chr_store_global_list_chr_translate____type_definition___2',
20357 M),
20358 ( M=[N|_]
20359 -> setarg(5, N, _)
20360 ; true
20361 )
20362 ; K=[_, _|M],
20363 setarg(2, K, M),
20364 ( M=[N|_]
20365 -> setarg(5, N, K)
20366 ; true
20367 )
20368 ),
20369 detach_type_definition___2(J, D),
20370 ( var(B)
20371 -> true
20372 ; B=suspension(_, O, _, _, _, P, Q),
20373 setarg(2, B, removed),
20374 ( O==not_stored_yet
20375 -> R=[]
20376 ; term_variables(term(P, Q), R),
20377 arg(5, B, S),
20378 ( var(S)
20379 -> nb_getval('$chr_store_global_list_chr_translate____type_alias___2',
20380 T),
20381 T=[_|U],
20382 b_setval('$chr_store_global_list_chr_translate____type_alias___2',
20383 U),
20384 ( U=[V|_]
20385 -> setarg(5, V, _)
20386 ; true
20387 )
20388 ; S=[_, _|U],
20389 setarg(2, S, U),
20390 ( U=[V|_]
20391 -> setarg(5, V, S)
20392 ; true
20393 )
20394 ),
20395 detach_type_alias___2(R, B)
20396 )
20397 ),
20398 chr_error(type_error,
20399 'Multiple definitions for type, once in a type definition and once as a type alias: ~w/~w.\n',
20400 [F, G]).
20401type_alias___2__1(A, B, C) :-
20402 nb_getval('$chr_store_global_list_chr_translate____unalias_type___2',
20403 D),
20404 !,
20405 type_alias___2__1__0__10(D, A, B, C).
20406type_alias___2__1__0__10([], A, B, C) :-
20407 type_alias___2__2(A, B, C).
20408type_alias___2__1__0__10([A|B], C, D, E) :-
20409 ( A=suspension(_, active, _, F, G),
20410 functor(C, H, I),
20411 functor(F, H, I),
20412 copy_term_nat((C, D), (J, K)),
20413 F=J
20414 -> A=suspension(_, _, _, L, _),
20415 setarg(2, A, removed),
20416 term_variables(L, M),
20417 ( arg(3, A, N),
20418 ( var(N)
20419 -> nb_getval('$chr_store_global_list_chr_translate____unalias_type___2',
20420 O),
20421 O=[_|P],
20422 b_setval('$chr_store_global_list_chr_translate____unalias_type___2',
20423 P),
20424 ( P=[Q|_]
20425 -> setarg(3, Q, _)
20426 ; true
20427 )
20428 ; N=[_, _|P],
20429 setarg(2, N, P),
20430 ( P=[Q|_]
20431 -> setarg(3, Q, N)
20432 ; true
20433 )
20434 )
20435 ),
20436 detach_unalias_type___2(M, A),
20437 arg(2, E, R),
20438 setarg(2, E, active),
20439 ( arg(4, E, S),
20440 T is S+1,
20441 setarg(4, E, T)
20442 ),
20443 ( R==not_stored_yet
20444 -> E=suspension(_, _, _, _, _, U, V),
20445 term_variables(term(U, V), W),
20446 nb_getval('$chr_store_global_list_chr_translate____type_alias___2',
20447 X),
20448 Y=[E|X],
20449 b_setval('$chr_store_global_list_chr_translate____type_alias___2',
20450 Y),
20451 ( X=[Z|_]
20452 -> setarg(5, Z, Y)
20453 ; true
20454 ),
20455 attach_type_alias___2(W, E)
20456 ; true
20457 ),
20458 unalias_type(K, G),
20459 ( E=suspension(_, active, _, T, _, _, _)
20460 -> setarg(2, E, inactive),
20461 type_alias___2__1__0__10(B, C, D, E)
20462 ; true
20463 )
20464 ; type_alias___2__1__0__10(B, C, D, E)
20465 ).
20466type_alias___2__1(A, B, C) :-
20467 type_alias___2__2(A, B, C).
20468type_alias___2__2(A, B, C) :-
20469 nb_getval('$chr_store_global_list_chr_translate____ast_static_type_check_var___4',
20470 D),
20471 !,
20472 type_alias___2__2__0__12(D, A, B, C).
20473type_alias___2__2__0__12([], A, B, C) :-
20474 type_alias___2__3(A, B, C).
20475type_alias___2__2__0__12([A|B], C, D, E) :-
20476 ( A=suspension(_, active, _, F, G, H, I),
20477 functor(C, J, K),
20478 functor(H, J, K)
20479 -> A=suspension(_, _, _, _, _, L, _),
20480 setarg(2, A, removed),
20481 term_variables(L, M),
20482 ( arg(3, A, N),
20483 ( var(N)
20484 -> nb_getval('$chr_store_global_list_chr_translate____ast_static_type_check_var___4',
20485 O),
20486 O=[_|P],
20487 b_setval('$chr_store_global_list_chr_translate____ast_static_type_check_var___4',
20488 P),
20489 ( P=[Q|_]
20490 -> setarg(3, Q, _)
20491 ; true
20492 )
20493 ; N=[_, _|P],
20494 setarg(2, N, P),
20495 ( P=[Q|_]
20496 -> setarg(3, Q, N)
20497 ; true
20498 )
20499 )
20500 ),
20501 detach_ast_static_type_check_var___4(M, A),
20502 arg(2, E, R),
20503 setarg(2, E, active),
20504 ( arg(4, E, S),
20505 T is S+1,
20506 setarg(4, E, T)
20507 ),
20508 ( R==not_stored_yet
20509 -> E=suspension(_, _, _, _, _, U, V),
20510 term_variables(term(U, V), W),
20511 nb_getval('$chr_store_global_list_chr_translate____type_alias___2',
20512 X),
20513 Y=[E|X],
20514 b_setval('$chr_store_global_list_chr_translate____type_alias___2',
20515 Y),
20516 ( X=[Z|_]
20517 -> setarg(5, Z, Y)
20518 ; true
20519 ),
20520 attach_type_alias___2(W, E)
20521 ; true
20522 ),
20523 copy_term_nat(C-D, H-A1),
20524 ast_static_type_check_var(F, G, A1, I),
20525 ( E=suspension(_, active, _, T, _, _, _)
20526 -> setarg(2, E, inactive),
20527 type_alias___2__2__0__12(B, C, D, E)
20528 ; true
20529 )
20530 ; type_alias___2__2__0__12(B, C, D, E)
20531 ).
20532type_alias___2__2(A, B, C) :-
20533 type_alias___2__3(A, B, C).
20534type_alias___2__3(A, B, C) :-
20535 nb_getval('$chr_store_global_ground_chr_translate____dynamic_type_check___0',
20536 D),
20537 !,
20538 type_alias___2__3__0__13(D, A, B, C).
20539type_alias___2__3__0__13([], A, B, C) :-
20540 type_alias___2__4(A, B, C).
20541type_alias___2__3__0__13([A|B], C, D, E) :-
20542 ( A=suspension(_, active, _, _),
20543 F=t(236, E, A),
20544 '$novel_production'(E, F),
20545 '$novel_production'(A, F)
20546 -> '$extend_history'(E, F),
20547 arg(2, E, G),
20548 setarg(2, E, active),
20549 ( arg(4, E, H),
20550 I is H+1,
20551 setarg(4, E, I)
20552 ),
20553 ( G==not_stored_yet
20554 -> E=suspension(_, _, _, _, _, J, K),
20555 term_variables(term(J, K), L),
20556 nb_getval('$chr_store_global_list_chr_translate____type_alias___2',
20557 M),
20558 N=[E|M],
20559 b_setval('$chr_store_global_list_chr_translate____type_alias___2',
20560 N),
20561 ( M=[O|_]
20562 -> setarg(5, O, N)
20563 ; true
20564 ),
20565 attach_type_alias___2(L, E)
20566 ; true
20567 ),
20568 copy_term_nat(C-D, P-Q),
20569 dynamic_type_check_alias_clause(P, Q, R),
20570 dynamic_type_check_clauses([R]),
20571 ( E=suspension(_, active, _, I, _, _, _)
20572 -> setarg(2, E, inactive),
20573 type_alias___2__3__0__13(B, C, D, E)
20574 ; true
20575 )
20576 ; type_alias___2__3__0__13(B, C, D, E)
20577 ).
20578type_alias___2__3(A, B, C) :-
20579 type_alias___2__4(A, B, C).
20580type_alias___2__4(A, B, C) :-
20581 nb_getval('$chr_store_global_list_chr_translate____atomic_type___1', D),
20582 !,
20583 type_alias___2__4__0__14(D, A, B, C).
20584type_alias___2__4__0__14([], A, B, C) :-
20585 type_alias___2__5(A, B, C).
20586type_alias___2__4__0__14([A|B], C, D, E) :-
20587 ( A=suspension(_, active, _, F),
20588 functor(F, G, H),
20589 functor(C, G, H)
20590 -> A=suspension(_, _, _, I),
20591 setarg(2, A, removed),
20592 term_variables(I, J),
20593 ( arg(3, A, K),
20594 ( var(K)
20595 -> nb_getval('$chr_store_global_list_chr_translate____atomic_type___1',
20596 L),
20597 L=[_|M],
20598 b_setval('$chr_store_global_list_chr_translate____atomic_type___1',
20599 M),
20600 ( M=[N|_]
20601 -> setarg(3, N, _)
20602 ; true
20603 )
20604 ; K=[_, _|M],
20605 setarg(2, K, M),
20606 ( M=[N|_]
20607 -> setarg(3, N, K)
20608 ; true
20609 )
20610 )
20611 ),
20612 detach_atomic_type___1(J, A),
20613 arg(2, E, O),
20614 setarg(2, E, active),
20615 ( arg(4, E, P),
20616 Q is P+1,
20617 setarg(4, E, Q)
20618 ),
20619 ( O==not_stored_yet
20620 -> E=suspension(_, _, _, _, _, R, S),
20621 term_variables(term(R, S), T),
20622 nb_getval('$chr_store_global_list_chr_translate____type_alias___2',
20623 U),
20624 V=[E|U],
20625 b_setval('$chr_store_global_list_chr_translate____type_alias___2',
20626 V),
20627 ( U=[W|_]
20628 -> setarg(5, W, V)
20629 ; true
20630 ),
20631 attach_type_alias___2(T, E)
20632 ; true
20633 ),
20634 atomic(D),
20635 copy_term_nat(C-D, F-X),
20636 atomic_type(X),
20637 ( E=suspension(_, active, _, Q, _, _, _)
20638 -> setarg(2, E, inactive),
20639 type_alias___2__4__0__14(B, C, D, E)
20640 ; true
20641 )
20642 ; type_alias___2__4__0__14(B, C, D, E)
20643 ).
20644type_alias___2__4(A, B, C) :-
20645 type_alias___2__5(A, B, C).
20646type_alias___2__5(_, _, A) :-
20647 arg(2, A, B),
20648 setarg(2, A, active),
20649 arg(4, A, C),
20650 D is C+1,
20651 setarg(4, A, D),
20652 ( B==not_stored_yet
20653 -> A=suspension(_, _, _, _, _, E, F),
20654 term_variables(term(E, F), G),
20655 nb_getval('$chr_store_global_list_chr_translate____type_alias___2',
20656 H),
20657 I=[A|H],
20658 b_setval('$chr_store_global_list_chr_translate____type_alias___2',
20659 I),
20660 ( H=[J|_]
20661 -> setarg(5, J, I)
20662 ; true
20663 ),
20664 attach_type_alias___2(G, A)
20665 ; true
20666 ).
20667constraint_type(A, B) :-
20668 constraint_type___2__0(A, B, _).
20669constraint_type___2__0(A, B, C) :-
20670 nb_getval('$chr_store_global_ground_chr_translate____static_type_check___2',
20671 D),
20672 !,
20673 C=suspension(E, not_stored_yet, _, A, B),
20674 'chr gen_id'(E),
20675 constraint_type___2__0__0__2(D, A, B, C).
20676constraint_type___2__0__0__2([], A, B, C) :-
20677 constraint_type___2__1(A, B, C).
20678constraint_type___2__0__0__2([A|B], C, D, E) :-
20679 ( A=suspension(_, active, _, _, _)
20680 -> arg(2, E, F),
20681 setarg(2, E, active),
20682 ( F==not_stored_yet
20683 -> nb_getval('$chr_store_global_ground_chr_translate____constraint_type___2',
20684 G),
20685 H=[E|G],
20686 b_setval('$chr_store_global_ground_chr_translate____constraint_type___2',
20687 H),
20688 ( G=[I|_]
20689 -> setarg(3, I, H)
20690 ; true
20691 ),
20692 nb_getval('$chr_store_multi_hash_chr_translate____constraint_type___2-1',
20693 J),
20694 insert_ht(J, C, E)
20695 ; true
20696 ),
20697 forall(( member(K, D),
20698 sub_term(K, L)
20699 ),
20700 ( get_type_definition(L, _)
20701 -> true
20702 ; chr_error(type_error,
20703 'Undefined type "~w" used in type declaration of "~w".\n',
20704 [L, C])
20705 )),
20706 ( E=suspension(_, active, _, _, _)
20707 -> setarg(2, E, inactive),
20708 constraint_type___2__0__0__2(B, C, D, E)
20709 ; true
20710 )
20711 ; constraint_type___2__0__0__2(B, C, D, E)
20712 ).
20713constraint_type___2__0(A, B, C) :-
20714 C=suspension(D, not_stored_yet, _, A, B),
20715 'chr gen_id'(D),
20716 constraint_type___2__1(A, B, C).
20717constraint_type___2__1(A, _, B) :-
20718 arg(2, B, C),
20719 setarg(2, B, active),
20720 ( C==not_stored_yet
20721 -> nb_getval('$chr_store_global_ground_chr_translate____constraint_type___2',
20722 D),
20723 E=[B|D],
20724 b_setval('$chr_store_global_ground_chr_translate____constraint_type___2',
20725 E),
20726 ( D=[F|_]
20727 -> setarg(3, F, E)
20728 ; true
20729 ),
20730 nb_getval('$chr_store_multi_hash_chr_translate____constraint_type___2-1',
20731 G),
20732 insert_ht(G, A, B)
20733 ; true
20734 ).
20735get_type_definition(A, _) :-
20736 \+ ground(A),
20737 !,
20738 chr_error(type_error,
20739 'Non-ground type in constraint definition: "~w".\n',
20740 [A]).
20741get_type_definition(A, B) :-
20742 nb_getval('$chr_store_global_list_chr_translate____type_alias___2', C),
20743 member(D, C),
20744 D=suspension(_, active, _, _, _, E, F),
20745 functor(E, G, H),
20746 functor(A, G, H),
20747 copy_term_nat((E, F), (I, J)),
20748 I=A,
20749 !,
20750 ( get_type_definition(J, B)
20751 -> true
20752 ; chr_error(type_error,
20753 'Could not find type definition for "~w" (accessed via alias "~w").\n',
20754 [J, I]),
20755 fail
20756 ).
20757get_type_definition(A, B) :-
20758 nb_getval('$chr_store_global_list_chr_translate____type_definition___2',
20759 C),
20760 member(D, C),
20761 D=suspension(_, active, _, _, _, E, F),
20762 nonvar(E),
20763 functor(E, G, H),
20764 functor(A, G, H),
20765 copy_term_nat((E, F), (I, J)),
20766 I=A,
20767 !,
20768 B=J.
20769get_type_definition(A, B) :-
20770 atomic_builtin_type(A, _, _),
20771 !,
20772 B=[A].
20773get_type_definition(A, B) :-
20774 compound_builtin_type(A, _, _, _),
20775 !,
20776 B=[A].
20777get_type_definition(_, _) :-
20778 fail.
20779get_constraint_type(A, B) :-
20780 nb_getval('$chr_store_multi_hash_chr_translate____constraint_type___2-1',
20781 C),
20782 lookup_ht(C, A, D),
20783 member(E, D),
20784 E=suspension(_, active, _, _, F),
20785 !,
20786 B=F.
20787get_constraint_type(_, _) :-
20788 fail.
20789unalias_type(A, B) :-
20790 unalias_type___2__0(A, B, _).
20791unalias_type___2__0(A, B, C) :-
20792 var(A),
20793 !,
20794 ( var(C)
20795 -> true
20796 ; C=suspension(_, _, _, D, _),
20797 setarg(2, C, removed),
20798 term_variables(D, E),
20799 arg(3, C, F),
20800 ( var(F)
20801 -> nb_getval('$chr_store_global_list_chr_translate____unalias_type___2',
20802 G),
20803 G=[_|H],
20804 b_setval('$chr_store_global_list_chr_translate____unalias_type___2',
20805 H),
20806 ( H=[I|_]
20807 -> setarg(3, I, _)
20808 ; true
20809 )
20810 ; F=[_, _|H],
20811 setarg(2, F, H),
20812 ( H=[I|_]
20813 -> setarg(3, I, F)
20814 ; true
20815 )
20816 ),
20817 detach_unalias_type___2(E, C)
20818 ),
20819 B=A.
20820unalias_type___2__0(A, B, C) :-
20821 nb_getval('$chr_store_global_list_chr_translate____type_alias___2', D),
20822 member(E, D),
20823 E=suspension(_, active, _, _, _, F, G),
20824 functor(F, H, I),
20825 functor(A, H, I),
20826 copy_term_nat((F, G), (J, K)),
20827 A=J,
20828 !,
20829 ( var(C)
20830 -> true
20831 ; C=suspension(_, _, _, L, _),
20832 setarg(2, C, removed),
20833 term_variables(L, M),
20834 arg(3, C, N),
20835 ( var(N)
20836 -> nb_getval('$chr_store_global_list_chr_translate____unalias_type___2',
20837 O),
20838 O=[_|P],
20839 b_setval('$chr_store_global_list_chr_translate____unalias_type___2',
20840 P),
20841 ( P=[Q|_]
20842 -> setarg(3, Q, _)
20843 ; true
20844 )
20845 ; N=[_, _|P],
20846 setarg(2, N, P),
20847 ( P=[Q|_]
20848 -> setarg(3, Q, N)
20849 ; true
20850 )
20851 ),
20852 detach_unalias_type___2(M, C)
20853 ),
20854 unalias_type(K, B).
20855unalias_type___2__0(A, B, C) :-
20856 nb_getval('$chr_store_global_list_chr_translate____type_definition___2',
20857 D),
20858 member(E, D),
20859 E=suspension(_, active, _, _, _, F, _),
20860 nonvar(F),
20861 functor(F, G, H),
20862 functor(A, G, H),
20863 !,
20864 ( var(C)
20865 -> true
20866 ; C=suspension(_, _, _, I, _),
20867 setarg(2, C, removed),
20868 term_variables(I, J),
20869 arg(3, C, K),
20870 ( var(K)
20871 -> nb_getval('$chr_store_global_list_chr_translate____unalias_type___2',
20872 L),
20873 L=[_|M],
20874 b_setval('$chr_store_global_list_chr_translate____unalias_type___2',
20875 M),
20876 ( M=[N|_]
20877 -> setarg(3, N, _)
20878 ; true
20879 )
20880 ; K=[_, _|M],
20881 setarg(2, K, M),
20882 ( M=[N|_]
20883 -> setarg(3, N, K)
20884 ; true
20885 )
20886 ),
20887 detach_unalias_type___2(J, C)
20888 ),
20889 B=A.
20890unalias_type___2__0(A, B, C) :-
20891 atomic_builtin_type(A, _, _),
20892 !,
20893 ( var(C)
20894 -> true
20895 ; C=suspension(_, _, _, D, _),
20896 setarg(2, C, removed),
20897 term_variables(D, E),
20898 arg(3, C, F),
20899 ( var(F)
20900 -> nb_getval('$chr_store_global_list_chr_translate____unalias_type___2',
20901 G),
20902 G=[_|H],
20903 b_setval('$chr_store_global_list_chr_translate____unalias_type___2',
20904 H),
20905 ( H=[I|_]
20906 -> setarg(3, I, _)
20907 ; true
20908 )
20909 ; F=[_, _|H],
20910 setarg(2, F, H),
20911 ( H=[I|_]
20912 -> setarg(3, I, F)
20913 ; true
20914 )
20915 ),
20916 detach_unalias_type___2(E, C)
20917 ),
20918 B=A.
20919unalias_type___2__0(A, B, C) :-
20920 compound_builtin_type(A, _, _, _),
20921 !,
20922 ( var(C)
20923 -> true
20924 ; C=suspension(_, _, _, D, _),
20925 setarg(2, C, removed),
20926 term_variables(D, E),
20927 arg(3, C, F),
20928 ( var(F)
20929 -> nb_getval('$chr_store_global_list_chr_translate____unalias_type___2',
20930 G),
20931 G=[_|H],
20932 b_setval('$chr_store_global_list_chr_translate____unalias_type___2',
20933 H),
20934 ( H=[I|_]
20935 -> setarg(3, I, _)
20936 ; true
20937 )
20938 ; F=[_, _|H],
20939 setarg(2, F, H),
20940 ( H=[I|_]
20941 -> setarg(3, I, F)
20942 ; true
20943 )
20944 ),
20945 detach_unalias_type___2(E, C)
20946 ),
20947 B=A.
20948unalias_type___2__0(A, B, C) :-
20949 ( var(C)
20950 -> C=suspension(D, active, _, A, B),
20951 term_variables(A, E),
20952 'chr gen_id'(D),
20953 nb_getval('$chr_store_global_list_chr_translate____unalias_type___2',
20954 F),
20955 G=[C|F],
20956 b_setval('$chr_store_global_list_chr_translate____unalias_type___2',
20957 G),
20958 ( F=[H|_]
20959 -> setarg(3, H, G)
20960 ; true
20961 ),
20962 attach_unalias_type___2(E, C)
20963 ; setarg(2, C, active)
20964 ).
20965types_modes_condition([], [], A) :-
20966 !,
20967 A=true.
20968types_modes_condition([A|B], [C|D], E) :-
20969 nb_getval('$chr_store_global_ground_chr_translate____constraint_mode___2',
20970 F),
20971 member(G, F),
20972 G=suspension(_, active, _, _, H, I),
20973 H=J/K,
20974 functor(A, J, K),
20975 !,
20976 A=..[_|L],
20977 E=(M, N, O),
20978 modes_condition(I, L, M),
20979 get_constraint_type_det(J/K, P),
20980 C=..[_|Q],
20981 types_condition(P, L, Q, I, N),
20982 types_modes_condition(B, D, O).
20983types_modes_condition([A|_], _, _) :-
20984 !,
20985 functor(A, B, C),
20986 chr_error(internal, 'Mode information missing for ~w.\n', [B/C]).
20987types_modes_condition(A, B, C) :-
20988 D=suspension(E, active, _, A, B, C),
20989 'chr gen_id'(E),
20990 nb_getval('$chr_store_global_ground_chr_translate____types_modes_condition___3',
20991 F),
20992 G=[D|F],
20993 b_setval('$chr_store_global_ground_chr_translate____types_modes_condition___3',
20994 G),
20995 ( F=[H|_]
20996 -> setarg(3, H, G)
20997 ; true
20998 ).
20999static_type_check(A, B) :-
21000 static_type_check___2__0(A, B, _).
21001static_type_check___2__0(A, B, C) :-
21002 nb_getval('$chr_store_global_ground_chr_translate____constraint_type___2',
21003 D),
21004 !,
21005 C=suspension(E, not_stored_yet, _, A, B),
21006 'chr gen_id'(E),
21007 static_type_check___2__0__0__1(D, A, B, C).
21008static_type_check___2__0__0__1([], A, B, C) :-
21009 static_type_check___2__1(A, B, C).
21010static_type_check___2__0__0__1([A|B], C, D, E) :-
21011 ( A=suspension(_, active, _, F, G)
21012 -> arg(2, E, H),
21013 setarg(2, E, active),
21014 ( H==not_stored_yet
21015 -> nb_getval('$chr_store_global_ground_chr_translate____static_type_check___2',
21016 I),
21017 J=[E|I],
21018 b_setval('$chr_store_global_ground_chr_translate____static_type_check___2',
21019 J),
21020 ( I=[K|_]
21021 -> setarg(3, K, J)
21022 ; true
21023 )
21024 ; true
21025 ),
21026 forall(( member(L, G),
21027 sub_term(L, M)
21028 ),
21029 ( get_type_definition(M, _)
21030 -> true
21031 ; chr_error(type_error,
21032 'Undefined type "~w" used in type declaration of "~w".\n',
21033 [M, F])
21034 )),
21035 ( E=suspension(_, active, _, _, _)
21036 -> setarg(2, E, inactive),
21037 static_type_check___2__0__0__1(B, C, D, E)
21038 ; true
21039 )
21040 ; static_type_check___2__0__0__1(B, C, D, E)
21041 ).
21042static_type_check___2__0(A, B, C) :-
21043 C=suspension(D, not_stored_yet, _, A, B),
21044 'chr gen_id'(D),
21045 static_type_check___2__1(A, B, C).
21046static_type_check___2__1(A, B, C) :-
21047 ( var(C)
21048 -> true
21049 ; arg(2, C, D),
21050 setarg(2, C, removed),
21051 ( D==not_stored_yet
21052 -> true
21053 ; arg(3, C, E),
21054 ( var(E)
21055 -> nb_getval('$chr_store_global_ground_chr_translate____static_type_check___2',
21056 F),
21057 F=[_|G],
21058 b_setval('$chr_store_global_ground_chr_translate____static_type_check___2',
21059 G),
21060 ( G=[H|_]
21061 -> setarg(3, H, _)
21062 ; true
21063 )
21064 ; E=[_, _|G],
21065 setarg(2, E, G),
21066 ( G=[H|_]
21067 -> setarg(3, H, E)
21068 ; true
21069 )
21070 )
21071 )
21072 ),
21073 maplist(static_type_check_rule, A, B).
21074ast_static_type_check_term(_, _, A) :-
21075 A==any,
21076 !.
21077ast_static_type_check_term(A, B, C) :-
21078 nonvar(B),
21079 B=var(D, E),
21080 !,
21081 ast_static_type_check_var(D, var(D, E), C, A).
21082ast_static_type_check_term(A, B, C) :-
21083 ast_atomic_builtin_type(C, B, D),
21084 !,
21085 ( call(D)
21086 -> true
21087 ; throw(type_error(invalid_functor(A, B, C)))
21088 ).
21089ast_static_type_check_term(A, B, C) :-
21090 ast_compound_builtin_type(C, B, D),
21091 !,
21092 ( call(D)
21093 -> true
21094 ; throw(type_error(invalid_functor(A, B, C)))
21095 ).
21096ast_static_type_check_term(A, B, C) :-
21097 nb_getval('$chr_store_global_list_chr_translate____type_alias___2', D),
21098 member(E, D),
21099 E=suspension(_, active, _, _, _, F, G),
21100 functor(C, H, I),
21101 functor(F, H, I),
21102 !,
21103 copy_term_nat(F-G, C-J),
21104 ast_static_type_check_term(A, B, J).
21105ast_static_type_check_term(A, B, C) :-
21106 nb_getval('$chr_store_global_list_chr_translate____type_definition___2',
21107 D),
21108 member(E, D),
21109 E=suspension(_, active, _, _, _, F, G),
21110 functor(C, H, I),
21111 functor(F, H, I),
21112 !,
21113 copy_term_nat(F-G, C-J),
21114 ast_functor(B, K, L),
21115 ( member(M, J),
21116 functor(M, K, L)
21117 -> ast_args(B, N),
21118 M=..[_|O],
21119 maplist(ast_static_type_check_term(A), N, O)
21120 ; throw(type_error(invalid_functor(A, B, C)))
21121 ).
21122ast_static_type_check_term(A, B, C) :-
21123 chr_error(internal,
21124 'Undefined type ~w while type checking term ~w in ~@.\n',
21125 [C, B, chr_translate:format_src(A)]).
21126ast_static_type_check_var(A, B, C, D) :-
21127 ast_static_type_check_var___4__0(A, B, C, D, _).
21128ast_static_type_check_var___4__0(A, B, C, D, E) :-
21129 nb_getval('$chr_store_global_list_chr_translate____type_alias___2', F),
21130 member(G, F),
21131 G=suspension(_, active, _, _, _, H, I),
21132 functor(H, J, K),
21133 functor(C, J, K),
21134 !,
21135 ( var(E)
21136 -> true
21137 ; E=suspension(_, _, _, _, _, L, _),
21138 setarg(2, E, removed),
21139 term_variables(L, M),
21140 arg(3, E, N),
21141 ( var(N)
21142 -> nb_getval('$chr_store_global_list_chr_translate____ast_static_type_check_var___4',
21143 O),
21144 O=[_|P],
21145 b_setval('$chr_store_global_list_chr_translate____ast_static_type_check_var___4',
21146 P),
21147 ( P=[Q|_]
21148 -> setarg(3, Q, _)
21149 ; true
21150 )
21151 ; N=[_, _|P],
21152 setarg(2, N, P),
21153 ( P=[Q|_]
21154 -> setarg(3, Q, N)
21155 ; true
21156 )
21157 ),
21158 detach_ast_static_type_check_var___4(M, E)
21159 ),
21160 copy_term_nat(H-I, C-R),
21161 ast_static_type_check_var(A, B, R, D).
21162ast_static_type_check_var___4__0(A, B, C, D, E) :-
21163 atomic_builtin_type(C, _, _),
21164 !,
21165 ( var(E)
21166 -> true
21167 ; E=suspension(_, _, _, _, _, F, _),
21168 setarg(2, E, removed),
21169 term_variables(F, G),
21170 arg(3, E, H),
21171 ( var(H)
21172 -> nb_getval('$chr_store_global_list_chr_translate____ast_static_type_check_var___4',
21173 I),
21174 I=[_|J],
21175 b_setval('$chr_store_global_list_chr_translate____ast_static_type_check_var___4',
21176 J),
21177 ( J=[K|_]
21178 -> setarg(3, K, _)
21179 ; true
21180 )
21181 ; H=[_, _|J],
21182 setarg(2, H, J),
21183 ( J=[K|_]
21184 -> setarg(3, K, H)
21185 ; true
21186 )
21187 ),
21188 detach_ast_static_type_check_var___4(G, E)
21189 ),
21190 ast_static_atomic_builtin_type_check_var(A, B, C, D).
21191ast_static_type_check_var___4__0(_, _, A, _, B) :-
21192 compound_builtin_type(A, _, _, _),
21193 !,
21194 ( var(B)
21195 -> true
21196 ; B=suspension(_, _, _, _, _, C, _),
21197 setarg(2, B, removed),
21198 term_variables(C, D),
21199 arg(3, B, E),
21200 ( var(E)
21201 -> nb_getval('$chr_store_global_list_chr_translate____ast_static_type_check_var___4',
21202 F),
21203 F=[_|G],
21204 b_setval('$chr_store_global_list_chr_translate____ast_static_type_check_var___4',
21205 G),
21206 ( G=[H|_]
21207 -> setarg(3, H, _)
21208 ; true
21209 )
21210 ; E=[_, _|G],
21211 setarg(2, E, G),
21212 ( G=[H|_]
21213 -> setarg(3, H, E)
21214 ; true
21215 )
21216 ),
21217 detach_ast_static_type_check_var___4(D, B)
21218 ).
21219ast_static_type_check_var___4__0(A, B, C, D, E) :-
21220 nb_getval('$chr_store_global_list_chr_translate____ast_static_type_check_var___4',
21221 F),
21222 member(G, F),
21223 G=suspension(_, active, _, H, I, J, K),
21224 H=A,
21225 ( C\==J,
21226 !,
21227 G=suspension(_, _, _, _, _, L, _),
21228 setarg(2, G, removed),
21229 term_variables(L, M),
21230 arg(3, G, N),
21231 ( var(N)
21232 -> nb_getval('$chr_store_global_list_chr_translate____ast_static_type_check_var___4',
21233 O),
21234 O=[_|P],
21235 b_setval('$chr_store_global_list_chr_translate____ast_static_type_check_var___4',
21236 P),
21237 ( P=[Q|_]
21238 -> setarg(3, Q, _)
21239 ; true
21240 )
21241 ; N=[_, _|P],
21242 setarg(2, N, P),
21243 ( P=[Q|_]
21244 -> setarg(3, Q, N)
21245 ; true
21246 )
21247 ),
21248 detach_ast_static_type_check_var___4(M, G),
21249 ( var(E)
21250 -> true
21251 ; E=suspension(_, _, _, _, _, R, _),
21252 setarg(2, E, removed),
21253 term_variables(R, S),
21254 arg(3, E, T),
21255 ( var(T)
21256 -> nb_getval('$chr_store_global_list_chr_translate____ast_static_type_check_var___4',
21257 U),
21258 U=[_|V],
21259 b_setval('$chr_store_global_list_chr_translate____ast_static_type_check_var___4',
21260 V),
21261 ( V=[W|_]
21262 -> setarg(3, W, _)
21263 ; true
21264 )
21265 ; T=[_, _|V],
21266 setarg(2, T, V),
21267 ( V=[W|_]
21268 -> setarg(3, W, T)
21269 ; true
21270 )
21271 ),
21272 detach_ast_static_type_check_var___4(S, E)
21273 ),
21274 throw(type_error(type_clash(B, D, K, C, J)))
21275 ; J\==C,
21276 !,
21277 G=suspension(_, _, _, _, _, X, _),
21278 setarg(2, G, removed),
21279 term_variables(X, Y),
21280 arg(3, G, Z),
21281 ( var(Z)
21282 -> nb_getval('$chr_store_global_list_chr_translate____ast_static_type_check_var___4',
21283 A1),
21284 A1=[_|B1],
21285 b_setval('$chr_store_global_list_chr_translate____ast_static_type_check_var___4',
21286 B1),
21287 ( B1=[C1|_]
21288 -> setarg(3, C1, _)
21289 ; true
21290 )
21291 ; Z=[_, _|B1],
21292 setarg(2, Z, B1),
21293 ( B1=[C1|_]
21294 -> setarg(3, C1, Z)
21295 ; true
21296 )
21297 ),
21298 detach_ast_static_type_check_var___4(Y, G),
21299 ( var(E)
21300 -> true
21301 ; E=suspension(_, _, _, _, _, D1, _),
21302 setarg(2, E, removed),
21303 term_variables(D1, E1),
21304 arg(3, E, F1),
21305 ( var(F1)
21306 -> nb_getval('$chr_store_global_list_chr_translate____ast_static_type_check_var___4',
21307 G1),
21308 G1=[_|H1],
21309 b_setval('$chr_store_global_list_chr_translate____ast_static_type_check_var___4',
21310 H1),
21311 ( H1=[I1|_]
21312 -> setarg(3, I1, _)
21313 ; true
21314 )
21315 ; F1=[_, _|H1],
21316 setarg(2, F1, H1),
21317 ( H1=[I1|_]
21318 -> setarg(3, I1, F1)
21319 ; true
21320 )
21321 ),
21322 detach_ast_static_type_check_var___4(E1, E)
21323 ),
21324 throw(type_error(type_clash(I, K, D, J, C)))
21325 ).
21326ast_static_type_check_var___4__0(A, B, C, D, E) :-
21327 ( var(E)
21328 -> E=suspension(F, active, _, A, B, C, D),
21329 term_variables(C, G),
21330 'chr gen_id'(F),
21331 nb_getval('$chr_store_global_list_chr_translate____ast_static_type_check_var___4',
21332 H),
21333 I=[E|H],
21334 b_setval('$chr_store_global_list_chr_translate____ast_static_type_check_var___4',
21335 I),
21336 ( H=[J|_]
21337 -> setarg(3, J, I)
21338 ; true
21339 ),
21340 attach_ast_static_type_check_var___4(G, E)
21341 ; setarg(2, E, active)
21342 ).
21343ast_static_atomic_builtin_type_check_var(_, _, any, _) :-
21344 !.
21345ast_static_atomic_builtin_type_check_var(A, B, C, D) :-
21346 nb_getval('$chr_store_multi_hash_chr_translate____ast_static_atomic_builtin_type_check_var___4-13',
21347 E),
21348 lookup_ht(E, k(A, C), F),
21349 ( member(G, F),
21350 G=suspension(_, active, _, _, _, _),
21351 !
21352 ; !,
21353 ast_static_atomic_builtin_type_check_var___4__0__0__3(F,
21354 A,
21355 B,
21356 C,
21357 D)
21358 ).
21359ast_static_atomic_builtin_type_check_var___4__0__0__3([], A, B, C, D) :-
21360 ast_static_atomic_builtin_type_check_var___4__1(A,
21361 B,
21362 C,
21363 D).
21364ast_static_atomic_builtin_type_check_var___4__0__0__3([A|B], C, D, E, F) :-
21365 ( A=suspension(_, active, G, _, H, _),
21366 G==C,
21367 H==E
21368 -> setarg(2, A, removed),
21369 ( nb_getval('$chr_store_multi_hash_chr_translate____ast_static_atomic_builtin_type_check_var___4-1',
21370 I),
21371 delete_ht(I, C, A)
21372 ),
21373 nb_getval('$chr_store_multi_hash_chr_translate____ast_static_atomic_builtin_type_check_var___4-13',
21374 J),
21375 delete_ht(J, k(C, E), A),
21376 ast_static_atomic_builtin_type_check_var___4__0__0__3(B,
21377 C,
21378 D,
21379 E,
21380 F)
21381 ; ast_static_atomic_builtin_type_check_var___4__0__0__3(B,
21382 C,
21383 D,
21384 E,
21385 F)
21386 ).
21387ast_static_atomic_builtin_type_check_var(A, B, C, D) :-
21388 ast_static_atomic_builtin_type_check_var___4__1(A,
21389 B,
21390 C,
21391 D).
21392ast_static_atomic_builtin_type_check_var___4__1(A, _, number, _) :-
21393 nb_getval('$chr_store_multi_hash_chr_translate____ast_static_atomic_builtin_type_check_var___4-13',
21394 B),
21395 lookup_ht(B, k(A, float), C),
21396 member(D, C),
21397 D=suspension(_, active, _, _, _, _),
21398 !.
21399ast_static_atomic_builtin_type_check_var___4__1(A, B, float, C) :-
21400 nb_getval('$chr_store_multi_hash_chr_translate____ast_static_atomic_builtin_type_check_var___4-13',
21401 D),
21402 lookup_ht(D, k(A, number), E),
21403 !,
21404 ast_static_atomic_builtin_type_check_var___4__1__0__5(E,
21405 A,
21406 B,
21407 float,
21408 C).
21409ast_static_atomic_builtin_type_check_var___4__1__0__5([], A, B, C, D) :-
21410 ast_static_atomic_builtin_type_check_var___4__8(A,
21411 B,
21412 C,
21413 D).
21414ast_static_atomic_builtin_type_check_var___4__1__0__5([A|B], C, D, E, F) :-
21415 ( A=suspension(_, active, G, _, H, _),
21416 G==C,
21417 H=number
21418 -> setarg(2, A, removed),
21419 ( nb_getval('$chr_store_multi_hash_chr_translate____ast_static_atomic_builtin_type_check_var___4-1',
21420 I),
21421 delete_ht(I, C, A)
21422 ),
21423 nb_getval('$chr_store_multi_hash_chr_translate____ast_static_atomic_builtin_type_check_var___4-13',
21424 J),
21425 delete_ht(J, k(C, number), A),
21426 ast_static_atomic_builtin_type_check_var___4__1__0__5(B,
21427 C,
21428 D,
21429 E,
21430 F)
21431 ; ast_static_atomic_builtin_type_check_var___4__1__0__5(B,
21432 C,
21433 D,
21434 E,
21435 F)
21436 ).
21437ast_static_atomic_builtin_type_check_var___4__1(A, B, C, D) :-
21438 ast_static_atomic_builtin_type_check_var___4__2(A,
21439 B,
21440 C,
21441 D).
21442ast_static_atomic_builtin_type_check_var___4__2(A, _, number, _) :-
21443 nb_getval('$chr_store_multi_hash_chr_translate____ast_static_atomic_builtin_type_check_var___4-13',
21444 B),
21445 lookup_ht(B, k(A, int), C),
21446 member(D, C),
21447 D=suspension(_, active, _, _, _, _),
21448 !.
21449ast_static_atomic_builtin_type_check_var___4__2(A, B, int, C) :-
21450 nb_getval('$chr_store_multi_hash_chr_translate____ast_static_atomic_builtin_type_check_var___4-13',
21451 D),
21452 lookup_ht(D, k(A, number), E),
21453 !,
21454 ast_static_atomic_builtin_type_check_var___4__2__0__7(E,
21455 A,
21456 B,
21457 int,
21458 C).
21459ast_static_atomic_builtin_type_check_var___4__2__0__7([], A, B, C, D) :-
21460 ast_static_atomic_builtin_type_check_var___4__5(A,
21461 B,
21462 C,
21463 D).
21464ast_static_atomic_builtin_type_check_var___4__2__0__7([A|B], C, D, E, F) :-
21465 ( A=suspension(_, active, G, _, H, _),
21466 G==C,
21467 H=number
21468 -> setarg(2, A, removed),
21469 ( nb_getval('$chr_store_multi_hash_chr_translate____ast_static_atomic_builtin_type_check_var___4-1',
21470 I),
21471 delete_ht(I, C, A)
21472 ),
21473 nb_getval('$chr_store_multi_hash_chr_translate____ast_static_atomic_builtin_type_check_var___4-13',
21474 J),
21475 delete_ht(J, k(C, number), A),
21476 ast_static_atomic_builtin_type_check_var___4__2__0__7(B,
21477 C,
21478 D,
21479 E,
21480 F)
21481 ; ast_static_atomic_builtin_type_check_var___4__2__0__7(B,
21482 C,
21483 D,
21484 E,
21485 F)
21486 ).
21487ast_static_atomic_builtin_type_check_var___4__2(A, B, C, D) :-
21488 ast_static_atomic_builtin_type_check_var___4__3(A,
21489 B,
21490 C,
21491 D).
21492ast_static_atomic_builtin_type_check_var___4__3(A, _, number, _) :-
21493 nb_getval('$chr_store_multi_hash_chr_translate____ast_static_atomic_builtin_type_check_var___4-13',
21494 B),
21495 lookup_ht(B, k(A, natural), C),
21496 member(D, C),
21497 D=suspension(_, active, _, _, _, _),
21498 !.
21499ast_static_atomic_builtin_type_check_var___4__3(A, B, natural, C) :-
21500 nb_getval('$chr_store_multi_hash_chr_translate____ast_static_atomic_builtin_type_check_var___4-13',
21501 D),
21502 lookup_ht(D, k(A, number), E),
21503 !,
21504 ast_static_atomic_builtin_type_check_var___4__3__0__9(E,
21505 A,
21506 B,
21507 natural,
21508 C).
21509ast_static_atomic_builtin_type_check_var___4__3__0__9([], A, B, C, D) :-
21510 ast_static_atomic_builtin_type_check_var___4__5(A,
21511 B,
21512 C,
21513 D).
21514ast_static_atomic_builtin_type_check_var___4__3__0__9([A|B], C, D, E, F) :-
21515 ( A=suspension(_, active, G, _, H, _),
21516 G==C,
21517 H=number
21518 -> setarg(2, A, removed),
21519 ( nb_getval('$chr_store_multi_hash_chr_translate____ast_static_atomic_builtin_type_check_var___4-1',
21520 I),
21521 delete_ht(I, C, A)
21522 ),
21523 nb_getval('$chr_store_multi_hash_chr_translate____ast_static_atomic_builtin_type_check_var___4-13',
21524 J),
21525 delete_ht(J, k(C, number), A),
21526 ast_static_atomic_builtin_type_check_var___4__3__0__9(B,
21527 C,
21528 D,
21529 E,
21530 F)
21531 ; ast_static_atomic_builtin_type_check_var___4__3__0__9(B,
21532 C,
21533 D,
21534 E,
21535 F)
21536 ).
21537ast_static_atomic_builtin_type_check_var___4__3(A, B, C, D) :-
21538 ast_static_atomic_builtin_type_check_var___4__4(A,
21539 B,
21540 C,
21541 D).
21542ast_static_atomic_builtin_type_check_var___4__4(A, _, number, _) :-
21543 nb_getval('$chr_store_multi_hash_chr_translate____ast_static_atomic_builtin_type_check_var___4-13',
21544 B),
21545 lookup_ht(B, k(A, dense_int), C),
21546 member(D, C),
21547 D=suspension(_, active, _, _, _, _),
21548 !.
21549ast_static_atomic_builtin_type_check_var___4__4(A, B, dense_int, C) :-
21550 nb_getval('$chr_store_multi_hash_chr_translate____ast_static_atomic_builtin_type_check_var___4-13',
21551 D),
21552 lookup_ht(D, k(A, number), E),
21553 !,
21554 ast_static_atomic_builtin_type_check_var___4__4__0__11(E,
21555 A,
21556 B,
21557 dense_int,
21558 C).
21559ast_static_atomic_builtin_type_check_var___4__4__0__11([], A, B, C, D) :-
21560 ast_static_atomic_builtin_type_check_var___4__6(A,
21561 B,
21562 C,
21563 D).
21564ast_static_atomic_builtin_type_check_var___4__4__0__11([A|B], C, D, E, F) :-
21565 ( A=suspension(_, active, G, _, H, _),
21566 G==C,
21567 H=number
21568 -> setarg(2, A, removed),
21569 ( nb_getval('$chr_store_multi_hash_chr_translate____ast_static_atomic_builtin_type_check_var___4-1',
21570 I),
21571 delete_ht(I, C, A)
21572 ),
21573 nb_getval('$chr_store_multi_hash_chr_translate____ast_static_atomic_builtin_type_check_var___4-13',
21574 J),
21575 delete_ht(J, k(C, number), A),
21576 ast_static_atomic_builtin_type_check_var___4__4__0__11(B,
21577 C,
21578 D,
21579 E,
21580 F)
21581 ; ast_static_atomic_builtin_type_check_var___4__4__0__11(B,
21582 C,
21583 D,
21584 E,
21585 F)
21586 ).
21587ast_static_atomic_builtin_type_check_var___4__4(A, B, C, D) :-
21588 ast_static_atomic_builtin_type_check_var___4__5(A,
21589 B,
21590 C,
21591 D).
21592ast_static_atomic_builtin_type_check_var___4__5(A, _, int, _) :-
21593 nb_getval('$chr_store_multi_hash_chr_translate____ast_static_atomic_builtin_type_check_var___4-13',
21594 B),
21595 lookup_ht(B, k(A, natural), C),
21596 member(D, C),
21597 D=suspension(_, active, _, _, _, _),
21598 !.
21599ast_static_atomic_builtin_type_check_var___4__5(A, B, natural, C) :-
21600 nb_getval('$chr_store_multi_hash_chr_translate____ast_static_atomic_builtin_type_check_var___4-13',
21601 D),
21602 lookup_ht(D, k(A, int), E),
21603 !,
21604 ast_static_atomic_builtin_type_check_var___4__5__0__13(E,
21605 A,
21606 B,
21607 natural,
21608 C).
21609ast_static_atomic_builtin_type_check_var___4__5__0__13([], A, B, C, D) :-
21610 ast_static_atomic_builtin_type_check_var___4__7(A,
21611 B,
21612 C,
21613 D).
21614ast_static_atomic_builtin_type_check_var___4__5__0__13([A|B], C, D, E, F) :-
21615 ( A=suspension(_, active, G, _, H, _),
21616 G==C,
21617 H=int
21618 -> setarg(2, A, removed),
21619 ( nb_getval('$chr_store_multi_hash_chr_translate____ast_static_atomic_builtin_type_check_var___4-1',
21620 I),
21621 delete_ht(I, C, A)
21622 ),
21623 nb_getval('$chr_store_multi_hash_chr_translate____ast_static_atomic_builtin_type_check_var___4-13',
21624 J),
21625 delete_ht(J, k(C, int), A),
21626 ast_static_atomic_builtin_type_check_var___4__5__0__13(B,
21627 C,
21628 D,
21629 E,
21630 F)
21631 ; ast_static_atomic_builtin_type_check_var___4__5__0__13(B,
21632 C,
21633 D,
21634 E,
21635 F)
21636 ).
21637ast_static_atomic_builtin_type_check_var___4__5(A, B, C, D) :-
21638 ast_static_atomic_builtin_type_check_var___4__6(A,
21639 B,
21640 C,
21641 D).
21642ast_static_atomic_builtin_type_check_var___4__6(A, _, int, _) :-
21643 nb_getval('$chr_store_multi_hash_chr_translate____ast_static_atomic_builtin_type_check_var___4-13',
21644 B),
21645 lookup_ht(B, k(A, dense_int), C),
21646 member(D, C),
21647 D=suspension(_, active, _, _, _, _),
21648 !.
21649ast_static_atomic_builtin_type_check_var___4__6(A, B, dense_int, C) :-
21650 nb_getval('$chr_store_multi_hash_chr_translate____ast_static_atomic_builtin_type_check_var___4-13',
21651 D),
21652 lookup_ht(D, k(A, int), E),
21653 !,
21654 ast_static_atomic_builtin_type_check_var___4__6__0__15(E,
21655 A,
21656 B,
21657 dense_int,
21658 C).
21659ast_static_atomic_builtin_type_check_var___4__6__0__15([], A, B, C, D) :-
21660 ast_static_atomic_builtin_type_check_var___4__7(A,
21661 B,
21662 C,
21663 D).
21664ast_static_atomic_builtin_type_check_var___4__6__0__15([A|B], C, D, E, F) :-
21665 ( A=suspension(_, active, G, _, H, _),
21666 G==C,
21667 H=int
21668 -> setarg(2, A, removed),
21669 ( nb_getval('$chr_store_multi_hash_chr_translate____ast_static_atomic_builtin_type_check_var___4-1',
21670 I),
21671 delete_ht(I, C, A)
21672 ),
21673 nb_getval('$chr_store_multi_hash_chr_translate____ast_static_atomic_builtin_type_check_var___4-13',
21674 J),
21675 delete_ht(J, k(C, int), A),
21676 ast_static_atomic_builtin_type_check_var___4__6__0__15(B,
21677 C,
21678 D,
21679 E,
21680 F)
21681 ; ast_static_atomic_builtin_type_check_var___4__6__0__15(B,
21682 C,
21683 D,
21684 E,
21685 F)
21686 ).
21687ast_static_atomic_builtin_type_check_var___4__6(A, B, C, D) :-
21688 ast_static_atomic_builtin_type_check_var___4__7(A,
21689 B,
21690 C,
21691 D).
21692ast_static_atomic_builtin_type_check_var___4__7(A, _, natural, _) :-
21693 nb_getval('$chr_store_multi_hash_chr_translate____ast_static_atomic_builtin_type_check_var___4-13',
21694 B),
21695 lookup_ht(B, k(A, dense_int), C),
21696 member(D, C),
21697 D=suspension(_, active, _, _, _, _),
21698 !.
21699ast_static_atomic_builtin_type_check_var___4__7(A, B, dense_int, C) :-
21700 nb_getval('$chr_store_multi_hash_chr_translate____ast_static_atomic_builtin_type_check_var___4-13',
21701 D),
21702 lookup_ht(D, k(A, natural), E),
21703 !,
21704 ast_static_atomic_builtin_type_check_var___4__7__0__17(E,
21705 A,
21706 B,
21707 dense_int,
21708 C).
21709ast_static_atomic_builtin_type_check_var___4__7__0__17([], A, B, C, D) :-
21710 ast_static_atomic_builtin_type_check_var___4__8(A,
21711 B,
21712 C,
21713 D).
21714ast_static_atomic_builtin_type_check_var___4__7__0__17([A|B], C, D, E, F) :-
21715 ( A=suspension(_, active, G, _, H, _),
21716 G==C,
21717 H=natural
21718 -> setarg(2, A, removed),
21719 ( nb_getval('$chr_store_multi_hash_chr_translate____ast_static_atomic_builtin_type_check_var___4-1',
21720 I),
21721 delete_ht(I, C, A)
21722 ),
21723 nb_getval('$chr_store_multi_hash_chr_translate____ast_static_atomic_builtin_type_check_var___4-13',
21724 J),
21725 delete_ht(J, k(C, natural), A),
21726 ast_static_atomic_builtin_type_check_var___4__7__0__17(B,
21727 C,
21728 D,
21729 E,
21730 F)
21731 ; ast_static_atomic_builtin_type_check_var___4__7__0__17(B,
21732 C,
21733 D,
21734 E,
21735 F)
21736 ).
21737ast_static_atomic_builtin_type_check_var___4__7(A, B, C, D) :-
21738 ast_static_atomic_builtin_type_check_var___4__8(A,
21739 B,
21740 C,
21741 D).
21742ast_static_atomic_builtin_type_check_var___4__8(A, B, C, D) :-
21743 nb_getval('$chr_store_multi_hash_chr_translate____ast_static_atomic_builtin_type_check_var___4-1',
21744 E),
21745 lookup_ht(E, A, F),
21746 member(G, F),
21747 G=suspension(_, active, _, _, H, I),
21748 !,
21749 setarg(2, G, removed),
21750 nb_getval('$chr_store_multi_hash_chr_translate____ast_static_atomic_builtin_type_check_var___4-1',
21751 J),
21752 delete_ht(J, A, G),
21753 nb_getval('$chr_store_multi_hash_chr_translate____ast_static_atomic_builtin_type_check_var___4-13',
21754 K),
21755 delete_ht(K, k(A, H), G),
21756 throw(type_error(type_clash(B, D, I, C, H))).
21757ast_static_atomic_builtin_type_check_var___4__8(A, B, C, D) :-
21758 E=suspension(F, active, A, B, C, D),
21759 'chr gen_id'(F),
21760 nb_getval('$chr_store_multi_hash_chr_translate____ast_static_atomic_builtin_type_check_var___4-1',
21761 G),
21762 insert_ht(G, A, E),
21763 nb_getval('$chr_store_multi_hash_chr_translate____ast_static_atomic_builtin_type_check_var___4-13',
21764 H),
21765 insert_ht(H, k(A, C), E).
21766dynamic_type_check :-
21767 dynamic_type_check___0__0(_).
21768dynamic_type_check___0__0(A) :-
21769 nb_getval('$chr_store_global_list_chr_translate____type_definition___2',
21770 B),
21771 !,
21772 A=suspension(C, not_stored_yet, t, _),
21773 'chr gen_id'(C),
21774 dynamic_type_check___0__0__0__1(B, A).
21775dynamic_type_check___0__0__0__1([], A) :-
21776 dynamic_type_check___0__1(A).
21777dynamic_type_check___0__0__0__1([A|B], C) :-
21778 ( A=suspension(_, active, _, _, _, D, E),
21779 F=t(235, A, C),
21780 '$novel_production'(A, F),
21781 '$novel_production'(C, F)
21782 -> '$extend_history'(C, F),
21783 arg(2, C, G),
21784 setarg(2, C, active),
21785 ( G==not_stored_yet
21786 -> nb_getval('$chr_store_global_ground_chr_translate____dynamic_type_check___0',
21787 H),
21788 I=[C|H],
21789 b_setval('$chr_store_global_ground_chr_translate____dynamic_type_check___0',
21790 I),
21791 ( H=[J|_]
21792 -> setarg(4, J, I)
21793 ; true
21794 )
21795 ; true
21796 ),
21797 copy_term_nat(D-E, K-L),
21798 maplist(dynamic_type_check_clause(K), L, M),
21799 dynamic_type_check_clauses(M),
21800 ( C=suspension(_, active, _, _)
21801 -> setarg(2, C, inactive),
21802 dynamic_type_check___0__0__0__1(B, C)
21803 ; true
21804 )
21805 ; dynamic_type_check___0__0__0__1(B, C)
21806 ).
21807dynamic_type_check___0__0(A) :-
21808 A=suspension(B, not_stored_yet, t, _),
21809 'chr gen_id'(B),
21810 dynamic_type_check___0__1(A).
21811dynamic_type_check___0__1(A) :-
21812 nb_getval('$chr_store_global_list_chr_translate____type_alias___2', B),
21813 !,
21814 dynamic_type_check___0__1__0__2(B, A).
21815dynamic_type_check___0__1__0__2([], A) :-
21816 dynamic_type_check___0__2(A).
21817dynamic_type_check___0__1__0__2([A|B], C) :-
21818 ( A=suspension(_, active, _, _, _, D, E),
21819 F=t(236, A, C),
21820 '$novel_production'(A, F),
21821 '$novel_production'(C, F)
21822 -> '$extend_history'(C, F),
21823 arg(2, C, G),
21824 setarg(2, C, active),
21825 ( G==not_stored_yet
21826 -> nb_getval('$chr_store_global_ground_chr_translate____dynamic_type_check___0',
21827 H),
21828 I=[C|H],
21829 b_setval('$chr_store_global_ground_chr_translate____dynamic_type_check___0',
21830 I),
21831 ( H=[J|_]
21832 -> setarg(4, J, I)
21833 ; true
21834 )
21835 ; true
21836 ),
21837 copy_term_nat(D-E, K-L),
21838 dynamic_type_check_alias_clause(K, L, M),
21839 dynamic_type_check_clauses([M]),
21840 ( C=suspension(_, active, _, _)
21841 -> setarg(2, C, inactive),
21842 dynamic_type_check___0__1__0__2(B, C)
21843 ; true
21844 )
21845 ; dynamic_type_check___0__1__0__2(B, C)
21846 ).
21847dynamic_type_check___0__1(A) :-
21848 dynamic_type_check___0__2(A).
21849dynamic_type_check___0__2(A) :-
21850 ( var(A)
21851 -> true
21852 ; arg(2, A, B),
21853 setarg(2, A, removed),
21854 ( B==not_stored_yet
21855 -> true
21856 ; arg(4, A, C),
21857 ( var(C)
21858 -> nb_getval('$chr_store_global_ground_chr_translate____dynamic_type_check___0',
21859 D),
21860 D=[_|E],
21861 b_setval('$chr_store_global_ground_chr_translate____dynamic_type_check___0',
21862 E),
21863 ( E=[F|_]
21864 -> setarg(4, F, _)
21865 ; true
21866 )
21867 ; C=[_, _|E],
21868 setarg(2, C, E),
21869 ( E=[F|_]
21870 -> setarg(4, F, C)
21871 ; true
21872 )
21873 )
21874 )
21875 ),
21876 findall(('$dynamic_type_check'(G, H):-I),
21877 ( atomic_builtin_type(G, H, I)
21878 ; compound_builtin_type(G, H, I, _)
21879 ),
21880 J),
21881 dynamic_type_check_clauses(J).
21882dynamic_type_check_clauses(A) :-
21883 nb_getval('$chr_store_global_ground_chr_translate____dynamic_type_check_clauses___1',
21884 B),
21885 member(C, B),
21886 C=suspension(_, active, _, D),
21887 !,
21888 setarg(2, C, removed),
21889 arg(3, C, E),
21890 ( var(E)
21891 -> nb_getval('$chr_store_global_ground_chr_translate____dynamic_type_check_clauses___1',
21892 F),
21893 F=[_|G],
21894 b_setval('$chr_store_global_ground_chr_translate____dynamic_type_check_clauses___1',
21895 G),
21896 ( G=[H|_]
21897 -> setarg(3, H, _)
21898 ; true
21899 )
21900 ; E=[_, _|G],
21901 setarg(2, E, G),
21902 ( G=[H|_]
21903 -> setarg(3, H, E)
21904 ; true
21905 )
21906 ),
21907 append(A, D, I),
21908 dynamic_type_check_clauses(I).
21909dynamic_type_check_clauses(A) :-
21910 B=suspension(C, active, _, A),
21911 'chr gen_id'(C),
21912 nb_getval('$chr_store_global_ground_chr_translate____dynamic_type_check_clauses___1',
21913 D),
21914 E=[B|D],
21915 b_setval('$chr_store_global_ground_chr_translate____dynamic_type_check_clauses___1',
21916 E),
21917 ( D=[F|_]
21918 -> setarg(3, F, E)
21919 ; true
21920 ).
21921get_dynamic_type_check_clauses(A) :-
21922 nb_getval('$chr_store_global_ground_chr_translate____dynamic_type_check_clauses___1',
21923 B),
21924 member(C, B),
21925 C=suspension(_, active, _, D),
21926 !,
21927 setarg(2, C, removed),
21928 arg(3, C, E),
21929 ( var(E)
21930 -> nb_getval('$chr_store_global_ground_chr_translate____dynamic_type_check_clauses___1',
21931 F),
21932 F=[_|G],
21933 b_setval('$chr_store_global_ground_chr_translate____dynamic_type_check_clauses___1',
21934 G),
21935 ( G=[H|_]
21936 -> setarg(3, H, _)
21937 ; true
21938 )
21939 ; E=[_, _|G],
21940 setarg(2, E, G),
21941 ( G=[H|_]
21942 -> setarg(3, H, E)
21943 ; true
21944 )
21945 ),
21946 A=D.
21947get_dynamic_type_check_clauses([]).
21948atomic_type(A) :-
21949 atomic_type___1__0(A, _).
21950atomic_type___1__0(A, B) :-
21951 atomic_builtin_type(A, _, _),
21952 !,
21953 ( var(B)
21954 -> true
21955 ; B=suspension(_, _, _, C),
21956 setarg(2, B, removed),
21957 term_variables(C, D),
21958 arg(3, B, E),
21959 ( var(E)
21960 -> nb_getval('$chr_store_global_list_chr_translate____atomic_type___1',
21961 F),
21962 F=[_|G],
21963 b_setval('$chr_store_global_list_chr_translate____atomic_type___1',
21964 G),
21965 ( G=[H|_]
21966 -> setarg(3, H, _)
21967 ; true
21968 )
21969 ; E=[_, _|G],
21970 setarg(2, E, G),
21971 ( G=[H|_]
21972 -> setarg(3, H, E)
21973 ; true
21974 )
21975 ),
21976 detach_atomic_type___1(D, B)
21977 ),
21978 A\==any.
21979atomic_type___1__0(A, B) :-
21980 nb_getval('$chr_store_global_list_chr_translate____type_definition___2',
21981 C),
21982 member(D, C),
21983 D=suspension(_, active, _, _, _, E, F),
21984 functor(A, G, H),
21985 functor(E, G, H),
21986 !,
21987 ( var(B)
21988 -> true
21989 ; B=suspension(_, _, _, I),
21990 setarg(2, B, removed),
21991 term_variables(I, J),
21992 arg(3, B, K),
21993 ( var(K)
21994 -> nb_getval('$chr_store_global_list_chr_translate____atomic_type___1',
21995 L),
21996 L=[_|M],
21997 b_setval('$chr_store_global_list_chr_translate____atomic_type___1',
21998 M),
21999 ( M=[N|_]
22000 -> setarg(3, N, _)
22001 ; true
22002 )
22003 ; K=[_, _|M],
22004 setarg(2, K, M),
22005 ( M=[N|_]
22006 -> setarg(3, N, K)
22007 ; true
22008 )
22009 ),
22010 detach_atomic_type___1(J, B)
22011 ),
22012 maplist(atomic, F).
22013atomic_type___1__0(A, B) :-
22014 nb_getval('$chr_store_global_list_chr_translate____type_alias___2', C),
22015 member(D, C),
22016 D=suspension(_, active, _, _, _, E, F),
22017 functor(A, G, H),
22018 functor(E, G, H),
22019 !,
22020 ( var(B)
22021 -> true
22022 ; B=suspension(_, _, _, I),
22023 setarg(2, B, removed),
22024 term_variables(I, J),
22025 arg(3, B, K),
22026 ( var(K)
22027 -> nb_getval('$chr_store_global_list_chr_translate____atomic_type___1',
22028 L),
22029 L=[_|M],
22030 b_setval('$chr_store_global_list_chr_translate____atomic_type___1',
22031 M),
22032 ( M=[N|_]
22033 -> setarg(3, N, _)
22034 ; true
22035 )
22036 ; K=[_, _|M],
22037 setarg(2, K, M),
22038 ( M=[N|_]
22039 -> setarg(3, N, K)
22040 ; true
22041 )
22042 ),
22043 detach_atomic_type___1(J, B)
22044 ),
22045 atomic(F),
22046 copy_term_nat(E-F, A-O),
22047 atomic_type(O).
22048atomic_type___1__0(A, B) :-
22049 ( var(B)
22050 -> B=suspension(C, active, _, A),
22051 term_variables(A, D),
22052 'chr gen_id'(C),
22053 nb_getval('$chr_store_global_list_chr_translate____atomic_type___1',
22054 E),
22055 F=[B|E],
22056 b_setval('$chr_store_global_list_chr_translate____atomic_type___1',
22057 F),
22058 ( E=[G|_]
22059 -> setarg(3, G, F)
22060 ; true
22061 ),
22062 attach_atomic_type___1(D, B)
22063 ; setarg(2, B, active)
22064 ).
22065enumerated_atomic_type(A, _) :-
22066 atomic_builtin_type(A, _, _),
22067 !,
22068 fail.
22069enumerated_atomic_type(A, B) :-
22070 nb_getval('$chr_store_global_list_chr_translate____type_definition___2',
22071 C),
22072 member(D, C),
22073 D=suspension(_, active, _, _, _, E, F),
22074 functor(A, G, H),
22075 functor(E, G, H),
22076 !,
22077 maplist(atomic, F),
22078 B=F.
22079enumerated_atomic_type(A, B) :-
22080 nb_getval('$chr_store_global_list_chr_translate____type_alias___2', C),
22081 member(D, C),
22082 D=suspension(_, active, _, _, _, E, F),
22083 functor(A, G, H),
22084 functor(E, G, H),
22085 !,
22086 atomic(F),
22087 copy_term_nat(E-F, A-I),
22088 enumerated_atomic_type(I, B).
22089enumerated_atomic_type(_, _) :-
22090 fail.
22091stored(A, B, yes) :-
22092 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-12',
22093 C),
22094 lookup_ht(C, k(A, B), D),
22095 member(E, D),
22096 E=suspension(_, active, _, _, _, _, F, G, _),
22097 nb_getval('$chr_store_multi_hash_chr_translate____passive___2-12', H),
22098 lookup_ht(H, k(F, G), I),
22099 member(J, I),
22100 J=suspension(_, active, _, _, _),
22101 nb_getval('$chr_store_multi_hash_chr_translate____stored_complete___3-1',
22102 K),
22103 lookup_ht(K, A, L),
22104 member(M, L),
22105 M=suspension(_, active, _, _, N, O),
22106 B<N,
22107 !,
22108 setarg(2, M, removed),
22109 nb_getval('$chr_store_multi_hash_chr_translate____stored_complete___3-13',
22110 P),
22111 delete_ht(P, k(A, O), M),
22112 nb_getval('$chr_store_multi_hash_chr_translate____stored_complete___3-1',
22113 Q),
22114 delete_ht(Q, A, M),
22115 R is O-1,
22116 stored(A, B, maybe),
22117 stored_complete(A, N, R).
22118stored(A, B, yes) :-
22119 nb_getval('$chr_store_multi_hash_chr_translate____stored_complete___3-1',
22120 C),
22121 lookup_ht(C, A, D),
22122 member(E, D),
22123 E=suspension(_, active, _, _, F, G),
22124 B<F,
22125 nb_getval('$chr_store_multi_hash_chr_translate____ai_not_observed___2-12',
22126 H),
22127 lookup_ht(H, k(A, B), I),
22128 member(J, I),
22129 J=suspension(_, active, _, _),
22130 !,
22131 setarg(2, E, removed),
22132 nb_getval('$chr_store_multi_hash_chr_translate____stored_complete___3-13',
22133 K),
22134 delete_ht(K, k(A, G), E),
22135 nb_getval('$chr_store_multi_hash_chr_translate____stored_complete___3-1',
22136 L),
22137 delete_ht(L, A, E),
22138 M is G-1,
22139 stored(A, B, maybe),
22140 stored_complete(A, F, M).
22141stored(A, B, C) :-
22142 D=suspension(E, active, A, B, C),
22143 'chr gen_id'(E),
22144 nb_getval('$chr_store_multi_hash_chr_translate____stored___3-13', F),
22145 insert_ht(F, k(A, C), D),
22146 nb_getval('$chr_store_multi_hash_chr_translate____stored___3-123', G),
22147 insert_ht(G, k(A, B, C), D).
22148stored_completing(A, B, C) :-
22149 ground(A),
22150 ground(B),
22151 nb_getval('$chr_store_multi_hash_chr_translate____stored___3-123', D),
22152 ( ( lookup_ht(D, k(A, B, yes), E),
22153 member(F, E),
22154 F=suspension(_, active, _, _, _),
22155 !,
22156 G is B+1,
22157 H is C+1,
22158 stored_completing(A, G, H)
22159 ; lookup_ht(D, k(A, B, maybe), I),
22160 member(J, I),
22161 J=suspension(_, active, _, _, _),
22162 !,
22163 K is B+1,
22164 stored_completing(A, K, C)
22165 )
22166 ; lookup_ht(D, k(A, B, no), L),
22167 member(M, L),
22168 M=suspension(_, active, _, _, _),
22169 !,
22170 stored_complete(A, B, C)
22171 ).
22172stored_completing(A, B, C) :-
22173 stored_complete(A, B, C).
22174stored_complete(A, B, C) :-
22175 stored_complete___3__0(A, B, C, _).
22176stored_complete___3__0(A, B, C, _) :-
22177 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-1', D),
22178 lookup_ht(D, A, E),
22179 member(F, E),
22180 F=suspension(_, active, _, _, _, G, H, I, _),
22181 G<B,
22182 nb_getval('$chr_store_multi_hash_chr_translate____passive___2-12', J),
22183 lookup_ht(J, k(H, I), K),
22184 member(L, K),
22185 L=suspension(_, active, _, _, _),
22186 nb_getval('$chr_store_multi_hash_chr_translate____stored___3-123', M),
22187 lookup_ht(M, k(A, G, yes), N),
22188 member(O, N),
22189 O=suspension(_, active, _, _, _),
22190 !,
22191 setarg(2, O, removed),
22192 nb_getval('$chr_store_multi_hash_chr_translate____stored___3-13', P),
22193 delete_ht(P, k(A, yes), O),
22194 nb_getval('$chr_store_multi_hash_chr_translate____stored___3-123', Q),
22195 delete_ht(Q, k(A, G, yes), O),
22196 R is C-1,
22197 stored(A, G, maybe),
22198 stored_complete(A, B, R).
22199stored_complete___3__0(A, B, C, _) :-
22200 nb_getval('$chr_store_multi_hash_chr_translate____stored___3-13', D),
22201 lookup_ht(D, k(A, yes), E),
22202 member(F, E),
22203 F=suspension(_, active, _, G, _),
22204 G<B,
22205 nb_getval('$chr_store_multi_hash_chr_translate____ai_not_observed___2-12',
22206 H),
22207 lookup_ht(H, k(A, G), I),
22208 member(J, I),
22209 J=suspension(_, active, _, _),
22210 !,
22211 setarg(2, F, removed),
22212 nb_getval('$chr_store_multi_hash_chr_translate____stored___3-13', K),
22213 delete_ht(K, k(A, yes), F),
22214 nb_getval('$chr_store_multi_hash_chr_translate____stored___3-123', L),
22215 delete_ht(L, k(A, G, yes), F),
22216 M is C-1,
22217 stored(A, G, maybe),
22218 stored_complete(A, B, M).
22219stored_complete___3__0(A, B, 0, C) :-
22220 nb_getval('$chr_store_multi_hash_chr_translate____max_occurrence___2-1',
22221 D),
22222 lookup_ht(D, A, E),
22223 !,
22224 C=suspension(F, not_stored_yet, t, A, B, 0),
22225 'chr gen_id'(F),
22226 stored_complete___3__0__0__3(E, A, B, 0, C).
22227stored_complete___3__0__0__3([], A, B, C, D) :-
22228 stored_complete___3__1(A, B, C, D).
22229stored_complete___3__0__0__3([A|B], C, D, E, F) :-
22230 ( A=suspension(_, active, _, G, H),
22231 G==C,
22232 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-1',
22233 I),
22234 lookup_ht(I, C, J)
22235 -> stored_complete___3__0__1__3(J,
22236 H,
22237 A,
22238 B,
22239 C,
22240 D,
22241 E,
22242 F)
22243 ; stored_complete___3__0__0__3(B, C, D, E, F)
22244 ).
22245stored_complete___3__0__1__3([], _, _, A, B, C, D, E) :-
22246 stored_complete___3__0__0__3(A, B, C, D, E).
22247stored_complete___3__0__1__3([A|B], C, D, E, F, G, H, I) :-
22248 ( A=suspension(_, active, _, _, J, _, K, _, _),
22249 J==F,
22250 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-3',
22251 L),
22252 lookup_ht(L, K, M)
22253 -> stored_complete___3__0__2__3(M,
22254 K,
22255 A,
22256 B,
22257 C,
22258 D,
22259 E,
22260 F,
22261 G,
22262 H,
22263 I)
22264 ; stored_complete___3__0__1__3(B,
22265 C,
22266 D,
22267 E,
22268 F,
22269 G,
22270 H,
22271 I)
22272 ).
22273stored_complete___3__0__2__3([], _, _, A, B, C, D, E, F, G, H) :-
22274 stored_complete___3__0__1__3(A,
22275 B,
22276 C,
22277 D,
22278 E,
22279 F,
22280 G,
22281 H).
22282stored_complete___3__0__2__3([A|B], C, D, E, F, G, H, I, J, K, L) :-
22283 ( A=suspension(_, active, _, _, _, _, M, N, _),
22284 A\==D,
22285 M==C,
22286 O=t(250, A, D, L, G),
22287 '$novel_production'(A, O),
22288 '$novel_production'(D, O),
22289 '$novel_production'(L, O),
22290 '$novel_production'(G, O),
22291 J=<F
22292 -> '$extend_history'(L, O),
22293 arg(2, L, P),
22294 setarg(2, L, active),
22295 ( P==not_stored_yet
22296 -> nb_getval('$chr_store_multi_hash_chr_translate____stored_complete___3-13',
22297 Q),
22298 insert_ht(Q, k(I, K), L),
22299 nb_getval('$chr_store_multi_hash_chr_translate____stored_complete___3-1',
22300 R),
22301 insert_ht(R, I, L)
22302 ; true
22303 ),
22304 passive(C, N),
22305 ( L=suspension(_, active, _, _, _, _)
22306 -> setarg(2, L, inactive),
22307 stored_complete___3__0__2__3(B,
22308 C,
22309 D,
22310 E,
22311 F,
22312 G,
22313 H,
22314 I,
22315 J,
22316 K,
22317 L)
22318 ; true
22319 )
22320 ; stored_complete___3__0__2__3(B,
22321 C,
22322 D,
22323 E,
22324 F,
22325 G,
22326 H,
22327 I,
22328 J,
22329 K,
22330 L)
22331 ).
22332stored_complete___3__0(A, B, C, D) :-
22333 D=suspension(E, not_stored_yet, t, A, B, C),
22334 'chr gen_id'(E),
22335 stored_complete___3__1(A, B, C, D).
22336stored_complete___3__1(A, B, C, D) :-
22337 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-1', E),
22338 lookup_ht(E, A, F),
22339 !,
22340 stored_complete___3__1__0__4(F, A, B, C, D).
22341stored_complete___3__1__0__4([], A, B, C, D) :-
22342 stored_complete___3__2(A, B, C, D).
22343stored_complete___3__1__0__4([A|B], C, D, E, F) :-
22344 ( A=suspension(_, active, _, _, G, H, I, J, _),
22345 G==C,
22346 K=t(259, F, A),
22347 '$novel_production'(F, K),
22348 '$novel_production'(A, K),
22349 H>D
22350 -> '$extend_history'(F, K),
22351 arg(2, F, L),
22352 setarg(2, F, active),
22353 ( L==not_stored_yet
22354 -> nb_getval('$chr_store_multi_hash_chr_translate____stored_complete___3-13',
22355 M),
22356 insert_ht(M, k(C, E), F),
22357 nb_getval('$chr_store_multi_hash_chr_translate____stored_complete___3-1',
22358 N),
22359 insert_ht(N, C, F)
22360 ; true
22361 ),
22362 passive(I, J),
22363 ( F=suspension(_, active, _, _, _, _)
22364 -> setarg(2, F, inactive),
22365 stored_complete___3__1__0__4(B,
22366 C,
22367 D,
22368 E,
22369 F)
22370 ; true
22371 )
22372 ; stored_complete___3__1__0__4(B, C, D, E, F)
22373 ).
22374stored_complete___3__1(A, B, C, D) :-
22375 stored_complete___3__2(A, B, C, D).
22376stored_complete___3__2(A, _, B, C) :-
22377 arg(2, C, D),
22378 setarg(2, C, active),
22379 ( D==not_stored_yet
22380 -> nb_getval('$chr_store_multi_hash_chr_translate____stored_complete___3-13',
22381 E),
22382 insert_ht(E, k(A, B), C),
22383 nb_getval('$chr_store_multi_hash_chr_translate____stored_complete___3-1',
22384 F),
22385 insert_ht(F, A, C)
22386 ; true
22387 ).
22388is_stored(A) :-
22389 ground(A),
22390 nb_getval('$chr_store_multi_hash_chr_translate____max_occurrence___2-1',
22391 B),
22392 lookup_ht(B, A, C),
22393 member(D, C),
22394 D=suspension(_, active, _, _, E),
22395 nb_getval('$chr_store_multi_hash_chr_translate____stored_complete___3-13',
22396 F),
22397 lookup_ht(F, k(A, 0), G),
22398 member(H, G),
22399 H=suspension(_, active, _, _, I, _),
22400 I=<E,
22401 !,
22402 fail.
22403is_stored(_).
22404is_finally_stored(A) :-
22405 ground(A),
22406 nb_getval('$chr_store_multi_hash_chr_translate____max_occurrence___2-1',
22407 B),
22408 lookup_ht(B, A, C),
22409 member(D, C),
22410 D=suspension(_, active, _, _, E),
22411 nb_getval('$chr_store_multi_hash_chr_translate____stored_complete___3-1',
22412 F),
22413 lookup_ht(F, A, G),
22414 member(H, G),
22415 H=suspension(_, active, _, _, I, _),
22416 I=<E,
22417 !,
22418 fail.
22419is_finally_stored(_).
22420check_all_passive(A, [B|C]) :-
22421 nb_getval('$chr_store_multi_hash_chr_translate____passive___2-12', D),
22422 lookup_ht(D, k(A, B), E),
22423 member(F, E),
22424 F=suspension(_, active, _, _, _),
22425 !,
22426 check_all_passive(A, C).
22427check_all_passive(A, []) :-
22428 nb_getval('$chr_store_multi_hash_chr_translate____rule___2-1', B),
22429 lookup_ht(B, A, C),
22430 member(D, C),
22431 D=suspension(_, active, _, _, _, E),
22432 !,
22433 chr_warning(weird_program,
22434 'All heads passive in ~@.\n\tThis rule never fires. Please check your program.\n',
22435 [format_rule(E)]).
22436check_all_passive(A, B) :-
22437 C=suspension(D, active, A, B),
22438 'chr gen_id'(D),
22439 nb_getval('$chr_store_multi_hash_chr_translate____check_all_passive___2-12',
22440 E),
22441 insert_ht(E, k(A, B), C),
22442 nb_getval('$chr_store_multi_hash_chr_translate____check_all_passive___2-1',
22443 F),
22444 insert_ht(F, A, C).
22445constraints_code1([], A, B) :-
22446 !,
22447 A=B.
22448constraints_code1([A|B], C, D) :-
22449 !,
22450 constraint_code(A, C, E),
22451 constraints_code1(B, E, D).
22452constraints_code1(A, B, C) :-
22453 D=suspension(E, active, _, A, B, C),
22454 'chr gen_id'(E),
22455 nb_getval('$chr_store_global_ground_chr_translate____constraints_code1___3',
22456 F),
22457 G=[D|F],
22458 b_setval('$chr_store_global_ground_chr_translate____constraints_code1___3',
22459 G),
22460 ( F=[H|_]
22461 -> setarg(3, H, G)
22462 ; true
22463 ).
22464constraint_code(A, B, C) :-
22465 ( ( chr_pp_flag(debugable, on)
22466 ; is_stored(A),
22467 ( has_active_occurrence(A)
22468 ; chr_pp_flag(late_allocation, off)
22469 ),
22470 ( may_trigger(A)
22471 ; get_allocation_occurrence(A, D),
22472 get_max_occurrence(A, E),
22473 E>=D
22474 )
22475 )
22476 -> constraint_prelude(A, F),
22477 add_dummy_location(F, G),
22478 B=[G|H]
22479 ; B=H
22480 ),
22481 I=[0],
22482 occurrences_code(A, 1, I, J, H, K),
22483 gen_cond_attach_clause(A, J, K, C).
22484has_active_occurrence(A) :-
22485 nb_getval('$chr_store_multi_hash_chr_translate____memo_has_active_occurrence___1-1',
22486 B),
22487 lookup_ht(B, A, C),
22488 member(D, C),
22489 D=suspension(_, active, _),
22490 !.
22491has_active_occurrence(A) :-
22492 has_active_occurrence(A, 1),
22493 memo_has_active_occurrence(A).
22494has_active_occurrence(A, B) :-
22495 nb_getval('$chr_store_multi_hash_chr_translate____max_occurrence___2-1',
22496 C),
22497 lookup_ht(C, A, D),
22498 member(E, D),
22499 E=suspension(_, active, _, _, F),
22500 B>F,
22501 !,
22502 fail.
22503has_active_occurrence(A, B) :-
22504 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-12',
22505 C),
22506 lookup_ht(C, k(A, B), D),
22507 member(E, D),
22508 E=suspension(_, active, _, _, _, _, F, G, _),
22509 nb_getval('$chr_store_multi_hash_chr_translate____passive___2-12', H),
22510 lookup_ht(H, k(F, G), I),
22511 member(J, I),
22512 J=suspension(_, active, _, _, _),
22513 !,
22514 K is B+1,
22515 has_active_occurrence(A, K).
22516has_active_occurrence(_, _).
22517memo_has_active_occurrence(A) :-
22518 B=suspension(C, active, A),
22519 'chr gen_id'(C),
22520 nb_getval('$chr_store_multi_hash_chr_translate____memo_has_active_occurrence___1-1',
22521 D),
22522 insert_ht(D, A, B).
22523use_auxiliary_predicate(A) :-
22524 nb_getval('$chr_store_multi_hash_chr_translate____use_auxiliary_predicate___1-1',
22525 B),
22526 lookup_ht(B, A, C),
22527 member(D, C),
22528 D=suspension(_, active, _),
22529 !.
22530use_auxiliary_predicate(A) :-
22531 B=suspension(C, active, A),
22532 'chr gen_id'(C),
22533 nb_getval('$chr_store_multi_hash_chr_translate____use_auxiliary_predicate___1-1',
22534 D),
22535 insert_ht(D, A, B).
22536use_auxiliary_predicate(A, B) :-
22537 nb_getval('$chr_store_multi_hash_chr_translate____use_auxiliary_predicate___2-12',
22538 C),
22539 lookup_ht(C, k(A, B), D),
22540 member(E, D),
22541 E=suspension(_, active, _, _),
22542 !.
22543use_auxiliary_predicate(A, B) :-
22544 C=suspension(D, active, A, B),
22545 'chr gen_id'(D),
22546 nb_getval('$chr_store_multi_hash_chr_translate____use_auxiliary_predicate___2-1',
22547 E),
22548 insert_ht(E, A, C),
22549 nb_getval('$chr_store_multi_hash_chr_translate____use_auxiliary_predicate___2-12',
22550 F),
22551 insert_ht(F, k(A, B), C).
22552is_used_auxiliary_predicate(A) :-
22553 nb_getval('$chr_store_multi_hash_chr_translate____use_auxiliary_predicate___1-1',
22554 B),
22555 lookup_ht(B, A, C),
22556 member(D, C),
22557 D=suspension(_, active, _),
22558 !.
22559is_used_auxiliary_predicate(A) :-
22560 nb_getval('$chr_store_multi_hash_chr_translate____use_auxiliary_predicate___2-1',
22561 B),
22562 lookup_ht(B, A, C),
22563 member(D, C),
22564 D=suspension(_, active, _, _),
22565 !.
22566is_used_auxiliary_predicate(_) :-
22567 fail.
22568is_used_auxiliary_predicate(A, _) :-
22569 nb_getval('$chr_store_multi_hash_chr_translate____use_auxiliary_predicate___1-1',
22570 B),
22571 lookup_ht(B, A, C),
22572 member(D, C),
22573 D=suspension(_, active, _),
22574 !.
22575is_used_auxiliary_predicate(A, B) :-
22576 nb_getval('$chr_store_multi_hash_chr_translate____use_auxiliary_predicate___2-12',
22577 C),
22578 lookup_ht(C, k(A, B), D),
22579 member(E, D),
22580 E=suspension(_, active, _, _),
22581 !.
22582is_used_auxiliary_predicate(_, _) :-
22583 fail.
22584use_auxiliary_module(A) :-
22585 nb_getval('$chr_store_multi_hash_chr_translate____use_auxiliary_module___1-1',
22586 B),
22587 lookup_ht(B, A, C),
22588 member(D, C),
22589 D=suspension(_, active, _),
22590 !.
22591use_auxiliary_module(A) :-
22592 B=suspension(C, active, A),
22593 'chr gen_id'(C),
22594 nb_getval('$chr_store_multi_hash_chr_translate____use_auxiliary_module___1-1',
22595 D),
22596 insert_ht(D, A, B).
22597is_used_auxiliary_module(A) :-
22598 nb_getval('$chr_store_multi_hash_chr_translate____use_auxiliary_module___1-1',
22599 B),
22600 lookup_ht(B, A, C),
22601 member(D, C),
22602 D=suspension(_, active, _),
22603 !.
22604is_used_auxiliary_module(_) :-
22605 fail.
22606occurrences_code(A, B, C, D, E, F) :-
22607 nb_getval('$chr_store_multi_hash_chr_translate____max_occurrence___2-1',
22608 G),
22609 lookup_ht(G, A, H),
22610 member(I, H),
22611 I=suspension(_, active, _, _, J),
22612 B>J,
22613 !,
22614 D=C,
22615 E=F.
22616occurrences_code(A, B, C, D, E, F) :-
22617 occurrence_code(A, B, C, G, E, H),
22618 I is B+1,
22619 occurrences_code(A, I, G, D, H, F).
22620occurrence_code(A, B, C, D, E, F) :-
22621 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-12',
22622 G),
22623 lookup_ht(G, k(A, B), H),
22624 member(I, H),
22625 I=suspension(_, active, _, _, _, _, J, K, _),
22626 ( nb_getval('$chr_store_multi_hash_chr_translate____passive___2-12',
22627 L),
22628 lookup_ht(L, k(J, K), M),
22629 member(N, M),
22630 N=suspension(_, active, _, _, _),
22631 !,
22632 ( named_history(J, _, _)
22633 -> does_use_history(A, B)
22634 ; true
22635 ),
22636 D=C,
22637 E=F
22638 ; nb_getval('$chr_store_multi_hash_chr_translate____rule___2-1', O),
22639 lookup_ht(O, J, P),
22640 member(Q, P),
22641 Q=suspension(_, active, _, _, _, R),
22642 !,
22643 R=pragma(rule(S, T, _, _), ids(U, V), _, _, _),
22644 ( select2(K, W, U, S, X, Y)
22645 -> D=C,
22646 head1_code(W,
22647 K,
22648 Y,
22649 X,
22650 R,
22651 A,
22652 B,
22653 C,
22654 E,
22655 F)
22656 ; select2(K, Z, V, T, A1, B1)
22657 -> head2_code(Z,
22658 K,
22659 B1,
22660 A1,
22661 R,
22662 A,
22663 B,
22664 C,
22665 E,
22666 C1),
22667 ( should_skip_to_next_id(A, B)
22668 -> inc_id(C, D),
22669 ( unconditional_occurrence(A, B)
22670 -> C1=F
22671 ; gen_alloc_inc_clause(A,
22672 B,
22673 C,
22674 C1,
22675 F)
22676 )
22677 ; D=C,
22678 C1=F
22679 )
22680 )
22681 ).
22682occurrence_code(A, B, _, _, _, _) :-
22683 chr_error(internal,
22684 'occurrence_code/6: missing information to compile ~w:~w\n',
22685 [A, B]).
22686functional_dependency(A, B, C, D) :-
22687 B>1,
22688 nb_getval('$chr_store_multi_hash_chr_translate____allocation_occurrence___2-1',
22689 E),
22690 lookup_ht(E, A, F),
22691 member(G, F),
22692 G=suspension(_, active, _, _, H),
22693 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-13',
22694 I),
22695 lookup_ht(I, k(A, B), J),
22696 member(K, J),
22697 K=suspension(_, active, _, _, _, L, _, _, _),
22698 H>L,
22699 !,
22700 functional_dependency(A, 1, C, D).
22701functional_dependency(A, B, C, D) :-
22702 E=suspension(F, active, A, B, C, D),
22703 'chr gen_id'(F),
22704 nb_getval('$chr_store_multi_hash_chr_translate____functional_dependency___4-1',
22705 G),
22706 insert_ht(G, A, E),
22707 nb_getval('$chr_store_multi_hash_chr_translate____functional_dependency___4-12',
22708 H),
22709 insert_ht(H, k(A, B), E).
22710get_functional_dependency(A, B, C, D) :-
22711 nb_getval('$chr_store_multi_hash_chr_translate____functional_dependency___4-1',
22712 E),
22713 lookup_ht(E, A, F),
22714 member(G, F),
22715 G=suspension(_, active, _, H, I, J),
22716 B>=H,
22717 !,
22718 C=I,
22719 D=J.
22720get_functional_dependency(_, _, _, _) :-
22721 fail.
22722initial_call_pattern(A) :-
22723 initial_call_pattern___1__0(A, _).
22724initial_call_pattern___1__0(A, _) :-
22725 nb_getval('$chr_store_multi_hash_chr_translate____initial_call_pattern___1-1',
22726 B),
22727 lookup_ht(B, A, C),
22728 member(D, C),
22729 D=suspension(_, active, _, _),
22730 !.
22731initial_call_pattern___1__0(A, B) :-
22732 B=suspension(C, active, t, A),
22733 'chr gen_id'(C),
22734 nb_getval('$chr_store_multi_hash_chr_translate____initial_call_pattern___1-1',
22735 D),
22736 insert_ht(D, A, B),
22737 call_pattern(A),
22738 ( B=suspension(_, active, _, _)
22739 -> setarg(2, B, inactive),
22740 initial_call_pattern___1__1(A, B)
22741 ; true
22742 ).
22743initial_call_pattern___1__1(A, B) :-
22744 nb_getval('$chr_store_multi_hash_chr_translate____final_answer_pattern___2-1',
22745 C),
22746 lookup_ht(C, A, D),
22747 !,
22748 initial_call_pattern___1__1__0__4(D, A, B).
22749initial_call_pattern___1__1__0__4([], A, B) :-
22750 initial_call_pattern___1__2(A, B).
22751initial_call_pattern___1__1__0__4([A|B], C, D) :-
22752 ( A=suspension(_, active, _, E, F),
22753 E==C,
22754 nb_getval('$chr_store_global_ground_chr_translate____abstract_constraints___1',
22755 G)
22756 -> initial_call_pattern___1__1__1__4(G,
22757 F,
22758 A,
22759 B,
22760 C,
22761 D)
22762 ; initial_call_pattern___1__1__0__4(B, C, D)
22763 ).
22764initial_call_pattern___1__1__1__4([], _, _, A, B, C) :-
22765 initial_call_pattern___1__1__0__4(A, B, C).
22766initial_call_pattern___1__1__1__4([A|B], C, D, E, F, G) :-
22767 ( A=suspension(_, active, _, H),
22768 I=t(303, G, D, A),
22769 '$novel_production'(G, I),
22770 '$novel_production'(D, I)
22771 -> '$extend_history'(G, I),
22772 setarg(2, G, active),
22773 ai_observation_schedule_new_calls(H, C),
22774 ( G=suspension(_, active, _, _)
22775 -> setarg(2, G, inactive),
22776 initial_call_pattern___1__1__1__4(B,
22777 C,
22778 D,
22779 E,
22780 F,
22781 G)
22782 ; true
22783 )
22784 ; initial_call_pattern___1__1__1__4(B,
22785 C,
22786 D,
22787 E,
22788 F,
22789 G)
22790 ).
22791initial_call_pattern___1__1(A, B) :-
22792 initial_call_pattern___1__2(A, B).
22793initial_call_pattern___1__2(_, A) :-
22794 setarg(2, A, active).
22795call_pattern(A) :-
22796 call_pattern___1__0(A, _).
22797call_pattern___1__0(A, _) :-
22798 nb_getval('$chr_store_multi_hash_chr_translate____call_pattern___1-1',
22799 B),
22800 lookup_ht(B, A, C),
22801 member(D, C),
22802 D=suspension(_, active, _),
22803 !.
22804call_pattern___1__0(A, B) :-
22805 B=suspension(C, active, A),
22806 'chr gen_id'(C),
22807 nb_getval('$chr_store_multi_hash_chr_translate____call_pattern___1-1',
22808 D),
22809 insert_ht(D, A, B),
22810 call_pattern_worker(A),
22811 ( B=suspension(_, active, _)
22812 -> setarg(2, B, inactive),
22813 call_pattern___1__1(A, B)
22814 ; true
22815 ).
22816call_pattern___1__1(_, A) :-
22817 setarg(2, A, active).
22818call_pattern_worker(odom([], A)) :-
22819 !,
22820 final_answer_pattern(odom([], A), odom([], A)).
22821call_pattern_worker(odom([A|B], C)) :-
22822 !,
22823 D=odom(A, C),
22824 depends_on_goal(odom([A|B], C), D),
22825 call_pattern(D).
22826call_pattern_worker(odom((A;B), C)) :-
22827 !,
22828 D=odom((A;B), C),
22829 E=odom([], C),
22830 final_answer_pattern(D, E),
22831 F=odom(A, C),
22832 G=odom(B, C),
22833 call_pattern(F),
22834 call_pattern(G),
22835 depends_on_as(D, F, G).
22836call_pattern_worker(odom(builtin, A)) :-
22837 !,
22838 ord_empty(B),
22839 final_answer_pattern(odom(builtin, A), odom([], B)).
22840call_pattern_worker(odom(occ(A, B), C)) :-
22841 nb_getval('$chr_store_multi_hash_chr_translate____max_occurrence___2-1',
22842 D),
22843 lookup_ht(D, A, E),
22844 member(F, E),
22845 F=suspension(_, active, _, _, G),
22846 B>G,
22847 !,
22848 final_answer_pattern(odom(occ(A, B), C), odom([], C)).
22849call_pattern_worker(odom(A, B)) :-
22850 A=_/_,
22851 !,
22852 C=odom(occ(A, 1), B),
22853 call_pattern(C),
22854 depends_on(odom(A, B), C).
22855call_pattern_worker(odom(occ(A, B), C)) :-
22856 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-12',
22857 D),
22858 lookup_ht(D, k(A, B), E),
22859 member(F, E),
22860 F=suspension(_, active, _, _, _, _, G, H, _),
22861 is_passive(G, H),
22862 !,
22863 I is B+1,
22864 J=odom(occ(A, I), C),
22865 call_pattern(J),
22866 final_answer_pattern(odom(occ(A, B), C), odom([], C)),
22867 depends_on(odom(occ(A, B), C), J).
22868call_pattern_worker(odom(occ(A, B), C)) :-
22869 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-125',
22870 D),
22871 ( lookup_ht(D, k(A, B, simplification), E),
22872 member(F, E),
22873 F=suspension(_, active, _, _, _, _, G, H, _),
22874 \+ is_passive(G, H),
22875 !,
22876 ai_observation_memo_simplification_rest_heads(A, B, I),
22877 ai_observation_observe_set(C, I, J),
22878 ai_observation_memo_abstract_goal(G, K),
22879 call_pattern(odom(K, J)),
22880 L is B+1,
22881 M=odom(occ(A, L), C),
22882 call_pattern(M),
22883 depends_on_as(odom(occ(A, B), C),
22884 odom(K, J),
22885 M),
22886 final_answer_pattern(odom(occ(A, B), C),
22887 odom([], C))
22888 ; lookup_ht(D, k(A, B, propagation), N),
22889 member(O, N),
22890 O=suspension(_, active, _, _, _, _, P, Q, _),
22891 \+ is_passive(P, Q),
22892 !,
22893 ai_observation_memo_propagation_rest_heads(A, B, R),
22894 ai_observation_observe_set(C, R, S),
22895 ord_add_element(S, A, T),
22896 ai_observation_memo_abstract_goal(P, U),
22897 call_pattern(odom(U, T)),
22898 ( ord_memberchk(A, S)
22899 -> V=no
22900 ; V=yes
22901 ),
22902 W is B+1,
22903 X=odom(occ(A, W), C),
22904 call_pattern(X),
22905 depends_on_ap(odom(occ(A, B), C),
22906 odom(U, T),
22907 X,
22908 V)
22909 ).
22910call_pattern_worker(A) :-
22911 chr_error(internal,
22912 'AI observation analysis: unexpected abstract state ~w\n',
22913 [A]).
22914final_answer_pattern(A, B) :-
22915 final_answer_pattern___2__0(A, B, _).
22916final_answer_pattern___2__0(A, B, C) :-
22917 nb_getval('$chr_store_multi_hash_chr_translate____final_answer_pattern___2-1',
22918 D),
22919 lookup_ht(D, A, E),
22920 ( member(F, E),
22921 F=suspension(_, active, _, _, G),
22922 ai_observation_leq(B, G),
22923 !
22924 ; !,
22925 final_answer_pattern___2__0__0__2(E, A, B, C)
22926 ).
22927final_answer_pattern___2__0__0__2([], A, B, C) :-
22928 final_answer_pattern___2__1(A, B, C).
22929final_answer_pattern___2__0__0__2([A|B], C, D, E) :-
22930 ( A=suspension(_, active, _, F, G),
22931 F==C,
22932 ai_observation_leq(G, D)
22933 -> setarg(2, A, removed),
22934 nb_getval('$chr_store_multi_hash_chr_translate____final_answer_pattern___2-1',
22935 H),
22936 delete_ht(H, C, A),
22937 final_answer_pattern___2__0__0__2(B, C, D, E)
22938 ; final_answer_pattern___2__0__0__2(B, C, D, E)
22939 ).
22940final_answer_pattern___2__0(A, B, C) :-
22941 final_answer_pattern___2__1(A, B, C).
22942final_answer_pattern___2__1(A, B, C) :-
22943 nb_getval('$chr_store_multi_hash_chr_translate____initial_call_pattern___1-1',
22944 D),
22945 lookup_ht(D, A, E),
22946 !,
22947 C=suspension(F, not_stored_yet, t, A, B),
22948 'chr gen_id'(F),
22949 final_answer_pattern___2__1__0__3(E, A, B, C).
22950final_answer_pattern___2__1__0__3([], A, B, C) :-
22951 final_answer_pattern___2__2(A, B, C).
22952final_answer_pattern___2__1__0__3([A|B], C, D, E) :-
22953 ( A=suspension(_, active, _, F),
22954 F==C,
22955 nb_getval('$chr_store_global_ground_chr_translate____abstract_constraints___1',
22956 G)
22957 -> final_answer_pattern___2__1__1__3(G,
22958 A,
22959 B,
22960 C,
22961 D,
22962 E)
22963 ; final_answer_pattern___2__1__0__3(B, C, D, E)
22964 ).
22965final_answer_pattern___2__1__1__3([], _, A, B, C, D) :-
22966 final_answer_pattern___2__1__0__3(A, B, C, D).
22967final_answer_pattern___2__1__1__3([A|B], C, D, E, F, G) :-
22968 ( A=suspension(_, active, _, H),
22969 I=t(303, C, G, A),
22970 '$novel_production'(C, I),
22971 '$novel_production'(G, I)
22972 -> '$extend_history'(G, I),
22973 arg(2, G, J),
22974 setarg(2, G, active),
22975 ( J==not_stored_yet
22976 -> nb_getval('$chr_store_multi_hash_chr_translate____final_answer_pattern___2-1',
22977 K),
22978 insert_ht(K, E, G)
22979 ; true
22980 ),
22981 ai_observation_schedule_new_calls(H, F),
22982 ( G=suspension(_, active, _, _, _)
22983 -> setarg(2, G, inactive),
22984 final_answer_pattern___2__1__1__3(B,
22985 C,
22986 D,
22987 E,
22988 F,
22989 G)
22990 ; true
22991 )
22992 ; final_answer_pattern___2__1__1__3(B,
22993 C,
22994 D,
22995 E,
22996 F,
22997 G)
22998 ).
22999final_answer_pattern___2__1(A, B, C) :-
23000 C=suspension(D, not_stored_yet, t, A, B),
23001 'chr gen_id'(D),
23002 final_answer_pattern___2__2(A, B, C).
23003final_answer_pattern___2__2(A, B, C) :-
23004 nb_getval('$chr_store_multi_hash_chr_translate____depends_on___2-2', D),
23005 lookup_ht(D, A, E),
23006 !,
23007 final_answer_pattern___2__2__0__4(E, A, B, C).
23008final_answer_pattern___2__2__0__4([], A, B, C) :-
23009 final_answer_pattern___2__3(A, B, C).
23010final_answer_pattern___2__2__0__4([A|B], C, D, E) :-
23011 ( A=suspension(_, active, _, F, G),
23012 G==C,
23013 H=t(305, A, E),
23014 '$novel_production'(A, H),
23015 '$novel_production'(E, H)
23016 -> '$extend_history'(E, H),
23017 arg(2, E, I),
23018 setarg(2, E, active),
23019 ( I==not_stored_yet
23020 -> nb_getval('$chr_store_multi_hash_chr_translate____final_answer_pattern___2-1',
23021 J),
23022 insert_ht(J, C, E)
23023 ; true
23024 ),
23025 final_answer_pattern(F, D),
23026 ( E=suspension(_, active, _, _, _)
23027 -> setarg(2, E, inactive),
23028 final_answer_pattern___2__2__0__4(B, C, D, E)
23029 ; true
23030 )
23031 ; final_answer_pattern___2__2__0__4(B, C, D, E)
23032 ).
23033final_answer_pattern___2__2(A, B, C) :-
23034 final_answer_pattern___2__3(A, B, C).
23035final_answer_pattern___2__3(A, B, C) :-
23036 nb_getval('$chr_store_multi_hash_chr_translate____depends_on_goal___2-2',
23037 D),
23038 lookup_ht(D, A, E),
23039 !,
23040 final_answer_pattern___2__3__0__5(E, A, B, C).
23041final_answer_pattern___2__3__0__5([], A, B, C) :-
23042 final_answer_pattern___2__4(A, B, C).
23043final_answer_pattern___2__3__0__5([A|B], C, D, E) :-
23044 ( A=suspension(_, active, _, F, G),
23045 G==C,
23046 nb_getval('$chr_store_multi_hash_chr_translate____depends_on___2-1',
23047 H),
23048 lookup_ht(H, F, I)
23049 -> final_answer_pattern___2__3__1__5(I,
23050 F,
23051 A,
23052 B,
23053 C,
23054 D,
23055 E)
23056 ; final_answer_pattern___2__3__0__5(B, C, D, E)
23057 ).
23058final_answer_pattern___2__3__1__5([], _, _, A, B, C, D) :-
23059 final_answer_pattern___2__3__0__5(A, B, C, D).
23060final_answer_pattern___2__3__1__5([A|B], C, D, E, F, G, H) :-
23061 ( A=suspension(_, active, _, I, J),
23062 I==C
23063 -> setarg(2, A, removed),
23064 ( nb_getval('$chr_store_multi_hash_chr_translate____depends_on___2-1',
23065 K),
23066 delete_ht(K, C, A)
23067 ),
23068 nb_getval('$chr_store_multi_hash_chr_translate____depends_on___2-2',
23069 L),
23070 delete_ht(L, J, A),
23071 final_answer_pattern___2__3__1__5(B,
23072 C,
23073 D,
23074 E,
23075 F,
23076 G,
23077 H)
23078 ; final_answer_pattern___2__3__1__5(B,
23079 C,
23080 D,
23081 E,
23082 F,
23083 G,
23084 H)
23085 ).
23086final_answer_pattern___2__3(A, B, C) :-
23087 final_answer_pattern___2__4(A, B, C).
23088final_answer_pattern___2__4(A, B, C) :-
23089 nb_getval('$chr_store_multi_hash_chr_translate____depends_on_goal___2-2',
23090 D),
23091 lookup_ht(D, A, E),
23092 !,
23093 final_answer_pattern___2__4__0__6(E, A, B, C).
23094final_answer_pattern___2__4__0__6([], A, B, C) :-
23095 final_answer_pattern___2__5(A, B, C).
23096final_answer_pattern___2__4__0__6([A|B], C, D, E) :-
23097 ( A=suspension(_, active, _, F, G),
23098 G==C,
23099 H=t(310, A, E),
23100 '$novel_production'(A, H),
23101 '$novel_production'(E, H)
23102 -> '$extend_history'(E, H),
23103 arg(2, E, I),
23104 setarg(2, E, active),
23105 ( I==not_stored_yet
23106 -> nb_getval('$chr_store_multi_hash_chr_translate____final_answer_pattern___2-1',
23107 J),
23108 insert_ht(J, C, E)
23109 ; true
23110 ),
23111 F=odom([_|K], _),
23112 D=odom([], L),
23113 M=odom(K, L),
23114 call_pattern(M),
23115 depends_on(F, M),
23116 ( E=suspension(_, active, _, _, _)
23117 -> setarg(2, E, inactive),
23118 final_answer_pattern___2__4__0__6(B, C, D, E)
23119 ; true
23120 )
23121 ; final_answer_pattern___2__4__0__6(B, C, D, E)
23122 ).
23123final_answer_pattern___2__4(A, B, C) :-
23124 final_answer_pattern___2__5(A, B, C).
23125final_answer_pattern___2__5(A, B, C) :-
23126 nb_getval('$chr_store_multi_hash_chr_translate____depends_on_as___3-2',
23127 D),
23128 lookup_ht(D, A, E),
23129 !,
23130 final_answer_pattern___2__5__0__7(E, A, B, C).
23131final_answer_pattern___2__5__0__7([], A, B, C) :-
23132 final_answer_pattern___2__6(A, B, C).
23133final_answer_pattern___2__5__0__7([A|B], C, D, E) :-
23134 ( A=suspension(_, active, _, F, G, H),
23135 G==C,
23136 nb_getval('$chr_store_multi_hash_chr_translate____final_answer_pattern___2-1',
23137 I),
23138 lookup_ht(I, H, J)
23139 -> final_answer_pattern___2__5__1__7(J,
23140 F,
23141 H,
23142 A,
23143 B,
23144 C,
23145 D,
23146 E)
23147 ; final_answer_pattern___2__5__0__7(B, C, D, E)
23148 ).
23149final_answer_pattern___2__5__1__7([], _, _, _, A, B, C, D) :-
23150 final_answer_pattern___2__5__0__7(A, B, C, D).
23151final_answer_pattern___2__5__1__7([A|B], C, D, E, F, G, H, I) :-
23152 ( A=suspension(_, active, _, J, K),
23153 J==D,
23154 L=t(317, E, I, A),
23155 '$novel_production'(E, L),
23156 '$novel_production'(I, L),
23157 '$novel_production'(A, L)
23158 -> '$extend_history'(I, L),
23159 arg(2, I, M),
23160 setarg(2, I, active),
23161 ( M==not_stored_yet
23162 -> nb_getval('$chr_store_multi_hash_chr_translate____final_answer_pattern___2-1',
23163 N),
23164 insert_ht(N, G, I)
23165 ; true
23166 ),
23167 ai_observation_lub(H, K, O),
23168 final_answer_pattern(C, O),
23169 ( I=suspension(_, active, _, _, _)
23170 -> setarg(2, I, inactive),
23171 final_answer_pattern___2__5__1__7(B,
23172 C,
23173 D,
23174 E,
23175 F,
23176 G,
23177 H,
23178 I)
23179 ; true
23180 )
23181 ; final_answer_pattern___2__5__1__7(B,
23182 C,
23183 D,
23184 E,
23185 F,
23186 G,
23187 H,
23188 I)
23189 ).
23190final_answer_pattern___2__5(A, B, C) :-
23191 final_answer_pattern___2__6(A, B, C).
23192final_answer_pattern___2__6(A, B, C) :-
23193 nb_getval('$chr_store_multi_hash_chr_translate____depends_on_as___3-3',
23194 D),
23195 lookup_ht(D, A, E),
23196 !,
23197 final_answer_pattern___2__6__0__8(E, A, B, C).
23198final_answer_pattern___2__6__0__8([], A, B, C) :-
23199 final_answer_pattern___2__7(A, B, C).
23200final_answer_pattern___2__6__0__8([A|B], C, D, E) :-
23201 ( A=suspension(_, active, _, F, G, H),
23202 H==C,
23203 nb_getval('$chr_store_multi_hash_chr_translate____final_answer_pattern___2-1',
23204 I),
23205 lookup_ht(I, G, J)
23206 -> final_answer_pattern___2__6__1__8(J,
23207 F,
23208 G,
23209 A,
23210 B,
23211 C,
23212 D,
23213 E)
23214 ; final_answer_pattern___2__6__0__8(B, C, D, E)
23215 ).
23216final_answer_pattern___2__6__1__8([], _, _, _, A, B, C, D) :-
23217 final_answer_pattern___2__6__0__8(A, B, C, D).
23218final_answer_pattern___2__6__1__8([A|B], C, D, E, F, G, H, I) :-
23219 ( A=suspension(_, active, _, J, K),
23220 J==D,
23221 L=t(317, E, A, I),
23222 '$novel_production'(E, L),
23223 '$novel_production'(A, L),
23224 '$novel_production'(I, L)
23225 -> '$extend_history'(I, L),
23226 arg(2, I, M),
23227 setarg(2, I, active),
23228 ( M==not_stored_yet
23229 -> nb_getval('$chr_store_multi_hash_chr_translate____final_answer_pattern___2-1',
23230 N),
23231 insert_ht(N, G, I)
23232 ; true
23233 ),
23234 ai_observation_lub(K, H, O),
23235 final_answer_pattern(C, O),
23236 ( I=suspension(_, active, _, _, _)
23237 -> setarg(2, I, inactive),
23238 final_answer_pattern___2__6__1__8(B,
23239 C,
23240 D,
23241 E,
23242 F,
23243 G,
23244 H,
23245 I)
23246 ; true
23247 )
23248 ; final_answer_pattern___2__6__1__8(B,
23249 C,
23250 D,
23251 E,
23252 F,
23253 G,
23254 H,
23255 I)
23256 ).
23257final_answer_pattern___2__6(A, B, C) :-
23258 final_answer_pattern___2__7(A, B, C).
23259final_answer_pattern___2__7(A, B, C) :-
23260 nb_getval('$chr_store_multi_hash_chr_translate____depends_on_ap___4-3',
23261 D),
23262 lookup_ht(D, A, E),
23263 !,
23264 final_answer_pattern___2__7__0__9(E, A, B, C).
23265final_answer_pattern___2__7__0__9([], A, B, C) :-
23266 final_answer_pattern___2__8(A, B, C).
23267final_answer_pattern___2__7__0__9([A|B], C, D, E) :-
23268 ( A=suspension(_, active, _, F, _, G, _),
23269 G==C,
23270 H=t(325, A, E),
23271 '$novel_production'(A, H),
23272 '$novel_production'(E, H)
23273 -> '$extend_history'(E, H),
23274 arg(2, E, I),
23275 setarg(2, E, active),
23276 ( I==not_stored_yet
23277 -> nb_getval('$chr_store_multi_hash_chr_translate____final_answer_pattern___2-1',
23278 J),
23279 insert_ht(J, C, E)
23280 ; true
23281 ),
23282 final_answer_pattern(F, D),
23283 ( E=suspension(_, active, _, _, _)
23284 -> setarg(2, E, inactive),
23285 final_answer_pattern___2__7__0__9(B, C, D, E)
23286 ; true
23287 )
23288 ; final_answer_pattern___2__7__0__9(B, C, D, E)
23289 ).
23290final_answer_pattern___2__7(A, B, C) :-
23291 final_answer_pattern___2__8(A, B, C).
23292final_answer_pattern___2__8(A, B, C) :-
23293 nb_getval('$chr_store_multi_hash_chr_translate____depends_on_ap___4-2',
23294 D),
23295 lookup_ht(D, A, E),
23296 !,
23297 final_answer_pattern___2__8__0__10(E, A, B, C).
23298final_answer_pattern___2__8__0__10([], A, B, C) :-
23299 final_answer_pattern___2__9(A, B, C).
23300final_answer_pattern___2__8__0__10([A|B], C, D, E) :-
23301 ( A=suspension(_, active, _, F, G, H, I),
23302 G==C,
23303 nb_getval('$chr_store_multi_hash_chr_translate____final_answer_pattern___2-1',
23304 J),
23305 lookup_ht(J, H, K)
23306 -> final_answer_pattern___2__8__1__10(K,
23307 F,
23308 H,
23309 I,
23310 A,
23311 B,
23312 C,
23313 D,
23314 E)
23315 ; final_answer_pattern___2__8__0__10(B, C, D, E)
23316 ).
23317final_answer_pattern___2__8__1__10([], _, _, _, _, A, B, C, D) :-
23318 final_answer_pattern___2__8__0__10(A, B, C, D).
23319final_answer_pattern___2__8__1__10([A|B], C, D, E, F, G, H, I, J) :-
23320 ( A=suspension(_, active, _, K, L),
23321 K==D,
23322 M=t(326, F, J, A),
23323 '$novel_production'(F, M),
23324 '$novel_production'(J, M),
23325 '$novel_production'(A, M)
23326 -> '$extend_history'(J, M),
23327 arg(2, J, N),
23328 setarg(2, J, active),
23329 ( N==not_stored_yet
23330 -> nb_getval('$chr_store_multi_hash_chr_translate____final_answer_pattern___2-1',
23331 O),
23332 insert_ht(O, H, J)
23333 ; true
23334 ),
23335 C=odom(occ(P, Q), _),
23336 ( ai_observation_is_observed(I, P)
23337 -> ai_observed_internal(P, Q)
23338 ; ai_not_observed_internal(P, Q)
23339 ),
23340 ( E==yes
23341 -> I=odom([], R),
23342 ord_del_element(R, P, S),
23343 T=odom([], S)
23344 ; T=I
23345 ),
23346 ai_observation_lub(T, L, U),
23347 final_answer_pattern(C, U),
23348 ( J=suspension(_, active, _, _, _)
23349 -> setarg(2, J, inactive),
23350 final_answer_pattern___2__8__1__10(B,
23351 C,
23352 D,
23353 E,
23354 F,
23355 G,
23356 H,
23357 I,
23358 J)
23359 ; true
23360 )
23361 ; final_answer_pattern___2__8__1__10(B,
23362 C,
23363 D,
23364 E,
23365 F,
23366 G,
23367 H,
23368 I,
23369 J)
23370 ).
23371final_answer_pattern___2__8(A, B, C) :-
23372 final_answer_pattern___2__9(A, B, C).
23373final_answer_pattern___2__9(A, B, C) :-
23374 nb_getval('$chr_store_multi_hash_chr_translate____depends_on_ap___4-3',
23375 D),
23376 lookup_ht(D, A, E),
23377 !,
23378 final_answer_pattern___2__9__0__11(E, A, B, C).
23379final_answer_pattern___2__9__0__11([], A, B, C) :-
23380 final_answer_pattern___2__10(A, B, C).
23381final_answer_pattern___2__9__0__11([A|B], C, D, E) :-
23382 ( A=suspension(_, active, _, F, G, H, I),
23383 H==C,
23384 nb_getval('$chr_store_multi_hash_chr_translate____final_answer_pattern___2-1',
23385 J),
23386 lookup_ht(J, G, K)
23387 -> final_answer_pattern___2__9__1__11(K,
23388 F,
23389 G,
23390 I,
23391 A,
23392 B,
23393 C,
23394 D,
23395 E)
23396 ; final_answer_pattern___2__9__0__11(B, C, D, E)
23397 ).
23398final_answer_pattern___2__9__1__11([], _, _, _, _, A, B, C, D) :-
23399 final_answer_pattern___2__9__0__11(A, B, C, D).
23400final_answer_pattern___2__9__1__11([A|B], C, D, E, F, G, H, I, J) :-
23401 ( A=suspension(_, active, _, K, L),
23402 K==D,
23403 M=t(326, F, A, J),
23404 '$novel_production'(F, M),
23405 '$novel_production'(A, M),
23406 '$novel_production'(J, M)
23407 -> '$extend_history'(J, M),
23408 arg(2, J, N),
23409 setarg(2, J, active),
23410 ( N==not_stored_yet
23411 -> nb_getval('$chr_store_multi_hash_chr_translate____final_answer_pattern___2-1',
23412 O),
23413 insert_ht(O, H, J)
23414 ; true
23415 ),
23416 C=odom(occ(P, Q), _),
23417 ( ai_observation_is_observed(L, P)
23418 -> ai_observed_internal(P, Q)
23419 ; ai_not_observed_internal(P, Q)
23420 ),
23421 ( E==yes
23422 -> L=odom([], R),
23423 ord_del_element(R, P, S),
23424 T=odom([], S)
23425 ; T=L
23426 ),
23427 ai_observation_lub(T, I, U),
23428 final_answer_pattern(C, U),
23429 ( J=suspension(_, active, _, _, _)
23430 -> setarg(2, J, inactive),
23431 final_answer_pattern___2__9__1__11(B,
23432 C,
23433 D,
23434 E,
23435 F,
23436 G,
23437 H,
23438 I,
23439 J)
23440 ; true
23441 )
23442 ; final_answer_pattern___2__9__1__11(B,
23443 C,
23444 D,
23445 E,
23446 F,
23447 G,
23448 H,
23449 I,
23450 J)
23451 ).
23452final_answer_pattern___2__9(A, B, C) :-
23453 final_answer_pattern___2__10(A, B, C).
23454final_answer_pattern___2__10(A, _, B) :-
23455 arg(2, B, C),
23456 setarg(2, B, active),
23457 ( C==not_stored_yet
23458 -> nb_getval('$chr_store_multi_hash_chr_translate____final_answer_pattern___2-1',
23459 D),
23460 insert_ht(D, A, B)
23461 ; true
23462 ).
23463abstract_constraints(A) :-
23464 nb_getval('$chr_store_global_ground_chr_translate____abstract_constraints___1',
23465 B),
23466 ( member(C, B),
23467 C=suspension(_, active, _, _),
23468 !
23469 ; !,
23470 abstract_constraints___1__0__0__2(B, A)
23471 ).
23472abstract_constraints___1__0__0__2([], A) :-
23473 abstract_constraints___1__1(A).
23474abstract_constraints___1__0__0__2([A|B], C) :-
23475 ( A=suspension(_, active, _, _)
23476 -> setarg(2, A, removed),
23477 arg(3, A, D),
23478 ( var(D)
23479 -> nb_getval('$chr_store_global_ground_chr_translate____abstract_constraints___1',
23480 E),
23481 E=[_|F],
23482 b_setval('$chr_store_global_ground_chr_translate____abstract_constraints___1',
23483 F),
23484 ( F=[G|_]
23485 -> setarg(3, G, _)
23486 ; true
23487 )
23488 ; D=[_, _|F],
23489 setarg(2, D, F),
23490 ( F=[G|_]
23491 -> setarg(3, G, D)
23492 ; true
23493 )
23494 ),
23495 abstract_constraints___1__0__0__2(B, C)
23496 ; abstract_constraints___1__0__0__2(B, C)
23497 ).
23498abstract_constraints(A) :-
23499 abstract_constraints___1__1(A).
23500abstract_constraints___1__1(A) :-
23501 B=suspension(C, active, _, A),
23502 'chr gen_id'(C),
23503 nb_getval('$chr_store_global_ground_chr_translate____abstract_constraints___1',
23504 D),
23505 E=[B|D],
23506 b_setval('$chr_store_global_ground_chr_translate____abstract_constraints___1',
23507 E),
23508 ( D=[F|_]
23509 -> setarg(3, F, E)
23510 ; true
23511 ).
23512depends_on(A, B) :-
23513 depends_on___2__0(A, B, _).
23514depends_on___2__0(A, B, C) :-
23515 nb_getval('$chr_store_multi_hash_chr_translate____final_answer_pattern___2-1',
23516 D),
23517 lookup_ht(D, B, E),
23518 !,
23519 C=suspension(F, not_stored_yet, t, A, B),
23520 'chr gen_id'(F),
23521 depends_on___2__0__0__1(E, A, B, C).
23522depends_on___2__0__0__1([], A, B, C) :-
23523 depends_on___2__1(A, B, C).
23524depends_on___2__0__0__1([A|B], C, D, E) :-
23525 ( A=suspension(_, active, _, F, G),
23526 F==D,
23527 H=t(305, E, A),
23528 '$novel_production'(E, H),
23529 '$novel_production'(A, H)
23530 -> '$extend_history'(E, H),
23531 arg(2, E, I),
23532 setarg(2, E, active),
23533 ( I==not_stored_yet
23534 -> nb_getval('$chr_store_multi_hash_chr_translate____depends_on___2-1',
23535 J),
23536 insert_ht(J, C, E),
23537 nb_getval('$chr_store_multi_hash_chr_translate____depends_on___2-2',
23538 K),
23539 insert_ht(K, D, E)
23540 ; true
23541 ),
23542 final_answer_pattern(C, G),
23543 ( E=suspension(_, active, _, _, _)
23544 -> setarg(2, E, inactive),
23545 depends_on___2__0__0__1(B, C, D, E)
23546 ; true
23547 )
23548 ; depends_on___2__0__0__1(B, C, D, E)
23549 ).
23550depends_on___2__0(A, B, C) :-
23551 C=suspension(D, not_stored_yet, t, A, B),
23552 'chr gen_id'(D),
23553 depends_on___2__1(A, B, C).
23554depends_on___2__1(A, B, C) :-
23555 arg(2, C, D),
23556 setarg(2, C, active),
23557 ( D==not_stored_yet
23558 -> nb_getval('$chr_store_multi_hash_chr_translate____depends_on___2-1',
23559 E),
23560 insert_ht(E, A, C),
23561 nb_getval('$chr_store_multi_hash_chr_translate____depends_on___2-2',
23562 F),
23563 insert_ht(F, B, C)
23564 ; true
23565 ).
23566depends_on_ap(A, B, C, D) :-
23567 depends_on_ap___4__0(A, B, C, D, _).
23568depends_on_ap___4__0(A, B, C, D, E) :-
23569 nb_getval('$chr_store_multi_hash_chr_translate____final_answer_pattern___2-1',
23570 F),
23571 lookup_ht(F, C, G),
23572 !,
23573 E=suspension(H, not_stored_yet, t, A, B, C, D),
23574 'chr gen_id'(H),
23575 depends_on_ap___4__0__0__1(G,
23576 A,
23577 B,
23578 C,
23579 D,
23580 E).
23581depends_on_ap___4__0__0__1([], A, B, C, D, E) :-
23582 depends_on_ap___4__1(A, B, C, D, E).
23583depends_on_ap___4__0__0__1([A|B], C, D, E, F, G) :-
23584 ( A=suspension(_, active, _, H, I),
23585 H==E,
23586 J=t(325, G, A),
23587 '$novel_production'(G, J),
23588 '$novel_production'(A, J)
23589 -> '$extend_history'(G, J),
23590 arg(2, G, K),
23591 setarg(2, G, active),
23592 ( K==not_stored_yet
23593 -> nb_getval('$chr_store_multi_hash_chr_translate____depends_on_ap___4-2',
23594 L),
23595 insert_ht(L, D, G),
23596 nb_getval('$chr_store_multi_hash_chr_translate____depends_on_ap___4-3',
23597 M),
23598 insert_ht(M, E, G)
23599 ; true
23600 ),
23601 final_answer_pattern(C, I),
23602 ( G=suspension(_, active, _, _, _, _, _)
23603 -> setarg(2, G, inactive),
23604 depends_on_ap___4__0__0__1(B,
23605 C,
23606 D,
23607 E,
23608 F,
23609 G)
23610 ; true
23611 )
23612 ; depends_on_ap___4__0__0__1(B,
23613 C,
23614 D,
23615 E,
23616 F,
23617 G)
23618 ).
23619depends_on_ap___4__0(A, B, C, D, E) :-
23620 E=suspension(F, not_stored_yet, t, A, B, C, D),
23621 'chr gen_id'(F),
23622 depends_on_ap___4__1(A, B, C, D, E).
23623depends_on_ap___4__1(A, B, C, D, E) :-
23624 nb_getval('$chr_store_multi_hash_chr_translate____final_answer_pattern___2-1',
23625 F),
23626 lookup_ht(F, B, G),
23627 !,
23628 depends_on_ap___4__1__0__2(G,
23629 A,
23630 B,
23631 C,
23632 D,
23633 E).
23634depends_on_ap___4__1__0__2([], A, B, C, D, E) :-
23635 depends_on_ap___4__2(A, B, C, D, E).
23636depends_on_ap___4__1__0__2([A|B], C, D, E, F, G) :-
23637 ( A=suspension(_, active, _, H, I),
23638 H==D,
23639 nb_getval('$chr_store_multi_hash_chr_translate____final_answer_pattern___2-1',
23640 J),
23641 lookup_ht(J, E, K)
23642 -> depends_on_ap___4__1__1__2(K,
23643 I,
23644 A,
23645 B,
23646 C,
23647 D,
23648 E,
23649 F,
23650 G)
23651 ; depends_on_ap___4__1__0__2(B,
23652 C,
23653 D,
23654 E,
23655 F,
23656 G)
23657 ).
23658depends_on_ap___4__1__1__2([], _, _, A, B, C, D, E, F) :-
23659 depends_on_ap___4__1__0__2(A,
23660 B,
23661 C,
23662 D,
23663 E,
23664 F).
23665depends_on_ap___4__1__1__2([A|B], C, D, E, F, G, H, I, J) :-
23666 ( A=suspension(_, active, _, K, L),
23667 A\==D,
23668 K==H,
23669 M=t(326, J, D, A),
23670 '$novel_production'(J, M),
23671 '$novel_production'(D, M),
23672 '$novel_production'(A, M)
23673 -> '$extend_history'(J, M),
23674 arg(2, J, N),
23675 setarg(2, J, active),
23676 ( N==not_stored_yet
23677 -> nb_getval('$chr_store_multi_hash_chr_translate____depends_on_ap___4-2',
23678 O),
23679 insert_ht(O, G, J),
23680 nb_getval('$chr_store_multi_hash_chr_translate____depends_on_ap___4-3',
23681 P),
23682 insert_ht(P, H, J)
23683 ; true
23684 ),
23685 F=odom(occ(Q, R), _),
23686 ( ai_observation_is_observed(C, Q)
23687 -> ai_observed_internal(Q, R)
23688 ; ai_not_observed_internal(Q, R)
23689 ),
23690 ( I==yes
23691 -> C=odom([], S),
23692 ord_del_element(S, Q, T),
23693 U=odom([], T)
23694 ; U=C
23695 ),
23696 ai_observation_lub(U, L, V),
23697 final_answer_pattern(F, V),
23698 ( J=suspension(_, active, _, _, _, _, _)
23699 -> setarg(2, J, inactive),
23700 depends_on_ap___4__1__1__2(B,
23701 C,
23702 D,
23703 E,
23704 F,
23705 G,
23706 H,
23707 I,
23708 J)
23709 ; true
23710 )
23711 ; depends_on_ap___4__1__1__2(B,
23712 C,
23713 D,
23714 E,
23715 F,
23716 G,
23717 H,
23718 I,
23719 J)
23720 ).
23721depends_on_ap___4__1(A, B, C, D, E) :-
23722 depends_on_ap___4__2(A, B, C, D, E).
23723depends_on_ap___4__2(_, A, B, _, C) :-
23724 arg(2, C, D),
23725 setarg(2, C, active),
23726 ( D==not_stored_yet
23727 -> nb_getval('$chr_store_multi_hash_chr_translate____depends_on_ap___4-2',
23728 E),
23729 insert_ht(E, A, C),
23730 nb_getval('$chr_store_multi_hash_chr_translate____depends_on_ap___4-3',
23731 F),
23732 insert_ht(F, B, C)
23733 ; true
23734 ).
23735depends_on_goal(A, B) :-
23736 depends_on_goal___2__0(A, B, _).
23737depends_on_goal___2__0(A, B, C) :-
23738 nb_getval('$chr_store_multi_hash_chr_translate____depends_on___2-1', D),
23739 lookup_ht(D, A, E),
23740 !,
23741 depends_on_goal___2__0__0__1(E, A, B, C).
23742depends_on_goal___2__0__0__1([], A, B, C) :-
23743 depends_on_goal___2__1(A, B, C).
23744depends_on_goal___2__0__0__1([A|B], C, D, E) :-
23745 ( A=suspension(_, active, _, F, G),
23746 F==C,
23747 ground(D),
23748 nb_getval('$chr_store_multi_hash_chr_translate____final_answer_pattern___2-1',
23749 H),
23750 lookup_ht(H, D, I),
23751 member(J, I),
23752 J=suspension(_, active, _, _, _)
23753 -> setarg(2, A, removed),
23754 ( nb_getval('$chr_store_multi_hash_chr_translate____depends_on___2-1',
23755 K),
23756 delete_ht(K, C, A)
23757 ),
23758 nb_getval('$chr_store_multi_hash_chr_translate____depends_on___2-2',
23759 L),
23760 delete_ht(L, G, A),
23761 depends_on_goal___2__0__0__1(B, C, D, E)
23762 ; depends_on_goal___2__0__0__1(B, C, D, E)
23763 ).
23764depends_on_goal___2__0(A, B, C) :-
23765 depends_on_goal___2__1(A, B, C).
23766depends_on_goal___2__1(A, B, C) :-
23767 nb_getval('$chr_store_multi_hash_chr_translate____final_answer_pattern___2-1',
23768 D),
23769 lookup_ht(D, B, E),
23770 !,
23771 C=suspension(F, not_stored_yet, t, A, B),
23772 'chr gen_id'(F),
23773 depends_on_goal___2__1__0__2(E, A, B, C).
23774depends_on_goal___2__1__0__2([], A, B, C) :-
23775 depends_on_goal___2__2(A, B, C).
23776depends_on_goal___2__1__0__2([A|B], C, D, E) :-
23777 ( A=suspension(_, active, _, F, G),
23778 F==D,
23779 H=t(310, E, A),
23780 '$novel_production'(E, H),
23781 '$novel_production'(A, H)
23782 -> '$extend_history'(E, H),
23783 arg(2, E, I),
23784 setarg(2, E, active),
23785 ( I==not_stored_yet
23786 -> nb_getval('$chr_store_multi_hash_chr_translate____depends_on_goal___2-2',
23787 J),
23788 insert_ht(J, D, E)
23789 ; true
23790 ),
23791 C=odom([_|K], _),
23792 G=odom([], L),
23793 M=odom(K, L),
23794 call_pattern(M),
23795 depends_on(C, M),
23796 ( E=suspension(_, active, _, _, _)
23797 -> setarg(2, E, inactive),
23798 depends_on_goal___2__1__0__2(B, C, D, E)
23799 ; true
23800 )
23801 ; depends_on_goal___2__1__0__2(B, C, D, E)
23802 ).
23803depends_on_goal___2__1(A, B, C) :-
23804 C=suspension(D, not_stored_yet, t, A, B),
23805 'chr gen_id'(D),
23806 depends_on_goal___2__2(A, B, C).
23807depends_on_goal___2__2(_, A, B) :-
23808 arg(2, B, C),
23809 setarg(2, B, active),
23810 ( C==not_stored_yet
23811 -> nb_getval('$chr_store_multi_hash_chr_translate____depends_on_goal___2-2',
23812 D),
23813 insert_ht(D, A, B)
23814 ; true
23815 ).
23816ai_observed_internal(A, B) :-
23817 nb_getval('$chr_store_multi_hash_chr_translate____ai_not_observed_internal___2-12',
23818 C),
23819 lookup_ht(C, k(A, B), D),
23820 !,
23821 ai_observed_internal___2__0__0__1(D, A, B).
23822ai_observed_internal___2__0__0__1([], A, B) :-
23823 ai_observed_internal___2__1(A, B).
23824ai_observed_internal___2__0__0__1([A|B], C, D) :-
23825 ( A=suspension(_, active, _, E, F),
23826 E==C,
23827 F==D
23828 -> setarg(2, A, removed),
23829 ( arg(3, A, G),
23830 ( var(G)
23831 -> nb_getval('$chr_store_global_ground_chr_translate____ai_not_observed_internal___2',
23832 H),
23833 H=[_|I],
23834 b_setval('$chr_store_global_ground_chr_translate____ai_not_observed_internal___2',
23835 I),
23836 ( I=[J|_]
23837 -> setarg(3, J, _)
23838 ; true
23839 )
23840 ; G=[_, _|I],
23841 setarg(2, G, I),
23842 ( I=[J|_]
23843 -> setarg(3, J, G)
23844 ; true
23845 )
23846 )
23847 ),
23848 nb_getval('$chr_store_multi_hash_chr_translate____ai_not_observed_internal___2-12',
23849 K),
23850 delete_ht(K, k(C, D), A),
23851 ai_observed_internal___2__0__0__1(B, C, D)
23852 ; ai_observed_internal___2__0__0__1(B, C, D)
23853 ).
23854ai_observed_internal(A, B) :-
23855 ai_observed_internal___2__1(A, B).
23856ai_observed_internal___2__1(A, B) :-
23857 nb_getval('$chr_store_multi_hash_chr_translate____ai_observed_internal___2-12',
23858 C),
23859 lookup_ht(C, k(A, B), D),
23860 member(E, D),
23861 E=suspension(_, active, _, _, _),
23862 !.
23863ai_observed_internal___2__1(_, _) :-
23864 nb_getval('$chr_store_global_ground_chr_translate____ai_observation_gather_results___0',
23865 A),
23866 member(B, A),
23867 B=suspension(_, active, _),
23868 !.
23869ai_observed_internal___2__1(A, B) :-
23870 C=suspension(D, active, _, A, B),
23871 'chr gen_id'(D),
23872 nb_getval('$chr_store_global_ground_chr_translate____ai_observed_internal___2',
23873 E),
23874 F=[C|E],
23875 b_setval('$chr_store_global_ground_chr_translate____ai_observed_internal___2',
23876 F),
23877 ( E=[G|_]
23878 -> setarg(3, G, F)
23879 ; true
23880 ),
23881 nb_getval('$chr_store_multi_hash_chr_translate____ai_observed_internal___2-12',
23882 H),
23883 insert_ht(H, k(A, B), C).
23884ai_not_observed_internal(A, B) :-
23885 nb_getval('$chr_store_multi_hash_chr_translate____ai_observed_internal___2-12',
23886 C),
23887 lookup_ht(C, k(A, B), D),
23888 member(E, D),
23889 E=suspension(_, active, _, _, _),
23890 !.
23891ai_not_observed_internal(A, B) :-
23892 nb_getval('$chr_store_multi_hash_chr_translate____ai_not_observed_internal___2-12',
23893 C),
23894 lookup_ht(C, k(A, B), D),
23895 member(E, D),
23896 E=suspension(_, active, _, _, _),
23897 !.
23898ai_not_observed_internal(A, B) :-
23899 nb_getval('$chr_store_global_ground_chr_translate____ai_observation_gather_results___0',
23900 C),
23901 member(D, C),
23902 D=suspension(_, active, _),
23903 !,
23904 ai_not_observed(A, B).
23905ai_not_observed_internal(A, B) :-
23906 C=suspension(D, active, _, A, B),
23907 'chr gen_id'(D),
23908 nb_getval('$chr_store_global_ground_chr_translate____ai_not_observed_internal___2',
23909 E),
23910 F=[C|E],
23911 b_setval('$chr_store_global_ground_chr_translate____ai_not_observed_internal___2',
23912 F),
23913 ( E=[G|_]
23914 -> setarg(3, G, F)
23915 ; true
23916 ),
23917 nb_getval('$chr_store_multi_hash_chr_translate____ai_not_observed_internal___2-12',
23918 H),
23919 insert_ht(H, k(A, B), C).
23920ai_not_observed(A, B) :-
23921 ai_not_observed___2__0(A, B, _).
23922ai_not_observed___2__0(A, B, C) :-
23923 nb_getval('$chr_store_multi_hash_chr_translate____stored___3-123', D),
23924 lookup_ht(D, k(A, B, yes), E),
23925 !,
23926 C=suspension(F, not_stored_yet, A, B),
23927 'chr gen_id'(F),
23928 ai_not_observed___2__0__0__1(E, A, B, C).
23929ai_not_observed___2__0__0__1([], A, B, C) :-
23930 ai_not_observed___2__1(A, B, C).
23931ai_not_observed___2__0__0__1([A|B], C, D, E) :-
23932 ( A=suspension(_, active, F, G, H),
23933 F==C,
23934 G==D,
23935 H=yes,
23936 ( ground(C),
23937 nb_getval('$chr_store_multi_hash_chr_translate____stored_complete___3-1',
23938 I),
23939 lookup_ht(I, C, J)
23940 ),
23941 member(K, J),
23942 K=suspension(_, active, _, _, L, M),
23943 D<L
23944 -> ( setarg(2, A, removed),
23945 nb_getval('$chr_store_multi_hash_chr_translate____stored___3-13',
23946 N),
23947 delete_ht(N, k(C, yes), A),
23948 nb_getval('$chr_store_multi_hash_chr_translate____stored___3-123',
23949 O),
23950 delete_ht(O, k(C, D, yes), A)
23951 ),
23952 setarg(2, K, removed),
23953 ( nb_getval('$chr_store_multi_hash_chr_translate____stored_complete___3-13',
23954 P),
23955 delete_ht(P, k(C, M), K)
23956 ),
23957 nb_getval('$chr_store_multi_hash_chr_translate____stored_complete___3-1',
23958 Q),
23959 delete_ht(Q, C, K),
23960 arg(2, E, R),
23961 setarg(2, E, active),
23962 ( R==not_stored_yet
23963 -> nb_getval('$chr_store_multi_hash_chr_translate____ai_not_observed___2-12',
23964 S),
23965 insert_ht(S, k(C, D), E)
23966 ; true
23967 ),
23968 T is M-1,
23969 stored(C, D, maybe),
23970 stored_complete(C, L, T),
23971 ( E=suspension(_, active, _, _)
23972 -> setarg(2, E, inactive),
23973 ai_not_observed___2__0__0__1(B, C, D, E)
23974 ; true
23975 )
23976 ; ai_not_observed___2__0__0__1(B, C, D, E)
23977 ).
23978ai_not_observed___2__0(A, B, C) :-
23979 C=suspension(D, not_stored_yet, A, B),
23980 'chr gen_id'(D),
23981 ai_not_observed___2__1(A, B, C).
23982ai_not_observed___2__1(A, B, C) :-
23983 arg(2, C, D),
23984 setarg(2, C, active),
23985 ( D==not_stored_yet
23986 -> nb_getval('$chr_store_multi_hash_chr_translate____ai_not_observed___2-12',
23987 E),
23988 insert_ht(E, k(A, B), C)
23989 ; true
23990 ).
23991ai_is_observed(A, B) :-
23992 nb_getval('$chr_store_multi_hash_chr_translate____ai_not_observed___2-12',
23993 C),
23994 lookup_ht(C, k(A, B), D),
23995 member(E, D),
23996 E=suspension(_, active, _, _),
23997 !,
23998 fail.
23999ai_is_observed(_, _).
24000depends_on_as(A, B, C) :-
24001 depends_on_as___3__0(A, B, C, _).
24002depends_on_as___3__0(A, B, C, D) :-
24003 nb_getval('$chr_store_multi_hash_chr_translate____final_answer_pattern___2-1',
24004 E),
24005 lookup_ht(E, B, F),
24006 !,
24007 D=suspension(G, not_stored_yet, t, A, B, C),
24008 'chr gen_id'(G),
24009 depends_on_as___3__0__0__1(F, A, B, C, D).
24010depends_on_as___3__0__0__1([], A, B, C, D) :-
24011 depends_on_as___3__1(A, B, C, D).
24012depends_on_as___3__0__0__1([A|B], C, D, E, F) :-
24013 ( A=suspension(_, active, _, G, H),
24014 G==D,
24015 nb_getval('$chr_store_multi_hash_chr_translate____final_answer_pattern___2-1',
24016 I),
24017 lookup_ht(I, E, J)
24018 -> depends_on_as___3__0__1__1(J,
24019 H,
24020 A,
24021 B,
24022 C,
24023 D,
24024 E,
24025 F)
24026 ; depends_on_as___3__0__0__1(B, C, D, E, F)
24027 ).
24028depends_on_as___3__0__1__1([], _, _, A, B, C, D, E) :-
24029 depends_on_as___3__0__0__1(A, B, C, D, E).
24030depends_on_as___3__0__1__1([A|B], C, D, E, F, G, H, I) :-
24031 ( A=suspension(_, active, _, J, K),
24032 A\==D,
24033 J==H,
24034 L=t(317, I, D, A),
24035 '$novel_production'(I, L),
24036 '$novel_production'(D, L),
24037 '$novel_production'(A, L)
24038 -> '$extend_history'(I, L),
24039 arg(2, I, M),
24040 setarg(2, I, active),
24041 ( M==not_stored_yet
24042 -> nb_getval('$chr_store_multi_hash_chr_translate____depends_on_as___3-3',
24043 N),
24044 insert_ht(N, H, I),
24045 nb_getval('$chr_store_multi_hash_chr_translate____depends_on_as___3-2',
24046 O),
24047 insert_ht(O, G, I)
24048 ; true
24049 ),
24050 ai_observation_lub(C, K, P),
24051 final_answer_pattern(F, P),
24052 ( I=suspension(_, active, _, _, _, _)
24053 -> setarg(2, I, inactive),
24054 depends_on_as___3__0__1__1(B,
24055 C,
24056 D,
24057 E,
24058 F,
24059 G,
24060 H,
24061 I)
24062 ; true
24063 )
24064 ; depends_on_as___3__0__1__1(B,
24065 C,
24066 D,
24067 E,
24068 F,
24069 G,
24070 H,
24071 I)
24072 ).
24073depends_on_as___3__0(A, B, C, D) :-
24074 D=suspension(E, not_stored_yet, t, A, B, C),
24075 'chr gen_id'(E),
24076 depends_on_as___3__1(A, B, C, D).
24077depends_on_as___3__1(_, A, B, C) :-
24078 arg(2, C, D),
24079 setarg(2, C, active),
24080 ( D==not_stored_yet
24081 -> nb_getval('$chr_store_multi_hash_chr_translate____depends_on_as___3-3',
24082 E),
24083 insert_ht(E, B, C),
24084 nb_getval('$chr_store_multi_hash_chr_translate____depends_on_as___3-2',
24085 F),
24086 insert_ht(F, A, C)
24087 ; true
24088 ).
24089ai_observation_gather_results :-
24090 ai_observation_gather_results___0__0(_).
24091ai_observation_gather_results___0__0(A) :-
24092 nb_getval('$chr_store_global_ground_chr_translate____ai_observed_internal___2',
24093 B),
24094 !,
24095 ai_observation_gather_results___0__0__0__1(B, A).
24096ai_observation_gather_results___0__0__0__1([], A) :-
24097 ai_observation_gather_results___0__1(A).
24098ai_observation_gather_results___0__0__0__1([A|B], C) :-
24099 ( A=suspension(_, active, _, D, E)
24100 -> setarg(2, A, removed),
24101 ( arg(3, A, F),
24102 ( var(F)
24103 -> nb_getval('$chr_store_global_ground_chr_translate____ai_observed_internal___2',
24104 G),
24105 G=[_|H],
24106 b_setval('$chr_store_global_ground_chr_translate____ai_observed_internal___2',
24107 H),
24108 ( H=[I|_]
24109 -> setarg(3, I, _)
24110 ; true
24111 )
24112 ; F=[_, _|H],
24113 setarg(2, F, H),
24114 ( H=[I|_]
24115 -> setarg(3, I, F)
24116 ; true
24117 )
24118 )
24119 ),
24120 nb_getval('$chr_store_multi_hash_chr_translate____ai_observed_internal___2-12',
24121 J),
24122 delete_ht(J, k(D, E), A),
24123 ai_observation_gather_results___0__0__0__1(B, C)
24124 ; ai_observation_gather_results___0__0__0__1(B, C)
24125 ).
24126ai_observation_gather_results___0__0(A) :-
24127 ai_observation_gather_results___0__1(A).
24128ai_observation_gather_results___0__1(A) :-
24129 nb_getval('$chr_store_global_ground_chr_translate____ai_not_observed_internal___2',
24130 B),
24131 !,
24132 A=suspension(C, not_stored_yet, _),
24133 'chr gen_id'(C),
24134 ai_observation_gather_results___0__1__0__2(B, A).
24135ai_observation_gather_results___0__1__0__2([], A) :-
24136 ai_observation_gather_results___0__2(A).
24137ai_observation_gather_results___0__1__0__2([A|B], C) :-
24138 ( A=suspension(_, active, _, D, E)
24139 -> setarg(2, A, removed),
24140 ( arg(3, A, F),
24141 ( var(F)
24142 -> nb_getval('$chr_store_global_ground_chr_translate____ai_not_observed_internal___2',
24143 G),
24144 G=[_|H],
24145 b_setval('$chr_store_global_ground_chr_translate____ai_not_observed_internal___2',
24146 H),
24147 ( H=[I|_]
24148 -> setarg(3, I, _)
24149 ; true
24150 )
24151 ; F=[_, _|H],
24152 setarg(2, F, H),
24153 ( H=[I|_]
24154 -> setarg(3, I, F)
24155 ; true
24156 )
24157 )
24158 ),
24159 nb_getval('$chr_store_multi_hash_chr_translate____ai_not_observed_internal___2-12',
24160 J),
24161 delete_ht(J, k(D, E), A),
24162 arg(2, C, K),
24163 setarg(2, C, active),
24164 ( K==not_stored_yet
24165 -> nb_getval('$chr_store_global_ground_chr_translate____ai_observation_gather_results___0',
24166 L),
24167 M=[C|L],
24168 b_setval('$chr_store_global_ground_chr_translate____ai_observation_gather_results___0',
24169 M),
24170 ( L=[N|_]
24171 -> setarg(3, N, M)
24172 ; true
24173 )
24174 ; true
24175 ),
24176 ai_not_observed(D, E),
24177 ( C=suspension(_, active, _)
24178 -> setarg(2, C, inactive),
24179 ai_observation_gather_results___0__1__0__2(B, C)
24180 ; true
24181 )
24182 ; ai_observation_gather_results___0__1__0__2(B, C)
24183 ).
24184ai_observation_gather_results___0__1(A) :-
24185 A=suspension(B, not_stored_yet, _),
24186 'chr gen_id'(B),
24187 ai_observation_gather_results___0__2(A).
24188ai_observation_gather_results___0__2(A) :-
24189 ( var(A)
24190 -> true
24191 ; arg(2, A, B),
24192 setarg(2, A, removed),
24193 ( B==not_stored_yet
24194 -> true
24195 ; arg(3, A, C),
24196 ( var(C)
24197 -> nb_getval('$chr_store_global_ground_chr_translate____ai_observation_gather_results___0',
24198 D),
24199 D=[_|E],
24200 b_setval('$chr_store_global_ground_chr_translate____ai_observation_gather_results___0',
24201 E),
24202 ( E=[F|_]
24203 -> setarg(3, F, _)
24204 ; true
24205 )
24206 ; C=[_, _|E],
24207 setarg(2, C, E),
24208 ( E=[F|_]
24209 -> setarg(3, F, C)
24210 ; true
24211 )
24212 )
24213 )
24214 ).
24215ai_observation_memo_simplification_rest_heads(A, B, C) :-
24216 nb_getval('$chr_store_multi_hash_chr_translate____ai_observation_memoed_simplification_rest_heads___3-12',
24217 D),
24218 lookup_ht(D, k(A, B), E),
24219 member(F, E),
24220 F=suspension(_, active, _, _, G),
24221 !,
24222 C=G.
24223ai_observation_memo_simplification_rest_heads(A, B, C) :-
24224 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-12',
24225 D),
24226 lookup_ht(D, k(A, B), E),
24227 member(F, E),
24228 F=suspension(_, active, _, _, _, _, G, H, _),
24229 nb_getval('$chr_store_multi_hash_chr_translate____rule___2-1', I),
24230 lookup_ht(I, G, J),
24231 member(K, J),
24232 K=suspension(_, active, _, _, _, L),
24233 nb_getval('$chr_store_global_ground_chr_translate____abstract_constraints___1',
24234 M),
24235 member(N, M),
24236 N=suspension(_, active, _, O),
24237 !,
24238 L=pragma(rule(P, Q, _, _), ids(R, _), _, _, _),
24239 once(select2(H, _, R, P, _, S)),
24240 ai_observation_abstract_constraints(S, O, T),
24241 ai_observation_abstract_constraints(Q, O, U),
24242 append(T, U, V),
24243 sort(V, C),
24244 ai_observation_memoed_simplification_rest_heads(A, B, C).
24245ai_observation_memo_simplification_rest_heads(_, _, _) :-
24246 fail.
24247ai_observation_memoed_simplification_rest_heads(A, B, C) :-
24248 D=suspension(E, active, A, B, C),
24249 'chr gen_id'(E),
24250 nb_getval('$chr_store_multi_hash_chr_translate____ai_observation_memoed_simplification_rest_heads___3-12',
24251 F),
24252 insert_ht(F, k(A, B), D).
24253ai_observation_memo_propagation_rest_heads(A, B, C) :-
24254 nb_getval('$chr_store_multi_hash_chr_translate____ai_observation_memoed_propagation_rest_heads___3-12',
24255 D),
24256 lookup_ht(D, k(A, B), E),
24257 member(F, E),
24258 F=suspension(_, active, _, _, G),
24259 !,
24260 C=G.
24261ai_observation_memo_propagation_rest_heads(A, B, C) :-
24262 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-12',
24263 D),
24264 lookup_ht(D, k(A, B), E),
24265 member(F, E),
24266 F=suspension(_, active, _, _, _, _, G, H, _),
24267 nb_getval('$chr_store_multi_hash_chr_translate____rule___2-1', I),
24268 lookup_ht(I, G, J),
24269 member(K, J),
24270 K=suspension(_, active, _, _, _, L),
24271 nb_getval('$chr_store_global_ground_chr_translate____abstract_constraints___1',
24272 M),
24273 member(N, M),
24274 N=suspension(_, active, _, O),
24275 !,
24276 L=pragma(rule(P, Q, _, _), ids(_, R), _, _, _),
24277 once(select2(H, _, R, Q, _, S)),
24278 ai_observation_abstract_constraints(S, O, T),
24279 ai_observation_abstract_constraints(P, O, U),
24280 append(T, U, V),
24281 sort(V, C),
24282 ai_observation_memoed_propagation_rest_heads(A, B, C).
24283ai_observation_memo_propagation_rest_heads(_, _, _) :-
24284 fail.
24285ai_observation_memoed_propagation_rest_heads(A, B, C) :-
24286 D=suspension(E, active, A, B, C),
24287 'chr gen_id'(E),
24288 nb_getval('$chr_store_multi_hash_chr_translate____ai_observation_memoed_propagation_rest_heads___3-12',
24289 F),
24290 insert_ht(F, k(A, B), D).
24291ai_observation_memoed_abstract_goal(A, B) :-
24292 C=suspension(D, active, A, B),
24293 'chr gen_id'(D),
24294 nb_getval('$chr_store_multi_hash_chr_translate____ai_observation_memoed_abstract_goal___2-1',
24295 E),
24296 insert_ht(E, A, C).
24297ai_observation_memo_abstract_goal(A, B) :-
24298 nb_getval('$chr_store_multi_hash_chr_translate____ai_observation_memoed_abstract_goal___2-1',
24299 C),
24300 lookup_ht(C, A, D),
24301 member(E, D),
24302 E=suspension(_, active, _, F),
24303 !,
24304 B=F.
24305ai_observation_memo_abstract_goal(A, B) :-
24306 nb_getval('$chr_store_multi_hash_chr_translate____rule___2-1', C),
24307 lookup_ht(C, A, D),
24308 member(E, D),
24309 E=suspension(_, active, _, _, _, F),
24310 nb_getval('$chr_store_global_ground_chr_translate____abstract_constraints___1',
24311 G),
24312 member(H, G),
24313 H=suspension(_, active, _, I),
24314 !,
24315 F=pragma(rule(J, K, L, M), _, _, _, _),
24316 ai_observation_abstract_goal_(J,
24317 K,
24318 L,
24319 M,
24320 I,
24321 N),
24322 B=N,
24323 ai_observation_memoed_abstract_goal(A, N).
24324ai_observation_memo_abstract_goal(A, B) :-
24325 C=suspension(D, active, _, A, B),
24326 'chr gen_id'(D),
24327 nb_getval('$chr_store_global_ground_chr_translate____ai_observation_memo_abstract_goal___2',
24328 E),
24329 F=[C|E],
24330 b_setval('$chr_store_global_ground_chr_translate____ai_observation_memo_abstract_goal___2',
24331 F),
24332 ( E=[G|_]
24333 -> setarg(3, G, F)
24334 ; true
24335 ).
24336partial_wake_analysis :-
24337 partial_wake_analysis___0__0(_).
24338partial_wake_analysis___0__0(A) :-
24339 nb_getval('$chr_store_global_ground_chr_translate____occurrence___5',
24340 B),
24341 !,
24342 A=suspension(C, not_stored_yet, t, _),
24343 'chr gen_id'(C),
24344 partial_wake_analysis___0__0__0__1(B, A).
24345partial_wake_analysis___0__0__0__1([], A) :-
24346 partial_wake_analysis___0__1(A).
24347partial_wake_analysis___0__0__0__1([A|B], C) :-
24348 ( A=suspension(_, active, _, _, D, _, E, F, G),
24349 nb_getval('$chr_store_multi_hash_chr_translate____constraint_mode___2-1',
24350 H),
24351 lookup_ht(H, D, I)
24352 -> partial_wake_analysis___0__0__1__1(I,
24353 D,
24354 E,
24355 F,
24356 G,
24357 A,
24358 B,
24359 C)
24360 ; partial_wake_analysis___0__0__0__1(B, C)
24361 ).
24362partial_wake_analysis___0__0__1__1([], _, _, _, _, _, A, B) :-
24363 partial_wake_analysis___0__0__0__1(A, B).
24364partial_wake_analysis___0__0__1__1([A|B], C, D, E, F, G, H, I) :-
24365 ( A=suspension(_, active, _, _, J, K),
24366 J==C,
24367 nb_getval('$chr_store_multi_hash_chr_translate____rule___2-1', L),
24368 lookup_ht(L, D, M)
24369 -> partial_wake_analysis___0__0__2__1(M,
24370 K,
24371 A,
24372 B,
24373 C,
24374 D,
24375 E,
24376 F,
24377 G,
24378 H,
24379 I)
24380 ; partial_wake_analysis___0__0__1__1(B,
24381 C,
24382 D,
24383 E,
24384 F,
24385 G,
24386 H,
24387 I)
24388 ).
24389partial_wake_analysis___0__0__2__1([], _, _, A, B, C, D, E, F, G, H) :-
24390 partial_wake_analysis___0__0__1__1(A,
24391 B,
24392 C,
24393 D,
24394 E,
24395 F,
24396 G,
24397 H).
24398partial_wake_analysis___0__0__2__1([A|B], C, D, E, F, G, H, I, J, K, L) :-
24399 ( A=suspension(_, active, _, _, M, N),
24400 M==G,
24401 O=t(330, L, J, A, D),
24402 '$novel_production'(L, O),
24403 '$novel_production'(J, O),
24404 '$novel_production'(A, O),
24405 '$novel_production'(D, O)
24406 -> '$extend_history'(L, O),
24407 arg(2, L, P),
24408 setarg(2, L, active),
24409 ( P==not_stored_yet
24410 -> nb_getval('$chr_store_global_ground_chr_translate____partial_wake_analysis___0',
24411 Q),
24412 R=[L|Q],
24413 b_setval('$chr_store_global_ground_chr_translate____partial_wake_analysis___0',
24414 R),
24415 ( Q=[S|_]
24416 -> setarg(4, S, R)
24417 ; true
24418 )
24419 ; true
24420 ),
24421 N=pragma(rule(T, U, V, _), _, _, _, _),
24422 ( is_passive(G, H)
24423 -> true
24424 ; I==simplification
24425 -> select(W, T, _),
24426 W=..[_|X],
24427 term_variables(V, Y),
24428 partial_wake_args(X, C, Y, F)
24429 ; select(W, U, _),
24430 W=..[_|X],
24431 term_variables(V, Y),
24432 partial_wake_args(X, C, Y, F)
24433 ),
24434 ( L=suspension(_, active, _, _)
24435 -> setarg(2, L, inactive),
24436 partial_wake_analysis___0__0__2__1(B,
24437 C,
24438 D,
24439 E,
24440 F,
24441 G,
24442 H,
24443 I,
24444 J,
24445 K,
24446 L)
24447 ; true
24448 )
24449 ; partial_wake_analysis___0__0__2__1(B,
24450 C,
24451 D,
24452 E,
24453 F,
24454 G,
24455 H,
24456 I,
24457 J,
24458 K,
24459 L)
24460 ).
24461partial_wake_analysis___0__0(A) :-
24462 A=suspension(B, not_stored_yet, t, _),
24463 'chr gen_id'(B),
24464 partial_wake_analysis___0__1(A).
24465partial_wake_analysis___0__1(A) :-
24466 arg(2, A, B),
24467 setarg(2, A, active),
24468 ( B==not_stored_yet
24469 -> nb_getval('$chr_store_global_ground_chr_translate____partial_wake_analysis___0',
24470 C),
24471 D=[A|C],
24472 b_setval('$chr_store_global_ground_chr_translate____partial_wake_analysis___0',
24473 D),
24474 ( C=[E|_]
24475 -> setarg(4, E, D)
24476 ; true
24477 )
24478 ; true
24479 ).
24480no_partial_wake(A) :-
24481 nb_getval('$chr_store_multi_hash_chr_translate____no_partial_wake___1-1',
24482 B),
24483 lookup_ht(B, A, C),
24484 member(D, C),
24485 D=suspension(_, active, _),
24486 !.
24487no_partial_wake(A) :-
24488 B=suspension(C, active, A),
24489 'chr gen_id'(C),
24490 nb_getval('$chr_store_multi_hash_chr_translate____no_partial_wake___1-1',
24491 D),
24492 insert_ht(D, A, B).
24493wakes_partially(A) :-
24494 nb_getval('$chr_store_multi_hash_chr_translate____no_partial_wake___1-1',
24495 B),
24496 lookup_ht(B, A, C),
24497 member(D, C),
24498 D=suspension(_, active, _),
24499 !,
24500 fail.
24501wakes_partially(_).
24502phase_end(A) :-
24503 phase_end___1__0(A, _).
24504phase_end___1__0(A, B) :-
24505 nb_getval('$chr_store_multi_hash_chr_translate____delay_phase_end___2-1',
24506 C),
24507 lookup_ht(C, A, D),
24508 !,
24509 B=suspension(E, not_stored_yet, A),
24510 'chr gen_id'(E),
24511 phase_end___1__0__0__1(D, A, B).
24512phase_end___1__0__0__1([], A, B) :-
24513 phase_end___1__1(A, B).
24514phase_end___1__0__0__1([A|B], C, D) :-
24515 ( A=suspension(_, active, E, F),
24516 E==C
24517 -> setarg(2, A, removed),
24518 nb_getval('$chr_store_multi_hash_chr_translate____delay_phase_end___2-1',
24519 G),
24520 delete_ht(G, C, A),
24521 arg(2, D, H),
24522 setarg(2, D, active),
24523 ( H==not_stored_yet
24524 -> nb_getval('$chr_store_multi_hash_chr_translate____phase_end___1-1',
24525 I),
24526 insert_ht(I, C, D)
24527 ; true
24528 ),
24529 call(F),
24530 ( D=suspension(_, active, _)
24531 -> setarg(2, D, inactive),
24532 phase_end___1__0__0__1(B, C, D)
24533 ; true
24534 )
24535 ; phase_end___1__0__0__1(B, C, D)
24536 ).
24537phase_end___1__0(A, B) :-
24538 B=suspension(C, not_stored_yet, A),
24539 'chr gen_id'(C),
24540 phase_end___1__1(A, B).
24541phase_end___1__1(A, B) :-
24542 arg(2, B, C),
24543 setarg(2, B, active),
24544 ( C==not_stored_yet
24545 -> nb_getval('$chr_store_multi_hash_chr_translate____phase_end___1-1',
24546 D),
24547 insert_ht(D, A, B)
24548 ; true
24549 ).
24550delay_phase_end(A, B) :-
24551 nb_getval('$chr_store_multi_hash_chr_translate____phase_end___1-1', C),
24552 lookup_ht(C, A, D),
24553 member(E, D),
24554 E=suspension(_, active, _),
24555 !,
24556 call(B).
24557delay_phase_end(A, B) :-
24558 C=suspension(D, active, A, B),
24559 'chr gen_id'(D),
24560 nb_getval('$chr_store_multi_hash_chr_translate____delay_phase_end___2-1',
24561 E),
24562 insert_ht(E, A, C).
24563does_use_history(A, B) :-
24564 nb_getval('$chr_store_multi_hash_chr_translate____does_use_history___2-12',
24565 C),
24566 lookup_ht(C, k(A, B), D),
24567 member(E, D),
24568 E=suspension(_, active, _, _),
24569 !.
24570does_use_history(A, B) :-
24571 C=suspension(D, active, A, B),
24572 'chr gen_id'(D),
24573 nb_getval('$chr_store_multi_hash_chr_translate____does_use_history___2-1',
24574 E),
24575 insert_ht(E, A, C),
24576 nb_getval('$chr_store_multi_hash_chr_translate____does_use_history___2-12',
24577 F),
24578 insert_ht(F, k(A, B), C).
24579uses_history(A) :-
24580 nb_getval('$chr_store_multi_hash_chr_translate____does_use_history___2-1',
24581 B),
24582 lookup_ht(B, A, C),
24583 member(D, C),
24584 D=suspension(_, active, _, _),
24585 !.
24586uses_history(_) :-
24587 fail.
24588novel_production_call(A, B, C, D) :-
24589 nb_getval('$chr_store_multi_hash_chr_translate____does_use_history___2-12',
24590 E),
24591 lookup_ht(E, k(A, B), F),
24592 member(G, F),
24593 G=suspension(_, active, _, _),
24594 !,
24595 D=C.
24596novel_production_call(_, _, _, true).
24597does_use_field(A, B) :-
24598 nb_getval('$chr_store_multi_hash_chr_translate____does_use_field___2-12',
24599 C),
24600 lookup_ht(C, k(A, B), D),
24601 member(E, D),
24602 E=suspension(_, active, _, _),
24603 !.
24604does_use_field(A, B) :-
24605 C=suspension(D, active, A, B),
24606 'chr gen_id'(D),
24607 nb_getval('$chr_store_multi_hash_chr_translate____does_use_field___2-12',
24608 E),
24609 insert_ht(E, k(A, B), C).
24610uses_field(A, B) :-
24611 nb_getval('$chr_store_multi_hash_chr_translate____does_use_field___2-12',
24612 C),
24613 lookup_ht(C, k(A, B), D),
24614 member(E, D),
24615 E=suspension(_, active, _, _),
24616 !.
24617uses_field(_, _) :-
24618 fail.
24619uses_state(A, B) :-
24620 uses_state___2__0(A, B, _).
24621uses_state___2__0(A, B, _) :-
24622 nb_getval('$chr_store_multi_hash_chr_translate____uses_state___2-12',
24623 C),
24624 lookup_ht(C, k(A, B), D),
24625 member(E, D),
24626 E=suspension(_, active, _, _),
24627 !.
24628uses_state___2__0(A, B, C) :-
24629 nb_getval('$chr_store_global_ground_chr_translate____used_states_known___0',
24630 D),
24631 !,
24632 C=suspension(E, not_stored_yet, A, B),
24633 'chr gen_id'(E),
24634 uses_state___2__0__0__3(D, A, B, C).
24635uses_state___2__0__0__3([], A, B, C) :-
24636 uses_state___2__1(A, B, C).
24637uses_state___2__0__0__3([A|B], C, D, E) :-
24638 ( A=suspension(_, active, _),
24639 nb_getval('$chr_store_multi_hash_chr_translate____if_used_state___5-12',
24640 F),
24641 lookup_ht(F, k(C, D), G)
24642 -> uses_state___2__0__1__3(G,
24643 A,
24644 B,
24645 C,
24646 D,
24647 E)
24648 ; uses_state___2__0__0__3(B, C, D, E)
24649 ).
24650uses_state___2__0__1__3([], _, A, B, C, D) :-
24651 uses_state___2__0__0__3(A, B, C, D).
24652uses_state___2__0__1__3([A|B], C, D, E, F, G) :-
24653 ( A=suspension(_, active, _, H, I, J, _, K),
24654 H==E,
24655 I==F
24656 -> setarg(2, A, removed),
24657 ( arg(3, A, L),
24658 ( var(L)
24659 -> nb_getval('$chr_store_global_ground_chr_translate____if_used_state___5',
24660 M),
24661 M=[_|N],
24662 b_setval('$chr_store_global_ground_chr_translate____if_used_state___5',
24663 N),
24664 ( N=[O|_]
24665 -> setarg(3, O, _)
24666 ; true
24667 )
24668 ; L=[_, _|N],
24669 setarg(2, L, N),
24670 ( N=[O|_]
24671 -> setarg(3, O, L)
24672 ; true
24673 )
24674 )
24675 ),
24676 nb_getval('$chr_store_multi_hash_chr_translate____if_used_state___5-12',
24677 P),
24678 delete_ht(P, k(E, F), A),
24679 arg(2, G, Q),
24680 setarg(2, G, active),
24681 ( Q==not_stored_yet
24682 -> nb_getval('$chr_store_multi_hash_chr_translate____uses_state___2-12',
24683 R),
24684 insert_ht(R, k(E, F), G)
24685 ; true
24686 ),
24687 K=J,
24688 ( G=suspension(_, active, _, _)
24689 -> setarg(2, G, inactive),
24690 uses_state___2__0__1__3(B,
24691 C,
24692 D,
24693 E,
24694 F,
24695 G)
24696 ; true
24697 )
24698 ; uses_state___2__0__1__3(B,
24699 C,
24700 D,
24701 E,
24702 F,
24703 G)
24704 ).
24705uses_state___2__0(A, B, C) :-
24706 C=suspension(D, not_stored_yet, A, B),
24707 'chr gen_id'(D),
24708 uses_state___2__1(A, B, C).
24709uses_state___2__1(A, B, C) :-
24710 arg(2, C, D),
24711 setarg(2, C, active),
24712 ( D==not_stored_yet
24713 -> nb_getval('$chr_store_multi_hash_chr_translate____uses_state___2-12',
24714 E),
24715 insert_ht(E, k(A, B), C)
24716 ; true
24717 ).
24718if_used_state(A, B, C, D, E) :-
24719 nb_getval('$chr_store_global_ground_chr_translate____used_states_known___0',
24720 F),
24721 member(G, F),
24722 G=suspension(_, active, _),
24723 ( nb_getval('$chr_store_multi_hash_chr_translate____uses_state___2-12',
24724 H),
24725 lookup_ht(H, k(A, B), I),
24726 member(J, I),
24727 J=suspension(_, active, _, _),
24728 !,
24729 E=C
24730 ; !,
24731 E=D
24732 ).
24733if_used_state(A, B, C, D, E) :-
24734 F=suspension(G, active, _, A, B, C, D, E),
24735 'chr gen_id'(G),
24736 nb_getval('$chr_store_global_ground_chr_translate____if_used_state___5',
24737 H),
24738 I=[F|H],
24739 b_setval('$chr_store_global_ground_chr_translate____if_used_state___5',
24740 I),
24741 ( H=[J|_]
24742 -> setarg(3, J, I)
24743 ; true
24744 ),
24745 nb_getval('$chr_store_multi_hash_chr_translate____if_used_state___5-12',
24746 K),
24747 insert_ht(K, k(A, B), F).
24748used_states_known :-
24749 used_states_known___0__0(_).
24750used_states_known___0__0(A) :-
24751 nb_getval('$chr_store_global_ground_chr_translate____if_used_state___5',
24752 B),
24753 !,
24754 A=suspension(C, not_stored_yet, _),
24755 'chr gen_id'(C),
24756 used_states_known___0__0__0__1(B, A).
24757used_states_known___0__0__0__1([], A) :-
24758 used_states_known___0__1(A).
24759used_states_known___0__0__0__1([A|B], C) :-
24760 ( A=suspension(_, active, _, D, E, F, _, G),
24761 ( ground(D),
24762 ground(E)
24763 ),
24764 nb_getval('$chr_store_multi_hash_chr_translate____uses_state___2-12',
24765 H),
24766 lookup_ht(H, k(D, E), I),
24767 member(J, I),
24768 J=suspension(_, active, _, _)
24769 -> setarg(2, A, removed),
24770 ( arg(3, A, K),
24771 ( var(K)
24772 -> nb_getval('$chr_store_global_ground_chr_translate____if_used_state___5',
24773 L),
24774 L=[_|M],
24775 b_setval('$chr_store_global_ground_chr_translate____if_used_state___5',
24776 M),
24777 ( M=[N|_]
24778 -> setarg(3, N, _)
24779 ; true
24780 )
24781 ; K=[_, _|M],
24782 setarg(2, K, M),
24783 ( M=[N|_]
24784 -> setarg(3, N, K)
24785 ; true
24786 )
24787 )
24788 ),
24789 nb_getval('$chr_store_multi_hash_chr_translate____if_used_state___5-12',
24790 O),
24791 delete_ht(O, k(D, E), A),
24792 arg(2, C, P),
24793 setarg(2, C, active),
24794 ( P==not_stored_yet
24795 -> nb_getval('$chr_store_global_ground_chr_translate____used_states_known___0',
24796 Q),
24797 R=[C|Q],
24798 b_setval('$chr_store_global_ground_chr_translate____used_states_known___0',
24799 R),
24800 ( Q=[S|_]
24801 -> setarg(3, S, R)
24802 ; true
24803 )
24804 ; true
24805 ),
24806 G=F,
24807 ( C=suspension(_, active, _)
24808 -> setarg(2, C, inactive),
24809 used_states_known___0__0__0__1(B, C)
24810 ; true
24811 )
24812 ; used_states_known___0__0__0__1(B, C)
24813 ).
24814used_states_known___0__0(A) :-
24815 A=suspension(B, not_stored_yet, _),
24816 'chr gen_id'(B),
24817 used_states_known___0__1(A).
24818used_states_known___0__1(A) :-
24819 nb_getval('$chr_store_global_ground_chr_translate____if_used_state___5',
24820 B),
24821 !,
24822 used_states_known___0__1__0__2(B, A).
24823used_states_known___0__1__0__2([], A) :-
24824 used_states_known___0__2(A).
24825used_states_known___0__1__0__2([A|B], C) :-
24826 ( A=suspension(_, active, _, D, E, _, F, G)
24827 -> setarg(2, A, removed),
24828 ( arg(3, A, H),
24829 ( var(H)
24830 -> nb_getval('$chr_store_global_ground_chr_translate____if_used_state___5',
24831 I),
24832 I=[_|J],
24833 b_setval('$chr_store_global_ground_chr_translate____if_used_state___5',
24834 J),
24835 ( J=[K|_]
24836 -> setarg(3, K, _)
24837 ; true
24838 )
24839 ; H=[_, _|J],
24840 setarg(2, H, J),
24841 ( J=[K|_]
24842 -> setarg(3, K, H)
24843 ; true
24844 )
24845 )
24846 ),
24847 nb_getval('$chr_store_multi_hash_chr_translate____if_used_state___5-12',
24848 L),
24849 delete_ht(L, k(D, E), A),
24850 arg(2, C, M),
24851 setarg(2, C, active),
24852 ( M==not_stored_yet
24853 -> nb_getval('$chr_store_global_ground_chr_translate____used_states_known___0',
24854 N),
24855 O=[C|N],
24856 b_setval('$chr_store_global_ground_chr_translate____used_states_known___0',
24857 O),
24858 ( N=[P|_]
24859 -> setarg(3, P, O)
24860 ; true
24861 )
24862 ; true
24863 ),
24864 G=F,
24865 ( C=suspension(_, active, _)
24866 -> setarg(2, C, inactive),
24867 used_states_known___0__1__0__2(B, C)
24868 ; true
24869 )
24870 ; used_states_known___0__1__0__2(B, C)
24871 ).
24872used_states_known___0__1(A) :-
24873 used_states_known___0__2(A).
24874used_states_known___0__2(A) :-
24875 arg(2, A, B),
24876 setarg(2, A, active),
24877 ( B==not_stored_yet
24878 -> nb_getval('$chr_store_global_ground_chr_translate____used_states_known___0',
24879 C),
24880 D=[A|C],
24881 b_setval('$chr_store_global_ground_chr_translate____used_states_known___0',
24882 D),
24883 ( C=[E|_]
24884 -> setarg(3, E, D)
24885 ; true
24886 )
24887 ; true
24888 ).
24889stored_assertion(A) :-
24890 B=suspension(C, active, A),
24891 'chr gen_id'(C),
24892 nb_getval('$chr_store_multi_hash_chr_translate____stored_assertion___1-1',
24893 D),
24894 insert_ht(D, A, B).
24895never_stored_default(A, B) :-
24896 never_stored_default___2__0(A, B, _).
24897never_stored_default___2__0(A, B, C) :-
24898 nb_getval('$chr_store_global_ground_chr_translate____never_stored_rules___2',
24899 D),
24900 !,
24901 C=suspension(E, not_stored_yet, A, B),
24902 'chr gen_id'(E),
24903 never_stored_default___2__0__0__1(D, A, B, C).
24904never_stored_default___2__0__0__1([], A, B, C) :-
24905 never_stored_default___2__1(A, B, C).
24906never_stored_default___2__0__0__1([A|B], C, D, E) :-
24907 ( A=suspension(_, active, _, F, G),
24908 F=[H|I],
24909 H==C
24910 -> setarg(2, A, removed),
24911 arg(3, A, J),
24912 ( var(J)
24913 -> nb_getval('$chr_store_global_ground_chr_translate____never_stored_rules___2',
24914 K),
24915 K=[_|L],
24916 b_setval('$chr_store_global_ground_chr_translate____never_stored_rules___2',
24917 L),
24918 ( L=[M|_]
24919 -> setarg(3, M, _)
24920 ; true
24921 )
24922 ; J=[_, _|L],
24923 setarg(2, J, L),
24924 ( L=[M|_]
24925 -> setarg(3, M, J)
24926 ; true
24927 )
24928 ),
24929 arg(2, E, N),
24930 setarg(2, E, active),
24931 ( N==not_stored_yet
24932 -> nb_getval('$chr_store_multi_hash_chr_translate____never_stored_default___2-1',
24933 O),
24934 insert_ht(O, C, E)
24935 ; true
24936 ),
24937 C=P/Q,
24938 functor(R, P, Q),
24939 inc_rule_count(S),
24940 T=pragma(rule([R], [], true, D), ids([0], []), [], no, S),
24941 G=[T|U],
24942 never_stored_rules(I, U),
24943 ( E=suspension(_, active, _, _)
24944 -> setarg(2, E, inactive),
24945 never_stored_default___2__0__0__1(B, C, D, E)
24946 ; true
24947 )
24948 ; never_stored_default___2__0__0__1(B, C, D, E)
24949 ).
24950never_stored_default___2__0(A, B, C) :-
24951 C=suspension(D, not_stored_yet, A, B),
24952 'chr gen_id'(D),
24953 never_stored_default___2__1(A, B, C).
24954never_stored_default___2__1(A, _, B) :-
24955 arg(2, B, C),
24956 setarg(2, B, active),
24957 ( C==not_stored_yet
24958 -> nb_getval('$chr_store_multi_hash_chr_translate____never_stored_default___2-1',
24959 D),
24960 insert_ht(D, A, B)
24961 ; true
24962 ).
24963never_stored_rules([], A) :-
24964 !,
24965 A=[].
24966never_stored_rules([A|B], C) :-
24967 nb_getval('$chr_store_multi_hash_chr_translate____never_stored_default___2-1',
24968 D),
24969 lookup_ht(D, A, E),
24970 member(F, E),
24971 F=suspension(_, active, _, G),
24972 !,
24973 A=H/I,
24974 functor(J, H, I),
24975 inc_rule_count(K),
24976 L=pragma(rule([J], [], true, G), ids([0], []), [], no, K),
24977 C=[L|M],
24978 never_stored_rules(B, M).
24979never_stored_rules([_|A], B) :-
24980 !,
24981 never_stored_rules(A, B).
24982never_stored_rules(A, B) :-
24983 C=suspension(D, active, _, A, B),
24984 'chr gen_id'(D),
24985 nb_getval('$chr_store_global_ground_chr_translate____never_stored_rules___2',
24986 E),
24987 F=[C|E],
24988 b_setval('$chr_store_global_ground_chr_translate____never_stored_rules___2',
24989 F),
24990 ( E=[G|_]
24991 -> setarg(3, G, F)
24992 ; true
24993 ).
24994check_storedness_assertion(A) :-
24995 nb_getval('$chr_store_multi_hash_chr_translate____stored_assertion___1-1',
24996 B),
24997 lookup_ht(B, A, C),
24998 member(D, C),
24999 D=suspension(_, active, _),
25000 !,
25001 setarg(2, D, removed),
25002 nb_getval('$chr_store_multi_hash_chr_translate____stored_assertion___1-1',
25003 E),
25004 delete_ht(E, A, D),
25005 ( is_stored(A)
25006 -> true
25007 ; chr_warning(assertion_failed,
25008 'Constraint ~w is not stored. However, it was asserted to be stored.\n',
25009 [A])
25010 ).
25011check_storedness_assertion(A) :-
25012 nb_getval('$chr_store_multi_hash_chr_translate____never_stored_default___2-1',
25013 B),
25014 lookup_ht(B, A, C),
25015 member(D, C),
25016 D=suspension(_, active, _, _),
25017 !,
25018 ( is_finally_stored(A)
25019 -> chr_warning(assertion_failed,
25020 'Constraint ~w is stored. However, it was asserted not to be stored.\n',
25021 [A])
25022 ; is_stored(A)
25023 -> chr_warning(assertion_failed,
25024 'Constraint ~w is temporarily stored. However, it was asserted not to be stored.\n',
25025 [A])
25026 ; true
25027 ).
25028check_storedness_assertion(A) :-
25029 ( is_finally_stored(A)
25030 -> chr_warning(assertion_failed,
25031 'Constraint ~w is stored. However, it was asserted not to be stored.\n',
25032 [A])
25033 ; is_stored(A)
25034 -> chr_warning(assertion_failed,
25035 'Constraint ~w is temporarily stored. However, it was asserted not to be stored.\n',
25036 [A])
25037 ; true
25038 ).
25039continuation_occurrence(A, B, C) :-
25040 D=suspension(E, active, A, B, C),
25041 'chr gen_id'(E),
25042 nb_getval('$chr_store_multi_hash_chr_translate____continuation_occurrence___3-12',
25043 F),
25044 insert_ht(F, k(A, B), D).
25045get_success_continuation_occurrence(A, B, C) :-
25046 nb_getval('$chr_store_multi_hash_chr_translate____continuation_occurrence___3-12',
25047 D),
25048 lookup_ht(D, k(A, B), E),
25049 member(F, E),
25050 F=suspension(_, active, _, _, G),
25051 !,
25052 C=G.
25053get_success_continuation_occurrence(A, B, _) :-
25054 chr_error(internal,
25055 'Success continuation not found for ~w.\n',
25056 [A:B]).
25057skip_to_next_id(A, B) :-
25058 skip_to_next_id___2__0(A, B, _).
25059skip_to_next_id___2__0(A, B, _) :-
25060 nb_getval('$chr_store_multi_hash_chr_translate____skip_to_next_id___2-12',
25061 C),
25062 lookup_ht(C, k(A, B), D),
25063 member(E, D),
25064 E=suspension(_, active, _, _, _),
25065 !.
25066skip_to_next_id___2__0(A, B, C) :-
25067 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-12',
25068 D),
25069 lookup_ht(D, k(A, B), E),
25070 !,
25071 C=suspension(F, not_stored_yet, t, A, B),
25072 'chr gen_id'(F),
25073 skip_to_next_id___2__0__0__4(E, A, B, C).
25074skip_to_next_id___2__0__0__4([], A, B, C) :-
25075 skip_to_next_id___2__1(A, B, C).
25076skip_to_next_id___2__0__0__4([A|B], C, D, E) :-
25077 ( A=suspension(_, active, _, _, F, G, H, I, _),
25078 F==C,
25079 G==D,
25080 nb_getval('$chr_store_multi_hash_chr_translate____passive___2-12',
25081 J),
25082 lookup_ht(J, k(H, I), K)
25083 -> skip_to_next_id___2__0__1__4(K,
25084 H,
25085 I,
25086 A,
25087 B,
25088 C,
25089 D,
25090 E)
25091 ; skip_to_next_id___2__0__0__4(B, C, D, E)
25092 ).
25093skip_to_next_id___2__0__1__4([], _, _, _, A, B, C, D) :-
25094 skip_to_next_id___2__0__0__4(A, B, C, D).
25095skip_to_next_id___2__0__1__4([A|B], C, D, E, F, G, H, I) :-
25096 ( A=suspension(_, active, _, J, K),
25097 J==C,
25098 K==D,
25099 L=t(362, E, A, I),
25100 '$novel_production'(E, L),
25101 '$novel_production'(A, L),
25102 '$novel_production'(I, L),
25103 H>1
25104 -> '$extend_history'(I, L),
25105 arg(2, I, M),
25106 setarg(2, I, active),
25107 ( M==not_stored_yet
25108 -> nb_getval('$chr_store_multi_hash_chr_translate____skip_to_next_id___2-12',
25109 N),
25110 insert_ht(N, k(G, H), I)
25111 ; true
25112 ),
25113 O is H-1,
25114 skip_to_next_id(G, O),
25115 ( I=suspension(_, active, _, _, _)
25116 -> setarg(2, I, inactive),
25117 skip_to_next_id___2__0__1__4(B,
25118 C,
25119 D,
25120 E,
25121 F,
25122 G,
25123 H,
25124 I)
25125 ; true
25126 )
25127 ; skip_to_next_id___2__0__1__4(B,
25128 C,
25129 D,
25130 E,
25131 F,
25132 G,
25133 H,
25134 I)
25135 ).
25136skip_to_next_id___2__0(A, B, C) :-
25137 C=suspension(D, not_stored_yet, t, A, B),
25138 'chr gen_id'(D),
25139 skip_to_next_id___2__1(A, B, C).
25140skip_to_next_id___2__1(A, B, C) :-
25141 nb_getval('$chr_store_multi_hash_chr_translate____set_occurrence_code_id___3-12',
25142 D),
25143 lookup_ht(D, k(A, B), E),
25144 !,
25145 skip_to_next_id___2__1__0__5(E, A, B, C).
25146skip_to_next_id___2__1__0__5([], A, B, C) :-
25147 skip_to_next_id___2__2(A, B, C).
25148skip_to_next_id___2__1__0__5([A|B], C, D, E) :-
25149 ( A=suspension(_, active, F, G, H),
25150 F==C,
25151 G==D,
25152 ( ground(C),
25153 ground(D)
25154 ),
25155 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-125',
25156 I),
25157 lookup_ht(I, k(C, D, propagation), J),
25158 member(K, J),
25159 K=suspension(_, active, _, _, _, _, _, _, _)
25160 -> setarg(2, A, removed),
25161 nb_getval('$chr_store_multi_hash_chr_translate____set_occurrence_code_id___3-12',
25162 L),
25163 delete_ht(L, k(C, D), A),
25164 arg(2, E, M),
25165 setarg(2, E, active),
25166 ( M==not_stored_yet
25167 -> nb_getval('$chr_store_multi_hash_chr_translate____skip_to_next_id___2-12',
25168 N),
25169 insert_ht(N, k(C, D), E)
25170 ; true
25171 ),
25172 occurrence_code_id(C, D, H),
25173 O is D+1,
25174 P is H+1,
25175 set_occurrence_code_id(C, O, P),
25176 ( E=suspension(_, active, _, _, _)
25177 -> setarg(2, E, inactive),
25178 skip_to_next_id___2__1__0__5(B, C, D, E)
25179 ; true
25180 )
25181 ; skip_to_next_id___2__1__0__5(B, C, D, E)
25182 ).
25183skip_to_next_id___2__1(A, B, C) :-
25184 skip_to_next_id___2__2(A, B, C).
25185skip_to_next_id___2__2(A, B, C) :-
25186 arg(2, C, D),
25187 setarg(2, C, active),
25188 ( D==not_stored_yet
25189 -> nb_getval('$chr_store_multi_hash_chr_translate____skip_to_next_id___2-12',
25190 E),
25191 insert_ht(E, k(A, B), C)
25192 ; true
25193 ).
25194should_skip_to_next_id(A, B) :-
25195 nb_getval('$chr_store_multi_hash_chr_translate____skip_to_next_id___2-12',
25196 C),
25197 lookup_ht(C, k(A, B), D),
25198 member(E, D),
25199 E=suspension(_, active, _, _, _),
25200 !.
25201should_skip_to_next_id(_, _) :-
25202 fail.
25203bulk_propagation(A, B, _) :-
25204 nb_getval('$chr_store_multi_hash_chr_translate____max_occurrence___2-1',
25205 C),
25206 lookup_ht(C, A, D),
25207 member(E, D),
25208 E=suspension(_, active, _, _, F),
25209 B>=F,
25210 !,
25211 skip_to_next_id(A, B).
25212bulk_propagation(A, B, C) :-
25213 C=:=B+1,
25214 !,
25215 skip_to_next_id(A, B),
25216 get_max_occurrence(A, D),
25217 E is D+1,
25218 bulk_propagation(A, C, E).
25219bulk_propagation(A, B, _) :-
25220 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-15',
25221 C),
25222 lookup_ht(C, k(A, simplification), D),
25223 member(E, D),
25224 E=suspension(_, active, _, _, _, F, _, _, _),
25225 F=:=B+1,
25226 !,
25227 skip_to_next_id(A, B),
25228 get_max_occurrence(A, G),
25229 H is G+1,
25230 bulk_propagation(A, F, H).
25231bulk_propagation(A, B, C) :-
25232 nb_getval('$chr_store_multi_hash_chr_translate____continuation_occurrence___3-12',
25233 D),
25234 lookup_ht(D, k(A, B), E),
25235 member(F, E),
25236 F=suspension(_, active, _, _, G),
25237 G>B+1,
25238 !,
25239 H is min(C, G),
25240 I is B+1,
25241 bulk_propagation(A, I, H).
25242bulk_propagation(A, B, _) :-
25243 skip_to_next_id(A, B),
25244 get_max_occurrence(A, C),
25245 D is C+1,
25246 E is B+1,
25247 bulk_propagation(A, E, D).
25248set_occurrence_code_id(A, B, C) :-
25249 get_max_occurrence(A, D),
25250 B>D,
25251 !,
25252 occurrence_code_id(A, B, C).
25253set_occurrence_code_id(A, B, C) :-
25254 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-12',
25255 D),
25256 lookup_ht(D, k(A, B), E),
25257 member(F, E),
25258 F=suspension(_, active, _, _, _, _, G, H, _),
25259 nb_getval('$chr_store_multi_hash_chr_translate____passive___2-12', I),
25260 lookup_ht(I, k(G, H), J),
25261 member(K, J),
25262 K=suspension(_, active, _, _, _),
25263 !,
25264 occurrence_code_id(A, B, C),
25265 L is B+1,
25266 set_occurrence_code_id(A, L, C).
25267set_occurrence_code_id(A, B, C) :-
25268 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-125',
25269 D),
25270 ( ( lookup_ht(D, k(A, B, simplification), E),
25271 member(F, E),
25272 F=suspension(_, active, _, _, _, _, _, _, _),
25273 !,
25274 occurrence_code_id(A, B, C),
25275 G is B+1,
25276 set_occurrence_code_id(A, G, C)
25277 ; lookup_ht(D, k(A, B, propagation), H),
25278 member(I, H),
25279 I=suspension(_, active, _, _, _, _, _, _, _),
25280 nb_getval('$chr_store_multi_hash_chr_translate____skip_to_next_id___2-12',
25281 J),
25282 lookup_ht(J, k(A, B), K),
25283 member(L, K),
25284 L=suspension(_, active, _, _, _),
25285 !,
25286 occurrence_code_id(A, B, C),
25287 M is B+1,
25288 N is C+1,
25289 set_occurrence_code_id(A, M, N)
25290 )
25291 ; lookup_ht(D, k(A, B, propagation), O),
25292 member(P, O),
25293 P=suspension(_, active, _, _, _, _, _, _, _),
25294 !,
25295 occurrence_code_id(A, B, C),
25296 Q is B+1,
25297 set_occurrence_code_id(A, Q, C)
25298 ).
25299set_occurrence_code_id(A, B, C) :-
25300 D=suspension(E, active, A, B, C),
25301 'chr gen_id'(E),
25302 nb_getval('$chr_store_multi_hash_chr_translate____set_occurrence_code_id___3-12',
25303 F),
25304 insert_ht(F, k(A, B), D).
25305occurrence_code_id(A, B, C) :-
25306 D=suspension(E, active, A, B, C),
25307 'chr gen_id'(E),
25308 nb_getval('$chr_store_multi_hash_chr_translate____occurrence_code_id___3-12',
25309 F),
25310 insert_ht(F, k(A, B), D).
25311get_occurrence_code_id(A, B, C) :-
25312 nb_getval('$chr_store_multi_hash_chr_translate____occurrence_code_id___3-12',
25313 D),
25314 lookup_ht(D, k(A, B), E),
25315 member(F, E),
25316 F=suspension(_, active, _, _, G),
25317 !,
25318 C=G.
25319get_occurrence_code_id(A, B, _) :-
25320 ( B==0
25321 -> true
25322 ; format('no occurrence code for ~w!\n', [A:B])
25323 ).
25324chr_constants(A) :-
25325 B=suspension(C, active, _, A),
25326 'chr gen_id'(C),
25327 nb_getval('$chr_store_global_ground_chr_translate____chr_constants___1',
25328 D),
25329 E=[B|D],
25330 b_setval('$chr_store_global_ground_chr_translate____chr_constants___1',
25331 E),
25332 ( D=[F|_]
25333 -> setarg(3, F, E)
25334 ; true
25335 ).
25336get_chr_constants(A) :-
25337 nb_getval('$chr_store_global_ground_chr_translate____chr_constants___1',
25338 B),
25339 member(C, B),
25340 C=suspension(_, active, _, D),
25341 !,
25342 A=D.
25343get_chr_constants(A) :-
25344 chr_warning(internal, 'No constants found for key ~w.\n', [_]),
25345 A=[].
25346add_chr_constants_(A) :-
25347 nb_getval('$chr_store_global_ground_chr_translate____chr_constants___1',
25348 B),
25349 member(C, B),
25350 C=suspension(_, active, _, D),
25351 !,
25352 setarg(2, C, removed),
25353 arg(3, C, E),
25354 ( var(E)
25355 -> nb_getval('$chr_store_global_ground_chr_translate____chr_constants___1',
25356 F),
25357 F=[_|G],
25358 b_setval('$chr_store_global_ground_chr_translate____chr_constants___1',
25359 G),
25360 ( G=[H|_]
25361 -> setarg(3, H, _)
25362 ; true
25363 )
25364 ; E=[_, _|G],
25365 setarg(2, E, G),
25366 ( G=[H|_]
25367 -> setarg(3, H, E)
25368 ; true
25369 )
25370 ),
25371 sort([A|D], I),
25372 chr_constants(I).
25373add_chr_constants_(A) :-
25374 chr_constants([A]).
25375print_chr_constants :-
25376 print_chr_constants___0__0(_).
25377print_chr_constants___0__0(A) :-
25378 nb_getval('$chr_store_global_ground_chr_translate____chr_constants___1',
25379 B),
25380 !,
25381 A=suspension(C, not_stored_yet, _),
25382 'chr gen_id'(C),
25383 print_chr_constants___0__0__0__1(B, A).
25384print_chr_constants___0__0__0__1([], A) :-
25385 print_chr_constants___0__1(A).
25386print_chr_constants___0__0__0__1([A|B], C) :-
25387 ( A=suspension(_, active, _, D)
25388 -> format('\t* chr_constants : ~w.\n', [D]),
25389 print_chr_constants___0__0__0__1(B, C)
25390 ; print_chr_constants___0__0__0__1(B, C)
25391 ).
25392print_chr_constants___0__0(A) :-
25393 A=suspension(B, not_stored_yet, _),
25394 'chr gen_id'(B),
25395 print_chr_constants___0__1(A).
25396print_chr_constants___0__1(A) :-
25397 ( var(A)
25398 -> true
25399 ; arg(2, A, B),
25400 setarg(2, A, removed),
25401 ( B==not_stored_yet
25402 -> true
25403 ; arg(3, A, C),
25404 ( var(C)
25405 -> nb_getval('$chr_store_global_ground_chr_translate____print_chr_constants___0',
25406 D),
25407 D=[_|E],
25408 b_setval('$chr_store_global_ground_chr_translate____print_chr_constants___0',
25409 E),
25410 ( E=[F|_]
25411 -> setarg(3, F, _)
25412 ; true
25413 )
25414 ; C=[_, _|E],
25415 setarg(2, C, E),
25416 ( E=[F|_]
25417 -> setarg(3, F, C)
25418 ; true
25419 )
25420 )
25421 )
25422 )