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),
2432 functor(L, J, K)
2433 ),
2434 M),
2435 N is I+1,
2436 trie_step_cases(M,
2437 N,
2438 A,
2439 D,
2440 E,
2441 B,
2442 C,
2443 F,
2444 G).
2445trie_step_cases([], _, _, _, _, _, _, A, A).
2446trie_step_cases([A|B], C, D, E, F, G, H, I, J) :-
2447 trie_step_case(A,
2448 C,
2449 D,
2450 E,
2451 F,
2452 G,
2453 H,
2454 I,
2455 K),
2456 trie_step_cases(B,
2457 C,
2458 D,
2459 E,
2460 F,
2461 G,
2462 H,
2463 K,
2464 J).
2465trie_step_case(A/B, C, D, E, F, G, H, [I|J], K) :-
2466 I=(L:-M),
2467 N is C+1,
2468 functor(L, G, N),
2469 arg(1, L, O),
2470 L=..[_, _|P],
2471 once(append(Q, [R], P)),
2472 functor(O, A, B),
2473 O=..[_|S],
2474 append(S, P, T),
2475 ( T==[R]
2476 -> J=K,
2477 M=true,
2478 rec_cases(D,
2479 _,
2480 F,
2481 A/B,
2482 _,
2483 _,
2484 U),
2485 U=[R]
2486 ; rec_cases(D,
2487 E,
2488 F,
2489 A/B,
2490 V,
2491 W,
2492 U),
2493 ( W=[X]
2494 -> J=K,
2495 M=true,
2496 append([V, X, U], T)
2497 ; pairup(V, W, Y),
2498 common_pattern(Y, Z, A1, B1),
2499 append(S, Q, [C1|D1]),
2500 C1-D1=Z,
2501 fresh_symbol(H, E1),
2502 append(A1, [R], F1),
2503 M=..[E1|F1],
2504 maplist(head_tail, B1, G1, H1),
2505 trie_step(G1,
2506 E1,
2507 H,
2508 H1,
2509 U,
2510 J,
2511 K)
2512 )
2513 ).
2514head_tail([A|B], A, B).
2515rec_cases([], [], [], _, [], [], []).
2516rec_cases([A|B], [C|D], [E|F], G/H, I, J, K) :-
2517 ( functor(A, G, H),
2518 A=..[_|L],
2519 append(L, C, [M|N])
2520 -> I=[M|O],
2521 J=[N|P],
2522 K=[E|Q],
2523 rec_cases(B,
2524 D,
2525 F,
2526 G/H,
2527 O,
2528 P,
2529 Q)
2530 ; rec_cases(B,
2531 D,
2532 F,
2533 G/H,
2534 I,
2535 J,
2536 K)
2537 ).
2538common_pattern(A, B, C, D) :-
2539 fold1(chr_translate:gct, A, B),
2540 term_variables(B, C),
2541 findall(C, member(B, A), D).
2542gct(A, B, C) :-
2543 gct_(A, B, C, [], _).
2544gct_(A, B, C, D, E) :-
2545 ( nonvar(A),
2546 nonvar(B),
2547 functor(A, F, G),
2548 functor(B, H, I),
2549 F==H,
2550 G==I
2551 -> functor(C, F, G),
2552 A=..[_|J],
2553 B=..[_|K],
2554 C=..[_|L],
2555 maplist_dcg(chr_translate:gct_,
2556 J,
2557 K,
2558 L,
2559 D,
2560 E)
2561 ; lookup_eq(D, A+B, C)
2562 -> E=D
2563 ; E=[A+B-C|D]
2564 ).
2565global_list_store_name(A/B, C) :-
2566 get_target_module(D),
2567 atom_concat_list([ '$chr_store_global_list_',
2568 D,
2569 '____',
2570 A,
2571 '___',
2572 B
2573 ],
2574 C).
2575global_ground_store_name(A/B, C) :-
2576 get_target_module(D),
2577 atom_concat_list([ '$chr_store_global_ground_',
2578 D,
2579 '____',
2580 A,
2581 '___',
2582 B
2583 ],
2584 C).
2585global_singleton_store_name(A/B, C) :-
2586 get_target_module(D),
2587 atom_concat_list([ '$chr_store_global_singleton_',
2588 D,
2589 '____',
2590 A,
2591 '___',
2592 B
2593 ],
2594 C).
2595identifier_store_name(A, B) :-
2596 get_target_module(C),
2597 atom_concat_list(['$chr_identifier_lookup_', C, '____', A], B).
2598:- if(current_predicate(user:exception/3)). 2599prolog_global_variables_code([]) :-
2600 tmp_module,
2601 !.
2602prolog_global_variables_code(A) :-
2603 prolog_global_variables(B),
2604 ( B==[]
2605 -> A=[]
2606 ; maplist(wrap_in_functor('$chr_prolog_global_variable'), B, C),
2607 A=[(:-dynamic user:exception/3), (:-multifile user:exception/3), (user:exception(undefined_global_variable, D, retry):-'$chr_prolog_global_variable'(D), '$chr_initialization')|C]
2608 ).
2609tmp_module :-
2610 prolog_load_context(module, A),
2611 module_property(A, class(temporary)).
2612:- else. 2613prolog_global_variables_code([]).
2614:- endif. 2615sbag_member_call(A, B, member(A, B)).
2616update_mutable_call(A, B, 'chr update_mutable'(A, B)).
2617create_mutable_call(A, B, true) :-
2618 B=mutable(A).
2619get_suspension_field(A, B, C, D, E) :-
2620 get_dynamic_suspension_term_field(C, A, B, D, E).
2621update_suspension_field(A, B, C, D, E) :-
2622 set_dynamic_suspension_term_field(C, A, B, D, E).
2623get_update_suspension_field(A, B, C, D, E, true, F, G) :-
2624 get_dynamic_suspension_term_field(C, A, B, D, F),
2625 set_dynamic_suspension_term_field(C, A, B, E, G).
2626create_static_suspension_field(A, B, C, D, true) :-
2627 get_static_suspension_term_field(C, A, B, D).
2628get_static_suspension_field(A, B, C, D, true) :-
2629 get_static_suspension_term_field(C, A, B, D).
2630get_update_static_suspension_field(A, B, C, D, E, F, true, G) :-
2631 get_static_suspension_term_field(D, A, C, E),
2632 set_dynamic_suspension_term_field(D, A, B, F, G).
2633enumerate_stores_code(A, [B|C]) :-
2634 D='$enumerate_constraints'(E),
2635 B=(D:-F),
2636 enumerate_store_bodies(A, E, C),
2637 ( C=[]
2638 -> F=fail
2639 ; F=(nonvar(E)->functor(E, G, _), '$enumerate_constraints'(G, E);'$enumerate_constraints'(_, E))
2640 ).
2641enumerate_store_bodies([], _, []).
2642enumerate_store_bodies([A|B], C, D) :-
2643 ( is_stored(A)
2644 -> get_store_type(A, E),
2645 ( enumerate_store_body(E, A, F, G)
2646 -> true
2647 ; chr_error(internal,
2648 'Could not generate enumeration code for constraint ~w.\n',
2649 [A])
2650 ),
2651 get_dynamic_suspension_term_field(arguments,
2652 A,
2653 F,
2654 H,
2655 I),
2656 A=J/_,
2657 K=..[J|H],
2658 L='$enumerate_constraints'(J, C),
2659 M=(G, I, C=K),
2660 D=[(L:-M)|N]
2661 ; D=N
2662 ),
2663 enumerate_store_bodies(B, C, N).
2664enumerate_store_body(default, A, B, C) :-
2665 global_list_store_name(A, D),
2666 sbag_member_call(B, E, F),
2667 make_get_store_goal_no_error(D, E, G),
2668 C=(G, F).
2669enumerate_store_body(multi_inthash([A|_]), B, C, D) :-
2670 multi_inthash_enumerate_store_body(A, B, C, D).
2671enumerate_store_body(multi_hash([A|_]), B, C, D) :-
2672 multi_hash_enumerate_store_body(A, B, C, D).
2673enumerate_store_body(atomic_constants(A, B, C), D, E, F) :-
2674 C==complete,
2675 maplist(enumerate_constant_store_body(D, A, G),
2676 B,
2677 H),
2678 list2disj(H, I),
2679 F=(I, member(E, G)).
2680enumerate_constant_store_body(A, B, C, D, nb_getval(E, C)) :-
2681 constants_store_name(A, B, D, E).
2682enumerate_store_body(ground_constants(A, B, C), D, E, F) :-
2683 enumerate_store_body(atomic_constants(A, B, C),
2684 D,
2685 E,
2686 F).
2687enumerate_store_body(global_ground, A, B, C) :-
2688 global_ground_store_name(A, D),
2689 sbag_member_call(B, E, F),
2690 make_get_store_goal(D, E, G),
2691 C=(G, F).
2692enumerate_store_body(var_assoc_store(_, _), _, _, A) :-
2693 A=fail.
2694enumerate_store_body(global_singleton, A, B, C) :-
2695 global_singleton_store_name(A, D),
2696 make_get_store_goal(D, B, E),
2697 C=(E, B\==[]).
2698enumerate_store_body(multi_store(A), B, C, D) :-
2699 ( memberchk(global_ground, A)
2700 -> enumerate_store_body(global_ground, B, C, D)
2701 ; once(( member(E, A),
2702 enumerate_store_body(E, B, C, D)
2703 ))
2704 ).
2705enumerate_store_body(identifier_store(_), _, _, A) :-
2706 A=fail.
2707enumerate_store_body(type_indexed_identifier_store(_, _), _, _, A) :-
2708 A=fail.
2709multi_inthash_enumerate_store_body(A, B, C, D) :-
2710 multi_hash_store_name(B, A, E),
2711 D=(nb_getval(E, F), value_iht(F, C)).
2712multi_hash_enumerate_store_body(A, B, C, D) :-
2713 multi_hash_store_name(B, A, E),
2714 make_get_store_goal(E, F, G),
2715 D=(G, value_ht(F, C)).
2716guard_simplification :-
2717 ( chr_pp_flag(guard_simplification, on)
2718 -> precompute_head_matchings,
2719 simplify_guards(1)
2720 ; true
2721 ).
2722next_prev_rule(A, B, C) :-
2723 ( find_min_q(A, _-D)
2724 -> D=(-B),
2725 normalize_heap(A, D, C)
2726 ; B=0,
2727 C=A
2728 ).
2729normalize_heap(A, B, C) :-
2730 ( find_min_q(A, _-B)
2731 -> delete_min_q(A, D, tuple(E, F, _)-_),
2732 ( F>1
2733 -> G is F-1,
2734 get_occurrence(E, G, H, _),
2735 insert_q(D,
2736 tuple(E, G, H)-(-H),
2737 I)
2738 ; I=D
2739 ),
2740 normalize_heap(I, B, C)
2741 ; C=A
2742 ).
2743head_types_modes_condition([], _, true).
2744head_types_modes_condition([A|B], C, (D, E)) :-
2745 types_modes_condition(C, A, D),
2746 head_types_modes_condition(B, C, E).
2747add_background_info(A, B) :-
2748 get_bg_info(C),
2749 add_background_info2(A, D),
2750 append(C, D, B).
2751add_background_info2(A, []) :-
2752 var(A),
2753 !.
2754add_background_info2([], []) :-
2755 !.
2756add_background_info2([A|B], C) :-
2757 !,
2758 add_background_info2(A, D),
2759 add_background_info2(B, E),
2760 append(D, E, C).
2761add_background_info2(A, B) :-
2762 ( functor(A, _, C),
2763 C>0
2764 -> A=..[_|D],
2765 add_background_info2(D, E)
2766 ; E=[]
2767 ),
2768 get_bg_info(A, F),
2769 append(F, E, B).
2770normalize_conj_list(A, B) :-
2771 list2conj(A, C),
2772 conj2list(C, B).
2773compute_derived_info([], _, _, _, _, _, _, _, [], []).
2774compute_derived_info([A|B], C, D, E, F, G, H, I, [J|K], [L|M]) :-
2775 copy_term(C-F, N),
2776 variable_replacement(C-F, N, O),
2777 append(A, O, P),
2778 list2conj(C, Q),
2779 negate_b(Q, R),
2780 make_head_matchings_explicit_not_negated2(E, D, S),
2781 list2conj(S, T),
2782 term_variables(P, U),
2783 term_variables(C-F-S, V),
2784 new_vars(V, U, W),
2785 append(P, W, X),
2786 ( F==true
2787 -> Y=R
2788 ; negate_b(F, Z),
2789 Y=(R;T, Z)
2790 ),
2791 copy_with_variable_replacement(Y, J, X),
2792 copy_with_variable_replacement(F, A1, X),
2793 copy_with_variable_replacement(C, B1, X),
2794 list2conj(B1, C1),
2795 apply_guard_wrt_term(H, A1, D1),
2796 apply_guard_wrt_term(D1, C1, L),
2797 compute_derived_info(B,
2798 C,
2799 D,
2800 E,
2801 F,
2802 G,
2803 H,
2804 I,
2805 K,
2806 M).
2807simplify_guard(A, B, C, D, E) :-
2808 conj2list(A, F),
2809 guard_entailment:simplify_guards(C, B, F, G, E),
2810 list2conj(G, D).
2811new_vars([], _, []).
2812new_vars([A|B], C, D) :-
2813 ( memberchk_eq(A, C)
2814 -> new_vars(B, C, D)
2815 ; D=[A-E, E-A|F],
2816 new_vars(B, C, F)
2817 ).
2818head_subset(A, B, C) :-
2819 head_subset(A, B, C, [], _).
2820head_subset([], A, B, B, A).
2821head_subset([A|B], C, D, E, F) :-
2822 head_member(C, A, G, E, H),
2823 head_subset(B, H, D, G, F).
2824head_member([A|B], C, D, E, F) :-
2825 ( variable_replacement(C, A, E, D),
2826 F=B
2827 ; F=[A|G],
2828 head_member(B, C, D, E, G)
2829 ).
2830make_head_matchings_explicit(A, B, C) :-
2831 make_head_matchings_explicit_memo_lookup(A, D, E),
2832 copy_term_nat(D-E, B-C).
2833make_head_matchings_explicit_(A, B, C) :-
2834 extract_arguments(A, D),
2835 make_matchings_explicit(D, E, [], [], _, C),
2836 substitute_arguments(A, E, B).
2837make_head_matchings_explicit_not_negated(A, B, C) :-
2838 extract_arguments(A, D),
2839 make_matchings_explicit_not_negated(D, E, C),
2840 substitute_arguments(A, E, B).
2841make_head_matchings_explicit_not_negated2(A, B, C) :-
2842 extract_arguments(A, D),
2843 extract_arguments(B, E),
2844 make_matchings_explicit_not_negated(D, E, C).
([], []).
2846extract_arguments([A|B], C) :-
2847 A=..[_|D],
2848 append(D, E, C),
2849 extract_arguments(B, E).
2850substitute_arguments([], [], []).
2851substitute_arguments([A|B], C, [D|E]) :-
2852 functor(A, F, G),
2853 split_at(G, C, H, I),
2854 D=..[F|H],
2855 substitute_arguments(B, I, E).
2856make_matchings_explicit([], [], _, A, A, []).
2857make_matchings_explicit([A|B], [C|D], E, F, G, H) :-
2858 ( var(A)
2859 -> ( memberchk_eq(A, E)
2860 -> list2disj(F, I),
2861 H=[(I;C==A)|J],
2862 K=E
2863 ; H=J,
2864 C=A,
2865 K=[A|E]
2866 ),
2867 L=F
2868 ; functor(A, M, N),
2869 A=..[M|O],
2870 make_matchings_explicit(O,
2871 P,
2872 E,
2873 F,
2874 Q,
2875 R),
2876 S=..[M|P],
2877 ( R==[]
2878 -> H=[functor(C, M, N)|J]
2879 ; list2conj(R, T),
2880 list2disj(F, I),
2881 U=(C\=S;I;T),
2882 H=[functor(C, M, N), U|J]
2883 ),
2884 L=[C\=S|Q],
2885 term_variables(B, V),
2886 append(V, E, K)
2887 ),
2888 make_matchings_explicit(B, D, K, L, G, J).
2889make_matchings_explicit_not_negated([], [], []).
2890make_matchings_explicit_not_negated([A|B], [C|D], E) :-
2891 E=[C=A|F],
2892 make_matchings_explicit_not_negated(B, D, F).
2893apply_guard_wrt_term([], _, []).
2894apply_guard_wrt_term([A|B], C, [D|E]) :-
2895 ( var(A)
2896 -> apply_guard_wrt_variable(C, A, D)
2897 ; A=..[F|G],
2898 apply_guard_wrt_term(G, C, H),
2899 D=..[F|H]
2900 ),
2901 apply_guard_wrt_term(B, C, E).
2902apply_guard_wrt_variable((A, B), C, D) :-
2903 !,
2904 apply_guard_wrt_variable(A, C, E),
2905 apply_guard_wrt_variable(B, E, D).
2906apply_guard_wrt_variable(A, B, C) :-
2907 ( A=(D=E),
2908 B==D
2909 -> C=E
2910 ; A=functor(F, G, H),
2911 B==F,
2912 ground(G),
2913 ground(H)
2914 -> functor(C, G, H)
2915 ; C=B
2916 ).
2917replace_some_heads(A, B, _, [], A, B, _, _, []) :-
2918 !.
2919replace_some_heads([], [A|B], [C|D], [E|F], [], [G|H], I, J, K) :-
2920 !,
2921 ( C==E
2922 -> G=E,
2923 replace_some_heads([],
2924 B,
2925 D,
2926 F,
2927 [],
2928 H,
2929 I,
2930 J,
2931 K)
2932 ; E=functor(L, M, N),
2933 C==L
2934 -> length(O, N),
2935 ( var(A)
2936 -> P=[],
2937 G=..[M|O]
2938 ; A=..[M|Q],
2939 use_same_args(Q, O, R, I, J, P),
2940 G=..[M|R]
2941 ),
2942 replace_some_heads([],
2943 B,
2944 D,
2945 F,
2946 [],
2947 H,
2948 I,
2949 J,
2950 S),
2951 append(P, S, K)
2952 ; G=A,
2953 replace_some_heads([],
2954 B,
2955 D,
2956 [E|F],
2957 [],
2958 H,
2959 I,
2960 J,
2961 K)
2962 ).
2963replace_some_heads([A|B], C, [D|E], [F|G], [H|I], J, K, L, M) :-
2964 !,
2965 ( D==F
2966 -> H=F,
2967 replace_some_heads(B,
2968 C,
2969 E,
2970 G,
2971 I,
2972 J,
2973 K,
2974 L,
2975 M)
2976 ; F=functor(N, O, P),
2977 D==N
2978 -> length(Q, P),
2979 ( var(A)
2980 -> R=[],
2981 H=..[O|Q]
2982 ; A=..[O|S],
2983 use_same_args(S,
2984 Q,
2985 T,
2986 K,
2987 L,
2988 R),
2989 H=..[O|T]
2990 ),
2991 replace_some_heads(B,
2992 C,
2993 E,
2994 G,
2995 I,
2996 J,
2997 K,
2998 L,
2999 U),
3000 append(R, U, M)
3001 ; H=A,
3002 replace_some_heads(B,
3003 C,
3004 E,
3005 [F|G],
3006 I,
3007 J,
3008 K,
3009 L,
3010 M)
3011 ).
3012use_same_args([], [], [], _, _, []).
3013use_same_args([A|B], [_|C], [D|E], F, G, H) :-
3014 var(A),
3015 !,
3016 D=A,
3017 use_same_args(B, C, E, F, G, H).
3018use_same_args([A|B], [C|D], [E|F], G, H, I) :-
3019 nonvar(A),
3020 !,
3021 ( common_variables(A, H)
3022 -> I=[C=A|J]
3023 ; I=J
3024 ),
3025 E=C,
3026 use_same_args(B, D, F, G, H, J).
3027simplify_heads([], _, _, _, [], []).
3028simplify_heads([A|B], C, D, E, F, G) :-
3029 A=(H=I),
3030 ( ( nonvar(I)
3031 ; common_variables(I, B-C)
3032 ),
3033 guard_entailment:entails_guard(C, H=I)
3034 -> ( common_variables(I, D-B-C)
3035 -> G=J,
3036 F=K
3037 ; ( common_variables(I, E)
3038 -> G=[H=I|J]
3039 ; G=J
3040 ),
3041 F=[H|K]
3042 )
3043 ; nonvar(I),
3044 functor(I, L, M),
3045 guard_entailment:entails_guard([functor(H, L, M)|C], H=I)
3046 -> G=J,
3047 ( common_variables(I, D-B-C)
3048 -> F=K
3049 ; F=[functor(H, L, M)|K]
3050 )
3051 ; F=K,
3052 G=J
3053 ),
3054 simplify_heads(B, [A|C], D, E, K, J).
3055common_variables(A, B) :-
3056 term_variables(A, C),
3057 term_variables(B, D),
3058 intersect_eq(C, D, E),
3059 E\==[].
3060add_failing_occ(A, B, C, D, E, F, _, G, H) :-
3061 A=pragma(rule(_, _, I, _), ids(J, K), _, _, _),
3062 append(K, J, L),
3063 missing_partner_cond(B,
3064 C,
3065 L,
3066 D,
3067 M,
3068 N,
3069 G),
3070 copy_term((N, B, C), (O, P, Q)),
3071 variable_replacement((N, B, C),
3072 (O, P, Q),
3073 H),
3074 copy_with_variable_replacement(I, R, H),
3075 extract_explicit_matchings(R, S),
3076 negate_b(S, T),
3077 copy_with_variable_replacement(M, U, H),
3078 ( subsumes_term(F, O),
3079 F=O
3080 -> E=[(T;U)]
3081 ; E=[chr_pp_void_info]
3082 ).
3083missing_partner_cond([], [], [], _, fail, _, _).
3084missing_partner_cond([A|B], [_|C], [D|E], D, F, A, G) :-
3085 !,
3086 missing_partner_cond(B,
3087 C,
3088 E,
3089 D,
3090 F,
3091 A,
3092 G).
3093missing_partner_cond([A|B], [_|C], [_|D], E, F, G, H/I) :-
3094 F=(chr_pp_not_in_store(A);J),
3095 missing_partner_cond(B,
3096 C,
3097 D,
3098 E,
3099 J,
3100 G,
3101 H/I).
((A, B), C) :-
3103 !,
3104 ( extract_explicit_matchings(A)
3105 -> extract_explicit_matchings(B, C)
3106 ; C=(A, D),
3107 extract_explicit_matchings(B, D)
3108 ).
3109extract_explicit_matchings(A, B) :-
3110 !,
3111 ( extract_explicit_matchings(A)
3112 -> B=true
3113 ; B=A
3114 ).
(A=B) :-
3116 var(A),
3117 var(B),
3118 !,
3119 A=B.
3120extract_explicit_matchings(A==B) :-
3121 var(A),
3122 var(B),
3123 !,
3124 A=B.
3125assert_constraint_type(A, B) :-
3126 ( ground(B)
3127 -> constraint_type(A, B)
3128 ; chr_error(type_error,
3129 'Declared argument types "~w" for constraint "~w" must be ground!\n',
3130 [B, A])
3131 ).
3132get_type_definition_det(A, B) :-
3133 ( get_type_definition(A, B)
3134 -> true
3135 ; chr_error(type,
3136 'Could not find type definition for type `~w\'.\n',
3137 [A])
3138 ).
3139get_constraint_type_det(A, B) :-
3140 ( get_constraint_type(A, B)
3141 -> true
3142 ; A=_/C,
3143 replicate(C, any, B)
3144 ).
3145modes_condition([], [], true).
3146modes_condition([A|B], [C|D], E) :-
3147 ( A==(+)
3148 -> E=(ground(C), F)
3149 ; A==(-)
3150 -> E=(var(C), F)
3151 ; E=F
3152 ),
3153 modes_condition(B, D, F).
3154types_condition([], [], [], [], true).
3155types_condition([A|B], [C|D], [E|F], [G|H], (I, J)) :-
3156 ( G==(-)
3157 -> K=[true]
3158 ; get_type_definition_det(A, L),
3159 type_condition(L, C, E, G, M),
3160 ( G==(+)
3161 -> K=M
3162 ; K=[\+ground(C)|M]
3163 )
3164 ),
3165 list2disj(K, I),
3166 types_condition(B, D, F, H, J).
3167type_condition([], _, _, _, []).
3168type_condition([A|B], C, D, E, [F|G]) :-
3169 ( var(A)
3170 -> chr_error(type, 'Unexpected variable type in type definition!\n', [])
3171 ; atomic_builtin_type(A, C, F)
3172 -> true
3173 ; compound_builtin_type(A, C, F, _)
3174 -> true
3175 ; type_def_case_condition(A, C, D, E, F)
3176 ),
3177 type_condition(B, C, D, E, G).
3178ast_atomic_builtin_type(A, B, C) :-
3179 ast_term_to_term(B, D),
3180 atomic_builtin_type(A, D, C).
3181ast_compound_builtin_type(A, B, C) :-
3182 ast_term_to_term(B, D),
3183 compound_builtin_type(A, D, _, C).
3184atomic_builtin_type(any, _, true).
3185atomic_builtin_type(dense_int, A, (integer(A), A>=0)).
3186atomic_builtin_type(int, A, integer(A)).
3187atomic_builtin_type(number, A, number(A)).
3188atomic_builtin_type(float, A, float(A)).
3189atomic_builtin_type(natural, A, (integer(A), A>=0)).
3190atomic_builtin_type(chr_identifier, _, true).
3191compound_builtin_type(chr_constants(_), _, true, true).
3192compound_builtin_type(chr_constants(_, _), _, true, true).
3193compound_builtin_type(chr_identifier(_), _, true, true).
3194compound_builtin_type(chr_enum(A), B, (ground(B), memberchk(B, A)), once((member(C, A), unifiable(B, C, _)))).
3195compound_builtin_type(chr_enum(_, _), _, true, true).
3196is_chr_constants_type(chr_constants(A), A, no).
3197is_chr_constants_type(chr_constants(A, B), A, yes(B)).
3198is_chr_enum_type(chr_enum(A), A, no).
3199is_chr_enum_type(chr_enum(A, B), A, yes(B)).
3200type_def_case_condition(A, B, C, D, E) :-
3201 ( nonvar(A)
3202 -> functor(A, F, G),
3203 ( G==0
3204 -> E=(B=A)
3205 ; var(C)
3206 -> E=functor(B, F, G)
3207 ; functor(C, F, G)
3208 -> E=(functor(B, F, G), B=H, I),
3209 A=..[_|J],
3210 C=..[_|K],
3211 functor(H, F, G),
3212 H=..[_|L],
3213 replicate(G, D, M),
3214 types_condition(J, L, K, M, I)
3215 ; E=functor(B, F, G)
3216 )
3217 ; chr_error(internal, 'Illegal type definition (must be nonvar).\n', [])
3218 ).
3219static_type_check_rule(A, B) :-
3220 B=ast_rule(C, _, _, D, _),
3221 ( catch(( ast_static_type_check_head(C),
3222 ast_static_type_check_body(D)
3223 ),
3224 type_error(E),
3225 ( E=invalid_functor(F, G, H)
3226 -> chr_error(type_error,
3227 'Invalid functor in ~@ of ~@:\n\t\tfound `~w\',\n\t\texpected type `~w\'!\n',
3228 [ chr_translate:format_src(F),
3229 format_rule(A),
3230 G,
3231 H
3232 ])
3233 ; E=type_clash(I, J, K, L, M)
3234 -> chr_error(type_error,
3235 'Type clash for variable ~w in ~@:\n\t\texpected type ~w in ~@\n\t\texpected type ~w in ~@\n',
3236 [ I,
3237 format_rule(A),
3238 L,
3239 chr_translate:format_src(J),
3240 M,
3241 chr_translate:format_src(K)
3242 ])
3243 )),
3244 fail
3245 ; true
3246 ).
3247ast_static_type_check_head(simplification(A)) :-
3248 maplist(ast_static_type_check_head_constraint, A).
3249ast_static_type_check_head(propagation(A)) :-
3250 maplist(ast_static_type_check_head_constraint, A).
3251ast_static_type_check_head(simpagation(A, B)) :-
3252 maplist(ast_static_type_check_head_constraint, A),
3253 maplist(ast_static_type_check_head_constraint, B).
3254ast_static_type_check_head_constraint(A) :-
3255 A=chr_constraint(B, C, _),
3256 get_constraint_type_det(B, D),
3257 maplist(ast_static_type_check_term(head(_)), C, D).
3258ast_static_type_check_body([]).
3259ast_static_type_check_body([A|B]) :-
3260 ast_symbol(A, C),
3261 get_constraint_type_det(C, D),
3262 ast_args(A, E),
3263 maplist(ast_static_type_check_term(body(A)), E, D),
3264 ast_static_type_check_body(B).
3265format_src(head(A)) :-
3266 format('head ~w', [A]).
3267format_src(body(A)) :-
3268 format('body goal ~w', [A]).
3269generate_dynamic_type_check_clauses(A) :-
3270 ( chr_pp_flag(debugable, on)
3271 -> dynamic_type_check,
3272 get_dynamic_type_check_clauses(B),
3273 append(B,
3274 [ ('$dynamic_type_check'(C, D):-throw(error(type_error(C, D), context(_, 'CHR Runtime Type Error'))))
3275 ],
3276 A)
3277 ; A=[]
3278 ).
3279dynamic_type_check_clause(A, B, C) :-
3280 copy_term(A-B, D-E),
3281 functor(E, F, G),
3282 functor(H, F, G),
3283 E=..[_|I],
3284 H=..[_|J],
3285 maplist(dynamic_type_check_call, I, J, K),
3286 list2conj(K, L),
3287 C=('$dynamic_type_check'(D, H):-L).
3288dynamic_type_check_alias_clause(A, B, C) :-
3289 C=('$dynamic_type_check'(A, D):-'$dynamic_type_check'(B, D)).
3290dynamic_type_check_call(A, B, C) :-
3291 ( A==any
3292 -> C=true
3293 ; C=when(nonvar(B), once('$dynamic_type_check'(A, B)))
3294 ).
3295atomic_types_suspended_constraint(A) :-
3296 A=_/B,
3297 get_constraint_type(A, C),
3298 get_constraint_mode(A, D),
3299 numlist(1, B, E),
3300 maplist(atomic_types_suspended_constraint(A),
3301 C,
3302 D,
3303 E).
3304atomic_types_suspended_constraint(A, B, C, D) :-
3305 ( is_indexed_argument(A, D)
3306 -> ( C==(?)
3307 -> atomic_type(B)
3308 ; true
3309 )
3310 ; true
3311 ).
3312storage_analysis(A) :-
3313 ( chr_pp_flag(storage_analysis, on)
3314 -> check_constraint_storages(A)
3315 ; true
3316 ).
3317check_constraint_storages(A) :-
3318 maplist(check_constraint_storage, A).
3319check_constraint_storage(A) :-
3320 get_max_occurrence(A, B),
3321 check_occurrences_storage(A, 1, B).
3322check_occurrences_storage(A, B, C) :-
3323 ( B>C
3324 -> stored_completing(A, 1, 0)
3325 ; check_occurrence_storage(A, B),
3326 D is B+1,
3327 check_occurrences_storage(A, D, C)
3328 ).
3329check_occurrence_storage(A, B) :-
3330 get_occurrence(A, B, C, D, E),
3331 ( is_passive(C, D)
3332 -> stored(A, B, maybe)
3333 ; get_rule(C, F),
3334 F=pragma(rule(G, H, I, J), ids(K, L), _, _, _),
3335 ( E==simplification,
3336 select2(D, M, K, G, _, _)
3337 -> check_storage_head1(M, B, G, H, I)
3338 ; E==propagation,
3339 select2(D, N, L, H, _, _)
3340 -> check_storage_head2(N, B, G, J)
3341 )
3342 ).
3343check_storage_head1(A, B, C, D, E) :-
3344 functor(A, F, G),
3345 H=F/G,
3346 ( C==[A],
3347 D==[],
3348 guard_entailment:entails_guard([chr_pp_headvariables(A)], E),
3349 A=..[_|I],
3350 no_matching(I, [])
3351 -> stored(H, B, no)
3352 ; stored(H, B, maybe)
3353 ).
3354no_matching([], _).
3355no_matching([A|B], C) :-
3356 var(A),
3357 \+ memberchk_eq(A, C),
3358 no_matching(B, [A|C]).
3359check_storage_head2(A, B, C, D) :-
3360 functor(A, E, F),
3361 G=E/F,
3362 ( C\==[],
3363 D==true
3364 -> stored(G, B, maybe)
3365 ; stored(G, B, yes)
3366 ).
3367constraints_code(A, B) :-
3368 ( chr_pp_flag(reduced_indexing, on),
3369 forall(C,
3370 A,
3371 chr_translate:only_ground_indexed_arguments(C))
3372 -> none_suspended_on_variables
3373 ; true
3374 ),
3375 constraints_code1(A, B, []).
3376constraint_prelude(A/B, C) :-
3377 vars_susp(B, D, E, F),
3378 G=..[A|D],
3379 make_suspension_continuation_goal(A/B, F, H),
3380 build_head(A, B, [0], F, I),
3381 ( chr_pp_flag(debugable, on)
3382 -> insert_constraint_goal(A/B, E, D, J),
3383 attach_constraint_atom(A/B, K, E, L),
3384 delay_phase_end(validate_store_type_assumptions,
3385 chr_translate:update_suspension_field(A/B, E, state, inactive, M)),
3386 insert_constraint_internal_constraint_goal(A/B,
3387 K,
3388 E,
3389 H,
3390 D,
3391 N),
3392 ( get_constraint_type(A/B, O)
3393 -> maplist(dynamic_type_check_call, O, D, P),
3394 list2conj(P, Q)
3395 ; Q=true
3396 ),
3397 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))
3398 ; get_allocation_occurrence(A/B, 0)
3399 -> gen_insert_constraint_internal_goal(A/B,
3400 R,
3401 F,
3402 D,
3403 E),
3404 delay_phase_end(validate_store_type_assumptions,
3405 chr_translate:update_suspension_field(A/B, E, state, inactive, M)),
3406 C=(G:-R, M, I)
3407 ; C=(G:-I)
3408 ).
3409make_suspension_continuation_goal(A/B, C, D) :-
3410 ( may_trigger(A/B)
3411 -> build_head(A, B, [0], C, E),
3412 ( chr_pp_flag(debugable, off)
3413 -> D=E
3414 ; get_target_module(F),
3415 D=F:E
3416 )
3417 ; D=true
3418 ).
3419gen_cond_attach_clause(A/B, C, D, E) :-
3420 ( is_finally_stored(A/B)
3421 -> get_allocation_occurrence(A/B, F),
3422 get_max_occurrence(A/B, G),
3423 ( chr_pp_flag(debugable, off),
3424 G<F
3425 -> ( only_ground_indexed_arguments(A/B)
3426 -> gen_insert_constraint_internal_goal(A/B,
3427 H,
3428 I,
3429 J,
3430 K)
3431 ; gen_cond_attach_goal(A/B,
3432 H,
3433 I,
3434 J,
3435 K)
3436 )
3437 ; vars_susp(B, J, K, I),
3438 gen_uncond_attach_goal(A/B,
3439 K,
3440 J,
3441 H,
3442 _)
3443 ),
3444 build_head(A, B, C, I, L),
3445 M=(L:-H),
3446 add_dummy_location(M, N),
3447 D=[N|E]
3448 ; D=E
3449 ).
3450gen_cond_attach_goal(A/B, C, D, E, F) :-
3451 vars_susp(B, E, F, D),
3452 make_suspension_continuation_goal(A/B, D, G),
3453 ( get_store_type(A/B, var_assoc_store(_, _))
3454 -> H=true
3455 ; attach_constraint_atom(A/B, I, F, H)
3456 ),
3457 _=..[A|E],
3458 insert_constraint_goal(A/B, F, E, J),
3459 insert_constraint_internal_constraint_goal(A/B,
3460 I,
3461 F,
3462 G,
3463 E,
3464 K),
3465 ( may_trigger(A/B)
3466 -> activate_constraint_goal(A/B,
3467 (J, H),
3468 I,
3469 F,
3470 _,
3471 L),
3472 C=(var(F)->K, J, H;L)
3473 ; C=(K, J, H)
3474 ).
3475gen_insert_constraint_internal_goal(A/B, C, D, E, F) :-
3476 vars_susp(B, E, F, D),
3477 make_suspension_continuation_goal(A/B, D, G),
3478 ( \+ only_ground_indexed_arguments(A/B),
3479 \+ get_store_type(A/B, var_assoc_store(_, _))
3480 -> attach_constraint_atom(A/B, H, F, I)
3481 ; I=true
3482 ),
3483 _=..[A|E],
3484 insert_constraint_goal(A/B, F, E, J),
3485 insert_constraint_internal_constraint_goal(A/B,
3486 H,
3487 F,
3488 G,
3489 E,
3490 K),
3491 ( only_ground_indexed_arguments(A/B),
3492 chr_pp_flag(debugable, off)
3493 -> C=(K, J)
3494 ; C=(K, J, I)
3495 ).
3496gen_uncond_attach_goal(A, B, C, D, E) :-
3497 ( \+ only_ground_indexed_arguments(A),
3498 \+ get_store_type(A, var_assoc_store(_, _))
3499 -> attach_constraint_atom(A, F, B, G)
3500 ; G=true
3501 ),
3502 insert_constraint_goal(A, B, C, H),
3503 ( chr_pp_flag(late_allocation, on)
3504 -> activate_constraint_goal(A,
3505 (H, G),
3506 F,
3507 B,
3508 E,
3509 D)
3510 ; activate_constraint_goal(A, true, F, B, E, D)
3511 ).
3512head1_code(A, B, C, D, E, F, G, H, I, J) :-
3513 E=pragma(K, _, _, _, L),
3514 K=rule(_, M, _, _),
3515 ( M==[]
3516 -> reorder_heads(L, A, C, D, N, O),
3517 simplification_code(A,
3518 B,
3519 N,
3520 O,
3521 E,
3522 F,
3523 G,
3524 H,
3525 I,
3526 J)
3527 ; simpagation_head1_code(A,
3528 B,
3529 C,
3530 D,
3531 E,
3532 F,
3533 G,
3534 H,
3535 I,
3536 J)
3537 ).
3538head2_code(A, B, C, D, E, F, G, H, I, J) :-
3539 E=pragma(K, _, _, _, L),
3540 K=rule(M, _, _, _),
3541 ( M==[]
3542 -> reorder_heads(L, A, C, D, N, O),
3543 propagation_code(A,
3544 B,
3545 N,
3546 O,
3547 K,
3548 L,
3549 F,
3550 G,
3551 H,
3552 I,
3553 J)
3554 ; simpagation_head2_code(A,
3555 B,
3556 C,
3557 D,
3558 E,
3559 F,
3560 G,
3561 H,
3562 I,
3563 J)
3564 ).
3565gen_alloc_inc_clause(A/B, C, D, E, F) :-
3566 vars_susp(B, G, H, I),
3567 build_head(A, B, D, I, J),
3568 inc_id(D, K),
3569 build_head(A, B, K, I, L),
3570 gen_occ_allocation(A/B, C, G, H, M),
3571 N=(J:-M, L),
3572 add_dummy_location(N, O),
3573 E=[O|F].
3574gen_occ_allocation(A, B, C, D, E) :-
3575 get_allocation_occurrence(A, F),
3576 get_occurrence_code_id(A, F, G),
3577 get_occurrence_code_id(A, B, H),
3578 ( chr_pp_flag(debugable, off),
3579 H==G
3580 -> allocate_constraint_goal(A, D, C, I),
3581 ( may_trigger(A)
3582 -> E=(var(D)->I;true)
3583 ; E=I
3584 )
3585 ; E=true
3586 ).
3587gen_occ_allocation_in_guard(A, B, C, D, E) :-
3588 get_allocation_occurrence(A, F),
3589 ( chr_pp_flag(debugable, off),
3590 B<F
3591 -> allocate_constraint_goal(A, D, C, G),
3592 ( may_trigger(A)
3593 -> E=(var(D)->G;true)
3594 ; E=G
3595 )
3596 ; E=true
3597 ).
3598guard_via_reschedule_new(A, B, C, D, E, F) :-
3599 ( chr_pp_flag(guard_via_reschedule, on)
3600 -> guard_via_reschedule_main_new(A,
3601 B,
3602 C,
3603 D,
3604 E,
3605 G),
3606 list2conj(G, F)
3607 ; length(A, H),
3608 length(E, H),
3609 length(B, I),
3610 length(D, I),
3611 append(E, D, J),
3612 list2conj(J, F)
3613 ).
3614guard_via_reschedule_main_new(A, B, C, D, E, F) :-
3615 initialize_unit_dictionary(C, G),
3616 maplist(wrap_in_functor(lookup), A, H),
3617 maplist(wrap_in_functor(guard), B, I),
3618 build_units(H, I, G, J),
3619 dependency_reorder(J, K),
3620 wrappedunits2lists(K, L, E, F),
3621 sort(L, M),
3622 snd_of_pairs(M, D).
3623wrappedunits2lists([], [], [], []).
3624wrappedunits2lists([unit(A, B, _, _)|C], D, E, F) :-
3625 F=[G|H],
3626 ( B=lookup(I)
3627 -> E=[G|J],
3628 D=K
3629 ; B=guard(I)
3630 -> D=[A-G|K],
3631 E=J
3632 ),
3633 wrappedunits2lists(C, K, J, H).
3634guard_splitting(A, B) :-
3635 A=rule(C, D, E, _),
3636 append(C, D, F),
3637 conj2list(E, G),
3638 term_variables(F, H),
3639 split_off_simple_guard_new(G, H, I, J),
3640 append(I, [K], B),
3641 term_variables(J, L),
3642 ground_vars(F, M),
3643 list_difference_eq(H, M, N),
3644 intersect_eq(N, L, O),
3645 maplist(chr_lock, O, P),
3646 maplist(chr_unlock, O, Q),
3647 list2conj(P, R),
3648 list2conj(Q, S),
3649 list2conj(J, T),
3650 K=(R, T, S).
3651guard_body_copies3(A, B, C, D, E) :-
3652 A=rule(_, _, _, F),
3653 my_term_copy(B, C, G, D),
3654 my_term_copy(F, G, E).
3655split_off_simple_guard_new([], _, [], []).
3656split_off_simple_guard_new([A|B], C, D, E) :-
3657 ( simple_guard_new(A, C)
3658 -> D=[A|F],
3659 split_off_simple_guard_new(B, C, F, E)
3660 ; D=[],
3661 E=[A|B]
3662 ).
3663simple_guard_new(A, B) :-
3664 builtin_binds_b(A, C),
3665 not(( member(D, C),
3666 memberchk_eq(D, B)
3667 )).
3668dependency_reorder(A, B) :-
3669 dependency_reorder(A, [], B).
3670dependency_reorder([], A, B) :-
3671 reverse(A, B).
3672dependency_reorder([A|B], C, D) :-
3673 A=unit(_, _, E, F),
3674 ( E==fixed
3675 -> G=[A|C]
3676 ; dependency_insert(C, A, F, G)
3677 ),
3678 dependency_reorder(B, G, D).
3679dependency_insert([], A, _, [A]).
3680dependency_insert([A|B], C, D, E) :-
3681 A=unit(F, _, _, _),
3682 ( memberchk(F, D)
3683 -> E=[C, A|B]
3684 ; E=[A|G],
3685 dependency_insert(B, C, D, G)
3686 ).
3687build_units(A, B, C, D) :-
3688 build_retrieval_units(A, 1, E, C, F, D, G),
3689 build_guard_units(B, E, F, G).
3690build_retrieval_units([], A, A, B, B, C, C).
3691build_retrieval_units([A|B], C, D, E, F, G, H) :-
3692 term_variables(A, I),
3693 update_unit_dictionary(I, C, E, J, [], K),
3694 G=[unit(C, A, fixed, K)|L],
3695 M is C+1,
3696 build_retrieval_units(B,
3697 M,
3698 D,
3699 J,
3700 F,
3701 L,
3702 H).
3703initialize_unit_dictionary(A, B) :-
3704 term_variables(A, C),
3705 pair_all_with(C, 0, B).
3706update_unit_dictionary([], _, A, A, B, B).
3707update_unit_dictionary([A|B], C, D, E, F, G) :-
3708 ( lookup_eq(D, A, H)
3709 -> ( ( H==C
3710 ; memberchk(H, F)
3711 )
3712 -> I=F
3713 ; I=[H|F]
3714 ),
3715 J=D
3716 ; J=[A-C|D],
3717 I=F
3718 ),
3719 update_unit_dictionary(B, C, J, E, I, G).
3720build_guard_units(A, B, C, D) :-
3721 ( A=[E]
3722 -> D=[unit(B, E, fixed, [])]
3723 ; A=[E|F]
3724 -> term_variables(E, G),
3725 update_unit_dictionary2(G, B, C, H, [], I),
3726 D=[unit(B, E, movable, I)|J],
3727 K is B+1,
3728 build_guard_units(F, K, H, J)
3729 ).
3730update_unit_dictionary2([], _, A, A, B, B).
3731update_unit_dictionary2([A|B], C, D, E, F, G) :-
3732 ( lookup_eq(D, A, H)
3733 -> ( ( H==C
3734 ; memberchk(H, F)
3735 )
3736 -> I=F
3737 ; I=[H|F]
3738 ),
3739 J=[A-C|D]
3740 ; J=[A-C|D],
3741 I=F
3742 ),
3743 update_unit_dictionary2(B, C, J, E, I, G).
3744functional_dependency_analysis(A) :-
3745 ( fail,
3746 chr_pp_flag(functional_dependency_analysis, on)
3747 -> functional_dependency_analysis_main(A)
3748 ; true
3749 ).
3750functional_dependency_analysis_main([]).
3751functional_dependency_analysis_main([A|B]) :-
3752 ( discover_unique_pattern(A, C, D, E, F)
3753 -> functional_dependency(C, D, E, F)
3754 ; true
3755 ),
3756 functional_dependency_analysis_main(B).
3757discover_unique_pattern(A, B/C, D, E, F) :-
3758 A=pragma(G, _, _, _, D),
3759 G=rule(H, I, J, _),
3760 ( H=[K],
3761 I=[L]
3762 -> true
3763 ; H=[K, L],
3764 I==[]
3765 -> true
3766 ),
3767 check_unique_constraints(K, L, J, D, M),
3768 term_variables(K, N),
3769 \+ ( member(O, N),
3770 lookup_eq(M, O, P),
3771 memberchk_eq(P, N)
3772 ),
3773 select_pragma_unique_variables(N, M, Q),
3774 copy_term_nat(K-Q, E-F),
3775 functor(K, B, C).
3776select_pragma_unique_variables([], _, []).
3777select_pragma_unique_variables([A|B], C, D) :-
3778 ( lookup_eq(C, A, _)
3779 -> D=E
3780 ; D=[A|E]
3781 ),
3782 select_pragma_unique_variables(B, C, E).
3783set_semantics_rules(A) :-
3784 ( fail,
3785 chr_pp_flag(set_semantics_rule, on)
3786 -> set_semantics_rules_main(A)
3787 ; true
3788 ).
3789set_semantics_rules_main([]).
3790set_semantics_rules_main([A|B]) :-
3791 set_semantics_rule_main(A),
3792 set_semantics_rules_main(B).
3793set_semantics_rule_main(A) :-
3794 A=pragma(B, C, _, _, D),
3795 ( B=rule([E], [F], true, _),
3796 C=ids([G], [H]),
3797 \+ is_passive(D, G),
3798 functor(E, I, J),
3799 get_functional_dependency(I/J, D, K, L),
3800 copy_term_nat(K-L, E-M),
3801 copy_term_nat(K-L, F-N),
3802 M==N
3803 -> passive(D, H)
3804 ; true
3805 ).
3806check_unique_constraints(A, B, C, D, E) :-
3807 \+ any_passive_head(D),
3808 variable_replacement(A-B, B-A, E),
3809 copy_with_variable_replacement(C, F, E),
3810 negate_b(C, G),
3811 once(entails_b(G, F)).
3812symmetry_analysis(A) :-
3813 ( chr_pp_flag(check_unnecessary_active, off)
3814 -> true
3815 ; symmetry_analysis_main(A)
3816 ).
3817symmetry_analysis_main([]).
3818symmetry_analysis_main([A|B]) :-
3819 A=pragma(C, ids(D, E), _, _, F),
3820 C=rule(G, H, _, _),
3821 ( ( \+ chr_pp_flag(check_unnecessary_active, simplification)
3822 ; H==[]
3823 ),
3824 G\==[]
3825 -> symmetry_analysis_heads_simplification(G,
3826 D,
3827 [],
3828 [],
3829 C,
3830 F),
3831 symmetry_analysis_heads_propagation(H,
3832 E,
3833 [],
3834 [],
3835 C,
3836 F)
3837 ; true
3838 ),
3839 symmetry_analysis_main(B).
3840symmetry_analysis_heads_simplification([], [], _, _, _, _).
3841symmetry_analysis_heads_simplification([A|B], [C|D], E, F, G, H) :-
3842 ( \+ is_passive(H, C),
3843 member2(E, F, I-J),
3844 \+ is_passive(H, J),
3845 variable_replacement(I, A, K),
3846 copy_with_variable_replacement(G, L, K),
3847 identical_guarded_rules(G, L)
3848 -> passive(H, C)
3849 ; true
3850 ),
3851 symmetry_analysis_heads_simplification(B,
3852 D,
3853 [A|E],
3854 [C|F],
3855 G,
3856 H).
3857symmetry_analysis_heads_propagation([], [], _, _, _, _).
3858symmetry_analysis_heads_propagation([A|B], [C|D], E, F, G, H) :-
3859 ( \+ is_passive(H, C),
3860 member2(E, F, I-J),
3861 \+ is_passive(H, J),
3862 variable_replacement(I, A, K),
3863 copy_with_variable_replacement(G, L, K),
3864 identical_rules(G, L)
3865 -> passive(H, C)
3866 ; true
3867 ),
3868 symmetry_analysis_heads_propagation(B,
3869 D,
3870 [A|E],
3871 [C|F],
3872 G,
3873 H).
3874simplification_code(A, B, C, D, E, F, G, H, I, J) :-
3875 E=pragma(K, _, _, _, L),
3876 head_info1(A, F, _, M, N, O),
3877 build_head(F, H, N, P),
3878 get_constraint_mode(F, Q),
3879 head_arg_matches(O, Q, [], R, S, [], T),
3880 guard_splitting(K, U),
3881 ( is_stored_in_guard(F, L)
3882 -> V=[_|U]
3883 ; V=U
3884 ),
3885 guard_via_reschedule_new(C,
3886 V,
3887 A,
3888 W,
3889 X,
3890 Y),
3891 rest_heads_retrieval_and_matching(C,
3892 D,
3893 A,
3894 X,
3895 Z,
3896 S,
3897 A1,
3898 [],
3899 [],
3900 [],
3901 T,
3902 _),
3903 guard_body_copies3(K, V, A1, W, B1),
3904 ( is_stored_in_guard(F, L)
3905 -> gen_occ_allocation_in_guard(F,
3906 G,
3907 C1,
3908 M,
3909 D1),
3910 gen_uncond_attach_goal(F, M, C1, E1, _),
3911 W=[F1|_],
3912 F1=(D1, E1)
3913 ; true
3914 ),
3915 partner_constraint_detachments(Z, C, A1, G1),
3916 active_constraint_detachment(H, M, A, A1, H1),
3917 ( chr_pp_flag(debugable, on)
3918 -> K=rule(_, _, I1, J1),
3919 my_term_copy(I1-J1, A1, K1-L1),
3920 sort_by_key([M|Z], [B|D], M1),
3921 N1='chr debug_event'(try(M1, [], K1, L1)),
3922 O1='chr debug_event'(apply(M1, [], K1, L1)),
3923 instrument_goal(P1, N1, O1, Q1)
3924 ; Q1=P1
3925 ),
3926 actual_cut(F, G, P1),
3927 R1=(P:-R, Y, Q1, G1, H1, B1),
3928 add_location(R1, L, S1),
3929 I=[S1|J].
3930actual_cut(A, B, C) :-
3931 ( unconditional_occurrence(A, B),
3932 chr_pp_flag(late_allocation, on)
3933 -> C=true
3934 ; C=!
3935 ).
3936add_location(A, B, C) :-
3937 ( chr_pp_flag(line_numbers, on)
3938 -> get_line_number(B, D:E),
3939 C='$source_location'(D, E):A
3940 ; C=A
3941 ).
3942add_dummy_location(A, B) :-
3943 ( chr_pp_flag(line_numbers, on)
3944 -> get_chr_source_file(C),
3945 B='$source_location'(C, 1):A
3946 ; B=A
3947 ).
3948head_arg_matches(A, B, C, D, E) :-
3949 head_arg_matches(A, B, C, D, E, [], _).
3950head_arg_matches(A, B, C, D, E, F, G) :-
3951 head_arg_matches_(A, B, C, F, H, E, G),
3952 list2conj(H, D).
3953head_arg_matches_([], [], A, B, [], A, B).
3954head_arg_matches_([silent(A-_)|B], [C|D], E, F, G, H, I) :-
3955 !,
3956 ( C==(+)
3957 -> term_variables(A, J, F),
3958 head_arg_matches_(B,
3959 D,
3960 E,
3961 J,
3962 G,
3963 H,
3964 I)
3965 ; head_arg_matches_(B,
3966 D,
3967 E,
3968 F,
3969 G,
3970 H,
3971 I)
3972 ).
3973head_arg_matches_([A-B|C], [D|E], F, G, H, I, J) :-
3974 ( var(A)
3975 -> ( lookup_eq(F, A, K)
3976 -> ( D=(+)
3977 -> ( memberchk_eq(A, G)
3978 -> H=[B=K|L],
3979 M=G
3980 ; H=[B==K|L],
3981 M=[A|G]
3982 )
3983 ; H=[B==K|L],
3984 M=G
3985 ),
3986 N=F
3987 ; N=[A-B|F],
3988 H=L,
3989 ( D=(+)
3990 -> M=[A|G]
3991 ; M=G
3992 )
3993 ),
3994 O=C,
3995 P=E
3996 ; ground(A),
3997 A='$chr_identifier_match'(Q, R)
3998 -> identifier_label_atom(R, B, Q, S),
3999 H=[S|L],
4000 F=N,
4001 M=G,
4002 O=C,
4003 P=E
4004 ; atomic(A)
4005 -> ( D=(+)
4006 -> H=[B=A|L]
4007 ; H=[B==A|L]
4008 ),
4009 F=N,
4010 M=G,
4011 O=C,
4012 P=E
4013 ; D==(+),
4014 is_ground(G, A)
4015 -> copy_with_variable_replacement(A, T, F),
4016 H=[B=T|L],
4017 F=N,
4018 M=G,
4019 O=C,
4020 P=E
4021 ; D==(?),
4022 is_ground(G, A)
4023 -> copy_with_variable_replacement(A, T, F),
4024 H=[B==T|L],
4025 F=N,
4026 M=G,
4027 O=C,
4028 P=E
4029 ; A=..[_|U],
4030 functor(A, V, W),
4031 functor(X, V, W),
4032 X=..[_|Y],
4033 ( D=(+)
4034 -> H=[B=X|L]
4035 ; H=[nonvar(B), B=X|L]
4036 ),
4037 pairup(U, Y, Z),
4038 append(Z, C, O),
4039 replicate(W, D, A1),
4040 append(A1, E, P),
4041 N=F,
4042 M=G
4043 ),
4044 head_arg_matches_(O,
4045 P,
4046 N,
4047 M,
4048 L,
4049 I,
4050 J).
4051add_heads_types([], A, A).
4052add_heads_types([A|B], C, D) :-
4053 add_head_types(A, C, E),
4054 add_heads_types(B, E, D).
4055add_head_types(A, B, C) :-
4056 functor(A, D, E),
4057 get_constraint_type_det(D/E, F),
4058 A=..[_|G],
4059 add_args_types(G, F, B, C).
4060add_args_types([], [], A, A).
4061add_args_types([A|B], [C|D], E, F) :-
4062 add_arg_types(A, C, E, G),
4063 add_args_types(B, D, G, F).
4064add_arg_types(A, B, C, D) :-
4065 ( B==any
4066 -> D=C
4067 ; var(A)
4068 -> ( lookup_eq(C, A, _)
4069 -> D=C
4070 ; D=[A-B|C]
4071 )
4072 ; D=C
4073 ).
4074add_heads_ground_variables([], A, A).
4075add_heads_ground_variables([A|B], C, D) :-
4076 add_head_ground_variables(A, C, E),
4077 add_heads_ground_variables(B, E, D).
4078add_head_ground_variables(A, B, C) :-
4079 functor(A, D, E),
4080 get_constraint_mode(D/E, F),
4081 A=..[_|G],
4082 add_arg_ground_variables(G, F, B, C).
4083add_arg_ground_variables([], [], A, A).
4084add_arg_ground_variables([A|B], [C|D], E, F) :-
4085 ( C==(+)
4086 -> term_variables(A, G),
4087 add_var_ground_variables(G, E, H)
4088 ; E=H
4089 ),
4090 add_arg_ground_variables(B, D, H, F).
4091add_var_ground_variables([], A, A).
4092add_var_ground_variables([A|B], C, D) :-
4093 ( memberchk_eq(A, C)
4094 -> E=C
4095 ; E=[A|C]
4096 ),
4097 add_var_ground_variables(B, E, D).
4098is_ground(A, B) :-
4099 ( ground(B)
4100 -> true
4101 ; compound(B)
4102 -> B=..[_|C],
4103 maplist(is_ground(A), C)
4104 ; memberchk_eq(B, A)
4105 ).
4106check_ground(A, B, C) :-
4107 term_variables(B, D),
4108 check_ground_variables(D, A, C).
4109check_ground_variables([], _, true).
4110check_ground_variables([A|B], C, D) :-
4111 ( memberchk_eq(A, C)
4112 -> check_ground_variables(B, C, D)
4113 ; D=(ground(A), E),
4114 check_ground_variables(B, C, E)
4115 ).
4116rest_heads_retrieval_and_matching(A, B, C, D, E, F, G, H, I, J) :-
4117 rest_heads_retrieval_and_matching(A,
4118 B,
4119 C,
4120 D,
4121 E,
4122 F,
4123 G,
4124 H,
4125 I,
4126 J,
4127 [],
4128 _).
4129rest_heads_retrieval_and_matching(A, B, C, D, E, F, G, H, I, J, K, L) :-
4130 ( A=[_|_]
4131 -> rest_heads_retrieval_and_matching_n(A,
4132 B,
4133 H,
4134 I,
4135 C,
4136 D,
4137 E,
4138 F,
4139 G,
4140 J,
4141 K,
4142 L)
4143 ; D=[],
4144 E=[],
4145 F=G,
4146 K=L
4147 ).
4148rest_heads_retrieval_and_matching_n([], _, _, _, _, [], [], A, A, _, B, B).
4149rest_heads_retrieval_and_matching_n([A|B], [_|C], D, E, F, [G|H], [I|J], K, L, _, M, N) :-
4150 functor(A, O, P),
4151 head_info(A, P, Q, _, _, R),
4152 get_store_type(O/P, S),
4153 ( S==default
4154 -> passive_head_via(A, [F|D], K, T, U),
4155 delay_phase_end(validate_store_type_assumptions,
4156 (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))),
4157 get_constraint_mode(O/P, X),
4158 head_arg_matches(R,
4159 X,
4160 K,
4161 Y,
4162 Z,
4163 M,
4164 A1),
4165 B1=R,
4166 sbag_member_call(I, U, C1),
4167 D1=(T, C1, I=V, W),
4168 inline_matching_goal(Y, E1)
4169 ; delay_phase_end(validate_store_type_assumptions,
4170 (static_suspension_term(O/P, V), get_static_suspension_term_field(arguments, O/P, V, Q))),
4171 existential_lookup(S,
4172 A,
4173 [F|D],
4174 K,
4175 M,
4176 V,
4177 D1,
4178 I,
4179 R,
4180 B1),
4181 get_constraint_mode(O/P, X),
4182 F1=X,
4183 head_arg_matches(B1,
4184 F1,
4185 K,
4186 Y,
4187 Z,
4188 M,
4189 A1),
4190 filter_append(B1, Z, G1),
4191 translate(A1, G1, H1),
4192 translate(A1, Z, I1),
4193 inline_matching_goal(Y, E1, H1, I1)
4194 ),
4195 different_from_other_susps(A, I, D, E, J1),
4196 G=(D1, J1, E1),
4197 rest_heads_retrieval_and_matching_n(B,
4198 C,
4199 [A|D],
4200 [I|E],
4201 F,
4202 H,
4203 J,
4204 Z,
4205 L,
4206 _,
4207 A1,
4208 N).
4209inline_matching_goal(A, B) :-
4210 inline_matching_goal(A, B, [], []).
4211inline_matching_goal(A==B, true, C, D) :-
4212 memberchk_eq(A, C),
4213 memberchk_eq(B, D),
4214 A=B,
4215 !.
4216inline_matching_goal((A, B), (C, D), E, F) :-
4217 !,
4218 inline_matching_goal(A, C, E, F),
4219 inline_matching_goal(B, D, E, F).
4220inline_matching_goal(A, A, _, _).
4221filter_mode([], _, _, []).
4222filter_mode([A-B|C], [_-D|E], [F|G], H) :-
4223 ( B==D
4224 -> H=[F|I],
4225 filter_mode(C, E, G, I)
4226 ; filter_mode([A-B|C], E, G, H)
4227 ).
4228filter_append([], A, A).
4229filter_append([A|B], C, D) :-
4230 ( A=silent(_)
4231 -> filter_append(B, C, D)
4232 ; D=[A|E],
4233 filter_append(B, C, E)
4234 ).
4235check_unique_keys([], _).
4236check_unique_keys([A|B], C) :-
4237 lookup_eq(C, A, _),
4238 check_unique_keys(B, C).
4239different_from_other_susps(A, B, C, D, E) :-
4240 different_from_other_susps_(C, D, A, B, F),
4241 list2conj(F, E).
4242different_from_other_susps_(_, [], _, _, []) :-
4243 !.
4244different_from_other_susps_([A|B], [C|D], E, F, G) :-
4245 ( functor(E, H, I),
4246 functor(A, H, I),
4247 copy_term_nat(A-E, J-K),
4248 \+ \+ J=K
4249 -> G=[F\==C|L]
4250 ; G=L
4251 ),
4252 different_from_other_susps_(B, D, E, F, L).
4253passive_head_via(A, B, C, D, E) :-
4254 functor(A, F, G),
4255 get_constraint_index(F/G, _),
4256 common_variables(A, B, H),
4257 ground_vars([A], I),
4258 list_difference_eq(H, I, J),
4259 global_list_store_name(F/G, K),
4260 L=nb_getval(K, E),
4261 get_constraint_mode(F/G, M),
4262 ( N==[]
4263 -> D=L
4264 ; member(O, J),
4265 nth1(P, M, -),
4266 arg(P, A, Q),
4267 Q==O
4268 -> translate([O], C, [R]),
4269 gen_get_mod_constraints(F/G, R, S, E),
4270 D=S
4271 ; translate(J, C, N),
4272 add_heads_types(B, [], T),
4273 my_term_copy(T, C, U),
4274 gen_get_mod_constraints(F/G,
4275 N,
4276 U,
4277 V,
4278 S,
4279 E),
4280 D=(V->S;L)
4281 ).
4282common_variables(A, B, C) :-
4283 term_variables(A, D),
4284 term_variables(B, E),
4285 intersect_eq(D, E, C).
4286gen_get_mod_constraints(A, B, C, D, E, F) :-
4287 via_goal(B, C, D, G),
4288 get_target_module(H),
4289 E=(get_attr(G, H, I), J),
4290 get_max_constraint_index(K),
4291 ( K==1
4292 -> J=true,
4293 F=I
4294 ; get_constraint_index(A, L),
4295 get_suspensions(K, L, I, J, F)
4296 ).
4297via_goal(A, B, C, D) :-
4298 ( A=[]
4299 -> C=fail
4300 ; A=[E]
4301 -> lookup_type(B, E, F),
4302 ( atomic_type(F)
4303 -> C=var(E),
4304 E=D
4305 ; C='chr newvia_1'(E, D)
4306 )
4307 ; A=[E, G]
4308 -> C='chr newvia_2'(E, G, D)
4309 ; C='chr newvia'(A, D)
4310 ).
4311lookup_type(A, B, C) :-
4312 ( lookup_eq(A, B, C)
4313 -> true
4314 ; C=any
4315 ).
4316gen_get_mod_constraints(A, B, C, D) :-
4317 get_target_module(E),
4318 C=(get_attr(B, E, F), G),
4319 get_max_constraint_index(H),
4320 ( H==1
4321 -> G=true,
4322 D=F
4323 ; get_constraint_index(A, I),
4324 get_suspensions(H, I, F, G, D)
4325 ).
4326guard_body_copies(A, B, C, D) :-
4327 guard_body_copies2(A, B, E, D),
4328 list2conj(E, C).
4329guard_body_copies2(A, B, C, D) :-
4330 A=rule(_, E, F, G),
4331 conj2list(F, H),
4332 split_off_simple_guard(H, B, I, J),
4333 my_term_copy(I-J, B, K, L-M),
4334 append(L, [N], C),
4335 term_variables(J, O),
4336 term_variables(M, P),
4337 ground_vars(E, Q),
4338 list_difference_eq(O, Q, R),
4339 ( chr_pp_flag(guard_locks, off)
4340 -> S=[],
4341 T=[]
4342 ; bagof(U-V,
4343 W^X^(lists:member(W, R), pairlist:lookup_eq(B, W, X), memberchk_eq(X, P), chr_lock(X, U), chr_unlock(X, V)),
4344 Y)
4345 -> once(pairup(S, T, Y))
4346 ; S=[],
4347 T=[]
4348 ),
4349 list2conj(S, Z),
4350 list2conj(T, A1),
4351 list2conj(M, B1),
4352 N=(Z, B1, A1),
4353 my_term_copy(G, K, D).
4354split_off_simple_guard([], _, [], []).
4355split_off_simple_guard([A|B], C, D, E) :-
4356 ( simple_guard(A, C)
4357 -> D=[A|F],
4358 split_off_simple_guard(B, C, F, E)
4359 ; D=[],
4360 E=[A|B]
4361 ).
4362simple_guard(A, B) :-
4363 binds_b(A, C),
4364 \+ ( member(D, C),
4365 lookup_eq(B, D, _)
4366 ).
4367active_constraint_detachment(A, B, C, D, E) :-
4368 functor(C, F, G),
4369 H=F/G,
4370 ( is_stored(H)
4371 -> ( ( A==[0],
4372 chr_pp_flag(store_in_guards, off)
4373 ; get_allocation_occurrence(H, I),
4374 get_max_occurrence(H, J),
4375 J<I
4376 ),
4377 only_ground_indexed_arguments(H),
4378 chr_pp_flag(late_allocation, on)
4379 -> E=true
4380 ; gen_uncond_susp_detachment(C,
4381 B,
4382 active,
4383 D,
4384 K),
4385 ( chr_pp_flag(late_allocation, on)
4386 -> E=(var(B)->true;K)
4387 ; E=K
4388 )
4389 )
4390 ; E=true
4391 ).
4392partner_constraint_detachments([], [], _, true).
4393partner_constraint_detachments([A|B], [C|D], E, (F, G)) :-
4394 gen_uncond_susp_detachment(C, A, partner, E, F),
4395 partner_constraint_detachments(B, D, E, G).
4396gen_uncond_susp_detachment(A, B, C, D, E) :-
4397 functor(A, F, G),
4398 H=F/G,
4399 ( is_stored(H)
4400 -> E=(I, J),
4401 ( chr_pp_flag(debugable, on)
4402 -> I='chr debug_event'(remove(B))
4403 ; I=true
4404 ),
4405 remove_constraint_goal(H,
4406 B,
4407 K,
4408 true,
4409 (L, M),
4410 C,
4411 J),
4412 delete_constraint_goal(A, B, D, L),
4413 ( \+ only_ground_indexed_arguments(H),
4414 \+ get_store_type(H, var_assoc_store(_, _))
4415 -> detach_constraint_atom(H, K, B, M)
4416 ; M=true
4417 )
4418 ; E=true
4419 ).
4420simpagation_head1_code(A, B, C, D, E, F/G, _, H, I, J) :-
4421 E=pragma(K, ids(_, L), _, _, M),
4422 K=rule(_, N, O, P),
4423 head_info(A, G, Q, R, S, T),
4424 get_constraint_mode(F/G, U),
4425 head_arg_matches(T, U, [], V, W, [], X),
4426 build_head(F, G, H, S, Y),
4427 append(C, N, Z),
4428 append(D, L, A1),
4429 reorder_heads(M, A, Z, A1, B1, C1),
4430 guard_splitting(K, D1),
4431 ( is_stored_in_guard(F/G, M)
4432 -> E1=[_|D1]
4433 ; E1=D1
4434 ),
4435 guard_via_reschedule_new(B1,
4436 E1,
4437 A,
4438 F1,
4439 G1,
4440 H1),
4441 rest_heads_retrieval_and_matching(B1,
4442 C1,
4443 A,
4444 G1,
4445 I1,
4446 W,
4447 J1,
4448 [],
4449 [],
4450 [],
4451 X,
4452 _),
4453 split_by_ids(C1,
4454 I1,
4455 D,
4456 K1,
4457 L1,
4458 M1,
4459 N1),
4460 guard_body_copies3(K, E1, J1, F1, O1),
4461 ( is_stored_in_guard(F/G, M)
4462 -> gen_uncond_attach_goal(F/G,
4463 R,
4464 Q,
4465 P1,
4466 _),
4467 F1=[Q1|_],
4468 Q1=P1
4469 ; true
4470 ),
4471 sort_by_key(K1, L1, R1),
4472 partner_constraint_detachments(R1, C, J1, S1),
4473 active_constraint_detachment(H, R, A, J1, T1),
4474 ( chr_pp_flag(debugable, on)
4475 -> my_term_copy(O-P, J1, U1-V1),
4476 sort_by_key([R|K1], [B|L1], W1),
4477 sort_by_key(M1, N1, X1),
4478 Y1='chr debug_event'(try(W1, X1, U1, V1)),
4479 Z1='chr debug_event'(apply(W1, X1, U1, V1)),
4480 instrument_goal(!, Y1, Z1, A2)
4481 ; A2=!
4482 ),
4483 B2=(Y:-V, H1, A2, S1, T1, O1),
4484 add_location(B2, M, C2),
4485 I=[C2|J].
4486split_by_ids([], [], _, [], []).
4487split_by_ids([A|B], [C|D], E, F, G) :-
4488 ( memberchk_eq(A, E)
4489 -> F=[C|H],
4490 G=I
4491 ; F=H,
4492 G=[C|I]
4493 ),
4494 split_by_ids(B, D, E, H, I).
4495split_by_ids([], [], _, [], [], [], []).
4496split_by_ids([A|B], [C|D], E, F, G, H, I) :-
4497 ( memberchk_eq(A, E)
4498 -> F=[C|J],
4499 G=[A|K],
4500 H=L,
4501 I=M
4502 ; F=J,
4503 G=K,
4504 H=[C|L],
4505 I=[A|M]
4506 ),
4507 split_by_ids(B, D, E, J, K, L, M).
4508simpagation_head2_code(A, B, C, D, E, F, G, H, I, J) :-
4509 E=pragma(K, ids(L, M), _, _, N),
4510 K=rule(O, _, P, Q),
4511 append(O, C, R),
4512 append(L, D, S),
4513 reorder_heads(N,
4514 A,
4515 R,
4516 S,
4517 [T|U],
4518 [V|W]),
4519 simpagation_head2_prelude(A,
4520 T,
4521 [U, P, Q],
4522 F,
4523 G,
4524 H,
4525 I,
4526 X),
4527 extend_id(H, Y),
4528 ( memberchk_eq(V, M)
4529 -> simpagation_universal_searches(U,
4530 W,
4531 M,
4532 [T, A],
4533 K,
4534 F,
4535 G,
4536 Z,
4537 A1,
4538 B1,
4539 Y,
4540 C1,
4541 X,
4542 D1)
4543 ; X=D1,
4544 Y=C1,
4545 Z=U,
4546 A1=[T, A],
4547 B1=W
4548 ),
4549 universal_search_iterator_end(A1,
4550 Z,
4551 K,
4552 F,
4553 G,
4554 C1,
4555 D1,
4556 E1),
4557 simpagation_head2_worker(A1,
4558 Z,
4559 B1,
4560 B,
4561 E,
4562 F,
4563 G,
4564 C1,
4565 E1,
4566 J).
4567simpagation_universal_searches([], [], _, A, _, _, _, [], A, [], B, B, C, C).
4568simpagation_universal_searches(A, [B|C], D, E, F, G, H, I, J, K, L, M, N, O) :-
4569 A=[P|Q],
4570 inc_id(L, R),
4571 universal_search_iterator_end(E,
4572 A,
4573 F,
4574 G,
4575 H,
4576 L,
4577 N,
4578 S),
4579 universal_search_iterator(A,
4580 E,
4581 F,
4582 G,
4583 H,
4584 L,
4585 S,
4586 T),
4587 ( memberchk_eq(B, D)
4588 -> simpagation_universal_searches(Q,
4589 C,
4590 D,
4591 [P|E],
4592 F,
4593 G,
4594 H,
4595 I,
4596 J,
4597 K,
4598 R,
4599 M,
4600 T,
4601 O)
4602 ; M=R,
4603 T=O,
4604 I=Q,
4605 J=[P|E],
4606 C=K
4607 ).
4608simpagation_head2_prelude(A, B, C, D/E, F, G, H, I) :-
4609 head_info(A, E, J, K, L, M),
4610 build_head(D, E, G, L, N),
4611 get_constraint_mode(D/E, O),
4612 head_arg_matches(M, O, [], P, Q, [], R),
4613 lookup_passive_head(B, [A], Q, R, S, T),
4614 gen_occ_allocation(D/E, F, J, K, U),
4615 extend_id(G, V),
4616 extra_active_delegate_variables(A,
4617 [B|C],
4618 Q,
4619 W),
4620 append([T|L], W, X),
4621 build_head(D, E, [F|V], X, Y),
4622 Z=(N:-P, S, !, U, Y),
4623 add_dummy_location(Z, A1),
4624 H=[A1|I].
(A, B, C, D) :-
4626 A=..[_|E],
4627 delegate_variables(A, B, C, E, D).
4628passive_delegate_variables(A, B, C, D, E) :-
4629 term_variables(B, F),
4630 delegate_variables(A, C, D, F, E).
4631delegate_variables(A, B, C, D, E) :-
4632 term_variables(A, F),
4633 term_variables(B, G),
4634 intersect_eq(F, G, H),
4635 list_difference_eq(H, D, I),
4636 translate(I, C, E).
4637simpagation_head2_worker([A|B], C, D, _, E, F/G, H, I, J, K) :-
4638 E=pragma(L, ids(M, _), N, _, O),
4639 L=rule(_, _, P, Q),
4640 get_prop_inner_loop_vars(B,
4641 [A, C, P, Q],
4642 R,
4643 S,
4644 T,
4645 U,
4646 V),
4647 gen_var(W),
4648 gen_var(X),
4649 functor(A, Y, Z),
4650 gen_vars(Z, A1),
4651 head_info(A, Z, A1, W, _, B1),
4652 get_constraint_mode(Y/Z, C1),
4653 head_arg_matches(B1, C1, S, D1, E1, [], _),
4654 delay_phase_end(validate_store_type_assumptions,
4655 (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))),
4656 different_from_other_susps(A, W, B, V, H1),
4657 I1=(W=F1, G1, H1, D1),
4658 J1=[[W|X]|R],
4659 build_head(F, G, [H|I], J1, K1),
4660 guard_splitting(L, L1),
4661 ( is_stored_in_guard(F/G, O)
4662 -> M1=[_|L1]
4663 ; M1=L1
4664 ),
4665 guard_via_reschedule_new(C,
4666 M1,
4667 [A|B],
4668 N1,
4669 O1,
4670 P1),
4671 rest_heads_retrieval_and_matching(C,
4672 D,
4673 [A|B],
4674 O1,
4675 Q1,
4676 E1,
4677 R1,
4678 [A|B],
4679 [W|V],
4680 []),
4681 split_by_ids(D, Q1, M, S1, T1),
4682 split_by_ids(D, C, M, U1, _),
4683 partner_constraint_detachments([W|S1],
4684 [A|U1],
4685 R1,
4686 V1),
4687 W1=[X|R],
4688 build_head(F, G, [H|I], W1, X1),
4689 Y1=[[]|R],
4690 build_head(F, G, [H|I], Y1, Z1),
4691 guard_body_copies3(L, M1, R1, N1, A2),
4692 ( is_stored_in_guard(F/G, O)
4693 -> N1=[B2|_]
4694 ; true
4695 ),
4696 ( is_observed(F/G, H)
4697 -> gen_uncond_attach_goal(F/G,
4698 T,
4699 U,
4700 C2,
4701 D2),
4702 gen_state_cond_call(T,
4703 F/G,
4704 X1,
4705 D2,
4706 E2),
4707 gen_state_cond_call(T,
4708 F/G,
4709 Z1,
4710 D2,
4711 F2)
4712 ; C2=true,
4713 E2=X1,
4714 F2=Z1
4715 ),
4716 ( chr_pp_flag(debugable, on)
4717 -> my_term_copy(P-Q, S, G2-H2),
4718 I2='chr debug_event'(try([W|S1], [T|T1], G2, H2)),
4719 J2='chr debug_event'(apply([W|S1], [T|T1], G2, H2))
4720 ; I2=true,
4721 J2=true
4722 ),
4723 ( is_stored_in_guard(F/G, O)
4724 -> B2=C2,
4725 K2=true
4726 ; B2=true,
4727 K2=C2
4728 ),
4729 ( member(unique(_, L2), N),
4730 check_unique_keys(L2, S)
4731 -> M2=(K1:-I1->(P1, I2->J2, V1, K2, A2, F2;Z1);X1)
4732 ; M2=(K1:-I1, P1, I2->J2, V1, K2, A2, E2;X1)
4733 ),
4734 add_location(M2, O, N2),
4735 J=[N2|K].
4736gen_state_cond_call(A, B, C, D, E) :-
4737 ( may_trigger(B)
4738 -> does_use_field(B, generation),
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_field(B, F, generation, D, I), get_static_suspension_term_field(arguments, B, F, J)))
4741 ; delay_phase_end(validate_store_type_assumptions,
4742 (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))),
4743 I=true
4744 ),
4745 E=(A=F, G, I->H, C;true).
4746propagation_code(A, B, C, D, E, F, G, H, I, J, K) :-
4747 ( C==[]
4748 -> propagation_single_headed(A,
4749 B,
4750 E,
4751 F,
4752 G,
4753 H,
4754 I,
4755 J,
4756 K)
4757 ; propagation_multi_headed(A,
4758 C,
4759 D,
4760 E,
4761 F,
4762 G,
4763 H,
4764 I,
4765 J,
4766 K)
4767 ).
4768propagation_single_headed(A, _, B, C, D/E, F, G, H, I) :-
4769 head_info(A, E, J, K, L, M),
4770 build_head(D, E, G, L, N),
4771 inc_id(G, O),
4772 build_head(D, E, O, L, P),
4773 get_constraint_mode(D/E, Q),
4774 head_arg_matches(M, Q, [], R, S, [], _),
4775 guard_body_copies(B, S, T, U),
4776 V=P,
4777 actual_cut(D/E, F, W),
4778 B=rule(_, _, X, Y),
4779 ( chr_pp_flag(debugable, on)
4780 -> my_term_copy(X-Y, S, Z-A1),
4781 B1='chr debug_event'(try([], [K], Z, A1)),
4782 C1='chr debug_event'(apply([], [K], Z, A1)),
4783 instrument_goal(W, B1, C1, D1)
4784 ; D1=W
4785 ),
4786 ( may_trigger(D/E),
4787 \+ has_no_history(C)
4788 -> use_auxiliary_predicate(novel_production),
4789 use_auxiliary_predicate(extend_history),
4790 does_use_history(D/E, F),
4791 gen_occ_allocation(D/E, F, J, K, E1),
4792 ( named_history(C, F1, G1)
4793 -> ( G1==[]
4794 -> empty_named_history_novel_production(F1, H1),
4795 empty_named_history_extend_history(F1, I1)
4796 ; J1=F1
4797 )
4798 ; J1=C
4799 ),
4800 ( var(H1)
4801 -> H1='$novel_production'(K, J1),
4802 I1='$extend_history'(K, J1)
4803 ; true
4804 ),
4805 ( is_observed(D/E, F)
4806 -> gen_uncond_attach_goal(D/E,
4807 K,
4808 J,
4809 K1,
4810 L1),
4811 gen_state_cond_call(K,
4812 D/E,
4813 V,
4814 L1,
4815 M1)
4816 ; K1=true,
4817 M1=V
4818 )
4819 ; E1=true,
4820 H1=true,
4821 I1=true,
4822 ( is_observed(D/E, F)
4823 -> get_allocation_occurrence(D/E, N1),
4824 ( F==N1
4825 -> gen_insert_constraint_internal_goal(D/E,
4826 K1,
4827 L,
4828 J,
4829 K),
4830 L1=0
4831 ; K1=(O1, P1),
4832 gen_occ_allocation(D/E,
4833 F,
4834 J,
4835 K,
4836 O1),
4837 gen_uncond_attach_goal(D/E,
4838 K,
4839 J,
4840 P1,
4841 L1)
4842 ),
4843 gen_state_cond_call(K,
4844 D/E,
4845 V,
4846 L1,
4847 M1)
4848 ; gen_occ_allocation(D/E,
4849 F,
4850 J,
4851 K,
4852 K1),
4853 M1=V
4854 )
4855 ),
4856 ( is_stored_in_guard(D/E, C)
4857 -> Q1=K1,
4858 R1=true
4859 ; Q1=true,
4860 R1=K1
4861 ),
4862 S1=(N:-R, E1, H1, Q1, T, D1, I1, R1, U, M1),
4863 add_location(S1, C, T1),
4864 H=[T1|I].
4865propagation_multi_headed(A, B, C, D, E, F, G, H, I, J) :-
4866 B=[K|L],
4867 propagation_prelude(A,
4868 B,
4869 D,
4870 F,
4871 G,
4872 H,
4873 I,
4874 M),
4875 extend_id(H, N),
4876 propagation_nested_code(L,
4877 [K, A],
4878 C,
4879 D,
4880 E,
4881 F,
4882 G,
4883 N,
4884 M,
4885 J).
4886propagation_prelude(A, [B|C], D, E/F, G, H, I, J) :-
4887 head_info(A, F, K, L, M, N),
4888 build_head(E, F, H, M, O),
4889 get_constraint_mode(E/F, P),
4890 head_arg_matches(N, P, [], Q, R, [], S),
4891 D=rule(_, _, T, U),
4892 extra_active_delegate_variables(A,
4893 [B, C, T, U],
4894 R,
4895 V),
4896 lookup_passive_head(B, [A], R, S, W, X),
4897 gen_occ_allocation(E/F, G, K, L, Y),
4898 extend_id(H, Z),
4899 append([X|M], V, A1),
4900 build_head(E, F, [G|Z], A1, B1),
4901 C1=B1,
4902 D1=(O:-Q, W, !, Y, C1),
4903 add_dummy_location(D1, E1),
4904 I=[E1|J].
4905propagation_nested_code([], [A|B], C, D, E, F, G, H, I, J) :-
4906 universal_search_iterator_end([A|B],
4907 [],
4908 D,
4909 F,
4910 G,
4911 H,
4912 I,
4913 K),
4914 propagation_body(A,
4915 B,
4916 C,
4917 D,
4918 E,
4919 F,
4920 G,
4921 H,
4922 K,
4923 J).
4924propagation_nested_code([A|B], C, D, E, F, G, H, I, J, K) :-
4925 universal_search_iterator_end(C,
4926 [A|B],
4927 E,
4928 G,
4929 H,
4930 I,
4931 J,
4932 L),
4933 universal_search_iterator([A|B],
4934 C,
4935 E,
4936 G,
4937 H,
4938 I,
4939 L,
4940 M),
4941 inc_id(I, N),
4942 propagation_nested_code(B,
4943 [A|C],
4944 D,
4945 E,
4946 F,
4947 G,
4948 H,
4949 N,
4950 M,
4951 K).
4952check_fd_lookup_condition(A, B, _, _) :-
4953 get_store_type(A/B, global_singleton),
4954 !.
4955check_fd_lookup_condition(A, B, C, D) :-
4956 \+ may_trigger(A/B),
4957 get_functional_dependency(A/B, 1, E, F),
4958 copy_term(E-F, C-G),
4959 term_variables(D, H),
4960 intersect_eq(G, H, G),
4961 !.
4962propagation_body(A, B, C, D, E, F/G, H, I, J, K) :-
4963 D=rule(_, L, M, N),
4964 gen_var_susp_list_for_b(B,
4965 [A, M, N],
4966 O,
4967 P,
4968 Q,
4969 R,
4970 S),
4971 flatten(P, T),
4972 init(R, U),
4973 last(R, V),
4974 gen_var(W),
4975 gen_var(X),
4976 functor(A, Y, Z),
4977 gen_vars(Z, A1),
4978 delay_phase_end(validate_store_type_assumptions,
4979 (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))),
4980 D1=(W=B1, C1),
4981 E1=[[W|X]|T],
4982 build_head(F, G, [H|I], E1, F1),
4983 ( check_fd_lookup_condition(Y, Z, A, B)
4984 -> universal_search_iterator_failure_vars(B,
4985 I,
4986 P,
4987 Q,
4988 S,
4989 G1,
4990 H1),
4991 I1=G1
4992 ; I1=[X|T],
4993 H1=I
4994 ),
4995 ( H1=[_]
4996 -> J1=H1
4997 ; J1=[H|H1]
4998 ),
4999 build_head(F, G, J1, I1, K1),
5000 L1=K1,
5001 A=..[_|M1],
5002 pairup(M1, A1, N1),
5003 get_constraint_mode(Y/Z, O1),
5004 head_arg_matches(N1, O1, O, P1, Q1),
5005 different_from_other_susps(A, W, B, U, R1),
5006 guard_body_copies(D, Q1, S1, T1),
5007 get_occurrence(F/G, H, _, U1),
5008 ( is_observed(F/G, H)
5009 -> init(Q, V1),
5010 gen_uncond_attach_goal(F/G,
5011 V,
5012 V1,
5013 W1,
5014 X1),
5015 gen_state_cond_call(V,
5016 F/G,
5017 L1,
5018 X1,
5019 Y1)
5020 ; W1=true,
5021 Y1=L1
5022 ),
5023 ( ( is_least_occurrence(E)
5024 ; has_no_history(E)
5025 )
5026 -> Z1=true,
5027 A2=true
5028 ; \+ may_trigger(F/G),
5029 maplist(is_passive(E), C)
5030 -> Z1=true,
5031 A2=true
5032 ; get_occurrence(F/G, H, _, U1),
5033 use_auxiliary_predicate(novel_production),
5034 use_auxiliary_predicate(extend_history),
5035 does_use_history(F/G, H),
5036 ( named_history(E, B2, C2)
5037 -> ( C2==[]
5038 -> empty_named_history_novel_production(B2, Z1),
5039 empty_named_history_extend_history(B2, A2)
5040 ; reverse([W|U], D2),
5041 named_history_susps(C2,
5042 [U1|C],
5043 [V|D2],
5044 E2),
5045 E2=[F2|_],
5046 ( length(C2, 1)
5047 -> A2='$extend_history'(F2, B2),
5048 Z1='$novel_production'(F2, B2)
5049 ; findall(G2,
5050 ( member(H2, C2),
5051 get_occurrence_from_id(G2,
5052 _,
5053 E,
5054 H2)
5055 ),
5056 I2),
5057 J2=..[t, B2|E2]
5058 )
5059 )
5060 ; F2=V,
5061 maplist(extract_symbol, L, I2),
5062 sort([U1|C], C2),
5063 history_susps(C,
5064 [W|U],
5065 V,
5066 U1,
5067 E2),
5068 J2=..[t, E|E2]
5069 ),
5070 ( var(Z1)
5071 -> novel_production_calls(I2,
5072 C2,
5073 E2,
5074 E,
5075 K2,
5076 L2),
5077 A2='$extend_history'(F2, K2),
5078 Z1=(K2=J2, L2)
5079 ; true
5080 )
5081 ),
5082 ( chr_pp_flag(debugable, on)
5083 -> D=rule(_, _, M, N),
5084 my_term_copy(M-N, Q1, M2-N2),
5085 get_occurrence(F/G, H, _, U1),
5086 sort_by_key([V, W|U], [U1|C], O2),
5087 P2='chr debug_event'(try([], O2, M2, N2)),
5088 Q2='chr debug_event'(apply([], O2, M2, N2))
5089 ; P2=true,
5090 Q2=true
5091 ),
5092 ( is_stored_in_guard(F/G, E)
5093 -> R2=W1,
5094 S2=true
5095 ; R2=true,
5096 S2=W1
5097 ),
5098 T2=(F1:-D1, R1, P1, Z1, R2, S1, P2->Q2, A2, S2, T1, Y1;L1),
5099 add_location(T2, E, U2),
5100 J=[U2|K].
(A, B/C) :-
5102 functor(A, B, C).
5103novel_production_calls([], [], [], _, _, true).
5104novel_production_calls([A|B], [C|D], [E|F], G, H, (I, J)) :-
5105 get_occurrence_from_id(A, K, G, C),
5106 delay_phase_end(validate_store_type_assumptions,
5107 novel_production_call(A,
5108 K,
5109 '$novel_production'(E, H),
5110 I)),
5111 novel_production_calls(B, D, F, G, H, J).
5112history_susps(A, B, C, D, E) :-
5113 reverse(B, F),
5114 sort_by_key([C|F], [D|A], E).
5115named_history_susps([], _, _, []).
5116named_history_susps([A|B], C, D, [E|F]) :-
5117 select2(A, E, C, D, G, H),
5118 !,
5119 named_history_susps(B, G, H, F).
5120gen_var_susp_list_for([A], B, C, D, E, F) :-
5121 !,
5122 functor(A, G, H),
5123 head_info(A, H, _, F, E, I),
5124 get_constraint_mode(G/H, J),
5125 head_arg_matches(I, J, [], _, C),
5126 extra_active_delegate_variables(A, B, C, K),
5127 append(E, K, D).
5128gen_var_susp_list_for([A|B], C, D, E, F, G) :-
5129 gen_var_susp_list_for(B,
5130 [A|C],
5131 H,
5132 F,
5133 _,
5134 _),
5135 functor(A, I, J),
5136 gen_var(G),
5137 head_info(A, J, _, K, _, L),
5138 get_constraint_mode(I/J, M),
5139 head_arg_matches(L, M, H, _, D),
5140 passive_delegate_variables(A, B, C, D, N),
5141 append(N, [K, G|F], E).
5142gen_var_susp_list_for_b([A], B, C, [D], E, [F], []) :-
5143 !,
5144 functor(A, G, H),
5145 head_info(A, H, _, F, E, I),
5146 get_constraint_mode(G/H, J),
5147 head_arg_matches(I, J, [], _, C),
5148 extra_active_delegate_variables(A, B, C, K),
5149 append(E, K, D).
5150gen_var_susp_list_for_b([A|B], C, D, [E|F], G, [H|I], [J|K]) :-
5151 gen_var_susp_list_for_b(B,
5152 [A|C],
5153 L,
5154 F,
5155 G,
5156 I,
5157 K),
5158 functor(A, M, N),
5159 gen_var(J),
5160 head_info(A, N, _, H, _, O),
5161 get_constraint_mode(M/N, P),
5162 head_arg_matches(O, P, L, _, D),
5163 passive_delegate_variables(A, B, C, D, Q),
5164 append(Q, [H, J], E).
5165get_prop_inner_loop_vars([A], B, C, D, E, F, []) :-
5166 !,
5167 functor(A, G, H),
5168 head_info(A, H, F, E, I, J),
5169 get_constraint_mode(G/H, K),
5170 head_arg_matches(J, K, [], _, D),
5171 extra_active_delegate_variables(A, B, D, L),
5172 append(I, L, C).
5173get_prop_inner_loop_vars([A|B], C, D, E, F, G, [H|I]) :-
5174 get_prop_inner_loop_vars(B,
5175 [A|C],
5176 J,
5177 K,
5178 F,
5179 G,
5180 I),
5181 functor(A, L, M),
5182 gen_var(N),
5183 head_info(A, M, _, H, _, O),
5184 get_constraint_mode(L/M, P),
5185 head_arg_matches(O, P, K, _, E),
5186 passive_delegate_variables(A, B, C, E, Q),
5187 append(Q, [H, N|J], D).
5188reorder_heads(A, B, C, D, E, F) :-
5189 ( chr_pp_flag(reorder_heads, on),
5190 length(C, G),
5191 G=<6
5192 -> reorder_heads_main(A, B, C, D, E, F)
5193 ; E=C,
5194 F=D
5195 ).
5196reorder_heads_main(A, B, C, D, E, F) :-
5197 term_variables(B, G),
5198 H=entry([], [], G, C, D, A),
5199 copy_term_nat(H, I),
5200 a_star(I,
5201 J^(chr_translate:final_data(J)),
5202 K^L^M^(chr_translate:expand_data(K, L, M)),
5203 N),
5204 I=H,
5205 N=entry(O, P, _, _, _, _),
5206 reverse(O, E),
5207 reverse(P, F).
5208final_data(A) :-
5209 A=entry(_, _, _, _, [], _).
5210expand_data(A, B, C) :-
5211 A=entry(D, E, F, G, H, I),
5212 select2(J, K, G, H, L, M),
5213 term_variables([J|F], N),
5214 B=entry([J|D], [K|E], N, L, M, I),
5215 order_score(J, K, F, L, I, C).
5216order_score(A, B, C, D, E, F) :-
5217 functor(A, G, H),
5218 get_store_type(G/H, I),
5219 order_score(I, A, B, C, D, E, 99999, F).
5220order_score(default, A, _, B, C, _, D, E) :-
5221 term_variables(A, F),
5222 term_variables(C, G),
5223 ground_vars([A], H),
5224 list_difference_eq(F, H, I),
5225 order_score_vars(I, B, G, J),
5226 E is min(D, J).
5227order_score(multi_inthash(A), B, _, C, _, _, D, E) :-
5228 ( D=<100
5229 -> E=D
5230 ; order_score_indexes(A, B, C, E)
5231 ).
5232order_score(multi_hash(A), B, _, C, _, _, D, E) :-
5233 ( D=<100
5234 -> E=D
5235 ; order_score_indexes(A, B, C, E)
5236 ).
5237order_score(global_ground, A, _, B, C, _, D, E) :-
5238 term_variables(A, F),
5239 term_variables(C, G),
5240 order_score_vars(F, B, G, H),
5241 I is H*200,
5242 E is min(D, I).
5243order_score(var_assoc_store(_, _), _, _, _, _, _, _, 1).
5244order_score(global_singleton, _, _, _, _, _, _, A) :-
5245 A=1.
5246order_score(multi_store(A), B, C, D, E, F, G, H) :-
5247 multi_order_score(A,
5248 B,
5249 C,
5250 D,
5251 E,
5252 F,
5253 G,
5254 H).
5255multi_order_score([], _, _, _, _, _, A, A).
5256multi_order_score([A|B], C, D, E, F, G, H, I) :-
5257 ( order_score(A,
5258 C,
5259 D,
5260 E,
5261 F,
5262 G,
5263 H,
5264 J)
5265 -> true
5266 ; J=H
5267 ),
5268 multi_order_score(B,
5269 C,
5270 D,
5271 E,
5272 F,
5273 G,
5274 J,
5275 I).
5276order_score(identifier_store(A), B, _, C, _, _, D, E) :-
5277 arg(A, B, F),
5278 memberchk_eq(F, C),
5279 E is min(D, 10).
5280order_score(type_indexed_identifier_store(A, _), B, _, C, _, _, D, E) :-
5281 arg(A, B, F),
5282 memberchk_eq(F, C),
5283 E is min(D, 10).
5284order_score_indexes(A, B, C, D) :-
5285 copy_term_nat(B+C, E+F),
5286 numbervars(F, 0, _),
5287 order_score_indexes(A, E, D).
5288order_score_indexes([A|B], C, D) :-
5289 args(A, C, E),
5290 ( maplist(ground, E)
5291 -> D=100
5292 ; order_score_indexes(B, C, D)
5293 ).
5294memberchk_eq_flip(A, B) :-
5295 memberchk_eq(B, A).
5296order_score_vars(A, B, C, D) :-
5297 order_score_count_vars(A, B, C, E-F-G),
5298 ( E-F-G==0-0-0
5299 -> D=0
5300 ; E>0
5301 -> D is max(10-E, 0)
5302 ; F>0
5303 -> D is max(10-F, 1)*100
5304 ; D is max(10-G, 1)*1000
5305 ).
5306order_score_count_vars([], _, _, 0-0-0).
5307order_score_count_vars([A|B], C, D, E-F-G) :-
5308 order_score_count_vars(B, C, D, H-I-J),
5309 ( memberchk_eq(A, C)
5310 -> E is H+1,
5311 F=I,
5312 G=J
5313 ; memberchk_eq(A, D)
5314 -> F is I+1,
5315 E=H,
5316 G=J
5317 ; G is J+1,
5318 E=H,
5319 F=I
5320 ).
5321create_get_mutable_ref(A, B, C) :-
5322 C=(B=mutable(A)).
5323create_get_mutable(A, B, C) :-
5324 B=mutable(A),
5325 C=true.
5326gen_var(_).
5327gen_vars(A, B) :-
5328 length(B, A).
5329ast_head_info1(A, B, C, D, E) :-
5330 A=chr_constraint(_/F, G, _),
5331 vars_susp(F, B, C, D),
5332 pairup(G, B, E).
5333head_info1(A, _/B, C, D, E, F) :-
5334 vars_susp(B, C, D, E),
5335 A=..[_|G],
5336 pairup(G, C, F).
5337head_info(A, B, C, D, E, F) :-
5338 vars_susp(B, C, D, E),
5339 A=..[_|G],
5340 pairup(G, C, F).
5341inc_id([A|B], [C|B]) :-
5342 C is A+1.
5343dec_id([A|B], [C|B]) :-
5344 C is A-1.
5345extend_id(A, [0|A]).
5346next_id([_, A|B], [C|B]) :-
5347 C is A+1.
5348build_head(A/B, C, D, E) :-
5349 build_head(A, B, C, D, E).
5350build_head(A, B, C, D, E) :-
5351 buildName(A, B, C, F),
5352 ( ( chr_pp_flag(debugable, on)
5353 ; is_stored(A/B),
5354 ( has_active_occurrence(A/B)
5355 ; chr_pp_flag(late_allocation, off)
5356 ),
5357 ( may_trigger(A/B)
5358 ; get_allocation_occurrence(A/B, G),
5359 get_max_occurrence(A/B, H),
5360 H>=G
5361 )
5362 )
5363 -> E=..[F|D]
5364 ; init(D, I),
5365 E=..[F|I]
5366 ).
5367buildName(A, B, C, D) :-
5368 ( ( chr_pp_flag(debugable, on)
5369 ; once(( is_stored(A/B),
5370 ( has_active_occurrence(A/B)
5371 ; chr_pp_flag(late_allocation, off)
5372 ),
5373 ( may_trigger(A/B)
5374 ; get_allocation_occurrence(A/B, E),
5375 get_max_occurrence(A/B, F),
5376 F>=E
5377 )
5378 ; C\=[0]
5379 ))
5380 )
5381 -> atom_concat(A, '___', G),
5382 atomic_concat(G, B, H),
5383 buildName_(C, H, D)
5384 ; D=A
5385 ).
5386buildName_([], A, A).
5387buildName_([A|B], C, D) :-
5388 buildName_(B, C, E),
5389 atom_concat(E, '__', F),
5390 atomic_concat(F, A, D).
5391vars_susp(A, B, C, D) :-
5392 length(B, A),
5393 append(B, [C], D).
5394or_pattern(A, B) :-
5395 C is A-1,
5396 B is 1<<C.
5397and_pattern(A, B) :-
5398 C is A-1,
5399 D is 1<<C,
5400 B is -1*(D+1).
5401make_name(A, B/C, D) :-
5402 atom_concat_list([A, B, '___', C], D).
5403make_attr(A, B, C, D) :-
5404 length(C, A),
5405 D=..[v, B|C].
5406get_all_suspensions2(A, B, C) :-
5407 chr_pp_flag(dynattr, off),
5408 !,
5409 make_attr(A, _, C, B).
5410get_all_suspensions2(A, B, C, D) :-
5411 length(D, A),
5412 C='chr all_suspensions'(D, 1, B).
5413normalize_attr(A, B, C) :-
5414 B='chr normalize_attr'(A, C).
5415get_suspensions(A, B, C, C=D, E) :-
5416 chr_pp_flag(dynattr, off),
5417 !,
5418 make_attr(A, _, F, D),
5419 nth1(B, F, E).
5420get_suspensions(_, A, B, C, D) :-
5421 C=(memberchk(A-D, B)->true;D=[]).
5422singleton_attr(A, B, C, D) :-
5423 chr_pp_flag(dynattr, off),
5424 !,
5425 or_pattern(C, E),
5426 make_attr(A, E, F, D),
5427 nth1(C, F, [B], G),
5428 set_elems(G, []).
5429singleton_attr(_, A, B, C) :-
5430 C=[B-[A]].
5431add_attr(A, B, C, D, E, F) :-
5432 chr_pp_flag(dynattr, off),
5433 !,
5434 make_attr(A, G, H, I),
5435 or_pattern(C, J),
5436 nth1(C, H, K),
5437 substitute_eq(K, H, [B|K], L),
5438 make_attr(A, G, L, M),
5439 substitute_eq(K, H, [B], N),
5440 make_attr(A, O, N, P),
5441 E=(D=I, (G/\J=:=J->F=M;O is G\/J, F=P)),
5442 !.
5443add_attr(_, A, B, C, D, E) :-
5444 D=('chr select'(C, B-F, G)->E=[B-[A|F]|G];E=[B-[A]|C]).
5445rem_attr(A, B, C, D, E, F) :-
5446 chr_pp_flag(dynattr, off),
5447 chr_pp_flag(experiment, off),
5448 !,
5449 or_pattern(D, G),
5450 and_pattern(D, H),
5451 make_attr(A, I, J, K),
5452 nth1(D, J, L),
5453 substitute_eq(L, J, [], M),
5454 make_attr(A, N, M, O),
5455 substitute_eq(L, J, P, Q),
5456 make_attr(A, I, Q, R),
5457 get_target_module(S),
5458 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)),
5459 !.
5460rem_attr(_, A, B, C, D, E) :-
5461 chr_pp_flag(dynattr, off),
5462 chr_pp_flag(experiment, on),
5463 !,
5464 or_pattern(C, F),
5465 and_pattern(C, G),
5466 H is C+1,
5467 get_target_module(I),
5468 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)),
5469 !.
5470rem_attr(_, A, B, C, D, E) :-
5471 get_target_module(F),
5472 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).
5473merge_attributes(A, B, C, D, E) :-
5474 chr_pp_flag(dynattr, off),
5475 !,
5476 make_attr(A, F, G, H),
5477 merge_attributes2(A, F, G, C, I, E),
5478 D=(B=H, I).
5479merge_attributes(_, A, B, C, D) :-
5480 C=(sort(A, E), sort(B, F), 'chr new_merge_attributes'(E, F, D)).
5481merge_attributes2(A, B, C, D, E, F) :-
5482 make_attr(A, G, H, I),
5483 bagof(J,
5484 K^L^M^N^(member2(C, H, K-L), J=(sort(L, M), 'chr merge_attributes'(K, M, N))),
5485 O),
5486 list2conj(O, P),
5487 bagof(Q,
5488 R^S^T^member((R, 'chr merge_attributes'(S, T, Q)), O),
5489 U),
5490 make_attr(A, V, U, F),
5491 E=(D=I, P, V is B\/G).
5492lookup_passive_head(A, B, C, D, E) :-
5493 functor(A, F, G),
5494 get_store_type(F/G, H),
5495 lookup_passive_head(H, A, B, C, [], D, E).
5496lookup_passive_head(A, B, C, D, E, F) :-
5497 functor(A, G, H),
5498 get_store_type(G/H, I),
5499 lookup_passive_head(I,
5500 A,
5501 B,
5502 C,
5503 D,
5504 E,
5505 F).
5506lookup_passive_head(default, A, B, C, _, D, E) :-
5507 functor(A, F, G),
5508 passive_head_via(A, B, C, D, E),
5509 update_store_type(F/G, default).
5510lookup_passive_head(multi_inthash(A), B, _, C, D, E, F) :-
5511 hash_lookup_passive_head(inthash,
5512 A,
5513 B,
5514 C,
5515 D,
5516 E,
5517 F,
5518 _).
5519lookup_passive_head(multi_hash(A), B, _, C, D, E, F) :-
5520 hash_lookup_passive_head(hash,
5521 A,
5522 B,
5523 C,
5524 D,
5525 E,
5526 F,
5527 _).
5528lookup_passive_head(global_ground, A, _, _, _, B, C) :-
5529 functor(A, D, E),
5530 global_ground_store_name(D/E, F),
5531 make_get_store_goal(F, C, B),
5532 update_store_type(D/E, global_ground).
5533lookup_passive_head(var_assoc_store(A, B), C, _, D, _, E, F) :-
5534 arg(A, C, G),
5535 arg(B, C, H),
5536 translate([G, H], D, [I, J]),
5537 get_target_module(K),
5538 E=(get_attr(I, K, L), lookup_assoc_store(L, J, F)).
5539lookup_passive_head(global_singleton, A, _, _, _, B, C) :-
5540 functor(A, D, E),
5541 global_singleton_store_name(D/E, F),
5542 make_get_store_goal(F, G, H),
5543 B=(H, G\==[], C=[G]),
5544 update_store_type(D/E, global_singleton).
5545lookup_passive_head(multi_store(A), B, C, D, E, F, G) :-
5546 once(( member(H, A),
5547 lookup_passive_head(H,
5548 B,
5549 C,
5550 D,
5551 E,
5552 F,
5553 G)
5554 )).
5555lookup_passive_head(identifier_store(A), B, _, C, _, D, E) :-
5556 functor(B, F, G),
5557 arg(A, B, H),
5558 translate([H], C, [I]),
5559 delay_phase_end(validate_store_type_assumptions,
5560 identifier_lookup(F/G,
5561 A,
5562 E,
5563 I,
5564 D)),
5565 update_store_type(F/G, identifier_store(A)),
5566 get_identifier_index(F/G, A, _).
5567lookup_passive_head(type_indexed_identifier_store(A, B), C, _, D, _, E, F) :-
5568 functor(C, G, H),
5569 arg(A, C, I),
5570 ( var(I)
5571 -> translate([I], D, [J]),
5572 E=K
5573 ; ground(I),
5574 I='$chr_identifier_match'(L, _)
5575 -> lookup_only_identifier_atom(B, L, J, M),
5576 E=(M, K)
5577 ),
5578 delay_phase_end(validate_store_type_assumptions,
5579 type_indexed_identifier_lookup(G/H,
5580 A,
5581 B,
5582 F,
5583 J,
5584 K)),
5585 update_store_type(G/H,
5586 type_indexed_identifier_store(A, B)),
5587 get_type_indexed_identifier_index(B,
5588 G/H,
5589 A,
5590 _).
5591identifier_lookup(A, B, C, D, E) :-
5592 get_identifier_size(F),
5593 functor(G, struct, F),
5594 get_identifier_index(A, B, H),
5595 arg(H, G, C),
5596 E=(D=G).
5597type_indexed_identifier_lookup(A, B, C, D, E, F) :-
5598 type_indexed_identifier_structure(C, G),
5599 get_type_indexed_identifier_index(C, A, B, H),
5600 arg(H, G, D),
5601 F=(E=G).
5602hash_lookup_passive_head(A, B, C, D, E, F, G, H) :-
5603 pick_hash_index(B, C, D, H, I, J),
5604 ( J=[K]
5605 -> true
5606 ; K=..[k|J]
5607 ),
5608 functor(C, L, M),
5609 multi_hash_lookup_goal(L/M,
5610 A,
5611 H,
5612 K,
5613 G,
5614 N),
5615 check_ground(E, I, O),
5616 my_term_copy(O, D, P),
5617 F=(P, N),
5618 ( A==inthash
5619 -> update_store_type(L/M, multi_inthash([H]))
5620 ; update_store_type(L/M, multi_hash([H]))
5621 ).
5622pick_hash_index(A, B, C, D, E, F) :-
5623 member(D, A),
5624 args(D, B, E),
5625 key_in_scope(E, C, F),
5626 !.
5627key_in_scope([], _, []).
5628key_in_scope([A|B], C, [D|E]) :-
5629 term_variables(A, F),
5630 translate(F, C, G),
5631 copy_term(A/F, D/G),
5632 key_in_scope(B, C, E).
5633existential_lookup(var_assoc_store(A, B), C, D, E, F, G, H, I, J, J) :-
5634 !,
5635 lookup_passive_head(var_assoc_store(A, B),
5636 C,
5637 D,
5638 E,
5639 F,
5640 K,
5641 L),
5642 sbag_member_call(I, L, M),
5643 functor(C, N, O),
5644 delay_phase_end(validate_store_type_assumptions,
5645 (static_suspension_term(N/O, G), get_static_suspension_field(N/O, G, state, active, P))),
5646 H=(K, M, I=G, P).
5647existential_lookup(global_singleton, A, _, _, _, B, C, D, E, E) :-
5648 !,
5649 functor(A, F, G),
5650 global_singleton_store_name(F/G, H),
5651 make_get_store_goal(H, D, I),
5652 C=(I, D\==[], D=B),
5653 update_store_type(F/G, global_singleton).
5654existential_lookup(multi_store(A), B, C, D, E, F, G, H, I, J) :-
5655 !,
5656 once(( member(K, A),
5657 existential_lookup(K,
5658 B,
5659 C,
5660 D,
5661 E,
5662 F,
5663 G,
5664 H,
5665 I,
5666 J)
5667 )).
5668existential_lookup(multi_inthash(A), B, _, C, D, E, F, G, H, I) :-
5669 !,
5670 existential_hash_lookup(inthash,
5671 A,
5672 B,
5673 C,
5674 D,
5675 E,
5676 F,
5677 G,
5678 H,
5679 I).
5680existential_lookup(multi_hash(A), B, _, C, D, E, F, G, H, I) :-
5681 !,
5682 existential_hash_lookup(hash,
5683 A,
5684 B,
5685 C,
5686 D,
5687 E,
5688 F,
5689 G,
5690 H,
5691 I).
5692existential_lookup(identifier_store(A), B, C, D, E, F, G, H, I, J) :-
5693 !,
5694 lookup_passive_head(identifier_store(A),
5695 B,
5696 C,
5697 D,
5698 E,
5699 K,
5700 L),
5701 hash_index_filter(I, [A], J),
5702 functor(B, M, N),
5703 ( check_fd_lookup_condition(M, N, B, _)
5704 -> O=(L=[H])
5705 ; sbag_member_call(H, L, O)
5706 ),
5707 delay_phase_end(validate_store_type_assumptions,
5708 (static_suspension_term(M/N, F), get_static_suspension_field(M/N, F, state, active, P))),
5709 G=(K, O, H=F, P).
5710existential_lookup(type_indexed_identifier_store(A, B), C, D, E, F, G, H, I, J, K) :-
5711 !,
5712 lookup_passive_head(type_indexed_identifier_store(A, B),
5713 C,
5714 D,
5715 E,
5716 F,
5717 L,
5718 M),
5719 hash_index_filter(J, [A], K),
5720 functor(C, N, O),
5721 ( check_fd_lookup_condition(N, O, C, _)
5722 -> P=(M=[I])
5723 ; sbag_member_call(I, M, P)
5724 ),
5725 delay_phase_end(validate_store_type_assumptions,
5726 (static_suspension_term(N/O, G), get_static_suspension_field(N/O, G, state, active, Q))),
5727 H=(L, P, I=G, Q).
5728existential_lookup(A, B, C, D, E, F, G, H, I, I) :-
5729 lookup_passive_head(A,
5730 B,
5731 C,
5732 D,
5733 E,
5734 J,
5735 K),
5736 sbag_member_call(H, K, L),
5737 functor(B, M, N),
5738 delay_phase_end(validate_store_type_assumptions,
5739 (static_suspension_term(M/N, F), get_static_suspension_field(M/N, F, state, active, O))),
5740 G=(J, L, H=F, O).
5741existential_hash_lookup(A, B, C, D, E, F, G, H, I, J) :-
5742 hash_lookup_passive_head(A,
5743 B,
5744 C,
5745 D,
5746 E,
5747 K,
5748 L,
5749 M),
5750 hash_index_filter(I, M, J),
5751 functor(C, N, O),
5752 ( check_fd_lookup_condition(N, O, C, _)
5753 -> P=(L=[H])
5754 ; sbag_member_call(H, L, P)
5755 ),
5756 delay_phase_end(validate_store_type_assumptions,
5757 (static_suspension_term(N/O, F), get_static_suspension_field(N/O, F, state, active, Q))),
5758 G=(K, P, H=F, Q).
5759hash_index_filter(A, B, C) :-
5760 hash_index_filter(A, B, 1, C).
5761hash_index_filter([], _, _, []).
5762hash_index_filter([A|B], C, D, E) :-
5763 ( C=[F|G]
5764 -> H is D+1,
5765 ( F>D
5766 -> E=[A|I],
5767 hash_index_filter(B, [F|G], H, I)
5768 ; F==D
5769 -> E=[silent(A)|I],
5770 hash_index_filter(B, G, H, I)
5771 )
5772 ; E=[A|B]
5773 ).
5774assume_constraint_stores([]).
5775assume_constraint_stores([A|B]) :-
5776 ( chr_pp_flag(debugable, off),
5777 ( only_ground_indexed_arguments(A)
5778 ; chr_pp_flag(mixed_stores, on)
5779 ),
5780 is_stored(A),
5781 get_store_type(A, default)
5782 -> get_indexed_arguments(A, C),
5783 get_constraint_mode(A, D),
5784 aggregate_all(bag(E)-count,
5785 ( member(E, C),
5786 nth1(E, D, +)
5787 ),
5788 F-G),
5789 ( G>10
5790 -> findall([E], member(E, F), H)
5791 ; findall(E,
5792 ( sublist(E, F),
5793 E\==[]
5794 ),
5795 I),
5796 predsort(longer_list, I, H)
5797 ),
5798 ( get_functional_dependency(A, 1, J, K),
5799 all_distinct_var_args(J),
5800 K==[]
5801 -> assumed_store_type(A, global_singleton)
5802 ; ( only_ground_indexed_arguments(A)
5803 ; G>0
5804 )
5805 -> get_constraint_type_det(A, L),
5806 partition_indexes(H,
5807 L,
5808 M,
5809 N,
5810 O,
5811 P),
5812 ( N=[]
5813 -> Q=R
5814 ; Q=[multi_inthash(N)|R]
5815 ),
5816 ( M=[]
5817 -> R=S
5818 ; R=[multi_hash(M)|S]
5819 ),
5820 ( O=[]
5821 -> S=T
5822 ; maplist(wrap_in_functor(identifier_store), O, U),
5823 append(U, T, S)
5824 ),
5825 append(P, V, T),
5826 ( only_ground_indexed_arguments(A)
5827 -> V=[global_ground]
5828 ; V=[default]
5829 ),
5830 assumed_store_type(A, multi_store(Q))
5831 ; true
5832 )
5833 ; true
5834 ),
5835 assume_constraint_stores(B).
5836partition_indexes([], _, [], [], [], []).
5837partition_indexes([A|B], C, D, E, F, G) :-
5838 ( A=[H],
5839 nth1(H, C, I),
5840 unalias_type(I, J),
5841 J==chr_identifier
5842 -> F=[H|K],
5843 E=L,
5844 D=M,
5845 G=N
5846 ; A=[H],
5847 nth1(H, C, I),
5848 unalias_type(I, J),
5849 nonvar(J),
5850 J=chr_identifier(O)
5851 -> G=[type_indexed_identifier_store(H, O)|N],
5852 F=K,
5853 E=L,
5854 D=M
5855 ; A=[H],
5856 nth1(H, C, I),
5857 unalias_type(I, J),
5858 J==dense_int
5859 -> E=[A|L],
5860 D=M,
5861 F=K,
5862 G=N
5863 ; member(H, A),
5864 nth1(H, C, I),
5865 unalias_type(I, J),
5866 nonvar(J),
5867 J=chr_identifier(_)
5868 -> E=L,
5869 D=M,
5870 F=K,
5871 G=N
5872 ; E=L,
5873 D=[A|M],
5874 F=K,
5875 G=N
5876 ),
5877 partition_indexes(B, C, M, L, K, N).
5878longer_list(A, B, C) :-
5879 length(B, D),
5880 length(C, E),
5881 compare(F, E, D),
5882 ( F==(=)
5883 -> compare(A, B, C)
5884 ; A=F
5885 ).
5886all_distinct_var_args(A) :-
5887 copy_term_nat(A, B),
5888 functor(A, C, D),
5889 functor(E, C, D),
5890 E=@=B.
5891get_indexed_arguments(A, B) :-
5892 A=_/C,
5893 get_indexed_arguments(1, C, A, B).
5894get_indexed_arguments(A, B, C, D) :-
5895 ( A>B
5896 -> D=[]
5897 ; ( is_indexed_argument(C, A)
5898 -> D=[A|E]
5899 ; D=E
5900 ),
5901 F is A+1,
5902 get_indexed_arguments(F, B, C, E)
5903 ).
5904validate_store_type_assumptions([]).
5905validate_store_type_assumptions([A|B]) :-
5906 validate_store_type_assumption(A),
5907 validate_store_type_assumptions(B).
5908universal_search_iterator_end([A|B], C, D, E/F, G, H, I, J) :-
5909 D=rule(_, _, K, L),
5910 gen_var_susp_list_for_b(B,
5911 [A, C, K, L],
5912 _,
5913 M,
5914 N,
5915 _,
5916 O),
5917 universal_search_iterator_failure_vars(B,
5918 H,
5919 M,
5920 N,
5921 O,
5922 P,
5923 Q),
5924 flatten(M, R),
5925 S=[[]|R],
5926 build_head(E, F, [G|H], S, T),
5927 ( Q=[_]
5928 -> get_success_continuation_code_id(E/F, G, U),
5929 V=[U]
5930 ; V=[G|Q]
5931 ),
5932 build_head(E, F, V, P, W),
5933 X=(T:-W),
5934 add_dummy_location(X, Y),
5935 I=[Y|J].
5936universal_search_iterator_failure_vars(A, B, C, D, E, F, G) :-
5937 ( B=[0|_]
5938 -> next_id(B, G),
5939 F=D
5940 ; C=[_|H],
5941 dec_id(B, I),
5942 ( A=[J|K],
5943 functor(J, L, M),
5944 check_fd_lookup_condition(L, M, J, K)
5945 -> E=[_|N],
5946 universal_search_iterator_failure_vars(K,
5947 I,
5948 H,
5949 D,
5950 N,
5951 F,
5952 G)
5953 ; G=I,
5954 flatten(H, O),
5955 E=[P|_],
5956 F=[P|O]
5957 )
5958 ).
5959universal_search_iterator([A|B], [C|D], E, F/G, H, I, J, K) :-
5960 E=rule(_, _, L, M),
5961 gen_var_susp_list_for_b(D,
5962 [C, A, B, L, M],
5963 N,
5964 O,
5965 P,
5966 Q,
5967 R),
5968 init(Q, S),
5969 flatten(O, T),
5970 gen_var(U),
5971 functor(C, V, W),
5972 gen_vars(W, X),
5973 head_info(C, W, X, Y, _, Z),
5974 get_constraint_mode(V/W, A1),
5975 head_arg_matches(Z, A1, N, B1, C1),
5976 delay_phase_end(validate_store_type_assumptions,
5977 (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))),
5978 different_from_other_susps(C, Y, D, S, F1),
5979 G1=(Y=D1, E1, F1, B1),
5980 add_heads_ground_variables([C|D], [], H1),
5981 lookup_passive_head(A,
5982 [C|D],
5983 C1,
5984 H1,
5985 I1,
5986 J1),
5987 inc_id(I, K1),
5988 L1=[[Y|U]|T],
5989 build_head(F, G, [H|I], L1, M1),
5990 passive_delegate_variables(C,
5991 D,
5992 [A, B, L, M],
5993 C1,
5994 N1),
5995 append([J1|N1], [Y, U|T], O1),
5996 build_head(F, G, [H|K1], O1, P1),
5997 ( check_fd_lookup_condition(V, W, C, D)
5998 -> universal_search_iterator_failure_vars(D,
5999 I,
6000 O,
6001 P,
6002 R,
6003 Q1,
6004 R1),
6005 S1=Q1
6006 ; S1=[U|T],
6007 R1=I
6008 ),
6009 ( R1=[_]
6010 -> T1=R1
6011 ; T1=[H|R1]
6012 ),
6013 build_head(F, G, T1, S1, U1),
6014 V1=(M1:-G1, I1->P1;U1),
6015 add_dummy_location(V1, W1),
6016 J=[W1|K].
6017ai_observation_analysis(A) :-
6018 ( chr_pp_flag(ai_observation_analysis, on),
6019 get_target_module(_),
6020 '$chr_compiled_with_version'(3)
6021 -> list_to_ord_set(A, B),
6022 abstract_constraints(B),
6023 ai_observation_schedule_initial_calls(B, B),
6024 ai_observation_gather_results
6025 ; true
6026 ).
6027ai_observation_schedule_initial_calls([], _).
6028ai_observation_schedule_initial_calls([A|B], C) :-
6029 ai_observation_schedule_initial_call(A, C),
6030 ai_observation_schedule_initial_calls(B, C).
6031ai_observation_schedule_initial_call(A, _) :-
6032 ai_observation_top(A, B),
6033 initial_call_pattern(B).
6034ai_observation_schedule_new_calls([], _).
6035ai_observation_schedule_new_calls([A|B], C) :-
6036 C=odom(_, D),
6037 initial_call_pattern(odom(A, D)),
6038 ai_observation_schedule_new_calls(B, C).
6039ai_observation_lub(odom(A, B), odom(A, C), odom(A, D)) :-
6040 ord_intersection(B, C, D).
6041ai_observation_bot(A, B, odom(A, B)).
6042ai_observation_top(A, odom(A, B)) :-
6043 ord_empty(B).
6044ai_observation_leq(odom(A, B), odom(A, C)) :-
6045 ord_subset(C, B).
6046ai_observation_observe_set(A, B, C) :-
6047 ord_subtract(A, B, C).
6048ai_observation_abstract_constraint(A, B, C) :-
6049 functor(A, D, E),
6050 C=D/E,
6051 memberchk(C, B).
6052ai_observation_abstract_constraints(A, B, C) :-
6053 findall(D,
6054 ( member(E, A),
6055 ai_observation_abstract_constraint(E, B, D)
6056 ),
6057 C).
6058ai_observation_abstract_goal_(A, B, C, D, E, F) :-
6059 term_variables((A, B, C), G),
6060 append(A, B, H),
6061 ground_vars(H, I),
6062 list_difference_eq(G, I, J),
6063 ai_observation_abstract_goal(D, E, F, [], J),
6064 !.
6065ground_vars([], []).
6066ground_vars([A|B], C) :-
6067 functor(A, D, E),
6068 get_constraint_mode(D/E, F),
6069 head_info(A, E, _, _, _, G),
6070 head_arg_matches(G, F, [], _, _, [], H),
6071 ground_vars(B, I),
6072 append(H, I, C).
6073ai_observation_abstract_goal((A, B), C, D, E, F) :-
6074 !,
6075 ai_observation_abstract_goal(A, C, D, G, F),
6076 ai_observation_abstract_goal(B, C, G, E, F).
6077ai_observation_abstract_goal((A;B), C, [(D;E)|F], F, G) :-
6078 !,
6079 ai_observation_abstract_goal(A, C, D, [], G),
6080 ai_observation_abstract_goal(B, C, E, [], G).
6081ai_observation_abstract_goal((A->B), C, D, E, F) :-
6082 !,
6083 ai_observation_abstract_goal(A, C, D, G, F),
6084 ai_observation_abstract_goal(B, C, G, E, F).
6085ai_observation_abstract_goal(A, B, [C|D], D, _) :-
6086 ai_observation_abstract_constraint(A, B, C),
6087 !.
6088ai_observation_abstract_goal(true, _, A, A, _) :-
6089 !.
6090ai_observation_abstract_goal(writeln(_), _, A, A, _) :-
6091 !.
6092ai_observation_abstract_goal(A, _, B, B, C) :-
6093 builtin_binds_b(A, D),
6094 intersect_eq(D, C, []),
6095 !.
6096ai_observation_abstract_goal(_, _, [A|B], B, _) :-
6097 A=builtin.
6098ai_observation_is_observed(odom(_, A), B) :-
6099 \+ ord_memberchk(B, A).
6100unconditional_occurrence(A, B) :-
6101 get_occurrence(A, B, C, _),
6102 get_rule(C, D),
6103 D=pragma(E, _, _, _, _),
6104 copy_term_nat(E, F),
6105 F=rule(G, H, I, _),
6106 guard_entailment:entails_guard([chr_pp_headvariables(G, H)], I),
6107 once(( G=[J],
6108 H==[]
6109 ; H=[J],
6110 G==[],
6111 \+ may_trigger(A)
6112 )),
6113 all_distinct_var_args(J).
6114partial_wake_args([], _, _, _).
6115partial_wake_args([A|B], [C|D], E, F) :-
6116 ( C\==(+)
6117 -> ( nonvar(A)
6118 -> no_partial_wake(F)
6119 ; memberchk_eq(A, E)
6120 -> no_partial_wake(F)
6121 ; true
6122 )
6123 ; true
6124 ),
6125 partial_wake_args(B, D, E, F).
6126generate_show_constraint(A, B, C, D) :-
6127 ( chr_pp_flag(show, on)
6128 -> B=['$show'/0|A],
6129 generate_show_rules(A, D, [E|C]),
6130 inc_rule_count(F),
6131 E=pragma(rule(['$show'], [], true, true), ids([0], []), [], no, F)
6132 ; B=A,
6133 D=C
6134 ).
6135generate_show_rules([], A, A).
6136generate_show_rules([A/B|C], [D|E], F) :-
6137 functor(G, A, B),
6138 inc_rule_count(H),
6139 D=pragma(rule([], ['$show', G], true, writeln(G)), ids([], [0, 1]), [passive(1)], no, H),
6140 generate_show_rules(C, E, F).
6141static_suspension_term(A/B, C) :-
6142 suspension_term_base(A/B, D),
6143 E is D+B,
6144 functor(C, suspension, E).
6145has_suspension_field(A, B) :-
6146 suspension_term_base_fields(A, C),
6147 memberchk(B, C).
6148suspension_term_base(A, B) :-
6149 suspension_term_base_fields(A, C),
6150 length(C, B).
6151suspension_term_base_fields(A, B) :-
6152 ( chr_pp_flag(debugable, on)
6153 -> B=[id, state, history, generation, continuation, functor]
6154 ; ( uses_history(A)
6155 -> B=[id, state, history|C]
6156 ; only_ground_indexed_arguments(A),
6157 get_functional_dependency(A, 1, _, _)
6158 -> B=[state|C]
6159 ; B=[id, state|C]
6160 ),
6161 ( only_ground_indexed_arguments(A)
6162 -> get_store_type(A, D),
6163 basic_store_types(D, E),
6164 ( memberchk(global_ground, E)
6165 -> C=[global_list_prev|F]
6166 ; C=F
6167 ),
6168 ( chr_pp_flag(ht_removal, on)
6169 -> ht_prev_fields(E, F)
6170 ; F=[]
6171 )
6172 ; may_trigger(A)
6173 -> ( uses_field(A, generation)
6174 -> C=[generation, global_list_prev|F]
6175 ; C=[global_list_prev|F]
6176 ),
6177 ( chr_pp_flag(mixed_stores, on),
6178 chr_pp_flag(ht_removal, on)
6179 -> get_store_type(A, D),
6180 basic_store_types(D, E),
6181 ht_prev_fields(E, F)
6182 ; F=[]
6183 )
6184 ; C=[global_list_prev|F],
6185 ( chr_pp_flag(mixed_stores, on),
6186 chr_pp_flag(ht_removal, on)
6187 -> get_store_type(A, D),
6188 basic_store_types(D, E),
6189 ht_prev_fields(E, F)
6190 ; F=[]
6191 )
6192 )
6193 ).
6194ht_prev_fields(A, B) :-
6195 ht_prev_fields_int(A, C),
6196 append(C, B).
6197ht_prev_fields_int([], []).
6198ht_prev_fields_int([A|B], C) :-
6199 ( A=multi_hash(D)
6200 -> maplist(ht_prev_field, D, E),
6201 C=[E|F]
6202 ; C=F
6203 ),
6204 ht_prev_fields_int(B, F).
6205ht_prev_field(A, B) :-
6206 atomic_list_concat(['multi_hash_prev-'|A], B).
6207get_static_suspension_term_field(A, B, C, D) :-
6208 suspension_term_base_fields(B, E),
6209 nth1(F, E, A),
6210 !,
6211 arg(F, C, D).
6212get_static_suspension_term_field(arguments, A, B, C) :-
6213 !,
6214 suspension_term_base(A, D),
6215 B=..[_|E],
6216 drop(D, E, C).
6217get_static_suspension_term_field(A, B, _, _) :-
6218 chr_error(internal,
6219 'Trying to obtain field ~w of ~w, wich does not have it!',
6220 [A, B]).
6221get_dynamic_suspension_term_field(A, B, C, D, E) :-
6222 suspension_term_base_fields(B, F),
6223 nth1(G, F, A),
6224 !,
6225 E=arg(G, C, D).
6226get_dynamic_suspension_term_field(arguments, A, B, C, D) :-
6227 !,
6228 static_suspension_term(A, E),
6229 get_static_suspension_term_field(arguments, A, E, C),
6230 D=(B=E).
6231get_dynamic_suspension_term_field(argument(A), B, C, D, E) :-
6232 !,
6233 suspension_term_base(B, F),
6234 G is A+F,
6235 E=arg(G, C, D).
6236get_dynamic_suspension_term_field(A, B, _, _, _) :-
6237 chr_error(internal,
6238 'Dynamic goal to get ~w of ~w, which does not have this field!',
6239 [A, B]).
6240set_dynamic_suspension_term_field(A, B, C, D, E) :-
6241 suspension_term_base_fields(B, F),
6242 nth1(G, F, A),
6243 !,
6244 E=setarg(G, C, D).
6245set_dynamic_suspension_term_field(A, B, _, _, _) :-
6246 chr_error(internal,
6247 'Dynamic goal to set ~w of ~w, which does not have this field!',
6248 [A, B]).
6249basic_store_types(multi_store(A), A) :-
6250 !.
6251basic_store_types(A, [A]).
6252generate_never_stored_rules(A, B) :-
6253 ( chr_pp_flag(declare_stored_constraints, on)
6254 -> never_stored_rules(A, B)
6255 ; B=[]
6256 ).
6257check_storedness_assertions(A) :-
6258 ( chr_pp_flag(storage_analysis, on),
6259 chr_pp_flag(declare_stored_constraints, on)
6260 -> forall(B, A, check_storedness_assertion(B))
6261 ; true
6262 ).
6263continuation_analysis(A) :-
6264 maplist(analyse_continuations, A).
6265analyse_continuations(A) :-
6266 continuation_analysis(A, 1),
6267 get_max_occurrence(A, B),
6268 C is B+1,
6269 bulk_propagation(A, 1, C),
6270 set_occurrence_code_id(A, 1, 0).
6271continuation_analysis(A, B) :-
6272 get_max_occurrence(A, C),
6273 ( B>C
6274 -> true
6275 ; B==C
6276 -> D is B+1,
6277 continuation_occurrence(A, B, D)
6278 ; constraint_continuation(A, B, C, D),
6279 continuation_occurrence(A, B, D),
6280 E is B+1,
6281 continuation_analysis(A, E)
6282 ).
6283constraint_continuation(A, B, C, D) :-
6284 ( get_occurrence_head(A, B, E)
6285 -> F is B+1,
6286 ( between(F, C, D),
6287 get_occurrence_head(A, D, G),
6288 unifiable(E, G, _)
6289 -> true
6290 ; D is C+1
6291 )
6292 ; D=C
6293 ).
6294get_occurrence_head(A, B, C) :-
6295 get_occurrence(A, B, D, E),
6296 \+ is_passive(D, E),
6297 get_rule(D, F),
6298 F=pragma(rule(G, H, _, _), ids(I, J), _, _, _),
6299 ( select2(E, C, I, G, _, _)
6300 -> true
6301 ; select2(E, C, J, H, _, _)
6302 ).
6303get_success_continuation_code_id(A, B, C) :-
6304 get_success_continuation_occurrence(A, B, D),
6305 get_occurrence_code_id(A, D, C).
6306collect_constants(_, A, B, C) :-
6307 ( not_restarted,
6308 chr_pp_flag(experiment, on)
6309 -> ( chr_pp_flag(sss, on)
6310 -> D=[fep/4-[2, 3]-[[a, b]-fep1, [c, d]-fep2]-no],
6311 copy_term_nat(C, E),
6312 flatten_clauses(E, D, F),
6313 install_new_declarations_and_restart(F)
6314 ; maplist(collect_rule_constants(B), A),
6315 ( chr_pp_flag(verbose, on)
6316 -> print_chr_constants
6317 ; true
6318 ),
6319 ( chr_pp_flag(experiment, on)
6320 -> flattening_dictionary(B, D),
6321 copy_term_nat(C, E),
6322 flatten_clauses(E, D, F),
6323 install_new_declarations_and_restart(F)
6324 ; true
6325 )
6326 )
6327 ; true
6328 ).
6329collect_rule_constants(A, B) :-
6330 B=ast_rule(C, _, _, D, _),
6331 collect_head_constants(C),
6332 collect_body_constants(D, A).
6333collect_head_constants(simplification(A)) :-
6334 maplist(collect_constraint_constants, A).
6335collect_head_constants(propagation(A)) :-
6336 maplist(collect_constraint_constants, A).
6337collect_head_constants(simpagation(A, B)) :-
6338 maplist(collect_constraint_constants, A),
6339 maplist(collect_constraint_constants, B).
6340collect_body_constants(A, B) :-
6341 maplist(collect_goal_constants(B), A).
6342collect_goal_constants(A, B) :-
6343 ( ast_nonvar(B)
6344 -> ast_symbol(B, C),
6345 ( memberchk(C, A)
6346 -> ast_term_to_term(B, D),
6347 ast_args(B, E),
6348 collect_constraint_constants(chr_constraint(C,
6349 E,
6350 D))
6351 ; C==(:)/2,
6352 ast_args(B, [F, G]),
6353 F=atomic(H),
6354 get_target_module(I),
6355 H==I,
6356 ast_nonvar(G),
6357 ast_symbol(G, J),
6358 memberchk(J, A)
6359 -> ast_term_to_term(G, K),
6360 ast_args(G, L),
6361 collect_constraint_constants(chr_constraint(J,
6362 L,
6363 K))
6364 ; true
6365 )
6366 ; true
6367 ).
6368collect_constraint_constants(A) :-
6369 A=chr_constraint(B, C, _),
6370 get_constraint_type_det(B, D),
6371 collect_all_arg_constants(C, D, []).
6372collect_all_arg_constants([], [], A) :-
6373 ( A\==[]
6374 -> add_chr_constants(A)
6375 ; true
6376 ).
6377collect_all_arg_constants([A|B], [C|D], E) :-
6378 unalias_type(C, F),
6379 ( is_chr_constants_type(F, G, _)
6380 -> ( ast_ground(A)
6381 -> ast_term_to_term(A, H),
6382 collect_all_arg_constants(B,
6383 D,
6384 [G-H|E])
6385 ; true
6386 )
6387 ; collect_all_arg_constants(B, D, E)
6388 ).
6389add_chr_constants(A) :-
6390 keysort(A, B),
6391 add_chr_constants_(B).
6392flattening_dictionary([], []).
6393flattening_dictionary([A|B], C) :-
6394 ( flattening_dictionary_entry(A, D)
6395 -> C=[D|E]
6396 ; C=E
6397 ),
6398 flattening_dictionary(B, E).
6399flattening_dictionary_entry(A, B) :-
6400 get_constraint_type_det(A, C),
6401 constant_positions(C, 1, D, E, F, G),
6402 ( D\==[]
6403 -> pairup(E, H, I),
6404 keysort(I, J),
6405 B=A-D-K-F,
6406 get_chr_constants(L),
6407 findall(M,
6408 ( member(J, L),
6409 flat_spec(A, D, H, M)
6410 ),
6411 K)
6412 ; G==yes
6413 -> enum_positions(C, 1, N, O, P),
6414 B=A-N-K-P,
6415 findall(M,
6416 ( cartesian_product(Q, O),
6417 flat_spec(A, N, Q, M)
6418 ),
6419 K)
6420 ).
6421constant_positions([], _, [], [], no, no).
6422constant_positions([A|B], C, D, E, F, G) :-
6423 unalias_type(A, H),
6424 ( is_chr_constants_type(H, I, J)
6425 -> compose_error_handlers(J, K, F),
6426 D=[C|L],
6427 E=[I|M],
6428 G=N
6429 ; ( is_chr_enum_type(H, _, _)
6430 -> G=yes
6431 ; G=N
6432 ),
6433 L=D,
6434 M=E,
6435 K=F
6436 ),
6437 O is C+1,
6438 constant_positions(B, O, L, M, K, N).
6439compose_error_handlers(no, A, A).
6440compose_error_handlers(yes(A), _, yes(A)).
6441enum_positions([], _, [], [], no).
6442enum_positions([A|B], C, D, E, F) :-
6443 unalias_type(A, G),
6444 ( is_chr_enum_type(G, H, I)
6445 -> compose_error_handlers(I, J, F),
6446 D=[C|K],
6447 E=[H|L]
6448 ; D=K,
6449 E=L,
6450 F=J
6451 ),
6452 M is C+1,
6453 enum_positions(B, M, K, L, J).
6454cartesian_product([], []).
6455cartesian_product([A|B], [C|D]) :-
6456 member(A, C),
6457 cartesian_product(B, D).
6458flat_spec(A/B, C, D, E) :-
6459 E=D-F,
6460 term_to_atom(D, G),
6461 term_to_atom(C, H),
6462 atom_concat_list(['$flat_', A, /, B, '___', H, '___', G],
6463 F).
6464restart_after_flattening(A, A) :-
6465 nb_setval('$chr_restart_after_flattening', started).
6466restart_after_flattening(_, A) :-
6467 nb_getval('$chr_restart_after_flattening', restart(A)),
6468 nb_setval('$chr_restart_after_flattening', restarted).
6469not_restarted :-
6470 nb_getval('$chr_restart_after_flattening', started).
6471install_new_declarations_and_restart(A) :-
6472 nb_setval('$chr_restart_after_flattening', restart(A)),
6473 fail.
6474flatten_clauses(A, B, C) :-
6475 flatten_readcontent(A,
6476 D,
6477 E,
6478 F,
6479 _,
6480 G,
6481 H),
6482 flatten_clauses_(B, D, H, E, F, G, C).
6483flatten_clauses_(A, B, C, D, E, F, G) :-
6484 auxiliary_constraints_declarations(A, E, F, H),
6485 dispatching_rules(A, I),
6486 declarations(D, A, E, F, J),
6487 flatten_rules(B, A, K),
6488 append([C, H, I, J, K], G).
6489declarations(A, B, C, D, E) :-
6490 findall(F,
6491 ( member(F, A),
6492 \+ memberchk(F-_-_-_, B)
6493 ),
6494 G),
6495 maplist(declaration(C, D), G, H),
6496 flatten(H, E).
6497declaration(A, B, C, [(:-chr_constraint C), (:-chr_option(mode, D)), (:-chr_option(type_declaration, E))]) :-
6498 C=F/G,
6499 functor(D, F, G),
6500 ( memberchk(D, A)
6501 -> true
6502 ; replicate(G, ?, H),
6503 D=..[_|H]
6504 ),
6505 functor(E, F, G),
6506 ( memberchk(E, B)
6507 -> true
6508 ; replicate(G, any, I),
6509 E=..[_|I]
6510 ).
6511flatten_readcontent([], [], [], [], [], [], []).
6512flatten_readcontent([A|B], C, D, E, F, G, H) :-
6513 ( A==end_of_file
6514 -> C=[],
6515 D=[],
6516 E=[],
6517 G=[],
6518 F=[],
6519 H=[]
6520 ; crude_is_rule(A)
6521 -> C=[A|I],
6522 flatten_readcontent(B,
6523 I,
6524 D,
6525 E,
6526 F,
6527 G,
6528 H)
6529 ; pure_is_declaration(A, J, K, L)
6530 -> append(J, M, D),
6531 append(K, N, E),
6532 append(L, O, G),
6533 flatten_readcontent(B,
6534 C,
6535 M,
6536 N,
6537 F,
6538 O,
6539 H)
6540 ; is_mode_declaration(A, P)
6541 -> E=[P|N],
6542 flatten_readcontent(B,
6543 C,
6544 D,
6545 N,
6546 F,
6547 G,
6548 H)
6549 ; is_type_declaration(A, Q)
6550 -> G=[Q|O],
6551 flatten_readcontent(B,
6552 C,
6553 D,
6554 E,
6555 F,
6556 O,
6557 H)
6558 ; is_type_definition(A, R)
6559 -> H=[A|S],
6560 F=[R|T],
6561 flatten_readcontent(B,
6562 C,
6563 D,
6564 E,
6565 T,
6566 G,
6567 S)
6568 ; ( A=(:-op(U, V, W))
6569 -> op(U, V, W)
6570 ; true
6571 ),
6572 H=[A|S],
6573 flatten_readcontent(B,
6574 C,
6575 D,
6576 E,
6577 F,
6578 G,
6579 S)
6580 ).
6581crude_is_rule(@(_, _)).
6582crude_is_rule(pragma(_, _)).
6583crude_is_rule(==>(_, _)).
6584crude_is_rule(<=>(_, _)).
6585pure_is_declaration(A, B, C, D) :-
6586 A=(:-E),
6587 E=..[F, G],
6588 F==(chr_constraint),
6589 conj2list(G, H),
6590 pure_extract_type_mode(H, B, C, D).
([], [], [], []).
6592pure_extract_type_mode([A/B|C], [A/B|D], E, F) :-
6593 !,
6594 pure_extract_type_mode(C, D, E, F).
6595pure_extract_type_mode([A|B], [C|D], [E|F], G) :-
6596 functor(A, H, I),
6597 C=H/I,
6598 A=..[_|J],
6599 extract_types_and_modes(J, K, L),
6600 E=..[H|L],
6601 ( forall(member(M, K), M==any)
6602 -> G=N
6603 ; G=[O|N],
6604 O=..[H|K]
6605 ),
6606 pure_extract_type_mode(B, D, F, N).
6607is_mode_declaration((:-chr_option(mode, A)), A).
6608is_type_declaration((:-chr_option(type_declaration, A)), A).
6609auxiliary_constraints_declarations(A, B, C, D) :-
6610 findall(E,
6611 auxiliary_constraints_declaration(A, B, C, E),
6612 F),
6613 flatten(F, D).
6614auxiliary_constraints_declaration(A, B, C, [(:-chr_constraint D), (:-chr_option(mode, E)), (:-chr_option(type_declaration, F))]) :-
6615 member(G/H-I-J-_, A),
6616 arg_modes(G, H, B, K),
6617 specialize_modes(K, I, L),
6618 arg_types(G, H, C, M),
6619 specialize_types(M, I, N),
6620 length(I, O),
6621 P is H-O,
6622 member(_-Q, J),
6623 D=Q/P,
6624 E=..[Q|L],
6625 F=..[Q|N].
6626arg_modes(A, B, C, D) :-
6627 functor(E, A, B),
6628 ( memberchk(E, C)
6629 -> E=..[_|D]
6630 ; replicate(B, ?, D)
6631 ).
6632specialize_modes(A, B, C) :-
6633 split_args(B, A, _, C).
6634arg_types(A, B, C, D) :-
6635 functor(E, A, B),
6636 ( memberchk(E, C)
6637 -> E=..[_|D]
6638 ; replicate(B, any, D)
6639 ).
6640specialize_types(A, B, C) :-
6641 split_args(B, A, _, C).
6642dispatching_rules([], []).
6643dispatching_rules([A-B-C-D|E], F) :-
6644 constraint_dispatching_rule(C,
6645 A,
6646 B,
6647 D,
6648 F,
6649 G),
6650 dispatching_rules(E, G).
6651constraint_dispatching_rule(A, B/C, D, E, F, G) :-
6652 ( increasing_numbers(D, 1)
6653 -> H=F,
6654 I=B/C
6655 ; functor(J, B, C),
6656 J=..[_|K],
6657 split_args(D, K, L, M),
6658 append(L, M, N),
6659 atom_concat(B, '_$shuffled', O),
6660 P=..[O|N],
6661 [(J:-P)|H]=F,
6662 I=O/C
6663 ),
6664 Q=swap(B, D),
6665 dispatching_rule_term_cases(A,
6666 D,
6667 I,
6668 E,
6669 Q,
6670 H,
6671 G).
6672increasing_numbers([], _).
6673increasing_numbers([A|B], A) :-
6674 C is A+1,
6675 increasing_numbers(B, C).
6676dispatching_rule_term_cases(A, B, C/D, E, F, G, H) :-
6677 length(B, I),
6678 once(pairup(J, K, A)),
6679 maplist(head_tail, J, L, M),
6680 N is D-I,
6681 maplist(wrap_in_functor(dispatching_action), K, O),
6682 dispatch_trie_index(L,
6683 M,
6684 N,
6685 E,
6686 F,
6687 O,
6688 C,
6689 G,
6690 H).
6691dispatching_action(A, B, C) :-
6692 C=..[A|B].
6693dispatch_trie_index(A, B, C, D, E, F, G, H, I) :-
6694 dispatch_trie_step(A,
6695 G,
6696 G,
6697 B,
6698 C,
6699 D,
6700 E,
6701 F,
6702 H,
6703 I).
6704dispatch_trie_step([], _, _, _, [], _, _, [], A, A) :-
6705 !.
6706dispatch_trie_step(A, B, C, D, E, F, G, H, I, J) :-
6707 D=[K|_],
6708 length(K, L),
6709 aggregate_all(set(M/N),
6710 ( member(O, A),
6711 functor(O, M, N)
6712 ),
6713 P),
6714 Q is L+1,
6715 dispatch_trie_step_cases(P,
6716 Q,
6717 A,
6718 D,
6719 E,
6720 F,
6721 G,
6722 H,
6723 B,
6724 C,
6725 I,
6726 J).
6727dispatch_trie_step_cases([], A, _, _, B, C, D, _, E, _, F, G) :-
6728 ( C=yes(H)
6729 -> F=[I|G],
6730 I=(J:-K),
6731 L is A+B,
6732 functor(J, E, L),
6733 reconstruct_original_term(D, J, M),
6734 K=..[H, M]
6735 ; F=G
6736 ).
6737dispatch_trie_step_cases([A|B], C, D, E, F, G, H, I, J, K, L, M) :-
6738 dispatch_trie_step_case(A,
6739 C,
6740 D,
6741 E,
6742 F,
6743 G,
6744 H,
6745 I,
6746 J,
6747 K,
6748 L,
6749 N),
6750 dispatch_trie_step_cases(B,
6751 C,
6752 D,
6753 E,
6754 F,
6755 G,
6756 H,
6757 I,
6758 J,
6759 K,
6760 N,
6761 M).
6762dispatch_trie_step_case(A/B, C, D, E, F, G, H, I, J, K, [L|M], N) :-
6763 L=(O:-P, Q),
6764 ( G=yes(_)
6765 -> P=!
6766 ; P=true
6767 ),
6768 R is C+F,
6769 functor(O, J, R),
6770 arg(1, O, S),
6771 O=..[_, _|T],
6772 length(U, F),
6773 once(append(V, U, T)),
6774 functor(S, A, B),
6775 W=index_functor(A, B, H),
6776 S=..[_|X],
6777 append(X, T, Y),
6778 ( Y==U
6779 -> M=N,
6780 rec_cases(D,
6781 _,
6782 I,
6783 A/B,
6784 _,
6785 _,
6786 Z),
6787 Z=[A1],
6788 call(A1, U, Q)
6789 ; rec_cases(D,
6790 E,
6791 I,
6792 A/B,
6793 B1,
6794 C1,
6795 Z),
6796 ( Z=[D1]
6797 -> C1=[E1],
6798 append([B1, E1, U], Y),
6799 M=N,
6800 call(D1, U, Q)
6801 ; pairup(B1, C1, F1),
6802 common_pattern(F1, G1, H1, I1),
6803 append(X, V, [J1|K1]),
6804 J1-K1=G1,
6805 L1=gct([J1|K1], W),
6806 fresh_symbol(K, M1),
6807 append(H1, U, N1),
6808 Q=..[M1|N1],
6809 findall(O1-P1,
6810 member([O1|P1], I1),
6811 Q1),
6812 once(pairup(R1, S1, Q1)),
6813 dispatch_trie_step(R1,
6814 M1,
6815 K,
6816 S1,
6817 F,
6818 G,
6819 L1,
6820 Z,
6821 M,
6822 N)
6823 )
6824 ).
6825split([A|B], C, D, E, F) :-
6826 ( C==1
6827 -> D=[],
6828 E=A,
6829 F=B
6830 ; G is C-1,
6831 D=[A|H],
6832 split(B, G, H, E, F)
6833 ).
6834reconstruct_original_term(swap(A, B), C, D) :-
6835 functor(C, _, E),
6836 functor(D, A, E),
6837 D=..[_|F],
6838 split_args(B, F, G, H),
6839 C=..[_|I],
6840 append(G, H, I).
6841reconstruct_original_term(index_functor(A, B, C), D, E) :-
6842 D=..[F|G],
6843 split_at(B, G, H, I),
6844 J=..[A|H],
6845 K=..[F, J|I],
6846 reconstruct_original_term(C, K, E).
6847reconstruct_original_term(gct(A, B), C, D) :-
6848 copy_term_nat(A, E),
6849 term_variables(E, F),
6850 C=..[G|H],
6851 append(F, I, H),
6852 append(E, I, J),
6853 K=..[G|J],
6854 reconstruct_original_term(B, K, D).
6855flatten_rules(A, B, C) :-
6856 flatten_rules1(A, B, D),
6857 flatten(D, C).
6858flatten_rules1([], _, []).
6859flatten_rules1([A|B], C, [D|E]) :-
6860 findall(F, flatten_rule(A, C, F), D),
6861 flatten_rules1(B, C, E).
6862flatten_rule(@(A, B), C, @(A, D)) :-
6863 !,
6864 flatten_rule(B, C, D).
6865flatten_rule(pragma(A, B), C, pragma(D, B)) :-
6866 !,
6867 flatten_rule(A, C, D).
6868flatten_rule(==>(A, B), C, ==>(D, E)) :-
6869 !,
6870 flatten_heads(A, C, D),
6871 flatten_body(B, C, E).
6872flatten_rule(<=>(\(A, B), C), D, <=>(\(E, F), G)) :-
6873 !,
6874 flatten_heads((A, B), D, (E, F)),
6875 flatten_body(C, D, G).
6876flatten_rule(<=>(A, B), C, <=>(D, E)) :-
6877 flatten_heads(A, C, D),
6878 flatten_body(B, C, E).
6879flatten_heads((A, B), C, (D, E)) :-
6880 !,
6881 flatten_heads(A, C, D),
6882 flatten_heads(B, C, E).
6883flatten_heads(#(A, B), C, #(D, B)) :-
6884 !,
6885 flatten_heads(A, C, D).
6886flatten_heads(A, B, C) :-
6887 ( functor(A, D, E),
6888 memberchk(D/E-F-G-_, B)
6889 -> A=..[_|H],
6890 split_args(F, H, I, J),
6891 member(I-K, G),
6892 C=..[K|J]
6893 ; C=A
6894 ).
6895flatten_body((A| B), C, (D| E)) :-
6896 !,
6897 conj2list(A, F),
6898 maplist(flatten_goal(C), F, G),
6899 list2conj(G, D),
6900 conj2list(B, H),
6901 maplist(flatten_goal(C), H, I),
6902 list2conj(I, E).
6903flatten_body(A, B, C) :-
6904 conj2list(A, D),
6905 maplist(flatten_goal(B), D, E),
6906 list2conj(E, C).
6907flatten_goal(_, A, B) :-
6908 var(A),
6909 !,
6910 B=A.
6911flatten_goal(A, B, C) :-
6912 ( is_specializable_goal(B, A, D)
6913 -> specialize_goal(B, D, C)
6914 ; B=E:F,
6915 get_target_module(G),
6916 E==G,
6917 nonvar(F),
6918 is_specializable_goal(F, A, D)
6919 -> specialize_goal(F, D, H),
6920 C=E:H
6921 ; partial_eval(B, C)
6922 -> true
6923 ; C=B
6924 ).
6925is_specializable_goal(A, B, C) :-
6926 functor(A, D, E),
6927 memberchk(D/E-C-_-_, B),
6928 args(C, A, F),
6929 ground(F).
6930specialize_goal(A, B, C) :-
6931 functor(A, D, E),
6932 A=..[_|F],
6933 split_args(B, F, G, H),
6934 flat_spec(D/E, B, G, _-I),
6935 C=..[I|H].
6936partial_eval(append(A, B, C), D) :-
6937 ( A==[]
6938 -> D=(C=B)
6939 ; B==[]
6940 -> D=(C=A)
6941 ).
6942partial_eval(flatten_path(A, B), C) :-
6943 ( nonvar(A),
6944 flatten(A, D),
6945 D\==A
6946 -> C=flatten_path(D, B)
6947 ).
6948dump_code(A) :-
6949 ( chr_pp_flag(dump, on)
6950 -> maplist(portray_clause, A)
6951 ; true
6952 ).
6953chr_banner :-
6954 chr_info(banner,
6955 '\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',
6956 []).
6957chr_none_locked(A, B) :-
6958 chr_pp_flag(guard_locks, C),
6959 ( C==off
6960 -> B=true
6961 ; C==on
6962 -> B='chr none_locked'(A)
6963 ; C==error
6964 -> B='chr none_error_locked'(A)
6965 ).
6966chr_not_locked(A, B) :-
6967 chr_pp_flag(guard_locks, C),
6968 ( C==off
6969 -> B=true
6970 ; C==on
6971 -> B='chr not_locked'(A)
6972 ; C==error
6973 -> B='chr not_error_locked'(A)
6974 ).
6975chr_lock(A, B) :-
6976 chr_pp_flag(guard_locks, C),
6977 ( C==off
6978 -> B=true
6979 ; C==on
6980 -> B='chr lock'(A)
6981 ; C==error
6982 -> B='chr error_lock'(A)
6983 ).
6984chr_unlock(A, B) :-
6985 chr_pp_flag(guard_locks, C),
6986 ( C==off
6987 -> B=true
6988 ; C==on
6989 -> B='chr unlock'(A)
6990 ; C==error
6991 -> B='chr unerror_lock'(A)
6992 ).
6993term_to_ast_term(A, B, C, D) :-
6994 ( atomic(A)
6995 -> B=atomic(A),
6996 D=C
6997 ; compound(A)
6998 -> functor(A, E, F),
6999 B=compound(E, F, G, A),
7000 A=..[_|H],
7001 maplist_dcg(chr_translate:term_to_ast_term,
7002 H,
7003 G,
7004 C,
7005 D)
7006 ; var(A)
7007 -> var_to_ast_term(A, C, B, D)
7008 ).
7009var_to_ast_term(A, B, C, D) :-
7010 B=E-F,
7011 ( lookup_eq(E, A, C)
7012 -> D=B
7013 ; C=var(F, A),
7014 G is F+1,
7015 H=[A-C|E],
7016 D=H-G
7017 ).
7018chr_constraint_to_ast_constraint(A, B, C, D) :-
7019 B=chr_constraint(E/F, G, A),
7020 functor(A, E, F),
7021 A=..[_|H],
7022 maplist_dcg(chr_translate:term_to_ast_term,
7023 H,
7024 G,
7025 C,
7026 D).
7027rule_to_ast_rule(A, B) :-
7028 B=ast_rule(C, D, E, F, G),
7029 A=rule(H, I, E, G),
7030 J=[]-1,
7031 ( H==[]
7032 -> C=propagation(K),
7033 maplist_dcg(chr_translate:chr_constraint_to_ast_constraint,
7034 I,
7035 K,
7036 J,
7037 L)
7038 ; I==[]
7039 -> C=simplification(K),
7040 maplist_dcg(chr_translate:chr_constraint_to_ast_constraint,
7041 H,
7042 K,
7043 J,
7044 L)
7045 ; C=simpagation(M, N),
7046 maplist_dcg(chr_translate:chr_constraint_to_ast_constraint,
7047 H,
7048 M,
7049 J,
7050 O),
7051 maplist_dcg(chr_translate:chr_constraint_to_ast_constraint,
7052 I,
7053 N,
7054 O,
7055 L)
7056 ),
7057 conj2list(E, P),
7058 maplist_dcg(chr_translate:term_to_ast_term,
7059 P,
7060 D,
7061 L,
7062 Q),
7063 conj2list(G, R),
7064 maplist_dcg(chr_translate:term_to_ast_term,
7065 R,
7066 F,
7067 Q,
7068 _).
7069pragma_rule_to_ast_rule(pragma(A, _, _, _, _), B) :-
7070 rule_to_ast_rule(A, B).
7071check_rule_to_ast_rule(A) :-
7072 ( rule_to_ast_rule(A, B)
7073 -> writeln(B)
7074 ; writeln(failed(rule_to_ast_rule(A, B)))
7075 ).
7076ast_term_to_term(var(_, A), A).
7077ast_term_to_term(atomic(A), A).
7078ast_term_to_term(compound(_, _, _, A), A).
7079ast_nonvar(atomic(_)).
7080ast_nonvar(compound(_, _, _, _)).
7081ast_ground(atomic(_)).
7082ast_ground(compound(_, _, A, _)) :-
7083 maplist(ast_ground, A).
7084ast_is_ground(A, B) :-
7085 ast_is_ground_(B, A).
7086ast_is_ground_(var(A, _), B) :-
7087 tree_set_memberchk(A, B).
7088ast_is_ground_(atomic(_), _).
7089ast_is_ground_(compound(_, _, A, _), B) :-
7090 maplist(ast_is_ground(B), A).
7091ast_functor(atomic(A), A, 0).
7092ast_functor(compound(A, B, _, _), A, B).
7093ast_symbol(atomic(A), A/0).
7094ast_symbol(compound(A, B, _, _), A/B).
7095ast_args(atomic(_), []).
7096ast_args(compound(_, _, A, _), A).
7097ast_term_variables(atomic(_), A, A).
7098ast_term_variables(compound(_, _, A, _), B, C) :-
7099 ast_term_list_variables(A, B, C).
7100ast_term_variables(var(A, _), B, C) :-
7101 tree_set_add(B, A, C).
7102ast_term_list_variables(A, B, C) :-
7103 fold(A, chr_translate:ast_term_variables, B, C).
7104ast_constraint_variables(chr_constraint(_, A, _), B, C) :-
7105 ast_term_list_variables(A, B, C).
7106ast_constraint_list_variables(A, B, C) :-
7107 fold(A, chr_translate:ast_constraint_variables, B, C).
7108ast_head_variables(simplification(A), B, C) :-
7109 ast_constraint_list_variables(A, B, C).
7110ast_head_variables(propagation(A), B, C) :-
7111 ast_constraint_list_variables(A, B, C).
7112ast_head_variables(simpagation(A, B), C, D) :-
7113 ast_constraint_list_variables(A, C, E),
7114 ast_constraint_list_variables(B, E, D).
7115ast_var_memberchk(var(A, _), B) :-
7116 tree_set_memberchk(A, B).
7117ast_instantiate(A, B, C) :-
7118 ast_instantiate_(B, A, C).
7119ast_instantiate_(var(A, _), B, C) :-
7120 get_assoc(A, B, C).
7121ast_instantiate_(atomic(A), _, A).
7122ast_instantiate_(compound(A, B, C, _), D, E) :-
7123 functor(E, A, B),
7124 E=..[_|F],
7125 maplist(ast_instantiate(D), C, F).
7126ast_head_arg_matches_([], [], A, B, [], A, B).
7127ast_head_arg_matches_([silent(A-_)|B], [C|D], E, F, G, H, I) :-
7128 !,
7129 ( C==(+)
7130 -> ast_term_variables(A, J, F),
7131 ast_head_arg_matches_(B,
7132 D,
7133 E,
7134 J,
7135 G,
7136 H,
7137 I)
7138 ; ast_head_arg_matches_(B,
7139 D,
7140 E,
7141 F,
7142 G,
7143 H,
7144 I)
7145 ).
7146ast_head_arg_matches_([A-B|C], [D|E], F, G, H, I, J) :-
7147 ( A=var(K, _)
7148 -> ( get_assoc(K, F, L)
7149 -> ( D=(+)
7150 -> ( tree_set_memberchk(K, G)
7151 -> H=[B=L|M],
7152 N=G
7153 ; H=[B==L|M],
7154 tree_set_add(G, K, N)
7155 )
7156 ; H=[B==L|M],
7157 N=G
7158 ),
7159 O=F
7160 ; put_assoc(K, F, B, O),
7161 H=M,
7162 ( D=(+)
7163 -> tree_set_add(G, K, N)
7164 ; N=G
7165 )
7166 ),
7167 P=C,
7168 Q=E
7169 ; ground(A),
7170 A='$chr_identifier_match'(R, S)
7171 -> identifier_label_atom(S, B, R, T),
7172 H=[T|M],
7173 F=O,
7174 N=G,
7175 P=C,
7176 Q=E
7177 ; A=atomic(U)
7178 -> ( D=(+)
7179 -> H=[B=U|M]
7180 ; H=[B==U|M]
7181 ),
7182 F=O,
7183 N=G,
7184 P=C,
7185 Q=E
7186 ; D==(+),
7187 ast_is_ground(G, A)
7188 -> ast_instantiate(F, A, V),
7189 H=[B=V|M],
7190 F=O,
7191 N=G,
7192 P=C,
7193 Q=E
7194 ; D==(?),
7195 ast_is_ground(G, A)
7196 -> ast_instantiate(F, A, V),
7197 H=[B==V|M],
7198 F=O,
7199 N=G,
7200 P=C,
7201 Q=E
7202 ; A=compound(W, X, Y, _),
7203 functor(Z, W, X),
7204 Z=..[_|A1],
7205 ( D=(+)
7206 -> H=[B=Z|M]
7207 ; H=[nonvar(B), B=Z|M]
7208 ),
7209 pairup(Y, A1, B1),
7210 append(B1, C, P),
7211 replicate(_, D, C1),
7212 append(C1, E, Q),
7213 O=F,
7214 N=G
7215 ),
7216 ast_head_arg_matches_(P,
7217 Q,
7218 O,
7219 N,
7220 M,
7221 I,
7222 J).
7223:- use_module(chr(chr_runtime)). 7224:- use_module(chr(chr_hashtable_store)). 7225attach_generate_empty_named_history_initialisation___1([], _).
7226attach_generate_empty_named_history_initialisation___1([A|B], C) :-
7227 ( get_attr(A, chr_translate, D)
7228 -> D=v(E, F, G, H, I, J, K, L, M, N, O),
7229 ( E/\1=:=1
7230 -> P=v(E, [C|F], G, H, I, J, K, L, M, N, O)
7231 ; Q is E\/1,
7232 P=v(Q, [C], G, H, I, J, K, L, M, N, O)
7233 ),
7234 put_attr(A, chr_translate, P)
7235 ; put_attr(A,
7236 chr_translate,
7237 v(1, [C], [], [], [], [], [], [], [], [], []))
7238 ),
7239 attach_generate_empty_named_history_initialisation___1(B, C).
7240detach_generate_empty_named_history_initialisation___1([], _).
7241detach_generate_empty_named_history_initialisation___1([A|B], C) :-
7242 ( get_attr(A, chr_translate, D)
7243 -> D=v(E, F, G, H, I, J, K, L, M, N, O),
7244 ( E/\1=:=1
7245 -> 'chr sbag_del_element'(F, C, P),
7246 ( P==[]
7247 -> Q is E/\ -2,
7248 ( Q==0
7249 -> del_attr(A, chr_translate)
7250 ; put_attr(A,
7251 chr_translate,
7252 v(Q,
7253 [],
7254 G,
7255 H,
7256 I,
7257 J,
7258 K,
7259 L,
7260 M,
7261 N,
7262 O))
7263 )
7264 ; put_attr(A,
7265 chr_translate,
7266 v(E,
7267 P,
7268 G,
7269 H,
7270 I,
7271 J,
7272 K,
7273 L,
7274 M,
7275 N,
7276 O))
7277 )
7278 ; true
7279 )
7280 ; true
7281 ),
7282 detach_generate_empty_named_history_initialisation___1(B, C).
7283attach_symbol_count___2([], _).
7284attach_symbol_count___2([A|B], C) :-
7285 ( get_attr(A, chr_translate, D)
7286 -> D=v(E, F, G, H, I, J, K, L, M, N, O),
7287 ( E/\2=:=2
7288 -> P=v(E, F, [C|G], H, I, J, K, L, M, N, O)
7289 ; Q is E\/2,
7290 P=v(Q, F, [C], H, I, J, K, L, M, N, O)
7291 ),
7292 put_attr(A, chr_translate, P)
7293 ; put_attr(A,
7294 chr_translate,
7295 v(2, [], [C], [], [], [], [], [], [], [], []))
7296 ),
7297 attach_symbol_count___2(B, C).
7298detach_symbol_count___2([], _).
7299detach_symbol_count___2([A|B], C) :-
7300 ( get_attr(A, chr_translate, D)
7301 -> D=v(E, F, G, H, I, J, K, L, M, N, O),
7302 ( E/\2=:=2
7303 -> 'chr sbag_del_element'(G, C, P),
7304 ( P==[]
7305 -> Q is E/\ -3,
7306 ( Q==0
7307 -> del_attr(A, chr_translate)
7308 ; put_attr(A,
7309 chr_translate,
7310 v(Q,
7311 F,
7312 [],
7313 H,
7314 I,
7315 J,
7316 K,
7317 L,
7318 M,
7319 N,
7320 O))
7321 )
7322 ; put_attr(A,
7323 chr_translate,
7324 v(E,
7325 F,
7326 P,
7327 H,
7328 I,
7329 J,
7330 K,
7331 L,
7332 M,
7333 N,
7334 O))
7335 )
7336 ; true
7337 )
7338 ; true
7339 ),
7340 detach_symbol_count___2(B, C).
7341attach_fresh_symbol___2([], _).
7342attach_fresh_symbol___2([A|B], C) :-
7343 ( get_attr(A, chr_translate, D)
7344 -> D=v(E, F, G, H, I, J, K, L, M, N, O),
7345 ( E/\4=:=4
7346 -> P=v(E, F, G, [C|H], I, J, K, L, M, N, O)
7347 ; Q is E\/4,
7348 P=v(Q, F, G, [C], I, J, K, L, M, N, O)
7349 ),
7350 put_attr(A, chr_translate, P)
7351 ; put_attr(A,
7352 chr_translate,
7353 v(4, [], [], [C], [], [], [], [], [], [], []))
7354 ),
7355 attach_fresh_symbol___2(B, C).
7356detach_fresh_symbol___2([], _).
7357detach_fresh_symbol___2([A|B], C) :-
7358 ( get_attr(A, chr_translate, D)
7359 -> D=v(E, F, G, H, I, J, K, L, M, N, O),
7360 ( E/\4=:=4
7361 -> 'chr sbag_del_element'(H, C, P),
7362 ( P==[]
7363 -> Q is E/\ -5,
7364 ( Q==0
7365 -> del_attr(A, chr_translate)
7366 ; put_attr(A,
7367 chr_translate,
7368 v(Q,
7369 F,
7370 G,
7371 [],
7372 I,
7373 J,
7374 K,
7375 L,
7376 M,
7377 N,
7378 O))
7379 )
7380 ; put_attr(A,
7381 chr_translate,
7382 v(E,
7383 F,
7384 G,
7385 P,
7386 I,
7387 J,
7388 K,
7389 L,
7390 M,
7391 N,
7392 O))
7393 )
7394 ; true
7395 )
7396 ; true
7397 ),
7398 detach_fresh_symbol___2(B, C).
7399attach_background_info___2([], _).
7400attach_background_info___2([A|B], C) :-
7401 ( get_attr(A, chr_translate, D)
7402 -> D=v(E, F, G, H, I, J, K, L, M, N, O),
7403 ( E/\8=:=8
7404 -> P=v(E, F, G, H, [C|I], J, K, L, M, N, O)
7405 ; Q is E\/8,
7406 P=v(Q, F, G, H, [C], J, K, L, M, N, O)
7407 ),
7408 put_attr(A, chr_translate, P)
7409 ; put_attr(A,
7410 chr_translate,
7411 v(8, [], [], [], [C], [], [], [], [], [], []))
7412 ),
7413 attach_background_info___2(B, C).
7414detach_background_info___2([], _).
7415detach_background_info___2([A|B], C) :-
7416 ( get_attr(A, chr_translate, D)
7417 -> D=v(E, F, G, H, I, J, K, L, M, N, O),
7418 ( E/\8=:=8
7419 -> 'chr sbag_del_element'(I, C, P),
7420 ( P==[]
7421 -> Q is E/\ -9,
7422 ( Q==0
7423 -> del_attr(A, chr_translate)
7424 ; put_attr(A,
7425 chr_translate,
7426 v(Q,
7427 F,
7428 G,
7429 H,
7430 [],
7431 J,
7432 K,
7433 L,
7434 M,
7435 N,
7436 O))
7437 )
7438 ; put_attr(A,
7439 chr_translate,
7440 v(E,
7441 F,
7442 G,
7443 H,
7444 P,
7445 J,
7446 K,
7447 L,
7448 M,
7449 N,
7450 O))
7451 )
7452 ; true
7453 )
7454 ; true
7455 ),
7456 detach_background_info___2(B, C).
7457attach_get_bg_info___2([], _).
7458attach_get_bg_info___2([A|B], C) :-
7459 ( get_attr(A, chr_translate, D)
7460 -> D=v(E, F, G, H, I, J, K, L, M, N, O),
7461 ( E/\16=:=16
7462 -> P=v(E, F, G, H, I, [C|J], K, L, M, N, O)
7463 ; Q is E\/16,
7464 P=v(Q, F, G, H, I, [C], K, L, M, N, O)
7465 ),
7466 put_attr(A, chr_translate, P)
7467 ; put_attr(A,
7468 chr_translate,
7469 v(16, [], [], [], [], [C], [], [], [], [], []))
7470 ),
7471 attach_get_bg_info___2(B, C).
7472detach_get_bg_info___2([], _).
7473detach_get_bg_info___2([A|B], C) :-
7474 ( get_attr(A, chr_translate, D)
7475 -> D=v(E, F, G, H, I, J, K, L, M, N, O),
7476 ( E/\16=:=16
7477 -> 'chr sbag_del_element'(J, C, P),
7478 ( P==[]
7479 -> Q is E/\ -17,
7480 ( Q==0
7481 -> del_attr(A, chr_translate)
7482 ; put_attr(A,
7483 chr_translate,
7484 v(Q,
7485 F,
7486 G,
7487 H,
7488 I,
7489 [],
7490 K,
7491 L,
7492 M,
7493 N,
7494 O))
7495 )
7496 ; put_attr(A,
7497 chr_translate,
7498 v(E,
7499 F,
7500 G,
7501 H,
7502 I,
7503 P,
7504 K,
7505 L,
7506 M,
7507 N,
7508 O))
7509 )
7510 ; true
7511 )
7512 ; true
7513 ),
7514 detach_get_bg_info___2(B, C).
7515attach_type_definition___2([], _).
7516attach_type_definition___2([A|B], C) :-
7517 ( get_attr(A, chr_translate, D)
7518 -> D=v(E, F, G, H, I, J, K, L, M, N, O),
7519 ( E/\32=:=32
7520 -> P=v(E, F, G, H, I, J, [C|K], L, M, N, O)
7521 ; Q is E\/32,
7522 P=v(Q, F, G, H, I, J, [C], L, M, N, O)
7523 ),
7524 put_attr(A, chr_translate, P)
7525 ; put_attr(A,
7526 chr_translate,
7527 v(32, [], [], [], [], [], [C], [], [], [], []))
7528 ),
7529 attach_type_definition___2(B, C).
7530detach_type_definition___2([], _).
7531detach_type_definition___2([A|B], C) :-
7532 ( get_attr(A, chr_translate, D)
7533 -> D=v(E, F, G, H, I, J, K, L, M, N, O),
7534 ( E/\32=:=32
7535 -> 'chr sbag_del_element'(K, C, P),
7536 ( P==[]
7537 -> Q is E/\ -33,
7538 ( Q==0
7539 -> del_attr(A, chr_translate)
7540 ; put_attr(A,
7541 chr_translate,
7542 v(Q,
7543 F,
7544 G,
7545 H,
7546 I,
7547 J,
7548 [],
7549 L,
7550 M,
7551 N,
7552 O))
7553 )
7554 ; put_attr(A,
7555 chr_translate,
7556 v(E,
7557 F,
7558 G,
7559 H,
7560 I,
7561 J,
7562 P,
7563 L,
7564 M,
7565 N,
7566 O))
7567 )
7568 ; true
7569 )
7570 ; true
7571 ),
7572 detach_type_definition___2(B, C).
7573attach_type_alias___2([], _).
7574attach_type_alias___2([A|B], C) :-
7575 ( get_attr(A, chr_translate, D)
7576 -> D=v(E, F, G, H, I, J, K, L, M, N, O),
7577 ( E/\64=:=64
7578 -> P=v(E, F, G, H, I, J, K, [C|L], M, N, O)
7579 ; Q is E\/64,
7580 P=v(Q, F, G, H, I, J, K, [C], M, N, O)
7581 ),
7582 put_attr(A, chr_translate, P)
7583 ; put_attr(A,
7584 chr_translate,
7585 v(64, [], [], [], [], [], [], [C], [], [], []))
7586 ),
7587 attach_type_alias___2(B, C).
7588detach_type_alias___2([], _).
7589detach_type_alias___2([A|B], C) :-
7590 ( get_attr(A, chr_translate, D)
7591 -> D=v(E, F, G, H, I, J, K, L, M, N, O),
7592 ( E/\64=:=64
7593 -> 'chr sbag_del_element'(L, C, P),
7594 ( P==[]
7595 -> Q is E/\ -65,
7596 ( Q==0
7597 -> del_attr(A, chr_translate)
7598 ; put_attr(A,
7599 chr_translate,
7600 v(Q,
7601 F,
7602 G,
7603 H,
7604 I,
7605 J,
7606 K,
7607 [],
7608 M,
7609 N,
7610 O))
7611 )
7612 ; put_attr(A,
7613 chr_translate,
7614 v(E,
7615 F,
7616 G,
7617 H,
7618 I,
7619 J,
7620 K,
7621 P,
7622 M,
7623 N,
7624 O))
7625 )
7626 ; true
7627 )
7628 ; true
7629 ),
7630 detach_type_alias___2(B, C).
7631attach_unalias_type___2([], _).
7632attach_unalias_type___2([A|B], C) :-
7633 ( get_attr(A, chr_translate, D)
7634 -> D=v(E, F, G, H, I, J, K, L, M, N, O),
7635 ( E/\128=:=128
7636 -> P=v(E, F, G, H, I, J, K, L, [C|M], N, O)
7637 ; Q is E\/128,
7638 P=v(Q, F, G, H, I, J, K, L, [C], N, O)
7639 ),
7640 put_attr(A, chr_translate, P)
7641 ; put_attr(A,
7642 chr_translate,
7643 v(128, [], [], [], [], [], [], [], [C], [], []))
7644 ),
7645 attach_unalias_type___2(B, C).
7646detach_unalias_type___2([], _).
7647detach_unalias_type___2([A|B], C) :-
7648 ( get_attr(A, chr_translate, D)
7649 -> D=v(E, F, G, H, I, J, K, L, M, N, O),
7650 ( E/\128=:=128
7651 -> 'chr sbag_del_element'(M, C, P),
7652 ( P==[]
7653 -> Q is E/\ -129,
7654 ( Q==0
7655 -> del_attr(A, chr_translate)
7656 ; put_attr(A,
7657 chr_translate,
7658 v(Q,
7659 F,
7660 G,
7661 H,
7662 I,
7663 J,
7664 K,
7665 L,
7666 [],
7667 N,
7668 O))
7669 )
7670 ; put_attr(A,
7671 chr_translate,
7672 v(E,
7673 F,
7674 G,
7675 H,
7676 I,
7677 J,
7678 K,
7679 L,
7680 P,
7681 N,
7682 O))
7683 )
7684 ; true
7685 )
7686 ; true
7687 ),
7688 detach_unalias_type___2(B, C).
7689attach_ast_static_type_check_var___4([], _).
7690attach_ast_static_type_check_var___4([A|B], C) :-
7691 ( get_attr(A, chr_translate, D)
7692 -> D=v(E, F, G, H, I, J, K, L, M, N, O),
7693 ( E/\256=:=256
7694 -> P=v(E, F, G, H, I, J, K, L, M, [C|N], O)
7695 ; Q is E\/256,
7696 P=v(Q, F, G, H, I, J, K, L, M, [C], O)
7697 ),
7698 put_attr(A, chr_translate, P)
7699 ; put_attr(A,
7700 chr_translate,
7701 v(256, [], [], [], [], [], [], [], [], [C], []))
7702 ),
7703 attach_ast_static_type_check_var___4(B, C).
7704detach_ast_static_type_check_var___4([], _).
7705detach_ast_static_type_check_var___4([A|B], C) :-
7706 ( get_attr(A, chr_translate, D)
7707 -> D=v(E, F, G, H, I, J, K, L, M, N, O),
7708 ( E/\256=:=256
7709 -> 'chr sbag_del_element'(N, C, P),
7710 ( P==[]
7711 -> Q is E/\ -257,
7712 ( Q==0
7713 -> del_attr(A, chr_translate)
7714 ; put_attr(A,
7715 chr_translate,
7716 v(Q,
7717 F,
7718 G,
7719 H,
7720 I,
7721 J,
7722 K,
7723 L,
7724 M,
7725 [],
7726 O))
7727 )
7728 ; put_attr(A,
7729 chr_translate,
7730 v(E,
7731 F,
7732 G,
7733 H,
7734 I,
7735 J,
7736 K,
7737 L,
7738 M,
7739 P,
7740 O))
7741 )
7742 ; true
7743 )
7744 ; true
7745 ),
7746 detach_ast_static_type_check_var___4(B, C).
7747attach_atomic_type___1([], _).
7748attach_atomic_type___1([A|B], C) :-
7749 ( get_attr(A, chr_translate, D)
7750 -> D=v(E, F, G, H, I, J, K, L, M, N, O),
7751 ( E/\512=:=512
7752 -> P=v(E, F, G, H, I, J, K, L, M, N, [C|O])
7753 ; Q is E\/512,
7754 P=v(Q, F, G, H, I, J, K, L, M, N, [C])
7755 ),
7756 put_attr(A, chr_translate, P)
7757 ; put_attr(A,
7758 chr_translate,
7759 v(512, [], [], [], [], [], [], [], [], [], [C]))
7760 ),
7761 attach_atomic_type___1(B, C).
7762detach_atomic_type___1([], _).
7763detach_atomic_type___1([A|B], C) :-
7764 ( get_attr(A, chr_translate, D)
7765 -> D=v(E, F, G, H, I, J, K, L, M, N, O),
7766 ( E/\512=:=512
7767 -> 'chr sbag_del_element'(O, C, P),
7768 ( P==[]
7769 -> Q is E/\ -513,
7770 ( Q==0
7771 -> del_attr(A, chr_translate)
7772 ; put_attr(A,
7773 chr_translate,
7774 v(Q,
7775 F,
7776 G,
7777 H,
7778 I,
7779 J,
7780 K,
7781 L,
7782 M,
7783 N,
7784 []))
7785 )
7786 ; put_attr(A,
7787 chr_translate,
7788 v(E,
7789 F,
7790 G,
7791 H,
7792 I,
7793 J,
7794 K,
7795 L,
7796 M,
7797 N,
7798 P))
7799 )
7800 ; true
7801 )
7802 ; true
7803 ),
7804 detach_atomic_type___1(B, C).
7805attach_increment([], _).
7806attach_increment([A|B], C) :-
7807 ( get_attr(A, chr_translate, D)
7808 -> C=v(E, F, G, H, I, J, K, L, M, N, O),
7809 D=v(P, Q, R, S, T, U, V, W, X, Y, Z),
7810 ( sort(Q, A1),
7811 'chr merge_attributes'(F, A1, B1),
7812 sort(R, C1),
7813 'chr merge_attributes'(G, C1, D1),
7814 sort(S, E1),
7815 'chr merge_attributes'(H, E1, F1),
7816 sort(T, G1),
7817 'chr merge_attributes'(I, G1, H1),
7818 sort(U, I1),
7819 'chr merge_attributes'(J, I1, J1),
7820 sort(V, K1),
7821 'chr merge_attributes'(K, K1, L1),
7822 sort(W, M1),
7823 'chr merge_attributes'(L, M1, N1),
7824 sort(X, O1),
7825 'chr merge_attributes'(M, O1, P1),
7826 sort(Y, Q1),
7827 'chr merge_attributes'(N, Q1, R1),
7828 sort(Z, S1),
7829 'chr merge_attributes'(O, S1, T1)
7830 ),
7831 U1 is E\/P,
7832 put_attr(A,
7833 chr_translate,
7834 v(U1,
7835 B1,
7836 D1,
7837 F1,
7838 H1,
7839 J1,
7840 L1,
7841 N1,
7842 P1,
7843 R1,
7844 T1))
7845 ; put_attr(A, chr_translate, C)
7846 ),
7847 attach_increment(B, C).
7848attribute_goals(_, A, A).
7849attr_unify_hook(v(A, B, C, D, E, F, G, H, I, J, K), L) :-
7850 sort(B, M),
7851 sort(C, N),
7852 sort(D, O),
7853 sort(E, P),
7854 sort(F, Q),
7855 sort(G, R),
7856 sort(H, S),
7857 sort(I, T),
7858 sort(J, U),
7859 sort(K, V),
7860 ( var(L)
7861 -> ( get_attr(L, chr_translate, W)
7862 -> W=v(X, Y, Z, A1, B1, C1, D1, E1, F1, G1, H1),
7863 ( sort(Y, I1),
7864 'chr merge_attributes'(M, I1, J1),
7865 sort(Z, K1),
7866 'chr merge_attributes'(N, K1, L1),
7867 sort(A1, M1),
7868 'chr merge_attributes'(O, M1, N1),
7869 sort(B1, O1),
7870 'chr merge_attributes'(P, O1, P1),
7871 sort(C1, Q1),
7872 'chr merge_attributes'(Q, Q1, R1),
7873 sort(D1, S1),
7874 'chr merge_attributes'(R, S1, T1),
7875 sort(E1, U1),
7876 'chr merge_attributes'(S, U1, V1),
7877 sort(F1, W1),
7878 'chr merge_attributes'(T, W1, X1),
7879 sort(G1, Y1),
7880 'chr merge_attributes'(U, Y1, Z1),
7881 sort(H1, A2),
7882 'chr merge_attributes'(V, A2, B2)
7883 ),
7884 C2 is A\/X,
7885 put_attr(L,
7886 chr_translate,
7887 v(C2,
7888 J1,
7889 L1,
7890 N1,
7891 P1,
7892 R1,
7893 T1,
7894 V1,
7895 X1,
7896 Z1,
7897 B2)),
7898 '$run_suspensions_generate_empty_named_history_initialisation___1'(M),
7899 '$run_suspensions_symbol_count___2'(N),
7900 '$run_suspensions_fresh_symbol___2'(O),
7901 '$run_suspensions_background_info___2'(P1),
7902 '$run_suspensions_get_bg_info___2'(R1),
7903 '$run_suspensions_type_definition___2'(T1),
7904 '$run_suspensions_type_alias___2'(V1),
7905 '$run_suspensions_unalias_type___2'(X1),
7906 '$run_suspensions_ast_static_type_check_var___4'(Z1),
7907 '$run_suspensions_atomic_type___1'(B2)
7908 ; put_attr(L,
7909 chr_translate,
7910 v(A,
7911 M,
7912 N,
7913 O,
7914 P,
7915 Q,
7916 R,
7917 S,
7918 T,
7919 U,
7920 V)),
7921 '$run_suspensions_generate_empty_named_history_initialisation___1'(M),
7922 '$run_suspensions_symbol_count___2'(N),
7923 '$run_suspensions_fresh_symbol___2'(O),
7924 '$run_suspensions_background_info___2'(P),
7925 '$run_suspensions_get_bg_info___2'(Q),
7926 '$run_suspensions_type_definition___2'(R),
7927 '$run_suspensions_type_alias___2'(S),
7928 '$run_suspensions_unalias_type___2'(T),
7929 '$run_suspensions_ast_static_type_check_var___4'(U),
7930 '$run_suspensions_atomic_type___1'(V)
7931 )
7932 ; ( compound(L)
7933 -> term_variables(L, D2),
7934 attach_increment(D2,
7935 v(A,
7936 M,
7937 N,
7938 O,
7939 P,
7940 Q,
7941 R,
7942 S,
7943 T,
7944 U,
7945 V))
7946 ; true
7947 ),
7948 '$run_suspensions_generate_empty_named_history_initialisation___1'(M),
7949 '$run_suspensions_symbol_count___2'(N),
7950 '$run_suspensions_fresh_symbol___2'(O),
7951 '$run_suspensions_background_info___2'(P),
7952 '$run_suspensions_get_bg_info___2'(Q),
7953 '$run_suspensions_type_definition___2'(R),
7954 '$run_suspensions_type_alias___2'(S),
7955 '$run_suspensions_unalias_type___2'(T),
7956 '$run_suspensions_ast_static_type_check_var___4'(U),
7957 '$run_suspensions_atomic_type___1'(V)
7958 ).
7959'$novel_production'(A, B) :-
7960 arg(3, A, C),
7961 ( hprolog:get_ds(B, C, _)
7962 -> fail
7963 ; true
7964 ).
7965'$extend_history'(A, B) :-
7966 arg(3, A, C),
7967 hprolog:put_ds(B, C, x, D),
7968 setarg(3, A, D).
7969'$run_suspensions_generate_empty_named_history_initialisation___1'([]).
7970'$run_suspensions_generate_empty_named_history_initialisation___1'([A|B]) :-
7971 A=suspension(_, C, D, _, E),
7972 ( C==active
7973 -> setarg(2, A, triggered),
7974 F is D+1,
7975 setarg(3, A, F),
7976 generate_empty_named_history_initialisation___1__0(E, A),
7977 ( C==triggered
7978 -> setarg(2, A, active)
7979 ; true
7980 )
7981 ; true
7982 ),
7983 '$run_suspensions_generate_empty_named_history_initialisation___1'(B).
7984'$run_suspensions_symbol_count___2'([]).
7985'$run_suspensions_symbol_count___2'([A|B]) :-
7986 A=suspension(_, C, _, D, E),
7987 ( C==active
7988 -> setarg(2, A, triggered),
7989 symbol_count___2__0(D, E, A),
7990 ( C==triggered
7991 -> setarg(2, A, active)
7992 ; true
7993 )
7994 ; true
7995 ),
7996 '$run_suspensions_symbol_count___2'(B).
7997'$run_suspensions_fresh_symbol___2'([]).
7998'$run_suspensions_fresh_symbol___2'([A|B]) :-
7999 A=suspension(_, C, _, D, _, E, F),
8000 ( C==active
8001 -> setarg(2, A, triggered),
8002 G is D+1,
8003 setarg(4, A, G),
8004 fresh_symbol___2__0(E, F, A),
8005 ( C==triggered
8006 -> setarg(2, A, active)
8007 ; true
8008 )
8009 ; true
8010 ),
8011 '$run_suspensions_fresh_symbol___2'(B).
8012'$run_suspensions_background_info___2'([]).
8013'$run_suspensions_background_info___2'([A|B]) :-
8014 A=suspension(_, C, _, D, _, E, F),
8015 setarg(2, A, triggered),
8016 G is D+1,
8017 setarg(4, A, G),
8018 background_info___2__0(E, F, A),
8019 ( C==triggered
8020 -> setarg(2, A, active)
8021 ; true
8022 ),
8023 '$run_suspensions_background_info___2'(B).
8024'$run_suspensions_get_bg_info___2'([]).
8025'$run_suspensions_get_bg_info___2'([A|B]) :-
8026 A=suspension(_, C, _, D, _, E, F),
8027 ( C==active
8028 -> setarg(2, A, triggered),
8029 G is D+1,
8030 setarg(4, A, G),
8031 get_bg_info___2__0(E, F, A),
8032 ( C==triggered
8033 -> setarg(2, A, active)
8034 ; true
8035 )
8036 ; true
8037 ),
8038 '$run_suspensions_get_bg_info___2'(B).
8039'$run_suspensions_type_definition___2'([]).
8040'$run_suspensions_type_definition___2'([A|B]) :-
8041 A=suspension(_, C, _, D, _, E, F),
8042 ( C==active
8043 -> setarg(2, A, triggered),
8044 G is D+1,
8045 setarg(4, A, G),
8046 type_definition___2__0(E, F, A),
8047 ( C==triggered
8048 -> setarg(2, A, active)
8049 ; true
8050 )
8051 ; true
8052 ),
8053 '$run_suspensions_type_definition___2'(B).
8054'$run_suspensions_type_alias___2'([]).
8055'$run_suspensions_type_alias___2'([A|B]) :-
8056 A=suspension(_, C, _, D, _, E, F),
8057 ( C==active
8058 -> setarg(2, A, triggered),
8059 G is D+1,
8060 setarg(4, A, G),
8061 type_alias___2__0(E, F, A),
8062 ( C==triggered
8063 -> setarg(2, A, active)
8064 ; true
8065 )
8066 ; true
8067 ),
8068 '$run_suspensions_type_alias___2'(B).
8069'$run_suspensions_unalias_type___2'([]).
8070'$run_suspensions_unalias_type___2'([A|B]) :-
8071 A=suspension(_, C, _, D, E),
8072 ( C==active
8073 -> setarg(2, A, triggered),
8074 unalias_type___2__0(D, E, A),
8075 ( C==triggered
8076 -> setarg(2, A, active)
8077 ; true
8078 )
8079 ; true
8080 ),
8081 '$run_suspensions_unalias_type___2'(B).
8082'$run_suspensions_ast_static_type_check_var___4'([]).
8083'$run_suspensions_ast_static_type_check_var___4'([A|B]) :-
8084 A=suspension(_, C, _, D, E, F, G),
8085 ( C==active
8086 -> setarg(2, A, triggered),
8087 ast_static_type_check_var___4__0(D,
8088 E,
8089 F,
8090 G,
8091 A),
8092 ( C==triggered
8093 -> setarg(2, A, active)
8094 ; true
8095 )
8096 ; true
8097 ),
8098 '$run_suspensions_ast_static_type_check_var___4'(B).
8099'$run_suspensions_atomic_type___1'([]).
8100'$run_suspensions_atomic_type___1'([A|B]) :-
8101 A=suspension(_, C, _, D),
8102 ( C==active
8103 -> setarg(2, A, triggered),
8104 atomic_type___1__0(D, A),
8105 ( C==triggered
8106 -> setarg(2, A, active)
8107 ; true
8108 )
8109 ; true
8110 ),
8111 '$run_suspensions_atomic_type___1'(B).
8112'$enumerate_constraints'(A) :-
8113 ( nonvar(A)
8114 -> functor(A, B, _),
8115 '$enumerate_constraints'(B, A)
8116 ; '$enumerate_constraints'(_, A)
8117 ).
8118'$enumerate_constraints'(chr_source_file, A) :-
8119 nb_getval('$chr_store_global_ground_chr_translate____chr_source_file___1',
8120 B),
8121 member(C, B),
8122 C=suspension(_, _, _, D),
8123 A=chr_source_file(D).
8124'$enumerate_constraints'(target_module, A) :-
8125 nb_getval('$chr_store_global_ground_chr_translate____target_module___1',
8126 B),
8127 member(C, B),
8128 C=suspension(_, _, _, D),
8129 A=target_module(D).
8130'$enumerate_constraints'(source_location, A) :-
8131 nb_getval('$chr_store_multi_hash_chr_translate____source_location___2-1',
8132 B),
8133 value_ht(B, C),
8134 C=suspension(_, _, D, E),
8135 A=source_location(D, E).
8136'$enumerate_constraints'(indexed_argument, A) :-
8137 nb_getval('$chr_store_multi_hash_chr_translate____indexed_argument___2-1',
8138 B),
8139 value_ht(B, C),
8140 C=suspension(_, _, D, E),
8141 A=indexed_argument(D, E).
8142'$enumerate_constraints'(constraint_mode, A) :-
8143 nb_getval('$chr_store_global_ground_chr_translate____constraint_mode___2',
8144 B),
8145 member(C, B),
8146 C=suspension(_, _, _, _, D, E),
8147 A=constraint_mode(D, E).
8148'$enumerate_constraints'(none_suspended_on_variables, A) :-
8149 nb_getval('$chr_store_global_ground_chr_translate____none_suspended_on_variables___0',
8150 B),
8151 member(C, B),
8152 C=suspension(_, _, _),
8153 A=none_suspended_on_variables.
8154'$enumerate_constraints'(store_type, A) :-
8155 nb_getval('$chr_store_multi_hash_chr_translate____store_type___2-1', B),
8156 value_ht(B, C),
8157 C=suspension(_, _, D, E),
8158 A=store_type(D, E).
8159'$enumerate_constraints'(actual_store_types, A) :-
8160 nb_getval('$chr_store_multi_hash_chr_translate____actual_store_types___2-1',
8161 B),
8162 value_ht(B, C),
8163 C=suspension(_, _, D, E),
8164 A=actual_store_types(D, E).
8165'$enumerate_constraints'(assumed_store_type, A) :-
8166 nb_getval('$chr_store_multi_hash_chr_translate____assumed_store_type___2-1',
8167 B),
8168 value_ht(B, C),
8169 C=suspension(_, _, D, E),
8170 A=assumed_store_type(D, E).
8171'$enumerate_constraints'(validate_store_type_assumption, A) :-
8172 nb_getval('$chr_store_multi_hash_chr_translate____validate_store_type_assumption___1-1',
8173 B),
8174 value_ht(B, C),
8175 C=suspension(_, _, D),
8176 A=validate_store_type_assumption(D).
8177'$enumerate_constraints'(rule_count, A) :-
8178 nb_getval('$chr_store_global_ground_chr_translate____rule_count___1',
8179 B),
8180 member(C, B),
8181 C=suspension(_, _, _, D),
8182 A=rule_count(D).
8183'$enumerate_constraints'(passive, A) :-
8184 nb_getval('$chr_store_multi_hash_chr_translate____passive___2-1', B),
8185 value_ht(B, C),
8186 C=suspension(_, _, _, D, E),
8187 A=passive(D, E).
8188'$enumerate_constraints'(occurrence, A) :-
8189 nb_getval('$chr_store_global_ground_chr_translate____occurrence___5',
8190 B),
8191 member(C, B),
8192 C=suspension(_, _, _, _, D, E, F, G, H),
8193 A=occurrence(D, E, F, G, H).
8194'$enumerate_constraints'(max_occurrence, A) :-
8195 nb_getval('$chr_store_multi_hash_chr_translate____max_occurrence___2-1',
8196 B),
8197 value_ht(B, C),
8198 C=suspension(_, _, _, D, E),
8199 A=max_occurrence(D, E).
8200'$enumerate_constraints'(allocation_occurrence, A) :-
8201 nb_getval('$chr_store_multi_hash_chr_translate____allocation_occurrence___2-1',
8202 B),
8203 value_ht(B, C),
8204 C=suspension(_, _, _, D, E),
8205 A=allocation_occurrence(D, E).
8206'$enumerate_constraints'(rule, A) :-
8207 nb_getval('$chr_store_global_ground_chr_translate____rule___2', B),
8208 member(C, B),
8209 C=suspension(_, _, _, _, D, E),
8210 A=rule(D, E).
8211'$enumerate_constraints'(least_occurrence, A) :-
8212 nb_getval('$chr_store_multi_hash_chr_translate____least_occurrence___2-12',
8213 B),
8214 value_ht(B, C),
8215 C=suspension(_, _, D, E),
8216 A=least_occurrence(D, E).
8217'$enumerate_constraints'(constraint_index, A) :-
8218 nb_getval('$chr_store_multi_hash_chr_translate____constraint_index___2-2',
8219 B),
8220 value_ht(B, C),
8221 C=suspension(_, _, D, E),
8222 A=constraint_index(D, E).
8223'$enumerate_constraints'(max_constraint_index, A) :-
8224 nb_getval('$chr_store_global_ground_chr_translate____max_constraint_index___1',
8225 B),
8226 member(C, B),
8227 C=suspension(_, _, _, D),
8228 A=max_constraint_index(D).
8229'$enumerate_constraints'(identifier_size, A) :-
8230 nb_getval('$chr_store_global_ground_chr_translate____identifier_size___1',
8231 B),
8232 member(C, B),
8233 C=suspension(_, _, _, D),
8234 A=identifier_size(D).
8235'$enumerate_constraints'(identifier_index, A) :-
8236 nb_getval('$chr_store_multi_hash_chr_translate____identifier_index___3-12',
8237 B),
8238 value_ht(B, C),
8239 C=suspension(_, _, D, E, F),
8240 A=identifier_index(D, E, F).
8241'$enumerate_constraints'(type_indexed_identifier_size, A) :-
8242 nb_getval('$chr_store_multi_hash_chr_translate____type_indexed_identifier_size___2-1',
8243 B),
8244 value_ht(B, C),
8245 C=suspension(_, _, D, E),
8246 A=type_indexed_identifier_size(D, E).
8247'$enumerate_constraints'(type_indexed_identifier_index, A) :-
8248 nb_getval('$chr_store_multi_hash_chr_translate____type_indexed_identifier_index___4-123',
8249 B),
8250 value_ht(B, C),
8251 C=suspension(_, _, D, E, F, G),
8252 A=type_indexed_identifier_index(D, E, F, G).
8253'$enumerate_constraints'(no_history, A) :-
8254 nb_getval('$chr_store_multi_hash_chr_translate____no_history___1-1', B),
8255 value_ht(B, C),
8256 C=suspension(_, _, D),
8257 A=no_history(D).
8258'$enumerate_constraints'(history, A) :-
8259 nb_getval('$chr_store_multi_hash_chr_translate____history___3-2', B),
8260 value_ht(B, C),
8261 C=suspension(_, _, _, D, E, F),
8262 A=history(D, E, F).
8263'$enumerate_constraints'(indexing_spec, A) :-
8264 nb_getval('$chr_store_multi_hash_chr_translate____indexing_spec___2-1',
8265 B),
8266 value_ht(B, C),
8267 C=suspension(_, _, D, E),
8268 A=indexing_spec(D, E).
8269'$enumerate_constraints'(observation_analysis, A) :-
8270 nb_getval('$chr_store_global_ground_chr_translate____observation_analysis___1',
8271 B),
8272 member(C, B),
8273 C=suspension(_, _, _, D),
8274 A=observation_analysis(D).
8275'$enumerate_constraints'(spawns, A) :-
8276 nb_getval('$chr_store_global_ground_chr_translate____spawns___3', B),
8277 member(C, B),
8278 C=suspension(_, _, _, _, D, E, F),
8279 A=spawns(D, E, F).
8280'$enumerate_constraints'(spawns_all, A) :-
8281 nb_getval('$chr_store_multi_hash_chr_translate____spawns_all___2-1', B),
8282 value_ht(B, C),
8283 C=suspension(_, _, D, E),
8284 A=spawns_all(D, E).
8285'$enumerate_constraints'(spawns_all_triggers, A) :-
8286 nb_getval('$chr_store_global_ground_chr_translate____spawns_all_triggers___2',
8287 B),
8288 member(C, B),
8289 C=suspension(_, _, _, _, D, E),
8290 A=spawns_all_triggers(D, E).
8291'$enumerate_constraints'(spawns_all_triggers_implies_spawns_all, A) :-
8292 nb_getval('$chr_store_global_ground_chr_translate____spawns_all_triggers_implies_spawns_all___0',
8293 B),
8294 member(C, B),
8295 C=suspension(_, _, _),
8296 A=spawns_all_triggers_implies_spawns_all.
8297'$enumerate_constraints'(empty_named_history_initialisations, A) :-
8298 nb_getval('$chr_store_global_ground_chr_translate____empty_named_history_initialisations___2',
8299 B),
8300 member(C, B),
8301 C=suspension(_, _, _, D, E),
8302 A=empty_named_history_initialisations(D, E).
8303'$enumerate_constraints'(generate_empty_named_history_initialisation, A) :-
8304 nb_current('$chr_store_global_list_chr_translate____generate_empty_named_history_initialisation___1',
8305 B),
8306 member(C, B),
8307 C=suspension(_, _, _, _, D),
8308 A=generate_empty_named_history_initialisation(D).
8309'$enumerate_constraints'(find_empty_named_histories, A) :-
8310 nb_getval('$chr_store_global_ground_chr_translate____find_empty_named_histories___0',
8311 B),
8312 member(C, B),
8313 C=suspension(_, _, _, _),
8314 A=find_empty_named_histories.
8315'$enumerate_constraints'(module_initializer, A) :-
8316 nb_getval('$chr_store_global_ground_chr_translate____module_initializer___1',
8317 B),
8318 member(C, B),
8319 C=suspension(_, _, _, D),
8320 A=module_initializer(D).
8321'$enumerate_constraints'(actual_atomic_multi_hash_keys, A) :-
8322 nb_getval('$chr_store_multi_hash_chr_translate____actual_atomic_multi_hash_keys___3-12',
8323 B),
8324 value_ht(B, C),
8325 C=suspension(_, _, D, E, F),
8326 A=actual_atomic_multi_hash_keys(D, E, F).
8327'$enumerate_constraints'(actual_ground_multi_hash_keys, A) :-
8328 nb_getval('$chr_store_multi_hash_chr_translate____actual_ground_multi_hash_keys___3-12',
8329 B),
8330 value_ht(B, C),
8331 C=suspension(_, _, D, E, F),
8332 A=actual_ground_multi_hash_keys(D, E, F).
8333'$enumerate_constraints'(actual_non_ground_multi_hash_key, A) :-
8334 nb_getval('$chr_store_multi_hash_chr_translate____actual_non_ground_multi_hash_key___2-12',
8335 B),
8336 value_ht(B, C),
8337 C=suspension(_, _, D, E),
8338 A=actual_non_ground_multi_hash_key(D, E).
8339'$enumerate_constraints'(symbol_count, A) :-
8340 nb_current('$chr_store_global_list_chr_translate____symbol_count___2',
8341 B),
8342 member(C, B),
8343 C=suspension(_, _, _, D, E),
8344 A=symbol_count(D, E).
8345'$enumerate_constraints'(fresh_symbol, A) :-
8346 nb_current('$chr_store_global_list_chr_translate____fresh_symbol___2',
8347 B),
8348 member(C, B),
8349 C=suspension(_, _, _, _, _, D, E),
8350 A=fresh_symbol(D, E).
8351'$enumerate_constraints'(prolog_global_variable, A) :-
8352 nb_getval('$chr_store_global_ground_chr_translate____prolog_global_variable___1',
8353 B),
8354 member(C, B),
8355 C=suspension(_, _, _, D),
8356 A=prolog_global_variable(D).
8357'$enumerate_constraints'(background_info, A) :-
8358 nb_getval('$chr_store_global_ground_chr_translate____background_info___1',
8359 B),
8360 member(C, B),
8361 C=suspension(_, _, _, D),
8362 A=background_info(D).
8363'$enumerate_constraints'(background_info, A) :-
8364 nb_current('$chr_store_global_list_chr_translate____background_info___2',
8365 B),
8366 member(C, B),
8367 C=suspension(_, _, _, _, _, D, E),
8368 A=background_info(D, E).
8369'$enumerate_constraints'(get_bg_info, A) :-
8370 nb_current('$chr_store_global_list_chr_translate____get_bg_info___2',
8371 B),
8372 member(C, B),
8373 C=suspension(_, _, _, _, _, D, E),
8374 A=get_bg_info(D, E).
8375'$enumerate_constraints'(get_bg_info_answer, A) :-
8376 nb_getval('$chr_store_global_ground_chr_translate____get_bg_info_answer___1',
8377 B),
8378 member(C, B),
8379 C=suspension(_, _, _, D),
8380 A=get_bg_info_answer(D).
8381'$enumerate_constraints'(prev_guard_list, A) :-
8382 nb_getval('$chr_store_global_ground_chr_translate____prev_guard_list___6',
8383 B),
8384 member(C, B),
8385 C=suspension(_, _, _, _, D, E, F, G, H, I),
8386 A=prev_guard_list(D, E, F, G, H, I).
8387'$enumerate_constraints'(set_all_passive, A) :-
8388 nb_getval('$chr_store_multi_hash_chr_translate____set_all_passive___1-1',
8389 B),
8390 value_ht(B, C),
8391 C=suspension(_, _, _, D),
8392 A=set_all_passive(D).
8393'$enumerate_constraints'(precompute_head_matchings, A) :-
8394 nb_getval('$chr_store_global_ground_chr_translate____precompute_head_matchings___0',
8395 B),
8396 member(C, B),
8397 C=suspension(_, _, _, _),
8398 A=precompute_head_matchings.
8399'$enumerate_constraints'(make_head_matchings_explicit_memo_table, A) :-
8400 nb_getval('$chr_store_multi_hash_chr_translate____make_head_matchings_explicit_memo_table___3-1',
8401 B),
8402 value_ht(B, C),
8403 C=suspension(_, _, D, E, F),
8404 A=make_head_matchings_explicit_memo_table(D, E, F).
8405'$enumerate_constraints'(multiple_occ_constraints_checked, A) :-
8406 nb_getval('$chr_store_global_ground_chr_translate____multiple_occ_constraints_checked___1',
8407 B),
8408 member(C, B),
8409 C=suspension(_, _, _, D),
8410 A=multiple_occ_constraints_checked(D).
8411'$enumerate_constraints'(type_definition, A) :-
8412 nb_current('$chr_store_global_list_chr_translate____type_definition___2',
8413 B),
8414 member(C, B),
8415 C=suspension(_, _, _, _, _, D, E),
8416 A=type_definition(D, E).
8417'$enumerate_constraints'(type_alias, A) :-
8418 nb_current('$chr_store_global_list_chr_translate____type_alias___2', B),
8419 member(C, B),
8420 C=suspension(_, _, _, _, _, D, E),
8421 A=type_alias(D, E).
8422'$enumerate_constraints'(constraint_type, A) :-
8423 nb_getval('$chr_store_global_ground_chr_translate____constraint_type___2',
8424 B),
8425 member(C, B),
8426 C=suspension(_, _, _, D, E),
8427 A=constraint_type(D, E).
8428'$enumerate_constraints'(unalias_type, A) :-
8429 nb_current('$chr_store_global_list_chr_translate____unalias_type___2',
8430 B),
8431 member(C, B),
8432 C=suspension(_, _, _, D, E),
8433 A=unalias_type(D, E).
8434'$enumerate_constraints'(types_modes_condition, A) :-
8435 nb_getval('$chr_store_global_ground_chr_translate____types_modes_condition___3',
8436 B),
8437 member(C, B),
8438 C=suspension(_, _, _, D, E, F),
8439 A=types_modes_condition(D, E, F).
8440'$enumerate_constraints'(static_type_check, A) :-
8441 nb_getval('$chr_store_global_ground_chr_translate____static_type_check___2',
8442 B),
8443 member(C, B),
8444 C=suspension(_, _, _, D, E),
8445 A=static_type_check(D, E).
8446'$enumerate_constraints'(ast_static_type_check_var, A) :-
8447 nb_current('$chr_store_global_list_chr_translate____ast_static_type_check_var___4',
8448 B),
8449 member(C, B),
8450 C=suspension(_, _, _, D, E, F, G),
8451 A=ast_static_type_check_var(D, E, F, G).
8452'$enumerate_constraints'(ast_static_atomic_builtin_type_check_var, A) :-
8453 nb_getval('$chr_store_multi_hash_chr_translate____ast_static_atomic_builtin_type_check_var___4-1',
8454 B),
8455 value_ht(B, C),
8456 C=suspension(_, _, D, E, F, G),
8457 A=ast_static_atomic_builtin_type_check_var(D, E, F, G).
8458'$enumerate_constraints'(dynamic_type_check, A) :-
8459 nb_getval('$chr_store_global_ground_chr_translate____dynamic_type_check___0',
8460 B),
8461 member(C, B),
8462 C=suspension(_, _, _, _),
8463 A=dynamic_type_check.
8464'$enumerate_constraints'(dynamic_type_check_clauses, A) :-
8465 nb_getval('$chr_store_global_ground_chr_translate____dynamic_type_check_clauses___1',
8466 B),
8467 member(C, B),
8468 C=suspension(_, _, _, D),
8469 A=dynamic_type_check_clauses(D).
8470'$enumerate_constraints'(atomic_type, A) :-
8471 nb_current('$chr_store_global_list_chr_translate____atomic_type___1',
8472 B),
8473 member(C, B),
8474 C=suspension(_, _, _, D),
8475 A=atomic_type(D).
8476'$enumerate_constraints'(stored, A) :-
8477 nb_getval('$chr_store_multi_hash_chr_translate____stored___3-13', B),
8478 value_ht(B, C),
8479 C=suspension(_, _, D, E, F),
8480 A=stored(D, E, F).
8481'$enumerate_constraints'(stored_complete, A) :-
8482 nb_getval('$chr_store_multi_hash_chr_translate____stored_complete___3-13',
8483 B),
8484 value_ht(B, C),
8485 C=suspension(_, _, _, D, E, F),
8486 A=stored_complete(D, E, F).
8487'$enumerate_constraints'(check_all_passive, A) :-
8488 nb_getval('$chr_store_multi_hash_chr_translate____check_all_passive___2-12',
8489 B),
8490 value_ht(B, C),
8491 C=suspension(_, _, D, E),
8492 A=check_all_passive(D, E).
8493'$enumerate_constraints'(constraints_code1, A) :-
8494 nb_getval('$chr_store_global_ground_chr_translate____constraints_code1___3',
8495 B),
8496 member(C, B),
8497 C=suspension(_, _, _, D, E, F),
8498 A=constraints_code1(D, E, F).
8499'$enumerate_constraints'(memo_has_active_occurrence, A) :-
8500 nb_getval('$chr_store_multi_hash_chr_translate____memo_has_active_occurrence___1-1',
8501 B),
8502 value_ht(B, C),
8503 C=suspension(_, _, D),
8504 A=memo_has_active_occurrence(D).
8505'$enumerate_constraints'(use_auxiliary_predicate, A) :-
8506 nb_getval('$chr_store_multi_hash_chr_translate____use_auxiliary_predicate___1-1',
8507 B),
8508 value_ht(B, C),
8509 C=suspension(_, _, D),
8510 A=use_auxiliary_predicate(D).
8511'$enumerate_constraints'(use_auxiliary_predicate, A) :-
8512 nb_getval('$chr_store_multi_hash_chr_translate____use_auxiliary_predicate___2-1',
8513 B),
8514 value_ht(B, C),
8515 C=suspension(_, _, D, E),
8516 A=use_auxiliary_predicate(D, E).
8517'$enumerate_constraints'(use_auxiliary_module, A) :-
8518 nb_getval('$chr_store_multi_hash_chr_translate____use_auxiliary_module___1-1',
8519 B),
8520 value_ht(B, C),
8521 C=suspension(_, _, D),
8522 A=use_auxiliary_module(D).
8523'$enumerate_constraints'(functional_dependency, A) :-
8524 nb_getval('$chr_store_multi_hash_chr_translate____functional_dependency___4-1',
8525 B),
8526 value_ht(B, C),
8527 C=suspension(_, _, D, E, F, G),
8528 A=functional_dependency(D, E, F, G).
8529'$enumerate_constraints'(initial_call_pattern, A) :-
8530 nb_getval('$chr_store_multi_hash_chr_translate____initial_call_pattern___1-1',
8531 B),
8532 value_ht(B, C),
8533 C=suspension(_, _, _, D),
8534 A=initial_call_pattern(D).
8535'$enumerate_constraints'(call_pattern, A) :-
8536 nb_getval('$chr_store_multi_hash_chr_translate____call_pattern___1-1',
8537 B),
8538 value_ht(B, C),
8539 C=suspension(_, _, D),
8540 A=call_pattern(D).
8541'$enumerate_constraints'(final_answer_pattern, A) :-
8542 nb_getval('$chr_store_multi_hash_chr_translate____final_answer_pattern___2-1',
8543 B),
8544 value_ht(B, C),
8545 C=suspension(_, _, _, D, E),
8546 A=final_answer_pattern(D, E).
8547'$enumerate_constraints'(abstract_constraints, A) :-
8548 nb_getval('$chr_store_global_ground_chr_translate____abstract_constraints___1',
8549 B),
8550 member(C, B),
8551 C=suspension(_, _, _, D),
8552 A=abstract_constraints(D).
8553'$enumerate_constraints'(depends_on, A) :-
8554 nb_getval('$chr_store_multi_hash_chr_translate____depends_on___2-1', B),
8555 value_ht(B, C),
8556 C=suspension(_, _, _, D, E),
8557 A=depends_on(D, E).
8558'$enumerate_constraints'(depends_on_ap, A) :-
8559 nb_getval('$chr_store_multi_hash_chr_translate____depends_on_ap___4-2',
8560 B),
8561 value_ht(B, C),
8562 C=suspension(_, _, _, D, E, F, G),
8563 A=depends_on_ap(D, E, F, G).
8564'$enumerate_constraints'(depends_on_goal, A) :-
8565 nb_getval('$chr_store_multi_hash_chr_translate____depends_on_goal___2-2',
8566 B),
8567 value_ht(B, C),
8568 C=suspension(_, _, _, D, E),
8569 A=depends_on_goal(D, E).
8570'$enumerate_constraints'(ai_observed_internal, A) :-
8571 nb_getval('$chr_store_global_ground_chr_translate____ai_observed_internal___2',
8572 B),
8573 member(C, B),
8574 C=suspension(_, _, _, D, E),
8575 A=ai_observed_internal(D, E).
8576'$enumerate_constraints'(ai_not_observed_internal, A) :-
8577 nb_getval('$chr_store_global_ground_chr_translate____ai_not_observed_internal___2',
8578 B),
8579 member(C, B),
8580 C=suspension(_, _, _, D, E),
8581 A=ai_not_observed_internal(D, E).
8582'$enumerate_constraints'(ai_not_observed, A) :-
8583 nb_getval('$chr_store_multi_hash_chr_translate____ai_not_observed___2-12',
8584 B),
8585 value_ht(B, C),
8586 C=suspension(_, _, D, E),
8587 A=ai_not_observed(D, E).
8588'$enumerate_constraints'(depends_on_as, A) :-
8589 nb_getval('$chr_store_multi_hash_chr_translate____depends_on_as___3-3',
8590 B),
8591 value_ht(B, C),
8592 C=suspension(_, _, _, D, E, F),
8593 A=depends_on_as(D, E, F).
8594'$enumerate_constraints'(ai_observation_gather_results, A) :-
8595 nb_getval('$chr_store_global_ground_chr_translate____ai_observation_gather_results___0',
8596 B),
8597 member(C, B),
8598 C=suspension(_, _, _),
8599 A=ai_observation_gather_results.
8600'$enumerate_constraints'(ai_observation_memoed_simplification_rest_heads, A) :-
8601 nb_getval('$chr_store_multi_hash_chr_translate____ai_observation_memoed_simplification_rest_heads___3-12',
8602 B),
8603 value_ht(B, C),
8604 C=suspension(_, _, D, E, F),
8605 A=ai_observation_memoed_simplification_rest_heads(D, E, F).
8606'$enumerate_constraints'(ai_observation_memoed_propagation_rest_heads, A) :-
8607 nb_getval('$chr_store_multi_hash_chr_translate____ai_observation_memoed_propagation_rest_heads___3-12',
8608 B),
8609 value_ht(B, C),
8610 C=suspension(_, _, D, E, F),
8611 A=ai_observation_memoed_propagation_rest_heads(D, E, F).
8612'$enumerate_constraints'(ai_observation_memoed_abstract_goal, A) :-
8613 nb_getval('$chr_store_multi_hash_chr_translate____ai_observation_memoed_abstract_goal___2-1',
8614 B),
8615 value_ht(B, C),
8616 C=suspension(_, _, D, E),
8617 A=ai_observation_memoed_abstract_goal(D, E).
8618'$enumerate_constraints'(ai_observation_memo_abstract_goal, A) :-
8619 nb_getval('$chr_store_global_ground_chr_translate____ai_observation_memo_abstract_goal___2',
8620 B),
8621 member(C, B),
8622 C=suspension(_, _, _, D, E),
8623 A=ai_observation_memo_abstract_goal(D, E).
8624'$enumerate_constraints'(partial_wake_analysis, A) :-
8625 nb_getval('$chr_store_global_ground_chr_translate____partial_wake_analysis___0',
8626 B),
8627 member(C, B),
8628 C=suspension(_, _, _, _),
8629 A=partial_wake_analysis.
8630'$enumerate_constraints'(no_partial_wake, A) :-
8631 nb_getval('$chr_store_multi_hash_chr_translate____no_partial_wake___1-1',
8632 B),
8633 value_ht(B, C),
8634 C=suspension(_, _, D),
8635 A=no_partial_wake(D).
8636'$enumerate_constraints'(phase_end, A) :-
8637 nb_getval('$chr_store_multi_hash_chr_translate____phase_end___1-1', B),
8638 value_ht(B, C),
8639 C=suspension(_, _, D),
8640 A=phase_end(D).
8641'$enumerate_constraints'(delay_phase_end, A) :-
8642 nb_getval('$chr_store_multi_hash_chr_translate____delay_phase_end___2-1',
8643 B),
8644 value_ht(B, C),
8645 C=suspension(_, _, D, E),
8646 A=delay_phase_end(D, E).
8647'$enumerate_constraints'(does_use_history, A) :-
8648 nb_getval('$chr_store_multi_hash_chr_translate____does_use_history___2-1',
8649 B),
8650 value_ht(B, C),
8651 C=suspension(_, _, D, E),
8652 A=does_use_history(D, E).
8653'$enumerate_constraints'(does_use_field, A) :-
8654 nb_getval('$chr_store_multi_hash_chr_translate____does_use_field___2-12',
8655 B),
8656 value_ht(B, C),
8657 C=suspension(_, _, D, E),
8658 A=does_use_field(D, E).
8659'$enumerate_constraints'(uses_state, A) :-
8660 nb_getval('$chr_store_multi_hash_chr_translate____uses_state___2-12',
8661 B),
8662 value_ht(B, C),
8663 C=suspension(_, _, D, E),
8664 A=uses_state(D, E).
8665'$enumerate_constraints'(if_used_state, A) :-
8666 nb_getval('$chr_store_global_ground_chr_translate____if_used_state___5',
8667 B),
8668 member(C, B),
8669 C=suspension(_, _, _, D, E, F, G, H),
8670 A=if_used_state(D, E, F, G, H).
8671'$enumerate_constraints'(used_states_known, A) :-
8672 nb_getval('$chr_store_global_ground_chr_translate____used_states_known___0',
8673 B),
8674 member(C, B),
8675 C=suspension(_, _, _),
8676 A=used_states_known.
8677'$enumerate_constraints'(stored_assertion, A) :-
8678 nb_getval('$chr_store_multi_hash_chr_translate____stored_assertion___1-1',
8679 B),
8680 value_ht(B, C),
8681 C=suspension(_, _, D),
8682 A=stored_assertion(D).
8683'$enumerate_constraints'(never_stored_default, A) :-
8684 nb_getval('$chr_store_multi_hash_chr_translate____never_stored_default___2-1',
8685 B),
8686 value_ht(B, C),
8687 C=suspension(_, _, D, E),
8688 A=never_stored_default(D, E).
8689'$enumerate_constraints'(never_stored_rules, A) :-
8690 nb_getval('$chr_store_global_ground_chr_translate____never_stored_rules___2',
8691 B),
8692 member(C, B),
8693 C=suspension(_, _, _, D, E),
8694 A=never_stored_rules(D, E).
8695'$enumerate_constraints'(continuation_occurrence, A) :-
8696 nb_getval('$chr_store_multi_hash_chr_translate____continuation_occurrence___3-12',
8697 B),
8698 value_ht(B, C),
8699 C=suspension(_, _, D, E, F),
8700 A=continuation_occurrence(D, E, F).
8701'$enumerate_constraints'(skip_to_next_id, A) :-
8702 nb_getval('$chr_store_multi_hash_chr_translate____skip_to_next_id___2-12',
8703 B),
8704 value_ht(B, C),
8705 C=suspension(_, _, _, D, E),
8706 A=skip_to_next_id(D, E).
8707'$enumerate_constraints'(set_occurrence_code_id, A) :-
8708 nb_getval('$chr_store_multi_hash_chr_translate____set_occurrence_code_id___3-12',
8709 B),
8710 value_ht(B, C),
8711 C=suspension(_, _, D, E, F),
8712 A=set_occurrence_code_id(D, E, F).
8713'$enumerate_constraints'(occurrence_code_id, A) :-
8714 nb_getval('$chr_store_multi_hash_chr_translate____occurrence_code_id___3-12',
8715 B),
8716 value_ht(B, C),
8717 C=suspension(_, _, D, E, F),
8718 A=occurrence_code_id(D, E, F).
8719'$enumerate_constraints'(chr_constants, A) :-
8720 nb_getval('$chr_store_global_ground_chr_translate____chr_constants___1',
8721 B),
8722 member(C, B),
8723 C=suspension(_, _, _, D),
8724 A=chr_constants(D).
8725'$enumerate_constraints'(print_chr_constants, A) :-
8726 nb_getval('$chr_store_global_ground_chr_translate____print_chr_constants___0',
8727 B),
8728 member(C, B),
8729 C=suspension(_, _, _),
8730 A=print_chr_constants.
8731'$via1_multi_hash_source_location___2-1'(A, B) :-
8732 nb_getval('$chr_store_multi_hash_chr_translate____source_location___2-1',
8733 C),
8734 lookup_ht(C, A, B).
8735'$via1_multi_hash_indexed_argument___2-1'(A, B) :-
8736 nb_getval('$chr_store_multi_hash_chr_translate____indexed_argument___2-1',
8737 C),
8738 lookup_ht(C, A, B).
8739'$via1_multi_hash_indexed_argument___2-12'(A, B) :-
8740 nb_getval('$chr_store_multi_hash_chr_translate____indexed_argument___2-12',
8741 C),
8742 lookup_ht(C, A, B).
8743'$via1_multi_hash_constraint_mode___2-1'(A, B) :-
8744 nb_getval('$chr_store_multi_hash_chr_translate____constraint_mode___2-1',
8745 C),
8746 lookup_ht(C, A, B).
8747'$via1_multi_hash_store_type___2-1'(A, B) :-
8748 nb_getval('$chr_store_multi_hash_chr_translate____store_type___2-1', C),
8749 lookup_ht(C, A, B).
8750'$via1_multi_hash_actual_store_types___2-1'(A, B) :-
8751 nb_getval('$chr_store_multi_hash_chr_translate____actual_store_types___2-1',
8752 C),
8753 lookup_ht(C, A, B).
8754'$via1_multi_hash_assumed_store_type___2-1'(A, B) :-
8755 nb_getval('$chr_store_multi_hash_chr_translate____assumed_store_type___2-1',
8756 C),
8757 lookup_ht(C, A, B).
8758'$via1_multi_hash_validate_store_type_assumption___1-1'(A, B) :-
8759 nb_getval('$chr_store_multi_hash_chr_translate____validate_store_type_assumption___1-1',
8760 C),
8761 lookup_ht(C, A, B).
8762'$via1_multi_hash_passive___2-1'(A, B) :-
8763 nb_getval('$chr_store_multi_hash_chr_translate____passive___2-1', C),
8764 lookup_ht(C, A, B).
8765'$via1_multi_hash_passive___2-12'(A, B) :-
8766 nb_getval('$chr_store_multi_hash_chr_translate____passive___2-12', C),
8767 lookup_ht(C, A, B).
8768'$via1_multi_hash_occurrence___5-15'(A, B) :-
8769 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-15',
8770 C),
8771 lookup_ht(C, A, B).
8772'$via1_multi_hash_occurrence___5-125'(A, B) :-
8773 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-125',
8774 C),
8775 lookup_ht(C, A, B).
8776'$via1_multi_hash_occurrence___5-134'(A, B) :-
8777 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-134',
8778 C),
8779 lookup_ht(C, A, B).
8780'$via1_multi_hash_occurrence___5-12'(A, B) :-
8781 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-12',
8782 C),
8783 lookup_ht(C, A, B).
8784'$via1_multi_hash_occurrence___5-3'(A, B) :-
8785 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-3', C),
8786 lookup_ht(C, A, B).
8787'$via1_multi_hash_occurrence___5-13'(A, B) :-
8788 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-13',
8789 C),
8790 lookup_ht(C, A, B).
8791'$via1_multi_hash_occurrence___5-34'(A, B) :-
8792 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-34',
8793 C),
8794 lookup_ht(C, A, B).
8795'$via1_multi_hash_occurrence___5-1'(A, B) :-
8796 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-1', C),
8797 lookup_ht(C, A, B).
8798'$via1_multi_hash_max_occurrence___2-1'(A, B) :-
8799 nb_getval('$chr_store_multi_hash_chr_translate____max_occurrence___2-1',
8800 C),
8801 lookup_ht(C, A, B).
8802'$via1_multi_hash_allocation_occurrence___2-1'(A, B) :-
8803 nb_getval('$chr_store_multi_hash_chr_translate____allocation_occurrence___2-1',
8804 C),
8805 lookup_ht(C, A, B).
8806'$via1_multi_hash_allocation_occurrence___2-12'(A, B) :-
8807 nb_getval('$chr_store_multi_hash_chr_translate____allocation_occurrence___2-12',
8808 C),
8809 lookup_ht(C, A, B).
8810'$via1_multi_hash_rule___2-1'(A, B) :-
8811 nb_getval('$chr_store_multi_hash_chr_translate____rule___2-1', C),
8812 lookup_ht(C, A, B).
8813'$via1_multi_hash_least_occurrence___2-12'(A, B) :-
8814 nb_getval('$chr_store_multi_hash_chr_translate____least_occurrence___2-12',
8815 C),
8816 lookup_ht(C, A, B).
8817'$via1_multi_hash_least_occurrence___2-1'(A, B) :-
8818 nb_getval('$chr_store_multi_hash_chr_translate____least_occurrence___2-1',
8819 C),
8820 lookup_ht(C, A, B).
8821'$via1_multi_hash_constraint_index___2-2'(A, B) :-
8822 nb_getval('$chr_store_multi_hash_chr_translate____constraint_index___2-2',
8823 C),
8824 lookup_ht(C, A, B).
8825'$via1_multi_hash_constraint_index___2-1'(A, B) :-
8826 nb_getval('$chr_store_multi_hash_chr_translate____constraint_index___2-1',
8827 C),
8828 lookup_ht(C, A, B).
8829'$via1_multi_hash_identifier_index___3-12'(A, B) :-
8830 nb_getval('$chr_store_multi_hash_chr_translate____identifier_index___3-12',
8831 C),
8832 lookup_ht(C, A, B).
8833'$via1_multi_hash_type_indexed_identifier_size___2-1'(A, B) :-
8834 nb_getval('$chr_store_multi_hash_chr_translate____type_indexed_identifier_size___2-1',
8835 C),
8836 lookup_ht(C, A, B).
8837'$via1_multi_hash_type_indexed_identifier_index___4-123'(A, B) :-
8838 nb_getval('$chr_store_multi_hash_chr_translate____type_indexed_identifier_index___4-123',
8839 C),
8840 lookup_ht(C, A, B).
8841'$via1_multi_hash_type_indexed_identifier_index___4-23'(A, B) :-
8842 nb_getval('$chr_store_multi_hash_chr_translate____type_indexed_identifier_index___4-23',
8843 C),
8844 lookup_ht(C, A, B).
8845'$via1_multi_hash_no_history___1-1'(A, B) :-
8846 nb_getval('$chr_store_multi_hash_chr_translate____no_history___1-1', C),
8847 lookup_ht(C, A, B).
8848'$chr_store_constants_chr_translate____history___3___[3]'([], '$chr_store_constants_chr_translate____history___3___[3]___[]').
8849'$via1_multi_hash_history___3-2'(A, B) :-
8850 nb_getval('$chr_store_multi_hash_chr_translate____history___3-2', C),
8851 lookup_ht(C, A, B).
8852'$via1_multi_hash_history___3-1'(A, B) :-
8853 nb_getval('$chr_store_multi_hash_chr_translate____history___3-1', C),
8854 lookup_ht(C, A, B).
8855'$via1_multi_hash_indexing_spec___2-1'(A, B) :-
8856 nb_getval('$chr_store_multi_hash_chr_translate____indexing_spec___2-1',
8857 C),
8858 lookup_ht(C, A, B).
8859'$via1_multi_hash_spawns___3-13'(A, B) :-
8860 nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-13', C),
8861 lookup_ht(C, A, B).
8862'$via1_multi_hash_spawns___3-12'(A, B) :-
8863 nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-12', C),
8864 lookup_ht(C, A, B).
8865'$via1_multi_hash_spawns___3-1'(A, B) :-
8866 nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-1', C),
8867 lookup_ht(C, A, B).
8868'$via1_multi_hash_spawns___3-3'(A, B) :-
8869 nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-3', C),
8870 lookup_ht(C, A, B).
8871'$via1_multi_hash_spawns___3-123'(A, B) :-
8872 nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-123', C),
8873 lookup_ht(C, A, B).
8874'$via1_multi_hash_spawns_all___2-1'(A, B) :-
8875 nb_getval('$chr_store_multi_hash_chr_translate____spawns_all___2-1', C),
8876 lookup_ht(C, A, B).
8877'$via1_multi_hash_spawns_all___2-12'(A, B) :-
8878 nb_getval('$chr_store_multi_hash_chr_translate____spawns_all___2-12',
8879 C),
8880 lookup_ht(C, A, B).
8881'$via1_multi_hash_spawns_all_triggers___2-1'(A, B) :-
8882 nb_getval('$chr_store_multi_hash_chr_translate____spawns_all_triggers___2-1',
8883 C),
8884 lookup_ht(C, A, B).
8885'$via1_multi_hash_spawns_all_triggers___2-12'(A, B) :-
8886 nb_getval('$chr_store_multi_hash_chr_translate____spawns_all_triggers___2-12',
8887 C),
8888 lookup_ht(C, A, B).
8889'$via1_multi_hash_actual_atomic_multi_hash_keys___3-12'(A, B) :-
8890 nb_getval('$chr_store_multi_hash_chr_translate____actual_atomic_multi_hash_keys___3-12',
8891 C),
8892 lookup_ht(C, A, B).
8893'$via1_multi_hash_actual_atomic_multi_hash_keys___3-1'(A, B) :-
8894 nb_getval('$chr_store_multi_hash_chr_translate____actual_atomic_multi_hash_keys___3-1',
8895 C),
8896 lookup_ht(C, A, B).
8897'$via1_multi_hash_actual_ground_multi_hash_keys___3-12'(A, B) :-
8898 nb_getval('$chr_store_multi_hash_chr_translate____actual_ground_multi_hash_keys___3-12',
8899 C),
8900 lookup_ht(C, A, B).
8901'$via1_multi_hash_actual_ground_multi_hash_keys___3-1'(A, B) :-
8902 nb_getval('$chr_store_multi_hash_chr_translate____actual_ground_multi_hash_keys___3-1',
8903 C),
8904 lookup_ht(C, A, B).
8905'$via1_multi_hash_actual_non_ground_multi_hash_key___2-12'(A, B) :-
8906 nb_getval('$chr_store_multi_hash_chr_translate____actual_non_ground_multi_hash_key___2-12',
8907 C),
8908 lookup_ht(C, A, B).
8909'$via1_multi_hash_prolog_global_variable___1-1'(A, B) :-
8910 nb_getval('$chr_store_multi_hash_chr_translate____prolog_global_variable___1-1',
8911 C),
8912 lookup_ht(C, A, B).
8913'$via1_multi_hash_prev_guard_list___6-1'(A, B) :-
8914 nb_getval('$chr_store_multi_hash_chr_translate____prev_guard_list___6-1',
8915 C),
8916 lookup_ht(C, A, B).
8917'$via1_multi_hash_set_all_passive___1-1'(A, B) :-
8918 nb_getval('$chr_store_multi_hash_chr_translate____set_all_passive___1-1',
8919 C),
8920 lookup_ht(C, A, B).
8921'$via1_multi_hash_make_head_matchings_explicit_memo_table___3-1'(A, B) :-
8922 nb_getval('$chr_store_multi_hash_chr_translate____make_head_matchings_explicit_memo_table___3-1',
8923 C),
8924 lookup_ht(C, A, B).
8925'$via1_multi_hash_constraint_type___2-1'(A, B) :-
8926 nb_getval('$chr_store_multi_hash_chr_translate____constraint_type___2-1',
8927 C),
8928 lookup_ht(C, A, B).
8929'$via1_multi_hash_ast_static_atomic_builtin_type_check_var___4-1'(A, B) :-
8930 nb_getval('$chr_store_multi_hash_chr_translate____ast_static_atomic_builtin_type_check_var___4-1',
8931 C),
8932 lookup_ht(C, A, B).
8933'$via1_multi_hash_ast_static_atomic_builtin_type_check_var___4-13'(A, B) :-
8934 nb_getval('$chr_store_multi_hash_chr_translate____ast_static_atomic_builtin_type_check_var___4-13',
8935 C),
8936 lookup_ht(C, A, B).
8937'$via1_multi_hash_stored___3-13'(A, B) :-
8938 nb_getval('$chr_store_multi_hash_chr_translate____stored___3-13', C),
8939 lookup_ht(C, A, B).
8940'$via1_multi_hash_stored___3-123'(A, B) :-
8941 nb_getval('$chr_store_multi_hash_chr_translate____stored___3-123', C),
8942 lookup_ht(C, A, B).
8943'$via1_multi_hash_stored_complete___3-13'(A, B) :-
8944 nb_getval('$chr_store_multi_hash_chr_translate____stored_complete___3-13',
8945 C),
8946 lookup_ht(C, A, B).
8947'$via1_multi_hash_stored_complete___3-1'(A, B) :-
8948 nb_getval('$chr_store_multi_hash_chr_translate____stored_complete___3-1',
8949 C),
8950 lookup_ht(C, A, B).
8951'$via1_multi_hash_check_all_passive___2-12'(A, B) :-
8952 nb_getval('$chr_store_multi_hash_chr_translate____check_all_passive___2-12',
8953 C),
8954 lookup_ht(C, A, B).
8955'$via1_multi_hash_check_all_passive___2-1'(A, B) :-
8956 nb_getval('$chr_store_multi_hash_chr_translate____check_all_passive___2-1',
8957 C),
8958 lookup_ht(C, A, B).
8959'$via1_multi_hash_memo_has_active_occurrence___1-1'(A, B) :-
8960 nb_getval('$chr_store_multi_hash_chr_translate____memo_has_active_occurrence___1-1',
8961 C),
8962 lookup_ht(C, A, B).
8963'$via1_multi_hash_use_auxiliary_predicate___1-1'(A, B) :-
8964 nb_getval('$chr_store_multi_hash_chr_translate____use_auxiliary_predicate___1-1',
8965 C),
8966 lookup_ht(C, A, B).
8967'$via1_multi_hash_use_auxiliary_predicate___2-1'(A, B) :-
8968 nb_getval('$chr_store_multi_hash_chr_translate____use_auxiliary_predicate___2-1',
8969 C),
8970 lookup_ht(C, A, B).
8971'$via1_multi_hash_use_auxiliary_predicate___2-12'(A, B) :-
8972 nb_getval('$chr_store_multi_hash_chr_translate____use_auxiliary_predicate___2-12',
8973 C),
8974 lookup_ht(C, A, B).
8975'$via1_multi_hash_use_auxiliary_module___1-1'(A, B) :-
8976 nb_getval('$chr_store_multi_hash_chr_translate____use_auxiliary_module___1-1',
8977 C),
8978 lookup_ht(C, A, B).
8979'$via1_multi_hash_functional_dependency___4-1'(A, B) :-
8980 nb_getval('$chr_store_multi_hash_chr_translate____functional_dependency___4-1',
8981 C),
8982 lookup_ht(C, A, B).
8983'$via1_multi_hash_functional_dependency___4-12'(A, B) :-
8984 nb_getval('$chr_store_multi_hash_chr_translate____functional_dependency___4-12',
8985 C),
8986 lookup_ht(C, A, B).
8987'$via1_multi_hash_initial_call_pattern___1-1'(A, B) :-
8988 nb_getval('$chr_store_multi_hash_chr_translate____initial_call_pattern___1-1',
8989 C),
8990 lookup_ht(C, A, B).
8991'$via1_multi_hash_call_pattern___1-1'(A, B) :-
8992 nb_getval('$chr_store_multi_hash_chr_translate____call_pattern___1-1',
8993 C),
8994 lookup_ht(C, A, B).
8995'$via1_multi_hash_final_answer_pattern___2-1'(A, B) :-
8996 nb_getval('$chr_store_multi_hash_chr_translate____final_answer_pattern___2-1',
8997 C),
8998 lookup_ht(C, A, B).
8999'$via1_multi_hash_depends_on___2-1'(A, B) :-
9000 nb_getval('$chr_store_multi_hash_chr_translate____depends_on___2-1', C),
9001 lookup_ht(C, A, B).
9002'$via1_multi_hash_depends_on___2-2'(A, B) :-
9003 nb_getval('$chr_store_multi_hash_chr_translate____depends_on___2-2', C),
9004 lookup_ht(C, A, B).
9005'$via1_multi_hash_depends_on_ap___4-2'(A, B) :-
9006 nb_getval('$chr_store_multi_hash_chr_translate____depends_on_ap___4-2',
9007 C),
9008 lookup_ht(C, A, B).
9009'$via1_multi_hash_depends_on_ap___4-3'(A, B) :-
9010 nb_getval('$chr_store_multi_hash_chr_translate____depends_on_ap___4-3',
9011 C),
9012 lookup_ht(C, A, B).
9013'$via1_multi_hash_depends_on_goal___2-2'(A, B) :-
9014 nb_getval('$chr_store_multi_hash_chr_translate____depends_on_goal___2-2',
9015 C),
9016 lookup_ht(C, A, B).
9017'$via1_multi_hash_ai_observed_internal___2-12'(A, B) :-
9018 nb_getval('$chr_store_multi_hash_chr_translate____ai_observed_internal___2-12',
9019 C),
9020 lookup_ht(C, A, B).
9021'$via1_multi_hash_ai_not_observed_internal___2-12'(A, B) :-
9022 nb_getval('$chr_store_multi_hash_chr_translate____ai_not_observed_internal___2-12',
9023 C),
9024 lookup_ht(C, A, B).
9025'$via1_multi_hash_ai_not_observed___2-12'(A, B) :-
9026 nb_getval('$chr_store_multi_hash_chr_translate____ai_not_observed___2-12',
9027 C),
9028 lookup_ht(C, A, B).
9029'$via1_multi_hash_depends_on_as___3-3'(A, B) :-
9030 nb_getval('$chr_store_multi_hash_chr_translate____depends_on_as___3-3',
9031 C),
9032 lookup_ht(C, A, B).
9033'$via1_multi_hash_depends_on_as___3-2'(A, B) :-
9034 nb_getval('$chr_store_multi_hash_chr_translate____depends_on_as___3-2',
9035 C),
9036 lookup_ht(C, A, B).
9037'$via1_multi_hash_ai_observation_memoed_simplification_rest_heads___3-12'(A, B) :-
9038 nb_getval('$chr_store_multi_hash_chr_translate____ai_observation_memoed_simplification_rest_heads___3-12',
9039 C),
9040 lookup_ht(C, A, B).
9041'$via1_multi_hash_ai_observation_memoed_propagation_rest_heads___3-12'(A, B) :-
9042 nb_getval('$chr_store_multi_hash_chr_translate____ai_observation_memoed_propagation_rest_heads___3-12',
9043 C),
9044 lookup_ht(C, A, B).
9045'$via1_multi_hash_ai_observation_memoed_abstract_goal___2-1'(A, B) :-
9046 nb_getval('$chr_store_multi_hash_chr_translate____ai_observation_memoed_abstract_goal___2-1',
9047 C),
9048 lookup_ht(C, A, B).
9049'$via1_multi_hash_no_partial_wake___1-1'(A, B) :-
9050 nb_getval('$chr_store_multi_hash_chr_translate____no_partial_wake___1-1',
9051 C),
9052 lookup_ht(C, A, B).
9053'$via1_multi_hash_phase_end___1-1'(A, B) :-
9054 nb_getval('$chr_store_multi_hash_chr_translate____phase_end___1-1', C),
9055 lookup_ht(C, A, B).
9056'$via1_multi_hash_delay_phase_end___2-1'(A, B) :-
9057 nb_getval('$chr_store_multi_hash_chr_translate____delay_phase_end___2-1',
9058 C),
9059 lookup_ht(C, A, B).
9060'$via1_multi_hash_does_use_history___2-1'(A, B) :-
9061 nb_getval('$chr_store_multi_hash_chr_translate____does_use_history___2-1',
9062 C),
9063 lookup_ht(C, A, B).
9064'$via1_multi_hash_does_use_history___2-12'(A, B) :-
9065 nb_getval('$chr_store_multi_hash_chr_translate____does_use_history___2-12',
9066 C),
9067 lookup_ht(C, A, B).
9068'$via1_multi_hash_does_use_field___2-12'(A, B) :-
9069 nb_getval('$chr_store_multi_hash_chr_translate____does_use_field___2-12',
9070 C),
9071 lookup_ht(C, A, B).
9072'$via1_multi_hash_uses_state___2-12'(A, B) :-
9073 nb_getval('$chr_store_multi_hash_chr_translate____uses_state___2-12',
9074 C),
9075 lookup_ht(C, A, B).
9076'$via1_multi_hash_if_used_state___5-12'(A, B) :-
9077 nb_getval('$chr_store_multi_hash_chr_translate____if_used_state___5-12',
9078 C),
9079 lookup_ht(C, A, B).
9080'$via1_multi_hash_stored_assertion___1-1'(A, B) :-
9081 nb_getval('$chr_store_multi_hash_chr_translate____stored_assertion___1-1',
9082 C),
9083 lookup_ht(C, A, B).
9084'$via1_multi_hash_never_stored_default___2-1'(A, B) :-
9085 nb_getval('$chr_store_multi_hash_chr_translate____never_stored_default___2-1',
9086 C),
9087 lookup_ht(C, A, B).
9088'$via1_multi_hash_continuation_occurrence___3-12'(A, B) :-
9089 nb_getval('$chr_store_multi_hash_chr_translate____continuation_occurrence___3-12',
9090 C),
9091 lookup_ht(C, A, B).
9092'$via1_multi_hash_skip_to_next_id___2-12'(A, B) :-
9093 nb_getval('$chr_store_multi_hash_chr_translate____skip_to_next_id___2-12',
9094 C),
9095 lookup_ht(C, A, B).
9096'$via1_multi_hash_set_occurrence_code_id___3-12'(A, B) :-
9097 nb_getval('$chr_store_multi_hash_chr_translate____set_occurrence_code_id___3-12',
9098 C),
9099 lookup_ht(C, A, B).
9100'$via1_multi_hash_occurrence_code_id___3-12'(A, B) :-
9101 nb_getval('$chr_store_multi_hash_chr_translate____occurrence_code_id___3-12',
9102 C),
9103 lookup_ht(C, A, B).
9104'$chr_initialization' :-
9105 nb_setval('$chr_store_global_ground_chr_translate____print_chr_constants___0',
9106 []),
9107 nb_setval('$chr_store_global_ground_chr_translate____chr_constants___1', []),
9108 new_ht(A),
9109 nb_setval('$chr_store_multi_hash_chr_translate____occurrence_code_id___3-12',
9110 A),
9111 new_ht(B),
9112 nb_setval('$chr_store_multi_hash_chr_translate____set_occurrence_code_id___3-12',
9113 B),
9114 new_ht(C),
9115 nb_setval('$chr_store_multi_hash_chr_translate____skip_to_next_id___2-12',
9116 C),
9117 new_ht(D),
9118 nb_setval('$chr_store_multi_hash_chr_translate____continuation_occurrence___3-12',
9119 D),
9120 nb_setval('$chr_store_global_ground_chr_translate____never_stored_rules___2',
9121 []),
9122 new_ht(E),
9123 nb_setval('$chr_store_multi_hash_chr_translate____never_stored_default___2-1',
9124 E),
9125 new_ht(F),
9126 nb_setval('$chr_store_multi_hash_chr_translate____stored_assertion___1-1',
9127 F),
9128 nb_setval('$chr_store_global_ground_chr_translate____used_states_known___0',
9129 []),
9130 new_ht(G),
9131 nb_setval('$chr_store_multi_hash_chr_translate____if_used_state___5-12',
9132 G),
9133 nb_setval('$chr_store_global_ground_chr_translate____if_used_state___5', []),
9134 new_ht(H),
9135 nb_setval('$chr_store_multi_hash_chr_translate____uses_state___2-12',
9136 H),
9137 new_ht(I),
9138 nb_setval('$chr_store_multi_hash_chr_translate____does_use_field___2-12',
9139 I),
9140 new_ht(J),
9141 nb_setval('$chr_store_multi_hash_chr_translate____does_use_history___2-12',
9142 J),
9143 new_ht(K),
9144 nb_setval('$chr_store_multi_hash_chr_translate____does_use_history___2-1',
9145 K),
9146 new_ht(L),
9147 nb_setval('$chr_store_multi_hash_chr_translate____delay_phase_end___2-1',
9148 L),
9149 new_ht(M),
9150 nb_setval('$chr_store_multi_hash_chr_translate____phase_end___1-1', M),
9151 new_ht(N),
9152 nb_setval('$chr_store_multi_hash_chr_translate____no_partial_wake___1-1',
9153 N),
9154 nb_setval('$chr_store_global_ground_chr_translate____partial_wake_analysis___0',
9155 []),
9156 nb_setval('$chr_store_global_ground_chr_translate____ai_observation_memo_abstract_goal___2',
9157 []),
9158 new_ht(O),
9159 nb_setval('$chr_store_multi_hash_chr_translate____ai_observation_memoed_abstract_goal___2-1',
9160 O),
9161 new_ht(P),
9162 nb_setval('$chr_store_multi_hash_chr_translate____ai_observation_memoed_propagation_rest_heads___3-12',
9163 P),
9164 new_ht(Q),
9165 nb_setval('$chr_store_multi_hash_chr_translate____ai_observation_memoed_simplification_rest_heads___3-12',
9166 Q),
9167 nb_setval('$chr_store_global_ground_chr_translate____ai_observation_gather_results___0',
9168 []),
9169 new_ht(R),
9170 nb_setval('$chr_store_multi_hash_chr_translate____depends_on_as___3-2',
9171 R),
9172 new_ht(S),
9173 nb_setval('$chr_store_multi_hash_chr_translate____depends_on_as___3-3',
9174 S),
9175 new_ht(T),
9176 nb_setval('$chr_store_multi_hash_chr_translate____ai_not_observed___2-12',
9177 T),
9178 new_ht(U),
9179 nb_setval('$chr_store_multi_hash_chr_translate____ai_not_observed_internal___2-12',
9180 U),
9181 nb_setval('$chr_store_global_ground_chr_translate____ai_not_observed_internal___2',
9182 []),
9183 new_ht(V),
9184 nb_setval('$chr_store_multi_hash_chr_translate____ai_observed_internal___2-12',
9185 V),
9186 nb_setval('$chr_store_global_ground_chr_translate____ai_observed_internal___2',
9187 []),
9188 new_ht(W),
9189 nb_setval('$chr_store_multi_hash_chr_translate____depends_on_goal___2-2',
9190 W),
9191 new_ht(X),
9192 nb_setval('$chr_store_multi_hash_chr_translate____depends_on_ap___4-3',
9193 X),
9194 new_ht(Y),
9195 nb_setval('$chr_store_multi_hash_chr_translate____depends_on_ap___4-2',
9196 Y),
9197 new_ht(Z),
9198 nb_setval('$chr_store_multi_hash_chr_translate____depends_on___2-2',
9199 Z),
9200 new_ht(A1),
9201 nb_setval('$chr_store_multi_hash_chr_translate____depends_on___2-1',
9202 A1),
9203 nb_setval('$chr_store_global_ground_chr_translate____abstract_constraints___1',
9204 []),
9205 new_ht(B1),
9206 nb_setval('$chr_store_multi_hash_chr_translate____final_answer_pattern___2-1',
9207 B1),
9208 new_ht(C1),
9209 nb_setval('$chr_store_multi_hash_chr_translate____call_pattern___1-1',
9210 C1),
9211 new_ht(D1),
9212 nb_setval('$chr_store_multi_hash_chr_translate____initial_call_pattern___1-1',
9213 D1),
9214 new_ht(E1),
9215 nb_setval('$chr_store_multi_hash_chr_translate____functional_dependency___4-12',
9216 E1),
9217 new_ht(F1),
9218 nb_setval('$chr_store_multi_hash_chr_translate____functional_dependency___4-1',
9219 F1),
9220 new_ht(G1),
9221 nb_setval('$chr_store_multi_hash_chr_translate____use_auxiliary_module___1-1',
9222 G1),
9223 new_ht(H1),
9224 nb_setval('$chr_store_multi_hash_chr_translate____use_auxiliary_predicate___2-12',
9225 H1),
9226 new_ht(I1),
9227 nb_setval('$chr_store_multi_hash_chr_translate____use_auxiliary_predicate___2-1',
9228 I1),
9229 new_ht(J1),
9230 nb_setval('$chr_store_multi_hash_chr_translate____use_auxiliary_predicate___1-1',
9231 J1),
9232 new_ht(K1),
9233 nb_setval('$chr_store_multi_hash_chr_translate____memo_has_active_occurrence___1-1',
9234 K1),
9235 nb_setval('$chr_store_global_ground_chr_translate____constraints_code1___3',
9236 []),
9237 new_ht(L1),
9238 nb_setval('$chr_store_multi_hash_chr_translate____check_all_passive___2-1',
9239 L1),
9240 new_ht(M1),
9241 nb_setval('$chr_store_multi_hash_chr_translate____check_all_passive___2-12',
9242 M1),
9243 new_ht(N1),
9244 nb_setval('$chr_store_multi_hash_chr_translate____stored_complete___3-1',
9245 N1),
9246 new_ht(O1),
9247 nb_setval('$chr_store_multi_hash_chr_translate____stored_complete___3-13',
9248 O1),
9249 new_ht(P1),
9250 nb_setval('$chr_store_multi_hash_chr_translate____stored___3-123', P1),
9251 new_ht(Q1),
9252 nb_setval('$chr_store_multi_hash_chr_translate____stored___3-13', Q1),
9253 nb_setval('$chr_store_global_list_chr_translate____atomic_type___1', []),
9254 nb_setval('$chr_store_global_ground_chr_translate____dynamic_type_check_clauses___1',
9255 []),
9256 nb_setval('$chr_store_global_ground_chr_translate____dynamic_type_check___0',
9257 []),
9258 new_ht(R1),
9259 nb_setval('$chr_store_multi_hash_chr_translate____ast_static_atomic_builtin_type_check_var___4-13',
9260 R1),
9261 new_ht(S1),
9262 nb_setval('$chr_store_multi_hash_chr_translate____ast_static_atomic_builtin_type_check_var___4-1',
9263 S1),
9264 nb_setval('$chr_store_global_list_chr_translate____ast_static_type_check_var___4',
9265 []),
9266 nb_setval('$chr_store_global_ground_chr_translate____static_type_check___2',
9267 []),
9268 nb_setval('$chr_store_global_ground_chr_translate____types_modes_condition___3',
9269 []),
9270 nb_setval('$chr_store_global_list_chr_translate____unalias_type___2', []),
9271 new_ht(T1),
9272 nb_setval('$chr_store_multi_hash_chr_translate____constraint_type___2-1',
9273 T1),
9274 nb_setval('$chr_store_global_ground_chr_translate____constraint_type___2',
9275 []),
9276 nb_setval('$chr_store_global_list_chr_translate____type_alias___2', []),
9277 nb_setval('$chr_store_global_list_chr_translate____type_definition___2', []),
9278 nb_setval('$chr_store_global_ground_chr_translate____multiple_occ_constraints_checked___1',
9279 []),
9280 new_ht(U1),
9281 nb_setval('$chr_store_multi_hash_chr_translate____make_head_matchings_explicit_memo_table___3-1',
9282 U1),
9283 nb_setval('$chr_store_global_ground_chr_translate____precompute_head_matchings___0',
9284 []),
9285 new_ht(V1),
9286 nb_setval('$chr_store_multi_hash_chr_translate____set_all_passive___1-1',
9287 V1),
9288 new_ht(W1),
9289 nb_setval('$chr_store_multi_hash_chr_translate____prev_guard_list___6-1',
9290 W1),
9291 nb_setval('$chr_store_global_ground_chr_translate____prev_guard_list___6',
9292 []),
9293 nb_setval('$chr_store_global_ground_chr_translate____get_bg_info_answer___1',
9294 []),
9295 nb_setval('$chr_store_global_list_chr_translate____get_bg_info___2', []),
9296 nb_setval('$chr_store_global_list_chr_translate____background_info___2', []),
9297 nb_setval('$chr_store_global_ground_chr_translate____background_info___1',
9298 []),
9299 new_ht(X1),
9300 nb_setval('$chr_store_multi_hash_chr_translate____prolog_global_variable___1-1',
9301 X1),
9302 nb_setval('$chr_store_global_ground_chr_translate____prolog_global_variable___1',
9303 []),
9304 nb_setval('$chr_store_global_list_chr_translate____fresh_symbol___2', []),
9305 nb_setval('$chr_store_global_list_chr_translate____symbol_count___2', []),
9306 new_ht(Y1),
9307 nb_setval('$chr_store_multi_hash_chr_translate____actual_non_ground_multi_hash_key___2-12',
9308 Y1),
9309 new_ht(Z1),
9310 nb_setval('$chr_store_multi_hash_chr_translate____actual_ground_multi_hash_keys___3-1',
9311 Z1),
9312 new_ht(A2),
9313 nb_setval('$chr_store_multi_hash_chr_translate____actual_ground_multi_hash_keys___3-12',
9314 A2),
9315 new_ht(B2),
9316 nb_setval('$chr_store_multi_hash_chr_translate____actual_atomic_multi_hash_keys___3-1',
9317 B2),
9318 new_ht(C2),
9319 nb_setval('$chr_store_multi_hash_chr_translate____actual_atomic_multi_hash_keys___3-12',
9320 C2),
9321 nb_setval('$chr_store_global_ground_chr_translate____module_initializer___1',
9322 []),
9323 nb_setval('$chr_store_global_ground_chr_translate____find_empty_named_histories___0',
9324 []),
9325 nb_setval('$chr_store_global_list_chr_translate____generate_empty_named_history_initialisation___1',
9326 []),
9327 nb_setval('$chr_store_global_ground_chr_translate____empty_named_history_initialisations___2',
9328 []),
9329 nb_setval('$chr_store_global_ground_chr_translate____spawns_all_triggers_implies_spawns_all___0',
9330 []),
9331 new_ht(D2),
9332 nb_setval('$chr_store_multi_hash_chr_translate____spawns_all_triggers___2-12',
9333 D2),
9334 new_ht(E2),
9335 nb_setval('$chr_store_multi_hash_chr_translate____spawns_all_triggers___2-1',
9336 E2),
9337 nb_setval('$chr_store_global_ground_chr_translate____spawns_all_triggers___2',
9338 []),
9339 new_ht(F2),
9340 nb_setval('$chr_store_multi_hash_chr_translate____spawns_all___2-12',
9341 F2),
9342 new_ht(G2),
9343 nb_setval('$chr_store_multi_hash_chr_translate____spawns_all___2-1',
9344 G2),
9345 new_ht(H2),
9346 nb_setval('$chr_store_multi_hash_chr_translate____spawns___3-123', H2),
9347 new_ht(I2),
9348 nb_setval('$chr_store_multi_hash_chr_translate____spawns___3-3', I2),
9349 new_ht(J2),
9350 nb_setval('$chr_store_multi_hash_chr_translate____spawns___3-1', J2),
9351 new_ht(K2),
9352 nb_setval('$chr_store_multi_hash_chr_translate____spawns___3-12', K2),
9353 nb_setval('$chr_store_global_ground_chr_translate____spawns___3', []),
9354 new_ht(L2),
9355 nb_setval('$chr_store_multi_hash_chr_translate____spawns___3-13', L2),
9356 nb_setval('$chr_store_global_ground_chr_translate____observation_analysis___1',
9357 []),
9358 new_ht(M2),
9359 nb_setval('$chr_store_multi_hash_chr_translate____indexing_spec___2-1',
9360 M2),
9361 new_ht(N2),
9362 nb_setval('$chr_store_multi_hash_chr_translate____history___3-1', N2),
9363 new_ht(O2),
9364 nb_setval('$chr_store_multi_hash_chr_translate____history___3-2', O2),
9365 nb_setval('$chr_store_constants_chr_translate____history___3___[3]___[]', []),
9366 new_ht(P2),
9367 nb_setval('$chr_store_multi_hash_chr_translate____no_history___1-1',
9368 P2),
9369 new_ht(Q2),
9370 nb_setval('$chr_store_multi_hash_chr_translate____type_indexed_identifier_index___4-23',
9371 Q2),
9372 new_ht(R2),
9373 nb_setval('$chr_store_multi_hash_chr_translate____type_indexed_identifier_index___4-123',
9374 R2),
9375 new_ht(S2),
9376 nb_setval('$chr_store_multi_hash_chr_translate____type_indexed_identifier_size___2-1',
9377 S2),
9378 new_ht(T2),
9379 nb_setval('$chr_store_multi_hash_chr_translate____identifier_index___3-12',
9380 T2),
9381 nb_setval('$chr_store_global_ground_chr_translate____identifier_size___1',
9382 []),
9383 nb_setval('$chr_store_global_ground_chr_translate____max_constraint_index___1',
9384 []),
9385 new_ht(U2),
9386 nb_setval('$chr_store_multi_hash_chr_translate____constraint_index___2-1',
9387 U2),
9388 new_ht(V2),
9389 nb_setval('$chr_store_multi_hash_chr_translate____constraint_index___2-2',
9390 V2),
9391 new_ht(W2),
9392 nb_setval('$chr_store_multi_hash_chr_translate____least_occurrence___2-1',
9393 W2),
9394 new_ht(X2),
9395 nb_setval('$chr_store_multi_hash_chr_translate____least_occurrence___2-12',
9396 X2),
9397 new_ht(Y2),
9398 nb_setval('$chr_store_multi_hash_chr_translate____rule___2-1', Y2),
9399 nb_setval('$chr_store_global_ground_chr_translate____rule___2', []),
9400 new_ht(Z2),
9401 nb_setval('$chr_store_multi_hash_chr_translate____allocation_occurrence___2-12',
9402 Z2),
9403 new_ht(A3),
9404 nb_setval('$chr_store_multi_hash_chr_translate____allocation_occurrence___2-1',
9405 A3),
9406 new_ht(B3),
9407 nb_setval('$chr_store_multi_hash_chr_translate____max_occurrence___2-1',
9408 B3),
9409 new_ht(C3),
9410 nb_setval('$chr_store_multi_hash_chr_translate____occurrence___5-1',
9411 C3),
9412 new_ht(D3),
9413 nb_setval('$chr_store_multi_hash_chr_translate____occurrence___5-34',
9414 D3),
9415 new_ht(E3),
9416 nb_setval('$chr_store_multi_hash_chr_translate____occurrence___5-13',
9417 E3),
9418 new_ht(F3),
9419 nb_setval('$chr_store_multi_hash_chr_translate____occurrence___5-3',
9420 F3),
9421 new_ht(G3),
9422 nb_setval('$chr_store_multi_hash_chr_translate____occurrence___5-12',
9423 G3),
9424 new_ht(H3),
9425 nb_setval('$chr_store_multi_hash_chr_translate____occurrence___5-134',
9426 H3),
9427 new_ht(I3),
9428 nb_setval('$chr_store_multi_hash_chr_translate____occurrence___5-125',
9429 I3),
9430 nb_setval('$chr_store_global_ground_chr_translate____occurrence___5', []),
9431 new_ht(J3),
9432 nb_setval('$chr_store_multi_hash_chr_translate____occurrence___5-15',
9433 J3),
9434 new_ht(K3),
9435 nb_setval('$chr_store_multi_hash_chr_translate____passive___2-12', K3),
9436 new_ht(L3),
9437 nb_setval('$chr_store_multi_hash_chr_translate____passive___2-1', L3),
9438 nb_setval('$chr_store_global_ground_chr_translate____rule_count___1', []),
9439 new_ht(M3),
9440 nb_setval('$chr_store_multi_hash_chr_translate____validate_store_type_assumption___1-1',
9441 M3),
9442 new_ht(N3),
9443 nb_setval('$chr_store_multi_hash_chr_translate____assumed_store_type___2-1',
9444 N3),
9445 new_ht(O3),
9446 nb_setval('$chr_store_multi_hash_chr_translate____actual_store_types___2-1',
9447 O3),
9448 new_ht(P3),
9449 nb_setval('$chr_store_multi_hash_chr_translate____store_type___2-1',
9450 P3),
9451 nb_setval('$chr_store_global_ground_chr_translate____none_suspended_on_variables___0',
9452 []),
9453 new_ht(Q3),
9454 nb_setval('$chr_store_multi_hash_chr_translate____constraint_mode___2-1',
9455 Q3),
9456 nb_setval('$chr_store_global_ground_chr_translate____constraint_mode___2',
9457 []),
9458 new_ht(R3),
9459 nb_setval('$chr_store_multi_hash_chr_translate____indexed_argument___2-12',
9460 R3),
9461 new_ht(S3),
9462 nb_setval('$chr_store_multi_hash_chr_translate____indexed_argument___2-1',
9463 S3),
9464 new_ht(T3),
9465 nb_setval('$chr_store_multi_hash_chr_translate____source_location___2-1',
9466 T3),
9467 nb_setval('$chr_store_global_ground_chr_translate____target_module___1', []),
9468 nb_setval('$chr_store_global_ground_chr_translate____chr_source_file___1',
9469 []).
9470:- (initialization'$chr_initialization'). 9471:- (dynamic user:exception/3). 9472:- (multifile user:exception/3). 9473user:exception(undefined_global_variable, A, retry) :-
9474 '$chr_prolog_global_variable'(A),
9475 '$chr_initialization'.
9476'$chr_prolog_global_variable'('$chr_store_global_ground_chr_translate____print_chr_constants___0').
9477'$chr_prolog_global_variable'('$chr_store_global_ground_chr_translate____chr_constants___1').
9478'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____occurrence_code_id___3-12').
9479'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____set_occurrence_code_id___3-12').
9480'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____skip_to_next_id___2-12').
9481'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____continuation_occurrence___3-12').
9482'$chr_prolog_global_variable'('$chr_store_global_ground_chr_translate____never_stored_rules___2').
9483'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____never_stored_default___2-1').
9484'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____stored_assertion___1-1').
9485'$chr_prolog_global_variable'('$chr_store_global_ground_chr_translate____used_states_known___0').
9486'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____if_used_state___5-12').
9487'$chr_prolog_global_variable'('$chr_store_global_ground_chr_translate____if_used_state___5').
9488'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____uses_state___2-12').
9489'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____does_use_field___2-12').
9490'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____does_use_history___2-12').
9491'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____does_use_history___2-1').
9492'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____delay_phase_end___2-1').
9493'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____phase_end___1-1').
9494'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____no_partial_wake___1-1').
9495'$chr_prolog_global_variable'('$chr_store_global_ground_chr_translate____partial_wake_analysis___0').
9496'$chr_prolog_global_variable'('$chr_store_global_ground_chr_translate____ai_observation_memo_abstract_goal___2').
9497'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____ai_observation_memoed_abstract_goal___2-1').
9498'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____ai_observation_memoed_propagation_rest_heads___3-12').
9499'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____ai_observation_memoed_simplification_rest_heads___3-12').
9500'$chr_prolog_global_variable'('$chr_store_global_ground_chr_translate____ai_observation_gather_results___0').
9501'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____depends_on_as___3-2').
9502'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____depends_on_as___3-3').
9503'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____ai_not_observed___2-12').
9504'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____ai_not_observed_internal___2-12').
9505'$chr_prolog_global_variable'('$chr_store_global_ground_chr_translate____ai_not_observed_internal___2').
9506'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____ai_observed_internal___2-12').
9507'$chr_prolog_global_variable'('$chr_store_global_ground_chr_translate____ai_observed_internal___2').
9508'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____depends_on_goal___2-2').
9509'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____depends_on_ap___4-3').
9510'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____depends_on_ap___4-2').
9511'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____depends_on___2-2').
9512'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____depends_on___2-1').
9513'$chr_prolog_global_variable'('$chr_store_global_ground_chr_translate____abstract_constraints___1').
9514'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____final_answer_pattern___2-1').
9515'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____call_pattern___1-1').
9516'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____initial_call_pattern___1-1').
9517'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____functional_dependency___4-12').
9518'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____functional_dependency___4-1').
9519'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____use_auxiliary_module___1-1').
9520'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____use_auxiliary_predicate___2-12').
9521'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____use_auxiliary_predicate___2-1').
9522'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____use_auxiliary_predicate___1-1').
9523'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____memo_has_active_occurrence___1-1').
9524'$chr_prolog_global_variable'('$chr_store_global_ground_chr_translate____constraints_code1___3').
9525'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____check_all_passive___2-1').
9526'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____check_all_passive___2-12').
9527'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____stored_complete___3-1').
9528'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____stored_complete___3-13').
9529'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____stored___3-123').
9530'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____stored___3-13').
9531'$chr_prolog_global_variable'('$chr_store_global_list_chr_translate____atomic_type___1').
9532'$chr_prolog_global_variable'('$chr_store_global_ground_chr_translate____dynamic_type_check_clauses___1').
9533'$chr_prolog_global_variable'('$chr_store_global_ground_chr_translate____dynamic_type_check___0').
9534'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____ast_static_atomic_builtin_type_check_var___4-13').
9535'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____ast_static_atomic_builtin_type_check_var___4-1').
9536'$chr_prolog_global_variable'('$chr_store_global_list_chr_translate____ast_static_type_check_var___4').
9537'$chr_prolog_global_variable'('$chr_store_global_ground_chr_translate____static_type_check___2').
9538'$chr_prolog_global_variable'('$chr_store_global_ground_chr_translate____types_modes_condition___3').
9539'$chr_prolog_global_variable'('$chr_store_global_list_chr_translate____unalias_type___2').
9540'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____constraint_type___2-1').
9541'$chr_prolog_global_variable'('$chr_store_global_ground_chr_translate____constraint_type___2').
9542'$chr_prolog_global_variable'('$chr_store_global_list_chr_translate____type_alias___2').
9543'$chr_prolog_global_variable'('$chr_store_global_list_chr_translate____type_definition___2').
9544'$chr_prolog_global_variable'('$chr_store_global_ground_chr_translate____multiple_occ_constraints_checked___1').
9545'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____make_head_matchings_explicit_memo_table___3-1').
9546'$chr_prolog_global_variable'('$chr_store_global_ground_chr_translate____precompute_head_matchings___0').
9547'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____set_all_passive___1-1').
9548'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____prev_guard_list___6-1').
9549'$chr_prolog_global_variable'('$chr_store_global_ground_chr_translate____prev_guard_list___6').
9550'$chr_prolog_global_variable'('$chr_store_global_ground_chr_translate____get_bg_info_answer___1').
9551'$chr_prolog_global_variable'('$chr_store_global_list_chr_translate____get_bg_info___2').
9552'$chr_prolog_global_variable'('$chr_store_global_list_chr_translate____background_info___2').
9553'$chr_prolog_global_variable'('$chr_store_global_ground_chr_translate____background_info___1').
9554'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____prolog_global_variable___1-1').
9555'$chr_prolog_global_variable'('$chr_store_global_ground_chr_translate____prolog_global_variable___1').
9556'$chr_prolog_global_variable'('$chr_store_global_list_chr_translate____fresh_symbol___2').
9557'$chr_prolog_global_variable'('$chr_store_global_list_chr_translate____symbol_count___2').
9558'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____actual_non_ground_multi_hash_key___2-12').
9559'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____actual_ground_multi_hash_keys___3-1').
9560'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____actual_ground_multi_hash_keys___3-12').
9561'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____actual_atomic_multi_hash_keys___3-1').
9562'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____actual_atomic_multi_hash_keys___3-12').
9563'$chr_prolog_global_variable'('$chr_store_global_ground_chr_translate____module_initializer___1').
9564'$chr_prolog_global_variable'('$chr_store_global_ground_chr_translate____find_empty_named_histories___0').
9565'$chr_prolog_global_variable'('$chr_store_global_list_chr_translate____generate_empty_named_history_initialisation___1').
9566'$chr_prolog_global_variable'('$chr_store_global_ground_chr_translate____empty_named_history_initialisations___2').
9567'$chr_prolog_global_variable'('$chr_store_global_ground_chr_translate____spawns_all_triggers_implies_spawns_all___0').
9568'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____spawns_all_triggers___2-12').
9569'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____spawns_all_triggers___2-1').
9570'$chr_prolog_global_variable'('$chr_store_global_ground_chr_translate____spawns_all_triggers___2').
9571'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____spawns_all___2-12').
9572'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____spawns_all___2-1').
9573'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____spawns___3-123').
9574'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____spawns___3-3').
9575'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____spawns___3-1').
9576'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____spawns___3-12').
9577'$chr_prolog_global_variable'('$chr_store_global_ground_chr_translate____spawns___3').
9578'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____spawns___3-13').
9579'$chr_prolog_global_variable'('$chr_store_global_ground_chr_translate____observation_analysis___1').
9580'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____indexing_spec___2-1').
9581'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____history___3-1').
9582'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____history___3-2').
9583'$chr_prolog_global_variable'('$chr_store_constants_chr_translate____history___3___[3]___[]').
9584'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____no_history___1-1').
9585'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____type_indexed_identifier_index___4-23').
9586'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____type_indexed_identifier_index___4-123').
9587'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____type_indexed_identifier_size___2-1').
9588'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____identifier_index___3-12').
9589'$chr_prolog_global_variable'('$chr_store_global_ground_chr_translate____identifier_size___1').
9590'$chr_prolog_global_variable'('$chr_store_global_ground_chr_translate____max_constraint_index___1').
9591'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____constraint_index___2-1').
9592'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____constraint_index___2-2').
9593'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____least_occurrence___2-1').
9594'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____least_occurrence___2-12').
9595'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____rule___2-1').
9596'$chr_prolog_global_variable'('$chr_store_global_ground_chr_translate____rule___2').
9597'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____allocation_occurrence___2-12').
9598'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____allocation_occurrence___2-1').
9599'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____max_occurrence___2-1').
9600'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____occurrence___5-1').
9601'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____occurrence___5-34').
9602'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____occurrence___5-13').
9603'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____occurrence___5-3').
9604'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____occurrence___5-12').
9605'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____occurrence___5-134').
9606'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____occurrence___5-125').
9607'$chr_prolog_global_variable'('$chr_store_global_ground_chr_translate____occurrence___5').
9608'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____occurrence___5-15').
9609'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____passive___2-12').
9610'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____passive___2-1').
9611'$chr_prolog_global_variable'('$chr_store_global_ground_chr_translate____rule_count___1').
9612'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____validate_store_type_assumption___1-1').
9613'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____assumed_store_type___2-1').
9614'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____actual_store_types___2-1').
9615'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____store_type___2-1').
9616'$chr_prolog_global_variable'('$chr_store_global_ground_chr_translate____none_suspended_on_variables___0').
9617'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____constraint_mode___2-1').
9618'$chr_prolog_global_variable'('$chr_store_global_ground_chr_translate____constraint_mode___2').
9619'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____indexed_argument___2-12').
9620'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____indexed_argument___2-1').
9621'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____source_location___2-1').
9622'$chr_prolog_global_variable'('$chr_store_global_ground_chr_translate____target_module___1').
9623'$chr_prolog_global_variable'('$chr_store_global_ground_chr_translate____chr_source_file___1').
9624chr_source_file(A) :-
9625 nb_getval('$chr_store_global_ground_chr_translate____chr_source_file___1',
9626 B),
9627 ( member(C, B),
9628 C=suspension(_, active, _, _),
9629 !
9630 ; !,
9631 chr_source_file___1__0__0__2(B, A)
9632 ).
9633chr_source_file___1__0__0__2([], A) :-
9634 chr_source_file___1__1(A).
9635chr_source_file___1__0__0__2([A|B], C) :-
9636 ( A=suspension(_, active, _, _)
9637 -> setarg(2, A, removed),
9638 arg(3, A, D),
9639 ( var(D)
9640 -> nb_getval('$chr_store_global_ground_chr_translate____chr_source_file___1',
9641 E),
9642 E=[_|F],
9643 b_setval('$chr_store_global_ground_chr_translate____chr_source_file___1',
9644 F),
9645 ( F=[G|_]
9646 -> setarg(3, G, _)
9647 ; true
9648 )
9649 ; D=[_, _|F],
9650 setarg(2, D, F),
9651 ( F=[G|_]
9652 -> setarg(3, G, D)
9653 ; true
9654 )
9655 ),
9656 chr_source_file___1__0__0__2(B, C)
9657 ; chr_source_file___1__0__0__2(B, C)
9658 ).
9659chr_source_file(A) :-
9660 chr_source_file___1__1(A).
9661chr_source_file___1__1(A) :-
9662 B=suspension(C, active, _, A),
9663 'chr gen_id'(C),
9664 nb_getval('$chr_store_global_ground_chr_translate____chr_source_file___1',
9665 D),
9666 E=[B|D],
9667 b_setval('$chr_store_global_ground_chr_translate____chr_source_file___1',
9668 E),
9669 ( D=[F|_]
9670 -> setarg(3, F, E)
9671 ; true
9672 ).
9673get_chr_source_file(A) :-
9674 nb_getval('$chr_store_global_ground_chr_translate____chr_source_file___1',
9675 B),
9676 member(C, B),
9677 C=suspension(_, active, _, D),
9678 !,
9679 A=D.
9680get_chr_source_file(user).
9681target_module(A) :-
9682 nb_getval('$chr_store_global_ground_chr_translate____target_module___1',
9683 B),
9684 ( member(C, B),
9685 C=suspension(_, active, _, _),
9686 !
9687 ; !,
9688 target_module___1__0__0__2(B, A)
9689 ).
9690target_module___1__0__0__2([], A) :-
9691 target_module___1__1(A).
9692target_module___1__0__0__2([A|B], C) :-
9693 ( A=suspension(_, active, _, _)
9694 -> setarg(2, A, removed),
9695 arg(3, A, D),
9696 ( var(D)
9697 -> nb_getval('$chr_store_global_ground_chr_translate____target_module___1',
9698 E),
9699 E=[_|F],
9700 b_setval('$chr_store_global_ground_chr_translate____target_module___1',
9701 F),
9702 ( F=[G|_]
9703 -> setarg(3, G, _)
9704 ; true
9705 )
9706 ; D=[_, _|F],
9707 setarg(2, D, F),
9708 ( F=[G|_]
9709 -> setarg(3, G, D)
9710 ; true
9711 )
9712 ),
9713 target_module___1__0__0__2(B, C)
9714 ; target_module___1__0__0__2(B, C)
9715 ).
9716target_module(A) :-
9717 target_module___1__1(A).
9718target_module___1__1(A) :-
9719 B=suspension(C, active, _, A),
9720 'chr gen_id'(C),
9721 nb_getval('$chr_store_global_ground_chr_translate____target_module___1',
9722 D),
9723 E=[B|D],
9724 b_setval('$chr_store_global_ground_chr_translate____target_module___1',
9725 E),
9726 ( D=[F|_]
9727 -> setarg(3, F, E)
9728 ; true
9729 ).
9730get_target_module(A) :-
9731 nb_getval('$chr_store_global_ground_chr_translate____target_module___1',
9732 B),
9733 member(C, B),
9734 C=suspension(_, active, _, D),
9735 !,
9736 A=D.
9737get_target_module(user).
9738source_location(A, B) :-
9739 nb_getval('$chr_store_multi_hash_chr_translate____source_location___2-1',
9740 C),
9741 lookup_ht(C, A, D),
9742 ( member(E, D),
9743 E=suspension(_, active, _, _),
9744 !
9745 ; !,
9746 source_location___2__0__0__2(D, A, B)
9747 ).
9748source_location___2__0__0__2([], A, B) :-
9749 source_location___2__1(A, B).
9750source_location___2__0__0__2([A|B], C, D) :-
9751 ( A=suspension(_, active, E, _),
9752 E==C
9753 -> setarg(2, A, removed),
9754 nb_getval('$chr_store_multi_hash_chr_translate____source_location___2-1',
9755 F),
9756 delete_ht(F, C, A),
9757 source_location___2__0__0__2(B, C, D)
9758 ; source_location___2__0__0__2(B, C, D)
9759 ).
9760source_location(A, B) :-
9761 source_location___2__1(A, B).
9762source_location___2__1(A, B) :-
9763 C=suspension(D, active, A, B),
9764 'chr gen_id'(D),
9765 nb_getval('$chr_store_multi_hash_chr_translate____source_location___2-1',
9766 E),
9767 insert_ht(E, A, C).
9768get_line_number(A, B) :-
9769 nb_getval('$chr_store_multi_hash_chr_translate____source_location___2-1',
9770 C),
9771 lookup_ht(C, A, D),
9772 member(E, D),
9773 E=suspension(_, active, _, F),
9774 !,
9775 B=F.
9776get_line_number(_, (?):0).
9777indexed_argument(A, B) :-
9778 nb_getval('$chr_store_multi_hash_chr_translate____indexed_argument___2-12',
9779 C),
9780 lookup_ht(C, k(A, B), D),
9781 member(E, D),
9782 E=suspension(_, active, _, _),
9783 !.
9784indexed_argument(A, B) :-
9785 C=suspension(D, active, A, B),
9786 'chr gen_id'(D),
9787 nb_getval('$chr_store_multi_hash_chr_translate____indexed_argument___2-1',
9788 E),
9789 insert_ht(E, A, C),
9790 nb_getval('$chr_store_multi_hash_chr_translate____indexed_argument___2-12',
9791 F),
9792 insert_ht(F, k(A, B), C).
9793is_indexed_argument(A, B) :-
9794 nb_getval('$chr_store_multi_hash_chr_translate____indexed_argument___2-12',
9795 C),
9796 lookup_ht(C, k(A, B), D),
9797 member(E, D),
9798 E=suspension(_, active, _, _),
9799 !.
9800is_indexed_argument(_, _) :-
9801 fail.
9802constraint_mode(A, B) :-
9803 constraint_mode___2__0(A, B, _).
9804constraint_mode___2__0(A, B, C) :-
9805 nb_getval('$chr_store_multi_hash_chr_translate____constraint_mode___2-1',
9806 D),
9807 lookup_ht(D, A, E),
9808 ( member(F, E),
9809 F=suspension(_, active, _, _, _, _),
9810 !
9811 ; !,
9812 constraint_mode___2__0__0__2(E, A, B, C)
9813 ).
9814constraint_mode___2__0__0__2([], A, B, C) :-
9815 constraint_mode___2__1(A, B, C).
9816constraint_mode___2__0__0__2([A|B], C, D, E) :-
9817 ( A=suspension(_, active, _, _, F, _),
9818 F==C
9819 -> setarg(2, A, removed),
9820 ( arg(4, A, G),
9821 ( var(G)
9822 -> nb_getval('$chr_store_global_ground_chr_translate____constraint_mode___2',
9823 H),
9824 H=[_|I],
9825 b_setval('$chr_store_global_ground_chr_translate____constraint_mode___2',
9826 I),
9827 ( I=[J|_]
9828 -> setarg(4, J, _)
9829 ; true
9830 )
9831 ; G=[_, _|I],
9832 setarg(2, G, I),
9833 ( I=[J|_]
9834 -> setarg(4, J, G)
9835 ; true
9836 )
9837 )
9838 ),
9839 nb_getval('$chr_store_multi_hash_chr_translate____constraint_mode___2-1',
9840 K),
9841 delete_ht(K, C, A),
9842 constraint_mode___2__0__0__2(B, C, D, E)
9843 ; constraint_mode___2__0__0__2(B, C, D, E)
9844 ).
9845constraint_mode___2__0(A, B, C) :-
9846 constraint_mode___2__1(A, B, C).
9847constraint_mode___2__1(A, B, C) :-
9848 A=D/E,
9849 nb_getval('$chr_store_global_ground_chr_translate____types_modes_condition___3',
9850 F),
9851 !,
9852 C=suspension(G, not_stored_yet, t, _, A, B),
9853 'chr gen_id'(G),
9854 constraint_mode___2__1__0__7(F,
9855 A,
9856 B,
9857 C,
9858 D,
9859 E).
9860constraint_mode___2__1__0__7([], A, B, C, _, _) :-
9861 constraint_mode___2__2(A, B, C).
9862constraint_mode___2__1__0__7([A|B], C, D, E, F, G) :-
9863 ( A=suspension(_, active, _, H, I, J),
9864 H=[K|L],
9865 I=[M|N],
9866 functor(K, F, G)
9867 -> setarg(2, A, removed),
9868 arg(3, A, O),
9869 ( var(O)
9870 -> nb_getval('$chr_store_global_ground_chr_translate____types_modes_condition___3',
9871 P),
9872 P=[_|Q],
9873 b_setval('$chr_store_global_ground_chr_translate____types_modes_condition___3',
9874 Q),
9875 ( Q=[R|_]
9876 -> setarg(3, R, _)
9877 ; true
9878 )
9879 ; O=[_, _|Q],
9880 setarg(2, O, Q),
9881 ( Q=[R|_]
9882 -> setarg(3, R, O)
9883 ; true
9884 )
9885 ),
9886 arg(2, E, S),
9887 setarg(2, E, active),
9888 ( S==not_stored_yet
9889 -> nb_getval('$chr_store_global_ground_chr_translate____constraint_mode___2',
9890 T),
9891 U=[E|T],
9892 b_setval('$chr_store_global_ground_chr_translate____constraint_mode___2',
9893 U),
9894 ( T=[V|_]
9895 -> setarg(4, V, U)
9896 ; true
9897 ),
9898 nb_getval('$chr_store_multi_hash_chr_translate____constraint_mode___2-1',
9899 W),
9900 insert_ht(W, C, E)
9901 ; true
9902 ),
9903 K=..[_|X],
9904 J=(Y, Z, A1),
9905 modes_condition(D, X, Y),
9906 get_constraint_type_det(F/G, B1),
9907 M=..[_|C1],
9908 types_condition(B1, X, C1, D, Z),
9909 types_modes_condition(L, N, A1),
9910 ( E=suspension(_, active, _, _, _, _)
9911 -> setarg(2, E, inactive),
9912 constraint_mode___2__1__0__7(B,
9913 C,
9914 D,
9915 E,
9916 F,
9917 G)
9918 ; true
9919 )
9920 ; constraint_mode___2__1__0__7(B,
9921 C,
9922 D,
9923 E,
9924 F,
9925 G)
9926 ).
9927constraint_mode___2__1(A, B, C) :-
9928 C=suspension(D, not_stored_yet, t, _, A, B),
9929 'chr gen_id'(D),
9930 constraint_mode___2__2(A, B, C).
9931constraint_mode___2__2(A, B, C) :-
9932 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-1', D),
9933 lookup_ht(D, A, E),
9934 !,
9935 constraint_mode___2__2__0__8(E, A, B, C).
9936constraint_mode___2__2__0__8([], A, B, C) :-
9937 constraint_mode___2__3(A, B, C).
9938constraint_mode___2__2__0__8([A|B], C, D, E) :-
9939 ( A=suspension(_, active, _, _, F, _, G, H, I),
9940 F==C,
9941 nb_getval('$chr_store_global_ground_chr_translate____partial_wake_analysis___0',
9942 J)
9943 -> constraint_mode___2__2__1__8(J,
9944 G,
9945 H,
9946 I,
9947 A,
9948 B,
9949 C,
9950 D,
9951 E)
9952 ; constraint_mode___2__2__0__8(B, C, D, E)
9953 ).
9954constraint_mode___2__2__1__8([], _, _, _, _, A, B, C, D) :-
9955 constraint_mode___2__2__0__8(A, B, C, D).
9956constraint_mode___2__2__1__8([A|B], C, D, E, F, G, H, I, J) :-
9957 ( A=suspension(_, active, _, _),
9958 nb_getval('$chr_store_multi_hash_chr_translate____rule___2-1', K),
9959 lookup_ht(K, C, L)
9960 -> constraint_mode___2__2__2__8(L,
9961 A,
9962 B,
9963 C,
9964 D,
9965 E,
9966 F,
9967 G,
9968 H,
9969 I,
9970 J)
9971 ; constraint_mode___2__2__1__8(B,
9972 C,
9973 D,
9974 E,
9975 F,
9976 G,
9977 H,
9978 I,
9979 J)
9980 ).
9981constraint_mode___2__2__2__8([], _, A, B, C, D, E, F, G, H, I) :-
9982 constraint_mode___2__2__1__8(A,
9983 B,
9984 C,
9985 D,
9986 E,
9987 F,
9988 G,
9989 H,
9990 I).
9991constraint_mode___2__2__2__8([A|B], C, D, E, F, G, H, I, J, K, L) :-
9992 ( A=suspension(_, active, _, _, M, N),
9993 M==E,
9994 O=t(330, C, H, A, L),
9995 '$novel_production'(C, O),
9996 '$novel_production'(H, O),
9997 '$novel_production'(A, O),
9998 '$novel_production'(L, O)
9999 -> '$extend_history'(L, O),
10000 arg(2, L, P),
10001 setarg(2, L, active),
10002 ( P==not_stored_yet
10003 -> nb_getval('$chr_store_global_ground_chr_translate____constraint_mode___2',
10004 Q),
10005 R=[L|Q],
10006 b_setval('$chr_store_global_ground_chr_translate____constraint_mode___2',
10007 R),
10008 ( Q=[S|_]
10009 -> setarg(4, S, R)
10010 ; true
10011 ),
10012 nb_getval('$chr_store_multi_hash_chr_translate____constraint_mode___2-1',
10013 T),
10014 insert_ht(T, J, L)
10015 ; true
10016 ),
10017 N=pragma(rule(U, V, W, _), _, _, _, _),
10018 ( is_passive(E, F)
10019 -> true
10020 ; G==simplification
10021 -> select(X, U, _),
10022 X=..[_|Y],
10023 term_variables(W, Z),
10024 partial_wake_args(Y, K, Z, J)
10025 ; select(X, V, _),
10026 X=..[_|Y],
10027 term_variables(W, Z),
10028 partial_wake_args(Y, K, Z, J)
10029 ),
10030 ( L=suspension(_, active, _, _, _, _)
10031 -> setarg(2, L, inactive),
10032 constraint_mode___2__2__2__8(B,
10033 C,
10034 D,
10035 E,
10036 F,
10037 G,
10038 H,
10039 I,
10040 J,
10041 K,
10042 L)
10043 ; true
10044 )
10045 ; constraint_mode___2__2__2__8(B,
10046 C,
10047 D,
10048 E,
10049 F,
10050 G,
10051 H,
10052 I,
10053 J,
10054 K,
10055 L)
10056 ).
10057constraint_mode___2__2(A, B, C) :-
10058 constraint_mode___2__3(A, B, C).
10059constraint_mode___2__3(A, _, B) :-
10060 arg(2, B, C),
10061 setarg(2, B, active),
10062 ( C==not_stored_yet
10063 -> nb_getval('$chr_store_global_ground_chr_translate____constraint_mode___2',
10064 D),
10065 E=[B|D],
10066 b_setval('$chr_store_global_ground_chr_translate____constraint_mode___2',
10067 E),
10068 ( D=[F|_]
10069 -> setarg(4, F, E)
10070 ; true
10071 ),
10072 nb_getval('$chr_store_multi_hash_chr_translate____constraint_mode___2-1',
10073 G),
10074 insert_ht(G, A, B)
10075 ; true
10076 ).
10077get_constraint_mode(A, B) :-
10078 nb_getval('$chr_store_multi_hash_chr_translate____constraint_mode___2-1',
10079 C),
10080 lookup_ht(C, A, D),
10081 member(E, D),
10082 E=suspension(_, active, _, _, _, F),
10083 !,
10084 B=F.
10085get_constraint_mode(_/A, B) :-
10086 replicate(A, ?, B).
10087may_trigger(A) :-
10088 \+ has_active_occurrence(A),
10089 !,
10090 fail.
10091may_trigger(A) :-
10092 nb_getval('$chr_store_multi_hash_chr_translate____constraint_mode___2-1',
10093 B),
10094 lookup_ht(B, A, C),
10095 member(D, C),
10096 D=suspension(_, active, _, _, _, E),
10097 nb_getval('$chr_store_multi_hash_chr_translate____indexed_argument___2-1',
10098 F),
10099 lookup_ht(F, A, G),
10100 member(H, G),
10101 H=suspension(_, active, _, I),
10102 nth1(I, E, J),
10103 J\==(+),
10104 !,
10105 is_stored(A).
10106may_trigger(_) :-
10107 chr_pp_flag(debugable, on).
10108only_ground_indexed_arguments(A) :-
10109 nb_getval('$chr_store_multi_hash_chr_translate____constraint_mode___2-1',
10110 B),
10111 lookup_ht(B, A, C),
10112 member(D, C),
10113 D=suspension(_, active, _, _, _, E),
10114 nb_getval('$chr_store_multi_hash_chr_translate____indexed_argument___2-1',
10115 F),
10116 lookup_ht(F, A, G),
10117 member(H, G),
10118 H=suspension(_, active, _, I),
10119 nth1(I, E, J),
10120 J\==(+),
10121 !,
10122 fail.
10123only_ground_indexed_arguments(_).
10124none_suspended_on_variables :-
10125 nb_getval('$chr_store_global_ground_chr_translate____none_suspended_on_variables___0',
10126 A),
10127 member(B, A),
10128 B=suspension(_, active, _),
10129 !.
10130none_suspended_on_variables :-
10131 A=suspension(B, active, _),
10132 'chr gen_id'(B),
10133 nb_getval('$chr_store_global_ground_chr_translate____none_suspended_on_variables___0',
10134 C),
10135 D=[A|C],
10136 b_setval('$chr_store_global_ground_chr_translate____none_suspended_on_variables___0',
10137 D),
10138 ( C=[E|_]
10139 -> setarg(3, E, D)
10140 ; true
10141 ).
10142are_none_suspended_on_variables :-
10143 nb_getval('$chr_store_global_ground_chr_translate____none_suspended_on_variables___0',
10144 A),
10145 member(B, A),
10146 B=suspension(_, active, _),
10147 !.
10148are_none_suspended_on_variables :-
10149 fail.
10150store_type(A, B) :-
10151 store_type___2__0(A, B, _).
10152store_type___2__0(A, B, C) :-
10153 chr_pp_flag(verbose, on),
10154 !,
10155 C=suspension(D, active, A, B),
10156 'chr gen_id'(D),
10157 nb_getval('$chr_store_multi_hash_chr_translate____store_type___2-1', E),
10158 insert_ht(E, A, C),
10159 format('The indexes for ~w are:\n', [A]),
10160 format_storetype(B),
10161 ( C=suspension(_, active, _, _)
10162 -> setarg(2, C, inactive),
10163 store_type___2__1(A, B, C)
10164 ; true
10165 ).
10166store_type___2__0(A, B, C) :-
10167 C=suspension(D, not_stored_yet, A, B),
10168 'chr gen_id'(D),
10169 store_type___2__1(A, B, C).
10170store_type___2__1(A, _, B) :-
10171 nb_getval('$chr_store_multi_hash_chr_translate____validate_store_type_assumption___1-1',
10172 C),
10173 lookup_ht(C, A, D),
10174 member(E, D),
10175 E=suspension(_, active, _),
10176 nb_getval('$chr_store_multi_hash_chr_translate____actual_store_types___2-1',
10177 F),
10178 lookup_ht(F, A, G),
10179 member(H, G),
10180 H=suspension(_, active, _, I),
10181 !,
10182 setarg(2, E, removed),
10183 nb_getval('$chr_store_multi_hash_chr_translate____validate_store_type_assumption___1-1',
10184 J),
10185 delete_ht(J, A, E),
10186 setarg(2, H, removed),
10187 nb_getval('$chr_store_multi_hash_chr_translate____actual_store_types___2-1',
10188 K),
10189 delete_ht(K, A, H),
10190 ( var(B)
10191 -> true
10192 ; arg(2, B, L),
10193 setarg(2, B, removed),
10194 ( L==not_stored_yet
10195 -> true
10196 ; nb_getval('$chr_store_multi_hash_chr_translate____store_type___2-1',
10197 M),
10198 delete_ht(M, A, B)
10199 )
10200 ),
10201 store_type(A, multi_store(I)).
10202store_type___2__1(A, _, B) :-
10203 arg(2, B, C),
10204 setarg(2, B, active),
10205 ( C==not_stored_yet
10206 -> nb_getval('$chr_store_multi_hash_chr_translate____store_type___2-1',
10207 D),
10208 insert_ht(D, A, B)
10209 ; true
10210 ).
10211get_store_type(A, B) :-
10212 nb_getval('$chr_store_multi_hash_chr_translate____store_type___2-1', C),
10213 lookup_ht(C, A, D),
10214 member(E, D),
10215 E=suspension(_, active, _, F),
10216 !,
10217 B=F.
10218get_store_type(A, B) :-
10219 nb_getval('$chr_store_multi_hash_chr_translate____assumed_store_type___2-1',
10220 C),
10221 lookup_ht(C, A, D),
10222 member(E, D),
10223 E=suspension(_, active, _, F),
10224 !,
10225 B=F.
10226get_store_type(_, default).
10227update_store_type(A, B) :-
10228 nb_getval('$chr_store_multi_hash_chr_translate____actual_store_types___2-1',
10229 C),
10230 lookup_ht(C, A, D),
10231 member(E, D),
10232 E=suspension(_, active, _, F),
10233 ( memberchk(B, F),
10234 !
10235 ; !,
10236 setarg(2, E, removed),
10237 nb_getval('$chr_store_multi_hash_chr_translate____actual_store_types___2-1',
10238 G),
10239 delete_ht(G, A, E),
10240 actual_store_types(A, [B|F])
10241 ).
10242update_store_type(A, B) :-
10243 actual_store_types(A, [B]).
10244actual_store_types(A, B) :-
10245 nb_getval('$chr_store_multi_hash_chr_translate____actual_atomic_multi_hash_keys___3-1',
10246 C),
10247 lookup_ht(C, A, D),
10248 member(E, D),
10249 E=suspension(_, active, _, F, G),
10250 nb_getval('$chr_store_multi_hash_chr_translate____validate_store_type_assumption___1-1',
10251 H),
10252 lookup_ht(H, A, I),
10253 member(J, I),
10254 J=suspension(_, active, _),
10255 !,
10256 setarg(2, E, removed),
10257 nb_getval('$chr_store_multi_hash_chr_translate____actual_atomic_multi_hash_keys___3-12',
10258 K),
10259 delete_ht(K, k(A, F), E),
10260 nb_getval('$chr_store_multi_hash_chr_translate____actual_atomic_multi_hash_keys___3-1',
10261 L),
10262 delete_ht(L, A, E),
10263 selectchk(multi_hash([F]), B, M),
10264 F=[N],
10265 ( get_constraint_arg_type(A, N, O),
10266 enumerated_atomic_type(O, P)
10267 -> Q=P,
10268 R=complete
10269 ; Q=G,
10270 R=incomplete
10271 ),
10272 actual_store_types(A,
10273 [atomic_constants(F, Q, R)|M]).
10274actual_store_types(A, B) :-
10275 nb_getval('$chr_store_multi_hash_chr_translate____actual_ground_multi_hash_keys___3-1',
10276 C),
10277 lookup_ht(C, A, D),
10278 member(E, D),
10279 E=suspension(_, active, _, F, G),
10280 nb_getval('$chr_store_multi_hash_chr_translate____validate_store_type_assumption___1-1',
10281 H),
10282 lookup_ht(H, A, I),
10283 member(J, I),
10284 J=suspension(_, active, _),
10285 !,
10286 setarg(2, E, removed),
10287 nb_getval('$chr_store_multi_hash_chr_translate____actual_ground_multi_hash_keys___3-12',
10288 K),
10289 delete_ht(K, k(A, F), E),
10290 nb_getval('$chr_store_multi_hash_chr_translate____actual_ground_multi_hash_keys___3-1',
10291 L),
10292 delete_ht(L, A, E),
10293 ( F=[M],
10294 get_constraint_arg_type(A, M, N),
10295 N=chr_enum(O)
10296 -> P=complete
10297 ; O=G,
10298 P=incomplete
10299 ),
10300 selectchk(multi_hash([F]), B, Q),
10301 actual_store_types(A,
10302 [ground_constants(F, O, P)|Q]).
10303actual_store_types(A, B) :-
10304 nb_getval('$chr_store_multi_hash_chr_translate____validate_store_type_assumption___1-1',
10305 C),
10306 lookup_ht(C, A, D),
10307 member(E, D),
10308 E=suspension(_, active, _),
10309 ( ( memberchk(multi_hash([[F]]), B),
10310 ( get_constraint_type(A, G),
10311 nth1(F, G, H),
10312 enumerated_atomic_type(H, I),
10313 !,
10314 selectchk(multi_hash([[F]]), B, J),
10315 actual_store_types(A,
10316 [ atomic_constants([F],
10317 I,
10318 complete)
10319 | J
10320 ])
10321 ; get_constraint_arg_type(A, F, K),
10322 K=chr_enum(L),
10323 !,
10324 selectchk(multi_hash([[F]]), B, M),
10325 actual_store_types(A,
10326 [ ground_constants([F],
10327 L,
10328 complete)
10329 | M
10330 ])
10331 )
10332 ; nb_getval('$chr_store_multi_hash_chr_translate____assumed_store_type___2-1',
10333 N),
10334 lookup_ht(N, A, O),
10335 member(P, O),
10336 P=suspension(_, active, _, _),
10337 !,
10338 setarg(2, E, removed),
10339 nb_getval('$chr_store_multi_hash_chr_translate____validate_store_type_assumption___1-1',
10340 Q),
10341 delete_ht(Q, A, E),
10342 setarg(2, P, removed),
10343 nb_getval('$chr_store_multi_hash_chr_translate____assumed_store_type___2-1',
10344 R),
10345 delete_ht(R, A, P),
10346 ( maplist(partial_store, B)
10347 -> S=[global_ground|B]
10348 ; S=B
10349 ),
10350 store_type(A, multi_store(S))
10351 )
10352 ; nb_getval('$chr_store_multi_hash_chr_translate____store_type___2-1',
10353 T),
10354 lookup_ht(T, A, U),
10355 member(V, U),
10356 V=suspension(_, active, _, _),
10357 !,
10358 setarg(2, E, removed),
10359 nb_getval('$chr_store_multi_hash_chr_translate____validate_store_type_assumption___1-1',
10360 W),
10361 delete_ht(W, A, E),
10362 setarg(2, V, removed),
10363 nb_getval('$chr_store_multi_hash_chr_translate____store_type___2-1',
10364 X),
10365 delete_ht(X, A, V),
10366 store_type(A, multi_store(B))
10367 ).
10368actual_store_types(A, B) :-
10369 C=suspension(D, active, A, B),
10370 'chr gen_id'(D),
10371 nb_getval('$chr_store_multi_hash_chr_translate____actual_store_types___2-1',
10372 E),
10373 insert_ht(E, A, C).
10374assumed_store_type(A, _) :-
10375 nb_getval('$chr_store_multi_hash_chr_translate____validate_store_type_assumption___1-1',
10376 B),
10377 lookup_ht(B, A, C),
10378 member(D, C),
10379 D=suspension(_, active, _),
10380 ( ( nb_getval('$chr_store_multi_hash_chr_translate____actual_store_types___2-1',
10381 E),
10382 lookup_ht(E, A, F),
10383 member(G, F),
10384 G=suspension(_, active, _, H),
10385 !,
10386 setarg(2, D, removed),
10387 nb_getval('$chr_store_multi_hash_chr_translate____validate_store_type_assumption___1-1',
10388 I),
10389 delete_ht(I, A, D),
10390 setarg(2, G, removed),
10391 nb_getval('$chr_store_multi_hash_chr_translate____actual_store_types___2-1',
10392 J),
10393 delete_ht(J, A, G),
10394 ( maplist(partial_store, H)
10395 -> K=[global_ground|H]
10396 ; K=H
10397 ),
10398 store_type(A, multi_store(K))
10399 ; chr_pp_flag(debugable, on),
10400 !,
10401 setarg(2, D, removed),
10402 nb_getval('$chr_store_multi_hash_chr_translate____validate_store_type_assumption___1-1',
10403 L),
10404 delete_ht(L, A, D),
10405 store_type(A, default)
10406 )
10407 ; !,
10408 setarg(2, D, removed),
10409 nb_getval('$chr_store_multi_hash_chr_translate____validate_store_type_assumption___1-1',
10410 M),
10411 delete_ht(M, A, D),
10412 store_type(A, global_ground)
10413 ).
10414assumed_store_type(A, B) :-
10415 C=suspension(D, active, A, B),
10416 'chr gen_id'(D),
10417 nb_getval('$chr_store_multi_hash_chr_translate____assumed_store_type___2-1',
10418 E),
10419 insert_ht(E, A, C).
10420validate_store_type_assumption(A) :-
10421 validate_store_type_assumption___1__0(A, _).
10422validate_store_type_assumption___1__0(A, B) :-
10423 nb_getval('$chr_store_multi_hash_chr_translate____actual_store_types___2-1',
10424 C),
10425 lookup_ht(C, A, D),
10426 !,
10427 B=suspension(E, not_stored_yet, A),
10428 'chr gen_id'(E),
10429 validate_store_type_assumption___1__0__0__1(D, A, B).
10430validate_store_type_assumption___1__0__0__1([], A, B) :-
10431 validate_store_type_assumption___1__1(A, B).
10432validate_store_type_assumption___1__0__0__1([A|B], C, D) :-
10433 ( A=suspension(_, active, E, F),
10434 E==C,
10435 ground(C),
10436 nb_getval('$chr_store_multi_hash_chr_translate____actual_atomic_multi_hash_keys___3-1',
10437 G),
10438 lookup_ht(G, C, H),
10439 member(I, H),
10440 I=suspension(_, active, _, J, K)
10441 -> ( setarg(2, A, removed),
10442 nb_getval('$chr_store_multi_hash_chr_translate____actual_store_types___2-1',
10443 L),
10444 delete_ht(L, C, A)
10445 ),
10446 setarg(2, I, removed),
10447 ( nb_getval('$chr_store_multi_hash_chr_translate____actual_atomic_multi_hash_keys___3-12',
10448 M),
10449 delete_ht(M, k(C, J), I)
10450 ),
10451 nb_getval('$chr_store_multi_hash_chr_translate____actual_atomic_multi_hash_keys___3-1',
10452 N),
10453 delete_ht(N, C, I),
10454 arg(2, D, O),
10455 setarg(2, D, active),
10456 ( O==not_stored_yet
10457 -> nb_getval('$chr_store_multi_hash_chr_translate____validate_store_type_assumption___1-1',
10458 P),
10459 insert_ht(P, C, D)
10460 ; true
10461 ),
10462 selectchk(multi_hash([J]), F, Q),
10463 J=[R],
10464 ( get_constraint_arg_type(C, R, S),
10465 enumerated_atomic_type(S, T)
10466 -> U=T,
10467 V=complete
10468 ; U=K,
10469 V=incomplete
10470 ),
10471 actual_store_types(C,
10472 [ atomic_constants(J, U, V)
10473 | Q
10474 ]),
10475 ( D=suspension(_, active, _)
10476 -> setarg(2, D, inactive),
10477 validate_store_type_assumption___1__0__0__1(B,
10478 C,
10479 D)
10480 ; true
10481 )
10482 ; validate_store_type_assumption___1__0__0__1(B, C, D)
10483 ).
10484validate_store_type_assumption___1__0(A, B) :-
10485 B=suspension(C, not_stored_yet, A),
10486 'chr gen_id'(C),
10487 validate_store_type_assumption___1__1(A, B).
10488validate_store_type_assumption___1__1(A, B) :-
10489 nb_getval('$chr_store_multi_hash_chr_translate____actual_store_types___2-1',
10490 C),
10491 lookup_ht(C, A, D),
10492 !,
10493 validate_store_type_assumption___1__1__0__2(D, A, B).
10494validate_store_type_assumption___1__1__0__2([], A, B) :-
10495 validate_store_type_assumption___1__2(A, B).
10496validate_store_type_assumption___1__1__0__2([A|B], C, D) :-
10497 ( A=suspension(_, active, E, F),
10498 E==C,
10499 ground(C),
10500 nb_getval('$chr_store_multi_hash_chr_translate____actual_ground_multi_hash_keys___3-1',
10501 G),
10502 lookup_ht(G, C, H),
10503 member(I, H),
10504 I=suspension(_, active, _, J, K)
10505 -> ( setarg(2, A, removed),
10506 nb_getval('$chr_store_multi_hash_chr_translate____actual_store_types___2-1',
10507 L),
10508 delete_ht(L, C, A)
10509 ),
10510 setarg(2, I, removed),
10511 ( nb_getval('$chr_store_multi_hash_chr_translate____actual_ground_multi_hash_keys___3-12',
10512 M),
10513 delete_ht(M, k(C, J), I)
10514 ),
10515 nb_getval('$chr_store_multi_hash_chr_translate____actual_ground_multi_hash_keys___3-1',
10516 N),
10517 delete_ht(N, C, I),
10518 arg(2, D, O),
10519 setarg(2, D, active),
10520 ( O==not_stored_yet
10521 -> nb_getval('$chr_store_multi_hash_chr_translate____validate_store_type_assumption___1-1',
10522 P),
10523 insert_ht(P, C, D)
10524 ; true
10525 ),
10526 ( J=[Q],
10527 get_constraint_arg_type(C, Q, R),
10528 R=chr_enum(S)
10529 -> T=complete
10530 ; S=K,
10531 T=incomplete
10532 ),
10533 selectchk(multi_hash([J]), F, U),
10534 actual_store_types(C,
10535 [ ground_constants(J, S, T)
10536 | U
10537 ]),
10538 ( D=suspension(_, active, _)
10539 -> setarg(2, D, inactive),
10540 validate_store_type_assumption___1__1__0__2(B,
10541 C,
10542 D)
10543 ; true
10544 )
10545 ; validate_store_type_assumption___1__1__0__2(B, C, D)
10546 ).
10547validate_store_type_assumption___1__1(A, B) :-
10548 validate_store_type_assumption___1__2(A, B).
10549validate_store_type_assumption___1__2(A, B) :-
10550 nb_getval('$chr_store_multi_hash_chr_translate____actual_store_types___2-1',
10551 C),
10552 lookup_ht(C, A, D),
10553 !,
10554 validate_store_type_assumption___1__2__0__3(D, A, B).
10555validate_store_type_assumption___1__2__0__3([], A, B) :-
10556 validate_store_type_assumption___1__3(A, B).
10557validate_store_type_assumption___1__2__0__3([A|B], C, D) :-
10558 ( A=suspension(_, active, E, F),
10559 E==C,
10560 memberchk(multi_hash([[G]]), F),
10561 get_constraint_type(C, H),
10562 nth1(G, H, I),
10563 enumerated_atomic_type(I, J)
10564 -> setarg(2, A, removed),
10565 nb_getval('$chr_store_multi_hash_chr_translate____actual_store_types___2-1',
10566 K),
10567 delete_ht(K, C, A),
10568 arg(2, D, L),
10569 setarg(2, D, active),
10570 ( L==not_stored_yet
10571 -> nb_getval('$chr_store_multi_hash_chr_translate____validate_store_type_assumption___1-1',
10572 M),
10573 insert_ht(M, C, D)
10574 ; true
10575 ),
10576 selectchk(multi_hash([[G]]), F, N),
10577 actual_store_types(C,
10578 [ atomic_constants([G], J, complete)
10579 | N
10580 ]),
10581 ( D=suspension(_, active, _)
10582 -> setarg(2, D, inactive),
10583 validate_store_type_assumption___1__2__0__3(B,
10584 C,
10585 D)
10586 ; true
10587 )
10588 ; validate_store_type_assumption___1__2__0__3(B, C, D)
10589 ).
10590validate_store_type_assumption___1__2(A, B) :-
10591 validate_store_type_assumption___1__3(A, B).
10592validate_store_type_assumption___1__3(A, B) :-
10593 nb_getval('$chr_store_multi_hash_chr_translate____actual_store_types___2-1',
10594 C),
10595 lookup_ht(C, A, D),
10596 !,
10597 validate_store_type_assumption___1__3__0__4(D, A, B).
10598validate_store_type_assumption___1__3__0__4([], A, B) :-
10599 validate_store_type_assumption___1__4(A, B).
10600validate_store_type_assumption___1__3__0__4([A|B], C, D) :-
10601 ( A=suspension(_, active, E, F),
10602 E==C,
10603 memberchk(multi_hash([[G]]), F),
10604 get_constraint_arg_type(C, G, H),
10605 H=chr_enum(I)
10606 -> setarg(2, A, removed),
10607 nb_getval('$chr_store_multi_hash_chr_translate____actual_store_types___2-1',
10608 J),
10609 delete_ht(J, C, A),
10610 arg(2, D, K),
10611 setarg(2, D, active),
10612 ( K==not_stored_yet
10613 -> nb_getval('$chr_store_multi_hash_chr_translate____validate_store_type_assumption___1-1',
10614 L),
10615 insert_ht(L, C, D)
10616 ; true
10617 ),
10618 selectchk(multi_hash([[G]]), F, M),
10619 actual_store_types(C,
10620 [ ground_constants([G], I, complete)
10621 | M
10622 ]),
10623 ( D=suspension(_, active, _)
10624 -> setarg(2, D, inactive),
10625 validate_store_type_assumption___1__3__0__4(B,
10626 C,
10627 D)
10628 ; true
10629 )
10630 ; validate_store_type_assumption___1__3__0__4(B, C, D)
10631 ).
10632validate_store_type_assumption___1__3(A, B) :-
10633 validate_store_type_assumption___1__4(A, B).
10634validate_store_type_assumption___1__4(A, B) :-
10635 nb_getval('$chr_store_multi_hash_chr_translate____actual_store_types___2-1',
10636 C),
10637 lookup_ht(C, A, D),
10638 member(E, D),
10639 E=suspension(_, active, _, F),
10640 ( nb_getval('$chr_store_multi_hash_chr_translate____assumed_store_type___2-1',
10641 G),
10642 lookup_ht(G, A, H),
10643 member(I, H),
10644 I=suspension(_, active, _, _),
10645 !,
10646 setarg(2, E, removed),
10647 nb_getval('$chr_store_multi_hash_chr_translate____actual_store_types___2-1',
10648 J),
10649 delete_ht(J, A, E),
10650 setarg(2, I, removed),
10651 nb_getval('$chr_store_multi_hash_chr_translate____assumed_store_type___2-1',
10652 K),
10653 delete_ht(K, A, I),
10654 ( var(B)
10655 -> true
10656 ; arg(2, B, L),
10657 setarg(2, B, removed),
10658 ( L==not_stored_yet
10659 -> true
10660 ; nb_getval('$chr_store_multi_hash_chr_translate____validate_store_type_assumption___1-1',
10661 M),
10662 delete_ht(M, A, B)
10663 )
10664 ),
10665 ( maplist(partial_store, F)
10666 -> N=[global_ground|F]
10667 ; N=F
10668 ),
10669 store_type(A, multi_store(N))
10670 ; nb_getval('$chr_store_multi_hash_chr_translate____store_type___2-1',
10671 O),
10672 lookup_ht(O, A, P),
10673 member(Q, P),
10674 Q=suspension(_, active, _, _),
10675 !,
10676 setarg(2, E, removed),
10677 nb_getval('$chr_store_multi_hash_chr_translate____actual_store_types___2-1',
10678 R),
10679 delete_ht(R, A, E),
10680 setarg(2, Q, removed),
10681 nb_getval('$chr_store_multi_hash_chr_translate____store_type___2-1',
10682 S),
10683 delete_ht(S, A, Q),
10684 ( var(B)
10685 -> true
10686 ; arg(2, B, T),
10687 setarg(2, B, removed),
10688 ( T==not_stored_yet
10689 -> true
10690 ; nb_getval('$chr_store_multi_hash_chr_translate____validate_store_type_assumption___1-1',
10691 U),
10692 delete_ht(U, A, B)
10693 )
10694 ),
10695 store_type(A, multi_store(F))
10696 ).
10697validate_store_type_assumption___1__4(A, B) :-
10698 nb_getval('$chr_store_multi_hash_chr_translate____assumed_store_type___2-1',
10699 C),
10700 lookup_ht(C, A, D),
10701 member(E, D),
10702 E=suspension(_, active, _, _),
10703 ( chr_pp_flag(debugable, on),
10704 !,
10705 setarg(2, E, removed),
10706 nb_getval('$chr_store_multi_hash_chr_translate____assumed_store_type___2-1',
10707 F),
10708 delete_ht(F, A, E),
10709 ( var(B)
10710 -> true
10711 ; arg(2, B, G),
10712 setarg(2, B, removed),
10713 ( G==not_stored_yet
10714 -> true
10715 ; nb_getval('$chr_store_multi_hash_chr_translate____validate_store_type_assumption___1-1',
10716 H),
10717 delete_ht(H, A, B)
10718 )
10719 ),
10720 store_type(A, default)
10721 ; !,
10722 setarg(2, E, removed),
10723 nb_getval('$chr_store_multi_hash_chr_translate____assumed_store_type___2-1',
10724 I),
10725 delete_ht(I, A, E),
10726 ( var(B)
10727 -> true
10728 ; arg(2, B, J),
10729 setarg(2, B, removed),
10730 ( J==not_stored_yet
10731 -> true
10732 ; nb_getval('$chr_store_multi_hash_chr_translate____validate_store_type_assumption___1-1',
10733 K),
10734 delete_ht(K, A, B)
10735 )
10736 ),
10737 store_type(A, global_ground)
10738 ).
10739validate_store_type_assumption___1__4(A, B) :-
10740 ( var(B)
10741 -> true
10742 ; arg(2, B, C),
10743 setarg(2, B, removed),
10744 ( C==not_stored_yet
10745 -> true
10746 ; nb_getval('$chr_store_multi_hash_chr_translate____validate_store_type_assumption___1-1',
10747 D),
10748 delete_ht(D, A, B)
10749 )
10750 ).
10751rule_count(A) :-
10752 nb_getval('$chr_store_global_ground_chr_translate____rule_count___1',
10753 B),
10754 ( member(C, B),
10755 C=suspension(_, active, _, _),
10756 !
10757 ; !,
10758 rule_count___1__0__0__2(B, A)
10759 ).
10760rule_count___1__0__0__2([], A) :-
10761 rule_count___1__1(A).
10762rule_count___1__0__0__2([A|B], C) :-
10763 ( A=suspension(_, active, _, _)
10764 -> setarg(2, A, removed),
10765 arg(3, A, D),
10766 ( var(D)
10767 -> nb_getval('$chr_store_global_ground_chr_translate____rule_count___1',
10768 E),
10769 E=[_|F],
10770 b_setval('$chr_store_global_ground_chr_translate____rule_count___1',
10771 F),
10772 ( F=[G|_]
10773 -> setarg(3, G, _)
10774 ; true
10775 )
10776 ; D=[_, _|F],
10777 setarg(2, D, F),
10778 ( F=[G|_]
10779 -> setarg(3, G, D)
10780 ; true
10781 )
10782 ),
10783 rule_count___1__0__0__2(B, C)
10784 ; rule_count___1__0__0__2(B, C)
10785 ).
10786rule_count(A) :-
10787 rule_count___1__1(A).
10788rule_count___1__1(A) :-
10789 B=suspension(C, active, _, A),
10790 'chr gen_id'(C),
10791 nb_getval('$chr_store_global_ground_chr_translate____rule_count___1',
10792 D),
10793 E=[B|D],
10794 b_setval('$chr_store_global_ground_chr_translate____rule_count___1', E),
10795 ( D=[F|_]
10796 -> setarg(3, F, E)
10797 ; true
10798 ).
10799inc_rule_count(A) :-
10800 nb_getval('$chr_store_global_ground_chr_translate____rule_count___1',
10801 B),
10802 member(C, B),
10803 C=suspension(_, active, _, D),
10804 !,
10805 setarg(2, C, removed),
10806 arg(3, C, E),
10807 ( var(E)
10808 -> nb_getval('$chr_store_global_ground_chr_translate____rule_count___1',
10809 F),
10810 F=[_|G],
10811 b_setval('$chr_store_global_ground_chr_translate____rule_count___1',
10812 G),
10813 ( G=[H|_]
10814 -> setarg(3, H, _)
10815 ; true
10816 )
10817 ; E=[_, _|G],
10818 setarg(2, E, G),
10819 ( G=[H|_]
10820 -> setarg(3, H, E)
10821 ; true
10822 )
10823 ),
10824 A is D+1,
10825 rule_count(A).
10826inc_rule_count(1) :-
10827 rule_count(1).
10828passive(A, B) :-
10829 passive___2__0(A, B, _).
10830passive___2__0(A, B, _) :-
10831 nb_getval('$chr_store_multi_hash_chr_translate____passive___2-12', C),
10832 lookup_ht(C, k(A, B), D),
10833 member(E, D),
10834 E=suspension(_, active, _, _, _),
10835 !.
10836passive___2__0(A, B, C) :-
10837 nb_getval('$chr_store_multi_hash_chr_translate____least_occurrence___2-1',
10838 D),
10839 lookup_ht(D, A, E),
10840 !,
10841 C=suspension(F, not_stored_yet, t, A, B),
10842 'chr gen_id'(F),
10843 passive___2__0__0__6(E, A, B, C).
10844passive___2__0__0__6([], A, B, C) :-
10845 passive___2__1(A, B, C).
10846passive___2__0__0__6([A|B], C, D, E) :-
10847 ( A=suspension(_, active, F, G),
10848 F==C,
10849 G=[H|I],
10850 H==D,
10851 ground(C),
10852 nb_getval('$chr_store_multi_hash_chr_translate____rule___2-1', J),
10853 lookup_ht(J, C, K),
10854 member(L, K),
10855 L=suspension(_, active, _, _, _, _)
10856 -> setarg(2, A, removed),
10857 ( nb_getval('$chr_store_multi_hash_chr_translate____least_occurrence___2-12',
10858 M),
10859 delete_ht(M, k(C, [D|I]), A)
10860 ),
10861 nb_getval('$chr_store_multi_hash_chr_translate____least_occurrence___2-1',
10862 N),
10863 delete_ht(N, C, A),
10864 arg(2, E, O),
10865 setarg(2, E, active),
10866 ( O==not_stored_yet
10867 -> nb_getval('$chr_store_multi_hash_chr_translate____passive___2-1',
10868 P),
10869 insert_ht(P, C, E),
10870 nb_getval('$chr_store_multi_hash_chr_translate____passive___2-12',
10871 Q),
10872 insert_ht(Q, k(C, D), E)
10873 ; true
10874 ),
10875 least_occurrence(C, I),
10876 ( E=suspension(_, active, _, _, _)
10877 -> setarg(2, E, inactive),
10878 passive___2__0__0__6(B, C, D, E)
10879 ; true
10880 )
10881 ; passive___2__0__0__6(B, C, D, E)
10882 ).
10883passive___2__0(A, B, C) :-
10884 C=suspension(D, not_stored_yet, t, A, B),
10885 'chr gen_id'(D),
10886 passive___2__1(A, B, C).
10887passive___2__1(A, B, C) :-
10888 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-34',
10889 D),
10890 lookup_ht(D, k(A, B), E),
10891 !,
10892 passive___2__1__0__8(E, A, B, C).
10893passive___2__1__0__8([], A, B, C) :-
10894 passive___2__2(A, B, C).
10895passive___2__1__0__8([A|B], C, D, E) :-
10896 ( A=suspension(_, active, _, _, F, G, H, I, _),
10897 H==C,
10898 I==D,
10899 nb_getval('$chr_store_multi_hash_chr_translate____stored_complete___3-1',
10900 J),
10901 lookup_ht(J, F, K)
10902 -> passive___2__1__1__8(K,
10903 F,
10904 G,
10905 A,
10906 B,
10907 C,
10908 D,
10909 E)
10910 ; passive___2__1__0__8(B, C, D, E)
10911 ).
10912passive___2__1__1__8([], _, _, _, A, B, C, D) :-
10913 passive___2__1__0__8(A, B, C, D).
10914passive___2__1__1__8([A|B], C, D, E, F, G, H, I) :-
10915 ( A=suspension(_, active, _, J, K, L),
10916 J==C,
10917 D<K,
10918 ( ground(C),
10919 ground(D)
10920 ),
10921 nb_getval('$chr_store_multi_hash_chr_translate____stored___3-123',
10922 M),
10923 lookup_ht(M, k(C, D, yes), N),
10924 member(O, N),
10925 O=suspension(_, active, _, _, _)
10926 -> ( setarg(2, A, removed),
10927 nb_getval('$chr_store_multi_hash_chr_translate____stored_complete___3-13',
10928 P),
10929 delete_ht(P, k(C, L), A),
10930 nb_getval('$chr_store_multi_hash_chr_translate____stored_complete___3-1',
10931 Q),
10932 delete_ht(Q, C, A)
10933 ),
10934 setarg(2, O, removed),
10935 ( nb_getval('$chr_store_multi_hash_chr_translate____stored___3-13',
10936 R),
10937 delete_ht(R, k(C, yes), O)
10938 ),
10939 nb_getval('$chr_store_multi_hash_chr_translate____stored___3-123',
10940 S),
10941 delete_ht(S, k(C, D, yes), O),
10942 arg(2, I, T),
10943 setarg(2, I, active),
10944 ( T==not_stored_yet
10945 -> nb_getval('$chr_store_multi_hash_chr_translate____passive___2-1',
10946 U),
10947 insert_ht(U, G, I),
10948 nb_getval('$chr_store_multi_hash_chr_translate____passive___2-12',
10949 V),
10950 insert_ht(V, k(G, H), I)
10951 ; true
10952 ),
10953 W is L-1,
10954 stored(C, D, maybe),
10955 stored_complete(C, K, W),
10956 ( I=suspension(_, active, _, _, _)
10957 -> setarg(2, I, inactive),
10958 passive___2__1__1__8(B,
10959 C,
10960 D,
10961 E,
10962 F,
10963 G,
10964 H,
10965 I)
10966 ; true
10967 )
10968 ; passive___2__1__1__8(B,
10969 C,
10970 D,
10971 E,
10972 F,
10973 G,
10974 H,
10975 I)
10976 ).
10977passive___2__1(A, B, C) :-
10978 passive___2__2(A, B, C).
10979passive___2__2(A, B, C) :-
10980 nb_getval('$chr_store_multi_hash_chr_translate____rule___2-1', D),
10981 lookup_ht(D, A, E),
10982 !,
10983 passive___2__2__0__9(E, A, B, C).
10984passive___2__2__0__9([], A, B, C) :-
10985 passive___2__3(A, B, C).
10986passive___2__2__0__9([A|B], C, D, E) :-
10987 ( A=suspension(_, active, _, _, F, G),
10988 F==C,
10989 H=t(251, A, E),
10990 '$novel_production'(A, H),
10991 '$novel_production'(E, H),
10992 G=pragma(rule(_, _, _, _), ids([D|I], J), _, _, C)
10993 -> '$extend_history'(E, H),
10994 arg(2, E, K),
10995 setarg(2, E, active),
10996 ( K==not_stored_yet
10997 -> nb_getval('$chr_store_multi_hash_chr_translate____passive___2-1',
10998 L),
10999 insert_ht(L, C, E),
11000 nb_getval('$chr_store_multi_hash_chr_translate____passive___2-12',
11001 M),
11002 insert_ht(M, k(C, D), E)
11003 ; true
11004 ),
11005 append(I, J, N),
11006 check_all_passive(C, N),
11007 ( E=suspension(_, active, _, _, _)
11008 -> setarg(2, E, inactive),
11009 passive___2__2__0__9(B, C, D, E)
11010 ; true
11011 )
11012 ; passive___2__2__0__9(B, C, D, E)
11013 ).
11014passive___2__2(A, B, C) :-
11015 passive___2__3(A, B, C).
11016passive___2__3(A, B, C) :-
11017 nb_getval('$chr_store_multi_hash_chr_translate____rule___2-1', D),
11018 lookup_ht(D, A, E),
11019 !,
11020 passive___2__3__0__10(E, A, B, C).
11021passive___2__3__0__10([], A, B, C) :-
11022 passive___2__4(A, B, C).
11023passive___2__3__0__10([A|B], C, D, E) :-
11024 ( A=suspension(_, active, _, _, F, G),
11025 F==C,
11026 H=t(252, A, E),
11027 '$novel_production'(A, H),
11028 '$novel_production'(E, H),
11029 G=pragma(rule(_, _, _, _), ids([], [D|I]), _, _, C)
11030 -> '$extend_history'(E, H),
11031 arg(2, E, J),
11032 setarg(2, E, active),
11033 ( J==not_stored_yet
11034 -> nb_getval('$chr_store_multi_hash_chr_translate____passive___2-1',
11035 K),
11036 insert_ht(K, C, E),
11037 nb_getval('$chr_store_multi_hash_chr_translate____passive___2-12',
11038 L),
11039 insert_ht(L, k(C, D), E)
11040 ; true
11041 ),
11042 check_all_passive(C, I),
11043 ( E=suspension(_, active, _, _, _)
11044 -> setarg(2, E, inactive),
11045 passive___2__3__0__10(B, C, D, E)
11046 ; true
11047 )
11048 ; passive___2__3__0__10(B, C, D, E)
11049 ).
11050passive___2__3(A, B, C) :-
11051 passive___2__4(A, B, C).
11052passive___2__4(A, B, C) :-
11053 nb_getval('$chr_store_multi_hash_chr_translate____check_all_passive___2-1',
11054 D),
11055 lookup_ht(D, A, E),
11056 !,
11057 passive___2__4__0__11(E, A, B, C).
11058passive___2__4__0__11([], A, B, C) :-
11059 passive___2__5(A, B, C).
11060passive___2__4__0__11([A|B], C, D, E) :-
11061 ( A=suspension(_, active, F, G),
11062 F==C,
11063 G=[H|I],
11064 H==D
11065 -> setarg(2, A, removed),
11066 ( nb_getval('$chr_store_multi_hash_chr_translate____check_all_passive___2-12',
11067 J),
11068 delete_ht(J, k(C, [D|I]), A)
11069 ),
11070 nb_getval('$chr_store_multi_hash_chr_translate____check_all_passive___2-1',
11071 K),
11072 delete_ht(K, C, A),
11073 arg(2, E, L),
11074 setarg(2, E, active),
11075 ( L==not_stored_yet
11076 -> nb_getval('$chr_store_multi_hash_chr_translate____passive___2-1',
11077 M),
11078 insert_ht(M, C, E),
11079 nb_getval('$chr_store_multi_hash_chr_translate____passive___2-12',
11080 N),
11081 insert_ht(N, k(C, D), E)
11082 ; true
11083 ),
11084 check_all_passive(C, I),
11085 ( E=suspension(_, active, _, _, _)
11086 -> setarg(2, E, inactive),
11087 passive___2__4__0__11(B, C, D, E)
11088 ; true
11089 )
11090 ; passive___2__4__0__11(B, C, D, E)
11091 ).
11092passive___2__4(A, B, C) :-
11093 passive___2__5(A, B, C).
11094passive___2__5(A, B, C) :-
11095 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-34',
11096 D),
11097 lookup_ht(D, k(A, B), E),
11098 !,
11099 passive___2__5__0__14(E, A, B, C).
11100passive___2__5__0__14([], A, B, C) :-
11101 passive___2__6(A, B, C).
11102passive___2__5__0__14([A|B], C, D, E) :-
11103 ( A=suspension(_, active, _, _, F, G, H, I, _),
11104 H==C,
11105 I==D,
11106 nb_getval('$chr_store_multi_hash_chr_translate____skip_to_next_id___2-12',
11107 J),
11108 lookup_ht(J, k(F, G), K)
11109 -> passive___2__5__1__14(K,
11110 F,
11111 G,
11112 A,
11113 B,
11114 C,
11115 D,
11116 E)
11117 ; passive___2__5__0__14(B, C, D, E)
11118 ).
11119passive___2__5__1__14([], _, _, _, A, B, C, D) :-
11120 passive___2__5__0__14(A, B, C, D).
11121passive___2__5__1__14([A|B], C, D, E, F, G, H, I) :-
11122 ( A=suspension(_, active, _, J, K),
11123 J==C,
11124 K==D,
11125 L=t(362, E, I, A),
11126 '$novel_production'(E, L),
11127 '$novel_production'(I, L),
11128 '$novel_production'(A, L),
11129 D>1
11130 -> '$extend_history'(I, L),
11131 arg(2, I, M),
11132 setarg(2, I, active),
11133 ( M==not_stored_yet
11134 -> nb_getval('$chr_store_multi_hash_chr_translate____passive___2-1',
11135 N),
11136 insert_ht(N, G, I),
11137 nb_getval('$chr_store_multi_hash_chr_translate____passive___2-12',
11138 O),
11139 insert_ht(O, k(G, H), I)
11140 ; true
11141 ),
11142 P is D-1,
11143 skip_to_next_id(C, P),
11144 ( I=suspension(_, active, _, _, _)
11145 -> setarg(2, I, inactive),
11146 passive___2__5__1__14(B,
11147 C,
11148 D,
11149 E,
11150 F,
11151 G,
11152 H,
11153 I)
11154 ; true
11155 )
11156 ; passive___2__5__1__14(B,
11157 C,
11158 D,
11159 E,
11160 F,
11161 G,
11162 H,
11163 I)
11164 ).
11165passive___2__5(A, B, C) :-
11166 passive___2__6(A, B, C).
11167passive___2__6(A, B, C) :-
11168 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-34',
11169 D),
11170 lookup_ht(D, k(A, B), E),
11171 !,
11172 passive___2__6__0__15(E, A, B, C).
11173passive___2__6__0__15([], A, B, C) :-
11174 passive___2__7(A, B, C).
11175passive___2__6__0__15([A|B], C, D, E) :-
11176 ( A=suspension(_, active, _, _, F, G, H, I, _),
11177 H==C,
11178 I==D,
11179 nb_getval('$chr_store_multi_hash_chr_translate____set_occurrence_code_id___3-12',
11180 J),
11181 lookup_ht(J, k(F, G), K)
11182 -> passive___2__6__1__15(K,
11183 F,
11184 G,
11185 A,
11186 B,
11187 C,
11188 D,
11189 E)
11190 ; passive___2__6__0__15(B, C, D, E)
11191 ).
11192passive___2__6__1__15([], _, _, _, A, B, C, D) :-
11193 passive___2__6__0__15(A, B, C, D).
11194passive___2__6__1__15([A|B], C, D, E, F, G, H, I) :-
11195 ( A=suspension(_, active, J, K, L),
11196 J==C,
11197 K==D
11198 -> setarg(2, A, removed),
11199 nb_getval('$chr_store_multi_hash_chr_translate____set_occurrence_code_id___3-12',
11200 M),
11201 delete_ht(M, k(C, D), A),
11202 arg(2, I, N),
11203 setarg(2, I, active),
11204 ( N==not_stored_yet
11205 -> nb_getval('$chr_store_multi_hash_chr_translate____passive___2-1',
11206 O),
11207 insert_ht(O, G, I),
11208 nb_getval('$chr_store_multi_hash_chr_translate____passive___2-12',
11209 P),
11210 insert_ht(P, k(G, H), I)
11211 ; true
11212 ),
11213 occurrence_code_id(C, D, L),
11214 Q is D+1,
11215 set_occurrence_code_id(C, Q, L),
11216 ( I=suspension(_, active, _, _, _)
11217 -> setarg(2, I, inactive),
11218 passive___2__6__1__15(B,
11219 C,
11220 D,
11221 E,
11222 F,
11223 G,
11224 H,
11225 I)
11226 ; true
11227 )
11228 ; passive___2__6__1__15(B,
11229 C,
11230 D,
11231 E,
11232 F,
11233 G,
11234 H,
11235 I)
11236 ).
11237passive___2__6(A, B, C) :-
11238 passive___2__7(A, B, C).
11239passive___2__7(A, B, C) :-
11240 arg(2, C, D),
11241 setarg(2, C, active),
11242 ( D==not_stored_yet
11243 -> nb_getval('$chr_store_multi_hash_chr_translate____passive___2-1',
11244 E),
11245 insert_ht(E, A, C),
11246 nb_getval('$chr_store_multi_hash_chr_translate____passive___2-12',
11247 F),
11248 insert_ht(F, k(A, B), C)
11249 ; true
11250 ).
11251is_passive(A, B) :-
11252 nb_getval('$chr_store_multi_hash_chr_translate____passive___2-12', C),
11253 lookup_ht(C, k(A, B), D),
11254 member(E, D),
11255 E=suspension(_, active, _, _, _),
11256 !.
11257is_passive(_, _) :-
11258 fail.
11259any_passive_head(A) :-
11260 nb_getval('$chr_store_multi_hash_chr_translate____passive___2-1', B),
11261 lookup_ht(B, A, C),
11262 member(D, C),
11263 D=suspension(_, active, _, _, _),
11264 !.
11265any_passive_head(_) :-
11266 fail.
11267new_occurrence(A, B, C, D) :-
11268 nb_getval('$chr_store_multi_hash_chr_translate____max_occurrence___2-1',
11269 E),
11270 lookup_ht(E, A, F),
11271 member(G, F),
11272 G=suspension(_, active, _, _, H),
11273 !,
11274 setarg(2, G, removed),
11275 nb_getval('$chr_store_multi_hash_chr_translate____max_occurrence___2-1',
11276 I),
11277 delete_ht(I, A, G),
11278 J is H+1,
11279 occurrence(A, J, B, C, D),
11280 max_occurrence(A, J).
11281new_occurrence(A, B, _, _) :-
11282 chr_error(internal,
11283 'new_occurrence: missing max_occurrence for ~w in rule ~w\n',
11284 [A, B]).
11285occurrence(A, B, C, D, E) :-
11286 occurrence___5__0(A, B, C, D, E, _).
11287occurrence___5__0(A, B, C, D, E, F) :-
11288 nb_getval('$chr_store_multi_hash_chr_translate____rule___2-1', G),
11289 lookup_ht(G, C, H),
11290 !,
11291 F=suspension(I, not_stored_yet, t, _, A, B, C, D, E),
11292 'chr gen_id'(I),
11293 occurrence___5__0__0__4(H,
11294 A,
11295 B,
11296 C,
11297 D,
11298 E,
11299 F).
11300occurrence___5__0__0__4([], A, B, C, D, E, F) :-
11301 occurrence___5__1(A, B, C, D, E, F).
11302occurrence___5__0__0__4([A|B], C, D, E, F, G, H) :-
11303 ( A=suspension(_, active, _, _, I, J),
11304 I==E,
11305 nb_getval('$chr_store_multi_hash_chr_translate____allocation_occurrence___2-12',
11306 K),
11307 lookup_ht(K, k(C, D), L)
11308 -> occurrence___5__0__1__4(L,
11309 J,
11310 A,
11311 B,
11312 C,
11313 D,
11314 E,
11315 F,
11316 G,
11317 H)
11318 ; occurrence___5__0__0__4(B,
11319 C,
11320 D,
11321 E,
11322 F,
11323 G,
11324 H)
11325 ).
11326occurrence___5__0__1__4([], _, _, A, B, C, D, E, F, G) :-
11327 occurrence___5__0__0__4(A,
11328 B,
11329 C,
11330 D,
11331 E,
11332 F,
11333 G).
11334occurrence___5__0__1__4([A|B], C, D, E, F, G, H, I, J, K) :-
11335 ( A=suspension(_, active, _, L, M),
11336 L==F,
11337 M==G,
11338 N=t(60, D, K, A),
11339 '$novel_production'(D, N),
11340 '$novel_production'(K, N),
11341 '$novel_production'(A, N)
11342 -> '$extend_history'(K, N),
11343 arg(2, K, O),
11344 setarg(2, K, active),
11345 ( O==not_stored_yet
11346 -> nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-15',
11347 P),
11348 insert_ht(P, k(F, J), K),
11349 nb_getval('$chr_store_global_ground_chr_translate____occurrence___5',
11350 Q),
11351 R=[K|Q],
11352 b_setval('$chr_store_global_ground_chr_translate____occurrence___5',
11353 R),
11354 ( Q=[S|_]
11355 -> setarg(4, S, R)
11356 ; true
11357 ),
11358 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-125',
11359 T),
11360 insert_ht(T, k(F, G, J), K),
11361 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-134',
11362 U),
11363 insert_ht(U, k(F, H, I), K),
11364 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-12',
11365 V),
11366 insert_ht(V, k(F, G), K),
11367 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-3',
11368 W),
11369 insert_ht(W, H, K),
11370 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-13',
11371 X),
11372 insert_ht(X, k(F, H), K),
11373 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-34',
11374 Y),
11375 insert_ht(Y, k(H, I), K),
11376 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-1',
11377 Z),
11378 insert_ht(Z, F, K)
11379 ; true
11380 ),
11381 \+ is_passive(H, I),
11382 J==propagation,
11383 ( stored_in_guard_before_next_kept_occurrence(F, G)
11384 -> true
11385 ; C=pragma(rule([_|_], _, _, _), _, _, _, _)
11386 -> is_observed(F, G)
11387 ; is_least_occurrence(H)
11388 -> is_observed(F, G)
11389 ; true
11390 ),
11391 ( K=suspension(_, active, _, _, _, _, _, _, _)
11392 -> setarg(2, K, inactive),
11393 occurrence___5__0__1__4(B,
11394 C,
11395 D,
11396 E,
11397 F,
11398 G,
11399 H,
11400 I,
11401 J,
11402 K)
11403 ; true
11404 )
11405 ; occurrence___5__0__1__4(B,
11406 C,
11407 D,
11408 E,
11409 F,
11410 G,
11411 H,
11412 I,
11413 J,
11414 K)
11415 ).
11416occurrence___5__0(A, B, C, D, E, F) :-
11417 F=suspension(G, not_stored_yet, t, _, A, B, C, D, E),
11418 'chr gen_id'(G),
11419 occurrence___5__1(A, B, C, D, E, F).
11420occurrence___5__1(A, B, C, D, E, F) :-
11421 nb_getval('$chr_store_multi_hash_chr_translate____least_occurrence___2-1',
11422 G),
11423 lookup_ht(G, C, H),
11424 !,
11425 occurrence___5__1__0__7(H,
11426 A,
11427 B,
11428 C,
11429 D,
11430 E,
11431 F).
11432occurrence___5__1__0__7([], A, B, C, D, E, F) :-
11433 occurrence___5__2(A, B, C, D, E, F).
11434occurrence___5__1__0__7([A|B], C, D, E, F, G, H) :-
11435 ( A=suspension(_, active, I, J),
11436 I==E,
11437 J=[K|L],
11438 K==F,
11439 ( ground(C),
11440 nb_getval('$chr_store_multi_hash_chr_translate____allocation_occurrence___2-1',
11441 M),
11442 lookup_ht(M, C, N)
11443 ),
11444 member(O, N),
11445 O=suspension(_, active, _, _, P),
11446 P>=D,
11447 ( ground(E),
11448 nb_getval('$chr_store_multi_hash_chr_translate____rule___2-1',
11449 Q),
11450 lookup_ht(Q, E, R)
11451 ),
11452 member(S, R),
11453 S=suspension(_, active, _, _, _, _),
11454 \+ may_trigger(C)
11455 -> setarg(2, A, removed),
11456 ( nb_getval('$chr_store_multi_hash_chr_translate____least_occurrence___2-12',
11457 T),
11458 delete_ht(T, k(E, [F|L]), A)
11459 ),
11460 nb_getval('$chr_store_multi_hash_chr_translate____least_occurrence___2-1',
11461 U),
11462 delete_ht(U, E, A),
11463 arg(2, H, V),
11464 setarg(2, H, active),
11465 ( V==not_stored_yet
11466 -> nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-15',
11467 W),
11468 insert_ht(W, k(C, G), H),
11469 nb_getval('$chr_store_global_ground_chr_translate____occurrence___5',
11470 X),
11471 Y=[H|X],
11472 b_setval('$chr_store_global_ground_chr_translate____occurrence___5',
11473 Y),
11474 ( X=[Z|_]
11475 -> setarg(4, Z, Y)
11476 ; true
11477 ),
11478 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-125',
11479 A1),
11480 insert_ht(A1, k(C, D, G), H),
11481 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-134',
11482 B1),
11483 insert_ht(B1, k(C, E, F), H),
11484 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-12',
11485 C1),
11486 insert_ht(C1, k(C, D), H),
11487 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-3',
11488 D1),
11489 insert_ht(D1, E, H),
11490 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-13',
11491 E1),
11492 insert_ht(E1, k(C, E), H),
11493 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-34',
11494 F1),
11495 insert_ht(F1, k(E, F), H),
11496 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-1',
11497 G1),
11498 insert_ht(G1, C, H)
11499 ; true
11500 ),
11501 least_occurrence(E, L),
11502 ( H=suspension(_, active, _, _, _, _, _, _, _)
11503 -> setarg(2, H, inactive),
11504 occurrence___5__1__0__7(B,
11505 C,
11506 D,
11507 E,
11508 F,
11509 G,
11510 H)
11511 ; true
11512 )
11513 ; occurrence___5__1__0__7(B,
11514 C,
11515 D,
11516 E,
11517 F,
11518 G,
11519 H)
11520 ).
11521occurrence___5__1(A, B, C, D, E, F) :-
11522 occurrence___5__2(A, B, C, D, E, F).
11523occurrence___5__2(A, B, C, D, E, F) :-
11524 nb_getval('$chr_store_multi_hash_chr_translate____set_all_passive___1-1',
11525 G),
11526 lookup_ht(G, C, H),
11527 !,
11528 occurrence___5__2__0__29(H,
11529 A,
11530 B,
11531 C,
11532 D,
11533 E,
11534 F).
11535occurrence___5__2__0__29([], A, B, C, D, E, F) :-
11536 occurrence___5__3(A, B, C, D, E, F).
11537occurrence___5__2__0__29([A|B], C, D, E, F, G, H) :-
11538 ( A=suspension(_, active, _, I),
11539 I==E,
11540 J=t(180, A, H),
11541 '$novel_production'(A, J),
11542 '$novel_production'(H, J)
11543 -> '$extend_history'(H, J),
11544 arg(2, H, K),
11545 setarg(2, H, active),
11546 ( K==not_stored_yet
11547 -> nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-15',
11548 L),
11549 insert_ht(L, k(C, G), H),
11550 nb_getval('$chr_store_global_ground_chr_translate____occurrence___5',
11551 M),
11552 N=[H|M],
11553 b_setval('$chr_store_global_ground_chr_translate____occurrence___5',
11554 N),
11555 ( M=[O|_]
11556 -> setarg(4, O, N)
11557 ; true
11558 ),
11559 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-125',
11560 P),
11561 insert_ht(P, k(C, D, G), H),
11562 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-134',
11563 Q),
11564 insert_ht(Q, k(C, E, F), H),
11565 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-12',
11566 R),
11567 insert_ht(R, k(C, D), H),
11568 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-3',
11569 S),
11570 insert_ht(S, E, H),
11571 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-13',
11572 T),
11573 insert_ht(T, k(C, E), H),
11574 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-34',
11575 U),
11576 insert_ht(U, k(E, F), H),
11577 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-1',
11578 V),
11579 insert_ht(V, C, H)
11580 ; true
11581 ),
11582 passive(E, F),
11583 ( H=suspension(_, active, _, _, _, _, _, _, _)
11584 -> setarg(2, H, inactive),
11585 occurrence___5__2__0__29(B,
11586 C,
11587 D,
11588 E,
11589 F,
11590 G,
11591 H)
11592 ; true
11593 )
11594 ; occurrence___5__2__0__29(B,
11595 C,
11596 D,
11597 E,
11598 F,
11599 G,
11600 H)
11601 ).
11602occurrence___5__2(A, B, C, D, E, F) :-
11603 occurrence___5__3(A, B, C, D, E, F).
11604occurrence___5__3(A, B, C, D, E, F) :-
11605 nb_getval('$chr_store_multi_hash_chr_translate____rule___2-1', G),
11606 lookup_ht(G, C, H),
11607 !,
11608 occurrence___5__3__0__30(H,
11609 A,
11610 B,
11611 C,
11612 D,
11613 E,
11614 F).
11615occurrence___5__3__0__30([], A, B, C, D, E, F) :-
11616 occurrence___5__4(A, B, C, D, E, F).
11617occurrence___5__3__0__30([A|B], C, D, E, F, G, H) :-
11618 ( A=suspension(_, active, _, _, I, J),
11619 I==E,
11620 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-13',
11621 K),
11622 lookup_ht(K, k(C, E), L)
11623 -> occurrence___5__3__1__30(L,
11624 J,
11625 A,
11626 B,
11627 C,
11628 D,
11629 E,
11630 F,
11631 G,
11632 H)
11633 ; occurrence___5__3__0__30(B,
11634 C,
11635 D,
11636 E,
11637 F,
11638 G,
11639 H)
11640 ).
11641occurrence___5__3__1__30([], _, _, A, B, C, D, E, F, G) :-
11642 occurrence___5__3__0__30(A,
11643 B,
11644 C,
11645 D,
11646 E,
11647 F,
11648 G).
11649occurrence___5__3__1__30([A|B], C, D, E, F, G, H, I, J, K) :-
11650 ( A=suspension(_, active, _, _, L, M, N, _, _),
11651 L==F,
11652 N==H,
11653 nb_getval('$chr_store_multi_hash_chr_translate____prev_guard_list___6-1',
11654 O),
11655 lookup_ht(O, H, P)
11656 -> occurrence___5__3__2__30(P,
11657 M,
11658 A,
11659 B,
11660 C,
11661 D,
11662 E,
11663 F,
11664 G,
11665 H,
11666 I,
11667 J,
11668 K)
11669 ; occurrence___5__3__1__30(B,
11670 C,
11671 D,
11672 E,
11673 F,
11674 G,
11675 H,
11676 I,
11677 J,
11678 K)
11679 ).
11680occurrence___5__3__2__30([], _, _, A, B, C, D, E, F, G, H, I, J) :-
11681 occurrence___5__3__1__30(A,
11682 B,
11683 C,
11684 D,
11685 E,
11686 F,
11687 G,
11688 H,
11689 I,
11690 J).
11691occurrence___5__3__2__30([A|B], C, D, E, F, G, H, I, J, K, L, M, N) :-
11692 ( A=suspension(_, active, _, _, O, _, _, _, _, _),
11693 O==K,
11694 nb_getval('$chr_store_global_ground_chr_translate____multiple_occ_constraints_checked___1',
11695 P)
11696 -> occurrence___5__3__3__30(P,
11697 A,
11698 B,
11699 C,
11700 D,
11701 E,
11702 F,
11703 G,
11704 H,
11705 I,
11706 J,
11707 K,
11708 L,
11709 M,
11710 N)
11711 ; occurrence___5__3__2__30(B,
11712 C,
11713 D,
11714 E,
11715 F,
11716 G,
11717 H,
11718 I,
11719 J,
11720 K,
11721 L,
11722 M,
11723 N)
11724 ).
11725occurrence___5__3__3__30([], _, A, B, C, D, E, F, G, H, I, J, K, L, M) :-
11726 occurrence___5__3__2__30(A,
11727 B,
11728 C,
11729 D,
11730 E,
11731 F,
11732 G,
11733 H,
11734 I,
11735 J,
11736 K,
11737 L,
11738 M).
11739occurrence___5__3__3__30([A|B], C, D, E, F, G, H, I, J, K, L, M, N, O, P) :-
11740 ( A=suspension(_, active, _, Q),
11741 L<E,
11742 chr_pp_flag(occurrence_subsumption, on),
11743 H=pragma(rule(R, _, _, _), _, _, _, _),
11744 R\==[],
11745 \+ tree_set_memberchk(K, Q)
11746 -> setarg(2, A, removed),
11747 arg(3, A, S),
11748 ( var(S)
11749 -> nb_getval('$chr_store_global_ground_chr_translate____multiple_occ_constraints_checked___1',
11750 T),
11751 T=[_|U],
11752 b_setval('$chr_store_global_ground_chr_translate____multiple_occ_constraints_checked___1',
11753 U),
11754 ( U=[V|_]
11755 -> setarg(3, V, _)
11756 ; true
11757 )
11758 ; S=[_, _|U],
11759 setarg(2, S, U),
11760 ( U=[V|_]
11761 -> setarg(3, V, S)
11762 ; true
11763 )
11764 ),
11765 arg(2, P, W),
11766 setarg(2, P, active),
11767 ( W==not_stored_yet
11768 -> nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-15',
11769 X),
11770 insert_ht(X, k(K, O), P),
11771 nb_getval('$chr_store_global_ground_chr_translate____occurrence___5',
11772 Y),
11773 Z=[P|Y],
11774 b_setval('$chr_store_global_ground_chr_translate____occurrence___5',
11775 Z),
11776 ( Y=[A1|_]
11777 -> setarg(4, A1, Z)
11778 ; true
11779 ),
11780 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-125',
11781 B1),
11782 insert_ht(B1, k(K, L, O), P),
11783 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-134',
11784 C1),
11785 insert_ht(C1, k(K, M, N), P),
11786 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-12',
11787 D1),
11788 insert_ht(D1, k(K, L), P),
11789 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-3',
11790 E1),
11791 insert_ht(E1, M, P),
11792 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-13',
11793 F1),
11794 insert_ht(F1, k(K, M), P),
11795 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-34',
11796 G1),
11797 insert_ht(G1, k(M, N), P),
11798 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-1',
11799 H1),
11800 insert_ht(H1, K, P)
11801 ; true
11802 ),
11803 first_occ_in_rule(M, K, L, N),
11804 tree_set_add(Q, K, I1),
11805 multiple_occ_constraints_checked(I1),
11806 ( P=suspension(_, active, _, _, _, _, _, _, _)
11807 -> setarg(2, P, inactive),
11808 occurrence___5__3__3__30(B,
11809 C,
11810 D,
11811 E,
11812 F,
11813 G,
11814 H,
11815 I,
11816 J,
11817 K,
11818 L,
11819 M,
11820 N,
11821 O,
11822 P)
11823 ; true
11824 )
11825 ; occurrence___5__3__3__30(B,
11826 C,
11827 D,
11828 E,
11829 F,
11830 G,
11831 H,
11832 I,
11833 J,
11834 K,
11835 L,
11836 M,
11837 N,
11838 O,
11839 P)
11840 ).
11841occurrence___5__3(A, B, C, D, E, F) :-
11842 occurrence___5__4(A, B, C, D, E, F).
11843occurrence___5__4(A, B, C, D, E, F) :-
11844 nb_getval('$chr_store_multi_hash_chr_translate____rule___2-1', G),
11845 lookup_ht(G, C, H),
11846 !,
11847 occurrence___5__4__0__31(H,
11848 A,
11849 B,
11850 C,
11851 D,
11852 E,
11853 F).
11854occurrence___5__4__0__31([], A, B, C, D, E, F) :-
11855 occurrence___5__5(A, B, C, D, E, F).
11856occurrence___5__4__0__31([A|B], C, D, E, F, G, H) :-
11857 ( A=suspension(_, active, _, _, I, J),
11858 I==E,
11859 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-13',
11860 K),
11861 lookup_ht(K, k(C, E), L)
11862 -> occurrence___5__4__1__31(L,
11863 J,
11864 A,
11865 B,
11866 C,
11867 D,
11868 E,
11869 F,
11870 G,
11871 H)
11872 ; occurrence___5__4__0__31(B,
11873 C,
11874 D,
11875 E,
11876 F,
11877 G,
11878 H)
11879 ).
11880occurrence___5__4__1__31([], _, _, A, B, C, D, E, F, G) :-
11881 occurrence___5__4__0__31(A,
11882 B,
11883 C,
11884 D,
11885 E,
11886 F,
11887 G).
11888occurrence___5__4__1__31([A|B], C, D, E, F, G, H, I, J, K) :-
11889 ( A=suspension(_, active, _, _, L, M, N, O, _),
11890 L==F,
11891 N==H,
11892 nb_getval('$chr_store_multi_hash_chr_translate____prev_guard_list___6-1',
11893 P),
11894 lookup_ht(P, H, Q)
11895 -> occurrence___5__4__2__31(Q,
11896 M,
11897 O,
11898 A,
11899 B,
11900 C,
11901 D,
11902 E,
11903 F,
11904 G,
11905 H,
11906 I,
11907 J,
11908 K)
11909 ; occurrence___5__4__1__31(B,
11910 C,
11911 D,
11912 E,
11913 F,
11914 G,
11915 H,
11916 I,
11917 J,
11918 K)
11919 ).
11920occurrence___5__4__2__31([], _, _, _, A, B, C, D, E, F, G, H, I, J) :-
11921 occurrence___5__4__1__31(A,
11922 B,
11923 C,
11924 D,
11925 E,
11926 F,
11927 G,
11928 H,
11929 I,
11930 J).
11931occurrence___5__4__2__31([A|B], C, D, E, F, G, H, I, J, K, L, M, N, O) :-
11932 ( A=suspension(_, active, _, _, P, _, _, _, _, _),
11933 P==L,
11934 nb_getval('$chr_store_global_ground_chr_translate____multiple_occ_constraints_checked___1',
11935 Q)
11936 -> occurrence___5__4__3__31(Q,
11937 A,
11938 B,
11939 C,
11940 D,
11941 E,
11942 F,
11943 G,
11944 H,
11945 I,
11946 J,
11947 K,
11948 L,
11949 M,
11950 N,
11951 O)
11952 ; occurrence___5__4__2__31(B,
11953 C,
11954 D,
11955 E,
11956 F,
11957 G,
11958 H,
11959 I,
11960 J,
11961 K,
11962 L,
11963 M,
11964 N,
11965 O)
11966 ).
11967occurrence___5__4__3__31([], _, A, B, C, D, E, F, G, H, I, J, K, L, M, N) :-
11968 occurrence___5__4__2__31(A,
11969 B,
11970 C,
11971 D,
11972 E,
11973 F,
11974 G,
11975 H,
11976 I,
11977 J,
11978 K,
11979 L,
11980 M,
11981 N).
11982occurrence___5__4__3__31([A|B], C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q) :-
11983 ( A=suspension(_, active, _, R),
11984 E<M,
11985 chr_pp_flag(occurrence_subsumption, on),
11986 I=pragma(rule(S, _, _, _), _, _, _, _),
11987 S\==[],
11988 \+ tree_set_memberchk(L, R)
11989 -> setarg(2, A, removed),
11990 arg(3, A, T),
11991 ( var(T)
11992 -> nb_getval('$chr_store_global_ground_chr_translate____multiple_occ_constraints_checked___1',
11993 U),
11994 U=[_|V],
11995 b_setval('$chr_store_global_ground_chr_translate____multiple_occ_constraints_checked___1',
11996 V),
11997 ( V=[W|_]
11998 -> setarg(3, W, _)
11999 ; true
12000 )
12001 ; T=[_, _|V],
12002 setarg(2, T, V),
12003 ( V=[W|_]
12004 -> setarg(3, W, T)
12005 ; true
12006 )
12007 ),
12008 arg(2, Q, X),
12009 setarg(2, Q, active),
12010 ( X==not_stored_yet
12011 -> nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-15',
12012 Y),
12013 insert_ht(Y, k(L, P), Q),
12014 nb_getval('$chr_store_global_ground_chr_translate____occurrence___5',
12015 Z),
12016 A1=[Q|Z],
12017 b_setval('$chr_store_global_ground_chr_translate____occurrence___5',
12018 A1),
12019 ( Z=[B1|_]
12020 -> setarg(4, B1, A1)
12021 ; true
12022 ),
12023 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-125',
12024 C1),
12025 insert_ht(C1, k(L, M, P), Q),
12026 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-134',
12027 D1),
12028 insert_ht(D1, k(L, N, O), Q),
12029 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-12',
12030 E1),
12031 insert_ht(E1, k(L, M), Q),
12032 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-3',
12033 F1),
12034 insert_ht(F1, N, Q),
12035 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-13',
12036 G1),
12037 insert_ht(G1, k(L, N), Q),
12038 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-34',
12039 H1),
12040 insert_ht(H1, k(N, O), Q),
12041 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-1',
12042 I1),
12043 insert_ht(I1, L, Q)
12044 ; true
12045 ),
12046 first_occ_in_rule(N, L, E, F),
12047 tree_set_add(R, L, J1),
12048 multiple_occ_constraints_checked(J1),
12049 ( Q=suspension(_, active, _, _, _, _, _, _, _)
12050 -> setarg(2, Q, inactive),
12051 occurrence___5__4__3__31(B,
12052 C,
12053 D,
12054 E,
12055 F,
12056 G,
12057 H,
12058 I,
12059 J,
12060 K,
12061 L,
12062 M,
12063 N,
12064 O,
12065 P,
12066 Q)
12067 ; true
12068 )
12069 ; occurrence___5__4__3__31(B,
12070 C,
12071 D,
12072 E,
12073 F,
12074 G,
12075 H,
12076 I,
12077 J,
12078 K,
12079 L,
12080 M,
12081 N,
12082 O,
12083 P,
12084 Q)
12085 ).
12086occurrence___5__4(A, B, C, D, E, F) :-
12087 occurrence___5__5(A, B, C, D, E, F).
12088occurrence___5__5(A, B, C, D, E, F) :-
12089 nb_getval('$chr_store_multi_hash_chr_translate____stored___3-123', G),
12090 lookup_ht(G, k(A, B, yes), H),
12091 !,
12092 occurrence___5__5__0__35(H,
12093 A,
12094 B,
12095 C,
12096 D,
12097 E,
12098 F).
12099occurrence___5__5__0__35([], A, B, C, D, E, F) :-
12100 occurrence___5__6(A, B, C, D, E, F).
12101occurrence___5__5__0__35([A|B], C, D, E, F, G, H) :-
12102 ( A=suspension(_, active, I, J, K),
12103 I==C,
12104 J==D,
12105 K=yes,
12106 ( ground(E),
12107 ground(F),
12108 nb_getval('$chr_store_multi_hash_chr_translate____passive___2-12',
12109 L),
12110 lookup_ht(L, k(E, F), M)
12111 ),
12112 member(N, M),
12113 N=suspension(_, active, _, _, _),
12114 ( ground(C),
12115 nb_getval('$chr_store_multi_hash_chr_translate____stored_complete___3-1',
12116 O),
12117 lookup_ht(O, C, P)
12118 ),
12119 member(Q, P),
12120 Q=suspension(_, active, _, _, R, S),
12121 D<R
12122 -> ( setarg(2, A, removed),
12123 nb_getval('$chr_store_multi_hash_chr_translate____stored___3-13',
12124 T),
12125 delete_ht(T, k(C, yes), A),
12126 nb_getval('$chr_store_multi_hash_chr_translate____stored___3-123',
12127 U),
12128 delete_ht(U, k(C, D, yes), A)
12129 ),
12130 setarg(2, Q, removed),
12131 ( nb_getval('$chr_store_multi_hash_chr_translate____stored_complete___3-13',
12132 V),
12133 delete_ht(V, k(C, S), Q)
12134 ),
12135 nb_getval('$chr_store_multi_hash_chr_translate____stored_complete___3-1',
12136 W),
12137 delete_ht(W, C, Q),
12138 arg(2, H, X),
12139 setarg(2, H, active),
12140 ( X==not_stored_yet
12141 -> nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-15',
12142 Y),
12143 insert_ht(Y, k(C, G), H),
12144 nb_getval('$chr_store_global_ground_chr_translate____occurrence___5',
12145 Z),
12146 A1=[H|Z],
12147 b_setval('$chr_store_global_ground_chr_translate____occurrence___5',
12148 A1),
12149 ( Z=[B1|_]
12150 -> setarg(4, B1, A1)
12151 ; true
12152 ),
12153 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-125',
12154 C1),
12155 insert_ht(C1, k(C, D, G), H),
12156 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-134',
12157 D1),
12158 insert_ht(D1, k(C, E, F), H),
12159 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-12',
12160 E1),
12161 insert_ht(E1, k(C, D), H),
12162 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-3',
12163 F1),
12164 insert_ht(F1, E, H),
12165 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-13',
12166 G1),
12167 insert_ht(G1, k(C, E), H),
12168 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-34',
12169 H1),
12170 insert_ht(H1, k(E, F), H),
12171 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-1',
12172 I1),
12173 insert_ht(I1, C, H)
12174 ; true
12175 ),
12176 J1 is S-1,
12177 stored(C, D, maybe),
12178 stored_complete(C, R, J1),
12179 ( H=suspension(_, active, _, _, _, _, _, _, _)
12180 -> setarg(2, H, inactive),
12181 occurrence___5__5__0__35(B,
12182 C,
12183 D,
12184 E,
12185 F,
12186 G,
12187 H)
12188 ; true
12189 )
12190 ; occurrence___5__5__0__35(B,
12191 C,
12192 D,
12193 E,
12194 F,
12195 G,
12196 H)
12197 ).
12198occurrence___5__5(A, B, C, D, E, F) :-
12199 occurrence___5__6(A, B, C, D, E, F).
12200occurrence___5__6(A, B, C, D, E, F) :-
12201 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-3', G),
12202 lookup_ht(G, C, H),
12203 !,
12204 occurrence___5__6__0__36(H,
12205 A,
12206 B,
12207 C,
12208 D,
12209 E,
12210 F).
12211occurrence___5__6__0__36([], A, B, C, D, E, F) :-
12212 occurrence___5__7(A, B, C, D, E, F).
12213occurrence___5__6__0__36([A|B], C, D, E, F, G, H) :-
12214 ( A=suspension(_, active, _, _, I, _, J, _, _),
12215 J==E,
12216 nb_getval('$chr_store_multi_hash_chr_translate____max_occurrence___2-1',
12217 K),
12218 lookup_ht(K, I, L)
12219 -> occurrence___5__6__1__36(L,
12220 I,
12221 A,
12222 B,
12223 C,
12224 D,
12225 E,
12226 F,
12227 G,
12228 H)
12229 ; occurrence___5__6__0__36(B,
12230 C,
12231 D,
12232 E,
12233 F,
12234 G,
12235 H)
12236 ).
12237occurrence___5__6__1__36([], _, _, A, B, C, D, E, F, G) :-
12238 occurrence___5__6__0__36(A,
12239 B,
12240 C,
12241 D,
12242 E,
12243 F,
12244 G).
12245occurrence___5__6__1__36([A|B], C, D, E, F, G, H, I, J, K) :-
12246 ( A=suspension(_, active, _, L, M),
12247 L==C,
12248 nb_getval('$chr_store_multi_hash_chr_translate____stored_complete___3-13',
12249 N),
12250 lookup_ht(N, k(C, 0), O)
12251 -> occurrence___5__6__2__36(O,
12252 M,
12253 A,
12254 B,
12255 C,
12256 D,
12257 E,
12258 F,
12259 G,
12260 H,
12261 I,
12262 J,
12263 K)
12264 ; occurrence___5__6__1__36(B,
12265 C,
12266 D,
12267 E,
12268 F,
12269 G,
12270 H,
12271 I,
12272 J,
12273 K)
12274 ).
12275occurrence___5__6__2__36([], _, _, A, B, C, D, E, F, G, H, I, J) :-
12276 occurrence___5__6__1__36(A,
12277 B,
12278 C,
12279 D,
12280 E,
12281 F,
12282 G,
12283 H,
12284 I,
12285 J).
12286occurrence___5__6__2__36([A|B], C, D, E, F, G, H, I, J, K, L, M, N) :-
12287 ( A=suspension(_, active, _, O, P, Q),
12288 O==F,
12289 Q=0,
12290 R=t(250, N, G, A, D),
12291 '$novel_production'(N, R),
12292 '$novel_production'(G, R),
12293 '$novel_production'(A, R),
12294 '$novel_production'(D, R),
12295 P=<C
12296 -> '$extend_history'(N, R),
12297 arg(2, N, S),
12298 setarg(2, N, active),
12299 ( S==not_stored_yet
12300 -> nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-15',
12301 T),
12302 insert_ht(T, k(I, M), N),
12303 nb_getval('$chr_store_global_ground_chr_translate____occurrence___5',
12304 U),
12305 V=[N|U],
12306 b_setval('$chr_store_global_ground_chr_translate____occurrence___5',
12307 V),
12308 ( U=[W|_]
12309 -> setarg(4, W, V)
12310 ; true
12311 ),
12312 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-125',
12313 X),
12314 insert_ht(X, k(I, J, M), N),
12315 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-134',
12316 Y),
12317 insert_ht(Y, k(I, K, L), N),
12318 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-12',
12319 Z),
12320 insert_ht(Z, k(I, J), N),
12321 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-3',
12322 A1),
12323 insert_ht(A1, K, N),
12324 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-13',
12325 B1),
12326 insert_ht(B1, k(I, K), N),
12327 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-34',
12328 C1),
12329 insert_ht(C1, k(K, L), N),
12330 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-1',
12331 D1),
12332 insert_ht(D1, I, N)
12333 ; true
12334 ),
12335 passive(K, L),
12336 ( N=suspension(_, active, _, _, _, _, _, _, _)
12337 -> setarg(2, N, inactive),
12338 occurrence___5__6__2__36(B,
12339 C,
12340 D,
12341 E,
12342 F,
12343 G,
12344 H,
12345 I,
12346 J,
12347 K,
12348 L,
12349 M,
12350 N)
12351 ; true
12352 )
12353 ; occurrence___5__6__2__36(B,
12354 C,
12355 D,
12356 E,
12357 F,
12358 G,
12359 H,
12360 I,
12361 J,
12362 K,
12363 L,
12364 M,
12365 N)
12366 ).
12367occurrence___5__6(A, B, C, D, E, F) :-
12368 occurrence___5__7(A, B, C, D, E, F).
12369occurrence___5__7(A, B, C, D, E, F) :-
12370 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-3', G),
12371 lookup_ht(G, C, H),
12372 !,
12373 occurrence___5__7__0__37(H,
12374 A,
12375 B,
12376 C,
12377 D,
12378 E,
12379 F).
12380occurrence___5__7__0__37([], A, B, C, D, E, F) :-
12381 occurrence___5__8(A, B, C, D, E, F).
12382occurrence___5__7__0__37([A|B], C, D, E, F, G, H) :-
12383 ( A=suspension(_, active, _, _, _, _, I, J, _),
12384 I==E,
12385 nb_getval('$chr_store_multi_hash_chr_translate____max_occurrence___2-1',
12386 K),
12387 lookup_ht(K, C, L)
12388 -> occurrence___5__7__1__37(L,
12389 J,
12390 A,
12391 B,
12392 C,
12393 D,
12394 E,
12395 F,
12396 G,
12397 H)
12398 ; occurrence___5__7__0__37(B,
12399 C,
12400 D,
12401 E,
12402 F,
12403 G,
12404 H)
12405 ).
12406occurrence___5__7__1__37([], _, _, A, B, C, D, E, F, G) :-
12407 occurrence___5__7__0__37(A,
12408 B,
12409 C,
12410 D,
12411 E,
12412 F,
12413 G).
12414occurrence___5__7__1__37([A|B], C, D, E, F, G, H, I, J, K) :-
12415 ( A=suspension(_, active, _, L, M),
12416 L==F,
12417 nb_getval('$chr_store_multi_hash_chr_translate____stored_complete___3-13',
12418 N),
12419 lookup_ht(N, k(F, 0), O)
12420 -> occurrence___5__7__2__37(O,
12421 M,
12422 A,
12423 B,
12424 C,
12425 D,
12426 E,
12427 F,
12428 G,
12429 H,
12430 I,
12431 J,
12432 K)
12433 ; occurrence___5__7__1__37(B,
12434 C,
12435 D,
12436 E,
12437 F,
12438 G,
12439 H,
12440 I,
12441 J,
12442 K)
12443 ).
12444occurrence___5__7__2__37([], _, _, A, B, C, D, E, F, G, H, I, J) :-
12445 occurrence___5__7__1__37(A,
12446 B,
12447 C,
12448 D,
12449 E,
12450 F,
12451 G,
12452 H,
12453 I,
12454 J).
12455occurrence___5__7__2__37([A|B], C, D, E, F, G, H, I, J, K, L, M, N) :-
12456 ( A=suspension(_, active, _, O, P, Q),
12457 O==I,
12458 Q=0,
12459 R=t(250, G, N, A, D),
12460 '$novel_production'(G, R),
12461 '$novel_production'(N, R),
12462 '$novel_production'(A, R),
12463 '$novel_production'(D, R),
12464 P=<C
12465 -> '$extend_history'(N, R),
12466 arg(2, N, S),
12467 setarg(2, N, active),
12468 ( S==not_stored_yet
12469 -> nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-15',
12470 T),
12471 insert_ht(T, k(I, M), N),
12472 nb_getval('$chr_store_global_ground_chr_translate____occurrence___5',
12473 U),
12474 V=[N|U],
12475 b_setval('$chr_store_global_ground_chr_translate____occurrence___5',
12476 V),
12477 ( U=[W|_]
12478 -> setarg(4, W, V)
12479 ; true
12480 ),
12481 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-125',
12482 X),
12483 insert_ht(X, k(I, J, M), N),
12484 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-134',
12485 Y),
12486 insert_ht(Y, k(I, K, L), N),
12487 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-12',
12488 Z),
12489 insert_ht(Z, k(I, J), N),
12490 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-3',
12491 A1),
12492 insert_ht(A1, K, N),
12493 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-13',
12494 B1),
12495 insert_ht(B1, k(I, K), N),
12496 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-34',
12497 C1),
12498 insert_ht(C1, k(K, L), N),
12499 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-1',
12500 D1),
12501 insert_ht(D1, I, N)
12502 ; true
12503 ),
12504 passive(K, F),
12505 ( N=suspension(_, active, _, _, _, _, _, _, _)
12506 -> setarg(2, N, inactive),
12507 occurrence___5__7__2__37(B,
12508 C,
12509 D,
12510 E,
12511 F,
12512 G,
12513 H,
12514 I,
12515 J,
12516 K,
12517 L,
12518 M,
12519 N)
12520 ; true
12521 )
12522 ; occurrence___5__7__2__37(B,
12523 C,
12524 D,
12525 E,
12526 F,
12527 G,
12528 H,
12529 I,
12530 J,
12531 K,
12532 L,
12533 M,
12534 N)
12535 ).
12536occurrence___5__7(A, B, C, D, E, F) :-
12537 occurrence___5__8(A, B, C, D, E, F).
12538occurrence___5__8(A, B, C, D, E, F) :-
12539 nb_getval('$chr_store_multi_hash_chr_translate____stored_complete___3-1',
12540 G),
12541 lookup_ht(G, A, H),
12542 !,
12543 occurrence___5__8__0__38(H,
12544 A,
12545 B,
12546 C,
12547 D,
12548 E,
12549 F).
12550occurrence___5__8__0__38([], A, B, C, D, E, F) :-
12551 occurrence___5__9(A, B, C, D, E, F).
12552occurrence___5__8__0__38([A|B], C, D, E, F, G, H) :-
12553 ( A=suspension(_, active, _, I, J, _),
12554 I==C,
12555 K=t(259, A, H),
12556 '$novel_production'(A, K),
12557 '$novel_production'(H, K),
12558 D>J
12559 -> '$extend_history'(H, K),
12560 arg(2, H, L),
12561 setarg(2, H, active),
12562 ( L==not_stored_yet
12563 -> nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-15',
12564 M),
12565 insert_ht(M, k(C, G), H),
12566 nb_getval('$chr_store_global_ground_chr_translate____occurrence___5',
12567 N),
12568 O=[H|N],
12569 b_setval('$chr_store_global_ground_chr_translate____occurrence___5',
12570 O),
12571 ( N=[P|_]
12572 -> setarg(4, P, O)
12573 ; true
12574 ),
12575 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-125',
12576 Q),
12577 insert_ht(Q, k(C, D, G), H),
12578 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-134',
12579 R),
12580 insert_ht(R, k(C, E, F), H),
12581 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-12',
12582 S),
12583 insert_ht(S, k(C, D), H),
12584 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-3',
12585 T),
12586 insert_ht(T, E, H),
12587 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-13',
12588 U),
12589 insert_ht(U, k(C, E), H),
12590 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-34',
12591 V),
12592 insert_ht(V, k(E, F), H),
12593 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-1',
12594 W),
12595 insert_ht(W, C, H)
12596 ; true
12597 ),
12598 passive(E, F),
12599 ( H=suspension(_, active, _, _, _, _, _, _, _)
12600 -> setarg(2, H, inactive),
12601 occurrence___5__8__0__38(B,
12602 C,
12603 D,
12604 E,
12605 F,
12606 G,
12607 H)
12608 ; true
12609 )
12610 ; occurrence___5__8__0__38(B,
12611 C,
12612 D,
12613 E,
12614 F,
12615 G,
12616 H)
12617 ).
12618occurrence___5__8(A, B, C, D, E, F) :-
12619 occurrence___5__9(A, B, C, D, E, F).
12620occurrence___5__9(A, B, C, D, E, F) :-
12621 nb_getval('$chr_store_multi_hash_chr_translate____functional_dependency___4-12',
12622 G),
12623 lookup_ht(G, k(A, C), H),
12624 !,
12625 occurrence___5__9__0__42(H,
12626 A,
12627 B,
12628 C,
12629 D,
12630 E,
12631 F).
12632occurrence___5__9__0__42([], A, B, C, D, E, F) :-
12633 occurrence___5__10(A, B, C, D, E, F).
12634occurrence___5__9__0__42([A|B], C, D, E, F, G, H) :-
12635 ( A=suspension(_, active, I, J, K, L),
12636 I==C,
12637 J==E,
12638 E>1,
12639 ( ground(C),
12640 nb_getval('$chr_store_multi_hash_chr_translate____allocation_occurrence___2-1',
12641 M),
12642 lookup_ht(M, C, N)
12643 ),
12644 member(O, N),
12645 O=suspension(_, active, _, _, P),
12646 P>D
12647 -> setarg(2, A, removed),
12648 ( nb_getval('$chr_store_multi_hash_chr_translate____functional_dependency___4-1',
12649 Q),
12650 delete_ht(Q, C, A)
12651 ),
12652 nb_getval('$chr_store_multi_hash_chr_translate____functional_dependency___4-12',
12653 R),
12654 delete_ht(R, k(C, E), A),
12655 arg(2, H, S),
12656 setarg(2, H, active),
12657 ( S==not_stored_yet
12658 -> nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-15',
12659 T),
12660 insert_ht(T, k(C, G), H),
12661 nb_getval('$chr_store_global_ground_chr_translate____occurrence___5',
12662 U),
12663 V=[H|U],
12664 b_setval('$chr_store_global_ground_chr_translate____occurrence___5',
12665 V),
12666 ( U=[W|_]
12667 -> setarg(4, W, V)
12668 ; true
12669 ),
12670 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-125',
12671 X),
12672 insert_ht(X, k(C, D, G), H),
12673 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-134',
12674 Y),
12675 insert_ht(Y, k(C, E, F), H),
12676 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-12',
12677 Z),
12678 insert_ht(Z, k(C, D), H),
12679 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-3',
12680 A1),
12681 insert_ht(A1, E, H),
12682 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-13',
12683 B1),
12684 insert_ht(B1, k(C, E), H),
12685 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-34',
12686 C1),
12687 insert_ht(C1, k(E, F), H),
12688 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-1',
12689 D1),
12690 insert_ht(D1, C, H)
12691 ; true
12692 ),
12693 functional_dependency(C, 1, K, L),
12694 ( H=suspension(_, active, _, _, _, _, _, _, _)
12695 -> setarg(2, H, inactive),
12696 occurrence___5__9__0__42(B,
12697 C,
12698 D,
12699 E,
12700 F,
12701 G,
12702 H)
12703 ; true
12704 )
12705 ; occurrence___5__9__0__42(B,
12706 C,
12707 D,
12708 E,
12709 F,
12710 G,
12711 H)
12712 ).
12713occurrence___5__9(A, B, C, D, E, F) :-
12714 occurrence___5__10(A, B, C, D, E, F).
12715occurrence___5__10(A, B, C, D, E, F) :-
12716 nb_getval('$chr_store_multi_hash_chr_translate____constraint_mode___2-1',
12717 G),
12718 lookup_ht(G, A, H),
12719 !,
12720 occurrence___5__10__0__48(H,
12721 A,
12722 B,
12723 C,
12724 D,
12725 E,
12726 F).
12727occurrence___5__10__0__48([], A, B, C, D, E, F) :-
12728 occurrence___5__11(A, B, C, D, E, F).
12729occurrence___5__10__0__48([A|B], C, D, E, F, G, H) :-
12730 ( A=suspension(_, active, _, _, I, J),
12731 I==C,
12732 nb_getval('$chr_store_global_ground_chr_translate____partial_wake_analysis___0',
12733 K)
12734 -> occurrence___5__10__1__48(K,
12735 J,
12736 A,
12737 B,
12738 C,
12739 D,
12740 E,
12741 F,
12742 G,
12743 H)
12744 ; occurrence___5__10__0__48(B,
12745 C,
12746 D,
12747 E,
12748 F,
12749 G,
12750 H)
12751 ).
12752occurrence___5__10__1__48([], _, _, A, B, C, D, E, F, G) :-
12753 occurrence___5__10__0__48(A,
12754 B,
12755 C,
12756 D,
12757 E,
12758 F,
12759 G).
12760occurrence___5__10__1__48([A|B], C, D, E, F, G, H, I, J, K) :-
12761 ( A=suspension(_, active, _, _),
12762 nb_getval('$chr_store_multi_hash_chr_translate____rule___2-1', L),
12763 lookup_ht(L, H, M)
12764 -> occurrence___5__10__2__48(M,
12765 A,
12766 B,
12767 C,
12768 D,
12769 E,
12770 F,
12771 G,
12772 H,
12773 I,
12774 J,
12775 K)
12776 ; occurrence___5__10__1__48(B,
12777 C,
12778 D,
12779 E,
12780 F,
12781 G,
12782 H,
12783 I,
12784 J,
12785 K)
12786 ).
12787occurrence___5__10__2__48([], _, A, B, C, D, E, F, G, H, I, J) :-
12788 occurrence___5__10__1__48(A,
12789 B,
12790 C,
12791 D,
12792 E,
12793 F,
12794 G,
12795 H,
12796 I,
12797 J).
12798occurrence___5__10__2__48([A|B], C, D, E, F, G, H, I, J, K, L, M) :-
12799 ( A=suspension(_, active, _, _, N, O),
12800 N==J,
12801 P=t(330, C, M, A, F),
12802 '$novel_production'(C, P),
12803 '$novel_production'(M, P),
12804 '$novel_production'(A, P),
12805 '$novel_production'(F, P)
12806 -> '$extend_history'(M, P),
12807 arg(2, M, Q),
12808 setarg(2, M, active),
12809 ( Q==not_stored_yet
12810 -> nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-15',
12811 R),
12812 insert_ht(R, k(H, L), M),
12813 nb_getval('$chr_store_global_ground_chr_translate____occurrence___5',
12814 S),
12815 T=[M|S],
12816 b_setval('$chr_store_global_ground_chr_translate____occurrence___5',
12817 T),
12818 ( S=[U|_]
12819 -> setarg(4, U, T)
12820 ; true
12821 ),
12822 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-125',
12823 V),
12824 insert_ht(V, k(H, I, L), M),
12825 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-134',
12826 W),
12827 insert_ht(W, k(H, J, K), M),
12828 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-12',
12829 X),
12830 insert_ht(X, k(H, I), M),
12831 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-3',
12832 Y),
12833 insert_ht(Y, J, M),
12834 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-13',
12835 Z),
12836 insert_ht(Z, k(H, J), M),
12837 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-34',
12838 A1),
12839 insert_ht(A1, k(J, K), M),
12840 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-1',
12841 B1),
12842 insert_ht(B1, H, M)
12843 ; true
12844 ),
12845 O=pragma(rule(C1, D1, E1, _), _, _, _, _),
12846 ( is_passive(J, K)
12847 -> true
12848 ; L==simplification
12849 -> select(F1, C1, _),
12850 F1=..[_|G1],
12851 term_variables(E1, H1),
12852 partial_wake_args(G1, E, H1, H)
12853 ; select(F1, D1, _),
12854 F1=..[_|G1],
12855 term_variables(E1, H1),
12856 partial_wake_args(G1, E, H1, H)
12857 ),
12858 ( M=suspension(_, active, _, _, _, _, _, _, _)
12859 -> setarg(2, M, inactive),
12860 occurrence___5__10__2__48(B,
12861 C,
12862 D,
12863 E,
12864 F,
12865 G,
12866 H,
12867 I,
12868 J,
12869 K,
12870 L,
12871 M)
12872 ; true
12873 )
12874 ; occurrence___5__10__2__48(B,
12875 C,
12876 D,
12877 E,
12878 F,
12879 G,
12880 H,
12881 I,
12882 J,
12883 K,
12884 L,
12885 M)
12886 ).
12887occurrence___5__10(A, B, C, D, E, F) :-
12888 occurrence___5__11(A, B, C, D, E, F).
12889occurrence___5__11(A, B, C, D, E, F) :-
12890 nb_getval('$chr_store_multi_hash_chr_translate____passive___2-12', G),
12891 lookup_ht(G, k(C, D), H),
12892 !,
12893 occurrence___5__11__0__50(H,
12894 A,
12895 B,
12896 C,
12897 D,
12898 E,
12899 F).
12900occurrence___5__11__0__50([], A, B, C, D, E, F) :-
12901 occurrence___5__12(A, B, C, D, E, F).
12902occurrence___5__11__0__50([A|B], C, D, E, F, G, H) :-
12903 ( A=suspension(_, active, _, I, J),
12904 I==E,
12905 J==F,
12906 nb_getval('$chr_store_multi_hash_chr_translate____skip_to_next_id___2-12',
12907 K),
12908 lookup_ht(K, k(C, D), L)
12909 -> occurrence___5__11__1__50(L,
12910 A,
12911 B,
12912 C,
12913 D,
12914 E,
12915 F,
12916 G,
12917 H)
12918 ; occurrence___5__11__0__50(B,
12919 C,
12920 D,
12921 E,
12922 F,
12923 G,
12924 H)
12925 ).
12926occurrence___5__11__1__50([], _, A, B, C, D, E, F, G) :-
12927 occurrence___5__11__0__50(A,
12928 B,
12929 C,
12930 D,
12931 E,
12932 F,
12933 G).
12934occurrence___5__11__1__50([A|B], C, D, E, F, G, H, I, J) :-
12935 ( A=suspension(_, active, _, K, L),
12936 K==E,
12937 L==F,
12938 M=t(362, J, C, A),
12939 '$novel_production'(J, M),
12940 '$novel_production'(C, M),
12941 '$novel_production'(A, M),
12942 F>1
12943 -> '$extend_history'(J, M),
12944 arg(2, J, N),
12945 setarg(2, J, active),
12946 ( N==not_stored_yet
12947 -> nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-15',
12948 O),
12949 insert_ht(O, k(E, I), J),
12950 nb_getval('$chr_store_global_ground_chr_translate____occurrence___5',
12951 P),
12952 Q=[J|P],
12953 b_setval('$chr_store_global_ground_chr_translate____occurrence___5',
12954 Q),
12955 ( P=[R|_]
12956 -> setarg(4, R, Q)
12957 ; true
12958 ),
12959 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-125',
12960 S),
12961 insert_ht(S, k(E, F, I), J),
12962 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-134',
12963 T),
12964 insert_ht(T, k(E, G, H), J),
12965 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-12',
12966 U),
12967 insert_ht(U, k(E, F), J),
12968 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-3',
12969 V),
12970 insert_ht(V, G, J),
12971 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-13',
12972 W),
12973 insert_ht(W, k(E, G), J),
12974 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-34',
12975 X),
12976 insert_ht(X, k(G, H), J),
12977 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-1',
12978 Y),
12979 insert_ht(Y, E, J)
12980 ; true
12981 ),
12982 Z is F-1,
12983 skip_to_next_id(E, Z),
12984 ( J=suspension(_, active, _, _, _, _, _, _, _)
12985 -> setarg(2, J, inactive),
12986 occurrence___5__11__1__50(B,
12987 C,
12988 D,
12989 E,
12990 F,
12991 G,
12992 H,
12993 I,
12994 J)
12995 ; true
12996 )
12997 ; occurrence___5__11__1__50(B,
12998 C,
12999 D,
13000 E,
13001 F,
13002 G,
13003 H,
13004 I,
13005 J)
13006 ).
13007occurrence___5__11(A, B, C, D, E, F) :-
13008 occurrence___5__12(A, B, C, D, E, F).
13009occurrence___5__12(A, B, C, D, E, F) :-
13010 nb_getval('$chr_store_multi_hash_chr_translate____set_occurrence_code_id___3-12',
13011 G),
13012 lookup_ht(G, k(A, B), H),
13013 !,
13014 occurrence___5__12__0__51(H,
13015 A,
13016 B,
13017 C,
13018 D,
13019 E,
13020 F).
13021occurrence___5__12__0__51([], A, B, C, D, E, F) :-
13022 occurrence___5__13(A, B, C, D, E, F).
13023occurrence___5__12__0__51([A|B], C, D, E, F, G, H) :-
13024 ( A=suspension(_, active, I, J, K),
13025 I==C,
13026 J==D,
13027 ( ground(E),
13028 ground(F)
13029 ),
13030 nb_getval('$chr_store_multi_hash_chr_translate____passive___2-12',
13031 L),
13032 lookup_ht(L, k(E, F), M),
13033 member(N, M),
13034 N=suspension(_, active, _, _, _)
13035 -> setarg(2, A, removed),
13036 nb_getval('$chr_store_multi_hash_chr_translate____set_occurrence_code_id___3-12',
13037 O),
13038 delete_ht(O, k(C, D), A),
13039 arg(2, H, P),
13040 setarg(2, H, active),
13041 ( P==not_stored_yet
13042 -> nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-15',
13043 Q),
13044 insert_ht(Q, k(C, G), H),
13045 nb_getval('$chr_store_global_ground_chr_translate____occurrence___5',
13046 R),
13047 S=[H|R],
13048 b_setval('$chr_store_global_ground_chr_translate____occurrence___5',
13049 S),
13050 ( R=[T|_]
13051 -> setarg(4, T, S)
13052 ; true
13053 ),
13054 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-125',
13055 U),
13056 insert_ht(U, k(C, D, G), H),
13057 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-134',
13058 V),
13059 insert_ht(V, k(C, E, F), H),
13060 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-12',
13061 W),
13062 insert_ht(W, k(C, D), H),
13063 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-3',
13064 X),
13065 insert_ht(X, E, H),
13066 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-13',
13067 Y),
13068 insert_ht(Y, k(C, E), H),
13069 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-34',
13070 Z),
13071 insert_ht(Z, k(E, F), H),
13072 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-1',
13073 A1),
13074 insert_ht(A1, C, H)
13075 ; true
13076 ),
13077 occurrence_code_id(C, D, K),
13078 B1 is D+1,
13079 set_occurrence_code_id(C, B1, K),
13080 ( H=suspension(_, active, _, _, _, _, _, _, _)
13081 -> setarg(2, H, inactive),
13082 occurrence___5__12__0__51(B,
13083 C,
13084 D,
13085 E,
13086 F,
13087 G,
13088 H)
13089 ; true
13090 )
13091 ; occurrence___5__12__0__51(B,
13092 C,
13093 D,
13094 E,
13095 F,
13096 G,
13097 H)
13098 ).
13099occurrence___5__12(A, B, C, D, E, F) :-
13100 occurrence___5__13(A, B, C, D, E, F).
13101occurrence___5__13(A, B, C, D, simplification, E) :-
13102 nb_getval('$chr_store_multi_hash_chr_translate____set_occurrence_code_id___3-12',
13103 F),
13104 lookup_ht(F, k(A, B), G),
13105 !,
13106 occurrence___5__13__0__52(G,
13107 A,
13108 B,
13109 C,
13110 D,
13111 simplification,
13112 E).
13113occurrence___5__13__0__52([], A, B, C, D, E, F) :-
13114 occurrence___5__15(A, B, C, D, E, F).
13115occurrence___5__13__0__52([A|B], C, D, E, F, G, H) :-
13116 ( A=suspension(_, active, I, J, K),
13117 I==C,
13118 J==D
13119 -> setarg(2, A, removed),
13120 nb_getval('$chr_store_multi_hash_chr_translate____set_occurrence_code_id___3-12',
13121 L),
13122 delete_ht(L, k(C, D), A),
13123 arg(2, H, M),
13124 setarg(2, H, active),
13125 ( M==not_stored_yet
13126 -> nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-15',
13127 N),
13128 insert_ht(N, k(C, G), H),
13129 nb_getval('$chr_store_global_ground_chr_translate____occurrence___5',
13130 O),
13131 P=[H|O],
13132 b_setval('$chr_store_global_ground_chr_translate____occurrence___5',
13133 P),
13134 ( O=[Q|_]
13135 -> setarg(4, Q, P)
13136 ; true
13137 ),
13138 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-125',
13139 R),
13140 insert_ht(R, k(C, D, G), H),
13141 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-134',
13142 S),
13143 insert_ht(S, k(C, E, F), H),
13144 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-12',
13145 T),
13146 insert_ht(T, k(C, D), H),
13147 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-3',
13148 U),
13149 insert_ht(U, E, H),
13150 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-13',
13151 V),
13152 insert_ht(V, k(C, E), H),
13153 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-34',
13154 W),
13155 insert_ht(W, k(E, F), H),
13156 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-1',
13157 X),
13158 insert_ht(X, C, H)
13159 ; true
13160 ),
13161 occurrence_code_id(C, D, K),
13162 Y is D+1,
13163 set_occurrence_code_id(C, Y, K),
13164 ( H=suspension(_, active, _, _, _, _, _, _, _)
13165 -> setarg(2, H, inactive),
13166 occurrence___5__13__0__52(B,
13167 C,
13168 D,
13169 E,
13170 F,
13171 G,
13172 H)
13173 ; true
13174 )
13175 ; occurrence___5__13__0__52(B,
13176 C,
13177 D,
13178 E,
13179 F,
13180 G,
13181 H)
13182 ).
13183occurrence___5__13(A, B, C, D, propagation, E) :-
13184 nb_getval('$chr_store_multi_hash_chr_translate____set_occurrence_code_id___3-12',
13185 F),
13186 lookup_ht(F, k(A, B), G),
13187 !,
13188 occurrence___5__13__0__53(G,
13189 A,
13190 B,
13191 C,
13192 D,
13193 propagation,
13194 E).
13195occurrence___5__13__0__53([], A, B, C, D, E, F) :-
13196 occurrence___5__14(A, B, C, D, E, F).
13197occurrence___5__13__0__53([A|B], C, D, E, F, G, H) :-
13198 ( A=suspension(_, active, I, J, K),
13199 I==C,
13200 J==D,
13201 ( ground(C),
13202 ground(D)
13203 ),
13204 nb_getval('$chr_store_multi_hash_chr_translate____skip_to_next_id___2-12',
13205 L),
13206 lookup_ht(L, k(C, D), M),
13207 member(N, M),
13208 N=suspension(_, active, _, _, _)
13209 -> setarg(2, A, removed),
13210 nb_getval('$chr_store_multi_hash_chr_translate____set_occurrence_code_id___3-12',
13211 O),
13212 delete_ht(O, k(C, D), A),
13213 arg(2, H, P),
13214 setarg(2, H, active),
13215 ( P==not_stored_yet
13216 -> nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-15',
13217 Q),
13218 insert_ht(Q, k(C, G), H),
13219 nb_getval('$chr_store_global_ground_chr_translate____occurrence___5',
13220 R),
13221 S=[H|R],
13222 b_setval('$chr_store_global_ground_chr_translate____occurrence___5',
13223 S),
13224 ( R=[T|_]
13225 -> setarg(4, T, S)
13226 ; true
13227 ),
13228 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-125',
13229 U),
13230 insert_ht(U, k(C, D, G), H),
13231 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-134',
13232 V),
13233 insert_ht(V, k(C, E, F), H),
13234 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-12',
13235 W),
13236 insert_ht(W, k(C, D), H),
13237 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-3',
13238 X),
13239 insert_ht(X, E, H),
13240 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-13',
13241 Y),
13242 insert_ht(Y, k(C, E), H),
13243 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-34',
13244 Z),
13245 insert_ht(Z, k(E, F), H),
13246 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-1',
13247 A1),
13248 insert_ht(A1, C, H)
13249 ; true
13250 ),
13251 occurrence_code_id(C, D, K),
13252 B1 is D+1,
13253 C1 is K+1,
13254 set_occurrence_code_id(C, B1, C1),
13255 ( H=suspension(_, active, _, _, _, _, _, _, _)
13256 -> setarg(2, H, inactive),
13257 occurrence___5__13__0__53(B,
13258 C,
13259 D,
13260 E,
13261 F,
13262 G,
13263 H)
13264 ; true
13265 )
13266 ; occurrence___5__13__0__53(B,
13267 C,
13268 D,
13269 E,
13270 F,
13271 G,
13272 H)
13273 ).
13274occurrence___5__13(A, B, C, D, E, F) :-
13275 occurrence___5__14(A, B, C, D, E, F).
13276occurrence___5__14(A, B, C, D, propagation, E) :-
13277 nb_getval('$chr_store_multi_hash_chr_translate____set_occurrence_code_id___3-12',
13278 F),
13279 lookup_ht(F, k(A, B), G),
13280 !,
13281 occurrence___5__14__0__54(G,
13282 A,
13283 B,
13284 C,
13285 D,
13286 propagation,
13287 E).
13288occurrence___5__14__0__54([], A, B, C, D, E, F) :-
13289 occurrence___5__15(A, B, C, D, E, F).
13290occurrence___5__14__0__54([A|B], C, D, E, F, G, H) :-
13291 ( A=suspension(_, active, I, J, K),
13292 I==C,
13293 J==D
13294 -> setarg(2, A, removed),
13295 nb_getval('$chr_store_multi_hash_chr_translate____set_occurrence_code_id___3-12',
13296 L),
13297 delete_ht(L, k(C, D), A),
13298 arg(2, H, M),
13299 setarg(2, H, active),
13300 ( M==not_stored_yet
13301 -> nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-15',
13302 N),
13303 insert_ht(N, k(C, G), H),
13304 nb_getval('$chr_store_global_ground_chr_translate____occurrence___5',
13305 O),
13306 P=[H|O],
13307 b_setval('$chr_store_global_ground_chr_translate____occurrence___5',
13308 P),
13309 ( O=[Q|_]
13310 -> setarg(4, Q, P)
13311 ; true
13312 ),
13313 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-125',
13314 R),
13315 insert_ht(R, k(C, D, G), H),
13316 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-134',
13317 S),
13318 insert_ht(S, k(C, E, F), H),
13319 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-12',
13320 T),
13321 insert_ht(T, k(C, D), H),
13322 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-3',
13323 U),
13324 insert_ht(U, E, H),
13325 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-13',
13326 V),
13327 insert_ht(V, k(C, E), H),
13328 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-34',
13329 W),
13330 insert_ht(W, k(E, F), H),
13331 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-1',
13332 X),
13333 insert_ht(X, C, H)
13334 ; true
13335 ),
13336 occurrence_code_id(C, D, K),
13337 Y is D+1,
13338 set_occurrence_code_id(C, Y, K),
13339 ( H=suspension(_, active, _, _, _, _, _, _, _)
13340 -> setarg(2, H, inactive),
13341 occurrence___5__14__0__54(B,
13342 C,
13343 D,
13344 E,
13345 F,
13346 G,
13347 H)
13348 ; true
13349 )
13350 ; occurrence___5__14__0__54(B,
13351 C,
13352 D,
13353 E,
13354 F,
13355 G,
13356 H)
13357 ).
13358occurrence___5__14(A, B, C, D, E, F) :-
13359 occurrence___5__15(A, B, C, D, E, F).
13360occurrence___5__15(A, B, C, D, E, F) :-
13361 arg(2, F, G),
13362 setarg(2, F, active),
13363 ( G==not_stored_yet
13364 -> nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-15',
13365 H),
13366 insert_ht(H, k(A, E), F),
13367 nb_getval('$chr_store_global_ground_chr_translate____occurrence___5',
13368 I),
13369 J=[F|I],
13370 b_setval('$chr_store_global_ground_chr_translate____occurrence___5',
13371 J),
13372 ( I=[K|_]
13373 -> setarg(4, K, J)
13374 ; true
13375 ),
13376 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-125',
13377 L),
13378 insert_ht(L, k(A, B, E), F),
13379 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-134',
13380 M),
13381 insert_ht(M, k(A, C, D), F),
13382 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-12',
13383 N),
13384 insert_ht(N, k(A, B), F),
13385 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-3',
13386 O),
13387 insert_ht(O, C, F),
13388 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-13',
13389 P),
13390 insert_ht(P, k(A, C), F),
13391 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-34',
13392 Q),
13393 insert_ht(Q, k(C, D), F),
13394 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-1',
13395 R),
13396 insert_ht(R, A, F)
13397 ; true
13398 ).
13399get_occurrence(A, B, C, D) :-
13400 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-12',
13401 E),
13402 lookup_ht(E, k(A, B), F),
13403 member(G, F),
13404 G=suspension(_, active, _, _, _, _, H, I, _),
13405 !,
13406 H=C,
13407 I=D.
13408get_occurrence(A, B, _, _) :-
13409 chr_error(internal,
13410 'get_occurrence: missing occurrence ~w:~w\n',
13411 [A, B]).
13412get_occurrence(A, B, C, D, E) :-
13413 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-12',
13414 F),
13415 lookup_ht(F, k(A, B), G),
13416 member(H, G),
13417 H=suspension(_, active, _, _, _, _, I, J, K),
13418 !,
13419 I=C,
13420 J=D,
13421 K=E.
13422get_occurrence(A, B, _, _, _) :-
13423 chr_error(internal,
13424 'get_occurrence: missing occurrence ~w:~w\n',
13425 [A, B]).
13426get_occurrence_from_id(A, B, C, D) :-
13427 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-34',
13428 E),
13429 lookup_ht(E, k(C, D), F),
13430 member(G, F),
13431 G=suspension(_, active, _, _, H, I, _, _, _),
13432 !,
13433 A=H,
13434 B=I.
13435get_occurrence_from_id(_, _, _, _) :-
13436 chr_error(internal, 'get_occurrence_from_id: missing occurrence ~w:~w\n', []).
13437max_occurrence(A, B) :-
13438 max_occurrence___2__0(A, B, _).
13439max_occurrence___2__0(A, B, C) :-
13440 nb_getval('$chr_store_multi_hash_chr_translate____max_occurrence___2-1',
13441 D),
13442 lookup_ht(D, A, E),
13443 ( member(F, E),
13444 F=suspension(_, active, _, _, G),
13445 G>=B,
13446 !
13447 ; !,
13448 max_occurrence___2__0__0__2(E, A, B, C)
13449 ).
13450max_occurrence___2__0__0__2([], A, B, C) :-
13451 max_occurrence___2__1(A, B, C).
13452max_occurrence___2__0__0__2([A|B], C, D, E) :-
13453 ( A=suspension(_, active, _, F, G),
13454 F==C,
13455 D>=G
13456 -> setarg(2, A, removed),
13457 nb_getval('$chr_store_multi_hash_chr_translate____max_occurrence___2-1',
13458 H),
13459 delete_ht(H, C, A),
13460 max_occurrence___2__0__0__2(B, C, D, E)
13461 ; max_occurrence___2__0__0__2(B, C, D, E)
13462 ).
13463max_occurrence___2__0(A, B, C) :-
13464 max_occurrence___2__1(A, B, C).
13465max_occurrence___2__1(A, B, C) :-
13466 nb_getval('$chr_store_multi_hash_chr_translate____stored_complete___3-13',
13467 D),
13468 lookup_ht(D, k(A, 0), E),
13469 !,
13470 C=suspension(F, not_stored_yet, t, A, B),
13471 'chr gen_id'(F),
13472 max_occurrence___2__1__0__5(E, A, B, C).
13473max_occurrence___2__1__0__5([], A, B, C) :-
13474 max_occurrence___2__2(A, B, C).
13475max_occurrence___2__1__0__5([A|B], C, D, E) :-
13476 ( A=suspension(_, active, _, F, G, H),
13477 F==C,
13478 H=0,
13479 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-1',
13480 I),
13481 lookup_ht(I, C, J)
13482 -> max_occurrence___2__1__1__5(J,
13483 G,
13484 A,
13485 B,
13486 C,
13487 D,
13488 E)
13489 ; max_occurrence___2__1__0__5(B, C, D, E)
13490 ).
13491max_occurrence___2__1__1__5([], _, _, A, B, C, D) :-
13492 max_occurrence___2__1__0__5(A, B, C, D).
13493max_occurrence___2__1__1__5([A|B], C, D, E, F, G, H) :-
13494 ( A=suspension(_, active, _, _, I, _, J, _, _),
13495 I==F,
13496 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-3',
13497 K),
13498 lookup_ht(K, J, L)
13499 -> max_occurrence___2__1__2__5(L,
13500 J,
13501 A,
13502 B,
13503 C,
13504 D,
13505 E,
13506 F,
13507 G,
13508 H)
13509 ; max_occurrence___2__1__1__5(B,
13510 C,
13511 D,
13512 E,
13513 F,
13514 G,
13515 H)
13516 ).
13517max_occurrence___2__1__2__5([], _, _, A, B, C, D, E, F, G) :-
13518 max_occurrence___2__1__1__5(A,
13519 B,
13520 C,
13521 D,
13522 E,
13523 F,
13524 G).
13525max_occurrence___2__1__2__5([A|B], C, D, E, F, G, H, I, J, K) :-
13526 ( A=suspension(_, active, _, _, _, _, L, M, _),
13527 A\==D,
13528 L==C,
13529 N=t(250, A, D, G, K),
13530 '$novel_production'(A, N),
13531 '$novel_production'(D, N),
13532 '$novel_production'(G, N),
13533 '$novel_production'(K, N),
13534 F=<J
13535 -> '$extend_history'(K, N),
13536 arg(2, K, O),
13537 setarg(2, K, active),
13538 ( O==not_stored_yet
13539 -> nb_getval('$chr_store_multi_hash_chr_translate____max_occurrence___2-1',
13540 P),
13541 insert_ht(P, I, K)
13542 ; true
13543 ),
13544 passive(C, M),
13545 ( K=suspension(_, active, _, _, _)
13546 -> setarg(2, K, inactive),
13547 max_occurrence___2__1__2__5(B,
13548 C,
13549 D,
13550 E,
13551 F,
13552 G,
13553 H,
13554 I,
13555 J,
13556 K)
13557 ; true
13558 )
13559 ; max_occurrence___2__1__2__5(B,
13560 C,
13561 D,
13562 E,
13563 F,
13564 G,
13565 H,
13566 I,
13567 J,
13568 K)
13569 ).
13570max_occurrence___2__1(A, B, C) :-
13571 C=suspension(D, not_stored_yet, t, A, B),
13572 'chr gen_id'(D),
13573 max_occurrence___2__2(A, B, C).
13574max_occurrence___2__2(A, _, B) :-
13575 arg(2, B, C),
13576 setarg(2, B, active),
13577 ( C==not_stored_yet
13578 -> nb_getval('$chr_store_multi_hash_chr_translate____max_occurrence___2-1',
13579 D),
13580 insert_ht(D, A, B)
13581 ; true
13582 ).
13583get_max_occurrence(A, B) :-
13584 nb_getval('$chr_store_multi_hash_chr_translate____max_occurrence___2-1',
13585 C),
13586 lookup_ht(C, A, D),
13587 member(E, D),
13588 E=suspension(_, active, _, _, F),
13589 !,
13590 B=F.
13591get_max_occurrence(A, _) :-
13592 chr_error(internal,
13593 'get_max_occurrence: missing max occurrence for ~w\n',
13594 [A]).
13595allocation_occurrence(A, B) :-
13596 allocation_occurrence___2__0(A, B, _).
13597allocation_occurrence___2__0(A, 0, B) :-
13598 !,
13599 B=suspension(C, active, t, A, 0),
13600 'chr gen_id'(C),
13601 nb_getval('$chr_store_multi_hash_chr_translate____allocation_occurrence___2-1',
13602 D),
13603 insert_ht(D, A, B),
13604 nb_getval('$chr_store_multi_hash_chr_translate____allocation_occurrence___2-12',
13605 E),
13606 insert_ht(E, k(A, 0), B),
13607 stored_in_guard_before_next_kept_occurrence(A, 0),
13608 ( B=suspension(_, active, _, _, _)
13609 -> setarg(2, B, inactive),
13610 allocation_occurrence___2__1(A, 0, B)
13611 ; true
13612 ).
13613allocation_occurrence___2__0(A, B, C) :-
13614 C=suspension(D, not_stored_yet, t, A, B),
13615 'chr gen_id'(D),
13616 allocation_occurrence___2__1(A, B, C).
13617allocation_occurrence___2__1(A, B, C) :-
13618 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-12',
13619 D),
13620 lookup_ht(D, k(A, B), E),
13621 !,
13622 allocation_occurrence___2__1__0__2(E, A, B, C).
13623allocation_occurrence___2__1__0__2([], A, B, C) :-
13624 allocation_occurrence___2__2(A, B, C).
13625allocation_occurrence___2__1__0__2([A|B], C, D, E) :-
13626 ( A=suspension(_, active, _, _, F, G, H, I, J),
13627 F==C,
13628 G==D,
13629 nb_getval('$chr_store_multi_hash_chr_translate____rule___2-1', K),
13630 lookup_ht(K, H, L)
13631 -> allocation_occurrence___2__1__1__2(L,
13632 H,
13633 I,
13634 J,
13635 A,
13636 B,
13637 C,
13638 D,
13639 E)
13640 ; allocation_occurrence___2__1__0__2(B, C, D, E)
13641 ).
13642allocation_occurrence___2__1__1__2([], _, _, _, _, A, B, C, D) :-
13643 allocation_occurrence___2__1__0__2(A, B, C, D).
13644allocation_occurrence___2__1__1__2([A|B], C, D, E, F, G, H, I, J) :-
13645 ( A=suspension(_, active, _, _, K, L),
13646 K==C,
13647 M=t(60, A, F, J),
13648 '$novel_production'(A, M),
13649 '$novel_production'(F, M),
13650 '$novel_production'(J, M)
13651 -> '$extend_history'(J, M),
13652 arg(2, J, N),
13653 setarg(2, J, active),
13654 ( N==not_stored_yet
13655 -> nb_getval('$chr_store_multi_hash_chr_translate____allocation_occurrence___2-1',
13656 O),
13657 insert_ht(O, H, J),
13658 nb_getval('$chr_store_multi_hash_chr_translate____allocation_occurrence___2-12',
13659 P),
13660 insert_ht(P, k(H, I), J)
13661 ; true
13662 ),
13663 \+ is_passive(C, D),
13664 E==propagation,
13665 ( stored_in_guard_before_next_kept_occurrence(H, I)
13666 -> true
13667 ; L=pragma(rule([_|_], _, _, _), _, _, _, _)
13668 -> is_observed(H, I)
13669 ; is_least_occurrence(C)
13670 -> is_observed(H, I)
13671 ; true
13672 ),
13673 ( J=suspension(_, active, _, _, _)
13674 -> setarg(2, J, inactive),
13675 allocation_occurrence___2__1__1__2(B,
13676 C,
13677 D,
13678 E,
13679 F,
13680 G,
13681 H,
13682 I,
13683 J)
13684 ; true
13685 )
13686 ; allocation_occurrence___2__1__1__2(B,
13687 C,
13688 D,
13689 E,
13690 F,
13691 G,
13692 H,
13693 I,
13694 J)
13695 ).
13696allocation_occurrence___2__1(A, B, C) :-
13697 allocation_occurrence___2__2(A, B, C).
13698allocation_occurrence___2__2(A, B, C) :-
13699 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-1', D),
13700 lookup_ht(D, A, E),
13701 !,
13702 allocation_occurrence___2__2__0__3(E, A, B, C).
13703allocation_occurrence___2__2__0__3([], A, B, C) :-
13704 allocation_occurrence___2__3(A, B, C).
13705allocation_occurrence___2__2__0__3([A|B], C, D, E) :-
13706 ( A=suspension(_, active, _, _, F, G, H, I, _),
13707 F==C,
13708 nb_getval('$chr_store_multi_hash_chr_translate____least_occurrence___2-1',
13709 J),
13710 lookup_ht(J, H, K)
13711 -> allocation_occurrence___2__2__1__3(K,
13712 G,
13713 H,
13714 I,
13715 A,
13716 B,
13717 C,
13718 D,
13719 E)
13720 ; allocation_occurrence___2__2__0__3(B, C, D, E)
13721 ).
13722allocation_occurrence___2__2__1__3([], _, _, _, _, A, B, C, D) :-
13723 allocation_occurrence___2__2__0__3(A, B, C, D).
13724allocation_occurrence___2__2__1__3([A|B], C, D, E, F, G, H, I, J) :-
13725 ( A=suspension(_, active, K, L),
13726 K==D,
13727 L=[M|N],
13728 M==E,
13729 I>=C,
13730 ( ground(D),
13731 nb_getval('$chr_store_multi_hash_chr_translate____rule___2-1',
13732 O),
13733 lookup_ht(O, D, P)
13734 ),
13735 member(Q, P),
13736 Q=suspension(_, active, _, _, _, _),
13737 \+ may_trigger(H)
13738 -> setarg(2, A, removed),
13739 ( nb_getval('$chr_store_multi_hash_chr_translate____least_occurrence___2-12',
13740 R),
13741 delete_ht(R, k(D, [E|N]), A)
13742 ),
13743 nb_getval('$chr_store_multi_hash_chr_translate____least_occurrence___2-1',
13744 S),
13745 delete_ht(S, D, A),
13746 arg(2, J, T),
13747 setarg(2, J, active),
13748 ( T==not_stored_yet
13749 -> nb_getval('$chr_store_multi_hash_chr_translate____allocation_occurrence___2-1',
13750 U),
13751 insert_ht(U, H, J),
13752 nb_getval('$chr_store_multi_hash_chr_translate____allocation_occurrence___2-12',
13753 V),
13754 insert_ht(V, k(H, I), J)
13755 ; true
13756 ),
13757 least_occurrence(D, N),
13758 ( J=suspension(_, active, _, _, _)
13759 -> setarg(2, J, inactive),
13760 allocation_occurrence___2__2__1__3(B,
13761 C,
13762 D,
13763 E,
13764 F,
13765 G,
13766 H,
13767 I,
13768 J)
13769 ; true
13770 )
13771 ; allocation_occurrence___2__2__1__3(B,
13772 C,
13773 D,
13774 E,
13775 F,
13776 G,
13777 H,
13778 I,
13779 J)
13780 ).
13781allocation_occurrence___2__2(A, B, C) :-
13782 allocation_occurrence___2__3(A, B, C).
13783allocation_occurrence___2__3(A, B, C) :-
13784 nb_getval('$chr_store_multi_hash_chr_translate____functional_dependency___4-1',
13785 D),
13786 lookup_ht(D, A, E),
13787 !,
13788 allocation_occurrence___2__3__0__5(E, A, B, C).
13789allocation_occurrence___2__3__0__5([], A, B, C) :-
13790 allocation_occurrence___2__4(A, B, C).
13791allocation_occurrence___2__3__0__5([A|B], C, D, E) :-
13792 ( A=suspension(_, active, F, G, H, I),
13793 F==C,
13794 G>1,
13795 ( ground(C),
13796 ground(G),
13797 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-13',
13798 J),
13799 lookup_ht(J, k(C, G), K)
13800 ),
13801 member(L, K),
13802 L=suspension(_, active, _, _, _, M, _, _, _),
13803 D>M
13804 -> setarg(2, A, removed),
13805 ( nb_getval('$chr_store_multi_hash_chr_translate____functional_dependency___4-1',
13806 N),
13807 delete_ht(N, C, A)
13808 ),
13809 nb_getval('$chr_store_multi_hash_chr_translate____functional_dependency___4-12',
13810 O),
13811 delete_ht(O, k(C, G), A),
13812 arg(2, E, P),
13813 setarg(2, E, active),
13814 ( P==not_stored_yet
13815 -> nb_getval('$chr_store_multi_hash_chr_translate____allocation_occurrence___2-1',
13816 Q),
13817 insert_ht(Q, C, E),
13818 nb_getval('$chr_store_multi_hash_chr_translate____allocation_occurrence___2-12',
13819 R),
13820 insert_ht(R, k(C, D), E)
13821 ; true
13822 ),
13823 functional_dependency(C, 1, H, I),
13824 ( E=suspension(_, active, _, _, _)
13825 -> setarg(2, E, inactive),
13826 allocation_occurrence___2__3__0__5(B,
13827 C,
13828 D,
13829 E)
13830 ; true
13831 )
13832 ; allocation_occurrence___2__3__0__5(B, C, D, E)
13833 ).
13834allocation_occurrence___2__3(A, B, C) :-
13835 allocation_occurrence___2__4(A, B, C).
13836allocation_occurrence___2__4(A, B, C) :-
13837 arg(2, C, D),
13838 setarg(2, C, active),
13839 ( D==not_stored_yet
13840 -> nb_getval('$chr_store_multi_hash_chr_translate____allocation_occurrence___2-1',
13841 E),
13842 insert_ht(E, A, C),
13843 nb_getval('$chr_store_multi_hash_chr_translate____allocation_occurrence___2-12',
13844 F),
13845 insert_ht(F, k(A, B), C)
13846 ; true
13847 ).
13848get_allocation_occurrence(A, B) :-
13849 nb_getval('$chr_store_multi_hash_chr_translate____allocation_occurrence___2-1',
13850 C),
13851 lookup_ht(C, A, D),
13852 member(E, D),
13853 E=suspension(_, active, _, _, F),
13854 !,
13855 B=F.
13856get_allocation_occurrence(_, A) :-
13857 chr_pp_flag(late_allocation, off),
13858 A=0.
13859rule(A, B) :-
13860 rule___2__0(A, B, _).
13861rule___2__0(A, B, C) :-
13862 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-3', D),
13863 lookup_ht(D, A, E),
13864 !,
13865 C=suspension(F, not_stored_yet, t, _, A, B),
13866 'chr gen_id'(F),
13867 rule___2__0__0__1(E, A, B, C).
13868rule___2__0__0__1([], A, B, C) :-
13869 rule___2__1(A, B, C).
13870rule___2__0__0__1([A|B], C, D, E) :-
13871 ( A=suspension(_, active, _, _, F, G, H, I, J),
13872 H==C,
13873 nb_getval('$chr_store_multi_hash_chr_translate____allocation_occurrence___2-12',
13874 K),
13875 lookup_ht(K, k(F, G), L)
13876 -> rule___2__0__1__1(L,
13877 F,
13878 G,
13879 I,
13880 J,
13881 A,
13882 B,
13883 C,
13884 D,
13885 E)
13886 ; rule___2__0__0__1(B, C, D, E)
13887 ).
13888rule___2__0__1__1([], _, _, _, _, _, A, B, C, D) :-
13889 rule___2__0__0__1(A, B, C, D).
13890rule___2__0__1__1([A|B], C, D, E, F, G, H, I, J, K) :-
13891 ( A=suspension(_, active, _, L, M),
13892 L==C,
13893 M==D,
13894 N=t(60, K, G, A),
13895 '$novel_production'(K, N),
13896 '$novel_production'(G, N),
13897 '$novel_production'(A, N)
13898 -> '$extend_history'(K, N),
13899 arg(2, K, O),
13900 setarg(2, K, active),
13901 ( O==not_stored_yet
13902 -> nb_getval('$chr_store_global_ground_chr_translate____rule___2',
13903 P),
13904 Q=[K|P],
13905 b_setval('$chr_store_global_ground_chr_translate____rule___2',
13906 Q),
13907 ( P=[R|_]
13908 -> setarg(4, R, Q)
13909 ; true
13910 ),
13911 nb_getval('$chr_store_multi_hash_chr_translate____rule___2-1',
13912 S),
13913 insert_ht(S, I, K)
13914 ; true
13915 ),
13916 \+ is_passive(I, E),
13917 F==propagation,
13918 ( stored_in_guard_before_next_kept_occurrence(C, D)
13919 -> true
13920 ; J=pragma(rule([_|_], _, _, _), _, _, _, _)
13921 -> is_observed(C, D)
13922 ; is_least_occurrence(I)
13923 -> is_observed(C, D)
13924 ; true
13925 ),
13926 ( K=suspension(_, active, _, _, _, _)
13927 -> setarg(2, K, inactive),
13928 rule___2__0__1__1(B,
13929 C,
13930 D,
13931 E,
13932 F,
13933 G,
13934 H,
13935 I,
13936 J,
13937 K)
13938 ; true
13939 )
13940 ; rule___2__0__1__1(B,
13941 C,
13942 D,
13943 E,
13944 F,
13945 G,
13946 H,
13947 I,
13948 J,
13949 K)
13950 ).
13951rule___2__0(A, B, C) :-
13952 C=suspension(D, not_stored_yet, t, _, A, B),
13953 'chr gen_id'(D),
13954 rule___2__1(A, B, C).
13955rule___2__1(A, B, C) :-
13956 nb_getval('$chr_store_multi_hash_chr_translate____least_occurrence___2-1',
13957 D),
13958 lookup_ht(D, A, E),
13959 !,
13960 rule___2__1__0__2(E, A, B, C).
13961rule___2__1__0__2([], A, B, C) :-
13962 rule___2__2(A, B, C).
13963rule___2__1__0__2([A|B], C, D, E) :-
13964 ( A=suspension(_, active, F, G),
13965 F==C,
13966 G=[H|I],
13967 ( ground(C),
13968 ground(H),
13969 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-34',
13970 J),
13971 lookup_ht(J, k(C, H), K)
13972 ),
13973 member(L, K),
13974 L=suspension(_, active, _, _, M, N, _, _, _),
13975 ( nb_getval('$chr_store_multi_hash_chr_translate____allocation_occurrence___2-1',
13976 O),
13977 lookup_ht(O, M, P)
13978 ),
13979 member(Q, P),
13980 Q=suspension(_, active, _, _, R),
13981 R>=N,
13982 \+ may_trigger(M)
13983 -> setarg(2, A, removed),
13984 ( nb_getval('$chr_store_multi_hash_chr_translate____least_occurrence___2-12',
13985 S),
13986 delete_ht(S, k(C, [H|I]), A)
13987 ),
13988 nb_getval('$chr_store_multi_hash_chr_translate____least_occurrence___2-1',
13989 T),
13990 delete_ht(T, C, A),
13991 arg(2, E, U),
13992 setarg(2, E, active),
13993 ( U==not_stored_yet
13994 -> nb_getval('$chr_store_global_ground_chr_translate____rule___2',
13995 V),
13996 W=[E|V],
13997 b_setval('$chr_store_global_ground_chr_translate____rule___2',
13998 W),
13999 ( V=[X|_]
14000 -> setarg(4, X, W)
14001 ; true
14002 ),
14003 nb_getval('$chr_store_multi_hash_chr_translate____rule___2-1',
14004 Y),
14005 insert_ht(Y, C, E)
14006 ; true
14007 ),
14008 least_occurrence(C, I),
14009 ( E=suspension(_, active, _, _, _, _)
14010 -> setarg(2, E, inactive),
14011 rule___2__1__0__2(B, C, D, E)
14012 ; true
14013 )
14014 ; rule___2__1__0__2(B, C, D, E)
14015 ).
14016rule___2__1(A, B, C) :-
14017 rule___2__2(A, B, C).
14018rule___2__2(A, B, C) :-
14019 nb_getval('$chr_store_multi_hash_chr_translate____least_occurrence___2-1',
14020 D),
14021 lookup_ht(D, A, E),
14022 !,
14023 rule___2__2__0__3(E, A, B, C).
14024rule___2__2__0__3([], A, B, C) :-
14025 rule___2__3(A, B, C).
14026rule___2__2__0__3([A|B], C, D, E) :-
14027 ( A=suspension(_, active, F, G),
14028 F==C,
14029 G=[H|I],
14030 ( ground(C),
14031 ground(H)
14032 ),
14033 nb_getval('$chr_store_multi_hash_chr_translate____passive___2-12',
14034 J),
14035 lookup_ht(J, k(C, H), K),
14036 member(L, K),
14037 L=suspension(_, active, _, _, _)
14038 -> setarg(2, A, removed),
14039 ( nb_getval('$chr_store_multi_hash_chr_translate____least_occurrence___2-12',
14040 M),
14041 delete_ht(M, k(C, [H|I]), A)
14042 ),
14043 nb_getval('$chr_store_multi_hash_chr_translate____least_occurrence___2-1',
14044 N),
14045 delete_ht(N, C, A),
14046 arg(2, E, O),
14047 setarg(2, E, active),
14048 ( O==not_stored_yet
14049 -> nb_getval('$chr_store_global_ground_chr_translate____rule___2',
14050 P),
14051 Q=[E|P],
14052 b_setval('$chr_store_global_ground_chr_translate____rule___2',
14053 Q),
14054 ( P=[R|_]
14055 -> setarg(4, R, Q)
14056 ; true
14057 ),
14058 nb_getval('$chr_store_multi_hash_chr_translate____rule___2-1',
14059 S),
14060 insert_ht(S, C, E)
14061 ; true
14062 ),
14063 least_occurrence(C, I),
14064 ( E=suspension(_, active, _, _, _, _)
14065 -> setarg(2, E, inactive),
14066 rule___2__2__0__3(B, C, D, E)
14067 ; true
14068 )
14069 ; rule___2__2__0__3(B, C, D, E)
14070 ).
14071rule___2__2(A, B, C) :-
14072 rule___2__3(A, B, C).
14073rule___2__3(A, B, C) :-
14074 B=pragma(rule([], _, _, _), ids([], D), _, _, _),
14075 !,
14076 arg(2, C, E),
14077 setarg(2, C, active),
14078 ( E==not_stored_yet
14079 -> nb_getval('$chr_store_global_ground_chr_translate____rule___2', F),
14080 G=[C|F],
14081 b_setval('$chr_store_global_ground_chr_translate____rule___2', G),
14082 ( F=[H|_]
14083 -> setarg(4, H, G)
14084 ; true
14085 ),
14086 nb_getval('$chr_store_multi_hash_chr_translate____rule___2-1', I),
14087 insert_ht(I, A, C)
14088 ; true
14089 ),
14090 least_occurrence(A, D),
14091 ( C=suspension(_, active, _, _, _, _)
14092 -> setarg(2, C, inactive),
14093 rule___2__4(A, B, C)
14094 ; true
14095 ).
14096rule___2__3(A, B, C) :-
14097 rule___2__4(A, B, C).
14098rule___2__4(A, B, C) :-
14099 nb_getval('$chr_store_multi_hash_chr_translate____prev_guard_list___6-1',
14100 D),
14101 lookup_ht(D, A, E),
14102 member(F, E),
14103 F=suspension(_, active, _, _, _, G, H, I, J, _),
14104 B=pragma(rule(K, L, H, M), N, O, P, A),
14105 H\==true,
14106 append(J, I, Q),
14107 ( conj2list(H, R),
14108 append(Q, R, S),
14109 guard_entailment:entails_guard(S, fail)
14110 -> T=fail
14111 ; simplify_guard(H, M, Q, T, U)
14112 ),
14113 H\==T,
14114 !,
14115 setarg(2, F, removed),
14116 arg(4, F, V),
14117 ( var(V)
14118 -> nb_getval('$chr_store_global_ground_chr_translate____prev_guard_list___6',
14119 W),
14120 W=[_|X],
14121 b_setval('$chr_store_global_ground_chr_translate____prev_guard_list___6',
14122 X),
14123 ( X=[Y|_]
14124 -> setarg(4, Y, _)
14125 ; true
14126 )
14127 ; V=[_, _|X],
14128 setarg(2, V, X),
14129 ( X=[Y|_]
14130 -> setarg(4, Y, V)
14131 ; true
14132 )
14133 ),
14134 nb_getval('$chr_store_multi_hash_chr_translate____prev_guard_list___6-1',
14135 Z),
14136 delete_ht(Z, A, F),
14137 ( var(C)
14138 -> true
14139 ; arg(2, C, A1),
14140 setarg(2, C, removed),
14141 ( A1==not_stored_yet
14142 -> true
14143 ; arg(4, C, B1),
14144 ( var(B1)
14145 -> nb_getval('$chr_store_global_ground_chr_translate____rule___2',
14146 C1),
14147 C1=[_|D1],
14148 b_setval('$chr_store_global_ground_chr_translate____rule___2',
14149 D1),
14150 ( D1=[E1|_]
14151 -> setarg(4, E1, _)
14152 ; true
14153 )
14154 ; B1=[_, _|D1],
14155 setarg(2, B1, D1),
14156 ( D1=[E1|_]
14157 -> setarg(4, E1, B1)
14158 ; true
14159 )
14160 ),
14161 nb_getval('$chr_store_multi_hash_chr_translate____rule___2-1',
14162 F1),
14163 delete_ht(F1, A, C)
14164 )
14165 ),
14166 rule(A,
14167 pragma(rule(K, L, T, U),
14168 N,
14169 O,
14170 P,
14171 A)),
14172 prev_guard_list(A, G, T, I, J, []).
14173rule___2__4(A, B, C) :-
14174 nb_getval('$chr_store_global_ground_chr_translate____precompute_head_matchings___0',
14175 D),
14176 !,
14177 rule___2__4__0__10(D, A, B, C).
14178rule___2__4__0__10([], A, B, C) :-
14179 rule___2__5(A, B, C).
14180rule___2__4__0__10([A|B], C, D, E) :-
14181 ( A=suspension(_, active, _, _),
14182 F=t(174, E, A),
14183 '$novel_production'(E, F),
14184 '$novel_production'(A, F)
14185 -> '$extend_history'(E, F),
14186 arg(2, E, G),
14187 setarg(2, E, active),
14188 ( G==not_stored_yet
14189 -> nb_getval('$chr_store_global_ground_chr_translate____rule___2',
14190 H),
14191 I=[E|H],
14192 b_setval('$chr_store_global_ground_chr_translate____rule___2',
14193 I),
14194 ( H=[J|_]
14195 -> setarg(4, J, I)
14196 ; true
14197 ),
14198 nb_getval('$chr_store_multi_hash_chr_translate____rule___2-1',
14199 K),
14200 insert_ht(K, C, E)
14201 ; true
14202 ),
14203 D=pragma(rule(L, M, _, _), _, _, _, _),
14204 append(L, M, N),
14205 make_head_matchings_explicit_(N, O, P),
14206 copy_term_nat(O-P, Q-R),
14207 make_head_matchings_explicit_memo_table(C, Q, R),
14208 ( E=suspension(_, active, _, _, _, _)
14209 -> setarg(2, E, inactive),
14210 rule___2__4__0__10(B, C, D, E)
14211 ; true
14212 )
14213 ; rule___2__4__0__10(B, C, D, E)
14214 ).
14215rule___2__4(A, B, C) :-
14216 rule___2__5(A, B, C).
14217rule___2__5(A, B, C) :-
14218 nb_getval('$chr_store_multi_hash_chr_translate____prev_guard_list___6-1',
14219 D),
14220 lookup_ht(D, A, E),
14221 !,
14222 rule___2__5__0__11(E, A, B, C).
14223rule___2__5__0__11([], A, B, C) :-
14224 rule___2__6(A, B, C).
14225rule___2__5__0__11([A|B], C, D, E) :-
14226 ( A=suspension(_, active, _, _, F, _, G, H, I, _),
14227 F==C,
14228 J=t(178, A, E),
14229 '$novel_production'(A, J),
14230 '$novel_production'(E, J),
14231 chr_pp_flag(check_impossible_rules, on),
14232 D=pragma(rule(_, _, G, _), _, _, _, C),
14233 conj2list(G, K),
14234 append(I, H, L),
14235 append(L, K, M),
14236 guard_entailment:entails_guard(M, fail)
14237 -> '$extend_history'(E, J),
14238 arg(2, E, N),
14239 setarg(2, E, active),
14240 ( N==not_stored_yet
14241 -> nb_getval('$chr_store_global_ground_chr_translate____rule___2',
14242 O),
14243 P=[E|O],
14244 b_setval('$chr_store_global_ground_chr_translate____rule___2',
14245 P),
14246 ( O=[Q|_]
14247 -> setarg(4, Q, P)
14248 ; true
14249 ),
14250 nb_getval('$chr_store_multi_hash_chr_translate____rule___2-1',
14251 R),
14252 insert_ht(R, C, E)
14253 ; true
14254 ),
14255 chr_warning(weird_program,
14256 'Heads will never match or guard will always fail in ~@.\n\tThis rule will never fire!\n',
14257 [format_rule(D)]),
14258 set_all_passive(C),
14259 ( E=suspension(_, active, _, _, _, _)
14260 -> setarg(2, E, inactive),
14261 rule___2__5__0__11(B, C, D, E)
14262 ; true
14263 )
14264 ; rule___2__5__0__11(B, C, D, E)
14265 ).
14266rule___2__5(A, B, C) :-
14267 rule___2__6(A, B, C).
14268rule___2__6(A, B, C) :-
14269 nb_getval('$chr_store_multi_hash_chr_translate____prev_guard_list___6-1',
14270 D),
14271 lookup_ht(D, A, E),
14272 member(F, E),
14273 F=suspension(_, active, _, _, _, G, H, I, J, _),
14274 B=pragma(rule(K, L, H, M), N, O, P, A),
14275 simplify_heads(J, I, H, M, Q, R),
14276 Q\==[],
14277 extract_arguments(K, S),
14278 extract_arguments(L, T),
14279 extract_arguments(G, U),
14280 replace_some_heads(S,
14281 T,
14282 U,
14283 Q,
14284 V,
14285 W,
14286 H,
14287 M,
14288 X),
14289 substitute_arguments(K, V, Y),
14290 substitute_arguments(L, W, Z),
14291 append(R, X, A1),
14292 list2conj(A1, B1),
14293 C1=pragma(rule(Y, Z, H, (B1, M)), N, O, P, A),
14294 ( K\==Y
14295 ; L\==Z
14296 ),
14297 !,
14298 ( var(C)
14299 -> true
14300 ; arg(2, C, D1),
14301 setarg(2, C, removed),
14302 ( D1==not_stored_yet
14303 -> true
14304 ; arg(4, C, E1),
14305 ( var(E1)
14306 -> nb_getval('$chr_store_global_ground_chr_translate____rule___2',
14307 F1),
14308 F1=[_|G1],
14309 b_setval('$chr_store_global_ground_chr_translate____rule___2',
14310 G1),
14311 ( G1=[H1|_]
14312 -> setarg(4, H1, _)
14313 ; true
14314 )
14315 ; E1=[_, _|G1],
14316 setarg(2, E1, G1),
14317 ( G1=[H1|_]
14318 -> setarg(4, H1, E1)
14319 ; true
14320 )
14321 ),
14322 nb_getval('$chr_store_multi_hash_chr_translate____rule___2-1',
14323 I1),
14324 delete_ht(I1, A, C)
14325 )
14326 ),
14327 rule(A, C1).
14328rule___2__6(A, B, C) :-
14329 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-3', D),
14330 lookup_ht(D, A, E),
14331 !,
14332 rule___2__6__0__13(E, A, B, C).
14333rule___2__6__0__13([], A, B, C) :-
14334 rule___2__7(A, B, C).
14335rule___2__6__0__13([A|B], C, D, E) :-
14336 ( A=suspension(_, active, _, _, F, G, H, _, _),
14337 H==C,
14338 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-13',
14339 I),
14340 lookup_ht(I, k(F, C), J)
14341 -> rule___2__6__1__13(J,
14342 F,
14343 G,
14344 A,
14345 B,
14346 C,
14347 D,
14348 E)
14349 ; rule___2__6__0__13(B, C, D, E)
14350 ).
14351rule___2__6__1__13([], _, _, _, A, B, C, D) :-
14352 rule___2__6__0__13(A, B, C, D).
14353rule___2__6__1__13([A|B], C, D, E, F, G, H, I) :-
14354 ( A=suspension(_, active, _, _, J, K, L, M, _),
14355 A\==E,
14356 J==C,
14357 L==G,
14358 nb_getval('$chr_store_multi_hash_chr_translate____prev_guard_list___6-1',
14359 N),
14360 lookup_ht(N, G, O)
14361 -> rule___2__6__2__13(O,
14362 K,
14363 M,
14364 A,
14365 B,
14366 C,
14367 D,
14368 E,
14369 F,
14370 G,
14371 H,
14372 I)
14373 ; rule___2__6__1__13(B,
14374 C,
14375 D,
14376 E,
14377 F,
14378 G,
14379 H,
14380 I)
14381 ).
14382rule___2__6__2__13([], _, _, _, A, B, C, D, E, F, G, H) :-
14383 rule___2__6__1__13(A,
14384 B,
14385 C,
14386 D,
14387 E,
14388 F,
14389 G,
14390 H).
14391rule___2__6__2__13([A|B], C, D, E, F, G, H, I, J, K, L, M) :-
14392 ( A=suspension(_, active, _, _, N, _, _, _, _, _),
14393 N==K,
14394 nb_getval('$chr_store_global_ground_chr_translate____multiple_occ_constraints_checked___1',
14395 O)
14396 -> rule___2__6__3__13(O,
14397 A,
14398 B,
14399 C,
14400 D,
14401 E,
14402 F,
14403 G,
14404 H,
14405 I,
14406 J,
14407 K,
14408 L,
14409 M)
14410 ; rule___2__6__2__13(B,
14411 C,
14412 D,
14413 E,
14414 F,
14415 G,
14416 H,
14417 I,
14418 J,
14419 K,
14420 L,
14421 M)
14422 ).
14423rule___2__6__3__13([], _, A, B, C, D, E, F, G, H, I, J, K, L) :-
14424 rule___2__6__2__13(A,
14425 B,
14426 C,
14427 D,
14428 E,
14429 F,
14430 G,
14431 H,
14432 I,
14433 J,
14434 K,
14435 L).
14436rule___2__6__3__13([A|B], C, D, E, F, G, H, I, J, K, L, M, N, O) :-
14437 ( A=suspension(_, active, _, P),
14438 E<J,
14439 chr_pp_flag(occurrence_subsumption, on),
14440 N=pragma(rule(Q, _, _, _), _, _, _, _),
14441 Q\==[],
14442 \+ tree_set_memberchk(I, P)
14443 -> setarg(2, A, removed),
14444 arg(3, A, R),
14445 ( var(R)
14446 -> nb_getval('$chr_store_global_ground_chr_translate____multiple_occ_constraints_checked___1',
14447 S),
14448 S=[_|T],
14449 b_setval('$chr_store_global_ground_chr_translate____multiple_occ_constraints_checked___1',
14450 T),
14451 ( T=[U|_]
14452 -> setarg(3, U, _)
14453 ; true
14454 )
14455 ; R=[_, _|T],
14456 setarg(2, R, T),
14457 ( T=[U|_]
14458 -> setarg(3, U, R)
14459 ; true
14460 )
14461 ),
14462 arg(2, O, V),
14463 setarg(2, O, active),
14464 ( V==not_stored_yet
14465 -> nb_getval('$chr_store_global_ground_chr_translate____rule___2',
14466 W),
14467 X=[O|W],
14468 b_setval('$chr_store_global_ground_chr_translate____rule___2',
14469 X),
14470 ( W=[Y|_]
14471 -> setarg(4, Y, X)
14472 ; true
14473 ),
14474 nb_getval('$chr_store_multi_hash_chr_translate____rule___2-1',
14475 Z),
14476 insert_ht(Z, M, O)
14477 ; true
14478 ),
14479 first_occ_in_rule(M, I, E, F),
14480 tree_set_add(P, I, A1),
14481 multiple_occ_constraints_checked(A1),
14482 ( O=suspension(_, active, _, _, _, _)
14483 -> setarg(2, O, inactive),
14484 rule___2__6__3__13(B,
14485 C,
14486 D,
14487 E,
14488 F,
14489 G,
14490 H,
14491 I,
14492 J,
14493 K,
14494 L,
14495 M,
14496 N,
14497 O)
14498 ; true
14499 )
14500 ; rule___2__6__3__13(B,
14501 C,
14502 D,
14503 E,
14504 F,
14505 G,
14506 H,
14507 I,
14508 J,
14509 K,
14510 L,
14511 M,
14512 N,
14513 O)
14514 ).
14515rule___2__6(A, B, C) :-
14516 rule___2__7(A, B, C).
14517rule___2__7(A, B, C) :-
14518 nb_getval('$chr_store_multi_hash_chr_translate____passive___2-1', D),
14519 lookup_ht(D, A, E),
14520 !,
14521 rule___2__7__0__15(E, A, B, C).
14522rule___2__7__0__15([], A, B, C) :-
14523 rule___2__8(A, B, C).
14524rule___2__7__0__15([A|B], C, D, E) :-
14525 ( A=suspension(_, active, _, F, G),
14526 F==C,
14527 H=t(251, E, A),
14528 '$novel_production'(E, H),
14529 '$novel_production'(A, H),
14530 D=pragma(rule(_, _, _, _), ids([G|I], J), _, _, C)
14531 -> '$extend_history'(E, H),
14532 arg(2, E, K),
14533 setarg(2, E, active),
14534 ( K==not_stored_yet
14535 -> nb_getval('$chr_store_global_ground_chr_translate____rule___2',
14536 L),
14537 M=[E|L],
14538 b_setval('$chr_store_global_ground_chr_translate____rule___2',
14539 M),
14540 ( L=[N|_]
14541 -> setarg(4, N, M)
14542 ; true
14543 ),
14544 nb_getval('$chr_store_multi_hash_chr_translate____rule___2-1',
14545 O),
14546 insert_ht(O, C, E)
14547 ; true
14548 ),
14549 append(I, J, P),
14550 check_all_passive(C, P),
14551 ( E=suspension(_, active, _, _, _, _)
14552 -> setarg(2, E, inactive),
14553 rule___2__7__0__15(B, C, D, E)
14554 ; true
14555 )
14556 ; rule___2__7__0__15(B, C, D, E)
14557 ).
14558rule___2__7(A, B, C) :-
14559 rule___2__8(A, B, C).
14560rule___2__8(A, B, C) :-
14561 nb_getval('$chr_store_multi_hash_chr_translate____passive___2-1', D),
14562 lookup_ht(D, A, E),
14563 !,
14564 rule___2__8__0__16(E, A, B, C).
14565rule___2__8__0__16([], A, B, C) :-
14566 rule___2__9(A, B, C).
14567rule___2__8__0__16([A|B], C, D, E) :-
14568 ( A=suspension(_, active, _, F, G),
14569 F==C,
14570 H=t(252, E, A),
14571 '$novel_production'(E, H),
14572 '$novel_production'(A, H),
14573 D=pragma(rule(_, _, _, _), ids([], [G|I]), _, _, C)
14574 -> '$extend_history'(E, H),
14575 arg(2, E, J),
14576 setarg(2, E, active),
14577 ( J==not_stored_yet
14578 -> nb_getval('$chr_store_global_ground_chr_translate____rule___2',
14579 K),
14580 L=[E|K],
14581 b_setval('$chr_store_global_ground_chr_translate____rule___2',
14582 L),
14583 ( K=[M|_]
14584 -> setarg(4, M, L)
14585 ; true
14586 ),
14587 nb_getval('$chr_store_multi_hash_chr_translate____rule___2-1',
14588 N),
14589 insert_ht(N, C, E)
14590 ; true
14591 ),
14592 check_all_passive(C, I),
14593 ( E=suspension(_, active, _, _, _, _)
14594 -> setarg(2, E, inactive),
14595 rule___2__8__0__16(B, C, D, E)
14596 ; true
14597 )
14598 ; rule___2__8__0__16(B, C, D, E)
14599 ).
14600rule___2__8(A, B, C) :-
14601 rule___2__9(A, B, C).
14602rule___2__9(A, B, C) :-
14603 nb_getval('$chr_store_multi_hash_chr_translate____check_all_passive___2-12',
14604 D),
14605 lookup_ht(D, k(A, []), E),
14606 !,
14607 rule___2__9__0__17(E, A, B, C).
14608rule___2__9__0__17([], A, B, C) :-
14609 rule___2__10(A, B, C).
14610rule___2__9__0__17([A|B], C, D, E) :-
14611 ( A=suspension(_, active, F, G),
14612 F==C,
14613 G=[]
14614 -> setarg(2, A, removed),
14615 ( nb_getval('$chr_store_multi_hash_chr_translate____check_all_passive___2-12',
14616 H),
14617 delete_ht(H, k(C, []), A)
14618 ),
14619 nb_getval('$chr_store_multi_hash_chr_translate____check_all_passive___2-1',
14620 I),
14621 delete_ht(I, C, A),
14622 arg(2, E, J),
14623 setarg(2, E, active),
14624 ( J==not_stored_yet
14625 -> nb_getval('$chr_store_global_ground_chr_translate____rule___2',
14626 K),
14627 L=[E|K],
14628 b_setval('$chr_store_global_ground_chr_translate____rule___2',
14629 L),
14630 ( K=[M|_]
14631 -> setarg(4, M, L)
14632 ; true
14633 ),
14634 nb_getval('$chr_store_multi_hash_chr_translate____rule___2-1',
14635 N),
14636 insert_ht(N, C, E)
14637 ; true
14638 ),
14639 chr_warning(weird_program,
14640 'All heads passive in ~@.\n\tThis rule never fires. Please check your program.\n',
14641 [format_rule(D)]),
14642 ( E=suspension(_, active, _, _, _, _)
14643 -> setarg(2, E, inactive),
14644 rule___2__9__0__17(B, C, D, E)
14645 ; true
14646 )
14647 ; rule___2__9__0__17(B, C, D, E)
14648 ).
14649rule___2__9(A, B, C) :-
14650 rule___2__10(A, B, C).
14651rule___2__10(A, B, C) :-
14652 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-3', D),
14653 lookup_ht(D, A, E),
14654 !,
14655 rule___2__10__0__22(E, A, B, C).
14656rule___2__10__0__22([], A, B, C) :-
14657 rule___2__11(A, B, C).
14658rule___2__10__0__22([A|B], C, D, E) :-
14659 ( A=suspension(_, active, _, _, F, _, G, H, I),
14660 G==C,
14661 nb_getval('$chr_store_global_ground_chr_translate____partial_wake_analysis___0',
14662 J)
14663 -> rule___2__10__1__22(J,
14664 F,
14665 H,
14666 I,
14667 A,
14668 B,
14669 C,
14670 D,
14671 E)
14672 ; rule___2__10__0__22(B, C, D, E)
14673 ).
14674rule___2__10__1__22([], _, _, _, _, A, B, C, D) :-
14675 rule___2__10__0__22(A, B, C, D).
14676rule___2__10__1__22([A|B], C, D, E, F, G, H, I, J) :-
14677 ( A=suspension(_, active, _, _),
14678 nb_getval('$chr_store_multi_hash_chr_translate____constraint_mode___2-1',
14679 K),
14680 lookup_ht(K, C, L)
14681 -> rule___2__10__2__22(L,
14682 A,
14683 B,
14684 C,
14685 D,
14686 E,
14687 F,
14688 G,
14689 H,
14690 I,
14691 J)
14692 ; rule___2__10__1__22(B,
14693 C,
14694 D,
14695 E,
14696 F,
14697 G,
14698 H,
14699 I,
14700 J)
14701 ).
14702rule___2__10__2__22([], _, A, B, C, D, E, F, G, H, I) :-
14703 rule___2__10__1__22(A,
14704 B,
14705 C,
14706 D,
14707 E,
14708 F,
14709 G,
14710 H,
14711 I).
14712rule___2__10__2__22([A|B], C, D, E, F, G, H, I, J, K, L) :-
14713 ( A=suspension(_, active, _, _, M, N),
14714 M==E,
14715 O=t(330, C, H, L, A),
14716 '$novel_production'(C, O),
14717 '$novel_production'(H, O),
14718 '$novel_production'(L, O),
14719 '$novel_production'(A, O)
14720 -> '$extend_history'(L, O),
14721 arg(2, L, P),
14722 setarg(2, L, active),
14723 ( P==not_stored_yet
14724 -> nb_getval('$chr_store_global_ground_chr_translate____rule___2',
14725 Q),
14726 R=[L|Q],
14727 b_setval('$chr_store_global_ground_chr_translate____rule___2',
14728 R),
14729 ( Q=[S|_]
14730 -> setarg(4, S, R)
14731 ; true
14732 ),
14733 nb_getval('$chr_store_multi_hash_chr_translate____rule___2-1',
14734 T),
14735 insert_ht(T, J, L)
14736 ; true
14737 ),
14738 K=pragma(rule(U, V, W, _), _, _, _, _),
14739 ( is_passive(J, F)
14740 -> true
14741 ; G==simplification
14742 -> select(X, U, _),
14743 X=..[_|Y],
14744 term_variables(W, Z),
14745 partial_wake_args(Y, N, Z, E)
14746 ; select(X, V, _),
14747 X=..[_|Y],
14748 term_variables(W, Z),
14749 partial_wake_args(Y, N, Z, E)
14750 ),
14751 ( L=suspension(_, active, _, _, _, _)
14752 -> setarg(2, L, inactive),
14753 rule___2__10__2__22(B,
14754 C,
14755 D,
14756 E,
14757 F,
14758 G,
14759 H,
14760 I,
14761 J,
14762 K,
14763 L)
14764 ; true
14765 )
14766 ; rule___2__10__2__22(B,
14767 C,
14768 D,
14769 E,
14770 F,
14771 G,
14772 H,
14773 I,
14774 J,
14775 K,
14776 L)
14777 ).
14778rule___2__10(A, B, C) :-
14779 rule___2__11(A, B, C).
14780rule___2__11(A, _, B) :-
14781 arg(2, B, C),
14782 setarg(2, B, active),
14783 ( C==not_stored_yet
14784 -> nb_getval('$chr_store_global_ground_chr_translate____rule___2', D),
14785 E=[B|D],
14786 b_setval('$chr_store_global_ground_chr_translate____rule___2', E),
14787 ( D=[F|_]
14788 -> setarg(4, F, E)
14789 ; true
14790 ),
14791 nb_getval('$chr_store_multi_hash_chr_translate____rule___2-1', G),
14792 insert_ht(G, A, B)
14793 ; true
14794 ).
14795get_rule(A, B) :-
14796 nb_getval('$chr_store_multi_hash_chr_translate____rule___2-1', C),
14797 lookup_ht(C, A, D),
14798 member(E, D),
14799 E=suspension(_, active, _, _, _, F),
14800 !,
14801 B=F.
14802get_rule(_, _) :-
14803 fail.
14804least_occurrence(A, [B|C]) :-
14805 nb_getval('$chr_store_multi_hash_chr_translate____rule___2-1', D),
14806 lookup_ht(D, A, E),
14807 member(F, E),
14808 F=suspension(_, active, _, _, _, _),
14809 ( nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-34',
14810 G),
14811 lookup_ht(G, k(A, B), H),
14812 member(I, H),
14813 I=suspension(_, active, _, _, J, K, _, _, _),
14814 nb_getval('$chr_store_multi_hash_chr_translate____allocation_occurrence___2-1',
14815 L),
14816 lookup_ht(L, J, M),
14817 member(N, M),
14818 N=suspension(_, active, _, _, O),
14819 O>=K,
14820 \+ may_trigger(J),
14821 !,
14822 least_occurrence(A, C)
14823 ; nb_getval('$chr_store_multi_hash_chr_translate____passive___2-12',
14824 P),
14825 lookup_ht(P, k(A, B), Q),
14826 member(R, Q),
14827 R=suspension(_, active, _, _, _),
14828 !,
14829 least_occurrence(A, C)
14830 ).
14831least_occurrence(A, B) :-
14832 C=suspension(D, active, A, B),
14833 'chr gen_id'(D),
14834 nb_getval('$chr_store_multi_hash_chr_translate____least_occurrence___2-12',
14835 E),
14836 insert_ht(E, k(A, B), C),
14837 nb_getval('$chr_store_multi_hash_chr_translate____least_occurrence___2-1',
14838 F),
14839 insert_ht(F, A, C).
14840is_least_occurrence(A) :-
14841 nb_getval('$chr_store_multi_hash_chr_translate____least_occurrence___2-12',
14842 B),
14843 lookup_ht(B, k(A, []), C),
14844 member(D, C),
14845 D=suspension(_, active, _, _),
14846 !.
14847is_least_occurrence(_) :-
14848 fail.
14849stored_in_guard_lookahead(A, B) :-
14850 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-12',
14851 C),
14852 lookup_ht(C, k(A, B), D),
14853 member(E, D),
14854 E=suspension(_, active, _, _, _, _, F, G, H),
14855 ( nb_getval('$chr_store_multi_hash_chr_translate____passive___2-12',
14856 I),
14857 lookup_ht(I, k(F, G), J),
14858 member(K, J),
14859 K=suspension(_, active, _, _, _),
14860 !,
14861 L is B+1,
14862 stored_in_guard_lookahead(A, L)
14863 ; !,
14864 H==simplification,
14865 ( is_stored_in_guard(A, F)
14866 -> true
14867 ; M is B+1,
14868 stored_in_guard_lookahead(A, M)
14869 )
14870 ).
14871stored_in_guard_lookahead(_, _) :-
14872 fail.
14873constraint_index(A, B) :-
14874 C=suspension(D, active, A, B),
14875 'chr gen_id'(D),
14876 nb_getval('$chr_store_multi_hash_chr_translate____constraint_index___2-2',
14877 E),
14878 insert_ht(E, B, C),
14879 nb_getval('$chr_store_multi_hash_chr_translate____constraint_index___2-1',
14880 F),
14881 insert_ht(F, A, C).
14882get_constraint_index(A, B) :-
14883 nb_getval('$chr_store_multi_hash_chr_translate____constraint_index___2-1',
14884 C),
14885 lookup_ht(C, A, D),
14886 member(E, D),
14887 E=suspension(_, active, _, F),
14888 !,
14889 B=F.
14890get_constraint_index(_, _) :-
14891 fail.
14892get_indexed_constraint(A, B) :-
14893 nb_getval('$chr_store_multi_hash_chr_translate____constraint_index___2-2',
14894 C),
14895 lookup_ht(C, A, D),
14896 member(E, D),
14897 E=suspension(_, active, F, _),
14898 !,
14899 B=F.
14900get_indexed_constraint(_, _) :-
14901 fail.
14902max_constraint_index(A) :-
14903 B=suspension(C, active, _, A),
14904 'chr gen_id'(C),
14905 nb_getval('$chr_store_global_ground_chr_translate____max_constraint_index___1',
14906 D),
14907 E=[B|D],
14908 b_setval('$chr_store_global_ground_chr_translate____max_constraint_index___1',
14909 E),
14910 ( D=[F|_]
14911 -> setarg(3, F, E)
14912 ; true
14913 ).
14914get_max_constraint_index(A) :-
14915 nb_getval('$chr_store_global_ground_chr_translate____max_constraint_index___1',
14916 B),
14917 member(C, B),
14918 C=suspension(_, active, _, D),
14919 !,
14920 A=D.
14921get_max_constraint_index(0).
14922identifier_size(A) :-
14923 nb_getval('$chr_store_global_ground_chr_translate____identifier_size___1',
14924 B),
14925 ( member(C, B),
14926 C=suspension(_, active, _, _),
14927 !
14928 ; !,
14929 identifier_size___1__0__0__2(B, A)
14930 ).
14931identifier_size___1__0__0__2([], A) :-
14932 identifier_size___1__1(A).
14933identifier_size___1__0__0__2([A|B], C) :-
14934 ( A=suspension(_, active, _, _)
14935 -> setarg(2, A, removed),
14936 arg(3, A, D),
14937 ( var(D)
14938 -> nb_getval('$chr_store_global_ground_chr_translate____identifier_size___1',
14939 E),
14940 E=[_|F],
14941 b_setval('$chr_store_global_ground_chr_translate____identifier_size___1',
14942 F),
14943 ( F=[G|_]
14944 -> setarg(3, G, _)
14945 ; true
14946 )
14947 ; D=[_, _|F],
14948 setarg(2, D, F),
14949 ( F=[G|_]
14950 -> setarg(3, G, D)
14951 ; true
14952 )
14953 ),
14954 identifier_size___1__0__0__2(B, C)
14955 ; identifier_size___1__0__0__2(B, C)
14956 ).
14957identifier_size(A) :-
14958 identifier_size___1__1(A).
14959identifier_size___1__1(A) :-
14960 B=suspension(C, active, _, A),
14961 'chr gen_id'(C),
14962 nb_getval('$chr_store_global_ground_chr_translate____identifier_size___1',
14963 D),
14964 E=[B|D],
14965 b_setval('$chr_store_global_ground_chr_translate____identifier_size___1',
14966 E),
14967 ( D=[F|_]
14968 -> setarg(3, F, E)
14969 ; true
14970 ).
14971get_identifier_size(A) :-
14972 nb_getval('$chr_store_global_ground_chr_translate____identifier_size___1',
14973 B),
14974 member(C, B),
14975 C=suspension(_, active, _, D),
14976 !,
14977 A=D.
14978get_identifier_size(1).
14979identifier_index(A, B, C) :-
14980 nb_getval('$chr_store_multi_hash_chr_translate____identifier_index___3-12',
14981 D),
14982 lookup_ht(D, k(A, B), E),
14983 ( member(F, E),
14984 F=suspension(_, active, _, _, _),
14985 !
14986 ; !,
14987 identifier_index___3__0__0__2(E, A, B, C)
14988 ).
14989identifier_index___3__0__0__2([], A, B, C) :-
14990 identifier_index___3__1(A, B, C).
14991identifier_index___3__0__0__2([A|B], C, D, E) :-
14992 ( A=suspension(_, active, F, G, _),
14993 F==C,
14994 G==D
14995 -> setarg(2, A, removed),
14996 nb_getval('$chr_store_multi_hash_chr_translate____identifier_index___3-12',
14997 H),
14998 delete_ht(H, k(C, D), A),
14999 identifier_index___3__0__0__2(B, C, D, E)
15000 ; identifier_index___3__0__0__2(B, C, D, E)
15001 ).
15002identifier_index(A, B, C) :-
15003 identifier_index___3__1(A, B, C).
15004identifier_index___3__1(A, B, C) :-
15005 D=suspension(E, active, A, B, C),
15006 'chr gen_id'(E),
15007 nb_getval('$chr_store_multi_hash_chr_translate____identifier_index___3-12',
15008 F),
15009 insert_ht(F, k(A, B), D).
15010get_identifier_index(A, B, C) :-
15011 nb_getval('$chr_store_multi_hash_chr_translate____identifier_index___3-12',
15012 D),
15013 lookup_ht(D, k(A, B), E),
15014 member(F, E),
15015 F=suspension(_, active, _, _, G),
15016 !,
15017 C=G.
15018get_identifier_index(A, B, C) :-
15019 nb_getval('$chr_store_global_ground_chr_translate____identifier_size___1',
15020 D),
15021 member(E, D),
15022 E=suspension(_, active, _, F),
15023 !,
15024 setarg(2, E, removed),
15025 arg(3, E, G),
15026 ( var(G)
15027 -> nb_getval('$chr_store_global_ground_chr_translate____identifier_size___1',
15028 H),
15029 H=[_|I],
15030 b_setval('$chr_store_global_ground_chr_translate____identifier_size___1',
15031 I),
15032 ( I=[J|_]
15033 -> setarg(3, J, _)
15034 ; true
15035 )
15036 ; G=[_, _|I],
15037 setarg(2, G, I),
15038 ( I=[J|_]
15039 -> setarg(3, J, G)
15040 ; true
15041 )
15042 ),
15043 K is F+1,
15044 identifier_index(A, B, K),
15045 identifier_size(K),
15046 C=K.
15047get_identifier_index(A, B, C) :-
15048 identifier_index(A, B, 2),
15049 identifier_size(2),
15050 C=2.
15051type_indexed_identifier_size(A, B) :-
15052 nb_getval('$chr_store_multi_hash_chr_translate____type_indexed_identifier_size___2-1',
15053 C),
15054 lookup_ht(C, A, D),
15055 ( member(E, D),
15056 E=suspension(_, active, _, _),
15057 !
15058 ; !,
15059 type_indexed_identifier_size___2__0__0__2(D, A, B)
15060 ).
15061type_indexed_identifier_size___2__0__0__2([], A, B) :-
15062 type_indexed_identifier_size___2__1(A, B).
15063type_indexed_identifier_size___2__0__0__2([A|B], C, D) :-
15064 ( A=suspension(_, active, E, _),
15065 E==C
15066 -> setarg(2, A, removed),
15067 nb_getval('$chr_store_multi_hash_chr_translate____type_indexed_identifier_size___2-1',
15068 F),
15069 delete_ht(F, C, A),
15070 type_indexed_identifier_size___2__0__0__2(B, C, D)
15071 ; type_indexed_identifier_size___2__0__0__2(B, C, D)
15072 ).
15073type_indexed_identifier_size(A, B) :-
15074 type_indexed_identifier_size___2__1(A, B).
15075type_indexed_identifier_size___2__1(A, B) :-
15076 C=suspension(D, active, A, B),
15077 'chr gen_id'(D),
15078 nb_getval('$chr_store_multi_hash_chr_translate____type_indexed_identifier_size___2-1',
15079 E),
15080 insert_ht(E, A, C).
15081get_type_indexed_identifier_size(A, B) :-
15082 nb_getval('$chr_store_multi_hash_chr_translate____type_indexed_identifier_size___2-1',
15083 C),
15084 lookup_ht(C, A, D),
15085 member(E, D),
15086 E=suspension(_, active, _, F),
15087 !,
15088 B=F.
15089get_type_indexed_identifier_size(_, 1).
15090type_indexed_identifier_index(A, B, C, D) :-
15091 nb_getval('$chr_store_multi_hash_chr_translate____type_indexed_identifier_index___4-23',
15092 E),
15093 lookup_ht(E, k(B, C), F),
15094 ( member(G, F),
15095 G=suspension(_, active, _, _, _, _),
15096 !
15097 ; !,
15098 type_indexed_identifier_index___4__0__0__2(F,
15099 A,
15100 B,
15101 C,
15102 D)
15103 ).
15104type_indexed_identifier_index___4__0__0__2([], A, B, C, D) :-
15105 type_indexed_identifier_index___4__1(A, B, C, D).
15106type_indexed_identifier_index___4__0__0__2([A|B], C, D, E, F) :-
15107 ( A=suspension(_, active, G, H, I, _),
15108 H==D,
15109 I==E
15110 -> setarg(2, A, removed),
15111 ( nb_getval('$chr_store_multi_hash_chr_translate____type_indexed_identifier_index___4-123',
15112 J),
15113 delete_ht(J, k(G, D, E), A)
15114 ),
15115 nb_getval('$chr_store_multi_hash_chr_translate____type_indexed_identifier_index___4-23',
15116 K),
15117 delete_ht(K, k(D, E), A),
15118 type_indexed_identifier_index___4__0__0__2(B,
15119 C,
15120 D,
15121 E,
15122 F)
15123 ; type_indexed_identifier_index___4__0__0__2(B,
15124 C,
15125 D,
15126 E,
15127 F)
15128 ).
15129type_indexed_identifier_index(A, B, C, D) :-
15130 type_indexed_identifier_index___4__1(A, B, C, D).
15131type_indexed_identifier_index___4__1(A, B, C, D) :-
15132 E=suspension(F, active, A, B, C, D),
15133 'chr gen_id'(F),
15134 nb_getval('$chr_store_multi_hash_chr_translate____type_indexed_identifier_index___4-123',
15135 G),
15136 insert_ht(G, k(A, B, C), E),
15137 nb_getval('$chr_store_multi_hash_chr_translate____type_indexed_identifier_index___4-23',
15138 H),
15139 insert_ht(H, k(B, C), E).
15140get_type_indexed_identifier_index(A, B, C, D) :-
15141 nb_getval('$chr_store_multi_hash_chr_translate____type_indexed_identifier_index___4-123',
15142 E),
15143 lookup_ht(E, k(A, B, C), F),
15144 member(G, F),
15145 G=suspension(_, active, _, _, _, H),
15146 !,
15147 D=H.
15148get_type_indexed_identifier_index(A, B, C, D) :-
15149 nb_getval('$chr_store_multi_hash_chr_translate____type_indexed_identifier_size___2-1',
15150 E),
15151 lookup_ht(E, A, F),
15152 member(G, F),
15153 G=suspension(_, active, _, H),
15154 !,
15155 setarg(2, G, removed),
15156 nb_getval('$chr_store_multi_hash_chr_translate____type_indexed_identifier_size___2-1',
15157 I),
15158 delete_ht(I, A, G),
15159 J is H+1,
15160 type_indexed_identifier_index(A, B, C, J),
15161 type_indexed_identifier_size(A, J),
15162 D=J.
15163get_type_indexed_identifier_index(A, B, C, D) :-
15164 type_indexed_identifier_index(A, B, C, 2),
15165 type_indexed_identifier_size(A, 2),
15166 D=2.
15167no_history(A) :-
15168 B=suspension(C, active, A),
15169 'chr gen_id'(C),
15170 nb_getval('$chr_store_multi_hash_chr_translate____no_history___1-1', D),
15171 insert_ht(D, A, B).
15172has_no_history(A) :-
15173 nb_getval('$chr_store_multi_hash_chr_translate____no_history___1-1', B),
15174 lookup_ht(B, A, C),
15175 member(D, C),
15176 D=suspension(_, active, _),
15177 !.
15178has_no_history(_) :-
15179 fail.
15180history(A, B, C) :-
15181 history___3__0(A, B, C, _).
15182history___3__0(A, B, C, D) :-
15183 nb_getval('$chr_store_multi_hash_chr_translate____history___3-1', E),
15184 lookup_ht(E, A, F),
15185 !,
15186 D=suspension(G, not_stored_yet, t, A, B, C),
15187 'chr gen_id'(G),
15188 history___3__0__0__1(F, A, B, C, D).
15189history___3__0__0__1([], A, B, C, D) :-
15190 history___3__1(A, B, C, D).
15191history___3__0__0__1([A|B], C, D, E, F) :-
15192 ( A=suspension(_, active, _, G, _, _),
15193 G==C,
15194 H=t(95, F, A),
15195 '$novel_production'(F, H),
15196 '$novel_production'(A, H)
15197 -> '$extend_history'(F, H),
15198 arg(2, F, I),
15199 setarg(2, F, active),
15200 ( I==not_stored_yet
15201 -> ( '$chr_store_constants_chr_translate____history___3___[3]'(E,
15202 J)
15203 -> nb_getval(J, K),
15204 b_setval(J, [F|K])
15205 ; true
15206 ),
15207 nb_getval('$chr_store_multi_hash_chr_translate____history___3-2',
15208 L),
15209 insert_ht(L, D, F),
15210 nb_getval('$chr_store_multi_hash_chr_translate____history___3-1',
15211 M),
15212 insert_ht(M, C, F)
15213 ; true
15214 ),
15215 chr_error(syntax,
15216 'Only one pragma history allowed per rule (rule number ~w)\n',
15217 [C]),
15218 ( F=suspension(_, active, _, _, _, _)
15219 -> setarg(2, F, inactive),
15220 history___3__0__0__1(B, C, D, E, F)
15221 ; true
15222 )
15223 ; history___3__0__0__1(B, C, D, E, F)
15224 ).
15225history___3__0(A, B, C, D) :-
15226 D=suspension(E, not_stored_yet, t, A, B, C),
15227 'chr gen_id'(E),
15228 history___3__1(A, B, C, D).
15229history___3__1(A, B, C, D) :-
15230 nb_getval('$chr_store_multi_hash_chr_translate____history___3-1', E),
15231 lookup_ht(E, A, F),
15232 !,
15233 history___3__1__0__2(F, A, B, C, D).
15234history___3__1__0__2([], A, B, C, D) :-
15235 history___3__2(A, B, C, D).
15236history___3__1__0__2([A|B], C, D, E, F) :-
15237 ( A=suspension(_, active, _, G, _, _),
15238 G==C,
15239 H=t(95, A, F),
15240 '$novel_production'(A, H),
15241 '$novel_production'(F, H)
15242 -> '$extend_history'(F, H),
15243 arg(2, F, I),
15244 setarg(2, F, active),
15245 ( I==not_stored_yet
15246 -> ( '$chr_store_constants_chr_translate____history___3___[3]'(E,
15247 J)
15248 -> nb_getval(J, K),
15249 b_setval(J, [F|K])
15250 ; true
15251 ),
15252 nb_getval('$chr_store_multi_hash_chr_translate____history___3-2',
15253 L),
15254 insert_ht(L, D, F),
15255 nb_getval('$chr_store_multi_hash_chr_translate____history___3-1',
15256 M),
15257 insert_ht(M, C, F)
15258 ; true
15259 ),
15260 chr_error(syntax,
15261 'Only one pragma history allowed per rule (rule number ~w)\n',
15262 [C]),
15263 ( F=suspension(_, active, _, _, _, _)
15264 -> setarg(2, F, inactive),
15265 history___3__1__0__2(B, C, D, E, F)
15266 ; true
15267 )
15268 ; history___3__1__0__2(B, C, D, E, F)
15269 ).
15270history___3__1(A, B, C, D) :-
15271 history___3__2(A, B, C, D).
15272history___3__2(A, B, C, D) :-
15273 nb_getval('$chr_store_multi_hash_chr_translate____history___3-2', E),
15274 lookup_ht(E, B, F),
15275 !,
15276 history___3__2__0__3(F, A, B, C, D).
15277history___3__2__0__3([], A, B, C, D) :-
15278 history___3__3(A, B, C, D).
15279history___3__2__0__3([A|B], C, D, E, F) :-
15280 ( A=suspension(_, active, _, G, H, I),
15281 H==D,
15282 J=t(96, F, A),
15283 '$novel_production'(F, J),
15284 '$novel_production'(A, J)
15285 -> '$extend_history'(F, J),
15286 arg(2, F, K),
15287 setarg(2, F, active),
15288 ( K==not_stored_yet
15289 -> ( '$chr_store_constants_chr_translate____history___3___[3]'(E,
15290 L)
15291 -> nb_getval(L, M),
15292 b_setval(L, [F|M])
15293 ; true
15294 ),
15295 nb_getval('$chr_store_multi_hash_chr_translate____history___3-2',
15296 N),
15297 insert_ht(N, D, F),
15298 nb_getval('$chr_store_multi_hash_chr_translate____history___3-1',
15299 O),
15300 insert_ht(O, C, F)
15301 ; true
15302 ),
15303 length(E, P),
15304 length(I, Q),
15305 ( P\==Q
15306 -> chr_error(syntax,
15307 'The history named ~w does not always range over an equal amount of occurrences.\n',
15308 [D])
15309 ; test_named_history_id_pairs(C, E, G, I)
15310 ),
15311 ( F=suspension(_, active, _, _, _, _)
15312 -> setarg(2, F, inactive),
15313 history___3__2__0__3(B, C, D, E, F)
15314 ; true
15315 )
15316 ; history___3__2__0__3(B, C, D, E, F)
15317 ).
15318history___3__2(A, B, C, D) :-
15319 history___3__3(A, B, C, D).
15320history___3__3(A, B, C, D) :-
15321 nb_getval('$chr_store_multi_hash_chr_translate____history___3-2', E),
15322 lookup_ht(E, B, F),
15323 !,
15324 history___3__3__0__4(F, A, B, C, D).
15325history___3__3__0__4([], A, B, C, D) :-
15326 history___3__4(A, B, C, D).
15327history___3__3__0__4([A|B], C, D, E, F) :-
15328 ( A=suspension(_, active, _, G, H, I),
15329 H==D,
15330 J=t(96, A, F),
15331 '$novel_production'(A, J),
15332 '$novel_production'(F, J)
15333 -> '$extend_history'(F, J),
15334 arg(2, F, K),
15335 setarg(2, F, active),
15336 ( K==not_stored_yet
15337 -> ( '$chr_store_constants_chr_translate____history___3___[3]'(E,
15338 L)
15339 -> nb_getval(L, M),
15340 b_setval(L, [F|M])
15341 ; true
15342 ),
15343 nb_getval('$chr_store_multi_hash_chr_translate____history___3-2',
15344 N),
15345 insert_ht(N, D, F),
15346 nb_getval('$chr_store_multi_hash_chr_translate____history___3-1',
15347 O),
15348 insert_ht(O, C, F)
15349 ; true
15350 ),
15351 length(I, P),
15352 length(E, Q),
15353 ( P\==Q
15354 -> chr_error(syntax,
15355 'The history named ~w does not always range over an equal amount of occurrences.\n',
15356 [D])
15357 ; test_named_history_id_pairs(G, I, C, E)
15358 ),
15359 ( F=suspension(_, active, _, _, _, _)
15360 -> setarg(2, F, inactive),
15361 history___3__3__0__4(B, C, D, E, F)
15362 ; true
15363 )
15364 ; history___3__3__0__4(B, C, D, E, F)
15365 ).
15366history___3__3(A, B, C, D) :-
15367 history___3__4(A, B, C, D).
15368history___3__4(A, B, [], C) :-
15369 nb_getval('$chr_store_global_ground_chr_translate____find_empty_named_histories___0',
15370 D),
15371 !,
15372 history___3__4__0__6(D, A, B, [], C).
15373history___3__4__0__6([], A, B, C, D) :-
15374 history___3__5(A, B, C, D).
15375history___3__4__0__6([A|B], C, D, E, F) :-
15376 ( A=suspension(_, active, _, _),
15377 G=t(142, A, F),
15378 '$novel_production'(A, G),
15379 '$novel_production'(F, G)
15380 -> '$extend_history'(F, G),
15381 arg(2, F, H),
15382 setarg(2, F, active),
15383 ( H==not_stored_yet
15384 -> ( '$chr_store_constants_chr_translate____history___3___[3]'(E,
15385 I)
15386 -> nb_getval(I, J),
15387 b_setval(I, [F|J])
15388 ; true
15389 ),
15390 nb_getval('$chr_store_multi_hash_chr_translate____history___3-2',
15391 K),
15392 insert_ht(K, D, F),
15393 nb_getval('$chr_store_multi_hash_chr_translate____history___3-1',
15394 L),
15395 insert_ht(L, C, F)
15396 ; true
15397 ),
15398 generate_empty_named_history_initialisation(D),
15399 ( F=suspension(_, active, _, _, _, _)
15400 -> setarg(2, F, inactive),
15401 history___3__4__0__6(B, C, D, E, F)
15402 ; true
15403 )
15404 ; history___3__4__0__6(B, C, D, E, F)
15405 ).
15406history___3__4(A, B, C, D) :-
15407 history___3__5(A, B, C, D).
15408history___3__5(A, B, C, D) :-
15409 arg(2, D, E),
15410 setarg(2, D, active),
15411 ( E==not_stored_yet
15412 -> ( '$chr_store_constants_chr_translate____history___3___[3]'(C,
15413 F)
15414 -> nb_getval(F, G),
15415 b_setval(F, [D|G])
15416 ; true
15417 ),
15418 nb_getval('$chr_store_multi_hash_chr_translate____history___3-2',
15419 H),
15420 insert_ht(H, B, D),
15421 nb_getval('$chr_store_multi_hash_chr_translate____history___3-1',
15422 I),
15423 insert_ht(I, A, D)
15424 ; true
15425 ).
15426named_history(A, B, C) :-
15427 ground(A),
15428 nb_getval('$chr_store_multi_hash_chr_translate____history___3-1', D),
15429 lookup_ht(D, A, E),
15430 member(F, E),
15431 F=suspension(_, active, _, _, G, H),
15432 !,
15433 B=G,
15434 C=H.
15435named_history(_, _, _) :-
15436 fail.
15437test_named_history_id_pair(A, B, C, D) :-
15438 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-34',
15439 E),
15440 lookup_ht(E, k(A, B), F),
15441 member(G, F),
15442 G=suspension(_, active, _, _, H, _, _, _, _),
15443 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-134',
15444 I),
15445 lookup_ht(I, k(H, C, D), J),
15446 member(K, J),
15447 K=suspension(_, active, _, _, _, _, _, _, _),
15448 K\==G,
15449 !.
15450test_named_history_id_pair(A, _, B, _) :-
15451 chr_error(syntax,
15452 'Occurrences of shared history in rules number ~w and ~w do not correspond\n',
15453 [B, A]).
15454indexing_spec(A, B) :-
15455 nb_getval('$chr_store_multi_hash_chr_translate____indexing_spec___2-1',
15456 C),
15457 lookup_ht(C, A, D),
15458 member(E, D),
15459 E=suspension(_, active, _, F),
15460 !,
15461 setarg(2, E, removed),
15462 nb_getval('$chr_store_multi_hash_chr_translate____indexing_spec___2-1',
15463 G),
15464 delete_ht(G, A, E),
15465 append(B, F, H),
15466 indexing_spec(A, H).
15467indexing_spec(A, B) :-
15468 C=suspension(D, active, A, B),
15469 'chr gen_id'(D),
15470 nb_getval('$chr_store_multi_hash_chr_translate____indexing_spec___2-1',
15471 E),
15472 insert_ht(E, A, C).
15473get_indexing_spec(A, B) :-
15474 nb_getval('$chr_store_multi_hash_chr_translate____indexing_spec___2-1',
15475 C),
15476 lookup_ht(C, A, D),
15477 member(E, D),
15478 E=suspension(_, active, _, F),
15479 !,
15480 B=F.
15481get_indexing_spec(_, []).
15482observation_analysis(A) :-
15483 observation_analysis___1__0(A, _).
15484observation_analysis___1__0(A, B) :-
15485 nb_getval('$chr_store_global_ground_chr_translate____rule___2', C),
15486 !,
15487 B=suspension(D, not_stored_yet, _, A),
15488 'chr gen_id'(D),
15489 observation_analysis___1__0__0__1(C, A, B).
15490observation_analysis___1__0__0__1([], A, B) :-
15491 observation_analysis___1__1(A, B).
15492observation_analysis___1__0__0__1([A|B], C, D) :-
15493 ( A=suspension(_, active, _, _, E, F)
15494 -> F=pragma(rule(_, _, G, H), _, _, _, _),
15495 ( chr_pp_flag(store_in_guards, on)
15496 -> observation_analysis(E, G, guard, C)
15497 ; true
15498 ),
15499 observation_analysis(E, H, body, C),
15500 observation_analysis___1__0__0__1(B, C, D)
15501 ; observation_analysis___1__0__0__1(B, C, D)
15502 ).
15503observation_analysis___1__0(A, B) :-
15504 B=suspension(C, not_stored_yet, _, A),
15505 'chr gen_id'(C),
15506 observation_analysis___1__1(A, B).
15507observation_analysis___1__1(_, A) :-
15508 ( var(A)
15509 -> true
15510 ; arg(2, A, B),
15511 setarg(2, A, removed),
15512 ( B==not_stored_yet
15513 -> true
15514 ; arg(3, A, C),
15515 ( var(C)
15516 -> nb_getval('$chr_store_global_ground_chr_translate____observation_analysis___1',
15517 D),
15518 D=[_|E],
15519 b_setval('$chr_store_global_ground_chr_translate____observation_analysis___1',
15520 E),
15521 ( E=[F|_]
15522 -> setarg(3, F, _)
15523 ; true
15524 )
15525 ; C=[_, _|E],
15526 setarg(2, C, E),
15527 ( E=[F|_]
15528 -> setarg(3, F, C)
15529 ; true
15530 )
15531 )
15532 )
15533 ).
15534spawns(A, B, C) :-
15535 spawns___3__0(A, B, C, _).
15536spawns___3__0(A, B, C, _) :-
15537 nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-123', D),
15538 lookup_ht(D, k(A, B, C), E),
15539 member(F, E),
15540 F=suspension(_, active, _, _, _, _, _),
15541 !.
15542spawns___3__0(A, body, B, _) :-
15543 nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-123', C),
15544 lookup_ht(C, k(A, guard, B), D),
15545 member(E, D),
15546 E=suspension(_, active, _, _, _, _, _),
15547 !.
15548spawns___3__0(A, guard, B, C) :-
15549 nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-123', D),
15550 lookup_ht(D, k(A, body, B), E),
15551 !,
15552 spawns___3__0__0__4(E, A, guard, B, C).
15553spawns___3__0__0__4([], A, B, C, D) :-
15554 spawns___3__1(A, B, C, D).
15555spawns___3__0__0__4([A|B], C, D, E, F) :-
15556 ( A=suspension(_, active, _, _, G, H, I),
15557 G==C,
15558 H=body,
15559 I==E
15560 -> setarg(2, A, removed),
15561 ( nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-13',
15562 J),
15563 delete_ht(J, k(C, E), A)
15564 ),
15565 ( arg(4, A, K),
15566 ( var(K)
15567 -> nb_getval('$chr_store_global_ground_chr_translate____spawns___3',
15568 L),
15569 L=[_|M],
15570 b_setval('$chr_store_global_ground_chr_translate____spawns___3',
15571 M),
15572 ( M=[N|_]
15573 -> setarg(4, N, _)
15574 ; true
15575 )
15576 ; K=[_, _|M],
15577 setarg(2, K, M),
15578 ( M=[N|_]
15579 -> setarg(4, N, K)
15580 ; true
15581 )
15582 )
15583 ),
15584 ( nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-12',
15585 O),
15586 delete_ht(O, k(C, body), A)
15587 ),
15588 ( nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-1',
15589 P),
15590 delete_ht(P, C, A)
15591 ),
15592 ( nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-3',
15593 Q),
15594 delete_ht(Q, E, A)
15595 ),
15596 nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-123',
15597 R),
15598 delete_ht(R, k(C, body, E), A),
15599 spawns___3__0__0__4(B, C, D, E, F)
15600 ; spawns___3__0__0__4(B, C, D, E, F)
15601 ).
15602spawns___3__0(A, B, C, D) :-
15603 spawns___3__1(A, B, C, D).
15604spawns___3__1(A, B, C, D) :-
15605 nb_getval('$chr_store_multi_hash_chr_translate____spawns_all___2-12',
15606 E),
15607 lookup_ht(E, k(A, B), F),
15608 member(G, F),
15609 G=suspension(_, active, _, _),
15610 !,
15611 ( var(D)
15612 -> true
15613 ; arg(2, D, H),
15614 setarg(2, D, removed),
15615 ( H==not_stored_yet
15616 -> true
15617 ; nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-13',
15618 I),
15619 delete_ht(I, k(A, C), D),
15620 arg(4, D, J),
15621 ( var(J)
15622 -> nb_getval('$chr_store_global_ground_chr_translate____spawns___3',
15623 K),
15624 K=[_|L],
15625 b_setval('$chr_store_global_ground_chr_translate____spawns___3',
15626 L),
15627 ( L=[M|_]
15628 -> setarg(4, M, _)
15629 ; true
15630 )
15631 ; J=[_, _|L],
15632 setarg(2, J, L),
15633 ( L=[M|_]
15634 -> setarg(4, M, J)
15635 ; true
15636 )
15637 ),
15638 nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-12',
15639 N),
15640 delete_ht(N, k(A, B), D),
15641 nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-1',
15642 O),
15643 delete_ht(O, A, D),
15644 nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-3',
15645 P),
15646 delete_ht(P, C, D),
15647 nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-123',
15648 Q),
15649 delete_ht(Q, k(A, B, C), D)
15650 )
15651 ).
15652spawns___3__1(A, body, B, C) :-
15653 nb_getval('$chr_store_multi_hash_chr_translate____spawns_all___2-12',
15654 D),
15655 lookup_ht(D, k(A, guard), E),
15656 member(F, E),
15657 F=suspension(_, active, _, _),
15658 !,
15659 ( var(C)
15660 -> true
15661 ; arg(2, C, G),
15662 setarg(2, C, removed),
15663 ( G==not_stored_yet
15664 -> true
15665 ; nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-13',
15666 H),
15667 delete_ht(H, k(A, B), C),
15668 arg(4, C, I),
15669 ( var(I)
15670 -> nb_getval('$chr_store_global_ground_chr_translate____spawns___3',
15671 J),
15672 J=[_|K],
15673 b_setval('$chr_store_global_ground_chr_translate____spawns___3',
15674 K),
15675 ( K=[L|_]
15676 -> setarg(4, L, _)
15677 ; true
15678 )
15679 ; I=[_, _|K],
15680 setarg(2, I, K),
15681 ( K=[L|_]
15682 -> setarg(4, L, I)
15683 ; true
15684 )
15685 ),
15686 nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-12',
15687 M),
15688 delete_ht(M, k(A, body), C),
15689 nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-1',
15690 N),
15691 delete_ht(N, A, C),
15692 nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-3',
15693 O),
15694 delete_ht(O, B, C),
15695 nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-123',
15696 P),
15697 delete_ht(P, k(A, body, B), C)
15698 )
15699 ).
15700spawns___3__1(A, B, C, D) :-
15701 nb_getval('$chr_store_multi_hash_chr_translate____spawns_all_triggers___2-12',
15702 E),
15703 lookup_ht(E, k(A, B), F),
15704 member(G, F),
15705 G=suspension(_, active, _, _, _, _),
15706 may_trigger(C),
15707 !,
15708 ( var(D)
15709 -> true
15710 ; arg(2, D, H),
15711 setarg(2, D, removed),
15712 ( H==not_stored_yet
15713 -> true
15714 ; nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-13',
15715 I),
15716 delete_ht(I, k(A, C), D),
15717 arg(4, D, J),
15718 ( var(J)
15719 -> nb_getval('$chr_store_global_ground_chr_translate____spawns___3',
15720 K),
15721 K=[_|L],
15722 b_setval('$chr_store_global_ground_chr_translate____spawns___3',
15723 L),
15724 ( L=[M|_]
15725 -> setarg(4, M, _)
15726 ; true
15727 )
15728 ; J=[_, _|L],
15729 setarg(2, J, L),
15730 ( L=[M|_]
15731 -> setarg(4, M, J)
15732 ; true
15733 )
15734 ),
15735 nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-12',
15736 N),
15737 delete_ht(N, k(A, B), D),
15738 nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-1',
15739 O),
15740 delete_ht(O, A, D),
15741 nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-3',
15742 P),
15743 delete_ht(P, C, D),
15744 nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-123',
15745 Q),
15746 delete_ht(Q, k(A, B, C), D)
15747 )
15748 ).
15749spawns___3__1(A, body, B, C) :-
15750 nb_getval('$chr_store_multi_hash_chr_translate____spawns_all_triggers___2-12',
15751 D),
15752 lookup_ht(D, k(A, guard), E),
15753 member(F, E),
15754 F=suspension(_, active, _, _, _, _),
15755 may_trigger(B),
15756 !,
15757 ( var(C)
15758 -> true
15759 ; arg(2, C, G),
15760 setarg(2, C, removed),
15761 ( G==not_stored_yet
15762 -> true
15763 ; nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-13',
15764 H),
15765 delete_ht(H, k(A, B), C),
15766 arg(4, C, I),
15767 ( var(I)
15768 -> nb_getval('$chr_store_global_ground_chr_translate____spawns___3',
15769 J),
15770 J=[_|K],
15771 b_setval('$chr_store_global_ground_chr_translate____spawns___3',
15772 K),
15773 ( K=[L|_]
15774 -> setarg(4, L, _)
15775 ; true
15776 )
15777 ; I=[_, _|K],
15778 setarg(2, I, K),
15779 ( K=[L|_]
15780 -> setarg(4, L, I)
15781 ; true
15782 )
15783 ),
15784 nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-12',
15785 M),
15786 delete_ht(M, k(A, body), C),
15787 nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-1',
15788 N),
15789 delete_ht(N, A, C),
15790 nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-3',
15791 O),
15792 delete_ht(O, B, C),
15793 nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-123',
15794 P),
15795 delete_ht(P, k(A, body, B), C)
15796 )
15797 ).
15798spawns___3__1(A, B, C, D) :-
15799 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-1', E),
15800 lookup_ht(E, C, F),
15801 ( member(G, F),
15802 G=suspension(_, active, _, _, _, _, H, I, _),
15803 ( nb_getval('$chr_store_multi_hash_chr_translate____spawns_all___2-1',
15804 J),
15805 lookup_ht(J, H, K),
15806 member(L, K),
15807 L=suspension(_, active, _, _),
15808 \+ is_passive(H, I),
15809 !,
15810 ( var(D)
15811 -> true
15812 ; arg(2, D, M),
15813 setarg(2, D, removed),
15814 ( M==not_stored_yet
15815 -> true
15816 ; nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-13',
15817 N),
15818 delete_ht(N, k(A, C), D),
15819 arg(4, D, O),
15820 ( var(O)
15821 -> nb_getval('$chr_store_global_ground_chr_translate____spawns___3',
15822 P),
15823 P=[_|Q],
15824 b_setval('$chr_store_global_ground_chr_translate____spawns___3',
15825 Q),
15826 ( Q=[R|_]
15827 -> setarg(4, R, _)
15828 ; true
15829 )
15830 ; O=[_, _|Q],
15831 setarg(2, O, Q),
15832 ( Q=[R|_]
15833 -> setarg(4, R, O)
15834 ; true
15835 )
15836 ),
15837 nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-12',
15838 S),
15839 delete_ht(S, k(A, B), D),
15840 nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-1',
15841 T),
15842 delete_ht(T, A, D),
15843 nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-3',
15844 U),
15845 delete_ht(U, C, D),
15846 nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-123',
15847 V),
15848 delete_ht(V, k(A, B, C), D)
15849 )
15850 ),
15851 spawns_all(A, B)
15852 ; nb_getval('$chr_store_multi_hash_chr_translate____spawns_all_triggers___2-1',
15853 W),
15854 lookup_ht(W, H, X),
15855 member(Y, X),
15856 Y=suspension(_, active, _, _, _, _),
15857 may_trigger(C),
15858 \+ is_passive(H, I),
15859 !,
15860 ( var(D)
15861 -> true
15862 ; arg(2, D, Z),
15863 setarg(2, D, removed),
15864 ( Z==not_stored_yet
15865 -> true
15866 ; nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-13',
15867 A1),
15868 delete_ht(A1, k(A, C), D),
15869 arg(4, D, B1),
15870 ( var(B1)
15871 -> nb_getval('$chr_store_global_ground_chr_translate____spawns___3',
15872 C1),
15873 C1=[_|D1],
15874 b_setval('$chr_store_global_ground_chr_translate____spawns___3',
15875 D1),
15876 ( D1=[E1|_]
15877 -> setarg(4, E1, _)
15878 ; true
15879 )
15880 ; B1=[_, _|D1],
15881 setarg(2, B1, D1),
15882 ( D1=[E1|_]
15883 -> setarg(4, E1, B1)
15884 ; true
15885 )
15886 ),
15887 nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-12',
15888 F1),
15889 delete_ht(F1, k(A, B), D),
15890 nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-1',
15891 G1),
15892 delete_ht(G1, A, D),
15893 nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-3',
15894 H1),
15895 delete_ht(H1, C, D),
15896 nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-123',
15897 I1),
15898 delete_ht(I1, k(A, B, C), D)
15899 )
15900 ),
15901 spawns_all_triggers(A, B)
15902 )
15903 ; !,
15904 D=suspension(J1, not_stored_yet, t, _, A, B, C),
15905 'chr gen_id'(J1),
15906 spawns___3__1__0__11(F, A, B, C, D)
15907 ).
15908spawns___3__1__0__11([], A, B, C, D) :-
15909 spawns___3__2(A, B, C, D).
15910spawns___3__1__0__11([A|B], C, D, E, F) :-
15911 ( A=suspension(_, active, _, _, G, _, H, I, _),
15912 G==E,
15913 nb_getval('$chr_store_multi_hash_chr_translate____spawns_all_triggers___2-1',
15914 J),
15915 lookup_ht(J, H, K)
15916 -> spawns___3__1__1__11(K,
15917 H,
15918 I,
15919 A,
15920 B,
15921 C,
15922 D,
15923 E,
15924 F)
15925 ; spawns___3__1__0__11(B, C, D, E, F)
15926 ).
15927spawns___3__1__1__11([], _, _, _, A, B, C, D, E) :-
15928 spawns___3__1__0__11(A, B, C, D, E).
15929spawns___3__1__1__11([A|B], C, D, E, F, G, H, I, J) :-
15930 ( A=suspension(_, active, _, _, K, _),
15931 K==C,
15932 L=t(123, A, E, J),
15933 '$novel_production'(A, L),
15934 '$novel_production'(J, L),
15935 \+ may_trigger(I),
15936 \+ is_passive(C, D)
15937 -> '$extend_history'(J, L),
15938 arg(2, J, M),
15939 setarg(2, J, active),
15940 ( M==not_stored_yet
15941 -> nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-13',
15942 N),
15943 insert_ht(N, k(G, I), J),
15944 nb_getval('$chr_store_global_ground_chr_translate____spawns___3',
15945 O),
15946 P=[J|O],
15947 b_setval('$chr_store_global_ground_chr_translate____spawns___3',
15948 P),
15949 ( O=[Q|_]
15950 -> setarg(4, Q, P)
15951 ; true
15952 ),
15953 nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-12',
15954 R),
15955 insert_ht(R, k(G, H), J),
15956 nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-1',
15957 S),
15958 insert_ht(S, G, J),
15959 nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-3',
15960 T),
15961 insert_ht(T, I, J),
15962 nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-123',
15963 U),
15964 insert_ht(U, k(G, H, I), J)
15965 ; true
15966 ),
15967 spawns_all_triggers(G, H),
15968 ( J=suspension(_, active, _, _, _, _, _)
15969 -> setarg(2, J, inactive),
15970 spawns___3__1__1__11(B,
15971 C,
15972 D,
15973 E,
15974 F,
15975 G,
15976 H,
15977 I,
15978 J)
15979 ; true
15980 )
15981 ; spawns___3__1__1__11(B,
15982 C,
15983 D,
15984 E,
15985 F,
15986 G,
15987 H,
15988 I,
15989 J)
15990 ).
15991spawns___3__1(A, B, C, D) :-
15992 D=suspension(E, not_stored_yet, t, _, A, B, C),
15993 'chr gen_id'(E),
15994 spawns___3__2(A, B, C, D).
15995spawns___3__2(A, B, C, D) :-
15996 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-3', E),
15997 lookup_ht(E, A, F),
15998 !,
15999 spawns___3__2__0__12(F, A, B, C, D).
16000spawns___3__2__0__12([], A, B, C, D) :-
16001 spawns___3__3(A, B, C, D).
16002spawns___3__2__0__12([A|B], C, D, E, F) :-
16003 ( A=suspension(_, active, _, _, G, _, H, I, _),
16004 H==C,
16005 nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-3', J),
16006 lookup_ht(J, G, K)
16007 -> spawns___3__2__1__12(K,
16008 G,
16009 I,
16010 A,
16011 B,
16012 C,
16013 D,
16014 E,
16015 F)
16016 ; spawns___3__2__0__12(B, C, D, E, F)
16017 ).
16018spawns___3__2__1__12([], _, _, _, A, B, C, D, E) :-
16019 spawns___3__2__0__12(A, B, C, D, E).
16020spawns___3__2__1__12([A|B], C, D, E, F, G, H, I, J) :-
16021 ( A=suspension(_, active, _, _, K, L, M),
16022 M==C,
16023 N=t(124, J, E, A),
16024 '$novel_production'(J, N),
16025 '$novel_production'(A, N),
16026 K\==G,
16027 C\==I,
16028 \+ is_passive(G, D)
16029 -> '$extend_history'(J, N),
16030 arg(2, J, O),
16031 setarg(2, J, active),
16032 ( O==not_stored_yet
16033 -> nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-13',
16034 P),
16035 insert_ht(P, k(G, I), J),
16036 nb_getval('$chr_store_global_ground_chr_translate____spawns___3',
16037 Q),
16038 R=[J|Q],
16039 b_setval('$chr_store_global_ground_chr_translate____spawns___3',
16040 R),
16041 ( Q=[S|_]
16042 -> setarg(4, S, R)
16043 ; true
16044 ),
16045 nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-12',
16046 T),
16047 insert_ht(T, k(G, H), J),
16048 nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-1',
16049 U),
16050 insert_ht(U, G, J),
16051 nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-3',
16052 V),
16053 insert_ht(V, I, J),
16054 nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-123',
16055 W),
16056 insert_ht(W, k(G, H, I), J)
16057 ; true
16058 ),
16059 spawns(K, L, I),
16060 ( J=suspension(_, active, _, _, _, _, _)
16061 -> setarg(2, J, inactive),
16062 spawns___3__2__1__12(B,
16063 C,
16064 D,
16065 E,
16066 F,
16067 G,
16068 H,
16069 I,
16070 J)
16071 ; true
16072 )
16073 ; spawns___3__2__1__12(B,
16074 C,
16075 D,
16076 E,
16077 F,
16078 G,
16079 H,
16080 I,
16081 J)
16082 ).
16083spawns___3__2(A, B, C, D) :-
16084 spawns___3__3(A, B, C, D).
16085spawns___3__3(A, B, C, D) :-
16086 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-1', E),
16087 lookup_ht(E, C, F),
16088 !,
16089 spawns___3__3__0__13(F, A, B, C, D).
16090spawns___3__3__0__13([], A, B, C, D) :-
16091 spawns___3__4(A, B, C, D).
16092spawns___3__3__0__13([A|B], C, D, E, F) :-
16093 ( A=suspension(_, active, _, _, G, _, H, I, _),
16094 G==E,
16095 nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-1', J),
16096 lookup_ht(J, H, K)
16097 -> spawns___3__3__1__13(K,
16098 H,
16099 I,
16100 A,
16101 B,
16102 C,
16103 D,
16104 E,
16105 F)
16106 ; spawns___3__3__0__13(B, C, D, E, F)
16107 ).
16108spawns___3__3__1__13([], _, _, _, A, B, C, D, E) :-
16109 spawns___3__3__0__13(A, B, C, D, E).
16110spawns___3__3__1__13([A|B], C, D, E, F, G, H, I, J) :-
16111 ( A=suspension(_, active, _, _, K, _, L),
16112 K==C,
16113 M=t(124, A, E, J),
16114 '$novel_production'(A, M),
16115 '$novel_production'(J, M),
16116 G\==C,
16117 I\==L,
16118 \+ is_passive(C, D)
16119 -> '$extend_history'(J, M),
16120 arg(2, J, N),
16121 setarg(2, J, active),
16122 ( N==not_stored_yet
16123 -> nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-13',
16124 O),
16125 insert_ht(O, k(G, I), J),
16126 nb_getval('$chr_store_global_ground_chr_translate____spawns___3',
16127 P),
16128 Q=[J|P],
16129 b_setval('$chr_store_global_ground_chr_translate____spawns___3',
16130 Q),
16131 ( P=[R|_]
16132 -> setarg(4, R, Q)
16133 ; true
16134 ),
16135 nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-12',
16136 S),
16137 insert_ht(S, k(G, H), J),
16138 nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-1',
16139 T),
16140 insert_ht(T, G, J),
16141 nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-3',
16142 U),
16143 insert_ht(U, I, J),
16144 nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-123',
16145 V),
16146 insert_ht(V, k(G, H, I), J)
16147 ; true
16148 ),
16149 spawns(G, H, L),
16150 ( J=suspension(_, active, _, _, _, _, _)
16151 -> setarg(2, J, inactive),
16152 spawns___3__3__1__13(B,
16153 C,
16154 D,
16155 E,
16156 F,
16157 G,
16158 H,
16159 I,
16160 J)
16161 ; true
16162 )
16163 ; spawns___3__3__1__13(B,
16164 C,
16165 D,
16166 E,
16167 F,
16168 G,
16169 H,
16170 I,
16171 J)
16172 ).
16173spawns___3__3(A, B, C, D) :-
16174 spawns___3__4(A, B, C, D).
16175spawns___3__4(A, B, C, D) :-
16176 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-3', E),
16177 lookup_ht(E, A, F),
16178 !,
16179 spawns___3__4__0__14(F, A, B, C, D).
16180spawns___3__4__0__14([], A, B, C, D) :-
16181 spawns___3__5(A, B, C, D).
16182spawns___3__4__0__14([A|B], C, D, E, F) :-
16183 ( A=suspension(_, active, _, _, G, _, H, I, _),
16184 H==C,
16185 nb_getval('$chr_store_global_ground_chr_translate____spawns_all_triggers___2',
16186 J)
16187 -> spawns___3__4__1__14(J,
16188 G,
16189 I,
16190 A,
16191 B,
16192 C,
16193 D,
16194 E,
16195 F)
16196 ; spawns___3__4__0__14(B, C, D, E, F)
16197 ).
16198spawns___3__4__1__14([], _, _, _, A, B, C, D, E) :-
16199 spawns___3__4__0__14(A, B, C, D, E).
16200spawns___3__4__1__14([A|B], C, D, E, F, G, H, I, J) :-
16201 ( A=suspension(_, active, _, _, K, L),
16202 M=t(125, J, E, A),
16203 '$novel_production'(J, M),
16204 '$novel_production'(A, M),
16205 \+ is_passive(G, D),
16206 may_trigger(C),
16207 \+ may_trigger(I)
16208 -> '$extend_history'(J, M),
16209 arg(2, J, N),
16210 setarg(2, J, active),
16211 ( N==not_stored_yet
16212 -> nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-13',
16213 O),
16214 insert_ht(O, k(G, I), J),
16215 nb_getval('$chr_store_global_ground_chr_translate____spawns___3',
16216 P),
16217 Q=[J|P],
16218 b_setval('$chr_store_global_ground_chr_translate____spawns___3',
16219 Q),
16220 ( P=[R|_]
16221 -> setarg(4, R, Q)
16222 ; true
16223 ),
16224 nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-12',
16225 S),
16226 insert_ht(S, k(G, H), J),
16227 nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-1',
16228 T),
16229 insert_ht(T, G, J),
16230 nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-3',
16231 U),
16232 insert_ht(U, I, J),
16233 nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-123',
16234 V),
16235 insert_ht(V, k(G, H, I), J)
16236 ; true
16237 ),
16238 spawns(K, L, I),
16239 ( J=suspension(_, active, _, _, _, _, _)
16240 -> setarg(2, J, inactive),
16241 spawns___3__4__1__14(B,
16242 C,
16243 D,
16244 E,
16245 F,
16246 G,
16247 H,
16248 I,
16249 J)
16250 ; true
16251 )
16252 ; spawns___3__4__1__14(B,
16253 C,
16254 D,
16255 E,
16256 F,
16257 G,
16258 H,
16259 I,
16260 J)
16261 ).
16262spawns___3__4(A, B, C, D) :-
16263 spawns___3__5(A, B, C, D).
16264spawns___3__5(A, B, C, D) :-
16265 arg(2, D, E),
16266 setarg(2, D, active),
16267 ( E==not_stored_yet
16268 -> nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-13',
16269 F),
16270 insert_ht(F, k(A, C), D),
16271 nb_getval('$chr_store_global_ground_chr_translate____spawns___3',
16272 G),
16273 H=[D|G],
16274 b_setval('$chr_store_global_ground_chr_translate____spawns___3', H),
16275 ( G=[I|_]
16276 -> setarg(4, I, H)
16277 ; true
16278 ),
16279 nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-12',
16280 J),
16281 insert_ht(J, k(A, B), D),
16282 nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-1',
16283 K),
16284 insert_ht(K, A, D),
16285 nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-3',
16286 L),
16287 insert_ht(L, C, D),
16288 nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-123',
16289 M),
16290 insert_ht(M, k(A, B, C), D)
16291 ; true
16292 ).
16293spawns_all(A, B) :-
16294 spawns_all___2__0(A, B, _).
16295spawns_all___2__0(A, B, _) :-
16296 nb_getval('$chr_store_multi_hash_chr_translate____spawns_all___2-12',
16297 C),
16298 lookup_ht(C, k(A, B), D),
16299 member(E, D),
16300 E=suspension(_, active, _, _),
16301 !.
16302spawns_all___2__0(A, body, _) :-
16303 nb_getval('$chr_store_multi_hash_chr_translate____spawns_all___2-12',
16304 B),
16305 lookup_ht(B, k(A, guard), C),
16306 member(D, C),
16307 D=suspension(_, active, _, _),
16308 !.
16309spawns_all___2__0(A, guard, B) :-
16310 nb_getval('$chr_store_multi_hash_chr_translate____spawns_all___2-12',
16311 C),
16312 lookup_ht(C, k(A, body), D),
16313 !,
16314 spawns_all___2__0__0__4(D, A, guard, B).
16315spawns_all___2__0__0__4([], A, B, C) :-
16316 spawns_all___2__1(A, B, C).
16317spawns_all___2__0__0__4([A|B], C, D, E) :-
16318 ( A=suspension(_, active, F, G),
16319 F==C,
16320 G=body
16321 -> setarg(2, A, removed),
16322 ( nb_getval('$chr_store_multi_hash_chr_translate____spawns_all___2-1',
16323 H),
16324 delete_ht(H, C, A)
16325 ),
16326 nb_getval('$chr_store_multi_hash_chr_translate____spawns_all___2-12',
16327 I),
16328 delete_ht(I, k(C, body), A),
16329 spawns_all___2__0__0__4(B, C, D, E)
16330 ; spawns_all___2__0__0__4(B, C, D, E)
16331 ).
16332spawns_all___2__0(A, B, C) :-
16333 spawns_all___2__1(A, B, C).
16334spawns_all___2__1(A, B, C) :-
16335 nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-12', D),
16336 lookup_ht(D, k(A, B), E),
16337 !,
16338 spawns_all___2__1__0__5(E, A, B, C).
16339spawns_all___2__1__0__5([], A, B, C) :-
16340 spawns_all___2__2(A, B, C).
16341spawns_all___2__1__0__5([A|B], C, D, E) :-
16342 ( A=suspension(_, active, _, _, F, G, H),
16343 F==C,
16344 G==D
16345 -> setarg(2, A, removed),
16346 ( nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-13',
16347 I),
16348 delete_ht(I, k(C, H), A)
16349 ),
16350 ( arg(4, A, J),
16351 ( var(J)
16352 -> nb_getval('$chr_store_global_ground_chr_translate____spawns___3',
16353 K),
16354 K=[_|L],
16355 b_setval('$chr_store_global_ground_chr_translate____spawns___3',
16356 L),
16357 ( L=[M|_]
16358 -> setarg(4, M, _)
16359 ; true
16360 )
16361 ; J=[_, _|L],
16362 setarg(2, J, L),
16363 ( L=[M|_]
16364 -> setarg(4, M, J)
16365 ; true
16366 )
16367 )
16368 ),
16369 ( nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-12',
16370 N),
16371 delete_ht(N, k(C, D), A)
16372 ),
16373 ( nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-1',
16374 O),
16375 delete_ht(O, C, A)
16376 ),
16377 ( nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-3',
16378 P),
16379 delete_ht(P, H, A)
16380 ),
16381 nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-123',
16382 Q),
16383 delete_ht(Q, k(C, D, H), A),
16384 spawns_all___2__1__0__5(B, C, D, E)
16385 ; spawns_all___2__1__0__5(B, C, D, E)
16386 ).
16387spawns_all___2__1(A, B, C) :-
16388 spawns_all___2__2(A, B, C).
16389spawns_all___2__2(A, guard, B) :-
16390 nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-12', C),
16391 lookup_ht(C, k(A, body), D),
16392 !,
16393 spawns_all___2__2__0__6(D, A, guard, B).
16394spawns_all___2__2__0__6([], A, B, C) :-
16395 spawns_all___2__3(A, B, C).
16396spawns_all___2__2__0__6([A|B], C, D, E) :-
16397 ( A=suspension(_, active, _, _, F, G, H),
16398 F==C,
16399 G=body
16400 -> setarg(2, A, removed),
16401 ( nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-13',
16402 I),
16403 delete_ht(I, k(C, H), A)
16404 ),
16405 ( arg(4, A, J),
16406 ( var(J)
16407 -> nb_getval('$chr_store_global_ground_chr_translate____spawns___3',
16408 K),
16409 K=[_|L],
16410 b_setval('$chr_store_global_ground_chr_translate____spawns___3',
16411 L),
16412 ( L=[M|_]
16413 -> setarg(4, M, _)
16414 ; true
16415 )
16416 ; J=[_, _|L],
16417 setarg(2, J, L),
16418 ( L=[M|_]
16419 -> setarg(4, M, J)
16420 ; true
16421 )
16422 )
16423 ),
16424 ( nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-12',
16425 N),
16426 delete_ht(N, k(C, body), A)
16427 ),
16428 ( nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-1',
16429 O),
16430 delete_ht(O, C, A)
16431 ),
16432 ( nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-3',
16433 P),
16434 delete_ht(P, H, A)
16435 ),
16436 nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-123',
16437 Q),
16438 delete_ht(Q, k(C, body, H), A),
16439 spawns_all___2__2__0__6(B, C, D, E)
16440 ; spawns_all___2__2__0__6(B, C, D, E)
16441 ).
16442spawns_all___2__2(A, B, C) :-
16443 spawns_all___2__3(A, B, C).
16444spawns_all___2__3(A, B, C) :-
16445 nb_getval('$chr_store_multi_hash_chr_translate____spawns_all_triggers___2-12',
16446 D),
16447 lookup_ht(D, k(A, B), E),
16448 !,
16449 spawns_all___2__3__0__7(E, A, B, C).
16450spawns_all___2__3__0__7([], A, B, C) :-
16451 spawns_all___2__4(A, B, C).
16452spawns_all___2__3__0__7([A|B], C, D, E) :-
16453 ( A=suspension(_, active, _, _, F, G),
16454 F==C,
16455 G==D
16456 -> setarg(2, A, removed),
16457 ( arg(4, A, H),
16458 ( var(H)
16459 -> nb_getval('$chr_store_global_ground_chr_translate____spawns_all_triggers___2',
16460 I),
16461 I=[_|J],
16462 b_setval('$chr_store_global_ground_chr_translate____spawns_all_triggers___2',
16463 J),
16464 ( J=[K|_]
16465 -> setarg(4, K, _)
16466 ; true
16467 )
16468 ; H=[_, _|J],
16469 setarg(2, H, J),
16470 ( J=[K|_]
16471 -> setarg(4, K, H)
16472 ; true
16473 )
16474 )
16475 ),
16476 ( nb_getval('$chr_store_multi_hash_chr_translate____spawns_all_triggers___2-1',
16477 L),
16478 delete_ht(L, C, A)
16479 ),
16480 nb_getval('$chr_store_multi_hash_chr_translate____spawns_all_triggers___2-12',
16481 M),
16482 delete_ht(M, k(C, D), A),
16483 spawns_all___2__3__0__7(B, C, D, E)
16484 ; spawns_all___2__3__0__7(B, C, D, E)
16485 ).
16486spawns_all___2__3(A, B, C) :-
16487 spawns_all___2__4(A, B, C).
16488spawns_all___2__4(A, guard, B) :-
16489 nb_getval('$chr_store_multi_hash_chr_translate____spawns_all_triggers___2-12',
16490 C),
16491 lookup_ht(C, k(A, body), D),
16492 !,
16493 spawns_all___2__4__0__8(D, A, guard, B).
16494spawns_all___2__4__0__8([], A, B, C) :-
16495 spawns_all___2__5(A, B, C).
16496spawns_all___2__4__0__8([A|B], C, D, E) :-
16497 ( A=suspension(_, active, _, _, F, G),
16498 F==C,
16499 G=body
16500 -> setarg(2, A, removed),
16501 ( arg(4, A, H),
16502 ( var(H)
16503 -> nb_getval('$chr_store_global_ground_chr_translate____spawns_all_triggers___2',
16504 I),
16505 I=[_|J],
16506 b_setval('$chr_store_global_ground_chr_translate____spawns_all_triggers___2',
16507 J),
16508 ( J=[K|_]
16509 -> setarg(4, K, _)
16510 ; true
16511 )
16512 ; H=[_, _|J],
16513 setarg(2, H, J),
16514 ( J=[K|_]
16515 -> setarg(4, K, H)
16516 ; true
16517 )
16518 )
16519 ),
16520 ( nb_getval('$chr_store_multi_hash_chr_translate____spawns_all_triggers___2-1',
16521 L),
16522 delete_ht(L, C, A)
16523 ),
16524 nb_getval('$chr_store_multi_hash_chr_translate____spawns_all_triggers___2-12',
16525 M),
16526 delete_ht(M, k(C, body), A),
16527 spawns_all___2__4__0__8(B, C, D, E)
16528 ; spawns_all___2__4__0__8(B, C, D, E)
16529 ).
16530spawns_all___2__4(A, B, C) :-
16531 spawns_all___2__5(A, B, C).
16532spawns_all___2__5(A, B, C) :-
16533 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-3', D),
16534 lookup_ht(D, A, E),
16535 !,
16536 C=suspension(F, not_stored_yet, A, B),
16537 'chr gen_id'(F),
16538 spawns_all___2__5__0__9(E, A, B, C).
16539spawns_all___2__5__0__9([], A, B, C) :-
16540 spawns_all___2__6(A, B, C).
16541spawns_all___2__5__0__9([A|B], C, D, E) :-
16542 ( A=suspension(_, active, _, _, F, _, G, H, _),
16543 G==C,
16544 nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-3', I),
16545 lookup_ht(I, F, J)
16546 -> spawns_all___2__5__1__9(J,
16547 F,
16548 H,
16549 A,
16550 B,
16551 C,
16552 D,
16553 E)
16554 ; spawns_all___2__5__0__9(B, C, D, E)
16555 ).
16556spawns_all___2__5__1__9([], _, _, _, A, B, C, D) :-
16557 spawns_all___2__5__0__9(A, B, C, D).
16558spawns_all___2__5__1__9([A|B], C, D, E, F, G, H, I) :-
16559 ( A=suspension(_, active, _, _, J, K, L),
16560 L==C,
16561 \+ is_passive(G, D)
16562 -> setarg(2, A, removed),
16563 ( nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-13',
16564 M),
16565 delete_ht(M, k(J, C), A)
16566 ),
16567 ( arg(4, A, N),
16568 ( var(N)
16569 -> nb_getval('$chr_store_global_ground_chr_translate____spawns___3',
16570 O),
16571 O=[_|P],
16572 b_setval('$chr_store_global_ground_chr_translate____spawns___3',
16573 P),
16574 ( P=[Q|_]
16575 -> setarg(4, Q, _)
16576 ; true
16577 )
16578 ; N=[_, _|P],
16579 setarg(2, N, P),
16580 ( P=[Q|_]
16581 -> setarg(4, Q, N)
16582 ; true
16583 )
16584 )
16585 ),
16586 ( nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-12',
16587 R),
16588 delete_ht(R, k(J, K), A)
16589 ),
16590 ( nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-1',
16591 S),
16592 delete_ht(S, J, A)
16593 ),
16594 ( nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-3',
16595 T),
16596 delete_ht(T, C, A)
16597 ),
16598 nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-123',
16599 U),
16600 delete_ht(U, k(J, K, C), A),
16601 arg(2, I, V),
16602 setarg(2, I, active),
16603 ( V==not_stored_yet
16604 -> nb_getval('$chr_store_multi_hash_chr_translate____spawns_all___2-1',
16605 W),
16606 insert_ht(W, G, I),
16607 nb_getval('$chr_store_multi_hash_chr_translate____spawns_all___2-12',
16608 X),
16609 insert_ht(X, k(G, H), I)
16610 ; true
16611 ),
16612 spawns_all(J, K),
16613 ( I=suspension(_, active, _, _)
16614 -> setarg(2, I, inactive),
16615 spawns_all___2__5__1__9(B,
16616 C,
16617 D,
16618 E,
16619 F,
16620 G,
16621 H,
16622 I)
16623 ; true
16624 )
16625 ; spawns_all___2__5__1__9(B,
16626 C,
16627 D,
16628 E,
16629 F,
16630 G,
16631 H,
16632 I)
16633 ).
16634spawns_all___2__5(A, B, C) :-
16635 C=suspension(D, not_stored_yet, A, B),
16636 'chr gen_id'(D),
16637 spawns_all___2__6(A, B, C).
16638spawns_all___2__6(A, B, C) :-
16639 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-3', D),
16640 lookup_ht(D, A, E),
16641 !,
16642 spawns_all___2__6__0__10(E, A, B, C).
16643spawns_all___2__6__0__10([], A, B, C) :-
16644 spawns_all___2__7(A, B, C).
16645spawns_all___2__6__0__10([A|B], C, D, E) :-
16646 ( A=suspension(_, active, _, _, F, _, G, H, _),
16647 G==C,
16648 \+ \+ spawns_all_triggers_implies_spawns_all,
16649 \+ is_passive(C, H),
16650 may_trigger(F)
16651 -> arg(2, E, I),
16652 setarg(2, E, active),
16653 ( I==not_stored_yet
16654 -> nb_getval('$chr_store_multi_hash_chr_translate____spawns_all___2-1',
16655 J),
16656 insert_ht(J, C, E),
16657 nb_getval('$chr_store_multi_hash_chr_translate____spawns_all___2-12',
16658 K),
16659 insert_ht(K, k(C, D), E)
16660 ; true
16661 ),
16662 spawns_all_triggers_implies_spawns_all,
16663 ( E=suspension(_, active, _, _)
16664 -> setarg(2, E, inactive),
16665 spawns_all___2__6__0__10(B, C, D, E)
16666 ; true
16667 )
16668 ; spawns_all___2__6__0__10(B, C, D, E)
16669 ).
16670spawns_all___2__6(A, B, C) :-
16671 spawns_all___2__7(A, B, C).
16672spawns_all___2__7(A, B, C) :-
16673 arg(2, C, D),
16674 setarg(2, C, active),
16675 ( D==not_stored_yet
16676 -> nb_getval('$chr_store_multi_hash_chr_translate____spawns_all___2-1',
16677 E),
16678 insert_ht(E, A, C),
16679 nb_getval('$chr_store_multi_hash_chr_translate____spawns_all___2-12',
16680 F),
16681 insert_ht(F, k(A, B), C)
16682 ; true
16683 ).
16684spawns_all_triggers(A, B) :-
16685 spawns_all_triggers___2__0(A, B, _).
16686spawns_all_triggers___2__0(A, B, _) :-
16687 nb_getval('$chr_store_multi_hash_chr_translate____spawns_all_triggers___2-12',
16688 C),
16689 lookup_ht(C, k(A, B), D),
16690 member(E, D),
16691 E=suspension(_, active, _, _, _, _),
16692 !.
16693spawns_all_triggers___2__0(A, body, _) :-
16694 nb_getval('$chr_store_multi_hash_chr_translate____spawns_all_triggers___2-12',
16695 B),
16696 lookup_ht(B, k(A, guard), C),
16697 member(D, C),
16698 D=suspension(_, active, _, _, _, _),
16699 !.
16700spawns_all_triggers___2__0(A, guard, B) :-
16701 nb_getval('$chr_store_multi_hash_chr_translate____spawns_all_triggers___2-12',
16702 C),
16703 lookup_ht(C, k(A, body), D),
16704 !,
16705 spawns_all_triggers___2__0__0__4(D, A, guard, B).
16706spawns_all_triggers___2__0__0__4([], A, B, C) :-
16707 spawns_all_triggers___2__1(A, B, C).
16708spawns_all_triggers___2__0__0__4([A|B], C, D, E) :-
16709 ( A=suspension(_, active, _, _, F, G),
16710 F==C,
16711 G=body
16712 -> setarg(2, A, removed),
16713 ( arg(4, A, H),
16714 ( var(H)
16715 -> nb_getval('$chr_store_global_ground_chr_translate____spawns_all_triggers___2',
16716 I),
16717 I=[_|J],
16718 b_setval('$chr_store_global_ground_chr_translate____spawns_all_triggers___2',
16719 J),
16720 ( J=[K|_]
16721 -> setarg(4, K, _)
16722 ; true
16723 )
16724 ; H=[_, _|J],
16725 setarg(2, H, J),
16726 ( J=[K|_]
16727 -> setarg(4, K, H)
16728 ; true
16729 )
16730 )
16731 ),
16732 ( nb_getval('$chr_store_multi_hash_chr_translate____spawns_all_triggers___2-1',
16733 L),
16734 delete_ht(L, C, A)
16735 ),
16736 nb_getval('$chr_store_multi_hash_chr_translate____spawns_all_triggers___2-12',
16737 M),
16738 delete_ht(M, k(C, body), A),
16739 spawns_all_triggers___2__0__0__4(B, C, D, E)
16740 ; spawns_all_triggers___2__0__0__4(B, C, D, E)
16741 ).
16742spawns_all_triggers___2__0(A, B, C) :-
16743 spawns_all_triggers___2__1(A, B, C).
16744spawns_all_triggers___2__1(A, B, C) :-
16745 nb_getval('$chr_store_multi_hash_chr_translate____spawns_all___2-12',
16746 D),
16747 lookup_ht(D, k(A, B), E),
16748 member(F, E),
16749 F=suspension(_, active, _, _),
16750 !,
16751 ( var(C)
16752 -> true
16753 ; arg(2, C, G),
16754 setarg(2, C, removed),
16755 ( G==not_stored_yet
16756 -> true
16757 ; arg(4, C, H),
16758 ( var(H)
16759 -> nb_getval('$chr_store_global_ground_chr_translate____spawns_all_triggers___2',
16760 I),
16761 I=[_|J],
16762 b_setval('$chr_store_global_ground_chr_translate____spawns_all_triggers___2',
16763 J),
16764 ( J=[K|_]
16765 -> setarg(4, K, _)
16766 ; true
16767 )
16768 ; H=[_, _|J],
16769 setarg(2, H, J),
16770 ( J=[K|_]
16771 -> setarg(4, K, H)
16772 ; true
16773 )
16774 ),
16775 nb_getval('$chr_store_multi_hash_chr_translate____spawns_all_triggers___2-1',
16776 L),
16777 delete_ht(L, A, C),
16778 nb_getval('$chr_store_multi_hash_chr_translate____spawns_all_triggers___2-12',
16779 M),
16780 delete_ht(M, k(A, B), C)
16781 )
16782 ).
16783spawns_all_triggers___2__1(A, body, B) :-
16784 nb_getval('$chr_store_multi_hash_chr_translate____spawns_all___2-12',
16785 C),
16786 lookup_ht(C, k(A, guard), D),
16787 member(E, D),
16788 E=suspension(_, active, _, _),
16789 !,
16790 ( var(B)
16791 -> true
16792 ; arg(2, B, F),
16793 setarg(2, B, removed),
16794 ( F==not_stored_yet
16795 -> true
16796 ; arg(4, B, G),
16797 ( var(G)
16798 -> nb_getval('$chr_store_global_ground_chr_translate____spawns_all_triggers___2',
16799 H),
16800 H=[_|I],
16801 b_setval('$chr_store_global_ground_chr_translate____spawns_all_triggers___2',
16802 I),
16803 ( I=[J|_]
16804 -> setarg(4, J, _)
16805 ; true
16806 )
16807 ; G=[_, _|I],
16808 setarg(2, G, I),
16809 ( I=[J|_]
16810 -> setarg(4, J, G)
16811 ; true
16812 )
16813 ),
16814 nb_getval('$chr_store_multi_hash_chr_translate____spawns_all_triggers___2-1',
16815 K),
16816 delete_ht(K, A, B),
16817 nb_getval('$chr_store_multi_hash_chr_translate____spawns_all_triggers___2-12',
16818 L),
16819 delete_ht(L, k(A, body), B)
16820 )
16821 ).
16822spawns_all_triggers___2__1(A, B, C) :-
16823 nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-12', D),
16824 lookup_ht(D, k(A, B), E),
16825 !,
16826 spawns_all_triggers___2__1__0__7(E, A, B, C).
16827spawns_all_triggers___2__1__0__7([], A, B, C) :-
16828 spawns_all_triggers___2__2(A, B, C).
16829spawns_all_triggers___2__1__0__7([A|B], C, D, E) :-
16830 ( A=suspension(_, active, _, _, F, G, H),
16831 F==C,
16832 G==D,
16833 may_trigger(H)
16834 -> setarg(2, A, removed),
16835 ( nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-13',
16836 I),
16837 delete_ht(I, k(C, H), A)
16838 ),
16839 ( arg(4, A, J),
16840 ( var(J)
16841 -> nb_getval('$chr_store_global_ground_chr_translate____spawns___3',
16842 K),
16843 K=[_|L],
16844 b_setval('$chr_store_global_ground_chr_translate____spawns___3',
16845 L),
16846 ( L=[M|_]
16847 -> setarg(4, M, _)
16848 ; true
16849 )
16850 ; J=[_, _|L],
16851 setarg(2, J, L),
16852 ( L=[M|_]
16853 -> setarg(4, M, J)
16854 ; true
16855 )
16856 )
16857 ),
16858 ( nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-12',
16859 N),
16860 delete_ht(N, k(C, D), A)
16861 ),
16862 ( nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-1',
16863 O),
16864 delete_ht(O, C, A)
16865 ),
16866 ( nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-3',
16867 P),
16868 delete_ht(P, H, A)
16869 ),
16870 nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-123',
16871 Q),
16872 delete_ht(Q, k(C, D, H), A),
16873 spawns_all_triggers___2__1__0__7(B, C, D, E)
16874 ; spawns_all_triggers___2__1__0__7(B, C, D, E)
16875 ).
16876spawns_all_triggers___2__1(A, B, C) :-
16877 spawns_all_triggers___2__2(A, B, C).
16878spawns_all_triggers___2__2(A, guard, B) :-
16879 nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-12', C),
16880 lookup_ht(C, k(A, body), D),
16881 !,
16882 spawns_all_triggers___2__2__0__8(D, A, guard, B).
16883spawns_all_triggers___2__2__0__8([], A, B, C) :-
16884 spawns_all_triggers___2__3(A, B, C).
16885spawns_all_triggers___2__2__0__8([A|B], C, D, E) :-
16886 ( A=suspension(_, active, _, _, F, G, H),
16887 F==C,
16888 G=body,
16889 may_trigger(H)
16890 -> setarg(2, A, removed),
16891 ( nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-13',
16892 I),
16893 delete_ht(I, k(C, H), A)
16894 ),
16895 ( arg(4, A, J),
16896 ( var(J)
16897 -> nb_getval('$chr_store_global_ground_chr_translate____spawns___3',
16898 K),
16899 K=[_|L],
16900 b_setval('$chr_store_global_ground_chr_translate____spawns___3',
16901 L),
16902 ( L=[M|_]
16903 -> setarg(4, M, _)
16904 ; true
16905 )
16906 ; J=[_, _|L],
16907 setarg(2, J, L),
16908 ( L=[M|_]
16909 -> setarg(4, M, J)
16910 ; true
16911 )
16912 )
16913 ),
16914 ( nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-12',
16915 N),
16916 delete_ht(N, k(C, body), A)
16917 ),
16918 ( nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-1',
16919 O),
16920 delete_ht(O, C, A)
16921 ),
16922 ( nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-3',
16923 P),
16924 delete_ht(P, H, A)
16925 ),
16926 nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-123',
16927 Q),
16928 delete_ht(Q, k(C, body, H), A),
16929 spawns_all_triggers___2__2__0__8(B, C, D, E)
16930 ; spawns_all_triggers___2__2__0__8(B, C, D, E)
16931 ).
16932spawns_all_triggers___2__2(A, B, C) :-
16933 spawns_all_triggers___2__3(A, B, C).
16934spawns_all_triggers___2__3(A, B, C) :-
16935 nb_getval('$chr_store_global_ground_chr_translate____spawns_all_triggers_implies_spawns_all___0',
16936 D),
16937 member(E, D),
16938 E=suspension(_, active, _),
16939 !,
16940 ( var(C)
16941 -> true
16942 ; arg(2, C, F),
16943 setarg(2, C, removed),
16944 ( F==not_stored_yet
16945 -> true
16946 ; arg(4, C, G),
16947 ( var(G)
16948 -> nb_getval('$chr_store_global_ground_chr_translate____spawns_all_triggers___2',
16949 H),
16950 H=[_|I],
16951 b_setval('$chr_store_global_ground_chr_translate____spawns_all_triggers___2',
16952 I),
16953 ( I=[J|_]
16954 -> setarg(4, J, _)
16955 ; true
16956 )
16957 ; G=[_, _|I],
16958 setarg(2, G, I),
16959 ( I=[J|_]
16960 -> setarg(4, J, G)
16961 ; true
16962 )
16963 ),
16964 nb_getval('$chr_store_multi_hash_chr_translate____spawns_all_triggers___2-1',
16965 K),
16966 delete_ht(K, A, C),
16967 nb_getval('$chr_store_multi_hash_chr_translate____spawns_all_triggers___2-12',
16968 L),
16969 delete_ht(L, k(A, B), C)
16970 )
16971 ),
16972 spawns_all(A, B).
16973spawns_all_triggers___2__3(A, B, C) :-
16974 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-3', D),
16975 lookup_ht(D, A, E),
16976 !,
16977 C=suspension(F, not_stored_yet, t, _, A, B),
16978 'chr gen_id'(F),
16979 spawns_all_triggers___2__3__0__10(E, A, B, C).
16980spawns_all_triggers___2__3__0__10([], A, B, C) :-
16981 spawns_all_triggers___2__4(A, B, C).
16982spawns_all_triggers___2__3__0__10([A|B], C, D, E) :-
16983 ( A=suspension(_, active, _, _, F, _, G, H, _),
16984 G==C,
16985 nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-3', I),
16986 lookup_ht(I, F, J)
16987 -> spawns_all_triggers___2__3__1__10(J,
16988 F,
16989 H,
16990 A,
16991 B,
16992 C,
16993 D,
16994 E)
16995 ; spawns_all_triggers___2__3__0__10(B, C, D, E)
16996 ).
16997spawns_all_triggers___2__3__1__10([], _, _, _, A, B, C, D) :-
16998 spawns_all_triggers___2__3__0__10(A, B, C, D).
16999spawns_all_triggers___2__3__1__10([A|B], C, D, E, F, G, H, I) :-
17000 ( A=suspension(_, active, _, _, J, K, L),
17001 L==C,
17002 may_trigger(C),
17003 \+ is_passive(G, D)
17004 -> setarg(2, A, removed),
17005 ( nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-13',
17006 M),
17007 delete_ht(M, k(J, C), A)
17008 ),
17009 ( arg(4, A, N),
17010 ( var(N)
17011 -> nb_getval('$chr_store_global_ground_chr_translate____spawns___3',
17012 O),
17013 O=[_|P],
17014 b_setval('$chr_store_global_ground_chr_translate____spawns___3',
17015 P),
17016 ( P=[Q|_]
17017 -> setarg(4, Q, _)
17018 ; true
17019 )
17020 ; N=[_, _|P],
17021 setarg(2, N, P),
17022 ( P=[Q|_]
17023 -> setarg(4, Q, N)
17024 ; true
17025 )
17026 )
17027 ),
17028 ( nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-12',
17029 R),
17030 delete_ht(R, k(J, K), A)
17031 ),
17032 ( nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-1',
17033 S),
17034 delete_ht(S, J, A)
17035 ),
17036 ( nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-3',
17037 T),
17038 delete_ht(T, C, A)
17039 ),
17040 nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-123',
17041 U),
17042 delete_ht(U, k(J, K, C), A),
17043 arg(2, I, V),
17044 setarg(2, I, active),
17045 ( V==not_stored_yet
17046 -> nb_getval('$chr_store_global_ground_chr_translate____spawns_all_triggers___2',
17047 W),
17048 X=[I|W],
17049 b_setval('$chr_store_global_ground_chr_translate____spawns_all_triggers___2',
17050 X),
17051 ( W=[Y|_]
17052 -> setarg(4, Y, X)
17053 ; true
17054 ),
17055 nb_getval('$chr_store_multi_hash_chr_translate____spawns_all_triggers___2-1',
17056 Z),
17057 insert_ht(Z, G, I),
17058 nb_getval('$chr_store_multi_hash_chr_translate____spawns_all_triggers___2-12',
17059 A1),
17060 insert_ht(A1, k(G, H), I)
17061 ; true
17062 ),
17063 spawns_all_triggers(J, K),
17064 ( I=suspension(_, active, _, _, _, _)
17065 -> setarg(2, I, inactive),
17066 spawns_all_triggers___2__3__1__10(B,
17067 C,
17068 D,
17069 E,
17070 F,
17071 G,
17072 H,
17073 I)
17074 ; true
17075 )
17076 ; spawns_all_triggers___2__3__1__10(B,
17077 C,
17078 D,
17079 E,
17080 F,
17081 G,
17082 H,
17083 I)
17084 ).
17085spawns_all_triggers___2__3(A, B, C) :-
17086 C=suspension(D, not_stored_yet, t, _, A, B),
17087 'chr gen_id'(D),
17088 spawns_all_triggers___2__4(A, B, C).
17089spawns_all_triggers___2__4(A, B, C) :-
17090 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-3', D),
17091 lookup_ht(D, A, E),
17092 !,
17093 spawns_all_triggers___2__4__0__11(E, A, B, C).
17094spawns_all_triggers___2__4__0__11([], A, B, C) :-
17095 spawns_all_triggers___2__5(A, B, C).
17096spawns_all_triggers___2__4__0__11([A|B], C, D, E) :-
17097 ( A=suspension(_, active, _, _, F, _, G, H, _),
17098 G==C,
17099 nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-3', I),
17100 lookup_ht(I, F, J)
17101 -> spawns_all_triggers___2__4__1__11(J,
17102 F,
17103 H,
17104 A,
17105 B,
17106 C,
17107 D,
17108 E)
17109 ; spawns_all_triggers___2__4__0__11(B, C, D, E)
17110 ).
17111spawns_all_triggers___2__4__1__11([], _, _, _, A, B, C, D) :-
17112 spawns_all_triggers___2__4__0__11(A, B, C, D).
17113spawns_all_triggers___2__4__1__11([A|B], C, D, E, F, G, H, I) :-
17114 ( A=suspension(_, active, _, _, J, K, L),
17115 L==C,
17116 M=t(123, I, E, A),
17117 '$novel_production'(I, M),
17118 '$novel_production'(A, M),
17119 \+ may_trigger(C),
17120 \+ is_passive(G, D)
17121 -> '$extend_history'(I, M),
17122 arg(2, I, N),
17123 setarg(2, I, active),
17124 ( N==not_stored_yet
17125 -> nb_getval('$chr_store_global_ground_chr_translate____spawns_all_triggers___2',
17126 O),
17127 P=[I|O],
17128 b_setval('$chr_store_global_ground_chr_translate____spawns_all_triggers___2',
17129 P),
17130 ( O=[Q|_]
17131 -> setarg(4, Q, P)
17132 ; true
17133 ),
17134 nb_getval('$chr_store_multi_hash_chr_translate____spawns_all_triggers___2-1',
17135 R),
17136 insert_ht(R, G, I),
17137 nb_getval('$chr_store_multi_hash_chr_translate____spawns_all_triggers___2-12',
17138 S),
17139 insert_ht(S, k(G, H), I)
17140 ; true
17141 ),
17142 spawns_all_triggers(J, K),
17143 ( I=suspension(_, active, _, _, _, _)
17144 -> setarg(2, I, inactive),
17145 spawns_all_triggers___2__4__1__11(B,
17146 C,
17147 D,
17148 E,
17149 F,
17150 G,
17151 H,
17152 I)
17153 ; true
17154 )
17155 ; spawns_all_triggers___2__4__1__11(B,
17156 C,
17157 D,
17158 E,
17159 F,
17160 G,
17161 H,
17162 I)
17163 ).
17164spawns_all_triggers___2__4(A, B, C) :-
17165 spawns_all_triggers___2__5(A, B, C).
17166spawns_all_triggers___2__5(A, B, C) :-
17167 nb_getval('$chr_store_global_ground_chr_translate____spawns___3', D),
17168 !,
17169 spawns_all_triggers___2__5__0__12(D, A, B, C).
17170spawns_all_triggers___2__5__0__12([], A, B, C) :-
17171 spawns_all_triggers___2__6(A, B, C).
17172spawns_all_triggers___2__5__0__12([A|B], C, D, E) :-
17173 ( A=suspension(_, active, _, _, F, _, G),
17174 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-3',
17175 H),
17176 lookup_ht(H, F, I)
17177 -> spawns_all_triggers___2__5__1__12(I,
17178 F,
17179 G,
17180 A,
17181 B,
17182 C,
17183 D,
17184 E)
17185 ; spawns_all_triggers___2__5__0__12(B, C, D, E)
17186 ).
17187spawns_all_triggers___2__5__1__12([], _, _, _, A, B, C, D) :-
17188 spawns_all_triggers___2__5__0__12(A, B, C, D).
17189spawns_all_triggers___2__5__1__12([A|B], C, D, E, F, G, H, I) :-
17190 ( A=suspension(_, active, _, _, J, _, K, L, _),
17191 K==C,
17192 M=t(125, E, A, I),
17193 '$novel_production'(E, M),
17194 '$novel_production'(I, M),
17195 \+ is_passive(C, L),
17196 may_trigger(J),
17197 \+ may_trigger(D)
17198 -> '$extend_history'(I, M),
17199 arg(2, I, N),
17200 setarg(2, I, active),
17201 ( N==not_stored_yet
17202 -> nb_getval('$chr_store_global_ground_chr_translate____spawns_all_triggers___2',
17203 O),
17204 P=[I|O],
17205 b_setval('$chr_store_global_ground_chr_translate____spawns_all_triggers___2',
17206 P),
17207 ( O=[Q|_]
17208 -> setarg(4, Q, P)
17209 ; true
17210 ),
17211 nb_getval('$chr_store_multi_hash_chr_translate____spawns_all_triggers___2-1',
17212 R),
17213 insert_ht(R, G, I),
17214 nb_getval('$chr_store_multi_hash_chr_translate____spawns_all_triggers___2-12',
17215 S),
17216 insert_ht(S, k(G, H), I)
17217 ; true
17218 ),
17219 spawns(G, H, D),
17220 ( I=suspension(_, active, _, _, _, _)
17221 -> setarg(2, I, inactive),
17222 spawns_all_triggers___2__5__1__12(B,
17223 C,
17224 D,
17225 E,
17226 F,
17227 G,
17228 H,
17229 I)
17230 ; true
17231 )
17232 ; spawns_all_triggers___2__5__1__12(B,
17233 C,
17234 D,
17235 E,
17236 F,
17237 G,
17238 H,
17239 I)
17240 ).
17241spawns_all_triggers___2__5(A, B, C) :-
17242 spawns_all_triggers___2__6(A, B, C).
17243spawns_all_triggers___2__6(A, B, C) :-
17244 arg(2, C, D),
17245 setarg(2, C, active),
17246 ( D==not_stored_yet
17247 -> nb_getval('$chr_store_global_ground_chr_translate____spawns_all_triggers___2',
17248 E),
17249 F=[C|E],
17250 b_setval('$chr_store_global_ground_chr_translate____spawns_all_triggers___2',
17251 F),
17252 ( E=[G|_]
17253 -> setarg(4, G, F)
17254 ; true
17255 ),
17256 nb_getval('$chr_store_multi_hash_chr_translate____spawns_all_triggers___2-1',
17257 H),
17258 insert_ht(H, A, C),
17259 nb_getval('$chr_store_multi_hash_chr_translate____spawns_all_triggers___2-12',
17260 I),
17261 insert_ht(I, k(A, B), C)
17262 ; true
17263 ).
17264spawns_all_triggers_implies_spawns_all :-
17265 spawns_all_triggers_implies_spawns_all___0__0(_).
17266spawns_all_triggers_implies_spawns_all___0__0(_) :-
17267 nb_getval('$chr_store_global_ground_chr_translate____spawns_all_triggers_implies_spawns_all___0',
17268 A),
17269 member(B, A),
17270 B=suspension(_, active, _),
17271 !,
17272 setarg(2, B, removed),
17273 arg(3, B, C),
17274 ( var(C)
17275 -> nb_getval('$chr_store_global_ground_chr_translate____spawns_all_triggers_implies_spawns_all___0',
17276 D),
17277 D=[_|E],
17278 b_setval('$chr_store_global_ground_chr_translate____spawns_all_triggers_implies_spawns_all___0',
17279 E),
17280 ( E=[F|_]
17281 -> setarg(3, F, _)
17282 ; true
17283 )
17284 ; C=[_, _|E],
17285 setarg(2, C, E),
17286 ( E=[F|_]
17287 -> setarg(3, F, C)
17288 ; true
17289 )
17290 ),
17291 fail.
17292spawns_all_triggers_implies_spawns_all___0__0(A) :-
17293 nb_getval('$chr_store_global_ground_chr_translate____spawns_all_triggers___2',
17294 B),
17295 !,
17296 A=suspension(C, not_stored_yet, _),
17297 'chr gen_id'(C),
17298 spawns_all_triggers_implies_spawns_all___0__0__0__3(B, A).
17299spawns_all_triggers_implies_spawns_all___0__0__0__3([], A) :-
17300 spawns_all_triggers_implies_spawns_all___0__1(A).
17301spawns_all_triggers_implies_spawns_all___0__0__0__3([A|B], C) :-
17302 ( A=suspension(_, active, _, _, D, E)
17303 -> setarg(2, A, removed),
17304 ( arg(4, A, F),
17305 ( var(F)
17306 -> nb_getval('$chr_store_global_ground_chr_translate____spawns_all_triggers___2',
17307 G),
17308 G=[_|H],
17309 b_setval('$chr_store_global_ground_chr_translate____spawns_all_triggers___2',
17310 H),
17311 ( H=[I|_]
17312 -> setarg(4, I, _)
17313 ; true
17314 )
17315 ; F=[_, _|H],
17316 setarg(2, F, H),
17317 ( H=[I|_]
17318 -> setarg(4, I, F)
17319 ; true
17320 )
17321 )
17322 ),
17323 ( nb_getval('$chr_store_multi_hash_chr_translate____spawns_all_triggers___2-1',
17324 J),
17325 delete_ht(J, D, A)
17326 ),
17327 nb_getval('$chr_store_multi_hash_chr_translate____spawns_all_triggers___2-12',
17328 K),
17329 delete_ht(K, k(D, E), A),
17330 arg(2, C, L),
17331 setarg(2, C, active),
17332 ( L==not_stored_yet
17333 -> nb_getval('$chr_store_global_ground_chr_translate____spawns_all_triggers_implies_spawns_all___0',
17334 M),
17335 N=[C|M],
17336 b_setval('$chr_store_global_ground_chr_translate____spawns_all_triggers_implies_spawns_all___0',
17337 N),
17338 ( M=[O|_]
17339 -> setarg(3, O, N)
17340 ; true
17341 )
17342 ; true
17343 ),
17344 spawns_all(D, E),
17345 ( C=suspension(_, active, _)
17346 -> setarg(2, C, inactive),
17347 spawns_all_triggers_implies_spawns_all___0__0__0__3(B,
17348 C)
17349 ; true
17350 )
17351 ; spawns_all_triggers_implies_spawns_all___0__0__0__3(B, C)
17352 ).
17353spawns_all_triggers_implies_spawns_all___0__0(A) :-
17354 A=suspension(B, not_stored_yet, _),
17355 'chr gen_id'(B),
17356 spawns_all_triggers_implies_spawns_all___0__1(A).
17357spawns_all_triggers_implies_spawns_all___0__1(A) :-
17358 arg(2, A, B),
17359 setarg(2, A, active),
17360 ( B==not_stored_yet
17361 -> nb_getval('$chr_store_global_ground_chr_translate____spawns_all_triggers_implies_spawns_all___0',
17362 C),
17363 D=[A|C],
17364 b_setval('$chr_store_global_ground_chr_translate____spawns_all_triggers_implies_spawns_all___0',
17365 D),
17366 ( C=[E|_]
17367 -> setarg(3, E, D)
17368 ; true
17369 )
17370 ; true
17371 ).
17372all_spawned(A, B) :-
17373 nb_getval('$chr_store_multi_hash_chr_translate____spawns_all___2-12',
17374 C),
17375 ( lookup_ht(C, k(A, guard), D),
17376 member(E, D),
17377 E=suspension(_, active, _, _),
17378 !
17379 ; lookup_ht(C, k(A, B), F),
17380 member(G, F),
17381 G=suspension(_, active, _, _),
17382 !
17383 ).
17384all_spawned(_, _) :-
17385 fail.
17386is_observed(A, B, C) :-
17387 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-12',
17388 D),
17389 lookup_ht(D, k(A, B), E),
17390 member(F, E),
17391 F=suspension(_, active, _, _, _, _, G, _, _),
17392 !,
17393 do_is_observed(A, G, C).
17394is_observed(_, _, _) :-
17395 fail.
17396do_is_observed(A, B, C) :-
17397 var(C),
17398 !,
17399 do_is_observed(A, B).
17400do_is_observed(A, B, C) :-
17401 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-1', D),
17402 lookup_ht(D, A, E),
17403 member(F, E),
17404 F=suspension(_, active, _, _, _, _, G, _, _),
17405 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-3', H),
17406 lookup_ht(H, G, I),
17407 member(J, I),
17408 J=suspension(_, active, _, _, K, _, _, L, _),
17409 J\==F,
17410 ground(C),
17411 ( ( nb_getval('$chr_store_multi_hash_chr_translate____spawns_all___2-12',
17412 M),
17413 lookup_ht(M, k(B, C), N),
17414 member(O, N),
17415 O=suspension(_, active, _, _),
17416 \+ is_passive(G, L),
17417 !
17418 ; nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-123',
17419 P),
17420 lookup_ht(P, k(B, C, K), Q),
17421 member(R, Q),
17422 R=suspension(_, active, _, _, _, _, _),
17423 \+ is_passive(G, L),
17424 !
17425 )
17426 ; nb_getval('$chr_store_multi_hash_chr_translate____spawns_all_triggers___2-12',
17427 S),
17428 lookup_ht(S, k(B, C), T),
17429 member(U, T),
17430 U=suspension(_, active, _, _, _, _),
17431 \+ is_passive(G, L),
17432 may_trigger(K),
17433 !
17434 ).
17435do_is_observed(_, _, _) :-
17436 chr_pp_flag(observation_analysis, off).
17437do_is_observed(A, B) :-
17438 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-1', C),
17439 lookup_ht(C, A, D),
17440 member(E, D),
17441 E=suspension(_, active, _, _, _, _, F, _, _),
17442 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-3', G),
17443 lookup_ht(G, F, H),
17444 member(I, H),
17445 I=suspension(_, active, _, _, J, _, _, K, _),
17446 I\==E,
17447 ( ( nb_getval('$chr_store_multi_hash_chr_translate____spawns_all___2-1',
17448 L),
17449 lookup_ht(L, B, M),
17450 member(N, M),
17451 N=suspension(_, active, _, _),
17452 \+ is_passive(F, K),
17453 !
17454 ; nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-13',
17455 O),
17456 lookup_ht(O, k(B, J), P),
17457 member(Q, P),
17458 Q=suspension(_, active, _, _, _, _, _),
17459 \+ is_passive(F, K),
17460 !
17461 )
17462 ; nb_getval('$chr_store_multi_hash_chr_translate____spawns_all_triggers___2-1',
17463 R),
17464 lookup_ht(R, B, S),
17465 member(T, S),
17466 T=suspension(_, active, _, _, _, _),
17467 \+ is_passive(F, K),
17468 may_trigger(J),
17469 !
17470 ).
17471do_is_observed(_, _) :-
17472 chr_pp_flag(observation_analysis, off).
17473generate_indexed_variables_body(A/B, C, D, E) :-
17474 nb_getval('$chr_store_multi_hash_chr_translate____constraint_mode___2-1',
17475 F),
17476 lookup_ht(F, A/B, G),
17477 member(H, G),
17478 H=suspension(_, active, _, _, _, I),
17479 !,
17480 get_indexing_spec(A/B, J),
17481 ( chr_pp_flag(term_indexing, on)
17482 -> spectermvars(J, C, A, B, D, E)
17483 ; get_constraint_type_det(A/B, K),
17484 create_indexed_variables_body(C,
17485 I,
17486 K,
17487 E,
17488 1,
17489 A/B,
17490 L,
17491 M),
17492 ( L==empty
17493 -> D=true,
17494 E=[]
17495 ; M==0
17496 -> ( C=[N]
17497 -> true
17498 ; N=..[term|C]
17499 ),
17500 D=term_variables(N, E)
17501 ; L=D
17502 )
17503 ).
17504generate_indexed_variables_body(A, _, _, _) :-
17505 chr_error(internal,
17506 'generate_indexed_variables_body: missing mode info for ~w.\n',
17507 [A]).
17508empty_named_history_initialisations(A, B) :-
17509 C=suspension(D, active, _, A, B),
17510 'chr gen_id'(D),
17511 nb_getval('$chr_store_global_ground_chr_translate____empty_named_history_initialisations___2',
17512 E),
17513 F=[C|E],
17514 b_setval('$chr_store_global_ground_chr_translate____empty_named_history_initialisations___2',
17515 F),
17516 ( E=[G|_]
17517 -> setarg(3, G, F)
17518 ; true
17519 ).
17520generate_empty_named_history_initialisation(A) :-
17521 generate_empty_named_history_initialisation___1__0(A, _).
17522generate_empty_named_history_initialisation___1__0(A, B) :-
17523 ( 'chr newvia_1'(A, C)
17524 -> get_attr(C, chr_translate, D),
17525 D=v(_, E, _, _, _, _, _, _, _, _, _)
17526 ; nb_getval('$chr_store_global_list_chr_translate____generate_empty_named_history_initialisation___1',
17527 E)
17528 ),
17529 member(F, E),
17530 F=suspension(_, active, _, _, G),
17531 G==A,
17532 !,
17533 ( var(B)
17534 -> true
17535 ; B=suspension(_, H, _, _, I),
17536 setarg(2, B, removed),
17537 ( H==not_stored_yet
17538 -> J=[]
17539 ; term_variables(I, J),
17540 arg(4, B, K),
17541 ( var(K)
17542 -> nb_getval('$chr_store_global_list_chr_translate____generate_empty_named_history_initialisation___1',
17543 L),
17544 L=[_|M],
17545 b_setval('$chr_store_global_list_chr_translate____generate_empty_named_history_initialisation___1',
17546 M),
17547 ( M=[N|_]
17548 -> setarg(4, N, _)
17549 ; true
17550 )
17551 ; K=[_, _|M],
17552 setarg(2, K, M),
17553 ( M=[N|_]
17554 -> setarg(4, N, K)
17555 ; true
17556 )
17557 ),
17558 detach_generate_empty_named_history_initialisation___1(J,
17559 B)
17560 )
17561 ).
17562generate_empty_named_history_initialisation___1__0(A, B) :-
17563 nb_getval('$chr_store_global_ground_chr_translate____empty_named_history_initialisations___2',
17564 C),
17565 !,
17566 ( var(B)
17567 -> B=suspension(D, not_stored_yet, 0, _, A),
17568 'chr gen_id'(D)
17569 ; true
17570 ),
17571 generate_empty_named_history_initialisation___1__0__0__3(C,
17572 A,
17573 B).
17574generate_empty_named_history_initialisation___1__0__0__3([], A, B) :-
17575 generate_empty_named_history_initialisation___1__1(A, B).
17576generate_empty_named_history_initialisation___1__0__0__3([A|B], C, D) :-
17577 ( A=suspension(_, active, _, E, F)
17578 -> setarg(2, A, removed),
17579 arg(3, A, G),
17580 ( var(G)
17581 -> nb_getval('$chr_store_global_ground_chr_translate____empty_named_history_initialisations___2',
17582 H),
17583 H=[_|I],
17584 b_setval('$chr_store_global_ground_chr_translate____empty_named_history_initialisations___2',
17585 I),
17586 ( I=[J|_]
17587 -> setarg(3, J, _)
17588 ; true
17589 )
17590 ; G=[_, _|I],
17591 setarg(2, G, I),
17592 ( I=[J|_]
17593 -> setarg(3, J, G)
17594 ; true
17595 )
17596 ),
17597 arg(2, D, K),
17598 setarg(2, D, active),
17599 ( arg(3, D, L),
17600 M is L+1,
17601 setarg(3, D, M)
17602 ),
17603 ( K==not_stored_yet
17604 -> D=suspension(_, _, _, _, N),
17605 term_variables(N, O),
17606 nb_getval('$chr_store_global_list_chr_translate____generate_empty_named_history_initialisation___1',
17607 P),
17608 Q=[D|P],
17609 b_setval('$chr_store_global_list_chr_translate____generate_empty_named_history_initialisation___1',
17610 Q),
17611 ( P=[R|_]
17612 -> setarg(4, R, Q)
17613 ; true
17614 ),
17615 attach_generate_empty_named_history_initialisation___1(O,
17616 D)
17617 ; true
17618 ),
17619 empty_named_history_global_variable(C, S),
17620 E=[(:-nb_setval(S, 0))|T],
17621 empty_named_history_initialisations(T, F),
17622 ( D=suspension(_, active, M, _, _)
17623 -> setarg(2, D, inactive),
17624 generate_empty_named_history_initialisation___1__0__0__3(B,
17625 C,
17626 D)
17627 ; true
17628 )
17629 ; generate_empty_named_history_initialisation___1__0__0__3(B,
17630 C,
17631 D)
17632 ).
17633generate_empty_named_history_initialisation___1__0(A, B) :-
17634 ( var(B)
17635 -> B=suspension(C, not_stored_yet, 0, _, A),
17636 'chr gen_id'(C)
17637 ; true
17638 ),
17639 generate_empty_named_history_initialisation___1__1(A, B).
17640generate_empty_named_history_initialisation___1__1(_, A) :-
17641 arg(2, A, B),
17642 setarg(2, A, active),
17643 arg(3, A, C),
17644 D is C+1,
17645 setarg(3, A, D),
17646 ( B==not_stored_yet
17647 -> A=suspension(_, _, _, _, E),
17648 term_variables(E, F),
17649 nb_getval('$chr_store_global_list_chr_translate____generate_empty_named_history_initialisation___1',
17650 G),
17651 H=[A|G],
17652 b_setval('$chr_store_global_list_chr_translate____generate_empty_named_history_initialisation___1',
17653 H),
17654 ( G=[I|_]
17655 -> setarg(4, I, H)
17656 ; true
17657 ),
17658 attach_generate_empty_named_history_initialisation___1(F,
17659 A)
17660 ; true
17661 ).
17662find_empty_named_histories :-
17663 find_empty_named_histories___0__0(_).
17664find_empty_named_histories___0__0(A) :-
17665 nb_getval('$chr_store_constants_chr_translate____history___3___[3]___[]',
17666 B),
17667 !,
17668 A=suspension(C, not_stored_yet, t, _),
17669 'chr gen_id'(C),
17670 find_empty_named_histories___0__0__0__1(B, A).
17671find_empty_named_histories___0__0__0__1([], A) :-
17672 find_empty_named_histories___0__1(A).
17673find_empty_named_histories___0__0__0__1([A|B], C) :-
17674 ( A=suspension(_, active, _, _, D, E),
17675 E=[],
17676 F=t(142, C, A),
17677 '$novel_production'(C, F),
17678 '$novel_production'(A, F)
17679 -> '$extend_history'(C, F),
17680 arg(2, C, G),
17681 setarg(2, C, active),
17682 ( G==not_stored_yet
17683 -> nb_getval('$chr_store_global_ground_chr_translate____find_empty_named_histories___0',
17684 H),
17685 I=[C|H],
17686 b_setval('$chr_store_global_ground_chr_translate____find_empty_named_histories___0',
17687 I),
17688 ( H=[J|_]
17689 -> setarg(4, J, I)
17690 ; true
17691 )
17692 ; true
17693 ),
17694 generate_empty_named_history_initialisation(D),
17695 ( C=suspension(_, active, _, _)
17696 -> setarg(2, C, inactive),
17697 find_empty_named_histories___0__0__0__1(B, C)
17698 ; true
17699 )
17700 ; find_empty_named_histories___0__0__0__1(B, C)
17701 ).
17702find_empty_named_histories___0__0(A) :-
17703 A=suspension(B, not_stored_yet, t, _),
17704 'chr gen_id'(B),
17705 find_empty_named_histories___0__1(A).
17706find_empty_named_histories___0__1(A) :-
17707 nb_getval('$chr_store_global_list_chr_translate____generate_empty_named_history_initialisation___1',
17708 B),
17709 !,
17710 find_empty_named_histories___0__1__0__2(B, A).
17711find_empty_named_histories___0__1__0__2([], A) :-
17712 find_empty_named_histories___0__2(A).
17713find_empty_named_histories___0__1__0__2([A|B], C) :-
17714 ( A=suspension(_, active, _, _, _)
17715 -> A=suspension(_, _, _, _, D),
17716 setarg(2, A, removed),
17717 term_variables(D, E),
17718 ( arg(4, A, F),
17719 ( var(F)
17720 -> nb_getval('$chr_store_global_list_chr_translate____generate_empty_named_history_initialisation___1',
17721 G),
17722 G=[_|H],
17723 b_setval('$chr_store_global_list_chr_translate____generate_empty_named_history_initialisation___1',
17724 H),
17725 ( H=[I|_]
17726 -> setarg(4, I, _)
17727 ; true
17728 )
17729 ; F=[_, _|H],
17730 setarg(2, F, H),
17731 ( H=[I|_]
17732 -> setarg(4, I, F)
17733 ; true
17734 )
17735 )
17736 ),
17737 detach_generate_empty_named_history_initialisation___1(E,
17738 A),
17739 find_empty_named_histories___0__1__0__2(B, C)
17740 ; find_empty_named_histories___0__1__0__2(B, C)
17741 ).
17742find_empty_named_histories___0__1(A) :-
17743 find_empty_named_histories___0__2(A).
17744find_empty_named_histories___0__2(A) :-
17745 nb_getval('$chr_store_global_ground_chr_translate____empty_named_history_initialisations___2',
17746 B),
17747 member(C, B),
17748 C=suspension(_, active, _, D, E),
17749 !,
17750 setarg(2, C, removed),
17751 arg(3, C, F),
17752 ( var(F)
17753 -> nb_getval('$chr_store_global_ground_chr_translate____empty_named_history_initialisations___2',
17754 G),
17755 G=[_|H],
17756 b_setval('$chr_store_global_ground_chr_translate____empty_named_history_initialisations___2',
17757 H),
17758 ( H=[I|_]
17759 -> setarg(3, I, _)
17760 ; true
17761 )
17762 ; F=[_, _|H],
17763 setarg(2, F, H),
17764 ( H=[I|_]
17765 -> setarg(3, I, F)
17766 ; true
17767 )
17768 ),
17769 ( var(A)
17770 -> true
17771 ; arg(2, A, J),
17772 setarg(2, A, removed),
17773 ( J==not_stored_yet
17774 -> true
17775 ; arg(4, A, K),
17776 ( var(K)
17777 -> nb_getval('$chr_store_global_ground_chr_translate____find_empty_named_histories___0',
17778 L),
17779 L=[_|M],
17780 b_setval('$chr_store_global_ground_chr_translate____find_empty_named_histories___0',
17781 M),
17782 ( M=[N|_]
17783 -> setarg(4, N, _)
17784 ; true
17785 )
17786 ; K=[_, _|M],
17787 setarg(2, K, M),
17788 ( M=[N|_]
17789 -> setarg(4, N, K)
17790 ; true
17791 )
17792 )
17793 )
17794 ),
17795 D=E.
17796find_empty_named_histories___0__2(A) :-
17797 ( var(A)
17798 -> true
17799 ; arg(2, A, B),
17800 setarg(2, A, removed),
17801 ( B==not_stored_yet
17802 -> true
17803 ; arg(4, A, C),
17804 ( var(C)
17805 -> nb_getval('$chr_store_global_ground_chr_translate____find_empty_named_histories___0',
17806 D),
17807 D=[_|E],
17808 b_setval('$chr_store_global_ground_chr_translate____find_empty_named_histories___0',
17809 E),
17810 ( E=[F|_]
17811 -> setarg(4, F, _)
17812 ; true
17813 )
17814 ; C=[_, _|E],
17815 setarg(2, C, E),
17816 ( E=[F|_]
17817 -> setarg(4, F, C)
17818 ; true
17819 )
17820 )
17821 )
17822 ),
17823 chr_error(internal, 'find_empty_named_histories was not removed', []).
17824module_initializer(A) :-
17825 B=suspension(C, active, _, A),
17826 'chr gen_id'(C),
17827 nb_getval('$chr_store_global_ground_chr_translate____module_initializer___1',
17828 D),
17829 E=[B|D],
17830 b_setval('$chr_store_global_ground_chr_translate____module_initializer___1',
17831 E),
17832 ( D=[F|_]
17833 -> setarg(3, F, E)
17834 ; true
17835 ).
17836module_initializers(A) :-
17837 nb_getval('$chr_store_global_ground_chr_translate____module_initializer___1',
17838 B),
17839 member(C, B),
17840 C=suspension(_, active, _, D),
17841 !,
17842 setarg(2, C, removed),
17843 arg(3, C, E),
17844 ( var(E)
17845 -> nb_getval('$chr_store_global_ground_chr_translate____module_initializer___1',
17846 F),
17847 F=[_|G],
17848 b_setval('$chr_store_global_ground_chr_translate____module_initializer___1',
17849 G),
17850 ( G=[H|_]
17851 -> setarg(3, H, _)
17852 ; true
17853 )
17854 ; E=[_, _|G],
17855 setarg(2, E, G),
17856 ( G=[H|_]
17857 -> setarg(3, H, E)
17858 ; true
17859 )
17860 ),
17861 A=(D, I),
17862 module_initializers(I).
17863module_initializers(true).
17864actual_atomic_multi_hash_keys(A, B, C) :-
17865 nb_getval('$chr_store_multi_hash_chr_translate____actual_store_types___2-1',
17866 D),
17867 lookup_ht(D, A, E),
17868 member(F, E),
17869 F=suspension(_, active, _, G),
17870 nb_getval('$chr_store_multi_hash_chr_translate____validate_store_type_assumption___1-1',
17871 H),
17872 lookup_ht(H, A, I),
17873 member(J, I),
17874 J=suspension(_, active, _),
17875 !,
17876 setarg(2, F, removed),
17877 nb_getval('$chr_store_multi_hash_chr_translate____actual_store_types___2-1',
17878 K),
17879 delete_ht(K, A, F),
17880 selectchk(multi_hash([B]), G, L),
17881 B=[M],
17882 ( get_constraint_arg_type(A, M, N),
17883 enumerated_atomic_type(N, O)
17884 -> P=O,
17885 Q=complete
17886 ; P=C,
17887 Q=incomplete
17888 ),
17889 actual_store_types(A,
17890 [atomic_constants(B, P, Q)|L]).
17891actual_atomic_multi_hash_keys(A, B, C) :-
17892 nb_getval('$chr_store_multi_hash_chr_translate____actual_atomic_multi_hash_keys___3-12',
17893 D),
17894 lookup_ht(D, k(A, B), E),
17895 member(F, E),
17896 F=suspension(_, active, _, _, G),
17897 !,
17898 setarg(2, F, removed),
17899 nb_getval('$chr_store_multi_hash_chr_translate____actual_atomic_multi_hash_keys___3-12',
17900 H),
17901 delete_ht(H, k(A, B), F),
17902 nb_getval('$chr_store_multi_hash_chr_translate____actual_atomic_multi_hash_keys___3-1',
17903 I),
17904 delete_ht(I, A, F),
17905 append(C, G, J),
17906 sort(J, K),
17907 actual_atomic_multi_hash_keys(A, B, K).
17908actual_atomic_multi_hash_keys(A, B, C) :-
17909 nb_getval('$chr_store_multi_hash_chr_translate____actual_ground_multi_hash_keys___3-12',
17910 D),
17911 lookup_ht(D, k(A, B), E),
17912 member(F, E),
17913 F=suspension(_, active, _, _, G),
17914 !,
17915 setarg(2, F, removed),
17916 nb_getval('$chr_store_multi_hash_chr_translate____actual_ground_multi_hash_keys___3-12',
17917 H),
17918 delete_ht(H, k(A, B), F),
17919 nb_getval('$chr_store_multi_hash_chr_translate____actual_ground_multi_hash_keys___3-1',
17920 I),
17921 delete_ht(I, A, F),
17922 append(G, C, J),
17923 sort(J, K),
17924 actual_ground_multi_hash_keys(A, B, K).
17925actual_atomic_multi_hash_keys(A, B, _) :-
17926 nb_getval('$chr_store_multi_hash_chr_translate____actual_non_ground_multi_hash_key___2-12',
17927 C),
17928 lookup_ht(C, k(A, B), D),
17929 member(E, D),
17930 E=suspension(_, active, _, _),
17931 !.
17932actual_atomic_multi_hash_keys(A, B, C) :-
17933 D=suspension(E, active, A, B, C),
17934 'chr gen_id'(E),
17935 nb_getval('$chr_store_multi_hash_chr_translate____actual_atomic_multi_hash_keys___3-12',
17936 F),
17937 insert_ht(F, k(A, B), D),
17938 nb_getval('$chr_store_multi_hash_chr_translate____actual_atomic_multi_hash_keys___3-1',
17939 G),
17940 insert_ht(G, A, D).
17941actual_ground_multi_hash_keys(A, B, C) :-
17942 nb_getval('$chr_store_multi_hash_chr_translate____actual_store_types___2-1',
17943 D),
17944 lookup_ht(D, A, E),
17945 member(F, E),
17946 F=suspension(_, active, _, G),
17947 nb_getval('$chr_store_multi_hash_chr_translate____validate_store_type_assumption___1-1',
17948 H),
17949 lookup_ht(H, A, I),
17950 member(J, I),
17951 J=suspension(_, active, _),
17952 !,
17953 setarg(2, F, removed),
17954 nb_getval('$chr_store_multi_hash_chr_translate____actual_store_types___2-1',
17955 K),
17956 delete_ht(K, A, F),
17957 ( B=[L],
17958 get_constraint_arg_type(A, L, M),
17959 M=chr_enum(N)
17960 -> O=complete
17961 ; N=C,
17962 O=incomplete
17963 ),
17964 selectchk(multi_hash([B]), G, P),
17965 actual_store_types(A,
17966 [ground_constants(B, N, O)|P]).
17967actual_ground_multi_hash_keys(A, B, C) :-
17968 nb_getval('$chr_store_multi_hash_chr_translate____actual_atomic_multi_hash_keys___3-12',
17969 D),
17970 lookup_ht(D, k(A, B), E),
17971 member(F, E),
17972 F=suspension(_, active, _, _, G),
17973 !,
17974 setarg(2, F, removed),
17975 nb_getval('$chr_store_multi_hash_chr_translate____actual_atomic_multi_hash_keys___3-12',
17976 H),
17977 delete_ht(H, k(A, B), F),
17978 nb_getval('$chr_store_multi_hash_chr_translate____actual_atomic_multi_hash_keys___3-1',
17979 I),
17980 delete_ht(I, A, F),
17981 append(C, G, J),
17982 sort(J, K),
17983 actual_ground_multi_hash_keys(A, B, K).
17984actual_ground_multi_hash_keys(A, B, C) :-
17985 nb_getval('$chr_store_multi_hash_chr_translate____actual_ground_multi_hash_keys___3-12',
17986 D),
17987 lookup_ht(D, k(A, B), E),
17988 member(F, E),
17989 F=suspension(_, active, _, _, G),
17990 !,
17991 setarg(2, F, removed),
17992 nb_getval('$chr_store_multi_hash_chr_translate____actual_ground_multi_hash_keys___3-12',
17993 H),
17994 delete_ht(H, k(A, B), F),
17995 nb_getval('$chr_store_multi_hash_chr_translate____actual_ground_multi_hash_keys___3-1',
17996 I),
17997 delete_ht(I, A, F),
17998 append(C, G, J),
17999 sort(J, K),
18000 actual_ground_multi_hash_keys(A, B, K).
18001actual_ground_multi_hash_keys(A, B, _) :-
18002 nb_getval('$chr_store_multi_hash_chr_translate____actual_non_ground_multi_hash_key___2-12',
18003 C),
18004 lookup_ht(C, k(A, B), D),
18005 member(E, D),
18006 E=suspension(_, active, _, _),
18007 !.
18008actual_ground_multi_hash_keys(A, B, C) :-
18009 D=suspension(E, active, A, B, C),
18010 'chr gen_id'(E),
18011 nb_getval('$chr_store_multi_hash_chr_translate____actual_ground_multi_hash_keys___3-12',
18012 F),
18013 insert_ht(F, k(A, B), D),
18014 nb_getval('$chr_store_multi_hash_chr_translate____actual_ground_multi_hash_keys___3-1',
18015 G),
18016 insert_ht(G, A, D).
18017actual_non_ground_multi_hash_key(A, B) :-
18018 nb_getval('$chr_store_multi_hash_chr_translate____actual_non_ground_multi_hash_key___2-12',
18019 C),
18020 lookup_ht(C, k(A, B), D),
18021 member(E, D),
18022 E=suspension(_, active, _, _),
18023 !.
18024actual_non_ground_multi_hash_key(A, B) :-
18025 nb_getval('$chr_store_multi_hash_chr_translate____actual_atomic_multi_hash_keys___3-12',
18026 C),
18027 lookup_ht(C, k(A, B), D),
18028 !,
18029 actual_non_ground_multi_hash_key___2__0__0__3(D, A, B).
18030actual_non_ground_multi_hash_key___2__0__0__3([], A, B) :-
18031 actual_non_ground_multi_hash_key___2__1(A, B).
18032actual_non_ground_multi_hash_key___2__0__0__3([A|B], C, D) :-
18033 ( A=suspension(_, active, E, F, _),
18034 E==C,
18035 F==D
18036 -> setarg(2, A, removed),
18037 ( nb_getval('$chr_store_multi_hash_chr_translate____actual_atomic_multi_hash_keys___3-12',
18038 G),
18039 delete_ht(G, k(C, D), A)
18040 ),
18041 nb_getval('$chr_store_multi_hash_chr_translate____actual_atomic_multi_hash_keys___3-1',
18042 H),
18043 delete_ht(H, C, A),
18044 actual_non_ground_multi_hash_key___2__0__0__3(B, C, D)
18045 ; actual_non_ground_multi_hash_key___2__0__0__3(B, C, D)
18046 ).
18047actual_non_ground_multi_hash_key(A, B) :-
18048 actual_non_ground_multi_hash_key___2__1(A, B).
18049actual_non_ground_multi_hash_key___2__1(A, B) :-
18050 nb_getval('$chr_store_multi_hash_chr_translate____actual_ground_multi_hash_keys___3-12',
18051 C),
18052 lookup_ht(C, k(A, B), D),
18053 !,
18054 actual_non_ground_multi_hash_key___2__1__0__4(D, A, B).
18055actual_non_ground_multi_hash_key___2__1__0__4([], A, B) :-
18056 actual_non_ground_multi_hash_key___2__2(A, B).
18057actual_non_ground_multi_hash_key___2__1__0__4([A|B], C, D) :-
18058 ( A=suspension(_, active, E, F, _),
18059 E==C,
18060 F==D
18061 -> setarg(2, A, removed),
18062 ( nb_getval('$chr_store_multi_hash_chr_translate____actual_ground_multi_hash_keys___3-12',
18063 G),
18064 delete_ht(G, k(C, D), A)
18065 ),
18066 nb_getval('$chr_store_multi_hash_chr_translate____actual_ground_multi_hash_keys___3-1',
18067 H),
18068 delete_ht(H, C, A),
18069 actual_non_ground_multi_hash_key___2__1__0__4(B, C, D)
18070 ; actual_non_ground_multi_hash_key___2__1__0__4(B, C, D)
18071 ).
18072actual_non_ground_multi_hash_key___2__1(A, B) :-
18073 actual_non_ground_multi_hash_key___2__2(A, B).
18074actual_non_ground_multi_hash_key___2__2(A, B) :-
18075 C=suspension(D, active, A, B),
18076 'chr gen_id'(D),
18077 nb_getval('$chr_store_multi_hash_chr_translate____actual_non_ground_multi_hash_key___2-12',
18078 E),
18079 insert_ht(E, k(A, B), C).
18080symbol_count(A, B) :-
18081 symbol_count___2__0(A, B, _).
18082symbol_count___2__0(A, B, C) :-
18083 ( 'chr newvia_1'(A, D)
18084 -> get_attr(D, chr_translate, E),
18085 E=v(_, _, _, F, _, _, _, _, _, _, _)
18086 ; nb_getval('$chr_store_global_list_chr_translate____fresh_symbol___2',
18087 F)
18088 ),
18089 member(G, F),
18090 G=suspension(_, active, _, _, _, H, I),
18091 H==A,
18092 !,
18093 G=suspension(_, _, _, _, _, J, _),
18094 setarg(2, G, removed),
18095 term_variables(J, K),
18096 arg(5, G, L),
18097 ( var(L)
18098 -> nb_getval('$chr_store_global_list_chr_translate____fresh_symbol___2',
18099 M),
18100 M=[_|N],
18101 b_setval('$chr_store_global_list_chr_translate____fresh_symbol___2',
18102 N),
18103 ( N=[O|_]
18104 -> setarg(5, O, _)
18105 ; true
18106 )
18107 ; L=[_, _|N],
18108 setarg(2, L, N),
18109 ( N=[O|_]
18110 -> setarg(5, O, L)
18111 ; true
18112 )
18113 ),
18114 detach_fresh_symbol___2(K, G),
18115 ( var(C)
18116 -> true
18117 ; C=suspension(_, _, _, P, _),
18118 setarg(2, C, removed),
18119 term_variables(P, Q),
18120 arg(3, C, R),
18121 ( var(R)
18122 -> nb_getval('$chr_store_global_list_chr_translate____symbol_count___2',
18123 S),
18124 S=[_|T],
18125 b_setval('$chr_store_global_list_chr_translate____symbol_count___2',
18126 T),
18127 ( T=[U|_]
18128 -> setarg(3, U, _)
18129 ; true
18130 )
18131 ; R=[_, _|T],
18132 setarg(2, R, T),
18133 ( T=[U|_]
18134 -> setarg(3, U, R)
18135 ; true
18136 )
18137 ),
18138 detach_symbol_count___2(Q, C)
18139 ),
18140 atom_concat(A, B, I),
18141 V is B+1,
18142 symbol_count(A, V).
18143symbol_count___2__0(A, B, C) :-
18144 ( var(C)
18145 -> C=suspension(D, active, _, A, B),
18146 term_variables(A, E),
18147 'chr gen_id'(D),
18148 nb_getval('$chr_store_global_list_chr_translate____symbol_count___2',
18149 F),
18150 G=[C|F],
18151 b_setval('$chr_store_global_list_chr_translate____symbol_count___2',
18152 G),
18153 ( F=[H|_]
18154 -> setarg(3, H, G)
18155 ; true
18156 ),
18157 attach_symbol_count___2(E, C)
18158 ; setarg(2, C, active)
18159 ).
18160fresh_symbol(A, B) :-
18161 fresh_symbol___2__0(A, B, _).
18162fresh_symbol___2__0(A, B, C) :-
18163 ( 'chr newvia_1'(A, D)
18164 -> get_attr(D, chr_translate, E),
18165 E=v(_, _, F, _, _, _, _, _, _, _, _)
18166 ; nb_getval('$chr_store_global_list_chr_translate____symbol_count___2',
18167 F)
18168 ),
18169 member(G, F),
18170 G=suspension(_, active, _, H, I),
18171 H==A,
18172 !,
18173 G=suspension(_, _, _, J, _),
18174 setarg(2, G, removed),
18175 term_variables(J, K),
18176 arg(3, G, L),
18177 ( var(L)
18178 -> nb_getval('$chr_store_global_list_chr_translate____symbol_count___2',
18179 M),
18180 M=[_|N],
18181 b_setval('$chr_store_global_list_chr_translate____symbol_count___2',
18182 N),
18183 ( N=[O|_]
18184 -> setarg(3, O, _)
18185 ; true
18186 )
18187 ; L=[_, _|N],
18188 setarg(2, L, N),
18189 ( N=[O|_]
18190 -> setarg(3, O, L)
18191 ; true
18192 )
18193 ),
18194 detach_symbol_count___2(K, G),
18195 ( var(C)
18196 -> true
18197 ; C=suspension(_, P, _, _, _, Q, _),
18198 setarg(2, C, removed),
18199 ( P==not_stored_yet
18200 -> R=[]
18201 ; term_variables(Q, R),
18202 arg(5, C, S),
18203 ( var(S)
18204 -> nb_getval('$chr_store_global_list_chr_translate____fresh_symbol___2',
18205 T),
18206 T=[_|U],
18207 b_setval('$chr_store_global_list_chr_translate____fresh_symbol___2',
18208 U),
18209 ( U=[V|_]
18210 -> setarg(5, V, _)
18211 ; true
18212 )
18213 ; S=[_, _|U],
18214 setarg(2, S, U),
18215 ( U=[V|_]
18216 -> setarg(5, V, S)
18217 ; true
18218 )
18219 ),
18220 detach_fresh_symbol___2(R, C)
18221 )
18222 ),
18223 atom_concat(A, I, B),
18224 W is I+1,
18225 symbol_count(A, W).
18226fresh_symbol___2__0(A, B, C) :-
18227 ( var(C)
18228 -> C=suspension(D, not_stored_yet, t, 0, _, A, B),
18229 'chr gen_id'(D)
18230 ; true
18231 ),
18232 ( '$novel_production'(C, 157),
18233 !,
18234 '$extend_history'(C, 157),
18235 arg(2, C, E),
18236 setarg(2, C, active),
18237 arg(4, C, F),
18238 G is F+1,
18239 setarg(4, C, G),
18240 ( E==not_stored_yet
18241 -> C=suspension(_, _, _, _, _, H, _),
18242 term_variables(H, I),
18243 nb_getval('$chr_store_global_list_chr_translate____fresh_symbol___2',
18244 J),
18245 K=[C|J],
18246 b_setval('$chr_store_global_list_chr_translate____fresh_symbol___2',
18247 K),
18248 ( J=[L|_]
18249 -> setarg(5, L, K)
18250 ; true
18251 ),
18252 attach_fresh_symbol___2(I, C)
18253 ; true
18254 ),
18255 symbol_count(A, 0),
18256 ( C=suspension(_, active, _, G, _, _, _)
18257 -> setarg(2, C, inactive),
18258 fresh_symbol___2__1(A, B, C)
18259 ; true
18260 )
18261 ; fresh_symbol___2__1(A, B, C)
18262 ).
18263fresh_symbol___2__1(_, _, A) :-
18264 arg(2, A, B),
18265 setarg(2, A, active),
18266 arg(4, A, C),
18267 D is C+1,
18268 setarg(4, A, D),
18269 ( B==not_stored_yet
18270 -> A=suspension(_, _, _, _, _, E, _),
18271 term_variables(E, F),
18272 nb_getval('$chr_store_global_list_chr_translate____fresh_symbol___2',
18273 G),
18274 H=[A|G],
18275 b_setval('$chr_store_global_list_chr_translate____fresh_symbol___2',
18276 H),
18277 ( G=[I|_]
18278 -> setarg(5, I, H)
18279 ; true
18280 ),
18281 attach_fresh_symbol___2(F, A)
18282 ; true
18283 ).
18284prolog_global_variable(A) :-
18285 nb_getval('$chr_store_multi_hash_chr_translate____prolog_global_variable___1-1',
18286 B),
18287 lookup_ht(B, A, C),
18288 member(D, C),
18289 D=suspension(_, active, _, _),
18290 !.
18291prolog_global_variable(A) :-
18292 B=suspension(C, active, _, A),
18293 'chr gen_id'(C),
18294 nb_getval('$chr_store_global_ground_chr_translate____prolog_global_variable___1',
18295 D),
18296 E=[B|D],
18297 b_setval('$chr_store_global_ground_chr_translate____prolog_global_variable___1',
18298 E),
18299 ( D=[F|_]
18300 -> setarg(3, F, E)
18301 ; true
18302 ),
18303 nb_getval('$chr_store_multi_hash_chr_translate____prolog_global_variable___1-1',
18304 G),
18305 insert_ht(G, A, B).
18306prolog_global_variables(A) :-
18307 nb_getval('$chr_store_global_ground_chr_translate____prolog_global_variable___1',
18308 B),
18309 member(C, B),
18310 C=suspension(_, active, _, D),
18311 !,
18312 setarg(2, C, removed),
18313 arg(3, C, E),
18314 ( var(E)
18315 -> nb_getval('$chr_store_global_ground_chr_translate____prolog_global_variable___1',
18316 F),
18317 F=[_|G],
18318 b_setval('$chr_store_global_ground_chr_translate____prolog_global_variable___1',
18319 G),
18320 ( G=[H|_]
18321 -> setarg(3, H, _)
18322 ; true
18323 )
18324 ; E=[_, _|G],
18325 setarg(2, E, G),
18326 ( G=[H|_]
18327 -> setarg(3, H, E)
18328 ; true
18329 )
18330 ),
18331 nb_getval('$chr_store_multi_hash_chr_translate____prolog_global_variable___1-1',
18332 I),
18333 delete_ht(I, D, C),
18334 A=[D|J],
18335 prolog_global_variables(J).
18336prolog_global_variables([]).
18337background_info(A) :-
18338 nb_getval('$chr_store_global_ground_chr_translate____background_info___1',
18339 B),
18340 member(C, B),
18341 C=suspension(_, active, _, D),
18342 !,
18343 setarg(2, C, removed),
18344 arg(3, C, E),
18345 ( var(E)
18346 -> nb_getval('$chr_store_global_ground_chr_translate____background_info___1',
18347 F),
18348 F=[_|G],
18349 b_setval('$chr_store_global_ground_chr_translate____background_info___1',
18350 G),
18351 ( G=[H|_]
18352 -> setarg(3, H, _)
18353 ; true
18354 )
18355 ; E=[_, _|G],
18356 setarg(2, E, G),
18357 ( G=[H|_]
18358 -> setarg(3, H, E)
18359 ; true
18360 )
18361 ),
18362 append(A, D, I),
18363 background_info(I).
18364background_info(A) :-
18365 B=suspension(C, active, _, A),
18366 'chr gen_id'(C),
18367 nb_getval('$chr_store_global_ground_chr_translate____background_info___1',
18368 D),
18369 E=[B|D],
18370 b_setval('$chr_store_global_ground_chr_translate____background_info___1',
18371 E),
18372 ( D=[F|_]
18373 -> setarg(3, F, E)
18374 ; true
18375 ).
18376background_info(A, B) :-
18377 background_info___2__0(A, B, _).
18378background_info___2__0(A, B, C) :-
18379 nb_getval('$chr_store_global_list_chr_translate____get_bg_info___2', D),
18380 !,
18381 ( var(C)
18382 -> C=suspension(E, not_stored_yet, t, 0, _, A, B),
18383 'chr gen_id'(E)
18384 ; true
18385 ),
18386 background_info___2__0__0__1(D, A, B, C).
18387background_info___2__0__0__1([], A, B, C) :-
18388 background_info___2__1(A, B, C).
18389background_info___2__0__0__1([A|B], C, D, E) :-
18390 ( A=suspension(_, active, _, _, _, F, _),
18391 G=t(164, E, A),
18392 '$novel_production'(E, G),
18393 '$novel_production'(A, G),
18394 copy_term_nat(C, H),
18395 subsumes_term(H, F)
18396 -> '$extend_history'(E, G),
18397 arg(2, E, I),
18398 setarg(2, E, active),
18399 ( arg(4, E, J),
18400 K is J+1,
18401 setarg(4, E, K)
18402 ),
18403 ( I==not_stored_yet
18404 -> E=suspension(_, _, _, _, _, L, _),
18405 term_variables(L, M),
18406 nb_getval('$chr_store_global_list_chr_translate____background_info___2',
18407 N),
18408 O=[E|N],
18409 b_setval('$chr_store_global_list_chr_translate____background_info___2',
18410 O),
18411 ( N=[P|_]
18412 -> setarg(5, P, O)
18413 ; true
18414 ),
18415 attach_background_info___2(M, E)
18416 ; true
18417 ),
18418 copy_term_nat(C-D, F-Q),
18419 get_bg_info_answer([Q]),
18420 ( E=suspension(_, active, _, K, _, _, _)
18421 -> setarg(2, E, inactive),
18422 background_info___2__0__0__1(B, C, D, E)
18423 ; true
18424 )
18425 ; background_info___2__0__0__1(B, C, D, E)
18426 ).
18427background_info___2__0(A, B, C) :-
18428 ( var(C)
18429 -> C=suspension(D, not_stored_yet, t, 0, _, A, B),
18430 'chr gen_id'(D)
18431 ; true
18432 ),
18433 background_info___2__1(A, B, C).
18434background_info___2__1(_, _, A) :-
18435 arg(2, A, B),
18436 setarg(2, A, active),
18437 arg(4, A, C),
18438 D is C+1,
18439 setarg(4, A, D),
18440 ( B==not_stored_yet
18441 -> A=suspension(_, _, _, _, _, E, _),
18442 term_variables(E, F),
18443 nb_getval('$chr_store_global_list_chr_translate____background_info___2',
18444 G),
18445 H=[A|G],
18446 b_setval('$chr_store_global_list_chr_translate____background_info___2',
18447 H),
18448 ( G=[I|_]
18449 -> setarg(5, I, H)
18450 ; true
18451 ),
18452 attach_background_info___2(F, A)
18453 ; true
18454 ).
18455get_bg_info(A) :-
18456 nb_getval('$chr_store_global_ground_chr_translate____background_info___1',
18457 B),
18458 member(C, B),
18459 C=suspension(_, active, _, D),
18460 !,
18461 A=D.
18462get_bg_info([]).
18463get_bg_info(A, B) :-
18464 get_bg_info___2__0(A, B, _).
18465get_bg_info___2__0(A, B, C) :-
18466 nb_getval('$chr_store_global_list_chr_translate____background_info___2',
18467 D),
18468 !,
18469 ( var(C)
18470 -> C=suspension(E, not_stored_yet, t, 0, _, A, B),
18471 'chr gen_id'(E)
18472 ; true
18473 ),
18474 get_bg_info___2__0__0__1(D, A, B, C).
18475get_bg_info___2__0__0__1([], A, B, C) :-
18476 get_bg_info___2__1(A, B, C).
18477get_bg_info___2__0__0__1([A|B], C, D, E) :-
18478 ( A=suspension(_, active, _, _, _, F, G),
18479 H=t(164, A, E),
18480 '$novel_production'(A, H),
18481 '$novel_production'(E, H),
18482 copy_term_nat(F, I),
18483 subsumes_term(I, C)
18484 -> '$extend_history'(E, H),
18485 arg(2, E, J),
18486 setarg(2, E, active),
18487 ( arg(4, E, K),
18488 L is K+1,
18489 setarg(4, E, L)
18490 ),
18491 ( J==not_stored_yet
18492 -> E=suspension(_, _, _, _, _, M, _),
18493 term_variables(M, N),
18494 nb_getval('$chr_store_global_list_chr_translate____get_bg_info___2',
18495 O),
18496 P=[E|O],
18497 b_setval('$chr_store_global_list_chr_translate____get_bg_info___2',
18498 P),
18499 ( O=[Q|_]
18500 -> setarg(5, Q, P)
18501 ; true
18502 ),
18503 attach_get_bg_info___2(N, E)
18504 ; true
18505 ),
18506 copy_term_nat(F-G, C-R),
18507 get_bg_info_answer([R]),
18508 ( E=suspension(_, active, _, L, _, _, _)
18509 -> setarg(2, E, inactive),
18510 get_bg_info___2__0__0__1(B, C, D, E)
18511 ; true
18512 )
18513 ; get_bg_info___2__0__0__1(B, C, D, E)
18514 ).
18515get_bg_info___2__0(A, B, C) :-
18516 ( var(C)
18517 -> C=suspension(D, not_stored_yet, t, 0, _, A, B),
18518 'chr gen_id'(D)
18519 ; true
18520 ),
18521 get_bg_info___2__1(A, B, C).
18522get_bg_info___2__1(_, A, B) :-
18523 nb_getval('$chr_store_global_ground_chr_translate____get_bg_info_answer___1',
18524 C),
18525 member(D, C),
18526 D=suspension(_, active, _, E),
18527 !,
18528 setarg(2, D, removed),
18529 arg(3, D, F),
18530 ( var(F)
18531 -> nb_getval('$chr_store_global_ground_chr_translate____get_bg_info_answer___1',
18532 G),
18533 G=[_|H],
18534 b_setval('$chr_store_global_ground_chr_translate____get_bg_info_answer___1',
18535 H),
18536 ( H=[I|_]
18537 -> setarg(3, I, _)
18538 ; true
18539 )
18540 ; F=[_, _|H],
18541 setarg(2, F, H),
18542 ( H=[I|_]
18543 -> setarg(3, I, F)
18544 ; true
18545 )
18546 ),
18547 ( var(B)
18548 -> true
18549 ; B=suspension(_, J, _, _, _, K, _),
18550 setarg(2, B, removed),
18551 ( J==not_stored_yet
18552 -> L=[]
18553 ; term_variables(K, L),
18554 arg(5, B, M),
18555 ( var(M)
18556 -> nb_getval('$chr_store_global_list_chr_translate____get_bg_info___2',
18557 N),
18558 N=[_|O],
18559 b_setval('$chr_store_global_list_chr_translate____get_bg_info___2',
18560 O),
18561 ( O=[P|_]
18562 -> setarg(5, P, _)
18563 ; true
18564 )
18565 ; M=[_, _|O],
18566 setarg(2, M, O),
18567 ( O=[P|_]
18568 -> setarg(5, P, M)
18569 ; true
18570 )
18571 ),
18572 detach_get_bg_info___2(L, B)
18573 )
18574 ),
18575 A=E.
18576get_bg_info___2__1(_, A, B) :-
18577 ( var(B)
18578 -> true
18579 ; B=suspension(_, C, _, _, _, D, _),
18580 setarg(2, B, removed),
18581 ( C==not_stored_yet
18582 -> E=[]
18583 ; term_variables(D, E),
18584 arg(5, B, F),
18585 ( var(F)
18586 -> nb_getval('$chr_store_global_list_chr_translate____get_bg_info___2',
18587 G),
18588 G=[_|H],
18589 b_setval('$chr_store_global_list_chr_translate____get_bg_info___2',
18590 H),
18591 ( H=[I|_]
18592 -> setarg(5, I, _)
18593 ; true
18594 )
18595 ; F=[_, _|H],
18596 setarg(2, F, H),
18597 ( H=[I|_]
18598 -> setarg(5, I, F)
18599 ; true
18600 )
18601 ),
18602 detach_get_bg_info___2(E, B)
18603 )
18604 ),
18605 A=[].
18606get_bg_info_answer(A) :-
18607 nb_getval('$chr_store_global_ground_chr_translate____get_bg_info_answer___1',
18608 B),
18609 member(C, B),
18610 C=suspension(_, active, _, D),
18611 !,
18612 setarg(2, C, removed),
18613 arg(3, C, E),
18614 ( var(E)
18615 -> nb_getval('$chr_store_global_ground_chr_translate____get_bg_info_answer___1',
18616 F),
18617 F=[_|G],
18618 b_setval('$chr_store_global_ground_chr_translate____get_bg_info_answer___1',
18619 G),
18620 ( G=[H|_]
18621 -> setarg(3, H, _)
18622 ; true
18623 )
18624 ; E=[_, _|G],
18625 setarg(2, E, G),
18626 ( G=[H|_]
18627 -> setarg(3, H, E)
18628 ; true
18629 )
18630 ),
18631 append(A, D, I),
18632 get_bg_info_answer(I).
18633get_bg_info_answer(A) :-
18634 B=suspension(C, active, _, A),
18635 'chr gen_id'(C),
18636 nb_getval('$chr_store_global_ground_chr_translate____get_bg_info_answer___1',
18637 D),
18638 E=[B|D],
18639 b_setval('$chr_store_global_ground_chr_translate____get_bg_info_answer___1',
18640 E),
18641 ( D=[F|_]
18642 -> setarg(3, F, E)
18643 ; true
18644 ).
18645prev_guard_list(A, B, C, D, E, F, G, H) :-
18646 nb_getval('$chr_store_multi_hash_chr_translate____rule___2-1', I),
18647 lookup_ht(I, B, J),
18648 member(K, J),
18649 K=suspension(_, active, _, _, _, L),
18650 L=pragma(rule(M, N, O, _), _, _, _, _),
18651 M\==[],
18652 make_head_matchings_explicit(B, P, Q),
18653 setof(R,
18654 chr_translate:head_subset(P, D, R),
18655 S),
18656 !,
18657 append(M, N, T),
18658 compute_derived_info(S,
18659 Q,
18660 P,
18661 T,
18662 O,
18663 G,
18664 D,
18665 H,
18666 U,
18667 V),
18668 append(F, U, W),
18669 normalize_conj_list(W, X),
18670 append(V, H, Y),
18671 normalize_conj_list(Y, Z),
18672 next_prev_rule(C, A1, B1),
18673 prev_guard_list(A,
18674 A1,
18675 B1,
18676 D,
18677 E,
18678 X,
18679 G,
18680 Z).
18681prev_guard_list(A, B, C, D, E, F, G, H) :-
18682 ( B>0
18683 -> next_prev_rule(C, I, J),
18684 prev_guard_list(A,
18685 I,
18686 J,
18687 D,
18688 E,
18689 F,
18690 G,
18691 H)
18692 ; prev_guard_list(A, D, E, F, G, H)
18693 ).
18694prev_guard_list(A, B, C, D, E, F) :-
18695 prev_guard_list___6__0(A,
18696 B,
18697 C,
18698 D,
18699 E,
18700 F,
18701 _).
18702prev_guard_list___6__0(A, B, C, D, E, F, _) :-
18703 F\==[],
18704 !,
18705 head_types_modes_condition(F, B, G),
18706 conj2list(G, H),
18707 term_variables(B, I),
18708 append([chr_pp_headvariables(I)|H], D, J),
18709 normalize_conj_list(J, K),
18710 append(B, K, L),
18711 add_background_info([C|L], M),
18712 append(K, M, N),
18713 normalize_conj_list(N, O),
18714 prev_guard_list(A, B, C, O, E, []).
18715prev_guard_list___6__0(A, B, C, D, E, F, G) :-
18716 nb_getval('$chr_store_multi_hash_chr_translate____rule___2-1', H),
18717 lookup_ht(H, A, I),
18718 ( member(J, I),
18719 J=suspension(_, active, _, _, _, K),
18720 K=pragma(rule(L, M, C, N), O, P, Q, A),
18721 C\==true,
18722 append(E, D, R),
18723 ( conj2list(C, S),
18724 append(R, S, T),
18725 guard_entailment:entails_guard(T, fail)
18726 -> U=fail
18727 ; simplify_guard(C, N, R, U, V)
18728 ),
18729 C\==U,
18730 !,
18731 setarg(2, J, removed),
18732 arg(4, J, W),
18733 ( var(W)
18734 -> nb_getval('$chr_store_global_ground_chr_translate____rule___2',
18735 X),
18736 X=[_|Y],
18737 b_setval('$chr_store_global_ground_chr_translate____rule___2',
18738 Y),
18739 ( Y=[Z|_]
18740 -> setarg(4, Z, _)
18741 ; true
18742 )
18743 ; W=[_, _|Y],
18744 setarg(2, W, Y),
18745 ( Y=[Z|_]
18746 -> setarg(4, Z, W)
18747 ; true
18748 )
18749 ),
18750 nb_getval('$chr_store_multi_hash_chr_translate____rule___2-1', A1),
18751 delete_ht(A1, A, J),
18752 rule(A,
18753 pragma(rule(L, M, U, V),
18754 O,
18755 P,
18756 Q,
18757 A)),
18758 prev_guard_list(A, B, U, D, E, [])
18759 ; !,
18760 G=suspension(B1, not_stored_yet, t, _, A, B, C, D, E, F),
18761 'chr gen_id'(B1),
18762 prev_guard_list___6__0__0__3(I,
18763 A,
18764 B,
18765 C,
18766 D,
18767 E,
18768 F,
18769 G)
18770 ).
18771prev_guard_list___6__0__0__3([], A, B, C, D, E, F, G) :-
18772 prev_guard_list___6__1(A,
18773 B,
18774 C,
18775 D,
18776 E,
18777 F,
18778 G).
18779prev_guard_list___6__0__0__3([A|B], C, D, E, F, G, H, I) :-
18780 ( A=suspension(_, active, _, _, J, K),
18781 J==C,
18782 L=t(178, I, A),
18783 '$novel_production'(I, L),
18784 '$novel_production'(A, L),
18785 chr_pp_flag(check_impossible_rules, on),
18786 K=pragma(rule(_, _, E, _), _, _, _, C),
18787 conj2list(E, M),
18788 append(G, F, N),
18789 append(N, M, O),
18790 guard_entailment:entails_guard(O, fail)
18791 -> '$extend_history'(I, L),
18792 arg(2, I, P),
18793 setarg(2, I, active),
18794 ( P==not_stored_yet
18795 -> nb_getval('$chr_store_global_ground_chr_translate____prev_guard_list___6',
18796 Q),
18797 R=[I|Q],
18798 b_setval('$chr_store_global_ground_chr_translate____prev_guard_list___6',
18799 R),
18800 ( Q=[S|_]
18801 -> setarg(4, S, R)
18802 ; true
18803 ),
18804 nb_getval('$chr_store_multi_hash_chr_translate____prev_guard_list___6-1',
18805 T),
18806 insert_ht(T, C, I)
18807 ; true
18808 ),
18809 chr_warning(weird_program,
18810 'Heads will never match or guard will always fail in ~@.\n\tThis rule will never fire!\n',
18811 [format_rule(K)]),
18812 set_all_passive(C),
18813 ( I=suspension(_, active, _, _, _, _, _, _, _, _)
18814 -> setarg(2, I, inactive),
18815 prev_guard_list___6__0__0__3(B,
18816 C,
18817 D,
18818 E,
18819 F,
18820 G,
18821 H,
18822 I)
18823 ; true
18824 )
18825 ; prev_guard_list___6__0__0__3(B,
18826 C,
18827 D,
18828 E,
18829 F,
18830 G,
18831 H,
18832 I)
18833 ).
18834prev_guard_list___6__0(A, B, C, D, E, F, G) :-
18835 G=suspension(H, not_stored_yet, t, _, A, B, C, D, E, F),
18836 'chr gen_id'(H),
18837 prev_guard_list___6__1(A,
18838 B,
18839 C,
18840 D,
18841 E,
18842 F,
18843 G).
18844prev_guard_list___6__1(A, B, C, D, E, F, G) :-
18845 nb_getval('$chr_store_multi_hash_chr_translate____rule___2-1', H),
18846 lookup_ht(H, A, I),
18847 !,
18848 prev_guard_list___6__1__0__4(I,
18849 A,
18850 B,
18851 C,
18852 D,
18853 E,
18854 F,
18855 G).
18856prev_guard_list___6__1__0__4([], A, B, C, D, E, F, G) :-
18857 prev_guard_list___6__2(A,
18858 B,
18859 C,
18860 D,
18861 E,
18862 F,
18863 G).
18864prev_guard_list___6__1__0__4([A|B], C, D, E, F, G, H, I) :-
18865 ( A=suspension(_, active, _, _, J, K),
18866 J==C,
18867 K=pragma(rule(L, M, E, N), O, P, Q, C),
18868 simplify_heads(G, F, E, N, R, S),
18869 R\==[],
18870 extract_arguments(L, T),
18871 extract_arguments(M, U),
18872 extract_arguments(D, V),
18873 replace_some_heads(T,
18874 U,
18875 V,
18876 R,
18877 W,
18878 X,
18879 E,
18880 N,
18881 Y),
18882 substitute_arguments(L, W, Z),
18883 substitute_arguments(M, X, A1),
18884 append(S, Y, B1),
18885 list2conj(B1, C1),
18886 D1=pragma(rule(Z, A1, E, (C1, N)), O, P, Q, C),
18887 ( L\==Z
18888 ; M\==A1
18889 )
18890 -> setarg(2, A, removed),
18891 ( arg(4, A, E1),
18892 ( var(E1)
18893 -> nb_getval('$chr_store_global_ground_chr_translate____rule___2',
18894 F1),
18895 F1=[_|G1],
18896 b_setval('$chr_store_global_ground_chr_translate____rule___2',
18897 G1),
18898 ( G1=[H1|_]
18899 -> setarg(4, H1, _)
18900 ; true
18901 )
18902 ; E1=[_, _|G1],
18903 setarg(2, E1, G1),
18904 ( G1=[H1|_]
18905 -> setarg(4, H1, E1)
18906 ; true
18907 )
18908 )
18909 ),
18910 nb_getval('$chr_store_multi_hash_chr_translate____rule___2-1', I1),
18911 delete_ht(I1, C, A),
18912 arg(2, I, J1),
18913 setarg(2, I, active),
18914 ( J1==not_stored_yet
18915 -> nb_getval('$chr_store_global_ground_chr_translate____prev_guard_list___6',
18916 K1),
18917 L1=[I|K1],
18918 b_setval('$chr_store_global_ground_chr_translate____prev_guard_list___6',
18919 L1),
18920 ( K1=[M1|_]
18921 -> setarg(4, M1, L1)
18922 ; true
18923 ),
18924 nb_getval('$chr_store_multi_hash_chr_translate____prev_guard_list___6-1',
18925 N1),
18926 insert_ht(N1, C, I)
18927 ; true
18928 ),
18929 rule(C, D1),
18930 ( I=suspension(_, active, _, _, _, _, _, _, _, _)
18931 -> setarg(2, I, inactive),
18932 prev_guard_list___6__1__0__4(B,
18933 C,
18934 D,
18935 E,
18936 F,
18937 G,
18938 H,
18939 I)
18940 ; true
18941 )
18942 ; prev_guard_list___6__1__0__4(B,
18943 C,
18944 D,
18945 E,
18946 F,
18947 G,
18948 H,
18949 I)
18950 ).
18951prev_guard_list___6__1(A, B, C, D, E, F, G) :-
18952 prev_guard_list___6__2(A,
18953 B,
18954 C,
18955 D,
18956 E,
18957 F,
18958 G).
18959prev_guard_list___6__2(A, B, C, D, E, F, G) :-
18960 nb_getval('$chr_store_multi_hash_chr_translate____rule___2-1', H),
18961 lookup_ht(H, A, I),
18962 !,
18963 prev_guard_list___6__2__0__5(I,
18964 A,
18965 B,
18966 C,
18967 D,
18968 E,
18969 F,
18970 G).
18971prev_guard_list___6__2__0__5([], A, B, C, D, E, F, G) :-
18972 prev_guard_list___6__3(A,
18973 B,
18974 C,
18975 D,
18976 E,
18977 F,
18978 G).
18979prev_guard_list___6__2__0__5([A|B], C, D, E, F, G, H, I) :-
18980 ( A=suspension(_, active, _, _, J, K),
18981 J==C,
18982 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-3',
18983 L),
18984 lookup_ht(L, C, M)
18985 -> prev_guard_list___6__2__1__5(M,
18986 K,
18987 A,
18988 B,
18989 C,
18990 D,
18991 E,
18992 F,
18993 G,
18994 H,
18995 I)
18996 ; prev_guard_list___6__2__0__5(B,
18997 C,
18998 D,
18999 E,
19000 F,
19001 G,
19002 H,
19003 I)
19004 ).
19005prev_guard_list___6__2__1__5([], _, _, A, B, C, D, E, F, G, H) :-
19006 prev_guard_list___6__2__0__5(A,
19007 B,
19008 C,
19009 D,
19010 E,
19011 F,
19012 G,
19013 H).
19014prev_guard_list___6__2__1__5([A|B], C, D, E, F, G, H, I, J, K, L) :-
19015 ( A=suspension(_, active, _, _, M, N, O, _, _),
19016 O==F,
19017 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-13',
19018 P),
19019 lookup_ht(P, k(M, F), Q)
19020 -> prev_guard_list___6__2__2__5(Q,
19021 M,
19022 N,
19023 A,
19024 B,
19025 C,
19026 D,
19027 E,
19028 F,
19029 G,
19030 H,
19031 I,
19032 J,
19033 K,
19034 L)
19035 ; prev_guard_list___6__2__1__5(B,
19036 C,
19037 D,
19038 E,
19039 F,
19040 G,
19041 H,
19042 I,
19043 J,
19044 K,
19045 L)
19046 ).
19047prev_guard_list___6__2__2__5([], _, _, _, A, B, C, D, E, F, G, H, I, J, K) :-
19048 prev_guard_list___6__2__1__5(A,
19049 B,
19050 C,
19051 D,
19052 E,
19053 F,
19054 G,
19055 H,
19056 I,
19057 J,
19058 K).
19059prev_guard_list___6__2__2__5([A|B], C, D, E, F, G, H, I, J, K, L, M, N, O, P) :-
19060 ( A=suspension(_, active, _, _, Q, R, S, T, _),
19061 A\==E,
19062 Q==C,
19063 S==J,
19064 nb_getval('$chr_store_global_ground_chr_translate____multiple_occ_constraints_checked___1',
19065 U)
19066 -> prev_guard_list___6__2__3__5(U,
19067 R,
19068 T,
19069 A,
19070 B,
19071 C,
19072 D,
19073 E,
19074 F,
19075 G,
19076 H,
19077 I,
19078 J,
19079 K,
19080 L,
19081 M,
19082 N,
19083 O,
19084 P)
19085 ; prev_guard_list___6__2__2__5(B,
19086 C,
19087 D,
19088 E,
19089 F,
19090 G,
19091 H,
19092 I,
19093 J,
19094 K,
19095 L,
19096 M,
19097 N,
19098 O,
19099 P)
19100 ).
19101prev_guard_list___6__2__3__5([], _, _, _, A, B, C, D, E, F, G, H, I, J, K, L, M, N, O) :-
19102 prev_guard_list___6__2__2__5(A,
19103 B,
19104 C,
19105 D,
19106 E,
19107 F,
19108 G,
19109 H,
19110 I,
19111 J,
19112 K,
19113 L,
19114 M,
19115 N,
19116 O).
19117prev_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) :-
19118 ( A=suspension(_, active, _, U),
19119 C<H,
19120 chr_pp_flag(occurrence_subsumption, on),
19121 K=pragma(rule(V, _, _, _), _, _, _, _),
19122 V\==[],
19123 \+ tree_set_memberchk(G, U)
19124 -> setarg(2, A, removed),
19125 arg(3, A, W),
19126 ( var(W)
19127 -> nb_getval('$chr_store_global_ground_chr_translate____multiple_occ_constraints_checked___1',
19128 X),
19129 X=[_|Y],
19130 b_setval('$chr_store_global_ground_chr_translate____multiple_occ_constraints_checked___1',
19131 Y),
19132 ( Y=[Z|_]
19133 -> setarg(3, Z, _)
19134 ; true
19135 )
19136 ; W=[_, _|Y],
19137 setarg(2, W, Y),
19138 ( Y=[Z|_]
19139 -> setarg(3, Z, W)
19140 ; true
19141 )
19142 ),
19143 arg(2, T, A1),
19144 setarg(2, T, active),
19145 ( A1==not_stored_yet
19146 -> nb_getval('$chr_store_global_ground_chr_translate____prev_guard_list___6',
19147 B1),
19148 C1=[T|B1],
19149 b_setval('$chr_store_global_ground_chr_translate____prev_guard_list___6',
19150 C1),
19151 ( B1=[D1|_]
19152 -> setarg(4, D1, C1)
19153 ; true
19154 ),
19155 nb_getval('$chr_store_multi_hash_chr_translate____prev_guard_list___6-1',
19156 E1),
19157 insert_ht(E1, N, T)
19158 ; true
19159 ),
19160 first_occ_in_rule(N, G, C, D),
19161 tree_set_add(U, G, F1),
19162 multiple_occ_constraints_checked(F1),
19163 ( T=suspension(_, active, _, _, _, _, _, _, _, _)
19164 -> setarg(2, T, inactive),
19165 prev_guard_list___6__2__3__5(B,
19166 C,
19167 D,
19168 E,
19169 F,
19170 G,
19171 H,
19172 I,
19173 J,
19174 K,
19175 L,
19176 M,
19177 N,
19178 O,
19179 P,
19180 Q,
19181 R,
19182 S,
19183 T)
19184 ; true
19185 )
19186 ; prev_guard_list___6__2__3__5(B,
19187 C,
19188 D,
19189 E,
19190 F,
19191 G,
19192 H,
19193 I,
19194 J,
19195 K,
19196 L,
19197 M,
19198 N,
19199 O,
19200 P,
19201 Q,
19202 R,
19203 S,
19204 T)
19205 ).
19206prev_guard_list___6__2(A, B, C, D, E, F, G) :-
19207 prev_guard_list___6__3(A,
19208 B,
19209 C,
19210 D,
19211 E,
19212 F,
19213 G).
19214prev_guard_list___6__3(A, _, _, _, _, _, B) :-
19215 nb_getval('$chr_store_global_ground_chr_translate____multiple_occ_constraints_checked___1',
19216 C),
19217 member(D, C),
19218 D=suspension(_, active, _, _),
19219 !,
19220 setarg(2, D, removed),
19221 arg(3, D, E),
19222 ( var(E)
19223 -> nb_getval('$chr_store_global_ground_chr_translate____multiple_occ_constraints_checked___1',
19224 F),
19225 F=[_|G],
19226 b_setval('$chr_store_global_ground_chr_translate____multiple_occ_constraints_checked___1',
19227 G),
19228 ( G=[H|_]
19229 -> setarg(3, H, _)
19230 ; true
19231 )
19232 ; E=[_, _|G],
19233 setarg(2, E, G),
19234 ( G=[H|_]
19235 -> setarg(3, H, E)
19236 ; true
19237 )
19238 ),
19239 ( var(B)
19240 -> true
19241 ; arg(2, B, I),
19242 setarg(2, B, removed),
19243 ( I==not_stored_yet
19244 -> true
19245 ; arg(4, B, J),
19246 ( var(J)
19247 -> nb_getval('$chr_store_global_ground_chr_translate____prev_guard_list___6',
19248 K),
19249 K=[_|L],
19250 b_setval('$chr_store_global_ground_chr_translate____prev_guard_list___6',
19251 L),
19252 ( L=[M|_]
19253 -> setarg(4, M, _)
19254 ; true
19255 )
19256 ; J=[_, _|L],
19257 setarg(2, J, L),
19258 ( L=[M|_]
19259 -> setarg(4, M, J)
19260 ; true
19261 )
19262 ),
19263 nb_getval('$chr_store_multi_hash_chr_translate____prev_guard_list___6-1',
19264 N),
19265 delete_ht(N, A, B)
19266 )
19267 ).
19268prev_guard_list___6__3(A, _, _, _, _, _, B) :-
19269 arg(2, B, C),
19270 setarg(2, B, active),
19271 ( C==not_stored_yet
19272 -> nb_getval('$chr_store_global_ground_chr_translate____prev_guard_list___6',
19273 D),
19274 E=[B|D],
19275 b_setval('$chr_store_global_ground_chr_translate____prev_guard_list___6',
19276 E),
19277 ( D=[F|_]
19278 -> setarg(4, F, E)
19279 ; true
19280 ),
19281 nb_getval('$chr_store_multi_hash_chr_translate____prev_guard_list___6-1',
19282 G),
19283 insert_ht(G, A, B)
19284 ; true
19285 ).
19286simplify_guards(A) :-
19287 nb_getval('$chr_store_multi_hash_chr_translate____rule___2-1', B),
19288 lookup_ht(B, A, C),
19289 member(D, C),
19290 D=suspension(_, active, _, _, _, E),
19291 !,
19292 E=pragma(rule(F, G, H, _), ids(I, J), _, _, A),
19293 append(F, G, K),
19294 make_head_matchings_explicit_not_negated(K, L, M),
19295 tree_set_empty(N),
19296 multiple_occ_constraints_checked(N),
19297 apply_guard_wrt_term(K, H, O),
19298 append(I, J, P),
19299 findall(tuple(Q, R, A)-(-A),
19300 ( member(S, P),
19301 get_occurrence_from_id(Q, R, A, S)
19302 ),
19303 T),
19304 empty_q(U),
19305 insert_list_q(T, U, V),
19306 next_prev_rule(V, _, W),
19307 next_prev_rule(W, X, Y),
19308 prev_guard_list(A,
19309 X,
19310 Y,
19311 L,
19312 H,
19313 [],
19314 M,
19315 [O]),
19316 Z is A+1,
19317 simplify_guards(Z).
19318simplify_guards(_).
19319set_all_passive(A) :-
19320 set_all_passive___1__0(A, _).
19321set_all_passive___1__0(A, B) :-
19322 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-3', C),
19323 lookup_ht(C, A, D),
19324 !,
19325 B=suspension(E, not_stored_yet, t, A),
19326 'chr gen_id'(E),
19327 set_all_passive___1__0__0__1(D, A, B).
19328set_all_passive___1__0__0__1([], A, B) :-
19329 set_all_passive___1__1(A, B).
19330set_all_passive___1__0__0__1([A|B], C, D) :-
19331 ( A=suspension(_, active, _, _, _, _, E, F, _),
19332 E==C,
19333 G=t(180, D, A),
19334 '$novel_production'(D, G),
19335 '$novel_production'(A, G)
19336 -> '$extend_history'(D, G),
19337 arg(2, D, H),
19338 setarg(2, D, active),
19339 ( H==not_stored_yet
19340 -> nb_getval('$chr_store_multi_hash_chr_translate____set_all_passive___1-1',
19341 I),
19342 insert_ht(I, C, D)
19343 ; true
19344 ),
19345 passive(C, F),
19346 ( D=suspension(_, active, _, _)
19347 -> setarg(2, D, inactive),
19348 set_all_passive___1__0__0__1(B, C, D)
19349 ; true
19350 )
19351 ; set_all_passive___1__0__0__1(B, C, D)
19352 ).
19353set_all_passive___1__0(A, B) :-
19354 B=suspension(C, not_stored_yet, t, A),
19355 'chr gen_id'(C),
19356 set_all_passive___1__1(A, B).
19357set_all_passive___1__1(A, B) :-
19358 ( var(B)
19359 -> true
19360 ; arg(2, B, C),
19361 setarg(2, B, removed),
19362 ( C==not_stored_yet
19363 -> true
19364 ; nb_getval('$chr_store_multi_hash_chr_translate____set_all_passive___1-1',
19365 D),
19366 delete_ht(D, A, B)
19367 )
19368 ).
19369precompute_head_matchings :-
19370 precompute_head_matchings___0__0(_).
19371precompute_head_matchings___0__0(A) :-
19372 nb_getval('$chr_store_global_ground_chr_translate____rule___2', B),
19373 !,
19374 A=suspension(C, not_stored_yet, t, _),
19375 'chr gen_id'(C),
19376 precompute_head_matchings___0__0__0__1(B, A).
19377precompute_head_matchings___0__0__0__1([], A) :-
19378 precompute_head_matchings___0__1(A).
19379precompute_head_matchings___0__0__0__1([A|B], C) :-
19380 ( A=suspension(_, active, _, _, D, E),
19381 F=t(174, A, C),
19382 '$novel_production'(A, F),
19383 '$novel_production'(C, F)
19384 -> '$extend_history'(C, F),
19385 arg(2, C, G),
19386 setarg(2, C, active),
19387 ( G==not_stored_yet
19388 -> nb_getval('$chr_store_global_ground_chr_translate____precompute_head_matchings___0',
19389 H),
19390 I=[C|H],
19391 b_setval('$chr_store_global_ground_chr_translate____precompute_head_matchings___0',
19392 I),
19393 ( H=[J|_]
19394 -> setarg(4, J, I)
19395 ; true
19396 )
19397 ; true
19398 ),
19399 E=pragma(rule(K, L, _, _), _, _, _, _),
19400 append(K, L, M),
19401 make_head_matchings_explicit_(M, N, O),
19402 copy_term_nat(N-O, P-Q),
19403 make_head_matchings_explicit_memo_table(D, P, Q),
19404 ( C=suspension(_, active, _, _)
19405 -> setarg(2, C, inactive),
19406 precompute_head_matchings___0__0__0__1(B, C)
19407 ; true
19408 )
19409 ; precompute_head_matchings___0__0__0__1(B, C)
19410 ).
19411precompute_head_matchings___0__0(A) :-
19412 A=suspension(B, not_stored_yet, t, _),
19413 'chr gen_id'(B),
19414 precompute_head_matchings___0__1(A).
19415precompute_head_matchings___0__1(A) :-
19416 ( var(A)
19417 -> true
19418 ; arg(2, A, B),
19419 setarg(2, A, removed),
19420 ( B==not_stored_yet
19421 -> true
19422 ; arg(4, A, C),
19423 ( var(C)
19424 -> nb_getval('$chr_store_global_ground_chr_translate____precompute_head_matchings___0',
19425 D),
19426 D=[_|E],
19427 b_setval('$chr_store_global_ground_chr_translate____precompute_head_matchings___0',
19428 E),
19429 ( E=[F|_]
19430 -> setarg(4, F, _)
19431 ; true
19432 )
19433 ; C=[_, _|E],
19434 setarg(2, C, E),
19435 ( E=[F|_]
19436 -> setarg(4, F, C)
19437 ; true
19438 )
19439 )
19440 )
19441 ).
19442make_head_matchings_explicit_memo_table(A, B, C) :-
19443 D=suspension(E, active, A, B, C),
19444 'chr gen_id'(E),
19445 nb_getval('$chr_store_multi_hash_chr_translate____make_head_matchings_explicit_memo_table___3-1',
19446 F),
19447 insert_ht(F, A, D).
19448make_head_matchings_explicit_memo_lookup(A, B, C) :-
19449 nb_getval('$chr_store_multi_hash_chr_translate____make_head_matchings_explicit_memo_table___3-1',
19450 D),
19451 lookup_ht(D, A, E),
19452 member(F, E),
19453 F=suspension(_, active, _, G, H),
19454 !,
19455 B=G,
19456 C=H.
19457make_head_matchings_explicit_memo_lookup(_, _, _) :-
19458 fail.
19459first_occ_in_rule(A, B, C, _) :-
19460 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-13',
19461 D),
19462 lookup_ht(D, k(B, A), E),
19463 member(F, E),
19464 F=suspension(_, active, _, _, _, G, _, H, _),
19465 G<C,
19466 !,
19467 first_occ_in_rule(A, B, G, H).
19468first_occ_in_rule(A, B, C, D) :-
19469 B=E/F,
19470 functor(G, E, F),
19471 next_occ_in_rule(A, B, C, D, [], G).
19472next_occ_in_rule(A, B, C, D, _, E) :-
19473 nb_getval('$chr_store_multi_hash_chr_translate____passive___2-1', F),
19474 lookup_ht(F, A, G),
19475 member(H, G),
19476 H=suspension(_, active, _, _, I),
19477 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-134',
19478 J),
19479 lookup_ht(J, k(B, A, I), K),
19480 member(L, K),
19481 L=suspension(_, active, _, _, _, M, _, _, _),
19482 M is C+1,
19483 !,
19484 next_occ_in_rule(A, B, M, D, _, E).
19485next_occ_in_rule(A, B, C, D, E, F) :-
19486 nb_getval('$chr_store_multi_hash_chr_translate____prev_guard_list___6-1',
19487 G),
19488 lookup_ht(G, A, H),
19489 member(I, H),
19490 I=suspension(_, active, _, _, _, J, K, L, M, _),
19491 nb_getval('$chr_store_multi_hash_chr_translate____rule___2-1', N),
19492 lookup_ht(N, A, O),
19493 member(P, O),
19494 P=suspension(_, active, _, _, _, Q),
19495 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-13',
19496 R),
19497 lookup_ht(R, k(B, A), S),
19498 member(T, S),
19499 T=suspension(_, active, _, _, _, U, _, V, _),
19500 U is C+1,
19501 Q=pragma(rule(W, X, K, _), ids(_, _), _, _, A),
19502 !,
19503 append(W, X, Y),
19504 add_failing_occ(Q,
19505 Y,
19506 J,
19507 D,
19508 Z,
19509 F,
19510 M,
19511 B,
19512 A1),
19513 ( Z==[chr_pp_void_info]
19514 -> next_occ_in_rule(A, B, U, V, E, F)
19515 ; append(Z, E, B1),
19516 add_failing_occ(Q,
19517 Y,
19518 J,
19519 V,
19520 C1,
19521 F,
19522 M,
19523 B,
19524 D1),
19525 copy_term(L, E1),
19526 variable_replacement(L, E1, F1),
19527 copy_with_variable_replacement(L, G1, A1),
19528 copy_with_variable_replacement(L, H1, D1),
19529 copy_with_variable_replacement(H1, I1, F1),
19530 append(B1, G1, J1),
19531 append(J1, I1, K1),
19532 copy_with_variable_replacement(M, L1, A1),
19533 copy_with_variable_replacement(M, M1, D1),
19534 append(M1, K1, N1),
19535 append([chr_pp_active_constraint(F)|L1], N1, O1),
19536 list2conj(C1, P1),
19537 copy_term((B1, K1, O1, P1, F),
19538 (_, _, Q1, R1, _)),
19539 ( P1\=chr_pp_void_info
19540 -> ( guard_entailment:entails_guard(Q1, R1)
19541 -> passive(A, V)
19542 ; true
19543 )
19544 ; true
19545 ),
19546 !,
19547 next_occ_in_rule(A, B, U, V, B1, F)
19548 ).
19549next_occ_in_rule(_, _, _, _, _, _).
19550multiple_occ_constraints_checked(A) :-
19551 nb_getval('$chr_store_global_ground_chr_translate____prev_guard_list___6',
19552 B),
19553 member(C, B),
19554 C=suspension(_, active, _, _, D, _, _, _, _, _),
19555 ( nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-3',
19556 E),
19557 lookup_ht(E, D, F),
19558 member(G, F),
19559 G=suspension(_, active, _, _, H, I, _, _, _),
19560 nb_getval('$chr_store_multi_hash_chr_translate____rule___2-1', J),
19561 lookup_ht(J, D, K),
19562 member(L, K),
19563 L=suspension(_, active, _, _, _, M),
19564 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-13',
19565 N),
19566 lookup_ht(N, k(H, D), O),
19567 member(P, O),
19568 P=suspension(_, active, _, _, _, Q, _, R, _),
19569 P\==G,
19570 Q<I,
19571 chr_pp_flag(occurrence_subsumption, on),
19572 M=pragma(rule(S, _, _, _), _, _, _, _),
19573 S\==[],
19574 \+ tree_set_memberchk(H, A),
19575 !,
19576 first_occ_in_rule(D, H, Q, R),
19577 tree_set_add(A, H, T),
19578 multiple_occ_constraints_checked(T)
19579 ; !,
19580 setarg(2, C, removed),
19581 arg(4, C, U),
19582 ( var(U)
19583 -> nb_getval('$chr_store_global_ground_chr_translate____prev_guard_list___6',
19584 V),
19585 V=[_|W],
19586 b_setval('$chr_store_global_ground_chr_translate____prev_guard_list___6',
19587 W),
19588 ( W=[X|_]
19589 -> setarg(4, X, _)
19590 ; true
19591 )
19592 ; U=[_, _|W],
19593 setarg(2, U, W),
19594 ( W=[X|_]
19595 -> setarg(4, X, U)
19596 ; true
19597 )
19598 ),
19599 nb_getval('$chr_store_multi_hash_chr_translate____prev_guard_list___6-1',
19600 Y),
19601 delete_ht(Y, D, C)
19602 ).
19603multiple_occ_constraints_checked(A) :-
19604 B=suspension(C, active, _, A),
19605 'chr gen_id'(C),
19606 nb_getval('$chr_store_global_ground_chr_translate____multiple_occ_constraints_checked___1',
19607 D),
19608 E=[B|D],
19609 b_setval('$chr_store_global_ground_chr_translate____multiple_occ_constraints_checked___1',
19610 E),
19611 ( D=[F|_]
19612 -> setarg(3, F, E)
19613 ; true
19614 ).
19615type_definition(A, B) :-
19616 type_definition___2__0(A, B, _).
19617type_definition___2__0(A, _, B) :-
19618 nb_getval('$chr_store_global_list_chr_translate____type_definition___2',
19619 C),
19620 member(D, C),
19621 D=suspension(_, active, _, _, _, E, _),
19622 ( functor(A, F, G),
19623 functor(E, F, G),
19624 !,
19625 D=suspension(_, _, _, _, _, H, I),
19626 setarg(2, D, removed),
19627 term_variables(term(H, I), J),
19628 arg(5, D, K),
19629 ( var(K)
19630 -> nb_getval('$chr_store_global_list_chr_translate____type_definition___2',
19631 L),
19632 L=[_|M],
19633 b_setval('$chr_store_global_list_chr_translate____type_definition___2',
19634 M),
19635 ( M=[N|_]
19636 -> setarg(5, N, _)
19637 ; true
19638 )
19639 ; K=[_, _|M],
19640 setarg(2, K, M),
19641 ( M=[N|_]
19642 -> setarg(5, N, K)
19643 ; true
19644 )
19645 ),
19646 detach_type_definition___2(J, D),
19647 ( var(B)
19648 -> true
19649 ; B=suspension(_, O, _, _, _, P, Q),
19650 setarg(2, B, removed),
19651 ( O==not_stored_yet
19652 -> R=[]
19653 ; term_variables(term(P, Q), R),
19654 arg(5, B, S),
19655 ( var(S)
19656 -> nb_getval('$chr_store_global_list_chr_translate____type_definition___2',
19657 T),
19658 T=[_|U],
19659 b_setval('$chr_store_global_list_chr_translate____type_definition___2',
19660 U),
19661 ( U=[V|_]
19662 -> setarg(5, V, _)
19663 ; true
19664 )
19665 ; S=[_, _|U],
19666 setarg(2, S, U),
19667 ( U=[V|_]
19668 -> setarg(5, V, S)
19669 ; true
19670 )
19671 ),
19672 detach_type_definition___2(R, B)
19673 )
19674 ),
19675 chr_error(type_error,
19676 'Multiple definitions for type: ~w/~w.\n',
19677 [F, G])
19678 ; functor(E, W, X),
19679 functor(A, W, X),
19680 !,
19681 D=suspension(_, _, _, _, _, Y, Z),
19682 setarg(2, D, removed),
19683 term_variables(term(Y, Z), A1),
19684 arg(5, D, B1),
19685 ( var(B1)
19686 -> nb_getval('$chr_store_global_list_chr_translate____type_definition___2',
19687 C1),
19688 C1=[_|D1],
19689 b_setval('$chr_store_global_list_chr_translate____type_definition___2',
19690 D1),
19691 ( D1=[E1|_]
19692 -> setarg(5, E1, _)
19693 ; true
19694 )
19695 ; B1=[_, _|D1],
19696 setarg(2, B1, D1),
19697 ( D1=[E1|_]
19698 -> setarg(5, E1, B1)
19699 ; true
19700 )
19701 ),
19702 detach_type_definition___2(A1, D),
19703 ( var(B)
19704 -> true
19705 ; B=suspension(_, F1, _, _, _, G1, H1),
19706 setarg(2, B, removed),
19707 ( F1==not_stored_yet
19708 -> I1=[]
19709 ; term_variables(term(G1, H1), I1),
19710 arg(5, B, J1),
19711 ( var(J1)
19712 -> nb_getval('$chr_store_global_list_chr_translate____type_definition___2',
19713 K1),
19714 K1=[_|L1],
19715 b_setval('$chr_store_global_list_chr_translate____type_definition___2',
19716 L1),
19717 ( L1=[M1|_]
19718 -> setarg(5, M1, _)
19719 ; true
19720 )
19721 ; J1=[_, _|L1],
19722 setarg(2, J1, L1),
19723 ( L1=[M1|_]
19724 -> setarg(5, M1, J1)
19725 ; true
19726 )
19727 ),
19728 detach_type_definition___2(I1, B)
19729 )
19730 ),
19731 chr_error(type_error,
19732 'Multiple definitions for type: ~w/~w.\n',
19733 [W, X])
19734 ).
19735type_definition___2__0(A, _, B) :-
19736 nb_getval('$chr_store_global_list_chr_translate____type_alias___2', C),
19737 member(D, C),
19738 D=suspension(_, active, _, _, _, E, _),
19739 functor(A, F, G),
19740 functor(E, F, G),
19741 !,
19742 D=suspension(_, _, _, _, _, H, I),
19743 setarg(2, D, removed),
19744 term_variables(term(H, I), J),
19745 arg(5, D, K),
19746 ( var(K)
19747 -> nb_getval('$chr_store_global_list_chr_translate____type_alias___2',
19748 L),
19749 L=[_|M],
19750 b_setval('$chr_store_global_list_chr_translate____type_alias___2',
19751 M),
19752 ( M=[N|_]
19753 -> setarg(5, N, _)
19754 ; true
19755 )
19756 ; K=[_, _|M],
19757 setarg(2, K, M),
19758 ( M=[N|_]
19759 -> setarg(5, N, K)
19760 ; true
19761 )
19762 ),
19763 detach_type_alias___2(J, D),
19764 ( var(B)
19765 -> true
19766 ; B=suspension(_, O, _, _, _, P, Q),
19767 setarg(2, B, removed),
19768 ( O==not_stored_yet
19769 -> R=[]
19770 ; term_variables(term(P, Q), R),
19771 arg(5, B, S),
19772 ( var(S)
19773 -> nb_getval('$chr_store_global_list_chr_translate____type_definition___2',
19774 T),
19775 T=[_|U],
19776 b_setval('$chr_store_global_list_chr_translate____type_definition___2',
19777 U),
19778 ( U=[V|_]
19779 -> setarg(5, V, _)
19780 ; true
19781 )
19782 ; S=[_, _|U],
19783 setarg(2, S, U),
19784 ( U=[V|_]
19785 -> setarg(5, V, S)
19786 ; true
19787 )
19788 ),
19789 detach_type_definition___2(R, B)
19790 )
19791 ),
19792 chr_error(type_error,
19793 'Multiple definitions for type, once in a type definition and once as a type alias: ~w/~w.\n',
19794 [F, G]).
19795type_definition___2__0(A, B, C) :-
19796 nb_getval('$chr_store_global_list_chr_translate____unalias_type___2',
19797 D),
19798 !,
19799 ( var(C)
19800 -> C=suspension(E, not_stored_yet, t, 0, _, A, B),
19801 'chr gen_id'(E)
19802 ; true
19803 ),
19804 type_definition___2__0__0__5(D, A, B, C).
19805type_definition___2__0__0__5([], A, B, C) :-
19806 type_definition___2__1(A, B, C).
19807type_definition___2__0__0__5([A|B], C, D, E) :-
19808 ( A=suspension(_, active, _, F, G),
19809 nonvar(C),
19810 functor(C, H, I),
19811 functor(F, H, I)
19812 -> A=suspension(_, _, _, J, _),
19813 setarg(2, A, removed),
19814 term_variables(J, K),
19815 ( arg(3, A, L),
19816 ( var(L)
19817 -> nb_getval('$chr_store_global_list_chr_translate____unalias_type___2',
19818 M),
19819 M=[_|N],
19820 b_setval('$chr_store_global_list_chr_translate____unalias_type___2',
19821 N),
19822 ( N=[O|_]
19823 -> setarg(3, O, _)
19824 ; true
19825 )
19826 ; L=[_, _|N],
19827 setarg(2, L, N),
19828 ( N=[O|_]
19829 -> setarg(3, O, L)
19830 ; true
19831 )
19832 )
19833 ),
19834 detach_unalias_type___2(K, A),
19835 arg(2, E, P),
19836 setarg(2, E, active),
19837 ( arg(4, E, Q),
19838 R is Q+1,
19839 setarg(4, E, R)
19840 ),
19841 ( P==not_stored_yet
19842 -> E=suspension(_, _, _, _, _, S, T),
19843 term_variables(term(S, T), U),
19844 nb_getval('$chr_store_global_list_chr_translate____type_definition___2',
19845 V),
19846 W=[E|V],
19847 b_setval('$chr_store_global_list_chr_translate____type_definition___2',
19848 W),
19849 ( V=[X|_]
19850 -> setarg(5, X, W)
19851 ; true
19852 ),
19853 attach_type_definition___2(U, E)
19854 ; true
19855 ),
19856 G=F,
19857 ( E=suspension(_, active, _, R, _, _, _)
19858 -> setarg(2, E, inactive),
19859 type_definition___2__0__0__5(B, C, D, E)
19860 ; true
19861 )
19862 ; type_definition___2__0__0__5(B, C, D, E)
19863 ).
19864type_definition___2__0(A, B, C) :-
19865 ( var(C)
19866 -> C=suspension(D, not_stored_yet, t, 0, _, A, B),
19867 'chr gen_id'(D)
19868 ; true
19869 ),
19870 type_definition___2__1(A, B, C).
19871type_definition___2__1(A, B, C) :-
19872 nb_getval('$chr_store_global_ground_chr_translate____dynamic_type_check___0',
19873 D),
19874 !,
19875 type_definition___2__1__0__7(D, A, B, C).
19876type_definition___2__1__0__7([], A, B, C) :-
19877 type_definition___2__2(A, B, C).
19878type_definition___2__1__0__7([A|B], C, D, E) :-
19879 ( A=suspension(_, active, _, _),
19880 F=t(235, E, A),
19881 '$novel_production'(E, F),
19882 '$novel_production'(A, F)
19883 -> '$extend_history'(E, F),
19884 arg(2, E, G),
19885 setarg(2, E, active),
19886 ( arg(4, E, H),
19887 I is H+1,
19888 setarg(4, E, I)
19889 ),
19890 ( G==not_stored_yet
19891 -> E=suspension(_, _, _, _, _, J, K),
19892 term_variables(term(J, K), L),
19893 nb_getval('$chr_store_global_list_chr_translate____type_definition___2',
19894 M),
19895 N=[E|M],
19896 b_setval('$chr_store_global_list_chr_translate____type_definition___2',
19897 N),
19898 ( M=[O|_]
19899 -> setarg(5, O, N)
19900 ; true
19901 ),
19902 attach_type_definition___2(L, E)
19903 ; true
19904 ),
19905 copy_term_nat(C-D, P-Q),
19906 maplist(dynamic_type_check_clause(P), Q, R),
19907 dynamic_type_check_clauses(R),
19908 ( E=suspension(_, active, _, I, _, _, _)
19909 -> setarg(2, E, inactive),
19910 type_definition___2__1__0__7(B, C, D, E)
19911 ; true
19912 )
19913 ; type_definition___2__1__0__7(B, C, D, E)
19914 ).
19915type_definition___2__1(A, B, C) :-
19916 type_definition___2__2(A, B, C).
19917type_definition___2__2(A, B, C) :-
19918 nb_getval('$chr_store_global_list_chr_translate____atomic_type___1', D),
19919 !,
19920 type_definition___2__2__0__8(D, A, B, C).
19921type_definition___2__2__0__8([], A, B, C) :-
19922 type_definition___2__3(A, B, C).
19923type_definition___2__2__0__8([A|B], C, D, E) :-
19924 ( A=suspension(_, active, _, F),
19925 functor(F, G, H),
19926 functor(C, G, H)
19927 -> A=suspension(_, _, _, I),
19928 setarg(2, A, removed),
19929 term_variables(I, J),
19930 ( arg(3, A, K),
19931 ( var(K)
19932 -> nb_getval('$chr_store_global_list_chr_translate____atomic_type___1',
19933 L),
19934 L=[_|M],
19935 b_setval('$chr_store_global_list_chr_translate____atomic_type___1',
19936 M),
19937 ( M=[N|_]
19938 -> setarg(3, N, _)
19939 ; true
19940 )
19941 ; K=[_, _|M],
19942 setarg(2, K, M),
19943 ( M=[N|_]
19944 -> setarg(3, N, K)
19945 ; true
19946 )
19947 )
19948 ),
19949 detach_atomic_type___1(J, A),
19950 arg(2, E, O),
19951 setarg(2, E, active),
19952 ( arg(4, E, P),
19953 Q is P+1,
19954 setarg(4, E, Q)
19955 ),
19956 ( O==not_stored_yet
19957 -> E=suspension(_, _, _, _, _, R, S),
19958 term_variables(term(R, S), T),
19959 nb_getval('$chr_store_global_list_chr_translate____type_definition___2',
19960 U),
19961 V=[E|U],
19962 b_setval('$chr_store_global_list_chr_translate____type_definition___2',
19963 V),
19964 ( U=[W|_]
19965 -> setarg(5, W, V)
19966 ; true
19967 ),
19968 attach_type_definition___2(T, E)
19969 ; true
19970 ),
19971 maplist(atomic, D),
19972 ( E=suspension(_, active, _, Q, _, _, _)
19973 -> setarg(2, E, inactive),
19974 type_definition___2__2__0__8(B, C, D, E)
19975 ; true
19976 )
19977 ; type_definition___2__2__0__8(B, C, D, E)
19978 ).
19979type_definition___2__2(A, B, C) :-
19980 type_definition___2__3(A, B, C).
19981type_definition___2__3(_, _, A) :-
19982 arg(2, A, B),
19983 setarg(2, A, active),
19984 arg(4, A, C),
19985 D is C+1,
19986 setarg(4, A, D),
19987 ( B==not_stored_yet
19988 -> A=suspension(_, _, _, _, _, E, F),
19989 term_variables(term(E, F), G),
19990 nb_getval('$chr_store_global_list_chr_translate____type_definition___2',
19991 H),
19992 I=[A|H],
19993 b_setval('$chr_store_global_list_chr_translate____type_definition___2',
19994 I),
19995 ( H=[J|_]
19996 -> setarg(5, J, I)
19997 ; true
19998 ),
19999 attach_type_definition___2(G, A)
20000 ; true
20001 ).
20002type_alias(A, B) :-
20003 type_alias___2__0(A, B, _).
20004type_alias___2__0(A, B, C) :-
20005 var(A),
20006 !,
20007 ( var(C)
20008 -> true
20009 ; C=suspension(_, D, _, _, _, E, F),
20010 setarg(2, C, removed),
20011 ( D==not_stored_yet
20012 -> G=[]
20013 ; term_variables(term(E, F), G),
20014 arg(5, C, H),
20015 ( var(H)
20016 -> nb_getval('$chr_store_global_list_chr_translate____type_alias___2',
20017 I),
20018 I=[_|J],
20019 b_setval('$chr_store_global_list_chr_translate____type_alias___2',
20020 J),
20021 ( J=[K|_]
20022 -> setarg(5, K, _)
20023 ; true
20024 )
20025 ; H=[_, _|J],
20026 setarg(2, H, J),
20027 ( J=[K|_]
20028 -> setarg(5, K, H)
20029 ; true
20030 )
20031 ),
20032 detach_type_alias___2(G, C)
20033 )
20034 ),
20035 chr_error(type_error,
20036 'Variable alias definition: "~w".\n',
20037 [(:-chr_type A==B)]).
20038type_alias___2__0(A, B, C) :-
20039 var(B),
20040 !,
20041 ( var(C)
20042 -> true
20043 ; C=suspension(_, D, _, _, _, E, F),
20044 setarg(2, C, removed),
20045 ( D==not_stored_yet
20046 -> G=[]
20047 ; term_variables(term(E, F), G),
20048 arg(5, C, H),
20049 ( var(H)
20050 -> nb_getval('$chr_store_global_list_chr_translate____type_alias___2',
20051 I),
20052 I=[_|J],
20053 b_setval('$chr_store_global_list_chr_translate____type_alias___2',
20054 J),
20055 ( J=[K|_]
20056 -> setarg(5, K, _)
20057 ; true
20058 )
20059 ; H=[_, _|J],
20060 setarg(2, H, J),
20061 ( J=[K|_]
20062 -> setarg(5, K, H)
20063 ; true
20064 )
20065 ),
20066 detach_type_alias___2(G, C)
20067 )
20068 ),
20069 chr_error(type_error,
20070 'Variable alias definition: "~w".\n',
20071 [(:-chr_type A==B)]).
20072type_alias___2__0(A, B, C) :-
20073 subsumes_term(A, B),
20074 !,
20075 ( var(C)
20076 -> true
20077 ; C=suspension(_, D, _, _, _, E, F),
20078 setarg(2, C, removed),
20079 ( D==not_stored_yet
20080 -> G=[]
20081 ; term_variables(term(E, F), G),
20082 arg(5, C, H),
20083 ( var(H)
20084 -> nb_getval('$chr_store_global_list_chr_translate____type_alias___2',
20085 I),
20086 I=[_|J],
20087 b_setval('$chr_store_global_list_chr_translate____type_alias___2',
20088 J),
20089 ( J=[K|_]
20090 -> setarg(5, K, _)
20091 ; true
20092 )
20093 ; H=[_, _|J],
20094 setarg(2, H, J),
20095 ( J=[K|_]
20096 -> setarg(5, K, H)
20097 ; true
20098 )
20099 ),
20100 detach_type_alias___2(G, C)
20101 )
20102 ),
20103 chr_error(type_error, 'Cyclic alias definition: "~w".\n', [A==B]).
20104type_alias___2__0(A, B, C) :-
20105 nb_getval('$chr_store_global_list_chr_translate____type_alias___2', D),
20106 ( member(E, D),
20107 E=suspension(_, active, _, _, _, F, G),
20108 ( ( functor(A, H, I),
20109 functor(F, H, I),
20110 \+ A\=F,
20111 !,
20112 E=suspension(_, _, _, _, _, J, K),
20113 setarg(2, E, removed),
20114 term_variables(term(J, K), L),
20115 arg(5, E, M),
20116 ( var(M)
20117 -> nb_getval('$chr_store_global_list_chr_translate____type_alias___2',
20118 N),
20119 N=[_|O],
20120 b_setval('$chr_store_global_list_chr_translate____type_alias___2',
20121 O),
20122 ( O=[P|_]
20123 -> setarg(5, P, _)
20124 ; true
20125 )
20126 ; M=[_, _|O],
20127 setarg(2, M, O),
20128 ( O=[P|_]
20129 -> setarg(5, P, M)
20130 ; true
20131 )
20132 ),
20133 detach_type_alias___2(L, E),
20134 ( var(C)
20135 -> true
20136 ; C=suspension(_, Q, _, _, _, R, S),
20137 setarg(2, C, removed),
20138 ( Q==not_stored_yet
20139 -> T=[]
20140 ; term_variables(term(R, S), T),
20141 arg(5, C, U),
20142 ( var(U)
20143 -> nb_getval('$chr_store_global_list_chr_translate____type_alias___2',
20144 V),
20145 V=[_|W],
20146 b_setval('$chr_store_global_list_chr_translate____type_alias___2',
20147 W),
20148 ( W=[X|_]
20149 -> setarg(5, X, _)
20150 ; true
20151 )
20152 ; U=[_, _|W],
20153 setarg(2, U, W),
20154 ( W=[X|_]
20155 -> setarg(5, X, U)
20156 ; true
20157 )
20158 ),
20159 detach_type_alias___2(T, C)
20160 )
20161 ),
20162 copy_term_nat(A, Y),
20163 copy_term_nat(F, Z),
20164 Y=Z,
20165 chr_error(type_error,
20166 'Ambiguous type aliases: you have defined \n\t`~w\'\n\t`~w\'\n\tresulting in two definitions for "~w".\n',
20167 [A==B, F==G, Y])
20168 ; functor(F, A1, B1),
20169 functor(A, A1, B1),
20170 \+ F\=A,
20171 !,
20172 E=suspension(_, _, _, _, _, C1, D1),
20173 setarg(2, E, removed),
20174 term_variables(term(C1, D1), E1),
20175 arg(5, E, F1),
20176 ( var(F1)
20177 -> nb_getval('$chr_store_global_list_chr_translate____type_alias___2',
20178 G1),
20179 G1=[_|H1],
20180 b_setval('$chr_store_global_list_chr_translate____type_alias___2',
20181 H1),
20182 ( H1=[I1|_]
20183 -> setarg(5, I1, _)
20184 ; true
20185 )
20186 ; F1=[_, _|H1],
20187 setarg(2, F1, H1),
20188 ( H1=[I1|_]
20189 -> setarg(5, I1, F1)
20190 ; true
20191 )
20192 ),
20193 detach_type_alias___2(E1, E),
20194 ( var(C)
20195 -> true
20196 ; C=suspension(_, J1, _, _, _, K1, L1),
20197 setarg(2, C, removed),
20198 ( J1==not_stored_yet
20199 -> M1=[]
20200 ; term_variables(term(K1, L1), M1),
20201 arg(5, C, N1),
20202 ( var(N1)
20203 -> nb_getval('$chr_store_global_list_chr_translate____type_alias___2',
20204 O1),
20205 O1=[_|P1],
20206 b_setval('$chr_store_global_list_chr_translate____type_alias___2',
20207 P1),
20208 ( P1=[Q1|_]
20209 -> setarg(5, Q1, _)
20210 ; true
20211 )
20212 ; N1=[_, _|P1],
20213 setarg(2, N1, P1),
20214 ( P1=[Q1|_]
20215 -> setarg(5, Q1, N1)
20216 ; true
20217 )
20218 ),
20219 detach_type_alias___2(M1, C)
20220 )
20221 ),
20222 copy_term_nat(F, R1),
20223 copy_term_nat(A, S1),
20224 R1=S1,
20225 chr_error(type_error,
20226 'Ambiguous type aliases: you have defined \n\t`~w\'\n\t`~w\'\n\tresulting in two definitions for "~w".\n',
20227 [F==G, A==B, R1])
20228 )
20229 ; functor(F, T1, U1),
20230 functor(B, T1, U1),
20231 copy_term_nat((A, B, F, G),
20232 (V1, W1, X1, Y1)),
20233 subsumes_term(X1, W1),
20234 !,
20235 ( var(C)
20236 -> true
20237 ; C=suspension(_, Z1, _, _, _, A2, B2),
20238 setarg(2, C, removed),
20239 ( Z1==not_stored_yet
20240 -> C2=[]
20241 ; term_variables(term(A2, B2), C2),
20242 arg(5, C, D2),
20243 ( var(D2)
20244 -> nb_getval('$chr_store_global_list_chr_translate____type_alias___2',
20245 E2),
20246 E2=[_|F2],
20247 b_setval('$chr_store_global_list_chr_translate____type_alias___2',
20248 F2),
20249 ( F2=[G2|_]
20250 -> setarg(5, G2, _)
20251 ; true
20252 )
20253 ; D2=[_, _|F2],
20254 setarg(2, D2, F2),
20255 ( F2=[G2|_]
20256 -> setarg(5, G2, D2)
20257 ; true
20258 )
20259 ),
20260 detach_type_alias___2(C2, C)
20261 )
20262 ),
20263 type_alias(V1, Y1)
20264 )
20265 ; !,
20266 ( var(C)
20267 -> C=suspension(H2, not_stored_yet, t, 0, _, A, B),
20268 'chr gen_id'(H2)
20269 ; true
20270 ),
20271 type_alias___2__0__0__7(D, A, B, C)
20272 ).
20273type_alias___2__0__0__7([], A, B, C) :-
20274 type_alias___2__1(A, B, C).
20275type_alias___2__0__0__7([A|B], C, D, E) :-
20276 ( A=suspension(_, active, _, _, _, F, G),
20277 functor(C, H, I),
20278 functor(G, H, I),
20279 copy_term_nat((F, G, C, D),
20280 (J, K, L, M)),
20281 subsumes_term(L, K)
20282 -> A=suspension(_, _, _, _, _, N, O),
20283 setarg(2, A, removed),
20284 term_variables(term(N, O), P),
20285 ( arg(5, A, Q),
20286 ( var(Q)
20287 -> nb_getval('$chr_store_global_list_chr_translate____type_alias___2',
20288 R),
20289 R=[_|S],
20290 b_setval('$chr_store_global_list_chr_translate____type_alias___2',
20291 S),
20292 ( S=[T|_]
20293 -> setarg(5, T, _)
20294 ; true
20295 )
20296 ; Q=[_, _|S],
20297 setarg(2, Q, S),
20298 ( S=[T|_]
20299 -> setarg(5, T, Q)
20300 ; true
20301 )
20302 )
20303 ),
20304 detach_type_alias___2(P, A),
20305 arg(2, E, U),
20306 setarg(2, E, active),
20307 ( arg(4, E, V),
20308 W is V+1,
20309 setarg(4, E, W)
20310 ),
20311 ( U==not_stored_yet
20312 -> E=suspension(_, _, _, _, _, X, Y),
20313 term_variables(term(X, Y), Z),
20314 nb_getval('$chr_store_global_list_chr_translate____type_alias___2',
20315 A1),
20316 B1=[E|A1],
20317 b_setval('$chr_store_global_list_chr_translate____type_alias___2',
20318 B1),
20319 ( A1=[C1|_]
20320 -> setarg(5, C1, B1)
20321 ; true
20322 ),
20323 attach_type_alias___2(Z, E)
20324 ; true
20325 ),
20326 type_alias(J, M),
20327 ( E=suspension(_, active, _, W, _, _, _)
20328 -> setarg(2, E, inactive),
20329 type_alias___2__0__0__7(B, C, D, E)
20330 ; true
20331 )
20332 ; type_alias___2__0__0__7(B, C, D, E)
20333 ).
20334type_alias___2__0(A, B, C) :-
20335 ( var(C)
20336 -> C=suspension(D, not_stored_yet, t, 0, _, A, B),
20337 'chr gen_id'(D)
20338 ; true
20339 ),
20340 type_alias___2__1(A, B, C).
20341type_alias___2__1(A, _, B) :-
20342 nb_getval('$chr_store_global_list_chr_translate____type_definition___2',
20343 C),
20344 member(D, C),
20345 D=suspension(_, active, _, _, _, E, _),
20346 functor(E, F, G),
20347 functor(A, F, G),
20348 !,
20349 D=suspension(_, _, _, _, _, H, I),
20350 setarg(2, D, removed),
20351 term_variables(term(H, I), J),
20352 arg(5, D, K),
20353 ( var(K)
20354 -> nb_getval('$chr_store_global_list_chr_translate____type_definition___2',
20355 L),
20356 L=[_|M],
20357 b_setval('$chr_store_global_list_chr_translate____type_definition___2',
20358 M),
20359 ( M=[N|_]
20360 -> setarg(5, N, _)
20361 ; true
20362 )
20363 ; K=[_, _|M],
20364 setarg(2, K, M),
20365 ( M=[N|_]
20366 -> setarg(5, N, K)
20367 ; true
20368 )
20369 ),
20370 detach_type_definition___2(J, D),
20371 ( var(B)
20372 -> true
20373 ; B=suspension(_, O, _, _, _, P, Q),
20374 setarg(2, B, removed),
20375 ( O==not_stored_yet
20376 -> R=[]
20377 ; term_variables(term(P, Q), R),
20378 arg(5, B, S),
20379 ( var(S)
20380 -> nb_getval('$chr_store_global_list_chr_translate____type_alias___2',
20381 T),
20382 T=[_|U],
20383 b_setval('$chr_store_global_list_chr_translate____type_alias___2',
20384 U),
20385 ( U=[V|_]
20386 -> setarg(5, V, _)
20387 ; true
20388 )
20389 ; S=[_, _|U],
20390 setarg(2, S, U),
20391 ( U=[V|_]
20392 -> setarg(5, V, S)
20393 ; true
20394 )
20395 ),
20396 detach_type_alias___2(R, B)
20397 )
20398 ),
20399 chr_error(type_error,
20400 'Multiple definitions for type, once in a type definition and once as a type alias: ~w/~w.\n',
20401 [F, G]).
20402type_alias___2__1(A, B, C) :-
20403 nb_getval('$chr_store_global_list_chr_translate____unalias_type___2',
20404 D),
20405 !,
20406 type_alias___2__1__0__10(D, A, B, C).
20407type_alias___2__1__0__10([], A, B, C) :-
20408 type_alias___2__2(A, B, C).
20409type_alias___2__1__0__10([A|B], C, D, E) :-
20410 ( A=suspension(_, active, _, F, G),
20411 functor(C, H, I),
20412 functor(F, H, I),
20413 copy_term_nat((C, D), (J, K)),
20414 F=J
20415 -> A=suspension(_, _, _, L, _),
20416 setarg(2, A, removed),
20417 term_variables(L, M),
20418 ( arg(3, A, N),
20419 ( var(N)
20420 -> nb_getval('$chr_store_global_list_chr_translate____unalias_type___2',
20421 O),
20422 O=[_|P],
20423 b_setval('$chr_store_global_list_chr_translate____unalias_type___2',
20424 P),
20425 ( P=[Q|_]
20426 -> setarg(3, Q, _)
20427 ; true
20428 )
20429 ; N=[_, _|P],
20430 setarg(2, N, P),
20431 ( P=[Q|_]
20432 -> setarg(3, Q, N)
20433 ; true
20434 )
20435 )
20436 ),
20437 detach_unalias_type___2(M, A),
20438 arg(2, E, R),
20439 setarg(2, E, active),
20440 ( arg(4, E, S),
20441 T is S+1,
20442 setarg(4, E, T)
20443 ),
20444 ( R==not_stored_yet
20445 -> E=suspension(_, _, _, _, _, U, V),
20446 term_variables(term(U, V), W),
20447 nb_getval('$chr_store_global_list_chr_translate____type_alias___2',
20448 X),
20449 Y=[E|X],
20450 b_setval('$chr_store_global_list_chr_translate____type_alias___2',
20451 Y),
20452 ( X=[Z|_]
20453 -> setarg(5, Z, Y)
20454 ; true
20455 ),
20456 attach_type_alias___2(W, E)
20457 ; true
20458 ),
20459 unalias_type(K, G),
20460 ( E=suspension(_, active, _, T, _, _, _)
20461 -> setarg(2, E, inactive),
20462 type_alias___2__1__0__10(B, C, D, E)
20463 ; true
20464 )
20465 ; type_alias___2__1__0__10(B, C, D, E)
20466 ).
20467type_alias___2__1(A, B, C) :-
20468 type_alias___2__2(A, B, C).
20469type_alias___2__2(A, B, C) :-
20470 nb_getval('$chr_store_global_list_chr_translate____ast_static_type_check_var___4',
20471 D),
20472 !,
20473 type_alias___2__2__0__12(D, A, B, C).
20474type_alias___2__2__0__12([], A, B, C) :-
20475 type_alias___2__3(A, B, C).
20476type_alias___2__2__0__12([A|B], C, D, E) :-
20477 ( A=suspension(_, active, _, F, G, H, I),
20478 functor(C, J, K),
20479 functor(H, J, K)
20480 -> A=suspension(_, _, _, _, _, L, _),
20481 setarg(2, A, removed),
20482 term_variables(L, M),
20483 ( arg(3, A, N),
20484 ( var(N)
20485 -> nb_getval('$chr_store_global_list_chr_translate____ast_static_type_check_var___4',
20486 O),
20487 O=[_|P],
20488 b_setval('$chr_store_global_list_chr_translate____ast_static_type_check_var___4',
20489 P),
20490 ( P=[Q|_]
20491 -> setarg(3, Q, _)
20492 ; true
20493 )
20494 ; N=[_, _|P],
20495 setarg(2, N, P),
20496 ( P=[Q|_]
20497 -> setarg(3, Q, N)
20498 ; true
20499 )
20500 )
20501 ),
20502 detach_ast_static_type_check_var___4(M, A),
20503 arg(2, E, R),
20504 setarg(2, E, active),
20505 ( arg(4, E, S),
20506 T is S+1,
20507 setarg(4, E, T)
20508 ),
20509 ( R==not_stored_yet
20510 -> E=suspension(_, _, _, _, _, U, V),
20511 term_variables(term(U, V), W),
20512 nb_getval('$chr_store_global_list_chr_translate____type_alias___2',
20513 X),
20514 Y=[E|X],
20515 b_setval('$chr_store_global_list_chr_translate____type_alias___2',
20516 Y),
20517 ( X=[Z|_]
20518 -> setarg(5, Z, Y)
20519 ; true
20520 ),
20521 attach_type_alias___2(W, E)
20522 ; true
20523 ),
20524 copy_term_nat(C-D, H-A1),
20525 ast_static_type_check_var(F, G, A1, I),
20526 ( E=suspension(_, active, _, T, _, _, _)
20527 -> setarg(2, E, inactive),
20528 type_alias___2__2__0__12(B, C, D, E)
20529 ; true
20530 )
20531 ; type_alias___2__2__0__12(B, C, D, E)
20532 ).
20533type_alias___2__2(A, B, C) :-
20534 type_alias___2__3(A, B, C).
20535type_alias___2__3(A, B, C) :-
20536 nb_getval('$chr_store_global_ground_chr_translate____dynamic_type_check___0',
20537 D),
20538 !,
20539 type_alias___2__3__0__13(D, A, B, C).
20540type_alias___2__3__0__13([], A, B, C) :-
20541 type_alias___2__4(A, B, C).
20542type_alias___2__3__0__13([A|B], C, D, E) :-
20543 ( A=suspension(_, active, _, _),
20544 F=t(236, E, A),
20545 '$novel_production'(E, F),
20546 '$novel_production'(A, F)
20547 -> '$extend_history'(E, F),
20548 arg(2, E, G),
20549 setarg(2, E, active),
20550 ( arg(4, E, H),
20551 I is H+1,
20552 setarg(4, E, I)
20553 ),
20554 ( G==not_stored_yet
20555 -> E=suspension(_, _, _, _, _, J, K),
20556 term_variables(term(J, K), L),
20557 nb_getval('$chr_store_global_list_chr_translate____type_alias___2',
20558 M),
20559 N=[E|M],
20560 b_setval('$chr_store_global_list_chr_translate____type_alias___2',
20561 N),
20562 ( M=[O|_]
20563 -> setarg(5, O, N)
20564 ; true
20565 ),
20566 attach_type_alias___2(L, E)
20567 ; true
20568 ),
20569 copy_term_nat(C-D, P-Q),
20570 dynamic_type_check_alias_clause(P, Q, R),
20571 dynamic_type_check_clauses([R]),
20572 ( E=suspension(_, active, _, I, _, _, _)
20573 -> setarg(2, E, inactive),
20574 type_alias___2__3__0__13(B, C, D, E)
20575 ; true
20576 )
20577 ; type_alias___2__3__0__13(B, C, D, E)
20578 ).
20579type_alias___2__3(A, B, C) :-
20580 type_alias___2__4(A, B, C).
20581type_alias___2__4(A, B, C) :-
20582 nb_getval('$chr_store_global_list_chr_translate____atomic_type___1', D),
20583 !,
20584 type_alias___2__4__0__14(D, A, B, C).
20585type_alias___2__4__0__14([], A, B, C) :-
20586 type_alias___2__5(A, B, C).
20587type_alias___2__4__0__14([A|B], C, D, E) :-
20588 ( A=suspension(_, active, _, F),
20589 functor(F, G, H),
20590 functor(C, G, H)
20591 -> A=suspension(_, _, _, I),
20592 setarg(2, A, removed),
20593 term_variables(I, J),
20594 ( arg(3, A, K),
20595 ( var(K)
20596 -> nb_getval('$chr_store_global_list_chr_translate____atomic_type___1',
20597 L),
20598 L=[_|M],
20599 b_setval('$chr_store_global_list_chr_translate____atomic_type___1',
20600 M),
20601 ( M=[N|_]
20602 -> setarg(3, N, _)
20603 ; true
20604 )
20605 ; K=[_, _|M],
20606 setarg(2, K, M),
20607 ( M=[N|_]
20608 -> setarg(3, N, K)
20609 ; true
20610 )
20611 )
20612 ),
20613 detach_atomic_type___1(J, A),
20614 arg(2, E, O),
20615 setarg(2, E, active),
20616 ( arg(4, E, P),
20617 Q is P+1,
20618 setarg(4, E, Q)
20619 ),
20620 ( O==not_stored_yet
20621 -> E=suspension(_, _, _, _, _, R, S),
20622 term_variables(term(R, S), T),
20623 nb_getval('$chr_store_global_list_chr_translate____type_alias___2',
20624 U),
20625 V=[E|U],
20626 b_setval('$chr_store_global_list_chr_translate____type_alias___2',
20627 V),
20628 ( U=[W|_]
20629 -> setarg(5, W, V)
20630 ; true
20631 ),
20632 attach_type_alias___2(T, E)
20633 ; true
20634 ),
20635 atomic(D),
20636 copy_term_nat(C-D, F-X),
20637 atomic_type(X),
20638 ( E=suspension(_, active, _, Q, _, _, _)
20639 -> setarg(2, E, inactive),
20640 type_alias___2__4__0__14(B, C, D, E)
20641 ; true
20642 )
20643 ; type_alias___2__4__0__14(B, C, D, E)
20644 ).
20645type_alias___2__4(A, B, C) :-
20646 type_alias___2__5(A, B, C).
20647type_alias___2__5(_, _, A) :-
20648 arg(2, A, B),
20649 setarg(2, A, active),
20650 arg(4, A, C),
20651 D is C+1,
20652 setarg(4, A, D),
20653 ( B==not_stored_yet
20654 -> A=suspension(_, _, _, _, _, E, F),
20655 term_variables(term(E, F), G),
20656 nb_getval('$chr_store_global_list_chr_translate____type_alias___2',
20657 H),
20658 I=[A|H],
20659 b_setval('$chr_store_global_list_chr_translate____type_alias___2',
20660 I),
20661 ( H=[J|_]
20662 -> setarg(5, J, I)
20663 ; true
20664 ),
20665 attach_type_alias___2(G, A)
20666 ; true
20667 ).
20668constraint_type(A, B) :-
20669 constraint_type___2__0(A, B, _).
20670constraint_type___2__0(A, B, C) :-
20671 nb_getval('$chr_store_global_ground_chr_translate____static_type_check___2',
20672 D),
20673 !,
20674 C=suspension(E, not_stored_yet, _, A, B),
20675 'chr gen_id'(E),
20676 constraint_type___2__0__0__2(D, A, B, C).
20677constraint_type___2__0__0__2([], A, B, C) :-
20678 constraint_type___2__1(A, B, C).
20679constraint_type___2__0__0__2([A|B], C, D, E) :-
20680 ( A=suspension(_, active, _, _, _)
20681 -> arg(2, E, F),
20682 setarg(2, E, active),
20683 ( F==not_stored_yet
20684 -> nb_getval('$chr_store_global_ground_chr_translate____constraint_type___2',
20685 G),
20686 H=[E|G],
20687 b_setval('$chr_store_global_ground_chr_translate____constraint_type___2',
20688 H),
20689 ( G=[I|_]
20690 -> setarg(3, I, H)
20691 ; true
20692 ),
20693 nb_getval('$chr_store_multi_hash_chr_translate____constraint_type___2-1',
20694 J),
20695 insert_ht(J, C, E)
20696 ; true
20697 ),
20698 forall(( member(K, D),
20699 sub_term(K, L)
20700 ),
20701 ( get_type_definition(L, _)
20702 -> true
20703 ; chr_error(type_error,
20704 'Undefined type "~w" used in type declaration of "~w".\n',
20705 [L, C])
20706 )),
20707 ( E=suspension(_, active, _, _, _)
20708 -> setarg(2, E, inactive),
20709 constraint_type___2__0__0__2(B, C, D, E)
20710 ; true
20711 )
20712 ; constraint_type___2__0__0__2(B, C, D, E)
20713 ).
20714constraint_type___2__0(A, B, C) :-
20715 C=suspension(D, not_stored_yet, _, A, B),
20716 'chr gen_id'(D),
20717 constraint_type___2__1(A, B, C).
20718constraint_type___2__1(A, _, B) :-
20719 arg(2, B, C),
20720 setarg(2, B, active),
20721 ( C==not_stored_yet
20722 -> nb_getval('$chr_store_global_ground_chr_translate____constraint_type___2',
20723 D),
20724 E=[B|D],
20725 b_setval('$chr_store_global_ground_chr_translate____constraint_type___2',
20726 E),
20727 ( D=[F|_]
20728 -> setarg(3, F, E)
20729 ; true
20730 ),
20731 nb_getval('$chr_store_multi_hash_chr_translate____constraint_type___2-1',
20732 G),
20733 insert_ht(G, A, B)
20734 ; true
20735 ).
20736get_type_definition(A, _) :-
20737 \+ ground(A),
20738 !,
20739 chr_error(type_error,
20740 'Non-ground type in constraint definition: "~w".\n',
20741 [A]).
20742get_type_definition(A, B) :-
20743 nb_getval('$chr_store_global_list_chr_translate____type_alias___2', C),
20744 member(D, C),
20745 D=suspension(_, active, _, _, _, E, F),
20746 functor(E, G, H),
20747 functor(A, G, H),
20748 copy_term_nat((E, F), (I, J)),
20749 I=A,
20750 !,
20751 ( get_type_definition(J, B)
20752 -> true
20753 ; chr_error(type_error,
20754 'Could not find type definition for "~w" (accessed via alias "~w").\n',
20755 [J, I]),
20756 fail
20757 ).
20758get_type_definition(A, B) :-
20759 nb_getval('$chr_store_global_list_chr_translate____type_definition___2',
20760 C),
20761 member(D, C),
20762 D=suspension(_, active, _, _, _, E, F),
20763 nonvar(E),
20764 functor(E, G, H),
20765 functor(A, G, H),
20766 copy_term_nat((E, F), (I, J)),
20767 I=A,
20768 !,
20769 B=J.
20770get_type_definition(A, B) :-
20771 atomic_builtin_type(A, _, _),
20772 !,
20773 B=[A].
20774get_type_definition(A, B) :-
20775 compound_builtin_type(A, _, _, _),
20776 !,
20777 B=[A].
20778get_type_definition(_, _) :-
20779 fail.
20780get_constraint_type(A, B) :-
20781 nb_getval('$chr_store_multi_hash_chr_translate____constraint_type___2-1',
20782 C),
20783 lookup_ht(C, A, D),
20784 member(E, D),
20785 E=suspension(_, active, _, _, F),
20786 !,
20787 B=F.
20788get_constraint_type(_, _) :-
20789 fail.
20790unalias_type(A, B) :-
20791 unalias_type___2__0(A, B, _).
20792unalias_type___2__0(A, B, C) :-
20793 var(A),
20794 !,
20795 ( var(C)
20796 -> true
20797 ; C=suspension(_, _, _, D, _),
20798 setarg(2, C, removed),
20799 term_variables(D, E),
20800 arg(3, C, F),
20801 ( var(F)
20802 -> nb_getval('$chr_store_global_list_chr_translate____unalias_type___2',
20803 G),
20804 G=[_|H],
20805 b_setval('$chr_store_global_list_chr_translate____unalias_type___2',
20806 H),
20807 ( H=[I|_]
20808 -> setarg(3, I, _)
20809 ; true
20810 )
20811 ; F=[_, _|H],
20812 setarg(2, F, H),
20813 ( H=[I|_]
20814 -> setarg(3, I, F)
20815 ; true
20816 )
20817 ),
20818 detach_unalias_type___2(E, C)
20819 ),
20820 B=A.
20821unalias_type___2__0(A, B, C) :-
20822 nb_getval('$chr_store_global_list_chr_translate____type_alias___2', D),
20823 member(E, D),
20824 E=suspension(_, active, _, _, _, F, G),
20825 functor(F, H, I),
20826 functor(A, H, I),
20827 copy_term_nat((F, G), (J, K)),
20828 A=J,
20829 !,
20830 ( var(C)
20831 -> true
20832 ; C=suspension(_, _, _, L, _),
20833 setarg(2, C, removed),
20834 term_variables(L, M),
20835 arg(3, C, N),
20836 ( var(N)
20837 -> nb_getval('$chr_store_global_list_chr_translate____unalias_type___2',
20838 O),
20839 O=[_|P],
20840 b_setval('$chr_store_global_list_chr_translate____unalias_type___2',
20841 P),
20842 ( P=[Q|_]
20843 -> setarg(3, Q, _)
20844 ; true
20845 )
20846 ; N=[_, _|P],
20847 setarg(2, N, P),
20848 ( P=[Q|_]
20849 -> setarg(3, Q, N)
20850 ; true
20851 )
20852 ),
20853 detach_unalias_type___2(M, C)
20854 ),
20855 unalias_type(K, B).
20856unalias_type___2__0(A, B, C) :-
20857 nb_getval('$chr_store_global_list_chr_translate____type_definition___2',
20858 D),
20859 member(E, D),
20860 E=suspension(_, active, _, _, _, F, _),
20861 nonvar(F),
20862 functor(F, G, H),
20863 functor(A, G, H),
20864 !,
20865 ( var(C)
20866 -> true
20867 ; C=suspension(_, _, _, I, _),
20868 setarg(2, C, removed),
20869 term_variables(I, J),
20870 arg(3, C, K),
20871 ( var(K)
20872 -> nb_getval('$chr_store_global_list_chr_translate____unalias_type___2',
20873 L),
20874 L=[_|M],
20875 b_setval('$chr_store_global_list_chr_translate____unalias_type___2',
20876 M),
20877 ( M=[N|_]
20878 -> setarg(3, N, _)
20879 ; true
20880 )
20881 ; K=[_, _|M],
20882 setarg(2, K, M),
20883 ( M=[N|_]
20884 -> setarg(3, N, K)
20885 ; true
20886 )
20887 ),
20888 detach_unalias_type___2(J, C)
20889 ),
20890 B=A.
20891unalias_type___2__0(A, B, C) :-
20892 atomic_builtin_type(A, _, _),
20893 !,
20894 ( var(C)
20895 -> true
20896 ; C=suspension(_, _, _, D, _),
20897 setarg(2, C, removed),
20898 term_variables(D, E),
20899 arg(3, C, F),
20900 ( var(F)
20901 -> nb_getval('$chr_store_global_list_chr_translate____unalias_type___2',
20902 G),
20903 G=[_|H],
20904 b_setval('$chr_store_global_list_chr_translate____unalias_type___2',
20905 H),
20906 ( H=[I|_]
20907 -> setarg(3, I, _)
20908 ; true
20909 )
20910 ; F=[_, _|H],
20911 setarg(2, F, H),
20912 ( H=[I|_]
20913 -> setarg(3, I, F)
20914 ; true
20915 )
20916 ),
20917 detach_unalias_type___2(E, C)
20918 ),
20919 B=A.
20920unalias_type___2__0(A, B, C) :-
20921 compound_builtin_type(A, _, _, _),
20922 !,
20923 ( var(C)
20924 -> true
20925 ; C=suspension(_, _, _, D, _),
20926 setarg(2, C, removed),
20927 term_variables(D, E),
20928 arg(3, C, F),
20929 ( var(F)
20930 -> nb_getval('$chr_store_global_list_chr_translate____unalias_type___2',
20931 G),
20932 G=[_|H],
20933 b_setval('$chr_store_global_list_chr_translate____unalias_type___2',
20934 H),
20935 ( H=[I|_]
20936 -> setarg(3, I, _)
20937 ; true
20938 )
20939 ; F=[_, _|H],
20940 setarg(2, F, H),
20941 ( H=[I|_]
20942 -> setarg(3, I, F)
20943 ; true
20944 )
20945 ),
20946 detach_unalias_type___2(E, C)
20947 ),
20948 B=A.
20949unalias_type___2__0(A, B, C) :-
20950 ( var(C)
20951 -> C=suspension(D, active, _, A, B),
20952 term_variables(A, E),
20953 'chr gen_id'(D),
20954 nb_getval('$chr_store_global_list_chr_translate____unalias_type___2',
20955 F),
20956 G=[C|F],
20957 b_setval('$chr_store_global_list_chr_translate____unalias_type___2',
20958 G),
20959 ( F=[H|_]
20960 -> setarg(3, H, G)
20961 ; true
20962 ),
20963 attach_unalias_type___2(E, C)
20964 ; setarg(2, C, active)
20965 ).
20966types_modes_condition([], [], A) :-
20967 !,
20968 A=true.
20969types_modes_condition([A|B], [C|D], E) :-
20970 nb_getval('$chr_store_global_ground_chr_translate____constraint_mode___2',
20971 F),
20972 member(G, F),
20973 G=suspension(_, active, _, _, H, I),
20974 H=J/K,
20975 functor(A, J, K),
20976 !,
20977 A=..[_|L],
20978 E=(M, N, O),
20979 modes_condition(I, L, M),
20980 get_constraint_type_det(J/K, P),
20981 C=..[_|Q],
20982 types_condition(P, L, Q, I, N),
20983 types_modes_condition(B, D, O).
20984types_modes_condition([A|_], _, _) :-
20985 !,
20986 functor(A, B, C),
20987 chr_error(internal, 'Mode information missing for ~w.\n', [B/C]).
20988types_modes_condition(A, B, C) :-
20989 D=suspension(E, active, _, A, B, C),
20990 'chr gen_id'(E),
20991 nb_getval('$chr_store_global_ground_chr_translate____types_modes_condition___3',
20992 F),
20993 G=[D|F],
20994 b_setval('$chr_store_global_ground_chr_translate____types_modes_condition___3',
20995 G),
20996 ( F=[H|_]
20997 -> setarg(3, H, G)
20998 ; true
20999 ).
21000static_type_check(A, B) :-
21001 static_type_check___2__0(A, B, _).
21002static_type_check___2__0(A, B, C) :-
21003 nb_getval('$chr_store_global_ground_chr_translate____constraint_type___2',
21004 D),
21005 !,
21006 C=suspension(E, not_stored_yet, _, A, B),
21007 'chr gen_id'(E),
21008 static_type_check___2__0__0__1(D, A, B, C).
21009static_type_check___2__0__0__1([], A, B, C) :-
21010 static_type_check___2__1(A, B, C).
21011static_type_check___2__0__0__1([A|B], C, D, E) :-
21012 ( A=suspension(_, active, _, F, G)
21013 -> arg(2, E, H),
21014 setarg(2, E, active),
21015 ( H==not_stored_yet
21016 -> nb_getval('$chr_store_global_ground_chr_translate____static_type_check___2',
21017 I),
21018 J=[E|I],
21019 b_setval('$chr_store_global_ground_chr_translate____static_type_check___2',
21020 J),
21021 ( I=[K|_]
21022 -> setarg(3, K, J)
21023 ; true
21024 )
21025 ; true
21026 ),
21027 forall(( member(L, G),
21028 sub_term(L, M)
21029 ),
21030 ( get_type_definition(M, _)
21031 -> true
21032 ; chr_error(type_error,
21033 'Undefined type "~w" used in type declaration of "~w".\n',
21034 [M, F])
21035 )),
21036 ( E=suspension(_, active, _, _, _)
21037 -> setarg(2, E, inactive),
21038 static_type_check___2__0__0__1(B, C, D, E)
21039 ; true
21040 )
21041 ; static_type_check___2__0__0__1(B, C, D, E)
21042 ).
21043static_type_check___2__0(A, B, C) :-
21044 C=suspension(D, not_stored_yet, _, A, B),
21045 'chr gen_id'(D),
21046 static_type_check___2__1(A, B, C).
21047static_type_check___2__1(A, B, C) :-
21048 ( var(C)
21049 -> true
21050 ; arg(2, C, D),
21051 setarg(2, C, removed),
21052 ( D==not_stored_yet
21053 -> true
21054 ; arg(3, C, E),
21055 ( var(E)
21056 -> nb_getval('$chr_store_global_ground_chr_translate____static_type_check___2',
21057 F),
21058 F=[_|G],
21059 b_setval('$chr_store_global_ground_chr_translate____static_type_check___2',
21060 G),
21061 ( G=[H|_]
21062 -> setarg(3, H, _)
21063 ; true
21064 )
21065 ; E=[_, _|G],
21066 setarg(2, E, G),
21067 ( G=[H|_]
21068 -> setarg(3, H, E)
21069 ; true
21070 )
21071 )
21072 )
21073 ),
21074 maplist(static_type_check_rule, A, B).
21075ast_static_type_check_term(_, _, A) :-
21076 A==any,
21077 !.
21078ast_static_type_check_term(A, B, C) :-
21079 nonvar(B),
21080 B=var(D, E),
21081 !,
21082 ast_static_type_check_var(D, var(D, E), C, A).
21083ast_static_type_check_term(A, B, C) :-
21084 ast_atomic_builtin_type(C, B, D),
21085 !,
21086 ( call(D)
21087 -> true
21088 ; throw(type_error(invalid_functor(A, B, C)))
21089 ).
21090ast_static_type_check_term(A, B, C) :-
21091 ast_compound_builtin_type(C, B, D),
21092 !,
21093 ( call(D)
21094 -> true
21095 ; throw(type_error(invalid_functor(A, B, C)))
21096 ).
21097ast_static_type_check_term(A, B, C) :-
21098 nb_getval('$chr_store_global_list_chr_translate____type_alias___2', D),
21099 member(E, D),
21100 E=suspension(_, active, _, _, _, F, G),
21101 functor(C, H, I),
21102 functor(F, H, I),
21103 !,
21104 copy_term_nat(F-G, C-J),
21105 ast_static_type_check_term(A, B, J).
21106ast_static_type_check_term(A, B, C) :-
21107 nb_getval('$chr_store_global_list_chr_translate____type_definition___2',
21108 D),
21109 member(E, D),
21110 E=suspension(_, active, _, _, _, F, G),
21111 functor(C, H, I),
21112 functor(F, H, I),
21113 !,
21114 copy_term_nat(F-G, C-J),
21115 ast_functor(B, K, L),
21116 ( member(M, J),
21117 functor(M, K, L)
21118 -> ast_args(B, N),
21119 M=..[_|O],
21120 maplist(ast_static_type_check_term(A), N, O)
21121 ; throw(type_error(invalid_functor(A, B, C)))
21122 ).
21123ast_static_type_check_term(A, B, C) :-
21124 chr_error(internal,
21125 'Undefined type ~w while type checking term ~w in ~@.\n',
21126 [C, B, chr_translate:format_src(A)]).
21127ast_static_type_check_var(A, B, C, D) :-
21128 ast_static_type_check_var___4__0(A, B, C, D, _).
21129ast_static_type_check_var___4__0(A, B, C, D, E) :-
21130 nb_getval('$chr_store_global_list_chr_translate____type_alias___2', F),
21131 member(G, F),
21132 G=suspension(_, active, _, _, _, H, I),
21133 functor(H, J, K),
21134 functor(C, J, K),
21135 !,
21136 ( var(E)
21137 -> true
21138 ; E=suspension(_, _, _, _, _, L, _),
21139 setarg(2, E, removed),
21140 term_variables(L, M),
21141 arg(3, E, N),
21142 ( var(N)
21143 -> nb_getval('$chr_store_global_list_chr_translate____ast_static_type_check_var___4',
21144 O),
21145 O=[_|P],
21146 b_setval('$chr_store_global_list_chr_translate____ast_static_type_check_var___4',
21147 P),
21148 ( P=[Q|_]
21149 -> setarg(3, Q, _)
21150 ; true
21151 )
21152 ; N=[_, _|P],
21153 setarg(2, N, P),
21154 ( P=[Q|_]
21155 -> setarg(3, Q, N)
21156 ; true
21157 )
21158 ),
21159 detach_ast_static_type_check_var___4(M, E)
21160 ),
21161 copy_term_nat(H-I, C-R),
21162 ast_static_type_check_var(A, B, R, D).
21163ast_static_type_check_var___4__0(A, B, C, D, E) :-
21164 atomic_builtin_type(C, _, _),
21165 !,
21166 ( var(E)
21167 -> true
21168 ; E=suspension(_, _, _, _, _, F, _),
21169 setarg(2, E, removed),
21170 term_variables(F, G),
21171 arg(3, E, H),
21172 ( var(H)
21173 -> nb_getval('$chr_store_global_list_chr_translate____ast_static_type_check_var___4',
21174 I),
21175 I=[_|J],
21176 b_setval('$chr_store_global_list_chr_translate____ast_static_type_check_var___4',
21177 J),
21178 ( J=[K|_]
21179 -> setarg(3, K, _)
21180 ; true
21181 )
21182 ; H=[_, _|J],
21183 setarg(2, H, J),
21184 ( J=[K|_]
21185 -> setarg(3, K, H)
21186 ; true
21187 )
21188 ),
21189 detach_ast_static_type_check_var___4(G, E)
21190 ),
21191 ast_static_atomic_builtin_type_check_var(A, B, C, D).
21192ast_static_type_check_var___4__0(_, _, A, _, B) :-
21193 compound_builtin_type(A, _, _, _),
21194 !,
21195 ( var(B)
21196 -> true
21197 ; B=suspension(_, _, _, _, _, C, _),
21198 setarg(2, B, removed),
21199 term_variables(C, D),
21200 arg(3, B, E),
21201 ( var(E)
21202 -> nb_getval('$chr_store_global_list_chr_translate____ast_static_type_check_var___4',
21203 F),
21204 F=[_|G],
21205 b_setval('$chr_store_global_list_chr_translate____ast_static_type_check_var___4',
21206 G),
21207 ( G=[H|_]
21208 -> setarg(3, H, _)
21209 ; true
21210 )
21211 ; E=[_, _|G],
21212 setarg(2, E, G),
21213 ( G=[H|_]
21214 -> setarg(3, H, E)
21215 ; true
21216 )
21217 ),
21218 detach_ast_static_type_check_var___4(D, B)
21219 ).
21220ast_static_type_check_var___4__0(A, B, C, D, E) :-
21221 nb_getval('$chr_store_global_list_chr_translate____ast_static_type_check_var___4',
21222 F),
21223 member(G, F),
21224 G=suspension(_, active, _, H, I, J, K),
21225 H=A,
21226 ( C\==J,
21227 !,
21228 G=suspension(_, _, _, _, _, L, _),
21229 setarg(2, G, removed),
21230 term_variables(L, M),
21231 arg(3, G, N),
21232 ( var(N)
21233 -> nb_getval('$chr_store_global_list_chr_translate____ast_static_type_check_var___4',
21234 O),
21235 O=[_|P],
21236 b_setval('$chr_store_global_list_chr_translate____ast_static_type_check_var___4',
21237 P),
21238 ( P=[Q|_]
21239 -> setarg(3, Q, _)
21240 ; true
21241 )
21242 ; N=[_, _|P],
21243 setarg(2, N, P),
21244 ( P=[Q|_]
21245 -> setarg(3, Q, N)
21246 ; true
21247 )
21248 ),
21249 detach_ast_static_type_check_var___4(M, G),
21250 ( var(E)
21251 -> true
21252 ; E=suspension(_, _, _, _, _, R, _),
21253 setarg(2, E, removed),
21254 term_variables(R, S),
21255 arg(3, E, T),
21256 ( var(T)
21257 -> nb_getval('$chr_store_global_list_chr_translate____ast_static_type_check_var___4',
21258 U),
21259 U=[_|V],
21260 b_setval('$chr_store_global_list_chr_translate____ast_static_type_check_var___4',
21261 V),
21262 ( V=[W|_]
21263 -> setarg(3, W, _)
21264 ; true
21265 )
21266 ; T=[_, _|V],
21267 setarg(2, T, V),
21268 ( V=[W|_]
21269 -> setarg(3, W, T)
21270 ; true
21271 )
21272 ),
21273 detach_ast_static_type_check_var___4(S, E)
21274 ),
21275 throw(type_error(type_clash(B, D, K, C, J)))
21276 ; J\==C,
21277 !,
21278 G=suspension(_, _, _, _, _, X, _),
21279 setarg(2, G, removed),
21280 term_variables(X, Y),
21281 arg(3, G, Z),
21282 ( var(Z)
21283 -> nb_getval('$chr_store_global_list_chr_translate____ast_static_type_check_var___4',
21284 A1),
21285 A1=[_|B1],
21286 b_setval('$chr_store_global_list_chr_translate____ast_static_type_check_var___4',
21287 B1),
21288 ( B1=[C1|_]
21289 -> setarg(3, C1, _)
21290 ; true
21291 )
21292 ; Z=[_, _|B1],
21293 setarg(2, Z, B1),
21294 ( B1=[C1|_]
21295 -> setarg(3, C1, Z)
21296 ; true
21297 )
21298 ),
21299 detach_ast_static_type_check_var___4(Y, G),
21300 ( var(E)
21301 -> true
21302 ; E=suspension(_, _, _, _, _, D1, _),
21303 setarg(2, E, removed),
21304 term_variables(D1, E1),
21305 arg(3, E, F1),
21306 ( var(F1)
21307 -> nb_getval('$chr_store_global_list_chr_translate____ast_static_type_check_var___4',
21308 G1),
21309 G1=[_|H1],
21310 b_setval('$chr_store_global_list_chr_translate____ast_static_type_check_var___4',
21311 H1),
21312 ( H1=[I1|_]
21313 -> setarg(3, I1, _)
21314 ; true
21315 )
21316 ; F1=[_, _|H1],
21317 setarg(2, F1, H1),
21318 ( H1=[I1|_]
21319 -> setarg(3, I1, F1)
21320 ; true
21321 )
21322 ),
21323 detach_ast_static_type_check_var___4(E1, E)
21324 ),
21325 throw(type_error(type_clash(I, K, D, J, C)))
21326 ).
21327ast_static_type_check_var___4__0(A, B, C, D, E) :-
21328 ( var(E)
21329 -> E=suspension(F, active, _, A, B, C, D),
21330 term_variables(C, G),
21331 'chr gen_id'(F),
21332 nb_getval('$chr_store_global_list_chr_translate____ast_static_type_check_var___4',
21333 H),
21334 I=[E|H],
21335 b_setval('$chr_store_global_list_chr_translate____ast_static_type_check_var___4',
21336 I),
21337 ( H=[J|_]
21338 -> setarg(3, J, I)
21339 ; true
21340 ),
21341 attach_ast_static_type_check_var___4(G, E)
21342 ; setarg(2, E, active)
21343 ).
21344ast_static_atomic_builtin_type_check_var(_, _, any, _) :-
21345 !.
21346ast_static_atomic_builtin_type_check_var(A, B, C, D) :-
21347 nb_getval('$chr_store_multi_hash_chr_translate____ast_static_atomic_builtin_type_check_var___4-13',
21348 E),
21349 lookup_ht(E, k(A, C), F),
21350 ( member(G, F),
21351 G=suspension(_, active, _, _, _, _),
21352 !
21353 ; !,
21354 ast_static_atomic_builtin_type_check_var___4__0__0__3(F,
21355 A,
21356 B,
21357 C,
21358 D)
21359 ).
21360ast_static_atomic_builtin_type_check_var___4__0__0__3([], A, B, C, D) :-
21361 ast_static_atomic_builtin_type_check_var___4__1(A,
21362 B,
21363 C,
21364 D).
21365ast_static_atomic_builtin_type_check_var___4__0__0__3([A|B], C, D, E, F) :-
21366 ( A=suspension(_, active, G, _, H, _),
21367 G==C,
21368 H==E
21369 -> setarg(2, A, removed),
21370 ( nb_getval('$chr_store_multi_hash_chr_translate____ast_static_atomic_builtin_type_check_var___4-1',
21371 I),
21372 delete_ht(I, C, A)
21373 ),
21374 nb_getval('$chr_store_multi_hash_chr_translate____ast_static_atomic_builtin_type_check_var___4-13',
21375 J),
21376 delete_ht(J, k(C, E), A),
21377 ast_static_atomic_builtin_type_check_var___4__0__0__3(B,
21378 C,
21379 D,
21380 E,
21381 F)
21382 ; ast_static_atomic_builtin_type_check_var___4__0__0__3(B,
21383 C,
21384 D,
21385 E,
21386 F)
21387 ).
21388ast_static_atomic_builtin_type_check_var(A, B, C, D) :-
21389 ast_static_atomic_builtin_type_check_var___4__1(A,
21390 B,
21391 C,
21392 D).
21393ast_static_atomic_builtin_type_check_var___4__1(A, _, number, _) :-
21394 nb_getval('$chr_store_multi_hash_chr_translate____ast_static_atomic_builtin_type_check_var___4-13',
21395 B),
21396 lookup_ht(B, k(A, float), C),
21397 member(D, C),
21398 D=suspension(_, active, _, _, _, _),
21399 !.
21400ast_static_atomic_builtin_type_check_var___4__1(A, B, float, C) :-
21401 nb_getval('$chr_store_multi_hash_chr_translate____ast_static_atomic_builtin_type_check_var___4-13',
21402 D),
21403 lookup_ht(D, k(A, number), E),
21404 !,
21405 ast_static_atomic_builtin_type_check_var___4__1__0__5(E,
21406 A,
21407 B,
21408 float,
21409 C).
21410ast_static_atomic_builtin_type_check_var___4__1__0__5([], A, B, C, D) :-
21411 ast_static_atomic_builtin_type_check_var___4__8(A,
21412 B,
21413 C,
21414 D).
21415ast_static_atomic_builtin_type_check_var___4__1__0__5([A|B], C, D, E, F) :-
21416 ( A=suspension(_, active, G, _, H, _),
21417 G==C,
21418 H=number
21419 -> setarg(2, A, removed),
21420 ( nb_getval('$chr_store_multi_hash_chr_translate____ast_static_atomic_builtin_type_check_var___4-1',
21421 I),
21422 delete_ht(I, C, A)
21423 ),
21424 nb_getval('$chr_store_multi_hash_chr_translate____ast_static_atomic_builtin_type_check_var___4-13',
21425 J),
21426 delete_ht(J, k(C, number), A),
21427 ast_static_atomic_builtin_type_check_var___4__1__0__5(B,
21428 C,
21429 D,
21430 E,
21431 F)
21432 ; ast_static_atomic_builtin_type_check_var___4__1__0__5(B,
21433 C,
21434 D,
21435 E,
21436 F)
21437 ).
21438ast_static_atomic_builtin_type_check_var___4__1(A, B, C, D) :-
21439 ast_static_atomic_builtin_type_check_var___4__2(A,
21440 B,
21441 C,
21442 D).
21443ast_static_atomic_builtin_type_check_var___4__2(A, _, number, _) :-
21444 nb_getval('$chr_store_multi_hash_chr_translate____ast_static_atomic_builtin_type_check_var___4-13',
21445 B),
21446 lookup_ht(B, k(A, int), C),
21447 member(D, C),
21448 D=suspension(_, active, _, _, _, _),
21449 !.
21450ast_static_atomic_builtin_type_check_var___4__2(A, B, int, C) :-
21451 nb_getval('$chr_store_multi_hash_chr_translate____ast_static_atomic_builtin_type_check_var___4-13',
21452 D),
21453 lookup_ht(D, k(A, number), E),
21454 !,
21455 ast_static_atomic_builtin_type_check_var___4__2__0__7(E,
21456 A,
21457 B,
21458 int,
21459 C).
21460ast_static_atomic_builtin_type_check_var___4__2__0__7([], A, B, C, D) :-
21461 ast_static_atomic_builtin_type_check_var___4__5(A,
21462 B,
21463 C,
21464 D).
21465ast_static_atomic_builtin_type_check_var___4__2__0__7([A|B], C, D, E, F) :-
21466 ( A=suspension(_, active, G, _, H, _),
21467 G==C,
21468 H=number
21469 -> setarg(2, A, removed),
21470 ( nb_getval('$chr_store_multi_hash_chr_translate____ast_static_atomic_builtin_type_check_var___4-1',
21471 I),
21472 delete_ht(I, C, A)
21473 ),
21474 nb_getval('$chr_store_multi_hash_chr_translate____ast_static_atomic_builtin_type_check_var___4-13',
21475 J),
21476 delete_ht(J, k(C, number), A),
21477 ast_static_atomic_builtin_type_check_var___4__2__0__7(B,
21478 C,
21479 D,
21480 E,
21481 F)
21482 ; ast_static_atomic_builtin_type_check_var___4__2__0__7(B,
21483 C,
21484 D,
21485 E,
21486 F)
21487 ).
21488ast_static_atomic_builtin_type_check_var___4__2(A, B, C, D) :-
21489 ast_static_atomic_builtin_type_check_var___4__3(A,
21490 B,
21491 C,
21492 D).
21493ast_static_atomic_builtin_type_check_var___4__3(A, _, number, _) :-
21494 nb_getval('$chr_store_multi_hash_chr_translate____ast_static_atomic_builtin_type_check_var___4-13',
21495 B),
21496 lookup_ht(B, k(A, natural), C),
21497 member(D, C),
21498 D=suspension(_, active, _, _, _, _),
21499 !.
21500ast_static_atomic_builtin_type_check_var___4__3(A, B, natural, C) :-
21501 nb_getval('$chr_store_multi_hash_chr_translate____ast_static_atomic_builtin_type_check_var___4-13',
21502 D),
21503 lookup_ht(D, k(A, number), E),
21504 !,
21505 ast_static_atomic_builtin_type_check_var___4__3__0__9(E,
21506 A,
21507 B,
21508 natural,
21509 C).
21510ast_static_atomic_builtin_type_check_var___4__3__0__9([], A, B, C, D) :-
21511 ast_static_atomic_builtin_type_check_var___4__5(A,
21512 B,
21513 C,
21514 D).
21515ast_static_atomic_builtin_type_check_var___4__3__0__9([A|B], C, D, E, F) :-
21516 ( A=suspension(_, active, G, _, H, _),
21517 G==C,
21518 H=number
21519 -> setarg(2, A, removed),
21520 ( nb_getval('$chr_store_multi_hash_chr_translate____ast_static_atomic_builtin_type_check_var___4-1',
21521 I),
21522 delete_ht(I, C, A)
21523 ),
21524 nb_getval('$chr_store_multi_hash_chr_translate____ast_static_atomic_builtin_type_check_var___4-13',
21525 J),
21526 delete_ht(J, k(C, number), A),
21527 ast_static_atomic_builtin_type_check_var___4__3__0__9(B,
21528 C,
21529 D,
21530 E,
21531 F)
21532 ; ast_static_atomic_builtin_type_check_var___4__3__0__9(B,
21533 C,
21534 D,
21535 E,
21536 F)
21537 ).
21538ast_static_atomic_builtin_type_check_var___4__3(A, B, C, D) :-
21539 ast_static_atomic_builtin_type_check_var___4__4(A,
21540 B,
21541 C,
21542 D).
21543ast_static_atomic_builtin_type_check_var___4__4(A, _, number, _) :-
21544 nb_getval('$chr_store_multi_hash_chr_translate____ast_static_atomic_builtin_type_check_var___4-13',
21545 B),
21546 lookup_ht(B, k(A, dense_int), C),
21547 member(D, C),
21548 D=suspension(_, active, _, _, _, _),
21549 !.
21550ast_static_atomic_builtin_type_check_var___4__4(A, B, dense_int, C) :-
21551 nb_getval('$chr_store_multi_hash_chr_translate____ast_static_atomic_builtin_type_check_var___4-13',
21552 D),
21553 lookup_ht(D, k(A, number), E),
21554 !,
21555 ast_static_atomic_builtin_type_check_var___4__4__0__11(E,
21556 A,
21557 B,
21558 dense_int,
21559 C).
21560ast_static_atomic_builtin_type_check_var___4__4__0__11([], A, B, C, D) :-
21561 ast_static_atomic_builtin_type_check_var___4__6(A,
21562 B,
21563 C,
21564 D).
21565ast_static_atomic_builtin_type_check_var___4__4__0__11([A|B], C, D, E, F) :-
21566 ( A=suspension(_, active, G, _, H, _),
21567 G==C,
21568 H=number
21569 -> setarg(2, A, removed),
21570 ( nb_getval('$chr_store_multi_hash_chr_translate____ast_static_atomic_builtin_type_check_var___4-1',
21571 I),
21572 delete_ht(I, C, A)
21573 ),
21574 nb_getval('$chr_store_multi_hash_chr_translate____ast_static_atomic_builtin_type_check_var___4-13',
21575 J),
21576 delete_ht(J, k(C, number), A),
21577 ast_static_atomic_builtin_type_check_var___4__4__0__11(B,
21578 C,
21579 D,
21580 E,
21581 F)
21582 ; ast_static_atomic_builtin_type_check_var___4__4__0__11(B,
21583 C,
21584 D,
21585 E,
21586 F)
21587 ).
21588ast_static_atomic_builtin_type_check_var___4__4(A, B, C, D) :-
21589 ast_static_atomic_builtin_type_check_var___4__5(A,
21590 B,
21591 C,
21592 D).
21593ast_static_atomic_builtin_type_check_var___4__5(A, _, int, _) :-
21594 nb_getval('$chr_store_multi_hash_chr_translate____ast_static_atomic_builtin_type_check_var___4-13',
21595 B),
21596 lookup_ht(B, k(A, natural), C),
21597 member(D, C),
21598 D=suspension(_, active, _, _, _, _),
21599 !.
21600ast_static_atomic_builtin_type_check_var___4__5(A, B, natural, C) :-
21601 nb_getval('$chr_store_multi_hash_chr_translate____ast_static_atomic_builtin_type_check_var___4-13',
21602 D),
21603 lookup_ht(D, k(A, int), E),
21604 !,
21605 ast_static_atomic_builtin_type_check_var___4__5__0__13(E,
21606 A,
21607 B,
21608 natural,
21609 C).
21610ast_static_atomic_builtin_type_check_var___4__5__0__13([], A, B, C, D) :-
21611 ast_static_atomic_builtin_type_check_var___4__7(A,
21612 B,
21613 C,
21614 D).
21615ast_static_atomic_builtin_type_check_var___4__5__0__13([A|B], C, D, E, F) :-
21616 ( A=suspension(_, active, G, _, H, _),
21617 G==C,
21618 H=int
21619 -> setarg(2, A, removed),
21620 ( nb_getval('$chr_store_multi_hash_chr_translate____ast_static_atomic_builtin_type_check_var___4-1',
21621 I),
21622 delete_ht(I, C, A)
21623 ),
21624 nb_getval('$chr_store_multi_hash_chr_translate____ast_static_atomic_builtin_type_check_var___4-13',
21625 J),
21626 delete_ht(J, k(C, int), A),
21627 ast_static_atomic_builtin_type_check_var___4__5__0__13(B,
21628 C,
21629 D,
21630 E,
21631 F)
21632 ; ast_static_atomic_builtin_type_check_var___4__5__0__13(B,
21633 C,
21634 D,
21635 E,
21636 F)
21637 ).
21638ast_static_atomic_builtin_type_check_var___4__5(A, B, C, D) :-
21639 ast_static_atomic_builtin_type_check_var___4__6(A,
21640 B,
21641 C,
21642 D).
21643ast_static_atomic_builtin_type_check_var___4__6(A, _, int, _) :-
21644 nb_getval('$chr_store_multi_hash_chr_translate____ast_static_atomic_builtin_type_check_var___4-13',
21645 B),
21646 lookup_ht(B, k(A, dense_int), C),
21647 member(D, C),
21648 D=suspension(_, active, _, _, _, _),
21649 !.
21650ast_static_atomic_builtin_type_check_var___4__6(A, B, dense_int, C) :-
21651 nb_getval('$chr_store_multi_hash_chr_translate____ast_static_atomic_builtin_type_check_var___4-13',
21652 D),
21653 lookup_ht(D, k(A, int), E),
21654 !,
21655 ast_static_atomic_builtin_type_check_var___4__6__0__15(E,
21656 A,
21657 B,
21658 dense_int,
21659 C).
21660ast_static_atomic_builtin_type_check_var___4__6__0__15([], A, B, C, D) :-
21661 ast_static_atomic_builtin_type_check_var___4__7(A,
21662 B,
21663 C,
21664 D).
21665ast_static_atomic_builtin_type_check_var___4__6__0__15([A|B], C, D, E, F) :-
21666 ( A=suspension(_, active, G, _, H, _),
21667 G==C,
21668 H=int
21669 -> setarg(2, A, removed),
21670 ( nb_getval('$chr_store_multi_hash_chr_translate____ast_static_atomic_builtin_type_check_var___4-1',
21671 I),
21672 delete_ht(I, C, A)
21673 ),
21674 nb_getval('$chr_store_multi_hash_chr_translate____ast_static_atomic_builtin_type_check_var___4-13',
21675 J),
21676 delete_ht(J, k(C, int), A),
21677 ast_static_atomic_builtin_type_check_var___4__6__0__15(B,
21678 C,
21679 D,
21680 E,
21681 F)
21682 ; ast_static_atomic_builtin_type_check_var___4__6__0__15(B,
21683 C,
21684 D,
21685 E,
21686 F)
21687 ).
21688ast_static_atomic_builtin_type_check_var___4__6(A, B, C, D) :-
21689 ast_static_atomic_builtin_type_check_var___4__7(A,
21690 B,
21691 C,
21692 D).
21693ast_static_atomic_builtin_type_check_var___4__7(A, _, natural, _) :-
21694 nb_getval('$chr_store_multi_hash_chr_translate____ast_static_atomic_builtin_type_check_var___4-13',
21695 B),
21696 lookup_ht(B, k(A, dense_int), C),
21697 member(D, C),
21698 D=suspension(_, active, _, _, _, _),
21699 !.
21700ast_static_atomic_builtin_type_check_var___4__7(A, B, dense_int, C) :-
21701 nb_getval('$chr_store_multi_hash_chr_translate____ast_static_atomic_builtin_type_check_var___4-13',
21702 D),
21703 lookup_ht(D, k(A, natural), E),
21704 !,
21705 ast_static_atomic_builtin_type_check_var___4__7__0__17(E,
21706 A,
21707 B,
21708 dense_int,
21709 C).
21710ast_static_atomic_builtin_type_check_var___4__7__0__17([], A, B, C, D) :-
21711 ast_static_atomic_builtin_type_check_var___4__8(A,
21712 B,
21713 C,
21714 D).
21715ast_static_atomic_builtin_type_check_var___4__7__0__17([A|B], C, D, E, F) :-
21716 ( A=suspension(_, active, G, _, H, _),
21717 G==C,
21718 H=natural
21719 -> setarg(2, A, removed),
21720 ( nb_getval('$chr_store_multi_hash_chr_translate____ast_static_atomic_builtin_type_check_var___4-1',
21721 I),
21722 delete_ht(I, C, A)
21723 ),
21724 nb_getval('$chr_store_multi_hash_chr_translate____ast_static_atomic_builtin_type_check_var___4-13',
21725 J),
21726 delete_ht(J, k(C, natural), A),
21727 ast_static_atomic_builtin_type_check_var___4__7__0__17(B,
21728 C,
21729 D,
21730 E,
21731 F)
21732 ; ast_static_atomic_builtin_type_check_var___4__7__0__17(B,
21733 C,
21734 D,
21735 E,
21736 F)
21737 ).
21738ast_static_atomic_builtin_type_check_var___4__7(A, B, C, D) :-
21739 ast_static_atomic_builtin_type_check_var___4__8(A,
21740 B,
21741 C,
21742 D).
21743ast_static_atomic_builtin_type_check_var___4__8(A, B, C, D) :-
21744 nb_getval('$chr_store_multi_hash_chr_translate____ast_static_atomic_builtin_type_check_var___4-1',
21745 E),
21746 lookup_ht(E, A, F),
21747 member(G, F),
21748 G=suspension(_, active, _, _, H, I),
21749 !,
21750 setarg(2, G, removed),
21751 nb_getval('$chr_store_multi_hash_chr_translate____ast_static_atomic_builtin_type_check_var___4-1',
21752 J),
21753 delete_ht(J, A, G),
21754 nb_getval('$chr_store_multi_hash_chr_translate____ast_static_atomic_builtin_type_check_var___4-13',
21755 K),
21756 delete_ht(K, k(A, H), G),
21757 throw(type_error(type_clash(B, D, I, C, H))).
21758ast_static_atomic_builtin_type_check_var___4__8(A, B, C, D) :-
21759 E=suspension(F, active, A, B, C, D),
21760 'chr gen_id'(F),
21761 nb_getval('$chr_store_multi_hash_chr_translate____ast_static_atomic_builtin_type_check_var___4-1',
21762 G),
21763 insert_ht(G, A, E),
21764 nb_getval('$chr_store_multi_hash_chr_translate____ast_static_atomic_builtin_type_check_var___4-13',
21765 H),
21766 insert_ht(H, k(A, C), E).
21767dynamic_type_check :-
21768 dynamic_type_check___0__0(_).
21769dynamic_type_check___0__0(A) :-
21770 nb_getval('$chr_store_global_list_chr_translate____type_definition___2',
21771 B),
21772 !,
21773 A=suspension(C, not_stored_yet, t, _),
21774 'chr gen_id'(C),
21775 dynamic_type_check___0__0__0__1(B, A).
21776dynamic_type_check___0__0__0__1([], A) :-
21777 dynamic_type_check___0__1(A).
21778dynamic_type_check___0__0__0__1([A|B], C) :-
21779 ( A=suspension(_, active, _, _, _, D, E),
21780 F=t(235, A, C),
21781 '$novel_production'(A, F),
21782 '$novel_production'(C, F)
21783 -> '$extend_history'(C, F),
21784 arg(2, C, G),
21785 setarg(2, C, active),
21786 ( G==not_stored_yet
21787 -> nb_getval('$chr_store_global_ground_chr_translate____dynamic_type_check___0',
21788 H),
21789 I=[C|H],
21790 b_setval('$chr_store_global_ground_chr_translate____dynamic_type_check___0',
21791 I),
21792 ( H=[J|_]
21793 -> setarg(4, J, I)
21794 ; true
21795 )
21796 ; true
21797 ),
21798 copy_term_nat(D-E, K-L),
21799 maplist(dynamic_type_check_clause(K), L, M),
21800 dynamic_type_check_clauses(M),
21801 ( C=suspension(_, active, _, _)
21802 -> setarg(2, C, inactive),
21803 dynamic_type_check___0__0__0__1(B, C)
21804 ; true
21805 )
21806 ; dynamic_type_check___0__0__0__1(B, C)
21807 ).
21808dynamic_type_check___0__0(A) :-
21809 A=suspension(B, not_stored_yet, t, _),
21810 'chr gen_id'(B),
21811 dynamic_type_check___0__1(A).
21812dynamic_type_check___0__1(A) :-
21813 nb_getval('$chr_store_global_list_chr_translate____type_alias___2', B),
21814 !,
21815 dynamic_type_check___0__1__0__2(B, A).
21816dynamic_type_check___0__1__0__2([], A) :-
21817 dynamic_type_check___0__2(A).
21818dynamic_type_check___0__1__0__2([A|B], C) :-
21819 ( A=suspension(_, active, _, _, _, D, E),
21820 F=t(236, A, C),
21821 '$novel_production'(A, F),
21822 '$novel_production'(C, F)
21823 -> '$extend_history'(C, F),
21824 arg(2, C, G),
21825 setarg(2, C, active),
21826 ( G==not_stored_yet
21827 -> nb_getval('$chr_store_global_ground_chr_translate____dynamic_type_check___0',
21828 H),
21829 I=[C|H],
21830 b_setval('$chr_store_global_ground_chr_translate____dynamic_type_check___0',
21831 I),
21832 ( H=[J|_]
21833 -> setarg(4, J, I)
21834 ; true
21835 )
21836 ; true
21837 ),
21838 copy_term_nat(D-E, K-L),
21839 dynamic_type_check_alias_clause(K, L, M),
21840 dynamic_type_check_clauses([M]),
21841 ( C=suspension(_, active, _, _)
21842 -> setarg(2, C, inactive),
21843 dynamic_type_check___0__1__0__2(B, C)
21844 ; true
21845 )
21846 ; dynamic_type_check___0__1__0__2(B, C)
21847 ).
21848dynamic_type_check___0__1(A) :-
21849 dynamic_type_check___0__2(A).
21850dynamic_type_check___0__2(A) :-
21851 ( var(A)
21852 -> true
21853 ; arg(2, A, B),
21854 setarg(2, A, removed),
21855 ( B==not_stored_yet
21856 -> true
21857 ; arg(4, A, C),
21858 ( var(C)
21859 -> nb_getval('$chr_store_global_ground_chr_translate____dynamic_type_check___0',
21860 D),
21861 D=[_|E],
21862 b_setval('$chr_store_global_ground_chr_translate____dynamic_type_check___0',
21863 E),
21864 ( E=[F|_]
21865 -> setarg(4, F, _)
21866 ; true
21867 )
21868 ; C=[_, _|E],
21869 setarg(2, C, E),
21870 ( E=[F|_]
21871 -> setarg(4, F, C)
21872 ; true
21873 )
21874 )
21875 )
21876 ),
21877 findall(('$dynamic_type_check'(G, H):-I),
21878 ( atomic_builtin_type(G, H, I)
21879 ; compound_builtin_type(G, H, I, _)
21880 ),
21881 J),
21882 dynamic_type_check_clauses(J).
21883dynamic_type_check_clauses(A) :-
21884 nb_getval('$chr_store_global_ground_chr_translate____dynamic_type_check_clauses___1',
21885 B),
21886 member(C, B),
21887 C=suspension(_, active, _, D),
21888 !,
21889 setarg(2, C, removed),
21890 arg(3, C, E),
21891 ( var(E)
21892 -> nb_getval('$chr_store_global_ground_chr_translate____dynamic_type_check_clauses___1',
21893 F),
21894 F=[_|G],
21895 b_setval('$chr_store_global_ground_chr_translate____dynamic_type_check_clauses___1',
21896 G),
21897 ( G=[H|_]
21898 -> setarg(3, H, _)
21899 ; true
21900 )
21901 ; E=[_, _|G],
21902 setarg(2, E, G),
21903 ( G=[H|_]
21904 -> setarg(3, H, E)
21905 ; true
21906 )
21907 ),
21908 append(A, D, I),
21909 dynamic_type_check_clauses(I).
21910dynamic_type_check_clauses(A) :-
21911 B=suspension(C, active, _, A),
21912 'chr gen_id'(C),
21913 nb_getval('$chr_store_global_ground_chr_translate____dynamic_type_check_clauses___1',
21914 D),
21915 E=[B|D],
21916 b_setval('$chr_store_global_ground_chr_translate____dynamic_type_check_clauses___1',
21917 E),
21918 ( D=[F|_]
21919 -> setarg(3, F, E)
21920 ; true
21921 ).
21922get_dynamic_type_check_clauses(A) :-
21923 nb_getval('$chr_store_global_ground_chr_translate____dynamic_type_check_clauses___1',
21924 B),
21925 member(C, B),
21926 C=suspension(_, active, _, D),
21927 !,
21928 setarg(2, C, removed),
21929 arg(3, C, E),
21930 ( var(E)
21931 -> nb_getval('$chr_store_global_ground_chr_translate____dynamic_type_check_clauses___1',
21932 F),
21933 F=[_|G],
21934 b_setval('$chr_store_global_ground_chr_translate____dynamic_type_check_clauses___1',
21935 G),
21936 ( G=[H|_]
21937 -> setarg(3, H, _)
21938 ; true
21939 )
21940 ; E=[_, _|G],
21941 setarg(2, E, G),
21942 ( G=[H|_]
21943 -> setarg(3, H, E)
21944 ; true
21945 )
21946 ),
21947 A=D.
21948get_dynamic_type_check_clauses([]).
21949atomic_type(A) :-
21950 atomic_type___1__0(A, _).
21951atomic_type___1__0(A, B) :-
21952 atomic_builtin_type(A, _, _),
21953 !,
21954 ( var(B)
21955 -> true
21956 ; B=suspension(_, _, _, C),
21957 setarg(2, B, removed),
21958 term_variables(C, D),
21959 arg(3, B, E),
21960 ( var(E)
21961 -> nb_getval('$chr_store_global_list_chr_translate____atomic_type___1',
21962 F),
21963 F=[_|G],
21964 b_setval('$chr_store_global_list_chr_translate____atomic_type___1',
21965 G),
21966 ( G=[H|_]
21967 -> setarg(3, H, _)
21968 ; true
21969 )
21970 ; E=[_, _|G],
21971 setarg(2, E, G),
21972 ( G=[H|_]
21973 -> setarg(3, H, E)
21974 ; true
21975 )
21976 ),
21977 detach_atomic_type___1(D, B)
21978 ),
21979 A\==any.
21980atomic_type___1__0(A, B) :-
21981 nb_getval('$chr_store_global_list_chr_translate____type_definition___2',
21982 C),
21983 member(D, C),
21984 D=suspension(_, active, _, _, _, E, F),
21985 functor(A, G, H),
21986 functor(E, G, H),
21987 !,
21988 ( var(B)
21989 -> true
21990 ; B=suspension(_, _, _, I),
21991 setarg(2, B, removed),
21992 term_variables(I, J),
21993 arg(3, B, K),
21994 ( var(K)
21995 -> nb_getval('$chr_store_global_list_chr_translate____atomic_type___1',
21996 L),
21997 L=[_|M],
21998 b_setval('$chr_store_global_list_chr_translate____atomic_type___1',
21999 M),
22000 ( M=[N|_]
22001 -> setarg(3, N, _)
22002 ; true
22003 )
22004 ; K=[_, _|M],
22005 setarg(2, K, M),
22006 ( M=[N|_]
22007 -> setarg(3, N, K)
22008 ; true
22009 )
22010 ),
22011 detach_atomic_type___1(J, B)
22012 ),
22013 maplist(atomic, F).
22014atomic_type___1__0(A, B) :-
22015 nb_getval('$chr_store_global_list_chr_translate____type_alias___2', C),
22016 member(D, C),
22017 D=suspension(_, active, _, _, _, E, F),
22018 functor(A, G, H),
22019 functor(E, G, H),
22020 !,
22021 ( var(B)
22022 -> true
22023 ; B=suspension(_, _, _, I),
22024 setarg(2, B, removed),
22025 term_variables(I, J),
22026 arg(3, B, K),
22027 ( var(K)
22028 -> nb_getval('$chr_store_global_list_chr_translate____atomic_type___1',
22029 L),
22030 L=[_|M],
22031 b_setval('$chr_store_global_list_chr_translate____atomic_type___1',
22032 M),
22033 ( M=[N|_]
22034 -> setarg(3, N, _)
22035 ; true
22036 )
22037 ; K=[_, _|M],
22038 setarg(2, K, M),
22039 ( M=[N|_]
22040 -> setarg(3, N, K)
22041 ; true
22042 )
22043 ),
22044 detach_atomic_type___1(J, B)
22045 ),
22046 atomic(F),
22047 copy_term_nat(E-F, A-O),
22048 atomic_type(O).
22049atomic_type___1__0(A, B) :-
22050 ( var(B)
22051 -> B=suspension(C, active, _, A),
22052 term_variables(A, D),
22053 'chr gen_id'(C),
22054 nb_getval('$chr_store_global_list_chr_translate____atomic_type___1',
22055 E),
22056 F=[B|E],
22057 b_setval('$chr_store_global_list_chr_translate____atomic_type___1',
22058 F),
22059 ( E=[G|_]
22060 -> setarg(3, G, F)
22061 ; true
22062 ),
22063 attach_atomic_type___1(D, B)
22064 ; setarg(2, B, active)
22065 ).
22066enumerated_atomic_type(A, _) :-
22067 atomic_builtin_type(A, _, _),
22068 !,
22069 fail.
22070enumerated_atomic_type(A, B) :-
22071 nb_getval('$chr_store_global_list_chr_translate____type_definition___2',
22072 C),
22073 member(D, C),
22074 D=suspension(_, active, _, _, _, E, F),
22075 functor(A, G, H),
22076 functor(E, G, H),
22077 !,
22078 maplist(atomic, F),
22079 B=F.
22080enumerated_atomic_type(A, B) :-
22081 nb_getval('$chr_store_global_list_chr_translate____type_alias___2', C),
22082 member(D, C),
22083 D=suspension(_, active, _, _, _, E, F),
22084 functor(A, G, H),
22085 functor(E, G, H),
22086 !,
22087 atomic(F),
22088 copy_term_nat(E-F, A-I),
22089 enumerated_atomic_type(I, B).
22090enumerated_atomic_type(_, _) :-
22091 fail.
22092stored(A, B, yes) :-
22093 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-12',
22094 C),
22095 lookup_ht(C, k(A, B), D),
22096 member(E, D),
22097 E=suspension(_, active, _, _, _, _, F, G, _),
22098 nb_getval('$chr_store_multi_hash_chr_translate____passive___2-12', H),
22099 lookup_ht(H, k(F, G), I),
22100 member(J, I),
22101 J=suspension(_, active, _, _, _),
22102 nb_getval('$chr_store_multi_hash_chr_translate____stored_complete___3-1',
22103 K),
22104 lookup_ht(K, A, L),
22105 member(M, L),
22106 M=suspension(_, active, _, _, N, O),
22107 B<N,
22108 !,
22109 setarg(2, M, removed),
22110 nb_getval('$chr_store_multi_hash_chr_translate____stored_complete___3-13',
22111 P),
22112 delete_ht(P, k(A, O), M),
22113 nb_getval('$chr_store_multi_hash_chr_translate____stored_complete___3-1',
22114 Q),
22115 delete_ht(Q, A, M),
22116 R is O-1,
22117 stored(A, B, maybe),
22118 stored_complete(A, N, R).
22119stored(A, B, yes) :-
22120 nb_getval('$chr_store_multi_hash_chr_translate____stored_complete___3-1',
22121 C),
22122 lookup_ht(C, A, D),
22123 member(E, D),
22124 E=suspension(_, active, _, _, F, G),
22125 B<F,
22126 nb_getval('$chr_store_multi_hash_chr_translate____ai_not_observed___2-12',
22127 H),
22128 lookup_ht(H, k(A, B), I),
22129 member(J, I),
22130 J=suspension(_, active, _, _),
22131 !,
22132 setarg(2, E, removed),
22133 nb_getval('$chr_store_multi_hash_chr_translate____stored_complete___3-13',
22134 K),
22135 delete_ht(K, k(A, G), E),
22136 nb_getval('$chr_store_multi_hash_chr_translate____stored_complete___3-1',
22137 L),
22138 delete_ht(L, A, E),
22139 M is G-1,
22140 stored(A, B, maybe),
22141 stored_complete(A, F, M).
22142stored(A, B, C) :-
22143 D=suspension(E, active, A, B, C),
22144 'chr gen_id'(E),
22145 nb_getval('$chr_store_multi_hash_chr_translate____stored___3-13', F),
22146 insert_ht(F, k(A, C), D),
22147 nb_getval('$chr_store_multi_hash_chr_translate____stored___3-123', G),
22148 insert_ht(G, k(A, B, C), D).
22149stored_completing(A, B, C) :-
22150 ground(A),
22151 ground(B),
22152 nb_getval('$chr_store_multi_hash_chr_translate____stored___3-123', D),
22153 ( ( lookup_ht(D, k(A, B, yes), E),
22154 member(F, E),
22155 F=suspension(_, active, _, _, _),
22156 !,
22157 G is B+1,
22158 H is C+1,
22159 stored_completing(A, G, H)
22160 ; lookup_ht(D, k(A, B, maybe), I),
22161 member(J, I),
22162 J=suspension(_, active, _, _, _),
22163 !,
22164 K is B+1,
22165 stored_completing(A, K, C)
22166 )
22167 ; lookup_ht(D, k(A, B, no), L),
22168 member(M, L),
22169 M=suspension(_, active, _, _, _),
22170 !,
22171 stored_complete(A, B, C)
22172 ).
22173stored_completing(A, B, C) :-
22174 stored_complete(A, B, C).
22175stored_complete(A, B, C) :-
22176 stored_complete___3__0(A, B, C, _).
22177stored_complete___3__0(A, B, C, _) :-
22178 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-1', D),
22179 lookup_ht(D, A, E),
22180 member(F, E),
22181 F=suspension(_, active, _, _, _, G, H, I, _),
22182 G<B,
22183 nb_getval('$chr_store_multi_hash_chr_translate____passive___2-12', J),
22184 lookup_ht(J, k(H, I), K),
22185 member(L, K),
22186 L=suspension(_, active, _, _, _),
22187 nb_getval('$chr_store_multi_hash_chr_translate____stored___3-123', M),
22188 lookup_ht(M, k(A, G, yes), N),
22189 member(O, N),
22190 O=suspension(_, active, _, _, _),
22191 !,
22192 setarg(2, O, removed),
22193 nb_getval('$chr_store_multi_hash_chr_translate____stored___3-13', P),
22194 delete_ht(P, k(A, yes), O),
22195 nb_getval('$chr_store_multi_hash_chr_translate____stored___3-123', Q),
22196 delete_ht(Q, k(A, G, yes), O),
22197 R is C-1,
22198 stored(A, G, maybe),
22199 stored_complete(A, B, R).
22200stored_complete___3__0(A, B, C, _) :-
22201 nb_getval('$chr_store_multi_hash_chr_translate____stored___3-13', D),
22202 lookup_ht(D, k(A, yes), E),
22203 member(F, E),
22204 F=suspension(_, active, _, G, _),
22205 G<B,
22206 nb_getval('$chr_store_multi_hash_chr_translate____ai_not_observed___2-12',
22207 H),
22208 lookup_ht(H, k(A, G), I),
22209 member(J, I),
22210 J=suspension(_, active, _, _),
22211 !,
22212 setarg(2, F, removed),
22213 nb_getval('$chr_store_multi_hash_chr_translate____stored___3-13', K),
22214 delete_ht(K, k(A, yes), F),
22215 nb_getval('$chr_store_multi_hash_chr_translate____stored___3-123', L),
22216 delete_ht(L, k(A, G, yes), F),
22217 M is C-1,
22218 stored(A, G, maybe),
22219 stored_complete(A, B, M).
22220stored_complete___3__0(A, B, 0, C) :-
22221 nb_getval('$chr_store_multi_hash_chr_translate____max_occurrence___2-1',
22222 D),
22223 lookup_ht(D, A, E),
22224 !,
22225 C=suspension(F, not_stored_yet, t, A, B, 0),
22226 'chr gen_id'(F),
22227 stored_complete___3__0__0__3(E, A, B, 0, C).
22228stored_complete___3__0__0__3([], A, B, C, D) :-
22229 stored_complete___3__1(A, B, C, D).
22230stored_complete___3__0__0__3([A|B], C, D, E, F) :-
22231 ( A=suspension(_, active, _, G, H),
22232 G==C,
22233 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-1',
22234 I),
22235 lookup_ht(I, C, J)
22236 -> stored_complete___3__0__1__3(J,
22237 H,
22238 A,
22239 B,
22240 C,
22241 D,
22242 E,
22243 F)
22244 ; stored_complete___3__0__0__3(B, C, D, E, F)
22245 ).
22246stored_complete___3__0__1__3([], _, _, A, B, C, D, E) :-
22247 stored_complete___3__0__0__3(A, B, C, D, E).
22248stored_complete___3__0__1__3([A|B], C, D, E, F, G, H, I) :-
22249 ( A=suspension(_, active, _, _, J, _, K, _, _),
22250 J==F,
22251 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-3',
22252 L),
22253 lookup_ht(L, K, M)
22254 -> stored_complete___3__0__2__3(M,
22255 K,
22256 A,
22257 B,
22258 C,
22259 D,
22260 E,
22261 F,
22262 G,
22263 H,
22264 I)
22265 ; stored_complete___3__0__1__3(B,
22266 C,
22267 D,
22268 E,
22269 F,
22270 G,
22271 H,
22272 I)
22273 ).
22274stored_complete___3__0__2__3([], _, _, A, B, C, D, E, F, G, H) :-
22275 stored_complete___3__0__1__3(A,
22276 B,
22277 C,
22278 D,
22279 E,
22280 F,
22281 G,
22282 H).
22283stored_complete___3__0__2__3([A|B], C, D, E, F, G, H, I, J, K, L) :-
22284 ( A=suspension(_, active, _, _, _, _, M, N, _),
22285 A\==D,
22286 M==C,
22287 O=t(250, A, D, L, G),
22288 '$novel_production'(A, O),
22289 '$novel_production'(D, O),
22290 '$novel_production'(L, O),
22291 '$novel_production'(G, O),
22292 J=<F
22293 -> '$extend_history'(L, O),
22294 arg(2, L, P),
22295 setarg(2, L, active),
22296 ( P==not_stored_yet
22297 -> nb_getval('$chr_store_multi_hash_chr_translate____stored_complete___3-13',
22298 Q),
22299 insert_ht(Q, k(I, K), L),
22300 nb_getval('$chr_store_multi_hash_chr_translate____stored_complete___3-1',
22301 R),
22302 insert_ht(R, I, L)
22303 ; true
22304 ),
22305 passive(C, N),
22306 ( L=suspension(_, active, _, _, _, _)
22307 -> setarg(2, L, inactive),
22308 stored_complete___3__0__2__3(B,
22309 C,
22310 D,
22311 E,
22312 F,
22313 G,
22314 H,
22315 I,
22316 J,
22317 K,
22318 L)
22319 ; true
22320 )
22321 ; stored_complete___3__0__2__3(B,
22322 C,
22323 D,
22324 E,
22325 F,
22326 G,
22327 H,
22328 I,
22329 J,
22330 K,
22331 L)
22332 ).
22333stored_complete___3__0(A, B, C, D) :-
22334 D=suspension(E, not_stored_yet, t, A, B, C),
22335 'chr gen_id'(E),
22336 stored_complete___3__1(A, B, C, D).
22337stored_complete___3__1(A, B, C, D) :-
22338 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-1', E),
22339 lookup_ht(E, A, F),
22340 !,
22341 stored_complete___3__1__0__4(F, A, B, C, D).
22342stored_complete___3__1__0__4([], A, B, C, D) :-
22343 stored_complete___3__2(A, B, C, D).
22344stored_complete___3__1__0__4([A|B], C, D, E, F) :-
22345 ( A=suspension(_, active, _, _, G, H, I, J, _),
22346 G==C,
22347 K=t(259, F, A),
22348 '$novel_production'(F, K),
22349 '$novel_production'(A, K),
22350 H>D
22351 -> '$extend_history'(F, K),
22352 arg(2, F, L),
22353 setarg(2, F, active),
22354 ( L==not_stored_yet
22355 -> nb_getval('$chr_store_multi_hash_chr_translate____stored_complete___3-13',
22356 M),
22357 insert_ht(M, k(C, E), F),
22358 nb_getval('$chr_store_multi_hash_chr_translate____stored_complete___3-1',
22359 N),
22360 insert_ht(N, C, F)
22361 ; true
22362 ),
22363 passive(I, J),
22364 ( F=suspension(_, active, _, _, _, _)
22365 -> setarg(2, F, inactive),
22366 stored_complete___3__1__0__4(B,
22367 C,
22368 D,
22369 E,
22370 F)
22371 ; true
22372 )
22373 ; stored_complete___3__1__0__4(B, C, D, E, F)
22374 ).
22375stored_complete___3__1(A, B, C, D) :-
22376 stored_complete___3__2(A, B, C, D).
22377stored_complete___3__2(A, _, B, C) :-
22378 arg(2, C, D),
22379 setarg(2, C, active),
22380 ( D==not_stored_yet
22381 -> nb_getval('$chr_store_multi_hash_chr_translate____stored_complete___3-13',
22382 E),
22383 insert_ht(E, k(A, B), C),
22384 nb_getval('$chr_store_multi_hash_chr_translate____stored_complete___3-1',
22385 F),
22386 insert_ht(F, A, C)
22387 ; true
22388 ).
22389is_stored(A) :-
22390 ground(A),
22391 nb_getval('$chr_store_multi_hash_chr_translate____max_occurrence___2-1',
22392 B),
22393 lookup_ht(B, A, C),
22394 member(D, C),
22395 D=suspension(_, active, _, _, E),
22396 nb_getval('$chr_store_multi_hash_chr_translate____stored_complete___3-13',
22397 F),
22398 lookup_ht(F, k(A, 0), G),
22399 member(H, G),
22400 H=suspension(_, active, _, _, I, _),
22401 I=<E,
22402 !,
22403 fail.
22404is_stored(_).
22405is_finally_stored(A) :-
22406 ground(A),
22407 nb_getval('$chr_store_multi_hash_chr_translate____max_occurrence___2-1',
22408 B),
22409 lookup_ht(B, A, C),
22410 member(D, C),
22411 D=suspension(_, active, _, _, E),
22412 nb_getval('$chr_store_multi_hash_chr_translate____stored_complete___3-1',
22413 F),
22414 lookup_ht(F, A, G),
22415 member(H, G),
22416 H=suspension(_, active, _, _, I, _),
22417 I=<E,
22418 !,
22419 fail.
22420is_finally_stored(_).
22421check_all_passive(A, [B|C]) :-
22422 nb_getval('$chr_store_multi_hash_chr_translate____passive___2-12', D),
22423 lookup_ht(D, k(A, B), E),
22424 member(F, E),
22425 F=suspension(_, active, _, _, _),
22426 !,
22427 check_all_passive(A, C).
22428check_all_passive(A, []) :-
22429 nb_getval('$chr_store_multi_hash_chr_translate____rule___2-1', B),
22430 lookup_ht(B, A, C),
22431 member(D, C),
22432 D=suspension(_, active, _, _, _, E),
22433 !,
22434 chr_warning(weird_program,
22435 'All heads passive in ~@.\n\tThis rule never fires. Please check your program.\n',
22436 [format_rule(E)]).
22437check_all_passive(A, B) :-
22438 C=suspension(D, active, A, B),
22439 'chr gen_id'(D),
22440 nb_getval('$chr_store_multi_hash_chr_translate____check_all_passive___2-12',
22441 E),
22442 insert_ht(E, k(A, B), C),
22443 nb_getval('$chr_store_multi_hash_chr_translate____check_all_passive___2-1',
22444 F),
22445 insert_ht(F, A, C).
22446constraints_code1([], A, B) :-
22447 !,
22448 A=B.
22449constraints_code1([A|B], C, D) :-
22450 !,
22451 constraint_code(A, C, E),
22452 constraints_code1(B, E, D).
22453constraints_code1(A, B, C) :-
22454 D=suspension(E, active, _, A, B, C),
22455 'chr gen_id'(E),
22456 nb_getval('$chr_store_global_ground_chr_translate____constraints_code1___3',
22457 F),
22458 G=[D|F],
22459 b_setval('$chr_store_global_ground_chr_translate____constraints_code1___3',
22460 G),
22461 ( F=[H|_]
22462 -> setarg(3, H, G)
22463 ; true
22464 ).
22465constraint_code(A, B, C) :-
22466 ( ( chr_pp_flag(debugable, on)
22467 ; is_stored(A),
22468 ( has_active_occurrence(A)
22469 ; chr_pp_flag(late_allocation, off)
22470 ),
22471 ( may_trigger(A)
22472 ; get_allocation_occurrence(A, D),
22473 get_max_occurrence(A, E),
22474 E>=D
22475 )
22476 )
22477 -> constraint_prelude(A, F),
22478 add_dummy_location(F, G),
22479 B=[G|H]
22480 ; B=H
22481 ),
22482 I=[0],
22483 occurrences_code(A, 1, I, J, H, K),
22484 gen_cond_attach_clause(A, J, K, C).
22485has_active_occurrence(A) :-
22486 nb_getval('$chr_store_multi_hash_chr_translate____memo_has_active_occurrence___1-1',
22487 B),
22488 lookup_ht(B, A, C),
22489 member(D, C),
22490 D=suspension(_, active, _),
22491 !.
22492has_active_occurrence(A) :-
22493 has_active_occurrence(A, 1),
22494 memo_has_active_occurrence(A).
22495has_active_occurrence(A, B) :-
22496 nb_getval('$chr_store_multi_hash_chr_translate____max_occurrence___2-1',
22497 C),
22498 lookup_ht(C, A, D),
22499 member(E, D),
22500 E=suspension(_, active, _, _, F),
22501 B>F,
22502 !,
22503 fail.
22504has_active_occurrence(A, B) :-
22505 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-12',
22506 C),
22507 lookup_ht(C, k(A, B), D),
22508 member(E, D),
22509 E=suspension(_, active, _, _, _, _, F, G, _),
22510 nb_getval('$chr_store_multi_hash_chr_translate____passive___2-12', H),
22511 lookup_ht(H, k(F, G), I),
22512 member(J, I),
22513 J=suspension(_, active, _, _, _),
22514 !,
22515 K is B+1,
22516 has_active_occurrence(A, K).
22517has_active_occurrence(_, _).
22518memo_has_active_occurrence(A) :-
22519 B=suspension(C, active, A),
22520 'chr gen_id'(C),
22521 nb_getval('$chr_store_multi_hash_chr_translate____memo_has_active_occurrence___1-1',
22522 D),
22523 insert_ht(D, A, B).
22524use_auxiliary_predicate(A) :-
22525 nb_getval('$chr_store_multi_hash_chr_translate____use_auxiliary_predicate___1-1',
22526 B),
22527 lookup_ht(B, A, C),
22528 member(D, C),
22529 D=suspension(_, active, _),
22530 !.
22531use_auxiliary_predicate(A) :-
22532 B=suspension(C, active, A),
22533 'chr gen_id'(C),
22534 nb_getval('$chr_store_multi_hash_chr_translate____use_auxiliary_predicate___1-1',
22535 D),
22536 insert_ht(D, A, B).
22537use_auxiliary_predicate(A, B) :-
22538 nb_getval('$chr_store_multi_hash_chr_translate____use_auxiliary_predicate___2-12',
22539 C),
22540 lookup_ht(C, k(A, B), D),
22541 member(E, D),
22542 E=suspension(_, active, _, _),
22543 !.
22544use_auxiliary_predicate(A, B) :-
22545 C=suspension(D, active, A, B),
22546 'chr gen_id'(D),
22547 nb_getval('$chr_store_multi_hash_chr_translate____use_auxiliary_predicate___2-1',
22548 E),
22549 insert_ht(E, A, C),
22550 nb_getval('$chr_store_multi_hash_chr_translate____use_auxiliary_predicate___2-12',
22551 F),
22552 insert_ht(F, k(A, B), C).
22553is_used_auxiliary_predicate(A) :-
22554 nb_getval('$chr_store_multi_hash_chr_translate____use_auxiliary_predicate___1-1',
22555 B),
22556 lookup_ht(B, A, C),
22557 member(D, C),
22558 D=suspension(_, active, _),
22559 !.
22560is_used_auxiliary_predicate(A) :-
22561 nb_getval('$chr_store_multi_hash_chr_translate____use_auxiliary_predicate___2-1',
22562 B),
22563 lookup_ht(B, A, C),
22564 member(D, C),
22565 D=suspension(_, active, _, _),
22566 !.
22567is_used_auxiliary_predicate(_) :-
22568 fail.
22569is_used_auxiliary_predicate(A, _) :-
22570 nb_getval('$chr_store_multi_hash_chr_translate____use_auxiliary_predicate___1-1',
22571 B),
22572 lookup_ht(B, A, C),
22573 member(D, C),
22574 D=suspension(_, active, _),
22575 !.
22576is_used_auxiliary_predicate(A, B) :-
22577 nb_getval('$chr_store_multi_hash_chr_translate____use_auxiliary_predicate___2-12',
22578 C),
22579 lookup_ht(C, k(A, B), D),
22580 member(E, D),
22581 E=suspension(_, active, _, _),
22582 !.
22583is_used_auxiliary_predicate(_, _) :-
22584 fail.
22585use_auxiliary_module(A) :-
22586 nb_getval('$chr_store_multi_hash_chr_translate____use_auxiliary_module___1-1',
22587 B),
22588 lookup_ht(B, A, C),
22589 member(D, C),
22590 D=suspension(_, active, _),
22591 !.
22592use_auxiliary_module(A) :-
22593 B=suspension(C, active, A),
22594 'chr gen_id'(C),
22595 nb_getval('$chr_store_multi_hash_chr_translate____use_auxiliary_module___1-1',
22596 D),
22597 insert_ht(D, A, B).
22598is_used_auxiliary_module(A) :-
22599 nb_getval('$chr_store_multi_hash_chr_translate____use_auxiliary_module___1-1',
22600 B),
22601 lookup_ht(B, A, C),
22602 member(D, C),
22603 D=suspension(_, active, _),
22604 !.
22605is_used_auxiliary_module(_) :-
22606 fail.
22607occurrences_code(A, B, C, D, E, F) :-
22608 nb_getval('$chr_store_multi_hash_chr_translate____max_occurrence___2-1',
22609 G),
22610 lookup_ht(G, A, H),
22611 member(I, H),
22612 I=suspension(_, active, _, _, J),
22613 B>J,
22614 !,
22615 D=C,
22616 E=F.
22617occurrences_code(A, B, C, D, E, F) :-
22618 occurrence_code(A, B, C, G, E, H),
22619 I is B+1,
22620 occurrences_code(A, I, G, D, H, F).
22621occurrence_code(A, B, C, D, E, F) :-
22622 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-12',
22623 G),
22624 lookup_ht(G, k(A, B), H),
22625 member(I, H),
22626 I=suspension(_, active, _, _, _, _, J, K, _),
22627 ( nb_getval('$chr_store_multi_hash_chr_translate____passive___2-12',
22628 L),
22629 lookup_ht(L, k(J, K), M),
22630 member(N, M),
22631 N=suspension(_, active, _, _, _),
22632 !,
22633 ( named_history(J, _, _)
22634 -> does_use_history(A, B)
22635 ; true
22636 ),
22637 D=C,
22638 E=F
22639 ; nb_getval('$chr_store_multi_hash_chr_translate____rule___2-1', O),
22640 lookup_ht(O, J, P),
22641 member(Q, P),
22642 Q=suspension(_, active, _, _, _, R),
22643 !,
22644 R=pragma(rule(S, T, _, _), ids(U, V), _, _, _),
22645 ( select2(K, W, U, S, X, Y)
22646 -> D=C,
22647 head1_code(W,
22648 K,
22649 Y,
22650 X,
22651 R,
22652 A,
22653 B,
22654 C,
22655 E,
22656 F)
22657 ; select2(K, Z, V, T, A1, B1)
22658 -> head2_code(Z,
22659 K,
22660 B1,
22661 A1,
22662 R,
22663 A,
22664 B,
22665 C,
22666 E,
22667 C1),
22668 ( should_skip_to_next_id(A, B)
22669 -> inc_id(C, D),
22670 ( unconditional_occurrence(A, B)
22671 -> C1=F
22672 ; gen_alloc_inc_clause(A,
22673 B,
22674 C,
22675 C1,
22676 F)
22677 )
22678 ; D=C,
22679 C1=F
22680 )
22681 )
22682 ).
22683occurrence_code(A, B, _, _, _, _) :-
22684 chr_error(internal,
22685 'occurrence_code/6: missing information to compile ~w:~w\n',
22686 [A, B]).
22687functional_dependency(A, B, C, D) :-
22688 B>1,
22689 nb_getval('$chr_store_multi_hash_chr_translate____allocation_occurrence___2-1',
22690 E),
22691 lookup_ht(E, A, F),
22692 member(G, F),
22693 G=suspension(_, active, _, _, H),
22694 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-13',
22695 I),
22696 lookup_ht(I, k(A, B), J),
22697 member(K, J),
22698 K=suspension(_, active, _, _, _, L, _, _, _),
22699 H>L,
22700 !,
22701 functional_dependency(A, 1, C, D).
22702functional_dependency(A, B, C, D) :-
22703 E=suspension(F, active, A, B, C, D),
22704 'chr gen_id'(F),
22705 nb_getval('$chr_store_multi_hash_chr_translate____functional_dependency___4-1',
22706 G),
22707 insert_ht(G, A, E),
22708 nb_getval('$chr_store_multi_hash_chr_translate____functional_dependency___4-12',
22709 H),
22710 insert_ht(H, k(A, B), E).
22711get_functional_dependency(A, B, C, D) :-
22712 nb_getval('$chr_store_multi_hash_chr_translate____functional_dependency___4-1',
22713 E),
22714 lookup_ht(E, A, F),
22715 member(G, F),
22716 G=suspension(_, active, _, H, I, J),
22717 B>=H,
22718 !,
22719 C=I,
22720 D=J.
22721get_functional_dependency(_, _, _, _) :-
22722 fail.
22723initial_call_pattern(A) :-
22724 initial_call_pattern___1__0(A, _).
22725initial_call_pattern___1__0(A, _) :-
22726 nb_getval('$chr_store_multi_hash_chr_translate____initial_call_pattern___1-1',
22727 B),
22728 lookup_ht(B, A, C),
22729 member(D, C),
22730 D=suspension(_, active, _, _),
22731 !.
22732initial_call_pattern___1__0(A, B) :-
22733 B=suspension(C, active, t, A),
22734 'chr gen_id'(C),
22735 nb_getval('$chr_store_multi_hash_chr_translate____initial_call_pattern___1-1',
22736 D),
22737 insert_ht(D, A, B),
22738 call_pattern(A),
22739 ( B=suspension(_, active, _, _)
22740 -> setarg(2, B, inactive),
22741 initial_call_pattern___1__1(A, B)
22742 ; true
22743 ).
22744initial_call_pattern___1__1(A, B) :-
22745 nb_getval('$chr_store_multi_hash_chr_translate____final_answer_pattern___2-1',
22746 C),
22747 lookup_ht(C, A, D),
22748 !,
22749 initial_call_pattern___1__1__0__4(D, A, B).
22750initial_call_pattern___1__1__0__4([], A, B) :-
22751 initial_call_pattern___1__2(A, B).
22752initial_call_pattern___1__1__0__4([A|B], C, D) :-
22753 ( A=suspension(_, active, _, E, F),
22754 E==C,
22755 nb_getval('$chr_store_global_ground_chr_translate____abstract_constraints___1',
22756 G)
22757 -> initial_call_pattern___1__1__1__4(G,
22758 F,
22759 A,
22760 B,
22761 C,
22762 D)
22763 ; initial_call_pattern___1__1__0__4(B, C, D)
22764 ).
22765initial_call_pattern___1__1__1__4([], _, _, A, B, C) :-
22766 initial_call_pattern___1__1__0__4(A, B, C).
22767initial_call_pattern___1__1__1__4([A|B], C, D, E, F, G) :-
22768 ( A=suspension(_, active, _, H),
22769 I=t(303, G, D, A),
22770 '$novel_production'(G, I),
22771 '$novel_production'(D, I)
22772 -> '$extend_history'(G, I),
22773 setarg(2, G, active),
22774 ai_observation_schedule_new_calls(H, C),
22775 ( G=suspension(_, active, _, _)
22776 -> setarg(2, G, inactive),
22777 initial_call_pattern___1__1__1__4(B,
22778 C,
22779 D,
22780 E,
22781 F,
22782 G)
22783 ; true
22784 )
22785 ; initial_call_pattern___1__1__1__4(B,
22786 C,
22787 D,
22788 E,
22789 F,
22790 G)
22791 ).
22792initial_call_pattern___1__1(A, B) :-
22793 initial_call_pattern___1__2(A, B).
22794initial_call_pattern___1__2(_, A) :-
22795 setarg(2, A, active).
22796call_pattern(A) :-
22797 call_pattern___1__0(A, _).
22798call_pattern___1__0(A, _) :-
22799 nb_getval('$chr_store_multi_hash_chr_translate____call_pattern___1-1',
22800 B),
22801 lookup_ht(B, A, C),
22802 member(D, C),
22803 D=suspension(_, active, _),
22804 !.
22805call_pattern___1__0(A, B) :-
22806 B=suspension(C, active, A),
22807 'chr gen_id'(C),
22808 nb_getval('$chr_store_multi_hash_chr_translate____call_pattern___1-1',
22809 D),
22810 insert_ht(D, A, B),
22811 call_pattern_worker(A),
22812 ( B=suspension(_, active, _)
22813 -> setarg(2, B, inactive),
22814 call_pattern___1__1(A, B)
22815 ; true
22816 ).
22817call_pattern___1__1(_, A) :-
22818 setarg(2, A, active).
22819call_pattern_worker(odom([], A)) :-
22820 !,
22821 final_answer_pattern(odom([], A), odom([], A)).
22822call_pattern_worker(odom([A|B], C)) :-
22823 !,
22824 D=odom(A, C),
22825 depends_on_goal(odom([A|B], C), D),
22826 call_pattern(D).
22827call_pattern_worker(odom((A;B), C)) :-
22828 !,
22829 D=odom((A;B), C),
22830 E=odom([], C),
22831 final_answer_pattern(D, E),
22832 F=odom(A, C),
22833 G=odom(B, C),
22834 call_pattern(F),
22835 call_pattern(G),
22836 depends_on_as(D, F, G).
22837call_pattern_worker(odom(builtin, A)) :-
22838 !,
22839 ord_empty(B),
22840 final_answer_pattern(odom(builtin, A), odom([], B)).
22841call_pattern_worker(odom(occ(A, B), C)) :-
22842 nb_getval('$chr_store_multi_hash_chr_translate____max_occurrence___2-1',
22843 D),
22844 lookup_ht(D, A, E),
22845 member(F, E),
22846 F=suspension(_, active, _, _, G),
22847 B>G,
22848 !,
22849 final_answer_pattern(odom(occ(A, B), C), odom([], C)).
22850call_pattern_worker(odom(A, B)) :-
22851 A=_/_,
22852 !,
22853 C=odom(occ(A, 1), B),
22854 call_pattern(C),
22855 depends_on(odom(A, B), C).
22856call_pattern_worker(odom(occ(A, B), C)) :-
22857 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-12',
22858 D),
22859 lookup_ht(D, k(A, B), E),
22860 member(F, E),
22861 F=suspension(_, active, _, _, _, _, G, H, _),
22862 is_passive(G, H),
22863 !,
22864 I is B+1,
22865 J=odom(occ(A, I), C),
22866 call_pattern(J),
22867 final_answer_pattern(odom(occ(A, B), C), odom([], C)),
22868 depends_on(odom(occ(A, B), C), J).
22869call_pattern_worker(odom(occ(A, B), C)) :-
22870 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-125',
22871 D),
22872 ( lookup_ht(D, k(A, B, simplification), E),
22873 member(F, E),
22874 F=suspension(_, active, _, _, _, _, G, H, _),
22875 \+ is_passive(G, H),
22876 !,
22877 ai_observation_memo_simplification_rest_heads(A, B, I),
22878 ai_observation_observe_set(C, I, J),
22879 ai_observation_memo_abstract_goal(G, K),
22880 call_pattern(odom(K, J)),
22881 L is B+1,
22882 M=odom(occ(A, L), C),
22883 call_pattern(M),
22884 depends_on_as(odom(occ(A, B), C),
22885 odom(K, J),
22886 M),
22887 final_answer_pattern(odom(occ(A, B), C),
22888 odom([], C))
22889 ; lookup_ht(D, k(A, B, propagation), N),
22890 member(O, N),
22891 O=suspension(_, active, _, _, _, _, P, Q, _),
22892 \+ is_passive(P, Q),
22893 !,
22894 ai_observation_memo_propagation_rest_heads(A, B, R),
22895 ai_observation_observe_set(C, R, S),
22896 ord_add_element(S, A, T),
22897 ai_observation_memo_abstract_goal(P, U),
22898 call_pattern(odom(U, T)),
22899 ( ord_memberchk(A, S)
22900 -> V=no
22901 ; V=yes
22902 ),
22903 W is B+1,
22904 X=odom(occ(A, W), C),
22905 call_pattern(X),
22906 depends_on_ap(odom(occ(A, B), C),
22907 odom(U, T),
22908 X,
22909 V)
22910 ).
22911call_pattern_worker(A) :-
22912 chr_error(internal,
22913 'AI observation analysis: unexpected abstract state ~w\n',
22914 [A]).
22915final_answer_pattern(A, B) :-
22916 final_answer_pattern___2__0(A, B, _).
22917final_answer_pattern___2__0(A, B, C) :-
22918 nb_getval('$chr_store_multi_hash_chr_translate____final_answer_pattern___2-1',
22919 D),
22920 lookup_ht(D, A, E),
22921 ( member(F, E),
22922 F=suspension(_, active, _, _, G),
22923 ai_observation_leq(B, G),
22924 !
22925 ; !,
22926 final_answer_pattern___2__0__0__2(E, A, B, C)
22927 ).
22928final_answer_pattern___2__0__0__2([], A, B, C) :-
22929 final_answer_pattern___2__1(A, B, C).
22930final_answer_pattern___2__0__0__2([A|B], C, D, E) :-
22931 ( A=suspension(_, active, _, F, G),
22932 F==C,
22933 ai_observation_leq(G, D)
22934 -> setarg(2, A, removed),
22935 nb_getval('$chr_store_multi_hash_chr_translate____final_answer_pattern___2-1',
22936 H),
22937 delete_ht(H, C, A),
22938 final_answer_pattern___2__0__0__2(B, C, D, E)
22939 ; final_answer_pattern___2__0__0__2(B, C, D, E)
22940 ).
22941final_answer_pattern___2__0(A, B, C) :-
22942 final_answer_pattern___2__1(A, B, C).
22943final_answer_pattern___2__1(A, B, C) :-
22944 nb_getval('$chr_store_multi_hash_chr_translate____initial_call_pattern___1-1',
22945 D),
22946 lookup_ht(D, A, E),
22947 !,
22948 C=suspension(F, not_stored_yet, t, A, B),
22949 'chr gen_id'(F),
22950 final_answer_pattern___2__1__0__3(E, A, B, C).
22951final_answer_pattern___2__1__0__3([], A, B, C) :-
22952 final_answer_pattern___2__2(A, B, C).
22953final_answer_pattern___2__1__0__3([A|B], C, D, E) :-
22954 ( A=suspension(_, active, _, F),
22955 F==C,
22956 nb_getval('$chr_store_global_ground_chr_translate____abstract_constraints___1',
22957 G)
22958 -> final_answer_pattern___2__1__1__3(G,
22959 A,
22960 B,
22961 C,
22962 D,
22963 E)
22964 ; final_answer_pattern___2__1__0__3(B, C, D, E)
22965 ).
22966final_answer_pattern___2__1__1__3([], _, A, B, C, D) :-
22967 final_answer_pattern___2__1__0__3(A, B, C, D).
22968final_answer_pattern___2__1__1__3([A|B], C, D, E, F, G) :-
22969 ( A=suspension(_, active, _, H),
22970 I=t(303, C, G, A),
22971 '$novel_production'(C, I),
22972 '$novel_production'(G, I)
22973 -> '$extend_history'(G, I),
22974 arg(2, G, J),
22975 setarg(2, G, active),
22976 ( J==not_stored_yet
22977 -> nb_getval('$chr_store_multi_hash_chr_translate____final_answer_pattern___2-1',
22978 K),
22979 insert_ht(K, E, G)
22980 ; true
22981 ),
22982 ai_observation_schedule_new_calls(H, F),
22983 ( G=suspension(_, active, _, _, _)
22984 -> setarg(2, G, inactive),
22985 final_answer_pattern___2__1__1__3(B,
22986 C,
22987 D,
22988 E,
22989 F,
22990 G)
22991 ; true
22992 )
22993 ; final_answer_pattern___2__1__1__3(B,
22994 C,
22995 D,
22996 E,
22997 F,
22998 G)
22999 ).
23000final_answer_pattern___2__1(A, B, C) :-
23001 C=suspension(D, not_stored_yet, t, A, B),
23002 'chr gen_id'(D),
23003 final_answer_pattern___2__2(A, B, C).
23004final_answer_pattern___2__2(A, B, C) :-
23005 nb_getval('$chr_store_multi_hash_chr_translate____depends_on___2-2', D),
23006 lookup_ht(D, A, E),
23007 !,
23008 final_answer_pattern___2__2__0__4(E, A, B, C).
23009final_answer_pattern___2__2__0__4([], A, B, C) :-
23010 final_answer_pattern___2__3(A, B, C).
23011final_answer_pattern___2__2__0__4([A|B], C, D, E) :-
23012 ( A=suspension(_, active, _, F, G),
23013 G==C,
23014 H=t(305, A, E),
23015 '$novel_production'(A, H),
23016 '$novel_production'(E, H)
23017 -> '$extend_history'(E, H),
23018 arg(2, E, I),
23019 setarg(2, E, active),
23020 ( I==not_stored_yet
23021 -> nb_getval('$chr_store_multi_hash_chr_translate____final_answer_pattern___2-1',
23022 J),
23023 insert_ht(J, C, E)
23024 ; true
23025 ),
23026 final_answer_pattern(F, D),
23027 ( E=suspension(_, active, _, _, _)
23028 -> setarg(2, E, inactive),
23029 final_answer_pattern___2__2__0__4(B, C, D, E)
23030 ; true
23031 )
23032 ; final_answer_pattern___2__2__0__4(B, C, D, E)
23033 ).
23034final_answer_pattern___2__2(A, B, C) :-
23035 final_answer_pattern___2__3(A, B, C).
23036final_answer_pattern___2__3(A, B, C) :-
23037 nb_getval('$chr_store_multi_hash_chr_translate____depends_on_goal___2-2',
23038 D),
23039 lookup_ht(D, A, E),
23040 !,
23041 final_answer_pattern___2__3__0__5(E, A, B, C).
23042final_answer_pattern___2__3__0__5([], A, B, C) :-
23043 final_answer_pattern___2__4(A, B, C).
23044final_answer_pattern___2__3__0__5([A|B], C, D, E) :-
23045 ( A=suspension(_, active, _, F, G),
23046 G==C,
23047 nb_getval('$chr_store_multi_hash_chr_translate____depends_on___2-1',
23048 H),
23049 lookup_ht(H, F, I)
23050 -> final_answer_pattern___2__3__1__5(I,
23051 F,
23052 A,
23053 B,
23054 C,
23055 D,
23056 E)
23057 ; final_answer_pattern___2__3__0__5(B, C, D, E)
23058 ).
23059final_answer_pattern___2__3__1__5([], _, _, A, B, C, D) :-
23060 final_answer_pattern___2__3__0__5(A, B, C, D).
23061final_answer_pattern___2__3__1__5([A|B], C, D, E, F, G, H) :-
23062 ( A=suspension(_, active, _, I, J),
23063 I==C
23064 -> setarg(2, A, removed),
23065 ( nb_getval('$chr_store_multi_hash_chr_translate____depends_on___2-1',
23066 K),
23067 delete_ht(K, C, A)
23068 ),
23069 nb_getval('$chr_store_multi_hash_chr_translate____depends_on___2-2',
23070 L),
23071 delete_ht(L, J, A),
23072 final_answer_pattern___2__3__1__5(B,
23073 C,
23074 D,
23075 E,
23076 F,
23077 G,
23078 H)
23079 ; final_answer_pattern___2__3__1__5(B,
23080 C,
23081 D,
23082 E,
23083 F,
23084 G,
23085 H)
23086 ).
23087final_answer_pattern___2__3(A, B, C) :-
23088 final_answer_pattern___2__4(A, B, C).
23089final_answer_pattern___2__4(A, B, C) :-
23090 nb_getval('$chr_store_multi_hash_chr_translate____depends_on_goal___2-2',
23091 D),
23092 lookup_ht(D, A, E),
23093 !,
23094 final_answer_pattern___2__4__0__6(E, A, B, C).
23095final_answer_pattern___2__4__0__6([], A, B, C) :-
23096 final_answer_pattern___2__5(A, B, C).
23097final_answer_pattern___2__4__0__6([A|B], C, D, E) :-
23098 ( A=suspension(_, active, _, F, G),
23099 G==C,
23100 H=t(310, A, E),
23101 '$novel_production'(A, H),
23102 '$novel_production'(E, H)
23103 -> '$extend_history'(E, H),
23104 arg(2, E, I),
23105 setarg(2, E, active),
23106 ( I==not_stored_yet
23107 -> nb_getval('$chr_store_multi_hash_chr_translate____final_answer_pattern___2-1',
23108 J),
23109 insert_ht(J, C, E)
23110 ; true
23111 ),
23112 F=odom([_|K], _),
23113 D=odom([], L),
23114 M=odom(K, L),
23115 call_pattern(M),
23116 depends_on(F, M),
23117 ( E=suspension(_, active, _, _, _)
23118 -> setarg(2, E, inactive),
23119 final_answer_pattern___2__4__0__6(B, C, D, E)
23120 ; true
23121 )
23122 ; final_answer_pattern___2__4__0__6(B, C, D, E)
23123 ).
23124final_answer_pattern___2__4(A, B, C) :-
23125 final_answer_pattern___2__5(A, B, C).
23126final_answer_pattern___2__5(A, B, C) :-
23127 nb_getval('$chr_store_multi_hash_chr_translate____depends_on_as___3-2',
23128 D),
23129 lookup_ht(D, A, E),
23130 !,
23131 final_answer_pattern___2__5__0__7(E, A, B, C).
23132final_answer_pattern___2__5__0__7([], A, B, C) :-
23133 final_answer_pattern___2__6(A, B, C).
23134final_answer_pattern___2__5__0__7([A|B], C, D, E) :-
23135 ( A=suspension(_, active, _, F, G, H),
23136 G==C,
23137 nb_getval('$chr_store_multi_hash_chr_translate____final_answer_pattern___2-1',
23138 I),
23139 lookup_ht(I, H, J)
23140 -> final_answer_pattern___2__5__1__7(J,
23141 F,
23142 H,
23143 A,
23144 B,
23145 C,
23146 D,
23147 E)
23148 ; final_answer_pattern___2__5__0__7(B, C, D, E)
23149 ).
23150final_answer_pattern___2__5__1__7([], _, _, _, A, B, C, D) :-
23151 final_answer_pattern___2__5__0__7(A, B, C, D).
23152final_answer_pattern___2__5__1__7([A|B], C, D, E, F, G, H, I) :-
23153 ( A=suspension(_, active, _, J, K),
23154 J==D,
23155 L=t(317, E, I, A),
23156 '$novel_production'(E, L),
23157 '$novel_production'(I, L),
23158 '$novel_production'(A, L)
23159 -> '$extend_history'(I, L),
23160 arg(2, I, M),
23161 setarg(2, I, active),
23162 ( M==not_stored_yet
23163 -> nb_getval('$chr_store_multi_hash_chr_translate____final_answer_pattern___2-1',
23164 N),
23165 insert_ht(N, G, I)
23166 ; true
23167 ),
23168 ai_observation_lub(H, K, O),
23169 final_answer_pattern(C, O),
23170 ( I=suspension(_, active, _, _, _)
23171 -> setarg(2, I, inactive),
23172 final_answer_pattern___2__5__1__7(B,
23173 C,
23174 D,
23175 E,
23176 F,
23177 G,
23178 H,
23179 I)
23180 ; true
23181 )
23182 ; final_answer_pattern___2__5__1__7(B,
23183 C,
23184 D,
23185 E,
23186 F,
23187 G,
23188 H,
23189 I)
23190 ).
23191final_answer_pattern___2__5(A, B, C) :-
23192 final_answer_pattern___2__6(A, B, C).
23193final_answer_pattern___2__6(A, B, C) :-
23194 nb_getval('$chr_store_multi_hash_chr_translate____depends_on_as___3-3',
23195 D),
23196 lookup_ht(D, A, E),
23197 !,
23198 final_answer_pattern___2__6__0__8(E, A, B, C).
23199final_answer_pattern___2__6__0__8([], A, B, C) :-
23200 final_answer_pattern___2__7(A, B, C).
23201final_answer_pattern___2__6__0__8([A|B], C, D, E) :-
23202 ( A=suspension(_, active, _, F, G, H),
23203 H==C,
23204 nb_getval('$chr_store_multi_hash_chr_translate____final_answer_pattern___2-1',
23205 I),
23206 lookup_ht(I, G, J)
23207 -> final_answer_pattern___2__6__1__8(J,
23208 F,
23209 G,
23210 A,
23211 B,
23212 C,
23213 D,
23214 E)
23215 ; final_answer_pattern___2__6__0__8(B, C, D, E)
23216 ).
23217final_answer_pattern___2__6__1__8([], _, _, _, A, B, C, D) :-
23218 final_answer_pattern___2__6__0__8(A, B, C, D).
23219final_answer_pattern___2__6__1__8([A|B], C, D, E, F, G, H, I) :-
23220 ( A=suspension(_, active, _, J, K),
23221 J==D,
23222 L=t(317, E, A, I),
23223 '$novel_production'(E, L),
23224 '$novel_production'(A, L),
23225 '$novel_production'(I, L)
23226 -> '$extend_history'(I, L),
23227 arg(2, I, M),
23228 setarg(2, I, active),
23229 ( M==not_stored_yet
23230 -> nb_getval('$chr_store_multi_hash_chr_translate____final_answer_pattern___2-1',
23231 N),
23232 insert_ht(N, G, I)
23233 ; true
23234 ),
23235 ai_observation_lub(K, H, O),
23236 final_answer_pattern(C, O),
23237 ( I=suspension(_, active, _, _, _)
23238 -> setarg(2, I, inactive),
23239 final_answer_pattern___2__6__1__8(B,
23240 C,
23241 D,
23242 E,
23243 F,
23244 G,
23245 H,
23246 I)
23247 ; true
23248 )
23249 ; final_answer_pattern___2__6__1__8(B,
23250 C,
23251 D,
23252 E,
23253 F,
23254 G,
23255 H,
23256 I)
23257 ).
23258final_answer_pattern___2__6(A, B, C) :-
23259 final_answer_pattern___2__7(A, B, C).
23260final_answer_pattern___2__7(A, B, C) :-
23261 nb_getval('$chr_store_multi_hash_chr_translate____depends_on_ap___4-3',
23262 D),
23263 lookup_ht(D, A, E),
23264 !,
23265 final_answer_pattern___2__7__0__9(E, A, B, C).
23266final_answer_pattern___2__7__0__9([], A, B, C) :-
23267 final_answer_pattern___2__8(A, B, C).
23268final_answer_pattern___2__7__0__9([A|B], C, D, E) :-
23269 ( A=suspension(_, active, _, F, _, G, _),
23270 G==C,
23271 H=t(325, A, E),
23272 '$novel_production'(A, H),
23273 '$novel_production'(E, H)
23274 -> '$extend_history'(E, H),
23275 arg(2, E, I),
23276 setarg(2, E, active),
23277 ( I==not_stored_yet
23278 -> nb_getval('$chr_store_multi_hash_chr_translate____final_answer_pattern___2-1',
23279 J),
23280 insert_ht(J, C, E)
23281 ; true
23282 ),
23283 final_answer_pattern(F, D),
23284 ( E=suspension(_, active, _, _, _)
23285 -> setarg(2, E, inactive),
23286 final_answer_pattern___2__7__0__9(B, C, D, E)
23287 ; true
23288 )
23289 ; final_answer_pattern___2__7__0__9(B, C, D, E)
23290 ).
23291final_answer_pattern___2__7(A, B, C) :-
23292 final_answer_pattern___2__8(A, B, C).
23293final_answer_pattern___2__8(A, B, C) :-
23294 nb_getval('$chr_store_multi_hash_chr_translate____depends_on_ap___4-2',
23295 D),
23296 lookup_ht(D, A, E),
23297 !,
23298 final_answer_pattern___2__8__0__10(E, A, B, C).
23299final_answer_pattern___2__8__0__10([], A, B, C) :-
23300 final_answer_pattern___2__9(A, B, C).
23301final_answer_pattern___2__8__0__10([A|B], C, D, E) :-
23302 ( A=suspension(_, active, _, F, G, H, I),
23303 G==C,
23304 nb_getval('$chr_store_multi_hash_chr_translate____final_answer_pattern___2-1',
23305 J),
23306 lookup_ht(J, H, K)
23307 -> final_answer_pattern___2__8__1__10(K,
23308 F,
23309 H,
23310 I,
23311 A,
23312 B,
23313 C,
23314 D,
23315 E)
23316 ; final_answer_pattern___2__8__0__10(B, C, D, E)
23317 ).
23318final_answer_pattern___2__8__1__10([], _, _, _, _, A, B, C, D) :-
23319 final_answer_pattern___2__8__0__10(A, B, C, D).
23320final_answer_pattern___2__8__1__10([A|B], C, D, E, F, G, H, I, J) :-
23321 ( A=suspension(_, active, _, K, L),
23322 K==D,
23323 M=t(326, F, J, A),
23324 '$novel_production'(F, M),
23325 '$novel_production'(J, M),
23326 '$novel_production'(A, M)
23327 -> '$extend_history'(J, M),
23328 arg(2, J, N),
23329 setarg(2, J, active),
23330 ( N==not_stored_yet
23331 -> nb_getval('$chr_store_multi_hash_chr_translate____final_answer_pattern___2-1',
23332 O),
23333 insert_ht(O, H, J)
23334 ; true
23335 ),
23336 C=odom(occ(P, Q), _),
23337 ( ai_observation_is_observed(I, P)
23338 -> ai_observed_internal(P, Q)
23339 ; ai_not_observed_internal(P, Q)
23340 ),
23341 ( E==yes
23342 -> I=odom([], R),
23343 ord_del_element(R, P, S),
23344 T=odom([], S)
23345 ; T=I
23346 ),
23347 ai_observation_lub(T, L, U),
23348 final_answer_pattern(C, U),
23349 ( J=suspension(_, active, _, _, _)
23350 -> setarg(2, J, inactive),
23351 final_answer_pattern___2__8__1__10(B,
23352 C,
23353 D,
23354 E,
23355 F,
23356 G,
23357 H,
23358 I,
23359 J)
23360 ; true
23361 )
23362 ; final_answer_pattern___2__8__1__10(B,
23363 C,
23364 D,
23365 E,
23366 F,
23367 G,
23368 H,
23369 I,
23370 J)
23371 ).
23372final_answer_pattern___2__8(A, B, C) :-
23373 final_answer_pattern___2__9(A, B, C).
23374final_answer_pattern___2__9(A, B, C) :-
23375 nb_getval('$chr_store_multi_hash_chr_translate____depends_on_ap___4-3',
23376 D),
23377 lookup_ht(D, A, E),
23378 !,
23379 final_answer_pattern___2__9__0__11(E, A, B, C).
23380final_answer_pattern___2__9__0__11([], A, B, C) :-
23381 final_answer_pattern___2__10(A, B, C).
23382final_answer_pattern___2__9__0__11([A|B], C, D, E) :-
23383 ( A=suspension(_, active, _, F, G, H, I),
23384 H==C,
23385 nb_getval('$chr_store_multi_hash_chr_translate____final_answer_pattern___2-1',
23386 J),
23387 lookup_ht(J, G, K)
23388 -> final_answer_pattern___2__9__1__11(K,
23389 F,
23390 G,
23391 I,
23392 A,
23393 B,
23394 C,
23395 D,
23396 E)
23397 ; final_answer_pattern___2__9__0__11(B, C, D, E)
23398 ).
23399final_answer_pattern___2__9__1__11([], _, _, _, _, A, B, C, D) :-
23400 final_answer_pattern___2__9__0__11(A, B, C, D).
23401final_answer_pattern___2__9__1__11([A|B], C, D, E, F, G, H, I, J) :-
23402 ( A=suspension(_, active, _, K, L),
23403 K==D,
23404 M=t(326, F, A, J),
23405 '$novel_production'(F, M),
23406 '$novel_production'(A, M),
23407 '$novel_production'(J, M)
23408 -> '$extend_history'(J, M),
23409 arg(2, J, N),
23410 setarg(2, J, active),
23411 ( N==not_stored_yet
23412 -> nb_getval('$chr_store_multi_hash_chr_translate____final_answer_pattern___2-1',
23413 O),
23414 insert_ht(O, H, J)
23415 ; true
23416 ),
23417 C=odom(occ(P, Q), _),
23418 ( ai_observation_is_observed(L, P)
23419 -> ai_observed_internal(P, Q)
23420 ; ai_not_observed_internal(P, Q)
23421 ),
23422 ( E==yes
23423 -> L=odom([], R),
23424 ord_del_element(R, P, S),
23425 T=odom([], S)
23426 ; T=L
23427 ),
23428 ai_observation_lub(T, I, U),
23429 final_answer_pattern(C, U),
23430 ( J=suspension(_, active, _, _, _)
23431 -> setarg(2, J, inactive),
23432 final_answer_pattern___2__9__1__11(B,
23433 C,
23434 D,
23435 E,
23436 F,
23437 G,
23438 H,
23439 I,
23440 J)
23441 ; true
23442 )
23443 ; final_answer_pattern___2__9__1__11(B,
23444 C,
23445 D,
23446 E,
23447 F,
23448 G,
23449 H,
23450 I,
23451 J)
23452 ).
23453final_answer_pattern___2__9(A, B, C) :-
23454 final_answer_pattern___2__10(A, B, C).
23455final_answer_pattern___2__10(A, _, B) :-
23456 arg(2, B, C),
23457 setarg(2, B, active),
23458 ( C==not_stored_yet
23459 -> nb_getval('$chr_store_multi_hash_chr_translate____final_answer_pattern___2-1',
23460 D),
23461 insert_ht(D, A, B)
23462 ; true
23463 ).
23464abstract_constraints(A) :-
23465 nb_getval('$chr_store_global_ground_chr_translate____abstract_constraints___1',
23466 B),
23467 ( member(C, B),
23468 C=suspension(_, active, _, _),
23469 !
23470 ; !,
23471 abstract_constraints___1__0__0__2(B, A)
23472 ).
23473abstract_constraints___1__0__0__2([], A) :-
23474 abstract_constraints___1__1(A).
23475abstract_constraints___1__0__0__2([A|B], C) :-
23476 ( A=suspension(_, active, _, _)
23477 -> setarg(2, A, removed),
23478 arg(3, A, D),
23479 ( var(D)
23480 -> nb_getval('$chr_store_global_ground_chr_translate____abstract_constraints___1',
23481 E),
23482 E=[_|F],
23483 b_setval('$chr_store_global_ground_chr_translate____abstract_constraints___1',
23484 F),
23485 ( F=[G|_]
23486 -> setarg(3, G, _)
23487 ; true
23488 )
23489 ; D=[_, _|F],
23490 setarg(2, D, F),
23491 ( F=[G|_]
23492 -> setarg(3, G, D)
23493 ; true
23494 )
23495 ),
23496 abstract_constraints___1__0__0__2(B, C)
23497 ; abstract_constraints___1__0__0__2(B, C)
23498 ).
23499abstract_constraints(A) :-
23500 abstract_constraints___1__1(A).
23501abstract_constraints___1__1(A) :-
23502 B=suspension(C, active, _, A),
23503 'chr gen_id'(C),
23504 nb_getval('$chr_store_global_ground_chr_translate____abstract_constraints___1',
23505 D),
23506 E=[B|D],
23507 b_setval('$chr_store_global_ground_chr_translate____abstract_constraints___1',
23508 E),
23509 ( D=[F|_]
23510 -> setarg(3, F, E)
23511 ; true
23512 ).
23513depends_on(A, B) :-
23514 depends_on___2__0(A, B, _).
23515depends_on___2__0(A, B, C) :-
23516 nb_getval('$chr_store_multi_hash_chr_translate____final_answer_pattern___2-1',
23517 D),
23518 lookup_ht(D, B, E),
23519 !,
23520 C=suspension(F, not_stored_yet, t, A, B),
23521 'chr gen_id'(F),
23522 depends_on___2__0__0__1(E, A, B, C).
23523depends_on___2__0__0__1([], A, B, C) :-
23524 depends_on___2__1(A, B, C).
23525depends_on___2__0__0__1([A|B], C, D, E) :-
23526 ( A=suspension(_, active, _, F, G),
23527 F==D,
23528 H=t(305, E, A),
23529 '$novel_production'(E, H),
23530 '$novel_production'(A, H)
23531 -> '$extend_history'(E, H),
23532 arg(2, E, I),
23533 setarg(2, E, active),
23534 ( I==not_stored_yet
23535 -> nb_getval('$chr_store_multi_hash_chr_translate____depends_on___2-1',
23536 J),
23537 insert_ht(J, C, E),
23538 nb_getval('$chr_store_multi_hash_chr_translate____depends_on___2-2',
23539 K),
23540 insert_ht(K, D, E)
23541 ; true
23542 ),
23543 final_answer_pattern(C, G),
23544 ( E=suspension(_, active, _, _, _)
23545 -> setarg(2, E, inactive),
23546 depends_on___2__0__0__1(B, C, D, E)
23547 ; true
23548 )
23549 ; depends_on___2__0__0__1(B, C, D, E)
23550 ).
23551depends_on___2__0(A, B, C) :-
23552 C=suspension(D, not_stored_yet, t, A, B),
23553 'chr gen_id'(D),
23554 depends_on___2__1(A, B, C).
23555depends_on___2__1(A, B, C) :-
23556 arg(2, C, D),
23557 setarg(2, C, active),
23558 ( D==not_stored_yet
23559 -> nb_getval('$chr_store_multi_hash_chr_translate____depends_on___2-1',
23560 E),
23561 insert_ht(E, A, C),
23562 nb_getval('$chr_store_multi_hash_chr_translate____depends_on___2-2',
23563 F),
23564 insert_ht(F, B, C)
23565 ; true
23566 ).
23567depends_on_ap(A, B, C, D) :-
23568 depends_on_ap___4__0(A, B, C, D, _).
23569depends_on_ap___4__0(A, B, C, D, E) :-
23570 nb_getval('$chr_store_multi_hash_chr_translate____final_answer_pattern___2-1',
23571 F),
23572 lookup_ht(F, C, G),
23573 !,
23574 E=suspension(H, not_stored_yet, t, A, B, C, D),
23575 'chr gen_id'(H),
23576 depends_on_ap___4__0__0__1(G,
23577 A,
23578 B,
23579 C,
23580 D,
23581 E).
23582depends_on_ap___4__0__0__1([], A, B, C, D, E) :-
23583 depends_on_ap___4__1(A, B, C, D, E).
23584depends_on_ap___4__0__0__1([A|B], C, D, E, F, G) :-
23585 ( A=suspension(_, active, _, H, I),
23586 H==E,
23587 J=t(325, G, A),
23588 '$novel_production'(G, J),
23589 '$novel_production'(A, J)
23590 -> '$extend_history'(G, J),
23591 arg(2, G, K),
23592 setarg(2, G, active),
23593 ( K==not_stored_yet
23594 -> nb_getval('$chr_store_multi_hash_chr_translate____depends_on_ap___4-2',
23595 L),
23596 insert_ht(L, D, G),
23597 nb_getval('$chr_store_multi_hash_chr_translate____depends_on_ap___4-3',
23598 M),
23599 insert_ht(M, E, G)
23600 ; true
23601 ),
23602 final_answer_pattern(C, I),
23603 ( G=suspension(_, active, _, _, _, _, _)
23604 -> setarg(2, G, inactive),
23605 depends_on_ap___4__0__0__1(B,
23606 C,
23607 D,
23608 E,
23609 F,
23610 G)
23611 ; true
23612 )
23613 ; depends_on_ap___4__0__0__1(B,
23614 C,
23615 D,
23616 E,
23617 F,
23618 G)
23619 ).
23620depends_on_ap___4__0(A, B, C, D, E) :-
23621 E=suspension(F, not_stored_yet, t, A, B, C, D),
23622 'chr gen_id'(F),
23623 depends_on_ap___4__1(A, B, C, D, E).
23624depends_on_ap___4__1(A, B, C, D, E) :-
23625 nb_getval('$chr_store_multi_hash_chr_translate____final_answer_pattern___2-1',
23626 F),
23627 lookup_ht(F, B, G),
23628 !,
23629 depends_on_ap___4__1__0__2(G,
23630 A,
23631 B,
23632 C,
23633 D,
23634 E).
23635depends_on_ap___4__1__0__2([], A, B, C, D, E) :-
23636 depends_on_ap___4__2(A, B, C, D, E).
23637depends_on_ap___4__1__0__2([A|B], C, D, E, F, G) :-
23638 ( A=suspension(_, active, _, H, I),
23639 H==D,
23640 nb_getval('$chr_store_multi_hash_chr_translate____final_answer_pattern___2-1',
23641 J),
23642 lookup_ht(J, E, K)
23643 -> depends_on_ap___4__1__1__2(K,
23644 I,
23645 A,
23646 B,
23647 C,
23648 D,
23649 E,
23650 F,
23651 G)
23652 ; depends_on_ap___4__1__0__2(B,
23653 C,
23654 D,
23655 E,
23656 F,
23657 G)
23658 ).
23659depends_on_ap___4__1__1__2([], _, _, A, B, C, D, E, F) :-
23660 depends_on_ap___4__1__0__2(A,
23661 B,
23662 C,
23663 D,
23664 E,
23665 F).
23666depends_on_ap___4__1__1__2([A|B], C, D, E, F, G, H, I, J) :-
23667 ( A=suspension(_, active, _, K, L),
23668 A\==D,
23669 K==H,
23670 M=t(326, J, D, A),
23671 '$novel_production'(J, M),
23672 '$novel_production'(D, M),
23673 '$novel_production'(A, M)
23674 -> '$extend_history'(J, M),
23675 arg(2, J, N),
23676 setarg(2, J, active),
23677 ( N==not_stored_yet
23678 -> nb_getval('$chr_store_multi_hash_chr_translate____depends_on_ap___4-2',
23679 O),
23680 insert_ht(O, G, J),
23681 nb_getval('$chr_store_multi_hash_chr_translate____depends_on_ap___4-3',
23682 P),
23683 insert_ht(P, H, J)
23684 ; true
23685 ),
23686 F=odom(occ(Q, R), _),
23687 ( ai_observation_is_observed(C, Q)
23688 -> ai_observed_internal(Q, R)
23689 ; ai_not_observed_internal(Q, R)
23690 ),
23691 ( I==yes
23692 -> C=odom([], S),
23693 ord_del_element(S, Q, T),
23694 U=odom([], T)
23695 ; U=C
23696 ),
23697 ai_observation_lub(U, L, V),
23698 final_answer_pattern(F, V),
23699 ( J=suspension(_, active, _, _, _, _, _)
23700 -> setarg(2, J, inactive),
23701 depends_on_ap___4__1__1__2(B,
23702 C,
23703 D,
23704 E,
23705 F,
23706 G,
23707 H,
23708 I,
23709 J)
23710 ; true
23711 )
23712 ; depends_on_ap___4__1__1__2(B,
23713 C,
23714 D,
23715 E,
23716 F,
23717 G,
23718 H,
23719 I,
23720 J)
23721 ).
23722depends_on_ap___4__1(A, B, C, D, E) :-
23723 depends_on_ap___4__2(A, B, C, D, E).
23724depends_on_ap___4__2(_, A, B, _, C) :-
23725 arg(2, C, D),
23726 setarg(2, C, active),
23727 ( D==not_stored_yet
23728 -> nb_getval('$chr_store_multi_hash_chr_translate____depends_on_ap___4-2',
23729 E),
23730 insert_ht(E, A, C),
23731 nb_getval('$chr_store_multi_hash_chr_translate____depends_on_ap___4-3',
23732 F),
23733 insert_ht(F, B, C)
23734 ; true
23735 ).
23736depends_on_goal(A, B) :-
23737 depends_on_goal___2__0(A, B, _).
23738depends_on_goal___2__0(A, B, C) :-
23739 nb_getval('$chr_store_multi_hash_chr_translate____depends_on___2-1', D),
23740 lookup_ht(D, A, E),
23741 !,
23742 depends_on_goal___2__0__0__1(E, A, B, C).
23743depends_on_goal___2__0__0__1([], A, B, C) :-
23744 depends_on_goal___2__1(A, B, C).
23745depends_on_goal___2__0__0__1([A|B], C, D, E) :-
23746 ( A=suspension(_, active, _, F, G),
23747 F==C,
23748 ground(D),
23749 nb_getval('$chr_store_multi_hash_chr_translate____final_answer_pattern___2-1',
23750 H),
23751 lookup_ht(H, D, I),
23752 member(J, I),
23753 J=suspension(_, active, _, _, _)
23754 -> setarg(2, A, removed),
23755 ( nb_getval('$chr_store_multi_hash_chr_translate____depends_on___2-1',
23756 K),
23757 delete_ht(K, C, A)
23758 ),
23759 nb_getval('$chr_store_multi_hash_chr_translate____depends_on___2-2',
23760 L),
23761 delete_ht(L, G, A),
23762 depends_on_goal___2__0__0__1(B, C, D, E)
23763 ; depends_on_goal___2__0__0__1(B, C, D, E)
23764 ).
23765depends_on_goal___2__0(A, B, C) :-
23766 depends_on_goal___2__1(A, B, C).
23767depends_on_goal___2__1(A, B, C) :-
23768 nb_getval('$chr_store_multi_hash_chr_translate____final_answer_pattern___2-1',
23769 D),
23770 lookup_ht(D, B, E),
23771 !,
23772 C=suspension(F, not_stored_yet, t, A, B),
23773 'chr gen_id'(F),
23774 depends_on_goal___2__1__0__2(E, A, B, C).
23775depends_on_goal___2__1__0__2([], A, B, C) :-
23776 depends_on_goal___2__2(A, B, C).
23777depends_on_goal___2__1__0__2([A|B], C, D, E) :-
23778 ( A=suspension(_, active, _, F, G),
23779 F==D,
23780 H=t(310, E, A),
23781 '$novel_production'(E, H),
23782 '$novel_production'(A, H)
23783 -> '$extend_history'(E, H),
23784 arg(2, E, I),
23785 setarg(2, E, active),
23786 ( I==not_stored_yet
23787 -> nb_getval('$chr_store_multi_hash_chr_translate____depends_on_goal___2-2',
23788 J),
23789 insert_ht(J, D, E)
23790 ; true
23791 ),
23792 C=odom([_|K], _),
23793 G=odom([], L),
23794 M=odom(K, L),
23795 call_pattern(M),
23796 depends_on(C, M),
23797 ( E=suspension(_, active, _, _, _)
23798 -> setarg(2, E, inactive),
23799 depends_on_goal___2__1__0__2(B, C, D, E)
23800 ; true
23801 )
23802 ; depends_on_goal___2__1__0__2(B, C, D, E)
23803 ).
23804depends_on_goal___2__1(A, B, C) :-
23805 C=suspension(D, not_stored_yet, t, A, B),
23806 'chr gen_id'(D),
23807 depends_on_goal___2__2(A, B, C).
23808depends_on_goal___2__2(_, A, B) :-
23809 arg(2, B, C),
23810 setarg(2, B, active),
23811 ( C==not_stored_yet
23812 -> nb_getval('$chr_store_multi_hash_chr_translate____depends_on_goal___2-2',
23813 D),
23814 insert_ht(D, A, B)
23815 ; true
23816 ).
23817ai_observed_internal(A, B) :-
23818 nb_getval('$chr_store_multi_hash_chr_translate____ai_not_observed_internal___2-12',
23819 C),
23820 lookup_ht(C, k(A, B), D),
23821 !,
23822 ai_observed_internal___2__0__0__1(D, A, B).
23823ai_observed_internal___2__0__0__1([], A, B) :-
23824 ai_observed_internal___2__1(A, B).
23825ai_observed_internal___2__0__0__1([A|B], C, D) :-
23826 ( A=suspension(_, active, _, E, F),
23827 E==C,
23828 F==D
23829 -> setarg(2, A, removed),
23830 ( arg(3, A, G),
23831 ( var(G)
23832 -> nb_getval('$chr_store_global_ground_chr_translate____ai_not_observed_internal___2',
23833 H),
23834 H=[_|I],
23835 b_setval('$chr_store_global_ground_chr_translate____ai_not_observed_internal___2',
23836 I),
23837 ( I=[J|_]
23838 -> setarg(3, J, _)
23839 ; true
23840 )
23841 ; G=[_, _|I],
23842 setarg(2, G, I),
23843 ( I=[J|_]
23844 -> setarg(3, J, G)
23845 ; true
23846 )
23847 )
23848 ),
23849 nb_getval('$chr_store_multi_hash_chr_translate____ai_not_observed_internal___2-12',
23850 K),
23851 delete_ht(K, k(C, D), A),
23852 ai_observed_internal___2__0__0__1(B, C, D)
23853 ; ai_observed_internal___2__0__0__1(B, C, D)
23854 ).
23855ai_observed_internal(A, B) :-
23856 ai_observed_internal___2__1(A, B).
23857ai_observed_internal___2__1(A, B) :-
23858 nb_getval('$chr_store_multi_hash_chr_translate____ai_observed_internal___2-12',
23859 C),
23860 lookup_ht(C, k(A, B), D),
23861 member(E, D),
23862 E=suspension(_, active, _, _, _),
23863 !.
23864ai_observed_internal___2__1(_, _) :-
23865 nb_getval('$chr_store_global_ground_chr_translate____ai_observation_gather_results___0',
23866 A),
23867 member(B, A),
23868 B=suspension(_, active, _),
23869 !.
23870ai_observed_internal___2__1(A, B) :-
23871 C=suspension(D, active, _, A, B),
23872 'chr gen_id'(D),
23873 nb_getval('$chr_store_global_ground_chr_translate____ai_observed_internal___2',
23874 E),
23875 F=[C|E],
23876 b_setval('$chr_store_global_ground_chr_translate____ai_observed_internal___2',
23877 F),
23878 ( E=[G|_]
23879 -> setarg(3, G, F)
23880 ; true
23881 ),
23882 nb_getval('$chr_store_multi_hash_chr_translate____ai_observed_internal___2-12',
23883 H),
23884 insert_ht(H, k(A, B), C).
23885ai_not_observed_internal(A, B) :-
23886 nb_getval('$chr_store_multi_hash_chr_translate____ai_observed_internal___2-12',
23887 C),
23888 lookup_ht(C, k(A, B), D),
23889 member(E, D),
23890 E=suspension(_, active, _, _, _),
23891 !.
23892ai_not_observed_internal(A, B) :-
23893 nb_getval('$chr_store_multi_hash_chr_translate____ai_not_observed_internal___2-12',
23894 C),
23895 lookup_ht(C, k(A, B), D),
23896 member(E, D),
23897 E=suspension(_, active, _, _, _),
23898 !.
23899ai_not_observed_internal(A, B) :-
23900 nb_getval('$chr_store_global_ground_chr_translate____ai_observation_gather_results___0',
23901 C),
23902 member(D, C),
23903 D=suspension(_, active, _),
23904 !,
23905 ai_not_observed(A, B).
23906ai_not_observed_internal(A, B) :-
23907 C=suspension(D, active, _, A, B),
23908 'chr gen_id'(D),
23909 nb_getval('$chr_store_global_ground_chr_translate____ai_not_observed_internal___2',
23910 E),
23911 F=[C|E],
23912 b_setval('$chr_store_global_ground_chr_translate____ai_not_observed_internal___2',
23913 F),
23914 ( E=[G|_]
23915 -> setarg(3, G, F)
23916 ; true
23917 ),
23918 nb_getval('$chr_store_multi_hash_chr_translate____ai_not_observed_internal___2-12',
23919 H),
23920 insert_ht(H, k(A, B), C).
23921ai_not_observed(A, B) :-
23922 ai_not_observed___2__0(A, B, _).
23923ai_not_observed___2__0(A, B, C) :-
23924 nb_getval('$chr_store_multi_hash_chr_translate____stored___3-123', D),
23925 lookup_ht(D, k(A, B, yes), E),
23926 !,
23927 C=suspension(F, not_stored_yet, A, B),
23928 'chr gen_id'(F),
23929 ai_not_observed___2__0__0__1(E, A, B, C).
23930ai_not_observed___2__0__0__1([], A, B, C) :-
23931 ai_not_observed___2__1(A, B, C).
23932ai_not_observed___2__0__0__1([A|B], C, D, E) :-
23933 ( A=suspension(_, active, F, G, H),
23934 F==C,
23935 G==D,
23936 H=yes,
23937 ( ground(C),
23938 nb_getval('$chr_store_multi_hash_chr_translate____stored_complete___3-1',
23939 I),
23940 lookup_ht(I, C, J)
23941 ),
23942 member(K, J),
23943 K=suspension(_, active, _, _, L, M),
23944 D<L
23945 -> ( setarg(2, A, removed),
23946 nb_getval('$chr_store_multi_hash_chr_translate____stored___3-13',
23947 N),
23948 delete_ht(N, k(C, yes), A),
23949 nb_getval('$chr_store_multi_hash_chr_translate____stored___3-123',
23950 O),
23951 delete_ht(O, k(C, D, yes), A)
23952 ),
23953 setarg(2, K, removed),
23954 ( nb_getval('$chr_store_multi_hash_chr_translate____stored_complete___3-13',
23955 P),
23956 delete_ht(P, k(C, M), K)
23957 ),
23958 nb_getval('$chr_store_multi_hash_chr_translate____stored_complete___3-1',
23959 Q),
23960 delete_ht(Q, C, K),
23961 arg(2, E, R),
23962 setarg(2, E, active),
23963 ( R==not_stored_yet
23964 -> nb_getval('$chr_store_multi_hash_chr_translate____ai_not_observed___2-12',
23965 S),
23966 insert_ht(S, k(C, D), E)
23967 ; true
23968 ),
23969 T is M-1,
23970 stored(C, D, maybe),
23971 stored_complete(C, L, T),
23972 ( E=suspension(_, active, _, _)
23973 -> setarg(2, E, inactive),
23974 ai_not_observed___2__0__0__1(B, C, D, E)
23975 ; true
23976 )
23977 ; ai_not_observed___2__0__0__1(B, C, D, E)
23978 ).
23979ai_not_observed___2__0(A, B, C) :-
23980 C=suspension(D, not_stored_yet, A, B),
23981 'chr gen_id'(D),
23982 ai_not_observed___2__1(A, B, C).
23983ai_not_observed___2__1(A, B, C) :-
23984 arg(2, C, D),
23985 setarg(2, C, active),
23986 ( D==not_stored_yet
23987 -> nb_getval('$chr_store_multi_hash_chr_translate____ai_not_observed___2-12',
23988 E),
23989 insert_ht(E, k(A, B), C)
23990 ; true
23991 ).
23992ai_is_observed(A, B) :-
23993 nb_getval('$chr_store_multi_hash_chr_translate____ai_not_observed___2-12',
23994 C),
23995 lookup_ht(C, k(A, B), D),
23996 member(E, D),
23997 E=suspension(_, active, _, _),
23998 !,
23999 fail.
24000ai_is_observed(_, _).
24001depends_on_as(A, B, C) :-
24002 depends_on_as___3__0(A, B, C, _).
24003depends_on_as___3__0(A, B, C, D) :-
24004 nb_getval('$chr_store_multi_hash_chr_translate____final_answer_pattern___2-1',
24005 E),
24006 lookup_ht(E, B, F),
24007 !,
24008 D=suspension(G, not_stored_yet, t, A, B, C),
24009 'chr gen_id'(G),
24010 depends_on_as___3__0__0__1(F, A, B, C, D).
24011depends_on_as___3__0__0__1([], A, B, C, D) :-
24012 depends_on_as___3__1(A, B, C, D).
24013depends_on_as___3__0__0__1([A|B], C, D, E, F) :-
24014 ( A=suspension(_, active, _, G, H),
24015 G==D,
24016 nb_getval('$chr_store_multi_hash_chr_translate____final_answer_pattern___2-1',
24017 I),
24018 lookup_ht(I, E, J)
24019 -> depends_on_as___3__0__1__1(J,
24020 H,
24021 A,
24022 B,
24023 C,
24024 D,
24025 E,
24026 F)
24027 ; depends_on_as___3__0__0__1(B, C, D, E, F)
24028 ).
24029depends_on_as___3__0__1__1([], _, _, A, B, C, D, E) :-
24030 depends_on_as___3__0__0__1(A, B, C, D, E).
24031depends_on_as___3__0__1__1([A|B], C, D, E, F, G, H, I) :-
24032 ( A=suspension(_, active, _, J, K),
24033 A\==D,
24034 J==H,
24035 L=t(317, I, D, A),
24036 '$novel_production'(I, L),
24037 '$novel_production'(D, L),
24038 '$novel_production'(A, L)
24039 -> '$extend_history'(I, L),
24040 arg(2, I, M),
24041 setarg(2, I, active),
24042 ( M==not_stored_yet
24043 -> nb_getval('$chr_store_multi_hash_chr_translate____depends_on_as___3-3',
24044 N),
24045 insert_ht(N, H, I),
24046 nb_getval('$chr_store_multi_hash_chr_translate____depends_on_as___3-2',
24047 O),
24048 insert_ht(O, G, I)
24049 ; true
24050 ),
24051 ai_observation_lub(C, K, P),
24052 final_answer_pattern(F, P),
24053 ( I=suspension(_, active, _, _, _, _)
24054 -> setarg(2, I, inactive),
24055 depends_on_as___3__0__1__1(B,
24056 C,
24057 D,
24058 E,
24059 F,
24060 G,
24061 H,
24062 I)
24063 ; true
24064 )
24065 ; depends_on_as___3__0__1__1(B,
24066 C,
24067 D,
24068 E,
24069 F,
24070 G,
24071 H,
24072 I)
24073 ).
24074depends_on_as___3__0(A, B, C, D) :-
24075 D=suspension(E, not_stored_yet, t, A, B, C),
24076 'chr gen_id'(E),
24077 depends_on_as___3__1(A, B, C, D).
24078depends_on_as___3__1(_, A, B, C) :-
24079 arg(2, C, D),
24080 setarg(2, C, active),
24081 ( D==not_stored_yet
24082 -> nb_getval('$chr_store_multi_hash_chr_translate____depends_on_as___3-3',
24083 E),
24084 insert_ht(E, B, C),
24085 nb_getval('$chr_store_multi_hash_chr_translate____depends_on_as___3-2',
24086 F),
24087 insert_ht(F, A, C)
24088 ; true
24089 ).
24090ai_observation_gather_results :-
24091 ai_observation_gather_results___0__0(_).
24092ai_observation_gather_results___0__0(A) :-
24093 nb_getval('$chr_store_global_ground_chr_translate____ai_observed_internal___2',
24094 B),
24095 !,
24096 ai_observation_gather_results___0__0__0__1(B, A).
24097ai_observation_gather_results___0__0__0__1([], A) :-
24098 ai_observation_gather_results___0__1(A).
24099ai_observation_gather_results___0__0__0__1([A|B], C) :-
24100 ( A=suspension(_, active, _, D, E)
24101 -> setarg(2, A, removed),
24102 ( arg(3, A, F),
24103 ( var(F)
24104 -> nb_getval('$chr_store_global_ground_chr_translate____ai_observed_internal___2',
24105 G),
24106 G=[_|H],
24107 b_setval('$chr_store_global_ground_chr_translate____ai_observed_internal___2',
24108 H),
24109 ( H=[I|_]
24110 -> setarg(3, I, _)
24111 ; true
24112 )
24113 ; F=[_, _|H],
24114 setarg(2, F, H),
24115 ( H=[I|_]
24116 -> setarg(3, I, F)
24117 ; true
24118 )
24119 )
24120 ),
24121 nb_getval('$chr_store_multi_hash_chr_translate____ai_observed_internal___2-12',
24122 J),
24123 delete_ht(J, k(D, E), A),
24124 ai_observation_gather_results___0__0__0__1(B, C)
24125 ; ai_observation_gather_results___0__0__0__1(B, C)
24126 ).
24127ai_observation_gather_results___0__0(A) :-
24128 ai_observation_gather_results___0__1(A).
24129ai_observation_gather_results___0__1(A) :-
24130 nb_getval('$chr_store_global_ground_chr_translate____ai_not_observed_internal___2',
24131 B),
24132 !,
24133 A=suspension(C, not_stored_yet, _),
24134 'chr gen_id'(C),
24135 ai_observation_gather_results___0__1__0__2(B, A).
24136ai_observation_gather_results___0__1__0__2([], A) :-
24137 ai_observation_gather_results___0__2(A).
24138ai_observation_gather_results___0__1__0__2([A|B], C) :-
24139 ( A=suspension(_, active, _, D, E)
24140 -> setarg(2, A, removed),
24141 ( arg(3, A, F),
24142 ( var(F)
24143 -> nb_getval('$chr_store_global_ground_chr_translate____ai_not_observed_internal___2',
24144 G),
24145 G=[_|H],
24146 b_setval('$chr_store_global_ground_chr_translate____ai_not_observed_internal___2',
24147 H),
24148 ( H=[I|_]
24149 -> setarg(3, I, _)
24150 ; true
24151 )
24152 ; F=[_, _|H],
24153 setarg(2, F, H),
24154 ( H=[I|_]
24155 -> setarg(3, I, F)
24156 ; true
24157 )
24158 )
24159 ),
24160 nb_getval('$chr_store_multi_hash_chr_translate____ai_not_observed_internal___2-12',
24161 J),
24162 delete_ht(J, k(D, E), A),
24163 arg(2, C, K),
24164 setarg(2, C, active),
24165 ( K==not_stored_yet
24166 -> nb_getval('$chr_store_global_ground_chr_translate____ai_observation_gather_results___0',
24167 L),
24168 M=[C|L],
24169 b_setval('$chr_store_global_ground_chr_translate____ai_observation_gather_results___0',
24170 M),
24171 ( L=[N|_]
24172 -> setarg(3, N, M)
24173 ; true
24174 )
24175 ; true
24176 ),
24177 ai_not_observed(D, E),
24178 ( C=suspension(_, active, _)
24179 -> setarg(2, C, inactive),
24180 ai_observation_gather_results___0__1__0__2(B, C)
24181 ; true
24182 )
24183 ; ai_observation_gather_results___0__1__0__2(B, C)
24184 ).
24185ai_observation_gather_results___0__1(A) :-
24186 A=suspension(B, not_stored_yet, _),
24187 'chr gen_id'(B),
24188 ai_observation_gather_results___0__2(A).
24189ai_observation_gather_results___0__2(A) :-
24190 ( var(A)
24191 -> true
24192 ; arg(2, A, B),
24193 setarg(2, A, removed),
24194 ( B==not_stored_yet
24195 -> true
24196 ; arg(3, A, C),
24197 ( var(C)
24198 -> nb_getval('$chr_store_global_ground_chr_translate____ai_observation_gather_results___0',
24199 D),
24200 D=[_|E],
24201 b_setval('$chr_store_global_ground_chr_translate____ai_observation_gather_results___0',
24202 E),
24203 ( E=[F|_]
24204 -> setarg(3, F, _)
24205 ; true
24206 )
24207 ; C=[_, _|E],
24208 setarg(2, C, E),
24209 ( E=[F|_]
24210 -> setarg(3, F, C)
24211 ; true
24212 )
24213 )
24214 )
24215 ).
24216ai_observation_memo_simplification_rest_heads(A, B, C) :-
24217 nb_getval('$chr_store_multi_hash_chr_translate____ai_observation_memoed_simplification_rest_heads___3-12',
24218 D),
24219 lookup_ht(D, k(A, B), E),
24220 member(F, E),
24221 F=suspension(_, active, _, _, G),
24222 !,
24223 C=G.
24224ai_observation_memo_simplification_rest_heads(A, B, C) :-
24225 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-12',
24226 D),
24227 lookup_ht(D, k(A, B), E),
24228 member(F, E),
24229 F=suspension(_, active, _, _, _, _, G, H, _),
24230 nb_getval('$chr_store_multi_hash_chr_translate____rule___2-1', I),
24231 lookup_ht(I, G, J),
24232 member(K, J),
24233 K=suspension(_, active, _, _, _, L),
24234 nb_getval('$chr_store_global_ground_chr_translate____abstract_constraints___1',
24235 M),
24236 member(N, M),
24237 N=suspension(_, active, _, O),
24238 !,
24239 L=pragma(rule(P, Q, _, _), ids(R, _), _, _, _),
24240 once(select2(H, _, R, P, _, S)),
24241 ai_observation_abstract_constraints(S, O, T),
24242 ai_observation_abstract_constraints(Q, O, U),
24243 append(T, U, V),
24244 sort(V, C),
24245 ai_observation_memoed_simplification_rest_heads(A, B, C).
24246ai_observation_memo_simplification_rest_heads(_, _, _) :-
24247 fail.
24248ai_observation_memoed_simplification_rest_heads(A, B, C) :-
24249 D=suspension(E, active, A, B, C),
24250 'chr gen_id'(E),
24251 nb_getval('$chr_store_multi_hash_chr_translate____ai_observation_memoed_simplification_rest_heads___3-12',
24252 F),
24253 insert_ht(F, k(A, B), D).
24254ai_observation_memo_propagation_rest_heads(A, B, C) :-
24255 nb_getval('$chr_store_multi_hash_chr_translate____ai_observation_memoed_propagation_rest_heads___3-12',
24256 D),
24257 lookup_ht(D, k(A, B), E),
24258 member(F, E),
24259 F=suspension(_, active, _, _, G),
24260 !,
24261 C=G.
24262ai_observation_memo_propagation_rest_heads(A, B, C) :-
24263 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-12',
24264 D),
24265 lookup_ht(D, k(A, B), E),
24266 member(F, E),
24267 F=suspension(_, active, _, _, _, _, G, H, _),
24268 nb_getval('$chr_store_multi_hash_chr_translate____rule___2-1', I),
24269 lookup_ht(I, G, J),
24270 member(K, J),
24271 K=suspension(_, active, _, _, _, L),
24272 nb_getval('$chr_store_global_ground_chr_translate____abstract_constraints___1',
24273 M),
24274 member(N, M),
24275 N=suspension(_, active, _, O),
24276 !,
24277 L=pragma(rule(P, Q, _, _), ids(_, R), _, _, _),
24278 once(select2(H, _, R, Q, _, S)),
24279 ai_observation_abstract_constraints(S, O, T),
24280 ai_observation_abstract_constraints(P, O, U),
24281 append(T, U, V),
24282 sort(V, C),
24283 ai_observation_memoed_propagation_rest_heads(A, B, C).
24284ai_observation_memo_propagation_rest_heads(_, _, _) :-
24285 fail.
24286ai_observation_memoed_propagation_rest_heads(A, B, C) :-
24287 D=suspension(E, active, A, B, C),
24288 'chr gen_id'(E),
24289 nb_getval('$chr_store_multi_hash_chr_translate____ai_observation_memoed_propagation_rest_heads___3-12',
24290 F),
24291 insert_ht(F, k(A, B), D).
24292ai_observation_memoed_abstract_goal(A, B) :-
24293 C=suspension(D, active, A, B),
24294 'chr gen_id'(D),
24295 nb_getval('$chr_store_multi_hash_chr_translate____ai_observation_memoed_abstract_goal___2-1',
24296 E),
24297 insert_ht(E, A, C).
24298ai_observation_memo_abstract_goal(A, B) :-
24299 nb_getval('$chr_store_multi_hash_chr_translate____ai_observation_memoed_abstract_goal___2-1',
24300 C),
24301 lookup_ht(C, A, D),
24302 member(E, D),
24303 E=suspension(_, active, _, F),
24304 !,
24305 B=F.
24306ai_observation_memo_abstract_goal(A, B) :-
24307 nb_getval('$chr_store_multi_hash_chr_translate____rule___2-1', C),
24308 lookup_ht(C, A, D),
24309 member(E, D),
24310 E=suspension(_, active, _, _, _, F),
24311 nb_getval('$chr_store_global_ground_chr_translate____abstract_constraints___1',
24312 G),
24313 member(H, G),
24314 H=suspension(_, active, _, I),
24315 !,
24316 F=pragma(rule(J, K, L, M), _, _, _, _),
24317 ai_observation_abstract_goal_(J,
24318 K,
24319 L,
24320 M,
24321 I,
24322 N),
24323 B=N,
24324 ai_observation_memoed_abstract_goal(A, N).
24325ai_observation_memo_abstract_goal(A, B) :-
24326 C=suspension(D, active, _, A, B),
24327 'chr gen_id'(D),
24328 nb_getval('$chr_store_global_ground_chr_translate____ai_observation_memo_abstract_goal___2',
24329 E),
24330 F=[C|E],
24331 b_setval('$chr_store_global_ground_chr_translate____ai_observation_memo_abstract_goal___2',
24332 F),
24333 ( E=[G|_]
24334 -> setarg(3, G, F)
24335 ; true
24336 ).
24337partial_wake_analysis :-
24338 partial_wake_analysis___0__0(_).
24339partial_wake_analysis___0__0(A) :-
24340 nb_getval('$chr_store_global_ground_chr_translate____occurrence___5',
24341 B),
24342 !,
24343 A=suspension(C, not_stored_yet, t, _),
24344 'chr gen_id'(C),
24345 partial_wake_analysis___0__0__0__1(B, A).
24346partial_wake_analysis___0__0__0__1([], A) :-
24347 partial_wake_analysis___0__1(A).
24348partial_wake_analysis___0__0__0__1([A|B], C) :-
24349 ( A=suspension(_, active, _, _, D, _, E, F, G),
24350 nb_getval('$chr_store_multi_hash_chr_translate____constraint_mode___2-1',
24351 H),
24352 lookup_ht(H, D, I)
24353 -> partial_wake_analysis___0__0__1__1(I,
24354 D,
24355 E,
24356 F,
24357 G,
24358 A,
24359 B,
24360 C)
24361 ; partial_wake_analysis___0__0__0__1(B, C)
24362 ).
24363partial_wake_analysis___0__0__1__1([], _, _, _, _, _, A, B) :-
24364 partial_wake_analysis___0__0__0__1(A, B).
24365partial_wake_analysis___0__0__1__1([A|B], C, D, E, F, G, H, I) :-
24366 ( A=suspension(_, active, _, _, J, K),
24367 J==C,
24368 nb_getval('$chr_store_multi_hash_chr_translate____rule___2-1', L),
24369 lookup_ht(L, D, M)
24370 -> partial_wake_analysis___0__0__2__1(M,
24371 K,
24372 A,
24373 B,
24374 C,
24375 D,
24376 E,
24377 F,
24378 G,
24379 H,
24380 I)
24381 ; partial_wake_analysis___0__0__1__1(B,
24382 C,
24383 D,
24384 E,
24385 F,
24386 G,
24387 H,
24388 I)
24389 ).
24390partial_wake_analysis___0__0__2__1([], _, _, A, B, C, D, E, F, G, H) :-
24391 partial_wake_analysis___0__0__1__1(A,
24392 B,
24393 C,
24394 D,
24395 E,
24396 F,
24397 G,
24398 H).
24399partial_wake_analysis___0__0__2__1([A|B], C, D, E, F, G, H, I, J, K, L) :-
24400 ( A=suspension(_, active, _, _, M, N),
24401 M==G,
24402 O=t(330, L, J, A, D),
24403 '$novel_production'(L, O),
24404 '$novel_production'(J, O),
24405 '$novel_production'(A, O),
24406 '$novel_production'(D, O)
24407 -> '$extend_history'(L, O),
24408 arg(2, L, P),
24409 setarg(2, L, active),
24410 ( P==not_stored_yet
24411 -> nb_getval('$chr_store_global_ground_chr_translate____partial_wake_analysis___0',
24412 Q),
24413 R=[L|Q],
24414 b_setval('$chr_store_global_ground_chr_translate____partial_wake_analysis___0',
24415 R),
24416 ( Q=[S|_]
24417 -> setarg(4, S, R)
24418 ; true
24419 )
24420 ; true
24421 ),
24422 N=pragma(rule(T, U, V, _), _, _, _, _),
24423 ( is_passive(G, H)
24424 -> true
24425 ; I==simplification
24426 -> select(W, T, _),
24427 W=..[_|X],
24428 term_variables(V, Y),
24429 partial_wake_args(X, C, Y, F)
24430 ; select(W, U, _),
24431 W=..[_|X],
24432 term_variables(V, Y),
24433 partial_wake_args(X, C, Y, F)
24434 ),
24435 ( L=suspension(_, active, _, _)
24436 -> setarg(2, L, inactive),
24437 partial_wake_analysis___0__0__2__1(B,
24438 C,
24439 D,
24440 E,
24441 F,
24442 G,
24443 H,
24444 I,
24445 J,
24446 K,
24447 L)
24448 ; true
24449 )
24450 ; partial_wake_analysis___0__0__2__1(B,
24451 C,
24452 D,
24453 E,
24454 F,
24455 G,
24456 H,
24457 I,
24458 J,
24459 K,
24460 L)
24461 ).
24462partial_wake_analysis___0__0(A) :-
24463 A=suspension(B, not_stored_yet, t, _),
24464 'chr gen_id'(B),
24465 partial_wake_analysis___0__1(A).
24466partial_wake_analysis___0__1(A) :-
24467 arg(2, A, B),
24468 setarg(2, A, active),
24469 ( B==not_stored_yet
24470 -> nb_getval('$chr_store_global_ground_chr_translate____partial_wake_analysis___0',
24471 C),
24472 D=[A|C],
24473 b_setval('$chr_store_global_ground_chr_translate____partial_wake_analysis___0',
24474 D),
24475 ( C=[E|_]
24476 -> setarg(4, E, D)
24477 ; true
24478 )
24479 ; true
24480 ).
24481no_partial_wake(A) :-
24482 nb_getval('$chr_store_multi_hash_chr_translate____no_partial_wake___1-1',
24483 B),
24484 lookup_ht(B, A, C),
24485 member(D, C),
24486 D=suspension(_, active, _),
24487 !.
24488no_partial_wake(A) :-
24489 B=suspension(C, active, A),
24490 'chr gen_id'(C),
24491 nb_getval('$chr_store_multi_hash_chr_translate____no_partial_wake___1-1',
24492 D),
24493 insert_ht(D, A, B).
24494wakes_partially(A) :-
24495 nb_getval('$chr_store_multi_hash_chr_translate____no_partial_wake___1-1',
24496 B),
24497 lookup_ht(B, A, C),
24498 member(D, C),
24499 D=suspension(_, active, _),
24500 !,
24501 fail.
24502wakes_partially(_).
24503phase_end(A) :-
24504 phase_end___1__0(A, _).
24505phase_end___1__0(A, B) :-
24506 nb_getval('$chr_store_multi_hash_chr_translate____delay_phase_end___2-1',
24507 C),
24508 lookup_ht(C, A, D),
24509 !,
24510 B=suspension(E, not_stored_yet, A),
24511 'chr gen_id'(E),
24512 phase_end___1__0__0__1(D, A, B).
24513phase_end___1__0__0__1([], A, B) :-
24514 phase_end___1__1(A, B).
24515phase_end___1__0__0__1([A|B], C, D) :-
24516 ( A=suspension(_, active, E, F),
24517 E==C
24518 -> setarg(2, A, removed),
24519 nb_getval('$chr_store_multi_hash_chr_translate____delay_phase_end___2-1',
24520 G),
24521 delete_ht(G, C, A),
24522 arg(2, D, H),
24523 setarg(2, D, active),
24524 ( H==not_stored_yet
24525 -> nb_getval('$chr_store_multi_hash_chr_translate____phase_end___1-1',
24526 I),
24527 insert_ht(I, C, D)
24528 ; true
24529 ),
24530 call(F),
24531 ( D=suspension(_, active, _)
24532 -> setarg(2, D, inactive),
24533 phase_end___1__0__0__1(B, C, D)
24534 ; true
24535 )
24536 ; phase_end___1__0__0__1(B, C, D)
24537 ).
24538phase_end___1__0(A, B) :-
24539 B=suspension(C, not_stored_yet, A),
24540 'chr gen_id'(C),
24541 phase_end___1__1(A, B).
24542phase_end___1__1(A, B) :-
24543 arg(2, B, C),
24544 setarg(2, B, active),
24545 ( C==not_stored_yet
24546 -> nb_getval('$chr_store_multi_hash_chr_translate____phase_end___1-1',
24547 D),
24548 insert_ht(D, A, B)
24549 ; true
24550 ).
24551delay_phase_end(A, B) :-
24552 nb_getval('$chr_store_multi_hash_chr_translate____phase_end___1-1', C),
24553 lookup_ht(C, A, D),
24554 member(E, D),
24555 E=suspension(_, active, _),
24556 !,
24557 call(B).
24558delay_phase_end(A, B) :-
24559 C=suspension(D, active, A, B),
24560 'chr gen_id'(D),
24561 nb_getval('$chr_store_multi_hash_chr_translate____delay_phase_end___2-1',
24562 E),
24563 insert_ht(E, A, C).
24564does_use_history(A, B) :-
24565 nb_getval('$chr_store_multi_hash_chr_translate____does_use_history___2-12',
24566 C),
24567 lookup_ht(C, k(A, B), D),
24568 member(E, D),
24569 E=suspension(_, active, _, _),
24570 !.
24571does_use_history(A, B) :-
24572 C=suspension(D, active, A, B),
24573 'chr gen_id'(D),
24574 nb_getval('$chr_store_multi_hash_chr_translate____does_use_history___2-1',
24575 E),
24576 insert_ht(E, A, C),
24577 nb_getval('$chr_store_multi_hash_chr_translate____does_use_history___2-12',
24578 F),
24579 insert_ht(F, k(A, B), C).
24580uses_history(A) :-
24581 nb_getval('$chr_store_multi_hash_chr_translate____does_use_history___2-1',
24582 B),
24583 lookup_ht(B, A, C),
24584 member(D, C),
24585 D=suspension(_, active, _, _),
24586 !.
24587uses_history(_) :-
24588 fail.
24589novel_production_call(A, B, C, D) :-
24590 nb_getval('$chr_store_multi_hash_chr_translate____does_use_history___2-12',
24591 E),
24592 lookup_ht(E, k(A, B), F),
24593 member(G, F),
24594 G=suspension(_, active, _, _),
24595 !,
24596 D=C.
24597novel_production_call(_, _, _, true).
24598does_use_field(A, B) :-
24599 nb_getval('$chr_store_multi_hash_chr_translate____does_use_field___2-12',
24600 C),
24601 lookup_ht(C, k(A, B), D),
24602 member(E, D),
24603 E=suspension(_, active, _, _),
24604 !.
24605does_use_field(A, B) :-
24606 C=suspension(D, active, A, B),
24607 'chr gen_id'(D),
24608 nb_getval('$chr_store_multi_hash_chr_translate____does_use_field___2-12',
24609 E),
24610 insert_ht(E, k(A, B), C).
24611uses_field(A, B) :-
24612 nb_getval('$chr_store_multi_hash_chr_translate____does_use_field___2-12',
24613 C),
24614 lookup_ht(C, k(A, B), D),
24615 member(E, D),
24616 E=suspension(_, active, _, _),
24617 !.
24618uses_field(_, _) :-
24619 fail.
24620uses_state(A, B) :-
24621 uses_state___2__0(A, B, _).
24622uses_state___2__0(A, B, _) :-
24623 nb_getval('$chr_store_multi_hash_chr_translate____uses_state___2-12',
24624 C),
24625 lookup_ht(C, k(A, B), D),
24626 member(E, D),
24627 E=suspension(_, active, _, _),
24628 !.
24629uses_state___2__0(A, B, C) :-
24630 nb_getval('$chr_store_global_ground_chr_translate____used_states_known___0',
24631 D),
24632 !,
24633 C=suspension(E, not_stored_yet, A, B),
24634 'chr gen_id'(E),
24635 uses_state___2__0__0__3(D, A, B, C).
24636uses_state___2__0__0__3([], A, B, C) :-
24637 uses_state___2__1(A, B, C).
24638uses_state___2__0__0__3([A|B], C, D, E) :-
24639 ( A=suspension(_, active, _),
24640 nb_getval('$chr_store_multi_hash_chr_translate____if_used_state___5-12',
24641 F),
24642 lookup_ht(F, k(C, D), G)
24643 -> uses_state___2__0__1__3(G,
24644 A,
24645 B,
24646 C,
24647 D,
24648 E)
24649 ; uses_state___2__0__0__3(B, C, D, E)
24650 ).
24651uses_state___2__0__1__3([], _, A, B, C, D) :-
24652 uses_state___2__0__0__3(A, B, C, D).
24653uses_state___2__0__1__3([A|B], C, D, E, F, G) :-
24654 ( A=suspension(_, active, _, H, I, J, _, K),
24655 H==E,
24656 I==F
24657 -> setarg(2, A, removed),
24658 ( arg(3, A, L),
24659 ( var(L)
24660 -> nb_getval('$chr_store_global_ground_chr_translate____if_used_state___5',
24661 M),
24662 M=[_|N],
24663 b_setval('$chr_store_global_ground_chr_translate____if_used_state___5',
24664 N),
24665 ( N=[O|_]
24666 -> setarg(3, O, _)
24667 ; true
24668 )
24669 ; L=[_, _|N],
24670 setarg(2, L, N),
24671 ( N=[O|_]
24672 -> setarg(3, O, L)
24673 ; true
24674 )
24675 )
24676 ),
24677 nb_getval('$chr_store_multi_hash_chr_translate____if_used_state___5-12',
24678 P),
24679 delete_ht(P, k(E, F), A),
24680 arg(2, G, Q),
24681 setarg(2, G, active),
24682 ( Q==not_stored_yet
24683 -> nb_getval('$chr_store_multi_hash_chr_translate____uses_state___2-12',
24684 R),
24685 insert_ht(R, k(E, F), G)
24686 ; true
24687 ),
24688 K=J,
24689 ( G=suspension(_, active, _, _)
24690 -> setarg(2, G, inactive),
24691 uses_state___2__0__1__3(B,
24692 C,
24693 D,
24694 E,
24695 F,
24696 G)
24697 ; true
24698 )
24699 ; uses_state___2__0__1__3(B,
24700 C,
24701 D,
24702 E,
24703 F,
24704 G)
24705 ).
24706uses_state___2__0(A, B, C) :-
24707 C=suspension(D, not_stored_yet, A, B),
24708 'chr gen_id'(D),
24709 uses_state___2__1(A, B, C).
24710uses_state___2__1(A, B, C) :-
24711 arg(2, C, D),
24712 setarg(2, C, active),
24713 ( D==not_stored_yet
24714 -> nb_getval('$chr_store_multi_hash_chr_translate____uses_state___2-12',
24715 E),
24716 insert_ht(E, k(A, B), C)
24717 ; true
24718 ).
24719if_used_state(A, B, C, D, E) :-
24720 nb_getval('$chr_store_global_ground_chr_translate____used_states_known___0',
24721 F),
24722 member(G, F),
24723 G=suspension(_, active, _),
24724 ( nb_getval('$chr_store_multi_hash_chr_translate____uses_state___2-12',
24725 H),
24726 lookup_ht(H, k(A, B), I),
24727 member(J, I),
24728 J=suspension(_, active, _, _),
24729 !,
24730 E=C
24731 ; !,
24732 E=D
24733 ).
24734if_used_state(A, B, C, D, E) :-
24735 F=suspension(G, active, _, A, B, C, D, E),
24736 'chr gen_id'(G),
24737 nb_getval('$chr_store_global_ground_chr_translate____if_used_state___5',
24738 H),
24739 I=[F|H],
24740 b_setval('$chr_store_global_ground_chr_translate____if_used_state___5',
24741 I),
24742 ( H=[J|_]
24743 -> setarg(3, J, I)
24744 ; true
24745 ),
24746 nb_getval('$chr_store_multi_hash_chr_translate____if_used_state___5-12',
24747 K),
24748 insert_ht(K, k(A, B), F).
24749used_states_known :-
24750 used_states_known___0__0(_).
24751used_states_known___0__0(A) :-
24752 nb_getval('$chr_store_global_ground_chr_translate____if_used_state___5',
24753 B),
24754 !,
24755 A=suspension(C, not_stored_yet, _),
24756 'chr gen_id'(C),
24757 used_states_known___0__0__0__1(B, A).
24758used_states_known___0__0__0__1([], A) :-
24759 used_states_known___0__1(A).
24760used_states_known___0__0__0__1([A|B], C) :-
24761 ( A=suspension(_, active, _, D, E, F, _, G),
24762 ( ground(D),
24763 ground(E)
24764 ),
24765 nb_getval('$chr_store_multi_hash_chr_translate____uses_state___2-12',
24766 H),
24767 lookup_ht(H, k(D, E), I),
24768 member(J, I),
24769 J=suspension(_, active, _, _)
24770 -> setarg(2, A, removed),
24771 ( arg(3, A, K),
24772 ( var(K)
24773 -> nb_getval('$chr_store_global_ground_chr_translate____if_used_state___5',
24774 L),
24775 L=[_|M],
24776 b_setval('$chr_store_global_ground_chr_translate____if_used_state___5',
24777 M),
24778 ( M=[N|_]
24779 -> setarg(3, N, _)
24780 ; true
24781 )
24782 ; K=[_, _|M],
24783 setarg(2, K, M),
24784 ( M=[N|_]
24785 -> setarg(3, N, K)
24786 ; true
24787 )
24788 )
24789 ),
24790 nb_getval('$chr_store_multi_hash_chr_translate____if_used_state___5-12',
24791 O),
24792 delete_ht(O, k(D, E), A),
24793 arg(2, C, P),
24794 setarg(2, C, active),
24795 ( P==not_stored_yet
24796 -> nb_getval('$chr_store_global_ground_chr_translate____used_states_known___0',
24797 Q),
24798 R=[C|Q],
24799 b_setval('$chr_store_global_ground_chr_translate____used_states_known___0',
24800 R),
24801 ( Q=[S|_]
24802 -> setarg(3, S, R)
24803 ; true
24804 )
24805 ; true
24806 ),
24807 G=F,
24808 ( C=suspension(_, active, _)
24809 -> setarg(2, C, inactive),
24810 used_states_known___0__0__0__1(B, C)
24811 ; true
24812 )
24813 ; used_states_known___0__0__0__1(B, C)
24814 ).
24815used_states_known___0__0(A) :-
24816 A=suspension(B, not_stored_yet, _),
24817 'chr gen_id'(B),
24818 used_states_known___0__1(A).
24819used_states_known___0__1(A) :-
24820 nb_getval('$chr_store_global_ground_chr_translate____if_used_state___5',
24821 B),
24822 !,
24823 used_states_known___0__1__0__2(B, A).
24824used_states_known___0__1__0__2([], A) :-
24825 used_states_known___0__2(A).
24826used_states_known___0__1__0__2([A|B], C) :-
24827 ( A=suspension(_, active, _, D, E, _, F, G)
24828 -> setarg(2, A, removed),
24829 ( arg(3, A, H),
24830 ( var(H)
24831 -> nb_getval('$chr_store_global_ground_chr_translate____if_used_state___5',
24832 I),
24833 I=[_|J],
24834 b_setval('$chr_store_global_ground_chr_translate____if_used_state___5',
24835 J),
24836 ( J=[K|_]
24837 -> setarg(3, K, _)
24838 ; true
24839 )
24840 ; H=[_, _|J],
24841 setarg(2, H, J),
24842 ( J=[K|_]
24843 -> setarg(3, K, H)
24844 ; true
24845 )
24846 )
24847 ),
24848 nb_getval('$chr_store_multi_hash_chr_translate____if_used_state___5-12',
24849 L),
24850 delete_ht(L, k(D, E), A),
24851 arg(2, C, M),
24852 setarg(2, C, active),
24853 ( M==not_stored_yet
24854 -> nb_getval('$chr_store_global_ground_chr_translate____used_states_known___0',
24855 N),
24856 O=[C|N],
24857 b_setval('$chr_store_global_ground_chr_translate____used_states_known___0',
24858 O),
24859 ( N=[P|_]
24860 -> setarg(3, P, O)
24861 ; true
24862 )
24863 ; true
24864 ),
24865 G=F,
24866 ( C=suspension(_, active, _)
24867 -> setarg(2, C, inactive),
24868 used_states_known___0__1__0__2(B, C)
24869 ; true
24870 )
24871 ; used_states_known___0__1__0__2(B, C)
24872 ).
24873used_states_known___0__1(A) :-
24874 used_states_known___0__2(A).
24875used_states_known___0__2(A) :-
24876 arg(2, A, B),
24877 setarg(2, A, active),
24878 ( B==not_stored_yet
24879 -> nb_getval('$chr_store_global_ground_chr_translate____used_states_known___0',
24880 C),
24881 D=[A|C],
24882 b_setval('$chr_store_global_ground_chr_translate____used_states_known___0',
24883 D),
24884 ( C=[E|_]
24885 -> setarg(3, E, D)
24886 ; true
24887 )
24888 ; true
24889 ).
24890stored_assertion(A) :-
24891 B=suspension(C, active, A),
24892 'chr gen_id'(C),
24893 nb_getval('$chr_store_multi_hash_chr_translate____stored_assertion___1-1',
24894 D),
24895 insert_ht(D, A, B).
24896never_stored_default(A, B) :-
24897 never_stored_default___2__0(A, B, _).
24898never_stored_default___2__0(A, B, C) :-
24899 nb_getval('$chr_store_global_ground_chr_translate____never_stored_rules___2',
24900 D),
24901 !,
24902 C=suspension(E, not_stored_yet, A, B),
24903 'chr gen_id'(E),
24904 never_stored_default___2__0__0__1(D, A, B, C).
24905never_stored_default___2__0__0__1([], A, B, C) :-
24906 never_stored_default___2__1(A, B, C).
24907never_stored_default___2__0__0__1([A|B], C, D, E) :-
24908 ( A=suspension(_, active, _, F, G),
24909 F=[H|I],
24910 H==C
24911 -> setarg(2, A, removed),
24912 arg(3, A, J),
24913 ( var(J)
24914 -> nb_getval('$chr_store_global_ground_chr_translate____never_stored_rules___2',
24915 K),
24916 K=[_|L],
24917 b_setval('$chr_store_global_ground_chr_translate____never_stored_rules___2',
24918 L),
24919 ( L=[M|_]
24920 -> setarg(3, M, _)
24921 ; true
24922 )
24923 ; J=[_, _|L],
24924 setarg(2, J, L),
24925 ( L=[M|_]
24926 -> setarg(3, M, J)
24927 ; true
24928 )
24929 ),
24930 arg(2, E, N),
24931 setarg(2, E, active),
24932 ( N==not_stored_yet
24933 -> nb_getval('$chr_store_multi_hash_chr_translate____never_stored_default___2-1',
24934 O),
24935 insert_ht(O, C, E)
24936 ; true
24937 ),
24938 C=P/Q,
24939 functor(R, P, Q),
24940 inc_rule_count(S),
24941 T=pragma(rule([R], [], true, D), ids([0], []), [], no, S),
24942 G=[T|U],
24943 never_stored_rules(I, U),
24944 ( E=suspension(_, active, _, _)
24945 -> setarg(2, E, inactive),
24946 never_stored_default___2__0__0__1(B, C, D, E)
24947 ; true
24948 )
24949 ; never_stored_default___2__0__0__1(B, C, D, E)
24950 ).
24951never_stored_default___2__0(A, B, C) :-
24952 C=suspension(D, not_stored_yet, A, B),
24953 'chr gen_id'(D),
24954 never_stored_default___2__1(A, B, C).
24955never_stored_default___2__1(A, _, B) :-
24956 arg(2, B, C),
24957 setarg(2, B, active),
24958 ( C==not_stored_yet
24959 -> nb_getval('$chr_store_multi_hash_chr_translate____never_stored_default___2-1',
24960 D),
24961 insert_ht(D, A, B)
24962 ; true
24963 ).
24964never_stored_rules([], A) :-
24965 !,
24966 A=[].
24967never_stored_rules([A|B], C) :-
24968 nb_getval('$chr_store_multi_hash_chr_translate____never_stored_default___2-1',
24969 D),
24970 lookup_ht(D, A, E),
24971 member(F, E),
24972 F=suspension(_, active, _, G),
24973 !,
24974 A=H/I,
24975 functor(J, H, I),
24976 inc_rule_count(K),
24977 L=pragma(rule([J], [], true, G), ids([0], []), [], no, K),
24978 C=[L|M],
24979 never_stored_rules(B, M).
24980never_stored_rules([_|A], B) :-
24981 !,
24982 never_stored_rules(A, B).
24983never_stored_rules(A, B) :-
24984 C=suspension(D, active, _, A, B),
24985 'chr gen_id'(D),
24986 nb_getval('$chr_store_global_ground_chr_translate____never_stored_rules___2',
24987 E),
24988 F=[C|E],
24989 b_setval('$chr_store_global_ground_chr_translate____never_stored_rules___2',
24990 F),
24991 ( E=[G|_]
24992 -> setarg(3, G, F)
24993 ; true
24994 ).
24995check_storedness_assertion(A) :-
24996 nb_getval('$chr_store_multi_hash_chr_translate____stored_assertion___1-1',
24997 B),
24998 lookup_ht(B, A, C),
24999 member(D, C),
25000 D=suspension(_, active, _),
25001 !,
25002 setarg(2, D, removed),
25003 nb_getval('$chr_store_multi_hash_chr_translate____stored_assertion___1-1',
25004 E),
25005 delete_ht(E, A, D),
25006 ( is_stored(A)
25007 -> true
25008 ; chr_warning(assertion_failed,
25009 'Constraint ~w is not stored. However, it was asserted to be stored.\n',
25010 [A])
25011 ).
25012check_storedness_assertion(A) :-
25013 nb_getval('$chr_store_multi_hash_chr_translate____never_stored_default___2-1',
25014 B),
25015 lookup_ht(B, A, C),
25016 member(D, C),
25017 D=suspension(_, active, _, _),
25018 !,
25019 ( is_finally_stored(A)
25020 -> chr_warning(assertion_failed,
25021 'Constraint ~w is stored. However, it was asserted not to be stored.\n',
25022 [A])
25023 ; is_stored(A)
25024 -> chr_warning(assertion_failed,
25025 'Constraint ~w is temporarily stored. However, it was asserted not to be stored.\n',
25026 [A])
25027 ; true
25028 ).
25029check_storedness_assertion(A) :-
25030 ( is_finally_stored(A)
25031 -> chr_warning(assertion_failed,
25032 'Constraint ~w is stored. However, it was asserted not to be stored.\n',
25033 [A])
25034 ; is_stored(A)
25035 -> chr_warning(assertion_failed,
25036 'Constraint ~w is temporarily stored. However, it was asserted not to be stored.\n',
25037 [A])
25038 ; true
25039 ).
25040continuation_occurrence(A, B, C) :-
25041 D=suspension(E, active, A, B, C),
25042 'chr gen_id'(E),
25043 nb_getval('$chr_store_multi_hash_chr_translate____continuation_occurrence___3-12',
25044 F),
25045 insert_ht(F, k(A, B), D).
25046get_success_continuation_occurrence(A, B, C) :-
25047 nb_getval('$chr_store_multi_hash_chr_translate____continuation_occurrence___3-12',
25048 D),
25049 lookup_ht(D, k(A, B), E),
25050 member(F, E),
25051 F=suspension(_, active, _, _, G),
25052 !,
25053 C=G.
25054get_success_continuation_occurrence(A, B, _) :-
25055 chr_error(internal,
25056 'Success continuation not found for ~w.\n',
25057 [A:B]).
25058skip_to_next_id(A, B) :-
25059 skip_to_next_id___2__0(A, B, _).
25060skip_to_next_id___2__0(A, B, _) :-
25061 nb_getval('$chr_store_multi_hash_chr_translate____skip_to_next_id___2-12',
25062 C),
25063 lookup_ht(C, k(A, B), D),
25064 member(E, D),
25065 E=suspension(_, active, _, _, _),
25066 !.
25067skip_to_next_id___2__0(A, B, C) :-
25068 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-12',
25069 D),
25070 lookup_ht(D, k(A, B), E),
25071 !,
25072 C=suspension(F, not_stored_yet, t, A, B),
25073 'chr gen_id'(F),
25074 skip_to_next_id___2__0__0__4(E, A, B, C).
25075skip_to_next_id___2__0__0__4([], A, B, C) :-
25076 skip_to_next_id___2__1(A, B, C).
25077skip_to_next_id___2__0__0__4([A|B], C, D, E) :-
25078 ( A=suspension(_, active, _, _, F, G, H, I, _),
25079 F==C,
25080 G==D,
25081 nb_getval('$chr_store_multi_hash_chr_translate____passive___2-12',
25082 J),
25083 lookup_ht(J, k(H, I), K)
25084 -> skip_to_next_id___2__0__1__4(K,
25085 H,
25086 I,
25087 A,
25088 B,
25089 C,
25090 D,
25091 E)
25092 ; skip_to_next_id___2__0__0__4(B, C, D, E)
25093 ).
25094skip_to_next_id___2__0__1__4([], _, _, _, A, B, C, D) :-
25095 skip_to_next_id___2__0__0__4(A, B, C, D).
25096skip_to_next_id___2__0__1__4([A|B], C, D, E, F, G, H, I) :-
25097 ( A=suspension(_, active, _, J, K),
25098 J==C,
25099 K==D,
25100 L=t(362, E, A, I),
25101 '$novel_production'(E, L),
25102 '$novel_production'(A, L),
25103 '$novel_production'(I, L),
25104 H>1
25105 -> '$extend_history'(I, L),
25106 arg(2, I, M),
25107 setarg(2, I, active),
25108 ( M==not_stored_yet
25109 -> nb_getval('$chr_store_multi_hash_chr_translate____skip_to_next_id___2-12',
25110 N),
25111 insert_ht(N, k(G, H), I)
25112 ; true
25113 ),
25114 O is H-1,
25115 skip_to_next_id(G, O),
25116 ( I=suspension(_, active, _, _, _)
25117 -> setarg(2, I, inactive),
25118 skip_to_next_id___2__0__1__4(B,
25119 C,
25120 D,
25121 E,
25122 F,
25123 G,
25124 H,
25125 I)
25126 ; true
25127 )
25128 ; skip_to_next_id___2__0__1__4(B,
25129 C,
25130 D,
25131 E,
25132 F,
25133 G,
25134 H,
25135 I)
25136 ).
25137skip_to_next_id___2__0(A, B, C) :-
25138 C=suspension(D, not_stored_yet, t, A, B),
25139 'chr gen_id'(D),
25140 skip_to_next_id___2__1(A, B, C).
25141skip_to_next_id___2__1(A, B, C) :-
25142 nb_getval('$chr_store_multi_hash_chr_translate____set_occurrence_code_id___3-12',
25143 D),
25144 lookup_ht(D, k(A, B), E),
25145 !,
25146 skip_to_next_id___2__1__0__5(E, A, B, C).
25147skip_to_next_id___2__1__0__5([], A, B, C) :-
25148 skip_to_next_id___2__2(A, B, C).
25149skip_to_next_id___2__1__0__5([A|B], C, D, E) :-
25150 ( A=suspension(_, active, F, G, H),
25151 F==C,
25152 G==D,
25153 ( ground(C),
25154 ground(D)
25155 ),
25156 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-125',
25157 I),
25158 lookup_ht(I, k(C, D, propagation), J),
25159 member(K, J),
25160 K=suspension(_, active, _, _, _, _, _, _, _)
25161 -> setarg(2, A, removed),
25162 nb_getval('$chr_store_multi_hash_chr_translate____set_occurrence_code_id___3-12',
25163 L),
25164 delete_ht(L, k(C, D), A),
25165 arg(2, E, M),
25166 setarg(2, E, active),
25167 ( M==not_stored_yet
25168 -> nb_getval('$chr_store_multi_hash_chr_translate____skip_to_next_id___2-12',
25169 N),
25170 insert_ht(N, k(C, D), E)
25171 ; true
25172 ),
25173 occurrence_code_id(C, D, H),
25174 O is D+1,
25175 P is H+1,
25176 set_occurrence_code_id(C, O, P),
25177 ( E=suspension(_, active, _, _, _)
25178 -> setarg(2, E, inactive),
25179 skip_to_next_id___2__1__0__5(B, C, D, E)
25180 ; true
25181 )
25182 ; skip_to_next_id___2__1__0__5(B, C, D, E)
25183 ).
25184skip_to_next_id___2__1(A, B, C) :-
25185 skip_to_next_id___2__2(A, B, C).
25186skip_to_next_id___2__2(A, B, C) :-
25187 arg(2, C, D),
25188 setarg(2, C, active),
25189 ( D==not_stored_yet
25190 -> nb_getval('$chr_store_multi_hash_chr_translate____skip_to_next_id___2-12',
25191 E),
25192 insert_ht(E, k(A, B), C)
25193 ; true
25194 ).
25195should_skip_to_next_id(A, B) :-
25196 nb_getval('$chr_store_multi_hash_chr_translate____skip_to_next_id___2-12',
25197 C),
25198 lookup_ht(C, k(A, B), D),
25199 member(E, D),
25200 E=suspension(_, active, _, _, _),
25201 !.
25202should_skip_to_next_id(_, _) :-
25203 fail.
25204bulk_propagation(A, B, _) :-
25205 nb_getval('$chr_store_multi_hash_chr_translate____max_occurrence___2-1',
25206 C),
25207 lookup_ht(C, A, D),
25208 member(E, D),
25209 E=suspension(_, active, _, _, F),
25210 B>=F,
25211 !,
25212 skip_to_next_id(A, B).
25213bulk_propagation(A, B, C) :-
25214 C=:=B+1,
25215 !,
25216 skip_to_next_id(A, B),
25217 get_max_occurrence(A, D),
25218 E is D+1,
25219 bulk_propagation(A, C, E).
25220bulk_propagation(A, B, _) :-
25221 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-15',
25222 C),
25223 lookup_ht(C, k(A, simplification), D),
25224 member(E, D),
25225 E=suspension(_, active, _, _, _, F, _, _, _),
25226 F=:=B+1,
25227 !,
25228 skip_to_next_id(A, B),
25229 get_max_occurrence(A, G),
25230 H is G+1,
25231 bulk_propagation(A, F, H).
25232bulk_propagation(A, B, C) :-
25233 nb_getval('$chr_store_multi_hash_chr_translate____continuation_occurrence___3-12',
25234 D),
25235 lookup_ht(D, k(A, B), E),
25236 member(F, E),
25237 F=suspension(_, active, _, _, G),
25238 G>B+1,
25239 !,
25240 H is min(C, G),
25241 I is B+1,
25242 bulk_propagation(A, I, H).
25243bulk_propagation(A, B, _) :-
25244 skip_to_next_id(A, B),
25245 get_max_occurrence(A, C),
25246 D is C+1,
25247 E is B+1,
25248 bulk_propagation(A, E, D).
25249set_occurrence_code_id(A, B, C) :-
25250 get_max_occurrence(A, D),
25251 B>D,
25252 !,
25253 occurrence_code_id(A, B, C).
25254set_occurrence_code_id(A, B, C) :-
25255 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-12',
25256 D),
25257 lookup_ht(D, k(A, B), E),
25258 member(F, E),
25259 F=suspension(_, active, _, _, _, _, G, H, _),
25260 nb_getval('$chr_store_multi_hash_chr_translate____passive___2-12', I),
25261 lookup_ht(I, k(G, H), J),
25262 member(K, J),
25263 K=suspension(_, active, _, _, _),
25264 !,
25265 occurrence_code_id(A, B, C),
25266 L is B+1,
25267 set_occurrence_code_id(A, L, C).
25268set_occurrence_code_id(A, B, C) :-
25269 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-125',
25270 D),
25271 ( ( lookup_ht(D, k(A, B, simplification), E),
25272 member(F, E),
25273 F=suspension(_, active, _, _, _, _, _, _, _),
25274 !,
25275 occurrence_code_id(A, B, C),
25276 G is B+1,
25277 set_occurrence_code_id(A, G, C)
25278 ; lookup_ht(D, k(A, B, propagation), H),
25279 member(I, H),
25280 I=suspension(_, active, _, _, _, _, _, _, _),
25281 nb_getval('$chr_store_multi_hash_chr_translate____skip_to_next_id___2-12',
25282 J),
25283 lookup_ht(J, k(A, B), K),
25284 member(L, K),
25285 L=suspension(_, active, _, _, _),
25286 !,
25287 occurrence_code_id(A, B, C),
25288 M is B+1,
25289 N is C+1,
25290 set_occurrence_code_id(A, M, N)
25291 )
25292 ; lookup_ht(D, k(A, B, propagation), O),
25293 member(P, O),
25294 P=suspension(_, active, _, _, _, _, _, _, _),
25295 !,
25296 occurrence_code_id(A, B, C),
25297 Q is B+1,
25298 set_occurrence_code_id(A, Q, C)
25299 ).
25300set_occurrence_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____set_occurrence_code_id___3-12',
25304 F),
25305 insert_ht(F, k(A, B), D).
25306occurrence_code_id(A, B, C) :-
25307 D=suspension(E, active, A, B, C),
25308 'chr gen_id'(E),
25309 nb_getval('$chr_store_multi_hash_chr_translate____occurrence_code_id___3-12',
25310 F),
25311 insert_ht(F, k(A, B), D).
25312get_occurrence_code_id(A, B, C) :-
25313 nb_getval('$chr_store_multi_hash_chr_translate____occurrence_code_id___3-12',
25314 D),
25315 lookup_ht(D, k(A, B), E),
25316 member(F, E),
25317 F=suspension(_, active, _, _, G),
25318 !,
25319 C=G.
25320get_occurrence_code_id(A, B, _) :-
25321 ( B==0
25322 -> true
25323 ; format('no occurrence code for ~w!\n', [A:B])
25324 ).
25325chr_constants(A) :-
25326 B=suspension(C, active, _, A),
25327 'chr gen_id'(C),
25328 nb_getval('$chr_store_global_ground_chr_translate____chr_constants___1',
25329 D),
25330 E=[B|D],
25331 b_setval('$chr_store_global_ground_chr_translate____chr_constants___1',
25332 E),
25333 ( D=[F|_]
25334 -> setarg(3, F, E)
25335 ; true
25336 ).
25337get_chr_constants(A) :-
25338 nb_getval('$chr_store_global_ground_chr_translate____chr_constants___1',
25339 B),
25340 member(C, B),
25341 C=suspension(_, active, _, D),
25342 !,
25343 A=D.
25344get_chr_constants(A) :-
25345 chr_warning(internal, 'No constants found for key ~w.\n', [_]),
25346 A=[].
25347add_chr_constants_(A) :-
25348 nb_getval('$chr_store_global_ground_chr_translate____chr_constants___1',
25349 B),
25350 member(C, B),
25351 C=suspension(_, active, _, D),
25352 !,
25353 setarg(2, C, removed),
25354 arg(3, C, E),
25355 ( var(E)
25356 -> nb_getval('$chr_store_global_ground_chr_translate____chr_constants___1',
25357 F),
25358 F=[_|G],
25359 b_setval('$chr_store_global_ground_chr_translate____chr_constants___1',
25360 G),
25361 ( G=[H|_]
25362 -> setarg(3, H, _)
25363 ; true
25364 )
25365 ; E=[_, _|G],
25366 setarg(2, E, G),
25367 ( G=[H|_]
25368 -> setarg(3, H, E)
25369 ; true
25370 )
25371 ),
25372 sort([A|D], I),
25373 chr_constants(I).
25374add_chr_constants_(A) :-
25375 chr_constants([A]).
25376print_chr_constants :-
25377 print_chr_constants___0__0(_).
25378print_chr_constants___0__0(A) :-
25379 nb_getval('$chr_store_global_ground_chr_translate____chr_constants___1',
25380 B),
25381 !,
25382 A=suspension(C, not_stored_yet, _),
25383 'chr gen_id'(C),
25384 print_chr_constants___0__0__0__1(B, A).
25385print_chr_constants___0__0__0__1([], A) :-
25386 print_chr_constants___0__1(A).
25387print_chr_constants___0__0__0__1([A|B], C) :-
25388 ( A=suspension(_, active, _, D)
25389 -> format('\t* chr_constants : ~w.\n', [D]),
25390 print_chr_constants___0__0__0__1(B, C)
25391 ; print_chr_constants___0__0__0__1(B, C)
25392 ).
25393print_chr_constants___0__0(A) :-
25394 A=suspension(B, not_stored_yet, _),
25395 'chr gen_id'(B),
25396 print_chr_constants___0__1(A).
25397print_chr_constants___0__1(A) :-
25398 ( var(A)
25399 -> true
25400 ; arg(2, A, B),
25401 setarg(2, A, removed),
25402 ( B==not_stored_yet
25403 -> true
25404 ; arg(3, A, C),
25405 ( var(C)
25406 -> nb_getval('$chr_store_global_ground_chr_translate____print_chr_constants___0',
25407 D),
25408 D=[_|E],
25409 b_setval('$chr_store_global_ground_chr_translate____print_chr_constants___0',
25410 E),
25411 ( E=[F|_]
25412 -> setarg(3, F, _)
25413 ; true
25414 )
25415 ; C=[_, _|E],
25416 setarg(2, C, E),
25417 ( E=[F|_]
25418 -> setarg(3, F, C)
25419 ; true
25420 )
25421 )
25422 )
25423 )