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)). 21:- use_module(library(apply_macros)). 22:- use_module(library(occurs)). 23:- use_module(library(assoc)). 24:- use_module(library(dialect/hprolog)). 25:- use_module(chr(pairlist)). 26:- use_module(chr(a_star)). 27:- use_module(chr(listmap)). 28:- use_module(chr(clean_code)). 29:- use_module(chr(builtins)). 30:- use_module(chr(find)). 31:- use_module(chr(binomialheap)). 32:- use_module(chr(guard_entailment)). 33:- use_module(chr(chr_compiler_options)). 34:- use_module(chr(chr_compiler_utility)). 35:- use_module(chr(chr_compiler_errors)). 36:- include(chr(chr_op)). 37:- op(1150, fx, chr_type). 38:- op(1150, fx, chr_declaration). 39:- op(1130, xfx, --->). 40:- op(980, fx, +). 41:- op(980, fx, -). 42:- op(980, fx, ?). 43:- op(1150, fx, constraints). 44:- op(1150, fx, chr_constraint). 45format_storetype(multi_store(A)) :-
46 !,
47 maplist(format_storetype, A).
48format_storetype(atomic_constants(A, B, _)) :-
49 format('\t* a trie index on the argument(s) ~w for the ground terms ~w\n',
50 [A, B]).
51format_storetype(ground_constants(A, B, _)) :-
52 format('\t* a trie index on the argument(s) ~w for the ground terms ~w\n',
53 [A, B]).
54format_storetype(A) :-
55 format('\t* ~w\n', [A]).
56get_constraint_arg_type(A, B, C) :-
57 get_constraint_type(A, D),
58 nth1(B, D, E),
59 unalias_type(E, C).
60partial_store(ground_constants(_, _, incomplete)).
61partial_store(atomic_constants(_, _, incomplete)).
62late_allocation_analysis(A) :-
63 ( chr_pp_flag(late_allocation, on)
64 -> maplist(late_allocation, A)
65 ; true
66 ).
67late_allocation(A) :-
68 late_allocation(A, 0).
69late_allocation(A, B) :-
70 allocation_occurrence(A, B),
71 !.
72late_allocation(A, B) :-
73 C is B+1,
74 late_allocation(A, C).
75stored_in_guard_before_next_kept_occurrence(A, B) :-
76 chr_pp_flag(store_in_guards, on),
77 C is B+1,
78 stored_in_guard_lookahead(A, C).
79set_constraint_indices(A) :-
80 set_constraint_indices(A, 1).
81set_constraint_indices([], A) :-
82 B is A-1,
83 max_constraint_index(B).
84set_constraint_indices([A|B], C) :-
85 ( ( chr_pp_flag(debugable, on)
86 ; \+ only_ground_indexed_arguments(A),
87 is_stored(A)
88 ; is_stored(A),
89 get_store_type(A, default)
90 ; get_store_type(A, var_assoc_store(_, _))
91 )
92 -> constraint_index(A, C),
93 D is C+1,
94 set_constraint_indices(B, D)
95 ; set_constraint_indices(B, C)
96 ).
97type_indexed_identifier_structure(A, B) :-
98 type_indexed_identifier_name(A,
99 type_indexed_identifier_struct,
100 C),
101 get_type_indexed_identifier_size(A, D),
102 functor(B, C, D).
103type_indexed_identifier_name(A, B, C) :-
104 ( atom(A)
105 -> D=A
106 ; term_to_atom(A, D)
107 ),
108 atom_concat_list([B, '_', D], C).
109chr_translate(A, B) :-
110 chr_translate_line_info(A, bootstrap, B).
111chr_translate_line_info(A, B, C) :-
112 chr_banner,
113 restart_after_flattening(A, D),
114 init_chr_pp_flags,
115 chr_source_file(B),
116 partition_clauses(D, E, F, G),
117 chr_compiler_options:sanity_check,
118 dump_code(D),
119 check_declared_constraints(E),
120 generate_show_constraint(E, H, F, I),
121 add_constraints(H),
122 add_rules(I),
123 generate_never_stored_rules(H, J),
124 add_rules(J),
125 append(I, J, K),
126 chr_analysis(K, H, D),
127 time('constraint code generation',
128 chr_translate:constraints_code(H, L)),
129 time('validate store assumptions',
130 chr_translate:validate_store_type_assumptions(H)),
131 phase_end(validate_store_type_assumptions),
132 used_states_known,
133 time('store code generation',
134 chr_translate:store_management_preds(H, M)),
135 insert_declarations(G, N),
136 chr_module_declaration(O),
137 append([M, L, O, [end_of_file]], P),
138 clean_clauses(P, Q),
139 append([N, Q], C),
140 dump_code(C),
141 !.
142chr_analysis(A, B, C) :-
143 maplist(pragma_rule_to_ast_rule, A, D),
144 check_rules(A, D, B),
145 time('type checking', chr_translate:static_type_check(A, D)),
146 collect_constants(A, D, B, C),
147 add_occurrences(A, D),
148 time('functional dependency',
149 chr_translate:functional_dependency_analysis(A)),
150 time('set semantics', chr_translate:set_semantics_rules(A)),
151 time('symmetry analysis', chr_translate:symmetry_analysis(A)),
152 time('guard simplification', chr_translate:guard_simplification),
153 time('late storage', chr_translate:storage_analysis(B)),
154 time(observation, chr_translate:observation_analysis(B)),
155 time('ai observation', chr_translate:ai_observation_analysis(B)),
156 time('late allocation', chr_translate:late_allocation_analysis(B)),
157 partial_wake_analysis,
158 time('assume constraint stores',
159 chr_translate:assume_constraint_stores(B)),
160 time('default constraint indices',
161 chr_translate:set_constraint_indices(B)),
162 time('check storedness assertions',
163 chr_translate:check_storedness_assertions(B)),
164 time('continuation analysis', chr_translate:continuation_analysis(B)).
165store_management_preds(A, B) :-
166 generate_attach_detach_a_constraint_all(A, C),
167 generate_attr_unify_hook(D),
168 generate_attach_increment(E),
169 generate_extra_clauses(A, F),
170 generate_insert_delete_constraints(A, G),
171 generate_attach_code(A, H),
172 generate_counter_code(I),
173 generate_dynamic_type_check_clauses(J),
174 append([C, E, D, F, G, H, I, J],
175 B).
176insert_declarations(A, B) :-
177 findall((:-use_module(chr(C))),
178 ( auxiliary_module(C),
179 is_used_auxiliary_module(C)
180 ),
181 D),
182 append(A, [(:-use_module(chr(chr_runtime)))|D], B).
183auxiliary_module(chr_hashtable_store).
184auxiliary_module(chr_integertable_store).
185auxiliary_module(chr_assoc_store).
186generate_counter_code(A) :-
187 ( chr_pp_flag(store_counter, on)
188 -> 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))]
189 ; A=[]
190 ).
191chr_module_declaration([]) :-
192 tmp_module,
193 !.
194chr_module_declaration(A) :-
195 get_target_module(B),
196 ( B\==chr_translate,
197 chr_pp_flag(toplevel_show_store, on)
198 -> A=[(:-multifile chr:'$chr_module'/1), chr:'$chr_module'(B)]
199 ; A=[]
200 ).
201partition_clauses([], [], [], []).
202partition_clauses([A|B], C, D, E) :-
203 ( parse_rule(A, F)
204 -> C=G,
205 D=[F|H],
206 E=I
207 ; is_declaration(A, J)
208 -> append(J, G, C),
209 D=H,
210 E=I
211 ; is_module_declaration(A, K)
212 -> target_module(K),
213 C=G,
214 D=H,
215 E=[A|I]
216 ; is_type_definition(A)
217 -> C=G,
218 D=H,
219 E=I
220 ; is_chr_declaration(A)
221 -> C=G,
222 D=H,
223 E=I
224 ; A=handler(_)
225 -> chr_warning(deprecated(A),
226 'Backward compatibility: ignoring handler/1 declaration.\n',
227 []),
228 C=G,
229 D=H,
230 E=I
231 ; A=rules(_)
232 -> chr_warning(deprecated(A),
233 'Backward compatibility: ignoring rules/1 declaration.\n',
234 []),
235 C=G,
236 D=H,
237 E=I
238 ; A=option(L, M)
239 -> chr_warning(deprecated(A),
240 'Instead use `:-chr_option(~w,~w).\'\n',
241 [L, M]),
242 handle_option(L, M),
243 C=G,
244 D=H,
245 E=I
246 ; A=(:-chr_option(L, M))
247 -> handle_option(L, M),
248 C=G,
249 D=H,
250 E=I
251 ; A='$chr_compiled_with_version'(_)
252 -> C=G,
253 D=H,
254 E=['$chr_compiled_with_version'(3)|I]
255 ; C=G,
256 D=H,
257 E=[A|I]
258 ),
259 partition_clauses(B, G, H, I).
260'$chr_compiled_with_version'(3).
261is_declaration(A, B) :-
262 ( A=(:-C),
263 C=..[D, E],
264 D==(chr_constraint)
265 -> conj2list(E, F)
266 ; ( A=(:-C)
267 -> C=..[constraints, E]
268 ; A=..[constraints, E]
269 ),
270 conj2list(E, F),
271 chr_warning(deprecated(A),
272 'Instead use :- chr_constraint ~w.\n',
273 [E])
274 ),
275 extract_type_mode(F, B).
([], []).
277extract_type_mode([A/B|C], [A/B|D]) :-
278 !,
279 extract_type_mode(C, D).
280extract_type_mode([A|B], [C|D]) :-
281 ( A= #(E, F)
282 -> functor(E, G, H),
283 extract_annotation(F, G/H)
284 ; A=E,
285 functor(E, G, H)
286 ),
287 C=G/H,
288 E=..[_|I],
289 extract_types_and_modes(I, J, K),
290 assert_constraint_type(C, J),
291 constraint_mode(C, K),
292 extract_type_mode(B, D).
(stored, A) :-
294 stored_assertion(A).
295extract_annotation(default(A), B) :-
296 never_stored_default(B, A).
297extract_types_and_modes([], [], []).
298extract_types_and_modes([A|B], [C|D], [E|F]) :-
299 extract_type_and_mode(A, C, E),
300 extract_types_and_modes(B, D, F).
301extract_type_and_mode(+A, A, +) :-
302 !.
303extract_type_and_mode(?A, A, ?) :-
304 !.
305extract_type_and_mode(-A, A, -) :-
306 !.
307extract_type_and_mode(+, any, +) :-
308 !.
309extract_type_and_mode(?, any, ?) :-
310 !.
311extract_type_and_mode(-, any, -) :-
312 !.
313extract_type_and_mode(A, _, _) :-
314 chr_error(syntax(A),
315 'Illegal mode/type declaration.\n\tCorrect syntax is +type, -type or ?type\n\tor +, - or ?.\n',
316 []).
317is_chr_declaration(A) :-
318 A=(:-chr_declaration B),
319 ( B=(C--->D)
320 -> background_info(C, D)
321 ; B=D
322 -> background_info([D])
323 ).
324is_type_definition(A) :-
325 is_type_definition(A, B),
326 assert_type_definition(B).
327assert_type_definition(typedef(A, B)) :-
328 type_definition(A, B).
329assert_type_definition(alias(A, B)) :-
330 type_alias(A, B).
331is_type_definition(A, B) :-
332 ( A=(:-C)
333 -> true
334 ; A=C
335 ),
336 C=..[chr_type, D],
337 ( D=(E--->F)
338 -> tdisj2list(F, G),
339 B=typedef(E, G)
340 ; D=(H==E)
341 -> B=alias(H, E)
342 ; B=typedef(D, []),
343 chr_warning(syntax,
344 'Empty type definition `~w\'.\nAre you sure you want to declare a phantom type?\n',
345 [A])
346 ).
347tdisj2list(A, B) :-
348 tdisj2list(A, B, []).
349tdisj2list(A, B, C) :-
350 A=(D;E),
351 !,
352 tdisj2list(D, B, F),
353 tdisj2list(E, F, C).
354tdisj2list(A, [A|B], B).
355parse_rule(A, B) :-
356 A= @(C, D),
357 !,
358 rule(D, yes(C), B).
359parse_rule(A, B) :-
360 rule(A, no, B).
361rule(A, B, C) :-
362 A=pragma(D, E),
363 !,
364 ( var(E)
365 -> F=[_]
366 ; conj2list(E, F)
367 ),
368 inc_rule_count(G),
369 C=pragma(H, I, F, B, G),
370 is_rule(D, H, I, C).
371rule(A, B, C) :-
372 inc_rule_count(D),
373 C=pragma(E, F, [], B, D),
374 is_rule(A, E, F, C).
375is_rule(A, B, C, D) :-
376 A= ==>(E, F),
377 !,
378 conj2list(E, G),
379 get_ids(G, H, I, D),
380 C=ids([], H),
381 ( F=(J| K)
382 -> B=rule([], I, J, K)
383 ; B=rule([], I, true, F)
384 ).
385is_rule(A, B, C, D) :-
386 A= <=>(E, F),
387 !,
388 ( F=(G| H)
389 -> I=G,
390 J=H
391 ; I=true,
392 J=F
393 ),
394 ( E= \(K, L)
395 -> conj2list(K, M),
396 conj2list(L, N),
397 get_ids(M, O, P, 0, Q, D),
398 get_ids(N, R, S, Q, _, D),
399 C=ids(R, O)
400 ; conj2list(E, N),
401 P=[],
402 get_ids(N, R, S, D),
403 C=ids(R, [])
404 ),
405 B=rule(S, P, I, J).
406get_ids(A, B, C, D) :-
407 get_ids(A, B, C, 0, _, D).
408get_ids([], [], [], A, A, _).
409get_ids([A|B], [C|D], [E|F], C, G, H) :-
410 ( A= #(E, I)
411 -> ( var(I)
412 -> I=C
413 ; check_direct_pragma(I, C, H)
414 )
415 ; E=A
416 ),
417 J is C+1,
418 get_ids(B, D, F, J, G, H).
419check_direct_pragma(passive, A, B) :-
420 !,
421 B=pragma(_, _, _, _, C),
422 passive(C, A).
423check_direct_pragma(A, _, B) :-
424 ( direct_pragma(C),
425 atom_concat(A, _, C)
426 -> chr_warning(problem_pragma(A, B),
427 'completed `~w\' to `~w\'\n',
428 [A, C])
429 ; chr_warning(unsupported_pragma(A, B), '', [])
430 ).
431direct_pragma(passive).
432is_module_declaration((:-module(A)), A).
433is_module_declaration((:-module(A, _)), A).
434add_constraints([]).
435add_constraints([A|B]) :-
436 max_occurrence(A, 0),
437 A=_/C,
438 length(D, C),
439 set_elems(D, ?),
440 constraint_mode(A, D),
441 add_constraints(B).
442add_rules([]).
443add_rules([A|B]) :-
444 A=pragma(_, _, _, _, C),
445 rule(C, A),
446 add_rules(B).
447check_declared_constraints(A) :-
448 tree_set_empty(B),
449 check_declared_constraints(A, B).
450check_declared_constraints([], _).
451check_declared_constraints([A|B], C) :-
452 ( tree_set_memberchk(A, C)
453 -> chr_error(syntax(A),
454 'Constraint multiply defined: ~w.\n\tRemove redundant declaration!\n',
455 [A])
456 ; true
457 ),
458 tree_set_add(C, A, D),
459 check_declared_constraints(B, D).
460check_rules(A, B, C) :-
461 maplist(check_rule(C), A, B).
462check_rule(A, B, C) :-
463 B=pragma(_, _, D, _, _),
464 check_ast_rule_indexing(C, B),
465 check_ast_trivial_propagation_rule(C, B),
466 check_ast_head_constraints(C, A, B),
467 check_pragmas(D, B).
468check_ast_trivial_propagation_rule(A, B) :-
469 A=ast_rule(C, _, _, D, _),
470 ( C=propagation(_),
471 D==[]
472 -> chr_warning(weird_program,
473 'Ignoring propagation rule with empty body: ~@.\n\t\n',
474 [format_rule(B)]),
475 set_rule_passive(B)
476 ; true
477 ).
478set_rule_passive(A) :-
479 A=pragma(_, _, _, _, B),
480 set_all_passive(B).
481check_trivial_propagation_rule(A) :-
482 A=pragma(B, _, _, _, C),
483 ( B=rule([], _, _, true)
484 -> chr_warning(weird_program,
485 'Ignoring propagation rule with empty body: ~@.\n\t\n',
486 [format_rule(A)]),
487 set_all_passive(C)
488 ; true
489 ).
490check_ast_head_constraints(ast_rule(A, _, _, _, _), B, C) :-
491 check_ast_head_constraints_(A, B, C).
492check_ast_head_constraints_(simplification(A), B, C) :-
493 maplist(check_ast_head_constraint(B, C), A).
494check_ast_head_constraints_(propagation(A), B, C) :-
495 maplist(check_ast_head_constraint(B, C), A).
496check_ast_head_constraints_(simpagation(A, B), C, D) :-
497 maplist(check_ast_head_constraint(C, D), A),
498 maplist(check_ast_head_constraint(C, D), B).
499check_ast_head_constraint(A, B, chr_constraint(C, _, D)) :-
500 ( memberchk(C, A)
501 -> true
502 ; chr_error(syntax(D),
503 'Undeclared constraint ~w in head of ~@.\n\tConstraint should be one of ~w.\n',
504 [_/_, format_rule(B), A])
505 ).
506check_head_constraints([], _, _).
507check_head_constraints([A|B], C, D) :-
508 functor(A, E, F),
509 ( memberchk(E/F, C)
510 -> check_head_constraints(B, C, D)
511 ; chr_error(syntax(A),
512 'Undeclared constraint ~w in head of ~@.\n\tConstraint should be one of ~w.\n',
513 [E/F, format_rule(D), C])
514 ).
515check_pragmas([], _).
516check_pragmas([A|B], C) :-
517 check_pragma(A, C),
518 check_pragmas(B, C).
519check_pragma(A, B) :-
520 var(A),
521 !,
522 chr_error(syntax(A),
523 'Invalid pragma ~w in ~@.\n\tPragma should not be a variable!\n',
524 [A, format_rule(B)]).
525check_pragma(passive(A), B) :-
526 !,
527 B=pragma(_, ids(C, D), _, _, E),
528 ( memberchk_eq(A, C)
529 -> true
530 ; memberchk_eq(A, D)
531 -> true
532 ; chr_error(syntax(A),
533 'Invalid identifier ~w in pragma passive in ~@.\n',
534 [A, format_rule(B)])
535 ),
536 passive(E, A).
537check_pragma(mpassive(A), B) :-
538 !,
539 B=pragma(_, _, _, _, C),
540 chr_warning(experimental,
541 'Experimental pragma ~w. Use with care!\n',
542 [mpassive(A)]),
543 maplist(passive(C), A).
544check_pragma(A, B) :-
545 A=already_in_heads,
546 !,
547 chr_warning(unsupported_pragma(A, B),
548 'Termination and correctness may be affected.\n',
549 []).
550check_pragma(A, B) :-
551 A=already_in_head(_),
552 !,
553 chr_warning(unsupported_pragma(A, B),
554 'Termination and correctness may be affected.\n',
555 []).
556check_pragma(A, B) :-
557 A=no_history,
558 !,
559 chr_warning(experimental,
560 'Experimental pragma no_history. Use with care!\n',
561 []),
562 B=pragma(_, _, _, _, C),
563 no_history(C).
564check_pragma(A, B) :-
565 A=history(C, D),
566 !,
567 B=pragma(_, ids(E, F), _, _, G),
568 chr_warning(experimental,
569 'Experimental pragma ~w. Use with care!\n',
570 [A]),
571 ( E\==[]
572 -> chr_error(syntax(A),
573 'Pragma history only implemented for propagation rules.\n',
574 [])
575 ; \+ atom(C)
576 -> chr_error(syntax(A),
577 'Illegal argument for pragma history: ~w is not an atom (rule number ~w).\n',
578 [C, G])
579 ; \+ is_set(D)
580 -> chr_error(syntax(A),
581 'Illegal argument for pragma history: ~w is not a set (rule number ~w).\n',
582 [D, G])
583 ; check_history_pragma_ids(D, E, F)
584 -> history(G, C, D)
585 ; chr_error(syntax(A),
586 'Invalid identifier(s) in pragma ~w of rule number ~w.\n',
587 [A, G])
588 ).
589check_pragma(A, B) :-
590 A=source_location(C),
591 !,
592 B=pragma(_, _, _, _, D),
593 source_location(D, C).
594check_history_pragma_ids([], _, _).
595check_history_pragma_ids([A|B], C, D) :-
596 ( memberchk_eq(A, D)
597 ; memberchk_eq(A, C)
598 ),
599 check_history_pragma_ids(B, C, D).
600check_pragma(A, B) :-
601 chr_error(syntax(A),
602 'Unknown pragma ~w in ~@.\n',
603 [A, format_rule(B)]).
604test_named_history_id_pairs(_, [], _, []).
605test_named_history_id_pairs(A, [B|C], D, [E|F]) :-
606 test_named_history_id_pair(A, B, D, E),
607 test_named_history_id_pairs(A, C, D, F).
608format_rule(A) :-
609 A=pragma(_, _, _, B, C),
610 ( B=yes(D)
611 -> write('rule '),
612 write(D)
613 ; write('rule number '),
614 write(C)
615 ),
616 get_line_number(C, E),
617 write(' at '),
618 write(E).
619check_ast_rule_indexing(A, B) :-
620 A=ast_rule(C, D, _, _, _),
621 tree_set_empty(E),
622 ast_head_variables(C, E, F),
623 ast_remove_anti_monotonic_guards(D, F, G),
624 ast_term_list_variables(G, E, H),
625 check_ast_head_indexing(C, H),
626 ( chr_pp_flag(term_indexing, on)
627 -> B=pragma(I, _, _, _, _),
628 I=rule(J, K, L, _),
629 term_variables(J-K, M),
630 remove_anti_monotonic_guards(L, M, N),
631 term_variables(N, O),
632 append(J, K, P),
633 check_specs_indexing(P, O, _)
634 ; true
635 ).
636check_ast_head_indexing(simplification(A), B) :-
637 check_ast_indexing(A, B).
638check_ast_head_indexing(propagation(A), B) :-
639 check_ast_indexing(A, B).
640check_ast_head_indexing(simpagation(A, B), C) :-
641 ast_constraint_list_variables(B, C, D),
642 check_ast_indexing(A, D),
643 ast_constraint_list_variables(A, C, E),
644 check_ast_indexing(B, E).
645check_rule_indexing(A) :-
646 A=pragma(B, _, _, _, _),
647 B=rule(C, D, E, _),
648 term_variables(C-D, F),
649 remove_anti_monotonic_guards(E, F, G),
650 check_indexing(C, G-D),
651 check_indexing(D, G-C),
652 ( chr_pp_flag(term_indexing, on)
653 -> term_variables(G, H),
654 append(C, D, I),
655 check_specs_indexing(I, H, _)
656 ; true
657 ).
658remove_anti_monotonic_guards(A, B, C) :-
659 conj2list(A, D),
660 remove_anti_monotonic_guard_list(D, B, E),
661 list2conj(E, C).
662remove_anti_monotonic_guard_list([], _, []).
663remove_anti_monotonic_guard_list([A|B], C, D) :-
664 ( A=var(E),
665 memberchk_eq(E, C)
666 -> D=F
667 ; D=[A|F]
668 ),
669 remove_anti_monotonic_guard_list(B, C, F).
670ast_remove_anti_monotonic_guards([], _, []).
671ast_remove_anti_monotonic_guards([A|B], C, D) :-
672 ( A=compound(var, 1, [E], _),
673 ast_var_memberchk(E, C)
674 -> D=F
675 ; D=[A|F]
676 ),
677 ast_remove_anti_monotonic_guards(B, C, F).
678check_ast_indexing([], _).
679check_ast_indexing([A|B], C) :-
680 A=chr_constraint(D, E, _),
681 ast_constraint_list_variables(B, C, F),
682 check_ast_indexing(E, 1, D, F),
683 ast_constraint_variables(A, C, G),
684 check_ast_indexing(B, G).
685check_ast_indexing([], _, _, _).
686check_ast_indexing([A|B], C, D, E) :-
687 ( is_indexed_argument(D, C)
688 -> true
689 ; ast_nonvar(A)
690 -> indexed_argument(D, C)
691 ; ast_term_list_variables(B, E, F),
692 ( ast_var_memberchk(A, F)
693 -> indexed_argument(D, C)
694 ; true
695 )
696 ),
697 G is C+1,
698 ast_term_variables(A, E, H),
699 check_ast_indexing(B, G, D, H).
700check_indexing([], _).
701check_indexing([A|B], C) :-
702 functor(A, D, E),
703 A=..[_|F],
704 term_variables(B-C, G),
705 check_indexing(F, 1, D/E, G),
706 check_indexing(B, [A|C]).
707check_indexing([], _, _, _).
708check_indexing([A|B], C, D, E) :-
709 ( is_indexed_argument(D, C)
710 -> true
711 ; nonvar(A)
712 -> indexed_argument(D, C)
713 ; term_variables(B, F),
714 append(F, E, G),
715 ( memberchk_eq(A, G)
716 -> indexed_argument(D, C)
717 ; true
718 )
719 ),
720 H is C+1,
721 term_variables(A, I),
722 append(I, E, J),
723 check_indexing(B, H, D, J).
724check_specs_indexing([], _, []).
725check_specs_indexing([A|B], C, D) :-
726 D=[E|F],
727 term_variables(B, G, C),
728 check_spec_indexing(A, G, E),
729 term_variables(A, H, C),
730 check_specs_indexing(B, H, F).
731check_spec_indexing(A, B, C) :-
732 functor(A, D, E),
733 C=spec(D, E, F),
734 A=..[_|G],
735 check_args_spec_indexing(G, 1, B, F),
736 indexing_spec(D/E, [F]).
737check_args_spec_indexing([], _, _, []).
738check_args_spec_indexing([A|B], C, D, E) :-
739 term_variables(B, F, D),
740 ( check_arg_spec_indexing(A, C, F, G)
741 -> E=[G|H]
742 ; E=H
743 ),
744 I is C+1,
745 term_variables(A, J, D),
746 check_args_spec_indexing(B, I, J, H).
747check_arg_spec_indexing(A, B, C, D) :-
748 ( var(A)
749 -> memberchk_eq(A, C),
750 D=specinfo(B, any, [])
751 ; functor(A, E, F),
752 D=specinfo(B, E/F, [G]),
753 A=..[_|H],
754 check_args_spec_indexing(H, 1, C, G)
755 ).
756add_occurrences(A, B) :-
757 maplist(add_rule_occurrences, A, B).
758add_rule_occurrences(A, B) :-
759 A=pragma(_, C, _, _, D),
760 B=ast_rule(E, _, _, _, _),
761 add_head_occurrences(E, C, D).
762add_head_occurrences(simplification(A), ids(B, _), C) :-
763 maplist(add_constraint_occurrence(C, simplification), A, B).
764add_head_occurrences(propagation(A), ids(_, B), C) :-
765 maplist(add_constraint_occurrence(C, propagation), A, B).
766add_head_occurrences(simpagation(A, B), ids(C, D), E) :-
767 maplist(add_constraint_occurrence(E, simplification), A, C),
768 maplist(add_constraint_occurrence(E, propagation), B, D).
769add_constraint_occurrence(A, B, C, D) :-
770 C=chr_constraint(E, _, _),
771 new_occurrence(E, A, D, B).
772observation_analysis(A, B, C, D) :-
773 ( all_spawned(A, C)
774 -> true
775 ; var(B)
776 -> spawns_all(A, C)
777 ; B=true
778 -> true
779 ; B=fail
780 -> true
781 ; B=!
782 -> true
783 ; B=(E, F)
784 -> observation_analysis(A, E, C, D),
785 observation_analysis(A, F, C, D)
786 ; B=(E;F)
787 -> observation_analysis(A, E, C, D),
788 observation_analysis(A, F, C, D)
789 ; B=(E->F)
790 -> observation_analysis(A, E, C, D),
791 observation_analysis(A, F, C, D)
792 ; B=(\+G)
793 -> observation_analysis(A, G, C, D)
794 ; functor(B, H, I),
795 memberchk(H/I, D)
796 -> spawns(A, C, H/I)
797 ; B=(_=_)
798 -> spawns_all_triggers(A, C)
799 ; B=(_ is _)
800 -> spawns_all_triggers(A, C)
801 ; builtin_binds_b(B, J)
802 -> ( J==[]
803 -> true
804 ; spawns_all_triggers(A, C)
805 )
806 ; spawns_all(A, C)
807 ).
808is_observed(A, B) :-
809 is_observed(A, B, _),
810 ai_is_observed(A, B).
811is_stored_in_guard(A, B) :-
812 chr_pp_flag(store_in_guards, on),
813 do_is_observed(A, B, guard).
814generate_attach_detach_a_constraint_all([], []).
815generate_attach_detach_a_constraint_all([A|B], C) :-
816 ( ( chr_pp_flag(debugable, on)
817 ; is_stored(A),
818 \+ only_ground_indexed_arguments(A),
819 \+ get_store_type(A, var_assoc_store(_, _))
820 )
821 -> generate_attach_a_constraint(A, D),
822 generate_detach_a_constraint(A, E)
823 ; D=[],
824 E=[]
825 ),
826 generate_attach_detach_a_constraint_all(B, F),
827 append([D, E, F], C).
828generate_attach_a_constraint(A, [B, C]) :-
829 generate_attach_a_constraint_nil(A, B),
830 generate_attach_a_constraint_cons(A, C).
831attach_constraint_atom(A, B, C, D) :-
832 make_name(attach_, A, E),
833 D=..[E, B, C].
834generate_attach_a_constraint_nil(A, B) :-
835 B=(C:-true),
836 attach_constraint_atom(A, [], _, C).
837generate_attach_a_constraint_cons(A, B) :-
838 B=(C:-D),
839 attach_constraint_atom(A, [E|F], G, C),
840 attach_constraint_atom(A, F, G, H),
841 D=(I, J, H),
842 get_max_constraint_index(K),
843 ( K==1
844 -> generate_attach_body_1(A, E, G, I)
845 ; generate_attach_body_n(A, E, G, I)
846 ),
847 chr_pp_flag(solver_events, L),
848 ( L\==none
849 -> _=[[E|_], G],
850 get_target_module(M),
851 use_auxiliary_predicate(run_suspensions),
852 J=clp_events:subscribe(E, L, M, M:'$run_suspensions'([G]))
853 ; J=true
854 ).
855generate_attach_body_1(_, A, B, C) :-
856 get_target_module(D),
857 C=(get_attr(A, D, E)->put_attr(A, D, [B|E]);put_attr(A, D, [B])).
858generate_attach_body_n(A/B, C, D, E) :-
859 chr_pp_flag(experiment, off),
860 !,
861 get_constraint_index(A/B, F),
862 get_max_constraint_index(G),
863 get_target_module(H),
864 add_attr(G, D, F, I, J, K),
865 singleton_attr(G, D, F, L),
866 E=(get_attr(C, H, I)->J, put_attr(C, H, K);put_attr(C, H, L)),
867 !.
868generate_attach_body_n(A/B, C, D, E) :-
869 chr_pp_flag(experiment, on),
870 !,
871 get_constraint_index(A/B, F),
872 or_pattern(F, G),
873 H is F+1,
874 get_max_constraint_index(I),
875 get_target_module(J),
876 singleton_attr(I, D, F, K),
877 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)),
878 !.
879generate_detach_a_constraint(A, [B, C]) :-
880 generate_detach_a_constraint_nil(A, B),
881 generate_detach_a_constraint_cons(A, C).
882detach_constraint_atom(A, B, C, D) :-
883 make_name(detach_, A, E),
884 D=..[E, B, C].
885generate_detach_a_constraint_nil(A, B) :-
886 B=(C:-true),
887 detach_constraint_atom(A, [], _, C).
888generate_detach_a_constraint_cons(A, B) :-
889 B=(C:-D),
890 detach_constraint_atom(A, [E|F], G, C),
891 detach_constraint_atom(A, F, G, H),
892 D=(I, H),
893 get_max_constraint_index(J),
894 ( J==1
895 -> generate_detach_body_1(A, E, G, I)
896 ; generate_detach_body_n(A, E, G, I)
897 ).
898generate_detach_body_1(_, A, B, C) :-
899 get_target_module(D),
900 C=(get_attr(A, D, E)->'chr sbag_del_element'(E, B, F), (F==[]->del_attr(A, D);put_attr(A, D, F));true).
901generate_detach_body_n(A/B, C, D, E) :-
902 get_constraint_index(A/B, F),
903 get_max_constraint_index(G),
904 rem_attr(G, C, D, F, H, I),
905 get_target_module(J),
906 E=(get_attr(C, J, H)->I;true),
907 !.
908create_indexed_variables_body([], [], [], _, _, _, empty, 0).
909create_indexed_variables_body([A|B], [C|D], [E|F], G, H, I, J, K) :-
910 L is H+1,
911 create_indexed_variables_body(B,
912 D,
913 F,
914 M,
915 L,
916 I,
917 N,
918 O),
919 ( C==(?),
920 is_indexed_argument(I, H)
921 -> ( atomic_type(E)
922 -> J=((var(A)->G=[A|M];G=M), P),
923 ( N==empty
924 -> P=true,
925 M=[]
926 ; P=N
927 )
928 ; N==empty
929 -> J=term_variables(A, G)
930 ; J=(term_variables(A, G, M), N)
931 ),
932 K=O
933 ; C==(-),
934 is_indexed_argument(I, H)
935 -> ( N==empty
936 -> J=(G=[A])
937 ; J=(G=[A|M], N)
938 ),
939 K is O+1
940 ; G=M,
941 J=N,
942 K is O+1
943 ).
944spectermvars(A, B, C, D, E, F) :-
945 spectermvars(B, 1, A, C, D, F, [], E).
946spectermvars([], A, _, _, B, C, C, true) :-
947 A>B,
948 !.
949spectermvars([A|B], C, D, E, F, G, H, I) :-
950 I=(J, K),
951 argspecs(D, C, L, M),
952 merge_argspecs(L, N),
953 arggoal(N, A, J, G, O),
954 P is C+1,
955 spectermvars(B,
956 P,
957 M,
958 E,
959 F,
960 O,
961 H,
962 K).
963argspecs([], _, [], []).
964argspecs([[]|A], B, C, D) :-
965 argspecs(A, B, C, D).
966argspecs([[specinfo(A, B, C)|D]|E], F, G, H) :-
967 ( F==A
968 -> G=[specinfo(A, B, C)|I],
969 ( D=[]
970 -> J=H
971 ; H=[D|J]
972 )
973 ; G=I,
974 H=[[specinfo(A, B, C)|D]|J]
975 ),
976 argspecs(E, F, I, J).
977merge_argspecs(A, B) :-
978 sort(A, C),
979 merge_argspecs_(C, B).
980merge_argspecs_([], []).
981merge_argspecs_([A], B) :-
982 !,
983 B=[A].
984merge_argspecs_([specinfo(A, B, C), specinfo(A, D, E)|F], G) :-
985 ( ( B==any
986 ; D==any
987 )
988 -> merge_argspecs_([specinfo(A, any, [])|F], G)
989 ; B==D
990 -> append(C, E, H),
991 merge_argspecs_([specinfo(A, B, H)|F], G)
992 ; G=[specinfo(A, B, C)|I],
993 merge_argspecs_([specinfo(A, D, E)|F], I)
994 ).
995arggoal(A, B, C, D, E) :-
996 ( A==[]
997 -> D=E,
998 C=true
999 ; A=[specinfo(_, any, _)]
1000 -> C=term_variables(B, D, E)
1001 ; C=(var(B)->D=[B|E];F),
1002 arggoal_cases(A, B, D, E, F)
1003 ).
1004arggoal_cases([], _, A, B, A=B).
1005arggoal_cases([specinfo(_, A, B)|C], D, E, F, G) :-
1006 ( B==[]
1007 -> G=H
1008 ; B==[[]]
1009 -> G=H
1010 ; A=I/J
1011 -> G=(K;H),
1012 functor(L, I, J),
1013 L=..[_|M],
1014 K=(D=L->N),
1015 spectermvars(M,
1016 1,
1017 B,
1018 I,
1019 J,
1020 E,
1021 F,
1022 N)
1023 ),
1024 arggoal_cases(C, D, E, F, H).
(A, B) :-
1026 generate_activate_clauses(A, B, C),
1027 generate_remove_clauses(A, C, D),
1028 generate_allocate_clauses(A, D, E),
1029 generate_insert_constraint_internal_clauses(A, E, F),
1030 generate_novel_production(F, G),
1031 generate_extend_history(G, H),
1032 generate_run_suspensions_clauses(A, H, I),
1033 generate_empty_named_history_initialisations(I, J),
1034 J=[].
1035generate_remove_clauses([], A, A).
1036generate_remove_clauses([A|B], C, D) :-
1037 generate_remove_clause(A, C, E),
1038 generate_remove_clauses(B, E, D).
1039remove_constraint_goal(A, B, C, D, E, F, G) :-
1040 uses_state(A, removed),
1041 ( chr_pp_flag(inline_insertremove, off)
1042 -> use_auxiliary_predicate(remove_constraint_internal, A),
1043 G=(H, (I==yes->E;D)),
1044 remove_constraint_atom(A, B, C, I, H)
1045 ; delay_phase_end(validate_store_type_assumptions,
1046 generate_remove_body(A,
1047 B,
1048 C,
1049 D,
1050 E,
1051 F,
1052 G))
1053 ).
1054remove_constraint_atom(A, B, C, D, E) :-
1055 make_name('$remove_constraint_internal_', A, F),
1056 ( chr_pp_flag(debugable, off),
1057 ( only_ground_indexed_arguments(A)
1058 ; get_store_type(A, var_assoc_store(_, _))
1059 )
1060 -> E=..[F, B, D]
1061 ; E=..[F, B, C, D]
1062 ).
1063generate_remove_clause(A, B, C) :-
1064 ( is_used_auxiliary_predicate(remove_constraint_internal, A)
1065 -> B=[D|C],
1066 D=(E:-F),
1067 remove_constraint_atom(A, G, H, I, E),
1068 generate_remove_body(A,
1069 G,
1070 H,
1071 I=no,
1072 I=yes,
1073 active,
1074 F)
1075 ; B=C
1076 ).
1077generate_remove_body(A, B, C, D, E, F, G) :-
1078 ( chr_pp_flag(debugable, off),
1079 ( only_ground_indexed_arguments(A)
1080 ; get_store_type(A, var_assoc_store(_, _))
1081 )
1082 -> ( F==active
1083 -> get_update_suspension_field(A,
1084 B,
1085 state,
1086 H,
1087 removed,
1088 I,
1089 J,
1090 K),
1091 if_used_state(A, not_stored_yet, J, true, L),
1092 if_used_state(A,
1093 not_stored_yet,
1094 (H==not_stored_yet->D;E),
1095 E,
1096 M)
1097 ; F==partner
1098 -> get_update_suspension_field(A,
1099 B,
1100 state,
1101 H,
1102 removed,
1103 I,
1104 _,
1105 K),
1106 L=true,
1107 M=E
1108 ),
1109 G=(I, L, K, M)
1110 ; static_suspension_term(A, N),
1111 get_static_suspension_term_field(arguments, A, N, O),
1112 generate_indexed_variables_body(A, O, P, C),
1113 ( chr_pp_flag(debugable, on)
1114 -> A=Q/_,
1115 get_static_suspension_term_field(functor,
1116 A,
1117 N,
1118 Q)
1119 ; true
1120 ),
1121 ( F==active
1122 -> get_update_static_suspension_field(A,
1123 B,
1124 N,
1125 state,
1126 H,
1127 removed,
1128 J,
1129 K),
1130 if_used_state(A, not_stored_yet, J, true, L),
1131 if_used_state(A,
1132 not_stored_yet,
1133 (H==not_stored_yet->C=[], D;P, E),
1134 (P, E),
1135 M)
1136 ; F==partner
1137 -> get_update_static_suspension_field(A,
1138 B,
1139 N,
1140 state,
1141 H,
1142 removed,
1143 _,
1144 K),
1145 L=true,
1146 M=(P, E)
1147 ),
1148 G=(B=N, L, K, M)
1149 ).
1150generate_activate_clauses([], A, A).
1151generate_activate_clauses([A|B], C, D) :-
1152 generate_activate_clause(A, C, E),
1153 generate_activate_clauses(B, E, D).
1154activate_constraint_goal(A, B, C, D, E, F) :-
1155 ( chr_pp_flag(inline_insertremove, off)
1156 -> use_auxiliary_predicate(activate_constraint, A),
1157 F=(G, (H==yes->B;true)),
1158 activate_constraint_atom(A,
1159 H,
1160 C,
1161 D,
1162 E,
1163 G)
1164 ; delay_phase_end(validate_store_type_assumptions,
1165 activate_constraint_body(A,
1166 B,
1167 true,
1168 C,
1169 D,
1170 E,
1171 F))
1172 ).
1173activate_constraint_atom(A, B, C, D, E, F) :-
1174 make_name('$activate_constraint_', A, G),
1175 ( chr_pp_flag(debugable, off),
1176 only_ground_indexed_arguments(A)
1177 -> F=..[G, B, D]
1178 ; chr_pp_flag(debugable, off),
1179 may_trigger(A),
1180 get_store_type(A, var_assoc_store(_, _))
1181 -> F=..[G, B, D, E]
1182 ; chr_pp_flag(debugable, off),
1183 may_trigger(A),
1184 get_store_type(A, var_assoc_store(_, _))
1185 -> F=..[G, B, C, D, E]
1186 ; F=..[G, B, C, D]
1187 ).
1188generate_activate_clause(A, B, C) :-
1189 ( is_used_auxiliary_predicate(activate_constraint, A)
1190 -> B=[D|C],
1191 D=(E:-F),
1192 activate_constraint_atom(A,
1193 G,
1194 H,
1195 I,
1196 J,
1197 E),
1198 activate_constraint_body(A,
1199 G=yes,
1200 G=no,
1201 H,
1202 I,
1203 J,
1204 F)
1205 ; B=C
1206 ).
1207activate_constraint_body(A, B, C, D, E, F, G) :-
1208 ( chr_pp_flag(debugable, off),
1209 may_trigger(A),
1210 uses_field(A, generation)
1211 -> get_update_suspension_field(A,
1212 E,
1213 generation,
1214 H,
1215 F,
1216 I,
1217 J,
1218 K),
1219 L=(I, J, F is H+1, K)
1220 ; L=true
1221 ),
1222 get_update_suspension_field(A,
1223 E,
1224 state,
1225 M,
1226 active,
1227 N,
1228 O,
1229 P),
1230 if_used_state(A, not_stored_yet, O, true, Q),
1231 ( chr_pp_flag(debugable, off),
1232 ( only_ground_indexed_arguments(A)
1233 ; get_store_type(A, var_assoc_store(_, _))
1234 )
1235 -> if_used_state(A,
1236 not_stored_yet,
1237 (M==not_stored_yet->B;C),
1238 C,
1239 R)
1240 ; get_dynamic_suspension_term_field(arguments,
1241 A,
1242 E,
1243 S,
1244 T),
1245 generate_indexed_variables_body(A, S, U, D),
1246 chr_none_locked(D, V),
1247 if_used_state(A,
1248 not_stored_yet,
1249 (M==not_stored_yet->T, U, V, B;C),
1250 C,
1251 R)
1252 ),
1253 G=(N, Q, P, L, R).
1254generate_allocate_clauses([], A, A).
1255generate_allocate_clauses([A|B], C, D) :-
1256 generate_allocate_clause(A, C, E),
1257 generate_allocate_clauses(B, E, D).
1258allocate_constraint_goal(A, B, C, D) :-
1259 uses_state(A, not_stored_yet),
1260 ( chr_pp_flag(inline_insertremove, off)
1261 -> use_auxiliary_predicate(allocate_constraint, A),
1262 allocate_constraint_atom(A, B, C, D)
1263 ; D=(B=E, F),
1264 delay_phase_end(validate_store_type_assumptions,
1265 allocate_constraint_body(A,
1266 E,
1267 C,
1268 F))
1269 ).
1270allocate_constraint_atom(A, B, C, D) :-
1271 make_name('$allocate_constraint_', A, E),
1272 D=..[E, B|C].
1273generate_allocate_clause(A, B, C) :-
1274 ( is_used_auxiliary_predicate(allocate_constraint, A)
1275 -> B=[D|C],
1276 D=(E:-F),
1277 A=_/G,
1278 length(H, G),
1279 allocate_constraint_atom(A, I, H, E),
1280 allocate_constraint_body(A, I, H, F)
1281 ; B=C
1282 ).
1283allocate_constraint_body(A, B, C, D) :-
1284 static_suspension_term(A, E),
1285 get_static_suspension_term_field(arguments, A, E, C),
1286 ( chr_pp_flag(debugable, on)
1287 -> A=F/_,
1288 get_static_suspension_term_field(functor, A, E, F)
1289 ; true
1290 ),
1291 ( chr_pp_flag(debugable, on)
1292 -> ( may_trigger(A)
1293 -> append(C, [B], G),
1294 build_head(_, _, [0], G, H),
1295 get_target_module(I),
1296 J=I:H
1297 ; J=true
1298 ),
1299 K=(B=E),
1300 create_static_suspension_field(A,
1301 E,
1302 continuation,
1303 J,
1304 L),
1305 create_static_suspension_field(A, E, generation, 0, M)
1306 ; may_trigger(A),
1307 uses_field(A, generation)
1308 -> create_static_suspension_field(A, E, generation, 0, M),
1309 B=E,
1310 K=true,
1311 L=true
1312 ; M=true,
1313 B=E,
1314 K=true,
1315 L=true
1316 ),
1317 ( uses_history(A)
1318 -> create_static_suspension_field(A, E, history, t, N)
1319 ; N=true
1320 ),
1321 create_static_suspension_field(A,
1322 E,
1323 state,
1324 not_stored_yet,
1325 O),
1326 ( has_suspension_field(A, id)
1327 -> get_static_suspension_term_field(id, A, E, P),
1328 gen_id(P, Q)
1329 ; Q=true
1330 ),
1331 D=(K, L, M, N, O, Q).
1332gen_id(A, 'chr gen_id'(A)).
1333generate_insert_constraint_internal_clauses([], A, A).
1334generate_insert_constraint_internal_clauses([A|B], C, D) :-
1335 generate_insert_constraint_internal_clause(A, C, E),
1336 generate_insert_constraint_internal_clauses(B, E, D).
1337insert_constraint_internal_constraint_goal(A, B, C, D, E, F) :-
1338 ( chr_pp_flag(inline_insertremove, off)
1339 -> use_auxiliary_predicate(remove_constraint_internal, A),
1340 insert_constraint_internal_constraint_atom(A,
1341 B,
1342 C,
1343 D,
1344 E,
1345 F)
1346 ; delay_phase_end(validate_store_type_assumptions,
1347 generate_insert_constraint_internal_body(A,
1348 C,
1349 D,
1350 E,
1351 B,
1352 F))
1353 ).
1354insert_constraint_internal_constraint_atom(A, B, C, D, E, F) :-
1355 insert_constraint_internal_constraint_name(A, G),
1356 ( chr_pp_flag(debugable, on)
1357 -> F=..[G, B, C, D|E]
1358 ; ( only_ground_indexed_arguments(A)
1359 ; get_store_type(A, var_assoc_store(_, _))
1360 )
1361 -> F=..[G, C|E]
1362 ; F=..[G, B, C|E]
1363 ).
1364insert_constraint_internal_constraint_name(A, B) :-
1365 make_name('$insert_constraint_internal_', A, B).
1366generate_insert_constraint_internal_clause(A, B, C) :-
1367 ( is_used_auxiliary_predicate(insert_constraint_internal, A)
1368 -> B=[D|C],
1369 D=(E:-F),
1370 A=_/G,
1371 length(H, G),
1372 insert_constraint_internal_constraint_atom(A,
1373 I,
1374 J,
1375 K,
1376 H,
1377 E),
1378 generate_insert_constraint_internal_body(A,
1379 J,
1380 K,
1381 H,
1382 I,
1383 F)
1384 ; B=C
1385 ).
1386generate_insert_constraint_internal_body(A, B, C, D, E, F) :-
1387 static_suspension_term(A, G),
1388 create_static_suspension_field(A, G, state, active, H),
1389 ( chr_pp_flag(debugable, on)
1390 -> get_static_suspension_term_field(continuation, A, G, C),
1391 create_static_suspension_field(A, G, generation, 0, I)
1392 ; may_trigger(A),
1393 uses_field(A, generation)
1394 -> create_static_suspension_field(A, G, generation, 0, I)
1395 ; I=true
1396 ),
1397 ( chr_pp_flag(debugable, on)
1398 -> A=J/_,
1399 get_static_suspension_term_field(functor, A, G, J)
1400 ; true
1401 ),
1402 ( uses_history(A)
1403 -> create_static_suspension_field(A, G, history, t, K)
1404 ; K=true
1405 ),
1406 get_static_suspension_term_field(arguments, A, G, D),
1407 _=[_|_],
1408 ( chr_pp_flag(debugable, off),
1409 ( only_ground_indexed_arguments(A)
1410 ; get_store_type(A, var_assoc_store(_, _))
1411 )
1412 -> suspension_term_base_fields(A, _),
1413 ( has_suspension_field(A, id)
1414 -> get_static_suspension_term_field(id, A, G, L),
1415 gen_id(L, M)
1416 ; M=true
1417 ),
1418 F=(B=G, H, I, K, M)
1419 ; ( has_suspension_field(A, id)
1420 -> get_static_suspension_term_field(id, A, G, L),
1421 gen_id(L, M)
1422 ; M=true
1423 ),
1424 generate_indexed_variables_body(A, D, N, E),
1425 chr_none_locked(E, O),
1426 F=(B=G, N, O, H, I, K, M)
1427 ).
1428generate_novel_production(A, B) :-
1429 ( is_used_auxiliary_predicate(novel_production)
1430 -> A=[C|B],
1431 C=('$novel_production'(D, E):-arg(3, D, F), (hprolog:get_ds(E, F, _)->fail;true))
1432 ; A=B
1433 ).
1434generate_extend_history(A, B) :-
1435 ( is_used_auxiliary_predicate(extend_history)
1436 -> A=[C|B],
1437 C=('$extend_history'(D, E):-arg(3, D, F), hprolog:put_ds(E, F, x, G), setarg(3, D, G))
1438 ; A=B
1439 ).
1440generate_empty_named_history_initialisations(A, B) :-
1441 empty_named_history_initialisations(A, B),
1442 find_empty_named_histories.
1443empty_named_history_global_variable(A, B) :-
1444 atom_concat('chr empty named history ', A, B).
1445empty_named_history_novel_production(A, nb_getval(B, 0)) :-
1446 empty_named_history_global_variable(A, B).
1447empty_named_history_extend_history(A, b_setval(B, 1)) :-
1448 empty_named_history_global_variable(A, B).
1449generate_run_suspensions_clauses([], A, A).
1450generate_run_suspensions_clauses([A|B], C, D) :-
1451 generate_run_suspensions_clause(A, C, E),
1452 generate_run_suspensions_clauses(B, E, D).
1453run_suspensions_goal(A, B, C) :-
1454 make_name('$run_suspensions_', A, D),
1455 C=..[D, B].
1456generate_run_suspensions_clause(A, B, C) :-
1457 ( is_used_auxiliary_predicate(run_suspensions, A)
1458 -> B=[D, E|C],
1459 run_suspensions_goal(A, [], D),
1460 ( chr_pp_flag(debugable, on)
1461 -> run_suspensions_goal(A, [F|G], H),
1462 get_update_suspension_field(A,
1463 F,
1464 state,
1465 I,
1466 triggered,
1467 J,
1468 K,
1469 L),
1470 get_update_suspension_field(A,
1471 F,
1472 state,
1473 M,
1474 active,
1475 N,
1476 O,
1477 P),
1478 get_update_suspension_field(A,
1479 F,
1480 generation,
1481 Q,
1482 R,
1483 S,
1484 T,
1485 U),
1486 get_dynamic_suspension_term_field(continuation,
1487 A,
1488 F,
1489 V,
1490 W),
1491 run_suspensions_goal(A, G, X),
1492 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)
1493 ; run_suspensions_goal(A, [F|G], H),
1494 static_suspension_term(A, Y),
1495 get_static_suspension_term_field(arguments,
1496 A,
1497 Y,
1498 Z),
1499 append(Z, [F], A1),
1500 make_suspension_continuation_goal(A, A1, V),
1501 run_suspensions_goal(A, G, X),
1502 ( uses_field(A, generation)
1503 -> get_update_static_suspension_field(A,
1504 F,
1505 Y,
1506 generation,
1507 Q,
1508 R,
1509 S,
1510 U),
1511 B1=(S, R is Q+1, U)
1512 ; B1=true
1513 ),
1514 get_update_static_suspension_field(A,
1515 F,
1516 Y,
1517 state,
1518 I,
1519 triggered,
1520 J,
1521 L),
1522 get_update_static_suspension_field(A,
1523 F,
1524 Y,
1525 state,
1526 M,
1527 active,
1528 C1,
1529 D1),
1530 if_used_state(A,
1531 removed,
1532 (J, (I==active->E1;true)),
1533 E1,
1534 F1),
1535 E1=(L, B1, V, C1, (M==triggered->D1;true)),
1536 E=(H:-F=Y, F1, X)
1537 )
1538 ; B=C
1539 ).
1540generate_attach_increment(A) :-
1541 get_max_constraint_index(B),
1542 ( is_used_auxiliary_predicate(attach_increment),
1543 B>0
1544 -> A=[C, D],
1545 generate_attach_increment_empty(C),
1546 ( B==1
1547 -> generate_attach_increment_one(D)
1548 ; generate_attach_increment_many(B, D)
1549 )
1550 ; A=[]
1551 ).
1552generate_attach_increment_empty((attach_increment([], _):-true)).
1553generate_attach_increment_one(A) :-
1554 B=attach_increment([C|D], E),
1555 get_target_module(F),
1556 chr_not_locked(C, G),
1557 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)),
1558 A=(B:-H).
1559generate_attach_increment_many(A, B) :-
1560 C=attach_increment([D|E], F),
1561 merge_attributes(A, F, G, H, I),
1562 get_target_module(J),
1563 chr_not_locked(D, K),
1564 L=(K, (get_attr(D, J, G)->H, put_attr(D, J, I);put_attr(D, J, F)), attach_increment(E, F)),
1565 B=(C:-L).
1566generate_attr_unify_hook(A) :-
1567 get_max_constraint_index(B),
1568 ( B==0
1569 -> A=[]
1570 ; A=[C|D],
1571 C=attribute_goals(_, E, E),
1572 ( B==1
1573 -> generate_attr_unify_hook_one(D)
1574 ; generate_attr_unify_hook_many(B, D)
1575 )
1576 ).
1577generate_attr_unify_hook_one([A]) :-
1578 B=attr_unify_hook(C, D),
1579 get_target_module(E),
1580 get_indexed_constraint(1, F),
1581 ( get_store_type(F, G),
1582 ( G=default
1583 ; G=multi_store(H),
1584 memberchk(default, H)
1585 )
1586 -> make_run_suspensions(I, J, K),
1587 make_run_suspensions(J, J, L),
1588 ( atomic_types_suspended_constraint(F)
1589 -> M=true,
1590 J=C,
1591 N=true,
1592 O=P,
1593 Q=(append(C, P, R), sort(R, I)),
1594 S=true
1595 ; M=sort(C, J),
1596 N=sort(P, O),
1597 Q='chr merge_attributes'(J, O, I),
1598 use_auxiliary_predicate(attach_increment),
1599 S=(compound(D)->term_variables(D, T), attach_increment(T, J);true)
1600 ),
1601 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)),
1602 A=(B:-U)
1603 ; get_store_type(F, var_assoc_store(_, _))
1604 -> make_run_suspensions(R, R, K),
1605 Q=merge_into_assoc_store(C, P, R),
1606 U=(get_attr(D, E, P)->Q, K;put_attr(D, E, C)),
1607 A=(B:-U)
1608 ).
1609generate_attr_unify_hook_many(A, [B]) :-
1610 chr_pp_flag(dynattr, off),
1611 !,
1612 C=attr_unify_hook(D, E),
1613 get_target_module(F),
1614 make_attr(A, G, H, D),
1615 bagof(I,
1616 J^K^(member(J, H), I=sort(J, K)),
1617 L),
1618 list2conj(L, M),
1619 bagof(K, J^member(sort(J, K), L), N),
1620 merge_attributes2(A, G, N, O, P, Q),
1621 get_all_suspensions2(A, Q, R),
1622 make_attr(A, G, N, S),
1623 make_run_suspensions_loop(R, N, T),
1624 make_run_suspensions_loop(N, N, U),
1625 ( forall(( between(1, A, V),
1626 get_indexed_constraint(V, W)
1627 ),
1628 atomic_types_suspended_constraint(W))
1629 -> X=true
1630 ; use_auxiliary_predicate(attach_increment),
1631 X=(compound(E)->term_variables(E, Y), attach_increment(Y, S);true)
1632 ),
1633 Z=(M, (var(E)->(get_attr(E, F, O)->P, put_attr(E, F, Q), T;put_attr(E, F, S), U);X, U)),
1634 B=(C:-Z).
1635generate_attr_unify_hook_many(A, B) :-
1636 C=attr_unify_hook(D, E),
1637 get_target_module(F),
1638 normalize_attr(D, G, H),
1639 normalize_attr(I, J, K),
1640 merge_attributes(A, H, K, L, M),
1641 make_run_suspensions(A),
1642 ( forall(( between(1, A, N),
1643 get_indexed_constraint(N, O)
1644 ),
1645 atomic_types_suspended_constraint(O))
1646 -> P=true
1647 ; use_auxiliary_predicate(attach_increment),
1648 P=(compound(E)->term_variables(E, Q), attach_increment(Q, H);true)
1649 ),
1650 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))),
1651 S=(C:-R),
1652 B=[S, T, U|V],
1653 T='$dispatch_run_suspensions'([]),
1654 U=('$dispatch_run_suspensions'([W-X|Y]):-'$dispatch_run_suspensions'(W, X), '$dispatch_run_suspensions'(Y)),
1655 run_suspensions_dispatchers(A, [], V).
1656run_suspensions_dispatchers(A, B, C) :-
1657 ( A>0
1658 -> get_indexed_constraint(A, D),
1659 E=[('$dispatch_run_suspensions'(A, F):-G)|B],
1660 ( may_trigger(D)
1661 -> run_suspensions_goal(D, F, G)
1662 ; G=true
1663 ),
1664 H is A-1,
1665 run_suspensions_dispatchers(H, E, C)
1666 ; C=B
1667 ).
1668make_run_suspensions(A) :-
1669 ( A>0
1670 -> ( get_indexed_constraint(A, B),
1671 may_trigger(B)
1672 -> use_auxiliary_predicate(run_suspensions, B)
1673 ; true
1674 ),
1675 C is A-1,
1676 make_run_suspensions(C)
1677 ; true
1678 ).
1679make_run_suspensions(A, B, C) :-
1680 make_run_suspensions(1, A, B, C).
1681make_run_suspensions(A, B, C, D) :-
1682 ( get_indexed_constraint(A, E),
1683 may_trigger(E)
1684 -> use_auxiliary_predicate(run_suspensions, E),
1685 ( wakes_partially(E)
1686 -> run_suspensions_goal(E, C, D)
1687 ; run_suspensions_goal(E, B, D)
1688 )
1689 ; D=true
1690 ).
1691make_run_suspensions_loop(A, B, C) :-
1692 make_run_suspensions_loop(A, B, 1, C).
1693make_run_suspensions_loop([], [], _, true).
1694make_run_suspensions_loop([A|B], [C|D], E, (F, G)) :-
1695 make_run_suspensions(E, A, C, F),
1696 H is E+1,
1697 make_run_suspensions_loop(B, D, H, G).
1698generate_insert_delete_constraints([], []).
1699generate_insert_delete_constraints([A|B], C) :-
1700 ( is_stored(A)
1701 -> generate_insert_delete_constraint(A, C, D)
1702 ; C=D
1703 ),
1704 generate_insert_delete_constraints(B, D).
1705generate_insert_delete_constraint(A, B, C) :-
1706 insert_constraint_clause(A, B, D),
1707 delete_constraint_clause(A, D, C).
1708insert_constraint_goal(A, B, C, D) :-
1709 ( chr_pp_flag(inline_insertremove, off)
1710 -> use_auxiliary_predicate(insert_in_store, A),
1711 insert_constraint_atom(A, B, D)
1712 ; delay_phase_end(validate_store_type_assumptions,
1713 (insert_constraint_body(A, B, E, D), insert_constraint_direct_used_vars(E, C)))
1714 ).
1715insert_constraint_direct_used_vars([], _).
1716insert_constraint_direct_used_vars([A-B|C], D) :-
1717 nth1(A, D, B),
1718 insert_constraint_direct_used_vars(C, D).
1719insert_constraint_atom(A, B, C) :-
1720 make_name('$insert_in_store_', A, D),
1721 C=..[D, B].
1722insert_constraint_clause(A, B, C) :-
1723 ( is_used_auxiliary_predicate(insert_in_store, A)
1724 -> B=[D|C],
1725 D=(E:-F, G, H),
1726 insert_constraint_atom(A, I, E),
1727 insert_constraint_body(A, I, J, H),
1728 insert_constraint_used_vars(J, A, I, G),
1729 ( chr_pp_flag(store_counter, on)
1730 -> F='$insert_counter_inc'
1731 ; F=true
1732 )
1733 ; B=C
1734 ).
1735insert_constraint_used_vars([], _, _, true).
1736insert_constraint_used_vars([A-B|C], D, E, (F, G)) :-
1737 get_dynamic_suspension_term_field(argument(A),
1738 D,
1739 E,
1740 B,
1741 F),
1742 insert_constraint_used_vars(C, D, E, G).
1743insert_constraint_body(A, B, C, D) :-
1744 get_store_type(A, E),
1745 insert_constraint_body(E, A, B, C, D).
1746insert_constraint_body(default, A, B, [], C) :-
1747 global_list_store_name(A, D),
1748 make_get_store_goal(D, E, F),
1749 make_update_store_goal(D, G, H),
1750 ( chr_pp_flag(debugable, on)
1751 -> G=[B|E],
1752 C=(F, H)
1753 ; set_dynamic_suspension_term_field(global_list_prev,
1754 A,
1755 I,
1756 G,
1757 J),
1758 C=(F, G=[B|E], H, (E=[I|_]->J;true))
1759 ).
1760insert_constraint_body(multi_inthash(A), B, C, [], D) :-
1761 generate_multi_inthash_insert_constraint_bodies(A,
1762 B,
1763 C,
1764 D).
1765insert_constraint_body(multi_hash(A), B, C, D, E) :-
1766 generate_multi_hash_insert_constraint_bodies(A,
1767 B,
1768 C,
1769 E,
1770 D),
1771 sort_out_used_vars(D, _).
1772insert_constraint_body(atomic_constants(A, _, _), B, C, D, E) :-
1773 multi_hash_key_direct(B, A, C, F, D),
1774 constants_store_index_name(B, A, G),
1775 H=..[G, F, I],
1776 E=(H->nb_getval(I, J), b_setval(I, [C|J]);true).
1777insert_constraint_body(ground_constants(A, _, _), B, C, D, E) :-
1778 multi_hash_key_direct(B, A, C, F, D),
1779 constants_store_index_name(B, A, G),
1780 H=..[G, F, I],
1781 E=(H->nb_getval(I, J), b_setval(I, [C|J]);true).
1782insert_constraint_body(global_ground, A, B, [], C) :-
1783 global_ground_store_name(A, D),
1784 make_get_store_goal(D, E, F),
1785 make_update_store_goal(D, G, H),
1786 ( chr_pp_flag(debugable, on)
1787 -> G=[B|E],
1788 C=(F, H)
1789 ; set_dynamic_suspension_term_field(global_list_prev,
1790 A,
1791 I,
1792 G,
1793 J),
1794 C=(F, G=[B|E], H, (E=[I|_]->J;true))
1795 ).
1796insert_constraint_body(var_assoc_store(A, B), _, C, [A-D, B-E], F) :-
1797 get_target_module(G),
1798 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)).
1799insert_constraint_body(global_singleton, A, B, [], C) :-
1800 global_singleton_store_name(A, D),
1801 make_update_store_goal(D, B, E),
1802 C=E.
1803insert_constraint_body(multi_store(A), B, C, D, E) :-
1804 maplist(insert_constraint_body1(B, C), A, F, G),
1805 list2conj(G, E),
1806 sort_out_used_vars(F, D).
1807insert_constraint_body1(A, B, C, D, E) :-
1808 insert_constraint_body(C, A, B, D, E).
1809insert_constraint_body(identifier_store(A), B, C, D, E) :-
1810 D=[A-F],
1811 get_identifier_size(G),
1812 functor(H, struct, G),
1813 get_identifier_index(B, A, I),
1814 arg(I, H, J),
1815 E=(F=H, setarg(I, F, [C|J])).
1816insert_constraint_body(type_indexed_identifier_store(A, B), C, D, E, F) :-
1817 E=[A-G],
1818 type_indexed_identifier_structure(B, H),
1819 get_type_indexed_identifier_index(B, C, A, I),
1820 arg(I, H, J),
1821 F=(G=H, setarg(I, G, [D|J])).
1822sort_out_used_vars(A, B) :-
1823 flatten(A, C),
1824 sort(C, D),
1825 sort_out_used_vars1(D, B).
1826sort_out_used_vars1([], []).
1827sort_out_used_vars1([A-B], C) :-
1828 !,
1829 C=[A-B].
1830sort_out_used_vars1([A-B, C-D|E], F) :-
1831 ( A==C
1832 -> B=D,
1833 sort_out_used_vars1([A-B|E], F)
1834 ; F=[A-B|G],
1835 sort_out_used_vars1([C-D|E], G)
1836 ).
1837generate_multi_inthash_insert_constraint_bodies([], _, _, true).
1838generate_multi_inthash_insert_constraint_bodies([A|B], C, D, (E, F)) :-
1839 multi_hash_store_name(C, A, G),
1840 multi_hash_key(C, A, D, H, I),
1841 E=(H, nb_getval(G, J), insert_iht(J, I, D)),
1842 generate_multi_inthash_insert_constraint_bodies(B,
1843 C,
1844 D,
1845 F).
1846generate_multi_hash_insert_constraint_bodies([], _, _, true, []).
1847generate_multi_hash_insert_constraint_bodies([A|B], C, D, (E, F), [G|H]) :-
1848 multi_hash_store_name(C, A, I),
1849 multi_hash_key_direct(C, A, D, J, G),
1850 make_get_store_goal(I, K, L),
1851 ( chr_pp_flag(ht_removal, on)
1852 -> ht_prev_field(A, M),
1853 set_dynamic_suspension_term_field(M,
1854 C,
1855 N,
1856 O,
1857 P),
1858 E=(L, insert_ht(K, J, D, O), (O=[_, N|_]->P;true))
1859 ; E=(L, insert_ht(K, J, D))
1860 ),
1861 generate_multi_hash_insert_constraint_bodies(B,
1862 C,
1863 D,
1864 F,
1865 H).
1866delete_constraint_clause(A, B, C) :-
1867 ( is_used_auxiliary_predicate(delete_from_store, A)
1868 -> B=[D|C],
1869 D=(E:-F),
1870 delete_constraint_atom(A, G, E),
1871 A=H/I,
1872 functor(E, H, I),
1873 delete_constraint_body(A, E, G, [], F)
1874 ; B=C
1875 ).
1876delete_constraint_goal(A, B, C, D) :-
1877 functor(A, E, F),
1878 G=E/F,
1879 ( chr_pp_flag(inline_insertremove, off)
1880 -> use_auxiliary_predicate(delete_from_store, G),
1881 delete_constraint_atom(G, B, D)
1882 ; delay_phase_end(validate_store_type_assumptions,
1883 delete_constraint_body(G,
1884 A,
1885 B,
1886 C,
1887 D))
1888 ).
1889delete_constraint_atom(A, B, C) :-
1890 make_name('$delete_from_store_', A, D),
1891 C=..[D, B].
1892delete_constraint_body(A, B, C, D, E) :-
1893 E=(F, G),
1894 ( chr_pp_flag(store_counter, on)
1895 -> F='$delete_counter_inc'
1896 ; F=true
1897 ),
1898 get_store_type(A, H),
1899 delete_constraint_body(H, A, B, C, D, G).
1900delete_constraint_body(default, A, _, B, _, C) :-
1901 ( chr_pp_flag(debugable, on)
1902 -> global_list_store_name(A, D),
1903 make_get_store_goal(D, E, F),
1904 make_update_store_goal(D, G, H),
1905 C=(F, 'chr sbag_del_element'(E, B, G), H)
1906 ; get_dynamic_suspension_term_field(global_list_prev,
1907 A,
1908 B,
1909 I,
1910 J),
1911 global_list_store_name(A, D),
1912 make_get_store_goal(D, E, F),
1913 make_update_store_goal(D, K, H),
1914 set_dynamic_suspension_term_field(global_list_prev,
1915 A,
1916 L,
1917 _,
1918 M),
1919 set_dynamic_suspension_term_field(global_list_prev,
1920 A,
1921 L,
1922 I,
1923 N),
1924 C=(J, (var(I)->F, E=[_|K], H, (K=[L|_]->M;true);I=[_, _|K], setarg(2, I, K), (K=[L|_]->N;true)))
1925 ).
1926delete_constraint_body(multi_inthash(A), B, _, C, _, D) :-
1927 generate_multi_inthash_delete_constraint_bodies(A,
1928 B,
1929 C,
1930 D).
1931delete_constraint_body(multi_hash(A), B, C, D, E, F) :-
1932 generate_multi_hash_delete_constraint_bodies(A,
1933 B,
1934 C,
1935 D,
1936 E,
1937 F).
1938delete_constraint_body(atomic_constants(A, _, _), B, C, D, E, F) :-
1939 multi_hash_key(B, C, A, D, E, G, H),
1940 constants_store_index_name(B, A, I),
1941 J=..[I, H, K],
1942 F=(G, (J->nb_getval(K, L), 'chr sbag_del_element'(L, D, M), b_setval(K, M);true)).
1943delete_constraint_body(ground_constants(A, _, _), B, C, D, E, F) :-
1944 multi_hash_key(B, C, A, D, E, G, H),
1945 constants_store_index_name(B, A, I),
1946 J=..[I, H, K],
1947 F=(G, (J->nb_getval(K, L), 'chr sbag_del_element'(L, D, M), b_setval(K, M);true)).
1948delete_constraint_body(global_ground, A, _, B, _, C) :-
1949 ( chr_pp_flag(debugable, on)
1950 -> global_ground_store_name(A, D),
1951 make_get_store_goal(D, E, F),
1952 make_update_store_goal(D, G, H),
1953 C=(F, 'chr sbag_del_element'(E, B, G), H)
1954 ; get_dynamic_suspension_term_field(global_list_prev,
1955 A,
1956 B,
1957 I,
1958 J),
1959 global_ground_store_name(A, D),
1960 make_get_store_goal(D, E, F),
1961 make_update_store_goal(D, K, H),
1962 set_dynamic_suspension_term_field(global_list_prev,
1963 A,
1964 L,
1965 _,
1966 M),
1967 set_dynamic_suspension_term_field(global_list_prev,
1968 A,
1969 L,
1970 I,
1971 N),
1972 C=(J, (var(I)->F, E=[_|K], H, (K=[L|_]->M;true);I=[_, _|K], setarg(2, I, K), (K=[L|_]->N;true)))
1973 ).
1974delete_constraint_body(var_assoc_store(A, B), C, _, D, _, E) :-
1975 get_target_module(F),
1976 get_dynamic_suspension_term_field(argument(A),
1977 C,
1978 D,
1979 G,
1980 H),
1981 get_dynamic_suspension_term_field(argument(B),
1982 C,
1983 D,
1984 I,
1985 J),
1986 E=(H, get_attr(G, F, K), J, delete_assoc_store(K, I, D)).
1987delete_constraint_body(global_singleton, A, _, _, _, B) :-
1988 global_singleton_store_name(A, C),
1989 make_update_store_goal(C, [], D),
1990 B=D.
1991delete_constraint_body(multi_store(A), B, C, D, E, F) :-
1992 maplist(delete_constraint_body1(B, C, D, E),
1993 A,
1994 G),
1995 list2conj(G, F).
1996delete_constraint_body1(A, B, C, D, E, F) :-
1997 delete_constraint_body(E, A, B, C, D, F).
1998delete_constraint_body(identifier_store(A), B, C, D, E, F) :-
1999 get_suspension_argument_possibly_in_scope(C,
2000 E,
2001 D,
2002 A,
2003 G,
2004 H),
2005 get_identifier_size(I),
2006 functor(J, struct, I),
2007 get_identifier_index(B, A, K),
2008 arg(K, J, L),
2009 F=(H, G=J, 'chr sbag_del_element'(L, D, M), setarg(K, G, M)).
2010delete_constraint_body(type_indexed_identifier_store(A, B), C, D, E, F, G) :-
2011 get_suspension_argument_possibly_in_scope(D,
2012 F,
2013 E,
2014 A,
2015 H,
2016 I),
2017 type_indexed_identifier_structure(B, J),
2018 get_type_indexed_identifier_index(B, C, A, K),
2019 arg(K, J, L),
2020 G=(I, H=J, 'chr sbag_del_element'(L, E, M), setarg(K, H, M)).
2021generate_multi_inthash_delete_constraint_bodies([], _, _, true).
2022generate_multi_inthash_delete_constraint_bodies([A|B], C, D, (E, F)) :-
2023 multi_hash_store_name(C, A, G),
2024 multi_hash_key(C, A, D, H, I),
2025 E=(H, nb_getval(G, J), delete_iht(J, I, D)),
2026 generate_multi_inthash_delete_constraint_bodies(B,
2027 C,
2028 D,
2029 F).
2030generate_multi_hash_delete_constraint_bodies([], _, _, _, _, true).
2031generate_multi_hash_delete_constraint_bodies([A|B], C, D, E, F, (G, H)) :-
2032 multi_hash_store_name(C, A, I),
2033 multi_hash_key(C, D, A, E, F, J, K),
2034 make_get_store_goal(I, L, M),
2035 ( chr_pp_flag(ht_removal, on)
2036 -> ht_prev_field(A, N),
2037 get_dynamic_suspension_term_field(N,
2038 C,
2039 E,
2040 O,
2041 P),
2042 set_dynamic_suspension_term_field(N,
2043 C,
2044 Q,
2045 _,
2046 R),
2047 set_dynamic_suspension_term_field(N,
2048 C,
2049 Q,
2050 O,
2051 S),
2052 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)))
2053 ; G=(J, M, delete_ht(L, K, E))
2054 ),
2055 generate_multi_hash_delete_constraint_bodies(B,
2056 _,
2057 D,
2058 E,
2059 F,
2060 H).
2061generate_attach_code(A, B) :-
2062 enumerate_stores_code(A, C),
2063 append(C, D, B),
2064 generate_attach_code(A, D, E),
2065 module_initializers(F),
2066 prolog_global_variables_code(G),
2067 E=[('$chr_initialization':-F), (:-initialization'$chr_initialization')|G].
2068generate_attach_code([], A, A).
2069generate_attach_code([A|B], C, D) :-
2070 get_store_type(A, E),
2071 generate_attach_code(E, A, C, F),
2072 generate_attach_code(B, F, D).
2073generate_attach_code(default, A, B, C) :-
2074 global_list_store_initialisation(A, B, C).
2075generate_attach_code(multi_inthash(A), B, C, D) :-
2076 multi_inthash_store_initialisations(A, B, C, E),
2077 multi_inthash_via_lookups(A, B, E, D).
2078generate_attach_code(multi_hash(A), B, C, D) :-
2079 multi_hash_store_initialisations(A, B, C, E),
2080 multi_hash_lookups(A, B, E, D).
2081generate_attach_code(atomic_constants(A, B, _), C, D, E) :-
2082 constants_initializers(C, A, B),
2083 atomic_constants_code(C, A, B, D, E).
2084generate_attach_code(ground_constants(A, B, _), C, D, E) :-
2085 constants_initializers(C, A, B),
2086 ground_constants_code(C, A, B, D, E).
2087generate_attach_code(global_ground, A, B, C) :-
2088 global_ground_store_initialisation(A, B, C).
2089generate_attach_code(var_assoc_store(_, _), _, A, A) :-
2090 use_auxiliary_module(chr_assoc_store).
2091generate_attach_code(global_singleton, A, B, C) :-
2092 global_singleton_store_initialisation(A, B, C).
2093generate_attach_code(multi_store(A), B, C, D) :-
2094 multi_store_generate_attach_code(A, B, C, D).
2095generate_attach_code(identifier_store(A), B, C, D) :-
2096 get_identifier_index(B, A, E),
2097 ( E==2
2098 -> get_identifier_size(F),
2099 functor(G, struct, F),
2100 G=..[_, H|I],
2101 set_elems(I, []),
2102 J=new_identifier(H, G),
2103 functor(K, struct, F),
2104 arg(1, K, L),
2105 M=(user:portray(K):-write('<id:'), print(L), write(>)),
2106 functor(N, struct, F),
2107 arg(1, N, O),
2108 P=identifier_label(N, O),
2109 C=[J, M, P|D]
2110 ; C=D
2111 ).
2112generate_attach_code(type_indexed_identifier_store(A, B), C, D, E) :-
2113 get_type_indexed_identifier_index(B, C, A, F),
2114 ( F==2
2115 -> identifier_store_initialization(B, D, G),
2116 get_type_indexed_identifier_size(B, _),
2117 type_indexed_identifier_structure(B, H),
2118 H=..[_, I|J],
2119 set_elems(J, []),
2120 type_indexed_identifier_name(B, new_identifier, K),
2121 L=..[K, I, H],
2122 M=..[K, N, O],
2123 type_indexed_identifier_structure(B, P),
2124 P=..[_, N|Q],
2125 set_elems(Q, []),
2126 R=(O=P),
2127 S=user:goal_expansion(M, R),
2128 type_indexed_identifier_structure(B, T),
2129 arg(1, T, U),
2130 V=(user:portray(T):-write('<id:'), print(U), write(>)),
2131 type_indexed_identifier_structure(B, W),
2132 arg(1, W, X),
2133 type_indexed_identifier_name(B, identifier_label, Y),
2134 Z=..[Y, W, X],
2135 A1=..[Y, B1, C1],
2136 type_indexed_identifier_structure(B, D1),
2137 arg(1, D1, C1),
2138 E1=(B1=D1),
2139 F1=(user:goal_expansion(A1, E1):-writeln(expanding)),
2140 identifier_store_name(B, G1),
2141 lookup_identifier_atom(B, H1, I1, J1),
2142 type_indexed_identifier_name(B, new_identifier, K1),
2143 L1=..[K1, H1, I1],
2144 M1=(J1:-nb_getval(G1, N1), (lookup_ht(N1, H1, [I1])->true;L1, insert_ht(N1, H1, I1))),
2145 lookup_only_identifier_atom(B, O1, P1, Q1),
2146 R1=(Q1:-nb_getval(G1, S1), lookup_ht(S1, O1, [P1])),
2147 G=[(:-multifile goal_expansion/2), (:-dynamic goal_expansion/2), L, S, V, Z, F1, M1, R1|E]
2148 ; D=E
2149 ).
2150constants_initializers(A, B, C) :-
2151 maplist(constant_initializer(A, B), C).
2152constant_initializer(A, B, C) :-
2153 constants_store_name(A, B, C, D),
2154 prolog_global_variable(D),
2155 module_initializer(nb_setval(D, [])).
2156lookup_identifier_atom(A, B, C, D) :-
2157 atom_concat(lookup_identifier_, A, E),
2158 D=..[E, B, C].
2159lookup_only_identifier_atom(A, B, C, D) :-
2160 atom_concat(lookup_only_identifier_, A, E),
2161 D=..[E, B, C].
2162identifier_label_atom(A, B, C, D) :-
2163 type_indexed_identifier_name(A, identifier_label, E),
2164 D=..[E, B, C].
2165multi_store_generate_attach_code([], _, A, A).
2166multi_store_generate_attach_code([A|B], C, D, E) :-
2167 generate_attach_code(A, C, D, F),
2168 multi_store_generate_attach_code(B, C, F, E).
2169multi_inthash_store_initialisations([], _, A, A).
2170multi_inthash_store_initialisations([A|B], C, D, E) :-
2171 use_auxiliary_module(chr_integertable_store),
2172 multi_hash_store_name(C, A, F),
2173 module_initializer((new_iht(G), nb_setval(F, G))),
2174 H=D,
2175 multi_inthash_store_initialisations(B, C, H, E).
2176multi_hash_store_initialisations([], _, A, A).
2177multi_hash_store_initialisations([A|B], C, D, E) :-
2178 use_auxiliary_module(chr_hashtable_store),
2179 multi_hash_store_name(C, A, F),
2180 prolog_global_variable(F),
2181 make_init_store_goal(F, G, H),
2182 module_initializer((new_ht(G), H)),
2183 I=D,
2184 multi_hash_store_initialisations(B, C, I, E).
2185global_list_store_initialisation(A, B, C) :-
2186 ( is_stored(A)
2187 -> global_list_store_name(A, D),
2188 prolog_global_variable(D),
2189 make_init_store_goal(D, [], E),
2190 module_initializer(E)
2191 ; true
2192 ),
2193 B=C.
2194global_ground_store_initialisation(A, B, C) :-
2195 global_ground_store_name(A, D),
2196 prolog_global_variable(D),
2197 make_init_store_goal(D, [], E),
2198 module_initializer(E),
2199 B=C.
2200global_singleton_store_initialisation(A, B, C) :-
2201 global_singleton_store_name(A, D),
2202 prolog_global_variable(D),
2203 make_init_store_goal(D, [], E),
2204 module_initializer(E),
2205 B=C.
2206identifier_store_initialization(A, B, C) :-
2207 use_auxiliary_module(chr_hashtable_store),
2208 identifier_store_name(A, D),
2209 prolog_global_variable(D),
2210 make_init_store_goal(D, E, F),
2211 module_initializer((new_ht(E), F)),
2212 B=C.
2213multi_inthash_via_lookups([], _, A, A).
2214multi_inthash_via_lookups([A|B], C, D, E) :-
2215 multi_hash_lookup_head(C, A, F, G, H),
2216 multi_hash_lookup_body(C, inthash, A, F, G, I),
2217 D=[(H:-I)|J],
2218 multi_inthash_via_lookups(B, C, J, E).
2219multi_hash_lookups([], _, A, A).
2220multi_hash_lookups([A|B], C, D, E) :-
2221 multi_hash_lookup_head(C, A, F, G, H),
2222 multi_hash_lookup_body(C, hash, A, F, G, I),
2223 D=[(H:-I)|J],
2224 multi_hash_lookups(B, C, J, E).
2225multi_hash_lookup_head(A, B, C, D, E) :-
2226 multi_hash_lookup_name(A, B, F),
2227 E=..[F, C, D].
2228multi_hash_lookup_body(A, B, C, D, E, F) :-
2229 get_store_type(A, multi_store(G)),
2230 ( memberchk(atomic_constants(C, H, _), G)
2231 -> ( ground(D)
2232 -> constants_store_name(A, C, D, I),
2233 F=nb_getval(I, E)
2234 ; constants_store_index_name(A, C, J),
2235 K=..[J, D, I],
2236 F=(K, nb_getval(I, E))
2237 )
2238 ; memberchk(ground_constants(C, H, _), G)
2239 -> ( ground(D)
2240 -> constants_store_name(A, C, D, I),
2241 F=nb_getval(I, E)
2242 ; constants_store_index_name(A, C, J),
2243 K=..[J, D, I],
2244 F=(K, nb_getval(I, E))
2245 )
2246 ; memberchk(multi_hash([C]), G)
2247 -> multi_hash_store_name(A, C, I),
2248 make_get_store_goal(I, L, M),
2249 ( B==hash,
2250 specialized_hash_term_call(A,
2251 C,
2252 D,
2253 N,
2254 O)
2255 -> F=(M, O, lookup_ht1(L, N, D, E))
2256 ; lookup_hash_call(B, L, D, E, K),
2257 F=(M, K)
2258 )
2259 ; B==inthash
2260 -> multi_hash_store_name(A, C, I),
2261 make_get_store_goal(I, L, M),
2262 lookup_hash_call(B, L, D, E, K),
2263 F=(M, K)
2264 ).
2265lookup_hash_call(hash, A, B, C, lookup_ht(A, B, C)).
2266lookup_hash_call(inthash, A, B, C, lookup_iht(A, B, C)).
2267specialized_hash_term_call(_, _, A, B, C) :-
2268 ( ground(A)
2269 -> term_hash(A, B),
2270 C=true
2271 ).
2272multi_hash_lookup_goal(A, B, C, D, E, F) :-
2273 ( atomic(D)
2274 -> actual_atomic_multi_hash_keys(A, C, [D])
2275 ; ground(D)
2276 -> actual_ground_multi_hash_keys(A, C, [D])
2277 ; C=[G],
2278 get_constraint_arg_type(A, G, H),
2279 is_chr_constants_type(H, _, _)
2280 -> true
2281 ; actual_non_ground_multi_hash_key(A, C)
2282 ),
2283 delay_phase_end(validate_store_type_assumptions,
2284 multi_hash_lookup_body(A,
2285 B,
2286 C,
2287 D,
2288 E,
2289 F)).
2290multi_hash_lookup_name(A/B, C, D) :-
2291 atom_concat_list(C, E),
2292 atom_concat_list(['$via1_multi_hash_', A, '___', B, -, E],
2293 D).
2294multi_hash_store_name(A/B, C, D) :-
2295 get_target_module(E),
2296 atom_concat_list(C, F),
2297 atom_concat_list([ '$chr_store_multi_hash_',
2298 E,
2299 '____',
2300 A,
2301 '___',
2302 B,
2303 -,
2304 F
2305 ],
2306 D).
2307multi_hash_key(A, B, C, D, E) :-
2308 ( B=[F]
2309 -> get_dynamic_suspension_term_field(argument(F),
2310 A,
2311 C,
2312 E,
2313 D)
2314 ; maplist(get_dynamic_suspension_term_field1(A, C),
2315 B,
2316 G,
2317 H),
2318 E=..[k|G],
2319 list2conj(H, D)
2320 ).
2321get_dynamic_suspension_term_field1(A, B, C, D, E) :-
2322 get_dynamic_suspension_term_field(argument(C),
2323 A,
2324 B,
2325 D,
2326 E).
2327multi_hash_key(_, A, B, C, D, E, F) :-
2328 ( B=[G]
2329 -> get_suspension_argument_possibly_in_scope(A,
2330 D,
2331 C,
2332 G,
2333 F,
2334 E)
2335 ; maplist(get_suspension_argument_possibly_in_scope(A,
2336 D,
2337 C),
2338 B,
2339 H,
2340 I),
2341 F=..[k|H],
2342 list2conj(I, E)
2343 ).
2344get_suspension_argument_possibly_in_scope(A, B, C, D, E, F) :-
2345 arg(D, A, G),
2346 ( ground(G),
2347 G='$chr_identifier_match'(H, I)
2348 -> functor(A, J, K),
2349 lookup_identifier_atom(I, H, E, F)
2350 ; term_variables(G, L),
2351 copy_term_nat(G-L, E-M),
2352 translate(L, B, M)
2353 -> F=true
2354 ; functor(A, J, K),
2355 N=J/K,
2356 get_dynamic_suspension_term_field(argument(D),
2357 N,
2358 C,
2359 E,
2360 F)
2361 ).
2362multi_hash_key_direct(_, A, _, B, C) :-
2363 ( A=[D]
2364 -> C=[D-B]
2365 ; pairup(A, E, C),
2366 B=..[k|E]
2367 ).
2368args(A, B, C) :-
2369 maplist(arg1(B), A, C).
2370split_args(A, B, C, D) :-
2371 split_args(A, B, 1, C, D).
2372split_args([], A, _, [], A).
2373split_args([A|B], [C|D], E, F, G) :-
2374 H is E+1,
2375 ( A==E
2376 -> F=[C|I],
2377 split_args(B, D, H, I, G)
2378 ; G=[C|I],
2379 split_args([A|B], D, H, F, I)
2380 ).
2381atomic_constants_code(A, B, C, D, E) :-
2382 constants_store_index_name(A, B, F),
2383 maplist(atomic_constant_code(A, B, F), C, G),
2384 append(G, E, D).
2385atomic_constant_code(A, B, C, D, E) :-
2386 constants_store_name(A, B, D, F),
2387 E=..[C, D, F].
2388ground_constants_code(A, B, C, D, E) :-
2389 constants_store_index_name(A, B, F),
2390 maplist(constants_store_name(A, B), C, G),
2391 length(C, H),
2392 replicate(H, [], I),
2393 trie_index([C|I], G, F, D, E).
2394constants_store_name(A/B, C, D, E) :-
2395 get_target_module(F),
2396 term_to_atom(D, G),
2397 term_to_atom(C, H),
2398 atom_concat_list([ '$chr_store_constants_',
2399 F,
2400 '____',
2401 A,
2402 '___',
2403 B,
2404 '___',
2405 H,
2406 '___',
2407 G
2408 ],
2409 E).
2410constants_store_index_name(A/B, C, D) :-
2411 get_target_module(E),
2412 term_to_atom(C, F),
2413 atom_concat_list([ '$chr_store_constants_',
2414 E,
2415 '____',
2416 A,
2417 '___',
2418 B,
2419 '___',
2420 F
2421 ],
2422 D).
2423trie_index([A|B], C, D, E, F) :-
2424 trie_step(A, D, D, B, C, E, F).
2425trie_step([], _, _, [], [], A, A) :-
2426 !.
2427trie_step(A, B, C, D, E, F, G) :-
2428 D=[H|_],
2429 length(H, I),
2430 aggregate_all(set(J/K),
2431 (member(L, A), functor(L, J, K)),
2432 M),
2433 N is I+1,
2434 trie_step_cases(M,
2435 N,
2436 A,
2437 D,
2438 E,
2439 B,
2440 C,
2441 F,
2442 G).
2443trie_step_cases([], _, _, _, _, _, _, A, A).
2444trie_step_cases([A|B], C, D, E, F, G, H, I, J) :-
2445 trie_step_case(A,
2446 C,
2447 D,
2448 E,
2449 F,
2450 G,
2451 H,
2452 I,
2453 K),
2454 trie_step_cases(B,
2455 C,
2456 D,
2457 E,
2458 F,
2459 G,
2460 H,
2461 K,
2462 J).
2463trie_step_case(A/B, C, D, E, F, G, H, [I|J], K) :-
2464 I=(L:-M),
2465 N is C+1,
2466 functor(L, G, N),
2467 arg(1, L, O),
2468 L=..[_, _|P],
2469 once(append(Q, [R], P)),
2470 functor(O, A, B),
2471 O=..[_|S],
2472 append(S, P, T),
2473 ( T==[R]
2474 -> J=K,
2475 M=true,
2476 rec_cases(D,
2477 _,
2478 F,
2479 A/B,
2480 _,
2481 _,
2482 U),
2483 U=[R]
2484 ; rec_cases(D,
2485 E,
2486 F,
2487 A/B,
2488 V,
2489 W,
2490 U),
2491 ( W=[X]
2492 -> J=K,
2493 M=true,
2494 append([V, X, U], T)
2495 ; pairup(V, W, Y),
2496 common_pattern(Y, Z, A1, B1),
2497 append(S, Q, [C1|D1]),
2498 C1-D1=Z,
2499 fresh_symbol(H, E1),
2500 append(A1, [R], F1),
2501 M=..[E1|F1],
2502 maplist(head_tail, B1, G1, H1),
2503 trie_step(G1,
2504 E1,
2505 H,
2506 H1,
2507 U,
2508 J,
2509 K)
2510 )
2511 ).
2512head_tail([A|B], A, B).
2513rec_cases([], [], [], _, [], [], []).
2514rec_cases([A|B], [C|D], [E|F], G/H, I, J, K) :-
2515 ( functor(A, G, H),
2516 A=..[_|L],
2517 append(L, C, [M|N])
2518 -> I=[M|O],
2519 J=[N|P],
2520 K=[E|Q],
2521 rec_cases(B,
2522 D,
2523 F,
2524 G/H,
2525 O,
2526 P,
2527 Q)
2528 ; rec_cases(B,
2529 D,
2530 F,
2531 G/H,
2532 I,
2533 J,
2534 K)
2535 ).
2536common_pattern(A, B, C, D) :-
2537 fold1(chr_translate:gct, A, B),
2538 term_variables(B, C),
2539 findall(C, member(B, A), D).
2540gct(A, B, C) :-
2541 gct_(A, B, C, [], _).
2542gct_(A, B, C, D, E) :-
2543 ( nonvar(A),
2544 nonvar(B),
2545 functor(A, F, G),
2546 functor(B, H, I),
2547 F==H,
2548 G==I
2549 -> functor(C, F, G),
2550 A=..[_|J],
2551 B=..[_|K],
2552 C=..[_|L],
2553 maplist_dcg(chr_translate:gct_,
2554 J,
2555 K,
2556 L,
2557 D,
2558 E)
2559 ; lookup_eq(D, A+B, C)
2560 -> E=D
2561 ; E=[A+B-C|D]
2562 ).
2563global_list_store_name(A/B, C) :-
2564 get_target_module(D),
2565 atom_concat_list([ '$chr_store_global_list_',
2566 D,
2567 '____',
2568 A,
2569 '___',
2570 B
2571 ],
2572 C).
2573global_ground_store_name(A/B, C) :-
2574 get_target_module(D),
2575 atom_concat_list([ '$chr_store_global_ground_',
2576 D,
2577 '____',
2578 A,
2579 '___',
2580 B
2581 ],
2582 C).
2583global_singleton_store_name(A/B, C) :-
2584 get_target_module(D),
2585 atom_concat_list([ '$chr_store_global_singleton_',
2586 D,
2587 '____',
2588 A,
2589 '___',
2590 B
2591 ],
2592 C).
2593identifier_store_name(A, B) :-
2594 get_target_module(C),
2595 atom_concat_list(['$chr_identifier_lookup_', C, '____', A], B).
2596:- if(current_predicate(user:exception/3)). 2597prolog_global_variables_code([]) :-
2598 tmp_module,
2599 !.
2600prolog_global_variables_code(A) :-
2601 prolog_global_variables(B),
2602 ( B==[]
2603 -> A=[]
2604 ; maplist(wrap_in_functor('$chr_prolog_global_variable'), B, C),
2605 A=[(:-dynamic user:exception/3), (:-multifile user:exception/3), (user:exception(undefined_global_variable, D, retry):-'$chr_prolog_global_variable'(D), '$chr_initialization')|C]
2606 ).
2607tmp_module :-
2608 prolog_load_context(module, A),
2609 module_property(A, class(temporary)).
2610:- else. 2611prolog_global_variables_code([]).
2612:- endif. 2613sbag_member_call(A, B, member(A, B)).
2614update_mutable_call(A, B, 'chr update_mutable'(A, B)).
2615create_mutable_call(A, B, true) :-
2616 B=mutable(A).
2617get_suspension_field(A, B, C, D, E) :-
2618 get_dynamic_suspension_term_field(C, A, B, D, E).
2619update_suspension_field(A, B, C, D, E) :-
2620 set_dynamic_suspension_term_field(C, A, B, D, E).
2621get_update_suspension_field(A, B, C, D, E, true, F, G) :-
2622 get_dynamic_suspension_term_field(C, A, B, D, F),
2623 set_dynamic_suspension_term_field(C, A, B, E, G).
2624create_static_suspension_field(A, B, C, D, true) :-
2625 get_static_suspension_term_field(C, A, B, D).
2626get_static_suspension_field(A, B, C, D, true) :-
2627 get_static_suspension_term_field(C, A, B, D).
2628get_update_static_suspension_field(A, B, C, D, E, F, true, G) :-
2629 get_static_suspension_term_field(D, A, C, E),
2630 set_dynamic_suspension_term_field(D, A, B, F, G).
2631enumerate_stores_code(A, [B|C]) :-
2632 D='$enumerate_constraints'(E),
2633 B=(D:-F),
2634 enumerate_store_bodies(A, E, C),
2635 ( C=[]
2636 -> F=fail
2637 ; F=(nonvar(E)->functor(E, G, _), '$enumerate_constraints'(G, E);'$enumerate_constraints'(_, E))
2638 ).
2639enumerate_store_bodies([], _, []).
2640enumerate_store_bodies([A|B], C, D) :-
2641 ( is_stored(A)
2642 -> get_store_type(A, E),
2643 ( enumerate_store_body(E, A, F, G)
2644 -> true
2645 ; chr_error(internal,
2646 'Could not generate enumeration code for constraint ~w.\n',
2647 [A])
2648 ),
2649 get_dynamic_suspension_term_field(arguments,
2650 A,
2651 F,
2652 H,
2653 I),
2654 A=J/_,
2655 K=..[J|H],
2656 L='$enumerate_constraints'(J, C),
2657 M=(G, I, C=K),
2658 D=[(L:-M)|N]
2659 ; D=N
2660 ),
2661 enumerate_store_bodies(B, C, N).
2662enumerate_store_body(default, A, B, C) :-
2663 global_list_store_name(A, D),
2664 sbag_member_call(B, E, F),
2665 make_get_store_goal_no_error(D, E, G),
2666 C=(G, F).
2667enumerate_store_body(multi_inthash([A|_]), B, C, D) :-
2668 multi_inthash_enumerate_store_body(A, B, C, D).
2669enumerate_store_body(multi_hash([A|_]), B, C, D) :-
2670 multi_hash_enumerate_store_body(A, B, C, D).
2671enumerate_store_body(atomic_constants(A, B, C), D, E, F) :-
2672 C==complete,
2673 maplist(enumerate_constant_store_body(D, A, G),
2674 B,
2675 H),
2676 list2disj(H, I),
2677 F=(I, member(E, G)).
2678enumerate_constant_store_body(A, B, C, D, nb_getval(E, C)) :-
2679 constants_store_name(A, B, D, E).
2680enumerate_store_body(ground_constants(A, B, C), D, E, F) :-
2681 enumerate_store_body(atomic_constants(A, B, C),
2682 D,
2683 E,
2684 F).
2685enumerate_store_body(global_ground, A, B, C) :-
2686 global_ground_store_name(A, D),
2687 sbag_member_call(B, E, F),
2688 make_get_store_goal(D, E, G),
2689 C=(G, F).
2690enumerate_store_body(var_assoc_store(_, _), _, _, A) :-
2691 A=fail.
2692enumerate_store_body(global_singleton, A, B, C) :-
2693 global_singleton_store_name(A, D),
2694 make_get_store_goal(D, B, E),
2695 C=(E, B\==[]).
2696enumerate_store_body(multi_store(A), B, C, D) :-
2697 ( memberchk(global_ground, A)
2698 -> enumerate_store_body(global_ground, B, C, D)
2699 ; once(( member(E, A),
2700 enumerate_store_body(E, B, C, D)
2701 ))
2702 ).
2703enumerate_store_body(identifier_store(_), _, _, A) :-
2704 A=fail.
2705enumerate_store_body(type_indexed_identifier_store(_, _), _, _, A) :-
2706 A=fail.
2707multi_inthash_enumerate_store_body(A, B, C, D) :-
2708 multi_hash_store_name(B, A, E),
2709 D=(nb_getval(E, F), value_iht(F, C)).
2710multi_hash_enumerate_store_body(A, B, C, D) :-
2711 multi_hash_store_name(B, A, E),
2712 make_get_store_goal(E, F, G),
2713 D=(G, value_ht(F, C)).
2714guard_simplification :-
2715 ( chr_pp_flag(guard_simplification, on)
2716 -> precompute_head_matchings,
2717 simplify_guards(1)
2718 ; true
2719 ).
2720next_prev_rule(A, B, C) :-
2721 ( find_min_q(A, _-D)
2722 -> D=(-B),
2723 normalize_heap(A, D, C)
2724 ; B=0,
2725 C=A
2726 ).
2727normalize_heap(A, B, C) :-
2728 ( find_min_q(A, _-B)
2729 -> delete_min_q(A, D, tuple(E, F, _)-_),
2730 ( F>1
2731 -> G is F-1,
2732 get_occurrence(E, G, H, _),
2733 insert_q(D,
2734 tuple(E, G, H)-(-H),
2735 I)
2736 ; I=D
2737 ),
2738 normalize_heap(I, B, C)
2739 ; C=A
2740 ).
2741head_types_modes_condition([], _, true).
2742head_types_modes_condition([A|B], C, (D, E)) :-
2743 types_modes_condition(C, A, D),
2744 head_types_modes_condition(B, C, E).
2745add_background_info(A, B) :-
2746 get_bg_info(C),
2747 add_background_info2(A, D),
2748 append(C, D, B).
2749add_background_info2(A, []) :-
2750 var(A),
2751 !.
2752add_background_info2([], []) :-
2753 !.
2754add_background_info2([A|B], C) :-
2755 !,
2756 add_background_info2(A, D),
2757 add_background_info2(B, E),
2758 append(D, E, C).
2759add_background_info2(A, B) :-
2760 ( functor(A, _, C),
2761 C>0
2762 -> A=..[_|D],
2763 add_background_info2(D, E)
2764 ; E=[]
2765 ),
2766 get_bg_info(A, F),
2767 append(F, E, B).
2768normalize_conj_list(A, B) :-
2769 list2conj(A, C),
2770 conj2list(C, B).
2771compute_derived_info([], _, _, _, _, _, _, _, [], []).
2772compute_derived_info([A|B], C, D, E, F, G, H, I, [J|K], [L|M]) :-
2773 copy_term(C-F, N),
2774 variable_replacement(C-F, N, O),
2775 append(A, O, P),
2776 list2conj(C, Q),
2777 negate_b(Q, R),
2778 make_head_matchings_explicit_not_negated2(E, D, S),
2779 list2conj(S, T),
2780 term_variables(P, U),
2781 term_variables(C-F-S, V),
2782 new_vars(V, U, W),
2783 append(P, W, X),
2784 ( F==true
2785 -> Y=R
2786 ; negate_b(F, Z),
2787 Y=(R;T, Z)
2788 ),
2789 copy_with_variable_replacement(Y, J, X),
2790 copy_with_variable_replacement(F, A1, X),
2791 copy_with_variable_replacement(C, B1, X),
2792 list2conj(B1, C1),
2793 apply_guard_wrt_term(H, A1, D1),
2794 apply_guard_wrt_term(D1, C1, L),
2795 compute_derived_info(B,
2796 C,
2797 D,
2798 E,
2799 F,
2800 G,
2801 H,
2802 I,
2803 K,
2804 M).
2805simplify_guard(A, B, C, D, E) :-
2806 conj2list(A, F),
2807 guard_entailment:simplify_guards(C, B, F, G, E),
2808 list2conj(G, D).
2809new_vars([], _, []).
2810new_vars([A|B], C, D) :-
2811 ( memberchk_eq(A, C)
2812 -> new_vars(B, C, D)
2813 ; D=[A-E, E-A|F],
2814 new_vars(B, C, F)
2815 ).
2816head_subset(A, B, C) :-
2817 head_subset(A, B, C, [], _).
2818head_subset([], A, B, B, A).
2819head_subset([A|B], C, D, E, F) :-
2820 head_member(C, A, G, E, H),
2821 head_subset(B, H, D, G, F).
2822head_member([A|B], C, D, E, F) :-
2823 ( variable_replacement(C, A, E, D),
2824 F=B
2825 ; F=[A|G],
2826 head_member(B, C, D, E, G)
2827 ).
2828make_head_matchings_explicit(A, B, C) :-
2829 make_head_matchings_explicit_memo_lookup(A, D, E),
2830 copy_term_nat(D-E, B-C).
2831make_head_matchings_explicit_(A, B, C) :-
2832 extract_arguments(A, D),
2833 make_matchings_explicit(D, E, [], [], _, C),
2834 substitute_arguments(A, E, B).
2835make_head_matchings_explicit_not_negated(A, B, C) :-
2836 extract_arguments(A, D),
2837 make_matchings_explicit_not_negated(D, E, C),
2838 substitute_arguments(A, E, B).
2839make_head_matchings_explicit_not_negated2(A, B, C) :-
2840 extract_arguments(A, D),
2841 extract_arguments(B, E),
2842 make_matchings_explicit_not_negated(D, E, C).
([], []).
2844extract_arguments([A|B], C) :-
2845 A=..[_|D],
2846 append(D, E, C),
2847 extract_arguments(B, E).
2848substitute_arguments([], [], []).
2849substitute_arguments([A|B], C, [D|E]) :-
2850 functor(A, F, G),
2851 split_at(G, C, H, I),
2852 D=..[F|H],
2853 substitute_arguments(B, I, E).
2854make_matchings_explicit([], [], _, A, A, []).
2855make_matchings_explicit([A|B], [C|D], E, F, G, H) :-
2856 ( var(A)
2857 -> ( memberchk_eq(A, E)
2858 -> list2disj(F, I),
2859 H=[(I;C==A)|J],
2860 K=E
2861 ; H=J,
2862 C=A,
2863 K=[A|E]
2864 ),
2865 L=F
2866 ; functor(A, M, N),
2867 A=..[M|O],
2868 make_matchings_explicit(O,
2869 P,
2870 E,
2871 F,
2872 Q,
2873 R),
2874 S=..[M|P],
2875 ( R==[]
2876 -> H=[functor(C, M, N)|J]
2877 ; list2conj(R, T),
2878 list2disj(F, I),
2879 U=(C\=S;I;T),
2880 H=[functor(C, M, N), U|J]
2881 ),
2882 L=[C\=S|Q],
2883 term_variables(B, V),
2884 append(V, E, K)
2885 ),
2886 make_matchings_explicit(B, D, K, L, G, J).
2887make_matchings_explicit_not_negated([], [], []).
2888make_matchings_explicit_not_negated([A|B], [C|D], E) :-
2889 E=[C=A|F],
2890 make_matchings_explicit_not_negated(B, D, F).
2891apply_guard_wrt_term([], _, []).
2892apply_guard_wrt_term([A|B], C, [D|E]) :-
2893 ( var(A)
2894 -> apply_guard_wrt_variable(C, A, D)
2895 ; A=..[F|G],
2896 apply_guard_wrt_term(G, C, H),
2897 D=..[F|H]
2898 ),
2899 apply_guard_wrt_term(B, C, E).
2900apply_guard_wrt_variable((A, B), C, D) :-
2901 !,
2902 apply_guard_wrt_variable(A, C, E),
2903 apply_guard_wrt_variable(B, E, D).
2904apply_guard_wrt_variable(A, B, C) :-
2905 ( A=(D=E),
2906 B==D
2907 -> C=E
2908 ; A=functor(F, G, H),
2909 B==F,
2910 ground(G),
2911 ground(H)
2912 -> functor(C, G, H)
2913 ; C=B
2914 ).
2915replace_some_heads(A, B, _, [], A, B, _, _, []) :-
2916 !.
2917replace_some_heads([], [A|B], [C|D], [E|F], [], [G|H], I, J, K) :-
2918 !,
2919 ( C==E
2920 -> G=E,
2921 replace_some_heads([],
2922 B,
2923 D,
2924 F,
2925 [],
2926 H,
2927 I,
2928 J,
2929 K)
2930 ; E=functor(L, M, N),
2931 C==L
2932 -> length(O, N),
2933 ( var(A)
2934 -> P=[],
2935 G=..[M|O]
2936 ; A=..[M|Q],
2937 use_same_args(Q, O, R, I, J, P),
2938 G=..[M|R]
2939 ),
2940 replace_some_heads([],
2941 B,
2942 D,
2943 F,
2944 [],
2945 H,
2946 I,
2947 J,
2948 S),
2949 append(P, S, K)
2950 ; G=A,
2951 replace_some_heads([],
2952 B,
2953 D,
2954 [E|F],
2955 [],
2956 H,
2957 I,
2958 J,
2959 K)
2960 ).
2961replace_some_heads([A|B], C, [D|E], [F|G], [H|I], J, K, L, M) :-
2962 !,
2963 ( D==F
2964 -> H=F,
2965 replace_some_heads(B,
2966 C,
2967 E,
2968 G,
2969 I,
2970 J,
2971 K,
2972 L,
2973 M)
2974 ; F=functor(N, O, P),
2975 D==N
2976 -> length(Q, P),
2977 ( var(A)
2978 -> R=[],
2979 H=..[O|Q]
2980 ; A=..[O|S],
2981 use_same_args(S,
2982 Q,
2983 T,
2984 K,
2985 L,
2986 R),
2987 H=..[O|T]
2988 ),
2989 replace_some_heads(B,
2990 C,
2991 E,
2992 G,
2993 I,
2994 J,
2995 K,
2996 L,
2997 U),
2998 append(R, U, M)
2999 ; H=A,
3000 replace_some_heads(B,
3001 C,
3002 E,
3003 [F|G],
3004 I,
3005 J,
3006 K,
3007 L,
3008 M)
3009 ).
3010use_same_args([], [], [], _, _, []).
3011use_same_args([A|B], [_|C], [D|E], F, G, H) :-
3012 var(A),
3013 !,
3014 D=A,
3015 use_same_args(B, C, E, F, G, H).
3016use_same_args([A|B], [C|D], [E|F], G, H, I) :-
3017 nonvar(A),
3018 !,
3019 ( common_variables(A, H)
3020 -> I=[C=A|J]
3021 ; I=J
3022 ),
3023 E=C,
3024 use_same_args(B, D, F, G, H, J).
3025simplify_heads([], _, _, _, [], []).
3026simplify_heads([A|B], C, D, E, F, G) :-
3027 A=(H=I),
3028 ( ( nonvar(I)
3029 ; common_variables(I, B-C)
3030 ),
3031 guard_entailment:entails_guard(C, H=I)
3032 -> ( common_variables(I, D-B-C)
3033 -> G=J,
3034 F=K
3035 ; ( common_variables(I, E)
3036 -> G=[H=I|J]
3037 ; G=J
3038 ),
3039 F=[H|K]
3040 )
3041 ; nonvar(I),
3042 functor(I, L, M),
3043 guard_entailment:entails_guard([functor(H, L, M)|C], H=I)
3044 -> G=J,
3045 ( common_variables(I, D-B-C)
3046 -> F=K
3047 ; F=[functor(H, L, M)|K]
3048 )
3049 ; F=K,
3050 G=J
3051 ),
3052 simplify_heads(B, [A|C], D, E, K, J).
3053common_variables(A, B) :-
3054 term_variables(A, C),
3055 term_variables(B, D),
3056 intersect_eq(C, D, E),
3057 E\==[].
3058add_failing_occ(A, B, C, D, E, F, _, G, H) :-
3059 A=pragma(rule(_, _, I, _), ids(J, K), _, _, _),
3060 append(K, J, L),
3061 missing_partner_cond(B,
3062 C,
3063 L,
3064 D,
3065 M,
3066 N,
3067 G),
3068 copy_term((N, B, C), (O, P, Q)),
3069 variable_replacement((N, B, C),
3070 (O, P, Q),
3071 H),
3072 copy_with_variable_replacement(I, R, H),
3073 extract_explicit_matchings(R, S),
3074 negate_b(S, T),
3075 copy_with_variable_replacement(M, U, H),
3076 ( subsumes_term(F, O),
3077 F=O
3078 -> E=[(T;U)]
3079 ; E=[chr_pp_void_info]
3080 ).
3081missing_partner_cond([], [], [], _, fail, _, _).
3082missing_partner_cond([A|B], [_|C], [D|E], D, F, A, G) :-
3083 !,
3084 missing_partner_cond(B,
3085 C,
3086 E,
3087 D,
3088 F,
3089 A,
3090 G).
3091missing_partner_cond([A|B], [_|C], [_|D], E, F, G, H/I) :-
3092 F=(chr_pp_not_in_store(A);J),
3093 missing_partner_cond(B,
3094 C,
3095 D,
3096 E,
3097 J,
3098 G,
3099 H/I).
((A, B), C) :-
3101 !,
3102 ( extract_explicit_matchings(A)
3103 -> extract_explicit_matchings(B, C)
3104 ; C=(A, D),
3105 extract_explicit_matchings(B, D)
3106 ).
3107extract_explicit_matchings(A, B) :-
3108 !,
3109 ( extract_explicit_matchings(A)
3110 -> B=true
3111 ; B=A
3112 ).
(A=B) :-
3114 var(A),
3115 var(B),
3116 !,
3117 A=B.
3118extract_explicit_matchings(A==B) :-
3119 var(A),
3120 var(B),
3121 !,
3122 A=B.
3123assert_constraint_type(A, B) :-
3124 ( ground(B)
3125 -> constraint_type(A, B)
3126 ; chr_error(type_error,
3127 'Declared argument types "~w" for constraint "~w" must be ground!\n',
3128 [B, A])
3129 ).
3130get_type_definition_det(A, B) :-
3131 ( get_type_definition(A, B)
3132 -> true
3133 ; chr_error(type,
3134 'Could not find type definition for type `~w\'.\n',
3135 [A])
3136 ).
3137get_constraint_type_det(A, B) :-
3138 ( get_constraint_type(A, B)
3139 -> true
3140 ; A=_/C,
3141 replicate(C, any, B)
3142 ).
3143modes_condition([], [], true).
3144modes_condition([A|B], [C|D], E) :-
3145 ( A==(+)
3146 -> E=(ground(C), F)
3147 ; A==(-)
3148 -> E=(var(C), F)
3149 ; E=F
3150 ),
3151 modes_condition(B, D, F).
3152types_condition([], [], [], [], true).
3153types_condition([A|B], [C|D], [E|F], [G|H], (I, J)) :-
3154 ( G==(-)
3155 -> K=[true]
3156 ; get_type_definition_det(A, L),
3157 type_condition(L, C, E, G, M),
3158 ( G==(+)
3159 -> K=M
3160 ; K=[\+ground(C)|M]
3161 )
3162 ),
3163 list2disj(K, I),
3164 types_condition(B, D, F, H, J).
3165type_condition([], _, _, _, []).
3166type_condition([A|B], C, D, E, [F|G]) :-
3167 ( var(A)
3168 -> chr_error(type, 'Unexpected variable type in type definition!\n', [])
3169 ; atomic_builtin_type(A, C, F)
3170 -> true
3171 ; compound_builtin_type(A, C, F, _)
3172 -> true
3173 ; type_def_case_condition(A, C, D, E, F)
3174 ),
3175 type_condition(B, C, D, E, G).
3176ast_atomic_builtin_type(A, B, C) :-
3177 ast_term_to_term(B, D),
3178 atomic_builtin_type(A, D, C).
3179ast_compound_builtin_type(A, B, C) :-
3180 ast_term_to_term(B, D),
3181 compound_builtin_type(A, D, _, C).
3182atomic_builtin_type(any, _, true).
3183atomic_builtin_type(dense_int, A, (integer(A), A>=0)).
3184atomic_builtin_type(int, A, integer(A)).
3185atomic_builtin_type(number, A, number(A)).
3186atomic_builtin_type(float, A, float(A)).
3187atomic_builtin_type(natural, A, (integer(A), A>=0)).
3188atomic_builtin_type(chr_identifier, _, true).
3189compound_builtin_type(chr_constants(_), _, true, true).
3190compound_builtin_type(chr_constants(_, _), _, true, true).
3191compound_builtin_type(chr_identifier(_), _, true, true).
3192compound_builtin_type(chr_enum(A), B, (ground(B), memberchk(B, A)), once((member(C, A), unifiable(B, C, _)))).
3193compound_builtin_type(chr_enum(_, _), _, true, true).
3194is_chr_constants_type(chr_constants(A), A, no).
3195is_chr_constants_type(chr_constants(A, B), A, yes(B)).
3196is_chr_enum_type(chr_enum(A), A, no).
3197is_chr_enum_type(chr_enum(A, B), A, yes(B)).
3198type_def_case_condition(A, B, C, D, E) :-
3199 ( nonvar(A)
3200 -> functor(A, F, G),
3201 ( G==0
3202 -> E=(B=A)
3203 ; var(C)
3204 -> E=functor(B, F, G)
3205 ; functor(C, F, G)
3206 -> E=(functor(B, F, G), B=H, I),
3207 A=..[_|J],
3208 C=..[_|K],
3209 functor(H, F, G),
3210 H=..[_|L],
3211 replicate(G, D, M),
3212 types_condition(J, L, K, M, I)
3213 ; E=functor(B, F, G)
3214 )
3215 ; chr_error(internal, 'Illegal type definition (must be nonvar).\n', [])
3216 ).
3217static_type_check_rule(A, B) :-
3218 B=ast_rule(C, _, _, D, _),
3219 ( catch(( ast_static_type_check_head(C),
3220 ast_static_type_check_body(D)
3221 ),
3222 type_error(E),
3223 ( E=invalid_functor(F, G, H)
3224 -> chr_error(type_error,
3225 'Invalid functor in ~@ of ~@:\n\t\tfound `~w\',\n\t\texpected type `~w\'!\n',
3226 [ chr_translate:format_src(F),
3227 format_rule(A),
3228 G,
3229 H
3230 ])
3231 ; E=type_clash(I, J, K, L, M)
3232 -> chr_error(type_error,
3233 'Type clash for variable ~w in ~@:\n\t\texpected type ~w in ~@\n\t\texpected type ~w in ~@\n',
3234 [ I,
3235 format_rule(A),
3236 L,
3237 chr_translate:format_src(J),
3238 M,
3239 chr_translate:format_src(K)
3240 ])
3241 )),
3242 fail
3243 ; true
3244 ).
3245ast_static_type_check_head(simplification(A)) :-
3246 maplist(ast_static_type_check_head_constraint, A).
3247ast_static_type_check_head(propagation(A)) :-
3248 maplist(ast_static_type_check_head_constraint, A).
3249ast_static_type_check_head(simpagation(A, B)) :-
3250 maplist(ast_static_type_check_head_constraint, A),
3251 maplist(ast_static_type_check_head_constraint, B).
3252ast_static_type_check_head_constraint(A) :-
3253 A=chr_constraint(B, C, _),
3254 get_constraint_type_det(B, D),
3255 maplist(ast_static_type_check_term(head(_)), C, D).
3256ast_static_type_check_body([]).
3257ast_static_type_check_body([A|B]) :-
3258 ast_symbol(A, C),
3259 get_constraint_type_det(C, D),
3260 ast_args(A, E),
3261 maplist(ast_static_type_check_term(body(A)), E, D),
3262 ast_static_type_check_body(B).
3263format_src(head(A)) :-
3264 format('head ~w', [A]).
3265format_src(body(A)) :-
3266 format('body goal ~w', [A]).
3267generate_dynamic_type_check_clauses(A) :-
3268 ( chr_pp_flag(debugable, on)
3269 -> dynamic_type_check,
3270 get_dynamic_type_check_clauses(B),
3271 append(B,
3272 [ ('$dynamic_type_check'(C, D):-throw(error(type_error(C, D), context(_, 'CHR Runtime Type Error'))))
3273 ],
3274 A)
3275 ; A=[]
3276 ).
3277dynamic_type_check_clause(A, B, C) :-
3278 copy_term(A-B, D-E),
3279 functor(E, F, G),
3280 functor(H, F, G),
3281 E=..[_|I],
3282 H=..[_|J],
3283 maplist(dynamic_type_check_call, I, J, K),
3284 list2conj(K, L),
3285 C=('$dynamic_type_check'(D, H):-L).
3286dynamic_type_check_alias_clause(A, B, C) :-
3287 C=('$dynamic_type_check'(A, D):-'$dynamic_type_check'(B, D)).
3288dynamic_type_check_call(A, B, C) :-
3289 ( A==any
3290 -> C=true
3291 ; C=when(nonvar(B), once('$dynamic_type_check'(A, B)))
3292 ).
3293atomic_types_suspended_constraint(A) :-
3294 A=_/B,
3295 get_constraint_type(A, C),
3296 get_constraint_mode(A, D),
3297 numlist(1, B, E),
3298 maplist(atomic_types_suspended_constraint(A),
3299 C,
3300 D,
3301 E).
3302atomic_types_suspended_constraint(A, B, C, D) :-
3303 ( is_indexed_argument(A, D)
3304 -> ( C==(?)
3305 -> atomic_type(B)
3306 ; true
3307 )
3308 ; true
3309 ).
3310storage_analysis(A) :-
3311 ( chr_pp_flag(storage_analysis, on)
3312 -> check_constraint_storages(A)
3313 ; true
3314 ).
3315check_constraint_storages(A) :-
3316 maplist(check_constraint_storage, A).
3317check_constraint_storage(A) :-
3318 get_max_occurrence(A, B),
3319 check_occurrences_storage(A, 1, B).
3320check_occurrences_storage(A, B, C) :-
3321 ( B>C
3322 -> stored_completing(A, 1, 0)
3323 ; check_occurrence_storage(A, B),
3324 D is B+1,
3325 check_occurrences_storage(A, D, C)
3326 ).
3327check_occurrence_storage(A, B) :-
3328 get_occurrence(A, B, C, D, E),
3329 ( is_passive(C, D)
3330 -> stored(A, B, maybe)
3331 ; get_rule(C, F),
3332 F=pragma(rule(G, H, I, J), ids(K, L), _, _, _),
3333 ( E==simplification,
3334 select2(D, M, K, G, _, _)
3335 -> check_storage_head1(M, B, G, H, I)
3336 ; E==propagation,
3337 select2(D, N, L, H, _, _)
3338 -> check_storage_head2(N, B, G, J)
3339 )
3340 ).
3341check_storage_head1(A, B, C, D, E) :-
3342 functor(A, F, G),
3343 H=F/G,
3344 ( C==[A],
3345 D==[],
3346 guard_entailment:entails_guard([chr_pp_headvariables(A)], E),
3347 A=..[_|I],
3348 no_matching(I, [])
3349 -> stored(H, B, no)
3350 ; stored(H, B, maybe)
3351 ).
3352no_matching([], _).
3353no_matching([A|B], C) :-
3354 var(A),
3355 \+ memberchk_eq(A, C),
3356 no_matching(B, [A|C]).
3357check_storage_head2(A, B, C, D) :-
3358 functor(A, E, F),
3359 G=E/F,
3360 ( C\==[],
3361 D==true
3362 -> stored(G, B, maybe)
3363 ; stored(G, B, yes)
3364 ).
3365constraints_code(A, B) :-
3366 ( chr_pp_flag(reduced_indexing, on),
3367 forall(C,
3368 A,
3369 chr_translate:only_ground_indexed_arguments(C))
3370 -> none_suspended_on_variables
3371 ; true
3372 ),
3373 constraints_code1(A, B, []).
3374constraint_prelude(A/B, C) :-
3375 vars_susp(B, D, E, F),
3376 G=..[A|D],
3377 make_suspension_continuation_goal(A/B, F, H),
3378 build_head(A, B, [0], F, I),
3379 ( chr_pp_flag(debugable, on)
3380 -> insert_constraint_goal(A/B, E, D, J),
3381 attach_constraint_atom(A/B, K, E, L),
3382 delay_phase_end(validate_store_type_assumptions,
3383 chr_translate:update_suspension_field(A/B, E, state, inactive, M)),
3384 insert_constraint_internal_constraint_goal(A/B,
3385 K,
3386 E,
3387 H,
3388 D,
3389 N),
3390 ( get_constraint_type(A/B, O)
3391 -> maplist(dynamic_type_check_call, O, D, P),
3392 list2conj(P, Q)
3393 ; Q=true
3394 ),
3395 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))
3396 ; get_allocation_occurrence(A/B, 0)
3397 -> gen_insert_constraint_internal_goal(A/B,
3398 R,
3399 F,
3400 D,
3401 E),
3402 delay_phase_end(validate_store_type_assumptions,
3403 chr_translate:update_suspension_field(A/B, E, state, inactive, M)),
3404 C=(G:-R, M, I)
3405 ; C=(G:-I)
3406 ).
3407make_suspension_continuation_goal(A/B, C, D) :-
3408 ( may_trigger(A/B)
3409 -> build_head(A, B, [0], C, E),
3410 ( chr_pp_flag(debugable, off)
3411 -> D=E
3412 ; get_target_module(F),
3413 D=F:E
3414 )
3415 ; D=true
3416 ).
3417gen_cond_attach_clause(A/B, C, D, E) :-
3418 ( is_finally_stored(A/B)
3419 -> get_allocation_occurrence(A/B, F),
3420 get_max_occurrence(A/B, G),
3421 ( chr_pp_flag(debugable, off),
3422 G<F
3423 -> ( only_ground_indexed_arguments(A/B)
3424 -> gen_insert_constraint_internal_goal(A/B,
3425 H,
3426 I,
3427 J,
3428 K)
3429 ; gen_cond_attach_goal(A/B,
3430 H,
3431 I,
3432 J,
3433 K)
3434 )
3435 ; vars_susp(B, J, K, I),
3436 gen_uncond_attach_goal(A/B,
3437 K,
3438 J,
3439 H,
3440 _)
3441 ),
3442 build_head(A, B, C, I, L),
3443 M=(L:-H),
3444 add_dummy_location(M, N),
3445 D=[N|E]
3446 ; D=E
3447 ).
3448gen_cond_attach_goal(A/B, C, D, E, F) :-
3449 vars_susp(B, E, F, D),
3450 make_suspension_continuation_goal(A/B, D, G),
3451 ( get_store_type(A/B, var_assoc_store(_, _))
3452 -> H=true
3453 ; attach_constraint_atom(A/B, I, F, H)
3454 ),
3455 _=..[A|E],
3456 insert_constraint_goal(A/B, F, E, J),
3457 insert_constraint_internal_constraint_goal(A/B,
3458 I,
3459 F,
3460 G,
3461 E,
3462 K),
3463 ( may_trigger(A/B)
3464 -> activate_constraint_goal(A/B,
3465 (J, H),
3466 I,
3467 F,
3468 _,
3469 L),
3470 C=(var(F)->K, J, H;L)
3471 ; C=(K, J, H)
3472 ).
3473gen_insert_constraint_internal_goal(A/B, C, D, E, F) :-
3474 vars_susp(B, E, F, D),
3475 make_suspension_continuation_goal(A/B, D, G),
3476 ( \+ only_ground_indexed_arguments(A/B),
3477 \+ get_store_type(A/B, var_assoc_store(_, _))
3478 -> attach_constraint_atom(A/B, H, F, I)
3479 ; I=true
3480 ),
3481 _=..[A|E],
3482 insert_constraint_goal(A/B, F, E, J),
3483 insert_constraint_internal_constraint_goal(A/B,
3484 H,
3485 F,
3486 G,
3487 E,
3488 K),
3489 ( only_ground_indexed_arguments(A/B),
3490 chr_pp_flag(debugable, off)
3491 -> C=(K, J)
3492 ; C=(K, J, I)
3493 ).
3494gen_uncond_attach_goal(A, B, C, D, E) :-
3495 ( \+ only_ground_indexed_arguments(A),
3496 \+ get_store_type(A, var_assoc_store(_, _))
3497 -> attach_constraint_atom(A, F, B, G)
3498 ; G=true
3499 ),
3500 insert_constraint_goal(A, B, C, H),
3501 ( chr_pp_flag(late_allocation, on)
3502 -> activate_constraint_goal(A,
3503 (H, G),
3504 F,
3505 B,
3506 E,
3507 D)
3508 ; activate_constraint_goal(A, true, F, B, E, D)
3509 ).
3510head1_code(A, B, C, D, E, F, G, H, I, J) :-
3511 E=pragma(K, _, _, _, L),
3512 K=rule(_, M, _, _),
3513 ( M==[]
3514 -> reorder_heads(L, A, C, D, N, O),
3515 simplification_code(A,
3516 B,
3517 N,
3518 O,
3519 E,
3520 F,
3521 G,
3522 H,
3523 I,
3524 J)
3525 ; simpagation_head1_code(A,
3526 B,
3527 C,
3528 D,
3529 E,
3530 F,
3531 G,
3532 H,
3533 I,
3534 J)
3535 ).
3536head2_code(A, B, C, D, E, F, G, H, I, J) :-
3537 E=pragma(K, _, _, _, L),
3538 K=rule(M, _, _, _),
3539 ( M==[]
3540 -> reorder_heads(L, A, C, D, N, O),
3541 propagation_code(A,
3542 B,
3543 N,
3544 O,
3545 K,
3546 L,
3547 F,
3548 G,
3549 H,
3550 I,
3551 J)
3552 ; simpagation_head2_code(A,
3553 B,
3554 C,
3555 D,
3556 E,
3557 F,
3558 G,
3559 H,
3560 I,
3561 J)
3562 ).
3563gen_alloc_inc_clause(A/B, C, D, E, F) :-
3564 vars_susp(B, G, H, I),
3565 build_head(A, B, D, I, J),
3566 inc_id(D, K),
3567 build_head(A, B, K, I, L),
3568 gen_occ_allocation(A/B, C, G, H, M),
3569 N=(J:-M, L),
3570 add_dummy_location(N, O),
3571 E=[O|F].
3572gen_occ_allocation(A, B, C, D, E) :-
3573 get_allocation_occurrence(A, F),
3574 get_occurrence_code_id(A, F, G),
3575 get_occurrence_code_id(A, B, H),
3576 ( chr_pp_flag(debugable, off),
3577 H==G
3578 -> allocate_constraint_goal(A, D, C, I),
3579 ( may_trigger(A)
3580 -> E=(var(D)->I;true)
3581 ; E=I
3582 )
3583 ; E=true
3584 ).
3585gen_occ_allocation_in_guard(A, B, C, D, E) :-
3586 get_allocation_occurrence(A, F),
3587 ( chr_pp_flag(debugable, off),
3588 B<F
3589 -> allocate_constraint_goal(A, D, C, G),
3590 ( may_trigger(A)
3591 -> E=(var(D)->G;true)
3592 ; E=G
3593 )
3594 ; E=true
3595 ).
3596guard_via_reschedule_new(A, B, C, D, E, F) :-
3597 ( chr_pp_flag(guard_via_reschedule, on)
3598 -> guard_via_reschedule_main_new(A,
3599 B,
3600 C,
3601 D,
3602 E,
3603 G),
3604 list2conj(G, F)
3605 ; length(A, H),
3606 length(E, H),
3607 length(B, I),
3608 length(D, I),
3609 append(E, D, J),
3610 list2conj(J, F)
3611 ).
3612guard_via_reschedule_main_new(A, B, C, D, E, F) :-
3613 initialize_unit_dictionary(C, G),
3614 maplist(wrap_in_functor(lookup), A, H),
3615 maplist(wrap_in_functor(guard), B, I),
3616 build_units(H, I, G, J),
3617 dependency_reorder(J, K),
3618 wrappedunits2lists(K, L, E, F),
3619 sort(L, M),
3620 snd_of_pairs(M, D).
3621wrappedunits2lists([], [], [], []).
3622wrappedunits2lists([unit(A, B, _, _)|C], D, E, F) :-
3623 F=[G|H],
3624 ( B=lookup(I)
3625 -> E=[G|J],
3626 D=K
3627 ; B=guard(I)
3628 -> D=[A-G|K],
3629 E=J
3630 ),
3631 wrappedunits2lists(C, K, J, H).
3632guard_splitting(A, B) :-
3633 A=rule(C, D, E, _),
3634 append(C, D, F),
3635 conj2list(E, G),
3636 term_variables(F, H),
3637 split_off_simple_guard_new(G, H, I, J),
3638 append(I, [K], B),
3639 term_variables(J, L),
3640 ground_vars(F, M),
3641 list_difference_eq(H, M, N),
3642 intersect_eq(N, L, O),
3643 maplist(chr_lock, O, P),
3644 maplist(chr_unlock, O, Q),
3645 list2conj(P, R),
3646 list2conj(Q, S),
3647 list2conj(J, T),
3648 K=(R, T, S).
3649guard_body_copies3(A, B, C, D, E) :-
3650 A=rule(_, _, _, F),
3651 my_term_copy(B, C, G, D),
3652 my_term_copy(F, G, E).
3653split_off_simple_guard_new([], _, [], []).
3654split_off_simple_guard_new([A|B], C, D, E) :-
3655 ( simple_guard_new(A, C)
3656 -> D=[A|F],
3657 split_off_simple_guard_new(B, C, F, E)
3658 ; D=[],
3659 E=[A|B]
3660 ).
3661simple_guard_new(A, B) :-
3662 builtin_binds_b(A, C),
3663 not(( member(D, C),
3664 memberchk_eq(D, B)
3665 )).
3666dependency_reorder(A, B) :-
3667 dependency_reorder(A, [], B).
3668dependency_reorder([], A, B) :-
3669 reverse(A, B).
3670dependency_reorder([A|B], C, D) :-
3671 A=unit(_, _, E, F),
3672 ( E==fixed
3673 -> G=[A|C]
3674 ; dependency_insert(C, A, F, G)
3675 ),
3676 dependency_reorder(B, G, D).
3677dependency_insert([], A, _, [A]).
3678dependency_insert([A|B], C, D, E) :-
3679 A=unit(F, _, _, _),
3680 ( memberchk(F, D)
3681 -> E=[C, A|B]
3682 ; E=[A|G],
3683 dependency_insert(B, C, D, G)
3684 ).
3685build_units(A, B, C, D) :-
3686 build_retrieval_units(A, 1, E, C, F, D, G),
3687 build_guard_units(B, E, F, G).
3688build_retrieval_units([], A, A, B, B, C, C).
3689build_retrieval_units([A|B], C, D, E, F, G, H) :-
3690 term_variables(A, I),
3691 update_unit_dictionary(I, C, E, J, [], K),
3692 G=[unit(C, A, fixed, K)|L],
3693 M is C+1,
3694 build_retrieval_units(B,
3695 M,
3696 D,
3697 J,
3698 F,
3699 L,
3700 H).
3701initialize_unit_dictionary(A, B) :-
3702 term_variables(A, C),
3703 pair_all_with(C, 0, B).
3704update_unit_dictionary([], _, A, A, B, B).
3705update_unit_dictionary([A|B], C, D, E, F, G) :-
3706 ( lookup_eq(D, A, H)
3707 -> ( ( H==C
3708 ; memberchk(H, F)
3709 )
3710 -> I=F
3711 ; I=[H|F]
3712 ),
3713 J=D
3714 ; J=[A-C|D],
3715 I=F
3716 ),
3717 update_unit_dictionary(B, C, J, E, I, G).
3718build_guard_units(A, B, C, D) :-
3719 ( A=[E]
3720 -> D=[unit(B, E, fixed, [])]
3721 ; A=[E|F]
3722 -> term_variables(E, G),
3723 update_unit_dictionary2(G, B, C, H, [], I),
3724 D=[unit(B, E, movable, I)|J],
3725 K is B+1,
3726 build_guard_units(F, K, H, J)
3727 ).
3728update_unit_dictionary2([], _, A, A, B, B).
3729update_unit_dictionary2([A|B], C, D, E, F, G) :-
3730 ( lookup_eq(D, A, H)
3731 -> ( ( H==C
3732 ; memberchk(H, F)
3733 )
3734 -> I=F
3735 ; I=[H|F]
3736 ),
3737 J=[A-C|D]
3738 ; J=[A-C|D],
3739 I=F
3740 ),
3741 update_unit_dictionary2(B, C, J, E, I, G).
3742functional_dependency_analysis(A) :-
3743 ( fail,
3744 chr_pp_flag(functional_dependency_analysis, on)
3745 -> functional_dependency_analysis_main(A)
3746 ; true
3747 ).
3748functional_dependency_analysis_main([]).
3749functional_dependency_analysis_main([A|B]) :-
3750 ( discover_unique_pattern(A, C, D, E, F)
3751 -> functional_dependency(C, D, E, F)
3752 ; true
3753 ),
3754 functional_dependency_analysis_main(B).
3755discover_unique_pattern(A, B/C, D, E, F) :-
3756 A=pragma(G, _, _, _, D),
3757 G=rule(H, I, J, _),
3758 ( H=[K],
3759 I=[L]
3760 -> true
3761 ; H=[K, L],
3762 I==[]
3763 -> true
3764 ),
3765 check_unique_constraints(K, L, J, D, M),
3766 term_variables(K, N),
3767 \+ ( member(O, N),
3768 lookup_eq(M, O, P),
3769 memberchk_eq(P, N)
3770 ),
3771 select_pragma_unique_variables(N, M, Q),
3772 copy_term_nat(K-Q, E-F),
3773 functor(K, B, C).
3774select_pragma_unique_variables([], _, []).
3775select_pragma_unique_variables([A|B], C, D) :-
3776 ( lookup_eq(C, A, _)
3777 -> D=E
3778 ; D=[A|E]
3779 ),
3780 select_pragma_unique_variables(B, C, E).
3781set_semantics_rules(A) :-
3782 ( fail,
3783 chr_pp_flag(set_semantics_rule, on)
3784 -> set_semantics_rules_main(A)
3785 ; true
3786 ).
3787set_semantics_rules_main([]).
3788set_semantics_rules_main([A|B]) :-
3789 set_semantics_rule_main(A),
3790 set_semantics_rules_main(B).
3791set_semantics_rule_main(A) :-
3792 A=pragma(B, C, _, _, D),
3793 ( B=rule([E], [F], true, _),
3794 C=ids([G], [H]),
3795 \+ is_passive(D, G),
3796 functor(E, I, J),
3797 get_functional_dependency(I/J, D, K, L),
3798 copy_term_nat(K-L, E-M),
3799 copy_term_nat(K-L, F-N),
3800 M==N
3801 -> passive(D, H)
3802 ; true
3803 ).
3804check_unique_constraints(A, B, C, D, E) :-
3805 \+ any_passive_head(D),
3806 variable_replacement(A-B, B-A, E),
3807 copy_with_variable_replacement(C, F, E),
3808 negate_b(C, G),
3809 once(entails_b(G, F)).
3810symmetry_analysis(A) :-
3811 ( chr_pp_flag(check_unnecessary_active, off)
3812 -> true
3813 ; symmetry_analysis_main(A)
3814 ).
3815symmetry_analysis_main([]).
3816symmetry_analysis_main([A|B]) :-
3817 A=pragma(C, ids(D, E), _, _, F),
3818 C=rule(G, H, _, _),
3819 ( ( \+ chr_pp_flag(check_unnecessary_active, simplification)
3820 ; H==[]
3821 ),
3822 G\==[]
3823 -> symmetry_analysis_heads_simplification(G,
3824 D,
3825 [],
3826 [],
3827 C,
3828 F),
3829 symmetry_analysis_heads_propagation(H,
3830 E,
3831 [],
3832 [],
3833 C,
3834 F)
3835 ; true
3836 ),
3837 symmetry_analysis_main(B).
3838symmetry_analysis_heads_simplification([], [], _, _, _, _).
3839symmetry_analysis_heads_simplification([A|B], [C|D], E, F, G, H) :-
3840 ( \+ is_passive(H, C),
3841 member2(E, F, I-J),
3842 \+ is_passive(H, J),
3843 variable_replacement(I, A, K),
3844 copy_with_variable_replacement(G, L, K),
3845 identical_guarded_rules(G, L)
3846 -> passive(H, C)
3847 ; true
3848 ),
3849 symmetry_analysis_heads_simplification(B,
3850 D,
3851 [A|E],
3852 [C|F],
3853 G,
3854 H).
3855symmetry_analysis_heads_propagation([], [], _, _, _, _).
3856symmetry_analysis_heads_propagation([A|B], [C|D], E, F, G, H) :-
3857 ( \+ is_passive(H, C),
3858 member2(E, F, I-J),
3859 \+ is_passive(H, J),
3860 variable_replacement(I, A, K),
3861 copy_with_variable_replacement(G, L, K),
3862 identical_rules(G, L)
3863 -> passive(H, C)
3864 ; true
3865 ),
3866 symmetry_analysis_heads_propagation(B,
3867 D,
3868 [A|E],
3869 [C|F],
3870 G,
3871 H).
3872simplification_code(A, B, C, D, E, F, G, H, I, J) :-
3873 E=pragma(K, _, _, _, L),
3874 head_info1(A, F, _, M, N, O),
3875 build_head(F, H, N, P),
3876 get_constraint_mode(F, Q),
3877 head_arg_matches(O, Q, [], R, S, [], T),
3878 guard_splitting(K, U),
3879 ( is_stored_in_guard(F, L)
3880 -> V=[_|U]
3881 ; V=U
3882 ),
3883 guard_via_reschedule_new(C,
3884 V,
3885 A,
3886 W,
3887 X,
3888 Y),
3889 rest_heads_retrieval_and_matching(C,
3890 D,
3891 A,
3892 X,
3893 Z,
3894 S,
3895 A1,
3896 [],
3897 [],
3898 [],
3899 T,
3900 _),
3901 guard_body_copies3(K, V, A1, W, B1),
3902 ( is_stored_in_guard(F, L)
3903 -> gen_occ_allocation_in_guard(F,
3904 G,
3905 C1,
3906 M,
3907 D1),
3908 gen_uncond_attach_goal(F, M, C1, E1, _),
3909 W=[F1|_],
3910 F1=(D1, E1)
3911 ; true
3912 ),
3913 partner_constraint_detachments(Z, C, A1, G1),
3914 active_constraint_detachment(H, M, A, A1, H1),
3915 ( chr_pp_flag(debugable, on)
3916 -> K=rule(_, _, I1, J1),
3917 my_term_copy(I1-J1, A1, K1-L1),
3918 sort_by_key([M|Z], [B|D], M1),
3919 N1='chr debug_event'(try(M1, [], K1, L1)),
3920 O1='chr debug_event'(apply(M1, [], K1, L1)),
3921 instrument_goal(P1, N1, O1, Q1)
3922 ; Q1=P1
3923 ),
3924 actual_cut(F, G, P1),
3925 R1=(P:-R, Y, Q1, G1, H1, B1),
3926 add_location(R1, L, S1),
3927 I=[S1|J].
3928actual_cut(A, B, C) :-
3929 ( unconditional_occurrence(A, B),
3930 chr_pp_flag(late_allocation, on)
3931 -> C=true
3932 ; C=!
3933 ).
3934add_location(A, B, C) :-
3935 ( chr_pp_flag(line_numbers, on)
3936 -> get_line_number(B, D:E),
3937 C='$source_location'(D, E):A
3938 ; C=A
3939 ).
3940add_dummy_location(A, B) :-
3941 ( chr_pp_flag(line_numbers, on)
3942 -> get_chr_source_file(C),
3943 B='$source_location'(C, 1):A
3944 ; B=A
3945 ).
3946head_arg_matches(A, B, C, D, E) :-
3947 head_arg_matches(A, B, C, D, E, [], _).
3948head_arg_matches(A, B, C, D, E, F, G) :-
3949 head_arg_matches_(A, B, C, F, H, E, G),
3950 list2conj(H, D).
3951head_arg_matches_([], [], A, B, [], A, B).
3952head_arg_matches_([silent(A-_)|B], [C|D], E, F, G, H, I) :-
3953 !,
3954 ( C==(+)
3955 -> term_variables(A, J, F),
3956 head_arg_matches_(B,
3957 D,
3958 E,
3959 J,
3960 G,
3961 H,
3962 I)
3963 ; head_arg_matches_(B,
3964 D,
3965 E,
3966 F,
3967 G,
3968 H,
3969 I)
3970 ).
3971head_arg_matches_([A-B|C], [D|E], F, G, H, I, J) :-
3972 ( var(A)
3973 -> ( lookup_eq(F, A, K)
3974 -> ( D=(+)
3975 -> ( memberchk_eq(A, G)
3976 -> H=[B=K|L],
3977 M=G
3978 ; H=[B==K|L],
3979 M=[A|G]
3980 )
3981 ; H=[B==K|L],
3982 M=G
3983 ),
3984 N=F
3985 ; N=[A-B|F],
3986 H=L,
3987 ( D=(+)
3988 -> M=[A|G]
3989 ; M=G
3990 )
3991 ),
3992 O=C,
3993 P=E
3994 ; ground(A),
3995 A='$chr_identifier_match'(Q, R)
3996 -> identifier_label_atom(R, B, Q, S),
3997 H=[S|L],
3998 F=N,
3999 M=G,
4000 O=C,
4001 P=E
4002 ; atomic(A)
4003 -> ( D=(+)
4004 -> H=[B=A|L]
4005 ; H=[B==A|L]
4006 ),
4007 F=N,
4008 M=G,
4009 O=C,
4010 P=E
4011 ; D==(+),
4012 is_ground(G, A)
4013 -> copy_with_variable_replacement(A, T, F),
4014 H=[B=T|L],
4015 F=N,
4016 M=G,
4017 O=C,
4018 P=E
4019 ; D==(?),
4020 is_ground(G, A)
4021 -> copy_with_variable_replacement(A, T, F),
4022 H=[B==T|L],
4023 F=N,
4024 M=G,
4025 O=C,
4026 P=E
4027 ; A=..[_|U],
4028 functor(A, V, W),
4029 functor(X, V, W),
4030 X=..[_|Y],
4031 ( D=(+)
4032 -> H=[B=X|L]
4033 ; H=[nonvar(B), B=X|L]
4034 ),
4035 pairup(U, Y, Z),
4036 append(Z, C, O),
4037 replicate(W, D, A1),
4038 append(A1, E, P),
4039 N=F,
4040 M=G
4041 ),
4042 head_arg_matches_(O,
4043 P,
4044 N,
4045 M,
4046 L,
4047 I,
4048 J).
4049add_heads_types([], A, A).
4050add_heads_types([A|B], C, D) :-
4051 add_head_types(A, C, E),
4052 add_heads_types(B, E, D).
4053add_head_types(A, B, C) :-
4054 functor(A, D, E),
4055 get_constraint_type_det(D/E, F),
4056 A=..[_|G],
4057 add_args_types(G, F, B, C).
4058add_args_types([], [], A, A).
4059add_args_types([A|B], [C|D], E, F) :-
4060 add_arg_types(A, C, E, G),
4061 add_args_types(B, D, G, F).
4062add_arg_types(A, B, C, D) :-
4063 ( B==any
4064 -> D=C
4065 ; var(A)
4066 -> ( lookup_eq(C, A, _)
4067 -> D=C
4068 ; D=[A-B|C]
4069 )
4070 ; D=C
4071 ).
4072add_heads_ground_variables([], A, A).
4073add_heads_ground_variables([A|B], C, D) :-
4074 add_head_ground_variables(A, C, E),
4075 add_heads_ground_variables(B, E, D).
4076add_head_ground_variables(A, B, C) :-
4077 functor(A, D, E),
4078 get_constraint_mode(D/E, F),
4079 A=..[_|G],
4080 add_arg_ground_variables(G, F, B, C).
4081add_arg_ground_variables([], [], A, A).
4082add_arg_ground_variables([A|B], [C|D], E, F) :-
4083 ( C==(+)
4084 -> term_variables(A, G),
4085 add_var_ground_variables(G, E, H)
4086 ; E=H
4087 ),
4088 add_arg_ground_variables(B, D, H, F).
4089add_var_ground_variables([], A, A).
4090add_var_ground_variables([A|B], C, D) :-
4091 ( memberchk_eq(A, C)
4092 -> E=C
4093 ; E=[A|C]
4094 ),
4095 add_var_ground_variables(B, E, D).
4096is_ground(A, B) :-
4097 ( ground(B)
4098 -> true
4099 ; compound(B)
4100 -> B=..[_|C],
4101 maplist(is_ground(A), C)
4102 ; memberchk_eq(B, A)
4103 ).
4104check_ground(A, B, C) :-
4105 term_variables(B, D),
4106 check_ground_variables(D, A, C).
4107check_ground_variables([], _, true).
4108check_ground_variables([A|B], C, D) :-
4109 ( memberchk_eq(A, C)
4110 -> check_ground_variables(B, C, D)
4111 ; D=(ground(A), E),
4112 check_ground_variables(B, C, E)
4113 ).
4114rest_heads_retrieval_and_matching(A, B, C, D, E, F, G, H, I, J) :-
4115 rest_heads_retrieval_and_matching(A,
4116 B,
4117 C,
4118 D,
4119 E,
4120 F,
4121 G,
4122 H,
4123 I,
4124 J,
4125 [],
4126 _).
4127rest_heads_retrieval_and_matching(A, B, C, D, E, F, G, H, I, J, K, L) :-
4128 ( A=[_|_]
4129 -> rest_heads_retrieval_and_matching_n(A,
4130 B,
4131 H,
4132 I,
4133 C,
4134 D,
4135 E,
4136 F,
4137 G,
4138 J,
4139 K,
4140 L)
4141 ; D=[],
4142 E=[],
4143 F=G,
4144 K=L
4145 ).
4146rest_heads_retrieval_and_matching_n([], _, _, _, _, [], [], A, A, _, B, B).
4147rest_heads_retrieval_and_matching_n([A|B], [_|C], D, E, F, [G|H], [I|J], K, L, _, M, N) :-
4148 functor(A, O, P),
4149 head_info(A, P, Q, _, _, R),
4150 get_store_type(O/P, S),
4151 ( S==default
4152 -> passive_head_via(A, [F|D], K, T, U),
4153 delay_phase_end(validate_store_type_assumptions,
4154 (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))),
4155 get_constraint_mode(O/P, X),
4156 head_arg_matches(R,
4157 X,
4158 K,
4159 Y,
4160 Z,
4161 M,
4162 A1),
4163 B1=R,
4164 sbag_member_call(I, U, C1),
4165 D1=(T, C1, I=V, W),
4166 inline_matching_goal(Y, E1)
4167 ; delay_phase_end(validate_store_type_assumptions,
4168 (static_suspension_term(O/P, V), get_static_suspension_term_field(arguments, O/P, V, Q))),
4169 existential_lookup(S,
4170 A,
4171 [F|D],
4172 K,
4173 M,
4174 V,
4175 D1,
4176 I,
4177 R,
4178 B1),
4179 get_constraint_mode(O/P, X),
4180 F1=X,
4181 head_arg_matches(B1,
4182 F1,
4183 K,
4184 Y,
4185 Z,
4186 M,
4187 A1),
4188 filter_append(B1, Z, G1),
4189 translate(A1, G1, H1),
4190 translate(A1, Z, I1),
4191 inline_matching_goal(Y, E1, H1, I1)
4192 ),
4193 different_from_other_susps(A, I, D, E, J1),
4194 G=(D1, J1, E1),
4195 rest_heads_retrieval_and_matching_n(B,
4196 C,
4197 [A|D],
4198 [I|E],
4199 F,
4200 H,
4201 J,
4202 Z,
4203 L,
4204 _,
4205 A1,
4206 N).
4207inline_matching_goal(A, B) :-
4208 inline_matching_goal(A, B, [], []).
4209inline_matching_goal(A==B, true, C, D) :-
4210 memberchk_eq(A, C),
4211 memberchk_eq(B, D),
4212 A=B,
4213 !.
4214inline_matching_goal((A, B), (C, D), E, F) :-
4215 !,
4216 inline_matching_goal(A, C, E, F),
4217 inline_matching_goal(B, D, E, F).
4218inline_matching_goal(A, A, _, _).
4219filter_mode([], _, _, []).
4220filter_mode([A-B|C], [_-D|E], [F|G], H) :-
4221 ( B==D
4222 -> H=[F|I],
4223 filter_mode(C, E, G, I)
4224 ; filter_mode([A-B|C], E, G, H)
4225 ).
4226filter_append([], A, A).
4227filter_append([A|B], C, D) :-
4228 ( A=silent(_)
4229 -> filter_append(B, C, D)
4230 ; D=[A|E],
4231 filter_append(B, C, E)
4232 ).
4233check_unique_keys([], _).
4234check_unique_keys([A|B], C) :-
4235 lookup_eq(C, A, _),
4236 check_unique_keys(B, C).
4237different_from_other_susps(A, B, C, D, E) :-
4238 different_from_other_susps_(C, D, A, B, F),
4239 list2conj(F, E).
4240different_from_other_susps_(_, [], _, _, []) :-
4241 !.
4242different_from_other_susps_([A|B], [C|D], E, F, G) :-
4243 ( functor(E, H, I),
4244 functor(A, H, I),
4245 copy_term_nat(A-E, J-K),
4246 \+ \+ J=K
4247 -> G=[F\==C|L]
4248 ; G=L
4249 ),
4250 different_from_other_susps_(B, D, E, F, L).
4251passive_head_via(A, B, C, D, E) :-
4252 functor(A, F, G),
4253 get_constraint_index(F/G, _),
4254 common_variables(A, B, H),
4255 ground_vars([A], I),
4256 list_difference_eq(H, I, J),
4257 global_list_store_name(F/G, K),
4258 L=nb_getval(K, E),
4259 get_constraint_mode(F/G, M),
4260 ( N==[]
4261 -> D=L
4262 ; member(O, J),
4263 nth1(P, M, -),
4264 arg(P, A, Q),
4265 Q==O
4266 -> translate([O], C, [R]),
4267 gen_get_mod_constraints(F/G, R, S, E),
4268 D=S
4269 ; translate(J, C, N),
4270 add_heads_types(B, [], T),
4271 my_term_copy(T, C, U),
4272 gen_get_mod_constraints(F/G,
4273 N,
4274 U,
4275 V,
4276 S,
4277 E),
4278 D=(V->S;L)
4279 ).
4280common_variables(A, B, C) :-
4281 term_variables(A, D),
4282 term_variables(B, E),
4283 intersect_eq(D, E, C).
4284gen_get_mod_constraints(A, B, C, D, E, F) :-
4285 via_goal(B, C, D, G),
4286 get_target_module(H),
4287 E=(get_attr(G, H, I), J),
4288 get_max_constraint_index(K),
4289 ( K==1
4290 -> J=true,
4291 F=I
4292 ; get_constraint_index(A, L),
4293 get_suspensions(K, L, I, J, F)
4294 ).
4295via_goal(A, B, C, D) :-
4296 ( A=[]
4297 -> C=fail
4298 ; A=[E]
4299 -> lookup_type(B, E, F),
4300 ( atomic_type(F)
4301 -> C=var(E),
4302 E=D
4303 ; C='chr newvia_1'(E, D)
4304 )
4305 ; A=[E, G]
4306 -> C='chr newvia_2'(E, G, D)
4307 ; C='chr newvia'(A, D)
4308 ).
4309lookup_type(A, B, C) :-
4310 ( lookup_eq(A, B, C)
4311 -> true
4312 ; C=any
4313 ).
4314gen_get_mod_constraints(A, B, C, D) :-
4315 get_target_module(E),
4316 C=(get_attr(B, E, F), G),
4317 get_max_constraint_index(H),
4318 ( H==1
4319 -> G=true,
4320 D=F
4321 ; get_constraint_index(A, I),
4322 get_suspensions(H, I, F, G, D)
4323 ).
4324guard_body_copies(A, B, C, D) :-
4325 guard_body_copies2(A, B, E, D),
4326 list2conj(E, C).
4327guard_body_copies2(A, B, C, D) :-
4328 A=rule(_, E, F, G),
4329 conj2list(F, H),
4330 split_off_simple_guard(H, B, I, J),
4331 my_term_copy(I-J, B, K, L-M),
4332 append(L, [N], C),
4333 term_variables(J, O),
4334 term_variables(M, P),
4335 ground_vars(E, Q),
4336 list_difference_eq(O, Q, R),
4337 ( chr_pp_flag(guard_locks, off)
4338 -> S=[],
4339 T=[]
4340 ; bagof(U-V,
4341 W^X^(lists:member(W, R), pairlist:lookup_eq(B, W, X), memberchk_eq(X, P), chr_lock(X, U), chr_unlock(X, V)),
4342 Y)
4343 -> once(pairup(S, T, Y))
4344 ; S=[],
4345 T=[]
4346 ),
4347 list2conj(S, Z),
4348 list2conj(T, A1),
4349 list2conj(M, B1),
4350 N=(Z, B1, A1),
4351 my_term_copy(G, K, D).
4352split_off_simple_guard([], _, [], []).
4353split_off_simple_guard([A|B], C, D, E) :-
4354 ( simple_guard(A, C)
4355 -> D=[A|F],
4356 split_off_simple_guard(B, C, F, E)
4357 ; D=[],
4358 E=[A|B]
4359 ).
4360simple_guard(A, B) :-
4361 binds_b(A, C),
4362 \+ ( member(D, C),
4363 lookup_eq(B, D, _)
4364 ).
4365active_constraint_detachment(A, B, C, D, E) :-
4366 functor(C, F, G),
4367 H=F/G,
4368 ( is_stored(H)
4369 -> ( ( A==[0],
4370 chr_pp_flag(store_in_guards, off)
4371 ; get_allocation_occurrence(H, I),
4372 get_max_occurrence(H, J),
4373 J<I
4374 ),
4375 only_ground_indexed_arguments(H),
4376 chr_pp_flag(late_allocation, on)
4377 -> E=true
4378 ; gen_uncond_susp_detachment(C,
4379 B,
4380 active,
4381 D,
4382 K),
4383 ( chr_pp_flag(late_allocation, on)
4384 -> E=(var(B)->true;K)
4385 ; E=K
4386 )
4387 )
4388 ; E=true
4389 ).
4390partner_constraint_detachments([], [], _, true).
4391partner_constraint_detachments([A|B], [C|D], E, (F, G)) :-
4392 gen_uncond_susp_detachment(C, A, partner, E, F),
4393 partner_constraint_detachments(B, D, E, G).
4394gen_uncond_susp_detachment(A, B, C, D, E) :-
4395 functor(A, F, G),
4396 H=F/G,
4397 ( is_stored(H)
4398 -> E=(I, J),
4399 ( chr_pp_flag(debugable, on)
4400 -> I='chr debug_event'(remove(B))
4401 ; I=true
4402 ),
4403 remove_constraint_goal(H,
4404 B,
4405 K,
4406 true,
4407 (L, M),
4408 C,
4409 J),
4410 delete_constraint_goal(A, B, D, L),
4411 ( \+ only_ground_indexed_arguments(H),
4412 \+ get_store_type(H, var_assoc_store(_, _))
4413 -> detach_constraint_atom(H, K, B, M)
4414 ; M=true
4415 )
4416 ; E=true
4417 ).
4418simpagation_head1_code(A, B, C, D, E, F/G, _, H, I, J) :-
4419 E=pragma(K, ids(_, L), _, _, M),
4420 K=rule(_, N, O, P),
4421 head_info(A, G, Q, R, S, T),
4422 get_constraint_mode(F/G, U),
4423 head_arg_matches(T, U, [], V, W, [], X),
4424 build_head(F, G, H, S, Y),
4425 append(C, N, Z),
4426 append(D, L, A1),
4427 reorder_heads(M, A, Z, A1, B1, C1),
4428 guard_splitting(K, D1),
4429 ( is_stored_in_guard(F/G, M)
4430 -> E1=[_|D1]
4431 ; E1=D1
4432 ),
4433 guard_via_reschedule_new(B1,
4434 E1,
4435 A,
4436 F1,
4437 G1,
4438 H1),
4439 rest_heads_retrieval_and_matching(B1,
4440 C1,
4441 A,
4442 G1,
4443 I1,
4444 W,
4445 J1,
4446 [],
4447 [],
4448 [],
4449 X,
4450 _),
4451 split_by_ids(C1,
4452 I1,
4453 D,
4454 K1,
4455 L1,
4456 M1,
4457 N1),
4458 guard_body_copies3(K, E1, J1, F1, O1),
4459 ( is_stored_in_guard(F/G, M)
4460 -> gen_uncond_attach_goal(F/G,
4461 R,
4462 Q,
4463 P1,
4464 _),
4465 F1=[Q1|_],
4466 Q1=P1
4467 ; true
4468 ),
4469 sort_by_key(K1, L1, R1),
4470 partner_constraint_detachments(R1, C, J1, S1),
4471 active_constraint_detachment(H, R, A, J1, T1),
4472 ( chr_pp_flag(debugable, on)
4473 -> my_term_copy(O-P, J1, U1-V1),
4474 sort_by_key([R|K1], [B|L1], W1),
4475 sort_by_key(M1, N1, X1),
4476 Y1='chr debug_event'(try(W1, X1, U1, V1)),
4477 Z1='chr debug_event'(apply(W1, X1, U1, V1)),
4478 instrument_goal(!, Y1, Z1, A2)
4479 ; A2=!
4480 ),
4481 B2=(Y:-V, H1, A2, S1, T1, O1),
4482 add_location(B2, M, C2),
4483 I=[C2|J].
4484split_by_ids([], [], _, [], []).
4485split_by_ids([A|B], [C|D], E, F, G) :-
4486 ( memberchk_eq(A, E)
4487 -> F=[C|H],
4488 G=I
4489 ; F=H,
4490 G=[C|I]
4491 ),
4492 split_by_ids(B, D, E, H, I).
4493split_by_ids([], [], _, [], [], [], []).
4494split_by_ids([A|B], [C|D], E, F, G, H, I) :-
4495 ( memberchk_eq(A, E)
4496 -> F=[C|J],
4497 G=[A|K],
4498 H=L,
4499 I=M
4500 ; F=J,
4501 G=K,
4502 H=[C|L],
4503 I=[A|M]
4504 ),
4505 split_by_ids(B, D, E, J, K, L, M).
4506simpagation_head2_code(A, B, C, D, E, F, G, H, I, J) :-
4507 E=pragma(K, ids(L, M), _, _, N),
4508 K=rule(O, _, P, Q),
4509 append(O, C, R),
4510 append(L, D, S),
4511 reorder_heads(N,
4512 A,
4513 R,
4514 S,
4515 [T|U],
4516 [V|W]),
4517 simpagation_head2_prelude(A,
4518 T,
4519 [U, P, Q],
4520 F,
4521 G,
4522 H,
4523 I,
4524 X),
4525 extend_id(H, Y),
4526 ( memberchk_eq(V, M)
4527 -> simpagation_universal_searches(U,
4528 W,
4529 M,
4530 [T, A],
4531 K,
4532 F,
4533 G,
4534 Z,
4535 A1,
4536 B1,
4537 Y,
4538 C1,
4539 X,
4540 D1)
4541 ; X=D1,
4542 Y=C1,
4543 Z=U,
4544 A1=[T, A],
4545 B1=W
4546 ),
4547 universal_search_iterator_end(A1,
4548 Z,
4549 K,
4550 F,
4551 G,
4552 C1,
4553 D1,
4554 E1),
4555 simpagation_head2_worker(A1,
4556 Z,
4557 B1,
4558 B,
4559 E,
4560 F,
4561 G,
4562 C1,
4563 E1,
4564 J).
4565simpagation_universal_searches([], [], _, A, _, _, _, [], A, [], B, B, C, C).
4566simpagation_universal_searches(A, [B|C], D, E, F, G, H, I, J, K, L, M, N, O) :-
4567 A=[P|Q],
4568 inc_id(L, R),
4569 universal_search_iterator_end(E,
4570 A,
4571 F,
4572 G,
4573 H,
4574 L,
4575 N,
4576 S),
4577 universal_search_iterator(A,
4578 E,
4579 F,
4580 G,
4581 H,
4582 L,
4583 S,
4584 T),
4585 ( memberchk_eq(B, D)
4586 -> simpagation_universal_searches(Q,
4587 C,
4588 D,
4589 [P|E],
4590 F,
4591 G,
4592 H,
4593 I,
4594 J,
4595 K,
4596 R,
4597 M,
4598 T,
4599 O)
4600 ; M=R,
4601 T=O,
4602 I=Q,
4603 J=[P|E],
4604 C=K
4605 ).
4606simpagation_head2_prelude(A, B, C, D/E, F, G, H, I) :-
4607 head_info(A, E, J, K, L, M),
4608 build_head(D, E, G, L, N),
4609 get_constraint_mode(D/E, O),
4610 head_arg_matches(M, O, [], P, Q, [], R),
4611 lookup_passive_head(B, [A], Q, R, S, T),
4612 gen_occ_allocation(D/E, F, J, K, U),
4613 extend_id(G, V),
4614 extra_active_delegate_variables(A,
4615 [B|C],
4616 Q,
4617 W),
4618 append([T|L], W, X),
4619 build_head(D, E, [F|V], X, Y),
4620 Z=(N:-P, S, !, U, Y),
4621 add_dummy_location(Z, A1),
4622 H=[A1|I].
(A, B, C, D) :-
4624 A=..[_|E],
4625 delegate_variables(A, B, C, E, D).
4626passive_delegate_variables(A, B, C, D, E) :-
4627 term_variables(B, F),
4628 delegate_variables(A, C, D, F, E).
4629delegate_variables(A, B, C, D, E) :-
4630 term_variables(A, F),
4631 term_variables(B, G),
4632 intersect_eq(F, G, H),
4633 list_difference_eq(H, D, I),
4634 translate(I, C, E).
4635simpagation_head2_worker([A|B], C, D, _, E, F/G, H, I, J, K) :-
4636 E=pragma(L, ids(M, _), N, _, O),
4637 L=rule(_, _, P, Q),
4638 get_prop_inner_loop_vars(B,
4639 [A, C, P, Q],
4640 R,
4641 S,
4642 T,
4643 U,
4644 V),
4645 gen_var(W),
4646 gen_var(X),
4647 functor(A, Y, Z),
4648 gen_vars(Z, A1),
4649 head_info(A, Z, A1, W, _, B1),
4650 get_constraint_mode(Y/Z, C1),
4651 head_arg_matches(B1, C1, S, D1, E1, [], _),
4652 delay_phase_end(validate_store_type_assumptions,
4653 (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))),
4654 different_from_other_susps(A, W, B, V, H1),
4655 I1=(W=F1, G1, H1, D1),
4656 J1=[[W|X]|R],
4657 build_head(F, G, [H|I], J1, K1),
4658 guard_splitting(L, L1),
4659 ( is_stored_in_guard(F/G, O)
4660 -> M1=[_|L1]
4661 ; M1=L1
4662 ),
4663 guard_via_reschedule_new(C,
4664 M1,
4665 [A|B],
4666 N1,
4667 O1,
4668 P1),
4669 rest_heads_retrieval_and_matching(C,
4670 D,
4671 [A|B],
4672 O1,
4673 Q1,
4674 E1,
4675 R1,
4676 [A|B],
4677 [W|V],
4678 []),
4679 split_by_ids(D, Q1, M, S1, T1),
4680 split_by_ids(D, C, M, U1, _),
4681 partner_constraint_detachments([W|S1],
4682 [A|U1],
4683 R1,
4684 V1),
4685 W1=[X|R],
4686 build_head(F, G, [H|I], W1, X1),
4687 Y1=[[]|R],
4688 build_head(F, G, [H|I], Y1, Z1),
4689 guard_body_copies3(L, M1, R1, N1, A2),
4690 ( is_stored_in_guard(F/G, O)
4691 -> N1=[B2|_]
4692 ; true
4693 ),
4694 ( is_observed(F/G, H)
4695 -> gen_uncond_attach_goal(F/G,
4696 T,
4697 U,
4698 C2,
4699 D2),
4700 gen_state_cond_call(T,
4701 F/G,
4702 X1,
4703 D2,
4704 E2),
4705 gen_state_cond_call(T,
4706 F/G,
4707 Z1,
4708 D2,
4709 F2)
4710 ; C2=true,
4711 E2=X1,
4712 F2=Z1
4713 ),
4714 ( chr_pp_flag(debugable, on)
4715 -> my_term_copy(P-Q, S, G2-H2),
4716 I2='chr debug_event'(try([W|S1], [T|T1], G2, H2)),
4717 J2='chr debug_event'(apply([W|S1], [T|T1], G2, H2))
4718 ; I2=true,
4719 J2=true
4720 ),
4721 ( is_stored_in_guard(F/G, O)
4722 -> B2=C2,
4723 K2=true
4724 ; B2=true,
4725 K2=C2
4726 ),
4727 ( member(unique(_, L2), N),
4728 check_unique_keys(L2, S)
4729 -> M2=(K1:-I1->(P1, I2->J2, V1, K2, A2, F2;Z1);X1)
4730 ; M2=(K1:-I1, P1, I2->J2, V1, K2, A2, E2;X1)
4731 ),
4732 add_location(M2, O, N2),
4733 J=[N2|K].
4734gen_state_cond_call(A, B, C, D, E) :-
4735 ( may_trigger(B)
4736 -> does_use_field(B, generation),
4737 delay_phase_end(validate_store_type_assumptions,
4738 (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)))
4739 ; delay_phase_end(validate_store_type_assumptions,
4740 (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))),
4741 I=true
4742 ),
4743 E=(A=F, G, I->H, C;true).
4744propagation_code(A, B, C, D, E, F, G, H, I, J, K) :-
4745 ( C==[]
4746 -> propagation_single_headed(A,
4747 B,
4748 E,
4749 F,
4750 G,
4751 H,
4752 I,
4753 J,
4754 K)
4755 ; propagation_multi_headed(A,
4756 C,
4757 D,
4758 E,
4759 F,
4760 G,
4761 H,
4762 I,
4763 J,
4764 K)
4765 ).
4766propagation_single_headed(A, _, B, C, D/E, F, G, H, I) :-
4767 head_info(A, E, J, K, L, M),
4768 build_head(D, E, G, L, N),
4769 inc_id(G, O),
4770 build_head(D, E, O, L, P),
4771 get_constraint_mode(D/E, Q),
4772 head_arg_matches(M, Q, [], R, S, [], _),
4773 guard_body_copies(B, S, T, U),
4774 V=P,
4775 actual_cut(D/E, F, W),
4776 B=rule(_, _, X, Y),
4777 ( chr_pp_flag(debugable, on)
4778 -> my_term_copy(X-Y, S, Z-A1),
4779 B1='chr debug_event'(try([], [K], Z, A1)),
4780 C1='chr debug_event'(apply([], [K], Z, A1)),
4781 instrument_goal(W, B1, C1, D1)
4782 ; D1=W
4783 ),
4784 ( may_trigger(D/E),
4785 \+ has_no_history(C)
4786 -> use_auxiliary_predicate(novel_production),
4787 use_auxiliary_predicate(extend_history),
4788 does_use_history(D/E, F),
4789 gen_occ_allocation(D/E, F, J, K, E1),
4790 ( named_history(C, F1, G1)
4791 -> ( G1==[]
4792 -> empty_named_history_novel_production(F1, H1),
4793 empty_named_history_extend_history(F1, I1)
4794 ; J1=F1
4795 )
4796 ; J1=C
4797 ),
4798 ( var(H1)
4799 -> H1='$novel_production'(K, J1),
4800 I1='$extend_history'(K, J1)
4801 ; true
4802 ),
4803 ( is_observed(D/E, F)
4804 -> gen_uncond_attach_goal(D/E,
4805 K,
4806 J,
4807 K1,
4808 L1),
4809 gen_state_cond_call(K,
4810 D/E,
4811 V,
4812 L1,
4813 M1)
4814 ; K1=true,
4815 M1=V
4816 )
4817 ; E1=true,
4818 H1=true,
4819 I1=true,
4820 ( is_observed(D/E, F)
4821 -> get_allocation_occurrence(D/E, N1),
4822 ( F==N1
4823 -> gen_insert_constraint_internal_goal(D/E,
4824 K1,
4825 L,
4826 J,
4827 K),
4828 L1=0
4829 ; K1=(O1, P1),
4830 gen_occ_allocation(D/E,
4831 F,
4832 J,
4833 K,
4834 O1),
4835 gen_uncond_attach_goal(D/E,
4836 K,
4837 J,
4838 P1,
4839 L1)
4840 ),
4841 gen_state_cond_call(K,
4842 D/E,
4843 V,
4844 L1,
4845 M1)
4846 ; gen_occ_allocation(D/E,
4847 F,
4848 J,
4849 K,
4850 K1),
4851 M1=V
4852 )
4853 ),
4854 ( is_stored_in_guard(D/E, C)
4855 -> Q1=K1,
4856 R1=true
4857 ; Q1=true,
4858 R1=K1
4859 ),
4860 S1=(N:-R, E1, H1, Q1, T, D1, I1, R1, U, M1),
4861 add_location(S1, C, T1),
4862 H=[T1|I].
4863propagation_multi_headed(A, B, C, D, E, F, G, H, I, J) :-
4864 B=[K|L],
4865 propagation_prelude(A,
4866 B,
4867 D,
4868 F,
4869 G,
4870 H,
4871 I,
4872 M),
4873 extend_id(H, N),
4874 propagation_nested_code(L,
4875 [K, A],
4876 C,
4877 D,
4878 E,
4879 F,
4880 G,
4881 N,
4882 M,
4883 J).
4884propagation_prelude(A, [B|C], D, E/F, G, H, I, J) :-
4885 head_info(A, F, K, L, M, N),
4886 build_head(E, F, H, M, O),
4887 get_constraint_mode(E/F, P),
4888 head_arg_matches(N, P, [], Q, R, [], S),
4889 D=rule(_, _, T, U),
4890 extra_active_delegate_variables(A,
4891 [B, C, T, U],
4892 R,
4893 V),
4894 lookup_passive_head(B, [A], R, S, W, X),
4895 gen_occ_allocation(E/F, G, K, L, Y),
4896 extend_id(H, Z),
4897 append([X|M], V, A1),
4898 build_head(E, F, [G|Z], A1, B1),
4899 C1=B1,
4900 D1=(O:-Q, W, !, Y, C1),
4901 add_dummy_location(D1, E1),
4902 I=[E1|J].
4903propagation_nested_code([], [A|B], C, D, E, F, G, H, I, J) :-
4904 universal_search_iterator_end([A|B],
4905 [],
4906 D,
4907 F,
4908 G,
4909 H,
4910 I,
4911 K),
4912 propagation_body(A,
4913 B,
4914 C,
4915 D,
4916 E,
4917 F,
4918 G,
4919 H,
4920 K,
4921 J).
4922propagation_nested_code([A|B], C, D, E, F, G, H, I, J, K) :-
4923 universal_search_iterator_end(C,
4924 [A|B],
4925 E,
4926 G,
4927 H,
4928 I,
4929 J,
4930 L),
4931 universal_search_iterator([A|B],
4932 C,
4933 E,
4934 G,
4935 H,
4936 I,
4937 L,
4938 M),
4939 inc_id(I, N),
4940 propagation_nested_code(B,
4941 [A|C],
4942 D,
4943 E,
4944 F,
4945 G,
4946 H,
4947 N,
4948 M,
4949 K).
4950check_fd_lookup_condition(A, B, _, _) :-
4951 get_store_type(A/B, global_singleton),
4952 !.
4953check_fd_lookup_condition(A, B, C, D) :-
4954 \+ may_trigger(A/B),
4955 get_functional_dependency(A/B, 1, E, F),
4956 copy_term(E-F, C-G),
4957 term_variables(D, H),
4958 intersect_eq(G, H, G),
4959 !.
4960propagation_body(A, B, C, D, E, F/G, H, I, J, K) :-
4961 D=rule(_, L, M, N),
4962 gen_var_susp_list_for_b(B,
4963 [A, M, N],
4964 O,
4965 P,
4966 Q,
4967 R,
4968 S),
4969 flatten(P, T),
4970 init(R, U),
4971 last(R, V),
4972 gen_var(W),
4973 gen_var(X),
4974 functor(A, Y, Z),
4975 gen_vars(Z, A1),
4976 delay_phase_end(validate_store_type_assumptions,
4977 (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))),
4978 D1=(W=B1, C1),
4979 E1=[[W|X]|T],
4980 build_head(F, G, [H|I], E1, F1),
4981 ( check_fd_lookup_condition(Y, Z, A, B)
4982 -> universal_search_iterator_failure_vars(B,
4983 I,
4984 P,
4985 Q,
4986 S,
4987 G1,
4988 H1),
4989 I1=G1
4990 ; I1=[X|T],
4991 H1=I
4992 ),
4993 ( H1=[_]
4994 -> J1=H1
4995 ; J1=[H|H1]
4996 ),
4997 build_head(F, G, J1, I1, K1),
4998 L1=K1,
4999 A=..[_|M1],
5000 pairup(M1, A1, N1),
5001 get_constraint_mode(Y/Z, O1),
5002 head_arg_matches(N1, O1, O, P1, Q1),
5003 different_from_other_susps(A, W, B, U, R1),
5004 guard_body_copies(D, Q1, S1, T1),
5005 get_occurrence(F/G, H, _, U1),
5006 ( is_observed(F/G, H)
5007 -> init(Q, V1),
5008 gen_uncond_attach_goal(F/G,
5009 V,
5010 V1,
5011 W1,
5012 X1),
5013 gen_state_cond_call(V,
5014 F/G,
5015 L1,
5016 X1,
5017 Y1)
5018 ; W1=true,
5019 Y1=L1
5020 ),
5021 ( ( is_least_occurrence(E)
5022 ; has_no_history(E)
5023 )
5024 -> Z1=true,
5025 A2=true
5026 ; \+ may_trigger(F/G),
5027 maplist(is_passive(E), C)
5028 -> Z1=true,
5029 A2=true
5030 ; get_occurrence(F/G, H, _, U1),
5031 use_auxiliary_predicate(novel_production),
5032 use_auxiliary_predicate(extend_history),
5033 does_use_history(F/G, H),
5034 ( named_history(E, B2, C2)
5035 -> ( C2==[]
5036 -> empty_named_history_novel_production(B2, Z1),
5037 empty_named_history_extend_history(B2, A2)
5038 ; reverse([W|U], D2),
5039 named_history_susps(C2,
5040 [U1|C],
5041 [V|D2],
5042 E2),
5043 E2=[F2|_],
5044 ( length(C2, 1)
5045 -> A2='$extend_history'(F2, B2),
5046 Z1='$novel_production'(F2, B2)
5047 ; findall(G2,
5048 ( member(H2, C2),
5049 get_occurrence_from_id(G2,
5050 _,
5051 E,
5052 H2)
5053 ),
5054 I2),
5055 J2=..[t, B2|E2]
5056 )
5057 )
5058 ; F2=V,
5059 maplist(extract_symbol, L, I2),
5060 sort([U1|C], C2),
5061 history_susps(C,
5062 [W|U],
5063 V,
5064 U1,
5065 E2),
5066 J2=..[t, E|E2]
5067 ),
5068 ( var(Z1)
5069 -> novel_production_calls(I2,
5070 C2,
5071 E2,
5072 E,
5073 K2,
5074 L2),
5075 A2='$extend_history'(F2, K2),
5076 Z1=(K2=J2, L2)
5077 ; true
5078 )
5079 ),
5080 ( chr_pp_flag(debugable, on)
5081 -> D=rule(_, _, M, N),
5082 my_term_copy(M-N, Q1, M2-N2),
5083 get_occurrence(F/G, H, _, U1),
5084 sort_by_key([V, W|U], [U1|C], O2),
5085 P2='chr debug_event'(try([], O2, M2, N2)),
5086 Q2='chr debug_event'(apply([], O2, M2, N2))
5087 ; P2=true,
5088 Q2=true
5089 ),
5090 ( is_stored_in_guard(F/G, E)
5091 -> R2=W1,
5092 S2=true
5093 ; R2=true,
5094 S2=W1
5095 ),
5096 T2=(F1:-D1, R1, P1, Z1, R2, S1, P2->Q2, A2, S2, T1, Y1;L1),
5097 add_location(T2, E, U2),
5098 J=[U2|K].
(A, B/C) :-
5100 functor(A, B, C).
5101novel_production_calls([], [], [], _, _, true).
5102novel_production_calls([A|B], [C|D], [E|F], G, H, (I, J)) :-
5103 get_occurrence_from_id(A, K, G, C),
5104 delay_phase_end(validate_store_type_assumptions,
5105 novel_production_call(A,
5106 K,
5107 '$novel_production'(E, H),
5108 I)),
5109 novel_production_calls(B, D, F, G, H, J).
5110history_susps(A, B, C, D, E) :-
5111 reverse(B, F),
5112 sort_by_key([C|F], [D|A], E).
5113named_history_susps([], _, _, []).
5114named_history_susps([A|B], C, D, [E|F]) :-
5115 select2(A, E, C, D, G, H),
5116 !,
5117 named_history_susps(B, G, H, F).
5118gen_var_susp_list_for([A], B, C, D, E, F) :-
5119 !,
5120 functor(A, G, H),
5121 head_info(A, H, _, F, E, I),
5122 get_constraint_mode(G/H, J),
5123 head_arg_matches(I, J, [], _, C),
5124 extra_active_delegate_variables(A, B, C, K),
5125 append(E, K, D).
5126gen_var_susp_list_for([A|B], C, D, E, F, G) :-
5127 gen_var_susp_list_for(B,
5128 [A|C],
5129 H,
5130 F,
5131 _,
5132 _),
5133 functor(A, I, J),
5134 gen_var(G),
5135 head_info(A, J, _, K, _, L),
5136 get_constraint_mode(I/J, M),
5137 head_arg_matches(L, M, H, _, D),
5138 passive_delegate_variables(A, B, C, D, N),
5139 append(N, [K, G|F], E).
5140gen_var_susp_list_for_b([A], B, C, [D], E, [F], []) :-
5141 !,
5142 functor(A, G, H),
5143 head_info(A, H, _, F, E, I),
5144 get_constraint_mode(G/H, J),
5145 head_arg_matches(I, J, [], _, C),
5146 extra_active_delegate_variables(A, B, C, K),
5147 append(E, K, D).
5148gen_var_susp_list_for_b([A|B], C, D, [E|F], G, [H|I], [J|K]) :-
5149 gen_var_susp_list_for_b(B,
5150 [A|C],
5151 L,
5152 F,
5153 G,
5154 I,
5155 K),
5156 functor(A, M, N),
5157 gen_var(J),
5158 head_info(A, N, _, H, _, O),
5159 get_constraint_mode(M/N, P),
5160 head_arg_matches(O, P, L, _, D),
5161 passive_delegate_variables(A, B, C, D, Q),
5162 append(Q, [H, J], E).
5163get_prop_inner_loop_vars([A], B, C, D, E, F, []) :-
5164 !,
5165 functor(A, G, H),
5166 head_info(A, H, F, E, I, J),
5167 get_constraint_mode(G/H, K),
5168 head_arg_matches(J, K, [], _, D),
5169 extra_active_delegate_variables(A, B, D, L),
5170 append(I, L, C).
5171get_prop_inner_loop_vars([A|B], C, D, E, F, G, [H|I]) :-
5172 get_prop_inner_loop_vars(B,
5173 [A|C],
5174 J,
5175 K,
5176 F,
5177 G,
5178 I),
5179 functor(A, L, M),
5180 gen_var(N),
5181 head_info(A, M, _, H, _, O),
5182 get_constraint_mode(L/M, P),
5183 head_arg_matches(O, P, K, _, E),
5184 passive_delegate_variables(A, B, C, E, Q),
5185 append(Q, [H, N|J], D).
5186reorder_heads(A, B, C, D, E, F) :-
5187 ( chr_pp_flag(reorder_heads, on),
5188 length(C, G),
5189 G=<6
5190 -> reorder_heads_main(A, B, C, D, E, F)
5191 ; E=C,
5192 F=D
5193 ).
5194reorder_heads_main(A, B, C, D, E, F) :-
5195 term_variables(B, G),
5196 H=entry([], [], G, C, D, A),
5197 copy_term_nat(H, I),
5198 a_star(I,
5199 J^(chr_translate:final_data(J)),
5200 K^L^M^(chr_translate:expand_data(K, L, M)),
5201 N),
5202 I=H,
5203 N=entry(O, P, _, _, _, _),
5204 reverse(O, E),
5205 reverse(P, F).
5206final_data(A) :-
5207 A=entry(_, _, _, _, [], _).
5208expand_data(A, B, C) :-
5209 A=entry(D, E, F, G, H, I),
5210 select2(J, K, G, H, L, M),
5211 term_variables([J|F], N),
5212 B=entry([J|D], [K|E], N, L, M, I),
5213 order_score(J, K, F, L, I, C).
5214order_score(A, B, C, D, E, F) :-
5215 functor(A, G, H),
5216 get_store_type(G/H, I),
5217 order_score(I, A, B, C, D, E, 99999, F).
5218order_score(default, A, _, B, C, _, D, E) :-
5219 term_variables(A, F),
5220 term_variables(C, G),
5221 ground_vars([A], H),
5222 list_difference_eq(F, H, I),
5223 order_score_vars(I, B, G, J),
5224 E is min(D, J).
5225order_score(multi_inthash(A), B, _, C, _, _, D, E) :-
5226 ( D=<100
5227 -> E=D
5228 ; order_score_indexes(A, B, C, E)
5229 ).
5230order_score(multi_hash(A), B, _, C, _, _, D, E) :-
5231 ( D=<100
5232 -> E=D
5233 ; order_score_indexes(A, B, C, E)
5234 ).
5235order_score(global_ground, A, _, B, C, _, D, E) :-
5236 term_variables(A, F),
5237 term_variables(C, G),
5238 order_score_vars(F, B, G, H),
5239 I is H*200,
5240 E is min(D, I).
5241order_score(var_assoc_store(_, _), _, _, _, _, _, _, 1).
5242order_score(global_singleton, _, _, _, _, _, _, A) :-
5243 A=1.
5244order_score(multi_store(A), B, C, D, E, F, G, H) :-
5245 multi_order_score(A,
5246 B,
5247 C,
5248 D,
5249 E,
5250 F,
5251 G,
5252 H).
5253multi_order_score([], _, _, _, _, _, A, A).
5254multi_order_score([A|B], C, D, E, F, G, H, I) :-
5255 ( order_score(A,
5256 C,
5257 D,
5258 E,
5259 F,
5260 G,
5261 H,
5262 J)
5263 -> true
5264 ; J=H
5265 ),
5266 multi_order_score(B,
5267 C,
5268 D,
5269 E,
5270 F,
5271 G,
5272 J,
5273 I).
5274order_score(identifier_store(A), B, _, C, _, _, D, E) :-
5275 arg(A, B, F),
5276 memberchk_eq(F, C),
5277 E is min(D, 10).
5278order_score(type_indexed_identifier_store(A, _), B, _, C, _, _, D, E) :-
5279 arg(A, B, F),
5280 memberchk_eq(F, C),
5281 E is min(D, 10).
5282order_score_indexes(A, B, C, D) :-
5283 copy_term_nat(B+C, E+F),
5284 numbervars(F, 0, _),
5285 order_score_indexes(A, E, D).
5286order_score_indexes([A|B], C, D) :-
5287 args(A, C, E),
5288 ( maplist(ground, E)
5289 -> D=100
5290 ; order_score_indexes(B, C, D)
5291 ).
5292memberchk_eq_flip(A, B) :-
5293 memberchk_eq(B, A).
5294order_score_vars(A, B, C, D) :-
5295 order_score_count_vars(A, B, C, E-F-G),
5296 ( E-F-G==0-0-0
5297 -> D=0
5298 ; E>0
5299 -> D is max(10-E, 0)
5300 ; F>0
5301 -> D is max(10-F, 1)*100
5302 ; D is max(10-G, 1)*1000
5303 ).
5304order_score_count_vars([], _, _, 0-0-0).
5305order_score_count_vars([A|B], C, D, E-F-G) :-
5306 order_score_count_vars(B, C, D, H-I-J),
5307 ( memberchk_eq(A, C)
5308 -> E is H+1,
5309 F=I,
5310 G=J
5311 ; memberchk_eq(A, D)
5312 -> F is I+1,
5313 E=H,
5314 G=J
5315 ; G is J+1,
5316 E=H,
5317 F=I
5318 ).
5319create_get_mutable_ref(A, B, C) :-
5320 C=(B=mutable(A)).
5321create_get_mutable(A, B, C) :-
5322 B=mutable(A),
5323 C=true.
5324gen_var(_).
5325gen_vars(A, B) :-
5326 length(B, A).
5327ast_head_info1(A, B, C, D, E) :-
5328 A=chr_constraint(_/F, G, _),
5329 vars_susp(F, B, C, D),
5330 pairup(G, B, E).
5331head_info1(A, _/B, C, D, E, F) :-
5332 vars_susp(B, C, D, E),
5333 A=..[_|G],
5334 pairup(G, C, F).
5335head_info(A, B, C, D, E, F) :-
5336 vars_susp(B, C, D, E),
5337 A=..[_|G],
5338 pairup(G, C, F).
5339inc_id([A|B], [C|B]) :-
5340 C is A+1.
5341dec_id([A|B], [C|B]) :-
5342 C is A-1.
5343extend_id(A, [0|A]).
5344next_id([_, A|B], [C|B]) :-
5345 C is A+1.
5346build_head(A/B, C, D, E) :-
5347 build_head(A, B, C, D, E).
5348build_head(A, B, C, D, E) :-
5349 buildName(A, B, C, F),
5350 ( ( chr_pp_flag(debugable, on)
5351 ; is_stored(A/B),
5352 ( has_active_occurrence(A/B)
5353 ; chr_pp_flag(late_allocation, off)
5354 ),
5355 ( may_trigger(A/B)
5356 ; get_allocation_occurrence(A/B, G),
5357 get_max_occurrence(A/B, H),
5358 H>=G
5359 )
5360 )
5361 -> E=..[F|D]
5362 ; init(D, I),
5363 E=..[F|I]
5364 ).
5365buildName(A, B, C, D) :-
5366 ( ( chr_pp_flag(debugable, on)
5367 ; once(( is_stored(A/B),
5368 ( has_active_occurrence(A/B)
5369 ; chr_pp_flag(late_allocation, off)
5370 ),
5371 ( may_trigger(A/B)
5372 ; get_allocation_occurrence(A/B, E),
5373 get_max_occurrence(A/B, F),
5374 F>=E
5375 )
5376 ; C\=[0]
5377 ))
5378 )
5379 -> atom_concat(A, '___', G),
5380 atomic_concat(G, B, H),
5381 buildName_(C, H, D)
5382 ; D=A
5383 ).
5384buildName_([], A, A).
5385buildName_([A|B], C, D) :-
5386 buildName_(B, C, E),
5387 atom_concat(E, '__', F),
5388 atomic_concat(F, A, D).
5389vars_susp(A, B, C, D) :-
5390 length(B, A),
5391 append(B, [C], D).
5392or_pattern(A, B) :-
5393 C is A-1,
5394 B is 1<<C.
5395and_pattern(A, B) :-
5396 C is A-1,
5397 D is 1<<C,
5398 B is -1*(D+1).
5399make_name(A, B/C, D) :-
5400 atom_concat_list([A, B, '___', C], D).
5401make_attr(A, B, C, D) :-
5402 length(C, A),
5403 D=..[v, B|C].
5404get_all_suspensions2(A, B, C) :-
5405 chr_pp_flag(dynattr, off),
5406 !,
5407 make_attr(A, _, C, B).
5408get_all_suspensions2(A, B, C, D) :-
5409 length(D, A),
5410 C='chr all_suspensions'(D, 1, B).
5411normalize_attr(A, B, C) :-
5412 B='chr normalize_attr'(A, C).
5413get_suspensions(A, B, C, C=D, E) :-
5414 chr_pp_flag(dynattr, off),
5415 !,
5416 make_attr(A, _, F, D),
5417 nth1(B, F, E).
5418get_suspensions(_, A, B, C, D) :-
5419 C=(memberchk(A-D, B)->true;D=[]).
5420singleton_attr(A, B, C, D) :-
5421 chr_pp_flag(dynattr, off),
5422 !,
5423 or_pattern(C, E),
5424 make_attr(A, E, F, D),
5425 nth1(C, F, [B], G),
5426 set_elems(G, []).
5427singleton_attr(_, A, B, C) :-
5428 C=[B-[A]].
5429add_attr(A, B, C, D, E, F) :-
5430 chr_pp_flag(dynattr, off),
5431 !,
5432 make_attr(A, G, H, I),
5433 or_pattern(C, J),
5434 nth1(C, H, K),
5435 substitute_eq(K, H, [B|K], L),
5436 make_attr(A, G, L, M),
5437 substitute_eq(K, H, [B], N),
5438 make_attr(A, O, N, P),
5439 E=(D=I, (G/\J=:=J->F=M;O is G\/J, F=P)),
5440 !.
5441add_attr(_, A, B, C, D, E) :-
5442 D=('chr select'(C, B-F, G)->E=[B-[A|F]|G];E=[B-[A]|C]).
5443rem_attr(A, B, C, D, E, F) :-
5444 chr_pp_flag(dynattr, off),
5445 chr_pp_flag(experiment, off),
5446 !,
5447 or_pattern(D, G),
5448 and_pattern(D, H),
5449 make_attr(A, I, J, K),
5450 nth1(D, J, L),
5451 substitute_eq(L, J, [], M),
5452 make_attr(A, N, M, O),
5453 substitute_eq(L, J, P, Q),
5454 make_attr(A, I, Q, R),
5455 get_target_module(S),
5456 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)),
5457 !.
5458rem_attr(_, A, B, C, D, E) :-
5459 chr_pp_flag(dynattr, off),
5460 chr_pp_flag(experiment, on),
5461 !,
5462 or_pattern(C, F),
5463 and_pattern(C, G),
5464 H is C+1,
5465 get_target_module(I),
5466 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)),
5467 !.
5468rem_attr(_, A, B, C, D, E) :-
5469 get_target_module(F),
5470 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).
5471merge_attributes(A, B, C, D, E) :-
5472 chr_pp_flag(dynattr, off),
5473 !,
5474 make_attr(A, F, G, H),
5475 merge_attributes2(A, F, G, C, I, E),
5476 D=(B=H, I).
5477merge_attributes(_, A, B, C, D) :-
5478 C=(sort(A, E), sort(B, F), 'chr new_merge_attributes'(E, F, D)).
5479merge_attributes2(A, B, C, D, E, F) :-
5480 make_attr(A, G, H, I),
5481 bagof(J,
5482 K^L^M^N^(member2(C, H, K-L), J=(sort(L, M), 'chr merge_attributes'(K, M, N))),
5483 O),
5484 list2conj(O, P),
5485 bagof(Q,
5486 R^S^T^member((R, 'chr merge_attributes'(S, T, Q)), O),
5487 U),
5488 make_attr(A, V, U, F),
5489 E=(D=I, P, V is B\/G).
5490lookup_passive_head(A, B, C, D, E) :-
5491 functor(A, F, G),
5492 get_store_type(F/G, H),
5493 lookup_passive_head(H, A, B, C, [], D, E).
5494lookup_passive_head(A, B, C, D, E, F) :-
5495 functor(A, G, H),
5496 get_store_type(G/H, I),
5497 lookup_passive_head(I,
5498 A,
5499 B,
5500 C,
5501 D,
5502 E,
5503 F).
5504lookup_passive_head(default, A, B, C, _, D, E) :-
5505 functor(A, F, G),
5506 passive_head_via(A, B, C, D, E),
5507 update_store_type(F/G, default).
5508lookup_passive_head(multi_inthash(A), B, _, C, D, E, F) :-
5509 hash_lookup_passive_head(inthash,
5510 A,
5511 B,
5512 C,
5513 D,
5514 E,
5515 F,
5516 _).
5517lookup_passive_head(multi_hash(A), B, _, C, D, E, F) :-
5518 hash_lookup_passive_head(hash,
5519 A,
5520 B,
5521 C,
5522 D,
5523 E,
5524 F,
5525 _).
5526lookup_passive_head(global_ground, A, _, _, _, B, C) :-
5527 functor(A, D, E),
5528 global_ground_store_name(D/E, F),
5529 make_get_store_goal(F, C, B),
5530 update_store_type(D/E, global_ground).
5531lookup_passive_head(var_assoc_store(A, B), C, _, D, _, E, F) :-
5532 arg(A, C, G),
5533 arg(B, C, H),
5534 translate([G, H], D, [I, J]),
5535 get_target_module(K),
5536 E=(get_attr(I, K, L), lookup_assoc_store(L, J, F)).
5537lookup_passive_head(global_singleton, A, _, _, _, B, C) :-
5538 functor(A, D, E),
5539 global_singleton_store_name(D/E, F),
5540 make_get_store_goal(F, G, H),
5541 B=(H, G\==[], C=[G]),
5542 update_store_type(D/E, global_singleton).
5543lookup_passive_head(multi_store(A), B, C, D, E, F, G) :-
5544 once(( member(H, A),
5545 lookup_passive_head(H,
5546 B,
5547 C,
5548 D,
5549 E,
5550 F,
5551 G)
5552 )).
5553lookup_passive_head(identifier_store(A), B, _, C, _, D, E) :-
5554 functor(B, F, G),
5555 arg(A, B, H),
5556 translate([H], C, [I]),
5557 delay_phase_end(validate_store_type_assumptions,
5558 identifier_lookup(F/G,
5559 A,
5560 E,
5561 I,
5562 D)),
5563 update_store_type(F/G, identifier_store(A)),
5564 get_identifier_index(F/G, A, _).
5565lookup_passive_head(type_indexed_identifier_store(A, B), C, _, D, _, E, F) :-
5566 functor(C, G, H),
5567 arg(A, C, I),
5568 ( var(I)
5569 -> translate([I], D, [J]),
5570 E=K
5571 ; ground(I),
5572 I='$chr_identifier_match'(L, _)
5573 -> lookup_only_identifier_atom(B, L, J, M),
5574 E=(M, K)
5575 ),
5576 delay_phase_end(validate_store_type_assumptions,
5577 type_indexed_identifier_lookup(G/H,
5578 A,
5579 B,
5580 F,
5581 J,
5582 K)),
5583 update_store_type(G/H,
5584 type_indexed_identifier_store(A, B)),
5585 get_type_indexed_identifier_index(B,
5586 G/H,
5587 A,
5588 _).
5589identifier_lookup(A, B, C, D, E) :-
5590 get_identifier_size(F),
5591 functor(G, struct, F),
5592 get_identifier_index(A, B, H),
5593 arg(H, G, C),
5594 E=(D=G).
5595type_indexed_identifier_lookup(A, B, C, D, E, F) :-
5596 type_indexed_identifier_structure(C, G),
5597 get_type_indexed_identifier_index(C, A, B, H),
5598 arg(H, G, D),
5599 F=(E=G).
5600hash_lookup_passive_head(A, B, C, D, E, F, G, H) :-
5601 pick_hash_index(B, C, D, H, I, J),
5602 ( J=[K]
5603 -> true
5604 ; K=..[k|J]
5605 ),
5606 functor(C, L, M),
5607 multi_hash_lookup_goal(L/M,
5608 A,
5609 H,
5610 K,
5611 G,
5612 N),
5613 check_ground(E, I, O),
5614 my_term_copy(O, D, P),
5615 F=(P, N),
5616 ( A==inthash
5617 -> update_store_type(L/M, multi_inthash([H]))
5618 ; update_store_type(L/M, multi_hash([H]))
5619 ).
5620pick_hash_index(A, B, C, D, E, F) :-
5621 member(D, A),
5622 args(D, B, E),
5623 key_in_scope(E, C, F),
5624 !.
5625key_in_scope([], _, []).
5626key_in_scope([A|B], C, [D|E]) :-
5627 term_variables(A, F),
5628 translate(F, C, G),
5629 copy_term(A/F, D/G),
5630 key_in_scope(B, C, E).
5631existential_lookup(var_assoc_store(A, B), C, D, E, F, G, H, I, J, J) :-
5632 !,
5633 lookup_passive_head(var_assoc_store(A, B),
5634 C,
5635 D,
5636 E,
5637 F,
5638 K,
5639 L),
5640 sbag_member_call(I, L, M),
5641 functor(C, N, O),
5642 delay_phase_end(validate_store_type_assumptions,
5643 (static_suspension_term(N/O, G), get_static_suspension_field(N/O, G, state, active, P))),
5644 H=(K, M, I=G, P).
5645existential_lookup(global_singleton, A, _, _, _, B, C, D, E, E) :-
5646 !,
5647 functor(A, F, G),
5648 global_singleton_store_name(F/G, H),
5649 make_get_store_goal(H, D, I),
5650 C=(I, D\==[], D=B),
5651 update_store_type(F/G, global_singleton).
5652existential_lookup(multi_store(A), B, C, D, E, F, G, H, I, J) :-
5653 !,
5654 once(( member(K, A),
5655 existential_lookup(K,
5656 B,
5657 C,
5658 D,
5659 E,
5660 F,
5661 G,
5662 H,
5663 I,
5664 J)
5665 )).
5666existential_lookup(multi_inthash(A), B, _, C, D, E, F, G, H, I) :-
5667 !,
5668 existential_hash_lookup(inthash,
5669 A,
5670 B,
5671 C,
5672 D,
5673 E,
5674 F,
5675 G,
5676 H,
5677 I).
5678existential_lookup(multi_hash(A), B, _, C, D, E, F, G, H, I) :-
5679 !,
5680 existential_hash_lookup(hash,
5681 A,
5682 B,
5683 C,
5684 D,
5685 E,
5686 F,
5687 G,
5688 H,
5689 I).
5690existential_lookup(identifier_store(A), B, C, D, E, F, G, H, I, J) :-
5691 !,
5692 lookup_passive_head(identifier_store(A),
5693 B,
5694 C,
5695 D,
5696 E,
5697 K,
5698 L),
5699 hash_index_filter(I, [A], J),
5700 functor(B, M, N),
5701 ( check_fd_lookup_condition(M, N, B, _)
5702 -> O=(L=[H])
5703 ; sbag_member_call(H, L, O)
5704 ),
5705 delay_phase_end(validate_store_type_assumptions,
5706 (static_suspension_term(M/N, F), get_static_suspension_field(M/N, F, state, active, P))),
5707 G=(K, O, H=F, P).
5708existential_lookup(type_indexed_identifier_store(A, B), C, D, E, F, G, H, I, J, K) :-
5709 !,
5710 lookup_passive_head(type_indexed_identifier_store(A, B),
5711 C,
5712 D,
5713 E,
5714 F,
5715 L,
5716 M),
5717 hash_index_filter(J, [A], K),
5718 functor(C, N, O),
5719 ( check_fd_lookup_condition(N, O, C, _)
5720 -> P=(M=[I])
5721 ; sbag_member_call(I, M, P)
5722 ),
5723 delay_phase_end(validate_store_type_assumptions,
5724 (static_suspension_term(N/O, G), get_static_suspension_field(N/O, G, state, active, Q))),
5725 H=(L, P, I=G, Q).
5726existential_lookup(A, B, C, D, E, F, G, H, I, I) :-
5727 lookup_passive_head(A,
5728 B,
5729 C,
5730 D,
5731 E,
5732 J,
5733 K),
5734 sbag_member_call(H, K, L),
5735 functor(B, M, N),
5736 delay_phase_end(validate_store_type_assumptions,
5737 (static_suspension_term(M/N, F), get_static_suspension_field(M/N, F, state, active, O))),
5738 G=(J, L, H=F, O).
5739existential_hash_lookup(A, B, C, D, E, F, G, H, I, J) :-
5740 hash_lookup_passive_head(A,
5741 B,
5742 C,
5743 D,
5744 E,
5745 K,
5746 L,
5747 M),
5748 hash_index_filter(I, M, J),
5749 functor(C, N, O),
5750 ( check_fd_lookup_condition(N, O, C, _)
5751 -> P=(L=[H])
5752 ; sbag_member_call(H, L, P)
5753 ),
5754 delay_phase_end(validate_store_type_assumptions,
5755 (static_suspension_term(N/O, F), get_static_suspension_field(N/O, F, state, active, Q))),
5756 G=(K, P, H=F, Q).
5757hash_index_filter(A, B, C) :-
5758 hash_index_filter(A, B, 1, C).
5759hash_index_filter([], _, _, []).
5760hash_index_filter([A|B], C, D, E) :-
5761 ( C=[F|G]
5762 -> H is D+1,
5763 ( F>D
5764 -> E=[A|I],
5765 hash_index_filter(B, [F|G], H, I)
5766 ; F==D
5767 -> E=[silent(A)|I],
5768 hash_index_filter(B, G, H, I)
5769 )
5770 ; E=[A|B]
5771 ).
5772assume_constraint_stores([]).
5773assume_constraint_stores([A|B]) :-
5774 ( chr_pp_flag(debugable, off),
5775 ( only_ground_indexed_arguments(A)
5776 ; chr_pp_flag(mixed_stores, on)
5777 ),
5778 is_stored(A),
5779 get_store_type(A, default)
5780 -> get_indexed_arguments(A, C),
5781 get_constraint_mode(A, D),
5782 aggregate_all(bag(E)-count,
5783 (member(E, C), nth1(E, D, +)),
5784 F-G),
5785 ( G>10
5786 -> findall([E], member(E, F), H)
5787 ; findall(E,
5788 ( sublist(E, F),
5789 E\==[]
5790 ),
5791 I),
5792 predsort(longer_list, I, H)
5793 ),
5794 ( get_functional_dependency(A, 1, J, K),
5795 all_distinct_var_args(J),
5796 K==[]
5797 -> assumed_store_type(A, global_singleton)
5798 ; ( only_ground_indexed_arguments(A)
5799 ; G>0
5800 )
5801 -> get_constraint_type_det(A, L),
5802 partition_indexes(H,
5803 L,
5804 M,
5805 N,
5806 O,
5807 P),
5808 ( N=[]
5809 -> Q=R
5810 ; Q=[multi_inthash(N)|R]
5811 ),
5812 ( M=[]
5813 -> R=S
5814 ; R=[multi_hash(M)|S]
5815 ),
5816 ( O=[]
5817 -> S=T
5818 ; maplist(wrap_in_functor(identifier_store), O, U),
5819 append(U, T, S)
5820 ),
5821 append(P, V, T),
5822 ( only_ground_indexed_arguments(A)
5823 -> V=[global_ground]
5824 ; V=[default]
5825 ),
5826 assumed_store_type(A, multi_store(Q))
5827 ; true
5828 )
5829 ; true
5830 ),
5831 assume_constraint_stores(B).
5832partition_indexes([], _, [], [], [], []).
5833partition_indexes([A|B], C, D, E, F, G) :-
5834 ( A=[H],
5835 nth1(H, C, I),
5836 unalias_type(I, J),
5837 J==chr_identifier
5838 -> F=[H|K],
5839 E=L,
5840 D=M,
5841 G=N
5842 ; A=[H],
5843 nth1(H, C, I),
5844 unalias_type(I, J),
5845 nonvar(J),
5846 J=chr_identifier(O)
5847 -> G=[type_indexed_identifier_store(H, O)|N],
5848 F=K,
5849 E=L,
5850 D=M
5851 ; A=[H],
5852 nth1(H, C, I),
5853 unalias_type(I, J),
5854 J==dense_int
5855 -> E=[A|L],
5856 D=M,
5857 F=K,
5858 G=N
5859 ; member(H, A),
5860 nth1(H, C, I),
5861 unalias_type(I, J),
5862 nonvar(J),
5863 J=chr_identifier(_)
5864 -> E=L,
5865 D=M,
5866 F=K,
5867 G=N
5868 ; E=L,
5869 D=[A|M],
5870 F=K,
5871 G=N
5872 ),
5873 partition_indexes(B, C, M, L, K, N).
5874longer_list(A, B, C) :-
5875 length(B, D),
5876 length(C, E),
5877 compare(F, E, D),
5878 ( F==(=)
5879 -> compare(A, B, C)
5880 ; A=F
5881 ).
5882all_distinct_var_args(A) :-
5883 copy_term_nat(A, B),
5884 functor(A, C, D),
5885 functor(E, C, D),
5886 E=@=B.
5887get_indexed_arguments(A, B) :-
5888 A=_/C,
5889 get_indexed_arguments(1, C, A, B).
5890get_indexed_arguments(A, B, C, D) :-
5891 ( A>B
5892 -> D=[]
5893 ; ( is_indexed_argument(C, A)
5894 -> D=[A|E]
5895 ; D=E
5896 ),
5897 F is A+1,
5898 get_indexed_arguments(F, B, C, E)
5899 ).
5900validate_store_type_assumptions([]).
5901validate_store_type_assumptions([A|B]) :-
5902 validate_store_type_assumption(A),
5903 validate_store_type_assumptions(B).
5904universal_search_iterator_end([A|B], C, D, E/F, G, H, I, J) :-
5905 D=rule(_, _, K, L),
5906 gen_var_susp_list_for_b(B,
5907 [A, C, K, L],
5908 _,
5909 M,
5910 N,
5911 _,
5912 O),
5913 universal_search_iterator_failure_vars(B,
5914 H,
5915 M,
5916 N,
5917 O,
5918 P,
5919 Q),
5920 flatten(M, R),
5921 S=[[]|R],
5922 build_head(E, F, [G|H], S, T),
5923 ( Q=[_]
5924 -> get_success_continuation_code_id(E/F, G, U),
5925 V=[U]
5926 ; V=[G|Q]
5927 ),
5928 build_head(E, F, V, P, W),
5929 X=(T:-W),
5930 add_dummy_location(X, Y),
5931 I=[Y|J].
5932universal_search_iterator_failure_vars(A, B, C, D, E, F, G) :-
5933 ( B=[0|_]
5934 -> next_id(B, G),
5935 F=D
5936 ; C=[_|H],
5937 dec_id(B, I),
5938 ( A=[J|K],
5939 functor(J, L, M),
5940 check_fd_lookup_condition(L, M, J, K)
5941 -> E=[_|N],
5942 universal_search_iterator_failure_vars(K,
5943 I,
5944 H,
5945 D,
5946 N,
5947 F,
5948 G)
5949 ; G=I,
5950 flatten(H, O),
5951 E=[P|_],
5952 F=[P|O]
5953 )
5954 ).
5955universal_search_iterator([A|B], [C|D], E, F/G, H, I, J, K) :-
5956 E=rule(_, _, L, M),
5957 gen_var_susp_list_for_b(D,
5958 [C, A, B, L, M],
5959 N,
5960 O,
5961 P,
5962 Q,
5963 R),
5964 init(Q, S),
5965 flatten(O, T),
5966 gen_var(U),
5967 functor(C, V, W),
5968 gen_vars(W, X),
5969 head_info(C, W, X, Y, _, Z),
5970 get_constraint_mode(V/W, A1),
5971 head_arg_matches(Z, A1, N, B1, C1),
5972 delay_phase_end(validate_store_type_assumptions,
5973 (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))),
5974 different_from_other_susps(C, Y, D, S, F1),
5975 G1=(Y=D1, E1, F1, B1),
5976 add_heads_ground_variables([C|D], [], H1),
5977 lookup_passive_head(A,
5978 [C|D],
5979 C1,
5980 H1,
5981 I1,
5982 J1),
5983 inc_id(I, K1),
5984 L1=[[Y|U]|T],
5985 build_head(F, G, [H|I], L1, M1),
5986 passive_delegate_variables(C,
5987 D,
5988 [A, B, L, M],
5989 C1,
5990 N1),
5991 append([J1|N1], [Y, U|T], O1),
5992 build_head(F, G, [H|K1], O1, P1),
5993 ( check_fd_lookup_condition(V, W, C, D)
5994 -> universal_search_iterator_failure_vars(D,
5995 I,
5996 O,
5997 P,
5998 R,
5999 Q1,
6000 R1),
6001 S1=Q1
6002 ; S1=[U|T],
6003 R1=I
6004 ),
6005 ( R1=[_]
6006 -> T1=R1
6007 ; T1=[H|R1]
6008 ),
6009 build_head(F, G, T1, S1, U1),
6010 V1=(M1:-G1, I1->P1;U1),
6011 add_dummy_location(V1, W1),
6012 J=[W1|K].
6013ai_observation_analysis(A) :-
6014 ( chr_pp_flag(ai_observation_analysis, on),
6015 get_target_module(_),
6016 '$chr_compiled_with_version'(3)
6017 -> list_to_ord_set(A, B),
6018 abstract_constraints(B),
6019 ai_observation_schedule_initial_calls(B, B),
6020 ai_observation_gather_results
6021 ; true
6022 ).
6023ai_observation_schedule_initial_calls([], _).
6024ai_observation_schedule_initial_calls([A|B], C) :-
6025 ai_observation_schedule_initial_call(A, C),
6026 ai_observation_schedule_initial_calls(B, C).
6027ai_observation_schedule_initial_call(A, _) :-
6028 ai_observation_top(A, B),
6029 initial_call_pattern(B).
6030ai_observation_schedule_new_calls([], _).
6031ai_observation_schedule_new_calls([A|B], C) :-
6032 C=odom(_, D),
6033 initial_call_pattern(odom(A, D)),
6034 ai_observation_schedule_new_calls(B, C).
6035ai_observation_lub(odom(A, B), odom(A, C), odom(A, D)) :-
6036 ord_intersection(B, C, D).
6037ai_observation_bot(A, B, odom(A, B)).
6038ai_observation_top(A, odom(A, B)) :-
6039 ord_empty(B).
6040ai_observation_leq(odom(A, B), odom(A, C)) :-
6041 ord_subset(C, B).
6042ai_observation_observe_set(A, B, C) :-
6043 ord_subtract(A, B, C).
6044ai_observation_abstract_constraint(A, B, C) :-
6045 functor(A, D, E),
6046 C=D/E,
6047 memberchk(C, B).
6048ai_observation_abstract_constraints(A, B, C) :-
6049 findall(D,
6050 ( member(E, A),
6051 ai_observation_abstract_constraint(E, B, D)
6052 ),
6053 C).
6054ai_observation_abstract_goal_(A, B, C, D, E, F) :-
6055 term_variables((A, B, C), G),
6056 append(A, B, H),
6057 ground_vars(H, I),
6058 list_difference_eq(G, I, J),
6059 ai_observation_abstract_goal(D, E, F, [], J),
6060 !.
6061ground_vars([], []).
6062ground_vars([A|B], C) :-
6063 functor(A, D, E),
6064 get_constraint_mode(D/E, F),
6065 head_info(A, E, _, _, _, G),
6066 head_arg_matches(G, F, [], _, _, [], H),
6067 ground_vars(B, I),
6068 append(H, I, C).
6069ai_observation_abstract_goal((A, B), C, D, E, F) :-
6070 !,
6071 ai_observation_abstract_goal(A, C, D, G, F),
6072 ai_observation_abstract_goal(B, C, G, E, F).
6073ai_observation_abstract_goal((A;B), C, [(D;E)|F], F, G) :-
6074 !,
6075 ai_observation_abstract_goal(A, C, D, [], G),
6076 ai_observation_abstract_goal(B, C, E, [], G).
6077ai_observation_abstract_goal((A->B), C, D, E, F) :-
6078 !,
6079 ai_observation_abstract_goal(A, C, D, G, F),
6080 ai_observation_abstract_goal(B, C, G, E, F).
6081ai_observation_abstract_goal(A, B, [C|D], D, _) :-
6082 ai_observation_abstract_constraint(A, B, C),
6083 !.
6084ai_observation_abstract_goal(true, _, A, A, _) :-
6085 !.
6086ai_observation_abstract_goal(writeln(_), _, A, A, _) :-
6087 !.
6088ai_observation_abstract_goal(A, _, B, B, C) :-
6089 builtin_binds_b(A, D),
6090 intersect_eq(D, C, []),
6091 !.
6092ai_observation_abstract_goal(_, _, [A|B], B, _) :-
6093 A=builtin.
6094ai_observation_is_observed(odom(_, A), B) :-
6095 \+ ord_memberchk(B, A).
6096unconditional_occurrence(A, B) :-
6097 get_occurrence(A, B, C, _),
6098 get_rule(C, D),
6099 D=pragma(E, _, _, _, _),
6100 copy_term_nat(E, F),
6101 F=rule(G, H, I, _),
6102 guard_entailment:entails_guard([chr_pp_headvariables(G, H)], I),
6103 once(( G=[J],
6104 H==[]
6105 ; H=[J],
6106 G==[],
6107 \+ may_trigger(A)
6108 )),
6109 all_distinct_var_args(J).
6110partial_wake_args([], _, _, _).
6111partial_wake_args([A|B], [C|D], E, F) :-
6112 ( C\==(+)
6113 -> ( nonvar(A)
6114 -> no_partial_wake(F)
6115 ; memberchk_eq(A, E)
6116 -> no_partial_wake(F)
6117 ; true
6118 )
6119 ; true
6120 ),
6121 partial_wake_args(B, D, E, F).
6122generate_show_constraint(A, B, C, D) :-
6123 ( chr_pp_flag(show, on)
6124 -> B=['$show'/0|A],
6125 generate_show_rules(A, D, [E|C]),
6126 inc_rule_count(F),
6127 E=pragma(rule(['$show'], [], true, true), ids([0], []), [], no, F)
6128 ; B=A,
6129 D=C
6130 ).
6131generate_show_rules([], A, A).
6132generate_show_rules([A/B|C], [D|E], F) :-
6133 functor(G, A, B),
6134 inc_rule_count(H),
6135 D=pragma(rule([], ['$show', G], true, writeln(G)), ids([], [0, 1]), [passive(1)], no, H),
6136 generate_show_rules(C, E, F).
6137static_suspension_term(A/B, C) :-
6138 suspension_term_base(A/B, D),
6139 E is D+B,
6140 functor(C, suspension, E).
6141has_suspension_field(A, B) :-
6142 suspension_term_base_fields(A, C),
6143 memberchk(B, C).
6144suspension_term_base(A, B) :-
6145 suspension_term_base_fields(A, C),
6146 length(C, B).
6147suspension_term_base_fields(A, B) :-
6148 ( chr_pp_flag(debugable, on)
6149 -> B=[id, state, history, generation, continuation, functor]
6150 ; ( uses_history(A)
6151 -> B=[id, state, history|C]
6152 ; only_ground_indexed_arguments(A),
6153 get_functional_dependency(A, 1, _, _)
6154 -> B=[state|C]
6155 ; B=[id, state|C]
6156 ),
6157 ( only_ground_indexed_arguments(A)
6158 -> get_store_type(A, D),
6159 basic_store_types(D, E),
6160 ( memberchk(global_ground, E)
6161 -> C=[global_list_prev|F]
6162 ; C=F
6163 ),
6164 ( chr_pp_flag(ht_removal, on)
6165 -> ht_prev_fields(E, F)
6166 ; F=[]
6167 )
6168 ; may_trigger(A)
6169 -> ( uses_field(A, generation)
6170 -> C=[generation, global_list_prev|F]
6171 ; C=[global_list_prev|F]
6172 ),
6173 ( chr_pp_flag(mixed_stores, on),
6174 chr_pp_flag(ht_removal, on)
6175 -> get_store_type(A, D),
6176 basic_store_types(D, E),
6177 ht_prev_fields(E, F)
6178 ; F=[]
6179 )
6180 ; C=[global_list_prev|F],
6181 ( chr_pp_flag(mixed_stores, on),
6182 chr_pp_flag(ht_removal, on)
6183 -> get_store_type(A, D),
6184 basic_store_types(D, E),
6185 ht_prev_fields(E, F)
6186 ; F=[]
6187 )
6188 )
6189 ).
6190ht_prev_fields(A, B) :-
6191 ht_prev_fields_int(A, C),
6192 append(C, B).
6193ht_prev_fields_int([], []).
6194ht_prev_fields_int([A|B], C) :-
6195 ( A=multi_hash(D)
6196 -> maplist(ht_prev_field, D, E),
6197 C=[E|F]
6198 ; C=F
6199 ),
6200 ht_prev_fields_int(B, F).
6201ht_prev_field(A, B) :-
6202 atomic_list_concat(['multi_hash_prev-'|A], B).
6203get_static_suspension_term_field(A, B, C, D) :-
6204 suspension_term_base_fields(B, E),
6205 nth1(F, E, A),
6206 !,
6207 arg(F, C, D).
6208get_static_suspension_term_field(arguments, A, B, C) :-
6209 !,
6210 suspension_term_base(A, D),
6211 B=..[_|E],
6212 drop(D, E, C).
6213get_static_suspension_term_field(A, B, _, _) :-
6214 chr_error(internal,
6215 'Trying to obtain field ~w of ~w, wich does not have it!',
6216 [A, B]).
6217get_dynamic_suspension_term_field(A, B, C, D, E) :-
6218 suspension_term_base_fields(B, F),
6219 nth1(G, F, A),
6220 !,
6221 E=arg(G, C, D).
6222get_dynamic_suspension_term_field(arguments, A, B, C, D) :-
6223 !,
6224 static_suspension_term(A, E),
6225 get_static_suspension_term_field(arguments, A, E, C),
6226 D=(B=E).
6227get_dynamic_suspension_term_field(argument(A), B, C, D, E) :-
6228 !,
6229 suspension_term_base(B, F),
6230 G is A+F,
6231 E=arg(G, C, D).
6232get_dynamic_suspension_term_field(A, B, _, _, _) :-
6233 chr_error(internal,
6234 'Dynamic goal to get ~w of ~w, which does not have this field!',
6235 [A, B]).
6236set_dynamic_suspension_term_field(A, B, C, D, E) :-
6237 suspension_term_base_fields(B, F),
6238 nth1(G, F, A),
6239 !,
6240 E=setarg(G, C, D).
6241set_dynamic_suspension_term_field(A, B, _, _, _) :-
6242 chr_error(internal,
6243 'Dynamic goal to set ~w of ~w, which does not have this field!',
6244 [A, B]).
6245basic_store_types(multi_store(A), A) :-
6246 !.
6247basic_store_types(A, [A]).
6248generate_never_stored_rules(A, B) :-
6249 ( chr_pp_flag(declare_stored_constraints, on)
6250 -> never_stored_rules(A, B)
6251 ; B=[]
6252 ).
6253check_storedness_assertions(A) :-
6254 ( chr_pp_flag(storage_analysis, on),
6255 chr_pp_flag(declare_stored_constraints, on)
6256 -> forall(B, A, check_storedness_assertion(B))
6257 ; true
6258 ).
6259continuation_analysis(A) :-
6260 maplist(analyse_continuations, A).
6261analyse_continuations(A) :-
6262 continuation_analysis(A, 1),
6263 get_max_occurrence(A, B),
6264 C is B+1,
6265 bulk_propagation(A, 1, C),
6266 set_occurrence_code_id(A, 1, 0).
6267continuation_analysis(A, B) :-
6268 get_max_occurrence(A, C),
6269 ( B>C
6270 -> true
6271 ; B==C
6272 -> D is B+1,
6273 continuation_occurrence(A, B, D)
6274 ; constraint_continuation(A, B, C, D),
6275 continuation_occurrence(A, B, D),
6276 E is B+1,
6277 continuation_analysis(A, E)
6278 ).
6279constraint_continuation(A, B, C, D) :-
6280 ( get_occurrence_head(A, B, E)
6281 -> F is B+1,
6282 ( between(F, C, D),
6283 get_occurrence_head(A, D, G),
6284 unifiable(E, G, _)
6285 -> true
6286 ; D is C+1
6287 )
6288 ; D=C
6289 ).
6290get_occurrence_head(A, B, C) :-
6291 get_occurrence(A, B, D, E),
6292 \+ is_passive(D, E),
6293 get_rule(D, F),
6294 F=pragma(rule(G, H, _, _), ids(I, J), _, _, _),
6295 ( select2(E, C, I, G, _, _)
6296 -> true
6297 ; select2(E, C, J, H, _, _)
6298 ).
6299get_success_continuation_code_id(A, B, C) :-
6300 get_success_continuation_occurrence(A, B, D),
6301 get_occurrence_code_id(A, D, C).
6302collect_constants(_, A, B, C) :-
6303 ( not_restarted,
6304 chr_pp_flag(experiment, on)
6305 -> ( chr_pp_flag(sss, on)
6306 -> D=[fep/4-[2, 3]-[[a, b]-fep1, [c, d]-fep2]-no],
6307 copy_term_nat(C, E),
6308 flatten_clauses(E, D, F),
6309 install_new_declarations_and_restart(F)
6310 ; maplist(collect_rule_constants(B), A),
6311 ( chr_pp_flag(verbose, on)
6312 -> print_chr_constants
6313 ; true
6314 ),
6315 ( chr_pp_flag(experiment, on)
6316 -> flattening_dictionary(B, D),
6317 copy_term_nat(C, E),
6318 flatten_clauses(E, D, F),
6319 install_new_declarations_and_restart(F)
6320 ; true
6321 )
6322 )
6323 ; true
6324 ).
6325collect_rule_constants(A, B) :-
6326 B=ast_rule(C, _, _, D, _),
6327 collect_head_constants(C),
6328 collect_body_constants(D, A).
6329collect_head_constants(simplification(A)) :-
6330 maplist(collect_constraint_constants, A).
6331collect_head_constants(propagation(A)) :-
6332 maplist(collect_constraint_constants, A).
6333collect_head_constants(simpagation(A, B)) :-
6334 maplist(collect_constraint_constants, A),
6335 maplist(collect_constraint_constants, B).
6336collect_body_constants(A, B) :-
6337 maplist(collect_goal_constants(B), A).
6338collect_goal_constants(A, B) :-
6339 ( ast_nonvar(B)
6340 -> ast_symbol(B, C),
6341 ( memberchk(C, A)
6342 -> ast_term_to_term(B, D),
6343 ast_args(B, E),
6344 collect_constraint_constants(chr_constraint(C,
6345 E,
6346 D))
6347 ; C==(:)/2,
6348 ast_args(B, [F, G]),
6349 F=atomic(H),
6350 get_target_module(I),
6351 H==I,
6352 ast_nonvar(G),
6353 ast_symbol(G, J),
6354 memberchk(J, A)
6355 -> ast_term_to_term(G, K),
6356 ast_args(G, L),
6357 collect_constraint_constants(chr_constraint(J,
6358 L,
6359 K))
6360 ; true
6361 )
6362 ; true
6363 ).
6364collect_constraint_constants(A) :-
6365 A=chr_constraint(B, C, _),
6366 get_constraint_type_det(B, D),
6367 collect_all_arg_constants(C, D, []).
6368collect_all_arg_constants([], [], A) :-
6369 ( A\==[]
6370 -> add_chr_constants(A)
6371 ; true
6372 ).
6373collect_all_arg_constants([A|B], [C|D], E) :-
6374 unalias_type(C, F),
6375 ( is_chr_constants_type(F, G, _)
6376 -> ( ast_ground(A)
6377 -> ast_term_to_term(A, H),
6378 collect_all_arg_constants(B,
6379 D,
6380 [G-H|E])
6381 ; true
6382 )
6383 ; collect_all_arg_constants(B, D, E)
6384 ).
6385add_chr_constants(A) :-
6386 keysort(A, B),
6387 add_chr_constants_(B).
6388flattening_dictionary([], []).
6389flattening_dictionary([A|B], C) :-
6390 ( flattening_dictionary_entry(A, D)
6391 -> C=[D|E]
6392 ; C=E
6393 ),
6394 flattening_dictionary(B, E).
6395flattening_dictionary_entry(A, B) :-
6396 get_constraint_type_det(A, C),
6397 constant_positions(C, 1, D, E, F, G),
6398 ( D\==[]
6399 -> pairup(E, H, I),
6400 keysort(I, J),
6401 B=A-D-K-F,
6402 get_chr_constants(L),
6403 findall(M,
6404 ( member(J, L),
6405 flat_spec(A, D, H, M)
6406 ),
6407 K)
6408 ; G==yes
6409 -> enum_positions(C, 1, N, O, P),
6410 B=A-N-K-P,
6411 findall(M,
6412 ( cartesian_product(Q, O),
6413 flat_spec(A, N, Q, M)
6414 ),
6415 K)
6416 ).
6417constant_positions([], _, [], [], no, no).
6418constant_positions([A|B], C, D, E, F, G) :-
6419 unalias_type(A, H),
6420 ( is_chr_constants_type(H, I, J)
6421 -> compose_error_handlers(J, K, F),
6422 D=[C|L],
6423 E=[I|M],
6424 G=N
6425 ; ( is_chr_enum_type(H, _, _)
6426 -> G=yes
6427 ; G=N
6428 ),
6429 L=D,
6430 M=E,
6431 K=F
6432 ),
6433 O is C+1,
6434 constant_positions(B, O, L, M, K, N).
6435compose_error_handlers(no, A, A).
6436compose_error_handlers(yes(A), _, yes(A)).
6437enum_positions([], _, [], [], no).
6438enum_positions([A|B], C, D, E, F) :-
6439 unalias_type(A, G),
6440 ( is_chr_enum_type(G, H, I)
6441 -> compose_error_handlers(I, J, F),
6442 D=[C|K],
6443 E=[H|L]
6444 ; D=K,
6445 E=L,
6446 F=J
6447 ),
6448 M is C+1,
6449 enum_positions(B, M, K, L, J).
6450cartesian_product([], []).
6451cartesian_product([A|B], [C|D]) :-
6452 member(A, C),
6453 cartesian_product(B, D).
6454flat_spec(A/B, C, D, E) :-
6455 E=D-F,
6456 term_to_atom(D, G),
6457 term_to_atom(C, H),
6458 atom_concat_list(['$flat_', A, /, B, '___', H, '___', G],
6459 F).
6460restart_after_flattening(A, A) :-
6461 nb_setval('$chr_restart_after_flattening', started).
6462restart_after_flattening(_, A) :-
6463 nb_getval('$chr_restart_after_flattening', restart(A)),
6464 nb_setval('$chr_restart_after_flattening', restarted).
6465not_restarted :-
6466 nb_getval('$chr_restart_after_flattening', started).
6467install_new_declarations_and_restart(A) :-
6468 nb_setval('$chr_restart_after_flattening', restart(A)),
6469 fail.
6470flatten_clauses(A, B, C) :-
6471 flatten_readcontent(A,
6472 D,
6473 E,
6474 F,
6475 _,
6476 G,
6477 H),
6478 flatten_clauses_(B, D, H, E, F, G, C).
6479flatten_clauses_(A, B, C, D, E, F, G) :-
6480 auxiliary_constraints_declarations(A, E, F, H),
6481 dispatching_rules(A, I),
6482 declarations(D, A, E, F, J),
6483 flatten_rules(B, A, K),
6484 append([C, H, I, J, K], G).
6485declarations(A, B, C, D, E) :-
6486 findall(F,
6487 ( member(F, A),
6488 \+ memberchk(F-_-_-_, B)
6489 ),
6490 G),
6491 maplist(declaration(C, D), G, H),
6492 flatten(H, E).
6493declaration(A, B, C, [(:-chr_constraint C), (:-chr_option(mode, D)), (:-chr_option(type_declaration, E))]) :-
6494 C=F/G,
6495 functor(D, F, G),
6496 ( memberchk(D, A)
6497 -> true
6498 ; replicate(G, ?, H),
6499 D=..[_|H]
6500 ),
6501 functor(E, F, G),
6502 ( memberchk(E, B)
6503 -> true
6504 ; replicate(G, any, I),
6505 E=..[_|I]
6506 ).
6507flatten_readcontent([], [], [], [], [], [], []).
6508flatten_readcontent([A|B], C, D, E, F, G, H) :-
6509 ( A==end_of_file
6510 -> C=[],
6511 D=[],
6512 E=[],
6513 G=[],
6514 F=[],
6515 H=[]
6516 ; crude_is_rule(A)
6517 -> C=[A|I],
6518 flatten_readcontent(B,
6519 I,
6520 D,
6521 E,
6522 F,
6523 G,
6524 H)
6525 ; pure_is_declaration(A, J, K, L)
6526 -> append(J, M, D),
6527 append(K, N, E),
6528 append(L, O, G),
6529 flatten_readcontent(B,
6530 C,
6531 M,
6532 N,
6533 F,
6534 O,
6535 H)
6536 ; is_mode_declaration(A, P)
6537 -> E=[P|N],
6538 flatten_readcontent(B,
6539 C,
6540 D,
6541 N,
6542 F,
6543 G,
6544 H)
6545 ; is_type_declaration(A, Q)
6546 -> G=[Q|O],
6547 flatten_readcontent(B,
6548 C,
6549 D,
6550 E,
6551 F,
6552 O,
6553 H)
6554 ; is_type_definition(A, R)
6555 -> H=[A|S],
6556 F=[R|T],
6557 flatten_readcontent(B,
6558 C,
6559 D,
6560 E,
6561 T,
6562 G,
6563 S)
6564 ; ( A=(:-op(U, V, W))
6565 -> op(U, V, W)
6566 ; true
6567 ),
6568 H=[A|S],
6569 flatten_readcontent(B,
6570 C,
6571 D,
6572 E,
6573 F,
6574 G,
6575 S)
6576 ).
6577crude_is_rule(@(_, _)).
6578crude_is_rule(pragma(_, _)).
6579crude_is_rule(==>(_, _)).
6580crude_is_rule(<=>(_, _)).
6581pure_is_declaration(A, B, C, D) :-
6582 A=(:-E),
6583 E=..[F, G],
6584 F==(chr_constraint),
6585 conj2list(G, H),
6586 pure_extract_type_mode(H, B, C, D).
([], [], [], []).
6588pure_extract_type_mode([A/B|C], [A/B|D], E, F) :-
6589 !,
6590 pure_extract_type_mode(C, D, E, F).
6591pure_extract_type_mode([A|B], [C|D], [E|F], G) :-
6592 functor(A, H, I),
6593 C=H/I,
6594 A=..[_|J],
6595 extract_types_and_modes(J, K, L),
6596 E=..[H|L],
6597 ( forall(member(M, K), M==any)
6598 -> G=N
6599 ; G=[O|N],
6600 O=..[H|K]
6601 ),
6602 pure_extract_type_mode(B, D, F, N).
6603is_mode_declaration((:-chr_option(mode, A)), A).
6604is_type_declaration((:-chr_option(type_declaration, A)), A).
6605auxiliary_constraints_declarations(A, B, C, D) :-
6606 findall(E,
6607 auxiliary_constraints_declaration(A, B, C, E),
6608 F),
6609 flatten(F, D).
6610auxiliary_constraints_declaration(A, B, C, [(:-chr_constraint D), (:-chr_option(mode, E)), (:-chr_option(type_declaration, F))]) :-
6611 member(G/H-I-J-_, A),
6612 arg_modes(G, H, B, K),
6613 specialize_modes(K, I, L),
6614 arg_types(G, H, C, M),
6615 specialize_types(M, I, N),
6616 length(I, O),
6617 P is H-O,
6618 member(_-Q, J),
6619 D=Q/P,
6620 E=..[Q|L],
6621 F=..[Q|N].
6622arg_modes(A, B, C, D) :-
6623 functor(E, A, B),
6624 ( memberchk(E, C)
6625 -> E=..[_|D]
6626 ; replicate(B, ?, D)
6627 ).
6628specialize_modes(A, B, C) :-
6629 split_args(B, A, _, C).
6630arg_types(A, B, C, D) :-
6631 functor(E, A, B),
6632 ( memberchk(E, C)
6633 -> E=..[_|D]
6634 ; replicate(B, any, D)
6635 ).
6636specialize_types(A, B, C) :-
6637 split_args(B, A, _, C).
6638dispatching_rules([], []).
6639dispatching_rules([A-B-C-D|E], F) :-
6640 constraint_dispatching_rule(C,
6641 A,
6642 B,
6643 D,
6644 F,
6645 G),
6646 dispatching_rules(E, G).
6647constraint_dispatching_rule(A, B/C, D, E, F, G) :-
6648 ( increasing_numbers(D, 1)
6649 -> H=F,
6650 I=B/C
6651 ; functor(J, B, C),
6652 J=..[_|K],
6653 split_args(D, K, L, M),
6654 append(L, M, N),
6655 atom_concat(B, '_$shuffled', O),
6656 P=..[O|N],
6657 [(J:-P)|H]=F,
6658 I=O/C
6659 ),
6660 Q=swap(B, D),
6661 dispatching_rule_term_cases(A,
6662 D,
6663 I,
6664 E,
6665 Q,
6666 H,
6667 G).
6668increasing_numbers([], _).
6669increasing_numbers([A|B], A) :-
6670 C is A+1,
6671 increasing_numbers(B, C).
6672dispatching_rule_term_cases(A, B, C/D, E, F, G, H) :-
6673 length(B, I),
6674 once(pairup(J, K, A)),
6675 maplist(head_tail, J, L, M),
6676 N is D-I,
6677 maplist(wrap_in_functor(dispatching_action), K, O),
6678 dispatch_trie_index(L,
6679 M,
6680 N,
6681 E,
6682 F,
6683 O,
6684 C,
6685 G,
6686 H).
6687dispatching_action(A, B, C) :-
6688 C=..[A|B].
6689dispatch_trie_index(A, B, C, D, E, F, G, H, I) :-
6690 dispatch_trie_step(A,
6691 G,
6692 G,
6693 B,
6694 C,
6695 D,
6696 E,
6697 F,
6698 H,
6699 I).
6700dispatch_trie_step([], _, _, _, [], _, _, [], A, A) :-
6701 !.
6702dispatch_trie_step(A, B, C, D, E, F, G, H, I, J) :-
6703 D=[K|_],
6704 length(K, L),
6705 aggregate_all(set(M/N),
6706 (member(O, A), functor(O, M, N)),
6707 P),
6708 Q is L+1,
6709 dispatch_trie_step_cases(P,
6710 Q,
6711 A,
6712 D,
6713 E,
6714 F,
6715 G,
6716 H,
6717 B,
6718 C,
6719 I,
6720 J).
6721dispatch_trie_step_cases([], A, _, _, B, C, D, _, E, _, F, G) :-
6722 ( C=yes(H)
6723 -> F=[I|G],
6724 I=(J:-K),
6725 L is A+B,
6726 functor(J, E, L),
6727 reconstruct_original_term(D, J, M),
6728 K=..[H, M]
6729 ; F=G
6730 ).
6731dispatch_trie_step_cases([A|B], C, D, E, F, G, H, I, J, K, L, M) :-
6732 dispatch_trie_step_case(A,
6733 C,
6734 D,
6735 E,
6736 F,
6737 G,
6738 H,
6739 I,
6740 J,
6741 K,
6742 L,
6743 N),
6744 dispatch_trie_step_cases(B,
6745 C,
6746 D,
6747 E,
6748 F,
6749 G,
6750 H,
6751 I,
6752 J,
6753 K,
6754 N,
6755 M).
6756dispatch_trie_step_case(A/B, C, D, E, F, G, H, I, J, K, [L|M], N) :-
6757 L=(O:-P, Q),
6758 ( G=yes(_)
6759 -> P=!
6760 ; P=true
6761 ),
6762 R is C+F,
6763 functor(O, J, R),
6764 arg(1, O, S),
6765 O=..[_, _|T],
6766 length(U, F),
6767 once(append(V, U, T)),
6768 functor(S, A, B),
6769 W=index_functor(A, B, H),
6770 S=..[_|X],
6771 append(X, T, Y),
6772 ( Y==U
6773 -> M=N,
6774 rec_cases(D,
6775 _,
6776 I,
6777 A/B,
6778 _,
6779 _,
6780 Z),
6781 Z=[A1],
6782 call(A1, U, Q)
6783 ; rec_cases(D,
6784 E,
6785 I,
6786 A/B,
6787 B1,
6788 C1,
6789 Z),
6790 ( Z=[D1]
6791 -> C1=[E1],
6792 append([B1, E1, U], Y),
6793 M=N,
6794 call(D1, U, Q)
6795 ; pairup(B1, C1, F1),
6796 common_pattern(F1, G1, H1, I1),
6797 append(X, V, [J1|K1]),
6798 J1-K1=G1,
6799 L1=gct([J1|K1], W),
6800 fresh_symbol(K, M1),
6801 append(H1, U, N1),
6802 Q=..[M1|N1],
6803 findall(O1-P1,
6804 member([O1|P1], I1),
6805 Q1),
6806 once(pairup(R1, S1, Q1)),
6807 dispatch_trie_step(R1,
6808 M1,
6809 K,
6810 S1,
6811 F,
6812 G,
6813 L1,
6814 Z,
6815 M,
6816 N)
6817 )
6818 ).
6819split([A|B], C, D, E, F) :-
6820 ( C==1
6821 -> D=[],
6822 E=A,
6823 F=B
6824 ; G is C-1,
6825 D=[A|H],
6826 split(B, G, H, E, F)
6827 ).
6828reconstruct_original_term(swap(A, B), C, D) :-
6829 functor(C, _, E),
6830 functor(D, A, E),
6831 D=..[_|F],
6832 split_args(B, F, G, H),
6833 C=..[_|I],
6834 append(G, H, I).
6835reconstruct_original_term(index_functor(A, B, C), D, E) :-
6836 D=..[F|G],
6837 split_at(B, G, H, I),
6838 J=..[A|H],
6839 K=..[F, J|I],
6840 reconstruct_original_term(C, K, E).
6841reconstruct_original_term(gct(A, B), C, D) :-
6842 copy_term_nat(A, E),
6843 term_variables(E, F),
6844 C=..[G|H],
6845 append(F, I, H),
6846 append(E, I, J),
6847 K=..[G|J],
6848 reconstruct_original_term(B, K, D).
6849flatten_rules(A, B, C) :-
6850 flatten_rules1(A, B, D),
6851 flatten(D, C).
6852flatten_rules1([], _, []).
6853flatten_rules1([A|B], C, [D|E]) :-
6854 findall(F, flatten_rule(A, C, F), D),
6855 flatten_rules1(B, C, E).
6856flatten_rule(@(A, B), C, @(A, D)) :-
6857 !,
6858 flatten_rule(B, C, D).
6859flatten_rule(pragma(A, B), C, pragma(D, B)) :-
6860 !,
6861 flatten_rule(A, C, D).
6862flatten_rule(==>(A, B), C, ==>(D, E)) :-
6863 !,
6864 flatten_heads(A, C, D),
6865 flatten_body(B, C, E).
6866flatten_rule(<=>(\(A, B), C), D, <=>(\(E, F), G)) :-
6867 !,
6868 flatten_heads((A, B), D, (E, F)),
6869 flatten_body(C, D, G).
6870flatten_rule(<=>(A, B), C, <=>(D, E)) :-
6871 flatten_heads(A, C, D),
6872 flatten_body(B, C, E).
6873flatten_heads((A, B), C, (D, E)) :-
6874 !,
6875 flatten_heads(A, C, D),
6876 flatten_heads(B, C, E).
6877flatten_heads(#(A, B), C, #(D, B)) :-
6878 !,
6879 flatten_heads(A, C, D).
6880flatten_heads(A, B, C) :-
6881 ( functor(A, D, E),
6882 memberchk(D/E-F-G-_, B)
6883 -> A=..[_|H],
6884 split_args(F, H, I, J),
6885 member(I-K, G),
6886 C=..[K|J]
6887 ; C=A
6888 ).
6889flatten_body((A| B), C, (D| E)) :-
6890 !,
6891 conj2list(A, F),
6892 maplist(flatten_goal(C), F, G),
6893 list2conj(G, D),
6894 conj2list(B, H),
6895 maplist(flatten_goal(C), H, I),
6896 list2conj(I, E).
6897flatten_body(A, B, C) :-
6898 conj2list(A, D),
6899 maplist(flatten_goal(B), D, E),
6900 list2conj(E, C).
6901flatten_goal(_, A, B) :-
6902 var(A),
6903 !,
6904 B=A.
6905flatten_goal(A, B, C) :-
6906 ( is_specializable_goal(B, A, D)
6907 -> specialize_goal(B, D, C)
6908 ; B=E:F,
6909 get_target_module(G),
6910 E==G,
6911 nonvar(F),
6912 is_specializable_goal(F, A, D)
6913 -> specialize_goal(F, D, H),
6914 C=E:H
6915 ; partial_eval(B, C)
6916 -> true
6917 ; C=B
6918 ).
6919is_specializable_goal(A, B, C) :-
6920 functor(A, D, E),
6921 memberchk(D/E-C-_-_, B),
6922 args(C, A, F),
6923 ground(F).
6924specialize_goal(A, B, C) :-
6925 functor(A, D, E),
6926 A=..[_|F],
6927 split_args(B, F, G, H),
6928 flat_spec(D/E, B, G, _-I),
6929 C=..[I|H].
6930partial_eval(append(A, B, C), D) :-
6931 ( A==[]
6932 -> D=(C=B)
6933 ; B==[]
6934 -> D=(C=A)
6935 ).
6936partial_eval(flatten_path(A, B), C) :-
6937 ( nonvar(A),
6938 flatten(A, D),
6939 D\==A
6940 -> C=flatten_path(D, B)
6941 ).
6942dump_code(A) :-
6943 ( chr_pp_flag(dump, on)
6944 -> maplist(portray_clause, A)
6945 ; true
6946 ).
6947chr_banner :-
6948 chr_info(banner,
6949 '\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',
6950 []).
6951chr_none_locked(A, B) :-
6952 chr_pp_flag(guard_locks, C),
6953 ( C==off
6954 -> B=true
6955 ; C==on
6956 -> B='chr none_locked'(A)
6957 ; C==error
6958 -> B='chr none_error_locked'(A)
6959 ).
6960chr_not_locked(A, B) :-
6961 chr_pp_flag(guard_locks, C),
6962 ( C==off
6963 -> B=true
6964 ; C==on
6965 -> B='chr not_locked'(A)
6966 ; C==error
6967 -> B='chr not_error_locked'(A)
6968 ).
6969chr_lock(A, B) :-
6970 chr_pp_flag(guard_locks, C),
6971 ( C==off
6972 -> B=true
6973 ; C==on
6974 -> B='chr lock'(A)
6975 ; C==error
6976 -> B='chr error_lock'(A)
6977 ).
6978chr_unlock(A, B) :-
6979 chr_pp_flag(guard_locks, C),
6980 ( C==off
6981 -> B=true
6982 ; C==on
6983 -> B='chr unlock'(A)
6984 ; C==error
6985 -> B='chr unerror_lock'(A)
6986 ).
6987term_to_ast_term(A, B, C, D) :-
6988 ( atomic(A)
6989 -> B=atomic(A),
6990 D=C
6991 ; compound(A)
6992 -> functor(A, E, F),
6993 B=compound(E, F, G, A),
6994 A=..[_|H],
6995 maplist_dcg(chr_translate:term_to_ast_term,
6996 H,
6997 G,
6998 C,
6999 D)
7000 ; var(A)
7001 -> var_to_ast_term(A, C, B, D)
7002 ).
7003var_to_ast_term(A, B, C, D) :-
7004 B=E-F,
7005 ( lookup_eq(E, A, C)
7006 -> D=B
7007 ; C=var(F, A),
7008 G is F+1,
7009 H=[A-C|E],
7010 D=H-G
7011 ).
7012chr_constraint_to_ast_constraint(A, B, C, D) :-
7013 B=chr_constraint(E/F, G, A),
7014 functor(A, E, F),
7015 A=..[_|H],
7016 maplist_dcg(chr_translate:term_to_ast_term,
7017 H,
7018 G,
7019 C,
7020 D).
7021rule_to_ast_rule(A, B) :-
7022 B=ast_rule(C, D, E, F, G),
7023 A=rule(H, I, E, G),
7024 J=[]-1,
7025 ( H==[]
7026 -> C=propagation(K),
7027 maplist_dcg(chr_translate:chr_constraint_to_ast_constraint,
7028 I,
7029 K,
7030 J,
7031 L)
7032 ; I==[]
7033 -> C=simplification(K),
7034 maplist_dcg(chr_translate:chr_constraint_to_ast_constraint,
7035 H,
7036 K,
7037 J,
7038 L)
7039 ; C=simpagation(M, N),
7040 maplist_dcg(chr_translate:chr_constraint_to_ast_constraint,
7041 H,
7042 M,
7043 J,
7044 O),
7045 maplist_dcg(chr_translate:chr_constraint_to_ast_constraint,
7046 I,
7047 N,
7048 O,
7049 L)
7050 ),
7051 conj2list(E, P),
7052 maplist_dcg(chr_translate:term_to_ast_term,
7053 P,
7054 D,
7055 L,
7056 Q),
7057 conj2list(G, R),
7058 maplist_dcg(chr_translate:term_to_ast_term,
7059 R,
7060 F,
7061 Q,
7062 _).
7063pragma_rule_to_ast_rule(pragma(A, _, _, _, _), B) :-
7064 rule_to_ast_rule(A, B).
7065check_rule_to_ast_rule(A) :-
7066 ( rule_to_ast_rule(A, B)
7067 -> writeln(B)
7068 ; writeln(failed(rule_to_ast_rule(A, B)))
7069 ).
7070ast_term_to_term(var(_, A), A).
7071ast_term_to_term(atomic(A), A).
7072ast_term_to_term(compound(_, _, _, A), A).
7073ast_nonvar(atomic(_)).
7074ast_nonvar(compound(_, _, _, _)).
7075ast_ground(atomic(_)).
7076ast_ground(compound(_, _, A, _)) :-
7077 maplist(ast_ground, A).
7078ast_is_ground(A, B) :-
7079 ast_is_ground_(B, A).
7080ast_is_ground_(var(A, _), B) :-
7081 tree_set_memberchk(A, B).
7082ast_is_ground_(atomic(_), _).
7083ast_is_ground_(compound(_, _, A, _), B) :-
7084 maplist(ast_is_ground(B), A).
7085ast_functor(atomic(A), A, 0).
7086ast_functor(compound(A, B, _, _), A, B).
7087ast_symbol(atomic(A), A/0).
7088ast_symbol(compound(A, B, _, _), A/B).
7089ast_args(atomic(_), []).
7090ast_args(compound(_, _, A, _), A).
7091ast_term_variables(atomic(_), A, A).
7092ast_term_variables(compound(_, _, A, _), B, C) :-
7093 ast_term_list_variables(A, B, C).
7094ast_term_variables(var(A, _), B, C) :-
7095 tree_set_add(B, A, C).
7096ast_term_list_variables(A, B, C) :-
7097 fold(A, chr_translate:ast_term_variables, B, C).
7098ast_constraint_variables(chr_constraint(_, A, _), B, C) :-
7099 ast_term_list_variables(A, B, C).
7100ast_constraint_list_variables(A, B, C) :-
7101 fold(A, chr_translate:ast_constraint_variables, B, C).
7102ast_head_variables(simplification(A), B, C) :-
7103 ast_constraint_list_variables(A, B, C).
7104ast_head_variables(propagation(A), B, C) :-
7105 ast_constraint_list_variables(A, B, C).
7106ast_head_variables(simpagation(A, B), C, D) :-
7107 ast_constraint_list_variables(A, C, E),
7108 ast_constraint_list_variables(B, E, D).
7109ast_var_memberchk(var(A, _), B) :-
7110 tree_set_memberchk(A, B).
7111ast_instantiate(A, B, C) :-
7112 ast_instantiate_(B, A, C).
7113ast_instantiate_(var(A, _), B, C) :-
7114 get_assoc(A, B, C).
7115ast_instantiate_(atomic(A), _, A).
7116ast_instantiate_(compound(A, B, C, _), D, E) :-
7117 functor(E, A, B),
7118 E=..[_|F],
7119 maplist(ast_instantiate(D), C, F).
7120ast_head_arg_matches_([], [], A, B, [], A, B).
7121ast_head_arg_matches_([silent(A-_)|B], [C|D], E, F, G, H, I) :-
7122 !,
7123 ( C==(+)
7124 -> ast_term_variables(A, J, F),
7125 ast_head_arg_matches_(B,
7126 D,
7127 E,
7128 J,
7129 G,
7130 H,
7131 I)
7132 ; ast_head_arg_matches_(B,
7133 D,
7134 E,
7135 F,
7136 G,
7137 H,
7138 I)
7139 ).
7140ast_head_arg_matches_([A-B|C], [D|E], F, G, H, I, J) :-
7141 ( A=var(K, _)
7142 -> ( get_assoc(K, F, L)
7143 -> ( D=(+)
7144 -> ( tree_set_memberchk(K, G)
7145 -> H=[B=L|M],
7146 N=G
7147 ; H=[B==L|M],
7148 tree_set_add(G, K, N)
7149 )
7150 ; H=[B==L|M],
7151 N=G
7152 ),
7153 O=F
7154 ; put_assoc(K, F, B, O),
7155 H=M,
7156 ( D=(+)
7157 -> tree_set_add(G, K, N)
7158 ; N=G
7159 )
7160 ),
7161 P=C,
7162 Q=E
7163 ; ground(A),
7164 A='$chr_identifier_match'(R, S)
7165 -> identifier_label_atom(S, B, R, T),
7166 H=[T|M],
7167 F=O,
7168 N=G,
7169 P=C,
7170 Q=E
7171 ; A=atomic(U)
7172 -> ( D=(+)
7173 -> H=[B=U|M]
7174 ; H=[B==U|M]
7175 ),
7176 F=O,
7177 N=G,
7178 P=C,
7179 Q=E
7180 ; D==(+),
7181 ast_is_ground(G, A)
7182 -> ast_instantiate(F, A, V),
7183 H=[B=V|M],
7184 F=O,
7185 N=G,
7186 P=C,
7187 Q=E
7188 ; D==(?),
7189 ast_is_ground(G, A)
7190 -> ast_instantiate(F, A, V),
7191 H=[B==V|M],
7192 F=O,
7193 N=G,
7194 P=C,
7195 Q=E
7196 ; A=compound(W, X, Y, _),
7197 functor(Z, W, X),
7198 Z=..[_|A1],
7199 ( D=(+)
7200 -> H=[B=Z|M]
7201 ; H=[nonvar(B), B=Z|M]
7202 ),
7203 pairup(Y, A1, B1),
7204 append(B1, C, P),
7205 replicate(_, D, C1),
7206 append(C1, E, Q),
7207 O=F,
7208 N=G
7209 ),
7210 ast_head_arg_matches_(P,
7211 Q,
7212 O,
7213 N,
7214 M,
7215 I,
7216 J).
7217:- use_module(chr(chr_runtime)). 7218:- use_module(chr(chr_hashtable_store)). 7219attach_generate_empty_named_history_initialisation___1([], _).
7220attach_generate_empty_named_history_initialisation___1([A|B], C) :-
7221 ( get_attr(A, chr_translate, D)
7222 -> D=v(E, F, G, H, I, J, K, L, M, N, O),
7223 ( E/\1=:=1
7224 -> P=v(E, [C|F], G, H, I, J, K, L, M, N, O)
7225 ; Q is E\/1,
7226 P=v(Q, [C], G, H, I, J, K, L, M, N, O)
7227 ),
7228 put_attr(A, chr_translate, P)
7229 ; put_attr(A,
7230 chr_translate,
7231 v(1, [C], [], [], [], [], [], [], [], [], []))
7232 ),
7233 attach_generate_empty_named_history_initialisation___1(B, C).
7234detach_generate_empty_named_history_initialisation___1([], _).
7235detach_generate_empty_named_history_initialisation___1([A|B], C) :-
7236 ( get_attr(A, chr_translate, D)
7237 -> D=v(E, F, G, H, I, J, K, L, M, N, O),
7238 ( E/\1=:=1
7239 -> 'chr sbag_del_element'(F, C, P),
7240 ( P==[]
7241 -> Q is E/\ -2,
7242 ( Q==0
7243 -> del_attr(A, chr_translate)
7244 ; put_attr(A,
7245 chr_translate,
7246 v(Q,
7247 [],
7248 G,
7249 H,
7250 I,
7251 J,
7252 K,
7253 L,
7254 M,
7255 N,
7256 O))
7257 )
7258 ; put_attr(A,
7259 chr_translate,
7260 v(E,
7261 P,
7262 G,
7263 H,
7264 I,
7265 J,
7266 K,
7267 L,
7268 M,
7269 N,
7270 O))
7271 )
7272 ; true
7273 )
7274 ; true
7275 ),
7276 detach_generate_empty_named_history_initialisation___1(B, C).
7277attach_symbol_count___2([], _).
7278attach_symbol_count___2([A|B], C) :-
7279 ( get_attr(A, chr_translate, D)
7280 -> D=v(E, F, G, H, I, J, K, L, M, N, O),
7281 ( E/\2=:=2
7282 -> P=v(E, F, [C|G], H, I, J, K, L, M, N, O)
7283 ; Q is E\/2,
7284 P=v(Q, F, [C], H, I, J, K, L, M, N, O)
7285 ),
7286 put_attr(A, chr_translate, P)
7287 ; put_attr(A,
7288 chr_translate,
7289 v(2, [], [C], [], [], [], [], [], [], [], []))
7290 ),
7291 attach_symbol_count___2(B, C).
7292detach_symbol_count___2([], _).
7293detach_symbol_count___2([A|B], C) :-
7294 ( get_attr(A, chr_translate, D)
7295 -> D=v(E, F, G, H, I, J, K, L, M, N, O),
7296 ( E/\2=:=2
7297 -> 'chr sbag_del_element'(G, C, P),
7298 ( P==[]
7299 -> Q is E/\ -3,
7300 ( Q==0
7301 -> del_attr(A, chr_translate)
7302 ; put_attr(A,
7303 chr_translate,
7304 v(Q,
7305 F,
7306 [],
7307 H,
7308 I,
7309 J,
7310 K,
7311 L,
7312 M,
7313 N,
7314 O))
7315 )
7316 ; put_attr(A,
7317 chr_translate,
7318 v(E,
7319 F,
7320 P,
7321 H,
7322 I,
7323 J,
7324 K,
7325 L,
7326 M,
7327 N,
7328 O))
7329 )
7330 ; true
7331 )
7332 ; true
7333 ),
7334 detach_symbol_count___2(B, C).
7335attach_fresh_symbol___2([], _).
7336attach_fresh_symbol___2([A|B], C) :-
7337 ( get_attr(A, chr_translate, D)
7338 -> D=v(E, F, G, H, I, J, K, L, M, N, O),
7339 ( E/\4=:=4
7340 -> P=v(E, F, G, [C|H], I, J, K, L, M, N, O)
7341 ; Q is E\/4,
7342 P=v(Q, F, G, [C], I, J, K, L, M, N, O)
7343 ),
7344 put_attr(A, chr_translate, P)
7345 ; put_attr(A,
7346 chr_translate,
7347 v(4, [], [], [C], [], [], [], [], [], [], []))
7348 ),
7349 attach_fresh_symbol___2(B, C).
7350detach_fresh_symbol___2([], _).
7351detach_fresh_symbol___2([A|B], C) :-
7352 ( get_attr(A, chr_translate, D)
7353 -> D=v(E, F, G, H, I, J, K, L, M, N, O),
7354 ( E/\4=:=4
7355 -> 'chr sbag_del_element'(H, C, P),
7356 ( P==[]
7357 -> Q is E/\ -5,
7358 ( Q==0
7359 -> del_attr(A, chr_translate)
7360 ; put_attr(A,
7361 chr_translate,
7362 v(Q,
7363 F,
7364 G,
7365 [],
7366 I,
7367 J,
7368 K,
7369 L,
7370 M,
7371 N,
7372 O))
7373 )
7374 ; put_attr(A,
7375 chr_translate,
7376 v(E,
7377 F,
7378 G,
7379 P,
7380 I,
7381 J,
7382 K,
7383 L,
7384 M,
7385 N,
7386 O))
7387 )
7388 ; true
7389 )
7390 ; true
7391 ),
7392 detach_fresh_symbol___2(B, C).
7393attach_background_info___2([], _).
7394attach_background_info___2([A|B], C) :-
7395 ( get_attr(A, chr_translate, D)
7396 -> D=v(E, F, G, H, I, J, K, L, M, N, O),
7397 ( E/\8=:=8
7398 -> P=v(E, F, G, H, [C|I], J, K, L, M, N, O)
7399 ; Q is E\/8,
7400 P=v(Q, F, G, H, [C], J, K, L, M, N, O)
7401 ),
7402 put_attr(A, chr_translate, P)
7403 ; put_attr(A,
7404 chr_translate,
7405 v(8, [], [], [], [C], [], [], [], [], [], []))
7406 ),
7407 attach_background_info___2(B, C).
7408detach_background_info___2([], _).
7409detach_background_info___2([A|B], C) :-
7410 ( get_attr(A, chr_translate, D)
7411 -> D=v(E, F, G, H, I, J, K, L, M, N, O),
7412 ( E/\8=:=8
7413 -> 'chr sbag_del_element'(I, C, P),
7414 ( P==[]
7415 -> Q is E/\ -9,
7416 ( Q==0
7417 -> del_attr(A, chr_translate)
7418 ; put_attr(A,
7419 chr_translate,
7420 v(Q,
7421 F,
7422 G,
7423 H,
7424 [],
7425 J,
7426 K,
7427 L,
7428 M,
7429 N,
7430 O))
7431 )
7432 ; put_attr(A,
7433 chr_translate,
7434 v(E,
7435 F,
7436 G,
7437 H,
7438 P,
7439 J,
7440 K,
7441 L,
7442 M,
7443 N,
7444 O))
7445 )
7446 ; true
7447 )
7448 ; true
7449 ),
7450 detach_background_info___2(B, C).
7451attach_get_bg_info___2([], _).
7452attach_get_bg_info___2([A|B], C) :-
7453 ( get_attr(A, chr_translate, D)
7454 -> D=v(E, F, G, H, I, J, K, L, M, N, O),
7455 ( E/\16=:=16
7456 -> P=v(E, F, G, H, I, [C|J], K, L, M, N, O)
7457 ; Q is E\/16,
7458 P=v(Q, F, G, H, I, [C], K, L, M, N, O)
7459 ),
7460 put_attr(A, chr_translate, P)
7461 ; put_attr(A,
7462 chr_translate,
7463 v(16, [], [], [], [], [C], [], [], [], [], []))
7464 ),
7465 attach_get_bg_info___2(B, C).
7466detach_get_bg_info___2([], _).
7467detach_get_bg_info___2([A|B], C) :-
7468 ( get_attr(A, chr_translate, D)
7469 -> D=v(E, F, G, H, I, J, K, L, M, N, O),
7470 ( E/\16=:=16
7471 -> 'chr sbag_del_element'(J, C, P),
7472 ( P==[]
7473 -> Q is E/\ -17,
7474 ( Q==0
7475 -> del_attr(A, chr_translate)
7476 ; put_attr(A,
7477 chr_translate,
7478 v(Q,
7479 F,
7480 G,
7481 H,
7482 I,
7483 [],
7484 K,
7485 L,
7486 M,
7487 N,
7488 O))
7489 )
7490 ; put_attr(A,
7491 chr_translate,
7492 v(E,
7493 F,
7494 G,
7495 H,
7496 I,
7497 P,
7498 K,
7499 L,
7500 M,
7501 N,
7502 O))
7503 )
7504 ; true
7505 )
7506 ; true
7507 ),
7508 detach_get_bg_info___2(B, C).
7509attach_type_definition___2([], _).
7510attach_type_definition___2([A|B], C) :-
7511 ( get_attr(A, chr_translate, D)
7512 -> D=v(E, F, G, H, I, J, K, L, M, N, O),
7513 ( E/\32=:=32
7514 -> P=v(E, F, G, H, I, J, [C|K], L, M, N, O)
7515 ; Q is E\/32,
7516 P=v(Q, F, G, H, I, J, [C], L, M, N, O)
7517 ),
7518 put_attr(A, chr_translate, P)
7519 ; put_attr(A,
7520 chr_translate,
7521 v(32, [], [], [], [], [], [C], [], [], [], []))
7522 ),
7523 attach_type_definition___2(B, C).
7524detach_type_definition___2([], _).
7525detach_type_definition___2([A|B], C) :-
7526 ( get_attr(A, chr_translate, D)
7527 -> D=v(E, F, G, H, I, J, K, L, M, N, O),
7528 ( E/\32=:=32
7529 -> 'chr sbag_del_element'(K, C, P),
7530 ( P==[]
7531 -> Q is E/\ -33,
7532 ( Q==0
7533 -> del_attr(A, chr_translate)
7534 ; put_attr(A,
7535 chr_translate,
7536 v(Q,
7537 F,
7538 G,
7539 H,
7540 I,
7541 J,
7542 [],
7543 L,
7544 M,
7545 N,
7546 O))
7547 )
7548 ; put_attr(A,
7549 chr_translate,
7550 v(E,
7551 F,
7552 G,
7553 H,
7554 I,
7555 J,
7556 P,
7557 L,
7558 M,
7559 N,
7560 O))
7561 )
7562 ; true
7563 )
7564 ; true
7565 ),
7566 detach_type_definition___2(B, C).
7567attach_type_alias___2([], _).
7568attach_type_alias___2([A|B], C) :-
7569 ( get_attr(A, chr_translate, D)
7570 -> D=v(E, F, G, H, I, J, K, L, M, N, O),
7571 ( E/\64=:=64
7572 -> P=v(E, F, G, H, I, J, K, [C|L], M, N, O)
7573 ; Q is E\/64,
7574 P=v(Q, F, G, H, I, J, K, [C], M, N, O)
7575 ),
7576 put_attr(A, chr_translate, P)
7577 ; put_attr(A,
7578 chr_translate,
7579 v(64, [], [], [], [], [], [], [C], [], [], []))
7580 ),
7581 attach_type_alias___2(B, C).
7582detach_type_alias___2([], _).
7583detach_type_alias___2([A|B], C) :-
7584 ( get_attr(A, chr_translate, D)
7585 -> D=v(E, F, G, H, I, J, K, L, M, N, O),
7586 ( E/\64=:=64
7587 -> 'chr sbag_del_element'(L, C, P),
7588 ( P==[]
7589 -> Q is E/\ -65,
7590 ( Q==0
7591 -> del_attr(A, chr_translate)
7592 ; put_attr(A,
7593 chr_translate,
7594 v(Q,
7595 F,
7596 G,
7597 H,
7598 I,
7599 J,
7600 K,
7601 [],
7602 M,
7603 N,
7604 O))
7605 )
7606 ; put_attr(A,
7607 chr_translate,
7608 v(E,
7609 F,
7610 G,
7611 H,
7612 I,
7613 J,
7614 K,
7615 P,
7616 M,
7617 N,
7618 O))
7619 )
7620 ; true
7621 )
7622 ; true
7623 ),
7624 detach_type_alias___2(B, C).
7625attach_unalias_type___2([], _).
7626attach_unalias_type___2([A|B], C) :-
7627 ( get_attr(A, chr_translate, D)
7628 -> D=v(E, F, G, H, I, J, K, L, M, N, O),
7629 ( E/\128=:=128
7630 -> P=v(E, F, G, H, I, J, K, L, [C|M], N, O)
7631 ; Q is E\/128,
7632 P=v(Q, F, G, H, I, J, K, L, [C], N, O)
7633 ),
7634 put_attr(A, chr_translate, P)
7635 ; put_attr(A,
7636 chr_translate,
7637 v(128, [], [], [], [], [], [], [], [C], [], []))
7638 ),
7639 attach_unalias_type___2(B, C).
7640detach_unalias_type___2([], _).
7641detach_unalias_type___2([A|B], C) :-
7642 ( get_attr(A, chr_translate, D)
7643 -> D=v(E, F, G, H, I, J, K, L, M, N, O),
7644 ( E/\128=:=128
7645 -> 'chr sbag_del_element'(M, C, P),
7646 ( P==[]
7647 -> Q is E/\ -129,
7648 ( Q==0
7649 -> del_attr(A, chr_translate)
7650 ; put_attr(A,
7651 chr_translate,
7652 v(Q,
7653 F,
7654 G,
7655 H,
7656 I,
7657 J,
7658 K,
7659 L,
7660 [],
7661 N,
7662 O))
7663 )
7664 ; put_attr(A,
7665 chr_translate,
7666 v(E,
7667 F,
7668 G,
7669 H,
7670 I,
7671 J,
7672 K,
7673 L,
7674 P,
7675 N,
7676 O))
7677 )
7678 ; true
7679 )
7680 ; true
7681 ),
7682 detach_unalias_type___2(B, C).
7683attach_ast_static_type_check_var___4([], _).
7684attach_ast_static_type_check_var___4([A|B], C) :-
7685 ( get_attr(A, chr_translate, D)
7686 -> D=v(E, F, G, H, I, J, K, L, M, N, O),
7687 ( E/\256=:=256
7688 -> P=v(E, F, G, H, I, J, K, L, M, [C|N], O)
7689 ; Q is E\/256,
7690 P=v(Q, F, G, H, I, J, K, L, M, [C], O)
7691 ),
7692 put_attr(A, chr_translate, P)
7693 ; put_attr(A,
7694 chr_translate,
7695 v(256, [], [], [], [], [], [], [], [], [C], []))
7696 ),
7697 attach_ast_static_type_check_var___4(B, C).
7698detach_ast_static_type_check_var___4([], _).
7699detach_ast_static_type_check_var___4([A|B], C) :-
7700 ( get_attr(A, chr_translate, D)
7701 -> D=v(E, F, G, H, I, J, K, L, M, N, O),
7702 ( E/\256=:=256
7703 -> 'chr sbag_del_element'(N, C, P),
7704 ( P==[]
7705 -> Q is E/\ -257,
7706 ( Q==0
7707 -> del_attr(A, chr_translate)
7708 ; put_attr(A,
7709 chr_translate,
7710 v(Q,
7711 F,
7712 G,
7713 H,
7714 I,
7715 J,
7716 K,
7717 L,
7718 M,
7719 [],
7720 O))
7721 )
7722 ; put_attr(A,
7723 chr_translate,
7724 v(E,
7725 F,
7726 G,
7727 H,
7728 I,
7729 J,
7730 K,
7731 L,
7732 M,
7733 P,
7734 O))
7735 )
7736 ; true
7737 )
7738 ; true
7739 ),
7740 detach_ast_static_type_check_var___4(B, C).
7741attach_atomic_type___1([], _).
7742attach_atomic_type___1([A|B], C) :-
7743 ( get_attr(A, chr_translate, D)
7744 -> D=v(E, F, G, H, I, J, K, L, M, N, O),
7745 ( E/\512=:=512
7746 -> P=v(E, F, G, H, I, J, K, L, M, N, [C|O])
7747 ; Q is E\/512,
7748 P=v(Q, F, G, H, I, J, K, L, M, N, [C])
7749 ),
7750 put_attr(A, chr_translate, P)
7751 ; put_attr(A,
7752 chr_translate,
7753 v(512, [], [], [], [], [], [], [], [], [], [C]))
7754 ),
7755 attach_atomic_type___1(B, C).
7756detach_atomic_type___1([], _).
7757detach_atomic_type___1([A|B], C) :-
7758 ( get_attr(A, chr_translate, D)
7759 -> D=v(E, F, G, H, I, J, K, L, M, N, O),
7760 ( E/\512=:=512
7761 -> 'chr sbag_del_element'(O, C, P),
7762 ( P==[]
7763 -> Q is E/\ -513,
7764 ( Q==0
7765 -> del_attr(A, chr_translate)
7766 ; put_attr(A,
7767 chr_translate,
7768 v(Q,
7769 F,
7770 G,
7771 H,
7772 I,
7773 J,
7774 K,
7775 L,
7776 M,
7777 N,
7778 []))
7779 )
7780 ; put_attr(A,
7781 chr_translate,
7782 v(E,
7783 F,
7784 G,
7785 H,
7786 I,
7787 J,
7788 K,
7789 L,
7790 M,
7791 N,
7792 P))
7793 )
7794 ; true
7795 )
7796 ; true
7797 ),
7798 detach_atomic_type___1(B, C).
7799attach_increment([], _).
7800attach_increment([A|B], C) :-
7801 ( get_attr(A, chr_translate, D)
7802 -> C=v(E, F, G, H, I, J, K, L, M, N, O),
7803 D=v(P, Q, R, S, T, U, V, W, X, Y, Z),
7804 ( sort(Q, A1),
7805 'chr merge_attributes'(F, A1, B1),
7806 sort(R, C1),
7807 'chr merge_attributes'(G, C1, D1),
7808 sort(S, E1),
7809 'chr merge_attributes'(H, E1, F1),
7810 sort(T, G1),
7811 'chr merge_attributes'(I, G1, H1),
7812 sort(U, I1),
7813 'chr merge_attributes'(J, I1, J1),
7814 sort(V, K1),
7815 'chr merge_attributes'(K, K1, L1),
7816 sort(W, M1),
7817 'chr merge_attributes'(L, M1, N1),
7818 sort(X, O1),
7819 'chr merge_attributes'(M, O1, P1),
7820 sort(Y, Q1),
7821 'chr merge_attributes'(N, Q1, R1),
7822 sort(Z, S1),
7823 'chr merge_attributes'(O, S1, T1)
7824 ),
7825 U1 is E\/P,
7826 put_attr(A,
7827 chr_translate,
7828 v(U1,
7829 B1,
7830 D1,
7831 F1,
7832 H1,
7833 J1,
7834 L1,
7835 N1,
7836 P1,
7837 R1,
7838 T1))
7839 ; put_attr(A, chr_translate, C)
7840 ),
7841 attach_increment(B, C).
7842attribute_goals(_, A, A).
7843attr_unify_hook(v(A, B, C, D, E, F, G, H, I, J, K), L) :-
7844 sort(B, M),
7845 sort(C, N),
7846 sort(D, O),
7847 sort(E, P),
7848 sort(F, Q),
7849 sort(G, R),
7850 sort(H, S),
7851 sort(I, T),
7852 sort(J, U),
7853 sort(K, V),
7854 ( var(L)
7855 -> ( get_attr(L, chr_translate, W)
7856 -> W=v(X, Y, Z, A1, B1, C1, D1, E1, F1, G1, H1),
7857 ( sort(Y, I1),
7858 'chr merge_attributes'(M, I1, J1),
7859 sort(Z, K1),
7860 'chr merge_attributes'(N, K1, L1),
7861 sort(A1, M1),
7862 'chr merge_attributes'(O, M1, N1),
7863 sort(B1, O1),
7864 'chr merge_attributes'(P, O1, P1),
7865 sort(C1, Q1),
7866 'chr merge_attributes'(Q, Q1, R1),
7867 sort(D1, S1),
7868 'chr merge_attributes'(R, S1, T1),
7869 sort(E1, U1),
7870 'chr merge_attributes'(S, U1, V1),
7871 sort(F1, W1),
7872 'chr merge_attributes'(T, W1, X1),
7873 sort(G1, Y1),
7874 'chr merge_attributes'(U, Y1, Z1),
7875 sort(H1, A2),
7876 'chr merge_attributes'(V, A2, B2)
7877 ),
7878 C2 is A\/X,
7879 put_attr(L,
7880 chr_translate,
7881 v(C2,
7882 J1,
7883 L1,
7884 N1,
7885 P1,
7886 R1,
7887 T1,
7888 V1,
7889 X1,
7890 Z1,
7891 B2)),
7892 '$run_suspensions_generate_empty_named_history_initialisation___1'(M),
7893 '$run_suspensions_symbol_count___2'(N),
7894 '$run_suspensions_fresh_symbol___2'(O),
7895 '$run_suspensions_background_info___2'(P1),
7896 '$run_suspensions_get_bg_info___2'(R1),
7897 '$run_suspensions_type_definition___2'(T1),
7898 '$run_suspensions_type_alias___2'(V1),
7899 '$run_suspensions_unalias_type___2'(X1),
7900 '$run_suspensions_ast_static_type_check_var___4'(Z1),
7901 '$run_suspensions_atomic_type___1'(B2)
7902 ; put_attr(L,
7903 chr_translate,
7904 v(A,
7905 M,
7906 N,
7907 O,
7908 P,
7909 Q,
7910 R,
7911 S,
7912 T,
7913 U,
7914 V)),
7915 '$run_suspensions_generate_empty_named_history_initialisation___1'(M),
7916 '$run_suspensions_symbol_count___2'(N),
7917 '$run_suspensions_fresh_symbol___2'(O),
7918 '$run_suspensions_background_info___2'(P),
7919 '$run_suspensions_get_bg_info___2'(Q),
7920 '$run_suspensions_type_definition___2'(R),
7921 '$run_suspensions_type_alias___2'(S),
7922 '$run_suspensions_unalias_type___2'(T),
7923 '$run_suspensions_ast_static_type_check_var___4'(U),
7924 '$run_suspensions_atomic_type___1'(V)
7925 )
7926 ; ( compound(L)
7927 -> term_variables(L, D2),
7928 attach_increment(D2,
7929 v(A,
7930 M,
7931 N,
7932 O,
7933 P,
7934 Q,
7935 R,
7936 S,
7937 T,
7938 U,
7939 V))
7940 ; true
7941 ),
7942 '$run_suspensions_generate_empty_named_history_initialisation___1'(M),
7943 '$run_suspensions_symbol_count___2'(N),
7944 '$run_suspensions_fresh_symbol___2'(O),
7945 '$run_suspensions_background_info___2'(P),
7946 '$run_suspensions_get_bg_info___2'(Q),
7947 '$run_suspensions_type_definition___2'(R),
7948 '$run_suspensions_type_alias___2'(S),
7949 '$run_suspensions_unalias_type___2'(T),
7950 '$run_suspensions_ast_static_type_check_var___4'(U),
7951 '$run_suspensions_atomic_type___1'(V)
7952 ).
7953'$novel_production'(A, B) :-
7954 arg(3, A, C),
7955 ( hprolog:get_ds(B, C, _)
7956 -> fail
7957 ; true
7958 ).
7959'$extend_history'(A, B) :-
7960 arg(3, A, C),
7961 hprolog:put_ds(B, C, x, D),
7962 setarg(3, A, D).
7963'$run_suspensions_generate_empty_named_history_initialisation___1'([]).
7964'$run_suspensions_generate_empty_named_history_initialisation___1'([A|B]) :-
7965 A=suspension(_, C, D, _, E),
7966 ( C==active
7967 -> setarg(2, A, triggered),
7968 F is D+1,
7969 setarg(3, A, F),
7970 generate_empty_named_history_initialisation___1__0(E, A),
7971 ( C==triggered
7972 -> setarg(2, A, active)
7973 ; true
7974 )
7975 ; true
7976 ),
7977 '$run_suspensions_generate_empty_named_history_initialisation___1'(B).
7978'$run_suspensions_symbol_count___2'([]).
7979'$run_suspensions_symbol_count___2'([A|B]) :-
7980 A=suspension(_, C, _, D, E),
7981 ( C==active
7982 -> setarg(2, A, triggered),
7983 symbol_count___2__0(D, E, A),
7984 ( C==triggered
7985 -> setarg(2, A, active)
7986 ; true
7987 )
7988 ; true
7989 ),
7990 '$run_suspensions_symbol_count___2'(B).
7991'$run_suspensions_fresh_symbol___2'([]).
7992'$run_suspensions_fresh_symbol___2'([A|B]) :-
7993 A=suspension(_, C, _, D, _, E, F),
7994 ( C==active
7995 -> setarg(2, A, triggered),
7996 G is D+1,
7997 setarg(4, A, G),
7998 fresh_symbol___2__0(E, F, A),
7999 ( C==triggered
8000 -> setarg(2, A, active)
8001 ; true
8002 )
8003 ; true
8004 ),
8005 '$run_suspensions_fresh_symbol___2'(B).
8006'$run_suspensions_background_info___2'([]).
8007'$run_suspensions_background_info___2'([A|B]) :-
8008 A=suspension(_, C, _, D, _, E, F),
8009 setarg(2, A, triggered),
8010 G is D+1,
8011 setarg(4, A, G),
8012 background_info___2__0(E, F, A),
8013 ( C==triggered
8014 -> setarg(2, A, active)
8015 ; true
8016 ),
8017 '$run_suspensions_background_info___2'(B).
8018'$run_suspensions_get_bg_info___2'([]).
8019'$run_suspensions_get_bg_info___2'([A|B]) :-
8020 A=suspension(_, C, _, D, _, E, F),
8021 ( C==active
8022 -> setarg(2, A, triggered),
8023 G is D+1,
8024 setarg(4, A, G),
8025 get_bg_info___2__0(E, F, A),
8026 ( C==triggered
8027 -> setarg(2, A, active)
8028 ; true
8029 )
8030 ; true
8031 ),
8032 '$run_suspensions_get_bg_info___2'(B).
8033'$run_suspensions_type_definition___2'([]).
8034'$run_suspensions_type_definition___2'([A|B]) :-
8035 A=suspension(_, C, _, D, _, E, F),
8036 ( C==active
8037 -> setarg(2, A, triggered),
8038 G is D+1,
8039 setarg(4, A, G),
8040 type_definition___2__0(E, F, A),
8041 ( C==triggered
8042 -> setarg(2, A, active)
8043 ; true
8044 )
8045 ; true
8046 ),
8047 '$run_suspensions_type_definition___2'(B).
8048'$run_suspensions_type_alias___2'([]).
8049'$run_suspensions_type_alias___2'([A|B]) :-
8050 A=suspension(_, C, _, D, _, E, F),
8051 ( C==active
8052 -> setarg(2, A, triggered),
8053 G is D+1,
8054 setarg(4, A, G),
8055 type_alias___2__0(E, F, A),
8056 ( C==triggered
8057 -> setarg(2, A, active)
8058 ; true
8059 )
8060 ; true
8061 ),
8062 '$run_suspensions_type_alias___2'(B).
8063'$run_suspensions_unalias_type___2'([]).
8064'$run_suspensions_unalias_type___2'([A|B]) :-
8065 A=suspension(_, C, _, D, E),
8066 ( C==active
8067 -> setarg(2, A, triggered),
8068 unalias_type___2__0(D, E, A),
8069 ( C==triggered
8070 -> setarg(2, A, active)
8071 ; true
8072 )
8073 ; true
8074 ),
8075 '$run_suspensions_unalias_type___2'(B).
8076'$run_suspensions_ast_static_type_check_var___4'([]).
8077'$run_suspensions_ast_static_type_check_var___4'([A|B]) :-
8078 A=suspension(_, C, _, D, E, F, G),
8079 ( C==active
8080 -> setarg(2, A, triggered),
8081 ast_static_type_check_var___4__0(D,
8082 E,
8083 F,
8084 G,
8085 A),
8086 ( C==triggered
8087 -> setarg(2, A, active)
8088 ; true
8089 )
8090 ; true
8091 ),
8092 '$run_suspensions_ast_static_type_check_var___4'(B).
8093'$run_suspensions_atomic_type___1'([]).
8094'$run_suspensions_atomic_type___1'([A|B]) :-
8095 A=suspension(_, C, _, D),
8096 ( C==active
8097 -> setarg(2, A, triggered),
8098 atomic_type___1__0(D, A),
8099 ( C==triggered
8100 -> setarg(2, A, active)
8101 ; true
8102 )
8103 ; true
8104 ),
8105 '$run_suspensions_atomic_type___1'(B).
8106'$enumerate_constraints'(A) :-
8107 ( nonvar(A)
8108 -> functor(A, B, _),
8109 '$enumerate_constraints'(B, A)
8110 ; '$enumerate_constraints'(_, A)
8111 ).
8112'$enumerate_constraints'(chr_source_file, A) :-
8113 nb_getval('$chr_store_global_ground_chr_translate____chr_source_file___1',
8114 B),
8115 member(C, B),
8116 C=suspension(_, _, _, D),
8117 A=chr_source_file(D).
8118'$enumerate_constraints'(target_module, A) :-
8119 nb_getval('$chr_store_global_ground_chr_translate____target_module___1',
8120 B),
8121 member(C, B),
8122 C=suspension(_, _, _, D),
8123 A=target_module(D).
8124'$enumerate_constraints'(source_location, A) :-
8125 nb_getval('$chr_store_multi_hash_chr_translate____source_location___2-1',
8126 B),
8127 value_ht(B, C),
8128 C=suspension(_, _, D, E),
8129 A=source_location(D, E).
8130'$enumerate_constraints'(indexed_argument, A) :-
8131 nb_getval('$chr_store_multi_hash_chr_translate____indexed_argument___2-1',
8132 B),
8133 value_ht(B, C),
8134 C=suspension(_, _, D, E),
8135 A=indexed_argument(D, E).
8136'$enumerate_constraints'(constraint_mode, A) :-
8137 nb_getval('$chr_store_global_ground_chr_translate____constraint_mode___2',
8138 B),
8139 member(C, B),
8140 C=suspension(_, _, _, _, D, E),
8141 A=constraint_mode(D, E).
8142'$enumerate_constraints'(none_suspended_on_variables, A) :-
8143 nb_getval('$chr_store_global_ground_chr_translate____none_suspended_on_variables___0',
8144 B),
8145 member(C, B),
8146 C=suspension(_, _, _),
8147 A=none_suspended_on_variables.
8148'$enumerate_constraints'(store_type, A) :-
8149 nb_getval('$chr_store_multi_hash_chr_translate____store_type___2-1', B),
8150 value_ht(B, C),
8151 C=suspension(_, _, D, E),
8152 A=store_type(D, E).
8153'$enumerate_constraints'(actual_store_types, A) :-
8154 nb_getval('$chr_store_multi_hash_chr_translate____actual_store_types___2-1',
8155 B),
8156 value_ht(B, C),
8157 C=suspension(_, _, D, E),
8158 A=actual_store_types(D, E).
8159'$enumerate_constraints'(assumed_store_type, A) :-
8160 nb_getval('$chr_store_multi_hash_chr_translate____assumed_store_type___2-1',
8161 B),
8162 value_ht(B, C),
8163 C=suspension(_, _, D, E),
8164 A=assumed_store_type(D, E).
8165'$enumerate_constraints'(validate_store_type_assumption, A) :-
8166 nb_getval('$chr_store_multi_hash_chr_translate____validate_store_type_assumption___1-1',
8167 B),
8168 value_ht(B, C),
8169 C=suspension(_, _, D),
8170 A=validate_store_type_assumption(D).
8171'$enumerate_constraints'(rule_count, A) :-
8172 nb_getval('$chr_store_global_ground_chr_translate____rule_count___1',
8173 B),
8174 member(C, B),
8175 C=suspension(_, _, _, D),
8176 A=rule_count(D).
8177'$enumerate_constraints'(passive, A) :-
8178 nb_getval('$chr_store_multi_hash_chr_translate____passive___2-1', B),
8179 value_ht(B, C),
8180 C=suspension(_, _, _, D, E),
8181 A=passive(D, E).
8182'$enumerate_constraints'(occurrence, A) :-
8183 nb_getval('$chr_store_global_ground_chr_translate____occurrence___5',
8184 B),
8185 member(C, B),
8186 C=suspension(_, _, _, _, D, E, F, G, H),
8187 A=occurrence(D, E, F, G, H).
8188'$enumerate_constraints'(max_occurrence, A) :-
8189 nb_getval('$chr_store_multi_hash_chr_translate____max_occurrence___2-1',
8190 B),
8191 value_ht(B, C),
8192 C=suspension(_, _, _, D, E),
8193 A=max_occurrence(D, E).
8194'$enumerate_constraints'(allocation_occurrence, A) :-
8195 nb_getval('$chr_store_multi_hash_chr_translate____allocation_occurrence___2-1',
8196 B),
8197 value_ht(B, C),
8198 C=suspension(_, _, _, D, E),
8199 A=allocation_occurrence(D, E).
8200'$enumerate_constraints'(rule, A) :-
8201 nb_getval('$chr_store_global_ground_chr_translate____rule___2', B),
8202 member(C, B),
8203 C=suspension(_, _, _, _, D, E),
8204 A=rule(D, E).
8205'$enumerate_constraints'(least_occurrence, A) :-
8206 nb_getval('$chr_store_multi_hash_chr_translate____least_occurrence___2-12',
8207 B),
8208 value_ht(B, C),
8209 C=suspension(_, _, D, E),
8210 A=least_occurrence(D, E).
8211'$enumerate_constraints'(constraint_index, A) :-
8212 nb_getval('$chr_store_multi_hash_chr_translate____constraint_index___2-2',
8213 B),
8214 value_ht(B, C),
8215 C=suspension(_, _, D, E),
8216 A=constraint_index(D, E).
8217'$enumerate_constraints'(max_constraint_index, A) :-
8218 nb_getval('$chr_store_global_ground_chr_translate____max_constraint_index___1',
8219 B),
8220 member(C, B),
8221 C=suspension(_, _, _, D),
8222 A=max_constraint_index(D).
8223'$enumerate_constraints'(identifier_size, A) :-
8224 nb_getval('$chr_store_global_ground_chr_translate____identifier_size___1',
8225 B),
8226 member(C, B),
8227 C=suspension(_, _, _, D),
8228 A=identifier_size(D).
8229'$enumerate_constraints'(identifier_index, A) :-
8230 nb_getval('$chr_store_multi_hash_chr_translate____identifier_index___3-12',
8231 B),
8232 value_ht(B, C),
8233 C=suspension(_, _, D, E, F),
8234 A=identifier_index(D, E, F).
8235'$enumerate_constraints'(type_indexed_identifier_size, A) :-
8236 nb_getval('$chr_store_multi_hash_chr_translate____type_indexed_identifier_size___2-1',
8237 B),
8238 value_ht(B, C),
8239 C=suspension(_, _, D, E),
8240 A=type_indexed_identifier_size(D, E).
8241'$enumerate_constraints'(type_indexed_identifier_index, A) :-
8242 nb_getval('$chr_store_multi_hash_chr_translate____type_indexed_identifier_index___4-123',
8243 B),
8244 value_ht(B, C),
8245 C=suspension(_, _, D, E, F, G),
8246 A=type_indexed_identifier_index(D, E, F, G).
8247'$enumerate_constraints'(no_history, A) :-
8248 nb_getval('$chr_store_multi_hash_chr_translate____no_history___1-1', B),
8249 value_ht(B, C),
8250 C=suspension(_, _, D),
8251 A=no_history(D).
8252'$enumerate_constraints'(history, A) :-
8253 nb_getval('$chr_store_multi_hash_chr_translate____history___3-2', B),
8254 value_ht(B, C),
8255 C=suspension(_, _, _, D, E, F),
8256 A=history(D, E, F).
8257'$enumerate_constraints'(indexing_spec, A) :-
8258 nb_getval('$chr_store_multi_hash_chr_translate____indexing_spec___2-1',
8259 B),
8260 value_ht(B, C),
8261 C=suspension(_, _, D, E),
8262 A=indexing_spec(D, E).
8263'$enumerate_constraints'(observation_analysis, A) :-
8264 nb_getval('$chr_store_global_ground_chr_translate____observation_analysis___1',
8265 B),
8266 member(C, B),
8267 C=suspension(_, _, _, D),
8268 A=observation_analysis(D).
8269'$enumerate_constraints'(spawns, A) :-
8270 nb_getval('$chr_store_global_ground_chr_translate____spawns___3', B),
8271 member(C, B),
8272 C=suspension(_, _, _, _, D, E, F),
8273 A=spawns(D, E, F).
8274'$enumerate_constraints'(spawns_all, A) :-
8275 nb_getval('$chr_store_multi_hash_chr_translate____spawns_all___2-1', B),
8276 value_ht(B, C),
8277 C=suspension(_, _, D, E),
8278 A=spawns_all(D, E).
8279'$enumerate_constraints'(spawns_all_triggers, A) :-
8280 nb_getval('$chr_store_global_ground_chr_translate____spawns_all_triggers___2',
8281 B),
8282 member(C, B),
8283 C=suspension(_, _, _, _, D, E),
8284 A=spawns_all_triggers(D, E).
8285'$enumerate_constraints'(spawns_all_triggers_implies_spawns_all, A) :-
8286 nb_getval('$chr_store_global_ground_chr_translate____spawns_all_triggers_implies_spawns_all___0',
8287 B),
8288 member(C, B),
8289 C=suspension(_, _, _),
8290 A=spawns_all_triggers_implies_spawns_all.
8291'$enumerate_constraints'(empty_named_history_initialisations, A) :-
8292 nb_getval('$chr_store_global_ground_chr_translate____empty_named_history_initialisations___2',
8293 B),
8294 member(C, B),
8295 C=suspension(_, _, _, D, E),
8296 A=empty_named_history_initialisations(D, E).
8297'$enumerate_constraints'(generate_empty_named_history_initialisation, A) :-
8298 nb_current('$chr_store_global_list_chr_translate____generate_empty_named_history_initialisation___1',
8299 B),
8300 member(C, B),
8301 C=suspension(_, _, _, _, D),
8302 A=generate_empty_named_history_initialisation(D).
8303'$enumerate_constraints'(find_empty_named_histories, A) :-
8304 nb_getval('$chr_store_global_ground_chr_translate____find_empty_named_histories___0',
8305 B),
8306 member(C, B),
8307 C=suspension(_, _, _, _),
8308 A=find_empty_named_histories.
8309'$enumerate_constraints'(module_initializer, A) :-
8310 nb_getval('$chr_store_global_ground_chr_translate____module_initializer___1',
8311 B),
8312 member(C, B),
8313 C=suspension(_, _, _, D),
8314 A=module_initializer(D).
8315'$enumerate_constraints'(actual_atomic_multi_hash_keys, A) :-
8316 nb_getval('$chr_store_multi_hash_chr_translate____actual_atomic_multi_hash_keys___3-12',
8317 B),
8318 value_ht(B, C),
8319 C=suspension(_, _, D, E, F),
8320 A=actual_atomic_multi_hash_keys(D, E, F).
8321'$enumerate_constraints'(actual_ground_multi_hash_keys, A) :-
8322 nb_getval('$chr_store_multi_hash_chr_translate____actual_ground_multi_hash_keys___3-12',
8323 B),
8324 value_ht(B, C),
8325 C=suspension(_, _, D, E, F),
8326 A=actual_ground_multi_hash_keys(D, E, F).
8327'$enumerate_constraints'(actual_non_ground_multi_hash_key, A) :-
8328 nb_getval('$chr_store_multi_hash_chr_translate____actual_non_ground_multi_hash_key___2-12',
8329 B),
8330 value_ht(B, C),
8331 C=suspension(_, _, D, E),
8332 A=actual_non_ground_multi_hash_key(D, E).
8333'$enumerate_constraints'(symbol_count, A) :-
8334 nb_current('$chr_store_global_list_chr_translate____symbol_count___2',
8335 B),
8336 member(C, B),
8337 C=suspension(_, _, _, D, E),
8338 A=symbol_count(D, E).
8339'$enumerate_constraints'(fresh_symbol, A) :-
8340 nb_current('$chr_store_global_list_chr_translate____fresh_symbol___2',
8341 B),
8342 member(C, B),
8343 C=suspension(_, _, _, _, _, D, E),
8344 A=fresh_symbol(D, E).
8345'$enumerate_constraints'(prolog_global_variable, A) :-
8346 nb_getval('$chr_store_global_ground_chr_translate____prolog_global_variable___1',
8347 B),
8348 member(C, B),
8349 C=suspension(_, _, _, D),
8350 A=prolog_global_variable(D).
8351'$enumerate_constraints'(background_info, A) :-
8352 nb_getval('$chr_store_global_ground_chr_translate____background_info___1',
8353 B),
8354 member(C, B),
8355 C=suspension(_, _, _, D),
8356 A=background_info(D).
8357'$enumerate_constraints'(background_info, A) :-
8358 nb_current('$chr_store_global_list_chr_translate____background_info___2',
8359 B),
8360 member(C, B),
8361 C=suspension(_, _, _, _, _, D, E),
8362 A=background_info(D, E).
8363'$enumerate_constraints'(get_bg_info, A) :-
8364 nb_current('$chr_store_global_list_chr_translate____get_bg_info___2',
8365 B),
8366 member(C, B),
8367 C=suspension(_, _, _, _, _, D, E),
8368 A=get_bg_info(D, E).
8369'$enumerate_constraints'(get_bg_info_answer, A) :-
8370 nb_getval('$chr_store_global_ground_chr_translate____get_bg_info_answer___1',
8371 B),
8372 member(C, B),
8373 C=suspension(_, _, _, D),
8374 A=get_bg_info_answer(D).
8375'$enumerate_constraints'(prev_guard_list, A) :-
8376 nb_getval('$chr_store_global_ground_chr_translate____prev_guard_list___6',
8377 B),
8378 member(C, B),
8379 C=suspension(_, _, _, _, D, E, F, G, H, I),
8380 A=prev_guard_list(D, E, F, G, H, I).
8381'$enumerate_constraints'(set_all_passive, A) :-
8382 nb_getval('$chr_store_multi_hash_chr_translate____set_all_passive___1-1',
8383 B),
8384 value_ht(B, C),
8385 C=suspension(_, _, _, D),
8386 A=set_all_passive(D).
8387'$enumerate_constraints'(precompute_head_matchings, A) :-
8388 nb_getval('$chr_store_global_ground_chr_translate____precompute_head_matchings___0',
8389 B),
8390 member(C, B),
8391 C=suspension(_, _, _, _),
8392 A=precompute_head_matchings.
8393'$enumerate_constraints'(make_head_matchings_explicit_memo_table, A) :-
8394 nb_getval('$chr_store_multi_hash_chr_translate____make_head_matchings_explicit_memo_table___3-1',
8395 B),
8396 value_ht(B, C),
8397 C=suspension(_, _, D, E, F),
8398 A=make_head_matchings_explicit_memo_table(D, E, F).
8399'$enumerate_constraints'(multiple_occ_constraints_checked, A) :-
8400 nb_getval('$chr_store_global_ground_chr_translate____multiple_occ_constraints_checked___1',
8401 B),
8402 member(C, B),
8403 C=suspension(_, _, _, D),
8404 A=multiple_occ_constraints_checked(D).
8405'$enumerate_constraints'(type_definition, A) :-
8406 nb_current('$chr_store_global_list_chr_translate____type_definition___2',
8407 B),
8408 member(C, B),
8409 C=suspension(_, _, _, _, _, D, E),
8410 A=type_definition(D, E).
8411'$enumerate_constraints'(type_alias, A) :-
8412 nb_current('$chr_store_global_list_chr_translate____type_alias___2', B),
8413 member(C, B),
8414 C=suspension(_, _, _, _, _, D, E),
8415 A=type_alias(D, E).
8416'$enumerate_constraints'(constraint_type, A) :-
8417 nb_getval('$chr_store_global_ground_chr_translate____constraint_type___2',
8418 B),
8419 member(C, B),
8420 C=suspension(_, _, _, D, E),
8421 A=constraint_type(D, E).
8422'$enumerate_constraints'(unalias_type, A) :-
8423 nb_current('$chr_store_global_list_chr_translate____unalias_type___2',
8424 B),
8425 member(C, B),
8426 C=suspension(_, _, _, D, E),
8427 A=unalias_type(D, E).
8428'$enumerate_constraints'(types_modes_condition, A) :-
8429 nb_getval('$chr_store_global_ground_chr_translate____types_modes_condition___3',
8430 B),
8431 member(C, B),
8432 C=suspension(_, _, _, D, E, F),
8433 A=types_modes_condition(D, E, F).
8434'$enumerate_constraints'(static_type_check, A) :-
8435 nb_getval('$chr_store_global_ground_chr_translate____static_type_check___2',
8436 B),
8437 member(C, B),
8438 C=suspension(_, _, _, D, E),
8439 A=static_type_check(D, E).
8440'$enumerate_constraints'(ast_static_type_check_var, A) :-
8441 nb_current('$chr_store_global_list_chr_translate____ast_static_type_check_var___4',
8442 B),
8443 member(C, B),
8444 C=suspension(_, _, _, D, E, F, G),
8445 A=ast_static_type_check_var(D, E, F, G).
8446'$enumerate_constraints'(ast_static_atomic_builtin_type_check_var, A) :-
8447 nb_getval('$chr_store_multi_hash_chr_translate____ast_static_atomic_builtin_type_check_var___4-1',
8448 B),
8449 value_ht(B, C),
8450 C=suspension(_, _, D, E, F, G),
8451 A=ast_static_atomic_builtin_type_check_var(D, E, F, G).
8452'$enumerate_constraints'(dynamic_type_check, A) :-
8453 nb_getval('$chr_store_global_ground_chr_translate____dynamic_type_check___0',
8454 B),
8455 member(C, B),
8456 C=suspension(_, _, _, _),
8457 A=dynamic_type_check.
8458'$enumerate_constraints'(dynamic_type_check_clauses, A) :-
8459 nb_getval('$chr_store_global_ground_chr_translate____dynamic_type_check_clauses___1',
8460 B),
8461 member(C, B),
8462 C=suspension(_, _, _, D),
8463 A=dynamic_type_check_clauses(D).
8464'$enumerate_constraints'(atomic_type, A) :-
8465 nb_current('$chr_store_global_list_chr_translate____atomic_type___1',
8466 B),
8467 member(C, B),
8468 C=suspension(_, _, _, D),
8469 A=atomic_type(D).
8470'$enumerate_constraints'(stored, A) :-
8471 nb_getval('$chr_store_multi_hash_chr_translate____stored___3-13', B),
8472 value_ht(B, C),
8473 C=suspension(_, _, D, E, F),
8474 A=stored(D, E, F).
8475'$enumerate_constraints'(stored_complete, A) :-
8476 nb_getval('$chr_store_multi_hash_chr_translate____stored_complete___3-13',
8477 B),
8478 value_ht(B, C),
8479 C=suspension(_, _, _, D, E, F),
8480 A=stored_complete(D, E, F).
8481'$enumerate_constraints'(check_all_passive, A) :-
8482 nb_getval('$chr_store_multi_hash_chr_translate____check_all_passive___2-12',
8483 B),
8484 value_ht(B, C),
8485 C=suspension(_, _, D, E),
8486 A=check_all_passive(D, E).
8487'$enumerate_constraints'(constraints_code1, A) :-
8488 nb_getval('$chr_store_global_ground_chr_translate____constraints_code1___3',
8489 B),
8490 member(C, B),
8491 C=suspension(_, _, _, D, E, F),
8492 A=constraints_code1(D, E, F).
8493'$enumerate_constraints'(memo_has_active_occurrence, A) :-
8494 nb_getval('$chr_store_multi_hash_chr_translate____memo_has_active_occurrence___1-1',
8495 B),
8496 value_ht(B, C),
8497 C=suspension(_, _, D),
8498 A=memo_has_active_occurrence(D).
8499'$enumerate_constraints'(use_auxiliary_predicate, A) :-
8500 nb_getval('$chr_store_multi_hash_chr_translate____use_auxiliary_predicate___1-1',
8501 B),
8502 value_ht(B, C),
8503 C=suspension(_, _, D),
8504 A=use_auxiliary_predicate(D).
8505'$enumerate_constraints'(use_auxiliary_predicate, A) :-
8506 nb_getval('$chr_store_multi_hash_chr_translate____use_auxiliary_predicate___2-1',
8507 B),
8508 value_ht(B, C),
8509 C=suspension(_, _, D, E),
8510 A=use_auxiliary_predicate(D, E).
8511'$enumerate_constraints'(use_auxiliary_module, A) :-
8512 nb_getval('$chr_store_multi_hash_chr_translate____use_auxiliary_module___1-1',
8513 B),
8514 value_ht(B, C),
8515 C=suspension(_, _, D),
8516 A=use_auxiliary_module(D).
8517'$enumerate_constraints'(functional_dependency, A) :-
8518 nb_getval('$chr_store_multi_hash_chr_translate____functional_dependency___4-1',
8519 B),
8520 value_ht(B, C),
8521 C=suspension(_, _, D, E, F, G),
8522 A=functional_dependency(D, E, F, G).
8523'$enumerate_constraints'(initial_call_pattern, A) :-
8524 nb_getval('$chr_store_multi_hash_chr_translate____initial_call_pattern___1-1',
8525 B),
8526 value_ht(B, C),
8527 C=suspension(_, _, _, D),
8528 A=initial_call_pattern(D).
8529'$enumerate_constraints'(call_pattern, A) :-
8530 nb_getval('$chr_store_multi_hash_chr_translate____call_pattern___1-1',
8531 B),
8532 value_ht(B, C),
8533 C=suspension(_, _, D),
8534 A=call_pattern(D).
8535'$enumerate_constraints'(final_answer_pattern, A) :-
8536 nb_getval('$chr_store_multi_hash_chr_translate____final_answer_pattern___2-1',
8537 B),
8538 value_ht(B, C),
8539 C=suspension(_, _, _, D, E),
8540 A=final_answer_pattern(D, E).
8541'$enumerate_constraints'(abstract_constraints, A) :-
8542 nb_getval('$chr_store_global_ground_chr_translate____abstract_constraints___1',
8543 B),
8544 member(C, B),
8545 C=suspension(_, _, _, D),
8546 A=abstract_constraints(D).
8547'$enumerate_constraints'(depends_on, A) :-
8548 nb_getval('$chr_store_multi_hash_chr_translate____depends_on___2-1', B),
8549 value_ht(B, C),
8550 C=suspension(_, _, _, D, E),
8551 A=depends_on(D, E).
8552'$enumerate_constraints'(depends_on_ap, A) :-
8553 nb_getval('$chr_store_multi_hash_chr_translate____depends_on_ap___4-2',
8554 B),
8555 value_ht(B, C),
8556 C=suspension(_, _, _, D, E, F, G),
8557 A=depends_on_ap(D, E, F, G).
8558'$enumerate_constraints'(depends_on_goal, A) :-
8559 nb_getval('$chr_store_multi_hash_chr_translate____depends_on_goal___2-2',
8560 B),
8561 value_ht(B, C),
8562 C=suspension(_, _, _, D, E),
8563 A=depends_on_goal(D, E).
8564'$enumerate_constraints'(ai_observed_internal, A) :-
8565 nb_getval('$chr_store_global_ground_chr_translate____ai_observed_internal___2',
8566 B),
8567 member(C, B),
8568 C=suspension(_, _, _, D, E),
8569 A=ai_observed_internal(D, E).
8570'$enumerate_constraints'(ai_not_observed_internal, A) :-
8571 nb_getval('$chr_store_global_ground_chr_translate____ai_not_observed_internal___2',
8572 B),
8573 member(C, B),
8574 C=suspension(_, _, _, D, E),
8575 A=ai_not_observed_internal(D, E).
8576'$enumerate_constraints'(ai_not_observed, A) :-
8577 nb_getval('$chr_store_multi_hash_chr_translate____ai_not_observed___2-12',
8578 B),
8579 value_ht(B, C),
8580 C=suspension(_, _, D, E),
8581 A=ai_not_observed(D, E).
8582'$enumerate_constraints'(depends_on_as, A) :-
8583 nb_getval('$chr_store_multi_hash_chr_translate____depends_on_as___3-3',
8584 B),
8585 value_ht(B, C),
8586 C=suspension(_, _, _, D, E, F),
8587 A=depends_on_as(D, E, F).
8588'$enumerate_constraints'(ai_observation_gather_results, A) :-
8589 nb_getval('$chr_store_global_ground_chr_translate____ai_observation_gather_results___0',
8590 B),
8591 member(C, B),
8592 C=suspension(_, _, _),
8593 A=ai_observation_gather_results.
8594'$enumerate_constraints'(ai_observation_memoed_simplification_rest_heads, A) :-
8595 nb_getval('$chr_store_multi_hash_chr_translate____ai_observation_memoed_simplification_rest_heads___3-12',
8596 B),
8597 value_ht(B, C),
8598 C=suspension(_, _, D, E, F),
8599 A=ai_observation_memoed_simplification_rest_heads(D, E, F).
8600'$enumerate_constraints'(ai_observation_memoed_propagation_rest_heads, A) :-
8601 nb_getval('$chr_store_multi_hash_chr_translate____ai_observation_memoed_propagation_rest_heads___3-12',
8602 B),
8603 value_ht(B, C),
8604 C=suspension(_, _, D, E, F),
8605 A=ai_observation_memoed_propagation_rest_heads(D, E, F).
8606'$enumerate_constraints'(ai_observation_memoed_abstract_goal, A) :-
8607 nb_getval('$chr_store_multi_hash_chr_translate____ai_observation_memoed_abstract_goal___2-1',
8608 B),
8609 value_ht(B, C),
8610 C=suspension(_, _, D, E),
8611 A=ai_observation_memoed_abstract_goal(D, E).
8612'$enumerate_constraints'(ai_observation_memo_abstract_goal, A) :-
8613 nb_getval('$chr_store_global_ground_chr_translate____ai_observation_memo_abstract_goal___2',
8614 B),
8615 member(C, B),
8616 C=suspension(_, _, _, D, E),
8617 A=ai_observation_memo_abstract_goal(D, E).
8618'$enumerate_constraints'(partial_wake_analysis, A) :-
8619 nb_getval('$chr_store_global_ground_chr_translate____partial_wake_analysis___0',
8620 B),
8621 member(C, B),
8622 C=suspension(_, _, _, _),
8623 A=partial_wake_analysis.
8624'$enumerate_constraints'(no_partial_wake, A) :-
8625 nb_getval('$chr_store_multi_hash_chr_translate____no_partial_wake___1-1',
8626 B),
8627 value_ht(B, C),
8628 C=suspension(_, _, D),
8629 A=no_partial_wake(D).
8630'$enumerate_constraints'(phase_end, A) :-
8631 nb_getval('$chr_store_multi_hash_chr_translate____phase_end___1-1', B),
8632 value_ht(B, C),
8633 C=suspension(_, _, D),
8634 A=phase_end(D).
8635'$enumerate_constraints'(delay_phase_end, A) :-
8636 nb_getval('$chr_store_multi_hash_chr_translate____delay_phase_end___2-1',
8637 B),
8638 value_ht(B, C),
8639 C=suspension(_, _, D, E),
8640 A=delay_phase_end(D, E).
8641'$enumerate_constraints'(does_use_history, A) :-
8642 nb_getval('$chr_store_multi_hash_chr_translate____does_use_history___2-1',
8643 B),
8644 value_ht(B, C),
8645 C=suspension(_, _, D, E),
8646 A=does_use_history(D, E).
8647'$enumerate_constraints'(does_use_field, A) :-
8648 nb_getval('$chr_store_multi_hash_chr_translate____does_use_field___2-12',
8649 B),
8650 value_ht(B, C),
8651 C=suspension(_, _, D, E),
8652 A=does_use_field(D, E).
8653'$enumerate_constraints'(uses_state, A) :-
8654 nb_getval('$chr_store_multi_hash_chr_translate____uses_state___2-12',
8655 B),
8656 value_ht(B, C),
8657 C=suspension(_, _, D, E),
8658 A=uses_state(D, E).
8659'$enumerate_constraints'(if_used_state, A) :-
8660 nb_getval('$chr_store_global_ground_chr_translate____if_used_state___5',
8661 B),
8662 member(C, B),
8663 C=suspension(_, _, _, D, E, F, G, H),
8664 A=if_used_state(D, E, F, G, H).
8665'$enumerate_constraints'(used_states_known, A) :-
8666 nb_getval('$chr_store_global_ground_chr_translate____used_states_known___0',
8667 B),
8668 member(C, B),
8669 C=suspension(_, _, _),
8670 A=used_states_known.
8671'$enumerate_constraints'(stored_assertion, A) :-
8672 nb_getval('$chr_store_multi_hash_chr_translate____stored_assertion___1-1',
8673 B),
8674 value_ht(B, C),
8675 C=suspension(_, _, D),
8676 A=stored_assertion(D).
8677'$enumerate_constraints'(never_stored_default, A) :-
8678 nb_getval('$chr_store_multi_hash_chr_translate____never_stored_default___2-1',
8679 B),
8680 value_ht(B, C),
8681 C=suspension(_, _, D, E),
8682 A=never_stored_default(D, E).
8683'$enumerate_constraints'(never_stored_rules, A) :-
8684 nb_getval('$chr_store_global_ground_chr_translate____never_stored_rules___2',
8685 B),
8686 member(C, B),
8687 C=suspension(_, _, _, D, E),
8688 A=never_stored_rules(D, E).
8689'$enumerate_constraints'(continuation_occurrence, A) :-
8690 nb_getval('$chr_store_multi_hash_chr_translate____continuation_occurrence___3-12',
8691 B),
8692 value_ht(B, C),
8693 C=suspension(_, _, D, E, F),
8694 A=continuation_occurrence(D, E, F).
8695'$enumerate_constraints'(skip_to_next_id, A) :-
8696 nb_getval('$chr_store_multi_hash_chr_translate____skip_to_next_id___2-12',
8697 B),
8698 value_ht(B, C),
8699 C=suspension(_, _, _, D, E),
8700 A=skip_to_next_id(D, E).
8701'$enumerate_constraints'(set_occurrence_code_id, A) :-
8702 nb_getval('$chr_store_multi_hash_chr_translate____set_occurrence_code_id___3-12',
8703 B),
8704 value_ht(B, C),
8705 C=suspension(_, _, D, E, F),
8706 A=set_occurrence_code_id(D, E, F).
8707'$enumerate_constraints'(occurrence_code_id, A) :-
8708 nb_getval('$chr_store_multi_hash_chr_translate____occurrence_code_id___3-12',
8709 B),
8710 value_ht(B, C),
8711 C=suspension(_, _, D, E, F),
8712 A=occurrence_code_id(D, E, F).
8713'$enumerate_constraints'(chr_constants, A) :-
8714 nb_getval('$chr_store_global_ground_chr_translate____chr_constants___1',
8715 B),
8716 member(C, B),
8717 C=suspension(_, _, _, D),
8718 A=chr_constants(D).
8719'$enumerate_constraints'(print_chr_constants, A) :-
8720 nb_getval('$chr_store_global_ground_chr_translate____print_chr_constants___0',
8721 B),
8722 member(C, B),
8723 C=suspension(_, _, _),
8724 A=print_chr_constants.
8725'$via1_multi_hash_source_location___2-1'(A, B) :-
8726 nb_getval('$chr_store_multi_hash_chr_translate____source_location___2-1',
8727 C),
8728 lookup_ht(C, A, B).
8729'$via1_multi_hash_indexed_argument___2-1'(A, B) :-
8730 nb_getval('$chr_store_multi_hash_chr_translate____indexed_argument___2-1',
8731 C),
8732 lookup_ht(C, A, B).
8733'$via1_multi_hash_indexed_argument___2-12'(A, B) :-
8734 nb_getval('$chr_store_multi_hash_chr_translate____indexed_argument___2-12',
8735 C),
8736 lookup_ht(C, A, B).
8737'$via1_multi_hash_constraint_mode___2-1'(A, B) :-
8738 nb_getval('$chr_store_multi_hash_chr_translate____constraint_mode___2-1',
8739 C),
8740 lookup_ht(C, A, B).
8741'$via1_multi_hash_store_type___2-1'(A, B) :-
8742 nb_getval('$chr_store_multi_hash_chr_translate____store_type___2-1', C),
8743 lookup_ht(C, A, B).
8744'$via1_multi_hash_actual_store_types___2-1'(A, B) :-
8745 nb_getval('$chr_store_multi_hash_chr_translate____actual_store_types___2-1',
8746 C),
8747 lookup_ht(C, A, B).
8748'$via1_multi_hash_assumed_store_type___2-1'(A, B) :-
8749 nb_getval('$chr_store_multi_hash_chr_translate____assumed_store_type___2-1',
8750 C),
8751 lookup_ht(C, A, B).
8752'$via1_multi_hash_validate_store_type_assumption___1-1'(A, B) :-
8753 nb_getval('$chr_store_multi_hash_chr_translate____validate_store_type_assumption___1-1',
8754 C),
8755 lookup_ht(C, A, B).
8756'$via1_multi_hash_passive___2-1'(A, B) :-
8757 nb_getval('$chr_store_multi_hash_chr_translate____passive___2-1', C),
8758 lookup_ht(C, A, B).
8759'$via1_multi_hash_passive___2-12'(A, B) :-
8760 nb_getval('$chr_store_multi_hash_chr_translate____passive___2-12', C),
8761 lookup_ht(C, A, B).
8762'$via1_multi_hash_occurrence___5-15'(A, B) :-
8763 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-15',
8764 C),
8765 lookup_ht(C, A, B).
8766'$via1_multi_hash_occurrence___5-125'(A, B) :-
8767 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-125',
8768 C),
8769 lookup_ht(C, A, B).
8770'$via1_multi_hash_occurrence___5-134'(A, B) :-
8771 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-134',
8772 C),
8773 lookup_ht(C, A, B).
8774'$via1_multi_hash_occurrence___5-12'(A, B) :-
8775 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-12',
8776 C),
8777 lookup_ht(C, A, B).
8778'$via1_multi_hash_occurrence___5-3'(A, B) :-
8779 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-3', C),
8780 lookup_ht(C, A, B).
8781'$via1_multi_hash_occurrence___5-13'(A, B) :-
8782 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-13',
8783 C),
8784 lookup_ht(C, A, B).
8785'$via1_multi_hash_occurrence___5-34'(A, B) :-
8786 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-34',
8787 C),
8788 lookup_ht(C, A, B).
8789'$via1_multi_hash_occurrence___5-1'(A, B) :-
8790 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-1', C),
8791 lookup_ht(C, A, B).
8792'$via1_multi_hash_max_occurrence___2-1'(A, B) :-
8793 nb_getval('$chr_store_multi_hash_chr_translate____max_occurrence___2-1',
8794 C),
8795 lookup_ht(C, A, B).
8796'$via1_multi_hash_allocation_occurrence___2-1'(A, B) :-
8797 nb_getval('$chr_store_multi_hash_chr_translate____allocation_occurrence___2-1',
8798 C),
8799 lookup_ht(C, A, B).
8800'$via1_multi_hash_allocation_occurrence___2-12'(A, B) :-
8801 nb_getval('$chr_store_multi_hash_chr_translate____allocation_occurrence___2-12',
8802 C),
8803 lookup_ht(C, A, B).
8804'$via1_multi_hash_rule___2-1'(A, B) :-
8805 nb_getval('$chr_store_multi_hash_chr_translate____rule___2-1', C),
8806 lookup_ht(C, A, B).
8807'$via1_multi_hash_least_occurrence___2-12'(A, B) :-
8808 nb_getval('$chr_store_multi_hash_chr_translate____least_occurrence___2-12',
8809 C),
8810 lookup_ht(C, A, B).
8811'$via1_multi_hash_least_occurrence___2-1'(A, B) :-
8812 nb_getval('$chr_store_multi_hash_chr_translate____least_occurrence___2-1',
8813 C),
8814 lookup_ht(C, A, B).
8815'$via1_multi_hash_constraint_index___2-2'(A, B) :-
8816 nb_getval('$chr_store_multi_hash_chr_translate____constraint_index___2-2',
8817 C),
8818 lookup_ht(C, A, B).
8819'$via1_multi_hash_constraint_index___2-1'(A, B) :-
8820 nb_getval('$chr_store_multi_hash_chr_translate____constraint_index___2-1',
8821 C),
8822 lookup_ht(C, A, B).
8823'$via1_multi_hash_identifier_index___3-12'(A, B) :-
8824 nb_getval('$chr_store_multi_hash_chr_translate____identifier_index___3-12',
8825 C),
8826 lookup_ht(C, A, B).
8827'$via1_multi_hash_type_indexed_identifier_size___2-1'(A, B) :-
8828 nb_getval('$chr_store_multi_hash_chr_translate____type_indexed_identifier_size___2-1',
8829 C),
8830 lookup_ht(C, A, B).
8831'$via1_multi_hash_type_indexed_identifier_index___4-123'(A, B) :-
8832 nb_getval('$chr_store_multi_hash_chr_translate____type_indexed_identifier_index___4-123',
8833 C),
8834 lookup_ht(C, A, B).
8835'$via1_multi_hash_type_indexed_identifier_index___4-23'(A, B) :-
8836 nb_getval('$chr_store_multi_hash_chr_translate____type_indexed_identifier_index___4-23',
8837 C),
8838 lookup_ht(C, A, B).
8839'$via1_multi_hash_no_history___1-1'(A, B) :-
8840 nb_getval('$chr_store_multi_hash_chr_translate____no_history___1-1', C),
8841 lookup_ht(C, A, B).
8842'$chr_store_constants_chr_translate____history___3___[3]'([], '$chr_store_constants_chr_translate____history___3___[3]___[]').
8843'$via1_multi_hash_history___3-2'(A, B) :-
8844 nb_getval('$chr_store_multi_hash_chr_translate____history___3-2', C),
8845 lookup_ht(C, A, B).
8846'$via1_multi_hash_history___3-1'(A, B) :-
8847 nb_getval('$chr_store_multi_hash_chr_translate____history___3-1', C),
8848 lookup_ht(C, A, B).
8849'$via1_multi_hash_indexing_spec___2-1'(A, B) :-
8850 nb_getval('$chr_store_multi_hash_chr_translate____indexing_spec___2-1',
8851 C),
8852 lookup_ht(C, A, B).
8853'$via1_multi_hash_spawns___3-13'(A, B) :-
8854 nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-13', C),
8855 lookup_ht(C, A, B).
8856'$via1_multi_hash_spawns___3-12'(A, B) :-
8857 nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-12', C),
8858 lookup_ht(C, A, B).
8859'$via1_multi_hash_spawns___3-1'(A, B) :-
8860 nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-1', C),
8861 lookup_ht(C, A, B).
8862'$via1_multi_hash_spawns___3-3'(A, B) :-
8863 nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-3', C),
8864 lookup_ht(C, A, B).
8865'$via1_multi_hash_spawns___3-123'(A, B) :-
8866 nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-123', C),
8867 lookup_ht(C, A, B).
8868'$via1_multi_hash_spawns_all___2-1'(A, B) :-
8869 nb_getval('$chr_store_multi_hash_chr_translate____spawns_all___2-1', C),
8870 lookup_ht(C, A, B).
8871'$via1_multi_hash_spawns_all___2-12'(A, B) :-
8872 nb_getval('$chr_store_multi_hash_chr_translate____spawns_all___2-12',
8873 C),
8874 lookup_ht(C, A, B).
8875'$via1_multi_hash_spawns_all_triggers___2-1'(A, B) :-
8876 nb_getval('$chr_store_multi_hash_chr_translate____spawns_all_triggers___2-1',
8877 C),
8878 lookup_ht(C, A, B).
8879'$via1_multi_hash_spawns_all_triggers___2-12'(A, B) :-
8880 nb_getval('$chr_store_multi_hash_chr_translate____spawns_all_triggers___2-12',
8881 C),
8882 lookup_ht(C, A, B).
8883'$via1_multi_hash_actual_atomic_multi_hash_keys___3-12'(A, B) :-
8884 nb_getval('$chr_store_multi_hash_chr_translate____actual_atomic_multi_hash_keys___3-12',
8885 C),
8886 lookup_ht(C, A, B).
8887'$via1_multi_hash_actual_atomic_multi_hash_keys___3-1'(A, B) :-
8888 nb_getval('$chr_store_multi_hash_chr_translate____actual_atomic_multi_hash_keys___3-1',
8889 C),
8890 lookup_ht(C, A, B).
8891'$via1_multi_hash_actual_ground_multi_hash_keys___3-12'(A, B) :-
8892 nb_getval('$chr_store_multi_hash_chr_translate____actual_ground_multi_hash_keys___3-12',
8893 C),
8894 lookup_ht(C, A, B).
8895'$via1_multi_hash_actual_ground_multi_hash_keys___3-1'(A, B) :-
8896 nb_getval('$chr_store_multi_hash_chr_translate____actual_ground_multi_hash_keys___3-1',
8897 C),
8898 lookup_ht(C, A, B).
8899'$via1_multi_hash_actual_non_ground_multi_hash_key___2-12'(A, B) :-
8900 nb_getval('$chr_store_multi_hash_chr_translate____actual_non_ground_multi_hash_key___2-12',
8901 C),
8902 lookup_ht(C, A, B).
8903'$via1_multi_hash_prolog_global_variable___1-1'(A, B) :-
8904 nb_getval('$chr_store_multi_hash_chr_translate____prolog_global_variable___1-1',
8905 C),
8906 lookup_ht(C, A, B).
8907'$via1_multi_hash_prev_guard_list___6-1'(A, B) :-
8908 nb_getval('$chr_store_multi_hash_chr_translate____prev_guard_list___6-1',
8909 C),
8910 lookup_ht(C, A, B).
8911'$via1_multi_hash_set_all_passive___1-1'(A, B) :-
8912 nb_getval('$chr_store_multi_hash_chr_translate____set_all_passive___1-1',
8913 C),
8914 lookup_ht(C, A, B).
8915'$via1_multi_hash_make_head_matchings_explicit_memo_table___3-1'(A, B) :-
8916 nb_getval('$chr_store_multi_hash_chr_translate____make_head_matchings_explicit_memo_table___3-1',
8917 C),
8918 lookup_ht(C, A, B).
8919'$via1_multi_hash_constraint_type___2-1'(A, B) :-
8920 nb_getval('$chr_store_multi_hash_chr_translate____constraint_type___2-1',
8921 C),
8922 lookup_ht(C, A, B).
8923'$via1_multi_hash_ast_static_atomic_builtin_type_check_var___4-1'(A, B) :-
8924 nb_getval('$chr_store_multi_hash_chr_translate____ast_static_atomic_builtin_type_check_var___4-1',
8925 C),
8926 lookup_ht(C, A, B).
8927'$via1_multi_hash_ast_static_atomic_builtin_type_check_var___4-13'(A, B) :-
8928 nb_getval('$chr_store_multi_hash_chr_translate____ast_static_atomic_builtin_type_check_var___4-13',
8929 C),
8930 lookup_ht(C, A, B).
8931'$via1_multi_hash_stored___3-13'(A, B) :-
8932 nb_getval('$chr_store_multi_hash_chr_translate____stored___3-13', C),
8933 lookup_ht(C, A, B).
8934'$via1_multi_hash_stored___3-123'(A, B) :-
8935 nb_getval('$chr_store_multi_hash_chr_translate____stored___3-123', C),
8936 lookup_ht(C, A, B).
8937'$via1_multi_hash_stored_complete___3-13'(A, B) :-
8938 nb_getval('$chr_store_multi_hash_chr_translate____stored_complete___3-13',
8939 C),
8940 lookup_ht(C, A, B).
8941'$via1_multi_hash_stored_complete___3-1'(A, B) :-
8942 nb_getval('$chr_store_multi_hash_chr_translate____stored_complete___3-1',
8943 C),
8944 lookup_ht(C, A, B).
8945'$via1_multi_hash_check_all_passive___2-12'(A, B) :-
8946 nb_getval('$chr_store_multi_hash_chr_translate____check_all_passive___2-12',
8947 C),
8948 lookup_ht(C, A, B).
8949'$via1_multi_hash_check_all_passive___2-1'(A, B) :-
8950 nb_getval('$chr_store_multi_hash_chr_translate____check_all_passive___2-1',
8951 C),
8952 lookup_ht(C, A, B).
8953'$via1_multi_hash_memo_has_active_occurrence___1-1'(A, B) :-
8954 nb_getval('$chr_store_multi_hash_chr_translate____memo_has_active_occurrence___1-1',
8955 C),
8956 lookup_ht(C, A, B).
8957'$via1_multi_hash_use_auxiliary_predicate___1-1'(A, B) :-
8958 nb_getval('$chr_store_multi_hash_chr_translate____use_auxiliary_predicate___1-1',
8959 C),
8960 lookup_ht(C, A, B).
8961'$via1_multi_hash_use_auxiliary_predicate___2-1'(A, B) :-
8962 nb_getval('$chr_store_multi_hash_chr_translate____use_auxiliary_predicate___2-1',
8963 C),
8964 lookup_ht(C, A, B).
8965'$via1_multi_hash_use_auxiliary_predicate___2-12'(A, B) :-
8966 nb_getval('$chr_store_multi_hash_chr_translate____use_auxiliary_predicate___2-12',
8967 C),
8968 lookup_ht(C, A, B).
8969'$via1_multi_hash_use_auxiliary_module___1-1'(A, B) :-
8970 nb_getval('$chr_store_multi_hash_chr_translate____use_auxiliary_module___1-1',
8971 C),
8972 lookup_ht(C, A, B).
8973'$via1_multi_hash_functional_dependency___4-1'(A, B) :-
8974 nb_getval('$chr_store_multi_hash_chr_translate____functional_dependency___4-1',
8975 C),
8976 lookup_ht(C, A, B).
8977'$via1_multi_hash_functional_dependency___4-12'(A, B) :-
8978 nb_getval('$chr_store_multi_hash_chr_translate____functional_dependency___4-12',
8979 C),
8980 lookup_ht(C, A, B).
8981'$via1_multi_hash_initial_call_pattern___1-1'(A, B) :-
8982 nb_getval('$chr_store_multi_hash_chr_translate____initial_call_pattern___1-1',
8983 C),
8984 lookup_ht(C, A, B).
8985'$via1_multi_hash_call_pattern___1-1'(A, B) :-
8986 nb_getval('$chr_store_multi_hash_chr_translate____call_pattern___1-1',
8987 C),
8988 lookup_ht(C, A, B).
8989'$via1_multi_hash_final_answer_pattern___2-1'(A, B) :-
8990 nb_getval('$chr_store_multi_hash_chr_translate____final_answer_pattern___2-1',
8991 C),
8992 lookup_ht(C, A, B).
8993'$via1_multi_hash_depends_on___2-1'(A, B) :-
8994 nb_getval('$chr_store_multi_hash_chr_translate____depends_on___2-1', C),
8995 lookup_ht(C, A, B).
8996'$via1_multi_hash_depends_on___2-2'(A, B) :-
8997 nb_getval('$chr_store_multi_hash_chr_translate____depends_on___2-2', C),
8998 lookup_ht(C, A, B).
8999'$via1_multi_hash_depends_on_ap___4-2'(A, B) :-
9000 nb_getval('$chr_store_multi_hash_chr_translate____depends_on_ap___4-2',
9001 C),
9002 lookup_ht(C, A, B).
9003'$via1_multi_hash_depends_on_ap___4-3'(A, B) :-
9004 nb_getval('$chr_store_multi_hash_chr_translate____depends_on_ap___4-3',
9005 C),
9006 lookup_ht(C, A, B).
9007'$via1_multi_hash_depends_on_goal___2-2'(A, B) :-
9008 nb_getval('$chr_store_multi_hash_chr_translate____depends_on_goal___2-2',
9009 C),
9010 lookup_ht(C, A, B).
9011'$via1_multi_hash_ai_observed_internal___2-12'(A, B) :-
9012 nb_getval('$chr_store_multi_hash_chr_translate____ai_observed_internal___2-12',
9013 C),
9014 lookup_ht(C, A, B).
9015'$via1_multi_hash_ai_not_observed_internal___2-12'(A, B) :-
9016 nb_getval('$chr_store_multi_hash_chr_translate____ai_not_observed_internal___2-12',
9017 C),
9018 lookup_ht(C, A, B).
9019'$via1_multi_hash_ai_not_observed___2-12'(A, B) :-
9020 nb_getval('$chr_store_multi_hash_chr_translate____ai_not_observed___2-12',
9021 C),
9022 lookup_ht(C, A, B).
9023'$via1_multi_hash_depends_on_as___3-3'(A, B) :-
9024 nb_getval('$chr_store_multi_hash_chr_translate____depends_on_as___3-3',
9025 C),
9026 lookup_ht(C, A, B).
9027'$via1_multi_hash_depends_on_as___3-2'(A, B) :-
9028 nb_getval('$chr_store_multi_hash_chr_translate____depends_on_as___3-2',
9029 C),
9030 lookup_ht(C, A, B).
9031'$via1_multi_hash_ai_observation_memoed_simplification_rest_heads___3-12'(A, B) :-
9032 nb_getval('$chr_store_multi_hash_chr_translate____ai_observation_memoed_simplification_rest_heads___3-12',
9033 C),
9034 lookup_ht(C, A, B).
9035'$via1_multi_hash_ai_observation_memoed_propagation_rest_heads___3-12'(A, B) :-
9036 nb_getval('$chr_store_multi_hash_chr_translate____ai_observation_memoed_propagation_rest_heads___3-12',
9037 C),
9038 lookup_ht(C, A, B).
9039'$via1_multi_hash_ai_observation_memoed_abstract_goal___2-1'(A, B) :-
9040 nb_getval('$chr_store_multi_hash_chr_translate____ai_observation_memoed_abstract_goal___2-1',
9041 C),
9042 lookup_ht(C, A, B).
9043'$via1_multi_hash_no_partial_wake___1-1'(A, B) :-
9044 nb_getval('$chr_store_multi_hash_chr_translate____no_partial_wake___1-1',
9045 C),
9046 lookup_ht(C, A, B).
9047'$via1_multi_hash_phase_end___1-1'(A, B) :-
9048 nb_getval('$chr_store_multi_hash_chr_translate____phase_end___1-1', C),
9049 lookup_ht(C, A, B).
9050'$via1_multi_hash_delay_phase_end___2-1'(A, B) :-
9051 nb_getval('$chr_store_multi_hash_chr_translate____delay_phase_end___2-1',
9052 C),
9053 lookup_ht(C, A, B).
9054'$via1_multi_hash_does_use_history___2-1'(A, B) :-
9055 nb_getval('$chr_store_multi_hash_chr_translate____does_use_history___2-1',
9056 C),
9057 lookup_ht(C, A, B).
9058'$via1_multi_hash_does_use_history___2-12'(A, B) :-
9059 nb_getval('$chr_store_multi_hash_chr_translate____does_use_history___2-12',
9060 C),
9061 lookup_ht(C, A, B).
9062'$via1_multi_hash_does_use_field___2-12'(A, B) :-
9063 nb_getval('$chr_store_multi_hash_chr_translate____does_use_field___2-12',
9064 C),
9065 lookup_ht(C, A, B).
9066'$via1_multi_hash_uses_state___2-12'(A, B) :-
9067 nb_getval('$chr_store_multi_hash_chr_translate____uses_state___2-12',
9068 C),
9069 lookup_ht(C, A, B).
9070'$via1_multi_hash_if_used_state___5-12'(A, B) :-
9071 nb_getval('$chr_store_multi_hash_chr_translate____if_used_state___5-12',
9072 C),
9073 lookup_ht(C, A, B).
9074'$via1_multi_hash_stored_assertion___1-1'(A, B) :-
9075 nb_getval('$chr_store_multi_hash_chr_translate____stored_assertion___1-1',
9076 C),
9077 lookup_ht(C, A, B).
9078'$via1_multi_hash_never_stored_default___2-1'(A, B) :-
9079 nb_getval('$chr_store_multi_hash_chr_translate____never_stored_default___2-1',
9080 C),
9081 lookup_ht(C, A, B).
9082'$via1_multi_hash_continuation_occurrence___3-12'(A, B) :-
9083 nb_getval('$chr_store_multi_hash_chr_translate____continuation_occurrence___3-12',
9084 C),
9085 lookup_ht(C, A, B).
9086'$via1_multi_hash_skip_to_next_id___2-12'(A, B) :-
9087 nb_getval('$chr_store_multi_hash_chr_translate____skip_to_next_id___2-12',
9088 C),
9089 lookup_ht(C, A, B).
9090'$via1_multi_hash_set_occurrence_code_id___3-12'(A, B) :-
9091 nb_getval('$chr_store_multi_hash_chr_translate____set_occurrence_code_id___3-12',
9092 C),
9093 lookup_ht(C, A, B).
9094'$via1_multi_hash_occurrence_code_id___3-12'(A, B) :-
9095 nb_getval('$chr_store_multi_hash_chr_translate____occurrence_code_id___3-12',
9096 C),
9097 lookup_ht(C, A, B).
9098'$chr_initialization' :-
9099 nb_setval('$chr_store_global_ground_chr_translate____print_chr_constants___0',
9100 []),
9101 nb_setval('$chr_store_global_ground_chr_translate____chr_constants___1', []),
9102 new_ht(A),
9103 nb_setval('$chr_store_multi_hash_chr_translate____occurrence_code_id___3-12',
9104 A),
9105 new_ht(B),
9106 nb_setval('$chr_store_multi_hash_chr_translate____set_occurrence_code_id___3-12',
9107 B),
9108 new_ht(C),
9109 nb_setval('$chr_store_multi_hash_chr_translate____skip_to_next_id___2-12',
9110 C),
9111 new_ht(D),
9112 nb_setval('$chr_store_multi_hash_chr_translate____continuation_occurrence___3-12',
9113 D),
9114 nb_setval('$chr_store_global_ground_chr_translate____never_stored_rules___2',
9115 []),
9116 new_ht(E),
9117 nb_setval('$chr_store_multi_hash_chr_translate____never_stored_default___2-1',
9118 E),
9119 new_ht(F),
9120 nb_setval('$chr_store_multi_hash_chr_translate____stored_assertion___1-1',
9121 F),
9122 nb_setval('$chr_store_global_ground_chr_translate____used_states_known___0',
9123 []),
9124 new_ht(G),
9125 nb_setval('$chr_store_multi_hash_chr_translate____if_used_state___5-12',
9126 G),
9127 nb_setval('$chr_store_global_ground_chr_translate____if_used_state___5', []),
9128 new_ht(H),
9129 nb_setval('$chr_store_multi_hash_chr_translate____uses_state___2-12',
9130 H),
9131 new_ht(I),
9132 nb_setval('$chr_store_multi_hash_chr_translate____does_use_field___2-12',
9133 I),
9134 new_ht(J),
9135 nb_setval('$chr_store_multi_hash_chr_translate____does_use_history___2-12',
9136 J),
9137 new_ht(K),
9138 nb_setval('$chr_store_multi_hash_chr_translate____does_use_history___2-1',
9139 K),
9140 new_ht(L),
9141 nb_setval('$chr_store_multi_hash_chr_translate____delay_phase_end___2-1',
9142 L),
9143 new_ht(M),
9144 nb_setval('$chr_store_multi_hash_chr_translate____phase_end___1-1', M),
9145 new_ht(N),
9146 nb_setval('$chr_store_multi_hash_chr_translate____no_partial_wake___1-1',
9147 N),
9148 nb_setval('$chr_store_global_ground_chr_translate____partial_wake_analysis___0',
9149 []),
9150 nb_setval('$chr_store_global_ground_chr_translate____ai_observation_memo_abstract_goal___2',
9151 []),
9152 new_ht(O),
9153 nb_setval('$chr_store_multi_hash_chr_translate____ai_observation_memoed_abstract_goal___2-1',
9154 O),
9155 new_ht(P),
9156 nb_setval('$chr_store_multi_hash_chr_translate____ai_observation_memoed_propagation_rest_heads___3-12',
9157 P),
9158 new_ht(Q),
9159 nb_setval('$chr_store_multi_hash_chr_translate____ai_observation_memoed_simplification_rest_heads___3-12',
9160 Q),
9161 nb_setval('$chr_store_global_ground_chr_translate____ai_observation_gather_results___0',
9162 []),
9163 new_ht(R),
9164 nb_setval('$chr_store_multi_hash_chr_translate____depends_on_as___3-2',
9165 R),
9166 new_ht(S),
9167 nb_setval('$chr_store_multi_hash_chr_translate____depends_on_as___3-3',
9168 S),
9169 new_ht(T),
9170 nb_setval('$chr_store_multi_hash_chr_translate____ai_not_observed___2-12',
9171 T),
9172 new_ht(U),
9173 nb_setval('$chr_store_multi_hash_chr_translate____ai_not_observed_internal___2-12',
9174 U),
9175 nb_setval('$chr_store_global_ground_chr_translate____ai_not_observed_internal___2',
9176 []),
9177 new_ht(V),
9178 nb_setval('$chr_store_multi_hash_chr_translate____ai_observed_internal___2-12',
9179 V),
9180 nb_setval('$chr_store_global_ground_chr_translate____ai_observed_internal___2',
9181 []),
9182 new_ht(W),
9183 nb_setval('$chr_store_multi_hash_chr_translate____depends_on_goal___2-2',
9184 W),
9185 new_ht(X),
9186 nb_setval('$chr_store_multi_hash_chr_translate____depends_on_ap___4-3',
9187 X),
9188 new_ht(Y),
9189 nb_setval('$chr_store_multi_hash_chr_translate____depends_on_ap___4-2',
9190 Y),
9191 new_ht(Z),
9192 nb_setval('$chr_store_multi_hash_chr_translate____depends_on___2-2',
9193 Z),
9194 new_ht(A1),
9195 nb_setval('$chr_store_multi_hash_chr_translate____depends_on___2-1',
9196 A1),
9197 nb_setval('$chr_store_global_ground_chr_translate____abstract_constraints___1',
9198 []),
9199 new_ht(B1),
9200 nb_setval('$chr_store_multi_hash_chr_translate____final_answer_pattern___2-1',
9201 B1),
9202 new_ht(C1),
9203 nb_setval('$chr_store_multi_hash_chr_translate____call_pattern___1-1',
9204 C1),
9205 new_ht(D1),
9206 nb_setval('$chr_store_multi_hash_chr_translate____initial_call_pattern___1-1',
9207 D1),
9208 new_ht(E1),
9209 nb_setval('$chr_store_multi_hash_chr_translate____functional_dependency___4-12',
9210 E1),
9211 new_ht(F1),
9212 nb_setval('$chr_store_multi_hash_chr_translate____functional_dependency___4-1',
9213 F1),
9214 new_ht(G1),
9215 nb_setval('$chr_store_multi_hash_chr_translate____use_auxiliary_module___1-1',
9216 G1),
9217 new_ht(H1),
9218 nb_setval('$chr_store_multi_hash_chr_translate____use_auxiliary_predicate___2-12',
9219 H1),
9220 new_ht(I1),
9221 nb_setval('$chr_store_multi_hash_chr_translate____use_auxiliary_predicate___2-1',
9222 I1),
9223 new_ht(J1),
9224 nb_setval('$chr_store_multi_hash_chr_translate____use_auxiliary_predicate___1-1',
9225 J1),
9226 new_ht(K1),
9227 nb_setval('$chr_store_multi_hash_chr_translate____memo_has_active_occurrence___1-1',
9228 K1),
9229 nb_setval('$chr_store_global_ground_chr_translate____constraints_code1___3',
9230 []),
9231 new_ht(L1),
9232 nb_setval('$chr_store_multi_hash_chr_translate____check_all_passive___2-1',
9233 L1),
9234 new_ht(M1),
9235 nb_setval('$chr_store_multi_hash_chr_translate____check_all_passive___2-12',
9236 M1),
9237 new_ht(N1),
9238 nb_setval('$chr_store_multi_hash_chr_translate____stored_complete___3-1',
9239 N1),
9240 new_ht(O1),
9241 nb_setval('$chr_store_multi_hash_chr_translate____stored_complete___3-13',
9242 O1),
9243 new_ht(P1),
9244 nb_setval('$chr_store_multi_hash_chr_translate____stored___3-123', P1),
9245 new_ht(Q1),
9246 nb_setval('$chr_store_multi_hash_chr_translate____stored___3-13', Q1),
9247 nb_setval('$chr_store_global_list_chr_translate____atomic_type___1', []),
9248 nb_setval('$chr_store_global_ground_chr_translate____dynamic_type_check_clauses___1',
9249 []),
9250 nb_setval('$chr_store_global_ground_chr_translate____dynamic_type_check___0',
9251 []),
9252 new_ht(R1),
9253 nb_setval('$chr_store_multi_hash_chr_translate____ast_static_atomic_builtin_type_check_var___4-13',
9254 R1),
9255 new_ht(S1),
9256 nb_setval('$chr_store_multi_hash_chr_translate____ast_static_atomic_builtin_type_check_var___4-1',
9257 S1),
9258 nb_setval('$chr_store_global_list_chr_translate____ast_static_type_check_var___4',
9259 []),
9260 nb_setval('$chr_store_global_ground_chr_translate____static_type_check___2',
9261 []),
9262 nb_setval('$chr_store_global_ground_chr_translate____types_modes_condition___3',
9263 []),
9264 nb_setval('$chr_store_global_list_chr_translate____unalias_type___2', []),
9265 new_ht(T1),
9266 nb_setval('$chr_store_multi_hash_chr_translate____constraint_type___2-1',
9267 T1),
9268 nb_setval('$chr_store_global_ground_chr_translate____constraint_type___2',
9269 []),
9270 nb_setval('$chr_store_global_list_chr_translate____type_alias___2', []),
9271 nb_setval('$chr_store_global_list_chr_translate____type_definition___2', []),
9272 nb_setval('$chr_store_global_ground_chr_translate____multiple_occ_constraints_checked___1',
9273 []),
9274 new_ht(U1),
9275 nb_setval('$chr_store_multi_hash_chr_translate____make_head_matchings_explicit_memo_table___3-1',
9276 U1),
9277 nb_setval('$chr_store_global_ground_chr_translate____precompute_head_matchings___0',
9278 []),
9279 new_ht(V1),
9280 nb_setval('$chr_store_multi_hash_chr_translate____set_all_passive___1-1',
9281 V1),
9282 new_ht(W1),
9283 nb_setval('$chr_store_multi_hash_chr_translate____prev_guard_list___6-1',
9284 W1),
9285 nb_setval('$chr_store_global_ground_chr_translate____prev_guard_list___6',
9286 []),
9287 nb_setval('$chr_store_global_ground_chr_translate____get_bg_info_answer___1',
9288 []),
9289 nb_setval('$chr_store_global_list_chr_translate____get_bg_info___2', []),
9290 nb_setval('$chr_store_global_list_chr_translate____background_info___2', []),
9291 nb_setval('$chr_store_global_ground_chr_translate____background_info___1',
9292 []),
9293 new_ht(X1),
9294 nb_setval('$chr_store_multi_hash_chr_translate____prolog_global_variable___1-1',
9295 X1),
9296 nb_setval('$chr_store_global_ground_chr_translate____prolog_global_variable___1',
9297 []),
9298 nb_setval('$chr_store_global_list_chr_translate____fresh_symbol___2', []),
9299 nb_setval('$chr_store_global_list_chr_translate____symbol_count___2', []),
9300 new_ht(Y1),
9301 nb_setval('$chr_store_multi_hash_chr_translate____actual_non_ground_multi_hash_key___2-12',
9302 Y1),
9303 new_ht(Z1),
9304 nb_setval('$chr_store_multi_hash_chr_translate____actual_ground_multi_hash_keys___3-1',
9305 Z1),
9306 new_ht(A2),
9307 nb_setval('$chr_store_multi_hash_chr_translate____actual_ground_multi_hash_keys___3-12',
9308 A2),
9309 new_ht(B2),
9310 nb_setval('$chr_store_multi_hash_chr_translate____actual_atomic_multi_hash_keys___3-1',
9311 B2),
9312 new_ht(C2),
9313 nb_setval('$chr_store_multi_hash_chr_translate____actual_atomic_multi_hash_keys___3-12',
9314 C2),
9315 nb_setval('$chr_store_global_ground_chr_translate____module_initializer___1',
9316 []),
9317 nb_setval('$chr_store_global_ground_chr_translate____find_empty_named_histories___0',
9318 []),
9319 nb_setval('$chr_store_global_list_chr_translate____generate_empty_named_history_initialisation___1',
9320 []),
9321 nb_setval('$chr_store_global_ground_chr_translate____empty_named_history_initialisations___2',
9322 []),
9323 nb_setval('$chr_store_global_ground_chr_translate____spawns_all_triggers_implies_spawns_all___0',
9324 []),
9325 new_ht(D2),
9326 nb_setval('$chr_store_multi_hash_chr_translate____spawns_all_triggers___2-12',
9327 D2),
9328 new_ht(E2),
9329 nb_setval('$chr_store_multi_hash_chr_translate____spawns_all_triggers___2-1',
9330 E2),
9331 nb_setval('$chr_store_global_ground_chr_translate____spawns_all_triggers___2',
9332 []),
9333 new_ht(F2),
9334 nb_setval('$chr_store_multi_hash_chr_translate____spawns_all___2-12',
9335 F2),
9336 new_ht(G2),
9337 nb_setval('$chr_store_multi_hash_chr_translate____spawns_all___2-1',
9338 G2),
9339 new_ht(H2),
9340 nb_setval('$chr_store_multi_hash_chr_translate____spawns___3-123', H2),
9341 new_ht(I2),
9342 nb_setval('$chr_store_multi_hash_chr_translate____spawns___3-3', I2),
9343 new_ht(J2),
9344 nb_setval('$chr_store_multi_hash_chr_translate____spawns___3-1', J2),
9345 new_ht(K2),
9346 nb_setval('$chr_store_multi_hash_chr_translate____spawns___3-12', K2),
9347 nb_setval('$chr_store_global_ground_chr_translate____spawns___3', []),
9348 new_ht(L2),
9349 nb_setval('$chr_store_multi_hash_chr_translate____spawns___3-13', L2),
9350 nb_setval('$chr_store_global_ground_chr_translate____observation_analysis___1',
9351 []),
9352 new_ht(M2),
9353 nb_setval('$chr_store_multi_hash_chr_translate____indexing_spec___2-1',
9354 M2),
9355 new_ht(N2),
9356 nb_setval('$chr_store_multi_hash_chr_translate____history___3-1', N2),
9357 new_ht(O2),
9358 nb_setval('$chr_store_multi_hash_chr_translate____history___3-2', O2),
9359 nb_setval('$chr_store_constants_chr_translate____history___3___[3]___[]', []),
9360 new_ht(P2),
9361 nb_setval('$chr_store_multi_hash_chr_translate____no_history___1-1',
9362 P2),
9363 new_ht(Q2),
9364 nb_setval('$chr_store_multi_hash_chr_translate____type_indexed_identifier_index___4-23',
9365 Q2),
9366 new_ht(R2),
9367 nb_setval('$chr_store_multi_hash_chr_translate____type_indexed_identifier_index___4-123',
9368 R2),
9369 new_ht(S2),
9370 nb_setval('$chr_store_multi_hash_chr_translate____type_indexed_identifier_size___2-1',
9371 S2),
9372 new_ht(T2),
9373 nb_setval('$chr_store_multi_hash_chr_translate____identifier_index___3-12',
9374 T2),
9375 nb_setval('$chr_store_global_ground_chr_translate____identifier_size___1',
9376 []),
9377 nb_setval('$chr_store_global_ground_chr_translate____max_constraint_index___1',
9378 []),
9379 new_ht(U2),
9380 nb_setval('$chr_store_multi_hash_chr_translate____constraint_index___2-1',
9381 U2),
9382 new_ht(V2),
9383 nb_setval('$chr_store_multi_hash_chr_translate____constraint_index___2-2',
9384 V2),
9385 new_ht(W2),
9386 nb_setval('$chr_store_multi_hash_chr_translate____least_occurrence___2-1',
9387 W2),
9388 new_ht(X2),
9389 nb_setval('$chr_store_multi_hash_chr_translate____least_occurrence___2-12',
9390 X2),
9391 new_ht(Y2),
9392 nb_setval('$chr_store_multi_hash_chr_translate____rule___2-1', Y2),
9393 nb_setval('$chr_store_global_ground_chr_translate____rule___2', []),
9394 new_ht(Z2),
9395 nb_setval('$chr_store_multi_hash_chr_translate____allocation_occurrence___2-12',
9396 Z2),
9397 new_ht(A3),
9398 nb_setval('$chr_store_multi_hash_chr_translate____allocation_occurrence___2-1',
9399 A3),
9400 new_ht(B3),
9401 nb_setval('$chr_store_multi_hash_chr_translate____max_occurrence___2-1',
9402 B3),
9403 new_ht(C3),
9404 nb_setval('$chr_store_multi_hash_chr_translate____occurrence___5-1',
9405 C3),
9406 new_ht(D3),
9407 nb_setval('$chr_store_multi_hash_chr_translate____occurrence___5-34',
9408 D3),
9409 new_ht(E3),
9410 nb_setval('$chr_store_multi_hash_chr_translate____occurrence___5-13',
9411 E3),
9412 new_ht(F3),
9413 nb_setval('$chr_store_multi_hash_chr_translate____occurrence___5-3',
9414 F3),
9415 new_ht(G3),
9416 nb_setval('$chr_store_multi_hash_chr_translate____occurrence___5-12',
9417 G3),
9418 new_ht(H3),
9419 nb_setval('$chr_store_multi_hash_chr_translate____occurrence___5-134',
9420 H3),
9421 new_ht(I3),
9422 nb_setval('$chr_store_multi_hash_chr_translate____occurrence___5-125',
9423 I3),
9424 nb_setval('$chr_store_global_ground_chr_translate____occurrence___5', []),
9425 new_ht(J3),
9426 nb_setval('$chr_store_multi_hash_chr_translate____occurrence___5-15',
9427 J3),
9428 new_ht(K3),
9429 nb_setval('$chr_store_multi_hash_chr_translate____passive___2-12', K3),
9430 new_ht(L3),
9431 nb_setval('$chr_store_multi_hash_chr_translate____passive___2-1', L3),
9432 nb_setval('$chr_store_global_ground_chr_translate____rule_count___1', []),
9433 new_ht(M3),
9434 nb_setval('$chr_store_multi_hash_chr_translate____validate_store_type_assumption___1-1',
9435 M3),
9436 new_ht(N3),
9437 nb_setval('$chr_store_multi_hash_chr_translate____assumed_store_type___2-1',
9438 N3),
9439 new_ht(O3),
9440 nb_setval('$chr_store_multi_hash_chr_translate____actual_store_types___2-1',
9441 O3),
9442 new_ht(P3),
9443 nb_setval('$chr_store_multi_hash_chr_translate____store_type___2-1',
9444 P3),
9445 nb_setval('$chr_store_global_ground_chr_translate____none_suspended_on_variables___0',
9446 []),
9447 new_ht(Q3),
9448 nb_setval('$chr_store_multi_hash_chr_translate____constraint_mode___2-1',
9449 Q3),
9450 nb_setval('$chr_store_global_ground_chr_translate____constraint_mode___2',
9451 []),
9452 new_ht(R3),
9453 nb_setval('$chr_store_multi_hash_chr_translate____indexed_argument___2-12',
9454 R3),
9455 new_ht(S3),
9456 nb_setval('$chr_store_multi_hash_chr_translate____indexed_argument___2-1',
9457 S3),
9458 new_ht(T3),
9459 nb_setval('$chr_store_multi_hash_chr_translate____source_location___2-1',
9460 T3),
9461 nb_setval('$chr_store_global_ground_chr_translate____target_module___1', []),
9462 nb_setval('$chr_store_global_ground_chr_translate____chr_source_file___1',
9463 []).
9464:- (initialization'$chr_initialization'). 9465:- (dynamic user:exception/3). 9466:- (multifile user:exception/3). 9467user:exception(undefined_global_variable, A, retry) :-
9468 '$chr_prolog_global_variable'(A),
9469 '$chr_initialization'.
9470'$chr_prolog_global_variable'('$chr_store_global_ground_chr_translate____print_chr_constants___0').
9471'$chr_prolog_global_variable'('$chr_store_global_ground_chr_translate____chr_constants___1').
9472'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____occurrence_code_id___3-12').
9473'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____set_occurrence_code_id___3-12').
9474'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____skip_to_next_id___2-12').
9475'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____continuation_occurrence___3-12').
9476'$chr_prolog_global_variable'('$chr_store_global_ground_chr_translate____never_stored_rules___2').
9477'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____never_stored_default___2-1').
9478'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____stored_assertion___1-1').
9479'$chr_prolog_global_variable'('$chr_store_global_ground_chr_translate____used_states_known___0').
9480'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____if_used_state___5-12').
9481'$chr_prolog_global_variable'('$chr_store_global_ground_chr_translate____if_used_state___5').
9482'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____uses_state___2-12').
9483'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____does_use_field___2-12').
9484'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____does_use_history___2-12').
9485'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____does_use_history___2-1').
9486'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____delay_phase_end___2-1').
9487'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____phase_end___1-1').
9488'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____no_partial_wake___1-1').
9489'$chr_prolog_global_variable'('$chr_store_global_ground_chr_translate____partial_wake_analysis___0').
9490'$chr_prolog_global_variable'('$chr_store_global_ground_chr_translate____ai_observation_memo_abstract_goal___2').
9491'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____ai_observation_memoed_abstract_goal___2-1').
9492'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____ai_observation_memoed_propagation_rest_heads___3-12').
9493'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____ai_observation_memoed_simplification_rest_heads___3-12').
9494'$chr_prolog_global_variable'('$chr_store_global_ground_chr_translate____ai_observation_gather_results___0').
9495'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____depends_on_as___3-2').
9496'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____depends_on_as___3-3').
9497'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____ai_not_observed___2-12').
9498'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____ai_not_observed_internal___2-12').
9499'$chr_prolog_global_variable'('$chr_store_global_ground_chr_translate____ai_not_observed_internal___2').
9500'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____ai_observed_internal___2-12').
9501'$chr_prolog_global_variable'('$chr_store_global_ground_chr_translate____ai_observed_internal___2').
9502'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____depends_on_goal___2-2').
9503'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____depends_on_ap___4-3').
9504'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____depends_on_ap___4-2').
9505'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____depends_on___2-2').
9506'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____depends_on___2-1').
9507'$chr_prolog_global_variable'('$chr_store_global_ground_chr_translate____abstract_constraints___1').
9508'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____final_answer_pattern___2-1').
9509'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____call_pattern___1-1').
9510'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____initial_call_pattern___1-1').
9511'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____functional_dependency___4-12').
9512'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____functional_dependency___4-1').
9513'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____use_auxiliary_module___1-1').
9514'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____use_auxiliary_predicate___2-12').
9515'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____use_auxiliary_predicate___2-1').
9516'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____use_auxiliary_predicate___1-1').
9517'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____memo_has_active_occurrence___1-1').
9518'$chr_prolog_global_variable'('$chr_store_global_ground_chr_translate____constraints_code1___3').
9519'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____check_all_passive___2-1').
9520'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____check_all_passive___2-12').
9521'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____stored_complete___3-1').
9522'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____stored_complete___3-13').
9523'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____stored___3-123').
9524'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____stored___3-13').
9525'$chr_prolog_global_variable'('$chr_store_global_list_chr_translate____atomic_type___1').
9526'$chr_prolog_global_variable'('$chr_store_global_ground_chr_translate____dynamic_type_check_clauses___1').
9527'$chr_prolog_global_variable'('$chr_store_global_ground_chr_translate____dynamic_type_check___0').
9528'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____ast_static_atomic_builtin_type_check_var___4-13').
9529'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____ast_static_atomic_builtin_type_check_var___4-1').
9530'$chr_prolog_global_variable'('$chr_store_global_list_chr_translate____ast_static_type_check_var___4').
9531'$chr_prolog_global_variable'('$chr_store_global_ground_chr_translate____static_type_check___2').
9532'$chr_prolog_global_variable'('$chr_store_global_ground_chr_translate____types_modes_condition___3').
9533'$chr_prolog_global_variable'('$chr_store_global_list_chr_translate____unalias_type___2').
9534'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____constraint_type___2-1').
9535'$chr_prolog_global_variable'('$chr_store_global_ground_chr_translate____constraint_type___2').
9536'$chr_prolog_global_variable'('$chr_store_global_list_chr_translate____type_alias___2').
9537'$chr_prolog_global_variable'('$chr_store_global_list_chr_translate____type_definition___2').
9538'$chr_prolog_global_variable'('$chr_store_global_ground_chr_translate____multiple_occ_constraints_checked___1').
9539'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____make_head_matchings_explicit_memo_table___3-1').
9540'$chr_prolog_global_variable'('$chr_store_global_ground_chr_translate____precompute_head_matchings___0').
9541'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____set_all_passive___1-1').
9542'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____prev_guard_list___6-1').
9543'$chr_prolog_global_variable'('$chr_store_global_ground_chr_translate____prev_guard_list___6').
9544'$chr_prolog_global_variable'('$chr_store_global_ground_chr_translate____get_bg_info_answer___1').
9545'$chr_prolog_global_variable'('$chr_store_global_list_chr_translate____get_bg_info___2').
9546'$chr_prolog_global_variable'('$chr_store_global_list_chr_translate____background_info___2').
9547'$chr_prolog_global_variable'('$chr_store_global_ground_chr_translate____background_info___1').
9548'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____prolog_global_variable___1-1').
9549'$chr_prolog_global_variable'('$chr_store_global_ground_chr_translate____prolog_global_variable___1').
9550'$chr_prolog_global_variable'('$chr_store_global_list_chr_translate____fresh_symbol___2').
9551'$chr_prolog_global_variable'('$chr_store_global_list_chr_translate____symbol_count___2').
9552'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____actual_non_ground_multi_hash_key___2-12').
9553'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____actual_ground_multi_hash_keys___3-1').
9554'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____actual_ground_multi_hash_keys___3-12').
9555'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____actual_atomic_multi_hash_keys___3-1').
9556'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____actual_atomic_multi_hash_keys___3-12').
9557'$chr_prolog_global_variable'('$chr_store_global_ground_chr_translate____module_initializer___1').
9558'$chr_prolog_global_variable'('$chr_store_global_ground_chr_translate____find_empty_named_histories___0').
9559'$chr_prolog_global_variable'('$chr_store_global_list_chr_translate____generate_empty_named_history_initialisation___1').
9560'$chr_prolog_global_variable'('$chr_store_global_ground_chr_translate____empty_named_history_initialisations___2').
9561'$chr_prolog_global_variable'('$chr_store_global_ground_chr_translate____spawns_all_triggers_implies_spawns_all___0').
9562'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____spawns_all_triggers___2-12').
9563'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____spawns_all_triggers___2-1').
9564'$chr_prolog_global_variable'('$chr_store_global_ground_chr_translate____spawns_all_triggers___2').
9565'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____spawns_all___2-12').
9566'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____spawns_all___2-1').
9567'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____spawns___3-123').
9568'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____spawns___3-3').
9569'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____spawns___3-1').
9570'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____spawns___3-12').
9571'$chr_prolog_global_variable'('$chr_store_global_ground_chr_translate____spawns___3').
9572'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____spawns___3-13').
9573'$chr_prolog_global_variable'('$chr_store_global_ground_chr_translate____observation_analysis___1').
9574'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____indexing_spec___2-1').
9575'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____history___3-1').
9576'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____history___3-2').
9577'$chr_prolog_global_variable'('$chr_store_constants_chr_translate____history___3___[3]___[]').
9578'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____no_history___1-1').
9579'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____type_indexed_identifier_index___4-23').
9580'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____type_indexed_identifier_index___4-123').
9581'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____type_indexed_identifier_size___2-1').
9582'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____identifier_index___3-12').
9583'$chr_prolog_global_variable'('$chr_store_global_ground_chr_translate____identifier_size___1').
9584'$chr_prolog_global_variable'('$chr_store_global_ground_chr_translate____max_constraint_index___1').
9585'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____constraint_index___2-1').
9586'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____constraint_index___2-2').
9587'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____least_occurrence___2-1').
9588'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____least_occurrence___2-12').
9589'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____rule___2-1').
9590'$chr_prolog_global_variable'('$chr_store_global_ground_chr_translate____rule___2').
9591'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____allocation_occurrence___2-12').
9592'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____allocation_occurrence___2-1').
9593'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____max_occurrence___2-1').
9594'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____occurrence___5-1').
9595'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____occurrence___5-34').
9596'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____occurrence___5-13').
9597'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____occurrence___5-3').
9598'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____occurrence___5-12').
9599'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____occurrence___5-134').
9600'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____occurrence___5-125').
9601'$chr_prolog_global_variable'('$chr_store_global_ground_chr_translate____occurrence___5').
9602'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____occurrence___5-15').
9603'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____passive___2-12').
9604'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____passive___2-1').
9605'$chr_prolog_global_variable'('$chr_store_global_ground_chr_translate____rule_count___1').
9606'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____validate_store_type_assumption___1-1').
9607'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____assumed_store_type___2-1').
9608'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____actual_store_types___2-1').
9609'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____store_type___2-1').
9610'$chr_prolog_global_variable'('$chr_store_global_ground_chr_translate____none_suspended_on_variables___0').
9611'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____constraint_mode___2-1').
9612'$chr_prolog_global_variable'('$chr_store_global_ground_chr_translate____constraint_mode___2').
9613'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____indexed_argument___2-12').
9614'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____indexed_argument___2-1').
9615'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____source_location___2-1').
9616'$chr_prolog_global_variable'('$chr_store_global_ground_chr_translate____target_module___1').
9617'$chr_prolog_global_variable'('$chr_store_global_ground_chr_translate____chr_source_file___1').
9618chr_source_file(A) :-
9619 nb_getval('$chr_store_global_ground_chr_translate____chr_source_file___1',
9620 B),
9621 ( member(C, B),
9622 C=suspension(_, active, _, _),
9623 !
9624 ; !,
9625 chr_source_file___1__0__0__2(B, A)
9626 ).
9627chr_source_file___1__0__0__2([], A) :-
9628 chr_source_file___1__1(A).
9629chr_source_file___1__0__0__2([A|B], C) :-
9630 ( A=suspension(_, active, _, _)
9631 -> setarg(2, A, removed),
9632 arg(3, A, D),
9633 ( var(D)
9634 -> nb_getval('$chr_store_global_ground_chr_translate____chr_source_file___1',
9635 E),
9636 E=[_|F],
9637 b_setval('$chr_store_global_ground_chr_translate____chr_source_file___1',
9638 F),
9639 ( F=[G|_]
9640 -> setarg(3, G, _)
9641 ; true
9642 )
9643 ; D=[_, _|F],
9644 setarg(2, D, F),
9645 ( F=[G|_]
9646 -> setarg(3, G, D)
9647 ; true
9648 )
9649 ),
9650 chr_source_file___1__0__0__2(B, C)
9651 ; chr_source_file___1__0__0__2(B, C)
9652 ).
9653chr_source_file(A) :-
9654 chr_source_file___1__1(A).
9655chr_source_file___1__1(A) :-
9656 B=suspension(C, active, _, A),
9657 'chr gen_id'(C),
9658 nb_getval('$chr_store_global_ground_chr_translate____chr_source_file___1',
9659 D),
9660 E=[B|D],
9661 b_setval('$chr_store_global_ground_chr_translate____chr_source_file___1',
9662 E),
9663 ( D=[F|_]
9664 -> setarg(3, F, E)
9665 ; true
9666 ).
9667get_chr_source_file(A) :-
9668 nb_getval('$chr_store_global_ground_chr_translate____chr_source_file___1',
9669 B),
9670 member(C, B),
9671 C=suspension(_, active, _, D),
9672 !,
9673 A=D.
9674get_chr_source_file(user).
9675target_module(A) :-
9676 nb_getval('$chr_store_global_ground_chr_translate____target_module___1',
9677 B),
9678 ( member(C, B),
9679 C=suspension(_, active, _, _),
9680 !
9681 ; !,
9682 target_module___1__0__0__2(B, A)
9683 ).
9684target_module___1__0__0__2([], A) :-
9685 target_module___1__1(A).
9686target_module___1__0__0__2([A|B], C) :-
9687 ( A=suspension(_, active, _, _)
9688 -> setarg(2, A, removed),
9689 arg(3, A, D),
9690 ( var(D)
9691 -> nb_getval('$chr_store_global_ground_chr_translate____target_module___1',
9692 E),
9693 E=[_|F],
9694 b_setval('$chr_store_global_ground_chr_translate____target_module___1',
9695 F),
9696 ( F=[G|_]
9697 -> setarg(3, G, _)
9698 ; true
9699 )
9700 ; D=[_, _|F],
9701 setarg(2, D, F),
9702 ( F=[G|_]
9703 -> setarg(3, G, D)
9704 ; true
9705 )
9706 ),
9707 target_module___1__0__0__2(B, C)
9708 ; target_module___1__0__0__2(B, C)
9709 ).
9710target_module(A) :-
9711 target_module___1__1(A).
9712target_module___1__1(A) :-
9713 B=suspension(C, active, _, A),
9714 'chr gen_id'(C),
9715 nb_getval('$chr_store_global_ground_chr_translate____target_module___1',
9716 D),
9717 E=[B|D],
9718 b_setval('$chr_store_global_ground_chr_translate____target_module___1',
9719 E),
9720 ( D=[F|_]
9721 -> setarg(3, F, E)
9722 ; true
9723 ).
9724get_target_module(A) :-
9725 nb_getval('$chr_store_global_ground_chr_translate____target_module___1',
9726 B),
9727 member(C, B),
9728 C=suspension(_, active, _, D),
9729 !,
9730 A=D.
9731get_target_module(user).
9732source_location(A, B) :-
9733 nb_getval('$chr_store_multi_hash_chr_translate____source_location___2-1',
9734 C),
9735 lookup_ht(C, A, D),
9736 ( member(E, D),
9737 E=suspension(_, active, _, _),
9738 !
9739 ; !,
9740 source_location___2__0__0__2(D, A, B)
9741 ).
9742source_location___2__0__0__2([], A, B) :-
9743 source_location___2__1(A, B).
9744source_location___2__0__0__2([A|B], C, D) :-
9745 ( A=suspension(_, active, E, _),
9746 E==C
9747 -> setarg(2, A, removed),
9748 nb_getval('$chr_store_multi_hash_chr_translate____source_location___2-1',
9749 F),
9750 delete_ht(F, C, A),
9751 source_location___2__0__0__2(B, C, D)
9752 ; source_location___2__0__0__2(B, C, D)
9753 ).
9754source_location(A, B) :-
9755 source_location___2__1(A, B).
9756source_location___2__1(A, B) :-
9757 C=suspension(D, active, A, B),
9758 'chr gen_id'(D),
9759 nb_getval('$chr_store_multi_hash_chr_translate____source_location___2-1',
9760 E),
9761 insert_ht(E, A, C).
9762get_line_number(A, B) :-
9763 nb_getval('$chr_store_multi_hash_chr_translate____source_location___2-1',
9764 C),
9765 lookup_ht(C, A, D),
9766 member(E, D),
9767 E=suspension(_, active, _, F),
9768 !,
9769 B=F.
9770get_line_number(_, (?):0).
9771indexed_argument(A, B) :-
9772 nb_getval('$chr_store_multi_hash_chr_translate____indexed_argument___2-12',
9773 C),
9774 lookup_ht(C, k(A, B), D),
9775 member(E, D),
9776 E=suspension(_, active, _, _),
9777 !.
9778indexed_argument(A, B) :-
9779 C=suspension(D, active, A, B),
9780 'chr gen_id'(D),
9781 nb_getval('$chr_store_multi_hash_chr_translate____indexed_argument___2-1',
9782 E),
9783 insert_ht(E, A, C),
9784 nb_getval('$chr_store_multi_hash_chr_translate____indexed_argument___2-12',
9785 F),
9786 insert_ht(F, k(A, B), C).
9787is_indexed_argument(A, B) :-
9788 nb_getval('$chr_store_multi_hash_chr_translate____indexed_argument___2-12',
9789 C),
9790 lookup_ht(C, k(A, B), D),
9791 member(E, D),
9792 E=suspension(_, active, _, _),
9793 !.
9794is_indexed_argument(_, _) :-
9795 fail.
9796constraint_mode(A, B) :-
9797 constraint_mode___2__0(A, B, _).
9798constraint_mode___2__0(A, B, C) :-
9799 nb_getval('$chr_store_multi_hash_chr_translate____constraint_mode___2-1',
9800 D),
9801 lookup_ht(D, A, E),
9802 ( member(F, E),
9803 F=suspension(_, active, _, _, _, _),
9804 !
9805 ; !,
9806 constraint_mode___2__0__0__2(E, A, B, C)
9807 ).
9808constraint_mode___2__0__0__2([], A, B, C) :-
9809 constraint_mode___2__1(A, B, C).
9810constraint_mode___2__0__0__2([A|B], C, D, E) :-
9811 ( A=suspension(_, active, _, _, F, _),
9812 F==C
9813 -> setarg(2, A, removed),
9814 ( arg(4, A, G),
9815 ( var(G)
9816 -> nb_getval('$chr_store_global_ground_chr_translate____constraint_mode___2',
9817 H),
9818 H=[_|I],
9819 b_setval('$chr_store_global_ground_chr_translate____constraint_mode___2',
9820 I),
9821 ( I=[J|_]
9822 -> setarg(4, J, _)
9823 ; true
9824 )
9825 ; G=[_, _|I],
9826 setarg(2, G, I),
9827 ( I=[J|_]
9828 -> setarg(4, J, G)
9829 ; true
9830 )
9831 )
9832 ),
9833 nb_getval('$chr_store_multi_hash_chr_translate____constraint_mode___2-1',
9834 K),
9835 delete_ht(K, C, A),
9836 constraint_mode___2__0__0__2(B, C, D, E)
9837 ; constraint_mode___2__0__0__2(B, C, D, E)
9838 ).
9839constraint_mode___2__0(A, B, C) :-
9840 constraint_mode___2__1(A, B, C).
9841constraint_mode___2__1(A, B, C) :-
9842 A=D/E,
9843 nb_getval('$chr_store_global_ground_chr_translate____types_modes_condition___3',
9844 F),
9845 !,
9846 C=suspension(G, not_stored_yet, t, _, A, B),
9847 'chr gen_id'(G),
9848 constraint_mode___2__1__0__7(F,
9849 A,
9850 B,
9851 C,
9852 D,
9853 E).
9854constraint_mode___2__1__0__7([], A, B, C, _, _) :-
9855 constraint_mode___2__2(A, B, C).
9856constraint_mode___2__1__0__7([A|B], C, D, E, F, G) :-
9857 ( A=suspension(_, active, _, H, I, J),
9858 H=[K|L],
9859 I=[M|N],
9860 functor(K, F, G)
9861 -> setarg(2, A, removed),
9862 arg(3, A, O),
9863 ( var(O)
9864 -> nb_getval('$chr_store_global_ground_chr_translate____types_modes_condition___3',
9865 P),
9866 P=[_|Q],
9867 b_setval('$chr_store_global_ground_chr_translate____types_modes_condition___3',
9868 Q),
9869 ( Q=[R|_]
9870 -> setarg(3, R, _)
9871 ; true
9872 )
9873 ; O=[_, _|Q],
9874 setarg(2, O, Q),
9875 ( Q=[R|_]
9876 -> setarg(3, R, O)
9877 ; true
9878 )
9879 ),
9880 arg(2, E, S),
9881 setarg(2, E, active),
9882 ( S==not_stored_yet
9883 -> nb_getval('$chr_store_global_ground_chr_translate____constraint_mode___2',
9884 T),
9885 U=[E|T],
9886 b_setval('$chr_store_global_ground_chr_translate____constraint_mode___2',
9887 U),
9888 ( T=[V|_]
9889 -> setarg(4, V, U)
9890 ; true
9891 ),
9892 nb_getval('$chr_store_multi_hash_chr_translate____constraint_mode___2-1',
9893 W),
9894 insert_ht(W, C, E)
9895 ; true
9896 ),
9897 K=..[_|X],
9898 J=(Y, Z, A1),
9899 modes_condition(D, X, Y),
9900 get_constraint_type_det(F/G, B1),
9901 M=..[_|C1],
9902 types_condition(B1, X, C1, D, Z),
9903 types_modes_condition(L, N, A1),
9904 ( E=suspension(_, active, _, _, _, _)
9905 -> setarg(2, E, inactive),
9906 constraint_mode___2__1__0__7(B,
9907 C,
9908 D,
9909 E,
9910 F,
9911 G)
9912 ; true
9913 )
9914 ; constraint_mode___2__1__0__7(B,
9915 C,
9916 D,
9917 E,
9918 F,
9919 G)
9920 ).
9921constraint_mode___2__1(A, B, C) :-
9922 C=suspension(D, not_stored_yet, t, _, A, B),
9923 'chr gen_id'(D),
9924 constraint_mode___2__2(A, B, C).
9925constraint_mode___2__2(A, B, C) :-
9926 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-1', D),
9927 lookup_ht(D, A, E),
9928 !,
9929 constraint_mode___2__2__0__8(E, A, B, C).
9930constraint_mode___2__2__0__8([], A, B, C) :-
9931 constraint_mode___2__3(A, B, C).
9932constraint_mode___2__2__0__8([A|B], C, D, E) :-
9933 ( A=suspension(_, active, _, _, F, _, G, H, I),
9934 F==C,
9935 nb_getval('$chr_store_global_ground_chr_translate____partial_wake_analysis___0',
9936 J)
9937 -> constraint_mode___2__2__1__8(J,
9938 G,
9939 H,
9940 I,
9941 A,
9942 B,
9943 C,
9944 D,
9945 E)
9946 ; constraint_mode___2__2__0__8(B, C, D, E)
9947 ).
9948constraint_mode___2__2__1__8([], _, _, _, _, A, B, C, D) :-
9949 constraint_mode___2__2__0__8(A, B, C, D).
9950constraint_mode___2__2__1__8([A|B], C, D, E, F, G, H, I, J) :-
9951 ( A=suspension(_, active, _, _),
9952 nb_getval('$chr_store_multi_hash_chr_translate____rule___2-1', K),
9953 lookup_ht(K, C, L)
9954 -> constraint_mode___2__2__2__8(L,
9955 A,
9956 B,
9957 C,
9958 D,
9959 E,
9960 F,
9961 G,
9962 H,
9963 I,
9964 J)
9965 ; constraint_mode___2__2__1__8(B,
9966 C,
9967 D,
9968 E,
9969 F,
9970 G,
9971 H,
9972 I,
9973 J)
9974 ).
9975constraint_mode___2__2__2__8([], _, A, B, C, D, E, F, G, H, I) :-
9976 constraint_mode___2__2__1__8(A,
9977 B,
9978 C,
9979 D,
9980 E,
9981 F,
9982 G,
9983 H,
9984 I).
9985constraint_mode___2__2__2__8([A|B], C, D, E, F, G, H, I, J, K, L) :-
9986 ( A=suspension(_, active, _, _, M, N),
9987 M==E,
9988 O=t(330, C, H, A, L),
9989 '$novel_production'(C, O),
9990 '$novel_production'(H, O),
9991 '$novel_production'(A, O),
9992 '$novel_production'(L, O)
9993 -> '$extend_history'(L, O),
9994 arg(2, L, P),
9995 setarg(2, L, active),
9996 ( P==not_stored_yet
9997 -> nb_getval('$chr_store_global_ground_chr_translate____constraint_mode___2',
9998 Q),
9999 R=[L|Q],
10000 b_setval('$chr_store_global_ground_chr_translate____constraint_mode___2',
10001 R),
10002 ( Q=[S|_]
10003 -> setarg(4, S, R)
10004 ; true
10005 ),
10006 nb_getval('$chr_store_multi_hash_chr_translate____constraint_mode___2-1',
10007 T),
10008 insert_ht(T, J, L)
10009 ; true
10010 ),
10011 N=pragma(rule(U, V, W, _), _, _, _, _),
10012 ( is_passive(E, F)
10013 -> true
10014 ; G==simplification
10015 -> select(X, U, _),
10016 X=..[_|Y],
10017 term_variables(W, Z),
10018 partial_wake_args(Y, K, Z, J)
10019 ; select(X, V, _),
10020 X=..[_|Y],
10021 term_variables(W, Z),
10022 partial_wake_args(Y, K, Z, J)
10023 ),
10024 ( L=suspension(_, active, _, _, _, _)
10025 -> setarg(2, L, inactive),
10026 constraint_mode___2__2__2__8(B,
10027 C,
10028 D,
10029 E,
10030 F,
10031 G,
10032 H,
10033 I,
10034 J,
10035 K,
10036 L)
10037 ; true
10038 )
10039 ; constraint_mode___2__2__2__8(B,
10040 C,
10041 D,
10042 E,
10043 F,
10044 G,
10045 H,
10046 I,
10047 J,
10048 K,
10049 L)
10050 ).
10051constraint_mode___2__2(A, B, C) :-
10052 constraint_mode___2__3(A, B, C).
10053constraint_mode___2__3(A, _, B) :-
10054 arg(2, B, C),
10055 setarg(2, B, active),
10056 ( C==not_stored_yet
10057 -> nb_getval('$chr_store_global_ground_chr_translate____constraint_mode___2',
10058 D),
10059 E=[B|D],
10060 b_setval('$chr_store_global_ground_chr_translate____constraint_mode___2',
10061 E),
10062 ( D=[F|_]
10063 -> setarg(4, F, E)
10064 ; true
10065 ),
10066 nb_getval('$chr_store_multi_hash_chr_translate____constraint_mode___2-1',
10067 G),
10068 insert_ht(G, A, B)
10069 ; true
10070 ).
10071get_constraint_mode(A, B) :-
10072 nb_getval('$chr_store_multi_hash_chr_translate____constraint_mode___2-1',
10073 C),
10074 lookup_ht(C, A, D),
10075 member(E, D),
10076 E=suspension(_, active, _, _, _, F),
10077 !,
10078 B=F.
10079get_constraint_mode(_/A, B) :-
10080 replicate(A, ?, B).
10081may_trigger(A) :-
10082 \+ has_active_occurrence(A),
10083 !,
10084 fail.
10085may_trigger(A) :-
10086 nb_getval('$chr_store_multi_hash_chr_translate____constraint_mode___2-1',
10087 B),
10088 lookup_ht(B, A, C),
10089 member(D, C),
10090 D=suspension(_, active, _, _, _, E),
10091 nb_getval('$chr_store_multi_hash_chr_translate____indexed_argument___2-1',
10092 F),
10093 lookup_ht(F, A, G),
10094 member(H, G),
10095 H=suspension(_, active, _, I),
10096 nth1(I, E, J),
10097 J\==(+),
10098 !,
10099 is_stored(A).
10100may_trigger(_) :-
10101 chr_pp_flag(debugable, on).
10102only_ground_indexed_arguments(A) :-
10103 nb_getval('$chr_store_multi_hash_chr_translate____constraint_mode___2-1',
10104 B),
10105 lookup_ht(B, A, C),
10106 member(D, C),
10107 D=suspension(_, active, _, _, _, E),
10108 nb_getval('$chr_store_multi_hash_chr_translate____indexed_argument___2-1',
10109 F),
10110 lookup_ht(F, A, G),
10111 member(H, G),
10112 H=suspension(_, active, _, I),
10113 nth1(I, E, J),
10114 J\==(+),
10115 !,
10116 fail.
10117only_ground_indexed_arguments(_).
10118none_suspended_on_variables :-
10119 nb_getval('$chr_store_global_ground_chr_translate____none_suspended_on_variables___0',
10120 A),
10121 member(B, A),
10122 B=suspension(_, active, _),
10123 !.
10124none_suspended_on_variables :-
10125 A=suspension(B, active, _),
10126 'chr gen_id'(B),
10127 nb_getval('$chr_store_global_ground_chr_translate____none_suspended_on_variables___0',
10128 C),
10129 D=[A|C],
10130 b_setval('$chr_store_global_ground_chr_translate____none_suspended_on_variables___0',
10131 D),
10132 ( C=[E|_]
10133 -> setarg(3, E, D)
10134 ; true
10135 ).
10136are_none_suspended_on_variables :-
10137 nb_getval('$chr_store_global_ground_chr_translate____none_suspended_on_variables___0',
10138 A),
10139 member(B, A),
10140 B=suspension(_, active, _),
10141 !.
10142are_none_suspended_on_variables :-
10143 fail.
10144store_type(A, B) :-
10145 store_type___2__0(A, B, _).
10146store_type___2__0(A, B, C) :-
10147 chr_pp_flag(verbose, on),
10148 !,
10149 C=suspension(D, active, A, B),
10150 'chr gen_id'(D),
10151 nb_getval('$chr_store_multi_hash_chr_translate____store_type___2-1', E),
10152 insert_ht(E, A, C),
10153 format('The indexes for ~w are:\n', [A]),
10154 format_storetype(B),
10155 ( C=suspension(_, active, _, _)
10156 -> setarg(2, C, inactive),
10157 store_type___2__1(A, B, C)
10158 ; true
10159 ).
10160store_type___2__0(A, B, C) :-
10161 C=suspension(D, not_stored_yet, A, B),
10162 'chr gen_id'(D),
10163 store_type___2__1(A, B, C).
10164store_type___2__1(A, _, B) :-
10165 nb_getval('$chr_store_multi_hash_chr_translate____validate_store_type_assumption___1-1',
10166 C),
10167 lookup_ht(C, A, D),
10168 member(E, D),
10169 E=suspension(_, active, _),
10170 nb_getval('$chr_store_multi_hash_chr_translate____actual_store_types___2-1',
10171 F),
10172 lookup_ht(F, A, G),
10173 member(H, G),
10174 H=suspension(_, active, _, I),
10175 !,
10176 setarg(2, E, removed),
10177 nb_getval('$chr_store_multi_hash_chr_translate____validate_store_type_assumption___1-1',
10178 J),
10179 delete_ht(J, A, E),
10180 setarg(2, H, removed),
10181 nb_getval('$chr_store_multi_hash_chr_translate____actual_store_types___2-1',
10182 K),
10183 delete_ht(K, A, H),
10184 ( var(B)
10185 -> true
10186 ; arg(2, B, L),
10187 setarg(2, B, removed),
10188 ( L==not_stored_yet
10189 -> true
10190 ; nb_getval('$chr_store_multi_hash_chr_translate____store_type___2-1',
10191 M),
10192 delete_ht(M, A, B)
10193 )
10194 ),
10195 store_type(A, multi_store(I)).
10196store_type___2__1(A, _, B) :-
10197 arg(2, B, C),
10198 setarg(2, B, active),
10199 ( C==not_stored_yet
10200 -> nb_getval('$chr_store_multi_hash_chr_translate____store_type___2-1',
10201 D),
10202 insert_ht(D, A, B)
10203 ; true
10204 ).
10205get_store_type(A, B) :-
10206 nb_getval('$chr_store_multi_hash_chr_translate____store_type___2-1', C),
10207 lookup_ht(C, A, D),
10208 member(E, D),
10209 E=suspension(_, active, _, F),
10210 !,
10211 B=F.
10212get_store_type(A, B) :-
10213 nb_getval('$chr_store_multi_hash_chr_translate____assumed_store_type___2-1',
10214 C),
10215 lookup_ht(C, A, D),
10216 member(E, D),
10217 E=suspension(_, active, _, F),
10218 !,
10219 B=F.
10220get_store_type(_, default).
10221update_store_type(A, B) :-
10222 nb_getval('$chr_store_multi_hash_chr_translate____actual_store_types___2-1',
10223 C),
10224 lookup_ht(C, A, D),
10225 member(E, D),
10226 E=suspension(_, active, _, F),
10227 ( memberchk(B, F),
10228 !
10229 ; !,
10230 setarg(2, E, removed),
10231 nb_getval('$chr_store_multi_hash_chr_translate____actual_store_types___2-1',
10232 G),
10233 delete_ht(G, A, E),
10234 actual_store_types(A, [B|F])
10235 ).
10236update_store_type(A, B) :-
10237 actual_store_types(A, [B]).
10238actual_store_types(A, B) :-
10239 nb_getval('$chr_store_multi_hash_chr_translate____actual_atomic_multi_hash_keys___3-1',
10240 C),
10241 lookup_ht(C, A, D),
10242 member(E, D),
10243 E=suspension(_, active, _, F, G),
10244 nb_getval('$chr_store_multi_hash_chr_translate____validate_store_type_assumption___1-1',
10245 H),
10246 lookup_ht(H, A, I),
10247 member(J, I),
10248 J=suspension(_, active, _),
10249 !,
10250 setarg(2, E, removed),
10251 nb_getval('$chr_store_multi_hash_chr_translate____actual_atomic_multi_hash_keys___3-12',
10252 K),
10253 delete_ht(K, k(A, F), E),
10254 nb_getval('$chr_store_multi_hash_chr_translate____actual_atomic_multi_hash_keys___3-1',
10255 L),
10256 delete_ht(L, A, E),
10257 selectchk(multi_hash([F]), B, M),
10258 F=[N],
10259 ( get_constraint_arg_type(A, N, O),
10260 enumerated_atomic_type(O, P)
10261 -> Q=P,
10262 R=complete
10263 ; Q=G,
10264 R=incomplete
10265 ),
10266 actual_store_types(A,
10267 [atomic_constants(F, Q, R)|M]).
10268actual_store_types(A, B) :-
10269 nb_getval('$chr_store_multi_hash_chr_translate____actual_ground_multi_hash_keys___3-1',
10270 C),
10271 lookup_ht(C, A, D),
10272 member(E, D),
10273 E=suspension(_, active, _, F, G),
10274 nb_getval('$chr_store_multi_hash_chr_translate____validate_store_type_assumption___1-1',
10275 H),
10276 lookup_ht(H, A, I),
10277 member(J, I),
10278 J=suspension(_, active, _),
10279 !,
10280 setarg(2, E, removed),
10281 nb_getval('$chr_store_multi_hash_chr_translate____actual_ground_multi_hash_keys___3-12',
10282 K),
10283 delete_ht(K, k(A, F), E),
10284 nb_getval('$chr_store_multi_hash_chr_translate____actual_ground_multi_hash_keys___3-1',
10285 L),
10286 delete_ht(L, A, E),
10287 ( F=[M],
10288 get_constraint_arg_type(A, M, N),
10289 N=chr_enum(O)
10290 -> P=complete
10291 ; O=G,
10292 P=incomplete
10293 ),
10294 selectchk(multi_hash([F]), B, Q),
10295 actual_store_types(A,
10296 [ground_constants(F, O, P)|Q]).
10297actual_store_types(A, B) :-
10298 nb_getval('$chr_store_multi_hash_chr_translate____validate_store_type_assumption___1-1',
10299 C),
10300 lookup_ht(C, A, D),
10301 member(E, D),
10302 E=suspension(_, active, _),
10303 ( ( memberchk(multi_hash([[F]]), B),
10304 ( get_constraint_type(A, G),
10305 nth1(F, G, H),
10306 enumerated_atomic_type(H, I),
10307 !,
10308 selectchk(multi_hash([[F]]), B, J),
10309 actual_store_types(A,
10310 [ atomic_constants([F],
10311 I,
10312 complete)
10313 | J
10314 ])
10315 ; get_constraint_arg_type(A, F, K),
10316 K=chr_enum(L),
10317 !,
10318 selectchk(multi_hash([[F]]), B, M),
10319 actual_store_types(A,
10320 [ ground_constants([F],
10321 L,
10322 complete)
10323 | M
10324 ])
10325 )
10326 ; nb_getval('$chr_store_multi_hash_chr_translate____assumed_store_type___2-1',
10327 N),
10328 lookup_ht(N, A, O),
10329 member(P, O),
10330 P=suspension(_, active, _, _),
10331 !,
10332 setarg(2, E, removed),
10333 nb_getval('$chr_store_multi_hash_chr_translate____validate_store_type_assumption___1-1',
10334 Q),
10335 delete_ht(Q, A, E),
10336 setarg(2, P, removed),
10337 nb_getval('$chr_store_multi_hash_chr_translate____assumed_store_type___2-1',
10338 R),
10339 delete_ht(R, A, P),
10340 ( maplist(partial_store, B)
10341 -> S=[global_ground|B]
10342 ; S=B
10343 ),
10344 store_type(A, multi_store(S))
10345 )
10346 ; nb_getval('$chr_store_multi_hash_chr_translate____store_type___2-1',
10347 T),
10348 lookup_ht(T, A, U),
10349 member(V, U),
10350 V=suspension(_, active, _, _),
10351 !,
10352 setarg(2, E, removed),
10353 nb_getval('$chr_store_multi_hash_chr_translate____validate_store_type_assumption___1-1',
10354 W),
10355 delete_ht(W, A, E),
10356 setarg(2, V, removed),
10357 nb_getval('$chr_store_multi_hash_chr_translate____store_type___2-1',
10358 X),
10359 delete_ht(X, A, V),
10360 store_type(A, multi_store(B))
10361 ).
10362actual_store_types(A, B) :-
10363 C=suspension(D, active, A, B),
10364 'chr gen_id'(D),
10365 nb_getval('$chr_store_multi_hash_chr_translate____actual_store_types___2-1',
10366 E),
10367 insert_ht(E, A, C).
10368assumed_store_type(A, _) :-
10369 nb_getval('$chr_store_multi_hash_chr_translate____validate_store_type_assumption___1-1',
10370 B),
10371 lookup_ht(B, A, C),
10372 member(D, C),
10373 D=suspension(_, active, _),
10374 ( ( nb_getval('$chr_store_multi_hash_chr_translate____actual_store_types___2-1',
10375 E),
10376 lookup_ht(E, A, F),
10377 member(G, F),
10378 G=suspension(_, active, _, H),
10379 !,
10380 setarg(2, D, removed),
10381 nb_getval('$chr_store_multi_hash_chr_translate____validate_store_type_assumption___1-1',
10382 I),
10383 delete_ht(I, A, D),
10384 setarg(2, G, removed),
10385 nb_getval('$chr_store_multi_hash_chr_translate____actual_store_types___2-1',
10386 J),
10387 delete_ht(J, A, G),
10388 ( maplist(partial_store, H)
10389 -> K=[global_ground|H]
10390 ; K=H
10391 ),
10392 store_type(A, multi_store(K))
10393 ; chr_pp_flag(debugable, on),
10394 !,
10395 setarg(2, D, removed),
10396 nb_getval('$chr_store_multi_hash_chr_translate____validate_store_type_assumption___1-1',
10397 L),
10398 delete_ht(L, A, D),
10399 store_type(A, default)
10400 )
10401 ; !,
10402 setarg(2, D, removed),
10403 nb_getval('$chr_store_multi_hash_chr_translate____validate_store_type_assumption___1-1',
10404 M),
10405 delete_ht(M, A, D),
10406 store_type(A, global_ground)
10407 ).
10408assumed_store_type(A, B) :-
10409 C=suspension(D, active, A, B),
10410 'chr gen_id'(D),
10411 nb_getval('$chr_store_multi_hash_chr_translate____assumed_store_type___2-1',
10412 E),
10413 insert_ht(E, A, C).
10414validate_store_type_assumption(A) :-
10415 validate_store_type_assumption___1__0(A, _).
10416validate_store_type_assumption___1__0(A, B) :-
10417 nb_getval('$chr_store_multi_hash_chr_translate____actual_store_types___2-1',
10418 C),
10419 lookup_ht(C, A, D),
10420 !,
10421 B=suspension(E, not_stored_yet, A),
10422 'chr gen_id'(E),
10423 validate_store_type_assumption___1__0__0__1(D, A, B).
10424validate_store_type_assumption___1__0__0__1([], A, B) :-
10425 validate_store_type_assumption___1__1(A, B).
10426validate_store_type_assumption___1__0__0__1([A|B], C, D) :-
10427 ( A=suspension(_, active, E, F),
10428 E==C,
10429 ground(C),
10430 nb_getval('$chr_store_multi_hash_chr_translate____actual_atomic_multi_hash_keys___3-1',
10431 G),
10432 lookup_ht(G, C, H),
10433 member(I, H),
10434 I=suspension(_, active, _, J, K)
10435 -> ( setarg(2, A, removed),
10436 nb_getval('$chr_store_multi_hash_chr_translate____actual_store_types___2-1',
10437 L),
10438 delete_ht(L, C, A)
10439 ),
10440 setarg(2, I, removed),
10441 ( nb_getval('$chr_store_multi_hash_chr_translate____actual_atomic_multi_hash_keys___3-12',
10442 M),
10443 delete_ht(M, k(C, J), I)
10444 ),
10445 nb_getval('$chr_store_multi_hash_chr_translate____actual_atomic_multi_hash_keys___3-1',
10446 N),
10447 delete_ht(N, C, I),
10448 arg(2, D, O),
10449 setarg(2, D, active),
10450 ( O==not_stored_yet
10451 -> nb_getval('$chr_store_multi_hash_chr_translate____validate_store_type_assumption___1-1',
10452 P),
10453 insert_ht(P, C, D)
10454 ; true
10455 ),
10456 selectchk(multi_hash([J]), F, Q),
10457 J=[R],
10458 ( get_constraint_arg_type(C, R, S),
10459 enumerated_atomic_type(S, T)
10460 -> U=T,
10461 V=complete
10462 ; U=K,
10463 V=incomplete
10464 ),
10465 actual_store_types(C,
10466 [ atomic_constants(J, U, V)
10467 | Q
10468 ]),
10469 ( D=suspension(_, active, _)
10470 -> setarg(2, D, inactive),
10471 validate_store_type_assumption___1__0__0__1(B,
10472 C,
10473 D)
10474 ; true
10475 )
10476 ; validate_store_type_assumption___1__0__0__1(B, C, D)
10477 ).
10478validate_store_type_assumption___1__0(A, B) :-
10479 B=suspension(C, not_stored_yet, A),
10480 'chr gen_id'(C),
10481 validate_store_type_assumption___1__1(A, B).
10482validate_store_type_assumption___1__1(A, B) :-
10483 nb_getval('$chr_store_multi_hash_chr_translate____actual_store_types___2-1',
10484 C),
10485 lookup_ht(C, A, D),
10486 !,
10487 validate_store_type_assumption___1__1__0__2(D, A, B).
10488validate_store_type_assumption___1__1__0__2([], A, B) :-
10489 validate_store_type_assumption___1__2(A, B).
10490validate_store_type_assumption___1__1__0__2([A|B], C, D) :-
10491 ( A=suspension(_, active, E, F),
10492 E==C,
10493 ground(C),
10494 nb_getval('$chr_store_multi_hash_chr_translate____actual_ground_multi_hash_keys___3-1',
10495 G),
10496 lookup_ht(G, C, H),
10497 member(I, H),
10498 I=suspension(_, active, _, J, K)
10499 -> ( setarg(2, A, removed),
10500 nb_getval('$chr_store_multi_hash_chr_translate____actual_store_types___2-1',
10501 L),
10502 delete_ht(L, C, A)
10503 ),
10504 setarg(2, I, removed),
10505 ( nb_getval('$chr_store_multi_hash_chr_translate____actual_ground_multi_hash_keys___3-12',
10506 M),
10507 delete_ht(M, k(C, J), I)
10508 ),
10509 nb_getval('$chr_store_multi_hash_chr_translate____actual_ground_multi_hash_keys___3-1',
10510 N),
10511 delete_ht(N, C, I),
10512 arg(2, D, O),
10513 setarg(2, D, active),
10514 ( O==not_stored_yet
10515 -> nb_getval('$chr_store_multi_hash_chr_translate____validate_store_type_assumption___1-1',
10516 P),
10517 insert_ht(P, C, D)
10518 ; true
10519 ),
10520 ( J=[Q],
10521 get_constraint_arg_type(C, Q, R),
10522 R=chr_enum(S)
10523 -> T=complete
10524 ; S=K,
10525 T=incomplete
10526 ),
10527 selectchk(multi_hash([J]), F, U),
10528 actual_store_types(C,
10529 [ ground_constants(J, S, T)
10530 | U
10531 ]),
10532 ( D=suspension(_, active, _)
10533 -> setarg(2, D, inactive),
10534 validate_store_type_assumption___1__1__0__2(B,
10535 C,
10536 D)
10537 ; true
10538 )
10539 ; validate_store_type_assumption___1__1__0__2(B, C, D)
10540 ).
10541validate_store_type_assumption___1__1(A, B) :-
10542 validate_store_type_assumption___1__2(A, B).
10543validate_store_type_assumption___1__2(A, B) :-
10544 nb_getval('$chr_store_multi_hash_chr_translate____actual_store_types___2-1',
10545 C),
10546 lookup_ht(C, A, D),
10547 !,
10548 validate_store_type_assumption___1__2__0__3(D, A, B).
10549validate_store_type_assumption___1__2__0__3([], A, B) :-
10550 validate_store_type_assumption___1__3(A, B).
10551validate_store_type_assumption___1__2__0__3([A|B], C, D) :-
10552 ( A=suspension(_, active, E, F),
10553 E==C,
10554 memberchk(multi_hash([[G]]), F),
10555 get_constraint_type(C, H),
10556 nth1(G, H, I),
10557 enumerated_atomic_type(I, J)
10558 -> setarg(2, A, removed),
10559 nb_getval('$chr_store_multi_hash_chr_translate____actual_store_types___2-1',
10560 K),
10561 delete_ht(K, C, A),
10562 arg(2, D, L),
10563 setarg(2, D, active),
10564 ( L==not_stored_yet
10565 -> nb_getval('$chr_store_multi_hash_chr_translate____validate_store_type_assumption___1-1',
10566 M),
10567 insert_ht(M, C, D)
10568 ; true
10569 ),
10570 selectchk(multi_hash([[G]]), F, N),
10571 actual_store_types(C,
10572 [ atomic_constants([G], J, complete)
10573 | N
10574 ]),
10575 ( D=suspension(_, active, _)
10576 -> setarg(2, D, inactive),
10577 validate_store_type_assumption___1__2__0__3(B,
10578 C,
10579 D)
10580 ; true
10581 )
10582 ; validate_store_type_assumption___1__2__0__3(B, C, D)
10583 ).
10584validate_store_type_assumption___1__2(A, B) :-
10585 validate_store_type_assumption___1__3(A, B).
10586validate_store_type_assumption___1__3(A, B) :-
10587 nb_getval('$chr_store_multi_hash_chr_translate____actual_store_types___2-1',
10588 C),
10589 lookup_ht(C, A, D),
10590 !,
10591 validate_store_type_assumption___1__3__0__4(D, A, B).
10592validate_store_type_assumption___1__3__0__4([], A, B) :-
10593 validate_store_type_assumption___1__4(A, B).
10594validate_store_type_assumption___1__3__0__4([A|B], C, D) :-
10595 ( A=suspension(_, active, E, F),
10596 E==C,
10597 memberchk(multi_hash([[G]]), F),
10598 get_constraint_arg_type(C, G, H),
10599 H=chr_enum(I)
10600 -> setarg(2, A, removed),
10601 nb_getval('$chr_store_multi_hash_chr_translate____actual_store_types___2-1',
10602 J),
10603 delete_ht(J, C, A),
10604 arg(2, D, K),
10605 setarg(2, D, active),
10606 ( K==not_stored_yet
10607 -> nb_getval('$chr_store_multi_hash_chr_translate____validate_store_type_assumption___1-1',
10608 L),
10609 insert_ht(L, C, D)
10610 ; true
10611 ),
10612 selectchk(multi_hash([[G]]), F, M),
10613 actual_store_types(C,
10614 [ ground_constants([G], I, complete)
10615 | M
10616 ]),
10617 ( D=suspension(_, active, _)
10618 -> setarg(2, D, inactive),
10619 validate_store_type_assumption___1__3__0__4(B,
10620 C,
10621 D)
10622 ; true
10623 )
10624 ; validate_store_type_assumption___1__3__0__4(B, C, D)
10625 ).
10626validate_store_type_assumption___1__3(A, B) :-
10627 validate_store_type_assumption___1__4(A, B).
10628validate_store_type_assumption___1__4(A, B) :-
10629 nb_getval('$chr_store_multi_hash_chr_translate____actual_store_types___2-1',
10630 C),
10631 lookup_ht(C, A, D),
10632 member(E, D),
10633 E=suspension(_, active, _, F),
10634 ( nb_getval('$chr_store_multi_hash_chr_translate____assumed_store_type___2-1',
10635 G),
10636 lookup_ht(G, A, H),
10637 member(I, H),
10638 I=suspension(_, active, _, _),
10639 !,
10640 setarg(2, E, removed),
10641 nb_getval('$chr_store_multi_hash_chr_translate____actual_store_types___2-1',
10642 J),
10643 delete_ht(J, A, E),
10644 setarg(2, I, removed),
10645 nb_getval('$chr_store_multi_hash_chr_translate____assumed_store_type___2-1',
10646 K),
10647 delete_ht(K, A, I),
10648 ( var(B)
10649 -> true
10650 ; arg(2, B, L),
10651 setarg(2, B, removed),
10652 ( L==not_stored_yet
10653 -> true
10654 ; nb_getval('$chr_store_multi_hash_chr_translate____validate_store_type_assumption___1-1',
10655 M),
10656 delete_ht(M, A, B)
10657 )
10658 ),
10659 ( maplist(partial_store, F)
10660 -> N=[global_ground|F]
10661 ; N=F
10662 ),
10663 store_type(A, multi_store(N))
10664 ; nb_getval('$chr_store_multi_hash_chr_translate____store_type___2-1',
10665 O),
10666 lookup_ht(O, A, P),
10667 member(Q, P),
10668 Q=suspension(_, active, _, _),
10669 !,
10670 setarg(2, E, removed),
10671 nb_getval('$chr_store_multi_hash_chr_translate____actual_store_types___2-1',
10672 R),
10673 delete_ht(R, A, E),
10674 setarg(2, Q, removed),
10675 nb_getval('$chr_store_multi_hash_chr_translate____store_type___2-1',
10676 S),
10677 delete_ht(S, A, Q),
10678 ( var(B)
10679 -> true
10680 ; arg(2, B, T),
10681 setarg(2, B, removed),
10682 ( T==not_stored_yet
10683 -> true
10684 ; nb_getval('$chr_store_multi_hash_chr_translate____validate_store_type_assumption___1-1',
10685 U),
10686 delete_ht(U, A, B)
10687 )
10688 ),
10689 store_type(A, multi_store(F))
10690 ).
10691validate_store_type_assumption___1__4(A, B) :-
10692 nb_getval('$chr_store_multi_hash_chr_translate____assumed_store_type___2-1',
10693 C),
10694 lookup_ht(C, A, D),
10695 member(E, D),
10696 E=suspension(_, active, _, _),
10697 ( chr_pp_flag(debugable, on),
10698 !,
10699 setarg(2, E, removed),
10700 nb_getval('$chr_store_multi_hash_chr_translate____assumed_store_type___2-1',
10701 F),
10702 delete_ht(F, A, E),
10703 ( var(B)
10704 -> true
10705 ; arg(2, B, G),
10706 setarg(2, B, removed),
10707 ( G==not_stored_yet
10708 -> true
10709 ; nb_getval('$chr_store_multi_hash_chr_translate____validate_store_type_assumption___1-1',
10710 H),
10711 delete_ht(H, A, B)
10712 )
10713 ),
10714 store_type(A, default)
10715 ; !,
10716 setarg(2, E, removed),
10717 nb_getval('$chr_store_multi_hash_chr_translate____assumed_store_type___2-1',
10718 I),
10719 delete_ht(I, A, E),
10720 ( var(B)
10721 -> true
10722 ; arg(2, B, J),
10723 setarg(2, B, removed),
10724 ( J==not_stored_yet
10725 -> true
10726 ; nb_getval('$chr_store_multi_hash_chr_translate____validate_store_type_assumption___1-1',
10727 K),
10728 delete_ht(K, A, B)
10729 )
10730 ),
10731 store_type(A, global_ground)
10732 ).
10733validate_store_type_assumption___1__4(A, B) :-
10734 ( var(B)
10735 -> true
10736 ; arg(2, B, C),
10737 setarg(2, B, removed),
10738 ( C==not_stored_yet
10739 -> true
10740 ; nb_getval('$chr_store_multi_hash_chr_translate____validate_store_type_assumption___1-1',
10741 D),
10742 delete_ht(D, A, B)
10743 )
10744 ).
10745rule_count(A) :-
10746 nb_getval('$chr_store_global_ground_chr_translate____rule_count___1',
10747 B),
10748 ( member(C, B),
10749 C=suspension(_, active, _, _),
10750 !
10751 ; !,
10752 rule_count___1__0__0__2(B, A)
10753 ).
10754rule_count___1__0__0__2([], A) :-
10755 rule_count___1__1(A).
10756rule_count___1__0__0__2([A|B], C) :-
10757 ( A=suspension(_, active, _, _)
10758 -> setarg(2, A, removed),
10759 arg(3, A, D),
10760 ( var(D)
10761 -> nb_getval('$chr_store_global_ground_chr_translate____rule_count___1',
10762 E),
10763 E=[_|F],
10764 b_setval('$chr_store_global_ground_chr_translate____rule_count___1',
10765 F),
10766 ( F=[G|_]
10767 -> setarg(3, G, _)
10768 ; true
10769 )
10770 ; D=[_, _|F],
10771 setarg(2, D, F),
10772 ( F=[G|_]
10773 -> setarg(3, G, D)
10774 ; true
10775 )
10776 ),
10777 rule_count___1__0__0__2(B, C)
10778 ; rule_count___1__0__0__2(B, C)
10779 ).
10780rule_count(A) :-
10781 rule_count___1__1(A).
10782rule_count___1__1(A) :-
10783 B=suspension(C, active, _, A),
10784 'chr gen_id'(C),
10785 nb_getval('$chr_store_global_ground_chr_translate____rule_count___1',
10786 D),
10787 E=[B|D],
10788 b_setval('$chr_store_global_ground_chr_translate____rule_count___1', E),
10789 ( D=[F|_]
10790 -> setarg(3, F, E)
10791 ; true
10792 ).
10793inc_rule_count(A) :-
10794 nb_getval('$chr_store_global_ground_chr_translate____rule_count___1',
10795 B),
10796 member(C, B),
10797 C=suspension(_, active, _, D),
10798 !,
10799 setarg(2, C, removed),
10800 arg(3, C, E),
10801 ( var(E)
10802 -> nb_getval('$chr_store_global_ground_chr_translate____rule_count___1',
10803 F),
10804 F=[_|G],
10805 b_setval('$chr_store_global_ground_chr_translate____rule_count___1',
10806 G),
10807 ( G=[H|_]
10808 -> setarg(3, H, _)
10809 ; true
10810 )
10811 ; E=[_, _|G],
10812 setarg(2, E, G),
10813 ( G=[H|_]
10814 -> setarg(3, H, E)
10815 ; true
10816 )
10817 ),
10818 A is D+1,
10819 rule_count(A).
10820inc_rule_count(1) :-
10821 rule_count(1).
10822passive(A, B) :-
10823 passive___2__0(A, B, _).
10824passive___2__0(A, B, _) :-
10825 nb_getval('$chr_store_multi_hash_chr_translate____passive___2-12', C),
10826 lookup_ht(C, k(A, B), D),
10827 member(E, D),
10828 E=suspension(_, active, _, _, _),
10829 !.
10830passive___2__0(A, B, C) :-
10831 nb_getval('$chr_store_multi_hash_chr_translate____least_occurrence___2-1',
10832 D),
10833 lookup_ht(D, A, E),
10834 !,
10835 C=suspension(F, not_stored_yet, t, A, B),
10836 'chr gen_id'(F),
10837 passive___2__0__0__6(E, A, B, C).
10838passive___2__0__0__6([], A, B, C) :-
10839 passive___2__1(A, B, C).
10840passive___2__0__0__6([A|B], C, D, E) :-
10841 ( A=suspension(_, active, F, G),
10842 F==C,
10843 G=[H|I],
10844 H==D,
10845 ground(C),
10846 nb_getval('$chr_store_multi_hash_chr_translate____rule___2-1', J),
10847 lookup_ht(J, C, K),
10848 member(L, K),
10849 L=suspension(_, active, _, _, _, _)
10850 -> setarg(2, A, removed),
10851 ( nb_getval('$chr_store_multi_hash_chr_translate____least_occurrence___2-12',
10852 M),
10853 delete_ht(M, k(C, [D|I]), A)
10854 ),
10855 nb_getval('$chr_store_multi_hash_chr_translate____least_occurrence___2-1',
10856 N),
10857 delete_ht(N, C, A),
10858 arg(2, E, O),
10859 setarg(2, E, active),
10860 ( O==not_stored_yet
10861 -> nb_getval('$chr_store_multi_hash_chr_translate____passive___2-1',
10862 P),
10863 insert_ht(P, C, E),
10864 nb_getval('$chr_store_multi_hash_chr_translate____passive___2-12',
10865 Q),
10866 insert_ht(Q, k(C, D), E)
10867 ; true
10868 ),
10869 least_occurrence(C, I),
10870 ( E=suspension(_, active, _, _, _)
10871 -> setarg(2, E, inactive),
10872 passive___2__0__0__6(B, C, D, E)
10873 ; true
10874 )
10875 ; passive___2__0__0__6(B, C, D, E)
10876 ).
10877passive___2__0(A, B, C) :-
10878 C=suspension(D, not_stored_yet, t, A, B),
10879 'chr gen_id'(D),
10880 passive___2__1(A, B, C).
10881passive___2__1(A, B, C) :-
10882 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-34',
10883 D),
10884 lookup_ht(D, k(A, B), E),
10885 !,
10886 passive___2__1__0__8(E, A, B, C).
10887passive___2__1__0__8([], A, B, C) :-
10888 passive___2__2(A, B, C).
10889passive___2__1__0__8([A|B], C, D, E) :-
10890 ( A=suspension(_, active, _, _, F, G, H, I, _),
10891 H==C,
10892 I==D,
10893 nb_getval('$chr_store_multi_hash_chr_translate____stored_complete___3-1',
10894 J),
10895 lookup_ht(J, F, K)
10896 -> passive___2__1__1__8(K,
10897 F,
10898 G,
10899 A,
10900 B,
10901 C,
10902 D,
10903 E)
10904 ; passive___2__1__0__8(B, C, D, E)
10905 ).
10906passive___2__1__1__8([], _, _, _, A, B, C, D) :-
10907 passive___2__1__0__8(A, B, C, D).
10908passive___2__1__1__8([A|B], C, D, E, F, G, H, I) :-
10909 ( A=suspension(_, active, _, J, K, L),
10910 J==C,
10911 D<K,
10912 ( ground(C),
10913 ground(D)
10914 ),
10915 nb_getval('$chr_store_multi_hash_chr_translate____stored___3-123',
10916 M),
10917 lookup_ht(M, k(C, D, yes), N),
10918 member(O, N),
10919 O=suspension(_, active, _, _, _)
10920 -> ( setarg(2, A, removed),
10921 nb_getval('$chr_store_multi_hash_chr_translate____stored_complete___3-13',
10922 P),
10923 delete_ht(P, k(C, L), A),
10924 nb_getval('$chr_store_multi_hash_chr_translate____stored_complete___3-1',
10925 Q),
10926 delete_ht(Q, C, A)
10927 ),
10928 setarg(2, O, removed),
10929 ( nb_getval('$chr_store_multi_hash_chr_translate____stored___3-13',
10930 R),
10931 delete_ht(R, k(C, yes), O)
10932 ),
10933 nb_getval('$chr_store_multi_hash_chr_translate____stored___3-123',
10934 S),
10935 delete_ht(S, k(C, D, yes), O),
10936 arg(2, I, T),
10937 setarg(2, I, active),
10938 ( T==not_stored_yet
10939 -> nb_getval('$chr_store_multi_hash_chr_translate____passive___2-1',
10940 U),
10941 insert_ht(U, G, I),
10942 nb_getval('$chr_store_multi_hash_chr_translate____passive___2-12',
10943 V),
10944 insert_ht(V, k(G, H), I)
10945 ; true
10946 ),
10947 W is L-1,
10948 stored(C, D, maybe),
10949 stored_complete(C, K, W),
10950 ( I=suspension(_, active, _, _, _)
10951 -> setarg(2, I, inactive),
10952 passive___2__1__1__8(B,
10953 C,
10954 D,
10955 E,
10956 F,
10957 G,
10958 H,
10959 I)
10960 ; true
10961 )
10962 ; passive___2__1__1__8(B,
10963 C,
10964 D,
10965 E,
10966 F,
10967 G,
10968 H,
10969 I)
10970 ).
10971passive___2__1(A, B, C) :-
10972 passive___2__2(A, B, C).
10973passive___2__2(A, B, C) :-
10974 nb_getval('$chr_store_multi_hash_chr_translate____rule___2-1', D),
10975 lookup_ht(D, A, E),
10976 !,
10977 passive___2__2__0__9(E, A, B, C).
10978passive___2__2__0__9([], A, B, C) :-
10979 passive___2__3(A, B, C).
10980passive___2__2__0__9([A|B], C, D, E) :-
10981 ( A=suspension(_, active, _, _, F, G),
10982 F==C,
10983 H=t(251, A, E),
10984 '$novel_production'(A, H),
10985 '$novel_production'(E, H),
10986 G=pragma(rule(_, _, _, _), ids([D|I], J), _, _, C)
10987 -> '$extend_history'(E, H),
10988 arg(2, E, K),
10989 setarg(2, E, active),
10990 ( K==not_stored_yet
10991 -> nb_getval('$chr_store_multi_hash_chr_translate____passive___2-1',
10992 L),
10993 insert_ht(L, C, E),
10994 nb_getval('$chr_store_multi_hash_chr_translate____passive___2-12',
10995 M),
10996 insert_ht(M, k(C, D), E)
10997 ; true
10998 ),
10999 append(I, J, N),
11000 check_all_passive(C, N),
11001 ( E=suspension(_, active, _, _, _)
11002 -> setarg(2, E, inactive),
11003 passive___2__2__0__9(B, C, D, E)
11004 ; true
11005 )
11006 ; passive___2__2__0__9(B, C, D, E)
11007 ).
11008passive___2__2(A, B, C) :-
11009 passive___2__3(A, B, C).
11010passive___2__3(A, B, C) :-
11011 nb_getval('$chr_store_multi_hash_chr_translate____rule___2-1', D),
11012 lookup_ht(D, A, E),
11013 !,
11014 passive___2__3__0__10(E, A, B, C).
11015passive___2__3__0__10([], A, B, C) :-
11016 passive___2__4(A, B, C).
11017passive___2__3__0__10([A|B], C, D, E) :-
11018 ( A=suspension(_, active, _, _, F, G),
11019 F==C,
11020 H=t(252, A, E),
11021 '$novel_production'(A, H),
11022 '$novel_production'(E, H),
11023 G=pragma(rule(_, _, _, _), ids([], [D|I]), _, _, C)
11024 -> '$extend_history'(E, H),
11025 arg(2, E, J),
11026 setarg(2, E, active),
11027 ( J==not_stored_yet
11028 -> nb_getval('$chr_store_multi_hash_chr_translate____passive___2-1',
11029 K),
11030 insert_ht(K, C, E),
11031 nb_getval('$chr_store_multi_hash_chr_translate____passive___2-12',
11032 L),
11033 insert_ht(L, k(C, D), E)
11034 ; true
11035 ),
11036 check_all_passive(C, I),
11037 ( E=suspension(_, active, _, _, _)
11038 -> setarg(2, E, inactive),
11039 passive___2__3__0__10(B, C, D, E)
11040 ; true
11041 )
11042 ; passive___2__3__0__10(B, C, D, E)
11043 ).
11044passive___2__3(A, B, C) :-
11045 passive___2__4(A, B, C).
11046passive___2__4(A, B, C) :-
11047 nb_getval('$chr_store_multi_hash_chr_translate____check_all_passive___2-1',
11048 D),
11049 lookup_ht(D, A, E),
11050 !,
11051 passive___2__4__0__11(E, A, B, C).
11052passive___2__4__0__11([], A, B, C) :-
11053 passive___2__5(A, B, C).
11054passive___2__4__0__11([A|B], C, D, E) :-
11055 ( A=suspension(_, active, F, G),
11056 F==C,
11057 G=[H|I],
11058 H==D
11059 -> setarg(2, A, removed),
11060 ( nb_getval('$chr_store_multi_hash_chr_translate____check_all_passive___2-12',
11061 J),
11062 delete_ht(J, k(C, [D|I]), A)
11063 ),
11064 nb_getval('$chr_store_multi_hash_chr_translate____check_all_passive___2-1',
11065 K),
11066 delete_ht(K, C, A),
11067 arg(2, E, L),
11068 setarg(2, E, active),
11069 ( L==not_stored_yet
11070 -> nb_getval('$chr_store_multi_hash_chr_translate____passive___2-1',
11071 M),
11072 insert_ht(M, C, E),
11073 nb_getval('$chr_store_multi_hash_chr_translate____passive___2-12',
11074 N),
11075 insert_ht(N, k(C, D), E)
11076 ; true
11077 ),
11078 check_all_passive(C, I),
11079 ( E=suspension(_, active, _, _, _)
11080 -> setarg(2, E, inactive),
11081 passive___2__4__0__11(B, C, D, E)
11082 ; true
11083 )
11084 ; passive___2__4__0__11(B, C, D, E)
11085 ).
11086passive___2__4(A, B, C) :-
11087 passive___2__5(A, B, C).
11088passive___2__5(A, B, C) :-
11089 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-34',
11090 D),
11091 lookup_ht(D, k(A, B), E),
11092 !,
11093 passive___2__5__0__14(E, A, B, C).
11094passive___2__5__0__14([], A, B, C) :-
11095 passive___2__6(A, B, C).
11096passive___2__5__0__14([A|B], C, D, E) :-
11097 ( A=suspension(_, active, _, _, F, G, H, I, _),
11098 H==C,
11099 I==D,
11100 nb_getval('$chr_store_multi_hash_chr_translate____skip_to_next_id___2-12',
11101 J),
11102 lookup_ht(J, k(F, G), K)
11103 -> passive___2__5__1__14(K,
11104 F,
11105 G,
11106 A,
11107 B,
11108 C,
11109 D,
11110 E)
11111 ; passive___2__5__0__14(B, C, D, E)
11112 ).
11113passive___2__5__1__14([], _, _, _, A, B, C, D) :-
11114 passive___2__5__0__14(A, B, C, D).
11115passive___2__5__1__14([A|B], C, D, E, F, G, H, I) :-
11116 ( A=suspension(_, active, _, J, K),
11117 J==C,
11118 K==D,
11119 L=t(362, E, I, A),
11120 '$novel_production'(E, L),
11121 '$novel_production'(I, L),
11122 '$novel_production'(A, L),
11123 D>1
11124 -> '$extend_history'(I, L),
11125 arg(2, I, M),
11126 setarg(2, I, active),
11127 ( M==not_stored_yet
11128 -> nb_getval('$chr_store_multi_hash_chr_translate____passive___2-1',
11129 N),
11130 insert_ht(N, G, I),
11131 nb_getval('$chr_store_multi_hash_chr_translate____passive___2-12',
11132 O),
11133 insert_ht(O, k(G, H), I)
11134 ; true
11135 ),
11136 P is D-1,
11137 skip_to_next_id(C, P),
11138 ( I=suspension(_, active, _, _, _)
11139 -> setarg(2, I, inactive),
11140 passive___2__5__1__14(B,
11141 C,
11142 D,
11143 E,
11144 F,
11145 G,
11146 H,
11147 I)
11148 ; true
11149 )
11150 ; passive___2__5__1__14(B,
11151 C,
11152 D,
11153 E,
11154 F,
11155 G,
11156 H,
11157 I)
11158 ).
11159passive___2__5(A, B, C) :-
11160 passive___2__6(A, B, C).
11161passive___2__6(A, B, C) :-
11162 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-34',
11163 D),
11164 lookup_ht(D, k(A, B), E),
11165 !,
11166 passive___2__6__0__15(E, A, B, C).
11167passive___2__6__0__15([], A, B, C) :-
11168 passive___2__7(A, B, C).
11169passive___2__6__0__15([A|B], C, D, E) :-
11170 ( A=suspension(_, active, _, _, F, G, H, I, _),
11171 H==C,
11172 I==D,
11173 nb_getval('$chr_store_multi_hash_chr_translate____set_occurrence_code_id___3-12',
11174 J),
11175 lookup_ht(J, k(F, G), K)
11176 -> passive___2__6__1__15(K,
11177 F,
11178 G,
11179 A,
11180 B,
11181 C,
11182 D,
11183 E)
11184 ; passive___2__6__0__15(B, C, D, E)
11185 ).
11186passive___2__6__1__15([], _, _, _, A, B, C, D) :-
11187 passive___2__6__0__15(A, B, C, D).
11188passive___2__6__1__15([A|B], C, D, E, F, G, H, I) :-
11189 ( A=suspension(_, active, J, K, L),
11190 J==C,
11191 K==D
11192 -> setarg(2, A, removed),
11193 nb_getval('$chr_store_multi_hash_chr_translate____set_occurrence_code_id___3-12',
11194 M),
11195 delete_ht(M, k(C, D), A),
11196 arg(2, I, N),
11197 setarg(2, I, active),
11198 ( N==not_stored_yet
11199 -> nb_getval('$chr_store_multi_hash_chr_translate____passive___2-1',
11200 O),
11201 insert_ht(O, G, I),
11202 nb_getval('$chr_store_multi_hash_chr_translate____passive___2-12',
11203 P),
11204 insert_ht(P, k(G, H), I)
11205 ; true
11206 ),
11207 occurrence_code_id(C, D, L),
11208 Q is D+1,
11209 set_occurrence_code_id(C, Q, L),
11210 ( I=suspension(_, active, _, _, _)
11211 -> setarg(2, I, inactive),
11212 passive___2__6__1__15(B,
11213 C,
11214 D,
11215 E,
11216 F,
11217 G,
11218 H,
11219 I)
11220 ; true
11221 )
11222 ; passive___2__6__1__15(B,
11223 C,
11224 D,
11225 E,
11226 F,
11227 G,
11228 H,
11229 I)
11230 ).
11231passive___2__6(A, B, C) :-
11232 passive___2__7(A, B, C).
11233passive___2__7(A, B, C) :-
11234 arg(2, C, D),
11235 setarg(2, C, active),
11236 ( D==not_stored_yet
11237 -> nb_getval('$chr_store_multi_hash_chr_translate____passive___2-1',
11238 E),
11239 insert_ht(E, A, C),
11240 nb_getval('$chr_store_multi_hash_chr_translate____passive___2-12',
11241 F),
11242 insert_ht(F, k(A, B), C)
11243 ; true
11244 ).
11245is_passive(A, B) :-
11246 nb_getval('$chr_store_multi_hash_chr_translate____passive___2-12', C),
11247 lookup_ht(C, k(A, B), D),
11248 member(E, D),
11249 E=suspension(_, active, _, _, _),
11250 !.
11251is_passive(_, _) :-
11252 fail.
11253any_passive_head(A) :-
11254 nb_getval('$chr_store_multi_hash_chr_translate____passive___2-1', B),
11255 lookup_ht(B, A, C),
11256 member(D, C),
11257 D=suspension(_, active, _, _, _),
11258 !.
11259any_passive_head(_) :-
11260 fail.
11261new_occurrence(A, B, C, D) :-
11262 nb_getval('$chr_store_multi_hash_chr_translate____max_occurrence___2-1',
11263 E),
11264 lookup_ht(E, A, F),
11265 member(G, F),
11266 G=suspension(_, active, _, _, H),
11267 !,
11268 setarg(2, G, removed),
11269 nb_getval('$chr_store_multi_hash_chr_translate____max_occurrence___2-1',
11270 I),
11271 delete_ht(I, A, G),
11272 J is H+1,
11273 occurrence(A, J, B, C, D),
11274 max_occurrence(A, J).
11275new_occurrence(A, B, _, _) :-
11276 chr_error(internal,
11277 'new_occurrence: missing max_occurrence for ~w in rule ~w\n',
11278 [A, B]).
11279occurrence(A, B, C, D, E) :-
11280 occurrence___5__0(A, B, C, D, E, _).
11281occurrence___5__0(A, B, C, D, E, F) :-
11282 nb_getval('$chr_store_multi_hash_chr_translate____rule___2-1', G),
11283 lookup_ht(G, C, H),
11284 !,
11285 F=suspension(I, not_stored_yet, t, _, A, B, C, D, E),
11286 'chr gen_id'(I),
11287 occurrence___5__0__0__4(H,
11288 A,
11289 B,
11290 C,
11291 D,
11292 E,
11293 F).
11294occurrence___5__0__0__4([], A, B, C, D, E, F) :-
11295 occurrence___5__1(A, B, C, D, E, F).
11296occurrence___5__0__0__4([A|B], C, D, E, F, G, H) :-
11297 ( A=suspension(_, active, _, _, I, J),
11298 I==E,
11299 nb_getval('$chr_store_multi_hash_chr_translate____allocation_occurrence___2-12',
11300 K),
11301 lookup_ht(K, k(C, D), L)
11302 -> occurrence___5__0__1__4(L,
11303 J,
11304 A,
11305 B,
11306 C,
11307 D,
11308 E,
11309 F,
11310 G,
11311 H)
11312 ; occurrence___5__0__0__4(B,
11313 C,
11314 D,
11315 E,
11316 F,
11317 G,
11318 H)
11319 ).
11320occurrence___5__0__1__4([], _, _, A, B, C, D, E, F, G) :-
11321 occurrence___5__0__0__4(A,
11322 B,
11323 C,
11324 D,
11325 E,
11326 F,
11327 G).
11328occurrence___5__0__1__4([A|B], C, D, E, F, G, H, I, J, K) :-
11329 ( A=suspension(_, active, _, L, M),
11330 L==F,
11331 M==G,
11332 N=t(60, D, K, A),
11333 '$novel_production'(D, N),
11334 '$novel_production'(K, N),
11335 '$novel_production'(A, N)
11336 -> '$extend_history'(K, N),
11337 arg(2, K, O),
11338 setarg(2, K, active),
11339 ( O==not_stored_yet
11340 -> nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-15',
11341 P),
11342 insert_ht(P, k(F, J), K),
11343 nb_getval('$chr_store_global_ground_chr_translate____occurrence___5',
11344 Q),
11345 R=[K|Q],
11346 b_setval('$chr_store_global_ground_chr_translate____occurrence___5',
11347 R),
11348 ( Q=[S|_]
11349 -> setarg(4, S, R)
11350 ; true
11351 ),
11352 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-125',
11353 T),
11354 insert_ht(T, k(F, G, J), K),
11355 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-134',
11356 U),
11357 insert_ht(U, k(F, H, I), K),
11358 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-12',
11359 V),
11360 insert_ht(V, k(F, G), K),
11361 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-3',
11362 W),
11363 insert_ht(W, H, K),
11364 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-13',
11365 X),
11366 insert_ht(X, k(F, H), K),
11367 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-34',
11368 Y),
11369 insert_ht(Y, k(H, I), K),
11370 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-1',
11371 Z),
11372 insert_ht(Z, F, K)
11373 ; true
11374 ),
11375 \+ is_passive(H, I),
11376 J==propagation,
11377 ( stored_in_guard_before_next_kept_occurrence(F, G)
11378 -> true
11379 ; C=pragma(rule([_|_], _, _, _), _, _, _, _)
11380 -> is_observed(F, G)
11381 ; is_least_occurrence(H)
11382 -> is_observed(F, G)
11383 ; true
11384 ),
11385 ( K=suspension(_, active, _, _, _, _, _, _, _)
11386 -> setarg(2, K, inactive),
11387 occurrence___5__0__1__4(B,
11388 C,
11389 D,
11390 E,
11391 F,
11392 G,
11393 H,
11394 I,
11395 J,
11396 K)
11397 ; true
11398 )
11399 ; occurrence___5__0__1__4(B,
11400 C,
11401 D,
11402 E,
11403 F,
11404 G,
11405 H,
11406 I,
11407 J,
11408 K)
11409 ).
11410occurrence___5__0(A, B, C, D, E, F) :-
11411 F=suspension(G, not_stored_yet, t, _, A, B, C, D, E),
11412 'chr gen_id'(G),
11413 occurrence___5__1(A, B, C, D, E, F).
11414occurrence___5__1(A, B, C, D, E, F) :-
11415 nb_getval('$chr_store_multi_hash_chr_translate____least_occurrence___2-1',
11416 G),
11417 lookup_ht(G, C, H),
11418 !,
11419 occurrence___5__1__0__7(H,
11420 A,
11421 B,
11422 C,
11423 D,
11424 E,
11425 F).
11426occurrence___5__1__0__7([], A, B, C, D, E, F) :-
11427 occurrence___5__2(A, B, C, D, E, F).
11428occurrence___5__1__0__7([A|B], C, D, E, F, G, H) :-
11429 ( A=suspension(_, active, I, J),
11430 I==E,
11431 J=[K|L],
11432 K==F,
11433 ( ground(C),
11434 nb_getval('$chr_store_multi_hash_chr_translate____allocation_occurrence___2-1',
11435 M),
11436 lookup_ht(M, C, N)
11437 ),
11438 member(O, N),
11439 O=suspension(_, active, _, _, P),
11440 P>=D,
11441 ( ground(E),
11442 nb_getval('$chr_store_multi_hash_chr_translate____rule___2-1',
11443 Q),
11444 lookup_ht(Q, E, R)
11445 ),
11446 member(S, R),
11447 S=suspension(_, active, _, _, _, _),
11448 \+ may_trigger(C)
11449 -> setarg(2, A, removed),
11450 ( nb_getval('$chr_store_multi_hash_chr_translate____least_occurrence___2-12',
11451 T),
11452 delete_ht(T, k(E, [F|L]), A)
11453 ),
11454 nb_getval('$chr_store_multi_hash_chr_translate____least_occurrence___2-1',
11455 U),
11456 delete_ht(U, E, A),
11457 arg(2, H, V),
11458 setarg(2, H, active),
11459 ( V==not_stored_yet
11460 -> nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-15',
11461 W),
11462 insert_ht(W, k(C, G), H),
11463 nb_getval('$chr_store_global_ground_chr_translate____occurrence___5',
11464 X),
11465 Y=[H|X],
11466 b_setval('$chr_store_global_ground_chr_translate____occurrence___5',
11467 Y),
11468 ( X=[Z|_]
11469 -> setarg(4, Z, Y)
11470 ; true
11471 ),
11472 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-125',
11473 A1),
11474 insert_ht(A1, k(C, D, G), H),
11475 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-134',
11476 B1),
11477 insert_ht(B1, k(C, E, F), H),
11478 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-12',
11479 C1),
11480 insert_ht(C1, k(C, D), H),
11481 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-3',
11482 D1),
11483 insert_ht(D1, E, H),
11484 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-13',
11485 E1),
11486 insert_ht(E1, k(C, E), H),
11487 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-34',
11488 F1),
11489 insert_ht(F1, k(E, F), H),
11490 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-1',
11491 G1),
11492 insert_ht(G1, C, H)
11493 ; true
11494 ),
11495 least_occurrence(E, L),
11496 ( H=suspension(_, active, _, _, _, _, _, _, _)
11497 -> setarg(2, H, inactive),
11498 occurrence___5__1__0__7(B,
11499 C,
11500 D,
11501 E,
11502 F,
11503 G,
11504 H)
11505 ; true
11506 )
11507 ; occurrence___5__1__0__7(B,
11508 C,
11509 D,
11510 E,
11511 F,
11512 G,
11513 H)
11514 ).
11515occurrence___5__1(A, B, C, D, E, F) :-
11516 occurrence___5__2(A, B, C, D, E, F).
11517occurrence___5__2(A, B, C, D, E, F) :-
11518 nb_getval('$chr_store_multi_hash_chr_translate____set_all_passive___1-1',
11519 G),
11520 lookup_ht(G, C, H),
11521 !,
11522 occurrence___5__2__0__29(H,
11523 A,
11524 B,
11525 C,
11526 D,
11527 E,
11528 F).
11529occurrence___5__2__0__29([], A, B, C, D, E, F) :-
11530 occurrence___5__3(A, B, C, D, E, F).
11531occurrence___5__2__0__29([A|B], C, D, E, F, G, H) :-
11532 ( A=suspension(_, active, _, I),
11533 I==E,
11534 J=t(180, A, H),
11535 '$novel_production'(A, J),
11536 '$novel_production'(H, J)
11537 -> '$extend_history'(H, J),
11538 arg(2, H, K),
11539 setarg(2, H, active),
11540 ( K==not_stored_yet
11541 -> nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-15',
11542 L),
11543 insert_ht(L, k(C, G), H),
11544 nb_getval('$chr_store_global_ground_chr_translate____occurrence___5',
11545 M),
11546 N=[H|M],
11547 b_setval('$chr_store_global_ground_chr_translate____occurrence___5',
11548 N),
11549 ( M=[O|_]
11550 -> setarg(4, O, N)
11551 ; true
11552 ),
11553 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-125',
11554 P),
11555 insert_ht(P, k(C, D, G), H),
11556 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-134',
11557 Q),
11558 insert_ht(Q, k(C, E, F), H),
11559 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-12',
11560 R),
11561 insert_ht(R, k(C, D), H),
11562 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-3',
11563 S),
11564 insert_ht(S, E, H),
11565 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-13',
11566 T),
11567 insert_ht(T, k(C, E), H),
11568 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-34',
11569 U),
11570 insert_ht(U, k(E, F), H),
11571 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-1',
11572 V),
11573 insert_ht(V, C, H)
11574 ; true
11575 ),
11576 passive(E, F),
11577 ( H=suspension(_, active, _, _, _, _, _, _, _)
11578 -> setarg(2, H, inactive),
11579 occurrence___5__2__0__29(B,
11580 C,
11581 D,
11582 E,
11583 F,
11584 G,
11585 H)
11586 ; true
11587 )
11588 ; occurrence___5__2__0__29(B,
11589 C,
11590 D,
11591 E,
11592 F,
11593 G,
11594 H)
11595 ).
11596occurrence___5__2(A, B, C, D, E, F) :-
11597 occurrence___5__3(A, B, C, D, E, F).
11598occurrence___5__3(A, B, C, D, E, F) :-
11599 nb_getval('$chr_store_multi_hash_chr_translate____rule___2-1', G),
11600 lookup_ht(G, C, H),
11601 !,
11602 occurrence___5__3__0__30(H,
11603 A,
11604 B,
11605 C,
11606 D,
11607 E,
11608 F).
11609occurrence___5__3__0__30([], A, B, C, D, E, F) :-
11610 occurrence___5__4(A, B, C, D, E, F).
11611occurrence___5__3__0__30([A|B], C, D, E, F, G, H) :-
11612 ( A=suspension(_, active, _, _, I, J),
11613 I==E,
11614 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-13',
11615 K),
11616 lookup_ht(K, k(C, E), L)
11617 -> occurrence___5__3__1__30(L,
11618 J,
11619 A,
11620 B,
11621 C,
11622 D,
11623 E,
11624 F,
11625 G,
11626 H)
11627 ; occurrence___5__3__0__30(B,
11628 C,
11629 D,
11630 E,
11631 F,
11632 G,
11633 H)
11634 ).
11635occurrence___5__3__1__30([], _, _, A, B, C, D, E, F, G) :-
11636 occurrence___5__3__0__30(A,
11637 B,
11638 C,
11639 D,
11640 E,
11641 F,
11642 G).
11643occurrence___5__3__1__30([A|B], C, D, E, F, G, H, I, J, K) :-
11644 ( A=suspension(_, active, _, _, L, M, N, _, _),
11645 L==F,
11646 N==H,
11647 nb_getval('$chr_store_multi_hash_chr_translate____prev_guard_list___6-1',
11648 O),
11649 lookup_ht(O, H, P)
11650 -> occurrence___5__3__2__30(P,
11651 M,
11652 A,
11653 B,
11654 C,
11655 D,
11656 E,
11657 F,
11658 G,
11659 H,
11660 I,
11661 J,
11662 K)
11663 ; occurrence___5__3__1__30(B,
11664 C,
11665 D,
11666 E,
11667 F,
11668 G,
11669 H,
11670 I,
11671 J,
11672 K)
11673 ).
11674occurrence___5__3__2__30([], _, _, A, B, C, D, E, F, G, H, I, J) :-
11675 occurrence___5__3__1__30(A,
11676 B,
11677 C,
11678 D,
11679 E,
11680 F,
11681 G,
11682 H,
11683 I,
11684 J).
11685occurrence___5__3__2__30([A|B], C, D, E, F, G, H, I, J, K, L, M, N) :-
11686 ( A=suspension(_, active, _, _, O, _, _, _, _, _),
11687 O==K,
11688 nb_getval('$chr_store_global_ground_chr_translate____multiple_occ_constraints_checked___1',
11689 P)
11690 -> occurrence___5__3__3__30(P,
11691 A,
11692 B,
11693 C,
11694 D,
11695 E,
11696 F,
11697 G,
11698 H,
11699 I,
11700 J,
11701 K,
11702 L,
11703 M,
11704 N)
11705 ; occurrence___5__3__2__30(B,
11706 C,
11707 D,
11708 E,
11709 F,
11710 G,
11711 H,
11712 I,
11713 J,
11714 K,
11715 L,
11716 M,
11717 N)
11718 ).
11719occurrence___5__3__3__30([], _, A, B, C, D, E, F, G, H, I, J, K, L, M) :-
11720 occurrence___5__3__2__30(A,
11721 B,
11722 C,
11723 D,
11724 E,
11725 F,
11726 G,
11727 H,
11728 I,
11729 J,
11730 K,
11731 L,
11732 M).
11733occurrence___5__3__3__30([A|B], C, D, E, F, G, H, I, J, K, L, M, N, O, P) :-
11734 ( A=suspension(_, active, _, Q),
11735 L<E,
11736 chr_pp_flag(occurrence_subsumption, on),
11737 H=pragma(rule(R, _, _, _), _, _, _, _),
11738 R\==[],
11739 \+ tree_set_memberchk(K, Q)
11740 -> setarg(2, A, removed),
11741 arg(3, A, S),
11742 ( var(S)
11743 -> nb_getval('$chr_store_global_ground_chr_translate____multiple_occ_constraints_checked___1',
11744 T),
11745 T=[_|U],
11746 b_setval('$chr_store_global_ground_chr_translate____multiple_occ_constraints_checked___1',
11747 U),
11748 ( U=[V|_]
11749 -> setarg(3, V, _)
11750 ; true
11751 )
11752 ; S=[_, _|U],
11753 setarg(2, S, U),
11754 ( U=[V|_]
11755 -> setarg(3, V, S)
11756 ; true
11757 )
11758 ),
11759 arg(2, P, W),
11760 setarg(2, P, active),
11761 ( W==not_stored_yet
11762 -> nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-15',
11763 X),
11764 insert_ht(X, k(K, O), P),
11765 nb_getval('$chr_store_global_ground_chr_translate____occurrence___5',
11766 Y),
11767 Z=[P|Y],
11768 b_setval('$chr_store_global_ground_chr_translate____occurrence___5',
11769 Z),
11770 ( Y=[A1|_]
11771 -> setarg(4, A1, Z)
11772 ; true
11773 ),
11774 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-125',
11775 B1),
11776 insert_ht(B1, k(K, L, O), P),
11777 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-134',
11778 C1),
11779 insert_ht(C1, k(K, M, N), P),
11780 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-12',
11781 D1),
11782 insert_ht(D1, k(K, L), P),
11783 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-3',
11784 E1),
11785 insert_ht(E1, M, P),
11786 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-13',
11787 F1),
11788 insert_ht(F1, k(K, M), P),
11789 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-34',
11790 G1),
11791 insert_ht(G1, k(M, N), P),
11792 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-1',
11793 H1),
11794 insert_ht(H1, K, P)
11795 ; true
11796 ),
11797 first_occ_in_rule(M, K, L, N),
11798 tree_set_add(Q, K, I1),
11799 multiple_occ_constraints_checked(I1),
11800 ( P=suspension(_, active, _, _, _, _, _, _, _)
11801 -> setarg(2, P, inactive),
11802 occurrence___5__3__3__30(B,
11803 C,
11804 D,
11805 E,
11806 F,
11807 G,
11808 H,
11809 I,
11810 J,
11811 K,
11812 L,
11813 M,
11814 N,
11815 O,
11816 P)
11817 ; true
11818 )
11819 ; occurrence___5__3__3__30(B,
11820 C,
11821 D,
11822 E,
11823 F,
11824 G,
11825 H,
11826 I,
11827 J,
11828 K,
11829 L,
11830 M,
11831 N,
11832 O,
11833 P)
11834 ).
11835occurrence___5__3(A, B, C, D, E, F) :-
11836 occurrence___5__4(A, B, C, D, E, F).
11837occurrence___5__4(A, B, C, D, E, F) :-
11838 nb_getval('$chr_store_multi_hash_chr_translate____rule___2-1', G),
11839 lookup_ht(G, C, H),
11840 !,
11841 occurrence___5__4__0__31(H,
11842 A,
11843 B,
11844 C,
11845 D,
11846 E,
11847 F).
11848occurrence___5__4__0__31([], A, B, C, D, E, F) :-
11849 occurrence___5__5(A, B, C, D, E, F).
11850occurrence___5__4__0__31([A|B], C, D, E, F, G, H) :-
11851 ( A=suspension(_, active, _, _, I, J),
11852 I==E,
11853 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-13',
11854 K),
11855 lookup_ht(K, k(C, E), L)
11856 -> occurrence___5__4__1__31(L,
11857 J,
11858 A,
11859 B,
11860 C,
11861 D,
11862 E,
11863 F,
11864 G,
11865 H)
11866 ; occurrence___5__4__0__31(B,
11867 C,
11868 D,
11869 E,
11870 F,
11871 G,
11872 H)
11873 ).
11874occurrence___5__4__1__31([], _, _, A, B, C, D, E, F, G) :-
11875 occurrence___5__4__0__31(A,
11876 B,
11877 C,
11878 D,
11879 E,
11880 F,
11881 G).
11882occurrence___5__4__1__31([A|B], C, D, E, F, G, H, I, J, K) :-
11883 ( A=suspension(_, active, _, _, L, M, N, O, _),
11884 L==F,
11885 N==H,
11886 nb_getval('$chr_store_multi_hash_chr_translate____prev_guard_list___6-1',
11887 P),
11888 lookup_ht(P, H, Q)
11889 -> occurrence___5__4__2__31(Q,
11890 M,
11891 O,
11892 A,
11893 B,
11894 C,
11895 D,
11896 E,
11897 F,
11898 G,
11899 H,
11900 I,
11901 J,
11902 K)
11903 ; occurrence___5__4__1__31(B,
11904 C,
11905 D,
11906 E,
11907 F,
11908 G,
11909 H,
11910 I,
11911 J,
11912 K)
11913 ).
11914occurrence___5__4__2__31([], _, _, _, A, B, C, D, E, F, G, H, I, J) :-
11915 occurrence___5__4__1__31(A,
11916 B,
11917 C,
11918 D,
11919 E,
11920 F,
11921 G,
11922 H,
11923 I,
11924 J).
11925occurrence___5__4__2__31([A|B], C, D, E, F, G, H, I, J, K, L, M, N, O) :-
11926 ( A=suspension(_, active, _, _, P, _, _, _, _, _),
11927 P==L,
11928 nb_getval('$chr_store_global_ground_chr_translate____multiple_occ_constraints_checked___1',
11929 Q)
11930 -> occurrence___5__4__3__31(Q,
11931 A,
11932 B,
11933 C,
11934 D,
11935 E,
11936 F,
11937 G,
11938 H,
11939 I,
11940 J,
11941 K,
11942 L,
11943 M,
11944 N,
11945 O)
11946 ; occurrence___5__4__2__31(B,
11947 C,
11948 D,
11949 E,
11950 F,
11951 G,
11952 H,
11953 I,
11954 J,
11955 K,
11956 L,
11957 M,
11958 N,
11959 O)
11960 ).
11961occurrence___5__4__3__31([], _, A, B, C, D, E, F, G, H, I, J, K, L, M, N) :-
11962 occurrence___5__4__2__31(A,
11963 B,
11964 C,
11965 D,
11966 E,
11967 F,
11968 G,
11969 H,
11970 I,
11971 J,
11972 K,
11973 L,
11974 M,
11975 N).
11976occurrence___5__4__3__31([A|B], C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q) :-
11977 ( A=suspension(_, active, _, R),
11978 E<M,
11979 chr_pp_flag(occurrence_subsumption, on),
11980 I=pragma(rule(S, _, _, _), _, _, _, _),
11981 S\==[],
11982 \+ tree_set_memberchk(L, R)
11983 -> setarg(2, A, removed),
11984 arg(3, A, T),
11985 ( var(T)
11986 -> nb_getval('$chr_store_global_ground_chr_translate____multiple_occ_constraints_checked___1',
11987 U),
11988 U=[_|V],
11989 b_setval('$chr_store_global_ground_chr_translate____multiple_occ_constraints_checked___1',
11990 V),
11991 ( V=[W|_]
11992 -> setarg(3, W, _)
11993 ; true
11994 )
11995 ; T=[_, _|V],
11996 setarg(2, T, V),
11997 ( V=[W|_]
11998 -> setarg(3, W, T)
11999 ; true
12000 )
12001 ),
12002 arg(2, Q, X),
12003 setarg(2, Q, active),
12004 ( X==not_stored_yet
12005 -> nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-15',
12006 Y),
12007 insert_ht(Y, k(L, P), Q),
12008 nb_getval('$chr_store_global_ground_chr_translate____occurrence___5',
12009 Z),
12010 A1=[Q|Z],
12011 b_setval('$chr_store_global_ground_chr_translate____occurrence___5',
12012 A1),
12013 ( Z=[B1|_]
12014 -> setarg(4, B1, A1)
12015 ; true
12016 ),
12017 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-125',
12018 C1),
12019 insert_ht(C1, k(L, M, P), Q),
12020 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-134',
12021 D1),
12022 insert_ht(D1, k(L, N, O), Q),
12023 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-12',
12024 E1),
12025 insert_ht(E1, k(L, M), Q),
12026 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-3',
12027 F1),
12028 insert_ht(F1, N, Q),
12029 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-13',
12030 G1),
12031 insert_ht(G1, k(L, N), Q),
12032 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-34',
12033 H1),
12034 insert_ht(H1, k(N, O), Q),
12035 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-1',
12036 I1),
12037 insert_ht(I1, L, Q)
12038 ; true
12039 ),
12040 first_occ_in_rule(N, L, E, F),
12041 tree_set_add(R, L, J1),
12042 multiple_occ_constraints_checked(J1),
12043 ( Q=suspension(_, active, _, _, _, _, _, _, _)
12044 -> setarg(2, Q, inactive),
12045 occurrence___5__4__3__31(B,
12046 C,
12047 D,
12048 E,
12049 F,
12050 G,
12051 H,
12052 I,
12053 J,
12054 K,
12055 L,
12056 M,
12057 N,
12058 O,
12059 P,
12060 Q)
12061 ; true
12062 )
12063 ; occurrence___5__4__3__31(B,
12064 C,
12065 D,
12066 E,
12067 F,
12068 G,
12069 H,
12070 I,
12071 J,
12072 K,
12073 L,
12074 M,
12075 N,
12076 O,
12077 P,
12078 Q)
12079 ).
12080occurrence___5__4(A, B, C, D, E, F) :-
12081 occurrence___5__5(A, B, C, D, E, F).
12082occurrence___5__5(A, B, C, D, E, F) :-
12083 nb_getval('$chr_store_multi_hash_chr_translate____stored___3-123', G),
12084 lookup_ht(G, k(A, B, yes), H),
12085 !,
12086 occurrence___5__5__0__35(H,
12087 A,
12088 B,
12089 C,
12090 D,
12091 E,
12092 F).
12093occurrence___5__5__0__35([], A, B, C, D, E, F) :-
12094 occurrence___5__6(A, B, C, D, E, F).
12095occurrence___5__5__0__35([A|B], C, D, E, F, G, H) :-
12096 ( A=suspension(_, active, I, J, K),
12097 I==C,
12098 J==D,
12099 K=yes,
12100 ( ground(E),
12101 ground(F),
12102 nb_getval('$chr_store_multi_hash_chr_translate____passive___2-12',
12103 L),
12104 lookup_ht(L, k(E, F), M)
12105 ),
12106 member(N, M),
12107 N=suspension(_, active, _, _, _),
12108 ( ground(C),
12109 nb_getval('$chr_store_multi_hash_chr_translate____stored_complete___3-1',
12110 O),
12111 lookup_ht(O, C, P)
12112 ),
12113 member(Q, P),
12114 Q=suspension(_, active, _, _, R, S),
12115 D<R
12116 -> ( setarg(2, A, removed),
12117 nb_getval('$chr_store_multi_hash_chr_translate____stored___3-13',
12118 T),
12119 delete_ht(T, k(C, yes), A),
12120 nb_getval('$chr_store_multi_hash_chr_translate____stored___3-123',
12121 U),
12122 delete_ht(U, k(C, D, yes), A)
12123 ),
12124 setarg(2, Q, removed),
12125 ( nb_getval('$chr_store_multi_hash_chr_translate____stored_complete___3-13',
12126 V),
12127 delete_ht(V, k(C, S), Q)
12128 ),
12129 nb_getval('$chr_store_multi_hash_chr_translate____stored_complete___3-1',
12130 W),
12131 delete_ht(W, C, Q),
12132 arg(2, H, X),
12133 setarg(2, H, active),
12134 ( X==not_stored_yet
12135 -> nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-15',
12136 Y),
12137 insert_ht(Y, k(C, G), H),
12138 nb_getval('$chr_store_global_ground_chr_translate____occurrence___5',
12139 Z),
12140 A1=[H|Z],
12141 b_setval('$chr_store_global_ground_chr_translate____occurrence___5',
12142 A1),
12143 ( Z=[B1|_]
12144 -> setarg(4, B1, A1)
12145 ; true
12146 ),
12147 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-125',
12148 C1),
12149 insert_ht(C1, k(C, D, G), H),
12150 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-134',
12151 D1),
12152 insert_ht(D1, k(C, E, F), H),
12153 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-12',
12154 E1),
12155 insert_ht(E1, k(C, D), H),
12156 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-3',
12157 F1),
12158 insert_ht(F1, E, H),
12159 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-13',
12160 G1),
12161 insert_ht(G1, k(C, E), H),
12162 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-34',
12163 H1),
12164 insert_ht(H1, k(E, F), H),
12165 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-1',
12166 I1),
12167 insert_ht(I1, C, H)
12168 ; true
12169 ),
12170 J1 is S-1,
12171 stored(C, D, maybe),
12172 stored_complete(C, R, J1),
12173 ( H=suspension(_, active, _, _, _, _, _, _, _)
12174 -> setarg(2, H, inactive),
12175 occurrence___5__5__0__35(B,
12176 C,
12177 D,
12178 E,
12179 F,
12180 G,
12181 H)
12182 ; true
12183 )
12184 ; occurrence___5__5__0__35(B,
12185 C,
12186 D,
12187 E,
12188 F,
12189 G,
12190 H)
12191 ).
12192occurrence___5__5(A, B, C, D, E, F) :-
12193 occurrence___5__6(A, B, C, D, E, F).
12194occurrence___5__6(A, B, C, D, E, F) :-
12195 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-3', G),
12196 lookup_ht(G, C, H),
12197 !,
12198 occurrence___5__6__0__36(H,
12199 A,
12200 B,
12201 C,
12202 D,
12203 E,
12204 F).
12205occurrence___5__6__0__36([], A, B, C, D, E, F) :-
12206 occurrence___5__7(A, B, C, D, E, F).
12207occurrence___5__6__0__36([A|B], C, D, E, F, G, H) :-
12208 ( A=suspension(_, active, _, _, I, _, J, _, _),
12209 J==E,
12210 nb_getval('$chr_store_multi_hash_chr_translate____max_occurrence___2-1',
12211 K),
12212 lookup_ht(K, I, L)
12213 -> occurrence___5__6__1__36(L,
12214 I,
12215 A,
12216 B,
12217 C,
12218 D,
12219 E,
12220 F,
12221 G,
12222 H)
12223 ; occurrence___5__6__0__36(B,
12224 C,
12225 D,
12226 E,
12227 F,
12228 G,
12229 H)
12230 ).
12231occurrence___5__6__1__36([], _, _, A, B, C, D, E, F, G) :-
12232 occurrence___5__6__0__36(A,
12233 B,
12234 C,
12235 D,
12236 E,
12237 F,
12238 G).
12239occurrence___5__6__1__36([A|B], C, D, E, F, G, H, I, J, K) :-
12240 ( A=suspension(_, active, _, L, M),
12241 L==C,
12242 nb_getval('$chr_store_multi_hash_chr_translate____stored_complete___3-13',
12243 N),
12244 lookup_ht(N, k(C, 0), O)
12245 -> occurrence___5__6__2__36(O,
12246 M,
12247 A,
12248 B,
12249 C,
12250 D,
12251 E,
12252 F,
12253 G,
12254 H,
12255 I,
12256 J,
12257 K)
12258 ; occurrence___5__6__1__36(B,
12259 C,
12260 D,
12261 E,
12262 F,
12263 G,
12264 H,
12265 I,
12266 J,
12267 K)
12268 ).
12269occurrence___5__6__2__36([], _, _, A, B, C, D, E, F, G, H, I, J) :-
12270 occurrence___5__6__1__36(A,
12271 B,
12272 C,
12273 D,
12274 E,
12275 F,
12276 G,
12277 H,
12278 I,
12279 J).
12280occurrence___5__6__2__36([A|B], C, D, E, F, G, H, I, J, K, L, M, N) :-
12281 ( A=suspension(_, active, _, O, P, Q),
12282 O==F,
12283 Q=0,
12284 R=t(250, N, G, A, D),
12285 '$novel_production'(N, R),
12286 '$novel_production'(G, R),
12287 '$novel_production'(A, R),
12288 '$novel_production'(D, R),
12289 P=<C
12290 -> '$extend_history'(N, R),
12291 arg(2, N, S),
12292 setarg(2, N, active),
12293 ( S==not_stored_yet
12294 -> nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-15',
12295 T),
12296 insert_ht(T, k(I, M), N),
12297 nb_getval('$chr_store_global_ground_chr_translate____occurrence___5',
12298 U),
12299 V=[N|U],
12300 b_setval('$chr_store_global_ground_chr_translate____occurrence___5',
12301 V),
12302 ( U=[W|_]
12303 -> setarg(4, W, V)
12304 ; true
12305 ),
12306 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-125',
12307 X),
12308 insert_ht(X, k(I, J, M), N),
12309 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-134',
12310 Y),
12311 insert_ht(Y, k(I, K, L), N),
12312 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-12',
12313 Z),
12314 insert_ht(Z, k(I, J), N),
12315 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-3',
12316 A1),
12317 insert_ht(A1, K, N),
12318 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-13',
12319 B1),
12320 insert_ht(B1, k(I, K), N),
12321 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-34',
12322 C1),
12323 insert_ht(C1, k(K, L), N),
12324 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-1',
12325 D1),
12326 insert_ht(D1, I, N)
12327 ; true
12328 ),
12329 passive(K, L),
12330 ( N=suspension(_, active, _, _, _, _, _, _, _)
12331 -> setarg(2, N, inactive),
12332 occurrence___5__6__2__36(B,
12333 C,
12334 D,
12335 E,
12336 F,
12337 G,
12338 H,
12339 I,
12340 J,
12341 K,
12342 L,
12343 M,
12344 N)
12345 ; true
12346 )
12347 ; occurrence___5__6__2__36(B,
12348 C,
12349 D,
12350 E,
12351 F,
12352 G,
12353 H,
12354 I,
12355 J,
12356 K,
12357 L,
12358 M,
12359 N)
12360 ).
12361occurrence___5__6(A, B, C, D, E, F) :-
12362 occurrence___5__7(A, B, C, D, E, F).
12363occurrence___5__7(A, B, C, D, E, F) :-
12364 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-3', G),
12365 lookup_ht(G, C, H),
12366 !,
12367 occurrence___5__7__0__37(H,
12368 A,
12369 B,
12370 C,
12371 D,
12372 E,
12373 F).
12374occurrence___5__7__0__37([], A, B, C, D, E, F) :-
12375 occurrence___5__8(A, B, C, D, E, F).
12376occurrence___5__7__0__37([A|B], C, D, E, F, G, H) :-
12377 ( A=suspension(_, active, _, _, _, _, I, J, _),
12378 I==E,
12379 nb_getval('$chr_store_multi_hash_chr_translate____max_occurrence___2-1',
12380 K),
12381 lookup_ht(K, C, L)
12382 -> occurrence___5__7__1__37(L,
12383 J,
12384 A,
12385 B,
12386 C,
12387 D,
12388 E,
12389 F,
12390 G,
12391 H)
12392 ; occurrence___5__7__0__37(B,
12393 C,
12394 D,
12395 E,
12396 F,
12397 G,
12398 H)
12399 ).
12400occurrence___5__7__1__37([], _, _, A, B, C, D, E, F, G) :-
12401 occurrence___5__7__0__37(A,
12402 B,
12403 C,
12404 D,
12405 E,
12406 F,
12407 G).
12408occurrence___5__7__1__37([A|B], C, D, E, F, G, H, I, J, K) :-
12409 ( A=suspension(_, active, _, L, M),
12410 L==F,
12411 nb_getval('$chr_store_multi_hash_chr_translate____stored_complete___3-13',
12412 N),
12413 lookup_ht(N, k(F, 0), O)
12414 -> occurrence___5__7__2__37(O,
12415 M,
12416 A,
12417 B,
12418 C,
12419 D,
12420 E,
12421 F,
12422 G,
12423 H,
12424 I,
12425 J,
12426 K)
12427 ; occurrence___5__7__1__37(B,
12428 C,
12429 D,
12430 E,
12431 F,
12432 G,
12433 H,
12434 I,
12435 J,
12436 K)
12437 ).
12438occurrence___5__7__2__37([], _, _, A, B, C, D, E, F, G, H, I, J) :-
12439 occurrence___5__7__1__37(A,
12440 B,
12441 C,
12442 D,
12443 E,
12444 F,
12445 G,
12446 H,
12447 I,
12448 J).
12449occurrence___5__7__2__37([A|B], C, D, E, F, G, H, I, J, K, L, M, N) :-
12450 ( A=suspension(_, active, _, O, P, Q),
12451 O==I,
12452 Q=0,
12453 R=t(250, G, N, A, D),
12454 '$novel_production'(G, R),
12455 '$novel_production'(N, R),
12456 '$novel_production'(A, R),
12457 '$novel_production'(D, R),
12458 P=<C
12459 -> '$extend_history'(N, R),
12460 arg(2, N, S),
12461 setarg(2, N, active),
12462 ( S==not_stored_yet
12463 -> nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-15',
12464 T),
12465 insert_ht(T, k(I, M), N),
12466 nb_getval('$chr_store_global_ground_chr_translate____occurrence___5',
12467 U),
12468 V=[N|U],
12469 b_setval('$chr_store_global_ground_chr_translate____occurrence___5',
12470 V),
12471 ( U=[W|_]
12472 -> setarg(4, W, V)
12473 ; true
12474 ),
12475 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-125',
12476 X),
12477 insert_ht(X, k(I, J, M), N),
12478 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-134',
12479 Y),
12480 insert_ht(Y, k(I, K, L), N),
12481 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-12',
12482 Z),
12483 insert_ht(Z, k(I, J), N),
12484 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-3',
12485 A1),
12486 insert_ht(A1, K, N),
12487 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-13',
12488 B1),
12489 insert_ht(B1, k(I, K), N),
12490 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-34',
12491 C1),
12492 insert_ht(C1, k(K, L), N),
12493 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-1',
12494 D1),
12495 insert_ht(D1, I, N)
12496 ; true
12497 ),
12498 passive(K, F),
12499 ( N=suspension(_, active, _, _, _, _, _, _, _)
12500 -> setarg(2, N, inactive),
12501 occurrence___5__7__2__37(B,
12502 C,
12503 D,
12504 E,
12505 F,
12506 G,
12507 H,
12508 I,
12509 J,
12510 K,
12511 L,
12512 M,
12513 N)
12514 ; true
12515 )
12516 ; occurrence___5__7__2__37(B,
12517 C,
12518 D,
12519 E,
12520 F,
12521 G,
12522 H,
12523 I,
12524 J,
12525 K,
12526 L,
12527 M,
12528 N)
12529 ).
12530occurrence___5__7(A, B, C, D, E, F) :-
12531 occurrence___5__8(A, B, C, D, E, F).
12532occurrence___5__8(A, B, C, D, E, F) :-
12533 nb_getval('$chr_store_multi_hash_chr_translate____stored_complete___3-1',
12534 G),
12535 lookup_ht(G, A, H),
12536 !,
12537 occurrence___5__8__0__38(H,
12538 A,
12539 B,
12540 C,
12541 D,
12542 E,
12543 F).
12544occurrence___5__8__0__38([], A, B, C, D, E, F) :-
12545 occurrence___5__9(A, B, C, D, E, F).
12546occurrence___5__8__0__38([A|B], C, D, E, F, G, H) :-
12547 ( A=suspension(_, active, _, I, J, _),
12548 I==C,
12549 K=t(259, A, H),
12550 '$novel_production'(A, K),
12551 '$novel_production'(H, K),
12552 D>J
12553 -> '$extend_history'(H, K),
12554 arg(2, H, L),
12555 setarg(2, H, active),
12556 ( L==not_stored_yet
12557 -> nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-15',
12558 M),
12559 insert_ht(M, k(C, G), H),
12560 nb_getval('$chr_store_global_ground_chr_translate____occurrence___5',
12561 N),
12562 O=[H|N],
12563 b_setval('$chr_store_global_ground_chr_translate____occurrence___5',
12564 O),
12565 ( N=[P|_]
12566 -> setarg(4, P, O)
12567 ; true
12568 ),
12569 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-125',
12570 Q),
12571 insert_ht(Q, k(C, D, G), H),
12572 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-134',
12573 R),
12574 insert_ht(R, k(C, E, F), H),
12575 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-12',
12576 S),
12577 insert_ht(S, k(C, D), H),
12578 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-3',
12579 T),
12580 insert_ht(T, E, H),
12581 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-13',
12582 U),
12583 insert_ht(U, k(C, E), H),
12584 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-34',
12585 V),
12586 insert_ht(V, k(E, F), H),
12587 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-1',
12588 W),
12589 insert_ht(W, C, H)
12590 ; true
12591 ),
12592 passive(E, F),
12593 ( H=suspension(_, active, _, _, _, _, _, _, _)
12594 -> setarg(2, H, inactive),
12595 occurrence___5__8__0__38(B,
12596 C,
12597 D,
12598 E,
12599 F,
12600 G,
12601 H)
12602 ; true
12603 )
12604 ; occurrence___5__8__0__38(B,
12605 C,
12606 D,
12607 E,
12608 F,
12609 G,
12610 H)
12611 ).
12612occurrence___5__8(A, B, C, D, E, F) :-
12613 occurrence___5__9(A, B, C, D, E, F).
12614occurrence___5__9(A, B, C, D, E, F) :-
12615 nb_getval('$chr_store_multi_hash_chr_translate____functional_dependency___4-12',
12616 G),
12617 lookup_ht(G, k(A, C), H),
12618 !,
12619 occurrence___5__9__0__42(H,
12620 A,
12621 B,
12622 C,
12623 D,
12624 E,
12625 F).
12626occurrence___5__9__0__42([], A, B, C, D, E, F) :-
12627 occurrence___5__10(A, B, C, D, E, F).
12628occurrence___5__9__0__42([A|B], C, D, E, F, G, H) :-
12629 ( A=suspension(_, active, I, J, K, L),
12630 I==C,
12631 J==E,
12632 E>1,
12633 ( ground(C),
12634 nb_getval('$chr_store_multi_hash_chr_translate____allocation_occurrence___2-1',
12635 M),
12636 lookup_ht(M, C, N)
12637 ),
12638 member(O, N),
12639 O=suspension(_, active, _, _, P),
12640 P>D
12641 -> setarg(2, A, removed),
12642 ( nb_getval('$chr_store_multi_hash_chr_translate____functional_dependency___4-1',
12643 Q),
12644 delete_ht(Q, C, A)
12645 ),
12646 nb_getval('$chr_store_multi_hash_chr_translate____functional_dependency___4-12',
12647 R),
12648 delete_ht(R, k(C, E), A),
12649 arg(2, H, S),
12650 setarg(2, H, active),
12651 ( S==not_stored_yet
12652 -> nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-15',
12653 T),
12654 insert_ht(T, k(C, G), H),
12655 nb_getval('$chr_store_global_ground_chr_translate____occurrence___5',
12656 U),
12657 V=[H|U],
12658 b_setval('$chr_store_global_ground_chr_translate____occurrence___5',
12659 V),
12660 ( U=[W|_]
12661 -> setarg(4, W, V)
12662 ; true
12663 ),
12664 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-125',
12665 X),
12666 insert_ht(X, k(C, D, G), H),
12667 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-134',
12668 Y),
12669 insert_ht(Y, k(C, E, F), H),
12670 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-12',
12671 Z),
12672 insert_ht(Z, k(C, D), H),
12673 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-3',
12674 A1),
12675 insert_ht(A1, E, H),
12676 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-13',
12677 B1),
12678 insert_ht(B1, k(C, E), H),
12679 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-34',
12680 C1),
12681 insert_ht(C1, k(E, F), H),
12682 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-1',
12683 D1),
12684 insert_ht(D1, C, H)
12685 ; true
12686 ),
12687 functional_dependency(C, 1, K, L),
12688 ( H=suspension(_, active, _, _, _, _, _, _, _)
12689 -> setarg(2, H, inactive),
12690 occurrence___5__9__0__42(B,
12691 C,
12692 D,
12693 E,
12694 F,
12695 G,
12696 H)
12697 ; true
12698 )
12699 ; occurrence___5__9__0__42(B,
12700 C,
12701 D,
12702 E,
12703 F,
12704 G,
12705 H)
12706 ).
12707occurrence___5__9(A, B, C, D, E, F) :-
12708 occurrence___5__10(A, B, C, D, E, F).
12709occurrence___5__10(A, B, C, D, E, F) :-
12710 nb_getval('$chr_store_multi_hash_chr_translate____constraint_mode___2-1',
12711 G),
12712 lookup_ht(G, A, H),
12713 !,
12714 occurrence___5__10__0__48(H,
12715 A,
12716 B,
12717 C,
12718 D,
12719 E,
12720 F).
12721occurrence___5__10__0__48([], A, B, C, D, E, F) :-
12722 occurrence___5__11(A, B, C, D, E, F).
12723occurrence___5__10__0__48([A|B], C, D, E, F, G, H) :-
12724 ( A=suspension(_, active, _, _, I, J),
12725 I==C,
12726 nb_getval('$chr_store_global_ground_chr_translate____partial_wake_analysis___0',
12727 K)
12728 -> occurrence___5__10__1__48(K,
12729 J,
12730 A,
12731 B,
12732 C,
12733 D,
12734 E,
12735 F,
12736 G,
12737 H)
12738 ; occurrence___5__10__0__48(B,
12739 C,
12740 D,
12741 E,
12742 F,
12743 G,
12744 H)
12745 ).
12746occurrence___5__10__1__48([], _, _, A, B, C, D, E, F, G) :-
12747 occurrence___5__10__0__48(A,
12748 B,
12749 C,
12750 D,
12751 E,
12752 F,
12753 G).
12754occurrence___5__10__1__48([A|B], C, D, E, F, G, H, I, J, K) :-
12755 ( A=suspension(_, active, _, _),
12756 nb_getval('$chr_store_multi_hash_chr_translate____rule___2-1', L),
12757 lookup_ht(L, H, M)
12758 -> occurrence___5__10__2__48(M,
12759 A,
12760 B,
12761 C,
12762 D,
12763 E,
12764 F,
12765 G,
12766 H,
12767 I,
12768 J,
12769 K)
12770 ; occurrence___5__10__1__48(B,
12771 C,
12772 D,
12773 E,
12774 F,
12775 G,
12776 H,
12777 I,
12778 J,
12779 K)
12780 ).
12781occurrence___5__10__2__48([], _, A, B, C, D, E, F, G, H, I, J) :-
12782 occurrence___5__10__1__48(A,
12783 B,
12784 C,
12785 D,
12786 E,
12787 F,
12788 G,
12789 H,
12790 I,
12791 J).
12792occurrence___5__10__2__48([A|B], C, D, E, F, G, H, I, J, K, L, M) :-
12793 ( A=suspension(_, active, _, _, N, O),
12794 N==J,
12795 P=t(330, C, M, A, F),
12796 '$novel_production'(C, P),
12797 '$novel_production'(M, P),
12798 '$novel_production'(A, P),
12799 '$novel_production'(F, P)
12800 -> '$extend_history'(M, P),
12801 arg(2, M, Q),
12802 setarg(2, M, active),
12803 ( Q==not_stored_yet
12804 -> nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-15',
12805 R),
12806 insert_ht(R, k(H, L), M),
12807 nb_getval('$chr_store_global_ground_chr_translate____occurrence___5',
12808 S),
12809 T=[M|S],
12810 b_setval('$chr_store_global_ground_chr_translate____occurrence___5',
12811 T),
12812 ( S=[U|_]
12813 -> setarg(4, U, T)
12814 ; true
12815 ),
12816 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-125',
12817 V),
12818 insert_ht(V, k(H, I, L), M),
12819 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-134',
12820 W),
12821 insert_ht(W, k(H, J, K), M),
12822 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-12',
12823 X),
12824 insert_ht(X, k(H, I), M),
12825 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-3',
12826 Y),
12827 insert_ht(Y, J, M),
12828 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-13',
12829 Z),
12830 insert_ht(Z, k(H, J), M),
12831 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-34',
12832 A1),
12833 insert_ht(A1, k(J, K), M),
12834 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-1',
12835 B1),
12836 insert_ht(B1, H, M)
12837 ; true
12838 ),
12839 O=pragma(rule(C1, D1, E1, _), _, _, _, _),
12840 ( is_passive(J, K)
12841 -> true
12842 ; L==simplification
12843 -> select(F1, C1, _),
12844 F1=..[_|G1],
12845 term_variables(E1, H1),
12846 partial_wake_args(G1, E, H1, H)
12847 ; select(F1, D1, _),
12848 F1=..[_|G1],
12849 term_variables(E1, H1),
12850 partial_wake_args(G1, E, H1, H)
12851 ),
12852 ( M=suspension(_, active, _, _, _, _, _, _, _)
12853 -> setarg(2, M, inactive),
12854 occurrence___5__10__2__48(B,
12855 C,
12856 D,
12857 E,
12858 F,
12859 G,
12860 H,
12861 I,
12862 J,
12863 K,
12864 L,
12865 M)
12866 ; true
12867 )
12868 ; occurrence___5__10__2__48(B,
12869 C,
12870 D,
12871 E,
12872 F,
12873 G,
12874 H,
12875 I,
12876 J,
12877 K,
12878 L,
12879 M)
12880 ).
12881occurrence___5__10(A, B, C, D, E, F) :-
12882 occurrence___5__11(A, B, C, D, E, F).
12883occurrence___5__11(A, B, C, D, E, F) :-
12884 nb_getval('$chr_store_multi_hash_chr_translate____passive___2-12', G),
12885 lookup_ht(G, k(C, D), H),
12886 !,
12887 occurrence___5__11__0__50(H,
12888 A,
12889 B,
12890 C,
12891 D,
12892 E,
12893 F).
12894occurrence___5__11__0__50([], A, B, C, D, E, F) :-
12895 occurrence___5__12(A, B, C, D, E, F).
12896occurrence___5__11__0__50([A|B], C, D, E, F, G, H) :-
12897 ( A=suspension(_, active, _, I, J),
12898 I==E,
12899 J==F,
12900 nb_getval('$chr_store_multi_hash_chr_translate____skip_to_next_id___2-12',
12901 K),
12902 lookup_ht(K, k(C, D), L)
12903 -> occurrence___5__11__1__50(L,
12904 A,
12905 B,
12906 C,
12907 D,
12908 E,
12909 F,
12910 G,
12911 H)
12912 ; occurrence___5__11__0__50(B,
12913 C,
12914 D,
12915 E,
12916 F,
12917 G,
12918 H)
12919 ).
12920occurrence___5__11__1__50([], _, A, B, C, D, E, F, G) :-
12921 occurrence___5__11__0__50(A,
12922 B,
12923 C,
12924 D,
12925 E,
12926 F,
12927 G).
12928occurrence___5__11__1__50([A|B], C, D, E, F, G, H, I, J) :-
12929 ( A=suspension(_, active, _, K, L),
12930 K==E,
12931 L==F,
12932 M=t(362, J, C, A),
12933 '$novel_production'(J, M),
12934 '$novel_production'(C, M),
12935 '$novel_production'(A, M),
12936 F>1
12937 -> '$extend_history'(J, M),
12938 arg(2, J, N),
12939 setarg(2, J, active),
12940 ( N==not_stored_yet
12941 -> nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-15',
12942 O),
12943 insert_ht(O, k(E, I), J),
12944 nb_getval('$chr_store_global_ground_chr_translate____occurrence___5',
12945 P),
12946 Q=[J|P],
12947 b_setval('$chr_store_global_ground_chr_translate____occurrence___5',
12948 Q),
12949 ( P=[R|_]
12950 -> setarg(4, R, Q)
12951 ; true
12952 ),
12953 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-125',
12954 S),
12955 insert_ht(S, k(E, F, I), J),
12956 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-134',
12957 T),
12958 insert_ht(T, k(E, G, H), J),
12959 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-12',
12960 U),
12961 insert_ht(U, k(E, F), J),
12962 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-3',
12963 V),
12964 insert_ht(V, G, J),
12965 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-13',
12966 W),
12967 insert_ht(W, k(E, G), J),
12968 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-34',
12969 X),
12970 insert_ht(X, k(G, H), J),
12971 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-1',
12972 Y),
12973 insert_ht(Y, E, J)
12974 ; true
12975 ),
12976 Z is F-1,
12977 skip_to_next_id(E, Z),
12978 ( J=suspension(_, active, _, _, _, _, _, _, _)
12979 -> setarg(2, J, inactive),
12980 occurrence___5__11__1__50(B,
12981 C,
12982 D,
12983 E,
12984 F,
12985 G,
12986 H,
12987 I,
12988 J)
12989 ; true
12990 )
12991 ; occurrence___5__11__1__50(B,
12992 C,
12993 D,
12994 E,
12995 F,
12996 G,
12997 H,
12998 I,
12999 J)
13000 ).
13001occurrence___5__11(A, B, C, D, E, F) :-
13002 occurrence___5__12(A, B, C, D, E, F).
13003occurrence___5__12(A, B, C, D, E, F) :-
13004 nb_getval('$chr_store_multi_hash_chr_translate____set_occurrence_code_id___3-12',
13005 G),
13006 lookup_ht(G, k(A, B), H),
13007 !,
13008 occurrence___5__12__0__51(H,
13009 A,
13010 B,
13011 C,
13012 D,
13013 E,
13014 F).
13015occurrence___5__12__0__51([], A, B, C, D, E, F) :-
13016 occurrence___5__13(A, B, C, D, E, F).
13017occurrence___5__12__0__51([A|B], C, D, E, F, G, H) :-
13018 ( A=suspension(_, active, I, J, K),
13019 I==C,
13020 J==D,
13021 ( ground(E),
13022 ground(F)
13023 ),
13024 nb_getval('$chr_store_multi_hash_chr_translate____passive___2-12',
13025 L),
13026 lookup_ht(L, k(E, F), M),
13027 member(N, M),
13028 N=suspension(_, active, _, _, _)
13029 -> setarg(2, A, removed),
13030 nb_getval('$chr_store_multi_hash_chr_translate____set_occurrence_code_id___3-12',
13031 O),
13032 delete_ht(O, k(C, D), A),
13033 arg(2, H, P),
13034 setarg(2, H, active),
13035 ( P==not_stored_yet
13036 -> nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-15',
13037 Q),
13038 insert_ht(Q, k(C, G), H),
13039 nb_getval('$chr_store_global_ground_chr_translate____occurrence___5',
13040 R),
13041 S=[H|R],
13042 b_setval('$chr_store_global_ground_chr_translate____occurrence___5',
13043 S),
13044 ( R=[T|_]
13045 -> setarg(4, T, S)
13046 ; true
13047 ),
13048 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-125',
13049 U),
13050 insert_ht(U, k(C, D, G), H),
13051 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-134',
13052 V),
13053 insert_ht(V, k(C, E, F), H),
13054 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-12',
13055 W),
13056 insert_ht(W, k(C, D), H),
13057 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-3',
13058 X),
13059 insert_ht(X, E, H),
13060 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-13',
13061 Y),
13062 insert_ht(Y, k(C, E), H),
13063 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-34',
13064 Z),
13065 insert_ht(Z, k(E, F), H),
13066 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-1',
13067 A1),
13068 insert_ht(A1, C, H)
13069 ; true
13070 ),
13071 occurrence_code_id(C, D, K),
13072 B1 is D+1,
13073 set_occurrence_code_id(C, B1, K),
13074 ( H=suspension(_, active, _, _, _, _, _, _, _)
13075 -> setarg(2, H, inactive),
13076 occurrence___5__12__0__51(B,
13077 C,
13078 D,
13079 E,
13080 F,
13081 G,
13082 H)
13083 ; true
13084 )
13085 ; occurrence___5__12__0__51(B,
13086 C,
13087 D,
13088 E,
13089 F,
13090 G,
13091 H)
13092 ).
13093occurrence___5__12(A, B, C, D, E, F) :-
13094 occurrence___5__13(A, B, C, D, E, F).
13095occurrence___5__13(A, B, C, D, simplification, E) :-
13096 nb_getval('$chr_store_multi_hash_chr_translate____set_occurrence_code_id___3-12',
13097 F),
13098 lookup_ht(F, k(A, B), G),
13099 !,
13100 occurrence___5__13__0__52(G,
13101 A,
13102 B,
13103 C,
13104 D,
13105 simplification,
13106 E).
13107occurrence___5__13__0__52([], A, B, C, D, E, F) :-
13108 occurrence___5__15(A, B, C, D, E, F).
13109occurrence___5__13__0__52([A|B], C, D, E, F, G, H) :-
13110 ( A=suspension(_, active, I, J, K),
13111 I==C,
13112 J==D
13113 -> setarg(2, A, removed),
13114 nb_getval('$chr_store_multi_hash_chr_translate____set_occurrence_code_id___3-12',
13115 L),
13116 delete_ht(L, k(C, D), A),
13117 arg(2, H, M),
13118 setarg(2, H, active),
13119 ( M==not_stored_yet
13120 -> nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-15',
13121 N),
13122 insert_ht(N, k(C, G), H),
13123 nb_getval('$chr_store_global_ground_chr_translate____occurrence___5',
13124 O),
13125 P=[H|O],
13126 b_setval('$chr_store_global_ground_chr_translate____occurrence___5',
13127 P),
13128 ( O=[Q|_]
13129 -> setarg(4, Q, P)
13130 ; true
13131 ),
13132 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-125',
13133 R),
13134 insert_ht(R, k(C, D, G), H),
13135 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-134',
13136 S),
13137 insert_ht(S, k(C, E, F), H),
13138 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-12',
13139 T),
13140 insert_ht(T, k(C, D), H),
13141 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-3',
13142 U),
13143 insert_ht(U, E, H),
13144 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-13',
13145 V),
13146 insert_ht(V, k(C, E), H),
13147 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-34',
13148 W),
13149 insert_ht(W, k(E, F), H),
13150 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-1',
13151 X),
13152 insert_ht(X, C, H)
13153 ; true
13154 ),
13155 occurrence_code_id(C, D, K),
13156 Y is D+1,
13157 set_occurrence_code_id(C, Y, K),
13158 ( H=suspension(_, active, _, _, _, _, _, _, _)
13159 -> setarg(2, H, inactive),
13160 occurrence___5__13__0__52(B,
13161 C,
13162 D,
13163 E,
13164 F,
13165 G,
13166 H)
13167 ; true
13168 )
13169 ; occurrence___5__13__0__52(B,
13170 C,
13171 D,
13172 E,
13173 F,
13174 G,
13175 H)
13176 ).
13177occurrence___5__13(A, B, C, D, propagation, E) :-
13178 nb_getval('$chr_store_multi_hash_chr_translate____set_occurrence_code_id___3-12',
13179 F),
13180 lookup_ht(F, k(A, B), G),
13181 !,
13182 occurrence___5__13__0__53(G,
13183 A,
13184 B,
13185 C,
13186 D,
13187 propagation,
13188 E).
13189occurrence___5__13__0__53([], A, B, C, D, E, F) :-
13190 occurrence___5__14(A, B, C, D, E, F).
13191occurrence___5__13__0__53([A|B], C, D, E, F, G, H) :-
13192 ( A=suspension(_, active, I, J, K),
13193 I==C,
13194 J==D,
13195 ( ground(C),
13196 ground(D)
13197 ),
13198 nb_getval('$chr_store_multi_hash_chr_translate____skip_to_next_id___2-12',
13199 L),
13200 lookup_ht(L, k(C, D), M),
13201 member(N, M),
13202 N=suspension(_, active, _, _, _)
13203 -> setarg(2, A, removed),
13204 nb_getval('$chr_store_multi_hash_chr_translate____set_occurrence_code_id___3-12',
13205 O),
13206 delete_ht(O, k(C, D), A),
13207 arg(2, H, P),
13208 setarg(2, H, active),
13209 ( P==not_stored_yet
13210 -> nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-15',
13211 Q),
13212 insert_ht(Q, k(C, G), H),
13213 nb_getval('$chr_store_global_ground_chr_translate____occurrence___5',
13214 R),
13215 S=[H|R],
13216 b_setval('$chr_store_global_ground_chr_translate____occurrence___5',
13217 S),
13218 ( R=[T|_]
13219 -> setarg(4, T, S)
13220 ; true
13221 ),
13222 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-125',
13223 U),
13224 insert_ht(U, k(C, D, G), H),
13225 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-134',
13226 V),
13227 insert_ht(V, k(C, E, F), H),
13228 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-12',
13229 W),
13230 insert_ht(W, k(C, D), H),
13231 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-3',
13232 X),
13233 insert_ht(X, E, H),
13234 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-13',
13235 Y),
13236 insert_ht(Y, k(C, E), H),
13237 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-34',
13238 Z),
13239 insert_ht(Z, k(E, F), H),
13240 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-1',
13241 A1),
13242 insert_ht(A1, C, H)
13243 ; true
13244 ),
13245 occurrence_code_id(C, D, K),
13246 B1 is D+1,
13247 C1 is K+1,
13248 set_occurrence_code_id(C, B1, C1),
13249 ( H=suspension(_, active, _, _, _, _, _, _, _)
13250 -> setarg(2, H, inactive),
13251 occurrence___5__13__0__53(B,
13252 C,
13253 D,
13254 E,
13255 F,
13256 G,
13257 H)
13258 ; true
13259 )
13260 ; occurrence___5__13__0__53(B,
13261 C,
13262 D,
13263 E,
13264 F,
13265 G,
13266 H)
13267 ).
13268occurrence___5__13(A, B, C, D, E, F) :-
13269 occurrence___5__14(A, B, C, D, E, F).
13270occurrence___5__14(A, B, C, D, propagation, E) :-
13271 nb_getval('$chr_store_multi_hash_chr_translate____set_occurrence_code_id___3-12',
13272 F),
13273 lookup_ht(F, k(A, B), G),
13274 !,
13275 occurrence___5__14__0__54(G,
13276 A,
13277 B,
13278 C,
13279 D,
13280 propagation,
13281 E).
13282occurrence___5__14__0__54([], A, B, C, D, E, F) :-
13283 occurrence___5__15(A, B, C, D, E, F).
13284occurrence___5__14__0__54([A|B], C, D, E, F, G, H) :-
13285 ( A=suspension(_, active, I, J, K),
13286 I==C,
13287 J==D
13288 -> setarg(2, A, removed),
13289 nb_getval('$chr_store_multi_hash_chr_translate____set_occurrence_code_id___3-12',
13290 L),
13291 delete_ht(L, k(C, D), A),
13292 arg(2, H, M),
13293 setarg(2, H, active),
13294 ( M==not_stored_yet
13295 -> nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-15',
13296 N),
13297 insert_ht(N, k(C, G), H),
13298 nb_getval('$chr_store_global_ground_chr_translate____occurrence___5',
13299 O),
13300 P=[H|O],
13301 b_setval('$chr_store_global_ground_chr_translate____occurrence___5',
13302 P),
13303 ( O=[Q|_]
13304 -> setarg(4, Q, P)
13305 ; true
13306 ),
13307 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-125',
13308 R),
13309 insert_ht(R, k(C, D, G), H),
13310 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-134',
13311 S),
13312 insert_ht(S, k(C, E, F), H),
13313 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-12',
13314 T),
13315 insert_ht(T, k(C, D), H),
13316 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-3',
13317 U),
13318 insert_ht(U, E, H),
13319 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-13',
13320 V),
13321 insert_ht(V, k(C, E), H),
13322 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-34',
13323 W),
13324 insert_ht(W, k(E, F), H),
13325 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-1',
13326 X),
13327 insert_ht(X, C, H)
13328 ; true
13329 ),
13330 occurrence_code_id(C, D, K),
13331 Y is D+1,
13332 set_occurrence_code_id(C, Y, K),
13333 ( H=suspension(_, active, _, _, _, _, _, _, _)
13334 -> setarg(2, H, inactive),
13335 occurrence___5__14__0__54(B,
13336 C,
13337 D,
13338 E,
13339 F,
13340 G,
13341 H)
13342 ; true
13343 )
13344 ; occurrence___5__14__0__54(B,
13345 C,
13346 D,
13347 E,
13348 F,
13349 G,
13350 H)
13351 ).
13352occurrence___5__14(A, B, C, D, E, F) :-
13353 occurrence___5__15(A, B, C, D, E, F).
13354occurrence___5__15(A, B, C, D, E, F) :-
13355 arg(2, F, G),
13356 setarg(2, F, active),
13357 ( G==not_stored_yet
13358 -> nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-15',
13359 H),
13360 insert_ht(H, k(A, E), F),
13361 nb_getval('$chr_store_global_ground_chr_translate____occurrence___5',
13362 I),
13363 J=[F|I],
13364 b_setval('$chr_store_global_ground_chr_translate____occurrence___5',
13365 J),
13366 ( I=[K|_]
13367 -> setarg(4, K, J)
13368 ; true
13369 ),
13370 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-125',
13371 L),
13372 insert_ht(L, k(A, B, E), F),
13373 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-134',
13374 M),
13375 insert_ht(M, k(A, C, D), F),
13376 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-12',
13377 N),
13378 insert_ht(N, k(A, B), F),
13379 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-3',
13380 O),
13381 insert_ht(O, C, F),
13382 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-13',
13383 P),
13384 insert_ht(P, k(A, C), F),
13385 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-34',
13386 Q),
13387 insert_ht(Q, k(C, D), F),
13388 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-1',
13389 R),
13390 insert_ht(R, A, F)
13391 ; true
13392 ).
13393get_occurrence(A, B, C, D) :-
13394 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-12',
13395 E),
13396 lookup_ht(E, k(A, B), F),
13397 member(G, F),
13398 G=suspension(_, active, _, _, _, _, H, I, _),
13399 !,
13400 H=C,
13401 I=D.
13402get_occurrence(A, B, _, _) :-
13403 chr_error(internal,
13404 'get_occurrence: missing occurrence ~w:~w\n',
13405 [A, B]).
13406get_occurrence(A, B, C, D, E) :-
13407 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-12',
13408 F),
13409 lookup_ht(F, k(A, B), G),
13410 member(H, G),
13411 H=suspension(_, active, _, _, _, _, I, J, K),
13412 !,
13413 I=C,
13414 J=D,
13415 K=E.
13416get_occurrence(A, B, _, _, _) :-
13417 chr_error(internal,
13418 'get_occurrence: missing occurrence ~w:~w\n',
13419 [A, B]).
13420get_occurrence_from_id(A, B, C, D) :-
13421 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-34',
13422 E),
13423 lookup_ht(E, k(C, D), F),
13424 member(G, F),
13425 G=suspension(_, active, _, _, H, I, _, _, _),
13426 !,
13427 A=H,
13428 B=I.
13429get_occurrence_from_id(_, _, _, _) :-
13430 chr_error(internal, 'get_occurrence_from_id: missing occurrence ~w:~w\n', []).
13431max_occurrence(A, B) :-
13432 max_occurrence___2__0(A, B, _).
13433max_occurrence___2__0(A, B, C) :-
13434 nb_getval('$chr_store_multi_hash_chr_translate____max_occurrence___2-1',
13435 D),
13436 lookup_ht(D, A, E),
13437 ( member(F, E),
13438 F=suspension(_, active, _, _, G),
13439 G>=B,
13440 !
13441 ; !,
13442 max_occurrence___2__0__0__2(E, A, B, C)
13443 ).
13444max_occurrence___2__0__0__2([], A, B, C) :-
13445 max_occurrence___2__1(A, B, C).
13446max_occurrence___2__0__0__2([A|B], C, D, E) :-
13447 ( A=suspension(_, active, _, F, G),
13448 F==C,
13449 D>=G
13450 -> setarg(2, A, removed),
13451 nb_getval('$chr_store_multi_hash_chr_translate____max_occurrence___2-1',
13452 H),
13453 delete_ht(H, C, A),
13454 max_occurrence___2__0__0__2(B, C, D, E)
13455 ; max_occurrence___2__0__0__2(B, C, D, E)
13456 ).
13457max_occurrence___2__0(A, B, C) :-
13458 max_occurrence___2__1(A, B, C).
13459max_occurrence___2__1(A, B, C) :-
13460 nb_getval('$chr_store_multi_hash_chr_translate____stored_complete___3-13',
13461 D),
13462 lookup_ht(D, k(A, 0), E),
13463 !,
13464 C=suspension(F, not_stored_yet, t, A, B),
13465 'chr gen_id'(F),
13466 max_occurrence___2__1__0__5(E, A, B, C).
13467max_occurrence___2__1__0__5([], A, B, C) :-
13468 max_occurrence___2__2(A, B, C).
13469max_occurrence___2__1__0__5([A|B], C, D, E) :-
13470 ( A=suspension(_, active, _, F, G, H),
13471 F==C,
13472 H=0,
13473 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-1',
13474 I),
13475 lookup_ht(I, C, J)
13476 -> max_occurrence___2__1__1__5(J,
13477 G,
13478 A,
13479 B,
13480 C,
13481 D,
13482 E)
13483 ; max_occurrence___2__1__0__5(B, C, D, E)
13484 ).
13485max_occurrence___2__1__1__5([], _, _, A, B, C, D) :-
13486 max_occurrence___2__1__0__5(A, B, C, D).
13487max_occurrence___2__1__1__5([A|B], C, D, E, F, G, H) :-
13488 ( A=suspension(_, active, _, _, I, _, J, _, _),
13489 I==F,
13490 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-3',
13491 K),
13492 lookup_ht(K, J, L)
13493 -> max_occurrence___2__1__2__5(L,
13494 J,
13495 A,
13496 B,
13497 C,
13498 D,
13499 E,
13500 F,
13501 G,
13502 H)
13503 ; max_occurrence___2__1__1__5(B,
13504 C,
13505 D,
13506 E,
13507 F,
13508 G,
13509 H)
13510 ).
13511max_occurrence___2__1__2__5([], _, _, A, B, C, D, E, F, G) :-
13512 max_occurrence___2__1__1__5(A,
13513 B,
13514 C,
13515 D,
13516 E,
13517 F,
13518 G).
13519max_occurrence___2__1__2__5([A|B], C, D, E, F, G, H, I, J, K) :-
13520 ( A=suspension(_, active, _, _, _, _, L, M, _),
13521 A\==D,
13522 L==C,
13523 N=t(250, A, D, G, K),
13524 '$novel_production'(A, N),
13525 '$novel_production'(D, N),
13526 '$novel_production'(G, N),
13527 '$novel_production'(K, N),
13528 F=<J
13529 -> '$extend_history'(K, N),
13530 arg(2, K, O),
13531 setarg(2, K, active),
13532 ( O==not_stored_yet
13533 -> nb_getval('$chr_store_multi_hash_chr_translate____max_occurrence___2-1',
13534 P),
13535 insert_ht(P, I, K)
13536 ; true
13537 ),
13538 passive(C, M),
13539 ( K=suspension(_, active, _, _, _)
13540 -> setarg(2, K, inactive),
13541 max_occurrence___2__1__2__5(B,
13542 C,
13543 D,
13544 E,
13545 F,
13546 G,
13547 H,
13548 I,
13549 J,
13550 K)
13551 ; true
13552 )
13553 ; max_occurrence___2__1__2__5(B,
13554 C,
13555 D,
13556 E,
13557 F,
13558 G,
13559 H,
13560 I,
13561 J,
13562 K)
13563 ).
13564max_occurrence___2__1(A, B, C) :-
13565 C=suspension(D, not_stored_yet, t, A, B),
13566 'chr gen_id'(D),
13567 max_occurrence___2__2(A, B, C).
13568max_occurrence___2__2(A, _, B) :-
13569 arg(2, B, C),
13570 setarg(2, B, active),
13571 ( C==not_stored_yet
13572 -> nb_getval('$chr_store_multi_hash_chr_translate____max_occurrence___2-1',
13573 D),
13574 insert_ht(D, A, B)
13575 ; true
13576 ).
13577get_max_occurrence(A, B) :-
13578 nb_getval('$chr_store_multi_hash_chr_translate____max_occurrence___2-1',
13579 C),
13580 lookup_ht(C, A, D),
13581 member(E, D),
13582 E=suspension(_, active, _, _, F),
13583 !,
13584 B=F.
13585get_max_occurrence(A, _) :-
13586 chr_error(internal,
13587 'get_max_occurrence: missing max occurrence for ~w\n',
13588 [A]).
13589allocation_occurrence(A, B) :-
13590 allocation_occurrence___2__0(A, B, _).
13591allocation_occurrence___2__0(A, 0, B) :-
13592 !,
13593 B=suspension(C, active, t, A, 0),
13594 'chr gen_id'(C),
13595 nb_getval('$chr_store_multi_hash_chr_translate____allocation_occurrence___2-1',
13596 D),
13597 insert_ht(D, A, B),
13598 nb_getval('$chr_store_multi_hash_chr_translate____allocation_occurrence___2-12',
13599 E),
13600 insert_ht(E, k(A, 0), B),
13601 stored_in_guard_before_next_kept_occurrence(A, 0),
13602 ( B=suspension(_, active, _, _, _)
13603 -> setarg(2, B, inactive),
13604 allocation_occurrence___2__1(A, 0, B)
13605 ; true
13606 ).
13607allocation_occurrence___2__0(A, B, C) :-
13608 C=suspension(D, not_stored_yet, t, A, B),
13609 'chr gen_id'(D),
13610 allocation_occurrence___2__1(A, B, C).
13611allocation_occurrence___2__1(A, B, C) :-
13612 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-12',
13613 D),
13614 lookup_ht(D, k(A, B), E),
13615 !,
13616 allocation_occurrence___2__1__0__2(E, A, B, C).
13617allocation_occurrence___2__1__0__2([], A, B, C) :-
13618 allocation_occurrence___2__2(A, B, C).
13619allocation_occurrence___2__1__0__2([A|B], C, D, E) :-
13620 ( A=suspension(_, active, _, _, F, G, H, I, J),
13621 F==C,
13622 G==D,
13623 nb_getval('$chr_store_multi_hash_chr_translate____rule___2-1', K),
13624 lookup_ht(K, H, L)
13625 -> allocation_occurrence___2__1__1__2(L,
13626 H,
13627 I,
13628 J,
13629 A,
13630 B,
13631 C,
13632 D,
13633 E)
13634 ; allocation_occurrence___2__1__0__2(B, C, D, E)
13635 ).
13636allocation_occurrence___2__1__1__2([], _, _, _, _, A, B, C, D) :-
13637 allocation_occurrence___2__1__0__2(A, B, C, D).
13638allocation_occurrence___2__1__1__2([A|B], C, D, E, F, G, H, I, J) :-
13639 ( A=suspension(_, active, _, _, K, L),
13640 K==C,
13641 M=t(60, A, F, J),
13642 '$novel_production'(A, M),
13643 '$novel_production'(F, M),
13644 '$novel_production'(J, M)
13645 -> '$extend_history'(J, M),
13646 arg(2, J, N),
13647 setarg(2, J, active),
13648 ( N==not_stored_yet
13649 -> nb_getval('$chr_store_multi_hash_chr_translate____allocation_occurrence___2-1',
13650 O),
13651 insert_ht(O, H, J),
13652 nb_getval('$chr_store_multi_hash_chr_translate____allocation_occurrence___2-12',
13653 P),
13654 insert_ht(P, k(H, I), J)
13655 ; true
13656 ),
13657 \+ is_passive(C, D),
13658 E==propagation,
13659 ( stored_in_guard_before_next_kept_occurrence(H, I)
13660 -> true
13661 ; L=pragma(rule([_|_], _, _, _), _, _, _, _)
13662 -> is_observed(H, I)
13663 ; is_least_occurrence(C)
13664 -> is_observed(H, I)
13665 ; true
13666 ),
13667 ( J=suspension(_, active, _, _, _)
13668 -> setarg(2, J, inactive),
13669 allocation_occurrence___2__1__1__2(B,
13670 C,
13671 D,
13672 E,
13673 F,
13674 G,
13675 H,
13676 I,
13677 J)
13678 ; true
13679 )
13680 ; allocation_occurrence___2__1__1__2(B,
13681 C,
13682 D,
13683 E,
13684 F,
13685 G,
13686 H,
13687 I,
13688 J)
13689 ).
13690allocation_occurrence___2__1(A, B, C) :-
13691 allocation_occurrence___2__2(A, B, C).
13692allocation_occurrence___2__2(A, B, C) :-
13693 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-1', D),
13694 lookup_ht(D, A, E),
13695 !,
13696 allocation_occurrence___2__2__0__3(E, A, B, C).
13697allocation_occurrence___2__2__0__3([], A, B, C) :-
13698 allocation_occurrence___2__3(A, B, C).
13699allocation_occurrence___2__2__0__3([A|B], C, D, E) :-
13700 ( A=suspension(_, active, _, _, F, G, H, I, _),
13701 F==C,
13702 nb_getval('$chr_store_multi_hash_chr_translate____least_occurrence___2-1',
13703 J),
13704 lookup_ht(J, H, K)
13705 -> allocation_occurrence___2__2__1__3(K,
13706 G,
13707 H,
13708 I,
13709 A,
13710 B,
13711 C,
13712 D,
13713 E)
13714 ; allocation_occurrence___2__2__0__3(B, C, D, E)
13715 ).
13716allocation_occurrence___2__2__1__3([], _, _, _, _, A, B, C, D) :-
13717 allocation_occurrence___2__2__0__3(A, B, C, D).
13718allocation_occurrence___2__2__1__3([A|B], C, D, E, F, G, H, I, J) :-
13719 ( A=suspension(_, active, K, L),
13720 K==D,
13721 L=[M|N],
13722 M==E,
13723 I>=C,
13724 ( ground(D),
13725 nb_getval('$chr_store_multi_hash_chr_translate____rule___2-1',
13726 O),
13727 lookup_ht(O, D, P)
13728 ),
13729 member(Q, P),
13730 Q=suspension(_, active, _, _, _, _),
13731 \+ may_trigger(H)
13732 -> setarg(2, A, removed),
13733 ( nb_getval('$chr_store_multi_hash_chr_translate____least_occurrence___2-12',
13734 R),
13735 delete_ht(R, k(D, [E|N]), A)
13736 ),
13737 nb_getval('$chr_store_multi_hash_chr_translate____least_occurrence___2-1',
13738 S),
13739 delete_ht(S, D, A),
13740 arg(2, J, T),
13741 setarg(2, J, active),
13742 ( T==not_stored_yet
13743 -> nb_getval('$chr_store_multi_hash_chr_translate____allocation_occurrence___2-1',
13744 U),
13745 insert_ht(U, H, J),
13746 nb_getval('$chr_store_multi_hash_chr_translate____allocation_occurrence___2-12',
13747 V),
13748 insert_ht(V, k(H, I), J)
13749 ; true
13750 ),
13751 least_occurrence(D, N),
13752 ( J=suspension(_, active, _, _, _)
13753 -> setarg(2, J, inactive),
13754 allocation_occurrence___2__2__1__3(B,
13755 C,
13756 D,
13757 E,
13758 F,
13759 G,
13760 H,
13761 I,
13762 J)
13763 ; true
13764 )
13765 ; allocation_occurrence___2__2__1__3(B,
13766 C,
13767 D,
13768 E,
13769 F,
13770 G,
13771 H,
13772 I,
13773 J)
13774 ).
13775allocation_occurrence___2__2(A, B, C) :-
13776 allocation_occurrence___2__3(A, B, C).
13777allocation_occurrence___2__3(A, B, C) :-
13778 nb_getval('$chr_store_multi_hash_chr_translate____functional_dependency___4-1',
13779 D),
13780 lookup_ht(D, A, E),
13781 !,
13782 allocation_occurrence___2__3__0__5(E, A, B, C).
13783allocation_occurrence___2__3__0__5([], A, B, C) :-
13784 allocation_occurrence___2__4(A, B, C).
13785allocation_occurrence___2__3__0__5([A|B], C, D, E) :-
13786 ( A=suspension(_, active, F, G, H, I),
13787 F==C,
13788 G>1,
13789 ( ground(C),
13790 ground(G),
13791 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-13',
13792 J),
13793 lookup_ht(J, k(C, G), K)
13794 ),
13795 member(L, K),
13796 L=suspension(_, active, _, _, _, M, _, _, _),
13797 D>M
13798 -> setarg(2, A, removed),
13799 ( nb_getval('$chr_store_multi_hash_chr_translate____functional_dependency___4-1',
13800 N),
13801 delete_ht(N, C, A)
13802 ),
13803 nb_getval('$chr_store_multi_hash_chr_translate____functional_dependency___4-12',
13804 O),
13805 delete_ht(O, k(C, G), A),
13806 arg(2, E, P),
13807 setarg(2, E, active),
13808 ( P==not_stored_yet
13809 -> nb_getval('$chr_store_multi_hash_chr_translate____allocation_occurrence___2-1',
13810 Q),
13811 insert_ht(Q, C, E),
13812 nb_getval('$chr_store_multi_hash_chr_translate____allocation_occurrence___2-12',
13813 R),
13814 insert_ht(R, k(C, D), E)
13815 ; true
13816 ),
13817 functional_dependency(C, 1, H, I),
13818 ( E=suspension(_, active, _, _, _)
13819 -> setarg(2, E, inactive),
13820 allocation_occurrence___2__3__0__5(B,
13821 C,
13822 D,
13823 E)
13824 ; true
13825 )
13826 ; allocation_occurrence___2__3__0__5(B, C, D, E)
13827 ).
13828allocation_occurrence___2__3(A, B, C) :-
13829 allocation_occurrence___2__4(A, B, C).
13830allocation_occurrence___2__4(A, B, C) :-
13831 arg(2, C, D),
13832 setarg(2, C, active),
13833 ( D==not_stored_yet
13834 -> nb_getval('$chr_store_multi_hash_chr_translate____allocation_occurrence___2-1',
13835 E),
13836 insert_ht(E, A, C),
13837 nb_getval('$chr_store_multi_hash_chr_translate____allocation_occurrence___2-12',
13838 F),
13839 insert_ht(F, k(A, B), C)
13840 ; true
13841 ).
13842get_allocation_occurrence(A, B) :-
13843 nb_getval('$chr_store_multi_hash_chr_translate____allocation_occurrence___2-1',
13844 C),
13845 lookup_ht(C, A, D),
13846 member(E, D),
13847 E=suspension(_, active, _, _, F),
13848 !,
13849 B=F.
13850get_allocation_occurrence(_, A) :-
13851 chr_pp_flag(late_allocation, off),
13852 A=0.
13853rule(A, B) :-
13854 rule___2__0(A, B, _).
13855rule___2__0(A, B, C) :-
13856 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-3', D),
13857 lookup_ht(D, A, E),
13858 !,
13859 C=suspension(F, not_stored_yet, t, _, A, B),
13860 'chr gen_id'(F),
13861 rule___2__0__0__1(E, A, B, C).
13862rule___2__0__0__1([], A, B, C) :-
13863 rule___2__1(A, B, C).
13864rule___2__0__0__1([A|B], C, D, E) :-
13865 ( A=suspension(_, active, _, _, F, G, H, I, J),
13866 H==C,
13867 nb_getval('$chr_store_multi_hash_chr_translate____allocation_occurrence___2-12',
13868 K),
13869 lookup_ht(K, k(F, G), L)
13870 -> rule___2__0__1__1(L,
13871 F,
13872 G,
13873 I,
13874 J,
13875 A,
13876 B,
13877 C,
13878 D,
13879 E)
13880 ; rule___2__0__0__1(B, C, D, E)
13881 ).
13882rule___2__0__1__1([], _, _, _, _, _, A, B, C, D) :-
13883 rule___2__0__0__1(A, B, C, D).
13884rule___2__0__1__1([A|B], C, D, E, F, G, H, I, J, K) :-
13885 ( A=suspension(_, active, _, L, M),
13886 L==C,
13887 M==D,
13888 N=t(60, K, G, A),
13889 '$novel_production'(K, N),
13890 '$novel_production'(G, N),
13891 '$novel_production'(A, N)
13892 -> '$extend_history'(K, N),
13893 arg(2, K, O),
13894 setarg(2, K, active),
13895 ( O==not_stored_yet
13896 -> nb_getval('$chr_store_global_ground_chr_translate____rule___2',
13897 P),
13898 Q=[K|P],
13899 b_setval('$chr_store_global_ground_chr_translate____rule___2',
13900 Q),
13901 ( P=[R|_]
13902 -> setarg(4, R, Q)
13903 ; true
13904 ),
13905 nb_getval('$chr_store_multi_hash_chr_translate____rule___2-1',
13906 S),
13907 insert_ht(S, I, K)
13908 ; true
13909 ),
13910 \+ is_passive(I, E),
13911 F==propagation,
13912 ( stored_in_guard_before_next_kept_occurrence(C, D)
13913 -> true
13914 ; J=pragma(rule([_|_], _, _, _), _, _, _, _)
13915 -> is_observed(C, D)
13916 ; is_least_occurrence(I)
13917 -> is_observed(C, D)
13918 ; true
13919 ),
13920 ( K=suspension(_, active, _, _, _, _)
13921 -> setarg(2, K, inactive),
13922 rule___2__0__1__1(B,
13923 C,
13924 D,
13925 E,
13926 F,
13927 G,
13928 H,
13929 I,
13930 J,
13931 K)
13932 ; true
13933 )
13934 ; rule___2__0__1__1(B,
13935 C,
13936 D,
13937 E,
13938 F,
13939 G,
13940 H,
13941 I,
13942 J,
13943 K)
13944 ).
13945rule___2__0(A, B, C) :-
13946 C=suspension(D, not_stored_yet, t, _, A, B),
13947 'chr gen_id'(D),
13948 rule___2__1(A, B, C).
13949rule___2__1(A, B, C) :-
13950 nb_getval('$chr_store_multi_hash_chr_translate____least_occurrence___2-1',
13951 D),
13952 lookup_ht(D, A, E),
13953 !,
13954 rule___2__1__0__2(E, A, B, C).
13955rule___2__1__0__2([], A, B, C) :-
13956 rule___2__2(A, B, C).
13957rule___2__1__0__2([A|B], C, D, E) :-
13958 ( A=suspension(_, active, F, G),
13959 F==C,
13960 G=[H|I],
13961 ( ground(C),
13962 ground(H),
13963 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-34',
13964 J),
13965 lookup_ht(J, k(C, H), K)
13966 ),
13967 member(L, K),
13968 L=suspension(_, active, _, _, M, N, _, _, _),
13969 ( nb_getval('$chr_store_multi_hash_chr_translate____allocation_occurrence___2-1',
13970 O),
13971 lookup_ht(O, M, P)
13972 ),
13973 member(Q, P),
13974 Q=suspension(_, active, _, _, R),
13975 R>=N,
13976 \+ may_trigger(M)
13977 -> setarg(2, A, removed),
13978 ( nb_getval('$chr_store_multi_hash_chr_translate____least_occurrence___2-12',
13979 S),
13980 delete_ht(S, k(C, [H|I]), A)
13981 ),
13982 nb_getval('$chr_store_multi_hash_chr_translate____least_occurrence___2-1',
13983 T),
13984 delete_ht(T, C, A),
13985 arg(2, E, U),
13986 setarg(2, E, active),
13987 ( U==not_stored_yet
13988 -> nb_getval('$chr_store_global_ground_chr_translate____rule___2',
13989 V),
13990 W=[E|V],
13991 b_setval('$chr_store_global_ground_chr_translate____rule___2',
13992 W),
13993 ( V=[X|_]
13994 -> setarg(4, X, W)
13995 ; true
13996 ),
13997 nb_getval('$chr_store_multi_hash_chr_translate____rule___2-1',
13998 Y),
13999 insert_ht(Y, C, E)
14000 ; true
14001 ),
14002 least_occurrence(C, I),
14003 ( E=suspension(_, active, _, _, _, _)
14004 -> setarg(2, E, inactive),
14005 rule___2__1__0__2(B, C, D, E)
14006 ; true
14007 )
14008 ; rule___2__1__0__2(B, C, D, E)
14009 ).
14010rule___2__1(A, B, C) :-
14011 rule___2__2(A, B, C).
14012rule___2__2(A, B, C) :-
14013 nb_getval('$chr_store_multi_hash_chr_translate____least_occurrence___2-1',
14014 D),
14015 lookup_ht(D, A, E),
14016 !,
14017 rule___2__2__0__3(E, A, B, C).
14018rule___2__2__0__3([], A, B, C) :-
14019 rule___2__3(A, B, C).
14020rule___2__2__0__3([A|B], C, D, E) :-
14021 ( A=suspension(_, active, F, G),
14022 F==C,
14023 G=[H|I],
14024 ( ground(C),
14025 ground(H)
14026 ),
14027 nb_getval('$chr_store_multi_hash_chr_translate____passive___2-12',
14028 J),
14029 lookup_ht(J, k(C, H), K),
14030 member(L, K),
14031 L=suspension(_, active, _, _, _)
14032 -> setarg(2, A, removed),
14033 ( nb_getval('$chr_store_multi_hash_chr_translate____least_occurrence___2-12',
14034 M),
14035 delete_ht(M, k(C, [H|I]), A)
14036 ),
14037 nb_getval('$chr_store_multi_hash_chr_translate____least_occurrence___2-1',
14038 N),
14039 delete_ht(N, C, A),
14040 arg(2, E, O),
14041 setarg(2, E, active),
14042 ( O==not_stored_yet
14043 -> nb_getval('$chr_store_global_ground_chr_translate____rule___2',
14044 P),
14045 Q=[E|P],
14046 b_setval('$chr_store_global_ground_chr_translate____rule___2',
14047 Q),
14048 ( P=[R|_]
14049 -> setarg(4, R, Q)
14050 ; true
14051 ),
14052 nb_getval('$chr_store_multi_hash_chr_translate____rule___2-1',
14053 S),
14054 insert_ht(S, C, E)
14055 ; true
14056 ),
14057 least_occurrence(C, I),
14058 ( E=suspension(_, active, _, _, _, _)
14059 -> setarg(2, E, inactive),
14060 rule___2__2__0__3(B, C, D, E)
14061 ; true
14062 )
14063 ; rule___2__2__0__3(B, C, D, E)
14064 ).
14065rule___2__2(A, B, C) :-
14066 rule___2__3(A, B, C).
14067rule___2__3(A, B, C) :-
14068 B=pragma(rule([], _, _, _), ids([], D), _, _, _),
14069 !,
14070 arg(2, C, E),
14071 setarg(2, C, active),
14072 ( E==not_stored_yet
14073 -> nb_getval('$chr_store_global_ground_chr_translate____rule___2', F),
14074 G=[C|F],
14075 b_setval('$chr_store_global_ground_chr_translate____rule___2', G),
14076 ( F=[H|_]
14077 -> setarg(4, H, G)
14078 ; true
14079 ),
14080 nb_getval('$chr_store_multi_hash_chr_translate____rule___2-1', I),
14081 insert_ht(I, A, C)
14082 ; true
14083 ),
14084 least_occurrence(A, D),
14085 ( C=suspension(_, active, _, _, _, _)
14086 -> setarg(2, C, inactive),
14087 rule___2__4(A, B, C)
14088 ; true
14089 ).
14090rule___2__3(A, B, C) :-
14091 rule___2__4(A, B, C).
14092rule___2__4(A, B, C) :-
14093 nb_getval('$chr_store_multi_hash_chr_translate____prev_guard_list___6-1',
14094 D),
14095 lookup_ht(D, A, E),
14096 member(F, E),
14097 F=suspension(_, active, _, _, _, G, H, I, J, _),
14098 B=pragma(rule(K, L, H, M), N, O, P, A),
14099 H\==true,
14100 append(J, I, Q),
14101 ( conj2list(H, R),
14102 append(Q, R, S),
14103 guard_entailment:entails_guard(S, fail)
14104 -> T=fail
14105 ; simplify_guard(H, M, Q, T, U)
14106 ),
14107 H\==T,
14108 !,
14109 setarg(2, F, removed),
14110 arg(4, F, V),
14111 ( var(V)
14112 -> nb_getval('$chr_store_global_ground_chr_translate____prev_guard_list___6',
14113 W),
14114 W=[_|X],
14115 b_setval('$chr_store_global_ground_chr_translate____prev_guard_list___6',
14116 X),
14117 ( X=[Y|_]
14118 -> setarg(4, Y, _)
14119 ; true
14120 )
14121 ; V=[_, _|X],
14122 setarg(2, V, X),
14123 ( X=[Y|_]
14124 -> setarg(4, Y, V)
14125 ; true
14126 )
14127 ),
14128 nb_getval('$chr_store_multi_hash_chr_translate____prev_guard_list___6-1',
14129 Z),
14130 delete_ht(Z, A, F),
14131 ( var(C)
14132 -> true
14133 ; arg(2, C, A1),
14134 setarg(2, C, removed),
14135 ( A1==not_stored_yet
14136 -> true
14137 ; arg(4, C, B1),
14138 ( var(B1)
14139 -> nb_getval('$chr_store_global_ground_chr_translate____rule___2',
14140 C1),
14141 C1=[_|D1],
14142 b_setval('$chr_store_global_ground_chr_translate____rule___2',
14143 D1),
14144 ( D1=[E1|_]
14145 -> setarg(4, E1, _)
14146 ; true
14147 )
14148 ; B1=[_, _|D1],
14149 setarg(2, B1, D1),
14150 ( D1=[E1|_]
14151 -> setarg(4, E1, B1)
14152 ; true
14153 )
14154 ),
14155 nb_getval('$chr_store_multi_hash_chr_translate____rule___2-1',
14156 F1),
14157 delete_ht(F1, A, C)
14158 )
14159 ),
14160 rule(A,
14161 pragma(rule(K, L, T, U),
14162 N,
14163 O,
14164 P,
14165 A)),
14166 prev_guard_list(A, G, T, I, J, []).
14167rule___2__4(A, B, C) :-
14168 nb_getval('$chr_store_global_ground_chr_translate____precompute_head_matchings___0',
14169 D),
14170 !,
14171 rule___2__4__0__10(D, A, B, C).
14172rule___2__4__0__10([], A, B, C) :-
14173 rule___2__5(A, B, C).
14174rule___2__4__0__10([A|B], C, D, E) :-
14175 ( A=suspension(_, active, _, _),
14176 F=t(174, E, A),
14177 '$novel_production'(E, F),
14178 '$novel_production'(A, F)
14179 -> '$extend_history'(E, F),
14180 arg(2, E, G),
14181 setarg(2, E, active),
14182 ( G==not_stored_yet
14183 -> nb_getval('$chr_store_global_ground_chr_translate____rule___2',
14184 H),
14185 I=[E|H],
14186 b_setval('$chr_store_global_ground_chr_translate____rule___2',
14187 I),
14188 ( H=[J|_]
14189 -> setarg(4, J, I)
14190 ; true
14191 ),
14192 nb_getval('$chr_store_multi_hash_chr_translate____rule___2-1',
14193 K),
14194 insert_ht(K, C, E)
14195 ; true
14196 ),
14197 D=pragma(rule(L, M, _, _), _, _, _, _),
14198 append(L, M, N),
14199 make_head_matchings_explicit_(N, O, P),
14200 copy_term_nat(O-P, Q-R),
14201 make_head_matchings_explicit_memo_table(C, Q, R),
14202 ( E=suspension(_, active, _, _, _, _)
14203 -> setarg(2, E, inactive),
14204 rule___2__4__0__10(B, C, D, E)
14205 ; true
14206 )
14207 ; rule___2__4__0__10(B, C, D, E)
14208 ).
14209rule___2__4(A, B, C) :-
14210 rule___2__5(A, B, C).
14211rule___2__5(A, B, C) :-
14212 nb_getval('$chr_store_multi_hash_chr_translate____prev_guard_list___6-1',
14213 D),
14214 lookup_ht(D, A, E),
14215 !,
14216 rule___2__5__0__11(E, A, B, C).
14217rule___2__5__0__11([], A, B, C) :-
14218 rule___2__6(A, B, C).
14219rule___2__5__0__11([A|B], C, D, E) :-
14220 ( A=suspension(_, active, _, _, F, _, G, H, I, _),
14221 F==C,
14222 J=t(178, A, E),
14223 '$novel_production'(A, J),
14224 '$novel_production'(E, J),
14225 chr_pp_flag(check_impossible_rules, on),
14226 D=pragma(rule(_, _, G, _), _, _, _, C),
14227 conj2list(G, K),
14228 append(I, H, L),
14229 append(L, K, M),
14230 guard_entailment:entails_guard(M, fail)
14231 -> '$extend_history'(E, J),
14232 arg(2, E, N),
14233 setarg(2, E, active),
14234 ( N==not_stored_yet
14235 -> nb_getval('$chr_store_global_ground_chr_translate____rule___2',
14236 O),
14237 P=[E|O],
14238 b_setval('$chr_store_global_ground_chr_translate____rule___2',
14239 P),
14240 ( O=[Q|_]
14241 -> setarg(4, Q, P)
14242 ; true
14243 ),
14244 nb_getval('$chr_store_multi_hash_chr_translate____rule___2-1',
14245 R),
14246 insert_ht(R, C, E)
14247 ; true
14248 ),
14249 chr_warning(weird_program,
14250 'Heads will never match or guard will always fail in ~@.\n\tThis rule will never fire!\n',
14251 [format_rule(D)]),
14252 set_all_passive(C),
14253 ( E=suspension(_, active, _, _, _, _)
14254 -> setarg(2, E, inactive),
14255 rule___2__5__0__11(B, C, D, E)
14256 ; true
14257 )
14258 ; rule___2__5__0__11(B, C, D, E)
14259 ).
14260rule___2__5(A, B, C) :-
14261 rule___2__6(A, B, C).
14262rule___2__6(A, B, C) :-
14263 nb_getval('$chr_store_multi_hash_chr_translate____prev_guard_list___6-1',
14264 D),
14265 lookup_ht(D, A, E),
14266 member(F, E),
14267 F=suspension(_, active, _, _, _, G, H, I, J, _),
14268 B=pragma(rule(K, L, H, M), N, O, P, A),
14269 simplify_heads(J, I, H, M, Q, R),
14270 Q\==[],
14271 extract_arguments(K, S),
14272 extract_arguments(L, T),
14273 extract_arguments(G, U),
14274 replace_some_heads(S,
14275 T,
14276 U,
14277 Q,
14278 V,
14279 W,
14280 H,
14281 M,
14282 X),
14283 substitute_arguments(K, V, Y),
14284 substitute_arguments(L, W, Z),
14285 append(R, X, A1),
14286 list2conj(A1, B1),
14287 C1=pragma(rule(Y, Z, H, (B1, M)), N, O, P, A),
14288 ( K\==Y
14289 ; L\==Z
14290 ),
14291 !,
14292 ( var(C)
14293 -> true
14294 ; arg(2, C, D1),
14295 setarg(2, C, removed),
14296 ( D1==not_stored_yet
14297 -> true
14298 ; arg(4, C, E1),
14299 ( var(E1)
14300 -> nb_getval('$chr_store_global_ground_chr_translate____rule___2',
14301 F1),
14302 F1=[_|G1],
14303 b_setval('$chr_store_global_ground_chr_translate____rule___2',
14304 G1),
14305 ( G1=[H1|_]
14306 -> setarg(4, H1, _)
14307 ; true
14308 )
14309 ; E1=[_, _|G1],
14310 setarg(2, E1, G1),
14311 ( G1=[H1|_]
14312 -> setarg(4, H1, E1)
14313 ; true
14314 )
14315 ),
14316 nb_getval('$chr_store_multi_hash_chr_translate____rule___2-1',
14317 I1),
14318 delete_ht(I1, A, C)
14319 )
14320 ),
14321 rule(A, C1).
14322rule___2__6(A, B, C) :-
14323 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-3', D),
14324 lookup_ht(D, A, E),
14325 !,
14326 rule___2__6__0__13(E, A, B, C).
14327rule___2__6__0__13([], A, B, C) :-
14328 rule___2__7(A, B, C).
14329rule___2__6__0__13([A|B], C, D, E) :-
14330 ( A=suspension(_, active, _, _, F, G, H, _, _),
14331 H==C,
14332 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-13',
14333 I),
14334 lookup_ht(I, k(F, C), J)
14335 -> rule___2__6__1__13(J,
14336 F,
14337 G,
14338 A,
14339 B,
14340 C,
14341 D,
14342 E)
14343 ; rule___2__6__0__13(B, C, D, E)
14344 ).
14345rule___2__6__1__13([], _, _, _, A, B, C, D) :-
14346 rule___2__6__0__13(A, B, C, D).
14347rule___2__6__1__13([A|B], C, D, E, F, G, H, I) :-
14348 ( A=suspension(_, active, _, _, J, K, L, M, _),
14349 A\==E,
14350 J==C,
14351 L==G,
14352 nb_getval('$chr_store_multi_hash_chr_translate____prev_guard_list___6-1',
14353 N),
14354 lookup_ht(N, G, O)
14355 -> rule___2__6__2__13(O,
14356 K,
14357 M,
14358 A,
14359 B,
14360 C,
14361 D,
14362 E,
14363 F,
14364 G,
14365 H,
14366 I)
14367 ; rule___2__6__1__13(B,
14368 C,
14369 D,
14370 E,
14371 F,
14372 G,
14373 H,
14374 I)
14375 ).
14376rule___2__6__2__13([], _, _, _, A, B, C, D, E, F, G, H) :-
14377 rule___2__6__1__13(A,
14378 B,
14379 C,
14380 D,
14381 E,
14382 F,
14383 G,
14384 H).
14385rule___2__6__2__13([A|B], C, D, E, F, G, H, I, J, K, L, M) :-
14386 ( A=suspension(_, active, _, _, N, _, _, _, _, _),
14387 N==K,
14388 nb_getval('$chr_store_global_ground_chr_translate____multiple_occ_constraints_checked___1',
14389 O)
14390 -> rule___2__6__3__13(O,
14391 A,
14392 B,
14393 C,
14394 D,
14395 E,
14396 F,
14397 G,
14398 H,
14399 I,
14400 J,
14401 K,
14402 L,
14403 M)
14404 ; rule___2__6__2__13(B,
14405 C,
14406 D,
14407 E,
14408 F,
14409 G,
14410 H,
14411 I,
14412 J,
14413 K,
14414 L,
14415 M)
14416 ).
14417rule___2__6__3__13([], _, A, B, C, D, E, F, G, H, I, J, K, L) :-
14418 rule___2__6__2__13(A,
14419 B,
14420 C,
14421 D,
14422 E,
14423 F,
14424 G,
14425 H,
14426 I,
14427 J,
14428 K,
14429 L).
14430rule___2__6__3__13([A|B], C, D, E, F, G, H, I, J, K, L, M, N, O) :-
14431 ( A=suspension(_, active, _, P),
14432 E<J,
14433 chr_pp_flag(occurrence_subsumption, on),
14434 N=pragma(rule(Q, _, _, _), _, _, _, _),
14435 Q\==[],
14436 \+ tree_set_memberchk(I, P)
14437 -> setarg(2, A, removed),
14438 arg(3, A, R),
14439 ( var(R)
14440 -> nb_getval('$chr_store_global_ground_chr_translate____multiple_occ_constraints_checked___1',
14441 S),
14442 S=[_|T],
14443 b_setval('$chr_store_global_ground_chr_translate____multiple_occ_constraints_checked___1',
14444 T),
14445 ( T=[U|_]
14446 -> setarg(3, U, _)
14447 ; true
14448 )
14449 ; R=[_, _|T],
14450 setarg(2, R, T),
14451 ( T=[U|_]
14452 -> setarg(3, U, R)
14453 ; true
14454 )
14455 ),
14456 arg(2, O, V),
14457 setarg(2, O, active),
14458 ( V==not_stored_yet
14459 -> nb_getval('$chr_store_global_ground_chr_translate____rule___2',
14460 W),
14461 X=[O|W],
14462 b_setval('$chr_store_global_ground_chr_translate____rule___2',
14463 X),
14464 ( W=[Y|_]
14465 -> setarg(4, Y, X)
14466 ; true
14467 ),
14468 nb_getval('$chr_store_multi_hash_chr_translate____rule___2-1',
14469 Z),
14470 insert_ht(Z, M, O)
14471 ; true
14472 ),
14473 first_occ_in_rule(M, I, E, F),
14474 tree_set_add(P, I, A1),
14475 multiple_occ_constraints_checked(A1),
14476 ( O=suspension(_, active, _, _, _, _)
14477 -> setarg(2, O, inactive),
14478 rule___2__6__3__13(B,
14479 C,
14480 D,
14481 E,
14482 F,
14483 G,
14484 H,
14485 I,
14486 J,
14487 K,
14488 L,
14489 M,
14490 N,
14491 O)
14492 ; true
14493 )
14494 ; rule___2__6__3__13(B,
14495 C,
14496 D,
14497 E,
14498 F,
14499 G,
14500 H,
14501 I,
14502 J,
14503 K,
14504 L,
14505 M,
14506 N,
14507 O)
14508 ).
14509rule___2__6(A, B, C) :-
14510 rule___2__7(A, B, C).
14511rule___2__7(A, B, C) :-
14512 nb_getval('$chr_store_multi_hash_chr_translate____passive___2-1', D),
14513 lookup_ht(D, A, E),
14514 !,
14515 rule___2__7__0__15(E, A, B, C).
14516rule___2__7__0__15([], A, B, C) :-
14517 rule___2__8(A, B, C).
14518rule___2__7__0__15([A|B], C, D, E) :-
14519 ( A=suspension(_, active, _, F, G),
14520 F==C,
14521 H=t(251, E, A),
14522 '$novel_production'(E, H),
14523 '$novel_production'(A, H),
14524 D=pragma(rule(_, _, _, _), ids([G|I], J), _, _, C)
14525 -> '$extend_history'(E, H),
14526 arg(2, E, K),
14527 setarg(2, E, active),
14528 ( K==not_stored_yet
14529 -> nb_getval('$chr_store_global_ground_chr_translate____rule___2',
14530 L),
14531 M=[E|L],
14532 b_setval('$chr_store_global_ground_chr_translate____rule___2',
14533 M),
14534 ( L=[N|_]
14535 -> setarg(4, N, M)
14536 ; true
14537 ),
14538 nb_getval('$chr_store_multi_hash_chr_translate____rule___2-1',
14539 O),
14540 insert_ht(O, C, E)
14541 ; true
14542 ),
14543 append(I, J, P),
14544 check_all_passive(C, P),
14545 ( E=suspension(_, active, _, _, _, _)
14546 -> setarg(2, E, inactive),
14547 rule___2__7__0__15(B, C, D, E)
14548 ; true
14549 )
14550 ; rule___2__7__0__15(B, C, D, E)
14551 ).
14552rule___2__7(A, B, C) :-
14553 rule___2__8(A, B, C).
14554rule___2__8(A, B, C) :-
14555 nb_getval('$chr_store_multi_hash_chr_translate____passive___2-1', D),
14556 lookup_ht(D, A, E),
14557 !,
14558 rule___2__8__0__16(E, A, B, C).
14559rule___2__8__0__16([], A, B, C) :-
14560 rule___2__9(A, B, C).
14561rule___2__8__0__16([A|B], C, D, E) :-
14562 ( A=suspension(_, active, _, F, G),
14563 F==C,
14564 H=t(252, E, A),
14565 '$novel_production'(E, H),
14566 '$novel_production'(A, H),
14567 D=pragma(rule(_, _, _, _), ids([], [G|I]), _, _, C)
14568 -> '$extend_history'(E, H),
14569 arg(2, E, J),
14570 setarg(2, E, active),
14571 ( J==not_stored_yet
14572 -> nb_getval('$chr_store_global_ground_chr_translate____rule___2',
14573 K),
14574 L=[E|K],
14575 b_setval('$chr_store_global_ground_chr_translate____rule___2',
14576 L),
14577 ( K=[M|_]
14578 -> setarg(4, M, L)
14579 ; true
14580 ),
14581 nb_getval('$chr_store_multi_hash_chr_translate____rule___2-1',
14582 N),
14583 insert_ht(N, C, E)
14584 ; true
14585 ),
14586 check_all_passive(C, I),
14587 ( E=suspension(_, active, _, _, _, _)
14588 -> setarg(2, E, inactive),
14589 rule___2__8__0__16(B, C, D, E)
14590 ; true
14591 )
14592 ; rule___2__8__0__16(B, C, D, E)
14593 ).
14594rule___2__8(A, B, C) :-
14595 rule___2__9(A, B, C).
14596rule___2__9(A, B, C) :-
14597 nb_getval('$chr_store_multi_hash_chr_translate____check_all_passive___2-12',
14598 D),
14599 lookup_ht(D, k(A, []), E),
14600 !,
14601 rule___2__9__0__17(E, A, B, C).
14602rule___2__9__0__17([], A, B, C) :-
14603 rule___2__10(A, B, C).
14604rule___2__9__0__17([A|B], C, D, E) :-
14605 ( A=suspension(_, active, F, G),
14606 F==C,
14607 G=[]
14608 -> setarg(2, A, removed),
14609 ( nb_getval('$chr_store_multi_hash_chr_translate____check_all_passive___2-12',
14610 H),
14611 delete_ht(H, k(C, []), A)
14612 ),
14613 nb_getval('$chr_store_multi_hash_chr_translate____check_all_passive___2-1',
14614 I),
14615 delete_ht(I, C, A),
14616 arg(2, E, J),
14617 setarg(2, E, active),
14618 ( J==not_stored_yet
14619 -> nb_getval('$chr_store_global_ground_chr_translate____rule___2',
14620 K),
14621 L=[E|K],
14622 b_setval('$chr_store_global_ground_chr_translate____rule___2',
14623 L),
14624 ( K=[M|_]
14625 -> setarg(4, M, L)
14626 ; true
14627 ),
14628 nb_getval('$chr_store_multi_hash_chr_translate____rule___2-1',
14629 N),
14630 insert_ht(N, C, E)
14631 ; true
14632 ),
14633 chr_warning(weird_program,
14634 'All heads passive in ~@.\n\tThis rule never fires. Please check your program.\n',
14635 [format_rule(D)]),
14636 ( E=suspension(_, active, _, _, _, _)
14637 -> setarg(2, E, inactive),
14638 rule___2__9__0__17(B, C, D, E)
14639 ; true
14640 )
14641 ; rule___2__9__0__17(B, C, D, E)
14642 ).
14643rule___2__9(A, B, C) :-
14644 rule___2__10(A, B, C).
14645rule___2__10(A, B, C) :-
14646 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-3', D),
14647 lookup_ht(D, A, E),
14648 !,
14649 rule___2__10__0__22(E, A, B, C).
14650rule___2__10__0__22([], A, B, C) :-
14651 rule___2__11(A, B, C).
14652rule___2__10__0__22([A|B], C, D, E) :-
14653 ( A=suspension(_, active, _, _, F, _, G, H, I),
14654 G==C,
14655 nb_getval('$chr_store_global_ground_chr_translate____partial_wake_analysis___0',
14656 J)
14657 -> rule___2__10__1__22(J,
14658 F,
14659 H,
14660 I,
14661 A,
14662 B,
14663 C,
14664 D,
14665 E)
14666 ; rule___2__10__0__22(B, C, D, E)
14667 ).
14668rule___2__10__1__22([], _, _, _, _, A, B, C, D) :-
14669 rule___2__10__0__22(A, B, C, D).
14670rule___2__10__1__22([A|B], C, D, E, F, G, H, I, J) :-
14671 ( A=suspension(_, active, _, _),
14672 nb_getval('$chr_store_multi_hash_chr_translate____constraint_mode___2-1',
14673 K),
14674 lookup_ht(K, C, L)
14675 -> rule___2__10__2__22(L,
14676 A,
14677 B,
14678 C,
14679 D,
14680 E,
14681 F,
14682 G,
14683 H,
14684 I,
14685 J)
14686 ; rule___2__10__1__22(B,
14687 C,
14688 D,
14689 E,
14690 F,
14691 G,
14692 H,
14693 I,
14694 J)
14695 ).
14696rule___2__10__2__22([], _, A, B, C, D, E, F, G, H, I) :-
14697 rule___2__10__1__22(A,
14698 B,
14699 C,
14700 D,
14701 E,
14702 F,
14703 G,
14704 H,
14705 I).
14706rule___2__10__2__22([A|B], C, D, E, F, G, H, I, J, K, L) :-
14707 ( A=suspension(_, active, _, _, M, N),
14708 M==E,
14709 O=t(330, C, H, L, A),
14710 '$novel_production'(C, O),
14711 '$novel_production'(H, O),
14712 '$novel_production'(L, O),
14713 '$novel_production'(A, O)
14714 -> '$extend_history'(L, O),
14715 arg(2, L, P),
14716 setarg(2, L, active),
14717 ( P==not_stored_yet
14718 -> nb_getval('$chr_store_global_ground_chr_translate____rule___2',
14719 Q),
14720 R=[L|Q],
14721 b_setval('$chr_store_global_ground_chr_translate____rule___2',
14722 R),
14723 ( Q=[S|_]
14724 -> setarg(4, S, R)
14725 ; true
14726 ),
14727 nb_getval('$chr_store_multi_hash_chr_translate____rule___2-1',
14728 T),
14729 insert_ht(T, J, L)
14730 ; true
14731 ),
14732 K=pragma(rule(U, V, W, _), _, _, _, _),
14733 ( is_passive(J, F)
14734 -> true
14735 ; G==simplification
14736 -> select(X, U, _),
14737 X=..[_|Y],
14738 term_variables(W, Z),
14739 partial_wake_args(Y, N, Z, E)
14740 ; select(X, V, _),
14741 X=..[_|Y],
14742 term_variables(W, Z),
14743 partial_wake_args(Y, N, Z, E)
14744 ),
14745 ( L=suspension(_, active, _, _, _, _)
14746 -> setarg(2, L, inactive),
14747 rule___2__10__2__22(B,
14748 C,
14749 D,
14750 E,
14751 F,
14752 G,
14753 H,
14754 I,
14755 J,
14756 K,
14757 L)
14758 ; true
14759 )
14760 ; rule___2__10__2__22(B,
14761 C,
14762 D,
14763 E,
14764 F,
14765 G,
14766 H,
14767 I,
14768 J,
14769 K,
14770 L)
14771 ).
14772rule___2__10(A, B, C) :-
14773 rule___2__11(A, B, C).
14774rule___2__11(A, _, B) :-
14775 arg(2, B, C),
14776 setarg(2, B, active),
14777 ( C==not_stored_yet
14778 -> nb_getval('$chr_store_global_ground_chr_translate____rule___2', D),
14779 E=[B|D],
14780 b_setval('$chr_store_global_ground_chr_translate____rule___2', E),
14781 ( D=[F|_]
14782 -> setarg(4, F, E)
14783 ; true
14784 ),
14785 nb_getval('$chr_store_multi_hash_chr_translate____rule___2-1', G),
14786 insert_ht(G, A, B)
14787 ; true
14788 ).
14789get_rule(A, B) :-
14790 nb_getval('$chr_store_multi_hash_chr_translate____rule___2-1', C),
14791 lookup_ht(C, A, D),
14792 member(E, D),
14793 E=suspension(_, active, _, _, _, F),
14794 !,
14795 B=F.
14796get_rule(_, _) :-
14797 fail.
14798least_occurrence(A, [B|C]) :-
14799 nb_getval('$chr_store_multi_hash_chr_translate____rule___2-1', D),
14800 lookup_ht(D, A, E),
14801 member(F, E),
14802 F=suspension(_, active, _, _, _, _),
14803 ( nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-34',
14804 G),
14805 lookup_ht(G, k(A, B), H),
14806 member(I, H),
14807 I=suspension(_, active, _, _, J, K, _, _, _),
14808 nb_getval('$chr_store_multi_hash_chr_translate____allocation_occurrence___2-1',
14809 L),
14810 lookup_ht(L, J, M),
14811 member(N, M),
14812 N=suspension(_, active, _, _, O),
14813 O>=K,
14814 \+ may_trigger(J),
14815 !,
14816 least_occurrence(A, C)
14817 ; nb_getval('$chr_store_multi_hash_chr_translate____passive___2-12',
14818 P),
14819 lookup_ht(P, k(A, B), Q),
14820 member(R, Q),
14821 R=suspension(_, active, _, _, _),
14822 !,
14823 least_occurrence(A, C)
14824 ).
14825least_occurrence(A, B) :-
14826 C=suspension(D, active, A, B),
14827 'chr gen_id'(D),
14828 nb_getval('$chr_store_multi_hash_chr_translate____least_occurrence___2-12',
14829 E),
14830 insert_ht(E, k(A, B), C),
14831 nb_getval('$chr_store_multi_hash_chr_translate____least_occurrence___2-1',
14832 F),
14833 insert_ht(F, A, C).
14834is_least_occurrence(A) :-
14835 nb_getval('$chr_store_multi_hash_chr_translate____least_occurrence___2-12',
14836 B),
14837 lookup_ht(B, k(A, []), C),
14838 member(D, C),
14839 D=suspension(_, active, _, _),
14840 !.
14841is_least_occurrence(_) :-
14842 fail.
14843stored_in_guard_lookahead(A, B) :-
14844 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-12',
14845 C),
14846 lookup_ht(C, k(A, B), D),
14847 member(E, D),
14848 E=suspension(_, active, _, _, _, _, F, G, H),
14849 ( nb_getval('$chr_store_multi_hash_chr_translate____passive___2-12',
14850 I),
14851 lookup_ht(I, k(F, G), J),
14852 member(K, J),
14853 K=suspension(_, active, _, _, _),
14854 !,
14855 L is B+1,
14856 stored_in_guard_lookahead(A, L)
14857 ; !,
14858 H==simplification,
14859 ( is_stored_in_guard(A, F)
14860 -> true
14861 ; M is B+1,
14862 stored_in_guard_lookahead(A, M)
14863 )
14864 ).
14865stored_in_guard_lookahead(_, _) :-
14866 fail.
14867constraint_index(A, B) :-
14868 C=suspension(D, active, A, B),
14869 'chr gen_id'(D),
14870 nb_getval('$chr_store_multi_hash_chr_translate____constraint_index___2-2',
14871 E),
14872 insert_ht(E, B, C),
14873 nb_getval('$chr_store_multi_hash_chr_translate____constraint_index___2-1',
14874 F),
14875 insert_ht(F, A, C).
14876get_constraint_index(A, B) :-
14877 nb_getval('$chr_store_multi_hash_chr_translate____constraint_index___2-1',
14878 C),
14879 lookup_ht(C, A, D),
14880 member(E, D),
14881 E=suspension(_, active, _, F),
14882 !,
14883 B=F.
14884get_constraint_index(_, _) :-
14885 fail.
14886get_indexed_constraint(A, B) :-
14887 nb_getval('$chr_store_multi_hash_chr_translate____constraint_index___2-2',
14888 C),
14889 lookup_ht(C, A, D),
14890 member(E, D),
14891 E=suspension(_, active, F, _),
14892 !,
14893 B=F.
14894get_indexed_constraint(_, _) :-
14895 fail.
14896max_constraint_index(A) :-
14897 B=suspension(C, active, _, A),
14898 'chr gen_id'(C),
14899 nb_getval('$chr_store_global_ground_chr_translate____max_constraint_index___1',
14900 D),
14901 E=[B|D],
14902 b_setval('$chr_store_global_ground_chr_translate____max_constraint_index___1',
14903 E),
14904 ( D=[F|_]
14905 -> setarg(3, F, E)
14906 ; true
14907 ).
14908get_max_constraint_index(A) :-
14909 nb_getval('$chr_store_global_ground_chr_translate____max_constraint_index___1',
14910 B),
14911 member(C, B),
14912 C=suspension(_, active, _, D),
14913 !,
14914 A=D.
14915get_max_constraint_index(0).
14916identifier_size(A) :-
14917 nb_getval('$chr_store_global_ground_chr_translate____identifier_size___1',
14918 B),
14919 ( member(C, B),
14920 C=suspension(_, active, _, _),
14921 !
14922 ; !,
14923 identifier_size___1__0__0__2(B, A)
14924 ).
14925identifier_size___1__0__0__2([], A) :-
14926 identifier_size___1__1(A).
14927identifier_size___1__0__0__2([A|B], C) :-
14928 ( A=suspension(_, active, _, _)
14929 -> setarg(2, A, removed),
14930 arg(3, A, D),
14931 ( var(D)
14932 -> nb_getval('$chr_store_global_ground_chr_translate____identifier_size___1',
14933 E),
14934 E=[_|F],
14935 b_setval('$chr_store_global_ground_chr_translate____identifier_size___1',
14936 F),
14937 ( F=[G|_]
14938 -> setarg(3, G, _)
14939 ; true
14940 )
14941 ; D=[_, _|F],
14942 setarg(2, D, F),
14943 ( F=[G|_]
14944 -> setarg(3, G, D)
14945 ; true
14946 )
14947 ),
14948 identifier_size___1__0__0__2(B, C)
14949 ; identifier_size___1__0__0__2(B, C)
14950 ).
14951identifier_size(A) :-
14952 identifier_size___1__1(A).
14953identifier_size___1__1(A) :-
14954 B=suspension(C, active, _, A),
14955 'chr gen_id'(C),
14956 nb_getval('$chr_store_global_ground_chr_translate____identifier_size___1',
14957 D),
14958 E=[B|D],
14959 b_setval('$chr_store_global_ground_chr_translate____identifier_size___1',
14960 E),
14961 ( D=[F|_]
14962 -> setarg(3, F, E)
14963 ; true
14964 ).
14965get_identifier_size(A) :-
14966 nb_getval('$chr_store_global_ground_chr_translate____identifier_size___1',
14967 B),
14968 member(C, B),
14969 C=suspension(_, active, _, D),
14970 !,
14971 A=D.
14972get_identifier_size(1).
14973identifier_index(A, B, C) :-
14974 nb_getval('$chr_store_multi_hash_chr_translate____identifier_index___3-12',
14975 D),
14976 lookup_ht(D, k(A, B), E),
14977 ( member(F, E),
14978 F=suspension(_, active, _, _, _),
14979 !
14980 ; !,
14981 identifier_index___3__0__0__2(E, A, B, C)
14982 ).
14983identifier_index___3__0__0__2([], A, B, C) :-
14984 identifier_index___3__1(A, B, C).
14985identifier_index___3__0__0__2([A|B], C, D, E) :-
14986 ( A=suspension(_, active, F, G, _),
14987 F==C,
14988 G==D
14989 -> setarg(2, A, removed),
14990 nb_getval('$chr_store_multi_hash_chr_translate____identifier_index___3-12',
14991 H),
14992 delete_ht(H, k(C, D), A),
14993 identifier_index___3__0__0__2(B, C, D, E)
14994 ; identifier_index___3__0__0__2(B, C, D, E)
14995 ).
14996identifier_index(A, B, C) :-
14997 identifier_index___3__1(A, B, C).
14998identifier_index___3__1(A, B, C) :-
14999 D=suspension(E, active, A, B, C),
15000 'chr gen_id'(E),
15001 nb_getval('$chr_store_multi_hash_chr_translate____identifier_index___3-12',
15002 F),
15003 insert_ht(F, k(A, B), D).
15004get_identifier_index(A, B, C) :-
15005 nb_getval('$chr_store_multi_hash_chr_translate____identifier_index___3-12',
15006 D),
15007 lookup_ht(D, k(A, B), E),
15008 member(F, E),
15009 F=suspension(_, active, _, _, G),
15010 !,
15011 C=G.
15012get_identifier_index(A, B, C) :-
15013 nb_getval('$chr_store_global_ground_chr_translate____identifier_size___1',
15014 D),
15015 member(E, D),
15016 E=suspension(_, active, _, F),
15017 !,
15018 setarg(2, E, removed),
15019 arg(3, E, G),
15020 ( var(G)
15021 -> nb_getval('$chr_store_global_ground_chr_translate____identifier_size___1',
15022 H),
15023 H=[_|I],
15024 b_setval('$chr_store_global_ground_chr_translate____identifier_size___1',
15025 I),
15026 ( I=[J|_]
15027 -> setarg(3, J, _)
15028 ; true
15029 )
15030 ; G=[_, _|I],
15031 setarg(2, G, I),
15032 ( I=[J|_]
15033 -> setarg(3, J, G)
15034 ; true
15035 )
15036 ),
15037 K is F+1,
15038 identifier_index(A, B, K),
15039 identifier_size(K),
15040 C=K.
15041get_identifier_index(A, B, C) :-
15042 identifier_index(A, B, 2),
15043 identifier_size(2),
15044 C=2.
15045type_indexed_identifier_size(A, B) :-
15046 nb_getval('$chr_store_multi_hash_chr_translate____type_indexed_identifier_size___2-1',
15047 C),
15048 lookup_ht(C, A, D),
15049 ( member(E, D),
15050 E=suspension(_, active, _, _),
15051 !
15052 ; !,
15053 type_indexed_identifier_size___2__0__0__2(D, A, B)
15054 ).
15055type_indexed_identifier_size___2__0__0__2([], A, B) :-
15056 type_indexed_identifier_size___2__1(A, B).
15057type_indexed_identifier_size___2__0__0__2([A|B], C, D) :-
15058 ( A=suspension(_, active, E, _),
15059 E==C
15060 -> setarg(2, A, removed),
15061 nb_getval('$chr_store_multi_hash_chr_translate____type_indexed_identifier_size___2-1',
15062 F),
15063 delete_ht(F, C, A),
15064 type_indexed_identifier_size___2__0__0__2(B, C, D)
15065 ; type_indexed_identifier_size___2__0__0__2(B, C, D)
15066 ).
15067type_indexed_identifier_size(A, B) :-
15068 type_indexed_identifier_size___2__1(A, B).
15069type_indexed_identifier_size___2__1(A, B) :-
15070 C=suspension(D, active, A, B),
15071 'chr gen_id'(D),
15072 nb_getval('$chr_store_multi_hash_chr_translate____type_indexed_identifier_size___2-1',
15073 E),
15074 insert_ht(E, A, C).
15075get_type_indexed_identifier_size(A, B) :-
15076 nb_getval('$chr_store_multi_hash_chr_translate____type_indexed_identifier_size___2-1',
15077 C),
15078 lookup_ht(C, A, D),
15079 member(E, D),
15080 E=suspension(_, active, _, F),
15081 !,
15082 B=F.
15083get_type_indexed_identifier_size(_, 1).
15084type_indexed_identifier_index(A, B, C, D) :-
15085 nb_getval('$chr_store_multi_hash_chr_translate____type_indexed_identifier_index___4-23',
15086 E),
15087 lookup_ht(E, k(B, C), F),
15088 ( member(G, F),
15089 G=suspension(_, active, _, _, _, _),
15090 !
15091 ; !,
15092 type_indexed_identifier_index___4__0__0__2(F,
15093 A,
15094 B,
15095 C,
15096 D)
15097 ).
15098type_indexed_identifier_index___4__0__0__2([], A, B, C, D) :-
15099 type_indexed_identifier_index___4__1(A, B, C, D).
15100type_indexed_identifier_index___4__0__0__2([A|B], C, D, E, F) :-
15101 ( A=suspension(_, active, G, H, I, _),
15102 H==D,
15103 I==E
15104 -> setarg(2, A, removed),
15105 ( nb_getval('$chr_store_multi_hash_chr_translate____type_indexed_identifier_index___4-123',
15106 J),
15107 delete_ht(J, k(G, D, E), A)
15108 ),
15109 nb_getval('$chr_store_multi_hash_chr_translate____type_indexed_identifier_index___4-23',
15110 K),
15111 delete_ht(K, k(D, E), A),
15112 type_indexed_identifier_index___4__0__0__2(B,
15113 C,
15114 D,
15115 E,
15116 F)
15117 ; type_indexed_identifier_index___4__0__0__2(B,
15118 C,
15119 D,
15120 E,
15121 F)
15122 ).
15123type_indexed_identifier_index(A, B, C, D) :-
15124 type_indexed_identifier_index___4__1(A, B, C, D).
15125type_indexed_identifier_index___4__1(A, B, C, D) :-
15126 E=suspension(F, active, A, B, C, D),
15127 'chr gen_id'(F),
15128 nb_getval('$chr_store_multi_hash_chr_translate____type_indexed_identifier_index___4-123',
15129 G),
15130 insert_ht(G, k(A, B, C), E),
15131 nb_getval('$chr_store_multi_hash_chr_translate____type_indexed_identifier_index___4-23',
15132 H),
15133 insert_ht(H, k(B, C), E).
15134get_type_indexed_identifier_index(A, B, C, D) :-
15135 nb_getval('$chr_store_multi_hash_chr_translate____type_indexed_identifier_index___4-123',
15136 E),
15137 lookup_ht(E, k(A, B, C), F),
15138 member(G, F),
15139 G=suspension(_, active, _, _, _, H),
15140 !,
15141 D=H.
15142get_type_indexed_identifier_index(A, B, C, D) :-
15143 nb_getval('$chr_store_multi_hash_chr_translate____type_indexed_identifier_size___2-1',
15144 E),
15145 lookup_ht(E, A, F),
15146 member(G, F),
15147 G=suspension(_, active, _, H),
15148 !,
15149 setarg(2, G, removed),
15150 nb_getval('$chr_store_multi_hash_chr_translate____type_indexed_identifier_size___2-1',
15151 I),
15152 delete_ht(I, A, G),
15153 J is H+1,
15154 type_indexed_identifier_index(A, B, C, J),
15155 type_indexed_identifier_size(A, J),
15156 D=J.
15157get_type_indexed_identifier_index(A, B, C, D) :-
15158 type_indexed_identifier_index(A, B, C, 2),
15159 type_indexed_identifier_size(A, 2),
15160 D=2.
15161no_history(A) :-
15162 B=suspension(C, active, A),
15163 'chr gen_id'(C),
15164 nb_getval('$chr_store_multi_hash_chr_translate____no_history___1-1', D),
15165 insert_ht(D, A, B).
15166has_no_history(A) :-
15167 nb_getval('$chr_store_multi_hash_chr_translate____no_history___1-1', B),
15168 lookup_ht(B, A, C),
15169 member(D, C),
15170 D=suspension(_, active, _),
15171 !.
15172has_no_history(_) :-
15173 fail.
15174history(A, B, C) :-
15175 history___3__0(A, B, C, _).
15176history___3__0(A, B, C, D) :-
15177 nb_getval('$chr_store_multi_hash_chr_translate____history___3-1', E),
15178 lookup_ht(E, A, F),
15179 !,
15180 D=suspension(G, not_stored_yet, t, A, B, C),
15181 'chr gen_id'(G),
15182 history___3__0__0__1(F, A, B, C, D).
15183history___3__0__0__1([], A, B, C, D) :-
15184 history___3__1(A, B, C, D).
15185history___3__0__0__1([A|B], C, D, E, F) :-
15186 ( A=suspension(_, active, _, G, _, _),
15187 G==C,
15188 H=t(95, F, A),
15189 '$novel_production'(F, H),
15190 '$novel_production'(A, H)
15191 -> '$extend_history'(F, H),
15192 arg(2, F, I),
15193 setarg(2, F, active),
15194 ( I==not_stored_yet
15195 -> ( '$chr_store_constants_chr_translate____history___3___[3]'(E,
15196 J)
15197 -> nb_getval(J, K),
15198 b_setval(J, [F|K])
15199 ; true
15200 ),
15201 nb_getval('$chr_store_multi_hash_chr_translate____history___3-2',
15202 L),
15203 insert_ht(L, D, F),
15204 nb_getval('$chr_store_multi_hash_chr_translate____history___3-1',
15205 M),
15206 insert_ht(M, C, F)
15207 ; true
15208 ),
15209 chr_error(syntax,
15210 'Only one pragma history allowed per rule (rule number ~w)\n',
15211 [C]),
15212 ( F=suspension(_, active, _, _, _, _)
15213 -> setarg(2, F, inactive),
15214 history___3__0__0__1(B, C, D, E, F)
15215 ; true
15216 )
15217 ; history___3__0__0__1(B, C, D, E, F)
15218 ).
15219history___3__0(A, B, C, D) :-
15220 D=suspension(E, not_stored_yet, t, A, B, C),
15221 'chr gen_id'(E),
15222 history___3__1(A, B, C, D).
15223history___3__1(A, B, C, D) :-
15224 nb_getval('$chr_store_multi_hash_chr_translate____history___3-1', E),
15225 lookup_ht(E, A, F),
15226 !,
15227 history___3__1__0__2(F, A, B, C, D).
15228history___3__1__0__2([], A, B, C, D) :-
15229 history___3__2(A, B, C, D).
15230history___3__1__0__2([A|B], C, D, E, F) :-
15231 ( A=suspension(_, active, _, G, _, _),
15232 G==C,
15233 H=t(95, A, F),
15234 '$novel_production'(A, H),
15235 '$novel_production'(F, H)
15236 -> '$extend_history'(F, H),
15237 arg(2, F, I),
15238 setarg(2, F, active),
15239 ( I==not_stored_yet
15240 -> ( '$chr_store_constants_chr_translate____history___3___[3]'(E,
15241 J)
15242 -> nb_getval(J, K),
15243 b_setval(J, [F|K])
15244 ; true
15245 ),
15246 nb_getval('$chr_store_multi_hash_chr_translate____history___3-2',
15247 L),
15248 insert_ht(L, D, F),
15249 nb_getval('$chr_store_multi_hash_chr_translate____history___3-1',
15250 M),
15251 insert_ht(M, C, F)
15252 ; true
15253 ),
15254 chr_error(syntax,
15255 'Only one pragma history allowed per rule (rule number ~w)\n',
15256 [C]),
15257 ( F=suspension(_, active, _, _, _, _)
15258 -> setarg(2, F, inactive),
15259 history___3__1__0__2(B, C, D, E, F)
15260 ; true
15261 )
15262 ; history___3__1__0__2(B, C, D, E, F)
15263 ).
15264history___3__1(A, B, C, D) :-
15265 history___3__2(A, B, C, D).
15266history___3__2(A, B, C, D) :-
15267 nb_getval('$chr_store_multi_hash_chr_translate____history___3-2', E),
15268 lookup_ht(E, B, F),
15269 !,
15270 history___3__2__0__3(F, A, B, C, D).
15271history___3__2__0__3([], A, B, C, D) :-
15272 history___3__3(A, B, C, D).
15273history___3__2__0__3([A|B], C, D, E, F) :-
15274 ( A=suspension(_, active, _, G, H, I),
15275 H==D,
15276 J=t(96, F, A),
15277 '$novel_production'(F, J),
15278 '$novel_production'(A, J)
15279 -> '$extend_history'(F, J),
15280 arg(2, F, K),
15281 setarg(2, F, active),
15282 ( K==not_stored_yet
15283 -> ( '$chr_store_constants_chr_translate____history___3___[3]'(E,
15284 L)
15285 -> nb_getval(L, M),
15286 b_setval(L, [F|M])
15287 ; true
15288 ),
15289 nb_getval('$chr_store_multi_hash_chr_translate____history___3-2',
15290 N),
15291 insert_ht(N, D, F),
15292 nb_getval('$chr_store_multi_hash_chr_translate____history___3-1',
15293 O),
15294 insert_ht(O, C, F)
15295 ; true
15296 ),
15297 length(E, P),
15298 length(I, Q),
15299 ( P\==Q
15300 -> chr_error(syntax,
15301 'The history named ~w does not always range over an equal amount of occurrences.\n',
15302 [D])
15303 ; test_named_history_id_pairs(C, E, G, I)
15304 ),
15305 ( F=suspension(_, active, _, _, _, _)
15306 -> setarg(2, F, inactive),
15307 history___3__2__0__3(B, C, D, E, F)
15308 ; true
15309 )
15310 ; history___3__2__0__3(B, C, D, E, F)
15311 ).
15312history___3__2(A, B, C, D) :-
15313 history___3__3(A, B, C, D).
15314history___3__3(A, B, C, D) :-
15315 nb_getval('$chr_store_multi_hash_chr_translate____history___3-2', E),
15316 lookup_ht(E, B, F),
15317 !,
15318 history___3__3__0__4(F, A, B, C, D).
15319history___3__3__0__4([], A, B, C, D) :-
15320 history___3__4(A, B, C, D).
15321history___3__3__0__4([A|B], C, D, E, F) :-
15322 ( A=suspension(_, active, _, G, H, I),
15323 H==D,
15324 J=t(96, A, F),
15325 '$novel_production'(A, J),
15326 '$novel_production'(F, J)
15327 -> '$extend_history'(F, J),
15328 arg(2, F, K),
15329 setarg(2, F, active),
15330 ( K==not_stored_yet
15331 -> ( '$chr_store_constants_chr_translate____history___3___[3]'(E,
15332 L)
15333 -> nb_getval(L, M),
15334 b_setval(L, [F|M])
15335 ; true
15336 ),
15337 nb_getval('$chr_store_multi_hash_chr_translate____history___3-2',
15338 N),
15339 insert_ht(N, D, F),
15340 nb_getval('$chr_store_multi_hash_chr_translate____history___3-1',
15341 O),
15342 insert_ht(O, C, F)
15343 ; true
15344 ),
15345 length(I, P),
15346 length(E, Q),
15347 ( P\==Q
15348 -> chr_error(syntax,
15349 'The history named ~w does not always range over an equal amount of occurrences.\n',
15350 [D])
15351 ; test_named_history_id_pairs(G, I, C, E)
15352 ),
15353 ( F=suspension(_, active, _, _, _, _)
15354 -> setarg(2, F, inactive),
15355 history___3__3__0__4(B, C, D, E, F)
15356 ; true
15357 )
15358 ; history___3__3__0__4(B, C, D, E, F)
15359 ).
15360history___3__3(A, B, C, D) :-
15361 history___3__4(A, B, C, D).
15362history___3__4(A, B, [], C) :-
15363 nb_getval('$chr_store_global_ground_chr_translate____find_empty_named_histories___0',
15364 D),
15365 !,
15366 history___3__4__0__6(D, A, B, [], C).
15367history___3__4__0__6([], A, B, C, D) :-
15368 history___3__5(A, B, C, D).
15369history___3__4__0__6([A|B], C, D, E, F) :-
15370 ( A=suspension(_, active, _, _),
15371 G=t(142, A, F),
15372 '$novel_production'(A, G),
15373 '$novel_production'(F, G)
15374 -> '$extend_history'(F, G),
15375 arg(2, F, H),
15376 setarg(2, F, active),
15377 ( H==not_stored_yet
15378 -> ( '$chr_store_constants_chr_translate____history___3___[3]'(E,
15379 I)
15380 -> nb_getval(I, J),
15381 b_setval(I, [F|J])
15382 ; true
15383 ),
15384 nb_getval('$chr_store_multi_hash_chr_translate____history___3-2',
15385 K),
15386 insert_ht(K, D, F),
15387 nb_getval('$chr_store_multi_hash_chr_translate____history___3-1',
15388 L),
15389 insert_ht(L, C, F)
15390 ; true
15391 ),
15392 generate_empty_named_history_initialisation(D),
15393 ( F=suspension(_, active, _, _, _, _)
15394 -> setarg(2, F, inactive),
15395 history___3__4__0__6(B, C, D, E, F)
15396 ; true
15397 )
15398 ; history___3__4__0__6(B, C, D, E, F)
15399 ).
15400history___3__4(A, B, C, D) :-
15401 history___3__5(A, B, C, D).
15402history___3__5(A, B, C, D) :-
15403 arg(2, D, E),
15404 setarg(2, D, active),
15405 ( E==not_stored_yet
15406 -> ( '$chr_store_constants_chr_translate____history___3___[3]'(C,
15407 F)
15408 -> nb_getval(F, G),
15409 b_setval(F, [D|G])
15410 ; true
15411 ),
15412 nb_getval('$chr_store_multi_hash_chr_translate____history___3-2',
15413 H),
15414 insert_ht(H, B, D),
15415 nb_getval('$chr_store_multi_hash_chr_translate____history___3-1',
15416 I),
15417 insert_ht(I, A, D)
15418 ; true
15419 ).
15420named_history(A, B, C) :-
15421 ground(A),
15422 nb_getval('$chr_store_multi_hash_chr_translate____history___3-1', D),
15423 lookup_ht(D, A, E),
15424 member(F, E),
15425 F=suspension(_, active, _, _, G, H),
15426 !,
15427 B=G,
15428 C=H.
15429named_history(_, _, _) :-
15430 fail.
15431test_named_history_id_pair(A, B, C, D) :-
15432 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-34',
15433 E),
15434 lookup_ht(E, k(A, B), F),
15435 member(G, F),
15436 G=suspension(_, active, _, _, H, _, _, _, _),
15437 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-134',
15438 I),
15439 lookup_ht(I, k(H, C, D), J),
15440 member(K, J),
15441 K=suspension(_, active, _, _, _, _, _, _, _),
15442 K\==G,
15443 !.
15444test_named_history_id_pair(A, _, B, _) :-
15445 chr_error(syntax,
15446 'Occurrences of shared history in rules number ~w and ~w do not correspond\n',
15447 [B, A]).
15448indexing_spec(A, B) :-
15449 nb_getval('$chr_store_multi_hash_chr_translate____indexing_spec___2-1',
15450 C),
15451 lookup_ht(C, A, D),
15452 member(E, D),
15453 E=suspension(_, active, _, F),
15454 !,
15455 setarg(2, E, removed),
15456 nb_getval('$chr_store_multi_hash_chr_translate____indexing_spec___2-1',
15457 G),
15458 delete_ht(G, A, E),
15459 append(B, F, H),
15460 indexing_spec(A, H).
15461indexing_spec(A, B) :-
15462 C=suspension(D, active, A, B),
15463 'chr gen_id'(D),
15464 nb_getval('$chr_store_multi_hash_chr_translate____indexing_spec___2-1',
15465 E),
15466 insert_ht(E, A, C).
15467get_indexing_spec(A, B) :-
15468 nb_getval('$chr_store_multi_hash_chr_translate____indexing_spec___2-1',
15469 C),
15470 lookup_ht(C, A, D),
15471 member(E, D),
15472 E=suspension(_, active, _, F),
15473 !,
15474 B=F.
15475get_indexing_spec(_, []).
15476observation_analysis(A) :-
15477 observation_analysis___1__0(A, _).
15478observation_analysis___1__0(A, B) :-
15479 nb_getval('$chr_store_global_ground_chr_translate____rule___2', C),
15480 !,
15481 B=suspension(D, not_stored_yet, _, A),
15482 'chr gen_id'(D),
15483 observation_analysis___1__0__0__1(C, A, B).
15484observation_analysis___1__0__0__1([], A, B) :-
15485 observation_analysis___1__1(A, B).
15486observation_analysis___1__0__0__1([A|B], C, D) :-
15487 ( A=suspension(_, active, _, _, E, F)
15488 -> F=pragma(rule(_, _, G, H), _, _, _, _),
15489 ( chr_pp_flag(store_in_guards, on)
15490 -> observation_analysis(E, G, guard, C)
15491 ; true
15492 ),
15493 observation_analysis(E, H, body, C),
15494 observation_analysis___1__0__0__1(B, C, D)
15495 ; observation_analysis___1__0__0__1(B, C, D)
15496 ).
15497observation_analysis___1__0(A, B) :-
15498 B=suspension(C, not_stored_yet, _, A),
15499 'chr gen_id'(C),
15500 observation_analysis___1__1(A, B).
15501observation_analysis___1__1(_, A) :-
15502 ( var(A)
15503 -> true
15504 ; arg(2, A, B),
15505 setarg(2, A, removed),
15506 ( B==not_stored_yet
15507 -> true
15508 ; arg(3, A, C),
15509 ( var(C)
15510 -> nb_getval('$chr_store_global_ground_chr_translate____observation_analysis___1',
15511 D),
15512 D=[_|E],
15513 b_setval('$chr_store_global_ground_chr_translate____observation_analysis___1',
15514 E),
15515 ( E=[F|_]
15516 -> setarg(3, F, _)
15517 ; true
15518 )
15519 ; C=[_, _|E],
15520 setarg(2, C, E),
15521 ( E=[F|_]
15522 -> setarg(3, F, C)
15523 ; true
15524 )
15525 )
15526 )
15527 ).
15528spawns(A, B, C) :-
15529 spawns___3__0(A, B, C, _).
15530spawns___3__0(A, B, C, _) :-
15531 nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-123', D),
15532 lookup_ht(D, k(A, B, C), E),
15533 member(F, E),
15534 F=suspension(_, active, _, _, _, _, _),
15535 !.
15536spawns___3__0(A, body, B, _) :-
15537 nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-123', C),
15538 lookup_ht(C, k(A, guard, B), D),
15539 member(E, D),
15540 E=suspension(_, active, _, _, _, _, _),
15541 !.
15542spawns___3__0(A, guard, B, C) :-
15543 nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-123', D),
15544 lookup_ht(D, k(A, body, B), E),
15545 !,
15546 spawns___3__0__0__4(E, A, guard, B, C).
15547spawns___3__0__0__4([], A, B, C, D) :-
15548 spawns___3__1(A, B, C, D).
15549spawns___3__0__0__4([A|B], C, D, E, F) :-
15550 ( A=suspension(_, active, _, _, G, H, I),
15551 G==C,
15552 H=body,
15553 I==E
15554 -> setarg(2, A, removed),
15555 ( nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-13',
15556 J),
15557 delete_ht(J, k(C, E), A)
15558 ),
15559 ( arg(4, A, K),
15560 ( var(K)
15561 -> nb_getval('$chr_store_global_ground_chr_translate____spawns___3',
15562 L),
15563 L=[_|M],
15564 b_setval('$chr_store_global_ground_chr_translate____spawns___3',
15565 M),
15566 ( M=[N|_]
15567 -> setarg(4, N, _)
15568 ; true
15569 )
15570 ; K=[_, _|M],
15571 setarg(2, K, M),
15572 ( M=[N|_]
15573 -> setarg(4, N, K)
15574 ; true
15575 )
15576 )
15577 ),
15578 ( nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-12',
15579 O),
15580 delete_ht(O, k(C, body), A)
15581 ),
15582 ( nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-1',
15583 P),
15584 delete_ht(P, C, A)
15585 ),
15586 ( nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-3',
15587 Q),
15588 delete_ht(Q, E, A)
15589 ),
15590 nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-123',
15591 R),
15592 delete_ht(R, k(C, body, E), A),
15593 spawns___3__0__0__4(B, C, D, E, F)
15594 ; spawns___3__0__0__4(B, C, D, E, F)
15595 ).
15596spawns___3__0(A, B, C, D) :-
15597 spawns___3__1(A, B, C, D).
15598spawns___3__1(A, B, C, D) :-
15599 nb_getval('$chr_store_multi_hash_chr_translate____spawns_all___2-12',
15600 E),
15601 lookup_ht(E, k(A, B), F),
15602 member(G, F),
15603 G=suspension(_, active, _, _),
15604 !,
15605 ( var(D)
15606 -> true
15607 ; arg(2, D, H),
15608 setarg(2, D, removed),
15609 ( H==not_stored_yet
15610 -> true
15611 ; nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-13',
15612 I),
15613 delete_ht(I, k(A, C), D),
15614 arg(4, D, J),
15615 ( var(J)
15616 -> nb_getval('$chr_store_global_ground_chr_translate____spawns___3',
15617 K),
15618 K=[_|L],
15619 b_setval('$chr_store_global_ground_chr_translate____spawns___3',
15620 L),
15621 ( L=[M|_]
15622 -> setarg(4, M, _)
15623 ; true
15624 )
15625 ; J=[_, _|L],
15626 setarg(2, J, L),
15627 ( L=[M|_]
15628 -> setarg(4, M, J)
15629 ; true
15630 )
15631 ),
15632 nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-12',
15633 N),
15634 delete_ht(N, k(A, B), D),
15635 nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-1',
15636 O),
15637 delete_ht(O, A, D),
15638 nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-3',
15639 P),
15640 delete_ht(P, C, D),
15641 nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-123',
15642 Q),
15643 delete_ht(Q, k(A, B, C), D)
15644 )
15645 ).
15646spawns___3__1(A, body, B, C) :-
15647 nb_getval('$chr_store_multi_hash_chr_translate____spawns_all___2-12',
15648 D),
15649 lookup_ht(D, k(A, guard), E),
15650 member(F, E),
15651 F=suspension(_, active, _, _),
15652 !,
15653 ( var(C)
15654 -> true
15655 ; arg(2, C, G),
15656 setarg(2, C, removed),
15657 ( G==not_stored_yet
15658 -> true
15659 ; nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-13',
15660 H),
15661 delete_ht(H, k(A, B), C),
15662 arg(4, C, I),
15663 ( var(I)
15664 -> nb_getval('$chr_store_global_ground_chr_translate____spawns___3',
15665 J),
15666 J=[_|K],
15667 b_setval('$chr_store_global_ground_chr_translate____spawns___3',
15668 K),
15669 ( K=[L|_]
15670 -> setarg(4, L, _)
15671 ; true
15672 )
15673 ; I=[_, _|K],
15674 setarg(2, I, K),
15675 ( K=[L|_]
15676 -> setarg(4, L, I)
15677 ; true
15678 )
15679 ),
15680 nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-12',
15681 M),
15682 delete_ht(M, k(A, body), C),
15683 nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-1',
15684 N),
15685 delete_ht(N, A, C),
15686 nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-3',
15687 O),
15688 delete_ht(O, B, C),
15689 nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-123',
15690 P),
15691 delete_ht(P, k(A, body, B), C)
15692 )
15693 ).
15694spawns___3__1(A, B, C, D) :-
15695 nb_getval('$chr_store_multi_hash_chr_translate____spawns_all_triggers___2-12',
15696 E),
15697 lookup_ht(E, k(A, B), F),
15698 member(G, F),
15699 G=suspension(_, active, _, _, _, _),
15700 may_trigger(C),
15701 !,
15702 ( var(D)
15703 -> true
15704 ; arg(2, D, H),
15705 setarg(2, D, removed),
15706 ( H==not_stored_yet
15707 -> true
15708 ; nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-13',
15709 I),
15710 delete_ht(I, k(A, C), D),
15711 arg(4, D, J),
15712 ( var(J)
15713 -> nb_getval('$chr_store_global_ground_chr_translate____spawns___3',
15714 K),
15715 K=[_|L],
15716 b_setval('$chr_store_global_ground_chr_translate____spawns___3',
15717 L),
15718 ( L=[M|_]
15719 -> setarg(4, M, _)
15720 ; true
15721 )
15722 ; J=[_, _|L],
15723 setarg(2, J, L),
15724 ( L=[M|_]
15725 -> setarg(4, M, J)
15726 ; true
15727 )
15728 ),
15729 nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-12',
15730 N),
15731 delete_ht(N, k(A, B), D),
15732 nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-1',
15733 O),
15734 delete_ht(O, A, D),
15735 nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-3',
15736 P),
15737 delete_ht(P, C, D),
15738 nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-123',
15739 Q),
15740 delete_ht(Q, k(A, B, C), D)
15741 )
15742 ).
15743spawns___3__1(A, body, B, C) :-
15744 nb_getval('$chr_store_multi_hash_chr_translate____spawns_all_triggers___2-12',
15745 D),
15746 lookup_ht(D, k(A, guard), E),
15747 member(F, E),
15748 F=suspension(_, active, _, _, _, _),
15749 may_trigger(B),
15750 !,
15751 ( var(C)
15752 -> true
15753 ; arg(2, C, G),
15754 setarg(2, C, removed),
15755 ( G==not_stored_yet
15756 -> true
15757 ; nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-13',
15758 H),
15759 delete_ht(H, k(A, B), C),
15760 arg(4, C, I),
15761 ( var(I)
15762 -> nb_getval('$chr_store_global_ground_chr_translate____spawns___3',
15763 J),
15764 J=[_|K],
15765 b_setval('$chr_store_global_ground_chr_translate____spawns___3',
15766 K),
15767 ( K=[L|_]
15768 -> setarg(4, L, _)
15769 ; true
15770 )
15771 ; I=[_, _|K],
15772 setarg(2, I, K),
15773 ( K=[L|_]
15774 -> setarg(4, L, I)
15775 ; true
15776 )
15777 ),
15778 nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-12',
15779 M),
15780 delete_ht(M, k(A, body), C),
15781 nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-1',
15782 N),
15783 delete_ht(N, A, C),
15784 nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-3',
15785 O),
15786 delete_ht(O, B, C),
15787 nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-123',
15788 P),
15789 delete_ht(P, k(A, body, B), C)
15790 )
15791 ).
15792spawns___3__1(A, B, C, D) :-
15793 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-1', E),
15794 lookup_ht(E, C, F),
15795 ( member(G, F),
15796 G=suspension(_, active, _, _, _, _, H, I, _),
15797 ( nb_getval('$chr_store_multi_hash_chr_translate____spawns_all___2-1',
15798 J),
15799 lookup_ht(J, H, K),
15800 member(L, K),
15801 L=suspension(_, active, _, _),
15802 \+ is_passive(H, I),
15803 !,
15804 ( var(D)
15805 -> true
15806 ; arg(2, D, M),
15807 setarg(2, D, removed),
15808 ( M==not_stored_yet
15809 -> true
15810 ; nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-13',
15811 N),
15812 delete_ht(N, k(A, C), D),
15813 arg(4, D, O),
15814 ( var(O)
15815 -> nb_getval('$chr_store_global_ground_chr_translate____spawns___3',
15816 P),
15817 P=[_|Q],
15818 b_setval('$chr_store_global_ground_chr_translate____spawns___3',
15819 Q),
15820 ( Q=[R|_]
15821 -> setarg(4, R, _)
15822 ; true
15823 )
15824 ; O=[_, _|Q],
15825 setarg(2, O, Q),
15826 ( Q=[R|_]
15827 -> setarg(4, R, O)
15828 ; true
15829 )
15830 ),
15831 nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-12',
15832 S),
15833 delete_ht(S, k(A, B), D),
15834 nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-1',
15835 T),
15836 delete_ht(T, A, D),
15837 nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-3',
15838 U),
15839 delete_ht(U, C, D),
15840 nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-123',
15841 V),
15842 delete_ht(V, k(A, B, C), D)
15843 )
15844 ),
15845 spawns_all(A, B)
15846 ; nb_getval('$chr_store_multi_hash_chr_translate____spawns_all_triggers___2-1',
15847 W),
15848 lookup_ht(W, H, X),
15849 member(Y, X),
15850 Y=suspension(_, active, _, _, _, _),
15851 may_trigger(C),
15852 \+ is_passive(H, I),
15853 !,
15854 ( var(D)
15855 -> true
15856 ; arg(2, D, Z),
15857 setarg(2, D, removed),
15858 ( Z==not_stored_yet
15859 -> true
15860 ; nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-13',
15861 A1),
15862 delete_ht(A1, k(A, C), D),
15863 arg(4, D, B1),
15864 ( var(B1)
15865 -> nb_getval('$chr_store_global_ground_chr_translate____spawns___3',
15866 C1),
15867 C1=[_|D1],
15868 b_setval('$chr_store_global_ground_chr_translate____spawns___3',
15869 D1),
15870 ( D1=[E1|_]
15871 -> setarg(4, E1, _)
15872 ; true
15873 )
15874 ; B1=[_, _|D1],
15875 setarg(2, B1, D1),
15876 ( D1=[E1|_]
15877 -> setarg(4, E1, B1)
15878 ; true
15879 )
15880 ),
15881 nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-12',
15882 F1),
15883 delete_ht(F1, k(A, B), D),
15884 nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-1',
15885 G1),
15886 delete_ht(G1, A, D),
15887 nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-3',
15888 H1),
15889 delete_ht(H1, C, D),
15890 nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-123',
15891 I1),
15892 delete_ht(I1, k(A, B, C), D)
15893 )
15894 ),
15895 spawns_all_triggers(A, B)
15896 )
15897 ; !,
15898 D=suspension(J1, not_stored_yet, t, _, A, B, C),
15899 'chr gen_id'(J1),
15900 spawns___3__1__0__11(F, A, B, C, D)
15901 ).
15902spawns___3__1__0__11([], A, B, C, D) :-
15903 spawns___3__2(A, B, C, D).
15904spawns___3__1__0__11([A|B], C, D, E, F) :-
15905 ( A=suspension(_, active, _, _, G, _, H, I, _),
15906 G==E,
15907 nb_getval('$chr_store_multi_hash_chr_translate____spawns_all_triggers___2-1',
15908 J),
15909 lookup_ht(J, H, K)
15910 -> spawns___3__1__1__11(K,
15911 H,
15912 I,
15913 A,
15914 B,
15915 C,
15916 D,
15917 E,
15918 F)
15919 ; spawns___3__1__0__11(B, C, D, E, F)
15920 ).
15921spawns___3__1__1__11([], _, _, _, A, B, C, D, E) :-
15922 spawns___3__1__0__11(A, B, C, D, E).
15923spawns___3__1__1__11([A|B], C, D, E, F, G, H, I, J) :-
15924 ( A=suspension(_, active, _, _, K, _),
15925 K==C,
15926 L=t(123, A, E, J),
15927 '$novel_production'(A, L),
15928 '$novel_production'(J, L),
15929 \+ may_trigger(I),
15930 \+ is_passive(C, D)
15931 -> '$extend_history'(J, L),
15932 arg(2, J, M),
15933 setarg(2, J, active),
15934 ( M==not_stored_yet
15935 -> nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-13',
15936 N),
15937 insert_ht(N, k(G, I), J),
15938 nb_getval('$chr_store_global_ground_chr_translate____spawns___3',
15939 O),
15940 P=[J|O],
15941 b_setval('$chr_store_global_ground_chr_translate____spawns___3',
15942 P),
15943 ( O=[Q|_]
15944 -> setarg(4, Q, P)
15945 ; true
15946 ),
15947 nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-12',
15948 R),
15949 insert_ht(R, k(G, H), J),
15950 nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-1',
15951 S),
15952 insert_ht(S, G, J),
15953 nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-3',
15954 T),
15955 insert_ht(T, I, J),
15956 nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-123',
15957 U),
15958 insert_ht(U, k(G, H, I), J)
15959 ; true
15960 ),
15961 spawns_all_triggers(G, H),
15962 ( J=suspension(_, active, _, _, _, _, _)
15963 -> setarg(2, J, inactive),
15964 spawns___3__1__1__11(B,
15965 C,
15966 D,
15967 E,
15968 F,
15969 G,
15970 H,
15971 I,
15972 J)
15973 ; true
15974 )
15975 ; spawns___3__1__1__11(B,
15976 C,
15977 D,
15978 E,
15979 F,
15980 G,
15981 H,
15982 I,
15983 J)
15984 ).
15985spawns___3__1(A, B, C, D) :-
15986 D=suspension(E, not_stored_yet, t, _, A, B, C),
15987 'chr gen_id'(E),
15988 spawns___3__2(A, B, C, D).
15989spawns___3__2(A, B, C, D) :-
15990 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-3', E),
15991 lookup_ht(E, A, F),
15992 !,
15993 spawns___3__2__0__12(F, A, B, C, D).
15994spawns___3__2__0__12([], A, B, C, D) :-
15995 spawns___3__3(A, B, C, D).
15996spawns___3__2__0__12([A|B], C, D, E, F) :-
15997 ( A=suspension(_, active, _, _, G, _, H, I, _),
15998 H==C,
15999 nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-3', J),
16000 lookup_ht(J, G, K)
16001 -> spawns___3__2__1__12(K,
16002 G,
16003 I,
16004 A,
16005 B,
16006 C,
16007 D,
16008 E,
16009 F)
16010 ; spawns___3__2__0__12(B, C, D, E, F)
16011 ).
16012spawns___3__2__1__12([], _, _, _, A, B, C, D, E) :-
16013 spawns___3__2__0__12(A, B, C, D, E).
16014spawns___3__2__1__12([A|B], C, D, E, F, G, H, I, J) :-
16015 ( A=suspension(_, active, _, _, K, L, M),
16016 M==C,
16017 N=t(124, J, E, A),
16018 '$novel_production'(J, N),
16019 '$novel_production'(A, N),
16020 K\==G,
16021 C\==I,
16022 \+ is_passive(G, D)
16023 -> '$extend_history'(J, N),
16024 arg(2, J, O),
16025 setarg(2, J, active),
16026 ( O==not_stored_yet
16027 -> nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-13',
16028 P),
16029 insert_ht(P, k(G, I), J),
16030 nb_getval('$chr_store_global_ground_chr_translate____spawns___3',
16031 Q),
16032 R=[J|Q],
16033 b_setval('$chr_store_global_ground_chr_translate____spawns___3',
16034 R),
16035 ( Q=[S|_]
16036 -> setarg(4, S, R)
16037 ; true
16038 ),
16039 nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-12',
16040 T),
16041 insert_ht(T, k(G, H), J),
16042 nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-1',
16043 U),
16044 insert_ht(U, G, J),
16045 nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-3',
16046 V),
16047 insert_ht(V, I, J),
16048 nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-123',
16049 W),
16050 insert_ht(W, k(G, H, I), J)
16051 ; true
16052 ),
16053 spawns(K, L, I),
16054 ( J=suspension(_, active, _, _, _, _, _)
16055 -> setarg(2, J, inactive),
16056 spawns___3__2__1__12(B,
16057 C,
16058 D,
16059 E,
16060 F,
16061 G,
16062 H,
16063 I,
16064 J)
16065 ; true
16066 )
16067 ; spawns___3__2__1__12(B,
16068 C,
16069 D,
16070 E,
16071 F,
16072 G,
16073 H,
16074 I,
16075 J)
16076 ).
16077spawns___3__2(A, B, C, D) :-
16078 spawns___3__3(A, B, C, D).
16079spawns___3__3(A, B, C, D) :-
16080 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-1', E),
16081 lookup_ht(E, C, F),
16082 !,
16083 spawns___3__3__0__13(F, A, B, C, D).
16084spawns___3__3__0__13([], A, B, C, D) :-
16085 spawns___3__4(A, B, C, D).
16086spawns___3__3__0__13([A|B], C, D, E, F) :-
16087 ( A=suspension(_, active, _, _, G, _, H, I, _),
16088 G==E,
16089 nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-1', J),
16090 lookup_ht(J, H, K)
16091 -> spawns___3__3__1__13(K,
16092 H,
16093 I,
16094 A,
16095 B,
16096 C,
16097 D,
16098 E,
16099 F)
16100 ; spawns___3__3__0__13(B, C, D, E, F)
16101 ).
16102spawns___3__3__1__13([], _, _, _, A, B, C, D, E) :-
16103 spawns___3__3__0__13(A, B, C, D, E).
16104spawns___3__3__1__13([A|B], C, D, E, F, G, H, I, J) :-
16105 ( A=suspension(_, active, _, _, K, _, L),
16106 K==C,
16107 M=t(124, A, E, J),
16108 '$novel_production'(A, M),
16109 '$novel_production'(J, M),
16110 G\==C,
16111 I\==L,
16112 \+ is_passive(C, D)
16113 -> '$extend_history'(J, M),
16114 arg(2, J, N),
16115 setarg(2, J, active),
16116 ( N==not_stored_yet
16117 -> nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-13',
16118 O),
16119 insert_ht(O, k(G, I), J),
16120 nb_getval('$chr_store_global_ground_chr_translate____spawns___3',
16121 P),
16122 Q=[J|P],
16123 b_setval('$chr_store_global_ground_chr_translate____spawns___3',
16124 Q),
16125 ( P=[R|_]
16126 -> setarg(4, R, Q)
16127 ; true
16128 ),
16129 nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-12',
16130 S),
16131 insert_ht(S, k(G, H), J),
16132 nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-1',
16133 T),
16134 insert_ht(T, G, J),
16135 nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-3',
16136 U),
16137 insert_ht(U, I, J),
16138 nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-123',
16139 V),
16140 insert_ht(V, k(G, H, I), J)
16141 ; true
16142 ),
16143 spawns(G, H, L),
16144 ( J=suspension(_, active, _, _, _, _, _)
16145 -> setarg(2, J, inactive),
16146 spawns___3__3__1__13(B,
16147 C,
16148 D,
16149 E,
16150 F,
16151 G,
16152 H,
16153 I,
16154 J)
16155 ; true
16156 )
16157 ; spawns___3__3__1__13(B,
16158 C,
16159 D,
16160 E,
16161 F,
16162 G,
16163 H,
16164 I,
16165 J)
16166 ).
16167spawns___3__3(A, B, C, D) :-
16168 spawns___3__4(A, B, C, D).
16169spawns___3__4(A, B, C, D) :-
16170 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-3', E),
16171 lookup_ht(E, A, F),
16172 !,
16173 spawns___3__4__0__14(F, A, B, C, D).
16174spawns___3__4__0__14([], A, B, C, D) :-
16175 spawns___3__5(A, B, C, D).
16176spawns___3__4__0__14([A|B], C, D, E, F) :-
16177 ( A=suspension(_, active, _, _, G, _, H, I, _),
16178 H==C,
16179 nb_getval('$chr_store_global_ground_chr_translate____spawns_all_triggers___2',
16180 J)
16181 -> spawns___3__4__1__14(J,
16182 G,
16183 I,
16184 A,
16185 B,
16186 C,
16187 D,
16188 E,
16189 F)
16190 ; spawns___3__4__0__14(B, C, D, E, F)
16191 ).
16192spawns___3__4__1__14([], _, _, _, A, B, C, D, E) :-
16193 spawns___3__4__0__14(A, B, C, D, E).
16194spawns___3__4__1__14([A|B], C, D, E, F, G, H, I, J) :-
16195 ( A=suspension(_, active, _, _, K, L),
16196 M=t(125, J, E, A),
16197 '$novel_production'(J, M),
16198 '$novel_production'(A, M),
16199 \+ is_passive(G, D),
16200 may_trigger(C),
16201 \+ may_trigger(I)
16202 -> '$extend_history'(J, M),
16203 arg(2, J, N),
16204 setarg(2, J, active),
16205 ( N==not_stored_yet
16206 -> nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-13',
16207 O),
16208 insert_ht(O, k(G, I), J),
16209 nb_getval('$chr_store_global_ground_chr_translate____spawns___3',
16210 P),
16211 Q=[J|P],
16212 b_setval('$chr_store_global_ground_chr_translate____spawns___3',
16213 Q),
16214 ( P=[R|_]
16215 -> setarg(4, R, Q)
16216 ; true
16217 ),
16218 nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-12',
16219 S),
16220 insert_ht(S, k(G, H), J),
16221 nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-1',
16222 T),
16223 insert_ht(T, G, J),
16224 nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-3',
16225 U),
16226 insert_ht(U, I, J),
16227 nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-123',
16228 V),
16229 insert_ht(V, k(G, H, I), J)
16230 ; true
16231 ),
16232 spawns(K, L, I),
16233 ( J=suspension(_, active, _, _, _, _, _)
16234 -> setarg(2, J, inactive),
16235 spawns___3__4__1__14(B,
16236 C,
16237 D,
16238 E,
16239 F,
16240 G,
16241 H,
16242 I,
16243 J)
16244 ; true
16245 )
16246 ; spawns___3__4__1__14(B,
16247 C,
16248 D,
16249 E,
16250 F,
16251 G,
16252 H,
16253 I,
16254 J)
16255 ).
16256spawns___3__4(A, B, C, D) :-
16257 spawns___3__5(A, B, C, D).
16258spawns___3__5(A, B, C, D) :-
16259 arg(2, D, E),
16260 setarg(2, D, active),
16261 ( E==not_stored_yet
16262 -> nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-13',
16263 F),
16264 insert_ht(F, k(A, C), D),
16265 nb_getval('$chr_store_global_ground_chr_translate____spawns___3',
16266 G),
16267 H=[D|G],
16268 b_setval('$chr_store_global_ground_chr_translate____spawns___3', H),
16269 ( G=[I|_]
16270 -> setarg(4, I, H)
16271 ; true
16272 ),
16273 nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-12',
16274 J),
16275 insert_ht(J, k(A, B), D),
16276 nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-1',
16277 K),
16278 insert_ht(K, A, D),
16279 nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-3',
16280 L),
16281 insert_ht(L, C, D),
16282 nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-123',
16283 M),
16284 insert_ht(M, k(A, B, C), D)
16285 ; true
16286 ).
16287spawns_all(A, B) :-
16288 spawns_all___2__0(A, B, _).
16289spawns_all___2__0(A, B, _) :-
16290 nb_getval('$chr_store_multi_hash_chr_translate____spawns_all___2-12',
16291 C),
16292 lookup_ht(C, k(A, B), D),
16293 member(E, D),
16294 E=suspension(_, active, _, _),
16295 !.
16296spawns_all___2__0(A, body, _) :-
16297 nb_getval('$chr_store_multi_hash_chr_translate____spawns_all___2-12',
16298 B),
16299 lookup_ht(B, k(A, guard), C),
16300 member(D, C),
16301 D=suspension(_, active, _, _),
16302 !.
16303spawns_all___2__0(A, guard, B) :-
16304 nb_getval('$chr_store_multi_hash_chr_translate____spawns_all___2-12',
16305 C),
16306 lookup_ht(C, k(A, body), D),
16307 !,
16308 spawns_all___2__0__0__4(D, A, guard, B).
16309spawns_all___2__0__0__4([], A, B, C) :-
16310 spawns_all___2__1(A, B, C).
16311spawns_all___2__0__0__4([A|B], C, D, E) :-
16312 ( A=suspension(_, active, F, G),
16313 F==C,
16314 G=body
16315 -> setarg(2, A, removed),
16316 ( nb_getval('$chr_store_multi_hash_chr_translate____spawns_all___2-1',
16317 H),
16318 delete_ht(H, C, A)
16319 ),
16320 nb_getval('$chr_store_multi_hash_chr_translate____spawns_all___2-12',
16321 I),
16322 delete_ht(I, k(C, body), A),
16323 spawns_all___2__0__0__4(B, C, D, E)
16324 ; spawns_all___2__0__0__4(B, C, D, E)
16325 ).
16326spawns_all___2__0(A, B, C) :-
16327 spawns_all___2__1(A, B, C).
16328spawns_all___2__1(A, B, C) :-
16329 nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-12', D),
16330 lookup_ht(D, k(A, B), E),
16331 !,
16332 spawns_all___2__1__0__5(E, A, B, C).
16333spawns_all___2__1__0__5([], A, B, C) :-
16334 spawns_all___2__2(A, B, C).
16335spawns_all___2__1__0__5([A|B], C, D, E) :-
16336 ( A=suspension(_, active, _, _, F, G, H),
16337 F==C,
16338 G==D
16339 -> setarg(2, A, removed),
16340 ( nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-13',
16341 I),
16342 delete_ht(I, k(C, H), A)
16343 ),
16344 ( arg(4, A, J),
16345 ( var(J)
16346 -> nb_getval('$chr_store_global_ground_chr_translate____spawns___3',
16347 K),
16348 K=[_|L],
16349 b_setval('$chr_store_global_ground_chr_translate____spawns___3',
16350 L),
16351 ( L=[M|_]
16352 -> setarg(4, M, _)
16353 ; true
16354 )
16355 ; J=[_, _|L],
16356 setarg(2, J, L),
16357 ( L=[M|_]
16358 -> setarg(4, M, J)
16359 ; true
16360 )
16361 )
16362 ),
16363 ( nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-12',
16364 N),
16365 delete_ht(N, k(C, D), A)
16366 ),
16367 ( nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-1',
16368 O),
16369 delete_ht(O, C, A)
16370 ),
16371 ( nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-3',
16372 P),
16373 delete_ht(P, H, A)
16374 ),
16375 nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-123',
16376 Q),
16377 delete_ht(Q, k(C, D, H), A),
16378 spawns_all___2__1__0__5(B, C, D, E)
16379 ; spawns_all___2__1__0__5(B, C, D, E)
16380 ).
16381spawns_all___2__1(A, B, C) :-
16382 spawns_all___2__2(A, B, C).
16383spawns_all___2__2(A, guard, B) :-
16384 nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-12', C),
16385 lookup_ht(C, k(A, body), D),
16386 !,
16387 spawns_all___2__2__0__6(D, A, guard, B).
16388spawns_all___2__2__0__6([], A, B, C) :-
16389 spawns_all___2__3(A, B, C).
16390spawns_all___2__2__0__6([A|B], C, D, E) :-
16391 ( A=suspension(_, active, _, _, F, G, H),
16392 F==C,
16393 G=body
16394 -> setarg(2, A, removed),
16395 ( nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-13',
16396 I),
16397 delete_ht(I, k(C, H), A)
16398 ),
16399 ( arg(4, A, J),
16400 ( var(J)
16401 -> nb_getval('$chr_store_global_ground_chr_translate____spawns___3',
16402 K),
16403 K=[_|L],
16404 b_setval('$chr_store_global_ground_chr_translate____spawns___3',
16405 L),
16406 ( L=[M|_]
16407 -> setarg(4, M, _)
16408 ; true
16409 )
16410 ; J=[_, _|L],
16411 setarg(2, J, L),
16412 ( L=[M|_]
16413 -> setarg(4, M, J)
16414 ; true
16415 )
16416 )
16417 ),
16418 ( nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-12',
16419 N),
16420 delete_ht(N, k(C, body), A)
16421 ),
16422 ( nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-1',
16423 O),
16424 delete_ht(O, C, A)
16425 ),
16426 ( nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-3',
16427 P),
16428 delete_ht(P, H, A)
16429 ),
16430 nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-123',
16431 Q),
16432 delete_ht(Q, k(C, body, H), A),
16433 spawns_all___2__2__0__6(B, C, D, E)
16434 ; spawns_all___2__2__0__6(B, C, D, E)
16435 ).
16436spawns_all___2__2(A, B, C) :-
16437 spawns_all___2__3(A, B, C).
16438spawns_all___2__3(A, B, C) :-
16439 nb_getval('$chr_store_multi_hash_chr_translate____spawns_all_triggers___2-12',
16440 D),
16441 lookup_ht(D, k(A, B), E),
16442 !,
16443 spawns_all___2__3__0__7(E, A, B, C).
16444spawns_all___2__3__0__7([], A, B, C) :-
16445 spawns_all___2__4(A, B, C).
16446spawns_all___2__3__0__7([A|B], C, D, E) :-
16447 ( A=suspension(_, active, _, _, F, G),
16448 F==C,
16449 G==D
16450 -> setarg(2, A, removed),
16451 ( arg(4, A, H),
16452 ( var(H)
16453 -> nb_getval('$chr_store_global_ground_chr_translate____spawns_all_triggers___2',
16454 I),
16455 I=[_|J],
16456 b_setval('$chr_store_global_ground_chr_translate____spawns_all_triggers___2',
16457 J),
16458 ( J=[K|_]
16459 -> setarg(4, K, _)
16460 ; true
16461 )
16462 ; H=[_, _|J],
16463 setarg(2, H, J),
16464 ( J=[K|_]
16465 -> setarg(4, K, H)
16466 ; true
16467 )
16468 )
16469 ),
16470 ( nb_getval('$chr_store_multi_hash_chr_translate____spawns_all_triggers___2-1',
16471 L),
16472 delete_ht(L, C, A)
16473 ),
16474 nb_getval('$chr_store_multi_hash_chr_translate____spawns_all_triggers___2-12',
16475 M),
16476 delete_ht(M, k(C, D), A),
16477 spawns_all___2__3__0__7(B, C, D, E)
16478 ; spawns_all___2__3__0__7(B, C, D, E)
16479 ).
16480spawns_all___2__3(A, B, C) :-
16481 spawns_all___2__4(A, B, C).
16482spawns_all___2__4(A, guard, B) :-
16483 nb_getval('$chr_store_multi_hash_chr_translate____spawns_all_triggers___2-12',
16484 C),
16485 lookup_ht(C, k(A, body), D),
16486 !,
16487 spawns_all___2__4__0__8(D, A, guard, B).
16488spawns_all___2__4__0__8([], A, B, C) :-
16489 spawns_all___2__5(A, B, C).
16490spawns_all___2__4__0__8([A|B], C, D, E) :-
16491 ( A=suspension(_, active, _, _, F, G),
16492 F==C,
16493 G=body
16494 -> setarg(2, A, removed),
16495 ( arg(4, A, H),
16496 ( var(H)
16497 -> nb_getval('$chr_store_global_ground_chr_translate____spawns_all_triggers___2',
16498 I),
16499 I=[_|J],
16500 b_setval('$chr_store_global_ground_chr_translate____spawns_all_triggers___2',
16501 J),
16502 ( J=[K|_]
16503 -> setarg(4, K, _)
16504 ; true
16505 )
16506 ; H=[_, _|J],
16507 setarg(2, H, J),
16508 ( J=[K|_]
16509 -> setarg(4, K, H)
16510 ; true
16511 )
16512 )
16513 ),
16514 ( nb_getval('$chr_store_multi_hash_chr_translate____spawns_all_triggers___2-1',
16515 L),
16516 delete_ht(L, C, A)
16517 ),
16518 nb_getval('$chr_store_multi_hash_chr_translate____spawns_all_triggers___2-12',
16519 M),
16520 delete_ht(M, k(C, body), A),
16521 spawns_all___2__4__0__8(B, C, D, E)
16522 ; spawns_all___2__4__0__8(B, C, D, E)
16523 ).
16524spawns_all___2__4(A, B, C) :-
16525 spawns_all___2__5(A, B, C).
16526spawns_all___2__5(A, B, C) :-
16527 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-3', D),
16528 lookup_ht(D, A, E),
16529 !,
16530 C=suspension(F, not_stored_yet, A, B),
16531 'chr gen_id'(F),
16532 spawns_all___2__5__0__9(E, A, B, C).
16533spawns_all___2__5__0__9([], A, B, C) :-
16534 spawns_all___2__6(A, B, C).
16535spawns_all___2__5__0__9([A|B], C, D, E) :-
16536 ( A=suspension(_, active, _, _, F, _, G, H, _),
16537 G==C,
16538 nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-3', I),
16539 lookup_ht(I, F, J)
16540 -> spawns_all___2__5__1__9(J,
16541 F,
16542 H,
16543 A,
16544 B,
16545 C,
16546 D,
16547 E)
16548 ; spawns_all___2__5__0__9(B, C, D, E)
16549 ).
16550spawns_all___2__5__1__9([], _, _, _, A, B, C, D) :-
16551 spawns_all___2__5__0__9(A, B, C, D).
16552spawns_all___2__5__1__9([A|B], C, D, E, F, G, H, I) :-
16553 ( A=suspension(_, active, _, _, J, K, L),
16554 L==C,
16555 \+ is_passive(G, D)
16556 -> setarg(2, A, removed),
16557 ( nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-13',
16558 M),
16559 delete_ht(M, k(J, C), A)
16560 ),
16561 ( arg(4, A, N),
16562 ( var(N)
16563 -> nb_getval('$chr_store_global_ground_chr_translate____spawns___3',
16564 O),
16565 O=[_|P],
16566 b_setval('$chr_store_global_ground_chr_translate____spawns___3',
16567 P),
16568 ( P=[Q|_]
16569 -> setarg(4, Q, _)
16570 ; true
16571 )
16572 ; N=[_, _|P],
16573 setarg(2, N, P),
16574 ( P=[Q|_]
16575 -> setarg(4, Q, N)
16576 ; true
16577 )
16578 )
16579 ),
16580 ( nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-12',
16581 R),
16582 delete_ht(R, k(J, K), A)
16583 ),
16584 ( nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-1',
16585 S),
16586 delete_ht(S, J, A)
16587 ),
16588 ( nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-3',
16589 T),
16590 delete_ht(T, C, A)
16591 ),
16592 nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-123',
16593 U),
16594 delete_ht(U, k(J, K, C), A),
16595 arg(2, I, V),
16596 setarg(2, I, active),
16597 ( V==not_stored_yet
16598 -> nb_getval('$chr_store_multi_hash_chr_translate____spawns_all___2-1',
16599 W),
16600 insert_ht(W, G, I),
16601 nb_getval('$chr_store_multi_hash_chr_translate____spawns_all___2-12',
16602 X),
16603 insert_ht(X, k(G, H), I)
16604 ; true
16605 ),
16606 spawns_all(J, K),
16607 ( I=suspension(_, active, _, _)
16608 -> setarg(2, I, inactive),
16609 spawns_all___2__5__1__9(B,
16610 C,
16611 D,
16612 E,
16613 F,
16614 G,
16615 H,
16616 I)
16617 ; true
16618 )
16619 ; spawns_all___2__5__1__9(B,
16620 C,
16621 D,
16622 E,
16623 F,
16624 G,
16625 H,
16626 I)
16627 ).
16628spawns_all___2__5(A, B, C) :-
16629 C=suspension(D, not_stored_yet, A, B),
16630 'chr gen_id'(D),
16631 spawns_all___2__6(A, B, C).
16632spawns_all___2__6(A, B, C) :-
16633 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-3', D),
16634 lookup_ht(D, A, E),
16635 !,
16636 spawns_all___2__6__0__10(E, A, B, C).
16637spawns_all___2__6__0__10([], A, B, C) :-
16638 spawns_all___2__7(A, B, C).
16639spawns_all___2__6__0__10([A|B], C, D, E) :-
16640 ( A=suspension(_, active, _, _, F, _, G, H, _),
16641 G==C,
16642 \+ \+ spawns_all_triggers_implies_spawns_all,
16643 \+ is_passive(C, H),
16644 may_trigger(F)
16645 -> arg(2, E, I),
16646 setarg(2, E, active),
16647 ( I==not_stored_yet
16648 -> nb_getval('$chr_store_multi_hash_chr_translate____spawns_all___2-1',
16649 J),
16650 insert_ht(J, C, E),
16651 nb_getval('$chr_store_multi_hash_chr_translate____spawns_all___2-12',
16652 K),
16653 insert_ht(K, k(C, D), E)
16654 ; true
16655 ),
16656 spawns_all_triggers_implies_spawns_all,
16657 ( E=suspension(_, active, _, _)
16658 -> setarg(2, E, inactive),
16659 spawns_all___2__6__0__10(B, C, D, E)
16660 ; true
16661 )
16662 ; spawns_all___2__6__0__10(B, C, D, E)
16663 ).
16664spawns_all___2__6(A, B, C) :-
16665 spawns_all___2__7(A, B, C).
16666spawns_all___2__7(A, B, C) :-
16667 arg(2, C, D),
16668 setarg(2, C, active),
16669 ( D==not_stored_yet
16670 -> nb_getval('$chr_store_multi_hash_chr_translate____spawns_all___2-1',
16671 E),
16672 insert_ht(E, A, C),
16673 nb_getval('$chr_store_multi_hash_chr_translate____spawns_all___2-12',
16674 F),
16675 insert_ht(F, k(A, B), C)
16676 ; true
16677 ).
16678spawns_all_triggers(A, B) :-
16679 spawns_all_triggers___2__0(A, B, _).
16680spawns_all_triggers___2__0(A, B, _) :-
16681 nb_getval('$chr_store_multi_hash_chr_translate____spawns_all_triggers___2-12',
16682 C),
16683 lookup_ht(C, k(A, B), D),
16684 member(E, D),
16685 E=suspension(_, active, _, _, _, _),
16686 !.
16687spawns_all_triggers___2__0(A, body, _) :-
16688 nb_getval('$chr_store_multi_hash_chr_translate____spawns_all_triggers___2-12',
16689 B),
16690 lookup_ht(B, k(A, guard), C),
16691 member(D, C),
16692 D=suspension(_, active, _, _, _, _),
16693 !.
16694spawns_all_triggers___2__0(A, guard, B) :-
16695 nb_getval('$chr_store_multi_hash_chr_translate____spawns_all_triggers___2-12',
16696 C),
16697 lookup_ht(C, k(A, body), D),
16698 !,
16699 spawns_all_triggers___2__0__0__4(D, A, guard, B).
16700spawns_all_triggers___2__0__0__4([], A, B, C) :-
16701 spawns_all_triggers___2__1(A, B, C).
16702spawns_all_triggers___2__0__0__4([A|B], C, D, E) :-
16703 ( A=suspension(_, active, _, _, F, G),
16704 F==C,
16705 G=body
16706 -> setarg(2, A, removed),
16707 ( arg(4, A, H),
16708 ( var(H)
16709 -> nb_getval('$chr_store_global_ground_chr_translate____spawns_all_triggers___2',
16710 I),
16711 I=[_|J],
16712 b_setval('$chr_store_global_ground_chr_translate____spawns_all_triggers___2',
16713 J),
16714 ( J=[K|_]
16715 -> setarg(4, K, _)
16716 ; true
16717 )
16718 ; H=[_, _|J],
16719 setarg(2, H, J),
16720 ( J=[K|_]
16721 -> setarg(4, K, H)
16722 ; true
16723 )
16724 )
16725 ),
16726 ( nb_getval('$chr_store_multi_hash_chr_translate____spawns_all_triggers___2-1',
16727 L),
16728 delete_ht(L, C, A)
16729 ),
16730 nb_getval('$chr_store_multi_hash_chr_translate____spawns_all_triggers___2-12',
16731 M),
16732 delete_ht(M, k(C, body), A),
16733 spawns_all_triggers___2__0__0__4(B, C, D, E)
16734 ; spawns_all_triggers___2__0__0__4(B, C, D, E)
16735 ).
16736spawns_all_triggers___2__0(A, B, C) :-
16737 spawns_all_triggers___2__1(A, B, C).
16738spawns_all_triggers___2__1(A, B, C) :-
16739 nb_getval('$chr_store_multi_hash_chr_translate____spawns_all___2-12',
16740 D),
16741 lookup_ht(D, k(A, B), E),
16742 member(F, E),
16743 F=suspension(_, active, _, _),
16744 !,
16745 ( var(C)
16746 -> true
16747 ; arg(2, C, G),
16748 setarg(2, C, removed),
16749 ( G==not_stored_yet
16750 -> true
16751 ; arg(4, C, H),
16752 ( var(H)
16753 -> nb_getval('$chr_store_global_ground_chr_translate____spawns_all_triggers___2',
16754 I),
16755 I=[_|J],
16756 b_setval('$chr_store_global_ground_chr_translate____spawns_all_triggers___2',
16757 J),
16758 ( J=[K|_]
16759 -> setarg(4, K, _)
16760 ; true
16761 )
16762 ; H=[_, _|J],
16763 setarg(2, H, J),
16764 ( J=[K|_]
16765 -> setarg(4, K, H)
16766 ; true
16767 )
16768 ),
16769 nb_getval('$chr_store_multi_hash_chr_translate____spawns_all_triggers___2-1',
16770 L),
16771 delete_ht(L, A, C),
16772 nb_getval('$chr_store_multi_hash_chr_translate____spawns_all_triggers___2-12',
16773 M),
16774 delete_ht(M, k(A, B), C)
16775 )
16776 ).
16777spawns_all_triggers___2__1(A, body, B) :-
16778 nb_getval('$chr_store_multi_hash_chr_translate____spawns_all___2-12',
16779 C),
16780 lookup_ht(C, k(A, guard), D),
16781 member(E, D),
16782 E=suspension(_, active, _, _),
16783 !,
16784 ( var(B)
16785 -> true
16786 ; arg(2, B, F),
16787 setarg(2, B, removed),
16788 ( F==not_stored_yet
16789 -> true
16790 ; arg(4, B, G),
16791 ( var(G)
16792 -> nb_getval('$chr_store_global_ground_chr_translate____spawns_all_triggers___2',
16793 H),
16794 H=[_|I],
16795 b_setval('$chr_store_global_ground_chr_translate____spawns_all_triggers___2',
16796 I),
16797 ( I=[J|_]
16798 -> setarg(4, J, _)
16799 ; true
16800 )
16801 ; G=[_, _|I],
16802 setarg(2, G, I),
16803 ( I=[J|_]
16804 -> setarg(4, J, G)
16805 ; true
16806 )
16807 ),
16808 nb_getval('$chr_store_multi_hash_chr_translate____spawns_all_triggers___2-1',
16809 K),
16810 delete_ht(K, A, B),
16811 nb_getval('$chr_store_multi_hash_chr_translate____spawns_all_triggers___2-12',
16812 L),
16813 delete_ht(L, k(A, body), B)
16814 )
16815 ).
16816spawns_all_triggers___2__1(A, B, C) :-
16817 nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-12', D),
16818 lookup_ht(D, k(A, B), E),
16819 !,
16820 spawns_all_triggers___2__1__0__7(E, A, B, C).
16821spawns_all_triggers___2__1__0__7([], A, B, C) :-
16822 spawns_all_triggers___2__2(A, B, C).
16823spawns_all_triggers___2__1__0__7([A|B], C, D, E) :-
16824 ( A=suspension(_, active, _, _, F, G, H),
16825 F==C,
16826 G==D,
16827 may_trigger(H)
16828 -> setarg(2, A, removed),
16829 ( nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-13',
16830 I),
16831 delete_ht(I, k(C, H), A)
16832 ),
16833 ( arg(4, A, J),
16834 ( var(J)
16835 -> nb_getval('$chr_store_global_ground_chr_translate____spawns___3',
16836 K),
16837 K=[_|L],
16838 b_setval('$chr_store_global_ground_chr_translate____spawns___3',
16839 L),
16840 ( L=[M|_]
16841 -> setarg(4, M, _)
16842 ; true
16843 )
16844 ; J=[_, _|L],
16845 setarg(2, J, L),
16846 ( L=[M|_]
16847 -> setarg(4, M, J)
16848 ; true
16849 )
16850 )
16851 ),
16852 ( nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-12',
16853 N),
16854 delete_ht(N, k(C, D), A)
16855 ),
16856 ( nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-1',
16857 O),
16858 delete_ht(O, C, A)
16859 ),
16860 ( nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-3',
16861 P),
16862 delete_ht(P, H, A)
16863 ),
16864 nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-123',
16865 Q),
16866 delete_ht(Q, k(C, D, H), A),
16867 spawns_all_triggers___2__1__0__7(B, C, D, E)
16868 ; spawns_all_triggers___2__1__0__7(B, C, D, E)
16869 ).
16870spawns_all_triggers___2__1(A, B, C) :-
16871 spawns_all_triggers___2__2(A, B, C).
16872spawns_all_triggers___2__2(A, guard, B) :-
16873 nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-12', C),
16874 lookup_ht(C, k(A, body), D),
16875 !,
16876 spawns_all_triggers___2__2__0__8(D, A, guard, B).
16877spawns_all_triggers___2__2__0__8([], A, B, C) :-
16878 spawns_all_triggers___2__3(A, B, C).
16879spawns_all_triggers___2__2__0__8([A|B], C, D, E) :-
16880 ( A=suspension(_, active, _, _, F, G, H),
16881 F==C,
16882 G=body,
16883 may_trigger(H)
16884 -> setarg(2, A, removed),
16885 ( nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-13',
16886 I),
16887 delete_ht(I, k(C, H), A)
16888 ),
16889 ( arg(4, A, J),
16890 ( var(J)
16891 -> nb_getval('$chr_store_global_ground_chr_translate____spawns___3',
16892 K),
16893 K=[_|L],
16894 b_setval('$chr_store_global_ground_chr_translate____spawns___3',
16895 L),
16896 ( L=[M|_]
16897 -> setarg(4, M, _)
16898 ; true
16899 )
16900 ; J=[_, _|L],
16901 setarg(2, J, L),
16902 ( L=[M|_]
16903 -> setarg(4, M, J)
16904 ; true
16905 )
16906 )
16907 ),
16908 ( nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-12',
16909 N),
16910 delete_ht(N, k(C, body), A)
16911 ),
16912 ( nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-1',
16913 O),
16914 delete_ht(O, C, A)
16915 ),
16916 ( nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-3',
16917 P),
16918 delete_ht(P, H, A)
16919 ),
16920 nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-123',
16921 Q),
16922 delete_ht(Q, k(C, body, H), A),
16923 spawns_all_triggers___2__2__0__8(B, C, D, E)
16924 ; spawns_all_triggers___2__2__0__8(B, C, D, E)
16925 ).
16926spawns_all_triggers___2__2(A, B, C) :-
16927 spawns_all_triggers___2__3(A, B, C).
16928spawns_all_triggers___2__3(A, B, C) :-
16929 nb_getval('$chr_store_global_ground_chr_translate____spawns_all_triggers_implies_spawns_all___0',
16930 D),
16931 member(E, D),
16932 E=suspension(_, active, _),
16933 !,
16934 ( var(C)
16935 -> true
16936 ; arg(2, C, F),
16937 setarg(2, C, removed),
16938 ( F==not_stored_yet
16939 -> true
16940 ; arg(4, C, G),
16941 ( var(G)
16942 -> nb_getval('$chr_store_global_ground_chr_translate____spawns_all_triggers___2',
16943 H),
16944 H=[_|I],
16945 b_setval('$chr_store_global_ground_chr_translate____spawns_all_triggers___2',
16946 I),
16947 ( I=[J|_]
16948 -> setarg(4, J, _)
16949 ; true
16950 )
16951 ; G=[_, _|I],
16952 setarg(2, G, I),
16953 ( I=[J|_]
16954 -> setarg(4, J, G)
16955 ; true
16956 )
16957 ),
16958 nb_getval('$chr_store_multi_hash_chr_translate____spawns_all_triggers___2-1',
16959 K),
16960 delete_ht(K, A, C),
16961 nb_getval('$chr_store_multi_hash_chr_translate____spawns_all_triggers___2-12',
16962 L),
16963 delete_ht(L, k(A, B), C)
16964 )
16965 ),
16966 spawns_all(A, B).
16967spawns_all_triggers___2__3(A, B, C) :-
16968 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-3', D),
16969 lookup_ht(D, A, E),
16970 !,
16971 C=suspension(F, not_stored_yet, t, _, A, B),
16972 'chr gen_id'(F),
16973 spawns_all_triggers___2__3__0__10(E, A, B, C).
16974spawns_all_triggers___2__3__0__10([], A, B, C) :-
16975 spawns_all_triggers___2__4(A, B, C).
16976spawns_all_triggers___2__3__0__10([A|B], C, D, E) :-
16977 ( A=suspension(_, active, _, _, F, _, G, H, _),
16978 G==C,
16979 nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-3', I),
16980 lookup_ht(I, F, J)
16981 -> spawns_all_triggers___2__3__1__10(J,
16982 F,
16983 H,
16984 A,
16985 B,
16986 C,
16987 D,
16988 E)
16989 ; spawns_all_triggers___2__3__0__10(B, C, D, E)
16990 ).
16991spawns_all_triggers___2__3__1__10([], _, _, _, A, B, C, D) :-
16992 spawns_all_triggers___2__3__0__10(A, B, C, D).
16993spawns_all_triggers___2__3__1__10([A|B], C, D, E, F, G, H, I) :-
16994 ( A=suspension(_, active, _, _, J, K, L),
16995 L==C,
16996 may_trigger(C),
16997 \+ is_passive(G, D)
16998 -> setarg(2, A, removed),
16999 ( nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-13',
17000 M),
17001 delete_ht(M, k(J, C), A)
17002 ),
17003 ( arg(4, A, N),
17004 ( var(N)
17005 -> nb_getval('$chr_store_global_ground_chr_translate____spawns___3',
17006 O),
17007 O=[_|P],
17008 b_setval('$chr_store_global_ground_chr_translate____spawns___3',
17009 P),
17010 ( P=[Q|_]
17011 -> setarg(4, Q, _)
17012 ; true
17013 )
17014 ; N=[_, _|P],
17015 setarg(2, N, P),
17016 ( P=[Q|_]
17017 -> setarg(4, Q, N)
17018 ; true
17019 )
17020 )
17021 ),
17022 ( nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-12',
17023 R),
17024 delete_ht(R, k(J, K), A)
17025 ),
17026 ( nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-1',
17027 S),
17028 delete_ht(S, J, A)
17029 ),
17030 ( nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-3',
17031 T),
17032 delete_ht(T, C, A)
17033 ),
17034 nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-123',
17035 U),
17036 delete_ht(U, k(J, K, C), A),
17037 arg(2, I, V),
17038 setarg(2, I, active),
17039 ( V==not_stored_yet
17040 -> nb_getval('$chr_store_global_ground_chr_translate____spawns_all_triggers___2',
17041 W),
17042 X=[I|W],
17043 b_setval('$chr_store_global_ground_chr_translate____spawns_all_triggers___2',
17044 X),
17045 ( W=[Y|_]
17046 -> setarg(4, Y, X)
17047 ; true
17048 ),
17049 nb_getval('$chr_store_multi_hash_chr_translate____spawns_all_triggers___2-1',
17050 Z),
17051 insert_ht(Z, G, I),
17052 nb_getval('$chr_store_multi_hash_chr_translate____spawns_all_triggers___2-12',
17053 A1),
17054 insert_ht(A1, k(G, H), I)
17055 ; true
17056 ),
17057 spawns_all_triggers(J, K),
17058 ( I=suspension(_, active, _, _, _, _)
17059 -> setarg(2, I, inactive),
17060 spawns_all_triggers___2__3__1__10(B,
17061 C,
17062 D,
17063 E,
17064 F,
17065 G,
17066 H,
17067 I)
17068 ; true
17069 )
17070 ; spawns_all_triggers___2__3__1__10(B,
17071 C,
17072 D,
17073 E,
17074 F,
17075 G,
17076 H,
17077 I)
17078 ).
17079spawns_all_triggers___2__3(A, B, C) :-
17080 C=suspension(D, not_stored_yet, t, _, A, B),
17081 'chr gen_id'(D),
17082 spawns_all_triggers___2__4(A, B, C).
17083spawns_all_triggers___2__4(A, B, C) :-
17084 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-3', D),
17085 lookup_ht(D, A, E),
17086 !,
17087 spawns_all_triggers___2__4__0__11(E, A, B, C).
17088spawns_all_triggers___2__4__0__11([], A, B, C) :-
17089 spawns_all_triggers___2__5(A, B, C).
17090spawns_all_triggers___2__4__0__11([A|B], C, D, E) :-
17091 ( A=suspension(_, active, _, _, F, _, G, H, _),
17092 G==C,
17093 nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-3', I),
17094 lookup_ht(I, F, J)
17095 -> spawns_all_triggers___2__4__1__11(J,
17096 F,
17097 H,
17098 A,
17099 B,
17100 C,
17101 D,
17102 E)
17103 ; spawns_all_triggers___2__4__0__11(B, C, D, E)
17104 ).
17105spawns_all_triggers___2__4__1__11([], _, _, _, A, B, C, D) :-
17106 spawns_all_triggers___2__4__0__11(A, B, C, D).
17107spawns_all_triggers___2__4__1__11([A|B], C, D, E, F, G, H, I) :-
17108 ( A=suspension(_, active, _, _, J, K, L),
17109 L==C,
17110 M=t(123, I, E, A),
17111 '$novel_production'(I, M),
17112 '$novel_production'(A, M),
17113 \+ may_trigger(C),
17114 \+ is_passive(G, D)
17115 -> '$extend_history'(I, M),
17116 arg(2, I, N),
17117 setarg(2, I, active),
17118 ( N==not_stored_yet
17119 -> nb_getval('$chr_store_global_ground_chr_translate____spawns_all_triggers___2',
17120 O),
17121 P=[I|O],
17122 b_setval('$chr_store_global_ground_chr_translate____spawns_all_triggers___2',
17123 P),
17124 ( O=[Q|_]
17125 -> setarg(4, Q, P)
17126 ; true
17127 ),
17128 nb_getval('$chr_store_multi_hash_chr_translate____spawns_all_triggers___2-1',
17129 R),
17130 insert_ht(R, G, I),
17131 nb_getval('$chr_store_multi_hash_chr_translate____spawns_all_triggers___2-12',
17132 S),
17133 insert_ht(S, k(G, H), I)
17134 ; true
17135 ),
17136 spawns_all_triggers(J, K),
17137 ( I=suspension(_, active, _, _, _, _)
17138 -> setarg(2, I, inactive),
17139 spawns_all_triggers___2__4__1__11(B,
17140 C,
17141 D,
17142 E,
17143 F,
17144 G,
17145 H,
17146 I)
17147 ; true
17148 )
17149 ; spawns_all_triggers___2__4__1__11(B,
17150 C,
17151 D,
17152 E,
17153 F,
17154 G,
17155 H,
17156 I)
17157 ).
17158spawns_all_triggers___2__4(A, B, C) :-
17159 spawns_all_triggers___2__5(A, B, C).
17160spawns_all_triggers___2__5(A, B, C) :-
17161 nb_getval('$chr_store_global_ground_chr_translate____spawns___3', D),
17162 !,
17163 spawns_all_triggers___2__5__0__12(D, A, B, C).
17164spawns_all_triggers___2__5__0__12([], A, B, C) :-
17165 spawns_all_triggers___2__6(A, B, C).
17166spawns_all_triggers___2__5__0__12([A|B], C, D, E) :-
17167 ( A=suspension(_, active, _, _, F, _, G),
17168 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-3',
17169 H),
17170 lookup_ht(H, F, I)
17171 -> spawns_all_triggers___2__5__1__12(I,
17172 F,
17173 G,
17174 A,
17175 B,
17176 C,
17177 D,
17178 E)
17179 ; spawns_all_triggers___2__5__0__12(B, C, D, E)
17180 ).
17181spawns_all_triggers___2__5__1__12([], _, _, _, A, B, C, D) :-
17182 spawns_all_triggers___2__5__0__12(A, B, C, D).
17183spawns_all_triggers___2__5__1__12([A|B], C, D, E, F, G, H, I) :-
17184 ( A=suspension(_, active, _, _, J, _, K, L, _),
17185 K==C,
17186 M=t(125, E, A, I),
17187 '$novel_production'(E, M),
17188 '$novel_production'(I, M),
17189 \+ is_passive(C, L),
17190 may_trigger(J),
17191 \+ may_trigger(D)
17192 -> '$extend_history'(I, M),
17193 arg(2, I, N),
17194 setarg(2, I, active),
17195 ( N==not_stored_yet
17196 -> nb_getval('$chr_store_global_ground_chr_translate____spawns_all_triggers___2',
17197 O),
17198 P=[I|O],
17199 b_setval('$chr_store_global_ground_chr_translate____spawns_all_triggers___2',
17200 P),
17201 ( O=[Q|_]
17202 -> setarg(4, Q, P)
17203 ; true
17204 ),
17205 nb_getval('$chr_store_multi_hash_chr_translate____spawns_all_triggers___2-1',
17206 R),
17207 insert_ht(R, G, I),
17208 nb_getval('$chr_store_multi_hash_chr_translate____spawns_all_triggers___2-12',
17209 S),
17210 insert_ht(S, k(G, H), I)
17211 ; true
17212 ),
17213 spawns(G, H, D),
17214 ( I=suspension(_, active, _, _, _, _)
17215 -> setarg(2, I, inactive),
17216 spawns_all_triggers___2__5__1__12(B,
17217 C,
17218 D,
17219 E,
17220 F,
17221 G,
17222 H,
17223 I)
17224 ; true
17225 )
17226 ; spawns_all_triggers___2__5__1__12(B,
17227 C,
17228 D,
17229 E,
17230 F,
17231 G,
17232 H,
17233 I)
17234 ).
17235spawns_all_triggers___2__5(A, B, C) :-
17236 spawns_all_triggers___2__6(A, B, C).
17237spawns_all_triggers___2__6(A, B, C) :-
17238 arg(2, C, D),
17239 setarg(2, C, active),
17240 ( D==not_stored_yet
17241 -> nb_getval('$chr_store_global_ground_chr_translate____spawns_all_triggers___2',
17242 E),
17243 F=[C|E],
17244 b_setval('$chr_store_global_ground_chr_translate____spawns_all_triggers___2',
17245 F),
17246 ( E=[G|_]
17247 -> setarg(4, G, F)
17248 ; true
17249 ),
17250 nb_getval('$chr_store_multi_hash_chr_translate____spawns_all_triggers___2-1',
17251 H),
17252 insert_ht(H, A, C),
17253 nb_getval('$chr_store_multi_hash_chr_translate____spawns_all_triggers___2-12',
17254 I),
17255 insert_ht(I, k(A, B), C)
17256 ; true
17257 ).
17258spawns_all_triggers_implies_spawns_all :-
17259 spawns_all_triggers_implies_spawns_all___0__0(_).
17260spawns_all_triggers_implies_spawns_all___0__0(_) :-
17261 nb_getval('$chr_store_global_ground_chr_translate____spawns_all_triggers_implies_spawns_all___0',
17262 A),
17263 member(B, A),
17264 B=suspension(_, active, _),
17265 !,
17266 setarg(2, B, removed),
17267 arg(3, B, C),
17268 ( var(C)
17269 -> nb_getval('$chr_store_global_ground_chr_translate____spawns_all_triggers_implies_spawns_all___0',
17270 D),
17271 D=[_|E],
17272 b_setval('$chr_store_global_ground_chr_translate____spawns_all_triggers_implies_spawns_all___0',
17273 E),
17274 ( E=[F|_]
17275 -> setarg(3, F, _)
17276 ; true
17277 )
17278 ; C=[_, _|E],
17279 setarg(2, C, E),
17280 ( E=[F|_]
17281 -> setarg(3, F, C)
17282 ; true
17283 )
17284 ),
17285 fail.
17286spawns_all_triggers_implies_spawns_all___0__0(A) :-
17287 nb_getval('$chr_store_global_ground_chr_translate____spawns_all_triggers___2',
17288 B),
17289 !,
17290 A=suspension(C, not_stored_yet, _),
17291 'chr gen_id'(C),
17292 spawns_all_triggers_implies_spawns_all___0__0__0__3(B, A).
17293spawns_all_triggers_implies_spawns_all___0__0__0__3([], A) :-
17294 spawns_all_triggers_implies_spawns_all___0__1(A).
17295spawns_all_triggers_implies_spawns_all___0__0__0__3([A|B], C) :-
17296 ( A=suspension(_, active, _, _, D, E)
17297 -> setarg(2, A, removed),
17298 ( arg(4, A, F),
17299 ( var(F)
17300 -> nb_getval('$chr_store_global_ground_chr_translate____spawns_all_triggers___2',
17301 G),
17302 G=[_|H],
17303 b_setval('$chr_store_global_ground_chr_translate____spawns_all_triggers___2',
17304 H),
17305 ( H=[I|_]
17306 -> setarg(4, I, _)
17307 ; true
17308 )
17309 ; F=[_, _|H],
17310 setarg(2, F, H),
17311 ( H=[I|_]
17312 -> setarg(4, I, F)
17313 ; true
17314 )
17315 )
17316 ),
17317 ( nb_getval('$chr_store_multi_hash_chr_translate____spawns_all_triggers___2-1',
17318 J),
17319 delete_ht(J, D, A)
17320 ),
17321 nb_getval('$chr_store_multi_hash_chr_translate____spawns_all_triggers___2-12',
17322 K),
17323 delete_ht(K, k(D, E), A),
17324 arg(2, C, L),
17325 setarg(2, C, active),
17326 ( L==not_stored_yet
17327 -> nb_getval('$chr_store_global_ground_chr_translate____spawns_all_triggers_implies_spawns_all___0',
17328 M),
17329 N=[C|M],
17330 b_setval('$chr_store_global_ground_chr_translate____spawns_all_triggers_implies_spawns_all___0',
17331 N),
17332 ( M=[O|_]
17333 -> setarg(3, O, N)
17334 ; true
17335 )
17336 ; true
17337 ),
17338 spawns_all(D, E),
17339 ( C=suspension(_, active, _)
17340 -> setarg(2, C, inactive),
17341 spawns_all_triggers_implies_spawns_all___0__0__0__3(B,
17342 C)
17343 ; true
17344 )
17345 ; spawns_all_triggers_implies_spawns_all___0__0__0__3(B, C)
17346 ).
17347spawns_all_triggers_implies_spawns_all___0__0(A) :-
17348 A=suspension(B, not_stored_yet, _),
17349 'chr gen_id'(B),
17350 spawns_all_triggers_implies_spawns_all___0__1(A).
17351spawns_all_triggers_implies_spawns_all___0__1(A) :-
17352 arg(2, A, B),
17353 setarg(2, A, active),
17354 ( B==not_stored_yet
17355 -> nb_getval('$chr_store_global_ground_chr_translate____spawns_all_triggers_implies_spawns_all___0',
17356 C),
17357 D=[A|C],
17358 b_setval('$chr_store_global_ground_chr_translate____spawns_all_triggers_implies_spawns_all___0',
17359 D),
17360 ( C=[E|_]
17361 -> setarg(3, E, D)
17362 ; true
17363 )
17364 ; true
17365 ).
17366all_spawned(A, B) :-
17367 nb_getval('$chr_store_multi_hash_chr_translate____spawns_all___2-12',
17368 C),
17369 ( lookup_ht(C, k(A, guard), D),
17370 member(E, D),
17371 E=suspension(_, active, _, _),
17372 !
17373 ; lookup_ht(C, k(A, B), F),
17374 member(G, F),
17375 G=suspension(_, active, _, _),
17376 !
17377 ).
17378all_spawned(_, _) :-
17379 fail.
17380is_observed(A, B, C) :-
17381 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-12',
17382 D),
17383 lookup_ht(D, k(A, B), E),
17384 member(F, E),
17385 F=suspension(_, active, _, _, _, _, G, _, _),
17386 !,
17387 do_is_observed(A, G, C).
17388is_observed(_, _, _) :-
17389 fail.
17390do_is_observed(A, B, C) :-
17391 var(C),
17392 !,
17393 do_is_observed(A, B).
17394do_is_observed(A, B, C) :-
17395 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-1', D),
17396 lookup_ht(D, A, E),
17397 member(F, E),
17398 F=suspension(_, active, _, _, _, _, G, _, _),
17399 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-3', H),
17400 lookup_ht(H, G, I),
17401 member(J, I),
17402 J=suspension(_, active, _, _, K, _, _, L, _),
17403 J\==F,
17404 ground(C),
17405 ( ( nb_getval('$chr_store_multi_hash_chr_translate____spawns_all___2-12',
17406 M),
17407 lookup_ht(M, k(B, C), N),
17408 member(O, N),
17409 O=suspension(_, active, _, _),
17410 \+ is_passive(G, L),
17411 !
17412 ; nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-123',
17413 P),
17414 lookup_ht(P, k(B, C, K), Q),
17415 member(R, Q),
17416 R=suspension(_, active, _, _, _, _, _),
17417 \+ is_passive(G, L),
17418 !
17419 )
17420 ; nb_getval('$chr_store_multi_hash_chr_translate____spawns_all_triggers___2-12',
17421 S),
17422 lookup_ht(S, k(B, C), T),
17423 member(U, T),
17424 U=suspension(_, active, _, _, _, _),
17425 \+ is_passive(G, L),
17426 may_trigger(K),
17427 !
17428 ).
17429do_is_observed(_, _, _) :-
17430 chr_pp_flag(observation_analysis, off).
17431do_is_observed(A, B) :-
17432 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-1', C),
17433 lookup_ht(C, A, D),
17434 member(E, D),
17435 E=suspension(_, active, _, _, _, _, F, _, _),
17436 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-3', G),
17437 lookup_ht(G, F, H),
17438 member(I, H),
17439 I=suspension(_, active, _, _, J, _, _, K, _),
17440 I\==E,
17441 ( ( nb_getval('$chr_store_multi_hash_chr_translate____spawns_all___2-1',
17442 L),
17443 lookup_ht(L, B, M),
17444 member(N, M),
17445 N=suspension(_, active, _, _),
17446 \+ is_passive(F, K),
17447 !
17448 ; nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-13',
17449 O),
17450 lookup_ht(O, k(B, J), P),
17451 member(Q, P),
17452 Q=suspension(_, active, _, _, _, _, _),
17453 \+ is_passive(F, K),
17454 !
17455 )
17456 ; nb_getval('$chr_store_multi_hash_chr_translate____spawns_all_triggers___2-1',
17457 R),
17458 lookup_ht(R, B, S),
17459 member(T, S),
17460 T=suspension(_, active, _, _, _, _),
17461 \+ is_passive(F, K),
17462 may_trigger(J),
17463 !
17464 ).
17465do_is_observed(_, _) :-
17466 chr_pp_flag(observation_analysis, off).
17467generate_indexed_variables_body(A/B, C, D, E) :-
17468 nb_getval('$chr_store_multi_hash_chr_translate____constraint_mode___2-1',
17469 F),
17470 lookup_ht(F, A/B, G),
17471 member(H, G),
17472 H=suspension(_, active, _, _, _, I),
17473 !,
17474 get_indexing_spec(A/B, J),
17475 ( chr_pp_flag(term_indexing, on)
17476 -> spectermvars(J, C, A, B, D, E)
17477 ; get_constraint_type_det(A/B, K),
17478 create_indexed_variables_body(C,
17479 I,
17480 K,
17481 E,
17482 1,
17483 A/B,
17484 L,
17485 M),
17486 ( L==empty
17487 -> D=true,
17488 E=[]
17489 ; M==0
17490 -> ( C=[N]
17491 -> true
17492 ; N=..[term|C]
17493 ),
17494 D=term_variables(N, E)
17495 ; L=D
17496 )
17497 ).
17498generate_indexed_variables_body(A, _, _, _) :-
17499 chr_error(internal,
17500 'generate_indexed_variables_body: missing mode info for ~w.\n',
17501 [A]).
17502empty_named_history_initialisations(A, B) :-
17503 C=suspension(D, active, _, A, B),
17504 'chr gen_id'(D),
17505 nb_getval('$chr_store_global_ground_chr_translate____empty_named_history_initialisations___2',
17506 E),
17507 F=[C|E],
17508 b_setval('$chr_store_global_ground_chr_translate____empty_named_history_initialisations___2',
17509 F),
17510 ( E=[G|_]
17511 -> setarg(3, G, F)
17512 ; true
17513 ).
17514generate_empty_named_history_initialisation(A) :-
17515 generate_empty_named_history_initialisation___1__0(A, _).
17516generate_empty_named_history_initialisation___1__0(A, B) :-
17517 ( 'chr newvia_1'(A, C)
17518 -> get_attr(C, chr_translate, D),
17519 D=v(_, E, _, _, _, _, _, _, _, _, _)
17520 ; nb_getval('$chr_store_global_list_chr_translate____generate_empty_named_history_initialisation___1',
17521 E)
17522 ),
17523 member(F, E),
17524 F=suspension(_, active, _, _, G),
17525 G==A,
17526 !,
17527 ( var(B)
17528 -> true
17529 ; B=suspension(_, H, _, _, I),
17530 setarg(2, B, removed),
17531 ( H==not_stored_yet
17532 -> J=[]
17533 ; term_variables(I, J),
17534 arg(4, B, K),
17535 ( var(K)
17536 -> nb_getval('$chr_store_global_list_chr_translate____generate_empty_named_history_initialisation___1',
17537 L),
17538 L=[_|M],
17539 b_setval('$chr_store_global_list_chr_translate____generate_empty_named_history_initialisation___1',
17540 M),
17541 ( M=[N|_]
17542 -> setarg(4, N, _)
17543 ; true
17544 )
17545 ; K=[_, _|M],
17546 setarg(2, K, M),
17547 ( M=[N|_]
17548 -> setarg(4, N, K)
17549 ; true
17550 )
17551 ),
17552 detach_generate_empty_named_history_initialisation___1(J,
17553 B)
17554 )
17555 ).
17556generate_empty_named_history_initialisation___1__0(A, B) :-
17557 nb_getval('$chr_store_global_ground_chr_translate____empty_named_history_initialisations___2',
17558 C),
17559 !,
17560 ( var(B)
17561 -> B=suspension(D, not_stored_yet, 0, _, A),
17562 'chr gen_id'(D)
17563 ; true
17564 ),
17565 generate_empty_named_history_initialisation___1__0__0__3(C,
17566 A,
17567 B).
17568generate_empty_named_history_initialisation___1__0__0__3([], A, B) :-
17569 generate_empty_named_history_initialisation___1__1(A, B).
17570generate_empty_named_history_initialisation___1__0__0__3([A|B], C, D) :-
17571 ( A=suspension(_, active, _, E, F)
17572 -> setarg(2, A, removed),
17573 arg(3, A, G),
17574 ( var(G)
17575 -> nb_getval('$chr_store_global_ground_chr_translate____empty_named_history_initialisations___2',
17576 H),
17577 H=[_|I],
17578 b_setval('$chr_store_global_ground_chr_translate____empty_named_history_initialisations___2',
17579 I),
17580 ( I=[J|_]
17581 -> setarg(3, J, _)
17582 ; true
17583 )
17584 ; G=[_, _|I],
17585 setarg(2, G, I),
17586 ( I=[J|_]
17587 -> setarg(3, J, G)
17588 ; true
17589 )
17590 ),
17591 arg(2, D, K),
17592 setarg(2, D, active),
17593 ( arg(3, D, L),
17594 M is L+1,
17595 setarg(3, D, M)
17596 ),
17597 ( K==not_stored_yet
17598 -> D=suspension(_, _, _, _, N),
17599 term_variables(N, O),
17600 nb_getval('$chr_store_global_list_chr_translate____generate_empty_named_history_initialisation___1',
17601 P),
17602 Q=[D|P],
17603 b_setval('$chr_store_global_list_chr_translate____generate_empty_named_history_initialisation___1',
17604 Q),
17605 ( P=[R|_]
17606 -> setarg(4, R, Q)
17607 ; true
17608 ),
17609 attach_generate_empty_named_history_initialisation___1(O,
17610 D)
17611 ; true
17612 ),
17613 empty_named_history_global_variable(C, S),
17614 E=[(:-nb_setval(S, 0))|T],
17615 empty_named_history_initialisations(T, F),
17616 ( D=suspension(_, active, M, _, _)
17617 -> setarg(2, D, inactive),
17618 generate_empty_named_history_initialisation___1__0__0__3(B,
17619 C,
17620 D)
17621 ; true
17622 )
17623 ; generate_empty_named_history_initialisation___1__0__0__3(B,
17624 C,
17625 D)
17626 ).
17627generate_empty_named_history_initialisation___1__0(A, B) :-
17628 ( var(B)
17629 -> B=suspension(C, not_stored_yet, 0, _, A),
17630 'chr gen_id'(C)
17631 ; true
17632 ),
17633 generate_empty_named_history_initialisation___1__1(A, B).
17634generate_empty_named_history_initialisation___1__1(_, A) :-
17635 arg(2, A, B),
17636 setarg(2, A, active),
17637 arg(3, A, C),
17638 D is C+1,
17639 setarg(3, A, D),
17640 ( B==not_stored_yet
17641 -> A=suspension(_, _, _, _, E),
17642 term_variables(E, F),
17643 nb_getval('$chr_store_global_list_chr_translate____generate_empty_named_history_initialisation___1',
17644 G),
17645 H=[A|G],
17646 b_setval('$chr_store_global_list_chr_translate____generate_empty_named_history_initialisation___1',
17647 H),
17648 ( G=[I|_]
17649 -> setarg(4, I, H)
17650 ; true
17651 ),
17652 attach_generate_empty_named_history_initialisation___1(F,
17653 A)
17654 ; true
17655 ).
17656find_empty_named_histories :-
17657 find_empty_named_histories___0__0(_).
17658find_empty_named_histories___0__0(A) :-
17659 nb_getval('$chr_store_constants_chr_translate____history___3___[3]___[]',
17660 B),
17661 !,
17662 A=suspension(C, not_stored_yet, t, _),
17663 'chr gen_id'(C),
17664 find_empty_named_histories___0__0__0__1(B, A).
17665find_empty_named_histories___0__0__0__1([], A) :-
17666 find_empty_named_histories___0__1(A).
17667find_empty_named_histories___0__0__0__1([A|B], C) :-
17668 ( A=suspension(_, active, _, _, D, E),
17669 E=[],
17670 F=t(142, C, A),
17671 '$novel_production'(C, F),
17672 '$novel_production'(A, F)
17673 -> '$extend_history'(C, F),
17674 arg(2, C, G),
17675 setarg(2, C, active),
17676 ( G==not_stored_yet
17677 -> nb_getval('$chr_store_global_ground_chr_translate____find_empty_named_histories___0',
17678 H),
17679 I=[C|H],
17680 b_setval('$chr_store_global_ground_chr_translate____find_empty_named_histories___0',
17681 I),
17682 ( H=[J|_]
17683 -> setarg(4, J, I)
17684 ; true
17685 )
17686 ; true
17687 ),
17688 generate_empty_named_history_initialisation(D),
17689 ( C=suspension(_, active, _, _)
17690 -> setarg(2, C, inactive),
17691 find_empty_named_histories___0__0__0__1(B, C)
17692 ; true
17693 )
17694 ; find_empty_named_histories___0__0__0__1(B, C)
17695 ).
17696find_empty_named_histories___0__0(A) :-
17697 A=suspension(B, not_stored_yet, t, _),
17698 'chr gen_id'(B),
17699 find_empty_named_histories___0__1(A).
17700find_empty_named_histories___0__1(A) :-
17701 nb_getval('$chr_store_global_list_chr_translate____generate_empty_named_history_initialisation___1',
17702 B),
17703 !,
17704 find_empty_named_histories___0__1__0__2(B, A).
17705find_empty_named_histories___0__1__0__2([], A) :-
17706 find_empty_named_histories___0__2(A).
17707find_empty_named_histories___0__1__0__2([A|B], C) :-
17708 ( A=suspension(_, active, _, _, _)
17709 -> A=suspension(_, _, _, _, D),
17710 setarg(2, A, removed),
17711 term_variables(D, E),
17712 ( arg(4, A, F),
17713 ( var(F)
17714 -> nb_getval('$chr_store_global_list_chr_translate____generate_empty_named_history_initialisation___1',
17715 G),
17716 G=[_|H],
17717 b_setval('$chr_store_global_list_chr_translate____generate_empty_named_history_initialisation___1',
17718 H),
17719 ( H=[I|_]
17720 -> setarg(4, I, _)
17721 ; true
17722 )
17723 ; F=[_, _|H],
17724 setarg(2, F, H),
17725 ( H=[I|_]
17726 -> setarg(4, I, F)
17727 ; true
17728 )
17729 )
17730 ),
17731 detach_generate_empty_named_history_initialisation___1(E,
17732 A),
17733 find_empty_named_histories___0__1__0__2(B, C)
17734 ; find_empty_named_histories___0__1__0__2(B, C)
17735 ).
17736find_empty_named_histories___0__1(A) :-
17737 find_empty_named_histories___0__2(A).
17738find_empty_named_histories___0__2(A) :-
17739 nb_getval('$chr_store_global_ground_chr_translate____empty_named_history_initialisations___2',
17740 B),
17741 member(C, B),
17742 C=suspension(_, active, _, D, E),
17743 !,
17744 setarg(2, C, removed),
17745 arg(3, C, F),
17746 ( var(F)
17747 -> nb_getval('$chr_store_global_ground_chr_translate____empty_named_history_initialisations___2',
17748 G),
17749 G=[_|H],
17750 b_setval('$chr_store_global_ground_chr_translate____empty_named_history_initialisations___2',
17751 H),
17752 ( H=[I|_]
17753 -> setarg(3, I, _)
17754 ; true
17755 )
17756 ; F=[_, _|H],
17757 setarg(2, F, H),
17758 ( H=[I|_]
17759 -> setarg(3, I, F)
17760 ; true
17761 )
17762 ),
17763 ( var(A)
17764 -> true
17765 ; arg(2, A, J),
17766 setarg(2, A, removed),
17767 ( J==not_stored_yet
17768 -> true
17769 ; arg(4, A, K),
17770 ( var(K)
17771 -> nb_getval('$chr_store_global_ground_chr_translate____find_empty_named_histories___0',
17772 L),
17773 L=[_|M],
17774 b_setval('$chr_store_global_ground_chr_translate____find_empty_named_histories___0',
17775 M),
17776 ( M=[N|_]
17777 -> setarg(4, N, _)
17778 ; true
17779 )
17780 ; K=[_, _|M],
17781 setarg(2, K, M),
17782 ( M=[N|_]
17783 -> setarg(4, N, K)
17784 ; true
17785 )
17786 )
17787 )
17788 ),
17789 D=E.
17790find_empty_named_histories___0__2(A) :-
17791 ( var(A)
17792 -> true
17793 ; arg(2, A, B),
17794 setarg(2, A, removed),
17795 ( B==not_stored_yet
17796 -> true
17797 ; arg(4, A, C),
17798 ( var(C)
17799 -> nb_getval('$chr_store_global_ground_chr_translate____find_empty_named_histories___0',
17800 D),
17801 D=[_|E],
17802 b_setval('$chr_store_global_ground_chr_translate____find_empty_named_histories___0',
17803 E),
17804 ( E=[F|_]
17805 -> setarg(4, F, _)
17806 ; true
17807 )
17808 ; C=[_, _|E],
17809 setarg(2, C, E),
17810 ( E=[F|_]
17811 -> setarg(4, F, C)
17812 ; true
17813 )
17814 )
17815 )
17816 ),
17817 chr_error(internal, 'find_empty_named_histories was not removed', []).
17818module_initializer(A) :-
17819 B=suspension(C, active, _, A),
17820 'chr gen_id'(C),
17821 nb_getval('$chr_store_global_ground_chr_translate____module_initializer___1',
17822 D),
17823 E=[B|D],
17824 b_setval('$chr_store_global_ground_chr_translate____module_initializer___1',
17825 E),
17826 ( D=[F|_]
17827 -> setarg(3, F, E)
17828 ; true
17829 ).
17830module_initializers(A) :-
17831 nb_getval('$chr_store_global_ground_chr_translate____module_initializer___1',
17832 B),
17833 member(C, B),
17834 C=suspension(_, active, _, D),
17835 !,
17836 setarg(2, C, removed),
17837 arg(3, C, E),
17838 ( var(E)
17839 -> nb_getval('$chr_store_global_ground_chr_translate____module_initializer___1',
17840 F),
17841 F=[_|G],
17842 b_setval('$chr_store_global_ground_chr_translate____module_initializer___1',
17843 G),
17844 ( G=[H|_]
17845 -> setarg(3, H, _)
17846 ; true
17847 )
17848 ; E=[_, _|G],
17849 setarg(2, E, G),
17850 ( G=[H|_]
17851 -> setarg(3, H, E)
17852 ; true
17853 )
17854 ),
17855 A=(D, I),
17856 module_initializers(I).
17857module_initializers(true).
17858actual_atomic_multi_hash_keys(A, B, C) :-
17859 nb_getval('$chr_store_multi_hash_chr_translate____actual_store_types___2-1',
17860 D),
17861 lookup_ht(D, A, E),
17862 member(F, E),
17863 F=suspension(_, active, _, G),
17864 nb_getval('$chr_store_multi_hash_chr_translate____validate_store_type_assumption___1-1',
17865 H),
17866 lookup_ht(H, A, I),
17867 member(J, I),
17868 J=suspension(_, active, _),
17869 !,
17870 setarg(2, F, removed),
17871 nb_getval('$chr_store_multi_hash_chr_translate____actual_store_types___2-1',
17872 K),
17873 delete_ht(K, A, F),
17874 selectchk(multi_hash([B]), G, L),
17875 B=[M],
17876 ( get_constraint_arg_type(A, M, N),
17877 enumerated_atomic_type(N, O)
17878 -> P=O,
17879 Q=complete
17880 ; P=C,
17881 Q=incomplete
17882 ),
17883 actual_store_types(A,
17884 [atomic_constants(B, P, Q)|L]).
17885actual_atomic_multi_hash_keys(A, B, C) :-
17886 nb_getval('$chr_store_multi_hash_chr_translate____actual_atomic_multi_hash_keys___3-12',
17887 D),
17888 lookup_ht(D, k(A, B), E),
17889 member(F, E),
17890 F=suspension(_, active, _, _, G),
17891 !,
17892 setarg(2, F, removed),
17893 nb_getval('$chr_store_multi_hash_chr_translate____actual_atomic_multi_hash_keys___3-12',
17894 H),
17895 delete_ht(H, k(A, B), F),
17896 nb_getval('$chr_store_multi_hash_chr_translate____actual_atomic_multi_hash_keys___3-1',
17897 I),
17898 delete_ht(I, A, F),
17899 append(C, G, J),
17900 sort(J, K),
17901 actual_atomic_multi_hash_keys(A, B, K).
17902actual_atomic_multi_hash_keys(A, B, C) :-
17903 nb_getval('$chr_store_multi_hash_chr_translate____actual_ground_multi_hash_keys___3-12',
17904 D),
17905 lookup_ht(D, k(A, B), E),
17906 member(F, E),
17907 F=suspension(_, active, _, _, G),
17908 !,
17909 setarg(2, F, removed),
17910 nb_getval('$chr_store_multi_hash_chr_translate____actual_ground_multi_hash_keys___3-12',
17911 H),
17912 delete_ht(H, k(A, B), F),
17913 nb_getval('$chr_store_multi_hash_chr_translate____actual_ground_multi_hash_keys___3-1',
17914 I),
17915 delete_ht(I, A, F),
17916 append(G, C, J),
17917 sort(J, K),
17918 actual_ground_multi_hash_keys(A, B, K).
17919actual_atomic_multi_hash_keys(A, B, _) :-
17920 nb_getval('$chr_store_multi_hash_chr_translate____actual_non_ground_multi_hash_key___2-12',
17921 C),
17922 lookup_ht(C, k(A, B), D),
17923 member(E, D),
17924 E=suspension(_, active, _, _),
17925 !.
17926actual_atomic_multi_hash_keys(A, B, C) :-
17927 D=suspension(E, active, A, B, C),
17928 'chr gen_id'(E),
17929 nb_getval('$chr_store_multi_hash_chr_translate____actual_atomic_multi_hash_keys___3-12',
17930 F),
17931 insert_ht(F, k(A, B), D),
17932 nb_getval('$chr_store_multi_hash_chr_translate____actual_atomic_multi_hash_keys___3-1',
17933 G),
17934 insert_ht(G, A, D).
17935actual_ground_multi_hash_keys(A, B, C) :-
17936 nb_getval('$chr_store_multi_hash_chr_translate____actual_store_types___2-1',
17937 D),
17938 lookup_ht(D, A, E),
17939 member(F, E),
17940 F=suspension(_, active, _, G),
17941 nb_getval('$chr_store_multi_hash_chr_translate____validate_store_type_assumption___1-1',
17942 H),
17943 lookup_ht(H, A, I),
17944 member(J, I),
17945 J=suspension(_, active, _),
17946 !,
17947 setarg(2, F, removed),
17948 nb_getval('$chr_store_multi_hash_chr_translate____actual_store_types___2-1',
17949 K),
17950 delete_ht(K, A, F),
17951 ( B=[L],
17952 get_constraint_arg_type(A, L, M),
17953 M=chr_enum(N)
17954 -> O=complete
17955 ; N=C,
17956 O=incomplete
17957 ),
17958 selectchk(multi_hash([B]), G, P),
17959 actual_store_types(A,
17960 [ground_constants(B, N, O)|P]).
17961actual_ground_multi_hash_keys(A, B, C) :-
17962 nb_getval('$chr_store_multi_hash_chr_translate____actual_atomic_multi_hash_keys___3-12',
17963 D),
17964 lookup_ht(D, k(A, B), E),
17965 member(F, E),
17966 F=suspension(_, active, _, _, G),
17967 !,
17968 setarg(2, F, removed),
17969 nb_getval('$chr_store_multi_hash_chr_translate____actual_atomic_multi_hash_keys___3-12',
17970 H),
17971 delete_ht(H, k(A, B), F),
17972 nb_getval('$chr_store_multi_hash_chr_translate____actual_atomic_multi_hash_keys___3-1',
17973 I),
17974 delete_ht(I, A, F),
17975 append(C, G, J),
17976 sort(J, K),
17977 actual_ground_multi_hash_keys(A, B, K).
17978actual_ground_multi_hash_keys(A, B, C) :-
17979 nb_getval('$chr_store_multi_hash_chr_translate____actual_ground_multi_hash_keys___3-12',
17980 D),
17981 lookup_ht(D, k(A, B), E),
17982 member(F, E),
17983 F=suspension(_, active, _, _, G),
17984 !,
17985 setarg(2, F, removed),
17986 nb_getval('$chr_store_multi_hash_chr_translate____actual_ground_multi_hash_keys___3-12',
17987 H),
17988 delete_ht(H, k(A, B), F),
17989 nb_getval('$chr_store_multi_hash_chr_translate____actual_ground_multi_hash_keys___3-1',
17990 I),
17991 delete_ht(I, A, F),
17992 append(C, G, J),
17993 sort(J, K),
17994 actual_ground_multi_hash_keys(A, B, K).
17995actual_ground_multi_hash_keys(A, B, _) :-
17996 nb_getval('$chr_store_multi_hash_chr_translate____actual_non_ground_multi_hash_key___2-12',
17997 C),
17998 lookup_ht(C, k(A, B), D),
17999 member(E, D),
18000 E=suspension(_, active, _, _),
18001 !.
18002actual_ground_multi_hash_keys(A, B, C) :-
18003 D=suspension(E, active, A, B, C),
18004 'chr gen_id'(E),
18005 nb_getval('$chr_store_multi_hash_chr_translate____actual_ground_multi_hash_keys___3-12',
18006 F),
18007 insert_ht(F, k(A, B), D),
18008 nb_getval('$chr_store_multi_hash_chr_translate____actual_ground_multi_hash_keys___3-1',
18009 G),
18010 insert_ht(G, A, D).
18011actual_non_ground_multi_hash_key(A, B) :-
18012 nb_getval('$chr_store_multi_hash_chr_translate____actual_non_ground_multi_hash_key___2-12',
18013 C),
18014 lookup_ht(C, k(A, B), D),
18015 member(E, D),
18016 E=suspension(_, active, _, _),
18017 !.
18018actual_non_ground_multi_hash_key(A, B) :-
18019 nb_getval('$chr_store_multi_hash_chr_translate____actual_atomic_multi_hash_keys___3-12',
18020 C),
18021 lookup_ht(C, k(A, B), D),
18022 !,
18023 actual_non_ground_multi_hash_key___2__0__0__3(D, A, B).
18024actual_non_ground_multi_hash_key___2__0__0__3([], A, B) :-
18025 actual_non_ground_multi_hash_key___2__1(A, B).
18026actual_non_ground_multi_hash_key___2__0__0__3([A|B], C, D) :-
18027 ( A=suspension(_, active, E, F, _),
18028 E==C,
18029 F==D
18030 -> setarg(2, A, removed),
18031 ( nb_getval('$chr_store_multi_hash_chr_translate____actual_atomic_multi_hash_keys___3-12',
18032 G),
18033 delete_ht(G, k(C, D), A)
18034 ),
18035 nb_getval('$chr_store_multi_hash_chr_translate____actual_atomic_multi_hash_keys___3-1',
18036 H),
18037 delete_ht(H, C, A),
18038 actual_non_ground_multi_hash_key___2__0__0__3(B, C, D)
18039 ; actual_non_ground_multi_hash_key___2__0__0__3(B, C, D)
18040 ).
18041actual_non_ground_multi_hash_key(A, B) :-
18042 actual_non_ground_multi_hash_key___2__1(A, B).
18043actual_non_ground_multi_hash_key___2__1(A, B) :-
18044 nb_getval('$chr_store_multi_hash_chr_translate____actual_ground_multi_hash_keys___3-12',
18045 C),
18046 lookup_ht(C, k(A, B), D),
18047 !,
18048 actual_non_ground_multi_hash_key___2__1__0__4(D, A, B).
18049actual_non_ground_multi_hash_key___2__1__0__4([], A, B) :-
18050 actual_non_ground_multi_hash_key___2__2(A, B).
18051actual_non_ground_multi_hash_key___2__1__0__4([A|B], C, D) :-
18052 ( A=suspension(_, active, E, F, _),
18053 E==C,
18054 F==D
18055 -> setarg(2, A, removed),
18056 ( nb_getval('$chr_store_multi_hash_chr_translate____actual_ground_multi_hash_keys___3-12',
18057 G),
18058 delete_ht(G, k(C, D), A)
18059 ),
18060 nb_getval('$chr_store_multi_hash_chr_translate____actual_ground_multi_hash_keys___3-1',
18061 H),
18062 delete_ht(H, C, A),
18063 actual_non_ground_multi_hash_key___2__1__0__4(B, C, D)
18064 ; actual_non_ground_multi_hash_key___2__1__0__4(B, C, D)
18065 ).
18066actual_non_ground_multi_hash_key___2__1(A, B) :-
18067 actual_non_ground_multi_hash_key___2__2(A, B).
18068actual_non_ground_multi_hash_key___2__2(A, B) :-
18069 C=suspension(D, active, A, B),
18070 'chr gen_id'(D),
18071 nb_getval('$chr_store_multi_hash_chr_translate____actual_non_ground_multi_hash_key___2-12',
18072 E),
18073 insert_ht(E, k(A, B), C).
18074symbol_count(A, B) :-
18075 symbol_count___2__0(A, B, _).
18076symbol_count___2__0(A, B, C) :-
18077 ( 'chr newvia_1'(A, D)
18078 -> get_attr(D, chr_translate, E),
18079 E=v(_, _, _, F, _, _, _, _, _, _, _)
18080 ; nb_getval('$chr_store_global_list_chr_translate____fresh_symbol___2',
18081 F)
18082 ),
18083 member(G, F),
18084 G=suspension(_, active, _, _, _, H, I),
18085 H==A,
18086 !,
18087 G=suspension(_, _, _, _, _, J, _),
18088 setarg(2, G, removed),
18089 term_variables(J, K),
18090 arg(5, G, L),
18091 ( var(L)
18092 -> nb_getval('$chr_store_global_list_chr_translate____fresh_symbol___2',
18093 M),
18094 M=[_|N],
18095 b_setval('$chr_store_global_list_chr_translate____fresh_symbol___2',
18096 N),
18097 ( N=[O|_]
18098 -> setarg(5, O, _)
18099 ; true
18100 )
18101 ; L=[_, _|N],
18102 setarg(2, L, N),
18103 ( N=[O|_]
18104 -> setarg(5, O, L)
18105 ; true
18106 )
18107 ),
18108 detach_fresh_symbol___2(K, G),
18109 ( var(C)
18110 -> true
18111 ; C=suspension(_, _, _, P, _),
18112 setarg(2, C, removed),
18113 term_variables(P, Q),
18114 arg(3, C, R),
18115 ( var(R)
18116 -> nb_getval('$chr_store_global_list_chr_translate____symbol_count___2',
18117 S),
18118 S=[_|T],
18119 b_setval('$chr_store_global_list_chr_translate____symbol_count___2',
18120 T),
18121 ( T=[U|_]
18122 -> setarg(3, U, _)
18123 ; true
18124 )
18125 ; R=[_, _|T],
18126 setarg(2, R, T),
18127 ( T=[U|_]
18128 -> setarg(3, U, R)
18129 ; true
18130 )
18131 ),
18132 detach_symbol_count___2(Q, C)
18133 ),
18134 atom_concat(A, B, I),
18135 V is B+1,
18136 symbol_count(A, V).
18137symbol_count___2__0(A, B, C) :-
18138 ( var(C)
18139 -> C=suspension(D, active, _, A, B),
18140 term_variables(A, E),
18141 'chr gen_id'(D),
18142 nb_getval('$chr_store_global_list_chr_translate____symbol_count___2',
18143 F),
18144 G=[C|F],
18145 b_setval('$chr_store_global_list_chr_translate____symbol_count___2',
18146 G),
18147 ( F=[H|_]
18148 -> setarg(3, H, G)
18149 ; true
18150 ),
18151 attach_symbol_count___2(E, C)
18152 ; setarg(2, C, active)
18153 ).
18154fresh_symbol(A, B) :-
18155 fresh_symbol___2__0(A, B, _).
18156fresh_symbol___2__0(A, B, C) :-
18157 ( 'chr newvia_1'(A, D)
18158 -> get_attr(D, chr_translate, E),
18159 E=v(_, _, F, _, _, _, _, _, _, _, _)
18160 ; nb_getval('$chr_store_global_list_chr_translate____symbol_count___2',
18161 F)
18162 ),
18163 member(G, F),
18164 G=suspension(_, active, _, H, I),
18165 H==A,
18166 !,
18167 G=suspension(_, _, _, J, _),
18168 setarg(2, G, removed),
18169 term_variables(J, K),
18170 arg(3, G, L),
18171 ( var(L)
18172 -> nb_getval('$chr_store_global_list_chr_translate____symbol_count___2',
18173 M),
18174 M=[_|N],
18175 b_setval('$chr_store_global_list_chr_translate____symbol_count___2',
18176 N),
18177 ( N=[O|_]
18178 -> setarg(3, O, _)
18179 ; true
18180 )
18181 ; L=[_, _|N],
18182 setarg(2, L, N),
18183 ( N=[O|_]
18184 -> setarg(3, O, L)
18185 ; true
18186 )
18187 ),
18188 detach_symbol_count___2(K, G),
18189 ( var(C)
18190 -> true
18191 ; C=suspension(_, P, _, _, _, Q, _),
18192 setarg(2, C, removed),
18193 ( P==not_stored_yet
18194 -> R=[]
18195 ; term_variables(Q, R),
18196 arg(5, C, S),
18197 ( var(S)
18198 -> nb_getval('$chr_store_global_list_chr_translate____fresh_symbol___2',
18199 T),
18200 T=[_|U],
18201 b_setval('$chr_store_global_list_chr_translate____fresh_symbol___2',
18202 U),
18203 ( U=[V|_]
18204 -> setarg(5, V, _)
18205 ; true
18206 )
18207 ; S=[_, _|U],
18208 setarg(2, S, U),
18209 ( U=[V|_]
18210 -> setarg(5, V, S)
18211 ; true
18212 )
18213 ),
18214 detach_fresh_symbol___2(R, C)
18215 )
18216 ),
18217 atom_concat(A, I, B),
18218 W is I+1,
18219 symbol_count(A, W).
18220fresh_symbol___2__0(A, B, C) :-
18221 ( var(C)
18222 -> C=suspension(D, not_stored_yet, t, 0, _, A, B),
18223 'chr gen_id'(D)
18224 ; true
18225 ),
18226 ( '$novel_production'(C, 157),
18227 !,
18228 '$extend_history'(C, 157),
18229 arg(2, C, E),
18230 setarg(2, C, active),
18231 arg(4, C, F),
18232 G is F+1,
18233 setarg(4, C, G),
18234 ( E==not_stored_yet
18235 -> C=suspension(_, _, _, _, _, H, _),
18236 term_variables(H, I),
18237 nb_getval('$chr_store_global_list_chr_translate____fresh_symbol___2',
18238 J),
18239 K=[C|J],
18240 b_setval('$chr_store_global_list_chr_translate____fresh_symbol___2',
18241 K),
18242 ( J=[L|_]
18243 -> setarg(5, L, K)
18244 ; true
18245 ),
18246 attach_fresh_symbol___2(I, C)
18247 ; true
18248 ),
18249 symbol_count(A, 0),
18250 ( C=suspension(_, active, _, G, _, _, _)
18251 -> setarg(2, C, inactive),
18252 fresh_symbol___2__1(A, B, C)
18253 ; true
18254 )
18255 ; fresh_symbol___2__1(A, B, C)
18256 ).
18257fresh_symbol___2__1(_, _, A) :-
18258 arg(2, A, B),
18259 setarg(2, A, active),
18260 arg(4, A, C),
18261 D is C+1,
18262 setarg(4, A, D),
18263 ( B==not_stored_yet
18264 -> A=suspension(_, _, _, _, _, E, _),
18265 term_variables(E, F),
18266 nb_getval('$chr_store_global_list_chr_translate____fresh_symbol___2',
18267 G),
18268 H=[A|G],
18269 b_setval('$chr_store_global_list_chr_translate____fresh_symbol___2',
18270 H),
18271 ( G=[I|_]
18272 -> setarg(5, I, H)
18273 ; true
18274 ),
18275 attach_fresh_symbol___2(F, A)
18276 ; true
18277 ).
18278prolog_global_variable(A) :-
18279 nb_getval('$chr_store_multi_hash_chr_translate____prolog_global_variable___1-1',
18280 B),
18281 lookup_ht(B, A, C),
18282 member(D, C),
18283 D=suspension(_, active, _, _),
18284 !.
18285prolog_global_variable(A) :-
18286 B=suspension(C, active, _, A),
18287 'chr gen_id'(C),
18288 nb_getval('$chr_store_global_ground_chr_translate____prolog_global_variable___1',
18289 D),
18290 E=[B|D],
18291 b_setval('$chr_store_global_ground_chr_translate____prolog_global_variable___1',
18292 E),
18293 ( D=[F|_]
18294 -> setarg(3, F, E)
18295 ; true
18296 ),
18297 nb_getval('$chr_store_multi_hash_chr_translate____prolog_global_variable___1-1',
18298 G),
18299 insert_ht(G, A, B).
18300prolog_global_variables(A) :-
18301 nb_getval('$chr_store_global_ground_chr_translate____prolog_global_variable___1',
18302 B),
18303 member(C, B),
18304 C=suspension(_, active, _, D),
18305 !,
18306 setarg(2, C, removed),
18307 arg(3, C, E),
18308 ( var(E)
18309 -> nb_getval('$chr_store_global_ground_chr_translate____prolog_global_variable___1',
18310 F),
18311 F=[_|G],
18312 b_setval('$chr_store_global_ground_chr_translate____prolog_global_variable___1',
18313 G),
18314 ( G=[H|_]
18315 -> setarg(3, H, _)
18316 ; true
18317 )
18318 ; E=[_, _|G],
18319 setarg(2, E, G),
18320 ( G=[H|_]
18321 -> setarg(3, H, E)
18322 ; true
18323 )
18324 ),
18325 nb_getval('$chr_store_multi_hash_chr_translate____prolog_global_variable___1-1',
18326 I),
18327 delete_ht(I, D, C),
18328 A=[D|J],
18329 prolog_global_variables(J).
18330prolog_global_variables([]).
18331background_info(A) :-
18332 nb_getval('$chr_store_global_ground_chr_translate____background_info___1',
18333 B),
18334 member(C, B),
18335 C=suspension(_, active, _, D),
18336 !,
18337 setarg(2, C, removed),
18338 arg(3, C, E),
18339 ( var(E)
18340 -> nb_getval('$chr_store_global_ground_chr_translate____background_info___1',
18341 F),
18342 F=[_|G],
18343 b_setval('$chr_store_global_ground_chr_translate____background_info___1',
18344 G),
18345 ( G=[H|_]
18346 -> setarg(3, H, _)
18347 ; true
18348 )
18349 ; E=[_, _|G],
18350 setarg(2, E, G),
18351 ( G=[H|_]
18352 -> setarg(3, H, E)
18353 ; true
18354 )
18355 ),
18356 append(A, D, I),
18357 background_info(I).
18358background_info(A) :-
18359 B=suspension(C, active, _, A),
18360 'chr gen_id'(C),
18361 nb_getval('$chr_store_global_ground_chr_translate____background_info___1',
18362 D),
18363 E=[B|D],
18364 b_setval('$chr_store_global_ground_chr_translate____background_info___1',
18365 E),
18366 ( D=[F|_]
18367 -> setarg(3, F, E)
18368 ; true
18369 ).
18370background_info(A, B) :-
18371 background_info___2__0(A, B, _).
18372background_info___2__0(A, B, C) :-
18373 nb_getval('$chr_store_global_list_chr_translate____get_bg_info___2', D),
18374 !,
18375 ( var(C)
18376 -> C=suspension(E, not_stored_yet, t, 0, _, A, B),
18377 'chr gen_id'(E)
18378 ; true
18379 ),
18380 background_info___2__0__0__1(D, A, B, C).
18381background_info___2__0__0__1([], A, B, C) :-
18382 background_info___2__1(A, B, C).
18383background_info___2__0__0__1([A|B], C, D, E) :-
18384 ( A=suspension(_, active, _, _, _, F, _),
18385 G=t(164, E, A),
18386 '$novel_production'(E, G),
18387 '$novel_production'(A, G),
18388 copy_term_nat(C, H),
18389 subsumes_term(H, F)
18390 -> '$extend_history'(E, G),
18391 arg(2, E, I),
18392 setarg(2, E, active),
18393 ( arg(4, E, J),
18394 K is J+1,
18395 setarg(4, E, K)
18396 ),
18397 ( I==not_stored_yet
18398 -> E=suspension(_, _, _, _, _, L, _),
18399 term_variables(L, M),
18400 nb_getval('$chr_store_global_list_chr_translate____background_info___2',
18401 N),
18402 O=[E|N],
18403 b_setval('$chr_store_global_list_chr_translate____background_info___2',
18404 O),
18405 ( N=[P|_]
18406 -> setarg(5, P, O)
18407 ; true
18408 ),
18409 attach_background_info___2(M, E)
18410 ; true
18411 ),
18412 copy_term_nat(C-D, F-Q),
18413 get_bg_info_answer([Q]),
18414 ( E=suspension(_, active, _, K, _, _, _)
18415 -> setarg(2, E, inactive),
18416 background_info___2__0__0__1(B, C, D, E)
18417 ; true
18418 )
18419 ; background_info___2__0__0__1(B, C, D, E)
18420 ).
18421background_info___2__0(A, B, C) :-
18422 ( var(C)
18423 -> C=suspension(D, not_stored_yet, t, 0, _, A, B),
18424 'chr gen_id'(D)
18425 ; true
18426 ),
18427 background_info___2__1(A, B, C).
18428background_info___2__1(_, _, A) :-
18429 arg(2, A, B),
18430 setarg(2, A, active),
18431 arg(4, A, C),
18432 D is C+1,
18433 setarg(4, A, D),
18434 ( B==not_stored_yet
18435 -> A=suspension(_, _, _, _, _, E, _),
18436 term_variables(E, F),
18437 nb_getval('$chr_store_global_list_chr_translate____background_info___2',
18438 G),
18439 H=[A|G],
18440 b_setval('$chr_store_global_list_chr_translate____background_info___2',
18441 H),
18442 ( G=[I|_]
18443 -> setarg(5, I, H)
18444 ; true
18445 ),
18446 attach_background_info___2(F, A)
18447 ; true
18448 ).
18449get_bg_info(A) :-
18450 nb_getval('$chr_store_global_ground_chr_translate____background_info___1',
18451 B),
18452 member(C, B),
18453 C=suspension(_, active, _, D),
18454 !,
18455 A=D.
18456get_bg_info([]).
18457get_bg_info(A, B) :-
18458 get_bg_info___2__0(A, B, _).
18459get_bg_info___2__0(A, B, C) :-
18460 nb_getval('$chr_store_global_list_chr_translate____background_info___2',
18461 D),
18462 !,
18463 ( var(C)
18464 -> C=suspension(E, not_stored_yet, t, 0, _, A, B),
18465 'chr gen_id'(E)
18466 ; true
18467 ),
18468 get_bg_info___2__0__0__1(D, A, B, C).
18469get_bg_info___2__0__0__1([], A, B, C) :-
18470 get_bg_info___2__1(A, B, C).
18471get_bg_info___2__0__0__1([A|B], C, D, E) :-
18472 ( A=suspension(_, active, _, _, _, F, G),
18473 H=t(164, A, E),
18474 '$novel_production'(A, H),
18475 '$novel_production'(E, H),
18476 copy_term_nat(F, I),
18477 subsumes_term(I, C)
18478 -> '$extend_history'(E, H),
18479 arg(2, E, J),
18480 setarg(2, E, active),
18481 ( arg(4, E, K),
18482 L is K+1,
18483 setarg(4, E, L)
18484 ),
18485 ( J==not_stored_yet
18486 -> E=suspension(_, _, _, _, _, M, _),
18487 term_variables(M, N),
18488 nb_getval('$chr_store_global_list_chr_translate____get_bg_info___2',
18489 O),
18490 P=[E|O],
18491 b_setval('$chr_store_global_list_chr_translate____get_bg_info___2',
18492 P),
18493 ( O=[Q|_]
18494 -> setarg(5, Q, P)
18495 ; true
18496 ),
18497 attach_get_bg_info___2(N, E)
18498 ; true
18499 ),
18500 copy_term_nat(F-G, C-R),
18501 get_bg_info_answer([R]),
18502 ( E=suspension(_, active, _, L, _, _, _)
18503 -> setarg(2, E, inactive),
18504 get_bg_info___2__0__0__1(B, C, D, E)
18505 ; true
18506 )
18507 ; get_bg_info___2__0__0__1(B, C, D, E)
18508 ).
18509get_bg_info___2__0(A, B, C) :-
18510 ( var(C)
18511 -> C=suspension(D, not_stored_yet, t, 0, _, A, B),
18512 'chr gen_id'(D)
18513 ; true
18514 ),
18515 get_bg_info___2__1(A, B, C).
18516get_bg_info___2__1(_, A, B) :-
18517 nb_getval('$chr_store_global_ground_chr_translate____get_bg_info_answer___1',
18518 C),
18519 member(D, C),
18520 D=suspension(_, active, _, E),
18521 !,
18522 setarg(2, D, removed),
18523 arg(3, D, F),
18524 ( var(F)
18525 -> nb_getval('$chr_store_global_ground_chr_translate____get_bg_info_answer___1',
18526 G),
18527 G=[_|H],
18528 b_setval('$chr_store_global_ground_chr_translate____get_bg_info_answer___1',
18529 H),
18530 ( H=[I|_]
18531 -> setarg(3, I, _)
18532 ; true
18533 )
18534 ; F=[_, _|H],
18535 setarg(2, F, H),
18536 ( H=[I|_]
18537 -> setarg(3, I, F)
18538 ; true
18539 )
18540 ),
18541 ( var(B)
18542 -> true
18543 ; B=suspension(_, J, _, _, _, K, _),
18544 setarg(2, B, removed),
18545 ( J==not_stored_yet
18546 -> L=[]
18547 ; term_variables(K, L),
18548 arg(5, B, M),
18549 ( var(M)
18550 -> nb_getval('$chr_store_global_list_chr_translate____get_bg_info___2',
18551 N),
18552 N=[_|O],
18553 b_setval('$chr_store_global_list_chr_translate____get_bg_info___2',
18554 O),
18555 ( O=[P|_]
18556 -> setarg(5, P, _)
18557 ; true
18558 )
18559 ; M=[_, _|O],
18560 setarg(2, M, O),
18561 ( O=[P|_]
18562 -> setarg(5, P, M)
18563 ; true
18564 )
18565 ),
18566 detach_get_bg_info___2(L, B)
18567 )
18568 ),
18569 A=E.
18570get_bg_info___2__1(_, A, B) :-
18571 ( var(B)
18572 -> true
18573 ; B=suspension(_, C, _, _, _, D, _),
18574 setarg(2, B, removed),
18575 ( C==not_stored_yet
18576 -> E=[]
18577 ; term_variables(D, E),
18578 arg(5, B, F),
18579 ( var(F)
18580 -> nb_getval('$chr_store_global_list_chr_translate____get_bg_info___2',
18581 G),
18582 G=[_|H],
18583 b_setval('$chr_store_global_list_chr_translate____get_bg_info___2',
18584 H),
18585 ( H=[I|_]
18586 -> setarg(5, I, _)
18587 ; true
18588 )
18589 ; F=[_, _|H],
18590 setarg(2, F, H),
18591 ( H=[I|_]
18592 -> setarg(5, I, F)
18593 ; true
18594 )
18595 ),
18596 detach_get_bg_info___2(E, B)
18597 )
18598 ),
18599 A=[].
18600get_bg_info_answer(A) :-
18601 nb_getval('$chr_store_global_ground_chr_translate____get_bg_info_answer___1',
18602 B),
18603 member(C, B),
18604 C=suspension(_, active, _, D),
18605 !,
18606 setarg(2, C, removed),
18607 arg(3, C, E),
18608 ( var(E)
18609 -> nb_getval('$chr_store_global_ground_chr_translate____get_bg_info_answer___1',
18610 F),
18611 F=[_|G],
18612 b_setval('$chr_store_global_ground_chr_translate____get_bg_info_answer___1',
18613 G),
18614 ( G=[H|_]
18615 -> setarg(3, H, _)
18616 ; true
18617 )
18618 ; E=[_, _|G],
18619 setarg(2, E, G),
18620 ( G=[H|_]
18621 -> setarg(3, H, E)
18622 ; true
18623 )
18624 ),
18625 append(A, D, I),
18626 get_bg_info_answer(I).
18627get_bg_info_answer(A) :-
18628 B=suspension(C, active, _, A),
18629 'chr gen_id'(C),
18630 nb_getval('$chr_store_global_ground_chr_translate____get_bg_info_answer___1',
18631 D),
18632 E=[B|D],
18633 b_setval('$chr_store_global_ground_chr_translate____get_bg_info_answer___1',
18634 E),
18635 ( D=[F|_]
18636 -> setarg(3, F, E)
18637 ; true
18638 ).
18639prev_guard_list(A, B, C, D, E, F, G, H) :-
18640 nb_getval('$chr_store_multi_hash_chr_translate____rule___2-1', I),
18641 lookup_ht(I, B, J),
18642 member(K, J),
18643 K=suspension(_, active, _, _, _, L),
18644 L=pragma(rule(M, N, O, _), _, _, _, _),
18645 M\==[],
18646 make_head_matchings_explicit(B, P, Q),
18647 setof(R,
18648 chr_translate:head_subset(P, D, R),
18649 S),
18650 !,
18651 append(M, N, T),
18652 compute_derived_info(S,
18653 Q,
18654 P,
18655 T,
18656 O,
18657 G,
18658 D,
18659 H,
18660 U,
18661 V),
18662 append(F, U, W),
18663 normalize_conj_list(W, X),
18664 append(V, H, Y),
18665 normalize_conj_list(Y, Z),
18666 next_prev_rule(C, A1, B1),
18667 prev_guard_list(A,
18668 A1,
18669 B1,
18670 D,
18671 E,
18672 X,
18673 G,
18674 Z).
18675prev_guard_list(A, B, C, D, E, F, G, H) :-
18676 ( B>0
18677 -> next_prev_rule(C, I, J),
18678 prev_guard_list(A,
18679 I,
18680 J,
18681 D,
18682 E,
18683 F,
18684 G,
18685 H)
18686 ; prev_guard_list(A, D, E, F, G, H)
18687 ).
18688prev_guard_list(A, B, C, D, E, F) :-
18689 prev_guard_list___6__0(A,
18690 B,
18691 C,
18692 D,
18693 E,
18694 F,
18695 _).
18696prev_guard_list___6__0(A, B, C, D, E, F, _) :-
18697 F\==[],
18698 !,
18699 head_types_modes_condition(F, B, G),
18700 conj2list(G, H),
18701 term_variables(B, I),
18702 append([chr_pp_headvariables(I)|H], D, J),
18703 normalize_conj_list(J, K),
18704 append(B, K, L),
18705 add_background_info([C|L], M),
18706 append(K, M, N),
18707 normalize_conj_list(N, O),
18708 prev_guard_list(A, B, C, O, E, []).
18709prev_guard_list___6__0(A, B, C, D, E, F, G) :-
18710 nb_getval('$chr_store_multi_hash_chr_translate____rule___2-1', H),
18711 lookup_ht(H, A, I),
18712 ( member(J, I),
18713 J=suspension(_, active, _, _, _, K),
18714 K=pragma(rule(L, M, C, N), O, P, Q, A),
18715 C\==true,
18716 append(E, D, R),
18717 ( conj2list(C, S),
18718 append(R, S, T),
18719 guard_entailment:entails_guard(T, fail)
18720 -> U=fail
18721 ; simplify_guard(C, N, R, U, V)
18722 ),
18723 C\==U,
18724 !,
18725 setarg(2, J, removed),
18726 arg(4, J, W),
18727 ( var(W)
18728 -> nb_getval('$chr_store_global_ground_chr_translate____rule___2',
18729 X),
18730 X=[_|Y],
18731 b_setval('$chr_store_global_ground_chr_translate____rule___2',
18732 Y),
18733 ( Y=[Z|_]
18734 -> setarg(4, Z, _)
18735 ; true
18736 )
18737 ; W=[_, _|Y],
18738 setarg(2, W, Y),
18739 ( Y=[Z|_]
18740 -> setarg(4, Z, W)
18741 ; true
18742 )
18743 ),
18744 nb_getval('$chr_store_multi_hash_chr_translate____rule___2-1', A1),
18745 delete_ht(A1, A, J),
18746 rule(A,
18747 pragma(rule(L, M, U, V),
18748 O,
18749 P,
18750 Q,
18751 A)),
18752 prev_guard_list(A, B, U, D, E, [])
18753 ; !,
18754 G=suspension(B1, not_stored_yet, t, _, A, B, C, D, E, F),
18755 'chr gen_id'(B1),
18756 prev_guard_list___6__0__0__3(I,
18757 A,
18758 B,
18759 C,
18760 D,
18761 E,
18762 F,
18763 G)
18764 ).
18765prev_guard_list___6__0__0__3([], A, B, C, D, E, F, G) :-
18766 prev_guard_list___6__1(A,
18767 B,
18768 C,
18769 D,
18770 E,
18771 F,
18772 G).
18773prev_guard_list___6__0__0__3([A|B], C, D, E, F, G, H, I) :-
18774 ( A=suspension(_, active, _, _, J, K),
18775 J==C,
18776 L=t(178, I, A),
18777 '$novel_production'(I, L),
18778 '$novel_production'(A, L),
18779 chr_pp_flag(check_impossible_rules, on),
18780 K=pragma(rule(_, _, E, _), _, _, _, C),
18781 conj2list(E, M),
18782 append(G, F, N),
18783 append(N, M, O),
18784 guard_entailment:entails_guard(O, fail)
18785 -> '$extend_history'(I, L),
18786 arg(2, I, P),
18787 setarg(2, I, active),
18788 ( P==not_stored_yet
18789 -> nb_getval('$chr_store_global_ground_chr_translate____prev_guard_list___6',
18790 Q),
18791 R=[I|Q],
18792 b_setval('$chr_store_global_ground_chr_translate____prev_guard_list___6',
18793 R),
18794 ( Q=[S|_]
18795 -> setarg(4, S, R)
18796 ; true
18797 ),
18798 nb_getval('$chr_store_multi_hash_chr_translate____prev_guard_list___6-1',
18799 T),
18800 insert_ht(T, C, I)
18801 ; true
18802 ),
18803 chr_warning(weird_program,
18804 'Heads will never match or guard will always fail in ~@.\n\tThis rule will never fire!\n',
18805 [format_rule(K)]),
18806 set_all_passive(C),
18807 ( I=suspension(_, active, _, _, _, _, _, _, _, _)
18808 -> setarg(2, I, inactive),
18809 prev_guard_list___6__0__0__3(B,
18810 C,
18811 D,
18812 E,
18813 F,
18814 G,
18815 H,
18816 I)
18817 ; true
18818 )
18819 ; prev_guard_list___6__0__0__3(B,
18820 C,
18821 D,
18822 E,
18823 F,
18824 G,
18825 H,
18826 I)
18827 ).
18828prev_guard_list___6__0(A, B, C, D, E, F, G) :-
18829 G=suspension(H, not_stored_yet, t, _, A, B, C, D, E, F),
18830 'chr gen_id'(H),
18831 prev_guard_list___6__1(A,
18832 B,
18833 C,
18834 D,
18835 E,
18836 F,
18837 G).
18838prev_guard_list___6__1(A, B, C, D, E, F, G) :-
18839 nb_getval('$chr_store_multi_hash_chr_translate____rule___2-1', H),
18840 lookup_ht(H, A, I),
18841 !,
18842 prev_guard_list___6__1__0__4(I,
18843 A,
18844 B,
18845 C,
18846 D,
18847 E,
18848 F,
18849 G).
18850prev_guard_list___6__1__0__4([], A, B, C, D, E, F, G) :-
18851 prev_guard_list___6__2(A,
18852 B,
18853 C,
18854 D,
18855 E,
18856 F,
18857 G).
18858prev_guard_list___6__1__0__4([A|B], C, D, E, F, G, H, I) :-
18859 ( A=suspension(_, active, _, _, J, K),
18860 J==C,
18861 K=pragma(rule(L, M, E, N), O, P, Q, C),
18862 simplify_heads(G, F, E, N, R, S),
18863 R\==[],
18864 extract_arguments(L, T),
18865 extract_arguments(M, U),
18866 extract_arguments(D, V),
18867 replace_some_heads(T,
18868 U,
18869 V,
18870 R,
18871 W,
18872 X,
18873 E,
18874 N,
18875 Y),
18876 substitute_arguments(L, W, Z),
18877 substitute_arguments(M, X, A1),
18878 append(S, Y, B1),
18879 list2conj(B1, C1),
18880 D1=pragma(rule(Z, A1, E, (C1, N)), O, P, Q, C),
18881 ( L\==Z
18882 ; M\==A1
18883 )
18884 -> setarg(2, A, removed),
18885 ( arg(4, A, E1),
18886 ( var(E1)
18887 -> nb_getval('$chr_store_global_ground_chr_translate____rule___2',
18888 F1),
18889 F1=[_|G1],
18890 b_setval('$chr_store_global_ground_chr_translate____rule___2',
18891 G1),
18892 ( G1=[H1|_]
18893 -> setarg(4, H1, _)
18894 ; true
18895 )
18896 ; E1=[_, _|G1],
18897 setarg(2, E1, G1),
18898 ( G1=[H1|_]
18899 -> setarg(4, H1, E1)
18900 ; true
18901 )
18902 )
18903 ),
18904 nb_getval('$chr_store_multi_hash_chr_translate____rule___2-1', I1),
18905 delete_ht(I1, C, A),
18906 arg(2, I, J1),
18907 setarg(2, I, active),
18908 ( J1==not_stored_yet
18909 -> nb_getval('$chr_store_global_ground_chr_translate____prev_guard_list___6',
18910 K1),
18911 L1=[I|K1],
18912 b_setval('$chr_store_global_ground_chr_translate____prev_guard_list___6',
18913 L1),
18914 ( K1=[M1|_]
18915 -> setarg(4, M1, L1)
18916 ; true
18917 ),
18918 nb_getval('$chr_store_multi_hash_chr_translate____prev_guard_list___6-1',
18919 N1),
18920 insert_ht(N1, C, I)
18921 ; true
18922 ),
18923 rule(C, D1),
18924 ( I=suspension(_, active, _, _, _, _, _, _, _, _)
18925 -> setarg(2, I, inactive),
18926 prev_guard_list___6__1__0__4(B,
18927 C,
18928 D,
18929 E,
18930 F,
18931 G,
18932 H,
18933 I)
18934 ; true
18935 )
18936 ; prev_guard_list___6__1__0__4(B,
18937 C,
18938 D,
18939 E,
18940 F,
18941 G,
18942 H,
18943 I)
18944 ).
18945prev_guard_list___6__1(A, B, C, D, E, F, G) :-
18946 prev_guard_list___6__2(A,
18947 B,
18948 C,
18949 D,
18950 E,
18951 F,
18952 G).
18953prev_guard_list___6__2(A, B, C, D, E, F, G) :-
18954 nb_getval('$chr_store_multi_hash_chr_translate____rule___2-1', H),
18955 lookup_ht(H, A, I),
18956 !,
18957 prev_guard_list___6__2__0__5(I,
18958 A,
18959 B,
18960 C,
18961 D,
18962 E,
18963 F,
18964 G).
18965prev_guard_list___6__2__0__5([], A, B, C, D, E, F, G) :-
18966 prev_guard_list___6__3(A,
18967 B,
18968 C,
18969 D,
18970 E,
18971 F,
18972 G).
18973prev_guard_list___6__2__0__5([A|B], C, D, E, F, G, H, I) :-
18974 ( A=suspension(_, active, _, _, J, K),
18975 J==C,
18976 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-3',
18977 L),
18978 lookup_ht(L, C, M)
18979 -> prev_guard_list___6__2__1__5(M,
18980 K,
18981 A,
18982 B,
18983 C,
18984 D,
18985 E,
18986 F,
18987 G,
18988 H,
18989 I)
18990 ; prev_guard_list___6__2__0__5(B,
18991 C,
18992 D,
18993 E,
18994 F,
18995 G,
18996 H,
18997 I)
18998 ).
18999prev_guard_list___6__2__1__5([], _, _, A, B, C, D, E, F, G, H) :-
19000 prev_guard_list___6__2__0__5(A,
19001 B,
19002 C,
19003 D,
19004 E,
19005 F,
19006 G,
19007 H).
19008prev_guard_list___6__2__1__5([A|B], C, D, E, F, G, H, I, J, K, L) :-
19009 ( A=suspension(_, active, _, _, M, N, O, _, _),
19010 O==F,
19011 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-13',
19012 P),
19013 lookup_ht(P, k(M, F), Q)
19014 -> prev_guard_list___6__2__2__5(Q,
19015 M,
19016 N,
19017 A,
19018 B,
19019 C,
19020 D,
19021 E,
19022 F,
19023 G,
19024 H,
19025 I,
19026 J,
19027 K,
19028 L)
19029 ; prev_guard_list___6__2__1__5(B,
19030 C,
19031 D,
19032 E,
19033 F,
19034 G,
19035 H,
19036 I,
19037 J,
19038 K,
19039 L)
19040 ).
19041prev_guard_list___6__2__2__5([], _, _, _, A, B, C, D, E, F, G, H, I, J, K) :-
19042 prev_guard_list___6__2__1__5(A,
19043 B,
19044 C,
19045 D,
19046 E,
19047 F,
19048 G,
19049 H,
19050 I,
19051 J,
19052 K).
19053prev_guard_list___6__2__2__5([A|B], C, D, E, F, G, H, I, J, K, L, M, N, O, P) :-
19054 ( A=suspension(_, active, _, _, Q, R, S, T, _),
19055 A\==E,
19056 Q==C,
19057 S==J,
19058 nb_getval('$chr_store_global_ground_chr_translate____multiple_occ_constraints_checked___1',
19059 U)
19060 -> prev_guard_list___6__2__3__5(U,
19061 R,
19062 T,
19063 A,
19064 B,
19065 C,
19066 D,
19067 E,
19068 F,
19069 G,
19070 H,
19071 I,
19072 J,
19073 K,
19074 L,
19075 M,
19076 N,
19077 O,
19078 P)
19079 ; prev_guard_list___6__2__2__5(B,
19080 C,
19081 D,
19082 E,
19083 F,
19084 G,
19085 H,
19086 I,
19087 J,
19088 K,
19089 L,
19090 M,
19091 N,
19092 O,
19093 P)
19094 ).
19095prev_guard_list___6__2__3__5([], _, _, _, A, B, C, D, E, F, G, H, I, J, K, L, M, N, O) :-
19096 prev_guard_list___6__2__2__5(A,
19097 B,
19098 C,
19099 D,
19100 E,
19101 F,
19102 G,
19103 H,
19104 I,
19105 J,
19106 K,
19107 L,
19108 M,
19109 N,
19110 O).
19111prev_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) :-
19112 ( A=suspension(_, active, _, U),
19113 C<H,
19114 chr_pp_flag(occurrence_subsumption, on),
19115 K=pragma(rule(V, _, _, _), _, _, _, _),
19116 V\==[],
19117 \+ tree_set_memberchk(G, U)
19118 -> setarg(2, A, removed),
19119 arg(3, A, W),
19120 ( var(W)
19121 -> nb_getval('$chr_store_global_ground_chr_translate____multiple_occ_constraints_checked___1',
19122 X),
19123 X=[_|Y],
19124 b_setval('$chr_store_global_ground_chr_translate____multiple_occ_constraints_checked___1',
19125 Y),
19126 ( Y=[Z|_]
19127 -> setarg(3, Z, _)
19128 ; true
19129 )
19130 ; W=[_, _|Y],
19131 setarg(2, W, Y),
19132 ( Y=[Z|_]
19133 -> setarg(3, Z, W)
19134 ; true
19135 )
19136 ),
19137 arg(2, T, A1),
19138 setarg(2, T, active),
19139 ( A1==not_stored_yet
19140 -> nb_getval('$chr_store_global_ground_chr_translate____prev_guard_list___6',
19141 B1),
19142 C1=[T|B1],
19143 b_setval('$chr_store_global_ground_chr_translate____prev_guard_list___6',
19144 C1),
19145 ( B1=[D1|_]
19146 -> setarg(4, D1, C1)
19147 ; true
19148 ),
19149 nb_getval('$chr_store_multi_hash_chr_translate____prev_guard_list___6-1',
19150 E1),
19151 insert_ht(E1, N, T)
19152 ; true
19153 ),
19154 first_occ_in_rule(N, G, C, D),
19155 tree_set_add(U, G, F1),
19156 multiple_occ_constraints_checked(F1),
19157 ( T=suspension(_, active, _, _, _, _, _, _, _, _)
19158 -> setarg(2, T, inactive),
19159 prev_guard_list___6__2__3__5(B,
19160 C,
19161 D,
19162 E,
19163 F,
19164 G,
19165 H,
19166 I,
19167 J,
19168 K,
19169 L,
19170 M,
19171 N,
19172 O,
19173 P,
19174 Q,
19175 R,
19176 S,
19177 T)
19178 ; true
19179 )
19180 ; prev_guard_list___6__2__3__5(B,
19181 C,
19182 D,
19183 E,
19184 F,
19185 G,
19186 H,
19187 I,
19188 J,
19189 K,
19190 L,
19191 M,
19192 N,
19193 O,
19194 P,
19195 Q,
19196 R,
19197 S,
19198 T)
19199 ).
19200prev_guard_list___6__2(A, B, C, D, E, F, G) :-
19201 prev_guard_list___6__3(A,
19202 B,
19203 C,
19204 D,
19205 E,
19206 F,
19207 G).
19208prev_guard_list___6__3(A, _, _, _, _, _, B) :-
19209 nb_getval('$chr_store_global_ground_chr_translate____multiple_occ_constraints_checked___1',
19210 C),
19211 member(D, C),
19212 D=suspension(_, active, _, _),
19213 !,
19214 setarg(2, D, removed),
19215 arg(3, D, E),
19216 ( var(E)
19217 -> nb_getval('$chr_store_global_ground_chr_translate____multiple_occ_constraints_checked___1',
19218 F),
19219 F=[_|G],
19220 b_setval('$chr_store_global_ground_chr_translate____multiple_occ_constraints_checked___1',
19221 G),
19222 ( G=[H|_]
19223 -> setarg(3, H, _)
19224 ; true
19225 )
19226 ; E=[_, _|G],
19227 setarg(2, E, G),
19228 ( G=[H|_]
19229 -> setarg(3, H, E)
19230 ; true
19231 )
19232 ),
19233 ( var(B)
19234 -> true
19235 ; arg(2, B, I),
19236 setarg(2, B, removed),
19237 ( I==not_stored_yet
19238 -> true
19239 ; arg(4, B, J),
19240 ( var(J)
19241 -> nb_getval('$chr_store_global_ground_chr_translate____prev_guard_list___6',
19242 K),
19243 K=[_|L],
19244 b_setval('$chr_store_global_ground_chr_translate____prev_guard_list___6',
19245 L),
19246 ( L=[M|_]
19247 -> setarg(4, M, _)
19248 ; true
19249 )
19250 ; J=[_, _|L],
19251 setarg(2, J, L),
19252 ( L=[M|_]
19253 -> setarg(4, M, J)
19254 ; true
19255 )
19256 ),
19257 nb_getval('$chr_store_multi_hash_chr_translate____prev_guard_list___6-1',
19258 N),
19259 delete_ht(N, A, B)
19260 )
19261 ).
19262prev_guard_list___6__3(A, _, _, _, _, _, B) :-
19263 arg(2, B, C),
19264 setarg(2, B, active),
19265 ( C==not_stored_yet
19266 -> nb_getval('$chr_store_global_ground_chr_translate____prev_guard_list___6',
19267 D),
19268 E=[B|D],
19269 b_setval('$chr_store_global_ground_chr_translate____prev_guard_list___6',
19270 E),
19271 ( D=[F|_]
19272 -> setarg(4, F, E)
19273 ; true
19274 ),
19275 nb_getval('$chr_store_multi_hash_chr_translate____prev_guard_list___6-1',
19276 G),
19277 insert_ht(G, A, B)
19278 ; true
19279 ).
19280simplify_guards(A) :-
19281 nb_getval('$chr_store_multi_hash_chr_translate____rule___2-1', B),
19282 lookup_ht(B, A, C),
19283 member(D, C),
19284 D=suspension(_, active, _, _, _, E),
19285 !,
19286 E=pragma(rule(F, G, H, _), ids(I, J), _, _, A),
19287 append(F, G, K),
19288 make_head_matchings_explicit_not_negated(K, L, M),
19289 tree_set_empty(N),
19290 multiple_occ_constraints_checked(N),
19291 apply_guard_wrt_term(K, H, O),
19292 append(I, J, P),
19293 findall(tuple(Q, R, A)-(-A),
19294 ( member(S, P),
19295 get_occurrence_from_id(Q, R, A, S)
19296 ),
19297 T),
19298 empty_q(U),
19299 insert_list_q(T, U, V),
19300 next_prev_rule(V, _, W),
19301 next_prev_rule(W, X, Y),
19302 prev_guard_list(A,
19303 X,
19304 Y,
19305 L,
19306 H,
19307 [],
19308 M,
19309 [O]),
19310 Z is A+1,
19311 simplify_guards(Z).
19312simplify_guards(_).
19313set_all_passive(A) :-
19314 set_all_passive___1__0(A, _).
19315set_all_passive___1__0(A, B) :-
19316 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-3', C),
19317 lookup_ht(C, A, D),
19318 !,
19319 B=suspension(E, not_stored_yet, t, A),
19320 'chr gen_id'(E),
19321 set_all_passive___1__0__0__1(D, A, B).
19322set_all_passive___1__0__0__1([], A, B) :-
19323 set_all_passive___1__1(A, B).
19324set_all_passive___1__0__0__1([A|B], C, D) :-
19325 ( A=suspension(_, active, _, _, _, _, E, F, _),
19326 E==C,
19327 G=t(180, D, A),
19328 '$novel_production'(D, G),
19329 '$novel_production'(A, G)
19330 -> '$extend_history'(D, G),
19331 arg(2, D, H),
19332 setarg(2, D, active),
19333 ( H==not_stored_yet
19334 -> nb_getval('$chr_store_multi_hash_chr_translate____set_all_passive___1-1',
19335 I),
19336 insert_ht(I, C, D)
19337 ; true
19338 ),
19339 passive(C, F),
19340 ( D=suspension(_, active, _, _)
19341 -> setarg(2, D, inactive),
19342 set_all_passive___1__0__0__1(B, C, D)
19343 ; true
19344 )
19345 ; set_all_passive___1__0__0__1(B, C, D)
19346 ).
19347set_all_passive___1__0(A, B) :-
19348 B=suspension(C, not_stored_yet, t, A),
19349 'chr gen_id'(C),
19350 set_all_passive___1__1(A, B).
19351set_all_passive___1__1(A, B) :-
19352 ( var(B)
19353 -> true
19354 ; arg(2, B, C),
19355 setarg(2, B, removed),
19356 ( C==not_stored_yet
19357 -> true
19358 ; nb_getval('$chr_store_multi_hash_chr_translate____set_all_passive___1-1',
19359 D),
19360 delete_ht(D, A, B)
19361 )
19362 ).
19363precompute_head_matchings :-
19364 precompute_head_matchings___0__0(_).
19365precompute_head_matchings___0__0(A) :-
19366 nb_getval('$chr_store_global_ground_chr_translate____rule___2', B),
19367 !,
19368 A=suspension(C, not_stored_yet, t, _),
19369 'chr gen_id'(C),
19370 precompute_head_matchings___0__0__0__1(B, A).
19371precompute_head_matchings___0__0__0__1([], A) :-
19372 precompute_head_matchings___0__1(A).
19373precompute_head_matchings___0__0__0__1([A|B], C) :-
19374 ( A=suspension(_, active, _, _, D, E),
19375 F=t(174, A, C),
19376 '$novel_production'(A, F),
19377 '$novel_production'(C, F)
19378 -> '$extend_history'(C, F),
19379 arg(2, C, G),
19380 setarg(2, C, active),
19381 ( G==not_stored_yet
19382 -> nb_getval('$chr_store_global_ground_chr_translate____precompute_head_matchings___0',
19383 H),
19384 I=[C|H],
19385 b_setval('$chr_store_global_ground_chr_translate____precompute_head_matchings___0',
19386 I),
19387 ( H=[J|_]
19388 -> setarg(4, J, I)
19389 ; true
19390 )
19391 ; true
19392 ),
19393 E=pragma(rule(K, L, _, _), _, _, _, _),
19394 append(K, L, M),
19395 make_head_matchings_explicit_(M, N, O),
19396 copy_term_nat(N-O, P-Q),
19397 make_head_matchings_explicit_memo_table(D, P, Q),
19398 ( C=suspension(_, active, _, _)
19399 -> setarg(2, C, inactive),
19400 precompute_head_matchings___0__0__0__1(B, C)
19401 ; true
19402 )
19403 ; precompute_head_matchings___0__0__0__1(B, C)
19404 ).
19405precompute_head_matchings___0__0(A) :-
19406 A=suspension(B, not_stored_yet, t, _),
19407 'chr gen_id'(B),
19408 precompute_head_matchings___0__1(A).
19409precompute_head_matchings___0__1(A) :-
19410 ( var(A)
19411 -> true
19412 ; arg(2, A, B),
19413 setarg(2, A, removed),
19414 ( B==not_stored_yet
19415 -> true
19416 ; arg(4, A, C),
19417 ( var(C)
19418 -> nb_getval('$chr_store_global_ground_chr_translate____precompute_head_matchings___0',
19419 D),
19420 D=[_|E],
19421 b_setval('$chr_store_global_ground_chr_translate____precompute_head_matchings___0',
19422 E),
19423 ( E=[F|_]
19424 -> setarg(4, F, _)
19425 ; true
19426 )
19427 ; C=[_, _|E],
19428 setarg(2, C, E),
19429 ( E=[F|_]
19430 -> setarg(4, F, C)
19431 ; true
19432 )
19433 )
19434 )
19435 ).
19436make_head_matchings_explicit_memo_table(A, B, C) :-
19437 D=suspension(E, active, A, B, C),
19438 'chr gen_id'(E),
19439 nb_getval('$chr_store_multi_hash_chr_translate____make_head_matchings_explicit_memo_table___3-1',
19440 F),
19441 insert_ht(F, A, D).
19442make_head_matchings_explicit_memo_lookup(A, B, C) :-
19443 nb_getval('$chr_store_multi_hash_chr_translate____make_head_matchings_explicit_memo_table___3-1',
19444 D),
19445 lookup_ht(D, A, E),
19446 member(F, E),
19447 F=suspension(_, active, _, G, H),
19448 !,
19449 B=G,
19450 C=H.
19451make_head_matchings_explicit_memo_lookup(_, _, _) :-
19452 fail.
19453first_occ_in_rule(A, B, C, _) :-
19454 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-13',
19455 D),
19456 lookup_ht(D, k(B, A), E),
19457 member(F, E),
19458 F=suspension(_, active, _, _, _, G, _, H, _),
19459 G<C,
19460 !,
19461 first_occ_in_rule(A, B, G, H).
19462first_occ_in_rule(A, B, C, D) :-
19463 B=E/F,
19464 functor(G, E, F),
19465 next_occ_in_rule(A, B, C, D, [], G).
19466next_occ_in_rule(A, B, C, D, _, E) :-
19467 nb_getval('$chr_store_multi_hash_chr_translate____passive___2-1', F),
19468 lookup_ht(F, A, G),
19469 member(H, G),
19470 H=suspension(_, active, _, _, I),
19471 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-134',
19472 J),
19473 lookup_ht(J, k(B, A, I), K),
19474 member(L, K),
19475 L=suspension(_, active, _, _, _, M, _, _, _),
19476 M is C+1,
19477 !,
19478 next_occ_in_rule(A, B, M, D, _, E).
19479next_occ_in_rule(A, B, C, D, E, F) :-
19480 nb_getval('$chr_store_multi_hash_chr_translate____prev_guard_list___6-1',
19481 G),
19482 lookup_ht(G, A, H),
19483 member(I, H),
19484 I=suspension(_, active, _, _, _, J, K, L, M, _),
19485 nb_getval('$chr_store_multi_hash_chr_translate____rule___2-1', N),
19486 lookup_ht(N, A, O),
19487 member(P, O),
19488 P=suspension(_, active, _, _, _, Q),
19489 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-13',
19490 R),
19491 lookup_ht(R, k(B, A), S),
19492 member(T, S),
19493 T=suspension(_, active, _, _, _, U, _, V, _),
19494 U is C+1,
19495 Q=pragma(rule(W, X, K, _), ids(_, _), _, _, A),
19496 !,
19497 append(W, X, Y),
19498 add_failing_occ(Q,
19499 Y,
19500 J,
19501 D,
19502 Z,
19503 F,
19504 M,
19505 B,
19506 A1),
19507 ( Z==[chr_pp_void_info]
19508 -> next_occ_in_rule(A, B, U, V, E, F)
19509 ; append(Z, E, B1),
19510 add_failing_occ(Q,
19511 Y,
19512 J,
19513 V,
19514 C1,
19515 F,
19516 M,
19517 B,
19518 D1),
19519 copy_term(L, E1),
19520 variable_replacement(L, E1, F1),
19521 copy_with_variable_replacement(L, G1, A1),
19522 copy_with_variable_replacement(L, H1, D1),
19523 copy_with_variable_replacement(H1, I1, F1),
19524 append(B1, G1, J1),
19525 append(J1, I1, K1),
19526 copy_with_variable_replacement(M, L1, A1),
19527 copy_with_variable_replacement(M, M1, D1),
19528 append(M1, K1, N1),
19529 append([chr_pp_active_constraint(F)|L1], N1, O1),
19530 list2conj(C1, P1),
19531 copy_term((B1, K1, O1, P1, F),
19532 (_, _, Q1, R1, _)),
19533 ( P1\=chr_pp_void_info
19534 -> ( guard_entailment:entails_guard(Q1, R1)
19535 -> passive(A, V)
19536 ; true
19537 )
19538 ; true
19539 ),
19540 !,
19541 next_occ_in_rule(A, B, U, V, B1, F)
19542 ).
19543next_occ_in_rule(_, _, _, _, _, _).
19544multiple_occ_constraints_checked(A) :-
19545 nb_getval('$chr_store_global_ground_chr_translate____prev_guard_list___6',
19546 B),
19547 member(C, B),
19548 C=suspension(_, active, _, _, D, _, _, _, _, _),
19549 ( nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-3',
19550 E),
19551 lookup_ht(E, D, F),
19552 member(G, F),
19553 G=suspension(_, active, _, _, H, I, _, _, _),
19554 nb_getval('$chr_store_multi_hash_chr_translate____rule___2-1', J),
19555 lookup_ht(J, D, K),
19556 member(L, K),
19557 L=suspension(_, active, _, _, _, M),
19558 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-13',
19559 N),
19560 lookup_ht(N, k(H, D), O),
19561 member(P, O),
19562 P=suspension(_, active, _, _, _, Q, _, R, _),
19563 P\==G,
19564 Q<I,
19565 chr_pp_flag(occurrence_subsumption, on),
19566 M=pragma(rule(S, _, _, _), _, _, _, _),
19567 S\==[],
19568 \+ tree_set_memberchk(H, A),
19569 !,
19570 first_occ_in_rule(D, H, Q, R),
19571 tree_set_add(A, H, T),
19572 multiple_occ_constraints_checked(T)
19573 ; !,
19574 setarg(2, C, removed),
19575 arg(4, C, U),
19576 ( var(U)
19577 -> nb_getval('$chr_store_global_ground_chr_translate____prev_guard_list___6',
19578 V),
19579 V=[_|W],
19580 b_setval('$chr_store_global_ground_chr_translate____prev_guard_list___6',
19581 W),
19582 ( W=[X|_]
19583 -> setarg(4, X, _)
19584 ; true
19585 )
19586 ; U=[_, _|W],
19587 setarg(2, U, W),
19588 ( W=[X|_]
19589 -> setarg(4, X, U)
19590 ; true
19591 )
19592 ),
19593 nb_getval('$chr_store_multi_hash_chr_translate____prev_guard_list___6-1',
19594 Y),
19595 delete_ht(Y, D, C)
19596 ).
19597multiple_occ_constraints_checked(A) :-
19598 B=suspension(C, active, _, A),
19599 'chr gen_id'(C),
19600 nb_getval('$chr_store_global_ground_chr_translate____multiple_occ_constraints_checked___1',
19601 D),
19602 E=[B|D],
19603 b_setval('$chr_store_global_ground_chr_translate____multiple_occ_constraints_checked___1',
19604 E),
19605 ( D=[F|_]
19606 -> setarg(3, F, E)
19607 ; true
19608 ).
19609type_definition(A, B) :-
19610 type_definition___2__0(A, B, _).
19611type_definition___2__0(A, _, B) :-
19612 nb_getval('$chr_store_global_list_chr_translate____type_definition___2',
19613 C),
19614 member(D, C),
19615 D=suspension(_, active, _, _, _, E, _),
19616 ( functor(A, F, G),
19617 functor(E, F, G),
19618 !,
19619 D=suspension(_, _, _, _, _, H, I),
19620 setarg(2, D, removed),
19621 term_variables(term(H, I), J),
19622 arg(5, D, K),
19623 ( var(K)
19624 -> nb_getval('$chr_store_global_list_chr_translate____type_definition___2',
19625 L),
19626 L=[_|M],
19627 b_setval('$chr_store_global_list_chr_translate____type_definition___2',
19628 M),
19629 ( M=[N|_]
19630 -> setarg(5, N, _)
19631 ; true
19632 )
19633 ; K=[_, _|M],
19634 setarg(2, K, M),
19635 ( M=[N|_]
19636 -> setarg(5, N, K)
19637 ; true
19638 )
19639 ),
19640 detach_type_definition___2(J, D),
19641 ( var(B)
19642 -> true
19643 ; B=suspension(_, O, _, _, _, P, Q),
19644 setarg(2, B, removed),
19645 ( O==not_stored_yet
19646 -> R=[]
19647 ; term_variables(term(P, Q), R),
19648 arg(5, B, S),
19649 ( var(S)
19650 -> nb_getval('$chr_store_global_list_chr_translate____type_definition___2',
19651 T),
19652 T=[_|U],
19653 b_setval('$chr_store_global_list_chr_translate____type_definition___2',
19654 U),
19655 ( U=[V|_]
19656 -> setarg(5, V, _)
19657 ; true
19658 )
19659 ; S=[_, _|U],
19660 setarg(2, S, U),
19661 ( U=[V|_]
19662 -> setarg(5, V, S)
19663 ; true
19664 )
19665 ),
19666 detach_type_definition___2(R, B)
19667 )
19668 ),
19669 chr_error(type_error,
19670 'Multiple definitions for type: ~w/~w.\n',
19671 [F, G])
19672 ; functor(E, W, X),
19673 functor(A, W, X),
19674 !,
19675 D=suspension(_, _, _, _, _, Y, Z),
19676 setarg(2, D, removed),
19677 term_variables(term(Y, Z), A1),
19678 arg(5, D, B1),
19679 ( var(B1)
19680 -> nb_getval('$chr_store_global_list_chr_translate____type_definition___2',
19681 C1),
19682 C1=[_|D1],
19683 b_setval('$chr_store_global_list_chr_translate____type_definition___2',
19684 D1),
19685 ( D1=[E1|_]
19686 -> setarg(5, E1, _)
19687 ; true
19688 )
19689 ; B1=[_, _|D1],
19690 setarg(2, B1, D1),
19691 ( D1=[E1|_]
19692 -> setarg(5, E1, B1)
19693 ; true
19694 )
19695 ),
19696 detach_type_definition___2(A1, D),
19697 ( var(B)
19698 -> true
19699 ; B=suspension(_, F1, _, _, _, G1, H1),
19700 setarg(2, B, removed),
19701 ( F1==not_stored_yet
19702 -> I1=[]
19703 ; term_variables(term(G1, H1), I1),
19704 arg(5, B, J1),
19705 ( var(J1)
19706 -> nb_getval('$chr_store_global_list_chr_translate____type_definition___2',
19707 K1),
19708 K1=[_|L1],
19709 b_setval('$chr_store_global_list_chr_translate____type_definition___2',
19710 L1),
19711 ( L1=[M1|_]
19712 -> setarg(5, M1, _)
19713 ; true
19714 )
19715 ; J1=[_, _|L1],
19716 setarg(2, J1, L1),
19717 ( L1=[M1|_]
19718 -> setarg(5, M1, J1)
19719 ; true
19720 )
19721 ),
19722 detach_type_definition___2(I1, B)
19723 )
19724 ),
19725 chr_error(type_error,
19726 'Multiple definitions for type: ~w/~w.\n',
19727 [W, X])
19728 ).
19729type_definition___2__0(A, _, B) :-
19730 nb_getval('$chr_store_global_list_chr_translate____type_alias___2', C),
19731 member(D, C),
19732 D=suspension(_, active, _, _, _, E, _),
19733 functor(A, F, G),
19734 functor(E, F, G),
19735 !,
19736 D=suspension(_, _, _, _, _, H, I),
19737 setarg(2, D, removed),
19738 term_variables(term(H, I), J),
19739 arg(5, D, K),
19740 ( var(K)
19741 -> nb_getval('$chr_store_global_list_chr_translate____type_alias___2',
19742 L),
19743 L=[_|M],
19744 b_setval('$chr_store_global_list_chr_translate____type_alias___2',
19745 M),
19746 ( M=[N|_]
19747 -> setarg(5, N, _)
19748 ; true
19749 )
19750 ; K=[_, _|M],
19751 setarg(2, K, M),
19752 ( M=[N|_]
19753 -> setarg(5, N, K)
19754 ; true
19755 )
19756 ),
19757 detach_type_alias___2(J, D),
19758 ( var(B)
19759 -> true
19760 ; B=suspension(_, O, _, _, _, P, Q),
19761 setarg(2, B, removed),
19762 ( O==not_stored_yet
19763 -> R=[]
19764 ; term_variables(term(P, Q), R),
19765 arg(5, B, S),
19766 ( var(S)
19767 -> nb_getval('$chr_store_global_list_chr_translate____type_definition___2',
19768 T),
19769 T=[_|U],
19770 b_setval('$chr_store_global_list_chr_translate____type_definition___2',
19771 U),
19772 ( U=[V|_]
19773 -> setarg(5, V, _)
19774 ; true
19775 )
19776 ; S=[_, _|U],
19777 setarg(2, S, U),
19778 ( U=[V|_]
19779 -> setarg(5, V, S)
19780 ; true
19781 )
19782 ),
19783 detach_type_definition___2(R, B)
19784 )
19785 ),
19786 chr_error(type_error,
19787 'Multiple definitions for type, once in a type definition and once as a type alias: ~w/~w.\n',
19788 [F, G]).
19789type_definition___2__0(A, B, C) :-
19790 nb_getval('$chr_store_global_list_chr_translate____unalias_type___2',
19791 D),
19792 !,
19793 ( var(C)
19794 -> C=suspension(E, not_stored_yet, t, 0, _, A, B),
19795 'chr gen_id'(E)
19796 ; true
19797 ),
19798 type_definition___2__0__0__5(D, A, B, C).
19799type_definition___2__0__0__5([], A, B, C) :-
19800 type_definition___2__1(A, B, C).
19801type_definition___2__0__0__5([A|B], C, D, E) :-
19802 ( A=suspension(_, active, _, F, G),
19803 nonvar(C),
19804 functor(C, H, I),
19805 functor(F, H, I)
19806 -> A=suspension(_, _, _, J, _),
19807 setarg(2, A, removed),
19808 term_variables(J, K),
19809 ( arg(3, A, L),
19810 ( var(L)
19811 -> nb_getval('$chr_store_global_list_chr_translate____unalias_type___2',
19812 M),
19813 M=[_|N],
19814 b_setval('$chr_store_global_list_chr_translate____unalias_type___2',
19815 N),
19816 ( N=[O|_]
19817 -> setarg(3, O, _)
19818 ; true
19819 )
19820 ; L=[_, _|N],
19821 setarg(2, L, N),
19822 ( N=[O|_]
19823 -> setarg(3, O, L)
19824 ; true
19825 )
19826 )
19827 ),
19828 detach_unalias_type___2(K, A),
19829 arg(2, E, P),
19830 setarg(2, E, active),
19831 ( arg(4, E, Q),
19832 R is Q+1,
19833 setarg(4, E, R)
19834 ),
19835 ( P==not_stored_yet
19836 -> E=suspension(_, _, _, _, _, S, T),
19837 term_variables(term(S, T), U),
19838 nb_getval('$chr_store_global_list_chr_translate____type_definition___2',
19839 V),
19840 W=[E|V],
19841 b_setval('$chr_store_global_list_chr_translate____type_definition___2',
19842 W),
19843 ( V=[X|_]
19844 -> setarg(5, X, W)
19845 ; true
19846 ),
19847 attach_type_definition___2(U, E)
19848 ; true
19849 ),
19850 G=F,
19851 ( E=suspension(_, active, _, R, _, _, _)
19852 -> setarg(2, E, inactive),
19853 type_definition___2__0__0__5(B, C, D, E)
19854 ; true
19855 )
19856 ; type_definition___2__0__0__5(B, C, D, E)
19857 ).
19858type_definition___2__0(A, B, C) :-
19859 ( var(C)
19860 -> C=suspension(D, not_stored_yet, t, 0, _, A, B),
19861 'chr gen_id'(D)
19862 ; true
19863 ),
19864 type_definition___2__1(A, B, C).
19865type_definition___2__1(A, B, C) :-
19866 nb_getval('$chr_store_global_ground_chr_translate____dynamic_type_check___0',
19867 D),
19868 !,
19869 type_definition___2__1__0__7(D, A, B, C).
19870type_definition___2__1__0__7([], A, B, C) :-
19871 type_definition___2__2(A, B, C).
19872type_definition___2__1__0__7([A|B], C, D, E) :-
19873 ( A=suspension(_, active, _, _),
19874 F=t(235, E, A),
19875 '$novel_production'(E, F),
19876 '$novel_production'(A, F)
19877 -> '$extend_history'(E, F),
19878 arg(2, E, G),
19879 setarg(2, E, active),
19880 ( arg(4, E, H),
19881 I is H+1,
19882 setarg(4, E, I)
19883 ),
19884 ( G==not_stored_yet
19885 -> E=suspension(_, _, _, _, _, J, K),
19886 term_variables(term(J, K), L),
19887 nb_getval('$chr_store_global_list_chr_translate____type_definition___2',
19888 M),
19889 N=[E|M],
19890 b_setval('$chr_store_global_list_chr_translate____type_definition___2',
19891 N),
19892 ( M=[O|_]
19893 -> setarg(5, O, N)
19894 ; true
19895 ),
19896 attach_type_definition___2(L, E)
19897 ; true
19898 ),
19899 copy_term_nat(C-D, P-Q),
19900 maplist(dynamic_type_check_clause(P), Q, R),
19901 dynamic_type_check_clauses(R),
19902 ( E=suspension(_, active, _, I, _, _, _)
19903 -> setarg(2, E, inactive),
19904 type_definition___2__1__0__7(B, C, D, E)
19905 ; true
19906 )
19907 ; type_definition___2__1__0__7(B, C, D, E)
19908 ).
19909type_definition___2__1(A, B, C) :-
19910 type_definition___2__2(A, B, C).
19911type_definition___2__2(A, B, C) :-
19912 nb_getval('$chr_store_global_list_chr_translate____atomic_type___1', D),
19913 !,
19914 type_definition___2__2__0__8(D, A, B, C).
19915type_definition___2__2__0__8([], A, B, C) :-
19916 type_definition___2__3(A, B, C).
19917type_definition___2__2__0__8([A|B], C, D, E) :-
19918 ( A=suspension(_, active, _, F),
19919 functor(F, G, H),
19920 functor(C, G, H)
19921 -> A=suspension(_, _, _, I),
19922 setarg(2, A, removed),
19923 term_variables(I, J),
19924 ( arg(3, A, K),
19925 ( var(K)
19926 -> nb_getval('$chr_store_global_list_chr_translate____atomic_type___1',
19927 L),
19928 L=[_|M],
19929 b_setval('$chr_store_global_list_chr_translate____atomic_type___1',
19930 M),
19931 ( M=[N|_]
19932 -> setarg(3, N, _)
19933 ; true
19934 )
19935 ; K=[_, _|M],
19936 setarg(2, K, M),
19937 ( M=[N|_]
19938 -> setarg(3, N, K)
19939 ; true
19940 )
19941 )
19942 ),
19943 detach_atomic_type___1(J, A),
19944 arg(2, E, O),
19945 setarg(2, E, active),
19946 ( arg(4, E, P),
19947 Q is P+1,
19948 setarg(4, E, Q)
19949 ),
19950 ( O==not_stored_yet
19951 -> E=suspension(_, _, _, _, _, R, S),
19952 term_variables(term(R, S), T),
19953 nb_getval('$chr_store_global_list_chr_translate____type_definition___2',
19954 U),
19955 V=[E|U],
19956 b_setval('$chr_store_global_list_chr_translate____type_definition___2',
19957 V),
19958 ( U=[W|_]
19959 -> setarg(5, W, V)
19960 ; true
19961 ),
19962 attach_type_definition___2(T, E)
19963 ; true
19964 ),
19965 maplist(atomic, D),
19966 ( E=suspension(_, active, _, Q, _, _, _)
19967 -> setarg(2, E, inactive),
19968 type_definition___2__2__0__8(B, C, D, E)
19969 ; true
19970 )
19971 ; type_definition___2__2__0__8(B, C, D, E)
19972 ).
19973type_definition___2__2(A, B, C) :-
19974 type_definition___2__3(A, B, C).
19975type_definition___2__3(_, _, A) :-
19976 arg(2, A, B),
19977 setarg(2, A, active),
19978 arg(4, A, C),
19979 D is C+1,
19980 setarg(4, A, D),
19981 ( B==not_stored_yet
19982 -> A=suspension(_, _, _, _, _, E, F),
19983 term_variables(term(E, F), G),
19984 nb_getval('$chr_store_global_list_chr_translate____type_definition___2',
19985 H),
19986 I=[A|H],
19987 b_setval('$chr_store_global_list_chr_translate____type_definition___2',
19988 I),
19989 ( H=[J|_]
19990 -> setarg(5, J, I)
19991 ; true
19992 ),
19993 attach_type_definition___2(G, A)
19994 ; true
19995 ).
19996type_alias(A, B) :-
19997 type_alias___2__0(A, B, _).
19998type_alias___2__0(A, B, C) :-
19999 var(A),
20000 !,
20001 ( var(C)
20002 -> true
20003 ; C=suspension(_, D, _, _, _, E, F),
20004 setarg(2, C, removed),
20005 ( D==not_stored_yet
20006 -> G=[]
20007 ; term_variables(term(E, F), G),
20008 arg(5, C, H),
20009 ( var(H)
20010 -> nb_getval('$chr_store_global_list_chr_translate____type_alias___2',
20011 I),
20012 I=[_|J],
20013 b_setval('$chr_store_global_list_chr_translate____type_alias___2',
20014 J),
20015 ( J=[K|_]
20016 -> setarg(5, K, _)
20017 ; true
20018 )
20019 ; H=[_, _|J],
20020 setarg(2, H, J),
20021 ( J=[K|_]
20022 -> setarg(5, K, H)
20023 ; true
20024 )
20025 ),
20026 detach_type_alias___2(G, C)
20027 )
20028 ),
20029 chr_error(type_error,
20030 'Variable alias definition: "~w".\n',
20031 [(:-chr_type A==B)]).
20032type_alias___2__0(A, B, C) :-
20033 var(B),
20034 !,
20035 ( var(C)
20036 -> true
20037 ; C=suspension(_, D, _, _, _, E, F),
20038 setarg(2, C, removed),
20039 ( D==not_stored_yet
20040 -> G=[]
20041 ; term_variables(term(E, F), G),
20042 arg(5, C, H),
20043 ( var(H)
20044 -> nb_getval('$chr_store_global_list_chr_translate____type_alias___2',
20045 I),
20046 I=[_|J],
20047 b_setval('$chr_store_global_list_chr_translate____type_alias___2',
20048 J),
20049 ( J=[K|_]
20050 -> setarg(5, K, _)
20051 ; true
20052 )
20053 ; H=[_, _|J],
20054 setarg(2, H, J),
20055 ( J=[K|_]
20056 -> setarg(5, K, H)
20057 ; true
20058 )
20059 ),
20060 detach_type_alias___2(G, C)
20061 )
20062 ),
20063 chr_error(type_error,
20064 'Variable alias definition: "~w".\n',
20065 [(:-chr_type A==B)]).
20066type_alias___2__0(A, B, C) :-
20067 subsumes_term(A, B),
20068 !,
20069 ( var(C)
20070 -> true
20071 ; C=suspension(_, D, _, _, _, E, F),
20072 setarg(2, C, removed),
20073 ( D==not_stored_yet
20074 -> G=[]
20075 ; term_variables(term(E, F), G),
20076 arg(5, C, H),
20077 ( var(H)
20078 -> nb_getval('$chr_store_global_list_chr_translate____type_alias___2',
20079 I),
20080 I=[_|J],
20081 b_setval('$chr_store_global_list_chr_translate____type_alias___2',
20082 J),
20083 ( J=[K|_]
20084 -> setarg(5, K, _)
20085 ; true
20086 )
20087 ; H=[_, _|J],
20088 setarg(2, H, J),
20089 ( J=[K|_]
20090 -> setarg(5, K, H)
20091 ; true
20092 )
20093 ),
20094 detach_type_alias___2(G, C)
20095 )
20096 ),
20097 chr_error(type_error, 'Cyclic alias definition: "~w".\n', [A==B]).
20098type_alias___2__0(A, B, C) :-
20099 nb_getval('$chr_store_global_list_chr_translate____type_alias___2', D),
20100 ( member(E, D),
20101 E=suspension(_, active, _, _, _, F, G),
20102 ( ( functor(A, H, I),
20103 functor(F, H, I),
20104 \+ A\=F,
20105 !,
20106 E=suspension(_, _, _, _, _, J, K),
20107 setarg(2, E, removed),
20108 term_variables(term(J, K), L),
20109 arg(5, E, M),
20110 ( var(M)
20111 -> nb_getval('$chr_store_global_list_chr_translate____type_alias___2',
20112 N),
20113 N=[_|O],
20114 b_setval('$chr_store_global_list_chr_translate____type_alias___2',
20115 O),
20116 ( O=[P|_]
20117 -> setarg(5, P, _)
20118 ; true
20119 )
20120 ; M=[_, _|O],
20121 setarg(2, M, O),
20122 ( O=[P|_]
20123 -> setarg(5, P, M)
20124 ; true
20125 )
20126 ),
20127 detach_type_alias___2(L, E),
20128 ( var(C)
20129 -> true
20130 ; C=suspension(_, Q, _, _, _, R, S),
20131 setarg(2, C, removed),
20132 ( Q==not_stored_yet
20133 -> T=[]
20134 ; term_variables(term(R, S), T),
20135 arg(5, C, U),
20136 ( var(U)
20137 -> nb_getval('$chr_store_global_list_chr_translate____type_alias___2',
20138 V),
20139 V=[_|W],
20140 b_setval('$chr_store_global_list_chr_translate____type_alias___2',
20141 W),
20142 ( W=[X|_]
20143 -> setarg(5, X, _)
20144 ; true
20145 )
20146 ; U=[_, _|W],
20147 setarg(2, U, W),
20148 ( W=[X|_]
20149 -> setarg(5, X, U)
20150 ; true
20151 )
20152 ),
20153 detach_type_alias___2(T, C)
20154 )
20155 ),
20156 copy_term_nat(A, Y),
20157 copy_term_nat(F, Z),
20158 Y=Z,
20159 chr_error(type_error,
20160 'Ambiguous type aliases: you have defined \n\t`~w\'\n\t`~w\'\n\tresulting in two definitions for "~w".\n',
20161 [A==B, F==G, Y])
20162 ; functor(F, A1, B1),
20163 functor(A, A1, B1),
20164 \+ F\=A,
20165 !,
20166 E=suspension(_, _, _, _, _, C1, D1),
20167 setarg(2, E, removed),
20168 term_variables(term(C1, D1), E1),
20169 arg(5, E, F1),
20170 ( var(F1)
20171 -> nb_getval('$chr_store_global_list_chr_translate____type_alias___2',
20172 G1),
20173 G1=[_|H1],
20174 b_setval('$chr_store_global_list_chr_translate____type_alias___2',
20175 H1),
20176 ( H1=[I1|_]
20177 -> setarg(5, I1, _)
20178 ; true
20179 )
20180 ; F1=[_, _|H1],
20181 setarg(2, F1, H1),
20182 ( H1=[I1|_]
20183 -> setarg(5, I1, F1)
20184 ; true
20185 )
20186 ),
20187 detach_type_alias___2(E1, E),
20188 ( var(C)
20189 -> true
20190 ; C=suspension(_, J1, _, _, _, K1, L1),
20191 setarg(2, C, removed),
20192 ( J1==not_stored_yet
20193 -> M1=[]
20194 ; term_variables(term(K1, L1), M1),
20195 arg(5, C, N1),
20196 ( var(N1)
20197 -> nb_getval('$chr_store_global_list_chr_translate____type_alias___2',
20198 O1),
20199 O1=[_|P1],
20200 b_setval('$chr_store_global_list_chr_translate____type_alias___2',
20201 P1),
20202 ( P1=[Q1|_]
20203 -> setarg(5, Q1, _)
20204 ; true
20205 )
20206 ; N1=[_, _|P1],
20207 setarg(2, N1, P1),
20208 ( P1=[Q1|_]
20209 -> setarg(5, Q1, N1)
20210 ; true
20211 )
20212 ),
20213 detach_type_alias___2(M1, C)
20214 )
20215 ),
20216 copy_term_nat(F, R1),
20217 copy_term_nat(A, S1),
20218 R1=S1,
20219 chr_error(type_error,
20220 'Ambiguous type aliases: you have defined \n\t`~w\'\n\t`~w\'\n\tresulting in two definitions for "~w".\n',
20221 [F==G, A==B, R1])
20222 )
20223 ; functor(F, T1, U1),
20224 functor(B, T1, U1),
20225 copy_term_nat((A, B, F, G),
20226 (V1, W1, X1, Y1)),
20227 subsumes_term(X1, W1),
20228 !,
20229 ( var(C)
20230 -> true
20231 ; C=suspension(_, Z1, _, _, _, A2, B2),
20232 setarg(2, C, removed),
20233 ( Z1==not_stored_yet
20234 -> C2=[]
20235 ; term_variables(term(A2, B2), C2),
20236 arg(5, C, D2),
20237 ( var(D2)
20238 -> nb_getval('$chr_store_global_list_chr_translate____type_alias___2',
20239 E2),
20240 E2=[_|F2],
20241 b_setval('$chr_store_global_list_chr_translate____type_alias___2',
20242 F2),
20243 ( F2=[G2|_]
20244 -> setarg(5, G2, _)
20245 ; true
20246 )
20247 ; D2=[_, _|F2],
20248 setarg(2, D2, F2),
20249 ( F2=[G2|_]
20250 -> setarg(5, G2, D2)
20251 ; true
20252 )
20253 ),
20254 detach_type_alias___2(C2, C)
20255 )
20256 ),
20257 type_alias(V1, Y1)
20258 )
20259 ; !,
20260 ( var(C)
20261 -> C=suspension(H2, not_stored_yet, t, 0, _, A, B),
20262 'chr gen_id'(H2)
20263 ; true
20264 ),
20265 type_alias___2__0__0__7(D, A, B, C)
20266 ).
20267type_alias___2__0__0__7([], A, B, C) :-
20268 type_alias___2__1(A, B, C).
20269type_alias___2__0__0__7([A|B], C, D, E) :-
20270 ( A=suspension(_, active, _, _, _, F, G),
20271 functor(C, H, I),
20272 functor(G, H, I),
20273 copy_term_nat((F, G, C, D),
20274 (J, K, L, M)),
20275 subsumes_term(L, K)
20276 -> A=suspension(_, _, _, _, _, N, O),
20277 setarg(2, A, removed),
20278 term_variables(term(N, O), P),
20279 ( arg(5, A, Q),
20280 ( var(Q)
20281 -> nb_getval('$chr_store_global_list_chr_translate____type_alias___2',
20282 R),
20283 R=[_|S],
20284 b_setval('$chr_store_global_list_chr_translate____type_alias___2',
20285 S),
20286 ( S=[T|_]
20287 -> setarg(5, T, _)
20288 ; true
20289 )
20290 ; Q=[_, _|S],
20291 setarg(2, Q, S),
20292 ( S=[T|_]
20293 -> setarg(5, T, Q)
20294 ; true
20295 )
20296 )
20297 ),
20298 detach_type_alias___2(P, A),
20299 arg(2, E, U),
20300 setarg(2, E, active),
20301 ( arg(4, E, V),
20302 W is V+1,
20303 setarg(4, E, W)
20304 ),
20305 ( U==not_stored_yet
20306 -> E=suspension(_, _, _, _, _, X, Y),
20307 term_variables(term(X, Y), Z),
20308 nb_getval('$chr_store_global_list_chr_translate____type_alias___2',
20309 A1),
20310 B1=[E|A1],
20311 b_setval('$chr_store_global_list_chr_translate____type_alias___2',
20312 B1),
20313 ( A1=[C1|_]
20314 -> setarg(5, C1, B1)
20315 ; true
20316 ),
20317 attach_type_alias___2(Z, E)
20318 ; true
20319 ),
20320 type_alias(J, M),
20321 ( E=suspension(_, active, _, W, _, _, _)
20322 -> setarg(2, E, inactive),
20323 type_alias___2__0__0__7(B, C, D, E)
20324 ; true
20325 )
20326 ; type_alias___2__0__0__7(B, C, D, E)
20327 ).
20328type_alias___2__0(A, B, C) :-
20329 ( var(C)
20330 -> C=suspension(D, not_stored_yet, t, 0, _, A, B),
20331 'chr gen_id'(D)
20332 ; true
20333 ),
20334 type_alias___2__1(A, B, C).
20335type_alias___2__1(A, _, B) :-
20336 nb_getval('$chr_store_global_list_chr_translate____type_definition___2',
20337 C),
20338 member(D, C),
20339 D=suspension(_, active, _, _, _, E, _),
20340 functor(E, F, G),
20341 functor(A, F, G),
20342 !,
20343 D=suspension(_, _, _, _, _, H, I),
20344 setarg(2, D, removed),
20345 term_variables(term(H, I), J),
20346 arg(5, D, K),
20347 ( var(K)
20348 -> nb_getval('$chr_store_global_list_chr_translate____type_definition___2',
20349 L),
20350 L=[_|M],
20351 b_setval('$chr_store_global_list_chr_translate____type_definition___2',
20352 M),
20353 ( M=[N|_]
20354 -> setarg(5, N, _)
20355 ; true
20356 )
20357 ; K=[_, _|M],
20358 setarg(2, K, M),
20359 ( M=[N|_]
20360 -> setarg(5, N, K)
20361 ; true
20362 )
20363 ),
20364 detach_type_definition___2(J, D),
20365 ( var(B)
20366 -> true
20367 ; B=suspension(_, O, _, _, _, P, Q),
20368 setarg(2, B, removed),
20369 ( O==not_stored_yet
20370 -> R=[]
20371 ; term_variables(term(P, Q), R),
20372 arg(5, B, S),
20373 ( var(S)
20374 -> nb_getval('$chr_store_global_list_chr_translate____type_alias___2',
20375 T),
20376 T=[_|U],
20377 b_setval('$chr_store_global_list_chr_translate____type_alias___2',
20378 U),
20379 ( U=[V|_]
20380 -> setarg(5, V, _)
20381 ; true
20382 )
20383 ; S=[_, _|U],
20384 setarg(2, S, U),
20385 ( U=[V|_]
20386 -> setarg(5, V, S)
20387 ; true
20388 )
20389 ),
20390 detach_type_alias___2(R, B)
20391 )
20392 ),
20393 chr_error(type_error,
20394 'Multiple definitions for type, once in a type definition and once as a type alias: ~w/~w.\n',
20395 [F, G]).
20396type_alias___2__1(A, B, C) :-
20397 nb_getval('$chr_store_global_list_chr_translate____unalias_type___2',
20398 D),
20399 !,
20400 type_alias___2__1__0__10(D, A, B, C).
20401type_alias___2__1__0__10([], A, B, C) :-
20402 type_alias___2__2(A, B, C).
20403type_alias___2__1__0__10([A|B], C, D, E) :-
20404 ( A=suspension(_, active, _, F, G),
20405 functor(C, H, I),
20406 functor(F, H, I),
20407 copy_term_nat((C, D), (J, K)),
20408 F=J
20409 -> A=suspension(_, _, _, L, _),
20410 setarg(2, A, removed),
20411 term_variables(L, M),
20412 ( arg(3, A, N),
20413 ( var(N)
20414 -> nb_getval('$chr_store_global_list_chr_translate____unalias_type___2',
20415 O),
20416 O=[_|P],
20417 b_setval('$chr_store_global_list_chr_translate____unalias_type___2',
20418 P),
20419 ( P=[Q|_]
20420 -> setarg(3, Q, _)
20421 ; true
20422 )
20423 ; N=[_, _|P],
20424 setarg(2, N, P),
20425 ( P=[Q|_]
20426 -> setarg(3, Q, N)
20427 ; true
20428 )
20429 )
20430 ),
20431 detach_unalias_type___2(M, A),
20432 arg(2, E, R),
20433 setarg(2, E, active),
20434 ( arg(4, E, S),
20435 T is S+1,
20436 setarg(4, E, T)
20437 ),
20438 ( R==not_stored_yet
20439 -> E=suspension(_, _, _, _, _, U, V),
20440 term_variables(term(U, V), W),
20441 nb_getval('$chr_store_global_list_chr_translate____type_alias___2',
20442 X),
20443 Y=[E|X],
20444 b_setval('$chr_store_global_list_chr_translate____type_alias___2',
20445 Y),
20446 ( X=[Z|_]
20447 -> setarg(5, Z, Y)
20448 ; true
20449 ),
20450 attach_type_alias___2(W, E)
20451 ; true
20452 ),
20453 unalias_type(K, G),
20454 ( E=suspension(_, active, _, T, _, _, _)
20455 -> setarg(2, E, inactive),
20456 type_alias___2__1__0__10(B, C, D, E)
20457 ; true
20458 )
20459 ; type_alias___2__1__0__10(B, C, D, E)
20460 ).
20461type_alias___2__1(A, B, C) :-
20462 type_alias___2__2(A, B, C).
20463type_alias___2__2(A, B, C) :-
20464 nb_getval('$chr_store_global_list_chr_translate____ast_static_type_check_var___4',
20465 D),
20466 !,
20467 type_alias___2__2__0__12(D, A, B, C).
20468type_alias___2__2__0__12([], A, B, C) :-
20469 type_alias___2__3(A, B, C).
20470type_alias___2__2__0__12([A|B], C, D, E) :-
20471 ( A=suspension(_, active, _, F, G, H, I),
20472 functor(C, J, K),
20473 functor(H, J, K)
20474 -> A=suspension(_, _, _, _, _, L, _),
20475 setarg(2, A, removed),
20476 term_variables(L, M),
20477 ( arg(3, A, N),
20478 ( var(N)
20479 -> nb_getval('$chr_store_global_list_chr_translate____ast_static_type_check_var___4',
20480 O),
20481 O=[_|P],
20482 b_setval('$chr_store_global_list_chr_translate____ast_static_type_check_var___4',
20483 P),
20484 ( P=[Q|_]
20485 -> setarg(3, Q, _)
20486 ; true
20487 )
20488 ; N=[_, _|P],
20489 setarg(2, N, P),
20490 ( P=[Q|_]
20491 -> setarg(3, Q, N)
20492 ; true
20493 )
20494 )
20495 ),
20496 detach_ast_static_type_check_var___4(M, A),
20497 arg(2, E, R),
20498 setarg(2, E, active),
20499 ( arg(4, E, S),
20500 T is S+1,
20501 setarg(4, E, T)
20502 ),
20503 ( R==not_stored_yet
20504 -> E=suspension(_, _, _, _, _, U, V),
20505 term_variables(term(U, V), W),
20506 nb_getval('$chr_store_global_list_chr_translate____type_alias___2',
20507 X),
20508 Y=[E|X],
20509 b_setval('$chr_store_global_list_chr_translate____type_alias___2',
20510 Y),
20511 ( X=[Z|_]
20512 -> setarg(5, Z, Y)
20513 ; true
20514 ),
20515 attach_type_alias___2(W, E)
20516 ; true
20517 ),
20518 copy_term_nat(C-D, H-A1),
20519 ast_static_type_check_var(F, G, A1, I),
20520 ( E=suspension(_, active, _, T, _, _, _)
20521 -> setarg(2, E, inactive),
20522 type_alias___2__2__0__12(B, C, D, E)
20523 ; true
20524 )
20525 ; type_alias___2__2__0__12(B, C, D, E)
20526 ).
20527type_alias___2__2(A, B, C) :-
20528 type_alias___2__3(A, B, C).
20529type_alias___2__3(A, B, C) :-
20530 nb_getval('$chr_store_global_ground_chr_translate____dynamic_type_check___0',
20531 D),
20532 !,
20533 type_alias___2__3__0__13(D, A, B, C).
20534type_alias___2__3__0__13([], A, B, C) :-
20535 type_alias___2__4(A, B, C).
20536type_alias___2__3__0__13([A|B], C, D, E) :-
20537 ( A=suspension(_, active, _, _),
20538 F=t(236, E, A),
20539 '$novel_production'(E, F),
20540 '$novel_production'(A, F)
20541 -> '$extend_history'(E, F),
20542 arg(2, E, G),
20543 setarg(2, E, active),
20544 ( arg(4, E, H),
20545 I is H+1,
20546 setarg(4, E, I)
20547 ),
20548 ( G==not_stored_yet
20549 -> E=suspension(_, _, _, _, _, J, K),
20550 term_variables(term(J, K), L),
20551 nb_getval('$chr_store_global_list_chr_translate____type_alias___2',
20552 M),
20553 N=[E|M],
20554 b_setval('$chr_store_global_list_chr_translate____type_alias___2',
20555 N),
20556 ( M=[O|_]
20557 -> setarg(5, O, N)
20558 ; true
20559 ),
20560 attach_type_alias___2(L, E)
20561 ; true
20562 ),
20563 copy_term_nat(C-D, P-Q),
20564 dynamic_type_check_alias_clause(P, Q, R),
20565 dynamic_type_check_clauses([R]),
20566 ( E=suspension(_, active, _, I, _, _, _)
20567 -> setarg(2, E, inactive),
20568 type_alias___2__3__0__13(B, C, D, E)
20569 ; true
20570 )
20571 ; type_alias___2__3__0__13(B, C, D, E)
20572 ).
20573type_alias___2__3(A, B, C) :-
20574 type_alias___2__4(A, B, C).
20575type_alias___2__4(A, B, C) :-
20576 nb_getval('$chr_store_global_list_chr_translate____atomic_type___1', D),
20577 !,
20578 type_alias___2__4__0__14(D, A, B, C).
20579type_alias___2__4__0__14([], A, B, C) :-
20580 type_alias___2__5(A, B, C).
20581type_alias___2__4__0__14([A|B], C, D, E) :-
20582 ( A=suspension(_, active, _, F),
20583 functor(F, G, H),
20584 functor(C, G, H)
20585 -> A=suspension(_, _, _, I),
20586 setarg(2, A, removed),
20587 term_variables(I, J),
20588 ( arg(3, A, K),
20589 ( var(K)
20590 -> nb_getval('$chr_store_global_list_chr_translate____atomic_type___1',
20591 L),
20592 L=[_|M],
20593 b_setval('$chr_store_global_list_chr_translate____atomic_type___1',
20594 M),
20595 ( M=[N|_]
20596 -> setarg(3, N, _)
20597 ; true
20598 )
20599 ; K=[_, _|M],
20600 setarg(2, K, M),
20601 ( M=[N|_]
20602 -> setarg(3, N, K)
20603 ; true
20604 )
20605 )
20606 ),
20607 detach_atomic_type___1(J, A),
20608 arg(2, E, O),
20609 setarg(2, E, active),
20610 ( arg(4, E, P),
20611 Q is P+1,
20612 setarg(4, E, Q)
20613 ),
20614 ( O==not_stored_yet
20615 -> E=suspension(_, _, _, _, _, R, S),
20616 term_variables(term(R, S), T),
20617 nb_getval('$chr_store_global_list_chr_translate____type_alias___2',
20618 U),
20619 V=[E|U],
20620 b_setval('$chr_store_global_list_chr_translate____type_alias___2',
20621 V),
20622 ( U=[W|_]
20623 -> setarg(5, W, V)
20624 ; true
20625 ),
20626 attach_type_alias___2(T, E)
20627 ; true
20628 ),
20629 atomic(D),
20630 copy_term_nat(C-D, F-X),
20631 atomic_type(X),
20632 ( E=suspension(_, active, _, Q, _, _, _)
20633 -> setarg(2, E, inactive),
20634 type_alias___2__4__0__14(B, C, D, E)
20635 ; true
20636 )
20637 ; type_alias___2__4__0__14(B, C, D, E)
20638 ).
20639type_alias___2__4(A, B, C) :-
20640 type_alias___2__5(A, B, C).
20641type_alias___2__5(_, _, A) :-
20642 arg(2, A, B),
20643 setarg(2, A, active),
20644 arg(4, A, C),
20645 D is C+1,
20646 setarg(4, A, D),
20647 ( B==not_stored_yet
20648 -> A=suspension(_, _, _, _, _, E, F),
20649 term_variables(term(E, F), G),
20650 nb_getval('$chr_store_global_list_chr_translate____type_alias___2',
20651 H),
20652 I=[A|H],
20653 b_setval('$chr_store_global_list_chr_translate____type_alias___2',
20654 I),
20655 ( H=[J|_]
20656 -> setarg(5, J, I)
20657 ; true
20658 ),
20659 attach_type_alias___2(G, A)
20660 ; true
20661 ).
20662constraint_type(A, B) :-
20663 constraint_type___2__0(A, B, _).
20664constraint_type___2__0(A, B, C) :-
20665 nb_getval('$chr_store_global_ground_chr_translate____static_type_check___2',
20666 D),
20667 !,
20668 C=suspension(E, not_stored_yet, _, A, B),
20669 'chr gen_id'(E),
20670 constraint_type___2__0__0__2(D, A, B, C).
20671constraint_type___2__0__0__2([], A, B, C) :-
20672 constraint_type___2__1(A, B, C).
20673constraint_type___2__0__0__2([A|B], C, D, E) :-
20674 ( A=suspension(_, active, _, _, _)
20675 -> arg(2, E, F),
20676 setarg(2, E, active),
20677 ( F==not_stored_yet
20678 -> nb_getval('$chr_store_global_ground_chr_translate____constraint_type___2',
20679 G),
20680 H=[E|G],
20681 b_setval('$chr_store_global_ground_chr_translate____constraint_type___2',
20682 H),
20683 ( G=[I|_]
20684 -> setarg(3, I, H)
20685 ; true
20686 ),
20687 nb_getval('$chr_store_multi_hash_chr_translate____constraint_type___2-1',
20688 J),
20689 insert_ht(J, C, E)
20690 ; true
20691 ),
20692 forall(( member(K, D),
20693 sub_term(K, L)
20694 ),
20695 ( get_type_definition(L, _)
20696 -> true
20697 ; chr_error(type_error,
20698 'Undefined type "~w" used in type declaration of "~w".\n',
20699 [L, C])
20700 )),
20701 ( E=suspension(_, active, _, _, _)
20702 -> setarg(2, E, inactive),
20703 constraint_type___2__0__0__2(B, C, D, E)
20704 ; true
20705 )
20706 ; constraint_type___2__0__0__2(B, C, D, E)
20707 ).
20708constraint_type___2__0(A, B, C) :-
20709 C=suspension(D, not_stored_yet, _, A, B),
20710 'chr gen_id'(D),
20711 constraint_type___2__1(A, B, C).
20712constraint_type___2__1(A, _, B) :-
20713 arg(2, B, C),
20714 setarg(2, B, active),
20715 ( C==not_stored_yet
20716 -> nb_getval('$chr_store_global_ground_chr_translate____constraint_type___2',
20717 D),
20718 E=[B|D],
20719 b_setval('$chr_store_global_ground_chr_translate____constraint_type___2',
20720 E),
20721 ( D=[F|_]
20722 -> setarg(3, F, E)
20723 ; true
20724 ),
20725 nb_getval('$chr_store_multi_hash_chr_translate____constraint_type___2-1',
20726 G),
20727 insert_ht(G, A, B)
20728 ; true
20729 ).
20730get_type_definition(A, _) :-
20731 \+ ground(A),
20732 !,
20733 chr_error(type_error,
20734 'Non-ground type in constraint definition: "~w".\n',
20735 [A]).
20736get_type_definition(A, B) :-
20737 nb_getval('$chr_store_global_list_chr_translate____type_alias___2', C),
20738 member(D, C),
20739 D=suspension(_, active, _, _, _, E, F),
20740 functor(E, G, H),
20741 functor(A, G, H),
20742 copy_term_nat((E, F), (I, J)),
20743 I=A,
20744 !,
20745 ( get_type_definition(J, B)
20746 -> true
20747 ; chr_error(type_error,
20748 'Could not find type definition for "~w" (accessed via alias "~w").\n',
20749 [J, I]),
20750 fail
20751 ).
20752get_type_definition(A, B) :-
20753 nb_getval('$chr_store_global_list_chr_translate____type_definition___2',
20754 C),
20755 member(D, C),
20756 D=suspension(_, active, _, _, _, E, F),
20757 nonvar(E),
20758 functor(E, G, H),
20759 functor(A, G, H),
20760 copy_term_nat((E, F), (I, J)),
20761 I=A,
20762 !,
20763 B=J.
20764get_type_definition(A, B) :-
20765 atomic_builtin_type(A, _, _),
20766 !,
20767 B=[A].
20768get_type_definition(A, B) :-
20769 compound_builtin_type(A, _, _, _),
20770 !,
20771 B=[A].
20772get_type_definition(_, _) :-
20773 fail.
20774get_constraint_type(A, B) :-
20775 nb_getval('$chr_store_multi_hash_chr_translate____constraint_type___2-1',
20776 C),
20777 lookup_ht(C, A, D),
20778 member(E, D),
20779 E=suspension(_, active, _, _, F),
20780 !,
20781 B=F.
20782get_constraint_type(_, _) :-
20783 fail.
20784unalias_type(A, B) :-
20785 unalias_type___2__0(A, B, _).
20786unalias_type___2__0(A, B, C) :-
20787 var(A),
20788 !,
20789 ( var(C)
20790 -> true
20791 ; C=suspension(_, _, _, D, _),
20792 setarg(2, C, removed),
20793 term_variables(D, E),
20794 arg(3, C, F),
20795 ( var(F)
20796 -> nb_getval('$chr_store_global_list_chr_translate____unalias_type___2',
20797 G),
20798 G=[_|H],
20799 b_setval('$chr_store_global_list_chr_translate____unalias_type___2',
20800 H),
20801 ( H=[I|_]
20802 -> setarg(3, I, _)
20803 ; true
20804 )
20805 ; F=[_, _|H],
20806 setarg(2, F, H),
20807 ( H=[I|_]
20808 -> setarg(3, I, F)
20809 ; true
20810 )
20811 ),
20812 detach_unalias_type___2(E, C)
20813 ),
20814 B=A.
20815unalias_type___2__0(A, B, C) :-
20816 nb_getval('$chr_store_global_list_chr_translate____type_alias___2', D),
20817 member(E, D),
20818 E=suspension(_, active, _, _, _, F, G),
20819 functor(F, H, I),
20820 functor(A, H, I),
20821 copy_term_nat((F, G), (J, K)),
20822 A=J,
20823 !,
20824 ( var(C)
20825 -> true
20826 ; C=suspension(_, _, _, L, _),
20827 setarg(2, C, removed),
20828 term_variables(L, M),
20829 arg(3, C, N),
20830 ( var(N)
20831 -> nb_getval('$chr_store_global_list_chr_translate____unalias_type___2',
20832 O),
20833 O=[_|P],
20834 b_setval('$chr_store_global_list_chr_translate____unalias_type___2',
20835 P),
20836 ( P=[Q|_]
20837 -> setarg(3, Q, _)
20838 ; true
20839 )
20840 ; N=[_, _|P],
20841 setarg(2, N, P),
20842 ( P=[Q|_]
20843 -> setarg(3, Q, N)
20844 ; true
20845 )
20846 ),
20847 detach_unalias_type___2(M, C)
20848 ),
20849 unalias_type(K, B).
20850unalias_type___2__0(A, B, C) :-
20851 nb_getval('$chr_store_global_list_chr_translate____type_definition___2',
20852 D),
20853 member(E, D),
20854 E=suspension(_, active, _, _, _, F, _),
20855 nonvar(F),
20856 functor(F, G, H),
20857 functor(A, G, H),
20858 !,
20859 ( var(C)
20860 -> true
20861 ; C=suspension(_, _, _, I, _),
20862 setarg(2, C, removed),
20863 term_variables(I, J),
20864 arg(3, C, K),
20865 ( var(K)
20866 -> nb_getval('$chr_store_global_list_chr_translate____unalias_type___2',
20867 L),
20868 L=[_|M],
20869 b_setval('$chr_store_global_list_chr_translate____unalias_type___2',
20870 M),
20871 ( M=[N|_]
20872 -> setarg(3, N, _)
20873 ; true
20874 )
20875 ; K=[_, _|M],
20876 setarg(2, K, M),
20877 ( M=[N|_]
20878 -> setarg(3, N, K)
20879 ; true
20880 )
20881 ),
20882 detach_unalias_type___2(J, C)
20883 ),
20884 B=A.
20885unalias_type___2__0(A, B, C) :-
20886 atomic_builtin_type(A, _, _),
20887 !,
20888 ( var(C)
20889 -> true
20890 ; C=suspension(_, _, _, D, _),
20891 setarg(2, C, removed),
20892 term_variables(D, E),
20893 arg(3, C, F),
20894 ( var(F)
20895 -> nb_getval('$chr_store_global_list_chr_translate____unalias_type___2',
20896 G),
20897 G=[_|H],
20898 b_setval('$chr_store_global_list_chr_translate____unalias_type___2',
20899 H),
20900 ( H=[I|_]
20901 -> setarg(3, I, _)
20902 ; true
20903 )
20904 ; F=[_, _|H],
20905 setarg(2, F, H),
20906 ( H=[I|_]
20907 -> setarg(3, I, F)
20908 ; true
20909 )
20910 ),
20911 detach_unalias_type___2(E, C)
20912 ),
20913 B=A.
20914unalias_type___2__0(A, B, C) :-
20915 compound_builtin_type(A, _, _, _),
20916 !,
20917 ( var(C)
20918 -> true
20919 ; C=suspension(_, _, _, D, _),
20920 setarg(2, C, removed),
20921 term_variables(D, E),
20922 arg(3, C, F),
20923 ( var(F)
20924 -> nb_getval('$chr_store_global_list_chr_translate____unalias_type___2',
20925 G),
20926 G=[_|H],
20927 b_setval('$chr_store_global_list_chr_translate____unalias_type___2',
20928 H),
20929 ( H=[I|_]
20930 -> setarg(3, I, _)
20931 ; true
20932 )
20933 ; F=[_, _|H],
20934 setarg(2, F, H),
20935 ( H=[I|_]
20936 -> setarg(3, I, F)
20937 ; true
20938 )
20939 ),
20940 detach_unalias_type___2(E, C)
20941 ),
20942 B=A.
20943unalias_type___2__0(A, B, C) :-
20944 ( var(C)
20945 -> C=suspension(D, active, _, A, B),
20946 term_variables(A, E),
20947 'chr gen_id'(D),
20948 nb_getval('$chr_store_global_list_chr_translate____unalias_type___2',
20949 F),
20950 G=[C|F],
20951 b_setval('$chr_store_global_list_chr_translate____unalias_type___2',
20952 G),
20953 ( F=[H|_]
20954 -> setarg(3, H, G)
20955 ; true
20956 ),
20957 attach_unalias_type___2(E, C)
20958 ; setarg(2, C, active)
20959 ).
20960types_modes_condition([], [], A) :-
20961 !,
20962 A=true.
20963types_modes_condition([A|B], [C|D], E) :-
20964 nb_getval('$chr_store_global_ground_chr_translate____constraint_mode___2',
20965 F),
20966 member(G, F),
20967 G=suspension(_, active, _, _, H, I),
20968 H=J/K,
20969 functor(A, J, K),
20970 !,
20971 A=..[_|L],
20972 E=(M, N, O),
20973 modes_condition(I, L, M),
20974 get_constraint_type_det(J/K, P),
20975 C=..[_|Q],
20976 types_condition(P, L, Q, I, N),
20977 types_modes_condition(B, D, O).
20978types_modes_condition([A|_], _, _) :-
20979 !,
20980 functor(A, B, C),
20981 chr_error(internal, 'Mode information missing for ~w.\n', [B/C]).
20982types_modes_condition(A, B, C) :-
20983 D=suspension(E, active, _, A, B, C),
20984 'chr gen_id'(E),
20985 nb_getval('$chr_store_global_ground_chr_translate____types_modes_condition___3',
20986 F),
20987 G=[D|F],
20988 b_setval('$chr_store_global_ground_chr_translate____types_modes_condition___3',
20989 G),
20990 ( F=[H|_]
20991 -> setarg(3, H, G)
20992 ; true
20993 ).
20994static_type_check(A, B) :-
20995 static_type_check___2__0(A, B, _).
20996static_type_check___2__0(A, B, C) :-
20997 nb_getval('$chr_store_global_ground_chr_translate____constraint_type___2',
20998 D),
20999 !,
21000 C=suspension(E, not_stored_yet, _, A, B),
21001 'chr gen_id'(E),
21002 static_type_check___2__0__0__1(D, A, B, C).
21003static_type_check___2__0__0__1([], A, B, C) :-
21004 static_type_check___2__1(A, B, C).
21005static_type_check___2__0__0__1([A|B], C, D, E) :-
21006 ( A=suspension(_, active, _, F, G)
21007 -> arg(2, E, H),
21008 setarg(2, E, active),
21009 ( H==not_stored_yet
21010 -> nb_getval('$chr_store_global_ground_chr_translate____static_type_check___2',
21011 I),
21012 J=[E|I],
21013 b_setval('$chr_store_global_ground_chr_translate____static_type_check___2',
21014 J),
21015 ( I=[K|_]
21016 -> setarg(3, K, J)
21017 ; true
21018 )
21019 ; true
21020 ),
21021 forall(( member(L, G),
21022 sub_term(L, M)
21023 ),
21024 ( get_type_definition(M, _)
21025 -> true
21026 ; chr_error(type_error,
21027 'Undefined type "~w" used in type declaration of "~w".\n',
21028 [M, F])
21029 )),
21030 ( E=suspension(_, active, _, _, _)
21031 -> setarg(2, E, inactive),
21032 static_type_check___2__0__0__1(B, C, D, E)
21033 ; true
21034 )
21035 ; static_type_check___2__0__0__1(B, C, D, E)
21036 ).
21037static_type_check___2__0(A, B, C) :-
21038 C=suspension(D, not_stored_yet, _, A, B),
21039 'chr gen_id'(D),
21040 static_type_check___2__1(A, B, C).
21041static_type_check___2__1(A, B, C) :-
21042 ( var(C)
21043 -> true
21044 ; arg(2, C, D),
21045 setarg(2, C, removed),
21046 ( D==not_stored_yet
21047 -> true
21048 ; arg(3, C, E),
21049 ( var(E)
21050 -> nb_getval('$chr_store_global_ground_chr_translate____static_type_check___2',
21051 F),
21052 F=[_|G],
21053 b_setval('$chr_store_global_ground_chr_translate____static_type_check___2',
21054 G),
21055 ( G=[H|_]
21056 -> setarg(3, H, _)
21057 ; true
21058 )
21059 ; E=[_, _|G],
21060 setarg(2, E, G),
21061 ( G=[H|_]
21062 -> setarg(3, H, E)
21063 ; true
21064 )
21065 )
21066 )
21067 ),
21068 maplist(static_type_check_rule, A, B).
21069ast_static_type_check_term(_, _, A) :-
21070 A==any,
21071 !.
21072ast_static_type_check_term(A, B, C) :-
21073 nonvar(B),
21074 B=var(D, E),
21075 !,
21076 ast_static_type_check_var(D, var(D, E), C, A).
21077ast_static_type_check_term(A, B, C) :-
21078 ast_atomic_builtin_type(C, B, D),
21079 !,
21080 ( call(D)
21081 -> true
21082 ; throw(type_error(invalid_functor(A, B, C)))
21083 ).
21084ast_static_type_check_term(A, B, C) :-
21085 ast_compound_builtin_type(C, B, D),
21086 !,
21087 ( call(D)
21088 -> true
21089 ; throw(type_error(invalid_functor(A, B, C)))
21090 ).
21091ast_static_type_check_term(A, B, C) :-
21092 nb_getval('$chr_store_global_list_chr_translate____type_alias___2', D),
21093 member(E, D),
21094 E=suspension(_, active, _, _, _, F, G),
21095 functor(C, H, I),
21096 functor(F, H, I),
21097 !,
21098 copy_term_nat(F-G, C-J),
21099 ast_static_type_check_term(A, B, J).
21100ast_static_type_check_term(A, B, C) :-
21101 nb_getval('$chr_store_global_list_chr_translate____type_definition___2',
21102 D),
21103 member(E, D),
21104 E=suspension(_, active, _, _, _, F, G),
21105 functor(C, H, I),
21106 functor(F, H, I),
21107 !,
21108 copy_term_nat(F-G, C-J),
21109 ast_functor(B, K, L),
21110 ( member(M, J),
21111 functor(M, K, L)
21112 -> ast_args(B, N),
21113 M=..[_|O],
21114 maplist(ast_static_type_check_term(A), N, O)
21115 ; throw(type_error(invalid_functor(A, B, C)))
21116 ).
21117ast_static_type_check_term(A, B, C) :-
21118 chr_error(internal,
21119 'Undefined type ~w while type checking term ~w in ~@.\n',
21120 [C, B, chr_translate:format_src(A)]).
21121ast_static_type_check_var(A, B, C, D) :-
21122 ast_static_type_check_var___4__0(A, B, C, D, _).
21123ast_static_type_check_var___4__0(A, B, C, D, E) :-
21124 nb_getval('$chr_store_global_list_chr_translate____type_alias___2', F),
21125 member(G, F),
21126 G=suspension(_, active, _, _, _, H, I),
21127 functor(H, J, K),
21128 functor(C, J, K),
21129 !,
21130 ( var(E)
21131 -> true
21132 ; E=suspension(_, _, _, _, _, L, _),
21133 setarg(2, E, removed),
21134 term_variables(L, M),
21135 arg(3, E, N),
21136 ( var(N)
21137 -> nb_getval('$chr_store_global_list_chr_translate____ast_static_type_check_var___4',
21138 O),
21139 O=[_|P],
21140 b_setval('$chr_store_global_list_chr_translate____ast_static_type_check_var___4',
21141 P),
21142 ( P=[Q|_]
21143 -> setarg(3, Q, _)
21144 ; true
21145 )
21146 ; N=[_, _|P],
21147 setarg(2, N, P),
21148 ( P=[Q|_]
21149 -> setarg(3, Q, N)
21150 ; true
21151 )
21152 ),
21153 detach_ast_static_type_check_var___4(M, E)
21154 ),
21155 copy_term_nat(H-I, C-R),
21156 ast_static_type_check_var(A, B, R, D).
21157ast_static_type_check_var___4__0(A, B, C, D, E) :-
21158 atomic_builtin_type(C, _, _),
21159 !,
21160 ( var(E)
21161 -> true
21162 ; E=suspension(_, _, _, _, _, F, _),
21163 setarg(2, E, removed),
21164 term_variables(F, G),
21165 arg(3, E, H),
21166 ( var(H)
21167 -> nb_getval('$chr_store_global_list_chr_translate____ast_static_type_check_var___4',
21168 I),
21169 I=[_|J],
21170 b_setval('$chr_store_global_list_chr_translate____ast_static_type_check_var___4',
21171 J),
21172 ( J=[K|_]
21173 -> setarg(3, K, _)
21174 ; true
21175 )
21176 ; H=[_, _|J],
21177 setarg(2, H, J),
21178 ( J=[K|_]
21179 -> setarg(3, K, H)
21180 ; true
21181 )
21182 ),
21183 detach_ast_static_type_check_var___4(G, E)
21184 ),
21185 ast_static_atomic_builtin_type_check_var(A, B, C, D).
21186ast_static_type_check_var___4__0(_, _, A, _, B) :-
21187 compound_builtin_type(A, _, _, _),
21188 !,
21189 ( var(B)
21190 -> true
21191 ; B=suspension(_, _, _, _, _, C, _),
21192 setarg(2, B, removed),
21193 term_variables(C, D),
21194 arg(3, B, E),
21195 ( var(E)
21196 -> nb_getval('$chr_store_global_list_chr_translate____ast_static_type_check_var___4',
21197 F),
21198 F=[_|G],
21199 b_setval('$chr_store_global_list_chr_translate____ast_static_type_check_var___4',
21200 G),
21201 ( G=[H|_]
21202 -> setarg(3, H, _)
21203 ; true
21204 )
21205 ; E=[_, _|G],
21206 setarg(2, E, G),
21207 ( G=[H|_]
21208 -> setarg(3, H, E)
21209 ; true
21210 )
21211 ),
21212 detach_ast_static_type_check_var___4(D, B)
21213 ).
21214ast_static_type_check_var___4__0(A, B, C, D, E) :-
21215 nb_getval('$chr_store_global_list_chr_translate____ast_static_type_check_var___4',
21216 F),
21217 member(G, F),
21218 G=suspension(_, active, _, H, I, J, K),
21219 H=A,
21220 ( C\==J,
21221 !,
21222 G=suspension(_, _, _, _, _, L, _),
21223 setarg(2, G, removed),
21224 term_variables(L, M),
21225 arg(3, G, N),
21226 ( var(N)
21227 -> nb_getval('$chr_store_global_list_chr_translate____ast_static_type_check_var___4',
21228 O),
21229 O=[_|P],
21230 b_setval('$chr_store_global_list_chr_translate____ast_static_type_check_var___4',
21231 P),
21232 ( P=[Q|_]
21233 -> setarg(3, Q, _)
21234 ; true
21235 )
21236 ; N=[_, _|P],
21237 setarg(2, N, P),
21238 ( P=[Q|_]
21239 -> setarg(3, Q, N)
21240 ; true
21241 )
21242 ),
21243 detach_ast_static_type_check_var___4(M, G),
21244 ( var(E)
21245 -> true
21246 ; E=suspension(_, _, _, _, _, R, _),
21247 setarg(2, E, removed),
21248 term_variables(R, S),
21249 arg(3, E, T),
21250 ( var(T)
21251 -> nb_getval('$chr_store_global_list_chr_translate____ast_static_type_check_var___4',
21252 U),
21253 U=[_|V],
21254 b_setval('$chr_store_global_list_chr_translate____ast_static_type_check_var___4',
21255 V),
21256 ( V=[W|_]
21257 -> setarg(3, W, _)
21258 ; true
21259 )
21260 ; T=[_, _|V],
21261 setarg(2, T, V),
21262 ( V=[W|_]
21263 -> setarg(3, W, T)
21264 ; true
21265 )
21266 ),
21267 detach_ast_static_type_check_var___4(S, E)
21268 ),
21269 throw(type_error(type_clash(B, D, K, C, J)))
21270 ; J\==C,
21271 !,
21272 G=suspension(_, _, _, _, _, X, _),
21273 setarg(2, G, removed),
21274 term_variables(X, Y),
21275 arg(3, G, Z),
21276 ( var(Z)
21277 -> nb_getval('$chr_store_global_list_chr_translate____ast_static_type_check_var___4',
21278 A1),
21279 A1=[_|B1],
21280 b_setval('$chr_store_global_list_chr_translate____ast_static_type_check_var___4',
21281 B1),
21282 ( B1=[C1|_]
21283 -> setarg(3, C1, _)
21284 ; true
21285 )
21286 ; Z=[_, _|B1],
21287 setarg(2, Z, B1),
21288 ( B1=[C1|_]
21289 -> setarg(3, C1, Z)
21290 ; true
21291 )
21292 ),
21293 detach_ast_static_type_check_var___4(Y, G),
21294 ( var(E)
21295 -> true
21296 ; E=suspension(_, _, _, _, _, D1, _),
21297 setarg(2, E, removed),
21298 term_variables(D1, E1),
21299 arg(3, E, F1),
21300 ( var(F1)
21301 -> nb_getval('$chr_store_global_list_chr_translate____ast_static_type_check_var___4',
21302 G1),
21303 G1=[_|H1],
21304 b_setval('$chr_store_global_list_chr_translate____ast_static_type_check_var___4',
21305 H1),
21306 ( H1=[I1|_]
21307 -> setarg(3, I1, _)
21308 ; true
21309 )
21310 ; F1=[_, _|H1],
21311 setarg(2, F1, H1),
21312 ( H1=[I1|_]
21313 -> setarg(3, I1, F1)
21314 ; true
21315 )
21316 ),
21317 detach_ast_static_type_check_var___4(E1, E)
21318 ),
21319 throw(type_error(type_clash(I, K, D, J, C)))
21320 ).
21321ast_static_type_check_var___4__0(A, B, C, D, E) :-
21322 ( var(E)
21323 -> E=suspension(F, active, _, A, B, C, D),
21324 term_variables(C, G),
21325 'chr gen_id'(F),
21326 nb_getval('$chr_store_global_list_chr_translate____ast_static_type_check_var___4',
21327 H),
21328 I=[E|H],
21329 b_setval('$chr_store_global_list_chr_translate____ast_static_type_check_var___4',
21330 I),
21331 ( H=[J|_]
21332 -> setarg(3, J, I)
21333 ; true
21334 ),
21335 attach_ast_static_type_check_var___4(G, E)
21336 ; setarg(2, E, active)
21337 ).
21338ast_static_atomic_builtin_type_check_var(_, _, any, _) :-
21339 !.
21340ast_static_atomic_builtin_type_check_var(A, B, C, D) :-
21341 nb_getval('$chr_store_multi_hash_chr_translate____ast_static_atomic_builtin_type_check_var___4-13',
21342 E),
21343 lookup_ht(E, k(A, C), F),
21344 ( member(G, F),
21345 G=suspension(_, active, _, _, _, _),
21346 !
21347 ; !,
21348 ast_static_atomic_builtin_type_check_var___4__0__0__3(F,
21349 A,
21350 B,
21351 C,
21352 D)
21353 ).
21354ast_static_atomic_builtin_type_check_var___4__0__0__3([], A, B, C, D) :-
21355 ast_static_atomic_builtin_type_check_var___4__1(A,
21356 B,
21357 C,
21358 D).
21359ast_static_atomic_builtin_type_check_var___4__0__0__3([A|B], C, D, E, F) :-
21360 ( A=suspension(_, active, G, _, H, _),
21361 G==C,
21362 H==E
21363 -> setarg(2, A, removed),
21364 ( nb_getval('$chr_store_multi_hash_chr_translate____ast_static_atomic_builtin_type_check_var___4-1',
21365 I),
21366 delete_ht(I, C, A)
21367 ),
21368 nb_getval('$chr_store_multi_hash_chr_translate____ast_static_atomic_builtin_type_check_var___4-13',
21369 J),
21370 delete_ht(J, k(C, E), A),
21371 ast_static_atomic_builtin_type_check_var___4__0__0__3(B,
21372 C,
21373 D,
21374 E,
21375 F)
21376 ; ast_static_atomic_builtin_type_check_var___4__0__0__3(B,
21377 C,
21378 D,
21379 E,
21380 F)
21381 ).
21382ast_static_atomic_builtin_type_check_var(A, B, C, D) :-
21383 ast_static_atomic_builtin_type_check_var___4__1(A,
21384 B,
21385 C,
21386 D).
21387ast_static_atomic_builtin_type_check_var___4__1(A, _, number, _) :-
21388 nb_getval('$chr_store_multi_hash_chr_translate____ast_static_atomic_builtin_type_check_var___4-13',
21389 B),
21390 lookup_ht(B, k(A, float), C),
21391 member(D, C),
21392 D=suspension(_, active, _, _, _, _),
21393 !.
21394ast_static_atomic_builtin_type_check_var___4__1(A, B, float, C) :-
21395 nb_getval('$chr_store_multi_hash_chr_translate____ast_static_atomic_builtin_type_check_var___4-13',
21396 D),
21397 lookup_ht(D, k(A, number), E),
21398 !,
21399 ast_static_atomic_builtin_type_check_var___4__1__0__5(E,
21400 A,
21401 B,
21402 float,
21403 C).
21404ast_static_atomic_builtin_type_check_var___4__1__0__5([], A, B, C, D) :-
21405 ast_static_atomic_builtin_type_check_var___4__8(A,
21406 B,
21407 C,
21408 D).
21409ast_static_atomic_builtin_type_check_var___4__1__0__5([A|B], C, D, E, F) :-
21410 ( A=suspension(_, active, G, _, H, _),
21411 G==C,
21412 H=number
21413 -> setarg(2, A, removed),
21414 ( nb_getval('$chr_store_multi_hash_chr_translate____ast_static_atomic_builtin_type_check_var___4-1',
21415 I),
21416 delete_ht(I, C, A)
21417 ),
21418 nb_getval('$chr_store_multi_hash_chr_translate____ast_static_atomic_builtin_type_check_var___4-13',
21419 J),
21420 delete_ht(J, k(C, number), A),
21421 ast_static_atomic_builtin_type_check_var___4__1__0__5(B,
21422 C,
21423 D,
21424 E,
21425 F)
21426 ; ast_static_atomic_builtin_type_check_var___4__1__0__5(B,
21427 C,
21428 D,
21429 E,
21430 F)
21431 ).
21432ast_static_atomic_builtin_type_check_var___4__1(A, B, C, D) :-
21433 ast_static_atomic_builtin_type_check_var___4__2(A,
21434 B,
21435 C,
21436 D).
21437ast_static_atomic_builtin_type_check_var___4__2(A, _, number, _) :-
21438 nb_getval('$chr_store_multi_hash_chr_translate____ast_static_atomic_builtin_type_check_var___4-13',
21439 B),
21440 lookup_ht(B, k(A, int), C),
21441 member(D, C),
21442 D=suspension(_, active, _, _, _, _),
21443 !.
21444ast_static_atomic_builtin_type_check_var___4__2(A, B, int, C) :-
21445 nb_getval('$chr_store_multi_hash_chr_translate____ast_static_atomic_builtin_type_check_var___4-13',
21446 D),
21447 lookup_ht(D, k(A, number), E),
21448 !,
21449 ast_static_atomic_builtin_type_check_var___4__2__0__7(E,
21450 A,
21451 B,
21452 int,
21453 C).
21454ast_static_atomic_builtin_type_check_var___4__2__0__7([], A, B, C, D) :-
21455 ast_static_atomic_builtin_type_check_var___4__5(A,
21456 B,
21457 C,
21458 D).
21459ast_static_atomic_builtin_type_check_var___4__2__0__7([A|B], C, D, E, F) :-
21460 ( A=suspension(_, active, G, _, H, _),
21461 G==C,
21462 H=number
21463 -> setarg(2, A, removed),
21464 ( nb_getval('$chr_store_multi_hash_chr_translate____ast_static_atomic_builtin_type_check_var___4-1',
21465 I),
21466 delete_ht(I, C, A)
21467 ),
21468 nb_getval('$chr_store_multi_hash_chr_translate____ast_static_atomic_builtin_type_check_var___4-13',
21469 J),
21470 delete_ht(J, k(C, number), A),
21471 ast_static_atomic_builtin_type_check_var___4__2__0__7(B,
21472 C,
21473 D,
21474 E,
21475 F)
21476 ; ast_static_atomic_builtin_type_check_var___4__2__0__7(B,
21477 C,
21478 D,
21479 E,
21480 F)
21481 ).
21482ast_static_atomic_builtin_type_check_var___4__2(A, B, C, D) :-
21483 ast_static_atomic_builtin_type_check_var___4__3(A,
21484 B,
21485 C,
21486 D).
21487ast_static_atomic_builtin_type_check_var___4__3(A, _, number, _) :-
21488 nb_getval('$chr_store_multi_hash_chr_translate____ast_static_atomic_builtin_type_check_var___4-13',
21489 B),
21490 lookup_ht(B, k(A, natural), C),
21491 member(D, C),
21492 D=suspension(_, active, _, _, _, _),
21493 !.
21494ast_static_atomic_builtin_type_check_var___4__3(A, B, natural, C) :-
21495 nb_getval('$chr_store_multi_hash_chr_translate____ast_static_atomic_builtin_type_check_var___4-13',
21496 D),
21497 lookup_ht(D, k(A, number), E),
21498 !,
21499 ast_static_atomic_builtin_type_check_var___4__3__0__9(E,
21500 A,
21501 B,
21502 natural,
21503 C).
21504ast_static_atomic_builtin_type_check_var___4__3__0__9([], A, B, C, D) :-
21505 ast_static_atomic_builtin_type_check_var___4__5(A,
21506 B,
21507 C,
21508 D).
21509ast_static_atomic_builtin_type_check_var___4__3__0__9([A|B], C, D, E, F) :-
21510 ( A=suspension(_, active, G, _, H, _),
21511 G==C,
21512 H=number
21513 -> setarg(2, A, removed),
21514 ( nb_getval('$chr_store_multi_hash_chr_translate____ast_static_atomic_builtin_type_check_var___4-1',
21515 I),
21516 delete_ht(I, C, A)
21517 ),
21518 nb_getval('$chr_store_multi_hash_chr_translate____ast_static_atomic_builtin_type_check_var___4-13',
21519 J),
21520 delete_ht(J, k(C, number), A),
21521 ast_static_atomic_builtin_type_check_var___4__3__0__9(B,
21522 C,
21523 D,
21524 E,
21525 F)
21526 ; ast_static_atomic_builtin_type_check_var___4__3__0__9(B,
21527 C,
21528 D,
21529 E,
21530 F)
21531 ).
21532ast_static_atomic_builtin_type_check_var___4__3(A, B, C, D) :-
21533 ast_static_atomic_builtin_type_check_var___4__4(A,
21534 B,
21535 C,
21536 D).
21537ast_static_atomic_builtin_type_check_var___4__4(A, _, number, _) :-
21538 nb_getval('$chr_store_multi_hash_chr_translate____ast_static_atomic_builtin_type_check_var___4-13',
21539 B),
21540 lookup_ht(B, k(A, dense_int), C),
21541 member(D, C),
21542 D=suspension(_, active, _, _, _, _),
21543 !.
21544ast_static_atomic_builtin_type_check_var___4__4(A, B, dense_int, C) :-
21545 nb_getval('$chr_store_multi_hash_chr_translate____ast_static_atomic_builtin_type_check_var___4-13',
21546 D),
21547 lookup_ht(D, k(A, number), E),
21548 !,
21549 ast_static_atomic_builtin_type_check_var___4__4__0__11(E,
21550 A,
21551 B,
21552 dense_int,
21553 C).
21554ast_static_atomic_builtin_type_check_var___4__4__0__11([], A, B, C, D) :-
21555 ast_static_atomic_builtin_type_check_var___4__6(A,
21556 B,
21557 C,
21558 D).
21559ast_static_atomic_builtin_type_check_var___4__4__0__11([A|B], C, D, E, F) :-
21560 ( A=suspension(_, active, G, _, H, _),
21561 G==C,
21562 H=number
21563 -> setarg(2, A, removed),
21564 ( nb_getval('$chr_store_multi_hash_chr_translate____ast_static_atomic_builtin_type_check_var___4-1',
21565 I),
21566 delete_ht(I, C, A)
21567 ),
21568 nb_getval('$chr_store_multi_hash_chr_translate____ast_static_atomic_builtin_type_check_var___4-13',
21569 J),
21570 delete_ht(J, k(C, number), A),
21571 ast_static_atomic_builtin_type_check_var___4__4__0__11(B,
21572 C,
21573 D,
21574 E,
21575 F)
21576 ; ast_static_atomic_builtin_type_check_var___4__4__0__11(B,
21577 C,
21578 D,
21579 E,
21580 F)
21581 ).
21582ast_static_atomic_builtin_type_check_var___4__4(A, B, C, D) :-
21583 ast_static_atomic_builtin_type_check_var___4__5(A,
21584 B,
21585 C,
21586 D).
21587ast_static_atomic_builtin_type_check_var___4__5(A, _, int, _) :-
21588 nb_getval('$chr_store_multi_hash_chr_translate____ast_static_atomic_builtin_type_check_var___4-13',
21589 B),
21590 lookup_ht(B, k(A, natural), C),
21591 member(D, C),
21592 D=suspension(_, active, _, _, _, _),
21593 !.
21594ast_static_atomic_builtin_type_check_var___4__5(A, B, natural, C) :-
21595 nb_getval('$chr_store_multi_hash_chr_translate____ast_static_atomic_builtin_type_check_var___4-13',
21596 D),
21597 lookup_ht(D, k(A, int), E),
21598 !,
21599 ast_static_atomic_builtin_type_check_var___4__5__0__13(E,
21600 A,
21601 B,
21602 natural,
21603 C).
21604ast_static_atomic_builtin_type_check_var___4__5__0__13([], A, B, C, D) :-
21605 ast_static_atomic_builtin_type_check_var___4__7(A,
21606 B,
21607 C,
21608 D).
21609ast_static_atomic_builtin_type_check_var___4__5__0__13([A|B], C, D, E, F) :-
21610 ( A=suspension(_, active, G, _, H, _),
21611 G==C,
21612 H=int
21613 -> setarg(2, A, removed),
21614 ( nb_getval('$chr_store_multi_hash_chr_translate____ast_static_atomic_builtin_type_check_var___4-1',
21615 I),
21616 delete_ht(I, C, A)
21617 ),
21618 nb_getval('$chr_store_multi_hash_chr_translate____ast_static_atomic_builtin_type_check_var___4-13',
21619 J),
21620 delete_ht(J, k(C, int), A),
21621 ast_static_atomic_builtin_type_check_var___4__5__0__13(B,
21622 C,
21623 D,
21624 E,
21625 F)
21626 ; ast_static_atomic_builtin_type_check_var___4__5__0__13(B,
21627 C,
21628 D,
21629 E,
21630 F)
21631 ).
21632ast_static_atomic_builtin_type_check_var___4__5(A, B, C, D) :-
21633 ast_static_atomic_builtin_type_check_var___4__6(A,
21634 B,
21635 C,
21636 D).
21637ast_static_atomic_builtin_type_check_var___4__6(A, _, int, _) :-
21638 nb_getval('$chr_store_multi_hash_chr_translate____ast_static_atomic_builtin_type_check_var___4-13',
21639 B),
21640 lookup_ht(B, k(A, dense_int), C),
21641 member(D, C),
21642 D=suspension(_, active, _, _, _, _),
21643 !.
21644ast_static_atomic_builtin_type_check_var___4__6(A, B, dense_int, C) :-
21645 nb_getval('$chr_store_multi_hash_chr_translate____ast_static_atomic_builtin_type_check_var___4-13',
21646 D),
21647 lookup_ht(D, k(A, int), E),
21648 !,
21649 ast_static_atomic_builtin_type_check_var___4__6__0__15(E,
21650 A,
21651 B,
21652 dense_int,
21653 C).
21654ast_static_atomic_builtin_type_check_var___4__6__0__15([], A, B, C, D) :-
21655 ast_static_atomic_builtin_type_check_var___4__7(A,
21656 B,
21657 C,
21658 D).
21659ast_static_atomic_builtin_type_check_var___4__6__0__15([A|B], C, D, E, F) :-
21660 ( A=suspension(_, active, G, _, H, _),
21661 G==C,
21662 H=int
21663 -> setarg(2, A, removed),
21664 ( nb_getval('$chr_store_multi_hash_chr_translate____ast_static_atomic_builtin_type_check_var___4-1',
21665 I),
21666 delete_ht(I, C, A)
21667 ),
21668 nb_getval('$chr_store_multi_hash_chr_translate____ast_static_atomic_builtin_type_check_var___4-13',
21669 J),
21670 delete_ht(J, k(C, int), A),
21671 ast_static_atomic_builtin_type_check_var___4__6__0__15(B,
21672 C,
21673 D,
21674 E,
21675 F)
21676 ; ast_static_atomic_builtin_type_check_var___4__6__0__15(B,
21677 C,
21678 D,
21679 E,
21680 F)
21681 ).
21682ast_static_atomic_builtin_type_check_var___4__6(A, B, C, D) :-
21683 ast_static_atomic_builtin_type_check_var___4__7(A,
21684 B,
21685 C,
21686 D).
21687ast_static_atomic_builtin_type_check_var___4__7(A, _, natural, _) :-
21688 nb_getval('$chr_store_multi_hash_chr_translate____ast_static_atomic_builtin_type_check_var___4-13',
21689 B),
21690 lookup_ht(B, k(A, dense_int), C),
21691 member(D, C),
21692 D=suspension(_, active, _, _, _, _),
21693 !.
21694ast_static_atomic_builtin_type_check_var___4__7(A, B, dense_int, C) :-
21695 nb_getval('$chr_store_multi_hash_chr_translate____ast_static_atomic_builtin_type_check_var___4-13',
21696 D),
21697 lookup_ht(D, k(A, natural), E),
21698 !,
21699 ast_static_atomic_builtin_type_check_var___4__7__0__17(E,
21700 A,
21701 B,
21702 dense_int,
21703 C).
21704ast_static_atomic_builtin_type_check_var___4__7__0__17([], A, B, C, D) :-
21705 ast_static_atomic_builtin_type_check_var___4__8(A,
21706 B,
21707 C,
21708 D).
21709ast_static_atomic_builtin_type_check_var___4__7__0__17([A|B], C, D, E, F) :-
21710 ( A=suspension(_, active, G, _, H, _),
21711 G==C,
21712 H=natural
21713 -> setarg(2, A, removed),
21714 ( nb_getval('$chr_store_multi_hash_chr_translate____ast_static_atomic_builtin_type_check_var___4-1',
21715 I),
21716 delete_ht(I, C, A)
21717 ),
21718 nb_getval('$chr_store_multi_hash_chr_translate____ast_static_atomic_builtin_type_check_var___4-13',
21719 J),
21720 delete_ht(J, k(C, natural), A),
21721 ast_static_atomic_builtin_type_check_var___4__7__0__17(B,
21722 C,
21723 D,
21724 E,
21725 F)
21726 ; ast_static_atomic_builtin_type_check_var___4__7__0__17(B,
21727 C,
21728 D,
21729 E,
21730 F)
21731 ).
21732ast_static_atomic_builtin_type_check_var___4__7(A, B, C, D) :-
21733 ast_static_atomic_builtin_type_check_var___4__8(A,
21734 B,
21735 C,
21736 D).
21737ast_static_atomic_builtin_type_check_var___4__8(A, B, C, D) :-
21738 nb_getval('$chr_store_multi_hash_chr_translate____ast_static_atomic_builtin_type_check_var___4-1',
21739 E),
21740 lookup_ht(E, A, F),
21741 member(G, F),
21742 G=suspension(_, active, _, _, H, I),
21743 !,
21744 setarg(2, G, removed),
21745 nb_getval('$chr_store_multi_hash_chr_translate____ast_static_atomic_builtin_type_check_var___4-1',
21746 J),
21747 delete_ht(J, A, G),
21748 nb_getval('$chr_store_multi_hash_chr_translate____ast_static_atomic_builtin_type_check_var___4-13',
21749 K),
21750 delete_ht(K, k(A, H), G),
21751 throw(type_error(type_clash(B, D, I, C, H))).
21752ast_static_atomic_builtin_type_check_var___4__8(A, B, C, D) :-
21753 E=suspension(F, active, A, B, C, D),
21754 'chr gen_id'(F),
21755 nb_getval('$chr_store_multi_hash_chr_translate____ast_static_atomic_builtin_type_check_var___4-1',
21756 G),
21757 insert_ht(G, A, E),
21758 nb_getval('$chr_store_multi_hash_chr_translate____ast_static_atomic_builtin_type_check_var___4-13',
21759 H),
21760 insert_ht(H, k(A, C), E).
21761dynamic_type_check :-
21762 dynamic_type_check___0__0(_).
21763dynamic_type_check___0__0(A) :-
21764 nb_getval('$chr_store_global_list_chr_translate____type_definition___2',
21765 B),
21766 !,
21767 A=suspension(C, not_stored_yet, t, _),
21768 'chr gen_id'(C),
21769 dynamic_type_check___0__0__0__1(B, A).
21770dynamic_type_check___0__0__0__1([], A) :-
21771 dynamic_type_check___0__1(A).
21772dynamic_type_check___0__0__0__1([A|B], C) :-
21773 ( A=suspension(_, active, _, _, _, D, E),
21774 F=t(235, A, C),
21775 '$novel_production'(A, F),
21776 '$novel_production'(C, F)
21777 -> '$extend_history'(C, F),
21778 arg(2, C, G),
21779 setarg(2, C, active),
21780 ( G==not_stored_yet
21781 -> nb_getval('$chr_store_global_ground_chr_translate____dynamic_type_check___0',
21782 H),
21783 I=[C|H],
21784 b_setval('$chr_store_global_ground_chr_translate____dynamic_type_check___0',
21785 I),
21786 ( H=[J|_]
21787 -> setarg(4, J, I)
21788 ; true
21789 )
21790 ; true
21791 ),
21792 copy_term_nat(D-E, K-L),
21793 maplist(dynamic_type_check_clause(K), L, M),
21794 dynamic_type_check_clauses(M),
21795 ( C=suspension(_, active, _, _)
21796 -> setarg(2, C, inactive),
21797 dynamic_type_check___0__0__0__1(B, C)
21798 ; true
21799 )
21800 ; dynamic_type_check___0__0__0__1(B, C)
21801 ).
21802dynamic_type_check___0__0(A) :-
21803 A=suspension(B, not_stored_yet, t, _),
21804 'chr gen_id'(B),
21805 dynamic_type_check___0__1(A).
21806dynamic_type_check___0__1(A) :-
21807 nb_getval('$chr_store_global_list_chr_translate____type_alias___2', B),
21808 !,
21809 dynamic_type_check___0__1__0__2(B, A).
21810dynamic_type_check___0__1__0__2([], A) :-
21811 dynamic_type_check___0__2(A).
21812dynamic_type_check___0__1__0__2([A|B], C) :-
21813 ( A=suspension(_, active, _, _, _, D, E),
21814 F=t(236, A, C),
21815 '$novel_production'(A, F),
21816 '$novel_production'(C, F)
21817 -> '$extend_history'(C, F),
21818 arg(2, C, G),
21819 setarg(2, C, active),
21820 ( G==not_stored_yet
21821 -> nb_getval('$chr_store_global_ground_chr_translate____dynamic_type_check___0',
21822 H),
21823 I=[C|H],
21824 b_setval('$chr_store_global_ground_chr_translate____dynamic_type_check___0',
21825 I),
21826 ( H=[J|_]
21827 -> setarg(4, J, I)
21828 ; true
21829 )
21830 ; true
21831 ),
21832 copy_term_nat(D-E, K-L),
21833 dynamic_type_check_alias_clause(K, L, M),
21834 dynamic_type_check_clauses([M]),
21835 ( C=suspension(_, active, _, _)
21836 -> setarg(2, C, inactive),
21837 dynamic_type_check___0__1__0__2(B, C)
21838 ; true
21839 )
21840 ; dynamic_type_check___0__1__0__2(B, C)
21841 ).
21842dynamic_type_check___0__1(A) :-
21843 dynamic_type_check___0__2(A).
21844dynamic_type_check___0__2(A) :-
21845 ( var(A)
21846 -> true
21847 ; arg(2, A, B),
21848 setarg(2, A, removed),
21849 ( B==not_stored_yet
21850 -> true
21851 ; arg(4, A, C),
21852 ( var(C)
21853 -> nb_getval('$chr_store_global_ground_chr_translate____dynamic_type_check___0',
21854 D),
21855 D=[_|E],
21856 b_setval('$chr_store_global_ground_chr_translate____dynamic_type_check___0',
21857 E),
21858 ( E=[F|_]
21859 -> setarg(4, F, _)
21860 ; true
21861 )
21862 ; C=[_, _|E],
21863 setarg(2, C, E),
21864 ( E=[F|_]
21865 -> setarg(4, F, C)
21866 ; true
21867 )
21868 )
21869 )
21870 ),
21871 findall(('$dynamic_type_check'(G, H):-I),
21872 ( atomic_builtin_type(G, H, I)
21873 ; compound_builtin_type(G, H, I, _)
21874 ),
21875 J),
21876 dynamic_type_check_clauses(J).
21877dynamic_type_check_clauses(A) :-
21878 nb_getval('$chr_store_global_ground_chr_translate____dynamic_type_check_clauses___1',
21879 B),
21880 member(C, B),
21881 C=suspension(_, active, _, D),
21882 !,
21883 setarg(2, C, removed),
21884 arg(3, C, E),
21885 ( var(E)
21886 -> nb_getval('$chr_store_global_ground_chr_translate____dynamic_type_check_clauses___1',
21887 F),
21888 F=[_|G],
21889 b_setval('$chr_store_global_ground_chr_translate____dynamic_type_check_clauses___1',
21890 G),
21891 ( G=[H|_]
21892 -> setarg(3, H, _)
21893 ; true
21894 )
21895 ; E=[_, _|G],
21896 setarg(2, E, G),
21897 ( G=[H|_]
21898 -> setarg(3, H, E)
21899 ; true
21900 )
21901 ),
21902 append(A, D, I),
21903 dynamic_type_check_clauses(I).
21904dynamic_type_check_clauses(A) :-
21905 B=suspension(C, active, _, A),
21906 'chr gen_id'(C),
21907 nb_getval('$chr_store_global_ground_chr_translate____dynamic_type_check_clauses___1',
21908 D),
21909 E=[B|D],
21910 b_setval('$chr_store_global_ground_chr_translate____dynamic_type_check_clauses___1',
21911 E),
21912 ( D=[F|_]
21913 -> setarg(3, F, E)
21914 ; true
21915 ).
21916get_dynamic_type_check_clauses(A) :-
21917 nb_getval('$chr_store_global_ground_chr_translate____dynamic_type_check_clauses___1',
21918 B),
21919 member(C, B),
21920 C=suspension(_, active, _, D),
21921 !,
21922 setarg(2, C, removed),
21923 arg(3, C, E),
21924 ( var(E)
21925 -> nb_getval('$chr_store_global_ground_chr_translate____dynamic_type_check_clauses___1',
21926 F),
21927 F=[_|G],
21928 b_setval('$chr_store_global_ground_chr_translate____dynamic_type_check_clauses___1',
21929 G),
21930 ( G=[H|_]
21931 -> setarg(3, H, _)
21932 ; true
21933 )
21934 ; E=[_, _|G],
21935 setarg(2, E, G),
21936 ( G=[H|_]
21937 -> setarg(3, H, E)
21938 ; true
21939 )
21940 ),
21941 A=D.
21942get_dynamic_type_check_clauses([]).
21943atomic_type(A) :-
21944 atomic_type___1__0(A, _).
21945atomic_type___1__0(A, B) :-
21946 atomic_builtin_type(A, _, _),
21947 !,
21948 ( var(B)
21949 -> true
21950 ; B=suspension(_, _, _, C),
21951 setarg(2, B, removed),
21952 term_variables(C, D),
21953 arg(3, B, E),
21954 ( var(E)
21955 -> nb_getval('$chr_store_global_list_chr_translate____atomic_type___1',
21956 F),
21957 F=[_|G],
21958 b_setval('$chr_store_global_list_chr_translate____atomic_type___1',
21959 G),
21960 ( G=[H|_]
21961 -> setarg(3, H, _)
21962 ; true
21963 )
21964 ; E=[_, _|G],
21965 setarg(2, E, G),
21966 ( G=[H|_]
21967 -> setarg(3, H, E)
21968 ; true
21969 )
21970 ),
21971 detach_atomic_type___1(D, B)
21972 ),
21973 A\==any.
21974atomic_type___1__0(A, B) :-
21975 nb_getval('$chr_store_global_list_chr_translate____type_definition___2',
21976 C),
21977 member(D, C),
21978 D=suspension(_, active, _, _, _, E, F),
21979 functor(A, G, H),
21980 functor(E, G, H),
21981 !,
21982 ( var(B)
21983 -> true
21984 ; B=suspension(_, _, _, I),
21985 setarg(2, B, removed),
21986 term_variables(I, J),
21987 arg(3, B, K),
21988 ( var(K)
21989 -> nb_getval('$chr_store_global_list_chr_translate____atomic_type___1',
21990 L),
21991 L=[_|M],
21992 b_setval('$chr_store_global_list_chr_translate____atomic_type___1',
21993 M),
21994 ( M=[N|_]
21995 -> setarg(3, N, _)
21996 ; true
21997 )
21998 ; K=[_, _|M],
21999 setarg(2, K, M),
22000 ( M=[N|_]
22001 -> setarg(3, N, K)
22002 ; true
22003 )
22004 ),
22005 detach_atomic_type___1(J, B)
22006 ),
22007 maplist(atomic, F).
22008atomic_type___1__0(A, B) :-
22009 nb_getval('$chr_store_global_list_chr_translate____type_alias___2', C),
22010 member(D, C),
22011 D=suspension(_, active, _, _, _, E, F),
22012 functor(A, G, H),
22013 functor(E, G, H),
22014 !,
22015 ( var(B)
22016 -> true
22017 ; B=suspension(_, _, _, I),
22018 setarg(2, B, removed),
22019 term_variables(I, J),
22020 arg(3, B, K),
22021 ( var(K)
22022 -> nb_getval('$chr_store_global_list_chr_translate____atomic_type___1',
22023 L),
22024 L=[_|M],
22025 b_setval('$chr_store_global_list_chr_translate____atomic_type___1',
22026 M),
22027 ( M=[N|_]
22028 -> setarg(3, N, _)
22029 ; true
22030 )
22031 ; K=[_, _|M],
22032 setarg(2, K, M),
22033 ( M=[N|_]
22034 -> setarg(3, N, K)
22035 ; true
22036 )
22037 ),
22038 detach_atomic_type___1(J, B)
22039 ),
22040 atomic(F),
22041 copy_term_nat(E-F, A-O),
22042 atomic_type(O).
22043atomic_type___1__0(A, B) :-
22044 ( var(B)
22045 -> B=suspension(C, active, _, A),
22046 term_variables(A, D),
22047 'chr gen_id'(C),
22048 nb_getval('$chr_store_global_list_chr_translate____atomic_type___1',
22049 E),
22050 F=[B|E],
22051 b_setval('$chr_store_global_list_chr_translate____atomic_type___1',
22052 F),
22053 ( E=[G|_]
22054 -> setarg(3, G, F)
22055 ; true
22056 ),
22057 attach_atomic_type___1(D, B)
22058 ; setarg(2, B, active)
22059 ).
22060enumerated_atomic_type(A, _) :-
22061 atomic_builtin_type(A, _, _),
22062 !,
22063 fail.
22064enumerated_atomic_type(A, B) :-
22065 nb_getval('$chr_store_global_list_chr_translate____type_definition___2',
22066 C),
22067 member(D, C),
22068 D=suspension(_, active, _, _, _, E, F),
22069 functor(A, G, H),
22070 functor(E, G, H),
22071 !,
22072 maplist(atomic, F),
22073 B=F.
22074enumerated_atomic_type(A, B) :-
22075 nb_getval('$chr_store_global_list_chr_translate____type_alias___2', C),
22076 member(D, C),
22077 D=suspension(_, active, _, _, _, E, F),
22078 functor(A, G, H),
22079 functor(E, G, H),
22080 !,
22081 atomic(F),
22082 copy_term_nat(E-F, A-I),
22083 enumerated_atomic_type(I, B).
22084enumerated_atomic_type(_, _) :-
22085 fail.
22086stored(A, B, yes) :-
22087 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-12',
22088 C),
22089 lookup_ht(C, k(A, B), D),
22090 member(E, D),
22091 E=suspension(_, active, _, _, _, _, F, G, _),
22092 nb_getval('$chr_store_multi_hash_chr_translate____passive___2-12', H),
22093 lookup_ht(H, k(F, G), I),
22094 member(J, I),
22095 J=suspension(_, active, _, _, _),
22096 nb_getval('$chr_store_multi_hash_chr_translate____stored_complete___3-1',
22097 K),
22098 lookup_ht(K, A, L),
22099 member(M, L),
22100 M=suspension(_, active, _, _, N, O),
22101 B<N,
22102 !,
22103 setarg(2, M, removed),
22104 nb_getval('$chr_store_multi_hash_chr_translate____stored_complete___3-13',
22105 P),
22106 delete_ht(P, k(A, O), M),
22107 nb_getval('$chr_store_multi_hash_chr_translate____stored_complete___3-1',
22108 Q),
22109 delete_ht(Q, A, M),
22110 R is O-1,
22111 stored(A, B, maybe),
22112 stored_complete(A, N, R).
22113stored(A, B, yes) :-
22114 nb_getval('$chr_store_multi_hash_chr_translate____stored_complete___3-1',
22115 C),
22116 lookup_ht(C, A, D),
22117 member(E, D),
22118 E=suspension(_, active, _, _, F, G),
22119 B<F,
22120 nb_getval('$chr_store_multi_hash_chr_translate____ai_not_observed___2-12',
22121 H),
22122 lookup_ht(H, k(A, B), I),
22123 member(J, I),
22124 J=suspension(_, active, _, _),
22125 !,
22126 setarg(2, E, removed),
22127 nb_getval('$chr_store_multi_hash_chr_translate____stored_complete___3-13',
22128 K),
22129 delete_ht(K, k(A, G), E),
22130 nb_getval('$chr_store_multi_hash_chr_translate____stored_complete___3-1',
22131 L),
22132 delete_ht(L, A, E),
22133 M is G-1,
22134 stored(A, B, maybe),
22135 stored_complete(A, F, M).
22136stored(A, B, C) :-
22137 D=suspension(E, active, A, B, C),
22138 'chr gen_id'(E),
22139 nb_getval('$chr_store_multi_hash_chr_translate____stored___3-13', F),
22140 insert_ht(F, k(A, C), D),
22141 nb_getval('$chr_store_multi_hash_chr_translate____stored___3-123', G),
22142 insert_ht(G, k(A, B, C), D).
22143stored_completing(A, B, C) :-
22144 ground(A),
22145 ground(B),
22146 nb_getval('$chr_store_multi_hash_chr_translate____stored___3-123', D),
22147 ( ( lookup_ht(D, k(A, B, yes), E),
22148 member(F, E),
22149 F=suspension(_, active, _, _, _),
22150 !,
22151 G is B+1,
22152 H is C+1,
22153 stored_completing(A, G, H)
22154 ; lookup_ht(D, k(A, B, maybe), I),
22155 member(J, I),
22156 J=suspension(_, active, _, _, _),
22157 !,
22158 K is B+1,
22159 stored_completing(A, K, C)
22160 )
22161 ; lookup_ht(D, k(A, B, no), L),
22162 member(M, L),
22163 M=suspension(_, active, _, _, _),
22164 !,
22165 stored_complete(A, B, C)
22166 ).
22167stored_completing(A, B, C) :-
22168 stored_complete(A, B, C).
22169stored_complete(A, B, C) :-
22170 stored_complete___3__0(A, B, C, _).
22171stored_complete___3__0(A, B, C, _) :-
22172 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-1', D),
22173 lookup_ht(D, A, E),
22174 member(F, E),
22175 F=suspension(_, active, _, _, _, G, H, I, _),
22176 G<B,
22177 nb_getval('$chr_store_multi_hash_chr_translate____passive___2-12', J),
22178 lookup_ht(J, k(H, I), K),
22179 member(L, K),
22180 L=suspension(_, active, _, _, _),
22181 nb_getval('$chr_store_multi_hash_chr_translate____stored___3-123', M),
22182 lookup_ht(M, k(A, G, yes), N),
22183 member(O, N),
22184 O=suspension(_, active, _, _, _),
22185 !,
22186 setarg(2, O, removed),
22187 nb_getval('$chr_store_multi_hash_chr_translate____stored___3-13', P),
22188 delete_ht(P, k(A, yes), O),
22189 nb_getval('$chr_store_multi_hash_chr_translate____stored___3-123', Q),
22190 delete_ht(Q, k(A, G, yes), O),
22191 R is C-1,
22192 stored(A, G, maybe),
22193 stored_complete(A, B, R).
22194stored_complete___3__0(A, B, C, _) :-
22195 nb_getval('$chr_store_multi_hash_chr_translate____stored___3-13', D),
22196 lookup_ht(D, k(A, yes), E),
22197 member(F, E),
22198 F=suspension(_, active, _, G, _),
22199 G<B,
22200 nb_getval('$chr_store_multi_hash_chr_translate____ai_not_observed___2-12',
22201 H),
22202 lookup_ht(H, k(A, G), I),
22203 member(J, I),
22204 J=suspension(_, active, _, _),
22205 !,
22206 setarg(2, F, removed),
22207 nb_getval('$chr_store_multi_hash_chr_translate____stored___3-13', K),
22208 delete_ht(K, k(A, yes), F),
22209 nb_getval('$chr_store_multi_hash_chr_translate____stored___3-123', L),
22210 delete_ht(L, k(A, G, yes), F),
22211 M is C-1,
22212 stored(A, G, maybe),
22213 stored_complete(A, B, M).
22214stored_complete___3__0(A, B, 0, C) :-
22215 nb_getval('$chr_store_multi_hash_chr_translate____max_occurrence___2-1',
22216 D),
22217 lookup_ht(D, A, E),
22218 !,
22219 C=suspension(F, not_stored_yet, t, A, B, 0),
22220 'chr gen_id'(F),
22221 stored_complete___3__0__0__3(E, A, B, 0, C).
22222stored_complete___3__0__0__3([], A, B, C, D) :-
22223 stored_complete___3__1(A, B, C, D).
22224stored_complete___3__0__0__3([A|B], C, D, E, F) :-
22225 ( A=suspension(_, active, _, G, H),
22226 G==C,
22227 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-1',
22228 I),
22229 lookup_ht(I, C, J)
22230 -> stored_complete___3__0__1__3(J,
22231 H,
22232 A,
22233 B,
22234 C,
22235 D,
22236 E,
22237 F)
22238 ; stored_complete___3__0__0__3(B, C, D, E, F)
22239 ).
22240stored_complete___3__0__1__3([], _, _, A, B, C, D, E) :-
22241 stored_complete___3__0__0__3(A, B, C, D, E).
22242stored_complete___3__0__1__3([A|B], C, D, E, F, G, H, I) :-
22243 ( A=suspension(_, active, _, _, J, _, K, _, _),
22244 J==F,
22245 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-3',
22246 L),
22247 lookup_ht(L, K, M)
22248 -> stored_complete___3__0__2__3(M,
22249 K,
22250 A,
22251 B,
22252 C,
22253 D,
22254 E,
22255 F,
22256 G,
22257 H,
22258 I)
22259 ; stored_complete___3__0__1__3(B,
22260 C,
22261 D,
22262 E,
22263 F,
22264 G,
22265 H,
22266 I)
22267 ).
22268stored_complete___3__0__2__3([], _, _, A, B, C, D, E, F, G, H) :-
22269 stored_complete___3__0__1__3(A,
22270 B,
22271 C,
22272 D,
22273 E,
22274 F,
22275 G,
22276 H).
22277stored_complete___3__0__2__3([A|B], C, D, E, F, G, H, I, J, K, L) :-
22278 ( A=suspension(_, active, _, _, _, _, M, N, _),
22279 A\==D,
22280 M==C,
22281 O=t(250, A, D, L, G),
22282 '$novel_production'(A, O),
22283 '$novel_production'(D, O),
22284 '$novel_production'(L, O),
22285 '$novel_production'(G, O),
22286 J=<F
22287 -> '$extend_history'(L, O),
22288 arg(2, L, P),
22289 setarg(2, L, active),
22290 ( P==not_stored_yet
22291 -> nb_getval('$chr_store_multi_hash_chr_translate____stored_complete___3-13',
22292 Q),
22293 insert_ht(Q, k(I, K), L),
22294 nb_getval('$chr_store_multi_hash_chr_translate____stored_complete___3-1',
22295 R),
22296 insert_ht(R, I, L)
22297 ; true
22298 ),
22299 passive(C, N),
22300 ( L=suspension(_, active, _, _, _, _)
22301 -> setarg(2, L, inactive),
22302 stored_complete___3__0__2__3(B,
22303 C,
22304 D,
22305 E,
22306 F,
22307 G,
22308 H,
22309 I,
22310 J,
22311 K,
22312 L)
22313 ; true
22314 )
22315 ; stored_complete___3__0__2__3(B,
22316 C,
22317 D,
22318 E,
22319 F,
22320 G,
22321 H,
22322 I,
22323 J,
22324 K,
22325 L)
22326 ).
22327stored_complete___3__0(A, B, C, D) :-
22328 D=suspension(E, not_stored_yet, t, A, B, C),
22329 'chr gen_id'(E),
22330 stored_complete___3__1(A, B, C, D).
22331stored_complete___3__1(A, B, C, D) :-
22332 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-1', E),
22333 lookup_ht(E, A, F),
22334 !,
22335 stored_complete___3__1__0__4(F, A, B, C, D).
22336stored_complete___3__1__0__4([], A, B, C, D) :-
22337 stored_complete___3__2(A, B, C, D).
22338stored_complete___3__1__0__4([A|B], C, D, E, F) :-
22339 ( A=suspension(_, active, _, _, G, H, I, J, _),
22340 G==C,
22341 K=t(259, F, A),
22342 '$novel_production'(F, K),
22343 '$novel_production'(A, K),
22344 H>D
22345 -> '$extend_history'(F, K),
22346 arg(2, F, L),
22347 setarg(2, F, active),
22348 ( L==not_stored_yet
22349 -> nb_getval('$chr_store_multi_hash_chr_translate____stored_complete___3-13',
22350 M),
22351 insert_ht(M, k(C, E), F),
22352 nb_getval('$chr_store_multi_hash_chr_translate____stored_complete___3-1',
22353 N),
22354 insert_ht(N, C, F)
22355 ; true
22356 ),
22357 passive(I, J),
22358 ( F=suspension(_, active, _, _, _, _)
22359 -> setarg(2, F, inactive),
22360 stored_complete___3__1__0__4(B,
22361 C,
22362 D,
22363 E,
22364 F)
22365 ; true
22366 )
22367 ; stored_complete___3__1__0__4(B, C, D, E, F)
22368 ).
22369stored_complete___3__1(A, B, C, D) :-
22370 stored_complete___3__2(A, B, C, D).
22371stored_complete___3__2(A, _, B, C) :-
22372 arg(2, C, D),
22373 setarg(2, C, active),
22374 ( D==not_stored_yet
22375 -> nb_getval('$chr_store_multi_hash_chr_translate____stored_complete___3-13',
22376 E),
22377 insert_ht(E, k(A, B), C),
22378 nb_getval('$chr_store_multi_hash_chr_translate____stored_complete___3-1',
22379 F),
22380 insert_ht(F, A, C)
22381 ; true
22382 ).
22383is_stored(A) :-
22384 ground(A),
22385 nb_getval('$chr_store_multi_hash_chr_translate____max_occurrence___2-1',
22386 B),
22387 lookup_ht(B, A, C),
22388 member(D, C),
22389 D=suspension(_, active, _, _, E),
22390 nb_getval('$chr_store_multi_hash_chr_translate____stored_complete___3-13',
22391 F),
22392 lookup_ht(F, k(A, 0), G),
22393 member(H, G),
22394 H=suspension(_, active, _, _, I, _),
22395 I=<E,
22396 !,
22397 fail.
22398is_stored(_).
22399is_finally_stored(A) :-
22400 ground(A),
22401 nb_getval('$chr_store_multi_hash_chr_translate____max_occurrence___2-1',
22402 B),
22403 lookup_ht(B, A, C),
22404 member(D, C),
22405 D=suspension(_, active, _, _, E),
22406 nb_getval('$chr_store_multi_hash_chr_translate____stored_complete___3-1',
22407 F),
22408 lookup_ht(F, A, G),
22409 member(H, G),
22410 H=suspension(_, active, _, _, I, _),
22411 I=<E,
22412 !,
22413 fail.
22414is_finally_stored(_).
22415check_all_passive(A, [B|C]) :-
22416 nb_getval('$chr_store_multi_hash_chr_translate____passive___2-12', D),
22417 lookup_ht(D, k(A, B), E),
22418 member(F, E),
22419 F=suspension(_, active, _, _, _),
22420 !,
22421 check_all_passive(A, C).
22422check_all_passive(A, []) :-
22423 nb_getval('$chr_store_multi_hash_chr_translate____rule___2-1', B),
22424 lookup_ht(B, A, C),
22425 member(D, C),
22426 D=suspension(_, active, _, _, _, E),
22427 !,
22428 chr_warning(weird_program,
22429 'All heads passive in ~@.\n\tThis rule never fires. Please check your program.\n',
22430 [format_rule(E)]).
22431check_all_passive(A, B) :-
22432 C=suspension(D, active, A, B),
22433 'chr gen_id'(D),
22434 nb_getval('$chr_store_multi_hash_chr_translate____check_all_passive___2-12',
22435 E),
22436 insert_ht(E, k(A, B), C),
22437 nb_getval('$chr_store_multi_hash_chr_translate____check_all_passive___2-1',
22438 F),
22439 insert_ht(F, A, C).
22440constraints_code1([], A, B) :-
22441 !,
22442 A=B.
22443constraints_code1([A|B], C, D) :-
22444 !,
22445 constraint_code(A, C, E),
22446 constraints_code1(B, E, D).
22447constraints_code1(A, B, C) :-
22448 D=suspension(E, active, _, A, B, C),
22449 'chr gen_id'(E),
22450 nb_getval('$chr_store_global_ground_chr_translate____constraints_code1___3',
22451 F),
22452 G=[D|F],
22453 b_setval('$chr_store_global_ground_chr_translate____constraints_code1___3',
22454 G),
22455 ( F=[H|_]
22456 -> setarg(3, H, G)
22457 ; true
22458 ).
22459constraint_code(A, B, C) :-
22460 ( ( chr_pp_flag(debugable, on)
22461 ; is_stored(A),
22462 ( has_active_occurrence(A)
22463 ; chr_pp_flag(late_allocation, off)
22464 ),
22465 ( may_trigger(A)
22466 ; get_allocation_occurrence(A, D),
22467 get_max_occurrence(A, E),
22468 E>=D
22469 )
22470 )
22471 -> constraint_prelude(A, F),
22472 add_dummy_location(F, G),
22473 B=[G|H]
22474 ; B=H
22475 ),
22476 I=[0],
22477 occurrences_code(A, 1, I, J, H, K),
22478 gen_cond_attach_clause(A, J, K, C).
22479has_active_occurrence(A) :-
22480 nb_getval('$chr_store_multi_hash_chr_translate____memo_has_active_occurrence___1-1',
22481 B),
22482 lookup_ht(B, A, C),
22483 member(D, C),
22484 D=suspension(_, active, _),
22485 !.
22486has_active_occurrence(A) :-
22487 has_active_occurrence(A, 1),
22488 memo_has_active_occurrence(A).
22489has_active_occurrence(A, B) :-
22490 nb_getval('$chr_store_multi_hash_chr_translate____max_occurrence___2-1',
22491 C),
22492 lookup_ht(C, A, D),
22493 member(E, D),
22494 E=suspension(_, active, _, _, F),
22495 B>F,
22496 !,
22497 fail.
22498has_active_occurrence(A, B) :-
22499 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-12',
22500 C),
22501 lookup_ht(C, k(A, B), D),
22502 member(E, D),
22503 E=suspension(_, active, _, _, _, _, F, G, _),
22504 nb_getval('$chr_store_multi_hash_chr_translate____passive___2-12', H),
22505 lookup_ht(H, k(F, G), I),
22506 member(J, I),
22507 J=suspension(_, active, _, _, _),
22508 !,
22509 K is B+1,
22510 has_active_occurrence(A, K).
22511has_active_occurrence(_, _).
22512memo_has_active_occurrence(A) :-
22513 B=suspension(C, active, A),
22514 'chr gen_id'(C),
22515 nb_getval('$chr_store_multi_hash_chr_translate____memo_has_active_occurrence___1-1',
22516 D),
22517 insert_ht(D, A, B).
22518use_auxiliary_predicate(A) :-
22519 nb_getval('$chr_store_multi_hash_chr_translate____use_auxiliary_predicate___1-1',
22520 B),
22521 lookup_ht(B, A, C),
22522 member(D, C),
22523 D=suspension(_, active, _),
22524 !.
22525use_auxiliary_predicate(A) :-
22526 B=suspension(C, active, A),
22527 'chr gen_id'(C),
22528 nb_getval('$chr_store_multi_hash_chr_translate____use_auxiliary_predicate___1-1',
22529 D),
22530 insert_ht(D, A, B).
22531use_auxiliary_predicate(A, B) :-
22532 nb_getval('$chr_store_multi_hash_chr_translate____use_auxiliary_predicate___2-12',
22533 C),
22534 lookup_ht(C, k(A, B), D),
22535 member(E, D),
22536 E=suspension(_, active, _, _),
22537 !.
22538use_auxiliary_predicate(A, B) :-
22539 C=suspension(D, active, A, B),
22540 'chr gen_id'(D),
22541 nb_getval('$chr_store_multi_hash_chr_translate____use_auxiliary_predicate___2-1',
22542 E),
22543 insert_ht(E, A, C),
22544 nb_getval('$chr_store_multi_hash_chr_translate____use_auxiliary_predicate___2-12',
22545 F),
22546 insert_ht(F, k(A, B), C).
22547is_used_auxiliary_predicate(A) :-
22548 nb_getval('$chr_store_multi_hash_chr_translate____use_auxiliary_predicate___1-1',
22549 B),
22550 lookup_ht(B, A, C),
22551 member(D, C),
22552 D=suspension(_, active, _),
22553 !.
22554is_used_auxiliary_predicate(A) :-
22555 nb_getval('$chr_store_multi_hash_chr_translate____use_auxiliary_predicate___2-1',
22556 B),
22557 lookup_ht(B, A, C),
22558 member(D, C),
22559 D=suspension(_, active, _, _),
22560 !.
22561is_used_auxiliary_predicate(_) :-
22562 fail.
22563is_used_auxiliary_predicate(A, _) :-
22564 nb_getval('$chr_store_multi_hash_chr_translate____use_auxiliary_predicate___1-1',
22565 B),
22566 lookup_ht(B, A, C),
22567 member(D, C),
22568 D=suspension(_, active, _),
22569 !.
22570is_used_auxiliary_predicate(A, B) :-
22571 nb_getval('$chr_store_multi_hash_chr_translate____use_auxiliary_predicate___2-12',
22572 C),
22573 lookup_ht(C, k(A, B), D),
22574 member(E, D),
22575 E=suspension(_, active, _, _),
22576 !.
22577is_used_auxiliary_predicate(_, _) :-
22578 fail.
22579use_auxiliary_module(A) :-
22580 nb_getval('$chr_store_multi_hash_chr_translate____use_auxiliary_module___1-1',
22581 B),
22582 lookup_ht(B, A, C),
22583 member(D, C),
22584 D=suspension(_, active, _),
22585 !.
22586use_auxiliary_module(A) :-
22587 B=suspension(C, active, A),
22588 'chr gen_id'(C),
22589 nb_getval('$chr_store_multi_hash_chr_translate____use_auxiliary_module___1-1',
22590 D),
22591 insert_ht(D, A, B).
22592is_used_auxiliary_module(A) :-
22593 nb_getval('$chr_store_multi_hash_chr_translate____use_auxiliary_module___1-1',
22594 B),
22595 lookup_ht(B, A, C),
22596 member(D, C),
22597 D=suspension(_, active, _),
22598 !.
22599is_used_auxiliary_module(_) :-
22600 fail.
22601occurrences_code(A, B, C, D, E, F) :-
22602 nb_getval('$chr_store_multi_hash_chr_translate____max_occurrence___2-1',
22603 G),
22604 lookup_ht(G, A, H),
22605 member(I, H),
22606 I=suspension(_, active, _, _, J),
22607 B>J,
22608 !,
22609 D=C,
22610 E=F.
22611occurrences_code(A, B, C, D, E, F) :-
22612 occurrence_code(A, B, C, G, E, H),
22613 I is B+1,
22614 occurrences_code(A, I, G, D, H, F).
22615occurrence_code(A, B, C, D, E, F) :-
22616 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-12',
22617 G),
22618 lookup_ht(G, k(A, B), H),
22619 member(I, H),
22620 I=suspension(_, active, _, _, _, _, J, K, _),
22621 ( nb_getval('$chr_store_multi_hash_chr_translate____passive___2-12',
22622 L),
22623 lookup_ht(L, k(J, K), M),
22624 member(N, M),
22625 N=suspension(_, active, _, _, _),
22626 !,
22627 ( named_history(J, _, _)
22628 -> does_use_history(A, B)
22629 ; true
22630 ),
22631 D=C,
22632 E=F
22633 ; nb_getval('$chr_store_multi_hash_chr_translate____rule___2-1', O),
22634 lookup_ht(O, J, P),
22635 member(Q, P),
22636 Q=suspension(_, active, _, _, _, R),
22637 !,
22638 R=pragma(rule(S, T, _, _), ids(U, V), _, _, _),
22639 ( select2(K, W, U, S, X, Y)
22640 -> D=C,
22641 head1_code(W,
22642 K,
22643 Y,
22644 X,
22645 R,
22646 A,
22647 B,
22648 C,
22649 E,
22650 F)
22651 ; select2(K, Z, V, T, A1, B1)
22652 -> head2_code(Z,
22653 K,
22654 B1,
22655 A1,
22656 R,
22657 A,
22658 B,
22659 C,
22660 E,
22661 C1),
22662 ( should_skip_to_next_id(A, B)
22663 -> inc_id(C, D),
22664 ( unconditional_occurrence(A, B)
22665 -> C1=F
22666 ; gen_alloc_inc_clause(A,
22667 B,
22668 C,
22669 C1,
22670 F)
22671 )
22672 ; D=C,
22673 C1=F
22674 )
22675 )
22676 ).
22677occurrence_code(A, B, _, _, _, _) :-
22678 chr_error(internal,
22679 'occurrence_code/6: missing information to compile ~w:~w\n',
22680 [A, B]).
22681functional_dependency(A, B, C, D) :-
22682 B>1,
22683 nb_getval('$chr_store_multi_hash_chr_translate____allocation_occurrence___2-1',
22684 E),
22685 lookup_ht(E, A, F),
22686 member(G, F),
22687 G=suspension(_, active, _, _, H),
22688 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-13',
22689 I),
22690 lookup_ht(I, k(A, B), J),
22691 member(K, J),
22692 K=suspension(_, active, _, _, _, L, _, _, _),
22693 H>L,
22694 !,
22695 functional_dependency(A, 1, C, D).
22696functional_dependency(A, B, C, D) :-
22697 E=suspension(F, active, A, B, C, D),
22698 'chr gen_id'(F),
22699 nb_getval('$chr_store_multi_hash_chr_translate____functional_dependency___4-1',
22700 G),
22701 insert_ht(G, A, E),
22702 nb_getval('$chr_store_multi_hash_chr_translate____functional_dependency___4-12',
22703 H),
22704 insert_ht(H, k(A, B), E).
22705get_functional_dependency(A, B, C, D) :-
22706 nb_getval('$chr_store_multi_hash_chr_translate____functional_dependency___4-1',
22707 E),
22708 lookup_ht(E, A, F),
22709 member(G, F),
22710 G=suspension(_, active, _, H, I, J),
22711 B>=H,
22712 !,
22713 C=I,
22714 D=J.
22715get_functional_dependency(_, _, _, _) :-
22716 fail.
22717initial_call_pattern(A) :-
22718 initial_call_pattern___1__0(A, _).
22719initial_call_pattern___1__0(A, _) :-
22720 nb_getval('$chr_store_multi_hash_chr_translate____initial_call_pattern___1-1',
22721 B),
22722 lookup_ht(B, A, C),
22723 member(D, C),
22724 D=suspension(_, active, _, _),
22725 !.
22726initial_call_pattern___1__0(A, B) :-
22727 B=suspension(C, active, t, A),
22728 'chr gen_id'(C),
22729 nb_getval('$chr_store_multi_hash_chr_translate____initial_call_pattern___1-1',
22730 D),
22731 insert_ht(D, A, B),
22732 call_pattern(A),
22733 ( B=suspension(_, active, _, _)
22734 -> setarg(2, B, inactive),
22735 initial_call_pattern___1__1(A, B)
22736 ; true
22737 ).
22738initial_call_pattern___1__1(A, B) :-
22739 nb_getval('$chr_store_multi_hash_chr_translate____final_answer_pattern___2-1',
22740 C),
22741 lookup_ht(C, A, D),
22742 !,
22743 initial_call_pattern___1__1__0__4(D, A, B).
22744initial_call_pattern___1__1__0__4([], A, B) :-
22745 initial_call_pattern___1__2(A, B).
22746initial_call_pattern___1__1__0__4([A|B], C, D) :-
22747 ( A=suspension(_, active, _, E, F),
22748 E==C,
22749 nb_getval('$chr_store_global_ground_chr_translate____abstract_constraints___1',
22750 G)
22751 -> initial_call_pattern___1__1__1__4(G,
22752 F,
22753 A,
22754 B,
22755 C,
22756 D)
22757 ; initial_call_pattern___1__1__0__4(B, C, D)
22758 ).
22759initial_call_pattern___1__1__1__4([], _, _, A, B, C) :-
22760 initial_call_pattern___1__1__0__4(A, B, C).
22761initial_call_pattern___1__1__1__4([A|B], C, D, E, F, G) :-
22762 ( A=suspension(_, active, _, H),
22763 I=t(303, G, D, A),
22764 '$novel_production'(G, I),
22765 '$novel_production'(D, I)
22766 -> '$extend_history'(G, I),
22767 setarg(2, G, active),
22768 ai_observation_schedule_new_calls(H, C),
22769 ( G=suspension(_, active, _, _)
22770 -> setarg(2, G, inactive),
22771 initial_call_pattern___1__1__1__4(B,
22772 C,
22773 D,
22774 E,
22775 F,
22776 G)
22777 ; true
22778 )
22779 ; initial_call_pattern___1__1__1__4(B,
22780 C,
22781 D,
22782 E,
22783 F,
22784 G)
22785 ).
22786initial_call_pattern___1__1(A, B) :-
22787 initial_call_pattern___1__2(A, B).
22788initial_call_pattern___1__2(_, A) :-
22789 setarg(2, A, active).
22790call_pattern(A) :-
22791 call_pattern___1__0(A, _).
22792call_pattern___1__0(A, _) :-
22793 nb_getval('$chr_store_multi_hash_chr_translate____call_pattern___1-1',
22794 B),
22795 lookup_ht(B, A, C),
22796 member(D, C),
22797 D=suspension(_, active, _),
22798 !.
22799call_pattern___1__0(A, B) :-
22800 B=suspension(C, active, A),
22801 'chr gen_id'(C),
22802 nb_getval('$chr_store_multi_hash_chr_translate____call_pattern___1-1',
22803 D),
22804 insert_ht(D, A, B),
22805 call_pattern_worker(A),
22806 ( B=suspension(_, active, _)
22807 -> setarg(2, B, inactive),
22808 call_pattern___1__1(A, B)
22809 ; true
22810 ).
22811call_pattern___1__1(_, A) :-
22812 setarg(2, A, active).
22813call_pattern_worker(odom([], A)) :-
22814 !,
22815 final_answer_pattern(odom([], A), odom([], A)).
22816call_pattern_worker(odom([A|B], C)) :-
22817 !,
22818 D=odom(A, C),
22819 depends_on_goal(odom([A|B], C), D),
22820 call_pattern(D).
22821call_pattern_worker(odom((A;B), C)) :-
22822 !,
22823 D=odom((A;B), C),
22824 E=odom([], C),
22825 final_answer_pattern(D, E),
22826 F=odom(A, C),
22827 G=odom(B, C),
22828 call_pattern(F),
22829 call_pattern(G),
22830 depends_on_as(D, F, G).
22831call_pattern_worker(odom(builtin, A)) :-
22832 !,
22833 ord_empty(B),
22834 final_answer_pattern(odom(builtin, A), odom([], B)).
22835call_pattern_worker(odom(occ(A, B), C)) :-
22836 nb_getval('$chr_store_multi_hash_chr_translate____max_occurrence___2-1',
22837 D),
22838 lookup_ht(D, A, E),
22839 member(F, E),
22840 F=suspension(_, active, _, _, G),
22841 B>G,
22842 !,
22843 final_answer_pattern(odom(occ(A, B), C), odom([], C)).
22844call_pattern_worker(odom(A, B)) :-
22845 A=_/_,
22846 !,
22847 C=odom(occ(A, 1), B),
22848 call_pattern(C),
22849 depends_on(odom(A, B), C).
22850call_pattern_worker(odom(occ(A, B), C)) :-
22851 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-12',
22852 D),
22853 lookup_ht(D, k(A, B), E),
22854 member(F, E),
22855 F=suspension(_, active, _, _, _, _, G, H, _),
22856 is_passive(G, H),
22857 !,
22858 I is B+1,
22859 J=odom(occ(A, I), C),
22860 call_pattern(J),
22861 final_answer_pattern(odom(occ(A, B), C), odom([], C)),
22862 depends_on(odom(occ(A, B), C), J).
22863call_pattern_worker(odom(occ(A, B), C)) :-
22864 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-125',
22865 D),
22866 ( lookup_ht(D, k(A, B, simplification), E),
22867 member(F, E),
22868 F=suspension(_, active, _, _, _, _, G, H, _),
22869 \+ is_passive(G, H),
22870 !,
22871 ai_observation_memo_simplification_rest_heads(A, B, I),
22872 ai_observation_observe_set(C, I, J),
22873 ai_observation_memo_abstract_goal(G, K),
22874 call_pattern(odom(K, J)),
22875 L is B+1,
22876 M=odom(occ(A, L), C),
22877 call_pattern(M),
22878 depends_on_as(odom(occ(A, B), C),
22879 odom(K, J),
22880 M),
22881 final_answer_pattern(odom(occ(A, B), C),
22882 odom([], C))
22883 ; lookup_ht(D, k(A, B, propagation), N),
22884 member(O, N),
22885 O=suspension(_, active, _, _, _, _, P, Q, _),
22886 \+ is_passive(P, Q),
22887 !,
22888 ai_observation_memo_propagation_rest_heads(A, B, R),
22889 ai_observation_observe_set(C, R, S),
22890 ord_add_element(S, A, T),
22891 ai_observation_memo_abstract_goal(P, U),
22892 call_pattern(odom(U, T)),
22893 ( ord_memberchk(A, S)
22894 -> V=no
22895 ; V=yes
22896 ),
22897 W is B+1,
22898 X=odom(occ(A, W), C),
22899 call_pattern(X),
22900 depends_on_ap(odom(occ(A, B), C),
22901 odom(U, T),
22902 X,
22903 V)
22904 ).
22905call_pattern_worker(A) :-
22906 chr_error(internal,
22907 'AI observation analysis: unexpected abstract state ~w\n',
22908 [A]).
22909final_answer_pattern(A, B) :-
22910 final_answer_pattern___2__0(A, B, _).
22911final_answer_pattern___2__0(A, B, C) :-
22912 nb_getval('$chr_store_multi_hash_chr_translate____final_answer_pattern___2-1',
22913 D),
22914 lookup_ht(D, A, E),
22915 ( member(F, E),
22916 F=suspension(_, active, _, _, G),
22917 ai_observation_leq(B, G),
22918 !
22919 ; !,
22920 final_answer_pattern___2__0__0__2(E, A, B, C)
22921 ).
22922final_answer_pattern___2__0__0__2([], A, B, C) :-
22923 final_answer_pattern___2__1(A, B, C).
22924final_answer_pattern___2__0__0__2([A|B], C, D, E) :-
22925 ( A=suspension(_, active, _, F, G),
22926 F==C,
22927 ai_observation_leq(G, D)
22928 -> setarg(2, A, removed),
22929 nb_getval('$chr_store_multi_hash_chr_translate____final_answer_pattern___2-1',
22930 H),
22931 delete_ht(H, C, A),
22932 final_answer_pattern___2__0__0__2(B, C, D, E)
22933 ; final_answer_pattern___2__0__0__2(B, C, D, E)
22934 ).
22935final_answer_pattern___2__0(A, B, C) :-
22936 final_answer_pattern___2__1(A, B, C).
22937final_answer_pattern___2__1(A, B, C) :-
22938 nb_getval('$chr_store_multi_hash_chr_translate____initial_call_pattern___1-1',
22939 D),
22940 lookup_ht(D, A, E),
22941 !,
22942 C=suspension(F, not_stored_yet, t, A, B),
22943 'chr gen_id'(F),
22944 final_answer_pattern___2__1__0__3(E, A, B, C).
22945final_answer_pattern___2__1__0__3([], A, B, C) :-
22946 final_answer_pattern___2__2(A, B, C).
22947final_answer_pattern___2__1__0__3([A|B], C, D, E) :-
22948 ( A=suspension(_, active, _, F),
22949 F==C,
22950 nb_getval('$chr_store_global_ground_chr_translate____abstract_constraints___1',
22951 G)
22952 -> final_answer_pattern___2__1__1__3(G,
22953 A,
22954 B,
22955 C,
22956 D,
22957 E)
22958 ; final_answer_pattern___2__1__0__3(B, C, D, E)
22959 ).
22960final_answer_pattern___2__1__1__3([], _, A, B, C, D) :-
22961 final_answer_pattern___2__1__0__3(A, B, C, D).
22962final_answer_pattern___2__1__1__3([A|B], C, D, E, F, G) :-
22963 ( A=suspension(_, active, _, H),
22964 I=t(303, C, G, A),
22965 '$novel_production'(C, I),
22966 '$novel_production'(G, I)
22967 -> '$extend_history'(G, I),
22968 arg(2, G, J),
22969 setarg(2, G, active),
22970 ( J==not_stored_yet
22971 -> nb_getval('$chr_store_multi_hash_chr_translate____final_answer_pattern___2-1',
22972 K),
22973 insert_ht(K, E, G)
22974 ; true
22975 ),
22976 ai_observation_schedule_new_calls(H, F),
22977 ( G=suspension(_, active, _, _, _)
22978 -> setarg(2, G, inactive),
22979 final_answer_pattern___2__1__1__3(B,
22980 C,
22981 D,
22982 E,
22983 F,
22984 G)
22985 ; true
22986 )
22987 ; final_answer_pattern___2__1__1__3(B,
22988 C,
22989 D,
22990 E,
22991 F,
22992 G)
22993 ).
22994final_answer_pattern___2__1(A, B, C) :-
22995 C=suspension(D, not_stored_yet, t, A, B),
22996 'chr gen_id'(D),
22997 final_answer_pattern___2__2(A, B, C).
22998final_answer_pattern___2__2(A, B, C) :-
22999 nb_getval('$chr_store_multi_hash_chr_translate____depends_on___2-2', D),
23000 lookup_ht(D, A, E),
23001 !,
23002 final_answer_pattern___2__2__0__4(E, A, B, C).
23003final_answer_pattern___2__2__0__4([], A, B, C) :-
23004 final_answer_pattern___2__3(A, B, C).
23005final_answer_pattern___2__2__0__4([A|B], C, D, E) :-
23006 ( A=suspension(_, active, _, F, G),
23007 G==C,
23008 H=t(305, A, E),
23009 '$novel_production'(A, H),
23010 '$novel_production'(E, H)
23011 -> '$extend_history'(E, H),
23012 arg(2, E, I),
23013 setarg(2, E, active),
23014 ( I==not_stored_yet
23015 -> nb_getval('$chr_store_multi_hash_chr_translate____final_answer_pattern___2-1',
23016 J),
23017 insert_ht(J, C, E)
23018 ; true
23019 ),
23020 final_answer_pattern(F, D),
23021 ( E=suspension(_, active, _, _, _)
23022 -> setarg(2, E, inactive),
23023 final_answer_pattern___2__2__0__4(B, C, D, E)
23024 ; true
23025 )
23026 ; final_answer_pattern___2__2__0__4(B, C, D, E)
23027 ).
23028final_answer_pattern___2__2(A, B, C) :-
23029 final_answer_pattern___2__3(A, B, C).
23030final_answer_pattern___2__3(A, B, C) :-
23031 nb_getval('$chr_store_multi_hash_chr_translate____depends_on_goal___2-2',
23032 D),
23033 lookup_ht(D, A, E),
23034 !,
23035 final_answer_pattern___2__3__0__5(E, A, B, C).
23036final_answer_pattern___2__3__0__5([], A, B, C) :-
23037 final_answer_pattern___2__4(A, B, C).
23038final_answer_pattern___2__3__0__5([A|B], C, D, E) :-
23039 ( A=suspension(_, active, _, F, G),
23040 G==C,
23041 nb_getval('$chr_store_multi_hash_chr_translate____depends_on___2-1',
23042 H),
23043 lookup_ht(H, F, I)
23044 -> final_answer_pattern___2__3__1__5(I,
23045 F,
23046 A,
23047 B,
23048 C,
23049 D,
23050 E)
23051 ; final_answer_pattern___2__3__0__5(B, C, D, E)
23052 ).
23053final_answer_pattern___2__3__1__5([], _, _, A, B, C, D) :-
23054 final_answer_pattern___2__3__0__5(A, B, C, D).
23055final_answer_pattern___2__3__1__5([A|B], C, D, E, F, G, H) :-
23056 ( A=suspension(_, active, _, I, J),
23057 I==C
23058 -> setarg(2, A, removed),
23059 ( nb_getval('$chr_store_multi_hash_chr_translate____depends_on___2-1',
23060 K),
23061 delete_ht(K, C, A)
23062 ),
23063 nb_getval('$chr_store_multi_hash_chr_translate____depends_on___2-2',
23064 L),
23065 delete_ht(L, J, A),
23066 final_answer_pattern___2__3__1__5(B,
23067 C,
23068 D,
23069 E,
23070 F,
23071 G,
23072 H)
23073 ; final_answer_pattern___2__3__1__5(B,
23074 C,
23075 D,
23076 E,
23077 F,
23078 G,
23079 H)
23080 ).
23081final_answer_pattern___2__3(A, B, C) :-
23082 final_answer_pattern___2__4(A, B, C).
23083final_answer_pattern___2__4(A, B, C) :-
23084 nb_getval('$chr_store_multi_hash_chr_translate____depends_on_goal___2-2',
23085 D),
23086 lookup_ht(D, A, E),
23087 !,
23088 final_answer_pattern___2__4__0__6(E, A, B, C).
23089final_answer_pattern___2__4__0__6([], A, B, C) :-
23090 final_answer_pattern___2__5(A, B, C).
23091final_answer_pattern___2__4__0__6([A|B], C, D, E) :-
23092 ( A=suspension(_, active, _, F, G),
23093 G==C,
23094 H=t(310, A, E),
23095 '$novel_production'(A, H),
23096 '$novel_production'(E, H)
23097 -> '$extend_history'(E, H),
23098 arg(2, E, I),
23099 setarg(2, E, active),
23100 ( I==not_stored_yet
23101 -> nb_getval('$chr_store_multi_hash_chr_translate____final_answer_pattern___2-1',
23102 J),
23103 insert_ht(J, C, E)
23104 ; true
23105 ),
23106 F=odom([_|K], _),
23107 D=odom([], L),
23108 M=odom(K, L),
23109 call_pattern(M),
23110 depends_on(F, M),
23111 ( E=suspension(_, active, _, _, _)
23112 -> setarg(2, E, inactive),
23113 final_answer_pattern___2__4__0__6(B, C, D, E)
23114 ; true
23115 )
23116 ; final_answer_pattern___2__4__0__6(B, C, D, E)
23117 ).
23118final_answer_pattern___2__4(A, B, C) :-
23119 final_answer_pattern___2__5(A, B, C).
23120final_answer_pattern___2__5(A, B, C) :-
23121 nb_getval('$chr_store_multi_hash_chr_translate____depends_on_as___3-2',
23122 D),
23123 lookup_ht(D, A, E),
23124 !,
23125 final_answer_pattern___2__5__0__7(E, A, B, C).
23126final_answer_pattern___2__5__0__7([], A, B, C) :-
23127 final_answer_pattern___2__6(A, B, C).
23128final_answer_pattern___2__5__0__7([A|B], C, D, E) :-
23129 ( A=suspension(_, active, _, F, G, H),
23130 G==C,
23131 nb_getval('$chr_store_multi_hash_chr_translate____final_answer_pattern___2-1',
23132 I),
23133 lookup_ht(I, H, J)
23134 -> final_answer_pattern___2__5__1__7(J,
23135 F,
23136 H,
23137 A,
23138 B,
23139 C,
23140 D,
23141 E)
23142 ; final_answer_pattern___2__5__0__7(B, C, D, E)
23143 ).
23144final_answer_pattern___2__5__1__7([], _, _, _, A, B, C, D) :-
23145 final_answer_pattern___2__5__0__7(A, B, C, D).
23146final_answer_pattern___2__5__1__7([A|B], C, D, E, F, G, H, I) :-
23147 ( A=suspension(_, active, _, J, K),
23148 J==D,
23149 L=t(317, E, I, A),
23150 '$novel_production'(E, L),
23151 '$novel_production'(I, L),
23152 '$novel_production'(A, L)
23153 -> '$extend_history'(I, L),
23154 arg(2, I, M),
23155 setarg(2, I, active),
23156 ( M==not_stored_yet
23157 -> nb_getval('$chr_store_multi_hash_chr_translate____final_answer_pattern___2-1',
23158 N),
23159 insert_ht(N, G, I)
23160 ; true
23161 ),
23162 ai_observation_lub(H, K, O),
23163 final_answer_pattern(C, O),
23164 ( I=suspension(_, active, _, _, _)
23165 -> setarg(2, I, inactive),
23166 final_answer_pattern___2__5__1__7(B,
23167 C,
23168 D,
23169 E,
23170 F,
23171 G,
23172 H,
23173 I)
23174 ; true
23175 )
23176 ; final_answer_pattern___2__5__1__7(B,
23177 C,
23178 D,
23179 E,
23180 F,
23181 G,
23182 H,
23183 I)
23184 ).
23185final_answer_pattern___2__5(A, B, C) :-
23186 final_answer_pattern___2__6(A, B, C).
23187final_answer_pattern___2__6(A, B, C) :-
23188 nb_getval('$chr_store_multi_hash_chr_translate____depends_on_as___3-3',
23189 D),
23190 lookup_ht(D, A, E),
23191 !,
23192 final_answer_pattern___2__6__0__8(E, A, B, C).
23193final_answer_pattern___2__6__0__8([], A, B, C) :-
23194 final_answer_pattern___2__7(A, B, C).
23195final_answer_pattern___2__6__0__8([A|B], C, D, E) :-
23196 ( A=suspension(_, active, _, F, G, H),
23197 H==C,
23198 nb_getval('$chr_store_multi_hash_chr_translate____final_answer_pattern___2-1',
23199 I),
23200 lookup_ht(I, G, J)
23201 -> final_answer_pattern___2__6__1__8(J,
23202 F,
23203 G,
23204 A,
23205 B,
23206 C,
23207 D,
23208 E)
23209 ; final_answer_pattern___2__6__0__8(B, C, D, E)
23210 ).
23211final_answer_pattern___2__6__1__8([], _, _, _, A, B, C, D) :-
23212 final_answer_pattern___2__6__0__8(A, B, C, D).
23213final_answer_pattern___2__6__1__8([A|B], C, D, E, F, G, H, I) :-
23214 ( A=suspension(_, active, _, J, K),
23215 J==D,
23216 L=t(317, E, A, I),
23217 '$novel_production'(E, L),
23218 '$novel_production'(A, L),
23219 '$novel_production'(I, L)
23220 -> '$extend_history'(I, L),
23221 arg(2, I, M),
23222 setarg(2, I, active),
23223 ( M==not_stored_yet
23224 -> nb_getval('$chr_store_multi_hash_chr_translate____final_answer_pattern___2-1',
23225 N),
23226 insert_ht(N, G, I)
23227 ; true
23228 ),
23229 ai_observation_lub(K, H, O),
23230 final_answer_pattern(C, O),
23231 ( I=suspension(_, active, _, _, _)
23232 -> setarg(2, I, inactive),
23233 final_answer_pattern___2__6__1__8(B,
23234 C,
23235 D,
23236 E,
23237 F,
23238 G,
23239 H,
23240 I)
23241 ; true
23242 )
23243 ; final_answer_pattern___2__6__1__8(B,
23244 C,
23245 D,
23246 E,
23247 F,
23248 G,
23249 H,
23250 I)
23251 ).
23252final_answer_pattern___2__6(A, B, C) :-
23253 final_answer_pattern___2__7(A, B, C).
23254final_answer_pattern___2__7(A, B, C) :-
23255 nb_getval('$chr_store_multi_hash_chr_translate____depends_on_ap___4-3',
23256 D),
23257 lookup_ht(D, A, E),
23258 !,
23259 final_answer_pattern___2__7__0__9(E, A, B, C).
23260final_answer_pattern___2__7__0__9([], A, B, C) :-
23261 final_answer_pattern___2__8(A, B, C).
23262final_answer_pattern___2__7__0__9([A|B], C, D, E) :-
23263 ( A=suspension(_, active, _, F, _, G, _),
23264 G==C,
23265 H=t(325, A, E),
23266 '$novel_production'(A, H),
23267 '$novel_production'(E, H)
23268 -> '$extend_history'(E, H),
23269 arg(2, E, I),
23270 setarg(2, E, active),
23271 ( I==not_stored_yet
23272 -> nb_getval('$chr_store_multi_hash_chr_translate____final_answer_pattern___2-1',
23273 J),
23274 insert_ht(J, C, E)
23275 ; true
23276 ),
23277 final_answer_pattern(F, D),
23278 ( E=suspension(_, active, _, _, _)
23279 -> setarg(2, E, inactive),
23280 final_answer_pattern___2__7__0__9(B, C, D, E)
23281 ; true
23282 )
23283 ; final_answer_pattern___2__7__0__9(B, C, D, E)
23284 ).
23285final_answer_pattern___2__7(A, B, C) :-
23286 final_answer_pattern___2__8(A, B, C).
23287final_answer_pattern___2__8(A, B, C) :-
23288 nb_getval('$chr_store_multi_hash_chr_translate____depends_on_ap___4-2',
23289 D),
23290 lookup_ht(D, A, E),
23291 !,
23292 final_answer_pattern___2__8__0__10(E, A, B, C).
23293final_answer_pattern___2__8__0__10([], A, B, C) :-
23294 final_answer_pattern___2__9(A, B, C).
23295final_answer_pattern___2__8__0__10([A|B], C, D, E) :-
23296 ( A=suspension(_, active, _, F, G, H, I),
23297 G==C,
23298 nb_getval('$chr_store_multi_hash_chr_translate____final_answer_pattern___2-1',
23299 J),
23300 lookup_ht(J, H, K)
23301 -> final_answer_pattern___2__8__1__10(K,
23302 F,
23303 H,
23304 I,
23305 A,
23306 B,
23307 C,
23308 D,
23309 E)
23310 ; final_answer_pattern___2__8__0__10(B, C, D, E)
23311 ).
23312final_answer_pattern___2__8__1__10([], _, _, _, _, A, B, C, D) :-
23313 final_answer_pattern___2__8__0__10(A, B, C, D).
23314final_answer_pattern___2__8__1__10([A|B], C, D, E, F, G, H, I, J) :-
23315 ( A=suspension(_, active, _, K, L),
23316 K==D,
23317 M=t(326, F, J, A),
23318 '$novel_production'(F, M),
23319 '$novel_production'(J, M),
23320 '$novel_production'(A, M)
23321 -> '$extend_history'(J, M),
23322 arg(2, J, N),
23323 setarg(2, J, active),
23324 ( N==not_stored_yet
23325 -> nb_getval('$chr_store_multi_hash_chr_translate____final_answer_pattern___2-1',
23326 O),
23327 insert_ht(O, H, J)
23328 ; true
23329 ),
23330 C=odom(occ(P, Q), _),
23331 ( ai_observation_is_observed(I, P)
23332 -> ai_observed_internal(P, Q)
23333 ; ai_not_observed_internal(P, Q)
23334 ),
23335 ( E==yes
23336 -> I=odom([], R),
23337 ord_del_element(R, P, S),
23338 T=odom([], S)
23339 ; T=I
23340 ),
23341 ai_observation_lub(T, L, U),
23342 final_answer_pattern(C, U),
23343 ( J=suspension(_, active, _, _, _)
23344 -> setarg(2, J, inactive),
23345 final_answer_pattern___2__8__1__10(B,
23346 C,
23347 D,
23348 E,
23349 F,
23350 G,
23351 H,
23352 I,
23353 J)
23354 ; true
23355 )
23356 ; final_answer_pattern___2__8__1__10(B,
23357 C,
23358 D,
23359 E,
23360 F,
23361 G,
23362 H,
23363 I,
23364 J)
23365 ).
23366final_answer_pattern___2__8(A, B, C) :-
23367 final_answer_pattern___2__9(A, B, C).
23368final_answer_pattern___2__9(A, B, C) :-
23369 nb_getval('$chr_store_multi_hash_chr_translate____depends_on_ap___4-3',
23370 D),
23371 lookup_ht(D, A, E),
23372 !,
23373 final_answer_pattern___2__9__0__11(E, A, B, C).
23374final_answer_pattern___2__9__0__11([], A, B, C) :-
23375 final_answer_pattern___2__10(A, B, C).
23376final_answer_pattern___2__9__0__11([A|B], C, D, E) :-
23377 ( A=suspension(_, active, _, F, G, H, I),
23378 H==C,
23379 nb_getval('$chr_store_multi_hash_chr_translate____final_answer_pattern___2-1',
23380 J),
23381 lookup_ht(J, G, K)
23382 -> final_answer_pattern___2__9__1__11(K,
23383 F,
23384 G,
23385 I,
23386 A,
23387 B,
23388 C,
23389 D,
23390 E)
23391 ; final_answer_pattern___2__9__0__11(B, C, D, E)
23392 ).
23393final_answer_pattern___2__9__1__11([], _, _, _, _, A, B, C, D) :-
23394 final_answer_pattern___2__9__0__11(A, B, C, D).
23395final_answer_pattern___2__9__1__11([A|B], C, D, E, F, G, H, I, J) :-
23396 ( A=suspension(_, active, _, K, L),
23397 K==D,
23398 M=t(326, F, A, J),
23399 '$novel_production'(F, M),
23400 '$novel_production'(A, M),
23401 '$novel_production'(J, M)
23402 -> '$extend_history'(J, M),
23403 arg(2, J, N),
23404 setarg(2, J, active),
23405 ( N==not_stored_yet
23406 -> nb_getval('$chr_store_multi_hash_chr_translate____final_answer_pattern___2-1',
23407 O),
23408 insert_ht(O, H, J)
23409 ; true
23410 ),
23411 C=odom(occ(P, Q), _),
23412 ( ai_observation_is_observed(L, P)
23413 -> ai_observed_internal(P, Q)
23414 ; ai_not_observed_internal(P, Q)
23415 ),
23416 ( E==yes
23417 -> L=odom([], R),
23418 ord_del_element(R, P, S),
23419 T=odom([], S)
23420 ; T=L
23421 ),
23422 ai_observation_lub(T, I, U),
23423 final_answer_pattern(C, U),
23424 ( J=suspension(_, active, _, _, _)
23425 -> setarg(2, J, inactive),
23426 final_answer_pattern___2__9__1__11(B,
23427 C,
23428 D,
23429 E,
23430 F,
23431 G,
23432 H,
23433 I,
23434 J)
23435 ; true
23436 )
23437 ; final_answer_pattern___2__9__1__11(B,
23438 C,
23439 D,
23440 E,
23441 F,
23442 G,
23443 H,
23444 I,
23445 J)
23446 ).
23447final_answer_pattern___2__9(A, B, C) :-
23448 final_answer_pattern___2__10(A, B, C).
23449final_answer_pattern___2__10(A, _, B) :-
23450 arg(2, B, C),
23451 setarg(2, B, active),
23452 ( C==not_stored_yet
23453 -> nb_getval('$chr_store_multi_hash_chr_translate____final_answer_pattern___2-1',
23454 D),
23455 insert_ht(D, A, B)
23456 ; true
23457 ).
23458abstract_constraints(A) :-
23459 nb_getval('$chr_store_global_ground_chr_translate____abstract_constraints___1',
23460 B),
23461 ( member(C, B),
23462 C=suspension(_, active, _, _),
23463 !
23464 ; !,
23465 abstract_constraints___1__0__0__2(B, A)
23466 ).
23467abstract_constraints___1__0__0__2([], A) :-
23468 abstract_constraints___1__1(A).
23469abstract_constraints___1__0__0__2([A|B], C) :-
23470 ( A=suspension(_, active, _, _)
23471 -> setarg(2, A, removed),
23472 arg(3, A, D),
23473 ( var(D)
23474 -> nb_getval('$chr_store_global_ground_chr_translate____abstract_constraints___1',
23475 E),
23476 E=[_|F],
23477 b_setval('$chr_store_global_ground_chr_translate____abstract_constraints___1',
23478 F),
23479 ( F=[G|_]
23480 -> setarg(3, G, _)
23481 ; true
23482 )
23483 ; D=[_, _|F],
23484 setarg(2, D, F),
23485 ( F=[G|_]
23486 -> setarg(3, G, D)
23487 ; true
23488 )
23489 ),
23490 abstract_constraints___1__0__0__2(B, C)
23491 ; abstract_constraints___1__0__0__2(B, C)
23492 ).
23493abstract_constraints(A) :-
23494 abstract_constraints___1__1(A).
23495abstract_constraints___1__1(A) :-
23496 B=suspension(C, active, _, A),
23497 'chr gen_id'(C),
23498 nb_getval('$chr_store_global_ground_chr_translate____abstract_constraints___1',
23499 D),
23500 E=[B|D],
23501 b_setval('$chr_store_global_ground_chr_translate____abstract_constraints___1',
23502 E),
23503 ( D=[F|_]
23504 -> setarg(3, F, E)
23505 ; true
23506 ).
23507depends_on(A, B) :-
23508 depends_on___2__0(A, B, _).
23509depends_on___2__0(A, B, C) :-
23510 nb_getval('$chr_store_multi_hash_chr_translate____final_answer_pattern___2-1',
23511 D),
23512 lookup_ht(D, B, E),
23513 !,
23514 C=suspension(F, not_stored_yet, t, A, B),
23515 'chr gen_id'(F),
23516 depends_on___2__0__0__1(E, A, B, C).
23517depends_on___2__0__0__1([], A, B, C) :-
23518 depends_on___2__1(A, B, C).
23519depends_on___2__0__0__1([A|B], C, D, E) :-
23520 ( A=suspension(_, active, _, F, G),
23521 F==D,
23522 H=t(305, E, A),
23523 '$novel_production'(E, H),
23524 '$novel_production'(A, H)
23525 -> '$extend_history'(E, H),
23526 arg(2, E, I),
23527 setarg(2, E, active),
23528 ( I==not_stored_yet
23529 -> nb_getval('$chr_store_multi_hash_chr_translate____depends_on___2-1',
23530 J),
23531 insert_ht(J, C, E),
23532 nb_getval('$chr_store_multi_hash_chr_translate____depends_on___2-2',
23533 K),
23534 insert_ht(K, D, E)
23535 ; true
23536 ),
23537 final_answer_pattern(C, G),
23538 ( E=suspension(_, active, _, _, _)
23539 -> setarg(2, E, inactive),
23540 depends_on___2__0__0__1(B, C, D, E)
23541 ; true
23542 )
23543 ; depends_on___2__0__0__1(B, C, D, E)
23544 ).
23545depends_on___2__0(A, B, C) :-
23546 C=suspension(D, not_stored_yet, t, A, B),
23547 'chr gen_id'(D),
23548 depends_on___2__1(A, B, C).
23549depends_on___2__1(A, B, C) :-
23550 arg(2, C, D),
23551 setarg(2, C, active),
23552 ( D==not_stored_yet
23553 -> nb_getval('$chr_store_multi_hash_chr_translate____depends_on___2-1',
23554 E),
23555 insert_ht(E, A, C),
23556 nb_getval('$chr_store_multi_hash_chr_translate____depends_on___2-2',
23557 F),
23558 insert_ht(F, B, C)
23559 ; true
23560 ).
23561depends_on_ap(A, B, C, D) :-
23562 depends_on_ap___4__0(A, B, C, D, _).
23563depends_on_ap___4__0(A, B, C, D, E) :-
23564 nb_getval('$chr_store_multi_hash_chr_translate____final_answer_pattern___2-1',
23565 F),
23566 lookup_ht(F, C, G),
23567 !,
23568 E=suspension(H, not_stored_yet, t, A, B, C, D),
23569 'chr gen_id'(H),
23570 depends_on_ap___4__0__0__1(G,
23571 A,
23572 B,
23573 C,
23574 D,
23575 E).
23576depends_on_ap___4__0__0__1([], A, B, C, D, E) :-
23577 depends_on_ap___4__1(A, B, C, D, E).
23578depends_on_ap___4__0__0__1([A|B], C, D, E, F, G) :-
23579 ( A=suspension(_, active, _, H, I),
23580 H==E,
23581 J=t(325, G, A),
23582 '$novel_production'(G, J),
23583 '$novel_production'(A, J)
23584 -> '$extend_history'(G, J),
23585 arg(2, G, K),
23586 setarg(2, G, active),
23587 ( K==not_stored_yet
23588 -> nb_getval('$chr_store_multi_hash_chr_translate____depends_on_ap___4-2',
23589 L),
23590 insert_ht(L, D, G),
23591 nb_getval('$chr_store_multi_hash_chr_translate____depends_on_ap___4-3',
23592 M),
23593 insert_ht(M, E, G)
23594 ; true
23595 ),
23596 final_answer_pattern(C, I),
23597 ( G=suspension(_, active, _, _, _, _, _)
23598 -> setarg(2, G, inactive),
23599 depends_on_ap___4__0__0__1(B,
23600 C,
23601 D,
23602 E,
23603 F,
23604 G)
23605 ; true
23606 )
23607 ; depends_on_ap___4__0__0__1(B,
23608 C,
23609 D,
23610 E,
23611 F,
23612 G)
23613 ).
23614depends_on_ap___4__0(A, B, C, D, E) :-
23615 E=suspension(F, not_stored_yet, t, A, B, C, D),
23616 'chr gen_id'(F),
23617 depends_on_ap___4__1(A, B, C, D, E).
23618depends_on_ap___4__1(A, B, C, D, E) :-
23619 nb_getval('$chr_store_multi_hash_chr_translate____final_answer_pattern___2-1',
23620 F),
23621 lookup_ht(F, B, G),
23622 !,
23623 depends_on_ap___4__1__0__2(G,
23624 A,
23625 B,
23626 C,
23627 D,
23628 E).
23629depends_on_ap___4__1__0__2([], A, B, C, D, E) :-
23630 depends_on_ap___4__2(A, B, C, D, E).
23631depends_on_ap___4__1__0__2([A|B], C, D, E, F, G) :-
23632 ( A=suspension(_, active, _, H, I),
23633 H==D,
23634 nb_getval('$chr_store_multi_hash_chr_translate____final_answer_pattern___2-1',
23635 J),
23636 lookup_ht(J, E, K)
23637 -> depends_on_ap___4__1__1__2(K,
23638 I,
23639 A,
23640 B,
23641 C,
23642 D,
23643 E,
23644 F,
23645 G)
23646 ; depends_on_ap___4__1__0__2(B,
23647 C,
23648 D,
23649 E,
23650 F,
23651 G)
23652 ).
23653depends_on_ap___4__1__1__2([], _, _, A, B, C, D, E, F) :-
23654 depends_on_ap___4__1__0__2(A,
23655 B,
23656 C,
23657 D,
23658 E,
23659 F).
23660depends_on_ap___4__1__1__2([A|B], C, D, E, F, G, H, I, J) :-
23661 ( A=suspension(_, active, _, K, L),
23662 A\==D,
23663 K==H,
23664 M=t(326, J, D, A),
23665 '$novel_production'(J, M),
23666 '$novel_production'(D, M),
23667 '$novel_production'(A, M)
23668 -> '$extend_history'(J, M),
23669 arg(2, J, N),
23670 setarg(2, J, active),
23671 ( N==not_stored_yet
23672 -> nb_getval('$chr_store_multi_hash_chr_translate____depends_on_ap___4-2',
23673 O),
23674 insert_ht(O, G, J),
23675 nb_getval('$chr_store_multi_hash_chr_translate____depends_on_ap___4-3',
23676 P),
23677 insert_ht(P, H, J)
23678 ; true
23679 ),
23680 F=odom(occ(Q, R), _),
23681 ( ai_observation_is_observed(C, Q)
23682 -> ai_observed_internal(Q, R)
23683 ; ai_not_observed_internal(Q, R)
23684 ),
23685 ( I==yes
23686 -> C=odom([], S),
23687 ord_del_element(S, Q, T),
23688 U=odom([], T)
23689 ; U=C
23690 ),
23691 ai_observation_lub(U, L, V),
23692 final_answer_pattern(F, V),
23693 ( J=suspension(_, active, _, _, _, _, _)
23694 -> setarg(2, J, inactive),
23695 depends_on_ap___4__1__1__2(B,
23696 C,
23697 D,
23698 E,
23699 F,
23700 G,
23701 H,
23702 I,
23703 J)
23704 ; true
23705 )
23706 ; depends_on_ap___4__1__1__2(B,
23707 C,
23708 D,
23709 E,
23710 F,
23711 G,
23712 H,
23713 I,
23714 J)
23715 ).
23716depends_on_ap___4__1(A, B, C, D, E) :-
23717 depends_on_ap___4__2(A, B, C, D, E).
23718depends_on_ap___4__2(_, A, B, _, C) :-
23719 arg(2, C, D),
23720 setarg(2, C, active),
23721 ( D==not_stored_yet
23722 -> nb_getval('$chr_store_multi_hash_chr_translate____depends_on_ap___4-2',
23723 E),
23724 insert_ht(E, A, C),
23725 nb_getval('$chr_store_multi_hash_chr_translate____depends_on_ap___4-3',
23726 F),
23727 insert_ht(F, B, C)
23728 ; true
23729 ).
23730depends_on_goal(A, B) :-
23731 depends_on_goal___2__0(A, B, _).
23732depends_on_goal___2__0(A, B, C) :-
23733 nb_getval('$chr_store_multi_hash_chr_translate____depends_on___2-1', D),
23734 lookup_ht(D, A, E),
23735 !,
23736 depends_on_goal___2__0__0__1(E, A, B, C).
23737depends_on_goal___2__0__0__1([], A, B, C) :-
23738 depends_on_goal___2__1(A, B, C).
23739depends_on_goal___2__0__0__1([A|B], C, D, E) :-
23740 ( A=suspension(_, active, _, F, G),
23741 F==C,
23742 ground(D),
23743 nb_getval('$chr_store_multi_hash_chr_translate____final_answer_pattern___2-1',
23744 H),
23745 lookup_ht(H, D, I),
23746 member(J, I),
23747 J=suspension(_, active, _, _, _)
23748 -> setarg(2, A, removed),
23749 ( nb_getval('$chr_store_multi_hash_chr_translate____depends_on___2-1',
23750 K),
23751 delete_ht(K, C, A)
23752 ),
23753 nb_getval('$chr_store_multi_hash_chr_translate____depends_on___2-2',
23754 L),
23755 delete_ht(L, G, A),
23756 depends_on_goal___2__0__0__1(B, C, D, E)
23757 ; depends_on_goal___2__0__0__1(B, C, D, E)
23758 ).
23759depends_on_goal___2__0(A, B, C) :-
23760 depends_on_goal___2__1(A, B, C).
23761depends_on_goal___2__1(A, B, C) :-
23762 nb_getval('$chr_store_multi_hash_chr_translate____final_answer_pattern___2-1',
23763 D),
23764 lookup_ht(D, B, E),
23765 !,
23766 C=suspension(F, not_stored_yet, t, A, B),
23767 'chr gen_id'(F),
23768 depends_on_goal___2__1__0__2(E, A, B, C).
23769depends_on_goal___2__1__0__2([], A, B, C) :-
23770 depends_on_goal___2__2(A, B, C).
23771depends_on_goal___2__1__0__2([A|B], C, D, E) :-
23772 ( A=suspension(_, active, _, F, G),
23773 F==D,
23774 H=t(310, E, A),
23775 '$novel_production'(E, H),
23776 '$novel_production'(A, H)
23777 -> '$extend_history'(E, H),
23778 arg(2, E, I),
23779 setarg(2, E, active),
23780 ( I==not_stored_yet
23781 -> nb_getval('$chr_store_multi_hash_chr_translate____depends_on_goal___2-2',
23782 J),
23783 insert_ht(J, D, E)
23784 ; true
23785 ),
23786 C=odom([_|K], _),
23787 G=odom([], L),
23788 M=odom(K, L),
23789 call_pattern(M),
23790 depends_on(C, M),
23791 ( E=suspension(_, active, _, _, _)
23792 -> setarg(2, E, inactive),
23793 depends_on_goal___2__1__0__2(B, C, D, E)
23794 ; true
23795 )
23796 ; depends_on_goal___2__1__0__2(B, C, D, E)
23797 ).
23798depends_on_goal___2__1(A, B, C) :-
23799 C=suspension(D, not_stored_yet, t, A, B),
23800 'chr gen_id'(D),
23801 depends_on_goal___2__2(A, B, C).
23802depends_on_goal___2__2(_, A, B) :-
23803 arg(2, B, C),
23804 setarg(2, B, active),
23805 ( C==not_stored_yet
23806 -> nb_getval('$chr_store_multi_hash_chr_translate____depends_on_goal___2-2',
23807 D),
23808 insert_ht(D, A, B)
23809 ; true
23810 ).
23811ai_observed_internal(A, B) :-
23812 nb_getval('$chr_store_multi_hash_chr_translate____ai_not_observed_internal___2-12',
23813 C),
23814 lookup_ht(C, k(A, B), D),
23815 !,
23816 ai_observed_internal___2__0__0__1(D, A, B).
23817ai_observed_internal___2__0__0__1([], A, B) :-
23818 ai_observed_internal___2__1(A, B).
23819ai_observed_internal___2__0__0__1([A|B], C, D) :-
23820 ( A=suspension(_, active, _, E, F),
23821 E==C,
23822 F==D
23823 -> setarg(2, A, removed),
23824 ( arg(3, A, G),
23825 ( var(G)
23826 -> nb_getval('$chr_store_global_ground_chr_translate____ai_not_observed_internal___2',
23827 H),
23828 H=[_|I],
23829 b_setval('$chr_store_global_ground_chr_translate____ai_not_observed_internal___2',
23830 I),
23831 ( I=[J|_]
23832 -> setarg(3, J, _)
23833 ; true
23834 )
23835 ; G=[_, _|I],
23836 setarg(2, G, I),
23837 ( I=[J|_]
23838 -> setarg(3, J, G)
23839 ; true
23840 )
23841 )
23842 ),
23843 nb_getval('$chr_store_multi_hash_chr_translate____ai_not_observed_internal___2-12',
23844 K),
23845 delete_ht(K, k(C, D), A),
23846 ai_observed_internal___2__0__0__1(B, C, D)
23847 ; ai_observed_internal___2__0__0__1(B, C, D)
23848 ).
23849ai_observed_internal(A, B) :-
23850 ai_observed_internal___2__1(A, B).
23851ai_observed_internal___2__1(A, B) :-
23852 nb_getval('$chr_store_multi_hash_chr_translate____ai_observed_internal___2-12',
23853 C),
23854 lookup_ht(C, k(A, B), D),
23855 member(E, D),
23856 E=suspension(_, active, _, _, _),
23857 !.
23858ai_observed_internal___2__1(_, _) :-
23859 nb_getval('$chr_store_global_ground_chr_translate____ai_observation_gather_results___0',
23860 A),
23861 member(B, A),
23862 B=suspension(_, active, _),
23863 !.
23864ai_observed_internal___2__1(A, B) :-
23865 C=suspension(D, active, _, A, B),
23866 'chr gen_id'(D),
23867 nb_getval('$chr_store_global_ground_chr_translate____ai_observed_internal___2',
23868 E),
23869 F=[C|E],
23870 b_setval('$chr_store_global_ground_chr_translate____ai_observed_internal___2',
23871 F),
23872 ( E=[G|_]
23873 -> setarg(3, G, F)
23874 ; true
23875 ),
23876 nb_getval('$chr_store_multi_hash_chr_translate____ai_observed_internal___2-12',
23877 H),
23878 insert_ht(H, k(A, B), C).
23879ai_not_observed_internal(A, B) :-
23880 nb_getval('$chr_store_multi_hash_chr_translate____ai_observed_internal___2-12',
23881 C),
23882 lookup_ht(C, k(A, B), D),
23883 member(E, D),
23884 E=suspension(_, active, _, _, _),
23885 !.
23886ai_not_observed_internal(A, B) :-
23887 nb_getval('$chr_store_multi_hash_chr_translate____ai_not_observed_internal___2-12',
23888 C),
23889 lookup_ht(C, k(A, B), D),
23890 member(E, D),
23891 E=suspension(_, active, _, _, _),
23892 !.
23893ai_not_observed_internal(A, B) :-
23894 nb_getval('$chr_store_global_ground_chr_translate____ai_observation_gather_results___0',
23895 C),
23896 member(D, C),
23897 D=suspension(_, active, _),
23898 !,
23899 ai_not_observed(A, B).
23900ai_not_observed_internal(A, B) :-
23901 C=suspension(D, active, _, A, B),
23902 'chr gen_id'(D),
23903 nb_getval('$chr_store_global_ground_chr_translate____ai_not_observed_internal___2',
23904 E),
23905 F=[C|E],
23906 b_setval('$chr_store_global_ground_chr_translate____ai_not_observed_internal___2',
23907 F),
23908 ( E=[G|_]
23909 -> setarg(3, G, F)
23910 ; true
23911 ),
23912 nb_getval('$chr_store_multi_hash_chr_translate____ai_not_observed_internal___2-12',
23913 H),
23914 insert_ht(H, k(A, B), C).
23915ai_not_observed(A, B) :-
23916 ai_not_observed___2__0(A, B, _).
23917ai_not_observed___2__0(A, B, C) :-
23918 nb_getval('$chr_store_multi_hash_chr_translate____stored___3-123', D),
23919 lookup_ht(D, k(A, B, yes), E),
23920 !,
23921 C=suspension(F, not_stored_yet, A, B),
23922 'chr gen_id'(F),
23923 ai_not_observed___2__0__0__1(E, A, B, C).
23924ai_not_observed___2__0__0__1([], A, B, C) :-
23925 ai_not_observed___2__1(A, B, C).
23926ai_not_observed___2__0__0__1([A|B], C, D, E) :-
23927 ( A=suspension(_, active, F, G, H),
23928 F==C,
23929 G==D,
23930 H=yes,
23931 ( ground(C),
23932 nb_getval('$chr_store_multi_hash_chr_translate____stored_complete___3-1',
23933 I),
23934 lookup_ht(I, C, J)
23935 ),
23936 member(K, J),
23937 K=suspension(_, active, _, _, L, M),
23938 D<L
23939 -> ( setarg(2, A, removed),
23940 nb_getval('$chr_store_multi_hash_chr_translate____stored___3-13',
23941 N),
23942 delete_ht(N, k(C, yes), A),
23943 nb_getval('$chr_store_multi_hash_chr_translate____stored___3-123',
23944 O),
23945 delete_ht(O, k(C, D, yes), A)
23946 ),
23947 setarg(2, K, removed),
23948 ( nb_getval('$chr_store_multi_hash_chr_translate____stored_complete___3-13',
23949 P),
23950 delete_ht(P, k(C, M), K)
23951 ),
23952 nb_getval('$chr_store_multi_hash_chr_translate____stored_complete___3-1',
23953 Q),
23954 delete_ht(Q, C, K),
23955 arg(2, E, R),
23956 setarg(2, E, active),
23957 ( R==not_stored_yet
23958 -> nb_getval('$chr_store_multi_hash_chr_translate____ai_not_observed___2-12',
23959 S),
23960 insert_ht(S, k(C, D), E)
23961 ; true
23962 ),
23963 T is M-1,
23964 stored(C, D, maybe),
23965 stored_complete(C, L, T),
23966 ( E=suspension(_, active, _, _)
23967 -> setarg(2, E, inactive),
23968 ai_not_observed___2__0__0__1(B, C, D, E)
23969 ; true
23970 )
23971 ; ai_not_observed___2__0__0__1(B, C, D, E)
23972 ).
23973ai_not_observed___2__0(A, B, C) :-
23974 C=suspension(D, not_stored_yet, A, B),
23975 'chr gen_id'(D),
23976 ai_not_observed___2__1(A, B, C).
23977ai_not_observed___2__1(A, B, C) :-
23978 arg(2, C, D),
23979 setarg(2, C, active),
23980 ( D==not_stored_yet
23981 -> nb_getval('$chr_store_multi_hash_chr_translate____ai_not_observed___2-12',
23982 E),
23983 insert_ht(E, k(A, B), C)
23984 ; true
23985 ).
23986ai_is_observed(A, B) :-
23987 nb_getval('$chr_store_multi_hash_chr_translate____ai_not_observed___2-12',
23988 C),
23989 lookup_ht(C, k(A, B), D),
23990 member(E, D),
23991 E=suspension(_, active, _, _),
23992 !,
23993 fail.
23994ai_is_observed(_, _).
23995depends_on_as(A, B, C) :-
23996 depends_on_as___3__0(A, B, C, _).
23997depends_on_as___3__0(A, B, C, D) :-
23998 nb_getval('$chr_store_multi_hash_chr_translate____final_answer_pattern___2-1',
23999 E),
24000 lookup_ht(E, B, F),
24001 !,
24002 D=suspension(G, not_stored_yet, t, A, B, C),
24003 'chr gen_id'(G),
24004 depends_on_as___3__0__0__1(F, A, B, C, D).
24005depends_on_as___3__0__0__1([], A, B, C, D) :-
24006 depends_on_as___3__1(A, B, C, D).
24007depends_on_as___3__0__0__1([A|B], C, D, E, F) :-
24008 ( A=suspension(_, active, _, G, H),
24009 G==D,
24010 nb_getval('$chr_store_multi_hash_chr_translate____final_answer_pattern___2-1',
24011 I),
24012 lookup_ht(I, E, J)
24013 -> depends_on_as___3__0__1__1(J,
24014 H,
24015 A,
24016 B,
24017 C,
24018 D,
24019 E,
24020 F)
24021 ; depends_on_as___3__0__0__1(B, C, D, E, F)
24022 ).
24023depends_on_as___3__0__1__1([], _, _, A, B, C, D, E) :-
24024 depends_on_as___3__0__0__1(A, B, C, D, E).
24025depends_on_as___3__0__1__1([A|B], C, D, E, F, G, H, I) :-
24026 ( A=suspension(_, active, _, J, K),
24027 A\==D,
24028 J==H,
24029 L=t(317, I, D, A),
24030 '$novel_production'(I, L),
24031 '$novel_production'(D, L),
24032 '$novel_production'(A, L)
24033 -> '$extend_history'(I, L),
24034 arg(2, I, M),
24035 setarg(2, I, active),
24036 ( M==not_stored_yet
24037 -> nb_getval('$chr_store_multi_hash_chr_translate____depends_on_as___3-3',
24038 N),
24039 insert_ht(N, H, I),
24040 nb_getval('$chr_store_multi_hash_chr_translate____depends_on_as___3-2',
24041 O),
24042 insert_ht(O, G, I)
24043 ; true
24044 ),
24045 ai_observation_lub(C, K, P),
24046 final_answer_pattern(F, P),
24047 ( I=suspension(_, active, _, _, _, _)
24048 -> setarg(2, I, inactive),
24049 depends_on_as___3__0__1__1(B,
24050 C,
24051 D,
24052 E,
24053 F,
24054 G,
24055 H,
24056 I)
24057 ; true
24058 )
24059 ; depends_on_as___3__0__1__1(B,
24060 C,
24061 D,
24062 E,
24063 F,
24064 G,
24065 H,
24066 I)
24067 ).
24068depends_on_as___3__0(A, B, C, D) :-
24069 D=suspension(E, not_stored_yet, t, A, B, C),
24070 'chr gen_id'(E),
24071 depends_on_as___3__1(A, B, C, D).
24072depends_on_as___3__1(_, A, B, C) :-
24073 arg(2, C, D),
24074 setarg(2, C, active),
24075 ( D==not_stored_yet
24076 -> nb_getval('$chr_store_multi_hash_chr_translate____depends_on_as___3-3',
24077 E),
24078 insert_ht(E, B, C),
24079 nb_getval('$chr_store_multi_hash_chr_translate____depends_on_as___3-2',
24080 F),
24081 insert_ht(F, A, C)
24082 ; true
24083 ).
24084ai_observation_gather_results :-
24085 ai_observation_gather_results___0__0(_).
24086ai_observation_gather_results___0__0(A) :-
24087 nb_getval('$chr_store_global_ground_chr_translate____ai_observed_internal___2',
24088 B),
24089 !,
24090 ai_observation_gather_results___0__0__0__1(B, A).
24091ai_observation_gather_results___0__0__0__1([], A) :-
24092 ai_observation_gather_results___0__1(A).
24093ai_observation_gather_results___0__0__0__1([A|B], C) :-
24094 ( A=suspension(_, active, _, D, E)
24095 -> setarg(2, A, removed),
24096 ( arg(3, A, F),
24097 ( var(F)
24098 -> nb_getval('$chr_store_global_ground_chr_translate____ai_observed_internal___2',
24099 G),
24100 G=[_|H],
24101 b_setval('$chr_store_global_ground_chr_translate____ai_observed_internal___2',
24102 H),
24103 ( H=[I|_]
24104 -> setarg(3, I, _)
24105 ; true
24106 )
24107 ; F=[_, _|H],
24108 setarg(2, F, H),
24109 ( H=[I|_]
24110 -> setarg(3, I, F)
24111 ; true
24112 )
24113 )
24114 ),
24115 nb_getval('$chr_store_multi_hash_chr_translate____ai_observed_internal___2-12',
24116 J),
24117 delete_ht(J, k(D, E), A),
24118 ai_observation_gather_results___0__0__0__1(B, C)
24119 ; ai_observation_gather_results___0__0__0__1(B, C)
24120 ).
24121ai_observation_gather_results___0__0(A) :-
24122 ai_observation_gather_results___0__1(A).
24123ai_observation_gather_results___0__1(A) :-
24124 nb_getval('$chr_store_global_ground_chr_translate____ai_not_observed_internal___2',
24125 B),
24126 !,
24127 A=suspension(C, not_stored_yet, _),
24128 'chr gen_id'(C),
24129 ai_observation_gather_results___0__1__0__2(B, A).
24130ai_observation_gather_results___0__1__0__2([], A) :-
24131 ai_observation_gather_results___0__2(A).
24132ai_observation_gather_results___0__1__0__2([A|B], C) :-
24133 ( A=suspension(_, active, _, D, E)
24134 -> setarg(2, A, removed),
24135 ( arg(3, A, F),
24136 ( var(F)
24137 -> nb_getval('$chr_store_global_ground_chr_translate____ai_not_observed_internal___2',
24138 G),
24139 G=[_|H],
24140 b_setval('$chr_store_global_ground_chr_translate____ai_not_observed_internal___2',
24141 H),
24142 ( H=[I|_]
24143 -> setarg(3, I, _)
24144 ; true
24145 )
24146 ; F=[_, _|H],
24147 setarg(2, F, H),
24148 ( H=[I|_]
24149 -> setarg(3, I, F)
24150 ; true
24151 )
24152 )
24153 ),
24154 nb_getval('$chr_store_multi_hash_chr_translate____ai_not_observed_internal___2-12',
24155 J),
24156 delete_ht(J, k(D, E), A),
24157 arg(2, C, K),
24158 setarg(2, C, active),
24159 ( K==not_stored_yet
24160 -> nb_getval('$chr_store_global_ground_chr_translate____ai_observation_gather_results___0',
24161 L),
24162 M=[C|L],
24163 b_setval('$chr_store_global_ground_chr_translate____ai_observation_gather_results___0',
24164 M),
24165 ( L=[N|_]
24166 -> setarg(3, N, M)
24167 ; true
24168 )
24169 ; true
24170 ),
24171 ai_not_observed(D, E),
24172 ( C=suspension(_, active, _)
24173 -> setarg(2, C, inactive),
24174 ai_observation_gather_results___0__1__0__2(B, C)
24175 ; true
24176 )
24177 ; ai_observation_gather_results___0__1__0__2(B, C)
24178 ).
24179ai_observation_gather_results___0__1(A) :-
24180 A=suspension(B, not_stored_yet, _),
24181 'chr gen_id'(B),
24182 ai_observation_gather_results___0__2(A).
24183ai_observation_gather_results___0__2(A) :-
24184 ( var(A)
24185 -> true
24186 ; arg(2, A, B),
24187 setarg(2, A, removed),
24188 ( B==not_stored_yet
24189 -> true
24190 ; arg(3, A, C),
24191 ( var(C)
24192 -> nb_getval('$chr_store_global_ground_chr_translate____ai_observation_gather_results___0',
24193 D),
24194 D=[_|E],
24195 b_setval('$chr_store_global_ground_chr_translate____ai_observation_gather_results___0',
24196 E),
24197 ( E=[F|_]
24198 -> setarg(3, F, _)
24199 ; true
24200 )
24201 ; C=[_, _|E],
24202 setarg(2, C, E),
24203 ( E=[F|_]
24204 -> setarg(3, F, C)
24205 ; true
24206 )
24207 )
24208 )
24209 ).
24210ai_observation_memo_simplification_rest_heads(A, B, C) :-
24211 nb_getval('$chr_store_multi_hash_chr_translate____ai_observation_memoed_simplification_rest_heads___3-12',
24212 D),
24213 lookup_ht(D, k(A, B), E),
24214 member(F, E),
24215 F=suspension(_, active, _, _, G),
24216 !,
24217 C=G.
24218ai_observation_memo_simplification_rest_heads(A, B, C) :-
24219 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-12',
24220 D),
24221 lookup_ht(D, k(A, B), E),
24222 member(F, E),
24223 F=suspension(_, active, _, _, _, _, G, H, _),
24224 nb_getval('$chr_store_multi_hash_chr_translate____rule___2-1', I),
24225 lookup_ht(I, G, J),
24226 member(K, J),
24227 K=suspension(_, active, _, _, _, L),
24228 nb_getval('$chr_store_global_ground_chr_translate____abstract_constraints___1',
24229 M),
24230 member(N, M),
24231 N=suspension(_, active, _, O),
24232 !,
24233 L=pragma(rule(P, Q, _, _), ids(R, _), _, _, _),
24234 once(select2(H, _, R, P, _, S)),
24235 ai_observation_abstract_constraints(S, O, T),
24236 ai_observation_abstract_constraints(Q, O, U),
24237 append(T, U, V),
24238 sort(V, C),
24239 ai_observation_memoed_simplification_rest_heads(A, B, C).
24240ai_observation_memo_simplification_rest_heads(_, _, _) :-
24241 fail.
24242ai_observation_memoed_simplification_rest_heads(A, B, C) :-
24243 D=suspension(E, active, A, B, C),
24244 'chr gen_id'(E),
24245 nb_getval('$chr_store_multi_hash_chr_translate____ai_observation_memoed_simplification_rest_heads___3-12',
24246 F),
24247 insert_ht(F, k(A, B), D).
24248ai_observation_memo_propagation_rest_heads(A, B, C) :-
24249 nb_getval('$chr_store_multi_hash_chr_translate____ai_observation_memoed_propagation_rest_heads___3-12',
24250 D),
24251 lookup_ht(D, k(A, B), E),
24252 member(F, E),
24253 F=suspension(_, active, _, _, G),
24254 !,
24255 C=G.
24256ai_observation_memo_propagation_rest_heads(A, B, C) :-
24257 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-12',
24258 D),
24259 lookup_ht(D, k(A, B), E),
24260 member(F, E),
24261 F=suspension(_, active, _, _, _, _, G, H, _),
24262 nb_getval('$chr_store_multi_hash_chr_translate____rule___2-1', I),
24263 lookup_ht(I, G, J),
24264 member(K, J),
24265 K=suspension(_, active, _, _, _, L),
24266 nb_getval('$chr_store_global_ground_chr_translate____abstract_constraints___1',
24267 M),
24268 member(N, M),
24269 N=suspension(_, active, _, O),
24270 !,
24271 L=pragma(rule(P, Q, _, _), ids(_, R), _, _, _),
24272 once(select2(H, _, R, Q, _, S)),
24273 ai_observation_abstract_constraints(S, O, T),
24274 ai_observation_abstract_constraints(P, O, U),
24275 append(T, U, V),
24276 sort(V, C),
24277 ai_observation_memoed_propagation_rest_heads(A, B, C).
24278ai_observation_memo_propagation_rest_heads(_, _, _) :-
24279 fail.
24280ai_observation_memoed_propagation_rest_heads(A, B, C) :-
24281 D=suspension(E, active, A, B, C),
24282 'chr gen_id'(E),
24283 nb_getval('$chr_store_multi_hash_chr_translate____ai_observation_memoed_propagation_rest_heads___3-12',
24284 F),
24285 insert_ht(F, k(A, B), D).
24286ai_observation_memoed_abstract_goal(A, B) :-
24287 C=suspension(D, active, A, B),
24288 'chr gen_id'(D),
24289 nb_getval('$chr_store_multi_hash_chr_translate____ai_observation_memoed_abstract_goal___2-1',
24290 E),
24291 insert_ht(E, A, C).
24292ai_observation_memo_abstract_goal(A, B) :-
24293 nb_getval('$chr_store_multi_hash_chr_translate____ai_observation_memoed_abstract_goal___2-1',
24294 C),
24295 lookup_ht(C, A, D),
24296 member(E, D),
24297 E=suspension(_, active, _, F),
24298 !,
24299 B=F.
24300ai_observation_memo_abstract_goal(A, B) :-
24301 nb_getval('$chr_store_multi_hash_chr_translate____rule___2-1', C),
24302 lookup_ht(C, A, D),
24303 member(E, D),
24304 E=suspension(_, active, _, _, _, F),
24305 nb_getval('$chr_store_global_ground_chr_translate____abstract_constraints___1',
24306 G),
24307 member(H, G),
24308 H=suspension(_, active, _, I),
24309 !,
24310 F=pragma(rule(J, K, L, M), _, _, _, _),
24311 ai_observation_abstract_goal_(J,
24312 K,
24313 L,
24314 M,
24315 I,
24316 N),
24317 B=N,
24318 ai_observation_memoed_abstract_goal(A, N).
24319ai_observation_memo_abstract_goal(A, B) :-
24320 C=suspension(D, active, _, A, B),
24321 'chr gen_id'(D),
24322 nb_getval('$chr_store_global_ground_chr_translate____ai_observation_memo_abstract_goal___2',
24323 E),
24324 F=[C|E],
24325 b_setval('$chr_store_global_ground_chr_translate____ai_observation_memo_abstract_goal___2',
24326 F),
24327 ( E=[G|_]
24328 -> setarg(3, G, F)
24329 ; true
24330 ).
24331partial_wake_analysis :-
24332 partial_wake_analysis___0__0(_).
24333partial_wake_analysis___0__0(A) :-
24334 nb_getval('$chr_store_global_ground_chr_translate____occurrence___5',
24335 B),
24336 !,
24337 A=suspension(C, not_stored_yet, t, _),
24338 'chr gen_id'(C),
24339 partial_wake_analysis___0__0__0__1(B, A).
24340partial_wake_analysis___0__0__0__1([], A) :-
24341 partial_wake_analysis___0__1(A).
24342partial_wake_analysis___0__0__0__1([A|B], C) :-
24343 ( A=suspension(_, active, _, _, D, _, E, F, G),
24344 nb_getval('$chr_store_multi_hash_chr_translate____constraint_mode___2-1',
24345 H),
24346 lookup_ht(H, D, I)
24347 -> partial_wake_analysis___0__0__1__1(I,
24348 D,
24349 E,
24350 F,
24351 G,
24352 A,
24353 B,
24354 C)
24355 ; partial_wake_analysis___0__0__0__1(B, C)
24356 ).
24357partial_wake_analysis___0__0__1__1([], _, _, _, _, _, A, B) :-
24358 partial_wake_analysis___0__0__0__1(A, B).
24359partial_wake_analysis___0__0__1__1([A|B], C, D, E, F, G, H, I) :-
24360 ( A=suspension(_, active, _, _, J, K),
24361 J==C,
24362 nb_getval('$chr_store_multi_hash_chr_translate____rule___2-1', L),
24363 lookup_ht(L, D, M)
24364 -> partial_wake_analysis___0__0__2__1(M,
24365 K,
24366 A,
24367 B,
24368 C,
24369 D,
24370 E,
24371 F,
24372 G,
24373 H,
24374 I)
24375 ; partial_wake_analysis___0__0__1__1(B,
24376 C,
24377 D,
24378 E,
24379 F,
24380 G,
24381 H,
24382 I)
24383 ).
24384partial_wake_analysis___0__0__2__1([], _, _, A, B, C, D, E, F, G, H) :-
24385 partial_wake_analysis___0__0__1__1(A,
24386 B,
24387 C,
24388 D,
24389 E,
24390 F,
24391 G,
24392 H).
24393partial_wake_analysis___0__0__2__1([A|B], C, D, E, F, G, H, I, J, K, L) :-
24394 ( A=suspension(_, active, _, _, M, N),
24395 M==G,
24396 O=t(330, L, J, A, D),
24397 '$novel_production'(L, O),
24398 '$novel_production'(J, O),
24399 '$novel_production'(A, O),
24400 '$novel_production'(D, O)
24401 -> '$extend_history'(L, O),
24402 arg(2, L, P),
24403 setarg(2, L, active),
24404 ( P==not_stored_yet
24405 -> nb_getval('$chr_store_global_ground_chr_translate____partial_wake_analysis___0',
24406 Q),
24407 R=[L|Q],
24408 b_setval('$chr_store_global_ground_chr_translate____partial_wake_analysis___0',
24409 R),
24410 ( Q=[S|_]
24411 -> setarg(4, S, R)
24412 ; true
24413 )
24414 ; true
24415 ),
24416 N=pragma(rule(T, U, V, _), _, _, _, _),
24417 ( is_passive(G, H)
24418 -> true
24419 ; I==simplification
24420 -> select(W, T, _),
24421 W=..[_|X],
24422 term_variables(V, Y),
24423 partial_wake_args(X, C, Y, F)
24424 ; select(W, U, _),
24425 W=..[_|X],
24426 term_variables(V, Y),
24427 partial_wake_args(X, C, Y, F)
24428 ),
24429 ( L=suspension(_, active, _, _)
24430 -> setarg(2, L, inactive),
24431 partial_wake_analysis___0__0__2__1(B,
24432 C,
24433 D,
24434 E,
24435 F,
24436 G,
24437 H,
24438 I,
24439 J,
24440 K,
24441 L)
24442 ; true
24443 )
24444 ; partial_wake_analysis___0__0__2__1(B,
24445 C,
24446 D,
24447 E,
24448 F,
24449 G,
24450 H,
24451 I,
24452 J,
24453 K,
24454 L)
24455 ).
24456partial_wake_analysis___0__0(A) :-
24457 A=suspension(B, not_stored_yet, t, _),
24458 'chr gen_id'(B),
24459 partial_wake_analysis___0__1(A).
24460partial_wake_analysis___0__1(A) :-
24461 arg(2, A, B),
24462 setarg(2, A, active),
24463 ( B==not_stored_yet
24464 -> nb_getval('$chr_store_global_ground_chr_translate____partial_wake_analysis___0',
24465 C),
24466 D=[A|C],
24467 b_setval('$chr_store_global_ground_chr_translate____partial_wake_analysis___0',
24468 D),
24469 ( C=[E|_]
24470 -> setarg(4, E, D)
24471 ; true
24472 )
24473 ; true
24474 ).
24475no_partial_wake(A) :-
24476 nb_getval('$chr_store_multi_hash_chr_translate____no_partial_wake___1-1',
24477 B),
24478 lookup_ht(B, A, C),
24479 member(D, C),
24480 D=suspension(_, active, _),
24481 !.
24482no_partial_wake(A) :-
24483 B=suspension(C, active, A),
24484 'chr gen_id'(C),
24485 nb_getval('$chr_store_multi_hash_chr_translate____no_partial_wake___1-1',
24486 D),
24487 insert_ht(D, A, B).
24488wakes_partially(A) :-
24489 nb_getval('$chr_store_multi_hash_chr_translate____no_partial_wake___1-1',
24490 B),
24491 lookup_ht(B, A, C),
24492 member(D, C),
24493 D=suspension(_, active, _),
24494 !,
24495 fail.
24496wakes_partially(_).
24497phase_end(A) :-
24498 phase_end___1__0(A, _).
24499phase_end___1__0(A, B) :-
24500 nb_getval('$chr_store_multi_hash_chr_translate____delay_phase_end___2-1',
24501 C),
24502 lookup_ht(C, A, D),
24503 !,
24504 B=suspension(E, not_stored_yet, A),
24505 'chr gen_id'(E),
24506 phase_end___1__0__0__1(D, A, B).
24507phase_end___1__0__0__1([], A, B) :-
24508 phase_end___1__1(A, B).
24509phase_end___1__0__0__1([A|B], C, D) :-
24510 ( A=suspension(_, active, E, F),
24511 E==C
24512 -> setarg(2, A, removed),
24513 nb_getval('$chr_store_multi_hash_chr_translate____delay_phase_end___2-1',
24514 G),
24515 delete_ht(G, C, A),
24516 arg(2, D, H),
24517 setarg(2, D, active),
24518 ( H==not_stored_yet
24519 -> nb_getval('$chr_store_multi_hash_chr_translate____phase_end___1-1',
24520 I),
24521 insert_ht(I, C, D)
24522 ; true
24523 ),
24524 call(F),
24525 ( D=suspension(_, active, _)
24526 -> setarg(2, D, inactive),
24527 phase_end___1__0__0__1(B, C, D)
24528 ; true
24529 )
24530 ; phase_end___1__0__0__1(B, C, D)
24531 ).
24532phase_end___1__0(A, B) :-
24533 B=suspension(C, not_stored_yet, A),
24534 'chr gen_id'(C),
24535 phase_end___1__1(A, B).
24536phase_end___1__1(A, B) :-
24537 arg(2, B, C),
24538 setarg(2, B, active),
24539 ( C==not_stored_yet
24540 -> nb_getval('$chr_store_multi_hash_chr_translate____phase_end___1-1',
24541 D),
24542 insert_ht(D, A, B)
24543 ; true
24544 ).
24545delay_phase_end(A, B) :-
24546 nb_getval('$chr_store_multi_hash_chr_translate____phase_end___1-1', C),
24547 lookup_ht(C, A, D),
24548 member(E, D),
24549 E=suspension(_, active, _),
24550 !,
24551 call(B).
24552delay_phase_end(A, B) :-
24553 C=suspension(D, active, A, B),
24554 'chr gen_id'(D),
24555 nb_getval('$chr_store_multi_hash_chr_translate____delay_phase_end___2-1',
24556 E),
24557 insert_ht(E, A, C).
24558does_use_history(A, B) :-
24559 nb_getval('$chr_store_multi_hash_chr_translate____does_use_history___2-12',
24560 C),
24561 lookup_ht(C, k(A, B), D),
24562 member(E, D),
24563 E=suspension(_, active, _, _),
24564 !.
24565does_use_history(A, B) :-
24566 C=suspension(D, active, A, B),
24567 'chr gen_id'(D),
24568 nb_getval('$chr_store_multi_hash_chr_translate____does_use_history___2-1',
24569 E),
24570 insert_ht(E, A, C),
24571 nb_getval('$chr_store_multi_hash_chr_translate____does_use_history___2-12',
24572 F),
24573 insert_ht(F, k(A, B), C).
24574uses_history(A) :-
24575 nb_getval('$chr_store_multi_hash_chr_translate____does_use_history___2-1',
24576 B),
24577 lookup_ht(B, A, C),
24578 member(D, C),
24579 D=suspension(_, active, _, _),
24580 !.
24581uses_history(_) :-
24582 fail.
24583novel_production_call(A, B, C, D) :-
24584 nb_getval('$chr_store_multi_hash_chr_translate____does_use_history___2-12',
24585 E),
24586 lookup_ht(E, k(A, B), F),
24587 member(G, F),
24588 G=suspension(_, active, _, _),
24589 !,
24590 D=C.
24591novel_production_call(_, _, _, true).
24592does_use_field(A, B) :-
24593 nb_getval('$chr_store_multi_hash_chr_translate____does_use_field___2-12',
24594 C),
24595 lookup_ht(C, k(A, B), D),
24596 member(E, D),
24597 E=suspension(_, active, _, _),
24598 !.
24599does_use_field(A, B) :-
24600 C=suspension(D, active, A, B),
24601 'chr gen_id'(D),
24602 nb_getval('$chr_store_multi_hash_chr_translate____does_use_field___2-12',
24603 E),
24604 insert_ht(E, k(A, B), C).
24605uses_field(A, B) :-
24606 nb_getval('$chr_store_multi_hash_chr_translate____does_use_field___2-12',
24607 C),
24608 lookup_ht(C, k(A, B), D),
24609 member(E, D),
24610 E=suspension(_, active, _, _),
24611 !.
24612uses_field(_, _) :-
24613 fail.
24614uses_state(A, B) :-
24615 uses_state___2__0(A, B, _).
24616uses_state___2__0(A, B, _) :-
24617 nb_getval('$chr_store_multi_hash_chr_translate____uses_state___2-12',
24618 C),
24619 lookup_ht(C, k(A, B), D),
24620 member(E, D),
24621 E=suspension(_, active, _, _),
24622 !.
24623uses_state___2__0(A, B, C) :-
24624 nb_getval('$chr_store_global_ground_chr_translate____used_states_known___0',
24625 D),
24626 !,
24627 C=suspension(E, not_stored_yet, A, B),
24628 'chr gen_id'(E),
24629 uses_state___2__0__0__3(D, A, B, C).
24630uses_state___2__0__0__3([], A, B, C) :-
24631 uses_state___2__1(A, B, C).
24632uses_state___2__0__0__3([A|B], C, D, E) :-
24633 ( A=suspension(_, active, _),
24634 nb_getval('$chr_store_multi_hash_chr_translate____if_used_state___5-12',
24635 F),
24636 lookup_ht(F, k(C, D), G)
24637 -> uses_state___2__0__1__3(G,
24638 A,
24639 B,
24640 C,
24641 D,
24642 E)
24643 ; uses_state___2__0__0__3(B, C, D, E)
24644 ).
24645uses_state___2__0__1__3([], _, A, B, C, D) :-
24646 uses_state___2__0__0__3(A, B, C, D).
24647uses_state___2__0__1__3([A|B], C, D, E, F, G) :-
24648 ( A=suspension(_, active, _, H, I, J, _, K),
24649 H==E,
24650 I==F
24651 -> setarg(2, A, removed),
24652 ( arg(3, A, L),
24653 ( var(L)
24654 -> nb_getval('$chr_store_global_ground_chr_translate____if_used_state___5',
24655 M),
24656 M=[_|N],
24657 b_setval('$chr_store_global_ground_chr_translate____if_used_state___5',
24658 N),
24659 ( N=[O|_]
24660 -> setarg(3, O, _)
24661 ; true
24662 )
24663 ; L=[_, _|N],
24664 setarg(2, L, N),
24665 ( N=[O|_]
24666 -> setarg(3, O, L)
24667 ; true
24668 )
24669 )
24670 ),
24671 nb_getval('$chr_store_multi_hash_chr_translate____if_used_state___5-12',
24672 P),
24673 delete_ht(P, k(E, F), A),
24674 arg(2, G, Q),
24675 setarg(2, G, active),
24676 ( Q==not_stored_yet
24677 -> nb_getval('$chr_store_multi_hash_chr_translate____uses_state___2-12',
24678 R),
24679 insert_ht(R, k(E, F), G)
24680 ; true
24681 ),
24682 K=J,
24683 ( G=suspension(_, active, _, _)
24684 -> setarg(2, G, inactive),
24685 uses_state___2__0__1__3(B,
24686 C,
24687 D,
24688 E,
24689 F,
24690 G)
24691 ; true
24692 )
24693 ; uses_state___2__0__1__3(B,
24694 C,
24695 D,
24696 E,
24697 F,
24698 G)
24699 ).
24700uses_state___2__0(A, B, C) :-
24701 C=suspension(D, not_stored_yet, A, B),
24702 'chr gen_id'(D),
24703 uses_state___2__1(A, B, C).
24704uses_state___2__1(A, B, C) :-
24705 arg(2, C, D),
24706 setarg(2, C, active),
24707 ( D==not_stored_yet
24708 -> nb_getval('$chr_store_multi_hash_chr_translate____uses_state___2-12',
24709 E),
24710 insert_ht(E, k(A, B), C)
24711 ; true
24712 ).
24713if_used_state(A, B, C, D, E) :-
24714 nb_getval('$chr_store_global_ground_chr_translate____used_states_known___0',
24715 F),
24716 member(G, F),
24717 G=suspension(_, active, _),
24718 ( nb_getval('$chr_store_multi_hash_chr_translate____uses_state___2-12',
24719 H),
24720 lookup_ht(H, k(A, B), I),
24721 member(J, I),
24722 J=suspension(_, active, _, _),
24723 !,
24724 E=C
24725 ; !,
24726 E=D
24727 ).
24728if_used_state(A, B, C, D, E) :-
24729 F=suspension(G, active, _, A, B, C, D, E),
24730 'chr gen_id'(G),
24731 nb_getval('$chr_store_global_ground_chr_translate____if_used_state___5',
24732 H),
24733 I=[F|H],
24734 b_setval('$chr_store_global_ground_chr_translate____if_used_state___5',
24735 I),
24736 ( H=[J|_]
24737 -> setarg(3, J, I)
24738 ; true
24739 ),
24740 nb_getval('$chr_store_multi_hash_chr_translate____if_used_state___5-12',
24741 K),
24742 insert_ht(K, k(A, B), F).
24743used_states_known :-
24744 used_states_known___0__0(_).
24745used_states_known___0__0(A) :-
24746 nb_getval('$chr_store_global_ground_chr_translate____if_used_state___5',
24747 B),
24748 !,
24749 A=suspension(C, not_stored_yet, _),
24750 'chr gen_id'(C),
24751 used_states_known___0__0__0__1(B, A).
24752used_states_known___0__0__0__1([], A) :-
24753 used_states_known___0__1(A).
24754used_states_known___0__0__0__1([A|B], C) :-
24755 ( A=suspension(_, active, _, D, E, F, _, G),
24756 ( ground(D),
24757 ground(E)
24758 ),
24759 nb_getval('$chr_store_multi_hash_chr_translate____uses_state___2-12',
24760 H),
24761 lookup_ht(H, k(D, E), I),
24762 member(J, I),
24763 J=suspension(_, active, _, _)
24764 -> setarg(2, A, removed),
24765 ( arg(3, A, K),
24766 ( var(K)
24767 -> nb_getval('$chr_store_global_ground_chr_translate____if_used_state___5',
24768 L),
24769 L=[_|M],
24770 b_setval('$chr_store_global_ground_chr_translate____if_used_state___5',
24771 M),
24772 ( M=[N|_]
24773 -> setarg(3, N, _)
24774 ; true
24775 )
24776 ; K=[_, _|M],
24777 setarg(2, K, M),
24778 ( M=[N|_]
24779 -> setarg(3, N, K)
24780 ; true
24781 )
24782 )
24783 ),
24784 nb_getval('$chr_store_multi_hash_chr_translate____if_used_state___5-12',
24785 O),
24786 delete_ht(O, k(D, E), A),
24787 arg(2, C, P),
24788 setarg(2, C, active),
24789 ( P==not_stored_yet
24790 -> nb_getval('$chr_store_global_ground_chr_translate____used_states_known___0',
24791 Q),
24792 R=[C|Q],
24793 b_setval('$chr_store_global_ground_chr_translate____used_states_known___0',
24794 R),
24795 ( Q=[S|_]
24796 -> setarg(3, S, R)
24797 ; true
24798 )
24799 ; true
24800 ),
24801 G=F,
24802 ( C=suspension(_, active, _)
24803 -> setarg(2, C, inactive),
24804 used_states_known___0__0__0__1(B, C)
24805 ; true
24806 )
24807 ; used_states_known___0__0__0__1(B, C)
24808 ).
24809used_states_known___0__0(A) :-
24810 A=suspension(B, not_stored_yet, _),
24811 'chr gen_id'(B),
24812 used_states_known___0__1(A).
24813used_states_known___0__1(A) :-
24814 nb_getval('$chr_store_global_ground_chr_translate____if_used_state___5',
24815 B),
24816 !,
24817 used_states_known___0__1__0__2(B, A).
24818used_states_known___0__1__0__2([], A) :-
24819 used_states_known___0__2(A).
24820used_states_known___0__1__0__2([A|B], C) :-
24821 ( A=suspension(_, active, _, D, E, _, F, G)
24822 -> setarg(2, A, removed),
24823 ( arg(3, A, H),
24824 ( var(H)
24825 -> nb_getval('$chr_store_global_ground_chr_translate____if_used_state___5',
24826 I),
24827 I=[_|J],
24828 b_setval('$chr_store_global_ground_chr_translate____if_used_state___5',
24829 J),
24830 ( J=[K|_]
24831 -> setarg(3, K, _)
24832 ; true
24833 )
24834 ; H=[_, _|J],
24835 setarg(2, H, J),
24836 ( J=[K|_]
24837 -> setarg(3, K, H)
24838 ; true
24839 )
24840 )
24841 ),
24842 nb_getval('$chr_store_multi_hash_chr_translate____if_used_state___5-12',
24843 L),
24844 delete_ht(L, k(D, E), A),
24845 arg(2, C, M),
24846 setarg(2, C, active),
24847 ( M==not_stored_yet
24848 -> nb_getval('$chr_store_global_ground_chr_translate____used_states_known___0',
24849 N),
24850 O=[C|N],
24851 b_setval('$chr_store_global_ground_chr_translate____used_states_known___0',
24852 O),
24853 ( N=[P|_]
24854 -> setarg(3, P, O)
24855 ; true
24856 )
24857 ; true
24858 ),
24859 G=F,
24860 ( C=suspension(_, active, _)
24861 -> setarg(2, C, inactive),
24862 used_states_known___0__1__0__2(B, C)
24863 ; true
24864 )
24865 ; used_states_known___0__1__0__2(B, C)
24866 ).
24867used_states_known___0__1(A) :-
24868 used_states_known___0__2(A).
24869used_states_known___0__2(A) :-
24870 arg(2, A, B),
24871 setarg(2, A, active),
24872 ( B==not_stored_yet
24873 -> nb_getval('$chr_store_global_ground_chr_translate____used_states_known___0',
24874 C),
24875 D=[A|C],
24876 b_setval('$chr_store_global_ground_chr_translate____used_states_known___0',
24877 D),
24878 ( C=[E|_]
24879 -> setarg(3, E, D)
24880 ; true
24881 )
24882 ; true
24883 ).
24884stored_assertion(A) :-
24885 B=suspension(C, active, A),
24886 'chr gen_id'(C),
24887 nb_getval('$chr_store_multi_hash_chr_translate____stored_assertion___1-1',
24888 D),
24889 insert_ht(D, A, B).
24890never_stored_default(A, B) :-
24891 never_stored_default___2__0(A, B, _).
24892never_stored_default___2__0(A, B, C) :-
24893 nb_getval('$chr_store_global_ground_chr_translate____never_stored_rules___2',
24894 D),
24895 !,
24896 C=suspension(E, not_stored_yet, A, B),
24897 'chr gen_id'(E),
24898 never_stored_default___2__0__0__1(D, A, B, C).
24899never_stored_default___2__0__0__1([], A, B, C) :-
24900 never_stored_default___2__1(A, B, C).
24901never_stored_default___2__0__0__1([A|B], C, D, E) :-
24902 ( A=suspension(_, active, _, F, G),
24903 F=[H|I],
24904 H==C
24905 -> setarg(2, A, removed),
24906 arg(3, A, J),
24907 ( var(J)
24908 -> nb_getval('$chr_store_global_ground_chr_translate____never_stored_rules___2',
24909 K),
24910 K=[_|L],
24911 b_setval('$chr_store_global_ground_chr_translate____never_stored_rules___2',
24912 L),
24913 ( L=[M|_]
24914 -> setarg(3, M, _)
24915 ; true
24916 )
24917 ; J=[_, _|L],
24918 setarg(2, J, L),
24919 ( L=[M|_]
24920 -> setarg(3, M, J)
24921 ; true
24922 )
24923 ),
24924 arg(2, E, N),
24925 setarg(2, E, active),
24926 ( N==not_stored_yet
24927 -> nb_getval('$chr_store_multi_hash_chr_translate____never_stored_default___2-1',
24928 O),
24929 insert_ht(O, C, E)
24930 ; true
24931 ),
24932 C=P/Q,
24933 functor(R, P, Q),
24934 inc_rule_count(S),
24935 T=pragma(rule([R], [], true, D), ids([0], []), [], no, S),
24936 G=[T|U],
24937 never_stored_rules(I, U),
24938 ( E=suspension(_, active, _, _)
24939 -> setarg(2, E, inactive),
24940 never_stored_default___2__0__0__1(B, C, D, E)
24941 ; true
24942 )
24943 ; never_stored_default___2__0__0__1(B, C, D, E)
24944 ).
24945never_stored_default___2__0(A, B, C) :-
24946 C=suspension(D, not_stored_yet, A, B),
24947 'chr gen_id'(D),
24948 never_stored_default___2__1(A, B, C).
24949never_stored_default___2__1(A, _, B) :-
24950 arg(2, B, C),
24951 setarg(2, B, active),
24952 ( C==not_stored_yet
24953 -> nb_getval('$chr_store_multi_hash_chr_translate____never_stored_default___2-1',
24954 D),
24955 insert_ht(D, A, B)
24956 ; true
24957 ).
24958never_stored_rules([], A) :-
24959 !,
24960 A=[].
24961never_stored_rules([A|B], C) :-
24962 nb_getval('$chr_store_multi_hash_chr_translate____never_stored_default___2-1',
24963 D),
24964 lookup_ht(D, A, E),
24965 member(F, E),
24966 F=suspension(_, active, _, G),
24967 !,
24968 A=H/I,
24969 functor(J, H, I),
24970 inc_rule_count(K),
24971 L=pragma(rule([J], [], true, G), ids([0], []), [], no, K),
24972 C=[L|M],
24973 never_stored_rules(B, M).
24974never_stored_rules([_|A], B) :-
24975 !,
24976 never_stored_rules(A, B).
24977never_stored_rules(A, B) :-
24978 C=suspension(D, active, _, A, B),
24979 'chr gen_id'(D),
24980 nb_getval('$chr_store_global_ground_chr_translate____never_stored_rules___2',
24981 E),
24982 F=[C|E],
24983 b_setval('$chr_store_global_ground_chr_translate____never_stored_rules___2',
24984 F),
24985 ( E=[G|_]
24986 -> setarg(3, G, F)
24987 ; true
24988 ).
24989check_storedness_assertion(A) :-
24990 nb_getval('$chr_store_multi_hash_chr_translate____stored_assertion___1-1',
24991 B),
24992 lookup_ht(B, A, C),
24993 member(D, C),
24994 D=suspension(_, active, _),
24995 !,
24996 setarg(2, D, removed),
24997 nb_getval('$chr_store_multi_hash_chr_translate____stored_assertion___1-1',
24998 E),
24999 delete_ht(E, A, D),
25000 ( is_stored(A)
25001 -> true
25002 ; chr_warning(assertion_failed,
25003 'Constraint ~w is not stored. However, it was asserted to be stored.\n',
25004 [A])
25005 ).
25006check_storedness_assertion(A) :-
25007 nb_getval('$chr_store_multi_hash_chr_translate____never_stored_default___2-1',
25008 B),
25009 lookup_ht(B, A, C),
25010 member(D, C),
25011 D=suspension(_, active, _, _),
25012 !,
25013 ( is_finally_stored(A)
25014 -> chr_warning(assertion_failed,
25015 'Constraint ~w is stored. However, it was asserted not to be stored.\n',
25016 [A])
25017 ; is_stored(A)
25018 -> chr_warning(assertion_failed,
25019 'Constraint ~w is temporarily stored. However, it was asserted not to be stored.\n',
25020 [A])
25021 ; true
25022 ).
25023check_storedness_assertion(A) :-
25024 ( is_finally_stored(A)
25025 -> chr_warning(assertion_failed,
25026 'Constraint ~w is stored. However, it was asserted not to be stored.\n',
25027 [A])
25028 ; is_stored(A)
25029 -> chr_warning(assertion_failed,
25030 'Constraint ~w is temporarily stored. However, it was asserted not to be stored.\n',
25031 [A])
25032 ; true
25033 ).
25034continuation_occurrence(A, B, C) :-
25035 D=suspension(E, active, A, B, C),
25036 'chr gen_id'(E),
25037 nb_getval('$chr_store_multi_hash_chr_translate____continuation_occurrence___3-12',
25038 F),
25039 insert_ht(F, k(A, B), D).
25040get_success_continuation_occurrence(A, B, C) :-
25041 nb_getval('$chr_store_multi_hash_chr_translate____continuation_occurrence___3-12',
25042 D),
25043 lookup_ht(D, k(A, B), E),
25044 member(F, E),
25045 F=suspension(_, active, _, _, G),
25046 !,
25047 C=G.
25048get_success_continuation_occurrence(A, B, _) :-
25049 chr_error(internal,
25050 'Success continuation not found for ~w.\n',
25051 [A:B]).
25052skip_to_next_id(A, B) :-
25053 skip_to_next_id___2__0(A, B, _).
25054skip_to_next_id___2__0(A, B, _) :-
25055 nb_getval('$chr_store_multi_hash_chr_translate____skip_to_next_id___2-12',
25056 C),
25057 lookup_ht(C, k(A, B), D),
25058 member(E, D),
25059 E=suspension(_, active, _, _, _),
25060 !.
25061skip_to_next_id___2__0(A, B, C) :-
25062 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-12',
25063 D),
25064 lookup_ht(D, k(A, B), E),
25065 !,
25066 C=suspension(F, not_stored_yet, t, A, B),
25067 'chr gen_id'(F),
25068 skip_to_next_id___2__0__0__4(E, A, B, C).
25069skip_to_next_id___2__0__0__4([], A, B, C) :-
25070 skip_to_next_id___2__1(A, B, C).
25071skip_to_next_id___2__0__0__4([A|B], C, D, E) :-
25072 ( A=suspension(_, active, _, _, F, G, H, I, _),
25073 F==C,
25074 G==D,
25075 nb_getval('$chr_store_multi_hash_chr_translate____passive___2-12',
25076 J),
25077 lookup_ht(J, k(H, I), K)
25078 -> skip_to_next_id___2__0__1__4(K,
25079 H,
25080 I,
25081 A,
25082 B,
25083 C,
25084 D,
25085 E)
25086 ; skip_to_next_id___2__0__0__4(B, C, D, E)
25087 ).
25088skip_to_next_id___2__0__1__4([], _, _, _, A, B, C, D) :-
25089 skip_to_next_id___2__0__0__4(A, B, C, D).
25090skip_to_next_id___2__0__1__4([A|B], C, D, E, F, G, H, I) :-
25091 ( A=suspension(_, active, _, J, K),
25092 J==C,
25093 K==D,
25094 L=t(362, E, A, I),
25095 '$novel_production'(E, L),
25096 '$novel_production'(A, L),
25097 '$novel_production'(I, L),
25098 H>1
25099 -> '$extend_history'(I, L),
25100 arg(2, I, M),
25101 setarg(2, I, active),
25102 ( M==not_stored_yet
25103 -> nb_getval('$chr_store_multi_hash_chr_translate____skip_to_next_id___2-12',
25104 N),
25105 insert_ht(N, k(G, H), I)
25106 ; true
25107 ),
25108 O is H-1,
25109 skip_to_next_id(G, O),
25110 ( I=suspension(_, active, _, _, _)
25111 -> setarg(2, I, inactive),
25112 skip_to_next_id___2__0__1__4(B,
25113 C,
25114 D,
25115 E,
25116 F,
25117 G,
25118 H,
25119 I)
25120 ; true
25121 )
25122 ; skip_to_next_id___2__0__1__4(B,
25123 C,
25124 D,
25125 E,
25126 F,
25127 G,
25128 H,
25129 I)
25130 ).
25131skip_to_next_id___2__0(A, B, C) :-
25132 C=suspension(D, not_stored_yet, t, A, B),
25133 'chr gen_id'(D),
25134 skip_to_next_id___2__1(A, B, C).
25135skip_to_next_id___2__1(A, B, C) :-
25136 nb_getval('$chr_store_multi_hash_chr_translate____set_occurrence_code_id___3-12',
25137 D),
25138 lookup_ht(D, k(A, B), E),
25139 !,
25140 skip_to_next_id___2__1__0__5(E, A, B, C).
25141skip_to_next_id___2__1__0__5([], A, B, C) :-
25142 skip_to_next_id___2__2(A, B, C).
25143skip_to_next_id___2__1__0__5([A|B], C, D, E) :-
25144 ( A=suspension(_, active, F, G, H),
25145 F==C,
25146 G==D,
25147 ( ground(C),
25148 ground(D)
25149 ),
25150 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-125',
25151 I),
25152 lookup_ht(I, k(C, D, propagation), J),
25153 member(K, J),
25154 K=suspension(_, active, _, _, _, _, _, _, _)
25155 -> setarg(2, A, removed),
25156 nb_getval('$chr_store_multi_hash_chr_translate____set_occurrence_code_id___3-12',
25157 L),
25158 delete_ht(L, k(C, D), A),
25159 arg(2, E, M),
25160 setarg(2, E, active),
25161 ( M==not_stored_yet
25162 -> nb_getval('$chr_store_multi_hash_chr_translate____skip_to_next_id___2-12',
25163 N),
25164 insert_ht(N, k(C, D), E)
25165 ; true
25166 ),
25167 occurrence_code_id(C, D, H),
25168 O is D+1,
25169 P is H+1,
25170 set_occurrence_code_id(C, O, P),
25171 ( E=suspension(_, active, _, _, _)
25172 -> setarg(2, E, inactive),
25173 skip_to_next_id___2__1__0__5(B, C, D, E)
25174 ; true
25175 )
25176 ; skip_to_next_id___2__1__0__5(B, C, D, E)
25177 ).
25178skip_to_next_id___2__1(A, B, C) :-
25179 skip_to_next_id___2__2(A, B, C).
25180skip_to_next_id___2__2(A, B, C) :-
25181 arg(2, C, D),
25182 setarg(2, C, active),
25183 ( D==not_stored_yet
25184 -> nb_getval('$chr_store_multi_hash_chr_translate____skip_to_next_id___2-12',
25185 E),
25186 insert_ht(E, k(A, B), C)
25187 ; true
25188 ).
25189should_skip_to_next_id(A, B) :-
25190 nb_getval('$chr_store_multi_hash_chr_translate____skip_to_next_id___2-12',
25191 C),
25192 lookup_ht(C, k(A, B), D),
25193 member(E, D),
25194 E=suspension(_, active, _, _, _),
25195 !.
25196should_skip_to_next_id(_, _) :-
25197 fail.
25198bulk_propagation(A, B, _) :-
25199 nb_getval('$chr_store_multi_hash_chr_translate____max_occurrence___2-1',
25200 C),
25201 lookup_ht(C, A, D),
25202 member(E, D),
25203 E=suspension(_, active, _, _, F),
25204 B>=F,
25205 !,
25206 skip_to_next_id(A, B).
25207bulk_propagation(A, B, C) :-
25208 C=:=B+1,
25209 !,
25210 skip_to_next_id(A, B),
25211 get_max_occurrence(A, D),
25212 E is D+1,
25213 bulk_propagation(A, C, E).
25214bulk_propagation(A, B, _) :-
25215 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-15',
25216 C),
25217 lookup_ht(C, k(A, simplification), D),
25218 member(E, D),
25219 E=suspension(_, active, _, _, _, F, _, _, _),
25220 F=:=B+1,
25221 !,
25222 skip_to_next_id(A, B),
25223 get_max_occurrence(A, G),
25224 H is G+1,
25225 bulk_propagation(A, F, H).
25226bulk_propagation(A, B, C) :-
25227 nb_getval('$chr_store_multi_hash_chr_translate____continuation_occurrence___3-12',
25228 D),
25229 lookup_ht(D, k(A, B), E),
25230 member(F, E),
25231 F=suspension(_, active, _, _, G),
25232 G>B+1,
25233 !,
25234 H is min(C, G),
25235 I is B+1,
25236 bulk_propagation(A, I, H).
25237bulk_propagation(A, B, _) :-
25238 skip_to_next_id(A, B),
25239 get_max_occurrence(A, C),
25240 D is C+1,
25241 E is B+1,
25242 bulk_propagation(A, E, D).
25243set_occurrence_code_id(A, B, C) :-
25244 get_max_occurrence(A, D),
25245 B>D,
25246 !,
25247 occurrence_code_id(A, B, C).
25248set_occurrence_code_id(A, B, C) :-
25249 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-12',
25250 D),
25251 lookup_ht(D, k(A, B), E),
25252 member(F, E),
25253 F=suspension(_, active, _, _, _, _, G, H, _),
25254 nb_getval('$chr_store_multi_hash_chr_translate____passive___2-12', I),
25255 lookup_ht(I, k(G, H), J),
25256 member(K, J),
25257 K=suspension(_, active, _, _, _),
25258 !,
25259 occurrence_code_id(A, B, C),
25260 L is B+1,
25261 set_occurrence_code_id(A, L, C).
25262set_occurrence_code_id(A, B, C) :-
25263 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-125',
25264 D),
25265 ( ( lookup_ht(D, k(A, B, simplification), E),
25266 member(F, E),
25267 F=suspension(_, active, _, _, _, _, _, _, _),
25268 !,
25269 occurrence_code_id(A, B, C),
25270 G is B+1,
25271 set_occurrence_code_id(A, G, C)
25272 ; lookup_ht(D, k(A, B, propagation), H),
25273 member(I, H),
25274 I=suspension(_, active, _, _, _, _, _, _, _),
25275 nb_getval('$chr_store_multi_hash_chr_translate____skip_to_next_id___2-12',
25276 J),
25277 lookup_ht(J, k(A, B), K),
25278 member(L, K),
25279 L=suspension(_, active, _, _, _),
25280 !,
25281 occurrence_code_id(A, B, C),
25282 M is B+1,
25283 N is C+1,
25284 set_occurrence_code_id(A, M, N)
25285 )
25286 ; lookup_ht(D, k(A, B, propagation), O),
25287 member(P, O),
25288 P=suspension(_, active, _, _, _, _, _, _, _),
25289 !,
25290 occurrence_code_id(A, B, C),
25291 Q is B+1,
25292 set_occurrence_code_id(A, Q, C)
25293 ).
25294set_occurrence_code_id(A, B, C) :-
25295 D=suspension(E, active, A, B, C),
25296 'chr gen_id'(E),
25297 nb_getval('$chr_store_multi_hash_chr_translate____set_occurrence_code_id___3-12',
25298 F),
25299 insert_ht(F, k(A, B), D).
25300occurrence_code_id(A, B, C) :-
25301 D=suspension(E, active, A, B, C),
25302 'chr gen_id'(E),
25303 nb_getval('$chr_store_multi_hash_chr_translate____occurrence_code_id___3-12',
25304 F),
25305 insert_ht(F, k(A, B), D).
25306get_occurrence_code_id(A, B, C) :-
25307 nb_getval('$chr_store_multi_hash_chr_translate____occurrence_code_id___3-12',
25308 D),
25309 lookup_ht(D, k(A, B), E),
25310 member(F, E),
25311 F=suspension(_, active, _, _, G),
25312 !,
25313 C=G.
25314get_occurrence_code_id(A, B, _) :-
25315 ( B==0
25316 -> true
25317 ; format('no occurrence code for ~w!\n', [A:B])
25318 ).
25319chr_constants(A) :-
25320 B=suspension(C, active, _, A),
25321 'chr gen_id'(C),
25322 nb_getval('$chr_store_global_ground_chr_translate____chr_constants___1',
25323 D),
25324 E=[B|D],
25325 b_setval('$chr_store_global_ground_chr_translate____chr_constants___1',
25326 E),
25327 ( D=[F|_]
25328 -> setarg(3, F, E)
25329 ; true
25330 ).
25331get_chr_constants(A) :-
25332 nb_getval('$chr_store_global_ground_chr_translate____chr_constants___1',
25333 B),
25334 member(C, B),
25335 C=suspension(_, active, _, D),
25336 !,
25337 A=D.
25338get_chr_constants(A) :-
25339 chr_warning(internal, 'No constants found for key ~w.\n', [_]),
25340 A=[].
25341add_chr_constants_(A) :-
25342 nb_getval('$chr_store_global_ground_chr_translate____chr_constants___1',
25343 B),
25344 member(C, B),
25345 C=suspension(_, active, _, D),
25346 !,
25347 setarg(2, C, removed),
25348 arg(3, C, E),
25349 ( var(E)
25350 -> nb_getval('$chr_store_global_ground_chr_translate____chr_constants___1',
25351 F),
25352 F=[_|G],
25353 b_setval('$chr_store_global_ground_chr_translate____chr_constants___1',
25354 G),
25355 ( G=[H|_]
25356 -> setarg(3, H, _)
25357 ; true
25358 )
25359 ; E=[_, _|G],
25360 setarg(2, E, G),
25361 ( G=[H|_]
25362 -> setarg(3, H, E)
25363 ; true
25364 )
25365 ),
25366 sort([A|D], I),
25367 chr_constants(I).
25368add_chr_constants_(A) :-
25369 chr_constants([A]).
25370print_chr_constants :-
25371 print_chr_constants___0__0(_).
25372print_chr_constants___0__0(A) :-
25373 nb_getval('$chr_store_global_ground_chr_translate____chr_constants___1',
25374 B),
25375 !,
25376 A=suspension(C, not_stored_yet, _),
25377 'chr gen_id'(C),
25378 print_chr_constants___0__0__0__1(B, A).
25379print_chr_constants___0__0__0__1([], A) :-
25380 print_chr_constants___0__1(A).
25381print_chr_constants___0__0__0__1([A|B], C) :-
25382 ( A=suspension(_, active, _, D)
25383 -> format('\t* chr_constants : ~w.\n', [D]),
25384 print_chr_constants___0__0__0__1(B, C)
25385 ; print_chr_constants___0__0__0__1(B, C)
25386 ).
25387print_chr_constants___0__0(A) :-
25388 A=suspension(B, not_stored_yet, _),
25389 'chr gen_id'(B),
25390 print_chr_constants___0__1(A).
25391print_chr_constants___0__1(A) :-
25392 ( var(A)
25393 -> true
25394 ; arg(2, A, B),
25395 setarg(2, A, removed),
25396 ( B==not_stored_yet
25397 -> true
25398 ; arg(3, A, C),
25399 ( var(C)
25400 -> nb_getval('$chr_store_global_ground_chr_translate____print_chr_constants___0',
25401 D),
25402 D=[_|E],
25403 b_setval('$chr_store_global_ground_chr_translate____print_chr_constants___0',
25404 E),
25405 ( E=[F|_]
25406 -> setarg(3, F, _)
25407 ; true
25408 )
25409 ; C=[_, _|E],
25410 setarg(2, C, E),
25411 ( E=[F|_]
25412 -> setarg(3, F, C)
25413 ; true
25414 )
25415 )
25416 )
25417 )