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 [ member/2,
18 append/3,
19 reverse/2,
20 permutation/2,
21 last/2
22 ]). 23:- use_module(library(ordsets)). 24:- use_module(library(aggregate)). 25:- use_module(library(apply_macros)). 26:- use_module(library(occurs)). 27:- use_module(library(assoc)). 28:- use_module(library(dialect/hprolog)). 29:- use_module(chr(pairlist)). 30:- use_module(chr(a_star)). 31:- use_module(chr(listmap)). 32:- use_module(chr(clean_code)). 33:- use_module(chr(builtins)). 34:- use_module(chr(find)). 35:- use_module(chr(binomialheap)). 36:- use_module(chr(guard_entailment)). 37:- use_module(chr(chr_compiler_options)). 38:- use_module(chr(chr_compiler_utility)). 39:- use_module(chr(chr_compiler_errors)). 40:- include(chr(chr_op)).
41:- op(1150, fx, chr_type). 42:- op(1150, fx, chr_declaration). 43:- op(1130, xfx, --->). 44:- op(980, fx, +). 45:- op(980, fx, -). 46:- op(980, fx, ?). 47:- op(1150, fx, constraints). 48:- op(1150, fx, chr_constraint). 49format_storetype(multi_store(A)) :-
50 !,
51 maplist(format_storetype, A).
52format_storetype(atomic_constants(A, B, _)) :-
53 format('\t* a trie index on the argument(s) ~w for the ground terms ~w\n',
54 [A, B]).
55format_storetype(ground_constants(A, B, _)) :-
56 format('\t* a trie index on the argument(s) ~w for the ground terms ~w\n',
57 [A, B]).
58format_storetype(A) :-
59 format('\t* ~w\n', [A]).
60get_constraint_arg_type(A, B, E) :-
61 get_constraint_type(A, C),
62 nth1(B, C, D),
63 unalias_type(D, E).
64partial_store(ground_constants(_, _, incomplete)).
65partial_store(atomic_constants(_, _, incomplete)).
66late_allocation_analysis(A) :-
67 ( chr_pp_flag(late_allocation, on)
68 -> maplist(late_allocation, A)
69 ; true
70 ).
71late_allocation(A) :-
72 late_allocation(A, 0).
73late_allocation(A, B) :-
74 allocation_occurrence(A, B),
75 !.
76late_allocation(B, A) :-
77 C is A+1,
78 late_allocation(B, C).
79stored_in_guard_before_next_kept_occurrence(B, A) :-
80 chr_pp_flag(store_in_guards, on),
81 C is A+1,
82 stored_in_guard_lookahead(B, C).
83set_constraint_indices(A) :-
84 set_constraint_indices(A, 1).
85set_constraint_indices([], A) :-
86 B is A-1,
87 max_constraint_index(B).
88set_constraint_indices([A|C], B) :-
89 ( ( chr_pp_flag(debugable, on)
90 ; \+ only_ground_indexed_arguments(A),
91 is_stored(A)
92 ; is_stored(A),
93 get_store_type(A, default)
94 ; get_store_type(A, var_assoc_store(_, _))
95 )
96 -> constraint_index(A, B),
97 D is B+1,
98 set_constraint_indices(C, D)
99 ; set_constraint_indices(C, B)
100 ).
101type_indexed_identifier_structure(A, B) :-
102 type_indexed_identifier_name(A,
103 type_indexed_identifier_struct,
104 C),
105 get_type_indexed_identifier_size(A, D),
106 functor(B, C, D).
107type_indexed_identifier_name(A, C, D) :-
108 ( atom(A)
109 -> B=A
110 ; term_to_atom(A, B)
111 ),
112 atom_concat_list([C, '_', B], D).
113chr_translate(A, B) :-
114 chr_translate_line_info(A, bootstrap, B).
115chr_translate_line_info(A, B, Q) :-
116 chr_banner,
117 restart_after_flattening(A, C),
118 init_chr_pp_flags,
119 chr_source_file(B),
120 partition_clauses(C, D, E, J),
121 chr_compiler_options:sanity_check,
122 dump_code(C),
123 check_declared_constraints(D),
124 generate_show_constraint(D, F, E, G),
125 add_constraints(F),
126 add_rules(G),
127 generate_never_stored_rules(F, H),
128 add_rules(H),
129 append(G, H, I),
130 chr_analysis(I, F, C),
131 time('constraint code generation',
132 chr_translate:constraints_code(F, L)),
133 time('validate store assumptions',
134 chr_translate:validate_store_type_assumptions(F)),
135 phase_end(validate_store_type_assumptions),
136 used_states_known,
137 time('store code generation',
138 chr_translate:store_management_preds(F, K)),
139 insert_declarations(J, O),
140 chr_module_declaration(M),
141 append([K, L, M, [end_of_file]], N),
142 clean_clauses(N, P),
143 append([O, P], Q),
144 dump_code(Q),
145 !.
146chr_analysis(A, C, D) :-
147 maplist(pragma_rule_to_ast_rule, A, B),
148 check_rules(A, B, C),
149 time('type checking', chr_translate:static_type_check(A, B)),
150 collect_constants(A, B, C, D),
151 add_occurrences(A, B),
152 time('functional dependency',
153 chr_translate:functional_dependency_analysis(A)),
154 time('set semantics', chr_translate:set_semantics_rules(A)),
155 time('symmetry analysis', chr_translate:symmetry_analysis(A)),
156 time('guard simplification', chr_translate:guard_simplification),
157 time('late storage', chr_translate:storage_analysis(C)),
158 time(observation, chr_translate:observation_analysis(C)),
159 time('ai observation', chr_translate:ai_observation_analysis(C)),
160 time('late allocation', chr_translate:late_allocation_analysis(C)),
161 partial_wake_analysis,
162 time('assume constraint stores',
163 chr_translate:assume_constraint_stores(C)),
164 time('default constraint indices',
165 chr_translate:set_constraint_indices(C)),
166 time('check storedness assertions',
167 chr_translate:check_storedness_assertions(C)),
168 time('continuation analysis', chr_translate:continuation_analysis(C)).
169store_management_preds(A, J) :-
170 generate_attach_detach_a_constraint_all(A, B),
171 generate_attr_unify_hook(D),
172 generate_attach_increment(C),
173 generate_extra_clauses(A, E),
174 generate_insert_delete_constraints(A, F),
175 generate_attach_code(A, G),
176 generate_counter_code(H),
177 generate_dynamic_type_check_clauses(I),
178 append([B, C, D, E, F, G, H, I],
179 J).
180insert_declarations(B, D) :-
181 findall((:-use_module(chr(A))),
182 ( auxiliary_module(A),
183 is_used_auxiliary_module(A)
184 ),
185 C),
186 append(B, [(:-use_module(chr(chr_runtime)))|C], D).
187auxiliary_module(chr_hashtable_store).
188auxiliary_module(chr_integertable_store).
189auxiliary_module(chr_assoc_store).
190generate_counter_code(A) :-
191 ( chr_pp_flag(store_counter, on)
192 -> 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))]
193 ; A=[]
194 ).
195chr_module_declaration([]) :-
196 tmp_module,
197 !.
198chr_module_declaration(B) :-
199 get_target_module(A),
200 ( A\==chr_translate,
201 chr_pp_flag(toplevel_show_store, on)
202 -> B=[(:-multifile chr:'$chr_module'/1), chr:'$chr_module'(A)]
203 ; B=[]
204 ).
205partition_clauses([], [], [], []).
206partition_clauses([A|M], B, C, E) :-
207 ( parse_rule(A, D)
208 -> B=G,
209 C=[D|H],
210 E=I
211 ; is_declaration(A, F)
212 -> append(F, G, B),
213 C=H,
214 E=I
215 ; is_module_declaration(A, J)
216 -> target_module(J),
217 B=G,
218 C=H,
219 E=[A|I]
220 ; is_type_definition(A)
221 -> B=G,
222 C=H,
223 E=I
224 ; is_chr_declaration(A)
225 -> B=G,
226 C=H,
227 E=I
228 ; A=handler(_)
229 -> chr_warning(deprecated(A),
230 'Backward compatibility: ignoring handler/1 declaration.\n',
231 []),
232 B=G,
233 C=H,
234 E=I
235 ; A=rules(_)
236 -> chr_warning(deprecated(A),
237 'Backward compatibility: ignoring rules/1 declaration.\n',
238 []),
239 B=G,
240 C=H,
241 E=I
242 ; A=option(K, L)
243 -> chr_warning(deprecated(A),
244 'Instead use `:-chr_option(~w,~w).\'\n',
245 [K, L]),
246 handle_option(K, L),
247 B=G,
248 C=H,
249 E=I
250 ; A=(:-chr_option(K, L))
251 -> handle_option(K, L),
252 B=G,
253 C=H,
254 E=I
255 ; A='$chr_compiled_with_version'(_)
256 -> B=G,
257 C=H,
258 E=['$chr_compiled_with_version'(3)|I]
259 ; B=G,
260 C=H,
261 E=[A|I]
262 ),
263 partition_clauses(M, G, H, I).
264'$chr_compiled_with_version'(3).
265is_declaration(A, F) :-
266 ( A=(:-B),
267 B=..[C, D],
268 C==(chr_constraint)
269 -> conj2list(D, E)
270 ; ( A=(:-B)
271 -> B=..[constraints, D]
272 ; A=..[constraints, D]
273 ),
274 conj2list(D, E),
275 chr_warning(deprecated(A),
276 'Instead use :- chr_constraint ~w.\n',
277 [D])
278 ),
279 extract_type_mode(E, F).
([], []).
281extract_type_mode([A/B|C], [A/B|D]) :-
282 !,
283 extract_type_mode(C, D).
284extract_type_mode([A|J], [F|K]) :-
285 ( A= #(B, C)
286 -> functor(B, D, E),
287 extract_annotation(C, D/E)
288 ; A=B,
289 functor(B, D, E)
290 ),
291 F=D/E,
292 B=..[_|G],
293 extract_types_and_modes(G, H, I),
294 assert_constraint_type(F, H),
295 constraint_mode(F, I),
296 extract_type_mode(J, K).
(stored, A) :-
298 stored_assertion(A).
299extract_annotation(default(B), A) :-
300 never_stored_default(A, B).
301extract_types_and_modes([], [], []).
302extract_types_and_modes([A|D], [B|E], [C|F]) :-
303 extract_type_and_mode(A, B, C),
304 extract_types_and_modes(D, E, F).
305extract_type_and_mode(+A, A, +) :-
306 !.
307extract_type_and_mode(?A, A, ?) :-
308 !.
309extract_type_and_mode(-A, A, -) :-
310 !.
311extract_type_and_mode(+, any, +) :-
312 !.
313extract_type_and_mode(?, any, ?) :-
314 !.
315extract_type_and_mode(-, any, -) :-
316 !.
317extract_type_and_mode(A, _, _) :-
318 chr_error(syntax(A),
319 'Illegal mode/type declaration.\n\tCorrect syntax is +type, -type or ?type\n\tor +, - or ?.\n',
320 []).
321is_chr_declaration(A) :-
322 A=(:-chr_declaration B),
323 ( B=(C--->D)
324 -> background_info(C, D)
325 ; B=D
326 -> background_info([D])
327 ).
328is_type_definition(A) :-
329 is_type_definition(A, B),
330 assert_type_definition(B).
331assert_type_definition(typedef(A, B)) :-
332 type_definition(A, B).
333assert_type_definition(alias(A, B)) :-
334 type_alias(A, B).
335is_type_definition(A, E) :-
336 ( A=(:-B)
337 -> true
338 ; A=B
339 ),
340 B=..[chr_type, C],
341 ( C=(F--->D)
342 -> tdisj2list(D, G),
343 E=typedef(F, G)
344 ; C=(H==F)
345 -> E=alias(H, F)
346 ; E=typedef(C, []),
347 chr_warning(syntax,
348 'Empty type definition `~w\'.\nAre you sure you want to declare a phantom type?\n',
349 [A])
350 ).
351tdisj2list(A, B) :-
352 tdisj2list(A, B, []).
353tdisj2list(A, C, F) :-
354 A=(B;D),
355 !,
356 tdisj2list(B, C, E),
357 tdisj2list(D, E, F).
358tdisj2list(A, [A|B], B).
359parse_rule(A, D) :-
360 A= @(C, B),
361 !,
362 rule(B, yes(C), D).
363parse_rule(A, B) :-
364 rule(A, no, B).
365rule(A, E, D) :-
366 A=pragma(G, B),
367 !,
368 ( var(B)
369 -> C=[_]
370 ; conj2list(B, C)
371 ),
372 inc_rule_count(F),
373 D=pragma(H, I, C, E, F),
374 is_rule(G, H, I, D).
375rule(D, B, A) :-
376 inc_rule_count(C),
377 A=pragma(E, F, [], B, C),
378 is_rule(D, E, F, A).
379is_rule(A, H, E, D) :-
380 A= ==>(B, G),
381 !,
382 conj2list(B, C),
383 get_ids(C, F, I, D),
384 E=ids([], F),
385 ( G=(J| K)
386 -> H=rule([], I, J, K)
387 ; H=rule([], I, true, G)
388 ).
389is_rule(A, S, N, K) :-
390 A= <=>(G, B),
391 !,
392 ( B=(C| D)
393 -> E=C,
394 F=D
395 ; E=true,
396 F=B
397 ),
398 ( G= \(H, I)
399 -> conj2list(H, J),
400 conj2list(I, L),
401 get_ids(J, P, Q, 0, M, K),
402 get_ids(L, O, R, M, _, K),
403 N=ids(O, P)
404 ; conj2list(G, L),
405 Q=[],
406 get_ids(L, O, R, K),
407 N=ids(O, [])
408 ),
409 S=rule(R, Q, E, F).
410get_ids(A, B, C, D) :-
411 get_ids(A, B, C, 0, _, D).
412get_ids([], [], [], A, A, _).
413get_ids([B|F], [A|G], [C|H], A, J, E) :-
414 ( B= #(C, D)
415 -> ( var(D)
416 -> D=A
417 ; check_direct_pragma(D, A, E)
418 )
419 ; C=B
420 ),
421 I is A+1,
422 get_ids(F, G, H, I, J, E).
423check_direct_pragma(passive, C, A) :-
424 !,
425 A=pragma(_, _, _, _, B),
426 passive(B, C).
427check_direct_pragma(A, _, C) :-
428 ( direct_pragma(B),
429 atom_concat(A, _, B)
430 -> chr_warning(problem_pragma(A, C),
431 'completed `~w\' to `~w\'\n',
432 [A, B])
433 ; chr_warning(unsupported_pragma(A, C), '', [])
434 ).
435direct_pragma(passive).
436is_module_declaration((:-module(A)), A).
437is_module_declaration((:-module(A, _)), A).
438add_constraints([]).
439add_constraints([A|D]) :-
440 max_occurrence(A, 0),
441 A=_/B,
442 length(C, B),
443 set_elems(C, ?),
444 constraint_mode(A, C),
445 add_constraints(D).
446add_rules([]).
447add_rules([A|C]) :-
448 A=pragma(_, _, _, _, B),
449 rule(B, A),
450 add_rules(C).
451check_declared_constraints(A) :-
452 tree_set_empty(B),
453 check_declared_constraints(A, B).
454check_declared_constraints([], _).
455check_declared_constraints([A|C], B) :-
456 ( tree_set_memberchk(A, B)
457 -> chr_error(syntax(A),
458 'Constraint multiply defined: ~w.\n\tRemove redundant declaration!\n',
459 [A])
460 ; true
461 ),
462 tree_set_add(B, A, D),
463 check_declared_constraints(C, D).
464check_rules(B, C, A) :-
465 maplist(check_rule(A), B, C).
466check_rule(C, A, B) :-
467 A=pragma(_, _, D, _, _),
468 check_ast_rule_indexing(B, A),
469 check_ast_trivial_propagation_rule(B, A),
470 check_ast_head_constraints(B, C, A),
471 check_pragmas(D, A).
472check_ast_trivial_propagation_rule(A, D) :-
473 A=ast_rule(B, _, _, C, _),
474 ( B=propagation(_),
475 C==[]
476 -> chr_warning(weird_program,
477 'Ignoring propagation rule with empty body: ~@.\n\t\n',
478 [format_rule(D)]),
479 set_rule_passive(D)
480 ; true
481 ).
482set_rule_passive(A) :-
483 A=pragma(_, _, _, _, B),
484 set_all_passive(B).
485check_trivial_propagation_rule(A) :-
486 A=pragma(B, _, _, _, C),
487 ( B=rule([], _, _, true)
488 -> chr_warning(weird_program,
489 'Ignoring propagation rule with empty body: ~@.\n\t\n',
490 [format_rule(A)]),
491 set_all_passive(C)
492 ; true
493 ).
494check_ast_head_constraints(ast_rule(A, _, _, _, _), B, C) :-
495 check_ast_head_constraints_(A, B, C).
496check_ast_head_constraints_(simplification(C), A, B) :-
497 maplist(check_ast_head_constraint(A, B), C).
498check_ast_head_constraints_(propagation(C), A, B) :-
499 maplist(check_ast_head_constraint(A, B), C).
500check_ast_head_constraints_(simpagation(C, D), A, B) :-
501 maplist(check_ast_head_constraint(A, B), C),
502 maplist(check_ast_head_constraint(A, B), D).
503check_ast_head_constraint(B, D, chr_constraint(A, _, C)) :-
504 ( memberchk(A, B)
505 -> true
506 ; chr_error(syntax(C),
507 'Undeclared constraint ~w in head of ~@.\n\tConstraint should be one of ~w.\n',
508 [_/_, format_rule(D), B])
509 ).
510check_head_constraints([], _, _).
511check_head_constraints([A|E], D, F) :-
512 functor(A, B, C),
513 ( memberchk(B/C, D)
514 -> check_head_constraints(E, D, F)
515 ; chr_error(syntax(A),
516 'Undeclared constraint ~w in head of ~@.\n\tConstraint should be one of ~w.\n',
517 [B/C, format_rule(F), D])
518 ).
519check_pragmas([], _).
520check_pragmas([A|C], B) :-
521 check_pragma(A, B),
522 check_pragmas(C, B).
523check_pragma(A, B) :-
524 var(A),
525 !,
526 chr_error(syntax(A),
527 'Invalid pragma ~w in ~@.\n\tPragma should not be a variable!\n',
528 [A, format_rule(B)]).
529check_pragma(passive(B), A) :-
530 !,
531 A=pragma(_, ids(C, D), _, _, E),
532 ( memberchk_eq(B, C)
533 -> true
534 ; memberchk_eq(B, D)
535 -> true
536 ; chr_error(syntax(B),
537 'Invalid identifier ~w in pragma passive in ~@.\n',
538 [B, format_rule(A)])
539 ),
540 passive(E, B).
541check_pragma(mpassive(B), A) :-
542 !,
543 A=pragma(_, _, _, _, C),
544 chr_warning(experimental,
545 'Experimental pragma ~w. Use with care!\n',
546 [mpassive(B)]),
547 maplist(passive(C), B).
548check_pragma(A, B) :-
549 A=already_in_heads,
550 !,
551 chr_warning(unsupported_pragma(A, B),
552 'Termination and correctness may be affected.\n',
553 []).
554check_pragma(A, B) :-
555 A=already_in_head(_),
556 !,
557 chr_warning(unsupported_pragma(A, B),
558 'Termination and correctness may be affected.\n',
559 []).
560check_pragma(A, B) :-
561 A=no_history,
562 !,
563 chr_warning(experimental,
564 'Experimental pragma no_history. Use with care!\n',
565 []),
566 B=pragma(_, _, _, _, C),
567 no_history(C).
568check_pragma(A, B) :-
569 A=history(D, F),
570 !,
571 B=pragma(_, ids(C, G), _, _, E),
572 chr_warning(experimental,
573 'Experimental pragma ~w. Use with care!\n',
574 [A]),
575 ( C\==[]
576 -> chr_error(syntax(A),
577 'Pragma history only implemented for propagation rules.\n',
578 [])
579 ; \+ atom(D)
580 -> chr_error(syntax(A),
581 'Illegal argument for pragma history: ~w is not an atom (rule number ~w).\n',
582 [D, E])
583 ; \+ is_set(F)
584 -> chr_error(syntax(A),
585 'Illegal argument for pragma history: ~w is not a set (rule number ~w).\n',
586 [F, E])
587 ; check_history_pragma_ids(F, C, G)
588 -> history(E, D, F)
589 ; chr_error(syntax(A),
590 'Invalid identifier(s) in pragma ~w of rule number ~w.\n',
591 [A, E])
592 ).
593check_pragma(A, B) :-
594 A=source_location(D),
595 !,
596 B=pragma(_, _, _, _, C),
597 source_location(C, D).
598check_history_pragma_ids([], _, _).
599check_history_pragma_ids([A|D], C, B) :-
600 ( memberchk_eq(A, B)
601 ; memberchk_eq(A, C)
602 ),
603 check_history_pragma_ids(D, C, B).
604check_pragma(A, B) :-
605 chr_error(syntax(A),
606 'Unknown pragma ~w in ~@.\n',
607 [A, format_rule(B)]).
608test_named_history_id_pairs(_, [], _, []).
609test_named_history_id_pairs(A, [B|E], C, [D|F]) :-
610 test_named_history_id_pair(A, B, C, D),
611 test_named_history_id_pairs(A, E, C, F).
612format_rule(A) :-
613 A=pragma(_, _, _, B, D),
614 ( B=yes(C)
615 -> write('rule '),
616 write(C)
617 ; write('rule number '),
618 write(D)
619 ),
620 get_line_number(D, E),
621 write(' at '),
622 write(E).
623check_ast_rule_indexing(A, H) :-
624 A=ast_rule(B, D, _, _, _),
625 tree_set_empty(C),
626 ast_head_variables(B, C, E),
627 ast_remove_anti_monotonic_guards(D, E, F),
628 ast_term_list_variables(F, C, G),
629 check_ast_head_indexing(B, G),
630 ( chr_pp_flag(term_indexing, on)
631 -> H=pragma(I, _, _, _, _),
632 I=rule(J, K, L, _),
633 term_variables(J-K, M),
634 remove_anti_monotonic_guards(L, M, N),
635 term_variables(N, P),
636 append(J, K, O),
637 check_specs_indexing(O, P, _)
638 ; true
639 ).
640check_ast_head_indexing(simplification(A), B) :-
641 check_ast_indexing(A, B).
642check_ast_head_indexing(propagation(A), B) :-
643 check_ast_indexing(A, B).
644check_ast_head_indexing(simpagation(C, A), B) :-
645 ast_constraint_list_variables(A, B, D),
646 check_ast_indexing(C, D),
647 ast_constraint_list_variables(C, B, E),
648 check_ast_indexing(A, E).
649check_rule_indexing(A) :-
650 A=pragma(B, _, _, _, _),
651 B=rule(C, D, E, _),
652 term_variables(C-D, F),
653 remove_anti_monotonic_guards(E, F, G),
654 check_indexing(C, G-D),
655 check_indexing(D, G-C),
656 ( chr_pp_flag(term_indexing, on)
657 -> term_variables(G, I),
658 append(C, D, H),
659 check_specs_indexing(H, I, _)
660 ; true
661 ).
662remove_anti_monotonic_guards(A, C, E) :-
663 conj2list(A, B),
664 remove_anti_monotonic_guard_list(B, C, D),
665 list2conj(D, E).
666remove_anti_monotonic_guard_list([], _, []).
667remove_anti_monotonic_guard_list([A|F], C, D) :-
668 ( A=var(B),
669 memberchk_eq(B, C)
670 -> D=E
671 ; D=[A|E]
672 ),
673 remove_anti_monotonic_guard_list(F, C, E).
674ast_remove_anti_monotonic_guards([], _, []).
675ast_remove_anti_monotonic_guards([A|F], C, D) :-
676 ( A=compound(var, 1, [B], _),
677 ast_var_memberchk(B, C)
678 -> D=E
679 ; D=[A|E]
680 ),
681 ast_remove_anti_monotonic_guards(F, C, E).
682check_ast_indexing([], _).
683check_ast_indexing([A|B], C) :-
684 A=chr_constraint(E, D, _),
685 ast_constraint_list_variables(B, C, F),
686 check_ast_indexing(D, 1, E, F),
687 ast_constraint_variables(A, C, G),
688 check_ast_indexing(B, G).
689check_ast_indexing([], _, _, _).
690check_ast_indexing([C|D], B, A, E) :-
691 ( is_indexed_argument(A, B)
692 -> true
693 ; ast_nonvar(C)
694 -> indexed_argument(A, B)
695 ; ast_term_list_variables(D, E, F),
696 ( ast_var_memberchk(C, F)
697 -> indexed_argument(A, B)
698 ; true
699 )
700 ),
701 G is B+1,
702 ast_term_variables(C, E, H),
703 check_ast_indexing(D, G, A, H).
704check_indexing([], _).
705check_indexing([A|B], C) :-
706 functor(A, E, F),
707 A=..[_|D],
708 term_variables(B-C, G),
709 check_indexing(D, 1, E/F, G),
710 check_indexing(B, [A|C]).
711check_indexing([], _, _, _).
712check_indexing([C|D], B, A, F) :-
713 ( is_indexed_argument(A, B)
714 -> true
715 ; nonvar(C)
716 -> indexed_argument(A, B)
717 ; term_variables(D, E),
718 append(E, F, G),
719 ( memberchk_eq(C, G)
720 -> indexed_argument(A, B)
721 ; true
722 )
723 ),
724 I is B+1,
725 term_variables(C, H),
726 append(H, F, J),
727 check_indexing(D, I, A, J).
728check_specs_indexing([], _, []).
729check_specs_indexing([D|B], C, A) :-
730 A=[F|H],
731 term_variables(B, E, C),
732 check_spec_indexing(D, E, F),
733 term_variables(D, G, C),
734 check_specs_indexing(B, G, H).
735check_spec_indexing(A, F, B) :-
736 functor(A, C, D),
737 B=spec(C, D, G),
738 A=..[_|E],
739 check_args_spec_indexing(E, 1, F, G),
740 indexing_spec(C/D, [G]).
741check_args_spec_indexing([], _, _, []).
742check_args_spec_indexing([C|A], D, B, F) :-
743 term_variables(A, E, B),
744 ( check_arg_spec_indexing(C, D, E, G)
745 -> F=[G|H]
746 ; F=H
747 ),
748 I is D+1,
749 term_variables(C, J, B),
750 check_args_spec_indexing(A, I, J, H).
751check_arg_spec_indexing(A, D, B, C) :-
752 ( var(A)
753 -> memberchk_eq(A, B),
754 C=specinfo(D, any, [])
755 ; functor(A, E, F),
756 C=specinfo(D, E/F, [H]),
757 A=..[_|G],
758 check_args_spec_indexing(G, 1, B, H)
759 ).
760add_occurrences(A, B) :-
761 maplist(add_rule_occurrences, A, B).
762add_rule_occurrences(A, B) :-
763 A=pragma(_, D, _, _, E),
764 B=ast_rule(C, _, _, _, _),
765 add_head_occurrences(C, D, E).
766add_head_occurrences(simplification(B), ids(C, _), A) :-
767 maplist(add_constraint_occurrence(A, simplification), B, C).
768add_head_occurrences(propagation(B), ids(_, C), A) :-
769 maplist(add_constraint_occurrence(A, propagation), B, C).
770add_head_occurrences(simpagation(B, D), ids(C, E), A) :-
771 maplist(add_constraint_occurrence(A, simplification), B, C),
772 maplist(add_constraint_occurrence(A, propagation), D, E).
773add_constraint_occurrence(C, E, A, D) :-
774 A=chr_constraint(B, _, _),
775 new_occurrence(B, C, D, E).
776observation_analysis(A, C, B, E) :-
777 ( all_spawned(A, B)
778 -> true
779 ; var(C)
780 -> spawns_all(A, B)
781 ; C=true
782 -> true
783 ; C=fail
784 -> true
785 ; C=!
786 -> true
787 ; C=(D, F)
788 -> observation_analysis(A, D, B, E),
789 observation_analysis(A, F, B, E)
790 ; C=(D;F)
791 -> observation_analysis(A, D, B, E),
792 observation_analysis(A, F, B, E)
793 ; C=(D->F)
794 -> observation_analysis(A, D, B, E),
795 observation_analysis(A, F, B, E)
796 ; C=(\+G)
797 -> observation_analysis(A, G, B, E)
798 ; functor(C, H, I),
799 memberchk(H/I, E)
800 -> spawns(A, B, H/I)
801 ; C=(_=_)
802 -> spawns_all_triggers(A, B)
803 ; C=(_ is _)
804 -> spawns_all_triggers(A, B)
805 ; builtin_binds_b(C, J)
806 -> ( J==[]
807 -> true
808 ; spawns_all_triggers(A, B)
809 )
810 ; spawns_all(A, B)
811 ).
812is_observed(A, B) :-
813 is_observed(A, B, _),
814 ai_is_observed(A, B).
815is_stored_in_guard(A, B) :-
816 chr_pp_flag(store_in_guards, on),
817 do_is_observed(A, B, guard).
818generate_attach_detach_a_constraint_all([], []).
819generate_attach_detach_a_constraint_all([A|D], F) :-
820 ( ( chr_pp_flag(debugable, on)
821 ; is_stored(A),
822 \+ only_ground_indexed_arguments(A),
823 \+ get_store_type(A, var_assoc_store(_, _))
824 )
825 -> generate_attach_a_constraint(A, B),
826 generate_detach_a_constraint(A, C)
827 ; B=[],
828 C=[]
829 ),
830 generate_attach_detach_a_constraint_all(D, E),
831 append([B, C, E], F).
832generate_attach_a_constraint(A, [B, C]) :-
833 generate_attach_a_constraint_nil(A, B),
834 generate_attach_a_constraint_cons(A, C).
835attach_constraint_atom(A, D, E, B) :-
836 make_name(attach_, A, C),
837 B=..[C, D, E].
838generate_attach_a_constraint_nil(B, A) :-
839 A=(C:-true),
840 attach_constraint_atom(B, [], _, C).
841generate_attach_a_constraint_cons(B, A) :-
842 A=(C:-F),
843 attach_constraint_atom(B, [I|D], E, C),
844 attach_constraint_atom(B, D, E, G),
845 F=(J, L, G),
846 get_max_constraint_index(H),
847 ( H==1
848 -> generate_attach_body_1(B, I, E, J)
849 ; generate_attach_body_n(B, I, E, J)
850 ),
851 chr_pp_flag(solver_events, K),
852 ( K\==none
853 -> _=[[I|_], E],
854 get_target_module(M),
855 use_auxiliary_predicate(run_suspensions),
856 L=clp_events:subscribe(I, K, M, M:'$run_suspensions'([E]))
857 ; L=true
858 ).
859generate_attach_body_1(_, B, D, A) :-
860 get_target_module(C),
861 A=(get_attr(B, C, E)->put_attr(B, C, [D|E]);put_attr(B, C, [D])).
862generate_attach_body_n(A/B, G, D, F) :-
863 chr_pp_flag(experiment, off),
864 !,
865 get_constraint_index(A/B, E),
866 get_max_constraint_index(C),
867 get_target_module(H),
868 add_attr(C, D, E, I, J, K),
869 singleton_attr(C, D, E, L),
870 F=(get_attr(G, H, I)->J, put_attr(G, H, K);put_attr(G, H, L)),
871 !.
872generate_attach_body_n(A/B, G, E, F) :-
873 chr_pp_flag(experiment, on),
874 !,
875 get_constraint_index(A/B, C),
876 or_pattern(C, L),
877 J is C+1,
878 get_max_constraint_index(D),
879 get_target_module(H),
880 singleton_attr(D, E, C, O),
881 F=(get_attr(G, H, I)->arg(1, I, K), arg(J, I, N), M is K\/L, setarg(1, I, M), setarg(J, I, [E|N]);put_attr(G, H, O)),
882 !.
883generate_detach_a_constraint(A, [B, C]) :-
884 generate_detach_a_constraint_nil(A, B),
885 generate_detach_a_constraint_cons(A, C).
886detach_constraint_atom(A, D, E, B) :-
887 make_name(detach_, A, C),
888 B=..[C, D, E].
889generate_detach_a_constraint_nil(B, A) :-
890 A=(C:-true),
891 detach_constraint_atom(B, [], _, C).
892generate_detach_a_constraint_cons(B, A) :-
893 A=(C:-F),
894 detach_constraint_atom(B, [I|D], E, C),
895 detach_constraint_atom(B, D, E, G),
896 F=(J, G),
897 get_max_constraint_index(H),
898 ( H==1
899 -> generate_detach_body_1(B, I, E, J)
900 ; generate_detach_body_n(B, I, E, J)
901 ).
902generate_detach_body_1(_, B, E, A) :-
903 get_target_module(C),
904 A=(get_attr(B, C, D)->'chr sbag_del_element'(D, E, F), (F==[]->del_attr(B, C);put_attr(B, C, F));true).
905generate_detach_body_n(A/B, D, E, G) :-
906 get_constraint_index(A/B, F),
907 get_max_constraint_index(C),
908 rem_attr(C, D, E, F, I, J),
909 get_target_module(H),
910 G=(get_attr(D, H, I)->J;true),
911 !.
912create_indexed_variables_body([], [], [], _, _, _, empty, 0).
913create_indexed_variables_body([J|B], [G|C], [H|D], K, A, F, I, O) :-
914 E is A+1,
915 create_indexed_variables_body(B,
916 C,
917 D,
918 L,
919 E,
920 F,
921 M,
922 P),
923 ( G==(?),
924 is_indexed_argument(F, A)
925 -> ( atomic_type(H)
926 -> I=((var(J)->K=[J|L];K=L), N),
927 ( M==empty
928 -> N=true,
929 L=[]
930 ; N=M
931 )
932 ; M==empty
933 -> I=term_variables(J, K)
934 ; I=(term_variables(J, K, L), M)
935 ),
936 O=P
937 ; G==(-),
938 is_indexed_argument(F, A)
939 -> ( M==empty
940 -> I=(K=[J])
941 ; I=(K=[J|L], M)
942 ),
943 O is P+1
944 ; K=L,
945 I=M,
946 O is P+1
947 ).
948spectermvars(B, A, C, D, F, E) :-
949 spectermvars(A, 1, B, C, D, E, [], F).
950spectermvars([], B, _, _, C, A, A, true) :-
951 B>C,
952 !.
953spectermvars([F|I], C, B, L, M, H, O, A) :-
954 A=(G, P),
955 argspecs(B, C, D, K),
956 merge_argspecs(D, E),
957 arggoal(E, F, G, H, N),
958 J is C+1,
959 spectermvars(I,
960 J,
961 K,
962 L,
963 M,
964 N,
965 O,
966 P).
967argspecs([], _, [], []).
968argspecs([[]|A], B, C, D) :-
969 argspecs(A, B, C, D).
970argspecs([[specinfo(B, D, E)|F]|J], A, C, G) :-
971 ( A==B
972 -> C=[specinfo(B, D, E)|I],
973 ( F=[]
974 -> H=G
975 ; G=[F|H]
976 )
977 ; C=I,
978 G=[[specinfo(B, D, E)|F]|H]
979 ),
980 argspecs(J, A, I, H).
981merge_argspecs(A, C) :-
982 sort(A, B),
983 merge_argspecs_(B, C).
984merge_argspecs_([], []).
985merge_argspecs_([B], A) :-
986 !,
987 A=[B].
988merge_argspecs_([specinfo(A, B, F), specinfo(A, C, G)|D], E) :-
989 ( ( B==any
990 ; C==any
991 )
992 -> merge_argspecs_([specinfo(A, any, [])|D], E)
993 ; B==C
994 -> append(F, G, H),
995 merge_argspecs_([specinfo(A, B, H)|D], E)
996 ; E=[specinfo(A, B, F)|I],
997 merge_argspecs_([specinfo(A, C, G)|D], I)
998 ).
999arggoal(A, E, D, B, C) :-
1000 ( A==[]
1001 -> B=C,
1002 D=true
1003 ; A=[specinfo(_, any, _)]
1004 -> D=term_variables(E, B, C)
1005 ; D=(var(E)->B=[E|C];F),
1006 arggoal_cases(A, E, B, C, F)
1007 ).
1008arggoal_cases([], _, A, B, A=B).
1009arggoal_cases([specinfo(_, D, A)|N], I, K, L, B) :-
1010 ( A==[]
1011 -> B=C
1012 ; A==[[]]
1013 -> B=C
1014 ; D=E/F
1015 -> B=(H;C),
1016 functor(G, E, F),
1017 G=..[_|J],
1018 H=(I=G->M),
1019 spectermvars(J,
1020 1,
1021 A,
1022 E,
1023 F,
1024 K,
1025 L,
1026 M)
1027 ),
1028 arggoal_cases(N, I, K, L, C).
(A, B) :-
1030 generate_activate_clauses(A, B, C),
1031 generate_remove_clauses(A, C, D),
1032 generate_allocate_clauses(A, D, E),
1033 generate_insert_constraint_internal_clauses(A, E, F),
1034 generate_novel_production(F, G),
1035 generate_extend_history(G, H),
1036 generate_run_suspensions_clauses(A, H, I),
1037 generate_empty_named_history_initialisations(I, J),
1038 J=[].
1039generate_remove_clauses([], A, A).
1040generate_remove_clauses([A|C], B, E) :-
1041 generate_remove_clause(A, B, D),
1042 generate_remove_clauses(C, D, E).
1043remove_constraint_goal(A, E, F, D, C, I, B) :-
1044 uses_state(A, removed),
1045 ( chr_pp_flag(inline_insertremove, off)
1046 -> use_auxiliary_predicate(remove_constraint_internal, A),
1047 B=(H, (G==yes->C;D)),
1048 remove_constraint_atom(A, E, F, G, H)
1049 ; delay_phase_end(validate_store_type_assumptions,
1050 generate_remove_body(A,
1051 E,
1052 F,
1053 D,
1054 C,
1055 I,
1056 B))
1057 ).
1058remove_constraint_atom(A, D, F, E, B) :-
1059 make_name('$remove_constraint_internal_', A, C),
1060 ( chr_pp_flag(debugable, off),
1061 ( only_ground_indexed_arguments(A)
1062 ; get_store_type(A, var_assoc_store(_, _))
1063 )
1064 -> B=..[C, D, E]
1065 ; B=..[C, D, F, E]
1066 ).
1067generate_remove_clause(A, B, C) :-
1068 ( is_used_auxiliary_predicate(remove_constraint_internal, A)
1069 -> B=[D|C],
1070 D=(E:-I),
1071 remove_constraint_atom(A, F, G, H, E),
1072 generate_remove_body(A,
1073 F,
1074 G,
1075 H=no,
1076 H=yes,
1077 active,
1078 I)
1079 ; B=C
1080 ).
1081generate_remove_body(A, C, O, F, G, B, L) :-
1082 ( chr_pp_flag(debugable, off),
1083 ( only_ground_indexed_arguments(A)
1084 ; get_store_type(A, var_assoc_store(_, _))
1085 )
1086 -> ( B==active
1087 -> get_update_suspension_field(A,
1088 C,
1089 state,
1090 E,
1091 removed,
1092 H,
1093 D,
1094 I),
1095 if_used_state(A, not_stored_yet, D, true, J),
1096 if_used_state(A,
1097 not_stored_yet,
1098 (E==not_stored_yet->F;G),
1099 G,
1100 K)
1101 ; B==partner
1102 -> get_update_suspension_field(A,
1103 C,
1104 state,
1105 E,
1106 removed,
1107 H,
1108 _,
1109 I),
1110 J=true,
1111 K=G
1112 ),
1113 L=(H, J, I, K)
1114 ; static_suspension_term(A, M),
1115 get_static_suspension_term_field(arguments, A, M, N),
1116 generate_indexed_variables_body(A, N, Q, O),
1117 ( chr_pp_flag(debugable, on)
1118 -> A=P/_,
1119 get_static_suspension_term_field(functor,
1120 A,
1121 M,
1122 P)
1123 ; true
1124 ),
1125 ( B==active
1126 -> get_update_static_suspension_field(A,
1127 C,
1128 M,
1129 state,
1130 E,
1131 removed,
1132 D,
1133 I),
1134 if_used_state(A, not_stored_yet, D, true, J),
1135 if_used_state(A,
1136 not_stored_yet,
1137 (E==not_stored_yet->O=[], F;Q, G),
1138 (Q, G),
1139 K)
1140 ; B==partner
1141 -> get_update_static_suspension_field(A,
1142 C,
1143 M,
1144 state,
1145 E,
1146 removed,
1147 _,
1148 I),
1149 J=true,
1150 K=(Q, G)
1151 ),
1152 L=(C=M, J, I, K)
1153 ).
1154generate_activate_clauses([], A, A).
1155generate_activate_clauses([A|C], B, E) :-
1156 generate_activate_clause(A, B, D),
1157 generate_activate_clauses(C, D, E).
1158activate_constraint_goal(A, C, E, F, G, B) :-
1159 ( chr_pp_flag(inline_insertremove, off)
1160 -> use_auxiliary_predicate(activate_constraint, A),
1161 B=(H, (D==yes->C;true)),
1162 activate_constraint_atom(A,
1163 D,
1164 E,
1165 F,
1166 G,
1167 H)
1168 ; delay_phase_end(validate_store_type_assumptions,
1169 activate_constraint_body(A,
1170 C,
1171 true,
1172 E,
1173 F,
1174 G,
1175 B))
1176 ).
1177activate_constraint_atom(A, D, G, E, F, B) :-
1178 make_name('$activate_constraint_', A, C),
1179 ( chr_pp_flag(debugable, off),
1180 only_ground_indexed_arguments(A)
1181 -> B=..[C, D, E]
1182 ; chr_pp_flag(debugable, off),
1183 may_trigger(A),
1184 get_store_type(A, var_assoc_store(_, _))
1185 -> B=..[C, D, E, F]
1186 ; chr_pp_flag(debugable, off),
1187 may_trigger(A),
1188 get_store_type(A, var_assoc_store(_, _))
1189 -> B=..[C, D, G, E, F]
1190 ; B=..[C, D, G, E]
1191 ).
1192generate_activate_clause(A, B, C) :-
1193 ( is_used_auxiliary_predicate(activate_constraint, A)
1194 -> B=[D|C],
1195 D=(E:-J),
1196 activate_constraint_atom(A,
1197 F,
1198 G,
1199 H,
1200 I,
1201 E),
1202 activate_constraint_body(A,
1203 F=yes,
1204 F=no,
1205 G,
1206 H,
1207 I,
1208 J)
1209 ; B=C
1210 ).
1211activate_constraint_body(A, K, L, N, B, C, S) :-
1212 ( chr_pp_flag(debugable, off),
1213 may_trigger(A),
1214 uses_field(A, generation)
1215 -> get_update_suspension_field(A,
1216 B,
1217 generation,
1218 F,
1219 C,
1220 D,
1221 E,
1222 G),
1223 H=(D, E, C is F+1, G)
1224 ; H=true
1225 ),
1226 get_update_suspension_field(A,
1227 B,
1228 state,
1229 J,
1230 active,
1231 T,
1232 I,
1233 V),
1234 if_used_state(A, not_stored_yet, I, true, U),
1235 ( chr_pp_flag(debugable, off),
1236 ( only_ground_indexed_arguments(A)
1237 ; get_store_type(A, var_assoc_store(_, _))
1238 )
1239 -> if_used_state(A,
1240 not_stored_yet,
1241 (J==not_stored_yet->K;L),
1242 L,
1243 R)
1244 ; get_dynamic_suspension_term_field(arguments,
1245 A,
1246 B,
1247 M,
1248 O),
1249 generate_indexed_variables_body(A, M, P, N),
1250 chr_none_locked(N, Q),
1251 if_used_state(A,
1252 not_stored_yet,
1253 (J==not_stored_yet->O, P, Q, K;L),
1254 L,
1255 R)
1256 ),
1257 S=(T, U, V, H, R).
1258generate_allocate_clauses([], A, A).
1259generate_allocate_clauses([A|C], B, E) :-
1260 generate_allocate_clause(A, B, D),
1261 generate_allocate_clauses(C, D, E).
1262allocate_constraint_goal(A, B, C, D) :-
1263 uses_state(A, not_stored_yet),
1264 ( chr_pp_flag(inline_insertremove, off)
1265 -> use_auxiliary_predicate(allocate_constraint, A),
1266 allocate_constraint_atom(A, B, C, D)
1267 ; D=(B=E, F),
1268 delay_phase_end(validate_store_type_assumptions,
1269 allocate_constraint_body(A,
1270 E,
1271 C,
1272 F))
1273 ).
1274allocate_constraint_atom(A, D, E, B) :-
1275 make_name('$allocate_constraint_', A, C),
1276 B=..[C, D|E].
1277generate_allocate_clause(A, B, C) :-
1278 ( is_used_auxiliary_predicate(allocate_constraint, A)
1279 -> B=[D|C],
1280 D=(G:-I),
1281 A=_/E,
1282 length(F, E),
1283 allocate_constraint_atom(A, H, F, G),
1284 allocate_constraint_body(A, H, F, I)
1285 ; B=C
1286 ).
1287allocate_constraint_body(A, E, C, P) :-
1288 static_suspension_term(A, B),
1289 get_static_suspension_term_field(arguments, A, B, C),
1290 ( chr_pp_flag(debugable, on)
1291 -> A=D/_,
1292 get_static_suspension_term_field(functor, A, B, D)
1293 ; true
1294 ),
1295 ( chr_pp_flag(debugable, on)
1296 -> ( may_trigger(A)
1297 -> append(C, [E], F),
1298 build_head(_, _, [0], F, H),
1299 get_target_module(G),
1300 I=G:H
1301 ; I=true
1302 ),
1303 K=(E=B),
1304 create_static_suspension_field(A,
1305 B,
1306 continuation,
1307 I,
1308 L),
1309 create_static_suspension_field(A, B, generation, 0, J)
1310 ; may_trigger(A),
1311 uses_field(A, generation)
1312 -> create_static_suspension_field(A, B, generation, 0, J),
1313 E=B,
1314 K=true,
1315 L=true
1316 ; J=true,
1317 E=B,
1318 K=true,
1319 L=true
1320 ),
1321 ( uses_history(A)
1322 -> create_static_suspension_field(A, B, history, t, M)
1323 ; M=true
1324 ),
1325 create_static_suspension_field(A,
1326 B,
1327 state,
1328 not_stored_yet,
1329 Q),
1330 ( has_suspension_field(A, id)
1331 -> get_static_suspension_term_field(id, A, B, N),
1332 gen_id(N, O)
1333 ; O=true
1334 ),
1335 P=(K, L, J, M, Q, O).
1336gen_id(A, 'chr gen_id'(A)).
1337generate_insert_constraint_internal_clauses([], A, A).
1338generate_insert_constraint_internal_clauses([A|C], B, E) :-
1339 generate_insert_constraint_internal_clause(A, B, D),
1340 generate_insert_constraint_internal_clauses(C, D, E).
1341insert_constraint_internal_constraint_goal(A, B, C, D, E, F) :-
1342 ( chr_pp_flag(inline_insertremove, off)
1343 -> use_auxiliary_predicate(remove_constraint_internal, A),
1344 insert_constraint_internal_constraint_atom(A,
1345 B,
1346 C,
1347 D,
1348 E,
1349 F)
1350 ; delay_phase_end(validate_store_type_assumptions,
1351 generate_insert_constraint_internal_body(A,
1352 C,
1353 D,
1354 E,
1355 B,
1356 F))
1357 ).
1358insert_constraint_internal_constraint_atom(A, D, E, F, G, B) :-
1359 insert_constraint_internal_constraint_name(A, C),
1360 ( chr_pp_flag(debugable, on)
1361 -> B=..[C, D, E, F|G]
1362 ; ( only_ground_indexed_arguments(A)
1363 ; get_store_type(A, var_assoc_store(_, _))
1364 )
1365 -> B=..[C, E|G]
1366 ; B=..[C, D, E|G]
1367 ).
1368insert_constraint_internal_constraint_name(A, B) :-
1369 make_name('$insert_constraint_internal_', A, B).
1370generate_insert_constraint_internal_clause(A, B, C) :-
1371 ( is_used_auxiliary_predicate(insert_constraint_internal, A)
1372 -> B=[D|C],
1373 D=(G:-K),
1374 A=_/E,
1375 length(F, E),
1376 insert_constraint_internal_constraint_atom(A,
1377 J,
1378 H,
1379 I,
1380 F,
1381 G),
1382 generate_insert_constraint_internal_body(A,
1383 H,
1384 I,
1385 F,
1386 J,
1387 K)
1388 ; B=C
1389 ).
1390generate_insert_constraint_internal_body(A, K, C, G, M, J) :-
1391 static_suspension_term(A, B),
1392 create_static_suspension_field(A, B, state, active, L),
1393 ( chr_pp_flag(debugable, on)
1394 -> get_static_suspension_term_field(continuation, A, B, C),
1395 create_static_suspension_field(A, B, generation, 0, D)
1396 ; may_trigger(A),
1397 uses_field(A, generation)
1398 -> create_static_suspension_field(A, B, generation, 0, D)
1399 ; D=true
1400 ),
1401 ( chr_pp_flag(debugable, on)
1402 -> A=E/_,
1403 get_static_suspension_term_field(functor, A, B, E)
1404 ; true
1405 ),
1406 ( uses_history(A)
1407 -> create_static_suspension_field(A, B, history, t, F)
1408 ; F=true
1409 ),
1410 get_static_suspension_term_field(arguments, A, B, G),
1411 _=[_|_],
1412 ( chr_pp_flag(debugable, off),
1413 ( only_ground_indexed_arguments(A)
1414 ; get_store_type(A, var_assoc_store(_, _))
1415 )
1416 -> suspension_term_base_fields(A, _),
1417 ( has_suspension_field(A, id)
1418 -> get_static_suspension_term_field(id, A, B, H),
1419 gen_id(H, I)
1420 ; I=true
1421 ),
1422 J=(K=B, L, D, F, I)
1423 ; ( has_suspension_field(A, id)
1424 -> get_static_suspension_term_field(id, A, B, H),
1425 gen_id(H, I)
1426 ; I=true
1427 ),
1428 generate_indexed_variables_body(A, G, N, M),
1429 chr_none_locked(M, O),
1430 J=(K=B, N, O, L, D, F, I)
1431 ).
1432generate_novel_production(A, B) :-
1433 ( is_used_auxiliary_predicate(novel_production)
1434 -> A=[C|B],
1435 C=('$novel_production'(D, E):-arg(3, D, F), (hprolog:get_ds(E, F, _)->fail;true))
1436 ; A=B
1437 ).
1438generate_extend_history(A, B) :-
1439 ( is_used_auxiliary_predicate(extend_history)
1440 -> A=[C|B],
1441 C=('$extend_history'(D, E):-arg(3, D, F), hprolog:put_ds(E, F, x, G), setarg(3, D, G))
1442 ; A=B
1443 ).
1444generate_empty_named_history_initialisations(A, B) :-
1445 empty_named_history_initialisations(A, B),
1446 find_empty_named_histories.
1447empty_named_history_global_variable(A, B) :-
1448 atom_concat('chr empty named history ', A, B).
1449empty_named_history_novel_production(A, nb_getval(B, 0)) :-
1450 empty_named_history_global_variable(A, B).
1451empty_named_history_extend_history(A, b_setval(B, 1)) :-
1452 empty_named_history_global_variable(A, B).
1453generate_run_suspensions_clauses([], A, A).
1454generate_run_suspensions_clauses([A|C], B, E) :-
1455 generate_run_suspensions_clause(A, B, D),
1456 generate_run_suspensions_clauses(C, D, E).
1457run_suspensions_goal(A, D, B) :-
1458 make_name('$run_suspensions_', A, C),
1459 B=..[C, D].
1460generate_run_suspensions_clause(A, B, C) :-
1461 ( is_used_auxiliary_predicate(run_suspensions, A)
1462 -> B=[D, G|C],
1463 run_suspensions_goal(A, [], D),
1464 ( chr_pp_flag(debugable, on)
1465 -> run_suspensions_goal(A, [E|F], H),
1466 get_update_suspension_field(A,
1467 E,
1468 state,
1469 K,
1470 triggered,
1471 I,
1472 J,
1473 L),
1474 get_update_suspension_field(A,
1475 E,
1476 state,
1477 V,
1478 active,
1479 T,
1480 U,
1481 W),
1482 get_update_suspension_field(A,
1483 E,
1484 generation,
1485 P,
1486 O,
1487 M,
1488 N,
1489 Q),
1490 get_dynamic_suspension_term_field(continuation,
1491 A,
1492 E,
1493 S,
1494 R),
1495 run_suspensions_goal(A, F, X),
1496 G=(H:-I, J, (K==active->L, M, N, O is P+1, Q, R, ('chr debugging'->('chr debug_event'(wake(E)), call(S);'chr debug_event'(fail(E)), !, fail), ('chr debug_event'(exit(E));'chr debug_event'(redo(E)), fail);call(S)), T, U, (V==triggered->W;true);true), X)
1497 ; run_suspensions_goal(A, [E|F], H),
1498 static_suspension_term(A, Y),
1499 get_static_suspension_term_field(arguments,
1500 A,
1501 Y,
1502 Z),
1503 append(Z, [E], A1),
1504 make_suspension_continuation_goal(A, A1, S),
1505 run_suspensions_goal(A, F, X),
1506 ( uses_field(A, generation)
1507 -> get_update_static_suspension_field(A,
1508 E,
1509 Y,
1510 generation,
1511 P,
1512 O,
1513 M,
1514 Q),
1515 B1=(M, O is P+1, Q)
1516 ; B1=true
1517 ),
1518 get_update_static_suspension_field(A,
1519 E,
1520 Y,
1521 state,
1522 K,
1523 triggered,
1524 I,
1525 L),
1526 get_update_static_suspension_field(A,
1527 E,
1528 Y,
1529 state,
1530 V,
1531 active,
1532 D1,
1533 E1),
1534 if_used_state(A,
1535 removed,
1536 (I, (K==active->C1;true)),
1537 C1,
1538 F1),
1539 C1=(L, B1, S, D1, (V==triggered->E1;true)),
1540 G=(H:-E=Y, F1, X)
1541 )
1542 ; B=C
1543 ).
1544generate_attach_increment(B) :-
1545 get_max_constraint_index(A),
1546 ( is_used_auxiliary_predicate(attach_increment),
1547 A>0
1548 -> B=[C, D],
1549 generate_attach_increment_empty(C),
1550 ( A==1
1551 -> generate_attach_increment_one(D)
1552 ; generate_attach_increment_many(A, D)
1553 )
1554 ; B=[]
1555 ).
1556generate_attach_increment_empty((attach_increment([], _):-true)).
1557generate_attach_increment_one(I) :-
1558 J=attach_increment([A|H], E),
1559 get_target_module(C),
1560 chr_not_locked(A, B),
1561 K=(B, (get_attr(A, C, D)->sort(D, F), 'chr merge_attributes'(E, F, G), put_attr(A, C, G);put_attr(A, C, E)), attach_increment(H, E)),
1562 I=(J:-K).
1563generate_attach_increment_many(A, J) :-
1564 K=attach_increment([C|I], B),
1565 merge_attributes(A, B, F, G, H),
1566 get_target_module(E),
1567 chr_not_locked(C, D),
1568 L=(D, (get_attr(C, E, F)->G, put_attr(C, E, H);put_attr(C, E, B)), attach_increment(I, B)),
1569 J=(K:-L).
1570generate_attr_unify_hook(B) :-
1571 get_max_constraint_index(A),
1572 ( A==0
1573 -> B=[]
1574 ; B=[C|E],
1575 C=attribute_goals(_, D, D),
1576 ( A==1
1577 -> generate_attr_unify_hook_one(E)
1578 ; generate_attr_unify_hook_many(A, E)
1579 )
1580 ).
1581generate_attr_unify_hook_one([S]) :-
1582 T=attr_unify_hook(E, N),
1583 get_target_module(P),
1584 get_indexed_constraint(1, A),
1585 ( get_store_type(A, B),
1586 ( B=default
1587 ; B=multi_store(C),
1588 memberchk(default, C)
1589 )
1590 -> make_run_suspensions(H, D, Q),
1591 make_run_suspensions(D, D, R),
1592 ( atomic_types_suspended_constraint(A)
1593 -> I=true,
1594 D=E,
1595 J=true,
1596 K=F,
1597 L=(append(E, F, G), sort(G, H)),
1598 M=true
1599 ; I=sort(E, D),
1600 J=sort(F, K),
1601 L='chr merge_attributes'(D, K, H),
1602 use_auxiliary_predicate(attach_increment),
1603 M=(compound(N)->term_variables(N, O), attach_increment(O, D);true)
1604 ),
1605 U=(I, (var(N)->(get_attr(N, P, F)->J, L, put_attr(N, P, H), Q;put_attr(N, P, D), R);M, R)),
1606 S=(T:-U)
1607 ; get_store_type(A, var_assoc_store(_, _))
1608 -> make_run_suspensions(G, G, Q),
1609 L=merge_into_assoc_store(E, F, G),
1610 U=(get_attr(N, P, F)->L, Q;put_attr(N, P, E)),
1611 S=(T:-U)
1612 ).
1613generate_attr_unify_hook_many(A, [X]) :-
1614 chr_pp_flag(dynattr, off),
1615 !,
1616 Y=attr_unify_hook(B, O),
1617 get_target_module(S),
1618 make_attr(A, H, D, B),
1619 bagof(E,
1620 C^F^(member(C, D), E=sort(C, F)),
1621 G),
1622 list2conj(G, R),
1623 bagof(F, C^member(sort(C, F), G), I),
1624 merge_attributes2(A, H, I, T, U, J),
1625 get_all_suspensions2(A, J, K),
1626 make_attr(A, H, I, Q),
1627 make_run_suspensions_loop(K, I, V),
1628 make_run_suspensions_loop(I, I, W),
1629 ( forall(( between(1, A, L),
1630 get_indexed_constraint(L, M)
1631 ),
1632 atomic_types_suspended_constraint(M))
1633 -> N=true
1634 ; use_auxiliary_predicate(attach_increment),
1635 N=(compound(O)->term_variables(O, P), attach_increment(P, Q);true)
1636 ),
1637 Z=(R, (var(O)->(get_attr(O, S, T)->U, put_attr(O, S, J), V;put_attr(O, S, Q), W);N, W)),
1638 X=(Y:-Z).
1639generate_attr_unify_hook_many(B, R) :-
1640 P=attr_unify_hook(A, H),
1641 get_target_module(K),
1642 normalize_attr(A, J, C),
1643 normalize_attr(L, M, D),
1644 merge_attributes(B, C, D, N, O),
1645 make_run_suspensions(B),
1646 ( forall(( between(1, B, E),
1647 get_indexed_constraint(E, F)
1648 ),
1649 atomic_types_suspended_constraint(F))
1650 -> G=true
1651 ; use_auxiliary_predicate(attach_increment),
1652 G=(compound(H)->term_variables(H, I), attach_increment(I, C);true)
1653 ),
1654 Q=(J, (var(H)->(get_attr(H, K, L)->M, N, put_attr(H, K, O), '$dispatch_run_suspensions'(O);put_attr(H, K, C), '$dispatch_run_suspensions'(C));G, '$dispatch_run_suspensions'(C))),
1655 S=(P:-Q),
1656 R=[S, T, U|Y],
1657 T='$dispatch_run_suspensions'([]),
1658 U=('$dispatch_run_suspensions'([V-W|X]):-'$dispatch_run_suspensions'(V, W), '$dispatch_run_suspensions'(X)),
1659 run_suspensions_dispatchers(B, [], Y).
1660run_suspensions_dispatchers(A, B, H) :-
1661 ( A>0
1662 -> get_indexed_constraint(A, C),
1663 G=[('$dispatch_run_suspensions'(A, D):-E)|B],
1664 ( may_trigger(C)
1665 -> run_suspensions_goal(C, D, E)
1666 ; E=true
1667 ),
1668 F is A-1,
1669 run_suspensions_dispatchers(F, G, H)
1670 ; H=B
1671 ).
1672make_run_suspensions(A) :-
1673 ( A>0
1674 -> ( get_indexed_constraint(A, B),
1675 may_trigger(B)
1676 -> use_auxiliary_predicate(run_suspensions, B)
1677 ; true
1678 ),
1679 C is A-1,
1680 make_run_suspensions(C)
1681 ; true
1682 ).
1683make_run_suspensions(A, B, C) :-
1684 make_run_suspensions(1, A, B, C).
1685make_run_suspensions(A, E, C, D) :-
1686 ( get_indexed_constraint(A, B),
1687 may_trigger(B)
1688 -> use_auxiliary_predicate(run_suspensions, B),
1689 ( wakes_partially(B)
1690 -> run_suspensions_goal(B, C, D)
1691 ; run_suspensions_goal(B, E, D)
1692 )
1693 ; D=true
1694 ).
1695make_run_suspensions_loop(A, B, C) :-
1696 make_run_suspensions_loop(A, B, 1, C).
1697make_run_suspensions_loop([], [], _, true).
1698make_run_suspensions_loop([B|E], [C|F], A, (D, H)) :-
1699 make_run_suspensions(A, B, C, D),
1700 G is A+1,
1701 make_run_suspensions_loop(E, F, G, H).
1702generate_insert_delete_constraints([], []).
1703generate_insert_delete_constraints([A|D], B) :-
1704 ( is_stored(A)
1705 -> generate_insert_delete_constraint(A, B, C)
1706 ; B=C
1707 ),
1708 generate_insert_delete_constraints(D, C).
1709generate_insert_delete_constraint(A, B, D) :-
1710 insert_constraint_clause(A, B, C),
1711 delete_constraint_clause(A, C, D).
1712insert_constraint_goal(A, B, E, C) :-
1713 ( chr_pp_flag(inline_insertremove, off)
1714 -> use_auxiliary_predicate(insert_in_store, A),
1715 insert_constraint_atom(A, B, C)
1716 ; delay_phase_end(validate_store_type_assumptions,
1717 (insert_constraint_body(A, B, D, C), insert_constraint_direct_used_vars(D, E)))
1718 ).
1719insert_constraint_direct_used_vars([], _).
1720insert_constraint_direct_used_vars([A-C|D], B) :-
1721 nth1(A, B, C),
1722 insert_constraint_direct_used_vars(D, B).
1723insert_constraint_atom(A, D, B) :-
1724 make_name('$insert_in_store_', A, C),
1725 B=..[C, D].
1726insert_constraint_clause(A, B, C) :-
1727 ( is_used_auxiliary_predicate(insert_in_store, A)
1728 -> B=[D|C],
1729 D=(E:-J, I, G),
1730 insert_constraint_atom(A, F, E),
1731 insert_constraint_body(A, F, H, G),
1732 insert_constraint_used_vars(H, A, F, I),
1733 ( chr_pp_flag(store_counter, on)
1734 -> J='$insert_counter_inc'
1735 ; J=true
1736 )
1737 ; B=C
1738 ).
1739insert_constraint_used_vars([], _, _, true).
1740insert_constraint_used_vars([A-D|F], B, C, (E, G)) :-
1741 get_dynamic_suspension_term_field(argument(A),
1742 B,
1743 C,
1744 D,
1745 E),
1746 insert_constraint_used_vars(F, B, C, G).
1747insert_constraint_body(A, C, D, E) :-
1748 get_store_type(A, B),
1749 insert_constraint_body(B, A, C, D, E).
1750insert_constraint_body(default, A, D, [], F) :-
1751 global_list_store_name(A, B),
1752 make_get_store_goal(B, E, G),
1753 make_update_store_goal(B, C, H),
1754 ( chr_pp_flag(debugable, on)
1755 -> C=[D|E],
1756 F=(G, H)
1757 ; set_dynamic_suspension_term_field(global_list_prev,
1758 A,
1759 I,
1760 C,
1761 J),
1762 F=(G, C=[D|E], H, (E=[I|_]->J;true))
1763 ).
1764insert_constraint_body(multi_inthash(A), B, C, [], D) :-
1765 generate_multi_inthash_insert_constraint_bodies(A,
1766 B,
1767 C,
1768 D).
1769insert_constraint_body(multi_hash(A), B, C, E, D) :-
1770 generate_multi_hash_insert_constraint_bodies(A,
1771 B,
1772 C,
1773 D,
1774 E),
1775 sort_out_used_vars(E, _).
1776insert_constraint_body(atomic_constants(B, _, _), A, C, D, G) :-
1777 multi_hash_key_direct(A, B, C, F, D),
1778 constants_store_index_name(A, B, E),
1779 H=..[E, F, I],
1780 G=(H->nb_getval(I, J), b_setval(I, [C|J]);true).
1781insert_constraint_body(ground_constants(B, _, _), A, C, D, G) :-
1782 multi_hash_key_direct(A, B, C, F, D),
1783 constants_store_index_name(A, B, E),
1784 H=..[E, F, I],
1785 G=(H->nb_getval(I, J), b_setval(I, [C|J]);true).
1786insert_constraint_body(global_ground, A, D, [], F) :-
1787 global_ground_store_name(A, B),
1788 make_get_store_goal(B, E, G),
1789 make_update_store_goal(B, C, H),
1790 ( chr_pp_flag(debugable, on)
1791 -> C=[D|E],
1792 F=(G, H)
1793 ; set_dynamic_suspension_term_field(global_list_prev,
1794 A,
1795 I,
1796 C,
1797 J),
1798 F=(G, C=[D|E], H, (E=[I|_]->J;true))
1799 ).
1800insert_constraint_body(var_assoc_store(A, B), _, H, [A-D, B-G], C) :-
1801 get_target_module(E),
1802 C=(get_attr(D, E, F)->insert_assoc_store(F, G, H);new_assoc_store(F), put_attr(D, E, F), insert_assoc_store(F, G, H)).
1803insert_constraint_body(global_singleton, A, C, [], D) :-
1804 global_singleton_store_name(A, B),
1805 make_update_store_goal(B, C, E),
1806 D=E.
1807insert_constraint_body(multi_store(C), A, B, G, E) :-
1808 maplist(insert_constraint_body1(A, B), C, F, D),
1809 list2conj(D, E),
1810 sort_out_used_vars(F, G).
1811insert_constraint_body1(B, C, A, D, E) :-
1812 insert_constraint_body(A, B, C, D, E).
1813insert_constraint_body(identifier_store(B), D, I, A, G) :-
1814 A=[B-H],
1815 get_identifier_size(C),
1816 functor(F, struct, C),
1817 get_identifier_index(D, B, E),
1818 arg(E, F, J),
1819 G=(H=F, setarg(E, H, [I|J])).
1820insert_constraint_body(type_indexed_identifier_store(B, C), D, I, A, G) :-
1821 A=[B-H],
1822 type_indexed_identifier_structure(C, F),
1823 get_type_indexed_identifier_index(C, D, B, E),
1824 arg(E, F, J),
1825 G=(H=F, setarg(E, H, [I|J])).
1826sort_out_used_vars(A, D) :-
1827 flatten(A, B),
1828 sort(B, C),
1829 sort_out_used_vars1(C, D).
1830sort_out_used_vars1([], []).
1831sort_out_used_vars1([B-C], A) :-
1832 !,
1833 A=[B-C].
1834sort_out_used_vars1([A-C, B-D|E], F) :-
1835 ( A==B
1836 -> C=D,
1837 sort_out_used_vars1([A-C|E], F)
1838 ; F=[A-C|G],
1839 sort_out_used_vars1([B-D|E], G)
1840 ).
1841generate_multi_inthash_insert_constraint_bodies([], _, _, true).
1842generate_multi_inthash_insert_constraint_bodies([B|I], A, C, (D, J)) :-
1843 multi_hash_store_name(A, B, F),
1844 multi_hash_key(A, B, C, E, H),
1845 D=(E, nb_getval(F, G), insert_iht(G, H, C)),
1846 generate_multi_inthash_insert_constraint_bodies(I,
1847 A,
1848 C,
1849 J).
1850generate_multi_hash_insert_constraint_bodies([], _, _, true, []).
1851generate_multi_hash_insert_constraint_bodies([B|N], A, C, (G, O), [D|P]) :-
1852 multi_hash_store_name(A, B, E),
1853 multi_hash_key_direct(A, B, C, J, D),
1854 make_get_store_goal(E, I, H),
1855 ( chr_pp_flag(ht_removal, on)
1856 -> ht_prev_field(B, F),
1857 set_dynamic_suspension_term_field(F,
1858 A,
1859 L,
1860 K,
1861 M),
1862 G=(H, insert_ht(I, J, C, K), (K=[_, L|_]->M;true))
1863 ; G=(H, insert_ht(I, J, C))
1864 ),
1865 generate_multi_hash_insert_constraint_bodies(N,
1866 A,
1867 C,
1868 O,
1869 P).
1870delete_constraint_clause(A, B, C) :-
1871 ( is_used_auxiliary_predicate(delete_from_store, A)
1872 -> B=[D|C],
1873 D=(E:-I),
1874 delete_constraint_atom(A, H, E),
1875 A=F/G,
1876 functor(E, F, G),
1877 delete_constraint_body(A, E, H, [], I)
1878 ; B=C
1879 ).
1880delete_constraint_goal(A, E, G, F) :-
1881 functor(A, B, C),
1882 D=B/C,
1883 ( chr_pp_flag(inline_insertremove, off)
1884 -> use_auxiliary_predicate(delete_from_store, D),
1885 delete_constraint_atom(D, E, F)
1886 ; delay_phase_end(validate_store_type_assumptions,
1887 delete_constraint_body(D,
1888 A,
1889 E,
1890 G,
1891 F))
1892 ).
1893delete_constraint_atom(A, D, B) :-
1894 make_name('$delete_from_store_', A, C),
1895 B=..[C, D].
1896delete_constraint_body(C, E, F, G, A) :-
1897 A=(B, H),
1898 ( chr_pp_flag(store_counter, on)
1899 -> B='$delete_counter_inc'
1900 ; B=true
1901 ),
1902 get_store_type(C, D),
1903 delete_constraint_body(D, C, E, F, G, H).
1904delete_constraint_body(default, A, _, F, _, C) :-
1905 ( chr_pp_flag(debugable, on)
1906 -> global_list_store_name(A, B),
1907 make_get_store_goal(B, E, D),
1908 make_update_store_goal(B, G, H),
1909 C=(D, 'chr sbag_del_element'(E, F, G), H)
1910 ; get_dynamic_suspension_term_field(global_list_prev,
1911 A,
1912 F,
1913 J,
1914 K),
1915 global_list_store_name(A, B),
1916 make_get_store_goal(B, E, D),
1917 make_update_store_goal(B, L, H),
1918 set_dynamic_suspension_term_field(global_list_prev,
1919 A,
1920 I,
1921 _,
1922 M),
1923 set_dynamic_suspension_term_field(global_list_prev,
1924 A,
1925 I,
1926 J,
1927 N),
1928 C=(K, (var(J)->D, E=[_|L], H, (L=[I|_]->M;true);J=[_, _|L], setarg(2, J, L), (L=[I|_]->N;true)))
1929 ).
1930delete_constraint_body(multi_inthash(A), B, _, C, _, D) :-
1931 generate_multi_inthash_delete_constraint_bodies(A,
1932 B,
1933 C,
1934 D).
1935delete_constraint_body(multi_hash(A), B, C, D, E, F) :-
1936 generate_multi_hash_delete_constraint_bodies(A,
1937 B,
1938 C,
1939 D,
1940 E,
1941 F).
1942delete_constraint_body(atomic_constants(C, _, _), A, B, D, E, H) :-
1943 multi_hash_key(A, B, C, D, E, I, G),
1944 constants_store_index_name(A, C, F),
1945 J=..[F, G, K],
1946 H=(I, (J->nb_getval(K, L), 'chr sbag_del_element'(L, D, M), b_setval(K, M);true)).
1947delete_constraint_body(ground_constants(C, _, _), A, B, D, E, H) :-
1948 multi_hash_key(A, B, C, D, E, I, G),
1949 constants_store_index_name(A, C, F),
1950 J=..[F, G, K],
1951 H=(I, (J->nb_getval(K, L), 'chr sbag_del_element'(L, D, M), b_setval(K, M);true)).
1952delete_constraint_body(global_ground, A, _, F, _, C) :-
1953 ( chr_pp_flag(debugable, on)
1954 -> global_ground_store_name(A, B),
1955 make_get_store_goal(B, E, D),
1956 make_update_store_goal(B, G, H),
1957 C=(D, 'chr sbag_del_element'(E, F, G), H)
1958 ; get_dynamic_suspension_term_field(global_list_prev,
1959 A,
1960 F,
1961 J,
1962 K),
1963 global_ground_store_name(A, B),
1964 make_get_store_goal(B, E, D),
1965 make_update_store_goal(B, L, H),
1966 set_dynamic_suspension_term_field(global_list_prev,
1967 A,
1968 I,
1969 _,
1970 M),
1971 set_dynamic_suspension_term_field(global_list_prev,
1972 A,
1973 I,
1974 J,
1975 N),
1976 C=(K, (var(J)->D, E=[_|L], H, (L=[I|_]->M;true);J=[_, _|L], setarg(2, J, L), (L=[I|_]->N;true)))
1977 ).
1978delete_constraint_body(var_assoc_store(A, D), B, _, C, _, E) :-
1979 get_target_module(H),
1980 get_dynamic_suspension_term_field(argument(A),
1981 B,
1982 C,
1983 G,
1984 F),
1985 get_dynamic_suspension_term_field(argument(D),
1986 B,
1987 C,
1988 K,
1989 I),
1990 E=(F, get_attr(G, H, J), I, delete_assoc_store(J, K, C)).
1991delete_constraint_body(global_singleton, A, _, _, _, C) :-
1992 global_singleton_store_name(A, B),
1993 make_update_store_goal(B, [], D),
1994 C=D.
1995delete_constraint_body(multi_store(E), A, B, C, D, G) :-
1996 maplist(delete_constraint_body1(A, B, C, D),
1997 E,
1998 F),
1999 list2conj(F, G).
2000delete_constraint_body1(B, C, D, E, A, F) :-
2001 delete_constraint_body(A, B, C, D, E, F).
2002delete_constraint_body(identifier_store(D), F, A, C, B, I) :-
2003 get_suspension_argument_possibly_in_scope(A,
2004 B,
2005 C,
2006 D,
2007 K,
2008 J),
2009 get_identifier_size(E),
2010 functor(H, struct, E),
2011 get_identifier_index(F, D, G),
2012 arg(G, H, L),
2013 I=(J, K=H, 'chr sbag_del_element'(L, C, M), setarg(G, K, M)).
2014delete_constraint_body(type_indexed_identifier_store(D, E), F, A, C, B, I) :-
2015 get_suspension_argument_possibly_in_scope(A,
2016 B,
2017 C,
2018 D,
2019 K,
2020 J),
2021 type_indexed_identifier_structure(E, H),
2022 get_type_indexed_identifier_index(E, F, D, G),
2023 arg(G, H, L),
2024 I=(J, K=H, 'chr sbag_del_element'(L, C, M), setarg(G, K, M)).
2025generate_multi_inthash_delete_constraint_bodies([], _, _, true).
2026generate_multi_inthash_delete_constraint_bodies([B|I], A, C, (D, J)) :-
2027 multi_hash_store_name(A, B, F),
2028 multi_hash_key(A, B, C, E, H),
2029 D=(E, nb_getval(F, G), delete_iht(G, H, C)),
2030 generate_multi_inthash_delete_constraint_bodies(I,
2031 A,
2032 C,
2033 J).
2034generate_multi_hash_delete_constraint_bodies([], _, _, _, _, true).
2035generate_multi_hash_delete_constraint_bodies([B|S], A, C, D, E, (J, T)) :-
2036 multi_hash_store_name(A, B, F),
2037 multi_hash_key(A, C, B, D, E, M, O),
2038 make_get_store_goal(F, N, L),
2039 ( chr_pp_flag(ht_removal, on)
2040 -> ht_prev_field(B, G),
2041 get_dynamic_suspension_term_field(G,
2042 A,
2043 D,
2044 I,
2045 K),
2046 set_dynamic_suspension_term_field(G,
2047 A,
2048 H,
2049 _,
2050 Q),
2051 set_dynamic_suspension_term_field(G,
2052 A,
2053 H,
2054 I,
2055 R),
2056 J=(K, (var(I)->L, M, delete_first_ht(N, O, P), (P=[H|_]->Q;true);I=[_, _|P], setarg(2, I, P), (P=[H|_]->R;true)))
2057 ; J=(M, L, delete_ht(N, O, D))
2058 ),
2059 generate_multi_hash_delete_constraint_bodies(S,
2060 _,
2061 C,
2062 D,
2063 E,
2064 T).
2065generate_attach_code(A, C) :-
2066 enumerate_stores_code(A, B),
2067 append(B, D, C),
2068 generate_attach_code(A, D, E),
2069 module_initializers(F),
2070 prolog_global_variables_code(G),
2071 E=[('$chr_initialization':-F), (:-initialization'$chr_initialization')|G].
2072generate_attach_code([], A, A).
2073generate_attach_code([A|D], C, F) :-
2074 get_store_type(A, B),
2075 generate_attach_code(B, A, C, E),
2076 generate_attach_code(D, E, F).
2077generate_attach_code(default, A, B, C) :-
2078 global_list_store_initialisation(A, B, C).
2079generate_attach_code(multi_inthash(A), B, C, E) :-
2080 multi_inthash_store_initialisations(A, B, C, D),
2081 multi_inthash_via_lookups(A, B, D, E).
2082generate_attach_code(multi_hash(A), B, C, E) :-
2083 multi_hash_store_initialisations(A, B, C, D),
2084 multi_hash_lookups(A, B, D, E).
2085generate_attach_code(atomic_constants(B, C, _), A, D, E) :-
2086 constants_initializers(A, B, C),
2087 atomic_constants_code(A, B, C, D, E).
2088generate_attach_code(ground_constants(B, C, _), A, D, E) :-
2089 constants_initializers(A, B, C),
2090 ground_constants_code(A, B, C, D, E).
2091generate_attach_code(global_ground, A, B, C) :-
2092 global_ground_store_initialisation(A, B, C).
2093generate_attach_code(var_assoc_store(_, _), _, A, A) :-
2094 use_auxiliary_module(chr_assoc_store).
2095generate_attach_code(global_singleton, A, B, C) :-
2096 global_singleton_store_initialisation(A, B, C).
2097generate_attach_code(multi_store(A), B, C, D) :-
2098 multi_store_generate_attach_code(A, B, C, D).
2099generate_attach_code(identifier_store(B), A, L, P) :-
2100 get_identifier_index(A, B, C),
2101 ( C==2
2102 -> get_identifier_size(D),
2103 functor(E, struct, D),
2104 E=..[_, G|F],
2105 set_elems(F, []),
2106 M=new_identifier(G, E),
2107 functor(H, struct, D),
2108 arg(1, H, I),
2109 N=(user:portray(H):-write('<id:'), print(I), write(>)),
2110 functor(J, struct, D),
2111 arg(1, J, K),
2112 O=identifier_label(J, K),
2113 L=[M, N, O|P]
2114 ; L=P
2115 ).
2116generate_attach_code(type_indexed_identifier_store(C, A), B, E, S1) :-
2117 get_type_indexed_identifier_index(A, B, C, D),
2118 ( D==2
2119 -> identifier_store_initialization(A, E, K1),
2120 get_type_indexed_identifier_size(A, _),
2121 type_indexed_identifier_structure(A, F),
2122 F=..[_, I|G],
2123 set_elems(G, []),
2124 type_indexed_identifier_name(A, new_identifier, H),
2125 L1=..[H, I, F],
2126 N=..[H, K, M],
2127 type_indexed_identifier_structure(A, J),
2128 J=..[_, K|L],
2129 set_elems(L, []),
2130 O=(M=J),
2131 M1=user:goal_expansion(N, O),
2132 type_indexed_identifier_structure(A, P),
2133 arg(1, P, Q),
2134 N1=(user:portray(P):-write('<id:'), print(Q), write(>)),
2135 type_indexed_identifier_structure(A, R),
2136 arg(1, R, T),
2137 type_indexed_identifier_name(A, identifier_label, S),
2138 O1=..[S, R, T],
2139 X=..[S, W, V],
2140 type_indexed_identifier_structure(A, U),
2141 arg(1, U, V),
2142 Y=(W=U),
2143 P1=(user:goal_expansion(X, Y):-writeln(expanding)),
2144 identifier_store_name(A, D1),
2145 lookup_identifier_atom(A, A1, B1, C1),
2146 type_indexed_identifier_name(A, new_identifier, Z),
2147 F1=..[Z, A1, B1],
2148 Q1=(C1:-nb_getval(D1, E1), (lookup_ht(E1, A1, [B1])->true;F1, insert_ht(E1, A1, B1))),
2149 lookup_only_identifier_atom(A, I1, J1, G1),
2150 R1=(G1:-nb_getval(D1, H1), lookup_ht(H1, I1, [J1])),
2151 K1=[(:-multifile goal_expansion/2), (:-dynamic goal_expansion/2), L1, M1, N1, O1, P1, Q1, R1|S1]
2152 ; E=S1
2153 ).
2154constants_initializers(A, B, C) :-
2155 maplist(constant_initializer(A, B), C).
2156constant_initializer(A, B, C) :-
2157 constants_store_name(A, B, C, D),
2158 prolog_global_variable(D),
2159 module_initializer(nb_setval(D, [])).
2160lookup_identifier_atom(A, D, E, B) :-
2161 atom_concat(lookup_identifier_, A, C),
2162 B=..[C, D, E].
2163lookup_only_identifier_atom(A, D, E, B) :-
2164 atom_concat(lookup_only_identifier_, A, C),
2165 B=..[C, D, E].
2166identifier_label_atom(A, D, E, B) :-
2167 type_indexed_identifier_name(A, identifier_label, C),
2168 B=..[C, D, E].
2169multi_store_generate_attach_code([], _, A, A).
2170multi_store_generate_attach_code([A|D], B, C, F) :-
2171 generate_attach_code(A, B, C, E),
2172 multi_store_generate_attach_code(D, B, E, F).
2173multi_inthash_store_initialisations([], _, A, A).
2174multi_inthash_store_initialisations([B|F], A, E, H) :-
2175 use_auxiliary_module(chr_integertable_store),
2176 multi_hash_store_name(A, B, C),
2177 module_initializer((new_iht(D), nb_setval(C, D))),
2178 G=E,
2179 multi_inthash_store_initialisations(F, A, G, H).
2180multi_hash_store_initialisations([], _, A, A).
2181multi_hash_store_initialisations([B|G], A, F, I) :-
2182 use_auxiliary_module(chr_hashtable_store),
2183 multi_hash_store_name(A, B, C),
2184 prolog_global_variable(C),
2185 make_init_store_goal(C, D, E),
2186 module_initializer((new_ht(D), E)),
2187 H=F,
2188 multi_hash_store_initialisations(G, A, H, I).
2189global_list_store_initialisation(A, D, E) :-
2190 ( is_stored(A)
2191 -> global_list_store_name(A, B),
2192 prolog_global_variable(B),
2193 make_init_store_goal(B, [], C),
2194 module_initializer(C)
2195 ; true
2196 ),
2197 D=E.
2198global_ground_store_initialisation(A, D, E) :-
2199 global_ground_store_name(A, B),
2200 prolog_global_variable(B),
2201 make_init_store_goal(B, [], C),
2202 module_initializer(C),
2203 D=E.
2204global_singleton_store_initialisation(A, D, E) :-
2205 global_singleton_store_name(A, B),
2206 prolog_global_variable(B),
2207 make_init_store_goal(B, [], C),
2208 module_initializer(C),
2209 D=E.
2210identifier_store_initialization(A, E, F) :-
2211 use_auxiliary_module(chr_hashtable_store),
2212 identifier_store_name(A, B),
2213 prolog_global_variable(B),
2214 make_init_store_goal(B, C, D),
2215 module_initializer((new_ht(C), D)),
2216 E=F.
2217multi_inthash_via_lookups([], _, A, A).
2218multi_inthash_via_lookups([B|H], A, E, J) :-
2219 multi_hash_lookup_head(A, B, C, D, F),
2220 multi_hash_lookup_body(A, inthash, B, C, D, G),
2221 E=[(F:-G)|I],
2222 multi_inthash_via_lookups(H, A, I, J).
2223multi_hash_lookups([], _, A, A).
2224multi_hash_lookups([B|H], A, E, J) :-
2225 multi_hash_lookup_head(A, B, C, D, F),
2226 multi_hash_lookup_body(A, hash, B, C, D, G),
2227 E=[(F:-G)|I],
2228 multi_hash_lookups(H, A, I, J).
2229multi_hash_lookup_head(A, B, E, F, C) :-
2230 multi_hash_lookup_name(A, B, D),
2231 C=..[D, E, F].
2232multi_hash_lookup_body(A, K, B, D, G, E) :-
2233 get_store_type(A, multi_store(C)),
2234 ( memberchk(atomic_constants(B, J, _), C)
2235 -> ( ground(D)
2236 -> constants_store_name(A, B, D, F),
2237 E=nb_getval(F, G)
2238 ; constants_store_index_name(A, B, H),
2239 I=..[H, D, F],
2240 E=(I, nb_getval(F, G))
2241 )
2242 ; memberchk(ground_constants(B, J, _), C)
2243 -> ( ground(D)
2244 -> constants_store_name(A, B, D, F),
2245 E=nb_getval(F, G)
2246 ; constants_store_index_name(A, B, H),
2247 I=..[H, D, F],
2248 E=(I, nb_getval(F, G))
2249 )
2250 ; memberchk(multi_hash([B]), C)
2251 -> multi_hash_store_name(A, B, F),
2252 make_get_store_goal(F, N, L),
2253 ( K==hash,
2254 specialized_hash_term_call(A,
2255 B,
2256 D,
2257 O,
2258 M)
2259 -> E=(L, M, lookup_ht1(N, O, D, G))
2260 ; lookup_hash_call(K, N, D, G, I),
2261 E=(L, I)
2262 )
2263 ; K==inthash
2264 -> multi_hash_store_name(A, B, F),
2265 make_get_store_goal(F, N, L),
2266 lookup_hash_call(K, N, D, G, I),
2267 E=(L, I)
2268 ).
2269lookup_hash_call(hash, A, B, C, lookup_ht(A, B, C)).
2270lookup_hash_call(inthash, A, B, C, lookup_iht(A, B, C)).
2271specialized_hash_term_call(_, _, A, B, C) :-
2272 ( ground(A)
2273 -> term_hash(A, B),
2274 C=true
2275 ).
2276multi_hash_lookup_goal(B, F, C, A, G, H) :-
2277 ( atomic(A)
2278 -> actual_atomic_multi_hash_keys(B, C, [A])
2279 ; ground(A)
2280 -> actual_ground_multi_hash_keys(B, C, [A])
2281 ; C=[D],
2282 get_constraint_arg_type(B, D, E),
2283 is_chr_constants_type(E, _, _)
2284 -> true
2285 ; actual_non_ground_multi_hash_key(B, C)
2286 ),
2287 delay_phase_end(validate_store_type_assumptions,
2288 multi_hash_lookup_body(B,
2289 F,
2290 C,
2291 A,
2292 G,
2293 H)).
2294multi_hash_lookup_name(B/C, A, E) :-
2295 atom_concat_list(A, D),
2296 atom_concat_list(['$via1_multi_hash_', B, '___', C, -, D],
2297 E).
2298multi_hash_store_name(C/D, A, F) :-
2299 get_target_module(B),
2300 atom_concat_list(A, E),
2301 atom_concat_list(
2302 [ '$chr_store_multi_hash_',
2303 B,
2304 '____',
2305 C,
2306 '___',
2307 D,
2308 (-),
2309 E
2310 ],
2311 F).
2312multi_hash_key(C, A, D, F, E) :-
2313 ( A=[B]
2314 -> get_dynamic_suspension_term_field(argument(B),
2315 C,
2316 D,
2317 E,
2318 F)
2319 ; maplist(get_dynamic_suspension_term_field1(C, D),
2320 A,
2321 G,
2322 H),
2323 E=..[k|G],
2324 list2conj(H, F)
2325 ).
2326get_dynamic_suspension_term_field1(B, C, A, D, E) :-
2327 get_dynamic_suspension_term_field(argument(A),
2328 B,
2329 C,
2330 D,
2331 E).
2332multi_hash_key(_, B, A, D, C, G, F) :-
2333 ( A=[E]
2334 -> get_suspension_argument_possibly_in_scope(B,
2335 C,
2336 D,
2337 E,
2338 F,
2339 G)
2340 ; maplist(get_suspension_argument_possibly_in_scope(B,
2341 C,
2342 D),
2343 A,
2344 H,
2345 I),
2346 F=..[k|H],
2347 list2conj(I, G)
2348 ).
2349get_suspension_argument_possibly_in_scope(B, I, N, A, F, G) :-
2350 arg(A, B, C),
2351 ( ground(C),
2352 C='$chr_identifier_match'(E, D)
2353 -> functor(B, K, L),
2354 lookup_identifier_atom(D, E, F, G)
2355 ; term_variables(C, H),
2356 copy_term_nat(C-H, F-J),
2357 translate(H, I, J)
2358 -> G=true
2359 ; functor(B, K, L),
2360 M=K/L,
2361 get_dynamic_suspension_term_field(argument(A),
2362 M,
2363 N,
2364 F,
2365 G)
2366 ).
2367multi_hash_key_direct(_, A, _, D, B) :-
2368 ( A=[C]
2369 -> B=[C-D]
2370 ; pairup(A, E, B),
2371 D=..[k|E]
2372 ).
2373args(B, A, C) :-
2374 maplist(arg1(A), B, C).
2375split_args(A, B, C, D) :-
2376 split_args(A, B, 1, C, D).
2377split_args([], A, _, [], A).
2378split_args([B|E], [D|F], A, C, I) :-
2379 G is A+1,
2380 ( B==A
2381 -> C=[D|H],
2382 split_args(E, F, G, H, I)
2383 ; I=[D|H],
2384 split_args([B|E], F, G, C, H)
2385 ).
2386atomic_constants_code(A, B, D, G, F) :-
2387 constants_store_index_name(A, B, C),
2388 maplist(atomic_constant_code(A, B, C), D, E),
2389 append(E, F, G).
2390atomic_constant_code(A, B, E, C, D) :-
2391 constants_store_name(A, B, C, F),
2392 D=..[E, C, F].
2393ground_constants_code(A, B, C, H, I) :-
2394 constants_store_index_name(A, B, G),
2395 maplist(constants_store_name(A, B), C, F),
2396 length(C, D),
2397 replicate(D, [], E),
2398 trie_index([C|E], F, G, H, I).
2399constants_store_name(D/E, B, A, H) :-
2400 get_target_module(C),
2401 term_to_atom(A, G),
2402 term_to_atom(B, F),
2403 atom_concat_list(
2404 [ '$chr_store_constants_',
2405 C,
2406 '____',
2407 D,
2408 '___',
2409 E,
2410 '___',
2411 F,
2412 '___',
2413 G
2414 ],
2415 H).
2416constants_store_index_name(C/D, A, F) :-
2417 get_target_module(B),
2418 term_to_atom(A, E),
2419 atom_concat_list(
2420 [ '$chr_store_constants_',
2421 B,
2422 '____',
2423 C,
2424 '___',
2425 D,
2426 '___',
2427 E
2428 ],
2429 F).
2430trie_index([A|C], D, B, E, F) :-
2431 trie_step(A, B, B, C, D, E, F).
2432trie_step([], _, _, [], [], A, A) :-
2433 !.
2434trie_step(C, K, L, A, J, M, N) :-
2435 A=[B|_],
2436 length(B, G),
2437 aggregate_all(set(E/F),
2438 ( member(D, C),
2439 functor(D, E, F)
2440 ),
2441 H),
2442 I is G+1,
2443 trie_step_cases(H,
2444 I,
2445 C,
2446 A,
2447 J,
2448 K,
2449 L,
2450 M,
2451 N).
2452trie_step_cases([], _, _, _, _, _, _, A, A).
2453trie_step_cases([A|I], B, C, D, E, F, G, H, K) :-
2454 trie_step_case(A,
2455 B,
2456 C,
2457 D,
2458 E,
2459 F,
2460 G,
2461 H,
2462 J),
2463 trie_step_cases(I,
2464 B,
2465 C,
2466 D,
2467 E,
2468 F,
2469 G,
2470 J,
2471 K).
2472trie_step_case(H/I, B, P, S, Q, D, B1, [A|M], N) :-
2473 A=(C:-O),
2474 E is B+1,
2475 functor(C, D, E),
2476 arg(1, C, G),
2477 C=..[_, _|F],
2478 once(append(X, [L], F)),
2479 functor(G, H, I),
2480 G=..[_|J],
2481 append(J, F, K),
2482 ( K==[L]
2483 -> M=N,
2484 O=true,
2485 rec_cases(P,
2486 _,
2487 Q,
2488 H/I,
2489 _,
2490 _,
2491 R),
2492 R=[L]
2493 ; rec_cases(P,
2494 S,
2495 Q,
2496 H/I,
2497 U,
2498 T,
2499 R),
2500 ( T=[V]
2501 -> M=N,
2502 O=true,
2503 append([U, V, R], K)
2504 ; pairup(U, T, W),
2505 common_pattern(W, A1, C1, F1),
2506 append(J, X, [Y|Z]),
2507 Y-Z=A1,
2508 fresh_symbol(B1, D1),
2509 append(C1, [L], E1),
2510 O=..[D1|E1],
2511 maplist(head_tail, F1, G1, H1),
2512 trie_step(G1,
2513 D1,
2514 B1,
2515 H1,
2516 R,
2517 M,
2518 N)
2519 )
2520 ).
2521head_tail([A|B], A, B).
2522rec_cases([], [], [], _, [], [], []).
2523rec_cases([A|L], [E|M], [K|N], B/C, F, H, J) :-
2524 ( functor(A, B, C),
2525 A=..[_|D],
2526 append(D, E, [G|I])
2527 -> F=[G|O],
2528 H=[I|P],
2529 J=[K|Q],
2530 rec_cases(L,
2531 M,
2532 N,
2533 B/C,
2534 O,
2535 P,
2536 Q)
2537 ; rec_cases(L,
2538 M,
2539 N,
2540 B/C,
2541 F,
2542 H,
2543 J)
2544 ).
2545common_pattern(A, B, C, D) :-
2546 fold1(chr_translate:gct, A, B),
2547 term_variables(B, C),
2548 findall(C, member(B, A), D).
2549gct(A, B, C) :-
2550 gct_(A, B, C, [], _).
2551gct_(A, B, G, K, L) :-
2552 ( nonvar(A),
2553 nonvar(B),
2554 functor(A, C, E),
2555 functor(B, D, F),
2556 C==D,
2557 E==F
2558 -> functor(G, C, E),
2559 A=..[_|H],
2560 B=..[_|I],
2561 G=..[_|J],
2562 maplist_dcg(chr_translate:gct_,
2563 H,
2564 I,
2565 J,
2566 K,
2567 L)
2568 ; lookup_eq(K, A+B, G)
2569 -> L=K
2570 ; L=[A+B-G|K]
2571 ).
2572global_list_store_name(B/C, D) :-
2573 get_target_module(A),
2574 atom_concat_list(
2575 [ '$chr_store_global_list_',
2576 A,
2577 '____',
2578 B,
2579 '___',
2580 C
2581 ],
2582 D).
2583global_ground_store_name(B/C, D) :-
2584 get_target_module(A),
2585 atom_concat_list(
2586 [ '$chr_store_global_ground_',
2587 A,
2588 '____',
2589 B,
2590 '___',
2591 C
2592 ],
2593 D).
2594global_singleton_store_name(B/C, D) :-
2595 get_target_module(A),
2596 atom_concat_list(
2597 [ '$chr_store_global_singleton_',
2598 A,
2599 '____',
2600 B,
2601 '___',
2602 C
2603 ],
2604 D).
2605identifier_store_name(B, C) :-
2606 get_target_module(A),
2607 atom_concat_list(['$chr_identifier_lookup_', A, '____', B], C).
2608:- if(current_predicate(user:exception/3)). 2609prolog_global_variables_code([]) :-
2610 tmp_module,
2611 !.
2612prolog_global_variables_code(B) :-
2613 prolog_global_variables(A),
2614 ( A==[]
2615 -> B=[]
2616 ; maplist(wrap_in_functor('$chr_prolog_global_variable'), A, D),
2617 B=[(:-dynamic user:exception/3), (:-multifile user:exception/3), (user:exception(undefined_global_variable, C, retry):-'$chr_prolog_global_variable'(C), '$chr_initialization')|D]
2618 ).
2619tmp_module :-
2620 prolog_load_context(module, A),
2621 module_property(A, class(temporary)).
2622:- else. 2623prolog_global_variables_code([]).
2624:- endif. 2625sbag_member_call(A, B, member(A, B)).
2626update_mutable_call(A, B, 'chr update_mutable'(A, B)).
2627create_mutable_call(B, A, true) :-
2628 A=mutable(B).
2629get_suspension_field(B, C, A, D, E) :-
2630 get_dynamic_suspension_term_field(A, B, C, D, E).
2631update_suspension_field(B, C, A, D, E) :-
2632 set_dynamic_suspension_term_field(A, B, C, D, E).
2633get_update_suspension_field(B, C, A, D, F, true, E, G) :-
2634 get_dynamic_suspension_term_field(A, B, C, D, E),
2635 set_dynamic_suspension_term_field(A, B, C, F, G).
2636create_static_suspension_field(B, C, A, D, true) :-
2637 get_static_suspension_term_field(A, B, C, D).
2638get_static_suspension_field(B, C, A, D, true) :-
2639 get_static_suspension_term_field(A, B, C, D).
2640get_update_static_suspension_field(B, E, C, A, D, F, true, G) :-
2641 get_static_suspension_term_field(A, B, C, D),
2642 set_dynamic_suspension_term_field(A, B, E, F, G).
2643enumerate_stores_code(C, [A|E]) :-
2644 B='$enumerate_constraints'(D),
2645 A=(B:-F),
2646 enumerate_store_bodies(C, D, E),
2647 ( E=[]
2648 -> F=fail
2649 ; F=(nonvar(D)->functor(D, G, _), '$enumerate_constraints'(G, D);'$enumerate_constraints'(_, D))
2650 ).
2651enumerate_store_bodies([], _, []).
2652enumerate_store_bodies([A|N], F, J) :-
2653 ( is_stored(A)
2654 -> get_store_type(A, B),
2655 ( enumerate_store_body(B, A, C, G)
2656 -> true
2657 ; chr_error(internal,
2658 'Could not generate enumeration code for constraint ~w.\n',
2659 [A])
2660 ),
2661 get_dynamic_suspension_term_field(arguments,
2662 A,
2663 C,
2664 E,
2665 H),
2666 A=D/_,
2667 I=..[D|E],
2668 K='$enumerate_constraints'(D, F),
2669 L=(G, H, F=I),
2670 J=[(K:-L)|M]
2671 ; J=M
2672 ),
2673 enumerate_store_bodies(N, F, M).
2674enumerate_store_body(default, A, B, E) :-
2675 global_list_store_name(A, C),
2676 sbag_member_call(B, D, G),
2677 make_get_store_goal_no_error(C, D, F),
2678 E=(F, G).
2679enumerate_store_body(multi_inthash([A|_]), B, C, D) :-
2680 multi_inthash_enumerate_store_body(A, B, C, D).
2681enumerate_store_body(multi_hash([A|_]), B, C, D) :-
2682 multi_hash_enumerate_store_body(A, B, C, D).
2683enumerate_store_body(atomic_constants(C, D, A), B, H, F) :-
2684 A==complete,
2685 maplist(enumerate_constant_store_body(B, C, I),
2686 D,
2687 E),
2688 list2disj(E, G),
2689 F=(G, member(H, I)).
2690enumerate_constant_store_body(B, C, A, D, nb_getval(E, A)) :-
2691 constants_store_name(B, C, D, E).
2692enumerate_store_body(ground_constants(A, B, C), D, E, F) :-
2693 enumerate_store_body(atomic_constants(A, B, C),
2694 D,
2695 E,
2696 F).
2697enumerate_store_body(global_ground, A, B, E) :-
2698 global_ground_store_name(A, C),
2699 sbag_member_call(B, D, G),
2700 make_get_store_goal(C, D, F),
2701 E=(F, G).
2702enumerate_store_body(var_assoc_store(_, _), _, _, A) :-
2703 A=fail.
2704enumerate_store_body(global_singleton, A, C, D) :-
2705 global_singleton_store_name(A, B),
2706 make_get_store_goal(B, C, E),
2707 D=(E, C\==[]).
2708enumerate_store_body(multi_store(A), B, C, D) :-
2709 ( memberchk(global_ground, A)
2710 -> enumerate_store_body(global_ground, B, C, D)
2711 ; once(( member(E, A),
2712 enumerate_store_body(E, B, C, D)
2713 ))
2714 ).
2715enumerate_store_body(identifier_store(_), _, _, A) :-
2716 A=fail.
2717enumerate_store_body(type_indexed_identifier_store(_, _), _, _, A) :-
2718 A=fail.
2719multi_inthash_enumerate_store_body(B, A, F, C) :-
2720 multi_hash_store_name(A, B, D),
2721 C=(nb_getval(D, E), value_iht(E, F)).
2722multi_hash_enumerate_store_body(B, A, G, D) :-
2723 multi_hash_store_name(A, B, C),
2724 make_get_store_goal(C, F, E),
2725 D=(E, value_ht(F, G)).
2726guard_simplification :-
2727 ( chr_pp_flag(guard_simplification, on)
2728 -> precompute_head_matchings,
2729 simplify_guards(1)
2730 ; true
2731 ).
2732next_prev_rule(A, C, D) :-
2733 ( find_min_q(A, _-B)
2734 -> B=(-C),
2735 normalize_heap(A, B, D)
2736 ; C=0,
2737 D=A
2738 ).
2739normalize_heap(A, B, I) :-
2740 ( find_min_q(A, _-B)
2741 -> delete_min_q(A, F, tuple(D, C, _)-_),
2742 ( C>1
2743 -> E is C-1,
2744 get_occurrence(D, E, G, _),
2745 insert_q(F,
2746 tuple(D, E, G)-(-G),
2747 H)
2748 ; H=F
2749 ),
2750 normalize_heap(H, B, I)
2751 ; I=A
2752 ).
2753head_types_modes_condition([], _, true).
2754head_types_modes_condition([B|D], A, (C, E)) :-
2755 types_modes_condition(A, B, C),
2756 head_types_modes_condition(D, A, E).
2757add_background_info(A, D) :-
2758 get_bg_info(B),
2759 add_background_info2(A, C),
2760 append(B, C, D).
2761add_background_info2(A, []) :-
2762 var(A),
2763 !.
2764add_background_info2([], []) :-
2765 !.
2766add_background_info2([A|B], E) :-
2767 !,
2768 add_background_info2(A, C),
2769 add_background_info2(B, D),
2770 append(C, D, E).
2771add_background_info2(A, F) :-
2772 ( functor(A, _, B),
2773 B>0
2774 -> A=..[_|C],
2775 add_background_info2(C, D)
2776 ; D=[]
2777 ),
2778 get_bg_info(A, E),
2779 append(E, D, F).
2780normalize_conj_list(A, C) :-
2781 list2conj(A, B),
2782 conj2list(B, C).
2783compute_derived_info([], _, _, _, _, _, _, _, [], []).
2784compute_derived_info([D|Z], A, H, G, B, A1, U, B1, [R|C1], [Y|D1]) :-
2785 copy_term(A-B, C),
2786 variable_replacement(A-B, C, E),
2787 append(D, E, J),
2788 list2conj(A, F),
2789 negate_b(F, N),
2790 make_head_matchings_explicit_not_negated2(G, H, I),
2791 list2conj(I, P),
2792 term_variables(J, L),
2793 term_variables(A-B-I, K),
2794 new_vars(K, L, M),
2795 append(J, M, S),
2796 ( B==true
2797 -> O=N
2798 ; negate_b(B, Q),
2799 O=(N;P, Q)
2800 ),
2801 copy_with_variable_replacement(O, R, S),
2802 copy_with_variable_replacement(B, V, S),
2803 copy_with_variable_replacement(A, T, S),
2804 list2conj(T, X),
2805 apply_guard_wrt_term(U, V, W),
2806 apply_guard_wrt_term(W, X, Y),
2807 compute_derived_info(Z,
2808 A,
2809 H,
2810 G,
2811 B,
2812 A1,
2813 U,
2814 B1,
2815 C1,
2816 D1).
2817simplify_guard(A, C, B, G, E) :-
2818 conj2list(A, D),
2819 guard_entailment:simplify_guards(B, C, D, F, E),
2820 list2conj(F, G).
2821new_vars([], _, []).
2822new_vars([A|C], B, D) :-
2823 ( memberchk_eq(A, B)
2824 -> new_vars(C, B, D)
2825 ; D=[A-E, E-A|F],
2826 new_vars(C, B, F)
2827 ).
2828head_subset(A, B, C) :-
2829 head_subset(A, B, C, [], _).
2830head_subset([], B, A, A, B).
2831head_subset([B|D], A, F, C, H) :-
2832 head_member(A, B, G, C, E),
2833 head_subset(D, E, F, G, H).
2834head_member([B|F], A, D, C, E) :-
2835 ( variable_replacement(A, B, C, D),
2836 E=F
2837 ; E=[B|G],
2838 head_member(F, A, D, C, G)
2839 ).
2840make_head_matchings_explicit(A, D, E) :-
2841 make_head_matchings_explicit_memo_lookup(A, B, C),
2842 copy_term_nat(B-C, D-E).
2843make_head_matchings_explicit_(A, E, C) :-
2844 extract_arguments(A, B),
2845 make_matchings_explicit(B, D, [], [], _, C),
2846 substitute_arguments(A, D, E).
2847make_head_matchings_explicit_not_negated(A, E, C) :-
2848 extract_arguments(A, B),
2849 make_matchings_explicit_not_negated(B, D, C),
2850 substitute_arguments(A, D, E).
2851make_head_matchings_explicit_not_negated2(A, B, E) :-
2852 extract_arguments(A, C),
2853 extract_arguments(B, D),
2854 make_matchings_explicit_not_negated(C, D, E).
([], []).
2856extract_arguments([A|D], C) :-
2857 A=..[_|B],
2858 append(B, E, C),
2859 extract_arguments(D, E).
2860substitute_arguments([], [], []).
2861substitute_arguments([A|G], C, [D|I]) :-
2862 functor(A, E, B),
2863 split_at(B, C, F, H),
2864 D=..[E|F],
2865 substitute_arguments(G, H, I).
2866make_matchings_explicit([], [], _, A, A, []).
2867make_matchings_explicit([A|S], [F|U], B, C, V, D) :-
2868 ( var(A)
2869 -> ( memberchk_eq(A, B)
2870 -> list2disj(C, E),
2871 D=[(E;F==A)|G],
2872 H=B
2873 ; D=G,
2874 F=A,
2875 H=[A|B]
2876 ),
2877 Q=C
2878 ; functor(A, I, M),
2879 A=..[I|J],
2880 make_matchings_explicit(J,
2881 K,
2882 B,
2883 C,
2884 R,
2885 L),
2886 N=..[I|K],
2887 ( L==[]
2888 -> D=[functor(F, I, M)|G]
2889 ; list2conj(L, O),
2890 list2disj(C, E),
2891 P=(F\=N;E;O),
2892 D=[functor(F, I, M), P|G]
2893 ),
2894 Q=[F\=N|R],
2895 term_variables(S, T),
2896 append(T, B, H)
2897 ),
2898 make_matchings_explicit(S,
2899 U,
2900 H,
2901 Q,
2902 V,
2903 G).
2904make_matchings_explicit_not_negated([], [], []).
2905make_matchings_explicit_not_negated([C|D], [B|E], A) :-
2906 A=[B=C|F],
2907 make_matchings_explicit_not_negated(D, E, F).
2908apply_guard_wrt_term([], _, []).
2909apply_guard_wrt_term([A|G], B, [C|H]) :-
2910 ( var(A)
2911 -> apply_guard_wrt_variable(B, A, C)
2912 ; A=..[E|D],
2913 apply_guard_wrt_term(D, B, F),
2914 C=..[E|F]
2915 ),
2916 apply_guard_wrt_term(G, B, H).
2917apply_guard_wrt_variable((A, C), B, E) :-
2918 !,
2919 apply_guard_wrt_variable(A, B, D),
2920 apply_guard_wrt_variable(C, D, E).
2921apply_guard_wrt_variable(A, B, D) :-
2922 ( A=(C=E),
2923 B==C
2924 -> D=E
2925 ; A=functor(F, G, H),
2926 B==F,
2927 ground(G),
2928 ground(H)
2929 -> functor(D, G, H)
2930 ; D=B
2931 ).
2932replace_some_heads(A, B, _, [], A, B, _, _, []) :-
2933 !.
2934replace_some_heads([], [M|D], [A|E], [B|F], [], [C|G], H, I, J) :-
2935 !,
2936 ( A==B
2937 -> C=B,
2938 replace_some_heads([],
2939 D,
2940 E,
2941 F,
2942 [],
2943 G,
2944 H,
2945 I,
2946 J)
2947 ; B=functor(K, N, L),
2948 A==K
2949 -> length(O, L),
2950 ( var(M)
2951 -> Q=[],
2952 C=..[N|O]
2953 ; M=..[N|P],
2954 use_same_args(P, O, R, H, I, Q),
2955 C=..[N|R]
2956 ),
2957 replace_some_heads([],
2958 D,
2959 E,
2960 F,
2961 [],
2962 G,
2963 H,
2964 I,
2965 S),
2966 append(Q, S, J)
2967 ; C=M,
2968 replace_some_heads([],
2969 D,
2970 E,
2971 [B|F],
2972 [],
2973 G,
2974 H,
2975 I,
2976 J)
2977 ).
2978replace_some_heads([O|D], E, [A|F], [B|G], [C|H], I, J, K, L) :-
2979 !,
2980 ( A==B
2981 -> C=B,
2982 replace_some_heads(D,
2983 E,
2984 F,
2985 G,
2986 H,
2987 I,
2988 J,
2989 K,
2990 L)
2991 ; B=functor(M, P, N),
2992 A==M
2993 -> length(Q, N),
2994 ( var(O)
2995 -> S=[],
2996 C=..[P|Q]
2997 ; O=..[P|R],
2998 use_same_args(R,
2999 Q,
3000 T,
3001 J,
3002 K,
3003 S),
3004 C=..[P|T]
3005 ),
3006 replace_some_heads(D,
3007 E,
3008 F,
3009 G,
3010 H,
3011 I,
3012 J,
3013 K,
3014 U),
3015 append(S, U, L)
3016 ; C=O,
3017 replace_some_heads(D,
3018 E,
3019 F,
3020 [B|G],
3021 H,
3022 I,
3023 J,
3024 K,
3025 L)
3026 ).
3027use_same_args([], [], [], _, _, []).
3028use_same_args([A|C], [_|D], [B|E], F, G, H) :-
3029 var(A),
3030 !,
3031 B=A,
3032 use_same_args(C, D, E, F, G, H).
3033use_same_args([A|G], [D|H], [F|I], J, B, C) :-
3034 nonvar(A),
3035 !,
3036 ( common_variables(A, B)
3037 -> C=[D=A|E]
3038 ; C=E
3039 ),
3040 F=D,
3041 use_same_args(G, H, I, J, B, E).
3042simplify_heads([], _, _, _, [], []).
3043simplify_heads([A|C], D, F, I, H, G) :-
3044 A=(E=B),
3045 ( ( nonvar(B)
3046 ; common_variables(B, C-D)
3047 ),
3048 guard_entailment:entails_guard(D, E=B)
3049 -> ( common_variables(B, F-C-D)
3050 -> G=J,
3051 H=K
3052 ; ( common_variables(B, I)
3053 -> G=[E=B|J]
3054 ; G=J
3055 ),
3056 H=[E|K]
3057 )
3058 ; nonvar(B),
3059 functor(B, L, M),
3060 guard_entailment:entails_guard([functor(E, L, M)|D], E=B)
3061 -> G=J,
3062 ( common_variables(B, F-C-D)
3063 -> H=K
3064 ; H=[functor(E, L, M)|K]
3065 )
3066 ; H=K,
3067 G=J
3068 ),
3069 simplify_heads(C, [A|D], F, I, K, J).
3070common_variables(A, B) :-
3071 term_variables(A, C),
3072 term_variables(B, D),
3073 intersect_eq(C, D, E),
3074 E\==[].
3075add_failing_occ(A, D, E, G, S, R, _, H, M) :-
3076 A=pragma(rule(_, _, N, _), ids(C, B), _, _, _),
3077 append(B, C, F),
3078 missing_partner_cond(D,
3079 E,
3080 F,
3081 G,
3082 Q,
3083 I,
3084 H),
3085 copy_term((I, D, E), (J, K, L)),
3086 variable_replacement((I, D, E),
3087 (J, K, L),
3088 M),
3089 copy_with_variable_replacement(N, O, M),
3090 extract_explicit_matchings(O, P),
3091 negate_b(P, T),
3092 copy_with_variable_replacement(Q, U, M),
3093 ( subsumes_term(R, J),
3094 R=J
3095 -> S=[(T;U)]
3096 ; S=[chr_pp_void_info]
3097 ).
3098missing_partner_cond([], [], [], _, fail, _, _).
3099missing_partner_cond([B|C], [_|D], [A|E], A, F, B, G) :-
3100 !,
3101 missing_partner_cond(C,
3102 D,
3103 E,
3104 A,
3105 F,
3106 B,
3107 G).
3108missing_partner_cond([B|C], [_|D], [_|E], F, A, H, I/J) :-
3109 A=(chr_pp_not_in_store(B);G),
3110 missing_partner_cond(C,
3111 D,
3112 E,
3113 F,
3114 G,
3115 H,
3116 I/J).
((A, B), C) :-
3118 !,
3119 ( extract_explicit_matchings(A)
3120 -> extract_explicit_matchings(B, C)
3121 ; C=(A, D),
3122 extract_explicit_matchings(B, D)
3123 ).
3124extract_explicit_matchings(A, B) :-
3125 !,
3126 ( extract_explicit_matchings(A)
3127 -> B=true
3128 ; B=A
3129 ).
(A=B) :-
3131 var(A),
3132 var(B),
3133 !,
3134 A=B.
3135extract_explicit_matchings(A==B) :-
3136 var(A),
3137 var(B),
3138 !,
3139 A=B.
3140assert_constraint_type(B, A) :-
3141 ( ground(A)
3142 -> constraint_type(B, A)
3143 ; chr_error(type_error,
3144 'Declared argument types "~w" for constraint "~w" must be ground!\n',
3145 [A, B])
3146 ).
3147get_type_definition_det(A, B) :-
3148 ( get_type_definition(A, B)
3149 -> true
3150 ; chr_error(type,
3151 'Could not find type definition for type `~w\'.\n',
3152 [A])
3153 ).
3154get_constraint_type_det(A, B) :-
3155 ( get_constraint_type(A, B)
3156 -> true
3157 ; A=_/C,
3158 replicate(C, any, B)
3159 ).
3160modes_condition([], [], true).
3161modes_condition([A|E], [C|F], B) :-
3162 ( A==(+)
3163 -> B=(ground(C), D)
3164 ; A==(-)
3165 -> B=(var(C), D)
3166 ; B=D
3167 ),
3168 modes_condition(E, F, D).
3169types_condition([], [], [], [], true).
3170types_condition([B|I], [D|J], [E|K], [A|L], (H, M)) :-
3171 ( A==(-)
3172 -> F=[true]
3173 ; get_type_definition_det(B, C),
3174 type_condition(C, D, E, A, G),
3175 ( A==(+)
3176 -> F=G
3177 ; F=[\+ground(D)|G]
3178 )
3179 ),
3180 list2disj(F, H),
3181 types_condition(I, J, K, L, M).
3182type_condition([], _, _, _, []).
3183type_condition([A|F], B, D, E, [C|G]) :-
3184 ( var(A)
3185 -> chr_error(type, 'Unexpected variable type in type definition!\n', [])
3186 ; atomic_builtin_type(A, B, C)
3187 -> true
3188 ; compound_builtin_type(A, B, C, _)
3189 -> true
3190 ; type_def_case_condition(A, B, D, E, C)
3191 ),
3192 type_condition(F, B, D, E, G).
3193ast_atomic_builtin_type(B, A, D) :-
3194 ast_term_to_term(A, C),
3195 atomic_builtin_type(B, C, D).
3196ast_compound_builtin_type(B, A, D) :-
3197 ast_term_to_term(A, C),
3198 compound_builtin_type(B, C, _, D).
3199atomic_builtin_type(any, _, true).
3200atomic_builtin_type(dense_int, A, (integer(A), A>=0)).
3201atomic_builtin_type(int, A, integer(A)).
3202atomic_builtin_type(number, A, number(A)).
3203atomic_builtin_type(float, A, float(A)).
3204atomic_builtin_type(natural, A, (integer(A), A>=0)).
3205atomic_builtin_type(chr_identifier, _, true).
3206compound_builtin_type(chr_constants(_), _, true, true).
3207compound_builtin_type(chr_constants(_, _), _, true, true).
3208compound_builtin_type(chr_identifier(_), _, true, true).
3209compound_builtin_type(chr_enum(B), A, (ground(A), memberchk(A, B)), once((member(C, B), unifiable(A, C, _)))).
3210compound_builtin_type(chr_enum(_, _), _, true, true).
3211is_chr_constants_type(chr_constants(A), A, no).
3212is_chr_constants_type(chr_constants(A, B), A, yes(B)).
3213is_chr_enum_type(chr_enum(A), A, no).
3214is_chr_enum_type(chr_enum(A, B), A, yes(B)).
3215type_def_case_condition(A, D, E, H, C) :-
3216 ( nonvar(A)
3217 -> functor(A, F, B),
3218 ( B==0
3219 -> C=(D=A)
3220 ; var(E)
3221 -> C=functor(D, F, B)
3222 ; functor(E, F, B)
3223 -> C=(functor(D, F, B), D=G, M),
3224 A=..[_|I],
3225 E=..[_|K],
3226 functor(G, F, B),
3227 G=..[_|J],
3228 replicate(B, H, L),
3229 types_condition(I, J, K, L, M)
3230 ; C=functor(D, F, B)
3231 )
3232 ; chr_error(internal, 'Illegal type definition (must be nonvar).\n', [])
3233 ).
3234static_type_check_rule(F, A) :-
3235 A=ast_rule(B, _, _, C, _),
3236 ( catch(( ast_static_type_check_head(B),
3237 ast_static_type_check_body(C)
3238 ),
3239 type_error(D),
3240 ( D=invalid_functor(E, G, H)
3241 -> chr_error(type_error,
3242 'Invalid functor in ~@ of ~@:\n\t\tfound `~w\',\n\t\texpected type `~w\'!\n',
3243
3244 [ chr_translate:format_src(E),
3245 format_rule(F),
3246 G,
3247 H
3248 ])
3249 ; D=type_clash(I, K, M, J, L)
3250 -> chr_error(type_error,
3251 'Type clash for variable ~w in ~@:\n\t\texpected type ~w in ~@\n\t\texpected type ~w in ~@\n',
3252
3253 [ I,
3254 format_rule(F),
3255 J,
3256 chr_translate:format_src(K),
3257 L,
3258 chr_translate:format_src(M)
3259 ])
3260 )),
3261 fail
3262 ; true
3263 ).
3264ast_static_type_check_head(simplification(A)) :-
3265 maplist(ast_static_type_check_head_constraint, A).
3266ast_static_type_check_head(propagation(A)) :-
3267 maplist(ast_static_type_check_head_constraint, A).
3268ast_static_type_check_head(simpagation(A, B)) :-
3269 maplist(ast_static_type_check_head_constraint, A),
3270 maplist(ast_static_type_check_head_constraint, B).
3271ast_static_type_check_head_constraint(A) :-
3272 A=chr_constraint(B, C, _),
3273 get_constraint_type_det(B, D),
3274 maplist(ast_static_type_check_term(head(_)), C, D).
3275ast_static_type_check_body([]).
3276ast_static_type_check_body([A|E]) :-
3277 ast_symbol(A, B),
3278 get_constraint_type_det(B, D),
3279 ast_args(A, C),
3280 maplist(ast_static_type_check_term(body(A)), C, D),
3281 ast_static_type_check_body(E).
3282format_src(head(A)) :-
3283 format('head ~w', [A]).
3284format_src(body(A)) :-
3285 format('body goal ~w', [A]).
3286generate_dynamic_type_check_clauses(D) :-
3287 ( chr_pp_flag(debugable, on)
3288 -> dynamic_type_check,
3289 get_dynamic_type_check_clauses(A),
3290 append(A,
3291
3292 [ ('$dynamic_type_check'(B, C):-throw(error(type_error(B, C), context(_, 'CHR Runtime Type Error'))))
3293 ],
3294 D)
3295 ; D=[]
3296 ).
3297dynamic_type_check_clause(A, B, J) :-
3298 copy_term(A-B, K-C),
3299 functor(C, D, E),
3300 functor(F, D, E),
3301 C=..[_|G],
3302 F=..[_|H],
3303 maplist(dynamic_type_check_call, G, H, I),
3304 list2conj(I, L),
3305 J=('$dynamic_type_check'(K, F):-L).
3306dynamic_type_check_alias_clause(B, C, A) :-
3307 A=('$dynamic_type_check'(B, D):-'$dynamic_type_check'(C, D)).
3308dynamic_type_check_call(A, C, B) :-
3309 ( A==any
3310 -> B=true
3311 ; B=when(nonvar(C), once('$dynamic_type_check'(A, C)))
3312 ).
3313atomic_types_suspended_constraint(A) :-
3314 A=_/B,
3315 get_constraint_type(A, C),
3316 get_constraint_mode(A, D),
3317 numlist(1, B, E),
3318 maplist(atomic_types_suspended_constraint(A),
3319 C,
3320 D,
3321 E).
3322atomic_types_suspended_constraint(A, D, C, B) :-
3323 ( is_indexed_argument(A, B)
3324 -> ( C==(?)
3325 -> atomic_type(D)
3326 ; true
3327 )
3328 ; true
3329 ).
3330storage_analysis(A) :-
3331 ( chr_pp_flag(storage_analysis, on)
3332 -> check_constraint_storages(A)
3333 ; true
3334 ).
3335check_constraint_storages(A) :-
3336 maplist(check_constraint_storage, A).
3337check_constraint_storage(A) :-
3338 get_max_occurrence(A, B),
3339 check_occurrences_storage(A, 1, B).
3340check_occurrences_storage(C, A, B) :-
3341 ( A>B
3342 -> stored_completing(C, 1, 0)
3343 ; check_occurrence_storage(C, A),
3344 D is A+1,
3345 check_occurrences_storage(C, D, B)
3346 ).
3347check_occurrence_storage(A, B) :-
3348 get_occurrence(A, B, C, D, F),
3349 ( is_passive(C, D)
3350 -> stored(A, B, maybe)
3351 ; get_rule(C, E),
3352 E=pragma(rule(H, J, K, N), ids(G, L), _, _, _),
3353 ( F==simplification,
3354 select2(D, I, G, H, _, _)
3355 -> check_storage_head1(I, B, H, J, K)
3356 ; F==propagation,
3357 select2(D, M, L, J, _, _)
3358 -> check_storage_head2(M, B, H, N)
3359 )
3360 ).
3361check_storage_head1(A, I, D, E, F) :-
3362 functor(A, B, C),
3363 H=B/C,
3364 ( D==[A],
3365 E==[],
3366 guard_entailment:entails_guard([chr_pp_headvariables(A)], F),
3367 A=..[_|G],
3368 no_matching(G, [])
3369 -> stored(H, I, no)
3370 ; stored(H, I, maybe)
3371 ).
3372no_matching([], _).
3373no_matching([A|C], B) :-
3374 var(A),
3375 \+ memberchk_eq(A, B),
3376 no_matching(C, [A|B]).
3377check_storage_head2(A, G, D, E) :-
3378 functor(A, B, C),
3379 F=B/C,
3380 ( D\==[],
3381 E==true
3382 -> stored(F, G, maybe)
3383 ; stored(F, G, yes)
3384 ).
3385constraints_code(A, C) :-
3386 ( chr_pp_flag(reduced_indexing, on),
3387 forall(B,
3388 A,
3389 chr_translate:only_ground_indexed_arguments(B))
3390 -> none_suspended_on_variables
3391 ; true
3392 ),
3393 constraints_code1(A, C, []).
3394constraint_prelude(B/A, K) :-
3395 vars_susp(A, C, E, D),
3396 L=..[B|C],
3397 make_suspension_continuation_goal(B/A, D, G),
3398 build_head(B, A, [0], D, Q),
3399 ( chr_pp_flag(debugable, on)
3400 -> insert_constraint_goal(B/A, E, C, N),
3401 attach_constraint_atom(B/A, F, E, O),
3402 delay_phase_end(validate_store_type_assumptions,
3403 chr_translate:update_suspension_field(B/A, E, state, inactive, P)),
3404 insert_constraint_internal_constraint_goal(B/A,
3405 F,
3406 E,
3407 G,
3408 C,
3409 M),
3410 ( get_constraint_type(B/A, H)
3411 -> maplist(dynamic_type_check_call, H, C, I),
3412 list2conj(I, J)
3413 ; J=true
3414 ),
3415 K=(L:-J, M, N, O, P, 'chr debug_event'(insert(#(L, E))), ('chr debugging'->('chr debug_event'(call(E)), Q;'chr debug_event'(fail(E)), !, fail), ('chr debug_event'(exit(E));'chr debug_event'(redo(E)), fail);Q))
3416 ; get_allocation_occurrence(B/A, 0)
3417 -> gen_insert_constraint_internal_goal(B/A,
3418 R,
3419 D,
3420 C,
3421 E),
3422 delay_phase_end(validate_store_type_assumptions,
3423 chr_translate:update_suspension_field(B/A, E, state, inactive, P)),
3424 K=(L:-R, P, Q)
3425 ; K=(L:-Q)
3426 ).
3427make_suspension_continuation_goal(A/B, C, D) :-
3428 ( may_trigger(A/B)
3429 -> build_head(A, B, [0], C, E),
3430 ( chr_pp_flag(debugable, off)
3431 -> D=E
3432 ; get_target_module(F),
3433 D=F:E
3434 )
3435 ; D=true
3436 ).
3437gen_cond_attach_clause(A/B, I, L, N) :-
3438 ( is_finally_stored(A/B)
3439 -> get_allocation_occurrence(A/B, D),
3440 get_max_occurrence(A/B, C),
3441 ( chr_pp_flag(debugable, off),
3442 C<D
3443 -> ( only_ground_indexed_arguments(A/B)
3444 -> gen_insert_constraint_internal_goal(A/B,
3445 E,
3446 F,
3447 G,
3448 H)
3449 ; gen_cond_attach_goal(A/B,
3450 E,
3451 F,
3452 G,
3453 H)
3454 )
3455 ; vars_susp(B, G, H, F),
3456 gen_uncond_attach_goal(A/B,
3457 H,
3458 G,
3459 E,
3460 _)
3461 ),
3462 build_head(A, B, I, F, J),
3463 K=(J:-E),
3464 add_dummy_location(K, M),
3465 L=[M|N]
3466 ; L=N
3467 ).
3468gen_cond_attach_goal(E/A, J, D, B, C) :-
3469 vars_susp(A, B, C, D),
3470 make_suspension_continuation_goal(E/A, D, H),
3471 ( get_store_type(E/A, var_assoc_store(_, _))
3472 -> F=true
3473 ; attach_constraint_atom(E/A, G, C, F)
3474 ),
3475 _=..[E|B],
3476 insert_constraint_goal(E/A, C, B, I),
3477 insert_constraint_internal_constraint_goal(E/A,
3478 G,
3479 C,
3480 H,
3481 B,
3482 K),
3483 ( may_trigger(E/A)
3484 -> activate_constraint_goal(E/A,
3485 (I, F),
3486 G,
3487 C,
3488 _,
3489 L),
3490 J=(var(C)->K, I, F;L)
3491 ; J=(K, I, F)
3492 ).
3493gen_insert_constraint_internal_goal(E/A, I, D, B, C) :-
3494 vars_susp(A, B, C, D),
3495 make_suspension_continuation_goal(E/A, D, H),
3496 ( \+ only_ground_indexed_arguments(E/A),
3497 \+ get_store_type(E/A, var_assoc_store(_, _))
3498 -> attach_constraint_atom(E/A, G, C, F)
3499 ; F=true
3500 ),
3501 _=..[E|B],
3502 insert_constraint_goal(E/A, C, B, K),
3503 insert_constraint_internal_constraint_goal(E/A,
3504 G,
3505 C,
3506 H,
3507 B,
3508 J),
3509 ( only_ground_indexed_arguments(E/A),
3510 chr_pp_flag(debugable, off)
3511 -> I=(J, K)
3512 ; I=(J, K, F)
3513 ).
3514gen_uncond_attach_goal(A, B, D, H, G) :-
3515 ( \+ only_ground_indexed_arguments(A),
3516 \+ get_store_type(A, var_assoc_store(_, _))
3517 -> attach_constraint_atom(A, F, B, C)
3518 ; C=true
3519 ),
3520 insert_constraint_goal(A, B, D, E),
3521 ( chr_pp_flag(late_allocation, on)
3522 -> activate_constraint_goal(A,
3523 (E, C),
3524 F,
3525 B,
3526 G,
3527 H)
3528 ; activate_constraint_goal(A, true, F, B, G, H)
3529 ).
3530head1_code(E, H, F, G, A, K, L, M, N, O) :-
3531 A=pragma(B, _, _, _, D),
3532 B=rule(_, C, _, _),
3533 ( C==[]
3534 -> reorder_heads(D, E, F, G, I, J),
3535 simplification_code(E,
3536 H,
3537 I,
3538 J,
3539 A,
3540 K,
3541 L,
3542 M,
3543 N,
3544 O)
3545 ; simpagation_head1_code(E,
3546 H,
3547 F,
3548 G,
3549 A,
3550 K,
3551 L,
3552 M,
3553 N,
3554 O)
3555 ).
3556head2_code(E, H, F, G, A, K, L, M, N, O) :-
3557 A=pragma(B, _, _, _, D),
3558 B=rule(C, _, _, _),
3559 ( C==[]
3560 -> reorder_heads(D, E, F, G, I, J),
3561 propagation_code(E,
3562 H,
3563 I,
3564 J,
3565 B,
3566 D,
3567 K,
3568 L,
3569 M,
3570 N,
3571 O)
3572 ; simpagation_head2_code(E,
3573 H,
3574 F,
3575 G,
3576 A,
3577 K,
3578 L,
3579 M,
3580 N,
3581 O)
3582 ).
3583gen_alloc_inc_clause(B/A, F, C, M, O) :-
3584 vars_susp(A, G, H, D),
3585 build_head(B, A, C, D, I),
3586 inc_id(C, E),
3587 build_head(B, A, E, D, K),
3588 gen_occ_allocation(B/A, F, G, H, J),
3589 L=(I:-J, K),
3590 add_dummy_location(L, N),
3591 M=[N|O].
3592gen_occ_allocation(A, C, G, F, H) :-
3593 get_allocation_occurrence(A, B),
3594 get_occurrence_code_id(A, B, E),
3595 get_occurrence_code_id(A, C, D),
3596 ( chr_pp_flag(debugable, off),
3597 D==E
3598 -> allocate_constraint_goal(A, F, G, I),
3599 ( may_trigger(A)
3600 -> H=(var(F)->I;true)
3601 ; H=I
3602 )
3603 ; H=true
3604 ).
3605gen_occ_allocation_in_guard(A, B, E, D, F) :-
3606 get_allocation_occurrence(A, C),
3607 ( chr_pp_flag(debugable, off),
3608 B<C
3609 -> allocate_constraint_goal(A, D, E, G),
3610 ( may_trigger(A)
3611 -> F=(var(D)->G;true)
3612 ; F=G
3613 )
3614 ; F=true
3615 ).
3616guard_via_reschedule_new(A, B, C, D, E, G) :-
3617 ( chr_pp_flag(guard_via_reschedule, on)
3618 -> guard_via_reschedule_main_new(A,
3619 B,
3620 C,
3621 D,
3622 E,
3623 F),
3624 list2conj(F, G)
3625 ; length(A, H),
3626 length(E, H),
3627 length(B, I),
3628 length(D, I),
3629 append(E, D, J),
3630 list2conj(J, G)
3631 ).
3632guard_via_reschedule_main_new(B, C, A, M, I, J) :-
3633 initialize_unit_dictionary(A, F),
3634 maplist(wrap_in_functor(lookup), B, D),
3635 maplist(wrap_in_functor(guard), C, E),
3636 build_units(D, E, F, G),
3637 dependency_reorder(G, H),
3638 wrappedunits2lists(H, K, I, J),
3639 sort(K, L),
3640 snd_of_pairs(L, M).
3641wrappedunits2lists([], [], [], []).
3642wrappedunits2lists([unit(G, B, _, _)|J], E, C, A) :-
3643 A=[D|K],
3644 ( B=lookup(F)
3645 -> C=[D|I],
3646 E=H
3647 ; B=guard(F)
3648 -> E=[G-D|H],
3649 C=I
3650 ),
3651 wrappedunits2lists(J, H, I, K).
3652guard_splitting(A, I) :-
3653 A=rule(B, C, D, _),
3654 append(B, C, E),
3655 conj2list(D, F),
3656 term_variables(E, G),
3657 split_off_simple_guard_new(F, G, H, J),
3658 append(H, [Q], I),
3659 term_variables(J, M),
3660 ground_vars(E, K),
3661 list_difference_eq(G, K, L),
3662 intersect_eq(L, M, N),
3663 maplist(chr_lock, N, O),
3664 maplist(chr_unlock, N, P),
3665 list2conj(O, R),
3666 list2conj(P, T),
3667 list2conj(J, S),
3668 Q=(R, S, T).
3669guard_body_copies3(A, B, C, D, G) :-
3670 A=rule(_, _, _, E),
3671 my_term_copy(B, C, F, D),
3672 my_term_copy(E, F, G).
3673split_off_simple_guard_new([], _, [], []).
3674split_off_simple_guard_new([A|D], B, C, F) :-
3675 ( simple_guard_new(A, B)
3676 -> C=[A|E],
3677 split_off_simple_guard_new(D, B, E, F)
3678 ; C=[],
3679 F=[A|D]
3680 ).
3681simple_guard_new(A, D) :-
3682 builtin_binds_b(A, B),
3683 not(( member(C, B),
3684 memberchk_eq(C, D)
3685 )).
3686dependency_reorder(A, B) :-
3687 dependency_reorder(A, [], B).
3688dependency_reorder([], A, B) :-
3689 reverse(A, B).
3690dependency_reorder([A|F], C, G) :-
3691 A=unit(_, _, B, D),
3692 ( B==fixed
3693 -> E=[A|C]
3694 ; dependency_insert(C, A, D, E)
3695 ),
3696 dependency_reorder(F, E, G).
3697dependency_insert([], A, _, [A]).
3698dependency_insert([A|F], E, C, D) :-
3699 A=unit(B, _, _, _),
3700 ( memberchk(B, C)
3701 -> D=[E, A|F]
3702 ; D=[A|G],
3703 dependency_insert(F, E, C, G)
3704 ).
3705build_units(A, D, B, C) :-
3706 build_retrieval_units(A, 1, E, B, F, C, G),
3707 build_guard_units(D, E, F, G).
3708build_retrieval_units([], A, A, B, B, C, C).
3709build_retrieval_units([A|G], C, I, D, K, E, M) :-
3710 term_variables(A, B),
3711 update_unit_dictionary(B, C, D, J, [], F),
3712 E=[unit(C, A, fixed, F)|L],
3713 H is C+1,
3714 build_retrieval_units(G,
3715 H,
3716 I,
3717 J,
3718 K,
3719 L,
3720 M).
3721initialize_unit_dictionary(A, C) :-
3722 term_variables(A, B),
3723 pair_all_with(B, 0, C).
3724update_unit_dictionary([], _, A, A, B, B).
3725update_unit_dictionary([B|H], D, A, I, E, J) :-
3726 ( lookup_eq(A, B, C)
3727 -> ( ( C==D
3728 ; memberchk(C, E)
3729 )
3730 -> F=E
3731 ; F=[C|E]
3732 ),
3733 G=A
3734 ; G=[B-D|A],
3735 F=E
3736 ),
3737 update_unit_dictionary(H, D, G, I, F, J).
3738build_guard_units(A, C, F, B) :-
3739 ( A=[D]
3740 -> B=[unit(C, D, fixed, [])]
3741 ; A=[D|H]
3742 -> term_variables(D, E),
3743 update_unit_dictionary2(E, C, F, J, [], G),
3744 B=[unit(C, D, movable, G)|K],
3745 I is C+1,
3746 build_guard_units(H, I, J, K)
3747 ).
3748update_unit_dictionary2([], _, A, A, B, B).
3749update_unit_dictionary2([B|H], D, A, I, E, J) :-
3750 ( lookup_eq(A, B, C)
3751 -> ( ( C==D
3752 ; memberchk(C, E)
3753 )
3754 -> F=E
3755 ; F=[C|E]
3756 ),
3757 G=[B-D|A]
3758 ; G=[B-D|A],
3759 F=E
3760 ),
3761 update_unit_dictionary2(H, D, G, I, F, J).
3762functional_dependency_analysis(A) :-
3763 ( fail,
3764 chr_pp_flag(functional_dependency_analysis, on)
3765 -> functional_dependency_analysis_main(A)
3766 ; true
3767 ).
3768functional_dependency_analysis_main([]).
3769functional_dependency_analysis_main([A|F]) :-
3770 ( discover_unique_pattern(A, B, C, D, E)
3771 -> functional_dependency(B, C, D, E)
3772 ; true
3773 ),
3774 functional_dependency_analysis_main(F).
3775discover_unique_pattern(A, P/Q, B, N, O) :-
3776 A=pragma(C, _, _, _, B),
3777 C=rule(D, E, H, _),
3778 ( D=[F],
3779 E=[G]
3780 -> true
3781 ; D=[F, G],
3782 E==[]
3783 -> true
3784 ),
3785 check_unique_constraints(F, G, H, B, J),
3786 term_variables(F, I),
3787 \+ ( member(K, I),
3788 lookup_eq(J, K, L),
3789 memberchk_eq(L, I)
3790 ),
3791 select_pragma_unique_variables(I, J, M),
3792 copy_term_nat(F-M, N-O),
3793 functor(F, P, Q).
3794select_pragma_unique_variables([], _, []).
3795select_pragma_unique_variables([B|E], A, C) :-
3796 ( lookup_eq(A, B, _)
3797 -> C=D
3798 ; C=[B|D]
3799 ),
3800 select_pragma_unique_variables(E, A, D).
3801set_semantics_rules(A) :-
3802 ( fail,
3803 chr_pp_flag(set_semantics_rule, on)
3804 -> set_semantics_rules_main(A)
3805 ; true
3806 ).
3807set_semantics_rules_main([]).
3808set_semantics_rules_main([A|B]) :-
3809 set_semantics_rule_main(A),
3810 set_semantics_rules_main(B).
3811set_semantics_rule_main(A) :-
3812 A=pragma(B, C, _, _, D),
3813 ( B=rule([F], [K], true, _),
3814 C=ids([E], [N]),
3815 \+ is_passive(D, E),
3816 functor(F, G, H),
3817 get_functional_dependency(G/H, D, I, J),
3818 copy_term_nat(I-J, F-L),
3819 copy_term_nat(I-J, K-M),
3820 L==M
3821 -> passive(D, N)
3822 ; true
3823 ).
3824check_unique_constraints(B, C, E, A, D) :-
3825 \+ any_passive_head(A),
3826 variable_replacement(B-C, C-B, D),
3827 copy_with_variable_replacement(E, G, D),
3828 negate_b(E, F),
3829 once(entails_b(F, G)).
3830symmetry_analysis(A) :-
3831 ( chr_pp_flag(check_unnecessary_active, off)
3832 -> true
3833 ; symmetry_analysis_main(A)
3834 ).
3835symmetry_analysis_main([]).
3836symmetry_analysis_main([A|H]) :-
3837 A=pragma(B, ids(E, G), _, _, F),
3838 B=rule(D, C, _, _),
3839 ( ( \+ chr_pp_flag(check_unnecessary_active, simplification)
3840 ; C==[]
3841 ),
3842 D\==[]
3843 -> symmetry_analysis_heads_simplification(D,
3844 E,
3845 [],
3846 [],
3847 B,
3848 F),
3849 symmetry_analysis_heads_propagation(C,
3850 G,
3851 [],
3852 [],
3853 B,
3854 F)
3855 ; true
3856 ),
3857 symmetry_analysis_main(H).
3858symmetry_analysis_heads_simplification([], [], _, _, _, _).
3859symmetry_analysis_heads_simplification([G|K], [B|L], C, D, H, A) :-
3860 ( \+ is_passive(A, B),
3861 member2(C, D, F-E),
3862 \+ is_passive(A, E),
3863 variable_replacement(F, G, I),
3864 copy_with_variable_replacement(H, J, I),
3865 identical_guarded_rules(H, J)
3866 -> passive(A, B)
3867 ; true
3868 ),
3869 symmetry_analysis_heads_simplification(K,
3870 L,
3871 [G|C],
3872 [B|D],
3873 H,
3874 A).
3875symmetry_analysis_heads_propagation([], [], _, _, _, _).
3876symmetry_analysis_heads_propagation([G|K], [B|L], C, D, H, A) :-
3877 ( \+ is_passive(A, B),
3878 member2(C, D, F-E),
3879 \+ is_passive(A, E),
3880 variable_replacement(F, G, I),
3881 copy_with_variable_replacement(H, J, I),
3882 identical_rules(H, J)
3883 -> passive(A, B)
3884 ; true
3885 ),
3886 symmetry_analysis_heads_propagation(K,
3887 L,
3888 [G|C],
3889 [B|D],
3890 H,
3891 A).
3892simplification_code(B, B1, L, M, A, C, S, D, Q1, S1) :-
3893 A=pragma(H, _, _, _, I),
3894 head_info1(B, C, _, T, E, F),
3895 build_head(C, D, E, J1),
3896 get_constraint_mode(C, G),
3897 head_arg_matches(F, G, [], K1, O, [], P),
3898 guard_splitting(H, J),
3899 ( is_stored_in_guard(C, I)
3900 -> K=[_|J]
3901 ; K=J
3902 ),
3903 guard_via_reschedule_new(L,
3904 K,
3905 B,
3906 R,
3907 N,
3908 L1),
3909 rest_heads_retrieval_and_matching(L,
3910 M,
3911 B,
3912 N,
3913 Y,
3914 O,
3915 Q,
3916 [],
3917 [],
3918 [],
3919 P,
3920 _),
3921 guard_body_copies3(H, K, Q, R, O1),
3922 ( is_stored_in_guard(C, I)
3923 -> gen_occ_allocation_in_guard(C,
3924 S,
3925 U,
3926 T,
3927 W),
3928 gen_uncond_attach_goal(C, T, U, X, _),
3929 R=[V|_],
3930 V=(W, X)
3931 ; true
3932 ),
3933 partner_constraint_detachments(Y, L, Q, M1),
3934 active_constraint_detachment(D, T, B, Q, N1),
3935 ( chr_pp_flag(debugable, on)
3936 -> H=rule(_, _, Z, A1),
3937 my_term_copy(Z-A1, Q, D1-E1),
3938 sort_by_key([T|Y], [B1|M], C1),
3939 F1='chr debug_event'(try(C1, [], D1, E1)),
3940 G1='chr debug_event'(apply(C1, [], D1, E1)),
3941 instrument_goal(I1, F1, G1, H1)
3942 ; H1=I1
3943 ),
3944 actual_cut(C, S, I1),
3945 P1=(J1:-K1, L1, H1, M1, N1, O1),
3946 add_location(P1, I, R1),
3947 Q1=[R1|S1].
3948actual_cut(A, B, C) :-
3949 ( unconditional_occurrence(A, B),
3950 chr_pp_flag(late_allocation, on)
3951 -> C=true
3952 ; C=!
3953 ).
3954add_location(E, A, B) :-
3955 ( chr_pp_flag(line_numbers, on)
3956 -> get_line_number(A, C:D),
3957 B='$source_location'(C, D):E
3958 ; B=E
3959 ).
3960add_dummy_location(C, A) :-
3961 ( chr_pp_flag(line_numbers, on)
3962 -> get_chr_source_file(B),
3963 A='$source_location'(B, 1):C
3964 ; A=C
3965 ).
3966head_arg_matches(A, B, C, D, E) :-
3967 head_arg_matches(A, B, C, D, E, [], _).
3968head_arg_matches(A, B, C, H, E, D, F) :-
3969 head_arg_matches_(A, B, C, D, G, E, F),
3970 list2conj(G, H).
3971head_arg_matches_([], [], A, B, [], A, B).
3972head_arg_matches_([silent(B-_)|D], [A|E], F, C, H, I, J) :-
3973 !,
3974 ( A==(+)
3975 -> term_variables(B, G, C),
3976 head_arg_matches_(D,
3977 E,
3978 F,
3979 G,
3980 H,
3981 I,
3982 J)
3983 ; head_arg_matches_(D,
3984 E,
3985 F,
3986 C,
3987 H,
3988 I,
3989 J)
3990 ).
3991head_arg_matches_([A-F|K], [C|L], B, D, E, Z, A1) :-
3992 ( var(A)
3993 -> ( lookup_eq(B, A, G)
3994 -> ( C=(+)
3995 -> ( memberchk_eq(A, D)
3996 -> E=[F=G|H],
3997 I=D
3998 ; E=[F==G|H],
3999 I=[A|D]
4000 )
4001 ; E=[F==G|H],
4002 I=D
4003 ),
4004 J=B
4005 ; J=[A-F|B],
4006 E=H,
4007 ( C=(+)
4008 -> I=[A|D]
4009 ; I=D
4010 )
4011 ),
4012 P=K,
4013 Q=L
4014 ; ground(A),
4015 A='$chr_identifier_match'(N, M)
4016 -> identifier_label_atom(M, F, N, O),
4017 E=[O|H],
4018 B=J,
4019 I=D,
4020 P=K,
4021 Q=L
4022 ; atomic(A)
4023 -> ( C=(+)
4024 -> E=[F=A|H]
4025 ; E=[F==A|H]
4026 ),
4027 B=J,
4028 I=D,
4029 P=K,
4030 Q=L
4031 ; C==(+),
4032 is_ground(D, A)
4033 -> copy_with_variable_replacement(A, R, B),
4034 E=[F=R|H],
4035 B=J,
4036 I=D,
4037 P=K,
4038 Q=L
4039 ; C==(?),
4040 is_ground(D, A)
4041 -> copy_with_variable_replacement(A, R, B),
4042 E=[F==R|H],
4043 B=J,
4044 I=D,
4045 P=K,
4046 Q=L
4047 ; A=..[_|V],
4048 functor(A, S, T),
4049 functor(U, S, T),
4050 U=..[_|W],
4051 ( C=(+)
4052 -> E=[F=U|H]
4053 ; E=[nonvar(F), F=U|H]
4054 ),
4055 pairup(V, W, X),
4056 append(X, K, P),
4057 replicate(T, C, Y),
4058 append(Y, L, Q),
4059 J=B,
4060 I=D
4061 ),
4062 head_arg_matches_(P,
4063 Q,
4064 J,
4065 I,
4066 H,
4067 Z,
4068 A1).
4069add_heads_types([], A, A).
4070add_heads_types([A|C], B, E) :-
4071 add_head_types(A, B, D),
4072 add_heads_types(C, D, E).
4073add_head_types(A, F, G) :-
4074 functor(A, B, C),
4075 get_constraint_type_det(B/C, E),
4076 A=..[_|D],
4077 add_args_types(D, E, F, G).
4078add_args_types([], [], A, A).
4079add_args_types([A|D], [B|E], C, G) :-
4080 add_arg_types(A, B, C, F),
4081 add_args_types(D, E, F, G).
4082add_arg_types(D, A, C, B) :-
4083 ( A==any
4084 -> B=C
4085 ; var(D)
4086 -> ( lookup_eq(C, D, _)
4087 -> B=C
4088 ; B=[D-A|C]
4089 )
4090 ; B=C
4091 ).
4092add_heads_ground_variables([], A, A).
4093add_heads_ground_variables([A|C], B, E) :-
4094 add_head_ground_variables(A, B, D),
4095 add_heads_ground_variables(C, D, E).
4096add_head_ground_variables(A, F, G) :-
4097 functor(A, B, C),
4098 get_constraint_mode(B/C, E),
4099 A=..[_|D],
4100 add_arg_ground_variables(D, E, F, G).
4101add_arg_ground_variables([], [], A, A).
4102add_arg_ground_variables([B|F], [A|G], D, H) :-
4103 ( A==(+)
4104 -> term_variables(B, C),
4105 add_var_ground_variables(C, D, E)
4106 ; D=E
4107 ),
4108 add_arg_ground_variables(F, G, E, H).
4109add_var_ground_variables([], A, A).
4110add_var_ground_variables([A|D], B, E) :-
4111 ( memberchk_eq(A, B)
4112 -> C=B
4113 ; C=[A|B]
4114 ),
4115 add_var_ground_variables(D, C, E).
4116is_ground(B, A) :-
4117 ( ground(A)
4118 -> true
4119 ; compound(A)
4120 -> A=..[_|C],
4121 maplist(is_ground(B), C)
4122 ; memberchk_eq(A, B)
4123 ).
4124check_ground(C, A, D) :-
4125 term_variables(A, B),
4126 check_ground_variables(B, C, D).
4127check_ground_variables([], _, true).
4128check_ground_variables([A|C], B, D) :-
4129 ( memberchk_eq(A, B)
4130 -> check_ground_variables(C, B, D)
4131 ; D=(ground(A), E),
4132 check_ground_variables(C, B, E)
4133 ).
4134rest_heads_retrieval_and_matching(A, B, C, D, E, F, G, H, I, J) :-
4135 rest_heads_retrieval_and_matching(A,
4136 B,
4137 C,
4138 D,
4139 E,
4140 F,
4141 G,
4142 H,
4143 I,
4144 J,
4145 [],
4146 _).
4147rest_heads_retrieval_and_matching(A, B, E, F, G, H, I, C, D, J, K, L) :-
4148 ( A=[_|_]
4149 -> rest_heads_retrieval_and_matching_n(A,
4150 B,
4151 C,
4152 D,
4153 E,
4154 F,
4155 G,
4156 H,
4157 I,
4158 J,
4159 K,
4160 L)
4161 ; F=[],
4162 G=[],
4163 H=I,
4164 K=L
4165 ).
4166rest_heads_retrieval_and_matching_n([], _, _, _, _, [], [], A, A, _, B, B).
4167rest_heads_retrieval_and_matching_n([A|E1], [_|F1], F, B1, E, [C1|G1], [M|H1], G, I1, _, L, J1) :-
4168 functor(A, C, B),
4169 head_info(A, B, I, _, _, J),
4170 get_store_type(C/B, D),
4171 ( D==default
4172 -> passive_head_via(A, [E|F], G, O, N),
4173 delay_phase_end(validate_store_type_assumptions,
4174 (static_suspension_term(C/B, H), get_static_suspension_term_field(arguments, C/B, H, I), get_static_suspension_field(C/B, H, state, active, Q))),
4175 get_constraint_mode(C/B, K),
4176 head_arg_matches(J,
4177 K,
4178 G,
4179 R,
4180 V,
4181 L,
4182 W),
4183 T=J,
4184 sbag_member_call(M, N, P),
4185 S=(O, P, M=H, Q),
4186 inline_matching_goal(R, Y)
4187 ; delay_phase_end(validate_store_type_assumptions,
4188 (static_suspension_term(C/B, H), get_static_suspension_term_field(arguments, C/B, H, I))),
4189 existential_lookup(D,
4190 A,
4191 [E|F],
4192 G,
4193 L,
4194 H,
4195 S,
4196 M,
4197 J,
4198 T),
4199 get_constraint_mode(C/B, K),
4200 U=K,
4201 head_arg_matches(T,
4202 U,
4203 G,
4204 R,
4205 V,
4206 L,
4207 W),
4208 filter_append(T, V, X),
4209 translate(W, X, Z),
4210 translate(W, V, A1),
4211 inline_matching_goal(R, Y, Z, A1)
4212 ),
4213 different_from_other_susps(A, M, F, B1, D1),
4214 C1=(S, D1, Y),
4215 rest_heads_retrieval_and_matching_n(E1,
4216 F1,
4217 [A|F],
4218 [M|B1],
4219 E,
4220 G1,
4221 H1,
4222 V,
4223 I1,
4224 _,
4225 W,
4226 J1).
4227inline_matching_goal(A, B) :-
4228 inline_matching_goal(A, B, [], []).
4229inline_matching_goal(A==C, true, B, D) :-
4230 memberchk_eq(A, B),
4231 memberchk_eq(C, D),
4232 A=C,
4233 !.
4234inline_matching_goal((A, E), (B, F), C, D) :-
4235 !,
4236 inline_matching_goal(A, B, C, D),
4237 inline_matching_goal(E, F, C, D).
4238inline_matching_goal(A, A, _, _).
4239filter_mode([], _, _, []).
4240filter_mode([I-A|E], [_-B|F], [D|G], C) :-
4241 ( A==B
4242 -> C=[D|H],
4243 filter_mode(E, F, G, H)
4244 ; filter_mode([I-A|E], F, G, C)
4245 ).
4246filter_append([], A, A).
4247filter_append([A|B], C, D) :-
4248 ( A=silent(_)
4249 -> filter_append(B, C, D)
4250 ; D=[A|E],
4251 filter_append(B, C, E)
4252 ).
4253check_unique_keys([], _).
4254check_unique_keys([B|C], A) :-
4255 lookup_eq(A, B, _),
4256 check_unique_keys(C, A).
4257different_from_other_susps(C, D, A, B, F) :-
4258 different_from_other_susps_(A, B, C, D, E),
4259 list2conj(E, F).
4260different_from_other_susps_(_, [], _, _, []) :-
4261 !.
4262different_from_other_susps_([B|K], [I|L], A, H, G) :-
4263 ( functor(A, C, D),
4264 functor(B, C, D),
4265 copy_term_nat(B-A, E-F),
4266 \+ \+ E=F
4267 -> G=[H\==I|J]
4268 ; G=J
4269 ),
4270 different_from_other_susps_(K, L, A, H, J).
4271passive_head_via(A, D, P, I, H) :-
4272 functor(A, B, C),
4273 get_constraint_index(B/C, _),
4274 common_variables(A, D, E),
4275 ground_vars([A], F),
4276 list_difference_eq(E, F, K),
4277 global_list_store_name(B/C, G),
4278 J=nb_getval(G, H),
4279 get_constraint_mode(B/C, L),
4280 ( S==[]
4281 -> I=J
4282 ; member(O, K),
4283 nth1(M, L, -),
4284 arg(M, A, N),
4285 N==O
4286 -> translate([O], P, [Q]),
4287 gen_get_mod_constraints(B/C, Q, R, H),
4288 I=R
4289 ; translate(K, P, S),
4290 add_heads_types(D, [], T),
4291 my_term_copy(T, P, U),
4292 gen_get_mod_constraints(B/C,
4293 S,
4294 U,
4295 V,
4296 R,
4297 H),
4298 I=(V->R;J)
4299 ).
4300common_variables(A, B, E) :-
4301 term_variables(A, C),
4302 term_variables(B, D),
4303 intersect_eq(C, D, E).
4304gen_get_mod_constraints(K, A, B, C, D, I) :-
4305 via_goal(A, B, C, E),
4306 get_target_module(F),
4307 D=(get_attr(E, F, J), H),
4308 get_max_constraint_index(G),
4309 ( G==1
4310 -> H=true,
4311 I=J
4312 ; get_constraint_index(K, L),
4313 get_suspensions(G, L, J, H, I)
4314 ).
4315via_goal(A, C, B, F) :-
4316 ( A=[]
4317 -> B=fail
4318 ; A=[D]
4319 -> lookup_type(C, D, E),
4320 ( atomic_type(E)
4321 -> B=var(D),
4322 D=F
4323 ; B='chr newvia_1'(D, F)
4324 )
4325 ; A=[D, G]
4326 -> B='chr newvia_2'(D, G, F)
4327 ; B='chr newvia'(A, F)
4328 ).
4329lookup_type(A, B, C) :-
4330 ( lookup_eq(A, B, C)
4331 -> true
4332 ; C=any
4333 ).
4334gen_get_mod_constraints(H, B, A, F) :-
4335 get_target_module(C),
4336 A=(get_attr(B, C, G), E),
4337 get_max_constraint_index(D),
4338 ( D==1
4339 -> E=true,
4340 F=G
4341 ; get_constraint_index(H, I),
4342 get_suspensions(D, I, G, E, F)
4343 ).
4344guard_body_copies(A, B, E, C) :-
4345 guard_body_copies2(A, B, D, C),
4346 list2conj(D, E).
4347guard_body_copies2(A, D, H, B1) :-
4348 A=rule(_, J, B, Z),
4349 conj2list(B, C),
4350 split_off_simple_guard(C, D, E, F),
4351 my_term_copy(E-F, D, A1, G-I),
4352 append(G, [V], H),
4353 term_variables(F, K),
4354 term_variables(I, P),
4355 ground_vars(J, L),
4356 list_difference_eq(K, L, N),
4357 ( chr_pp_flag(guard_locks, off)
4358 -> S=[],
4359 T=[]
4360 ; bagof(Q-R,
4361 M^O^(lists:member(M, N), pairlist:lookup_eq(D, M, O), memberchk_eq(O, P), chr_lock(O, Q), chr_unlock(O, R)),
4362 U)
4363 -> once(pairup(S, T, U))
4364 ; S=[],
4365 T=[]
4366 ),
4367 list2conj(S, W),
4368 list2conj(T, Y),
4369 list2conj(I, X),
4370 V=(W, X, Y),
4371 my_term_copy(Z, A1, B1).
4372split_off_simple_guard([], _, [], []).
4373split_off_simple_guard([A|D], B, C, F) :-
4374 ( simple_guard(A, B)
4375 -> C=[A|E],
4376 split_off_simple_guard(D, B, E, F)
4377 ; C=[],
4378 F=[A|D]
4379 ).
4380simple_guard(A, C) :-
4381 binds_b(A, B),
4382 \+ ( member(D, B),
4383 lookup_eq(C, D, _)
4384 ).
4385active_constraint_detachment(E, I, A, J, H) :-
4386 functor(A, B, C),
4387 D=B/C,
4388 ( is_stored(D)
4389 -> ( ( E==[0],
4390 chr_pp_flag(store_in_guards, off)
4391 ; get_allocation_occurrence(D, G),
4392 get_max_occurrence(D, F),
4393 F<G
4394 ),
4395 only_ground_indexed_arguments(D),
4396 chr_pp_flag(late_allocation, on)
4397 -> H=true
4398 ; gen_uncond_susp_detachment(A,
4399 I,
4400 active,
4401 J,
4402 K),
4403 ( chr_pp_flag(late_allocation, on)
4404 -> H=(var(I)->true;K)
4405 ; H=K
4406 )
4407 )
4408 ; H=true
4409 ).
4410partner_constraint_detachments([], [], _, true).
4411partner_constraint_detachments([B|E], [A|F], C, (D, G)) :-
4412 gen_uncond_susp_detachment(A, B, partner, C, D),
4413 partner_constraint_detachments(E, F, C, G).
4414gen_uncond_susp_detachment(A, G, H, J, E) :-
4415 functor(A, B, C),
4416 D=B/C,
4417 ( is_stored(D)
4418 -> E=(F, I),
4419 ( chr_pp_flag(debugable, on)
4420 -> F='chr debug_event'(remove(G))
4421 ; F=true
4422 ),
4423 remove_constraint_goal(D,
4424 G,
4425 L,
4426 true,
4427 (K, M),
4428 H,
4429 I),
4430 delete_constraint_goal(A, G, J, K),
4431 ( \+ only_ground_indexed_arguments(D),
4432 \+ get_store_type(D, var_assoc_store(_, _))
4433 -> detach_constraint_atom(D, L, G, M)
4434 ; M=true
4435 )
4436 ; E=true
4437 ).
4438simpagation_head1_code(C, J1, J, L, A, E/D, _, H, A2, C2) :-
4439 A=pragma(B, ids(_, M), _, _, N),
4440 B=rule(_, K, H1, I1),
4441 head_info(C, D, B1, A1, I, F),
4442 get_constraint_mode(E/D, G),
4443 head_arg_matches(F, G, [], U1, V, [], W),
4444 build_head(E, D, H, I, T1),
4445 append(J, K, O),
4446 append(L, M, P),
4447 reorder_heads(N, C, O, P, S, T),
4448 guard_splitting(B, Q),
4449 ( is_stored_in_guard(E/D, N)
4450 -> R=[_|Q]
4451 ; R=Q
4452 ),
4453 guard_via_reschedule_new(S,
4454 R,
4455 C,
4456 Z,
4457 U,
4458 V1),
4459 rest_heads_retrieval_and_matching(S,
4460 T,
4461 C,
4462 U,
4463 X,
4464 V,
4465 Y,
4466 [],
4467 [],
4468 [],
4469 W,
4470 _),
4471 split_by_ids(T,
4472 X,
4473 L,
4474 E1,
4475 F1,
4476 K1,
4477 L1),
4478 guard_body_copies3(B, R, Y, Z, Y1),
4479 ( is_stored_in_guard(E/D, N)
4480 -> gen_uncond_attach_goal(E/D,
4481 A1,
4482 B1,
4483 D1,
4484 _),
4485 Z=[C1|_],
4486 C1=D1
4487 ; true
4488 ),
4489 sort_by_key(E1, F1, G1),
4490 partner_constraint_detachments(G1, J, Y, W1),
4491 active_constraint_detachment(H, A1, C, Y, X1),
4492 ( chr_pp_flag(debugable, on)
4493 -> my_term_copy(H1-I1, Y, O1-P1),
4494 sort_by_key([A1|E1], [J1|F1], M1),
4495 sort_by_key(K1, L1, N1),
4496 Q1='chr debug_event'(try(M1, N1, O1, P1)),
4497 R1='chr debug_event'(apply(M1, N1, O1, P1)),
4498 instrument_goal(!, Q1, R1, S1)
4499 ; S1=!
4500 ),
4501 Z1=(T1:-U1, V1, S1, W1, X1, Y1),
4502 add_location(Z1, N, B2),
4503 A2=[B2|C2].
4504split_by_ids([], [], _, [], []).
4505split_by_ids([A|H], [D|I], B, C, E) :-
4506 ( memberchk_eq(A, B)
4507 -> C=[D|F],
4508 E=G
4509 ; C=F,
4510 E=[D|G]
4511 ),
4512 split_by_ids(H, I, B, F, G).
4513split_by_ids([], [], _, [], [], [], []).
4514split_by_ids([A|L], [D|M], B, C, E, F, G) :-
4515 ( memberchk_eq(A, B)
4516 -> C=[D|H],
4517 E=[A|I],
4518 F=J,
4519 G=K
4520 ; C=H,
4521 E=I,
4522 F=[D|J],
4523 G=[A|K]
4524 ),
4525 split_by_ids(L, M, B, H, I, J, K).
4526simpagation_head2_code(H, C1, D, F, A, O, P, Q, R, E1) :-
4527 A=pragma(B, ids(E, T), _, _, G),
4528 B=rule(C, _, M, N),
4529 append(C, D, I),
4530 append(E, F, J),
4531 reorder_heads(G,
4532 H,
4533 I,
4534 J,
4535 [K|L],
4536 [S|U]),
4537 simpagation_head2_prelude(H,
4538 K,
4539 [L, M, N],
4540 O,
4541 P,
4542 Q,
4543 R,
4544 W),
4545 extend_id(Q, V),
4546 ( memberchk_eq(S, T)
4547 -> simpagation_universal_searches(L,
4548 U,
4549 T,
4550 [K, H],
4551 B,
4552 O,
4553 P,
4554 Z,
4555 A1,
4556 B1,
4557 V,
4558 Y,
4559 W,
4560 X)
4561 ; W=X,
4562 V=Y,
4563 Z=L,
4564 A1=[K, H],
4565 B1=U
4566 ),
4567 universal_search_iterator_end(A1,
4568 Z,
4569 B,
4570 O,
4571 P,
4572 Y,
4573 X,
4574 D1),
4575 simpagation_head2_worker(A1,
4576 Z,
4577 B1,
4578 C1,
4579 A,
4580 O,
4581 P,
4582 Y,
4583 D1,
4584 E1).
4585simpagation_universal_searches([], [], _, A, _, _, _, [], A, [], B, B, C, C).
4586simpagation_universal_searches(A, [I|L], J, C, D, E, F, N, O, P, B, R, G, T) :-
4587 A=[M|K],
4588 inc_id(B, Q),
4589 universal_search_iterator_end(C,
4590 A,
4591 D,
4592 E,
4593 F,
4594 B,
4595 G,
4596 H),
4597 universal_search_iterator(A,
4598 C,
4599 D,
4600 E,
4601 F,
4602 B,
4603 H,
4604 S),
4605 ( memberchk_eq(I, J)
4606 -> simpagation_universal_searches(K,
4607 L,
4608 J,
4609 [M|C],
4610 D,
4611 E,
4612 F,
4613 N,
4614 O,
4615 P,
4616 Q,
4617 R,
4618 S,
4619 T)
4620 ; R=Q,
4621 S=T,
4622 N=K,
4623 O=[M|C],
4624 L=P
4625 ).
4626simpagation_head2_prelude(A, H, N, C/B, K, D, Y, A1) :-
4627 head_info(A, B, L, M, E, F),
4628 build_head(C, B, D, E, S),
4629 get_constraint_mode(C/B, G),
4630 head_arg_matches(F, G, [], T, I, [], J),
4631 lookup_passive_head(H, [A], I, J, U, O),
4632 gen_occ_allocation(C/B, K, L, M, V),
4633 extend_id(D, Q),
4634 extra_active_delegate_variables(A,
4635 [H|N],
4636 I,
4637 P),
4638 append([O|E], P, R),
4639 build_head(C, B, [K|Q], R, W),
4640 X=(S:-T, U, !, V, W),
4641 add_dummy_location(X, Z),
4642 Y=[Z|A1].
(A, B, C, E) :-
4644 A=..[_|D],
4645 delegate_variables(A, B, C, D, E).
4646passive_delegate_variables(B, A, C, D, F) :-
4647 term_variables(A, E),
4648 delegate_variables(B, C, D, E, F).
4649delegate_variables(A, B, H, F, I) :-
4650 term_variables(A, C),
4651 term_variables(B, D),
4652 intersect_eq(C, D, E),
4653 list_difference_eq(E, F, G),
4654 translate(G, H, I).
4655simpagation_head2_worker([D|C], E, D1, _, A, V/W, X, Y, L2, N2) :-
4656 A=pragma(B, ids(H1, _), D2, _, A1),
4657 B=rule(_, _, F, G),
4658 get_prop_inner_loop_vars(C,
4659 [D, E, F, G],
4660 U,
4661 N,
4662 O1,
4663 P1,
4664 P),
4665 gen_var(J),
4666 gen_var(T),
4667 functor(D, K, H),
4668 gen_vars(H, I),
4669 head_info(D, H, I, J, _, L),
4670 get_constraint_mode(K/H, M),
4671 head_arg_matches(L, M, N, S, F1, [], _),
4672 delay_phase_end(validate_store_type_assumptions,
4673 (static_suspension_term(K/H, O), get_static_suspension_field(K/H, O, state, active, Q), get_static_suspension_term_field(arguments, K/H, O, I))),
4674 different_from_other_susps(D, J, C, P, R),
4675 G2=(J=O, Q, R, S),
4676 Z=[[J|T]|U],
4677 build_head(V, W, [X|Y], Z, F2),
4678 guard_splitting(B, B1),
4679 ( is_stored_in_guard(V/W, A1)
4680 -> C1=[_|B1]
4681 ; C1=B1
4682 ),
4683 guard_via_reschedule_new(E,
4684 C1,
4685 [D|C],
4686 N1,
4687 E1,
4688 H2),
4689 rest_heads_retrieval_and_matching(E,
4690 D1,
4691 [D|C],
4692 E1,
4693 G1,
4694 F1,
4695 K1,
4696 [D|C],
4697 [J|P],
4698 []),
4699 split_by_ids(D1, G1, H1, I1, W1),
4700 split_by_ids(D1, E, H1, J1, _),
4701 partner_constraint_detachments([J|I1],
4702 [D|J1],
4703 K1,
4704 I2),
4705 L1=[T|U],
4706 build_head(V, W, [X|Y], L1, Q1),
4707 M1=[[]|U],
4708 build_head(V, W, [X|Y], M1, S1),
4709 guard_body_copies3(B, C1, K1, N1, J2),
4710 ( is_stored_in_guard(V/W, A1)
4711 -> N1=[B2|_]
4712 ; true
4713 ),
4714 ( is_observed(V/W, X)
4715 -> gen_uncond_attach_goal(V/W,
4716 O1,
4717 P1,
4718 T1,
4719 R1),
4720 gen_state_cond_call(O1,
4721 V/W,
4722 Q1,
4723 R1,
4724 U1),
4725 gen_state_cond_call(O1,
4726 V/W,
4727 S1,
4728 R1,
4729 V1)
4730 ; T1=true,
4731 U1=Q1,
4732 V1=S1
4733 ),
4734 ( chr_pp_flag(debugable, on)
4735 -> my_term_copy(F-G, N, X1-Y1),
4736 Z1='chr debug_event'(try([J|I1], [O1|W1], X1, Y1)),
4737 A2='chr debug_event'(apply([J|I1], [O1|W1], X1, Y1))
4738 ; Z1=true,
4739 A2=true
4740 ),
4741 ( is_stored_in_guard(V/W, A1)
4742 -> B2=T1,
4743 C2=true
4744 ; B2=true,
4745 C2=T1
4746 ),
4747 ( member(unique(_, E2), D2),
4748 check_unique_keys(E2, N)
4749 -> K2=(F2:-G2->(H2, Z1->A2, I2, C2, J2, V1;S1);Q1)
4750 ; K2=(F2:-G2, H2, Z1->A2, I2, C2, J2, U1;Q1)
4751 ),
4752 add_location(K2, A1, M2),
4753 L2=[M2|N2].
4754gen_state_cond_call(B, A, J, D, I) :-
4755 ( may_trigger(A)
4756 -> does_use_field(A, generation),
4757 delay_phase_end(validate_store_type_assumptions,
4758 (static_suspension_term(A, C), get_update_static_suspension_field(A, B, C, state, active, inactive, E, F), get_static_suspension_field(A, C, generation, D, H), get_static_suspension_term_field(arguments, A, C, G)))
4759 ; delay_phase_end(validate_store_type_assumptions,
4760 (static_suspension_term(A, C), get_update_static_suspension_field(A, B, C, state, active, inactive, E, F), get_static_suspension_term_field(arguments, A, C, G))),
4761 H=true
4762 ),
4763 I=(B=C, E, H->F, J;true).
4764propagation_code(B, C, A, K, D, E, F, G, H, I, J) :-
4765 ( A==[]
4766 -> propagation_single_headed(B,
4767 C,
4768 D,
4769 E,
4770 F,
4771 G,
4772 H,
4773 I,
4774 J)
4775 ; propagation_multi_headed(B,
4776 A,
4777 K,
4778 D,
4779 E,
4780 F,
4781 G,
4782 H,
4783 I,
4784 J)
4785 ).
4786propagation_single_headed(A, _, I, V, C/B, L, D, R1, T1) :-
4787 head_info(A, B, W, O, E, G),
4788 build_head(C, B, D, E, M1),
4789 inc_id(D, F),
4790 build_head(C, B, F, E, K),
4791 get_constraint_mode(C/B, H),
4792 head_arg_matches(G, H, [], N1, J, [], _),
4793 guard_body_copies(I, J, O1, P1),
4794 C1=K,
4795 actual_cut(C/B, L, R),
4796 I=rule(_, _, M, N),
4797 ( chr_pp_flag(debugable, on)
4798 -> my_term_copy(M-N, J, P-Q),
4799 S='chr debug_event'(try([], [O], P, Q)),
4800 T='chr debug_event'(apply([], [O], P, Q)),
4801 instrument_goal(R, S, T, U)
4802 ; U=R
4803 ),
4804 ( may_trigger(C/B),
4805 \+ has_no_history(V)
4806 -> use_auxiliary_predicate(novel_production),
4807 use_auxiliary_predicate(extend_history),
4808 does_use_history(C/B, L),
4809 gen_occ_allocation(C/B,
4810 L,
4811 W,
4812 O,
4813 G1),
4814 ( named_history(V, Y, X)
4815 -> ( X==[]
4816 -> empty_named_history_novel_production(Y, A1),
4817 empty_named_history_extend_history(Y, B1)
4818 ; Z=Y
4819 )
4820 ; Z=V
4821 ),
4822 ( var(A1)
4823 -> A1='$novel_production'(O, Z),
4824 B1='$extend_history'(O, Z)
4825 ; true
4826 ),
4827 ( is_observed(C/B, L)
4828 -> gen_uncond_attach_goal(C/B,
4829 O,
4830 W,
4831 E1,
4832 D1),
4833 gen_state_cond_call(O,
4834 C/B,
4835 C1,
4836 D1,
4837 F1)
4838 ; E1=true,
4839 F1=C1
4840 )
4841 ; G1=true,
4842 A1=true,
4843 B1=true,
4844 ( is_observed(C/B, L)
4845 -> get_allocation_occurrence(C/B, H1),
4846 ( L==H1
4847 -> gen_insert_constraint_internal_goal(C/B,
4848 E1,
4849 E,
4850 W,
4851 O),
4852 D1=0
4853 ; E1=(I1, J1),
4854 gen_occ_allocation(C/B,
4855 L,
4856 W,
4857 O,
4858 I1),
4859 gen_uncond_attach_goal(C/B,
4860 O,
4861 W,
4862 J1,
4863 D1)
4864 ),
4865 gen_state_cond_call(O,
4866 C/B,
4867 C1,
4868 D1,
4869 F1)
4870 ; gen_occ_allocation(C/B,
4871 L,
4872 W,
4873 O,
4874 E1),
4875 F1=C1
4876 )
4877 ),
4878 ( is_stored_in_guard(C/B, V)
4879 -> K1=E1,
4880 L1=true
4881 ; K1=true,
4882 L1=E1
4883 ),
4884 Q1=(M1:-N1, G1, A1, K1, O1, U, B1, L1, P1, F1),
4885 add_location(Q1, V, S1),
4886 R1=[S1|T1].
4887propagation_multi_headed(B, A, J, C, K, D, E, F, G, N) :-
4888 A=[I|H],
4889 propagation_prelude(B,
4890 A,
4891 C,
4892 D,
4893 E,
4894 F,
4895 G,
4896 M),
4897 extend_id(F, L),
4898 propagation_nested_code(H,
4899 [I, B],
4900 J,
4901 C,
4902 K,
4903 D,
4904 E,
4905 L,
4906 M,
4907 N).
4908propagation_prelude(A, [I|J], H, C/B, O, D, C1, E1) :-
4909 head_info(A, B, P, Q, E, F),
4910 build_head(C, B, D, E, W),
4911 get_constraint_mode(C/B, G),
4912 head_arg_matches(F, G, [], X, M, [], N),
4913 H=rule(_, _, K, L),
4914 extra_active_delegate_variables(A,
4915 [I, J, K, L],
4916 M,
4917 S),
4918 lookup_passive_head(I, [A], M, N, Y, R),
4919 gen_occ_allocation(C/B, O, P, Q, Z),
4920 extend_id(D, T),
4921 append([R|E], S, U),
4922 build_head(C, B, [O|T], U, V),
4923 A1=V,
4924 B1=(W:-X, Y, !, Z, A1),
4925 add_dummy_location(B1, D1),
4926 C1=[D1|E1].
4927propagation_nested_code([], [A|B], H, C, I, D, E, F, G, K) :-
4928 universal_search_iterator_end([A|B],
4929 [],
4930 C,
4931 D,
4932 E,
4933 F,
4934 G,
4935 J),
4936 propagation_body(A,
4937 B,
4938 H,
4939 C,
4940 I,
4941 D,
4942 E,
4943 F,
4944 J,
4945 K).
4946propagation_nested_code([B|C], A, J, D, K, E, F, G, H, N) :-
4947 universal_search_iterator_end(A,
4948 [B|C],
4949 D,
4950 E,
4951 F,
4952 G,
4953 H,
4954 I),
4955 universal_search_iterator([B|C],
4956 A,
4957 D,
4958 E,
4959 F,
4960 G,
4961 I,
4962 M),
4963 inc_id(G, L),
4964 propagation_nested_code(C,
4965 [B|A],
4966 J,
4967 D,
4968 K,
4969 E,
4970 F,
4971 L,
4972 M,
4973 N).
4974check_fd_lookup_condition(A, B, _, _) :-
4975 get_store_type(A/B, global_singleton),
4976 !.
4977check_fd_lookup_condition(A, B, E, F) :-
4978 \+ may_trigger(A/B),
4979 get_functional_dependency(A/B, 1, C, D),
4980 copy_term(C-D, E-G),
4981 term_variables(F, H),
4982 intersect_eq(G, H, G),
4983 !.
4984propagation_body(C, B, O1, A, N1, P/Q, R, S, S2, U2) :-
4985 A=rule(_, Z1, D, E),
4986 gen_var_susp_list_for_b(B,
4987 [C, D, E],
4988 E1,
4989 F,
4990 U,
4991 G,
4992 V),
4993 flatten(F, O),
4994 init(G, F1),
4995 last(G, H1),
4996 gen_var(L),
4997 gen_var(N),
4998 functor(C, I, H),
4999 gen_vars(H, K),
5000 delay_phase_end(validate_store_type_assumptions,
5001 (static_suspension_term(I/H, J), get_static_suspension_field(I/H, J, state, active, M), get_static_suspension_term_field(arguments, I/H, J, K))),
5002 M2=(L=J, M),
5003 T=[[L|N]|O],
5004 build_head(P, Q, [R|S], T, L2),
5005 ( check_fd_lookup_condition(I, H, C, B)
5006 -> universal_search_iterator_failure_vars(B,
5007 S,
5008 F,
5009 U,
5010 V,
5011 W,
5012 Y),
5013 X=W
5014 ; X=[N|O],
5015 Y=S
5016 ),
5017 ( Y=[_]
5018 -> Z=Y
5019 ; Z=[R|Y]
5020 ),
5021 build_head(P, Q, Z, X, A1),
5022 J1=A1,
5023 C=..[_|B1],
5024 pairup(B1, K, C1),
5025 get_constraint_mode(I/H, D1),
5026 head_arg_matches(C1, D1, E1, O2, G1),
5027 different_from_other_susps(C, L, B, F1, N2),
5028 guard_body_copies(A, G1, P2, Q2),
5029 get_occurrence(P/Q, R, _, R1),
5030 ( is_observed(P/Q, R)
5031 -> init(U, I1),
5032 gen_uncond_attach_goal(P/Q,
5033 H1,
5034 I1,
5035 L1,
5036 K1),
5037 gen_state_cond_call(H1,
5038 P/Q,
5039 J1,
5040 K1,
5041 M1)
5042 ; L1=true,
5043 M1=J1
5044 ),
5045 ( ( is_least_occurrence(N1)
5046 ; has_no_history(N1)
5047 )
5048 -> P1=true,
5049 Q1=true
5050 ; \+ may_trigger(P/Q),
5051 maplist(is_passive(N1), O1)
5052 -> P1=true,
5053 Q1=true
5054 ; get_occurrence(P/Q, R, _, R1),
5055 use_auxiliary_predicate(novel_production),
5056 use_auxiliary_predicate(extend_history),
5057 does_use_history(P/Q, R),
5058 ( named_history(N1, T1, S1)
5059 -> ( S1==[]
5060 -> empty_named_history_novel_production(T1, P1),
5061 empty_named_history_extend_history(T1, Q1)
5062 ; reverse([L|F1], U1),
5063 named_history_susps(S1,
5064 [R1|O1],
5065 [H1|U1],
5066 V1),
5067 V1=[W1|_],
5068 ( length(S1, 1)
5069 -> Q1='$extend_history'(W1, T1),
5070 P1='$novel_production'(W1, T1)
5071 ; findall(X1,
5072 ( member(Y1, S1),
5073 get_occurrence_from_id(X1,
5074 _,
5075 N1,
5076 Y1)
5077 ),
5078 A2),
5079 B2=..[t, T1|V1]
5080 )
5081 )
5082 ; W1=H1,
5083 maplist(extract_symbol, Z1, A2),
5084 sort([R1|O1], S1),
5085 history_susps(O1,
5086 [L|F1],
5087 H1,
5088 R1,
5089 V1),
5090 B2=..[t, N1|V1]
5091 ),
5092 ( var(P1)
5093 -> novel_production_calls(A2,
5094 S1,
5095 V1,
5096 N1,
5097 C2,
5098 D2),
5099 Q1='$extend_history'(W1, C2),
5100 P1=(C2=B2, D2)
5101 ; true
5102 )
5103 ),
5104 ( chr_pp_flag(debugable, on)
5105 -> A=rule(_, _, D, E),
5106 my_term_copy(D-E, G1, F2-G2),
5107 get_occurrence(P/Q, R, _, R1),
5108 sort_by_key([H1, L|F1], [R1|O1], E2),
5109 H2='chr debug_event'(try([], E2, F2, G2)),
5110 I2='chr debug_event'(apply([], E2, F2, G2))
5111 ; H2=true,
5112 I2=true
5113 ),
5114 ( is_stored_in_guard(P/Q, N1)
5115 -> J2=L1,
5116 K2=true
5117 ; J2=true,
5118 K2=L1
5119 ),
5120 R2=(L2:-M2, N2, O2, P1, J2, P2, H2->I2, Q1, K2, Q2, M1;J1),
5121 add_location(R2, N1, T2),
5122 S2=[T2|U2].
(A, B/C) :-
5124 functor(A, B, C).
5125novel_production_calls([], [], [], _, _, true).
5126novel_production_calls([A|H], [C|I], [E|J], B, F, (G, K)) :-
5127 get_occurrence_from_id(A, D, B, C),
5128 delay_phase_end(validate_store_type_assumptions,
5129 novel_production_call(A,
5130 D,
5131 '$novel_production'(E, F),
5132 G)),
5133 novel_production_calls(H, I, J, B, F, K).
5134history_susps(E, A, B, D, F) :-
5135 reverse(A, C),
5136 sort_by_key([B|C], [D|E], F).
5137named_history_susps([], _, _, []).
5138named_history_susps([A|E], C, D, [B|H]) :-
5139 select2(A, B, C, D, F, G),
5140 !,
5141 named_history_susps(E, F, G, H).
5142gen_var_susp_list_for([A], I, H, K, D, C) :-
5143 !,
5144 functor(A, E, B),
5145 head_info(A, B, _, C, D, F),
5146 get_constraint_mode(E/B, G),
5147 head_arg_matches(F, G, [], _, H),
5148 extra_active_delegate_variables(A, I, H, J),
5149 append(D, J, K).
5150gen_var_susp_list_for([B|A], C, K, N, D, E) :-
5151 gen_var_susp_list_for(A,
5152 [B|C],
5153 J,
5154 D,
5155 _,
5156 _),
5157 functor(B, G, F),
5158 gen_var(E),
5159 head_info(B, F, _, M, _, H),
5160 get_constraint_mode(G/F, I),
5161 head_arg_matches(H, I, J, _, K),
5162 passive_delegate_variables(B, A, C, K, L),
5163 append(L, [M, E|D], N).
5164gen_var_susp_list_for_b([A], I, H, [K], D, [C], []) :-
5165 !,
5166 functor(A, E, B),
5167 head_info(A, B, _, C, D, F),
5168 get_constraint_mode(E/B, G),
5169 head_arg_matches(F, G, [], _, H),
5170 extra_active_delegate_variables(A, I, H, J),
5171 append(D, J, K).
5172gen_var_susp_list_for_b([B|A], C, O, [Q|D], E, [J|F], [H|G]) :-
5173 gen_var_susp_list_for_b(A,
5174 [B|C],
5175 N,
5176 D,
5177 E,
5178 F,
5179 G),
5180 functor(B, K, I),
5181 gen_var(H),
5182 head_info(B, I, _, J, _, L),
5183 get_constraint_mode(K/I, M),
5184 head_arg_matches(L, M, N, _, O),
5185 passive_delegate_variables(B, A, C, O, P),
5186 append(P, [J, H], Q).
5187get_prop_inner_loop_vars([A], I, L, H, D, C, []) :-
5188 !,
5189 functor(A, E, B),
5190 head_info(A, B, C, D, J, F),
5191 get_constraint_mode(E/B, G),
5192 head_arg_matches(F, G, [], _, H),
5193 extra_active_delegate_variables(A, I, H, K),
5194 append(J, K, L).
5195get_prop_inner_loop_vars([B|A], C, Q, M, D, E, [H|F]) :-
5196 get_prop_inner_loop_vars(A,
5197 [B|C],
5198 P,
5199 L,
5200 D,
5201 E,
5202 F),
5203 functor(B, I, G),
5204 gen_var(O),
5205 head_info(B, G, _, H, _, J),
5206 get_constraint_mode(I/G, K),
5207 head_arg_matches(J, K, L, _, M),
5208 passive_delegate_variables(B, A, C, M, N),
5209 append(N, [H, O|P], Q).
5210reorder_heads(C, D, A, E, F, G) :-
5211 ( chr_pp_flag(reorder_heads, on),
5212 length(A, B),
5213 B=<6
5214 -> reorder_heads_main(C, D, A, E, F, G)
5215 ; F=A,
5216 G=E
5217 ).
5218reorder_heads_main(E, A, C, D, N, P) :-
5219 term_variables(A, B),
5220 F=entry([], [], B, C, D, E),
5221 copy_term_nat(F, G),
5222 a_star(G,
5223 H^(chr_translate:final_data(H)),
5224 I^J^K^(chr_translate:expand_data(I, J, K)),
5225 L),
5226 G=F,
5227 L=entry(M, O, _, _, _, _),
5228 reverse(M, N),
5229 reverse(O, P).
5230final_data(A) :-
5231 A=entry(_, _, _, _, [], _).
5232expand_data(A, F, N) :-
5233 A=entry(G, I, E, B, C, M),
5234 select2(D, H, B, C, K, L),
5235 term_variables([D|E], J),
5236 F=entry([D|G], [H|I], J, K, L, M),
5237 order_score(D, H, E, K, M, N).
5238order_score(A, E, F, G, H, I) :-
5239 functor(A, B, C),
5240 get_store_type(B/C, D),
5241 order_score(D, A, E, F, G, H, 99999, I).
5242order_score(default, A, _, F, B, _, I, H) :-
5243 term_variables(A, C),
5244 term_variables(B, G),
5245 ground_vars([A], D),
5246 list_difference_eq(C, D, E),
5247 order_score_vars(E, F, G, J),
5248 H is min(I, J).
5249order_score(multi_inthash(C), D, _, E, _, _, A, B) :-
5250 ( A=<100
5251 -> B=A
5252 ; order_score_indexes(C, D, E, B)
5253 ).
5254order_score(multi_hash(C), D, _, E, _, _, A, B) :-
5255 ( A=<100
5256 -> B=A
5257 ; order_score_indexes(C, D, E, B)
5258 ).
5259order_score(global_ground, A, _, D, B, _, H, G) :-
5260 term_variables(A, C),
5261 term_variables(B, E),
5262 order_score_vars(C, D, E, F),
5263 I is F*200,
5264 G is min(H, I).
5265order_score(var_assoc_store(_, _), _, _, _, _, _, _, 1).
5266order_score(global_singleton, _, _, _, _, _, _, A) :-
5267 A=1.
5268order_score(multi_store(A), B, C, D, E, F, G, H) :-
5269 multi_order_score(A,
5270 B,
5271 C,
5272 D,
5273 E,
5274 F,
5275 G,
5276 H).
5277multi_order_score([], _, _, _, _, _, A, A).
5278multi_order_score([A|I], B, C, D, E, F, G, J) :-
5279 ( order_score(A,
5280 B,
5281 C,
5282 D,
5283 E,
5284 F,
5285 G,
5286 H)
5287 -> true
5288 ; H=G
5289 ),
5290 multi_order_score(I,
5291 B,
5292 C,
5293 D,
5294 E,
5295 F,
5296 H,
5297 J).
5298order_score(identifier_store(A), B, _, D, _, _, F, E) :-
5299 arg(A, B, C),
5300 memberchk_eq(C, D),
5301 E is min(F, 10).
5302order_score(type_indexed_identifier_store(A, _), B, _, D, _, _, F, E) :-
5303 arg(A, B, C),
5304 memberchk_eq(C, D),
5305 E is min(F, 10).
5306order_score_indexes(D, A, B, F) :-
5307 copy_term_nat(A+B, E+C),
5308 numbervars(C, 0, _),
5309 order_score_indexes(D, E, F).
5310order_score_indexes([A|E], B, D) :-
5311 args(A, B, C),
5312 ( maplist(ground, C)
5313 -> D=100
5314 ; order_score_indexes(E, B, D)
5315 ).
5316memberchk_eq_flip(B, A) :-
5317 memberchk_eq(A, B).
5318order_score_vars(A, B, C, G) :-
5319 order_score_count_vars(A, B, C, D-E-F),
5320 ( D-E-F==0-0-0
5321 -> G=0
5322 ; D>0
5323 -> G is max(10-D, 0)
5324 ; E>0
5325 -> G is max(10-E, 1)*100
5326 ; G is max(10-F, 1)*1000
5327 ).
5328order_score_count_vars([], _, _, 0-0-0).
5329order_score_count_vars([D|A], B, C, E-G-I) :-
5330 order_score_count_vars(A, B, C, F-H-J),
5331 ( memberchk_eq(D, B)
5332 -> E is F+1,
5333 G=H,
5334 I=J
5335 ; memberchk_eq(D, C)
5336 -> G is H+1,
5337 E=F,
5338 I=J
5339 ; I is J+1,
5340 E=F,
5341 G=H
5342 ).
5343create_get_mutable_ref(C, B, A) :-
5344 A=(B=mutable(C)).
5345create_get_mutable(B, A, C) :-
5346 A=mutable(B),
5347 C=true.
5348gen_var(_).
5349gen_vars(B, A) :-
5350 length(A, B).
5351ast_head_info1(A, C, D, E, G) :-
5352 A=chr_constraint(_/B, F, _),
5353 vars_susp(B, C, D, E),
5354 pairup(F, C, G).
5355head_info1(E, _/A, B, C, D, G) :-
5356 vars_susp(A, B, C, D),
5357 E=..[_|F],
5358 pairup(F, B, G).
5359head_info(E, A, B, C, D, G) :-
5360 vars_susp(A, B, C, D),
5361 E=..[_|F],
5362 pairup(F, B, G).
5363inc_id([C|A], [B|A]) :-
5364 B is C+1.
5365dec_id([C|A], [B|A]) :-
5366 B is C-1.
5367extend_id(A, [0|A]).
5368next_id([_, C|A], [B|A]) :-
5369 B is C+1.
5370build_head(A/B, C, D, E) :-
5371 build_head(A, B, C, D, E).
5372build_head(A, B, C, H, F) :-
5373 buildName(A, B, C, G),
5374 ( ( chr_pp_flag(debugable, on)
5375 ; is_stored(A/B),
5376 ( has_active_occurrence(A/B)
5377 ; chr_pp_flag(late_allocation, off)
5378 ),
5379 ( may_trigger(A/B)
5380 ; get_allocation_occurrence(A/B, E),
5381 get_max_occurrence(A/B, D),
5382 D>=E
5383 )
5384 )
5385 -> F=..[G|H]
5386 ; init(H, I),
5387 F=..[G|I]
5388 ).
5389buildName(A, B, E, H) :-
5390 ( ( chr_pp_flag(debugable, on)
5391 ; once(( is_stored(A/B),
5392 ( has_active_occurrence(A/B)
5393 ; chr_pp_flag(late_allocation, off)
5394 ),
5395 ( may_trigger(A/B)
5396 ; get_allocation_occurrence(A/B, D),
5397 get_max_occurrence(A/B, C),
5398 C>=D
5399 )
5400 ; E\=[0]
5401 ))
5402 )
5403 -> atom_concat(A, '___', F),
5404 atomic_concat(F, B, G),
5405 buildName_(E, G, H)
5406 ; H=A
5407 ).
5408buildName_([], A, A).
5409buildName_([E|A], B, F) :-
5410 buildName_(A, B, C),
5411 atom_concat(C, '__', D),
5412 atomic_concat(D, E, F).
5413vars_susp(B, A, C, D) :-
5414 length(A, B),
5415 append(A, [C], D).
5416or_pattern(A, B) :-
5417 C is A-1,
5418 B is 1<<C.
5419and_pattern(A, C) :-
5420 B is A-1,
5421 D is 1<<B,
5422 C is -1*(D+1).
5423make_name(A, B/C, D) :-
5424 atom_concat_list([A, B, '___', C], D).
5425make_attr(B, D, A, C) :-
5426 length(A, B),
5427 C=..[v, D|A].
5428get_all_suspensions2(A, C, B) :-
5429 chr_pp_flag(dynattr, off),
5430 !,
5431 make_attr(A, _, B, C).
5432get_all_suspensions2(B, D, C, A) :-
5433 length(A, B),
5434 C='chr all_suspensions'(A, 1, D).
5435normalize_attr(B, A, C) :-
5436 A='chr normalize_attr'(B, C).
5437get_suspensions(B, D, A, A=C, F) :-
5438 chr_pp_flag(dynattr, off),
5439 !,
5440 make_attr(B, _, E, C),
5441 nth1(D, E, F).
5442get_suspensions(_, B, D, A, C) :-
5443 A=(memberchk(B-C, D)->true;C=[]).
5444singleton_attr(B, F, A, D) :-
5445 chr_pp_flag(dynattr, off),
5446 !,
5447 or_pattern(A, C),
5448 make_attr(B, C, E, D),
5449 nth1(A, E, [F], G),
5450 set_elems(G, []).
5451singleton_attr(_, C, B, A) :-
5452 A=[B-[C]].
5453add_attr(A, E, B, J, I, M) :-
5454 chr_pp_flag(dynattr, off),
5455 !,
5456 make_attr(A, F, C, K),
5457 or_pattern(B, L),
5458 nth1(B, C, D),
5459 substitute_eq(D, C, [E|D], G),
5460 make_attr(A, F, G, N),
5461 substitute_eq(D, C, [E], H),
5462 make_attr(A, O, H, P),
5463 I=(J=K, (F/\L=:=L->M=N;O is F\/L, M=P)),
5464 !.
5465add_attr(_, E, C, B, A, D) :-
5466 A=('chr select'(B, C-F, G)->D=[C-[E|F]|G];D=[C-[E]|B]).
5467rem_attr(B, P, L, A, I, H) :-
5468 chr_pp_flag(dynattr, off),
5469 chr_pp_flag(experiment, off),
5470 !,
5471 or_pattern(A, K),
5472 and_pattern(A, O),
5473 make_attr(B, F, C, J),
5474 nth1(A, C, D),
5475 substitute_eq(D, C, [], E),
5476 make_attr(B, N, E, R),
5477 substitute_eq(D, C, M, G),
5478 make_attr(B, F, G, S),
5479 get_target_module(Q),
5480 H=(I=J, (F/\K=:=K->'chr sbag_del_element'(D, L, M), (M==[]->N is F/\O, (N==0->del_attr(P, Q);put_attr(P, Q, R));put_attr(P, Q, S));true)),
5481 !.
5482rem_attr(_, L, H, A, C, B) :-
5483 chr_pp_flag(dynattr, off),
5484 chr_pp_flag(experiment, on),
5485 !,
5486 or_pattern(A, E),
5487 and_pattern(A, J),
5488 F is A+1,
5489 get_target_module(M),
5490 B=(arg(1, C, D), (D/\E=:=E->arg(F, C, G), 'chr sbag_del_element'(G, H, I), (I==[]->K is D/\J, (K==0->del_attr(L, M);setarg(1, C, K), setarg(F, C, I));setarg(F, C, I));true)),
5491 !.
5492rem_attr(_, H, E, C, B, A) :-
5493 get_target_module(I),
5494 A=('chr select'(B, C-D, G)->'chr sbag_del_element'(D, E, F), (F==[]->(G==[]->del_attr(H, I);put_attr(H, I, G));put_attr(H, I, [C-F|G]));true).
5495merge_attributes(A, G, D, F, E) :-
5496 chr_pp_flag(dynattr, off),
5497 !,
5498 make_attr(A, B, C, H),
5499 merge_attributes2(A, B, C, D, I, E),
5500 F=(G=H, I).
5501merge_attributes(_, B, C, A, F) :-
5502 A=(sort(B, D), sort(C, E), 'chr new_merge_attributes'(D, E, F)).
5503merge_attributes2(A, U, B, Q, P, O) :-
5504 make_attr(A, V, C, R),
5505 bagof(F,
5506 D^E^G^H^(member2(B, C, D-E), F=(sort(E, G), 'chr merge_attributes'(D, G, H))),
5507 I),
5508 list2conj(I, S),
5509 bagof(M,
5510 J^K^L^member((J, 'chr merge_attributes'(K, L, M)), I),
5511 N),
5512 make_attr(A, T, N, O),
5513 P=(Q=R, S, T is U\/V).
5514lookup_passive_head(A, E, F, G, H) :-
5515 functor(A, B, C),
5516 get_store_type(B/C, D),
5517 lookup_passive_head(D, A, E, F, [], G, H).
5518lookup_passive_head(A, E, F, G, H, I) :-
5519 functor(A, B, C),
5520 get_store_type(B/C, D),
5521 lookup_passive_head(D,
5522 A,
5523 E,
5524 F,
5525 G,
5526 H,
5527 I).
5528lookup_passive_head(default, A, B, C, _, D, E) :-
5529 functor(A, F, G),
5530 passive_head_via(A, B, C, D, E),
5531 update_store_type(F/G, default).
5532lookup_passive_head(multi_inthash(A), B, _, C, D, E, F) :-
5533 hash_lookup_passive_head(inthash,
5534 A,
5535 B,
5536 C,
5537 D,
5538 E,
5539 F,
5540 _).
5541lookup_passive_head(multi_hash(A), B, _, C, D, E, F) :-
5542 hash_lookup_passive_head(hash,
5543 A,
5544 B,
5545 C,
5546 D,
5547 E,
5548 F,
5549 _).
5550lookup_passive_head(global_ground, A, _, _, _, F, E) :-
5551 functor(A, B, C),
5552 global_ground_store_name(B/C, D),
5553 make_get_store_goal(D, E, F),
5554 update_store_type(B/C, global_ground).
5555lookup_passive_head(var_assoc_store(A, C), B, _, F, _, G, L) :-
5556 arg(A, B, D),
5557 arg(C, B, E),
5558 translate([D, E], F, [H, K]),
5559 get_target_module(I),
5560 G=(get_attr(H, I, J), lookup_assoc_store(J, K, L)).
5561lookup_passive_head(global_singleton, A, _, _, _, E, H) :-
5562 functor(A, B, C),
5563 global_singleton_store_name(B/C, D),
5564 make_get_store_goal(D, G, F),
5565 E=(F, G\==[], H=[G]),
5566 update_store_type(B/C, global_singleton).
5567lookup_passive_head(multi_store(A), C, D, E, F, G, H) :-
5568 once(( member(B, A),
5569 lookup_passive_head(B,
5570 C,
5571 D,
5572 E,
5573 F,
5574 G,
5575 H)
5576 )).
5577lookup_passive_head(identifier_store(B), A, _, D, _, I, G) :-
5578 functor(A, E, F),
5579 arg(B, A, C),
5580 translate([C], D, [H]),
5581 delay_phase_end(validate_store_type_assumptions,
5582 identifier_lookup(E/F,
5583 B,
5584 G,
5585 H,
5586 I)),
5587 update_store_type(E/F, identifier_store(B)),
5588 get_identifier_index(E/F, B, _).
5589lookup_passive_head(type_indexed_identifier_store(B, F), A, _, D, _, E, M) :-
5590 functor(A, K, L),
5591 arg(B, A, C),
5592 ( var(C)
5593 -> translate([C], D, [H]),
5594 E=J
5595 ; ground(C),
5596 C='$chr_identifier_match'(G, _)
5597 -> lookup_only_identifier_atom(F, G, H, I),
5598 E=(I, J)
5599 ),
5600 delay_phase_end(validate_store_type_assumptions,
5601 type_indexed_identifier_lookup(K/L,
5602 B,
5603 F,
5604 M,
5605 H,
5606 J)),
5607 update_store_type(K/L,
5608 type_indexed_identifier_store(B, F)),
5609 get_type_indexed_identifier_index(F,
5610 K/L,
5611 B,
5612 _).
5613identifier_lookup(B, C, F, H, G) :-
5614 get_identifier_size(A),
5615 functor(E, struct, A),
5616 get_identifier_index(B, C, D),
5617 arg(D, E, F),
5618 G=(H=E).
5619type_indexed_identifier_lookup(B, C, A, F, H, G) :-
5620 type_indexed_identifier_structure(A, E),
5621 get_type_indexed_identifier_index(A, B, C, D),
5622 arg(D, E, F),
5623 G=(H=E).
5624hash_lookup_passive_head(I, A, B, C, K, N, J, D) :-
5625 pick_hash_index(A, B, C, D, L, E),
5626 ( E=[F]
5627 -> true
5628 ; F=..[k|E]
5629 ),
5630 functor(B, G, H),
5631 multi_hash_lookup_goal(G/H,
5632 I,
5633 D,
5634 F,
5635 J,
5636 P),
5637 check_ground(K, L, M),
5638 my_term_copy(M, C, O),
5639 N=(O, P),
5640 ( I==inthash
5641 -> update_store_type(G/H, multi_inthash([D]))
5642 ; update_store_type(G/H, multi_hash([D]))
5643 ).
5644pick_hash_index(B, C, E, A, D, F) :-
5645 member(A, B),
5646 args(A, C, D),
5647 key_in_scope(D, E, F),
5648 !.
5649key_in_scope([], _, []).
5650key_in_scope([A|F], C, [D|G]) :-
5651 term_variables(A, B),
5652 translate(B, C, E),
5653 copy_term(A/B, D/E),
5654 key_in_scope(F, C, G).
5655existential_lookup(var_assoc_store(B, C), D, E, F, G, L, M, H, A, A) :-
5656 !,
5657 lookup_passive_head(var_assoc_store(B, C),
5658 D,
5659 E,
5660 F,
5661 G,
5662 N,
5663 I),
5664 sbag_member_call(H, I, O),
5665 functor(D, J, K),
5666 delay_phase_end(validate_store_type_assumptions,
5667 (static_suspension_term(J/K, L), get_static_suspension_field(J/K, L, state, active, P))),
5668 M=(N, O, H=L, P).
5669existential_lookup(global_singleton, B, _, _, _, I, G, F, A, A) :-
5670 !,
5671 functor(B, C, D),
5672 global_singleton_store_name(C/D, E),
5673 make_get_store_goal(E, F, H),
5674 G=(H, F\==[], F=I),
5675 update_store_type(C/D, global_singleton).
5676existential_lookup(multi_store(A), C, D, E, F, G, H, I, J, K) :-
5677 !,
5678 once(( member(B, A),
5679 existential_lookup(B,
5680 C,
5681 D,
5682 E,
5683 F,
5684 G,
5685 H,
5686 I,
5687 J,
5688 K)
5689 )).
5690existential_lookup(multi_inthash(A), B, _, C, D, E, F, G, H, I) :-
5691 !,
5692 existential_hash_lookup(inthash,
5693 A,
5694 B,
5695 C,
5696 D,
5697 E,
5698 F,
5699 G,
5700 H,
5701 I).
5702existential_lookup(multi_hash(A), B, _, C, D, E, F, G, H, I) :-
5703 !,
5704 existential_hash_lookup(hash,
5705 A,
5706 B,
5707 C,
5708 D,
5709 E,
5710 F,
5711 G,
5712 H,
5713 I).
5714existential_lookup(identifier_store(A), B, C, D, E, M, N, K, F, G) :-
5715 !,
5716 lookup_passive_head(identifier_store(A),
5717 B,
5718 C,
5719 D,
5720 E,
5721 O,
5722 J),
5723 hash_index_filter(F, [A], G),
5724 functor(B, H, I),
5725 ( check_fd_lookup_condition(H, I, B, _)
5726 -> L=(J=[K])
5727 ; sbag_member_call(K, J, L)
5728 ),
5729 delay_phase_end(validate_store_type_assumptions,
5730 (static_suspension_term(H/I, M), get_static_suspension_field(H/I, M, state, active, P))),
5731 N=(O, L, K=M, P).
5732existential_lookup(type_indexed_identifier_store(A, B), C, D, E, F, N, O, L, G, H) :-
5733 !,
5734 lookup_passive_head(type_indexed_identifier_store(A, B),
5735 C,
5736 D,
5737 E,
5738 F,
5739 P,
5740 K),
5741 hash_index_filter(G, [A], H),
5742 functor(C, I, J),
5743 ( check_fd_lookup_condition(I, J, C, _)
5744 -> M=(K=[L])
5745 ; sbag_member_call(L, K, M)
5746 ),
5747 delay_phase_end(validate_store_type_assumptions,
5748 (static_suspension_term(I/J, N), get_static_suspension_field(I/J, N, state, active, Q))),
5749 O=(P, M, L=N, Q).
5750existential_lookup(B, C, D, E, F, K, L, G, A, A) :-
5751 lookup_passive_head(B,
5752 C,
5753 D,
5754 E,
5755 F,
5756 M,
5757 H),
5758 sbag_member_call(G, H, N),
5759 functor(C, I, J),
5760 delay_phase_end(validate_store_type_assumptions,
5761 (static_suspension_term(I/J, K), get_static_suspension_field(I/J, K, state, active, O))),
5762 L=(M, N, G=K, O).
5763existential_hash_lookup(A, B, C, D, E, N, O, L, F, H) :-
5764 hash_lookup_passive_head(A,
5765 B,
5766 C,
5767 D,
5768 E,
5769 P,
5770 K,
5771 G),
5772 hash_index_filter(F, G, H),
5773 functor(C, I, J),
5774 ( check_fd_lookup_condition(I, J, C, _)
5775 -> M=(K=[L])
5776 ; sbag_member_call(L, K, M)
5777 ),
5778 delay_phase_end(validate_store_type_assumptions,
5779 (static_suspension_term(I/J, N), get_static_suspension_field(I/J, N, state, active, Q))),
5780 O=(P, M, L=N, Q).
5781hash_index_filter(A, B, C) :-
5782 hash_index_filter(A, B, 1, C).
5783hash_index_filter([], _, _, []).
5784hash_index_filter([E|F], A, B, D) :-
5785 ( A=[C|G]
5786 -> H is B+1,
5787 ( C>B
5788 -> D=[E|I],
5789 hash_index_filter(F, [C|G], H, I)
5790 ; C==B
5791 -> D=[silent(E)|I],
5792 hash_index_filter(F, G, H, I)
5793 )
5794 ; D=[E|F]
5795 ).
5796assume_constraint_stores([]).
5797assume_constraint_stores([A|V]) :-
5798 ( chr_pp_flag(debugable, off),
5799 ( only_ground_indexed_arguments(A)
5800 ; chr_pp_flag(mixed_stores, on)
5801 ),
5802 is_stored(A),
5803 get_store_type(A, default)
5804 -> get_indexed_arguments(A, C),
5805 get_constraint_mode(A, D),
5806 aggregate_all(bag(B)-count,
5807 ( member(B, C),
5808 nth1(B, D, +)
5809 ),
5810 F-E),
5811 ( E>10
5812 -> findall([B], member(B, F), H)
5813 ; findall(B,
5814 ( sublist(B, F),
5815 B\==[]
5816 ),
5817 G),
5818 predsort(longer_list, G, H)
5819 ),
5820 ( get_functional_dependency(A, 1, I, J),
5821 all_distinct_var_args(I),
5822 J==[]
5823 -> assumed_store_type(A, global_singleton)
5824 ; ( only_ground_indexed_arguments(A)
5825 ; E>0
5826 )
5827 -> get_constraint_type_det(A, K),
5828 partition_indexes(H,
5829 K,
5830 O,
5831 L,
5832 Q,
5833 T),
5834 ( L=[]
5835 -> M=N
5836 ; M=[multi_inthash(L)|N]
5837 ),
5838 ( O=[]
5839 -> N=P
5840 ; N=[multi_hash(O)|P]
5841 ),
5842 ( Q=[]
5843 -> P=S
5844 ; maplist(wrap_in_functor(identifier_store), Q, R),
5845 append(R, S, P)
5846 ),
5847 append(T, U, S),
5848 ( only_ground_indexed_arguments(A)
5849 -> U=[global_ground]
5850 ; U=[default]
5851 ),
5852 assumed_store_type(A, multi_store(M))
5853 ; true
5854 )
5855 ; true
5856 ),
5857 assume_constraint_stores(V).
5858partition_indexes([], _, [], [], [], []).
5859partition_indexes([A|O], C, H, G, F, I) :-
5860 ( A=[B],
5861 nth1(B, C, D),
5862 unalias_type(D, E),
5863 E==chr_identifier
5864 -> F=[B|L],
5865 G=M,
5866 H=N,
5867 I=K
5868 ; A=[B],
5869 nth1(B, C, D),
5870 unalias_type(D, E),
5871 nonvar(E),
5872 E=chr_identifier(J)
5873 -> I=[type_indexed_identifier_store(B, J)|K],
5874 F=L,
5875 G=M,
5876 H=N
5877 ; A=[B],
5878 nth1(B, C, D),
5879 unalias_type(D, E),
5880 E==dense_int
5881 -> G=[A|M],
5882 H=N,
5883 F=L,
5884 I=K
5885 ; member(B, A),
5886 nth1(B, C, D),
5887 unalias_type(D, E),
5888 nonvar(E),
5889 E=chr_identifier(_)
5890 -> G=M,
5891 H=N,
5892 F=L,
5893 I=K
5894 ; G=M,
5895 H=[A|N],
5896 F=L,
5897 I=K
5898 ),
5899 partition_indexes(O, C, N, M, L, K).
5900longer_list(F, A, B) :-
5901 length(A, D),
5902 length(B, C),
5903 compare(E, C, D),
5904 ( E==(=)
5905 -> compare(F, A, B)
5906 ; F=E
5907 ).
5908all_distinct_var_args(A) :-
5909 copy_term_nat(A, E),
5910 functor(A, B, C),
5911 functor(D, B, C),
5912 D=@=E.
5913get_indexed_arguments(A, C) :-
5914 A=_/B,
5915 get_indexed_arguments(1, B, A, C).
5916get_indexed_arguments(A, B, D, C) :-
5917 ( A>B
5918 -> C=[]
5919 ; ( is_indexed_argument(D, A)
5920 -> C=[A|E]
5921 ; C=E
5922 ),
5923 F is A+1,
5924 get_indexed_arguments(F, B, D, E)
5925 ).
5926validate_store_type_assumptions([]).
5927validate_store_type_assumptions([A|B]) :-
5928 validate_store_type_assumption(A),
5929 validate_store_type_assumptions(B).
5930universal_search_iterator_end([C|B], D, A, L/M, N, G, W, Y) :-
5931 A=rule(_, _, E, F),
5932 gen_var_susp_list_for_b(B,
5933 [C, D, E, F],
5934 _,
5935 H,
5936 I,
5937 _,
5938 J),
5939 universal_search_iterator_failure_vars(B,
5940 G,
5941 H,
5942 I,
5943 J,
5944 S,
5945 P),
5946 flatten(H, K),
5947 O=[[]|K],
5948 build_head(L, M, [N|G], O, T),
5949 ( P=[_]
5950 -> get_success_continuation_code_id(L/M, N, Q),
5951 R=[Q]
5952 ; R=[N|P]
5953 ),
5954 build_head(L, M, R, S, U),
5955 V=(T:-U),
5956 add_dummy_location(V, X),
5957 W=[X|Y].
5958universal_search_iterator_failure_vars(F, A, E, D, K, C, B) :-
5959 ( A=[0|_]
5960 -> next_id(A, B),
5961 C=D
5962 ; E=[_|M],
5963 dec_id(A, L),
5964 ( F=[G|J],
5965 functor(G, H, I),
5966 check_fd_lookup_condition(H, I, G, J)
5967 -> K=[_|N],
5968 universal_search_iterator_failure_vars(J,
5969 L,
5970 M,
5971 D,
5972 N,
5973 C,
5974 B)
5975 ; B=L,
5976 flatten(M, P),
5977 K=[O|_],
5978 C=[O|P]
5979 )
5980 ).
5981universal_search_iterator([D|E], [C|B], A, A1/B1, C1, X, U1, W1) :-
5982 A=rule(_, _, F, G),
5983 gen_var_susp_list_for_b(B,
5984 [C, D, E, F, G],
5985 O,
5986 I,
5987 I1,
5988 H,
5989 J1),
5990 init(H, R),
5991 flatten(I, Z),
5992 gen_var(Y),
5993 functor(C, L, J),
5994 gen_vars(J, K),
5995 head_info(C, J, K, Q, _, M),
5996 get_constraint_mode(L/J, N),
5997 head_arg_matches(M, N, O, U, V),
5998 delay_phase_end(validate_store_type_assumptions,
5999 (static_suspension_term(L/J, P), get_static_suspension_field(L/J, P, state, active, S), get_static_suspension_term_field(arguments, L/J, P, K))),
6000 different_from_other_susps(C, Q, B, R, T),
6001 P1=(Q=P, S, T, U),
6002 add_heads_ground_variables([C|B], [], W),
6003 lookup_passive_head(D,
6004 [C|B],
6005 V,
6006 W,
6007 Q1,
6008 E1),
6009 inc_id(X, G1),
6010 D1=[[Q|Y]|Z],
6011 build_head(A1, B1, [C1|X], D1, O1),
6012 passive_delegate_variables(C,
6013 B,
6014 [D, E, F, G],
6015 V,
6016 F1),
6017 append([E1|F1], [Q, Y|Z], H1),
6018 build_head(A1, B1, [C1|G1], H1, R1),
6019 ( check_fd_lookup_condition(L, J, C, B)
6020 -> universal_search_iterator_failure_vars(B,
6021 X,
6022 I,
6023 I1,
6024 J1,
6025 K1,
6026 M1),
6027 L1=K1
6028 ; L1=[Y|Z],
6029 M1=X
6030 ),
6031 ( M1=[_]
6032 -> N1=M1
6033 ; N1=[C1|M1]
6034 ),
6035 build_head(A1, B1, N1, L1, S1),
6036 T1=(O1:-P1, Q1->R1;S1),
6037 add_dummy_location(T1, V1),
6038 U1=[V1|W1].
6039ai_observation_analysis(A) :-
6040 ( chr_pp_flag(ai_observation_analysis, on),
6041 get_target_module(_),
6042 '$chr_compiled_with_version'(3)
6043 -> list_to_ord_set(A, B),
6044 abstract_constraints(B),
6045 ai_observation_schedule_initial_calls(B, B),
6046 ai_observation_gather_results
6047 ; true
6048 ).
6049ai_observation_schedule_initial_calls([], _).
6050ai_observation_schedule_initial_calls([A|C], B) :-
6051 ai_observation_schedule_initial_call(A, B),
6052 ai_observation_schedule_initial_calls(C, B).
6053ai_observation_schedule_initial_call(A, _) :-
6054 ai_observation_top(A, B),
6055 initial_call_pattern(B).
6056ai_observation_schedule_new_calls([], _).
6057ai_observation_schedule_new_calls([B|D], A) :-
6058 A=odom(_, C),
6059 initial_call_pattern(odom(B, C)),
6060 ai_observation_schedule_new_calls(D, A).
6061ai_observation_lub(odom(A, B), odom(A, C), odom(A, D)) :-
6062 ord_intersection(B, C, D).
6063ai_observation_bot(A, B, odom(A, B)).
6064ai_observation_top(A, odom(A, B)) :-
6065 ord_empty(B).
6066ai_observation_leq(odom(A, C), odom(A, B)) :-
6067 ord_subset(B, C).
6068ai_observation_observe_set(A, B, C) :-
6069 ord_subtract(A, B, C).
6070ai_observation_abstract_constraint(A, E, B) :-
6071 functor(A, C, D),
6072 B=C/D,
6073 memberchk(B, E).
6074ai_observation_abstract_constraints(A, C, E) :-
6075 findall(D,
6076 ( member(B, A),
6077 ai_observation_abstract_constraint(B, C, D)
6078 ),
6079 E).
6080ai_observation_abstract_goal_(A, B, C, G, H, I) :-
6081 term_variables((A, B, C), E),
6082 append(A, B, D),
6083 ground_vars(D, F),
6084 list_difference_eq(E, F, J),
6085 ai_observation_abstract_goal(G, H, I, [], J),
6086 !.
6087ground_vars([], []).
6088ground_vars([A|F], I) :-
6089 functor(A, B, C),
6090 get_constraint_mode(B/C, E),
6091 head_info(A, C, _, _, _, D),
6092 head_arg_matches(D, E, [], _, _, [], G),
6093 ground_vars(F, H),
6094 append(G, H, I).
6095ai_observation_abstract_goal((A, E), B, C, G, D) :-
6096 !,
6097 ai_observation_abstract_goal(A, B, C, F, D),
6098 ai_observation_abstract_goal(E, B, F, G, D).
6099ai_observation_abstract_goal((B;F), C, [(D;G)|A], A, E) :-
6100 !,
6101 ai_observation_abstract_goal(B, C, D, [], E),
6102 ai_observation_abstract_goal(F, C, G, [], E).
6103ai_observation_abstract_goal((A->E), B, C, G, D) :-
6104 !,
6105 ai_observation_abstract_goal(A, B, C, F, D),
6106 ai_observation_abstract_goal(E, B, F, G, D).
6107ai_observation_abstract_goal(B, C, [D|A], A, _) :-
6108 ai_observation_abstract_constraint(B, C, D),
6109 !.
6110ai_observation_abstract_goal(true, _, A, A, _) :-
6111 !.
6112ai_observation_abstract_goal(writeln(_), _, A, A, _) :-
6113 !.
6114ai_observation_abstract_goal(B, _, A, A, D) :-
6115 builtin_binds_b(B, C),
6116 intersect_eq(C, D, []),
6117 !.
6118ai_observation_abstract_goal(_, _, [B|A], A, _) :-
6119 B=builtin.
6120ai_observation_is_observed(odom(_, B), A) :-
6121 \+ ord_memberchk(A, B).
6122unconditional_occurrence(A, B) :-
6123 get_occurrence(A, B, C, _),
6124 get_rule(C, D),
6125 D=pragma(E, _, _, _, _),
6126 copy_term_nat(E, F),
6127 F=rule(G, H, I, _),
6128 guard_entailment:entails_guard([chr_pp_headvariables(G, H)], I),
6129 once(( G=[J],
6130 H==[]
6131 ; H=[J],
6132 G==[],
6133 \+ may_trigger(A)
6134 )),
6135 all_distinct_var_args(J).
6136partial_wake_args([], _, _, _).
6137partial_wake_args([B|E], [A|F], D, C) :-
6138 ( A\==(+)
6139 -> ( nonvar(B)
6140 -> no_partial_wake(C)
6141 ; memberchk_eq(B, D)
6142 -> no_partial_wake(C)
6143 ; true
6144 )
6145 ; true
6146 ),
6147 partial_wake_args(E, F, D, C).
6148generate_show_constraint(B, A, D, C) :-
6149 ( chr_pp_flag(show, on)
6150 -> A=['$show'/0|B],
6151 generate_show_rules(B, C, [E|D]),
6152 inc_rule_count(F),
6153 E=pragma(rule(['$show'], [], true, true), ids([0], []), [], no, F)
6154 ; A=B,
6155 C=D
6156 ).
6157generate_show_rules([], A, A).
6158generate_show_rules([A/B|F], [C|G], H) :-
6159 functor(D, A, B),
6160 inc_rule_count(E),
6161 C=pragma(rule([], ['$show', D], true, writeln(D)), ids([], [0, 1]), [passive(1)], no, E),
6162 generate_show_rules(F, G, H).
6163static_suspension_term(A/B, D) :-
6164 suspension_term_base(A/B, C),
6165 E is C+B,
6166 functor(D, suspension, E).
6167has_suspension_field(A, B) :-
6168 suspension_term_base_fields(A, C),
6169 memberchk(B, C).
6170suspension_term_base(A, C) :-
6171 suspension_term_base_fields(A, B),
6172 length(B, C).
6173suspension_term_base_fields(B, A) :-
6174 ( chr_pp_flag(debugable, on)
6175 -> A=[id, state, history, generation, continuation, functor]
6176 ; ( uses_history(B)
6177 -> A=[id, state, history|C]
6178 ; only_ground_indexed_arguments(B),
6179 get_functional_dependency(B, 1, _, _)
6180 -> A=[state|C]
6181 ; A=[id, state|C]
6182 ),
6183 ( only_ground_indexed_arguments(B)
6184 -> get_store_type(B, D),
6185 basic_store_types(D, E),
6186 ( memberchk(global_ground, E)
6187 -> C=[global_list_prev|F]
6188 ; C=F
6189 ),
6190 ( chr_pp_flag(ht_removal, on)
6191 -> ht_prev_fields(E, F)
6192 ; F=[]
6193 )
6194 ; may_trigger(B)
6195 -> ( uses_field(B, generation)
6196 -> C=[generation, global_list_prev|F]
6197 ; C=[global_list_prev|F]
6198 ),
6199 ( chr_pp_flag(mixed_stores, on),
6200 chr_pp_flag(ht_removal, on)
6201 -> get_store_type(B, D),
6202 basic_store_types(D, E),
6203 ht_prev_fields(E, F)
6204 ; F=[]
6205 )
6206 ; C=[global_list_prev|F],
6207 ( chr_pp_flag(mixed_stores, on),
6208 chr_pp_flag(ht_removal, on)
6209 -> get_store_type(B, D),
6210 basic_store_types(D, E),
6211 ht_prev_fields(E, F)
6212 ; F=[]
6213 )
6214 )
6215 ).
6216ht_prev_fields(A, C) :-
6217 ht_prev_fields_int(A, B),
6218 append(B, C).
6219ht_prev_fields_int([], []).
6220ht_prev_fields_int([A|F], C) :-
6221 ( A=multi_hash(B)
6222 -> maplist(ht_prev_field, B, D),
6223 C=[D|E]
6224 ; C=E
6225 ),
6226 ht_prev_fields_int(F, E).
6227ht_prev_field(A, B) :-
6228 atomic_list_concat(['multi_hash_prev-'|A], B).
6229get_static_suspension_term_field(C, A, E, F) :-
6230 suspension_term_base_fields(A, B),
6231 nth1(D, B, C),
6232 !,
6233 arg(D, E, F).
6234get_static_suspension_term_field(arguments, A, B, E) :-
6235 !,
6236 suspension_term_base(A, C),
6237 B=..[_|D],
6238 drop(C, D, E).
6239get_static_suspension_term_field(A, B, _, _) :-
6240 chr_error(internal,
6241 'Trying to obtain field ~w of ~w, wich does not have it!',
6242 [A, B]).
6243get_dynamic_suspension_term_field(C, A, F, G, D) :-
6244 suspension_term_base_fields(A, B),
6245 nth1(E, B, C),
6246 !,
6247 D=arg(E, F, G).
6248get_dynamic_suspension_term_field(arguments, A, E, C, D) :-
6249 !,
6250 static_suspension_term(A, B),
6251 get_static_suspension_term_field(arguments, A, B, C),
6252 D=(E=B).
6253get_dynamic_suspension_term_field(argument(B), A, F, G, D) :-
6254 !,
6255 suspension_term_base(A, C),
6256 E is B+C,
6257 D=arg(E, F, G).
6258get_dynamic_suspension_term_field(A, B, _, _, _) :-
6259 chr_error(internal,
6260 'Dynamic goal to get ~w of ~w, which does not have this field!',
6261 [A, B]).
6262set_dynamic_suspension_term_field(C, A, F, G, D) :-
6263 suspension_term_base_fields(A, B),
6264 nth1(E, B, C),
6265 !,
6266 D=setarg(E, F, G).
6267set_dynamic_suspension_term_field(A, B, _, _, _) :-
6268 chr_error(internal,
6269 'Dynamic goal to set ~w of ~w, which does not have this field!',
6270 [A, B]).
6271basic_store_types(multi_store(A), A) :-
6272 !.
6273basic_store_types(A, [A]).
6274generate_never_stored_rules(A, B) :-
6275 ( chr_pp_flag(declare_stored_constraints, on)
6276 -> never_stored_rules(A, B)
6277 ; B=[]
6278 ).
6279check_storedness_assertions(A) :-
6280 ( chr_pp_flag(storage_analysis, on),
6281 chr_pp_flag(declare_stored_constraints, on)
6282 -> forall(B, A, check_storedness_assertion(B))
6283 ; true
6284 ).
6285continuation_analysis(A) :-
6286 maplist(analyse_continuations, A).
6287analyse_continuations(A) :-
6288 continuation_analysis(A, 1),
6289 get_max_occurrence(A, B),
6290 C is B+1,
6291 bulk_propagation(A, 1, C),
6292 set_occurrence_code_id(A, 1, 0).
6293continuation_analysis(A, B) :-
6294 get_max_occurrence(A, C),
6295 ( B>C
6296 -> true
6297 ; B==C
6298 -> D is B+1,
6299 continuation_occurrence(A, B, D)
6300 ; constraint_continuation(A, B, C, D),
6301 continuation_occurrence(A, B, D),
6302 E is B+1,
6303 continuation_analysis(A, E)
6304 ).
6305constraint_continuation(A, B, D, E) :-
6306 ( get_occurrence_head(A, B, F)
6307 -> C is B+1,
6308 ( between(C, D, E),
6309 get_occurrence_head(A, E, G),
6310 unifiable(F, G, _)
6311 -> true
6312 ; E is D+1
6313 )
6314 ; E=D
6315 ).
6316get_occurrence_head(A, B, F) :-
6317 get_occurrence(A, B, C, D),
6318 \+ is_passive(C, D),
6319 get_rule(C, E),
6320 E=pragma(rule(H, J, _, _), ids(G, I), _, _, _),
6321 ( select2(D, F, G, H, _, _)
6322 -> true
6323 ; select2(D, F, I, J, _, _)
6324 ).
6325get_success_continuation_code_id(A, B, D) :-
6326 get_success_continuation_occurrence(A, B, C),
6327 get_occurrence_code_id(A, C, D).
6328collect_constants(_, F, E, A) :-
6329 ( not_restarted,
6330 chr_pp_flag(experiment, on)
6331 -> ( chr_pp_flag(sss, on)
6332 -> C=[fep/4-[2, 3]-[[a, b]-fep1, [c, d]-fep2]-no],
6333 copy_term_nat(A, B),
6334 flatten_clauses(B, C, D),
6335 install_new_declarations_and_restart(D)
6336 ; maplist(collect_rule_constants(E), F),
6337 ( chr_pp_flag(verbose, on)
6338 -> print_chr_constants
6339 ; true
6340 ),
6341 ( chr_pp_flag(experiment, on)
6342 -> flattening_dictionary(E, C),
6343 copy_term_nat(A, B),
6344 flatten_clauses(B, C, D),
6345 install_new_declarations_and_restart(D)
6346 ; true
6347 )
6348 )
6349 ; true
6350 ).
6351collect_rule_constants(D, A) :-
6352 A=ast_rule(B, _, _, C, _),
6353 collect_head_constants(B),
6354 collect_body_constants(C, D).
6355collect_head_constants(simplification(A)) :-
6356 maplist(collect_constraint_constants, A).
6357collect_head_constants(propagation(A)) :-
6358 maplist(collect_constraint_constants, A).
6359collect_head_constants(simpagation(A, B)) :-
6360 maplist(collect_constraint_constants, A),
6361 maplist(collect_constraint_constants, B).
6362collect_body_constants(B, A) :-
6363 maplist(collect_goal_constants(A), B).
6364collect_goal_constants(C, A) :-
6365 ( ast_nonvar(A)
6366 -> ast_symbol(A, B),
6367 ( memberchk(B, C)
6368 -> ast_term_to_term(A, E),
6369 ast_args(A, D),
6370 collect_constraint_constants(chr_constraint(B,
6371 D,
6372 E))
6373 ; B==(:)/2,
6374 ast_args(A, [F, I]),
6375 F=atomic(G),
6376 get_target_module(H),
6377 G==H,
6378 ast_nonvar(I),
6379 ast_symbol(I, J),
6380 memberchk(J, C)
6381 -> ast_term_to_term(I, L),
6382 ast_args(I, K),
6383 collect_constraint_constants(chr_constraint(J,
6384 K,
6385 L))
6386 ; true
6387 )
6388 ; true
6389 ).
6390collect_constraint_constants(A) :-
6391 A=chr_constraint(B, C, _),
6392 get_constraint_type_det(B, D),
6393 collect_all_arg_constants(C, D, []).
6394collect_all_arg_constants([], [], A) :-
6395 ( A\==[]
6396 -> add_chr_constants(A)
6397 ; true
6398 ).
6399collect_all_arg_constants([C|D], [A|E], H) :-
6400 unalias_type(A, B),
6401 ( is_chr_constants_type(B, F, _)
6402 -> ( ast_ground(C)
6403 -> ast_term_to_term(C, G),
6404 collect_all_arg_constants(D,
6405 E,
6406 [F-G|H])
6407 ; true
6408 )
6409 ; collect_all_arg_constants(D, E, H)
6410 ).
6411add_chr_constants(A) :-
6412 keysort(A, B),
6413 add_chr_constants_(B).
6414flattening_dictionary([], []).
6415flattening_dictionary([A|E], B) :-
6416 ( flattening_dictionary_entry(A, C)
6417 -> B=[C|D]
6418 ; B=D
6419 ),
6420 flattening_dictionary(E, D).
6421flattening_dictionary_entry(A, F) :-
6422 get_constraint_type_det(A, B),
6423 constant_positions(B, 1, C, D, G, M),
6424 ( C\==[]
6425 -> pairup(D, J, E),
6426 keysort(E, H),
6427 F=A-C-L-G,
6428 get_chr_constants(I),
6429 findall(K,
6430 ( member(H, I),
6431 flat_spec(A, C, J, K)
6432 ),
6433 L)
6434 ; M==yes
6435 -> enum_positions(B, 1, N, P, O),
6436 F=A-N-L-O,
6437 findall(K,
6438 ( cartesian_product(Q, P),
6439 flat_spec(A, N, Q, K)
6440 ),
6441 L)
6442 ).
6443constant_positions([], _, [], [], no, no).
6444constant_positions([A|N], F, E, G, D, I) :-
6445 unalias_type(A, B),
6446 ( is_chr_constants_type(B, H, C)
6447 -> compose_error_handlers(C, M, D),
6448 E=[F|K],
6449 G=[H|L],
6450 I=J
6451 ; ( is_chr_enum_type(B, _, _)
6452 -> I=yes
6453 ; I=J
6454 ),
6455 K=E,
6456 L=G,
6457 M=D
6458 ),
6459 O is F+1,
6460 constant_positions(N, O, K, L, M, J).
6461compose_error_handlers(no, A, A).
6462compose_error_handlers(yes(A), _, yes(A)).
6463enum_positions([], _, [], [], no).
6464enum_positions([A|L], F, E, G, D) :-
6465 unalias_type(A, B),
6466 ( is_chr_enum_type(B, H, C)
6467 -> compose_error_handlers(C, K, D),
6468 E=[F|I],
6469 G=[H|J]
6470 ; E=I,
6471 G=J,
6472 D=K
6473 ),
6474 M is F+1,
6475 enum_positions(L, M, I, J, K).
6476cartesian_product([], []).
6477cartesian_product([A|C], [B|D]) :-
6478 member(A, B),
6479 cartesian_product(C, D).
6480flat_spec(D/E, C, B, A) :-
6481 A=B-H,
6482 term_to_atom(B, G),
6483 term_to_atom(C, F),
6484 atom_concat_list(['$flat_', D, /, E, '___', F, '___', G],
6485 H).
6486restart_after_flattening(A, A) :-
6487 nb_setval('$chr_restart_after_flattening', started).
6488restart_after_flattening(_, A) :-
6489 nb_getval('$chr_restart_after_flattening', restart(A)),
6490 nb_setval('$chr_restart_after_flattening', restarted).
6491not_restarted :-
6492 nb_getval('$chr_restart_after_flattening', started).
6493install_new_declarations_and_restart(A) :-
6494 nb_setval('$chr_restart_after_flattening', restart(A)),
6495 fail.
6496flatten_clauses(A, B, H) :-
6497 flatten_readcontent(A,
6498 C,
6499 E,
6500 F,
6501 _,
6502 G,
6503 D),
6504 flatten_clauses_(B, C, D, E, F, G, H).
6505flatten_clauses_(A, E, F, D, B, C, K) :-
6506 auxiliary_constraints_declarations(A, B, C, G),
6507 dispatching_rules(A, H),
6508 declarations(D, A, B, C, I),
6509 flatten_rules(E, A, J),
6510 append([F, G, H, I, J], K).
6511declarations(B, C, D, E, H) :-
6512 findall(A,
6513 ( member(A, B),
6514 \+ memberchk(A-_-_-_, C)
6515 ),
6516 F),
6517 maplist(declaration(D, E), F, G),
6518 flatten(G, H).
6519declaration(E, H, A, [(:-chr_constraint A), (:-chr_option(mode, B)), (:-chr_option(type_declaration, G))]) :-
6520 A=C/D,
6521 functor(B, C, D),
6522 ( memberchk(B, E)
6523 -> true
6524 ; replicate(D, ?, F),
6525 B=..[_|F]
6526 ),
6527 functor(G, C, D),
6528 ( memberchk(G, H)
6529 -> true
6530 ; replicate(D, any, I),
6531 G=..[_|I]
6532 ).
6533flatten_readcontent([], [], [], [], [], [], []).
6534flatten_readcontent([A|H], B, C, D, F, E, G) :-
6535 ( A==end_of_file
6536 -> B=[],
6537 C=[],
6538 D=[],
6539 E=[],
6540 F=[],
6541 G=[]
6542 ; crude_is_rule(A)
6543 -> B=[A|I],
6544 flatten_readcontent(H,
6545 I,
6546 C,
6547 D,
6548 F,
6549 E,
6550 G)
6551 ; pure_is_declaration(A, J, K, L)
6552 -> append(J, M, C),
6553 append(K, N, D),
6554 append(L, O, E),
6555 flatten_readcontent(H,
6556 B,
6557 M,
6558 N,
6559 F,
6560 O,
6561 G)
6562 ; is_mode_declaration(A, P)
6563 -> D=[P|N],
6564 flatten_readcontent(H,
6565 B,
6566 C,
6567 N,
6568 F,
6569 E,
6570 G)
6571 ; is_type_declaration(A, Q)
6572 -> E=[Q|O],
6573 flatten_readcontent(H,
6574 B,
6575 C,
6576 D,
6577 F,
6578 O,
6579 G)
6580 ; is_type_definition(A, R)
6581 -> G=[A|T],
6582 F=[R|S],
6583 flatten_readcontent(H,
6584 B,
6585 C,
6586 D,
6587 S,
6588 E,
6589 T)
6590 ; ( A=(:-op(U, V, W))
6591 -> op(U, V, W)
6592 ; true
6593 ),
6594 G=[A|T],
6595 flatten_readcontent(H,
6596 B,
6597 C,
6598 D,
6599 F,
6600 E,
6601 T)
6602 ).
6603crude_is_rule(@(_, _)).
6604crude_is_rule(pragma(_, _)).
6605crude_is_rule(==>(_, _)).
6606crude_is_rule(<=>(_, _)).
6607pure_is_declaration(A, F, G, H) :-
6608 A=(:-B),
6609 B=..[C, D],
6610 C==(chr_constraint),
6611 conj2list(D, E),
6612 pure_extract_type_mode(E, F, G, H).
([], [], [], []).
6614pure_extract_type_mode([A/B|C], [A/B|D], E, F) :-
6615 !,
6616 pure_extract_type_mode(C, D, E, F).
6617pure_extract_type_mode([A|M], [B|N], [F|O], J) :-
6618 functor(A, C, D),
6619 B=C/D,
6620 A=..[_|E],
6621 extract_types_and_modes(E, H, G),
6622 F=..[C|G],
6623 ( forall(member(I, H), I==any)
6624 -> J=K
6625 ; J=[L|K],
6626 L=..[C|H]
6627 ),
6628 pure_extract_type_mode(M, N, O, K).
6629is_mode_declaration((:-chr_option(mode, A)), A).
6630is_type_declaration((:-chr_option(type_declaration, A)), A).
6631auxiliary_constraints_declarations(A, B, C, F) :-
6632 findall(D,
6633 auxiliary_constraints_declaration(A, B, C, D),
6634 E),
6635 flatten(E, F).
6636auxiliary_constraints_declaration(A, D, G, [(:-chr_constraint K), (:-chr_option(mode, N)), (:-chr_option(type_declaration, P))]) :-
6637 member(B/C-F-J-_, A),
6638 arg_modes(B, C, D, E),
6639 specialize_modes(E, F, O),
6640 arg_types(B, C, G, H),
6641 specialize_types(H, F, Q),
6642 length(F, I),
6643 M is C-I,
6644 member(_-L, J),
6645 K=L/M,
6646 N=..[L|O],
6647 P=..[L|Q].
6648arg_modes(A, B, D, E) :-
6649 functor(C, A, B),
6650 ( memberchk(C, D)
6651 -> C=..[_|E]
6652 ; replicate(B, ?, E)
6653 ).
6654specialize_modes(B, A, C) :-
6655 split_args(A, B, _, C).
6656arg_types(A, B, D, E) :-
6657 functor(C, A, B),
6658 ( memberchk(C, D)
6659 -> C=..[_|E]
6660 ; replicate(B, any, E)
6661 ).
6662specialize_types(B, A, C) :-
6663 split_args(A, B, _, C).
6664dispatching_rules([], []).
6665dispatching_rules([B-C-A-D|F], E) :-
6666 constraint_dispatching_rule(A,
6667 B,
6668 C,
6669 D,
6670 E,
6671 G),
6672 dispatching_rules(F, G).
6673constraint_dispatching_rule(N, C/D, A, O, B, Q) :-
6674 ( increasing_numbers(A, 1)
6675 -> L=B,
6676 M=C/D
6677 ; functor(E, C, D),
6678 E=..[_|F],
6679 split_args(A, F, G, H),
6680 append(G, H, J),
6681 atom_concat(C, '_$shuffled', I),
6682 K=..[I|J],
6683 [(E:-K)|L]=B,
6684 M=I/D
6685 ),
6686 P=swap(C, A),
6687 dispatching_rule_term_cases(N,
6688 A,
6689 M,
6690 O,
6691 P,
6692 L,
6693 Q).
6694increasing_numbers([], _).
6695increasing_numbers([A|B], A) :-
6696 C is A+1,
6697 increasing_numbers(B, C).
6698dispatching_rule_term_cases(B, A, M/D, J, K, N, O) :-
6699 length(A, E),
6700 once(pairup(C, F, B)),
6701 maplist(head_tail, C, G, H),
6702 I is D-E,
6703 maplist(wrap_in_functor(dispatching_action), F, L),
6704 dispatch_trie_index(G,
6705 H,
6706 I,
6707 J,
6708 K,
6709 L,
6710 M,
6711 N,
6712 O).
6713dispatching_action(B, C, A) :-
6714 A=..[B|C].
6715dispatch_trie_index(A, C, D, E, F, G, B, H, I) :-
6716 dispatch_trie_step(A,
6717 B,
6718 B,
6719 C,
6720 D,
6721 E,
6722 F,
6723 G,
6724 H,
6725 I).
6726dispatch_trie_step([], _, _, _, [], _, _, [], A, A) :-
6727 !.
6728dispatch_trie_step(C, N, O, A, J, K, L, M, P, Q) :-
6729 A=[B|_],
6730 length(B, G),
6731 aggregate_all(set(E/F),
6732 ( member(D, C),
6733 functor(D, E, F)
6734 ),
6735 H),
6736 I is G+1,
6737 dispatch_trie_step_cases(H,
6738 I,
6739 C,
6740 A,
6741 J,
6742 K,
6743 L,
6744 M,
6745 N,
6746 O,
6747 P,
6748 Q).
6749dispatch_trie_step_cases([], E, _, _, F, A, J, _, H, _, B, C) :-
6750 ( A=yes(L)
6751 -> B=[D|C],
6752 D=(G:-K),
6753 I is E+F,
6754 functor(G, H, I),
6755 reconstruct_original_term(J, G, M),
6756 K=..[L, M]
6757 ; B=C
6758 ).
6759dispatch_trie_step_cases([A|L], B, C, D, E, F, G, H, I, J, K, N) :-
6760 dispatch_trie_step_case(A,
6761 B,
6762 C,
6763 D,
6764 E,
6765 F,
6766 G,
6767 H,
6768 I,
6769 J,
6770 K,
6771 M),
6772 dispatch_trie_step_cases(L,
6773 B,
6774 C,
6775 D,
6776 E,
6777 F,
6778 G,
6779 H,
6780 I,
6781 J,
6782 M,
6783 N).
6784dispatch_trie_step_case(L/M, D, S, X, E, B, N, T, G, I1, [A|Q], R) :-
6785 A=(F:-C, W),
6786 ( B=yes(_)
6787 -> C=!
6788 ; C=true
6789 ),
6790 H is D+E,
6791 functor(F, G, H),
6792 arg(1, F, K),
6793 F=..[_, _|J],
6794 length(I, E),
6795 once(append(D1, I, J)),
6796 functor(K, L, M),
6797 H1=index_functor(L, M, N),
6798 K=..[_|O],
6799 append(O, J, P),
6800 ( P==I
6801 -> Q=R,
6802 rec_cases(S,
6803 _,
6804 T,
6805 L/M,
6806 _,
6807 _,
6808 U),
6809 U=[V],
6810 call(V, I, W)
6811 ; rec_cases(S,
6812 X,
6813 T,
6814 L/M,
6815 Z,
6816 Y,
6817 U),
6818 ( U=[B1]
6819 -> Y=[A1],
6820 append([Z, A1, I], P),
6821 Q=R,
6822 call(B1, I, W)
6823 ; pairup(Z, Y, C1),
6824 common_pattern(C1, G1, J1, O1),
6825 append(O, D1, [E1|F1]),
6826 E1-F1=G1,
6827 S1=gct([E1|F1], H1),
6828 fresh_symbol(I1, K1),
6829 append(J1, I, L1),
6830 W=..[K1|L1],
6831 findall(M1-N1,
6832 member([M1|N1], O1),
6833 P1),
6834 once(pairup(Q1, R1, P1)),
6835 dispatch_trie_step(Q1,
6836 K1,
6837 I1,
6838 R1,
6839 E,
6840 B,
6841 S1,
6842 U,
6843 Q,
6844 R)
6845 )
6846 ).
6847split([D|F], A, B, C, E) :-
6848 ( A==1
6849 -> B=[],
6850 C=D,
6851 E=F
6852 ; G is A-1,
6853 B=[D|H],
6854 split(F, G, H, C, E)
6855 ).
6856reconstruct_original_term(swap(C, E), A, B) :-
6857 functor(A, _, D),
6858 functor(B, C, D),
6859 B=..[_|F],
6860 split_args(E, F, G, H),
6861 A=..[_|I],
6862 append(G, H, I).
6863reconstruct_original_term(index_functor(D, B, I), A, K) :-
6864 A=..[F|C],
6865 split_at(B, C, E, H),
6866 G=..[D|E],
6867 J=..[F, G|H],
6868 reconstruct_original_term(I, J, K).
6869reconstruct_original_term(gct(A, I), C, K) :-
6870 copy_term_nat(A, B),
6871 term_variables(B, D),
6872 C=..[G|E],
6873 append(D, F, E),
6874 append(B, F, H),
6875 J=..[G|H],
6876 reconstruct_original_term(I, J, K).
6877flatten_rules(A, B, D) :-
6878 flatten_rules1(A, B, C),
6879 flatten(C, D).
6880flatten_rules1([], _, []).
6881flatten_rules1([A|E], B, [D|F]) :-
6882 findall(C, flatten_rule(A, B, C), D),
6883 flatten_rules1(E, B, F).
6884flatten_rule(@(A, B), C, @(A, D)) :-
6885 !,
6886 flatten_rule(B, C, D).
6887flatten_rule(pragma(B, A), C, pragma(D, A)) :-
6888 !,
6889 flatten_rule(B, C, D).
6890flatten_rule(==>(A, D), B, ==>(C, E)) :-
6891 !,
6892 flatten_heads(A, B, C),
6893 flatten_body(D, B, E).
6894flatten_rule(<=>(\(A, B), F), C, <=>(\(D, E), G)) :-
6895 !,
6896 flatten_heads((A, B), C, (D, E)),
6897 flatten_body(F, C, G).
6898flatten_rule(<=>(A, D), B, <=>(C, E)) :-
6899 flatten_heads(A, B, C),
6900 flatten_body(D, B, E).
6901flatten_heads((A, D), B, (C, E)) :-
6902 !,
6903 flatten_heads(A, B, C),
6904 flatten_heads(D, B, E).
6905flatten_heads(#(B, A), C, #(D, A)) :-
6906 !,
6907 flatten_heads(B, C, D).
6908flatten_heads(A, D, I) :-
6909 ( functor(A, B, C),
6910 memberchk(B/C-E-H-_, D)
6911 -> A=..[_|F],
6912 split_args(E, F, G, K),
6913 member(G-J, H),
6914 I=..[J|K]
6915 ; I=A
6916 ).
6917flatten_body((A| F), B, (E| I)) :-
6918 !,
6919 conj2list(A, C),
6920 maplist(flatten_goal(B), C, D),
6921 list2conj(D, E),
6922 conj2list(F, G),
6923 maplist(flatten_goal(B), G, H),
6924 list2conj(H, I).
6925flatten_body(A, B, E) :-
6926 conj2list(A, C),
6927 maplist(flatten_goal(B), C, D),
6928 list2conj(D, E).
6929flatten_goal(_, A, B) :-
6930 var(A),
6931 !,
6932 B=A.
6933flatten_goal(B, A, D) :-
6934 ( is_specializable_goal(A, B, C)
6935 -> specialize_goal(A, C, D)
6936 ; A=E:G,
6937 get_target_module(F),
6938 E==F,
6939 nonvar(G),
6940 is_specializable_goal(G, B, C)
6941 -> specialize_goal(G, C, H),
6942 D=E:H
6943 ; partial_eval(A, D)
6944 -> true
6945 ; D=A
6946 ).
6947is_specializable_goal(A, E, D) :-
6948 functor(A, B, C),
6949 memberchk(B/C-D-_-_, E),
6950 args(D, A, F),
6951 ground(F).
6952specialize_goal(A, B, G) :-
6953 functor(A, D, E),
6954 A=..[_|C],
6955 split_args(B, C, F, I),
6956 flat_spec(D/E, B, F, _-H),
6957 G=..[H|I].
6958partial_eval(append(A, D, C), B) :-
6959 ( A==[]
6960 -> B=(C=D)
6961 ; D==[]
6962 -> B=(C=A)
6963 ).
6964partial_eval(flatten_path(A, D), C) :-
6965 ( nonvar(A),
6966 flatten(A, B),
6967 B\==A
6968 -> C=flatten_path(B, D)
6969 ).
6970dump_code(A) :-
6971 ( chr_pp_flag(dump, on)
6972 -> maplist(portray_clause, A)
6973 ; true
6974 ).
6975chr_banner :-
6976 chr_info(banner,
6977 '\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',
6978 []).
6979chr_none_locked(C, B) :-
6980 chr_pp_flag(guard_locks, A),
6981 ( A==off
6982 -> B=true
6983 ; A==on
6984 -> B='chr none_locked'(C)
6985 ; A==error
6986 -> B='chr none_error_locked'(C)
6987 ).
6988chr_not_locked(C, B) :-
6989 chr_pp_flag(guard_locks, A),
6990 ( A==off
6991 -> B=true
6992 ; A==on
6993 -> B='chr not_locked'(C)
6994 ; A==error
6995 -> B='chr not_error_locked'(C)
6996 ).
6997chr_lock(C, B) :-
6998 chr_pp_flag(guard_locks, A),
6999 ( A==off
7000 -> B=true
7001 ; A==on
7002 -> B='chr lock'(C)
7003 ; A==error
7004 -> B='chr error_lock'(C)
7005 ).
7006chr_unlock(C, B) :-
7007 chr_pp_flag(guard_locks, A),
7008 ( A==off
7009 -> B=true
7010 ; A==on
7011 -> B='chr unlock'(C)
7012 ; A==error
7013 -> B='chr unerror_lock'(C)
7014 ).
7015term_to_ast_term(A, B, D, C) :-
7016 ( atomic(A)
7017 -> B=atomic(A),
7018 C=D
7019 ; compound(A)
7020 -> functor(A, E, F),
7021 B=compound(E, F, H, A),
7022 A=..[_|G],
7023 maplist_dcg(chr_translate:term_to_ast_term,
7024 G,
7025 H,
7026 D,
7027 C)
7028 ; var(A)
7029 -> var_to_ast_term(A, D, B, C)
7030 ).
7031var_to_ast_term(C, A, D, E) :-
7032 A=B-F,
7033 ( lookup_eq(B, C, D)
7034 -> E=A
7035 ; D=var(F, C),
7036 H is F+1,
7037 G=[C-D|B],
7038 E=G-H
7039 ).
7040chr_constraint_to_ast_constraint(B, A, G, H) :-
7041 A=chr_constraint(C/D, F, B),
7042 functor(B, C, D),
7043 B=..[_|E],
7044 maplist_dcg(chr_translate:term_to_ast_term,
7045 E,
7046 F,
7047 G,
7048 H).
7049rule_to_ast_rule(B, A) :-
7050 A=ast_rule(F, O, C, Q, D),
7051 B=rule(E, G, C, D),
7052 I=[]-1,
7053 ( E==[]
7054 -> F=propagation(H),
7055 maplist_dcg(chr_translate:chr_constraint_to_ast_constraint,
7056 G,
7057 H,
7058 I,
7059 J)
7060 ; G==[]
7061 -> F=simplification(H),
7062 maplist_dcg(chr_translate:chr_constraint_to_ast_constraint,
7063 E,
7064 H,
7065 I,
7066 J)
7067 ; F=simpagation(K, L),
7068 maplist_dcg(chr_translate:chr_constraint_to_ast_constraint,
7069 E,
7070 K,
7071 I,
7072 M),
7073 maplist_dcg(chr_translate:chr_constraint_to_ast_constraint,
7074 G,
7075 L,
7076 M,
7077 J)
7078 ),
7079 conj2list(C, N),
7080 maplist_dcg(chr_translate:term_to_ast_term,
7081 N,
7082 O,
7083 J,
7084 R),
7085 conj2list(D, P),
7086 maplist_dcg(chr_translate:term_to_ast_term,
7087 P,
7088 Q,
7089 R,
7090 _).
7091pragma_rule_to_ast_rule(pragma(A, _, _, _, _), B) :-
7092 rule_to_ast_rule(A, B).
7093check_rule_to_ast_rule(A) :-
7094 ( rule_to_ast_rule(A, B)
7095 -> writeln(B)
7096 ; writeln(failed(rule_to_ast_rule(A, B)))
7097 ).
7098ast_term_to_term(var(_, A), A).
7099ast_term_to_term(atomic(A), A).
7100ast_term_to_term(compound(_, _, _, A), A).
7101ast_nonvar(atomic(_)).
7102ast_nonvar(compound(_, _, _, _)).
7103ast_ground(atomic(_)).
7104ast_ground(compound(_, _, A, _)) :-
7105 maplist(ast_ground, A).
7106ast_is_ground(B, A) :-
7107 ast_is_ground_(A, B).
7108ast_is_ground_(var(A, _), B) :-
7109 tree_set_memberchk(A, B).
7110ast_is_ground_(atomic(_), _).
7111ast_is_ground_(compound(_, _, B, _), A) :-
7112 maplist(ast_is_ground(A), B).
7113ast_functor(atomic(A), A, 0).
7114ast_functor(compound(A, B, _, _), A, B).
7115ast_symbol(atomic(A), A/0).
7116ast_symbol(compound(A, B, _, _), A/B).
7117ast_args(atomic(_), []).
7118ast_args(compound(_, _, A, _), A).
7119ast_term_variables(atomic(_), A, A).
7120ast_term_variables(compound(_, _, A, _), B, C) :-
7121 ast_term_list_variables(A, B, C).
7122ast_term_variables(var(B, _), A, C) :-
7123 tree_set_add(A, B, C).
7124ast_term_list_variables(A, B, C) :-
7125 fold(A, chr_translate:ast_term_variables, B, C).
7126ast_constraint_variables(chr_constraint(_, A, _), B, C) :-
7127 ast_term_list_variables(A, B, C).
7128ast_constraint_list_variables(A, B, C) :-
7129 fold(A, chr_translate:ast_constraint_variables, B, C).
7130ast_head_variables(simplification(A), B, C) :-
7131 ast_constraint_list_variables(A, B, C).
7132ast_head_variables(propagation(A), B, C) :-
7133 ast_constraint_list_variables(A, B, C).
7134ast_head_variables(simpagation(A, C), B, E) :-
7135 ast_constraint_list_variables(A, B, D),
7136 ast_constraint_list_variables(C, D, E).
7137ast_var_memberchk(var(A, _), B) :-
7138 tree_set_memberchk(A, B).
7139ast_instantiate(B, A, C) :-
7140 ast_instantiate_(A, B, C).
7141ast_instantiate_(var(A, _), B, C) :-
7142 get_assoc(A, B, C).
7143ast_instantiate_(atomic(A), _, A).
7144ast_instantiate_(compound(B, C, E, _), D, A) :-
7145 functor(A, B, C),
7146 A=..[_|F],
7147 maplist(ast_instantiate(D), E, F).
7148ast_head_arg_matches_([], [], A, B, [], A, B).
7149ast_head_arg_matches_([silent(B-_)|D], [A|E], F, C, H, I, J) :-
7150 !,
7151 ( A==(+)
7152 -> ast_term_variables(B, G, C),
7153 ast_head_arg_matches_(D,
7154 E,
7155 F,
7156 G,
7157 H,
7158 I,
7159 J)
7160 ; ast_head_arg_matches_(D,
7161 E,
7162 F,
7163 C,
7164 H,
7165 I,
7166 J)
7167 ).
7168ast_head_arg_matches_([A-G|L], [D|M], C, E, F, B1, C1) :-
7169 ( A=var(B, _)
7170 -> ( get_assoc(B, C, H)
7171 -> ( D=(+)
7172 -> ( tree_set_memberchk(B, E)
7173 -> F=[G=H|I],
7174 J=E
7175 ; F=[G==H|I],
7176 tree_set_add(E, B, J)
7177 )
7178 ; F=[G==H|I],
7179 J=E
7180 ),
7181 K=C
7182 ; put_assoc(B, C, G, K),
7183 F=I,
7184 ( D=(+)
7185 -> tree_set_add(E, B, J)
7186 ; J=E
7187 )
7188 ),
7189 Q=L,
7190 R=M
7191 ; ground(A),
7192 A='$chr_identifier_match'(O, N)
7193 -> identifier_label_atom(N, G, O, P),
7194 F=[P|I],
7195 C=K,
7196 J=E,
7197 Q=L,
7198 R=M
7199 ; A=atomic(S)
7200 -> ( D=(+)
7201 -> F=[G=S|I]
7202 ; F=[G==S|I]
7203 ),
7204 C=K,
7205 J=E,
7206 Q=L,
7207 R=M
7208 ; D==(+),
7209 ast_is_ground(E, A)
7210 -> ast_instantiate(C, A, T),
7211 F=[G=T|I],
7212 C=K,
7213 J=E,
7214 Q=L,
7215 R=M
7216 ; D==(?),
7217 ast_is_ground(E, A)
7218 -> ast_instantiate(C, A, T),
7219 F=[G==T|I],
7220 C=K,
7221 J=E,
7222 Q=L,
7223 R=M
7224 ; A=compound(U, V, X, _),
7225 functor(W, U, V),
7226 W=..[_|Y],
7227 ( D=(+)
7228 -> F=[G=W|I]
7229 ; F=[nonvar(G), G=W|I]
7230 ),
7231 pairup(X, Y, Z),
7232 append(Z, L, Q),
7233 replicate(_, D, A1),
7234 append(A1, M, R),
7235 K=C,
7236 J=E
7237 ),
7238 ast_head_arg_matches_(Q,
7239 R,
7240 K,
7241 J,
7242 I,
7243 B1,
7244 C1).
7245:- use_module(chr(chr_runtime)). 7246:- use_module(chr(chr_hashtable_store)). 7247attach_generate_empty_named_history_initialisation___1([], _).
7248attach_generate_empty_named_history_initialisation___1([A|Q], D) :-
7249 ( get_attr(A, chr_translate, B)
7250 -> ( B=v(C, E, F, G, H, I, J, K, L, M, N),
7251 ( C/\1=:=1
7252 -> O=v(C, [D|E], F, G, H, I, J, K, L, M, N)
7253 ; P is C\/1,
7254 O=v(P, [D], F, G, H, I, J, K, L, M, N)
7255 )
7256 ),
7257 put_attr(A, chr_translate, O)
7258 ; put_attr(A,
7259 chr_translate,
7260 v(1, [D], [], [], [], [], [], [], [], [], []))
7261 ),
7262 attach_generate_empty_named_history_initialisation___1(Q, D).
7263detach_generate_empty_named_history_initialisation___1([], _).
7264detach_generate_empty_named_history_initialisation___1([A|Q], E) :-
7265 ( get_attr(A, chr_translate, B)
7266 -> B=v(C, D, H, I, J, K, L, M, N, O, P),
7267 ( C/\1=:=1
7268 -> 'chr sbag_del_element'(D, E, F),
7269 ( F==[]
7270 -> G is C/\ -2,
7271 ( G==0
7272 -> del_attr(A, chr_translate)
7273 ; put_attr(A,
7274 chr_translate,
7275 v(G,
7276 [],
7277 H,
7278 I,
7279 J,
7280 K,
7281 L,
7282 M,
7283 N,
7284 O,
7285 P))
7286 )
7287 ; put_attr(A,
7288 chr_translate,
7289 v(C,
7290 F,
7291 H,
7292 I,
7293 J,
7294 K,
7295 L,
7296 M,
7297 N,
7298 O,
7299 P))
7300 )
7301 ; true
7302 )
7303 ; true
7304 ),
7305 detach_generate_empty_named_history_initialisation___1(Q, E).
7306attach_symbol_count___2([], _).
7307attach_symbol_count___2([A|Q], E) :-
7308 ( get_attr(A, chr_translate, B)
7309 -> ( B=v(C, D, F, G, H, I, J, K, L, M, N),
7310 ( C/\2=:=2
7311 -> O=v(C, D, [E|F], G, H, I, J, K, L, M, N)
7312 ; P is C\/2,
7313 O=v(P, D, [E], G, H, I, J, K, L, M, N)
7314 )
7315 ),
7316 put_attr(A, chr_translate, O)
7317 ; put_attr(A,
7318 chr_translate,
7319 v(2, [], [E], [], [], [], [], [], [], [], []))
7320 ),
7321 attach_symbol_count___2(Q, E).
7322detach_symbol_count___2([], _).
7323detach_symbol_count___2([A|Q], E) :-
7324 ( get_attr(A, chr_translate, B)
7325 -> B=v(C, H, D, I, J, K, L, M, N, O, P),
7326 ( C/\2=:=2
7327 -> 'chr sbag_del_element'(D, E, F),
7328 ( F==[]
7329 -> G is C/\ -3,
7330 ( G==0
7331 -> del_attr(A, chr_translate)
7332 ; put_attr(A,
7333 chr_translate,
7334 v(G,
7335 H,
7336 [],
7337 I,
7338 J,
7339 K,
7340 L,
7341 M,
7342 N,
7343 O,
7344 P))
7345 )
7346 ; put_attr(A,
7347 chr_translate,
7348 v(C,
7349 H,
7350 F,
7351 I,
7352 J,
7353 K,
7354 L,
7355 M,
7356 N,
7357 O,
7358 P))
7359 )
7360 ; true
7361 )
7362 ; true
7363 ),
7364 detach_symbol_count___2(Q, E).
7365attach_fresh_symbol___2([], _).
7366attach_fresh_symbol___2([A|Q], F) :-
7367 ( get_attr(A, chr_translate, B)
7368 -> ( B=v(C, D, E, G, H, I, J, K, L, M, N),
7369 ( C/\4=:=4
7370 -> O=v(C, D, E, [F|G], H, I, J, K, L, M, N)
7371 ; P is C\/4,
7372 O=v(P, D, E, [F], H, I, J, K, L, M, N)
7373 )
7374 ),
7375 put_attr(A, chr_translate, O)
7376 ; put_attr(A,
7377 chr_translate,
7378 v(4, [], [], [F], [], [], [], [], [], [], []))
7379 ),
7380 attach_fresh_symbol___2(Q, F).
7381detach_fresh_symbol___2([], _).
7382detach_fresh_symbol___2([A|Q], E) :-
7383 ( get_attr(A, chr_translate, B)
7384 -> B=v(C, H, I, D, J, K, L, M, N, O, P),
7385 ( C/\4=:=4
7386 -> 'chr sbag_del_element'(D, E, F),
7387 ( F==[]
7388 -> G is C/\ -5,
7389 ( G==0
7390 -> del_attr(A, chr_translate)
7391 ; put_attr(A,
7392 chr_translate,
7393 v(G,
7394 H,
7395 I,
7396 [],
7397 J,
7398 K,
7399 L,
7400 M,
7401 N,
7402 O,
7403 P))
7404 )
7405 ; put_attr(A,
7406 chr_translate,
7407 v(C,
7408 H,
7409 I,
7410 F,
7411 J,
7412 K,
7413 L,
7414 M,
7415 N,
7416 O,
7417 P))
7418 )
7419 ; true
7420 )
7421 ; true
7422 ),
7423 detach_fresh_symbol___2(Q, E).
7424attach_background_info___2([], _).
7425attach_background_info___2([A|Q], G) :-
7426 ( get_attr(A, chr_translate, B)
7427 -> ( B=v(C, D, E, F, H, I, J, K, L, M, N),
7428 ( C/\8=:=8
7429 -> O=v(C, D, E, F, [G|H], I, J, K, L, M, N)
7430 ; P is C\/8,
7431 O=v(P, D, E, F, [G], I, J, K, L, M, N)
7432 )
7433 ),
7434 put_attr(A, chr_translate, O)
7435 ; put_attr(A,
7436 chr_translate,
7437 v(8, [], [], [], [G], [], [], [], [], [], []))
7438 ),
7439 attach_background_info___2(Q, G).
7440detach_background_info___2([], _).
7441detach_background_info___2([A|Q], E) :-
7442 ( get_attr(A, chr_translate, B)
7443 -> B=v(C, H, I, J, D, K, L, M, N, O, P),
7444 ( C/\8=:=8
7445 -> 'chr sbag_del_element'(D, E, F),
7446 ( F==[]
7447 -> G is C/\ -9,
7448 ( G==0
7449 -> del_attr(A, chr_translate)
7450 ; put_attr(A,
7451 chr_translate,
7452 v(G,
7453 H,
7454 I,
7455 J,
7456 [],
7457 K,
7458 L,
7459 M,
7460 N,
7461 O,
7462 P))
7463 )
7464 ; put_attr(A,
7465 chr_translate,
7466 v(C,
7467 H,
7468 I,
7469 J,
7470 F,
7471 K,
7472 L,
7473 M,
7474 N,
7475 O,
7476 P))
7477 )
7478 ; true
7479 )
7480 ; true
7481 ),
7482 detach_background_info___2(Q, E).
7483attach_get_bg_info___2([], _).
7484attach_get_bg_info___2([A|Q], H) :-
7485 ( get_attr(A, chr_translate, B)
7486 -> ( B=v(C, D, E, F, G, I, J, K, L, M, N),
7487 ( C/\16=:=16
7488 -> O=v(C, D, E, F, G, [H|I], J, K, L, M, N)
7489 ; P is C\/16,
7490 O=v(P, D, E, F, G, [H], J, K, L, M, N)
7491 )
7492 ),
7493 put_attr(A, chr_translate, O)
7494 ; put_attr(A,
7495 chr_translate,
7496 v(16, [], [], [], [], [H], [], [], [], [], []))
7497 ),
7498 attach_get_bg_info___2(Q, H).
7499detach_get_bg_info___2([], _).
7500detach_get_bg_info___2([A|Q], E) :-
7501 ( get_attr(A, chr_translate, B)
7502 -> B=v(C, H, I, J, K, D, L, M, N, O, P),
7503 ( C/\16=:=16
7504 -> 'chr sbag_del_element'(D, E, F),
7505 ( F==[]
7506 -> G is C/\ -17,
7507 ( G==0
7508 -> del_attr(A, chr_translate)
7509 ; put_attr(A,
7510 chr_translate,
7511 v(G,
7512 H,
7513 I,
7514 J,
7515 K,
7516 [],
7517 L,
7518 M,
7519 N,
7520 O,
7521 P))
7522 )
7523 ; put_attr(A,
7524 chr_translate,
7525 v(C,
7526 H,
7527 I,
7528 J,
7529 K,
7530 F,
7531 L,
7532 M,
7533 N,
7534 O,
7535 P))
7536 )
7537 ; true
7538 )
7539 ; true
7540 ),
7541 detach_get_bg_info___2(Q, E).
7542attach_type_definition___2([], _).
7543attach_type_definition___2([A|Q], I) :-
7544 ( get_attr(A, chr_translate, B)
7545 -> ( B=v(C, D, E, F, G, H, J, K, L, M, N),
7546 ( C/\32=:=32
7547 -> O=v(C, D, E, F, G, H, [I|J], K, L, M, N)
7548 ; P is C\/32,
7549 O=v(P, D, E, F, G, H, [I], K, L, M, N)
7550 )
7551 ),
7552 put_attr(A, chr_translate, O)
7553 ; put_attr(A,
7554 chr_translate,
7555 v(32, [], [], [], [], [], [I], [], [], [], []))
7556 ),
7557 attach_type_definition___2(Q, I).
7558detach_type_definition___2([], _).
7559detach_type_definition___2([A|Q], E) :-
7560 ( get_attr(A, chr_translate, B)
7561 -> B=v(C, H, I, J, K, L, D, M, N, O, P),
7562 ( C/\32=:=32
7563 -> 'chr sbag_del_element'(D, E, F),
7564 ( F==[]
7565 -> G is C/\ -33,
7566 ( G==0
7567 -> del_attr(A, chr_translate)
7568 ; put_attr(A,
7569 chr_translate,
7570 v(G,
7571 H,
7572 I,
7573 J,
7574 K,
7575 L,
7576 [],
7577 M,
7578 N,
7579 O,
7580 P))
7581 )
7582 ; put_attr(A,
7583 chr_translate,
7584 v(C,
7585 H,
7586 I,
7587 J,
7588 K,
7589 L,
7590 F,
7591 M,
7592 N,
7593 O,
7594 P))
7595 )
7596 ; true
7597 )
7598 ; true
7599 ),
7600 detach_type_definition___2(Q, E).
7601attach_type_alias___2([], _).
7602attach_type_alias___2([A|Q], J) :-
7603 ( get_attr(A, chr_translate, B)
7604 -> ( B=v(C, D, E, F, G, H, I, K, L, M, N),
7605 ( C/\64=:=64
7606 -> O=v(C, D, E, F, G, H, I, [J|K], L, M, N)
7607 ; P is C\/64,
7608 O=v(P, D, E, F, G, H, I, [J], L, M, N)
7609 )
7610 ),
7611 put_attr(A, chr_translate, O)
7612 ; put_attr(A,
7613 chr_translate,
7614 v(64, [], [], [], [], [], [], [J], [], [], []))
7615 ),
7616 attach_type_alias___2(Q, J).
7617detach_type_alias___2([], _).
7618detach_type_alias___2([A|Q], E) :-
7619 ( get_attr(A, chr_translate, B)
7620 -> B=v(C, H, I, J, K, L, M, D, N, O, P),
7621 ( C/\64=:=64
7622 -> 'chr sbag_del_element'(D, E, F),
7623 ( F==[]
7624 -> G is C/\ -65,
7625 ( G==0
7626 -> del_attr(A, chr_translate)
7627 ; put_attr(A,
7628 chr_translate,
7629 v(G,
7630 H,
7631 I,
7632 J,
7633 K,
7634 L,
7635 M,
7636 [],
7637 N,
7638 O,
7639 P))
7640 )
7641 ; put_attr(A,
7642 chr_translate,
7643 v(C,
7644 H,
7645 I,
7646 J,
7647 K,
7648 L,
7649 M,
7650 F,
7651 N,
7652 O,
7653 P))
7654 )
7655 ; true
7656 )
7657 ; true
7658 ),
7659 detach_type_alias___2(Q, E).
7660attach_unalias_type___2([], _).
7661attach_unalias_type___2([A|Q], K) :-
7662 ( get_attr(A, chr_translate, B)
7663 -> ( B=v(C, D, E, F, G, H, I, J, L, M, N),
7664 ( C/\128=:=128
7665 -> O=v(C, D, E, F, G, H, I, J, [K|L], M, N)
7666 ; P is C\/128,
7667 O=v(P, D, E, F, G, H, I, J, [K], M, N)
7668 )
7669 ),
7670 put_attr(A, chr_translate, O)
7671 ; put_attr(A,
7672 chr_translate,
7673 v(128, [], [], [], [], [], [], [], [K], [], []))
7674 ),
7675 attach_unalias_type___2(Q, K).
7676detach_unalias_type___2([], _).
7677detach_unalias_type___2([A|Q], E) :-
7678 ( get_attr(A, chr_translate, B)
7679 -> B=v(C, H, I, J, K, L, M, N, D, O, P),
7680 ( C/\128=:=128
7681 -> 'chr sbag_del_element'(D, E, F),
7682 ( F==[]
7683 -> G is C/\ -129,
7684 ( G==0
7685 -> del_attr(A, chr_translate)
7686 ; put_attr(A,
7687 chr_translate,
7688 v(G,
7689 H,
7690 I,
7691 J,
7692 K,
7693 L,
7694 M,
7695 N,
7696 [],
7697 O,
7698 P))
7699 )
7700 ; put_attr(A,
7701 chr_translate,
7702 v(C,
7703 H,
7704 I,
7705 J,
7706 K,
7707 L,
7708 M,
7709 N,
7710 F,
7711 O,
7712 P))
7713 )
7714 ; true
7715 )
7716 ; true
7717 ),
7718 detach_unalias_type___2(Q, E).
7719attach_ast_static_type_check_var___4([], _).
7720attach_ast_static_type_check_var___4([A|Q], L) :-
7721 ( get_attr(A, chr_translate, B)
7722 -> ( B=v(C, D, E, F, G, H, I, J, K, M, N),
7723 ( C/\256=:=256
7724 -> O=v(C, D, E, F, G, H, I, J, K, [L|M], N)
7725 ; P is C\/256,
7726 O=v(P, D, E, F, G, H, I, J, K, [L], N)
7727 )
7728 ),
7729 put_attr(A, chr_translate, O)
7730 ; put_attr(A,
7731 chr_translate,
7732 v(256, [], [], [], [], [], [], [], [], [L], []))
7733 ),
7734 attach_ast_static_type_check_var___4(Q, L).
7735detach_ast_static_type_check_var___4([], _).
7736detach_ast_static_type_check_var___4([A|Q], E) :-
7737 ( get_attr(A, chr_translate, B)
7738 -> B=v(C, H, I, J, K, L, M, N, O, D, P),
7739 ( C/\256=:=256
7740 -> 'chr sbag_del_element'(D, E, F),
7741 ( F==[]
7742 -> G is C/\ -257,
7743 ( G==0
7744 -> del_attr(A, chr_translate)
7745 ; put_attr(A,
7746 chr_translate,
7747 v(G,
7748 H,
7749 I,
7750 J,
7751 K,
7752 L,
7753 M,
7754 N,
7755 O,
7756 [],
7757 P))
7758 )
7759 ; put_attr(A,
7760 chr_translate,
7761 v(C,
7762 H,
7763 I,
7764 J,
7765 K,
7766 L,
7767 M,
7768 N,
7769 O,
7770 F,
7771 P))
7772 )
7773 ; true
7774 )
7775 ; true
7776 ),
7777 detach_ast_static_type_check_var___4(Q, E).
7778attach_atomic_type___1([], _).
7779attach_atomic_type___1([A|Q], M) :-
7780 ( get_attr(A, chr_translate, B)
7781 -> ( B=v(C, D, E, F, G, H, I, J, K, L, N),
7782 ( C/\512=:=512
7783 -> O=v(C, D, E, F, G, H, I, J, K, L, [M|N])
7784 ; P is C\/512,
7785 O=v(P, D, E, F, G, H, I, J, K, L, [M])
7786 )
7787 ),
7788 put_attr(A, chr_translate, O)
7789 ; put_attr(A,
7790 chr_translate,
7791 v(512, [], [], [], [], [], [], [], [], [], [M]))
7792 ),
7793 attach_atomic_type___1(Q, M).
7794detach_atomic_type___1([], _).
7795detach_atomic_type___1([A|Q], E) :-
7796 ( get_attr(A, chr_translate, B)
7797 -> B=v(C, H, I, J, K, L, M, N, O, P, D),
7798 ( C/\512=:=512
7799 -> 'chr sbag_del_element'(D, E, F),
7800 ( F==[]
7801 -> G is C/\ -513,
7802 ( G==0
7803 -> del_attr(A, chr_translate)
7804 ; put_attr(A,
7805 chr_translate,
7806 v(G,
7807 H,
7808 I,
7809 J,
7810 K,
7811 L,
7812 M,
7813 N,
7814 O,
7815 P,
7816 []))
7817 )
7818 ; put_attr(A,
7819 chr_translate,
7820 v(C,
7821 H,
7822 I,
7823 J,
7824 K,
7825 L,
7826 M,
7827 N,
7828 O,
7829 P,
7830 F))
7831 )
7832 ; true
7833 )
7834 ; true
7835 ),
7836 detach_atomic_type___1(Q, E).
7837attach_increment([], _).
7838attach_increment([A|U1], B) :-
7839 ( get_attr(A, chr_translate, C)
7840 -> ( B=v(H1, E, H, K, N, Q, T, W, Z, C1, F1),
7841 C=v(I1, D, G, J, M, P, S, V, Y, B1, E1),
7842 ( ( sort(D, F),
7843 'chr merge_attributes'(E, F, K1)
7844 ),
7845 ( sort(G, I),
7846 'chr merge_attributes'(H, I, L1)
7847 ),
7848 ( sort(J, L),
7849 'chr merge_attributes'(K, L, M1)
7850 ),
7851 ( sort(M, O),
7852 'chr merge_attributes'(N, O, N1)
7853 ),
7854 ( sort(P, R),
7855 'chr merge_attributes'(Q, R, O1)
7856 ),
7857 ( sort(S, U),
7858 'chr merge_attributes'(T, U, P1)
7859 ),
7860 ( sort(V, X),
7861 'chr merge_attributes'(W, X, Q1)
7862 ),
7863 ( sort(Y, A1),
7864 'chr merge_attributes'(Z, A1, R1)
7865 ),
7866 ( sort(B1, D1),
7867 'chr merge_attributes'(C1, D1, S1)
7868 ),
7869 sort(E1, G1),
7870 'chr merge_attributes'(F1, G1, T1)
7871 ),
7872 J1 is H1\/I1
7873 ),
7874 put_attr(A,
7875 chr_translate,
7876 v(J1,
7877 K1,
7878 L1,
7879 M1,
7880 N1,
7881 O1,
7882 P1,
7883 Q1,
7884 R1,
7885 S1,
7886 T1))
7887 ; put_attr(A, chr_translate, B)
7888 ),
7889 attach_increment(U1, B).
7890attribute_goals(_, A, A).
7891attr_unify_hook(v(Q1, A, B, C, D, E, F, G, H, I, J), K) :-
7892 sort(A, N),
7893 sort(B, Q),
7894 sort(C, T),
7895 sort(D, W),
7896 sort(E, Z),
7897 sort(F, C1),
7898 sort(G, F1),
7899 sort(H, I1),
7900 sort(I, L1),
7901 sort(J, O1),
7902 ( var(K)
7903 -> ( get_attr(K, chr_translate, L)
7904 -> ( L=v(R1, M, P, S, V, Y, B1, E1, H1, K1, N1),
7905 ( ( sort(M, O),
7906 'chr merge_attributes'(N, O, T1)
7907 ),
7908 ( sort(P, R),
7909 'chr merge_attributes'(Q, R, U1)
7910 ),
7911 ( sort(S, U),
7912 'chr merge_attributes'(T, U, V1)
7913 ),
7914 ( sort(V, X),
7915 'chr merge_attributes'(W, X, W1)
7916 ),
7917 ( sort(Y, A1),
7918 'chr merge_attributes'(Z, A1, X1)
7919 ),
7920 ( sort(B1, D1),
7921 'chr merge_attributes'(C1, D1, Y1)
7922 ),
7923 ( sort(E1, G1),
7924 'chr merge_attributes'(F1, G1, Z1)
7925 ),
7926 ( sort(H1, J1),
7927 'chr merge_attributes'(I1, J1, A2)
7928 ),
7929 ( sort(K1, M1),
7930 'chr merge_attributes'(L1, M1, B2)
7931 ),
7932 sort(N1, P1),
7933 'chr merge_attributes'(O1, P1, C2)
7934 ),
7935 S1 is Q1\/R1
7936 ),
7937 put_attr(K,
7938 chr_translate,
7939 v(S1,
7940 T1,
7941 U1,
7942 V1,
7943 W1,
7944 X1,
7945 Y1,
7946 Z1,
7947 A2,
7948 B2,
7949 C2)),
7950 '$run_suspensions_generate_empty_named_history_initialisation___1'(N),
7951 '$run_suspensions_symbol_count___2'(Q),
7952 '$run_suspensions_fresh_symbol___2'(T),
7953 '$run_suspensions_background_info___2'(W1),
7954 '$run_suspensions_get_bg_info___2'(X1),
7955 '$run_suspensions_type_definition___2'(Y1),
7956 '$run_suspensions_type_alias___2'(Z1),
7957 '$run_suspensions_unalias_type___2'(A2),
7958 '$run_suspensions_ast_static_type_check_var___4'(B2),
7959 '$run_suspensions_atomic_type___1'(C2)
7960 ; put_attr(K,
7961 chr_translate,
7962 v(Q1,
7963 N,
7964 Q,
7965 T,
7966 W,
7967 Z,
7968 C1,
7969 F1,
7970 I1,
7971 L1,
7972 O1)),
7973 '$run_suspensions_generate_empty_named_history_initialisation___1'(N),
7974 '$run_suspensions_symbol_count___2'(Q),
7975 '$run_suspensions_fresh_symbol___2'(T),
7976 '$run_suspensions_background_info___2'(W),
7977 '$run_suspensions_get_bg_info___2'(Z),
7978 '$run_suspensions_type_definition___2'(C1),
7979 '$run_suspensions_type_alias___2'(F1),
7980 '$run_suspensions_unalias_type___2'(I1),
7981 '$run_suspensions_ast_static_type_check_var___4'(L1),
7982 '$run_suspensions_atomic_type___1'(O1)
7983 )
7984 ; ( compound(K)
7985 -> term_variables(K, D2),
7986 attach_increment(D2,
7987 v(Q1,
7988 N,
7989 Q,
7990 T,
7991 W,
7992 Z,
7993 C1,
7994 F1,
7995 I1,
7996 L1,
7997 O1))
7998 ; true
7999 ),
8000 '$run_suspensions_generate_empty_named_history_initialisation___1'(N),
8001 '$run_suspensions_symbol_count___2'(Q),
8002 '$run_suspensions_fresh_symbol___2'(T),
8003 '$run_suspensions_background_info___2'(W),
8004 '$run_suspensions_get_bg_info___2'(Z),
8005 '$run_suspensions_type_definition___2'(C1),
8006 '$run_suspensions_type_alias___2'(F1),
8007 '$run_suspensions_unalias_type___2'(I1),
8008 '$run_suspensions_ast_static_type_check_var___4'(L1),
8009 '$run_suspensions_atomic_type___1'(O1)
8010 ).
8011'$novel_production'(A, B) :-
8012 arg(3, A, C),
8013 ( hprolog:get_ds(B, C, _)
8014 -> fail
8015 ; true
8016 ).
8017'$extend_history'(A, B) :-
8018 arg(3, A, C),
8019 hprolog:put_ds(B, C, x, D),
8020 setarg(3, A, D).
8021'$run_suspensions_generate_empty_named_history_initialisation___1'([]).
8022'$run_suspensions_generate_empty_named_history_initialisation___1'([A|F]) :-
8023 A=suspension(_, B, C, _, E),
8024 ( B==active
8025 -> setarg(2, A, triggered),
8026 ( D is C+1,
8027 setarg(3, A, D)
8028 ),
8029 generate_empty_named_history_initialisation___1__0(E, A),
8030 ( B==triggered
8031 -> setarg(2, A, active)
8032 ; true
8033 )
8034 ; true
8035 ),
8036 '$run_suspensions_generate_empty_named_history_initialisation___1'(F).
8037'$run_suspensions_symbol_count___2'([]).
8038'$run_suspensions_symbol_count___2'([A|E]) :-
8039 A=suspension(_, B, _, C, D),
8040 ( B==active
8041 -> setarg(2, A, triggered),
8042 symbol_count___2__0(C, D, A),
8043 ( B==triggered
8044 -> setarg(2, A, active)
8045 ; true
8046 )
8047 ; true
8048 ),
8049 '$run_suspensions_symbol_count___2'(E).
8050'$run_suspensions_fresh_symbol___2'([]).
8051'$run_suspensions_fresh_symbol___2'([A|G]) :-
8052 A=suspension(_, B, _, C, _, E, F),
8053 ( B==active
8054 -> setarg(2, A, triggered),
8055 ( D is C+1,
8056 setarg(4, A, D)
8057 ),
8058 fresh_symbol___2__0(E, F, A),
8059 ( B==triggered
8060 -> setarg(2, A, active)
8061 ; true
8062 )
8063 ; true
8064 ),
8065 '$run_suspensions_fresh_symbol___2'(G).
8066'$run_suspensions_background_info___2'([]).
8067'$run_suspensions_background_info___2'([A|G]) :-
8068 A=suspension(_, F, _, B, _, D, E),
8069 setarg(2, A, triggered),
8070 C is B+1,
8071 setarg(4, A, C),
8072 background_info___2__0(D, E, A),
8073 ( F==triggered
8074 -> setarg(2, A, active)
8075 ; true
8076 ),
8077 '$run_suspensions_background_info___2'(G).
8078'$run_suspensions_get_bg_info___2'([]).
8079'$run_suspensions_get_bg_info___2'([A|G]) :-
8080 A=suspension(_, B, _, C, _, E, F),
8081 ( B==active
8082 -> setarg(2, A, triggered),
8083 ( D is C+1,
8084 setarg(4, A, D)
8085 ),
8086 get_bg_info___2__0(E, F, A),
8087 ( B==triggered
8088 -> setarg(2, A, active)
8089 ; true
8090 )
8091 ; true
8092 ),
8093 '$run_suspensions_get_bg_info___2'(G).
8094'$run_suspensions_type_definition___2'([]).
8095'$run_suspensions_type_definition___2'([A|G]) :-
8096 A=suspension(_, B, _, C, _, E, F),
8097 ( B==active
8098 -> setarg(2, A, triggered),
8099 ( D is C+1,
8100 setarg(4, A, D)
8101 ),
8102 type_definition___2__0(E, F, A),
8103 ( B==triggered
8104 -> setarg(2, A, active)
8105 ; true
8106 )
8107 ; true
8108 ),
8109 '$run_suspensions_type_definition___2'(G).
8110'$run_suspensions_type_alias___2'([]).
8111'$run_suspensions_type_alias___2'([A|G]) :-
8112 A=suspension(_, B, _, C, _, E, F),
8113 ( B==active
8114 -> setarg(2, A, triggered),
8115 ( D is C+1,
8116 setarg(4, A, D)
8117 ),
8118 type_alias___2__0(E, F, A),
8119 ( B==triggered
8120 -> setarg(2, A, active)
8121 ; true
8122 )
8123 ; true
8124 ),
8125 '$run_suspensions_type_alias___2'(G).
8126'$run_suspensions_unalias_type___2'([]).
8127'$run_suspensions_unalias_type___2'([A|E]) :-
8128 A=suspension(_, B, _, C, D),
8129 ( B==active
8130 -> setarg(2, A, triggered),
8131 unalias_type___2__0(C, D, A),
8132 ( B==triggered
8133 -> setarg(2, A, active)
8134 ; true
8135 )
8136 ; true
8137 ),
8138 '$run_suspensions_unalias_type___2'(E).
8139'$run_suspensions_ast_static_type_check_var___4'([]).
8140'$run_suspensions_ast_static_type_check_var___4'([A|G]) :-
8141 A=suspension(_, B, _, C, D, E, F),
8142 ( B==active
8143 -> setarg(2, A, triggered),
8144 ast_static_type_check_var___4__0(C,
8145 D,
8146 E,
8147 F,
8148 A),
8149 ( B==triggered
8150 -> setarg(2, A, active)
8151 ; true
8152 )
8153 ; true
8154 ),
8155 '$run_suspensions_ast_static_type_check_var___4'(G).
8156'$run_suspensions_atomic_type___1'([]).
8157'$run_suspensions_atomic_type___1'([A|D]) :-
8158 A=suspension(_, B, _, C),
8159 ( B==active
8160 -> setarg(2, A, triggered),
8161 atomic_type___1__0(C, A),
8162 ( B==triggered
8163 -> setarg(2, A, active)
8164 ; true
8165 )
8166 ; true
8167 ),
8168 '$run_suspensions_atomic_type___1'(D).
8169'$enumerate_constraints'(A) :-
8170 ( nonvar(A)
8171 -> functor(A, B, _),
8172 '$enumerate_constraints'(B, A)
8173 ; '$enumerate_constraints'(_, A)
8174 ).
8175'$enumerate_constraints'(chr_source_file, C) :-
8176 nb_getval('$chr_store_global_ground_chr_translate____chr_source_file___1',
8177 A),
8178 member(B, A),
8179 B=suspension(_, _, _, D),
8180 C=chr_source_file(D).
8181'$enumerate_constraints'(target_module, C) :-
8182 nb_getval('$chr_store_global_ground_chr_translate____target_module___1',
8183 A),
8184 member(B, A),
8185 B=suspension(_, _, _, D),
8186 C=target_module(D).
8187'$enumerate_constraints'(source_location, C) :-
8188 nb_getval('$chr_store_multi_hash_chr_translate____source_location___2-1',
8189 A),
8190 value_ht(A, B),
8191 B=suspension(_, _, D, E),
8192 C=source_location(D, E).
8193'$enumerate_constraints'(indexed_argument, C) :-
8194 nb_getval('$chr_store_multi_hash_chr_translate____indexed_argument___2-1',
8195 A),
8196 value_ht(A, B),
8197 B=suspension(_, _, D, E),
8198 C=indexed_argument(D, E).
8199'$enumerate_constraints'(constraint_mode, C) :-
8200 nb_getval('$chr_store_global_ground_chr_translate____constraint_mode___2',
8201 A),
8202 member(B, A),
8203 B=suspension(_, _, _, _, D, E),
8204 C=constraint_mode(D, E).
8205'$enumerate_constraints'(none_suspended_on_variables, C) :-
8206 nb_getval('$chr_store_global_ground_chr_translate____none_suspended_on_variables___0',
8207 A),
8208 member(B, A),
8209 B=suspension(_, _, _),
8210 C=none_suspended_on_variables.
8211'$enumerate_constraints'(store_type, C) :-
8212 nb_getval('$chr_store_multi_hash_chr_translate____store_type___2-1', A),
8213 value_ht(A, B),
8214 B=suspension(_, _, D, E),
8215 C=store_type(D, E).
8216'$enumerate_constraints'(actual_store_types, C) :-
8217 nb_getval('$chr_store_multi_hash_chr_translate____actual_store_types___2-1',
8218 A),
8219 value_ht(A, B),
8220 B=suspension(_, _, D, E),
8221 C=actual_store_types(D, E).
8222'$enumerate_constraints'(assumed_store_type, C) :-
8223 nb_getval('$chr_store_multi_hash_chr_translate____assumed_store_type___2-1',
8224 A),
8225 value_ht(A, B),
8226 B=suspension(_, _, D, E),
8227 C=assumed_store_type(D, E).
8228'$enumerate_constraints'(validate_store_type_assumption, C) :-
8229 nb_getval('$chr_store_multi_hash_chr_translate____validate_store_type_assumption___1-1',
8230 A),
8231 value_ht(A, B),
8232 B=suspension(_, _, D),
8233 C=validate_store_type_assumption(D).
8234'$enumerate_constraints'(rule_count, C) :-
8235 nb_getval('$chr_store_global_ground_chr_translate____rule_count___1',
8236 A),
8237 member(B, A),
8238 B=suspension(_, _, _, D),
8239 C=rule_count(D).
8240'$enumerate_constraints'(passive, C) :-
8241 nb_getval('$chr_store_multi_hash_chr_translate____passive___2-1', A),
8242 value_ht(A, B),
8243 B=suspension(_, _, _, D, E),
8244 C=passive(D, E).
8245'$enumerate_constraints'(occurrence, C) :-
8246 nb_getval('$chr_store_global_ground_chr_translate____occurrence___5',
8247 A),
8248 member(B, A),
8249 B=suspension(_, _, _, _, D, E, F, G, H),
8250 C=occurrence(D, E, F, G, H).
8251'$enumerate_constraints'(max_occurrence, C) :-
8252 nb_getval('$chr_store_multi_hash_chr_translate____max_occurrence___2-1',
8253 A),
8254 value_ht(A, B),
8255 B=suspension(_, _, _, D, E),
8256 C=max_occurrence(D, E).
8257'$enumerate_constraints'(allocation_occurrence, C) :-
8258 nb_getval('$chr_store_multi_hash_chr_translate____allocation_occurrence___2-1',
8259 A),
8260 value_ht(A, B),
8261 B=suspension(_, _, _, D, E),
8262 C=allocation_occurrence(D, E).
8263'$enumerate_constraints'(rule, C) :-
8264 nb_getval('$chr_store_global_ground_chr_translate____rule___2', A),
8265 member(B, A),
8266 B=suspension(_, _, _, _, D, E),
8267 C=rule(D, E).
8268'$enumerate_constraints'(least_occurrence, C) :-
8269 nb_getval('$chr_store_multi_hash_chr_translate____least_occurrence___2-12',
8270 A),
8271 value_ht(A, B),
8272 B=suspension(_, _, D, E),
8273 C=least_occurrence(D, E).
8274'$enumerate_constraints'(constraint_index, C) :-
8275 nb_getval('$chr_store_multi_hash_chr_translate____constraint_index___2-2',
8276 A),
8277 value_ht(A, B),
8278 B=suspension(_, _, D, E),
8279 C=constraint_index(D, E).
8280'$enumerate_constraints'(max_constraint_index, C) :-
8281 nb_getval('$chr_store_global_ground_chr_translate____max_constraint_index___1',
8282 A),
8283 member(B, A),
8284 B=suspension(_, _, _, D),
8285 C=max_constraint_index(D).
8286'$enumerate_constraints'(identifier_size, C) :-
8287 nb_getval('$chr_store_global_ground_chr_translate____identifier_size___1',
8288 A),
8289 member(B, A),
8290 B=suspension(_, _, _, D),
8291 C=identifier_size(D).
8292'$enumerate_constraints'(identifier_index, C) :-
8293 nb_getval('$chr_store_multi_hash_chr_translate____identifier_index___3-12',
8294 A),
8295 value_ht(A, B),
8296 B=suspension(_, _, D, E, F),
8297 C=identifier_index(D, E, F).
8298'$enumerate_constraints'(type_indexed_identifier_size, C) :-
8299 nb_getval('$chr_store_multi_hash_chr_translate____type_indexed_identifier_size___2-1',
8300 A),
8301 value_ht(A, B),
8302 B=suspension(_, _, D, E),
8303 C=type_indexed_identifier_size(D, E).
8304'$enumerate_constraints'(type_indexed_identifier_index, C) :-
8305 nb_getval('$chr_store_multi_hash_chr_translate____type_indexed_identifier_index___4-123',
8306 A),
8307 value_ht(A, B),
8308 B=suspension(_, _, D, E, F, G),
8309 C=type_indexed_identifier_index(D, E, F, G).
8310'$enumerate_constraints'(no_history, C) :-
8311 nb_getval('$chr_store_multi_hash_chr_translate____no_history___1-1', A),
8312 value_ht(A, B),
8313 B=suspension(_, _, D),
8314 C=no_history(D).
8315'$enumerate_constraints'(history, C) :-
8316 nb_getval('$chr_store_multi_hash_chr_translate____history___3-2', A),
8317 value_ht(A, B),
8318 B=suspension(_, _, _, D, E, F),
8319 C=history(D, E, F).
8320'$enumerate_constraints'(indexing_spec, C) :-
8321 nb_getval('$chr_store_multi_hash_chr_translate____indexing_spec___2-1',
8322 A),
8323 value_ht(A, B),
8324 B=suspension(_, _, D, E),
8325 C=indexing_spec(D, E).
8326'$enumerate_constraints'(observation_analysis, C) :-
8327 nb_getval('$chr_store_global_ground_chr_translate____observation_analysis___1',
8328 A),
8329 member(B, A),
8330 B=suspension(_, _, _, D),
8331 C=observation_analysis(D).
8332'$enumerate_constraints'(spawns, C) :-
8333 nb_getval('$chr_store_global_ground_chr_translate____spawns___3', A),
8334 member(B, A),
8335 B=suspension(_, _, _, _, D, E, F),
8336 C=spawns(D, E, F).
8337'$enumerate_constraints'(spawns_all, C) :-
8338 nb_getval('$chr_store_multi_hash_chr_translate____spawns_all___2-1', A),
8339 value_ht(A, B),
8340 B=suspension(_, _, D, E),
8341 C=spawns_all(D, E).
8342'$enumerate_constraints'(spawns_all_triggers, C) :-
8343 nb_getval('$chr_store_global_ground_chr_translate____spawns_all_triggers___2',
8344 A),
8345 member(B, A),
8346 B=suspension(_, _, _, _, D, E),
8347 C=spawns_all_triggers(D, E).
8348'$enumerate_constraints'(spawns_all_triggers_implies_spawns_all, C) :-
8349 nb_getval('$chr_store_global_ground_chr_translate____spawns_all_triggers_implies_spawns_all___0',
8350 A),
8351 member(B, A),
8352 B=suspension(_, _, _),
8353 C=spawns_all_triggers_implies_spawns_all.
8354'$enumerate_constraints'(empty_named_history_initialisations, C) :-
8355 nb_getval('$chr_store_global_ground_chr_translate____empty_named_history_initialisations___2',
8356 A),
8357 member(B, A),
8358 B=suspension(_, _, _, D, E),
8359 C=empty_named_history_initialisations(D, E).
8360'$enumerate_constraints'(generate_empty_named_history_initialisation, C) :-
8361 nb_current('$chr_store_global_list_chr_translate____generate_empty_named_history_initialisation___1',
8362 A),
8363 member(B, A),
8364 B=suspension(_, _, _, _, D),
8365 C=generate_empty_named_history_initialisation(D).
8366'$enumerate_constraints'(find_empty_named_histories, C) :-
8367 nb_getval('$chr_store_global_ground_chr_translate____find_empty_named_histories___0',
8368 A),
8369 member(B, A),
8370 B=suspension(_, _, _, _),
8371 C=find_empty_named_histories.
8372'$enumerate_constraints'(module_initializer, C) :-
8373 nb_getval('$chr_store_global_ground_chr_translate____module_initializer___1',
8374 A),
8375 member(B, A),
8376 B=suspension(_, _, _, D),
8377 C=module_initializer(D).
8378'$enumerate_constraints'(actual_atomic_multi_hash_keys, C) :-
8379 nb_getval('$chr_store_multi_hash_chr_translate____actual_atomic_multi_hash_keys___3-12',
8380 A),
8381 value_ht(A, B),
8382 B=suspension(_, _, D, E, F),
8383 C=actual_atomic_multi_hash_keys(D, E, F).
8384'$enumerate_constraints'(actual_ground_multi_hash_keys, C) :-
8385 nb_getval('$chr_store_multi_hash_chr_translate____actual_ground_multi_hash_keys___3-12',
8386 A),
8387 value_ht(A, B),
8388 B=suspension(_, _, D, E, F),
8389 C=actual_ground_multi_hash_keys(D, E, F).
8390'$enumerate_constraints'(actual_non_ground_multi_hash_key, C) :-
8391 nb_getval('$chr_store_multi_hash_chr_translate____actual_non_ground_multi_hash_key___2-12',
8392 A),
8393 value_ht(A, B),
8394 B=suspension(_, _, D, E),
8395 C=actual_non_ground_multi_hash_key(D, E).
8396'$enumerate_constraints'(symbol_count, C) :-
8397 nb_current('$chr_store_global_list_chr_translate____symbol_count___2',
8398 A),
8399 member(B, A),
8400 B=suspension(_, _, _, D, E),
8401 C=symbol_count(D, E).
8402'$enumerate_constraints'(fresh_symbol, C) :-
8403 nb_current('$chr_store_global_list_chr_translate____fresh_symbol___2',
8404 A),
8405 member(B, A),
8406 B=suspension(_, _, _, _, _, D, E),
8407 C=fresh_symbol(D, E).
8408'$enumerate_constraints'(prolog_global_variable, C) :-
8409 nb_getval('$chr_store_global_ground_chr_translate____prolog_global_variable___1',
8410 A),
8411 member(B, A),
8412 B=suspension(_, _, _, D),
8413 C=prolog_global_variable(D).
8414'$enumerate_constraints'(background_info, C) :-
8415 nb_getval('$chr_store_global_ground_chr_translate____background_info___1',
8416 A),
8417 member(B, A),
8418 B=suspension(_, _, _, D),
8419 C=background_info(D).
8420'$enumerate_constraints'(background_info, C) :-
8421 nb_current('$chr_store_global_list_chr_translate____background_info___2',
8422 A),
8423 member(B, A),
8424 B=suspension(_, _, _, _, _, D, E),
8425 C=background_info(D, E).
8426'$enumerate_constraints'(get_bg_info, C) :-
8427 nb_current('$chr_store_global_list_chr_translate____get_bg_info___2',
8428 A),
8429 member(B, A),
8430 B=suspension(_, _, _, _, _, D, E),
8431 C=get_bg_info(D, E).
8432'$enumerate_constraints'(get_bg_info_answer, C) :-
8433 nb_getval('$chr_store_global_ground_chr_translate____get_bg_info_answer___1',
8434 A),
8435 member(B, A),
8436 B=suspension(_, _, _, D),
8437 C=get_bg_info_answer(D).
8438'$enumerate_constraints'(prev_guard_list, C) :-
8439 nb_getval('$chr_store_global_ground_chr_translate____prev_guard_list___6',
8440 A),
8441 member(B, A),
8442 B=suspension(_, _, _, _, D, E, F, G, H, I),
8443 C=prev_guard_list(D, E, F, G, H, I).
8444'$enumerate_constraints'(set_all_passive, C) :-
8445 nb_getval('$chr_store_multi_hash_chr_translate____set_all_passive___1-1',
8446 A),
8447 value_ht(A, B),
8448 B=suspension(_, _, _, D),
8449 C=set_all_passive(D).
8450'$enumerate_constraints'(precompute_head_matchings, C) :-
8451 nb_getval('$chr_store_global_ground_chr_translate____precompute_head_matchings___0',
8452 A),
8453 member(B, A),
8454 B=suspension(_, _, _, _),
8455 C=precompute_head_matchings.
8456'$enumerate_constraints'(make_head_matchings_explicit_memo_table, C) :-
8457 nb_getval('$chr_store_multi_hash_chr_translate____make_head_matchings_explicit_memo_table___3-1',
8458 A),
8459 value_ht(A, B),
8460 B=suspension(_, _, D, E, F),
8461 C=make_head_matchings_explicit_memo_table(D, E, F).
8462'$enumerate_constraints'(multiple_occ_constraints_checked, C) :-
8463 nb_getval('$chr_store_global_ground_chr_translate____multiple_occ_constraints_checked___1',
8464 A),
8465 member(B, A),
8466 B=suspension(_, _, _, D),
8467 C=multiple_occ_constraints_checked(D).
8468'$enumerate_constraints'(type_definition, C) :-
8469 nb_current('$chr_store_global_list_chr_translate____type_definition___2',
8470 A),
8471 member(B, A),
8472 B=suspension(_, _, _, _, _, D, E),
8473 C=type_definition(D, E).
8474'$enumerate_constraints'(type_alias, C) :-
8475 nb_current('$chr_store_global_list_chr_translate____type_alias___2', A),
8476 member(B, A),
8477 B=suspension(_, _, _, _, _, D, E),
8478 C=type_alias(D, E).
8479'$enumerate_constraints'(constraint_type, C) :-
8480 nb_getval('$chr_store_global_ground_chr_translate____constraint_type___2',
8481 A),
8482 member(B, A),
8483 B=suspension(_, _, _, D, E),
8484 C=constraint_type(D, E).
8485'$enumerate_constraints'(unalias_type, C) :-
8486 nb_current('$chr_store_global_list_chr_translate____unalias_type___2',
8487 A),
8488 member(B, A),
8489 B=suspension(_, _, _, D, E),
8490 C=unalias_type(D, E).
8491'$enumerate_constraints'(types_modes_condition, C) :-
8492 nb_getval('$chr_store_global_ground_chr_translate____types_modes_condition___3',
8493 A),
8494 member(B, A),
8495 B=suspension(_, _, _, D, E, F),
8496 C=types_modes_condition(D, E, F).
8497'$enumerate_constraints'(static_type_check, C) :-
8498 nb_getval('$chr_store_global_ground_chr_translate____static_type_check___2',
8499 A),
8500 member(B, A),
8501 B=suspension(_, _, _, D, E),
8502 C=static_type_check(D, E).
8503'$enumerate_constraints'(ast_static_type_check_var, C) :-
8504 nb_current('$chr_store_global_list_chr_translate____ast_static_type_check_var___4',
8505 A),
8506 member(B, A),
8507 B=suspension(_, _, _, D, E, F, G),
8508 C=ast_static_type_check_var(D, E, F, G).
8509'$enumerate_constraints'(ast_static_atomic_builtin_type_check_var, C) :-
8510 nb_getval('$chr_store_multi_hash_chr_translate____ast_static_atomic_builtin_type_check_var___4-1',
8511 A),
8512 value_ht(A, B),
8513 B=suspension(_, _, D, E, F, G),
8514 C=ast_static_atomic_builtin_type_check_var(D, E, F, G).
8515'$enumerate_constraints'(dynamic_type_check, C) :-
8516 nb_getval('$chr_store_global_ground_chr_translate____dynamic_type_check___0',
8517 A),
8518 member(B, A),
8519 B=suspension(_, _, _, _),
8520 C=dynamic_type_check.
8521'$enumerate_constraints'(dynamic_type_check_clauses, C) :-
8522 nb_getval('$chr_store_global_ground_chr_translate____dynamic_type_check_clauses___1',
8523 A),
8524 member(B, A),
8525 B=suspension(_, _, _, D),
8526 C=dynamic_type_check_clauses(D).
8527'$enumerate_constraints'(atomic_type, C) :-
8528 nb_current('$chr_store_global_list_chr_translate____atomic_type___1',
8529 A),
8530 member(B, A),
8531 B=suspension(_, _, _, D),
8532 C=atomic_type(D).
8533'$enumerate_constraints'(stored, C) :-
8534 nb_getval('$chr_store_multi_hash_chr_translate____stored___3-13', A),
8535 value_ht(A, B),
8536 B=suspension(_, _, D, E, F),
8537 C=stored(D, E, F).
8538'$enumerate_constraints'(stored_complete, C) :-
8539 nb_getval('$chr_store_multi_hash_chr_translate____stored_complete___3-13',
8540 A),
8541 value_ht(A, B),
8542 B=suspension(_, _, _, D, E, F),
8543 C=stored_complete(D, E, F).
8544'$enumerate_constraints'(check_all_passive, C) :-
8545 nb_getval('$chr_store_multi_hash_chr_translate____check_all_passive___2-12',
8546 A),
8547 value_ht(A, B),
8548 B=suspension(_, _, D, E),
8549 C=check_all_passive(D, E).
8550'$enumerate_constraints'(constraints_code1, C) :-
8551 nb_getval('$chr_store_global_ground_chr_translate____constraints_code1___3',
8552 A),
8553 member(B, A),
8554 B=suspension(_, _, _, D, E, F),
8555 C=constraints_code1(D, E, F).
8556'$enumerate_constraints'(memo_has_active_occurrence, C) :-
8557 nb_getval('$chr_store_multi_hash_chr_translate____memo_has_active_occurrence___1-1',
8558 A),
8559 value_ht(A, B),
8560 B=suspension(_, _, D),
8561 C=memo_has_active_occurrence(D).
8562'$enumerate_constraints'(use_auxiliary_predicate, C) :-
8563 nb_getval('$chr_store_multi_hash_chr_translate____use_auxiliary_predicate___1-1',
8564 A),
8565 value_ht(A, B),
8566 B=suspension(_, _, D),
8567 C=use_auxiliary_predicate(D).
8568'$enumerate_constraints'(use_auxiliary_predicate, C) :-
8569 nb_getval('$chr_store_multi_hash_chr_translate____use_auxiliary_predicate___2-1',
8570 A),
8571 value_ht(A, B),
8572 B=suspension(_, _, D, E),
8573 C=use_auxiliary_predicate(D, E).
8574'$enumerate_constraints'(use_auxiliary_module, C) :-
8575 nb_getval('$chr_store_multi_hash_chr_translate____use_auxiliary_module___1-1',
8576 A),
8577 value_ht(A, B),
8578 B=suspension(_, _, D),
8579 C=use_auxiliary_module(D).
8580'$enumerate_constraints'(functional_dependency, C) :-
8581 nb_getval('$chr_store_multi_hash_chr_translate____functional_dependency___4-1',
8582 A),
8583 value_ht(A, B),
8584 B=suspension(_, _, D, E, F, G),
8585 C=functional_dependency(D, E, F, G).
8586'$enumerate_constraints'(initial_call_pattern, C) :-
8587 nb_getval('$chr_store_multi_hash_chr_translate____initial_call_pattern___1-1',
8588 A),
8589 value_ht(A, B),
8590 B=suspension(_, _, _, D),
8591 C=initial_call_pattern(D).
8592'$enumerate_constraints'(call_pattern, C) :-
8593 nb_getval('$chr_store_multi_hash_chr_translate____call_pattern___1-1',
8594 A),
8595 value_ht(A, B),
8596 B=suspension(_, _, D),
8597 C=call_pattern(D).
8598'$enumerate_constraints'(final_answer_pattern, C) :-
8599 nb_getval('$chr_store_multi_hash_chr_translate____final_answer_pattern___2-1',
8600 A),
8601 value_ht(A, B),
8602 B=suspension(_, _, _, D, E),
8603 C=final_answer_pattern(D, E).
8604'$enumerate_constraints'(abstract_constraints, C) :-
8605 nb_getval('$chr_store_global_ground_chr_translate____abstract_constraints___1',
8606 A),
8607 member(B, A),
8608 B=suspension(_, _, _, D),
8609 C=abstract_constraints(D).
8610'$enumerate_constraints'(depends_on, C) :-
8611 nb_getval('$chr_store_multi_hash_chr_translate____depends_on___2-1', A),
8612 value_ht(A, B),
8613 B=suspension(_, _, _, D, E),
8614 C=depends_on(D, E).
8615'$enumerate_constraints'(depends_on_ap, C) :-
8616 nb_getval('$chr_store_multi_hash_chr_translate____depends_on_ap___4-2',
8617 A),
8618 value_ht(A, B),
8619 B=suspension(_, _, _, D, E, F, G),
8620 C=depends_on_ap(D, E, F, G).
8621'$enumerate_constraints'(depends_on_goal, C) :-
8622 nb_getval('$chr_store_multi_hash_chr_translate____depends_on_goal___2-2',
8623 A),
8624 value_ht(A, B),
8625 B=suspension(_, _, _, D, E),
8626 C=depends_on_goal(D, E).
8627'$enumerate_constraints'(ai_observed_internal, C) :-
8628 nb_getval('$chr_store_global_ground_chr_translate____ai_observed_internal___2',
8629 A),
8630 member(B, A),
8631 B=suspension(_, _, _, D, E),
8632 C=ai_observed_internal(D, E).
8633'$enumerate_constraints'(ai_not_observed_internal, C) :-
8634 nb_getval('$chr_store_global_ground_chr_translate____ai_not_observed_internal___2',
8635 A),
8636 member(B, A),
8637 B=suspension(_, _, _, D, E),
8638 C=ai_not_observed_internal(D, E).
8639'$enumerate_constraints'(ai_not_observed, C) :-
8640 nb_getval('$chr_store_multi_hash_chr_translate____ai_not_observed___2-12',
8641 A),
8642 value_ht(A, B),
8643 B=suspension(_, _, D, E),
8644 C=ai_not_observed(D, E).
8645'$enumerate_constraints'(depends_on_as, C) :-
8646 nb_getval('$chr_store_multi_hash_chr_translate____depends_on_as___3-3',
8647 A),
8648 value_ht(A, B),
8649 B=suspension(_, _, _, D, E, F),
8650 C=depends_on_as(D, E, F).
8651'$enumerate_constraints'(ai_observation_gather_results, C) :-
8652 nb_getval('$chr_store_global_ground_chr_translate____ai_observation_gather_results___0',
8653 A),
8654 member(B, A),
8655 B=suspension(_, _, _),
8656 C=ai_observation_gather_results.
8657'$enumerate_constraints'(ai_observation_memoed_simplification_rest_heads, C) :-
8658 nb_getval('$chr_store_multi_hash_chr_translate____ai_observation_memoed_simplification_rest_heads___3-12',
8659 A),
8660 value_ht(A, B),
8661 B=suspension(_, _, D, E, F),
8662 C=ai_observation_memoed_simplification_rest_heads(D, E, F).
8663'$enumerate_constraints'(ai_observation_memoed_propagation_rest_heads, C) :-
8664 nb_getval('$chr_store_multi_hash_chr_translate____ai_observation_memoed_propagation_rest_heads___3-12',
8665 A),
8666 value_ht(A, B),
8667 B=suspension(_, _, D, E, F),
8668 C=ai_observation_memoed_propagation_rest_heads(D, E, F).
8669'$enumerate_constraints'(ai_observation_memoed_abstract_goal, C) :-
8670 nb_getval('$chr_store_multi_hash_chr_translate____ai_observation_memoed_abstract_goal___2-1',
8671 A),
8672 value_ht(A, B),
8673 B=suspension(_, _, D, E),
8674 C=ai_observation_memoed_abstract_goal(D, E).
8675'$enumerate_constraints'(ai_observation_memo_abstract_goal, C) :-
8676 nb_getval('$chr_store_global_ground_chr_translate____ai_observation_memo_abstract_goal___2',
8677 A),
8678 member(B, A),
8679 B=suspension(_, _, _, D, E),
8680 C=ai_observation_memo_abstract_goal(D, E).
8681'$enumerate_constraints'(partial_wake_analysis, C) :-
8682 nb_getval('$chr_store_global_ground_chr_translate____partial_wake_analysis___0',
8683 A),
8684 member(B, A),
8685 B=suspension(_, _, _, _),
8686 C=partial_wake_analysis.
8687'$enumerate_constraints'(no_partial_wake, C) :-
8688 nb_getval('$chr_store_multi_hash_chr_translate____no_partial_wake___1-1',
8689 A),
8690 value_ht(A, B),
8691 B=suspension(_, _, D),
8692 C=no_partial_wake(D).
8693'$enumerate_constraints'(phase_end, C) :-
8694 nb_getval('$chr_store_multi_hash_chr_translate____phase_end___1-1', A),
8695 value_ht(A, B),
8696 B=suspension(_, _, D),
8697 C=phase_end(D).
8698'$enumerate_constraints'(delay_phase_end, C) :-
8699 nb_getval('$chr_store_multi_hash_chr_translate____delay_phase_end___2-1',
8700 A),
8701 value_ht(A, B),
8702 B=suspension(_, _, D, E),
8703 C=delay_phase_end(D, E).
8704'$enumerate_constraints'(does_use_history, C) :-
8705 nb_getval('$chr_store_multi_hash_chr_translate____does_use_history___2-1',
8706 A),
8707 value_ht(A, B),
8708 B=suspension(_, _, D, E),
8709 C=does_use_history(D, E).
8710'$enumerate_constraints'(does_use_field, C) :-
8711 nb_getval('$chr_store_multi_hash_chr_translate____does_use_field___2-12',
8712 A),
8713 value_ht(A, B),
8714 B=suspension(_, _, D, E),
8715 C=does_use_field(D, E).
8716'$enumerate_constraints'(uses_state, C) :-
8717 nb_getval('$chr_store_multi_hash_chr_translate____uses_state___2-12',
8718 A),
8719 value_ht(A, B),
8720 B=suspension(_, _, D, E),
8721 C=uses_state(D, E).
8722'$enumerate_constraints'(if_used_state, C) :-
8723 nb_getval('$chr_store_global_ground_chr_translate____if_used_state___5',
8724 A),
8725 member(B, A),
8726 B=suspension(_, _, _, D, E, F, G, H),
8727 C=if_used_state(D, E, F, G, H).
8728'$enumerate_constraints'(used_states_known, C) :-
8729 nb_getval('$chr_store_global_ground_chr_translate____used_states_known___0',
8730 A),
8731 member(B, A),
8732 B=suspension(_, _, _),
8733 C=used_states_known.
8734'$enumerate_constraints'(stored_assertion, C) :-
8735 nb_getval('$chr_store_multi_hash_chr_translate____stored_assertion___1-1',
8736 A),
8737 value_ht(A, B),
8738 B=suspension(_, _, D),
8739 C=stored_assertion(D).
8740'$enumerate_constraints'(never_stored_default, C) :-
8741 nb_getval('$chr_store_multi_hash_chr_translate____never_stored_default___2-1',
8742 A),
8743 value_ht(A, B),
8744 B=suspension(_, _, D, E),
8745 C=never_stored_default(D, E).
8746'$enumerate_constraints'(never_stored_rules, C) :-
8747 nb_getval('$chr_store_global_ground_chr_translate____never_stored_rules___2',
8748 A),
8749 member(B, A),
8750 B=suspension(_, _, _, D, E),
8751 C=never_stored_rules(D, E).
8752'$enumerate_constraints'(continuation_occurrence, C) :-
8753 nb_getval('$chr_store_multi_hash_chr_translate____continuation_occurrence___3-12',
8754 A),
8755 value_ht(A, B),
8756 B=suspension(_, _, D, E, F),
8757 C=continuation_occurrence(D, E, F).
8758'$enumerate_constraints'(skip_to_next_id, C) :-
8759 nb_getval('$chr_store_multi_hash_chr_translate____skip_to_next_id___2-12',
8760 A),
8761 value_ht(A, B),
8762 B=suspension(_, _, _, D, E),
8763 C=skip_to_next_id(D, E).
8764'$enumerate_constraints'(set_occurrence_code_id, C) :-
8765 nb_getval('$chr_store_multi_hash_chr_translate____set_occurrence_code_id___3-12',
8766 A),
8767 value_ht(A, B),
8768 B=suspension(_, _, D, E, F),
8769 C=set_occurrence_code_id(D, E, F).
8770'$enumerate_constraints'(occurrence_code_id, C) :-
8771 nb_getval('$chr_store_multi_hash_chr_translate____occurrence_code_id___3-12',
8772 A),
8773 value_ht(A, B),
8774 B=suspension(_, _, D, E, F),
8775 C=occurrence_code_id(D, E, F).
8776'$enumerate_constraints'(chr_constants, C) :-
8777 nb_getval('$chr_store_global_ground_chr_translate____chr_constants___1',
8778 A),
8779 member(B, A),
8780 B=suspension(_, _, _, D),
8781 C=chr_constants(D).
8782'$enumerate_constraints'(print_chr_constants, C) :-
8783 nb_getval('$chr_store_global_ground_chr_translate____print_chr_constants___0',
8784 A),
8785 member(B, A),
8786 B=suspension(_, _, _),
8787 C=print_chr_constants.
8788'$via1_multi_hash_source_location___2-1'(B, C) :-
8789 nb_getval('$chr_store_multi_hash_chr_translate____source_location___2-1',
8790 A),
8791 lookup_ht(A, B, C).
8792'$via1_multi_hash_indexed_argument___2-1'(B, C) :-
8793 nb_getval('$chr_store_multi_hash_chr_translate____indexed_argument___2-1',
8794 A),
8795 lookup_ht(A, B, C).
8796'$via1_multi_hash_indexed_argument___2-12'(B, C) :-
8797 nb_getval('$chr_store_multi_hash_chr_translate____indexed_argument___2-12',
8798 A),
8799 lookup_ht(A, B, C).
8800'$via1_multi_hash_constraint_mode___2-1'(B, C) :-
8801 nb_getval('$chr_store_multi_hash_chr_translate____constraint_mode___2-1',
8802 A),
8803 lookup_ht(A, B, C).
8804'$via1_multi_hash_store_type___2-1'(B, C) :-
8805 nb_getval('$chr_store_multi_hash_chr_translate____store_type___2-1', A),
8806 lookup_ht(A, B, C).
8807'$via1_multi_hash_actual_store_types___2-1'(B, C) :-
8808 nb_getval('$chr_store_multi_hash_chr_translate____actual_store_types___2-1',
8809 A),
8810 lookup_ht(A, B, C).
8811'$via1_multi_hash_assumed_store_type___2-1'(B, C) :-
8812 nb_getval('$chr_store_multi_hash_chr_translate____assumed_store_type___2-1',
8813 A),
8814 lookup_ht(A, B, C).
8815'$via1_multi_hash_validate_store_type_assumption___1-1'(B, C) :-
8816 nb_getval('$chr_store_multi_hash_chr_translate____validate_store_type_assumption___1-1',
8817 A),
8818 lookup_ht(A, B, C).
8819'$via1_multi_hash_passive___2-1'(B, C) :-
8820 nb_getval('$chr_store_multi_hash_chr_translate____passive___2-1', A),
8821 lookup_ht(A, B, C).
8822'$via1_multi_hash_passive___2-12'(B, C) :-
8823 nb_getval('$chr_store_multi_hash_chr_translate____passive___2-12', A),
8824 lookup_ht(A, B, C).
8825'$via1_multi_hash_occurrence___5-15'(B, C) :-
8826 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-15',
8827 A),
8828 lookup_ht(A, B, C).
8829'$via1_multi_hash_occurrence___5-125'(B, C) :-
8830 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-125',
8831 A),
8832 lookup_ht(A, B, C).
8833'$via1_multi_hash_occurrence___5-134'(B, C) :-
8834 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-134',
8835 A),
8836 lookup_ht(A, B, C).
8837'$via1_multi_hash_occurrence___5-12'(B, C) :-
8838 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-12',
8839 A),
8840 lookup_ht(A, B, C).
8841'$via1_multi_hash_occurrence___5-3'(B, C) :-
8842 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-3', A),
8843 lookup_ht(A, B, C).
8844'$via1_multi_hash_occurrence___5-13'(B, C) :-
8845 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-13',
8846 A),
8847 lookup_ht(A, B, C).
8848'$via1_multi_hash_occurrence___5-34'(B, C) :-
8849 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-34',
8850 A),
8851 lookup_ht(A, B, C).
8852'$via1_multi_hash_occurrence___5-1'(B, C) :-
8853 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-1', A),
8854 lookup_ht(A, B, C).
8855'$via1_multi_hash_max_occurrence___2-1'(B, C) :-
8856 nb_getval('$chr_store_multi_hash_chr_translate____max_occurrence___2-1',
8857 A),
8858 lookup_ht(A, B, C).
8859'$via1_multi_hash_allocation_occurrence___2-1'(B, C) :-
8860 nb_getval('$chr_store_multi_hash_chr_translate____allocation_occurrence___2-1',
8861 A),
8862 lookup_ht(A, B, C).
8863'$via1_multi_hash_allocation_occurrence___2-12'(B, C) :-
8864 nb_getval('$chr_store_multi_hash_chr_translate____allocation_occurrence___2-12',
8865 A),
8866 lookup_ht(A, B, C).
8867'$via1_multi_hash_rule___2-1'(B, C) :-
8868 nb_getval('$chr_store_multi_hash_chr_translate____rule___2-1', A),
8869 lookup_ht(A, B, C).
8870'$via1_multi_hash_least_occurrence___2-12'(B, C) :-
8871 nb_getval('$chr_store_multi_hash_chr_translate____least_occurrence___2-12',
8872 A),
8873 lookup_ht(A, B, C).
8874'$via1_multi_hash_least_occurrence___2-1'(B, C) :-
8875 nb_getval('$chr_store_multi_hash_chr_translate____least_occurrence___2-1',
8876 A),
8877 lookup_ht(A, B, C).
8878'$via1_multi_hash_constraint_index___2-2'(B, C) :-
8879 nb_getval('$chr_store_multi_hash_chr_translate____constraint_index___2-2',
8880 A),
8881 lookup_ht(A, B, C).
8882'$via1_multi_hash_constraint_index___2-1'(B, C) :-
8883 nb_getval('$chr_store_multi_hash_chr_translate____constraint_index___2-1',
8884 A),
8885 lookup_ht(A, B, C).
8886'$via1_multi_hash_identifier_index___3-12'(B, C) :-
8887 nb_getval('$chr_store_multi_hash_chr_translate____identifier_index___3-12',
8888 A),
8889 lookup_ht(A, B, C).
8890'$via1_multi_hash_type_indexed_identifier_size___2-1'(B, C) :-
8891 nb_getval('$chr_store_multi_hash_chr_translate____type_indexed_identifier_size___2-1',
8892 A),
8893 lookup_ht(A, B, C).
8894'$via1_multi_hash_type_indexed_identifier_index___4-123'(B, C) :-
8895 nb_getval('$chr_store_multi_hash_chr_translate____type_indexed_identifier_index___4-123',
8896 A),
8897 lookup_ht(A, B, C).
8898'$via1_multi_hash_type_indexed_identifier_index___4-23'(B, C) :-
8899 nb_getval('$chr_store_multi_hash_chr_translate____type_indexed_identifier_index___4-23',
8900 A),
8901 lookup_ht(A, B, C).
8902'$via1_multi_hash_no_history___1-1'(B, C) :-
8903 nb_getval('$chr_store_multi_hash_chr_translate____no_history___1-1', A),
8904 lookup_ht(A, B, C).
8905'$chr_store_constants_chr_translate____history___3___[3]'([], '$chr_store_constants_chr_translate____history___3___[3]___[]').
8906'$via1_multi_hash_history___3-2'(B, C) :-
8907 nb_getval('$chr_store_multi_hash_chr_translate____history___3-2', A),
8908 lookup_ht(A, B, C).
8909'$via1_multi_hash_history___3-1'(B, C) :-
8910 nb_getval('$chr_store_multi_hash_chr_translate____history___3-1', A),
8911 lookup_ht(A, B, C).
8912'$via1_multi_hash_indexing_spec___2-1'(B, C) :-
8913 nb_getval('$chr_store_multi_hash_chr_translate____indexing_spec___2-1',
8914 A),
8915 lookup_ht(A, B, C).
8916'$via1_multi_hash_spawns___3-13'(B, C) :-
8917 nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-13', A),
8918 lookup_ht(A, B, C).
8919'$via1_multi_hash_spawns___3-12'(B, C) :-
8920 nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-12', A),
8921 lookup_ht(A, B, C).
8922'$via1_multi_hash_spawns___3-1'(B, C) :-
8923 nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-1', A),
8924 lookup_ht(A, B, C).
8925'$via1_multi_hash_spawns___3-3'(B, C) :-
8926 nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-3', A),
8927 lookup_ht(A, B, C).
8928'$via1_multi_hash_spawns___3-123'(B, C) :-
8929 nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-123', A),
8930 lookup_ht(A, B, C).
8931'$via1_multi_hash_spawns_all___2-1'(B, C) :-
8932 nb_getval('$chr_store_multi_hash_chr_translate____spawns_all___2-1', A),
8933 lookup_ht(A, B, C).
8934'$via1_multi_hash_spawns_all___2-12'(B, C) :-
8935 nb_getval('$chr_store_multi_hash_chr_translate____spawns_all___2-12',
8936 A),
8937 lookup_ht(A, B, C).
8938'$via1_multi_hash_spawns_all_triggers___2-1'(B, C) :-
8939 nb_getval('$chr_store_multi_hash_chr_translate____spawns_all_triggers___2-1',
8940 A),
8941 lookup_ht(A, B, C).
8942'$via1_multi_hash_spawns_all_triggers___2-12'(B, C) :-
8943 nb_getval('$chr_store_multi_hash_chr_translate____spawns_all_triggers___2-12',
8944 A),
8945 lookup_ht(A, B, C).
8946'$via1_multi_hash_actual_atomic_multi_hash_keys___3-12'(B, C) :-
8947 nb_getval('$chr_store_multi_hash_chr_translate____actual_atomic_multi_hash_keys___3-12',
8948 A),
8949 lookup_ht(A, B, C).
8950'$via1_multi_hash_actual_atomic_multi_hash_keys___3-1'(B, C) :-
8951 nb_getval('$chr_store_multi_hash_chr_translate____actual_atomic_multi_hash_keys___3-1',
8952 A),
8953 lookup_ht(A, B, C).
8954'$via1_multi_hash_actual_ground_multi_hash_keys___3-12'(B, C) :-
8955 nb_getval('$chr_store_multi_hash_chr_translate____actual_ground_multi_hash_keys___3-12',
8956 A),
8957 lookup_ht(A, B, C).
8958'$via1_multi_hash_actual_ground_multi_hash_keys___3-1'(B, C) :-
8959 nb_getval('$chr_store_multi_hash_chr_translate____actual_ground_multi_hash_keys___3-1',
8960 A),
8961 lookup_ht(A, B, C).
8962'$via1_multi_hash_actual_non_ground_multi_hash_key___2-12'(B, C) :-
8963 nb_getval('$chr_store_multi_hash_chr_translate____actual_non_ground_multi_hash_key___2-12',
8964 A),
8965 lookup_ht(A, B, C).
8966'$via1_multi_hash_prolog_global_variable___1-1'(B, C) :-
8967 nb_getval('$chr_store_multi_hash_chr_translate____prolog_global_variable___1-1',
8968 A),
8969 lookup_ht(A, B, C).
8970'$via1_multi_hash_prev_guard_list___6-1'(B, C) :-
8971 nb_getval('$chr_store_multi_hash_chr_translate____prev_guard_list___6-1',
8972 A),
8973 lookup_ht(A, B, C).
8974'$via1_multi_hash_set_all_passive___1-1'(B, C) :-
8975 nb_getval('$chr_store_multi_hash_chr_translate____set_all_passive___1-1',
8976 A),
8977 lookup_ht(A, B, C).
8978'$via1_multi_hash_make_head_matchings_explicit_memo_table___3-1'(B, C) :-
8979 nb_getval('$chr_store_multi_hash_chr_translate____make_head_matchings_explicit_memo_table___3-1',
8980 A),
8981 lookup_ht(A, B, C).
8982'$via1_multi_hash_constraint_type___2-1'(B, C) :-
8983 nb_getval('$chr_store_multi_hash_chr_translate____constraint_type___2-1',
8984 A),
8985 lookup_ht(A, B, C).
8986'$via1_multi_hash_ast_static_atomic_builtin_type_check_var___4-1'(B, C) :-
8987 nb_getval('$chr_store_multi_hash_chr_translate____ast_static_atomic_builtin_type_check_var___4-1',
8988 A),
8989 lookup_ht(A, B, C).
8990'$via1_multi_hash_ast_static_atomic_builtin_type_check_var___4-13'(B, C) :-
8991 nb_getval('$chr_store_multi_hash_chr_translate____ast_static_atomic_builtin_type_check_var___4-13',
8992 A),
8993 lookup_ht(A, B, C).
8994'$via1_multi_hash_stored___3-13'(B, C) :-
8995 nb_getval('$chr_store_multi_hash_chr_translate____stored___3-13', A),
8996 lookup_ht(A, B, C).
8997'$via1_multi_hash_stored___3-123'(B, C) :-
8998 nb_getval('$chr_store_multi_hash_chr_translate____stored___3-123', A),
8999 lookup_ht(A, B, C).
9000'$via1_multi_hash_stored_complete___3-13'(B, C) :-
9001 nb_getval('$chr_store_multi_hash_chr_translate____stored_complete___3-13',
9002 A),
9003 lookup_ht(A, B, C).
9004'$via1_multi_hash_stored_complete___3-1'(B, C) :-
9005 nb_getval('$chr_store_multi_hash_chr_translate____stored_complete___3-1',
9006 A),
9007 lookup_ht(A, B, C).
9008'$via1_multi_hash_check_all_passive___2-12'(B, C) :-
9009 nb_getval('$chr_store_multi_hash_chr_translate____check_all_passive___2-12',
9010 A),
9011 lookup_ht(A, B, C).
9012'$via1_multi_hash_check_all_passive___2-1'(B, C) :-
9013 nb_getval('$chr_store_multi_hash_chr_translate____check_all_passive___2-1',
9014 A),
9015 lookup_ht(A, B, C).
9016'$via1_multi_hash_memo_has_active_occurrence___1-1'(B, C) :-
9017 nb_getval('$chr_store_multi_hash_chr_translate____memo_has_active_occurrence___1-1',
9018 A),
9019 lookup_ht(A, B, C).
9020'$via1_multi_hash_use_auxiliary_predicate___1-1'(B, C) :-
9021 nb_getval('$chr_store_multi_hash_chr_translate____use_auxiliary_predicate___1-1',
9022 A),
9023 lookup_ht(A, B, C).
9024'$via1_multi_hash_use_auxiliary_predicate___2-1'(B, C) :-
9025 nb_getval('$chr_store_multi_hash_chr_translate____use_auxiliary_predicate___2-1',
9026 A),
9027 lookup_ht(A, B, C).
9028'$via1_multi_hash_use_auxiliary_predicate___2-12'(B, C) :-
9029 nb_getval('$chr_store_multi_hash_chr_translate____use_auxiliary_predicate___2-12',
9030 A),
9031 lookup_ht(A, B, C).
9032'$via1_multi_hash_use_auxiliary_module___1-1'(B, C) :-
9033 nb_getval('$chr_store_multi_hash_chr_translate____use_auxiliary_module___1-1',
9034 A),
9035 lookup_ht(A, B, C).
9036'$via1_multi_hash_functional_dependency___4-1'(B, C) :-
9037 nb_getval('$chr_store_multi_hash_chr_translate____functional_dependency___4-1',
9038 A),
9039 lookup_ht(A, B, C).
9040'$via1_multi_hash_functional_dependency___4-12'(B, C) :-
9041 nb_getval('$chr_store_multi_hash_chr_translate____functional_dependency___4-12',
9042 A),
9043 lookup_ht(A, B, C).
9044'$via1_multi_hash_initial_call_pattern___1-1'(B, C) :-
9045 nb_getval('$chr_store_multi_hash_chr_translate____initial_call_pattern___1-1',
9046 A),
9047 lookup_ht(A, B, C).
9048'$via1_multi_hash_call_pattern___1-1'(B, C) :-
9049 nb_getval('$chr_store_multi_hash_chr_translate____call_pattern___1-1',
9050 A),
9051 lookup_ht(A, B, C).
9052'$via1_multi_hash_final_answer_pattern___2-1'(B, C) :-
9053 nb_getval('$chr_store_multi_hash_chr_translate____final_answer_pattern___2-1',
9054 A),
9055 lookup_ht(A, B, C).
9056'$via1_multi_hash_depends_on___2-1'(B, C) :-
9057 nb_getval('$chr_store_multi_hash_chr_translate____depends_on___2-1', A),
9058 lookup_ht(A, B, C).
9059'$via1_multi_hash_depends_on___2-2'(B, C) :-
9060 nb_getval('$chr_store_multi_hash_chr_translate____depends_on___2-2', A),
9061 lookup_ht(A, B, C).
9062'$via1_multi_hash_depends_on_ap___4-2'(B, C) :-
9063 nb_getval('$chr_store_multi_hash_chr_translate____depends_on_ap___4-2',
9064 A),
9065 lookup_ht(A, B, C).
9066'$via1_multi_hash_depends_on_ap___4-3'(B, C) :-
9067 nb_getval('$chr_store_multi_hash_chr_translate____depends_on_ap___4-3',
9068 A),
9069 lookup_ht(A, B, C).
9070'$via1_multi_hash_depends_on_goal___2-2'(B, C) :-
9071 nb_getval('$chr_store_multi_hash_chr_translate____depends_on_goal___2-2',
9072 A),
9073 lookup_ht(A, B, C).
9074'$via1_multi_hash_ai_observed_internal___2-12'(B, C) :-
9075 nb_getval('$chr_store_multi_hash_chr_translate____ai_observed_internal___2-12',
9076 A),
9077 lookup_ht(A, B, C).
9078'$via1_multi_hash_ai_not_observed_internal___2-12'(B, C) :-
9079 nb_getval('$chr_store_multi_hash_chr_translate____ai_not_observed_internal___2-12',
9080 A),
9081 lookup_ht(A, B, C).
9082'$via1_multi_hash_ai_not_observed___2-12'(B, C) :-
9083 nb_getval('$chr_store_multi_hash_chr_translate____ai_not_observed___2-12',
9084 A),
9085 lookup_ht(A, B, C).
9086'$via1_multi_hash_depends_on_as___3-3'(B, C) :-
9087 nb_getval('$chr_store_multi_hash_chr_translate____depends_on_as___3-3',
9088 A),
9089 lookup_ht(A, B, C).
9090'$via1_multi_hash_depends_on_as___3-2'(B, C) :-
9091 nb_getval('$chr_store_multi_hash_chr_translate____depends_on_as___3-2',
9092 A),
9093 lookup_ht(A, B, C).
9094'$via1_multi_hash_ai_observation_memoed_simplification_rest_heads___3-12'(B, C) :-
9095 nb_getval('$chr_store_multi_hash_chr_translate____ai_observation_memoed_simplification_rest_heads___3-12',
9096 A),
9097 lookup_ht(A, B, C).
9098'$via1_multi_hash_ai_observation_memoed_propagation_rest_heads___3-12'(B, C) :-
9099 nb_getval('$chr_store_multi_hash_chr_translate____ai_observation_memoed_propagation_rest_heads___3-12',
9100 A),
9101 lookup_ht(A, B, C).
9102'$via1_multi_hash_ai_observation_memoed_abstract_goal___2-1'(B, C) :-
9103 nb_getval('$chr_store_multi_hash_chr_translate____ai_observation_memoed_abstract_goal___2-1',
9104 A),
9105 lookup_ht(A, B, C).
9106'$via1_multi_hash_no_partial_wake___1-1'(B, C) :-
9107 nb_getval('$chr_store_multi_hash_chr_translate____no_partial_wake___1-1',
9108 A),
9109 lookup_ht(A, B, C).
9110'$via1_multi_hash_phase_end___1-1'(B, C) :-
9111 nb_getval('$chr_store_multi_hash_chr_translate____phase_end___1-1', A),
9112 lookup_ht(A, B, C).
9113'$via1_multi_hash_delay_phase_end___2-1'(B, C) :-
9114 nb_getval('$chr_store_multi_hash_chr_translate____delay_phase_end___2-1',
9115 A),
9116 lookup_ht(A, B, C).
9117'$via1_multi_hash_does_use_history___2-1'(B, C) :-
9118 nb_getval('$chr_store_multi_hash_chr_translate____does_use_history___2-1',
9119 A),
9120 lookup_ht(A, B, C).
9121'$via1_multi_hash_does_use_history___2-12'(B, C) :-
9122 nb_getval('$chr_store_multi_hash_chr_translate____does_use_history___2-12',
9123 A),
9124 lookup_ht(A, B, C).
9125'$via1_multi_hash_does_use_field___2-12'(B, C) :-
9126 nb_getval('$chr_store_multi_hash_chr_translate____does_use_field___2-12',
9127 A),
9128 lookup_ht(A, B, C).
9129'$via1_multi_hash_uses_state___2-12'(B, C) :-
9130 nb_getval('$chr_store_multi_hash_chr_translate____uses_state___2-12',
9131 A),
9132 lookup_ht(A, B, C).
9133'$via1_multi_hash_if_used_state___5-12'(B, C) :-
9134 nb_getval('$chr_store_multi_hash_chr_translate____if_used_state___5-12',
9135 A),
9136 lookup_ht(A, B, C).
9137'$via1_multi_hash_stored_assertion___1-1'(B, C) :-
9138 nb_getval('$chr_store_multi_hash_chr_translate____stored_assertion___1-1',
9139 A),
9140 lookup_ht(A, B, C).
9141'$via1_multi_hash_never_stored_default___2-1'(B, C) :-
9142 nb_getval('$chr_store_multi_hash_chr_translate____never_stored_default___2-1',
9143 A),
9144 lookup_ht(A, B, C).
9145'$via1_multi_hash_continuation_occurrence___3-12'(B, C) :-
9146 nb_getval('$chr_store_multi_hash_chr_translate____continuation_occurrence___3-12',
9147 A),
9148 lookup_ht(A, B, C).
9149'$via1_multi_hash_skip_to_next_id___2-12'(B, C) :-
9150 nb_getval('$chr_store_multi_hash_chr_translate____skip_to_next_id___2-12',
9151 A),
9152 lookup_ht(A, B, C).
9153'$via1_multi_hash_set_occurrence_code_id___3-12'(B, C) :-
9154 nb_getval('$chr_store_multi_hash_chr_translate____set_occurrence_code_id___3-12',
9155 A),
9156 lookup_ht(A, B, C).
9157'$via1_multi_hash_occurrence_code_id___3-12'(B, C) :-
9158 nb_getval('$chr_store_multi_hash_chr_translate____occurrence_code_id___3-12',
9159 A),
9160 lookup_ht(A, B, C).
9161'$chr_initialization' :-
9162 nb_setval('$chr_store_global_ground_chr_translate____print_chr_constants___0',
9163 []),
9164 nb_setval('$chr_store_global_ground_chr_translate____chr_constants___1', []),
9165 new_ht(A),
9166 nb_setval('$chr_store_multi_hash_chr_translate____occurrence_code_id___3-12',
9167 A),
9168 new_ht(B),
9169 nb_setval('$chr_store_multi_hash_chr_translate____set_occurrence_code_id___3-12',
9170 B),
9171 new_ht(C),
9172 nb_setval('$chr_store_multi_hash_chr_translate____skip_to_next_id___2-12',
9173 C),
9174 new_ht(D),
9175 nb_setval('$chr_store_multi_hash_chr_translate____continuation_occurrence___3-12',
9176 D),
9177 nb_setval('$chr_store_global_ground_chr_translate____never_stored_rules___2',
9178 []),
9179 new_ht(E),
9180 nb_setval('$chr_store_multi_hash_chr_translate____never_stored_default___2-1',
9181 E),
9182 new_ht(F),
9183 nb_setval('$chr_store_multi_hash_chr_translate____stored_assertion___1-1',
9184 F),
9185 nb_setval('$chr_store_global_ground_chr_translate____used_states_known___0',
9186 []),
9187 new_ht(G),
9188 nb_setval('$chr_store_multi_hash_chr_translate____if_used_state___5-12',
9189 G),
9190 nb_setval('$chr_store_global_ground_chr_translate____if_used_state___5', []),
9191 new_ht(H),
9192 nb_setval('$chr_store_multi_hash_chr_translate____uses_state___2-12',
9193 H),
9194 new_ht(I),
9195 nb_setval('$chr_store_multi_hash_chr_translate____does_use_field___2-12',
9196 I),
9197 new_ht(J),
9198 nb_setval('$chr_store_multi_hash_chr_translate____does_use_history___2-12',
9199 J),
9200 new_ht(K),
9201 nb_setval('$chr_store_multi_hash_chr_translate____does_use_history___2-1',
9202 K),
9203 new_ht(L),
9204 nb_setval('$chr_store_multi_hash_chr_translate____delay_phase_end___2-1',
9205 L),
9206 new_ht(M),
9207 nb_setval('$chr_store_multi_hash_chr_translate____phase_end___1-1', M),
9208 new_ht(N),
9209 nb_setval('$chr_store_multi_hash_chr_translate____no_partial_wake___1-1',
9210 N),
9211 nb_setval('$chr_store_global_ground_chr_translate____partial_wake_analysis___0',
9212 []),
9213 nb_setval('$chr_store_global_ground_chr_translate____ai_observation_memo_abstract_goal___2',
9214 []),
9215 new_ht(O),
9216 nb_setval('$chr_store_multi_hash_chr_translate____ai_observation_memoed_abstract_goal___2-1',
9217 O),
9218 new_ht(P),
9219 nb_setval('$chr_store_multi_hash_chr_translate____ai_observation_memoed_propagation_rest_heads___3-12',
9220 P),
9221 new_ht(Q),
9222 nb_setval('$chr_store_multi_hash_chr_translate____ai_observation_memoed_simplification_rest_heads___3-12',
9223 Q),
9224 nb_setval('$chr_store_global_ground_chr_translate____ai_observation_gather_results___0',
9225 []),
9226 new_ht(R),
9227 nb_setval('$chr_store_multi_hash_chr_translate____depends_on_as___3-2',
9228 R),
9229 new_ht(S),
9230 nb_setval('$chr_store_multi_hash_chr_translate____depends_on_as___3-3',
9231 S),
9232 new_ht(T),
9233 nb_setval('$chr_store_multi_hash_chr_translate____ai_not_observed___2-12',
9234 T),
9235 new_ht(U),
9236 nb_setval('$chr_store_multi_hash_chr_translate____ai_not_observed_internal___2-12',
9237 U),
9238 nb_setval('$chr_store_global_ground_chr_translate____ai_not_observed_internal___2',
9239 []),
9240 new_ht(V),
9241 nb_setval('$chr_store_multi_hash_chr_translate____ai_observed_internal___2-12',
9242 V),
9243 nb_setval('$chr_store_global_ground_chr_translate____ai_observed_internal___2',
9244 []),
9245 new_ht(W),
9246 nb_setval('$chr_store_multi_hash_chr_translate____depends_on_goal___2-2',
9247 W),
9248 new_ht(X),
9249 nb_setval('$chr_store_multi_hash_chr_translate____depends_on_ap___4-3',
9250 X),
9251 new_ht(Y),
9252 nb_setval('$chr_store_multi_hash_chr_translate____depends_on_ap___4-2',
9253 Y),
9254 new_ht(Z),
9255 nb_setval('$chr_store_multi_hash_chr_translate____depends_on___2-2',
9256 Z),
9257 new_ht(A1),
9258 nb_setval('$chr_store_multi_hash_chr_translate____depends_on___2-1',
9259 A1),
9260 nb_setval('$chr_store_global_ground_chr_translate____abstract_constraints___1',
9261 []),
9262 new_ht(B1),
9263 nb_setval('$chr_store_multi_hash_chr_translate____final_answer_pattern___2-1',
9264 B1),
9265 new_ht(C1),
9266 nb_setval('$chr_store_multi_hash_chr_translate____call_pattern___1-1',
9267 C1),
9268 new_ht(D1),
9269 nb_setval('$chr_store_multi_hash_chr_translate____initial_call_pattern___1-1',
9270 D1),
9271 new_ht(E1),
9272 nb_setval('$chr_store_multi_hash_chr_translate____functional_dependency___4-12',
9273 E1),
9274 new_ht(F1),
9275 nb_setval('$chr_store_multi_hash_chr_translate____functional_dependency___4-1',
9276 F1),
9277 new_ht(G1),
9278 nb_setval('$chr_store_multi_hash_chr_translate____use_auxiliary_module___1-1',
9279 G1),
9280 new_ht(H1),
9281 nb_setval('$chr_store_multi_hash_chr_translate____use_auxiliary_predicate___2-12',
9282 H1),
9283 new_ht(I1),
9284 nb_setval('$chr_store_multi_hash_chr_translate____use_auxiliary_predicate___2-1',
9285 I1),
9286 new_ht(J1),
9287 nb_setval('$chr_store_multi_hash_chr_translate____use_auxiliary_predicate___1-1',
9288 J1),
9289 new_ht(K1),
9290 nb_setval('$chr_store_multi_hash_chr_translate____memo_has_active_occurrence___1-1',
9291 K1),
9292 nb_setval('$chr_store_global_ground_chr_translate____constraints_code1___3',
9293 []),
9294 new_ht(L1),
9295 nb_setval('$chr_store_multi_hash_chr_translate____check_all_passive___2-1',
9296 L1),
9297 new_ht(M1),
9298 nb_setval('$chr_store_multi_hash_chr_translate____check_all_passive___2-12',
9299 M1),
9300 new_ht(N1),
9301 nb_setval('$chr_store_multi_hash_chr_translate____stored_complete___3-1',
9302 N1),
9303 new_ht(O1),
9304 nb_setval('$chr_store_multi_hash_chr_translate____stored_complete___3-13',
9305 O1),
9306 new_ht(P1),
9307 nb_setval('$chr_store_multi_hash_chr_translate____stored___3-123', P1),
9308 new_ht(Q1),
9309 nb_setval('$chr_store_multi_hash_chr_translate____stored___3-13', Q1),
9310 nb_setval('$chr_store_global_list_chr_translate____atomic_type___1', []),
9311 nb_setval('$chr_store_global_ground_chr_translate____dynamic_type_check_clauses___1',
9312 []),
9313 nb_setval('$chr_store_global_ground_chr_translate____dynamic_type_check___0',
9314 []),
9315 new_ht(R1),
9316 nb_setval('$chr_store_multi_hash_chr_translate____ast_static_atomic_builtin_type_check_var___4-13',
9317 R1),
9318 new_ht(S1),
9319 nb_setval('$chr_store_multi_hash_chr_translate____ast_static_atomic_builtin_type_check_var___4-1',
9320 S1),
9321 nb_setval('$chr_store_global_list_chr_translate____ast_static_type_check_var___4',
9322 []),
9323 nb_setval('$chr_store_global_ground_chr_translate____static_type_check___2',
9324 []),
9325 nb_setval('$chr_store_global_ground_chr_translate____types_modes_condition___3',
9326 []),
9327 nb_setval('$chr_store_global_list_chr_translate____unalias_type___2', []),
9328 new_ht(T1),
9329 nb_setval('$chr_store_multi_hash_chr_translate____constraint_type___2-1',
9330 T1),
9331 nb_setval('$chr_store_global_ground_chr_translate____constraint_type___2',
9332 []),
9333 nb_setval('$chr_store_global_list_chr_translate____type_alias___2', []),
9334 nb_setval('$chr_store_global_list_chr_translate____type_definition___2', []),
9335 nb_setval('$chr_store_global_ground_chr_translate____multiple_occ_constraints_checked___1',
9336 []),
9337 new_ht(U1),
9338 nb_setval('$chr_store_multi_hash_chr_translate____make_head_matchings_explicit_memo_table___3-1',
9339 U1),
9340 nb_setval('$chr_store_global_ground_chr_translate____precompute_head_matchings___0',
9341 []),
9342 new_ht(V1),
9343 nb_setval('$chr_store_multi_hash_chr_translate____set_all_passive___1-1',
9344 V1),
9345 new_ht(W1),
9346 nb_setval('$chr_store_multi_hash_chr_translate____prev_guard_list___6-1',
9347 W1),
9348 nb_setval('$chr_store_global_ground_chr_translate____prev_guard_list___6',
9349 []),
9350 nb_setval('$chr_store_global_ground_chr_translate____get_bg_info_answer___1',
9351 []),
9352 nb_setval('$chr_store_global_list_chr_translate____get_bg_info___2', []),
9353 nb_setval('$chr_store_global_list_chr_translate____background_info___2', []),
9354 nb_setval('$chr_store_global_ground_chr_translate____background_info___1',
9355 []),
9356 new_ht(X1),
9357 nb_setval('$chr_store_multi_hash_chr_translate____prolog_global_variable___1-1',
9358 X1),
9359 nb_setval('$chr_store_global_ground_chr_translate____prolog_global_variable___1',
9360 []),
9361 nb_setval('$chr_store_global_list_chr_translate____fresh_symbol___2', []),
9362 nb_setval('$chr_store_global_list_chr_translate____symbol_count___2', []),
9363 new_ht(Y1),
9364 nb_setval('$chr_store_multi_hash_chr_translate____actual_non_ground_multi_hash_key___2-12',
9365 Y1),
9366 new_ht(Z1),
9367 nb_setval('$chr_store_multi_hash_chr_translate____actual_ground_multi_hash_keys___3-1',
9368 Z1),
9369 new_ht(A2),
9370 nb_setval('$chr_store_multi_hash_chr_translate____actual_ground_multi_hash_keys___3-12',
9371 A2),
9372 new_ht(B2),
9373 nb_setval('$chr_store_multi_hash_chr_translate____actual_atomic_multi_hash_keys___3-1',
9374 B2),
9375 new_ht(C2),
9376 nb_setval('$chr_store_multi_hash_chr_translate____actual_atomic_multi_hash_keys___3-12',
9377 C2),
9378 nb_setval('$chr_store_global_ground_chr_translate____module_initializer___1',
9379 []),
9380 nb_setval('$chr_store_global_ground_chr_translate____find_empty_named_histories___0',
9381 []),
9382 nb_setval('$chr_store_global_list_chr_translate____generate_empty_named_history_initialisation___1',
9383 []),
9384 nb_setval('$chr_store_global_ground_chr_translate____empty_named_history_initialisations___2',
9385 []),
9386 nb_setval('$chr_store_global_ground_chr_translate____spawns_all_triggers_implies_spawns_all___0',
9387 []),
9388 new_ht(D2),
9389 nb_setval('$chr_store_multi_hash_chr_translate____spawns_all_triggers___2-12',
9390 D2),
9391 new_ht(E2),
9392 nb_setval('$chr_store_multi_hash_chr_translate____spawns_all_triggers___2-1',
9393 E2),
9394 nb_setval('$chr_store_global_ground_chr_translate____spawns_all_triggers___2',
9395 []),
9396 new_ht(F2),
9397 nb_setval('$chr_store_multi_hash_chr_translate____spawns_all___2-12',
9398 F2),
9399 new_ht(G2),
9400 nb_setval('$chr_store_multi_hash_chr_translate____spawns_all___2-1',
9401 G2),
9402 new_ht(H2),
9403 nb_setval('$chr_store_multi_hash_chr_translate____spawns___3-123', H2),
9404 new_ht(I2),
9405 nb_setval('$chr_store_multi_hash_chr_translate____spawns___3-3', I2),
9406 new_ht(J2),
9407 nb_setval('$chr_store_multi_hash_chr_translate____spawns___3-1', J2),
9408 new_ht(K2),
9409 nb_setval('$chr_store_multi_hash_chr_translate____spawns___3-12', K2),
9410 nb_setval('$chr_store_global_ground_chr_translate____spawns___3', []),
9411 new_ht(L2),
9412 nb_setval('$chr_store_multi_hash_chr_translate____spawns___3-13', L2),
9413 nb_setval('$chr_store_global_ground_chr_translate____observation_analysis___1',
9414 []),
9415 new_ht(M2),
9416 nb_setval('$chr_store_multi_hash_chr_translate____indexing_spec___2-1',
9417 M2),
9418 new_ht(N2),
9419 nb_setval('$chr_store_multi_hash_chr_translate____history___3-1', N2),
9420 new_ht(O2),
9421 nb_setval('$chr_store_multi_hash_chr_translate____history___3-2', O2),
9422 nb_setval('$chr_store_constants_chr_translate____history___3___[3]___[]', []),
9423 new_ht(P2),
9424 nb_setval('$chr_store_multi_hash_chr_translate____no_history___1-1',
9425 P2),
9426 new_ht(Q2),
9427 nb_setval('$chr_store_multi_hash_chr_translate____type_indexed_identifier_index___4-23',
9428 Q2),
9429 new_ht(R2),
9430 nb_setval('$chr_store_multi_hash_chr_translate____type_indexed_identifier_index___4-123',
9431 R2),
9432 new_ht(S2),
9433 nb_setval('$chr_store_multi_hash_chr_translate____type_indexed_identifier_size___2-1',
9434 S2),
9435 new_ht(T2),
9436 nb_setval('$chr_store_multi_hash_chr_translate____identifier_index___3-12',
9437 T2),
9438 nb_setval('$chr_store_global_ground_chr_translate____identifier_size___1',
9439 []),
9440 nb_setval('$chr_store_global_ground_chr_translate____max_constraint_index___1',
9441 []),
9442 new_ht(U2),
9443 nb_setval('$chr_store_multi_hash_chr_translate____constraint_index___2-1',
9444 U2),
9445 new_ht(V2),
9446 nb_setval('$chr_store_multi_hash_chr_translate____constraint_index___2-2',
9447 V2),
9448 new_ht(W2),
9449 nb_setval('$chr_store_multi_hash_chr_translate____least_occurrence___2-1',
9450 W2),
9451 new_ht(X2),
9452 nb_setval('$chr_store_multi_hash_chr_translate____least_occurrence___2-12',
9453 X2),
9454 new_ht(Y2),
9455 nb_setval('$chr_store_multi_hash_chr_translate____rule___2-1', Y2),
9456 nb_setval('$chr_store_global_ground_chr_translate____rule___2', []),
9457 new_ht(Z2),
9458 nb_setval('$chr_store_multi_hash_chr_translate____allocation_occurrence___2-12',
9459 Z2),
9460 new_ht(A3),
9461 nb_setval('$chr_store_multi_hash_chr_translate____allocation_occurrence___2-1',
9462 A3),
9463 new_ht(B3),
9464 nb_setval('$chr_store_multi_hash_chr_translate____max_occurrence___2-1',
9465 B3),
9466 new_ht(C3),
9467 nb_setval('$chr_store_multi_hash_chr_translate____occurrence___5-1',
9468 C3),
9469 new_ht(D3),
9470 nb_setval('$chr_store_multi_hash_chr_translate____occurrence___5-34',
9471 D3),
9472 new_ht(E3),
9473 nb_setval('$chr_store_multi_hash_chr_translate____occurrence___5-13',
9474 E3),
9475 new_ht(F3),
9476 nb_setval('$chr_store_multi_hash_chr_translate____occurrence___5-3',
9477 F3),
9478 new_ht(G3),
9479 nb_setval('$chr_store_multi_hash_chr_translate____occurrence___5-12',
9480 G3),
9481 new_ht(H3),
9482 nb_setval('$chr_store_multi_hash_chr_translate____occurrence___5-134',
9483 H3),
9484 new_ht(I3),
9485 nb_setval('$chr_store_multi_hash_chr_translate____occurrence___5-125',
9486 I3),
9487 nb_setval('$chr_store_global_ground_chr_translate____occurrence___5', []),
9488 new_ht(J3),
9489 nb_setval('$chr_store_multi_hash_chr_translate____occurrence___5-15',
9490 J3),
9491 new_ht(K3),
9492 nb_setval('$chr_store_multi_hash_chr_translate____passive___2-12', K3),
9493 new_ht(L3),
9494 nb_setval('$chr_store_multi_hash_chr_translate____passive___2-1', L3),
9495 nb_setval('$chr_store_global_ground_chr_translate____rule_count___1', []),
9496 new_ht(M3),
9497 nb_setval('$chr_store_multi_hash_chr_translate____validate_store_type_assumption___1-1',
9498 M3),
9499 new_ht(N3),
9500 nb_setval('$chr_store_multi_hash_chr_translate____assumed_store_type___2-1',
9501 N3),
9502 new_ht(O3),
9503 nb_setval('$chr_store_multi_hash_chr_translate____actual_store_types___2-1',
9504 O3),
9505 new_ht(P3),
9506 nb_setval('$chr_store_multi_hash_chr_translate____store_type___2-1',
9507 P3),
9508 nb_setval('$chr_store_global_ground_chr_translate____none_suspended_on_variables___0',
9509 []),
9510 new_ht(Q3),
9511 nb_setval('$chr_store_multi_hash_chr_translate____constraint_mode___2-1',
9512 Q3),
9513 nb_setval('$chr_store_global_ground_chr_translate____constraint_mode___2',
9514 []),
9515 new_ht(R3),
9516 nb_setval('$chr_store_multi_hash_chr_translate____indexed_argument___2-12',
9517 R3),
9518 new_ht(S3),
9519 nb_setval('$chr_store_multi_hash_chr_translate____indexed_argument___2-1',
9520 S3),
9521 new_ht(T3),
9522 nb_setval('$chr_store_multi_hash_chr_translate____source_location___2-1',
9523 T3),
9524 nb_setval('$chr_store_global_ground_chr_translate____target_module___1', []),
9525 nb_setval('$chr_store_global_ground_chr_translate____chr_source_file___1',
9526 []).
9527:- (initialization'$chr_initialization'). 9528:- (dynamic user:exception/3). 9529:- (multifile user:exception/3). 9530user:exception(undefined_global_variable, A, retry) :-
9531 '$chr_prolog_global_variable'(A),
9532 '$chr_initialization'.
9533'$chr_prolog_global_variable'('$chr_store_global_ground_chr_translate____print_chr_constants___0').
9534'$chr_prolog_global_variable'('$chr_store_global_ground_chr_translate____chr_constants___1').
9535'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____occurrence_code_id___3-12').
9536'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____set_occurrence_code_id___3-12').
9537'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____skip_to_next_id___2-12').
9538'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____continuation_occurrence___3-12').
9539'$chr_prolog_global_variable'('$chr_store_global_ground_chr_translate____never_stored_rules___2').
9540'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____never_stored_default___2-1').
9541'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____stored_assertion___1-1').
9542'$chr_prolog_global_variable'('$chr_store_global_ground_chr_translate____used_states_known___0').
9543'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____if_used_state___5-12').
9544'$chr_prolog_global_variable'('$chr_store_global_ground_chr_translate____if_used_state___5').
9545'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____uses_state___2-12').
9546'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____does_use_field___2-12').
9547'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____does_use_history___2-12').
9548'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____does_use_history___2-1').
9549'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____delay_phase_end___2-1').
9550'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____phase_end___1-1').
9551'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____no_partial_wake___1-1').
9552'$chr_prolog_global_variable'('$chr_store_global_ground_chr_translate____partial_wake_analysis___0').
9553'$chr_prolog_global_variable'('$chr_store_global_ground_chr_translate____ai_observation_memo_abstract_goal___2').
9554'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____ai_observation_memoed_abstract_goal___2-1').
9555'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____ai_observation_memoed_propagation_rest_heads___3-12').
9556'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____ai_observation_memoed_simplification_rest_heads___3-12').
9557'$chr_prolog_global_variable'('$chr_store_global_ground_chr_translate____ai_observation_gather_results___0').
9558'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____depends_on_as___3-2').
9559'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____depends_on_as___3-3').
9560'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____ai_not_observed___2-12').
9561'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____ai_not_observed_internal___2-12').
9562'$chr_prolog_global_variable'('$chr_store_global_ground_chr_translate____ai_not_observed_internal___2').
9563'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____ai_observed_internal___2-12').
9564'$chr_prolog_global_variable'('$chr_store_global_ground_chr_translate____ai_observed_internal___2').
9565'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____depends_on_goal___2-2').
9566'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____depends_on_ap___4-3').
9567'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____depends_on_ap___4-2').
9568'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____depends_on___2-2').
9569'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____depends_on___2-1').
9570'$chr_prolog_global_variable'('$chr_store_global_ground_chr_translate____abstract_constraints___1').
9571'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____final_answer_pattern___2-1').
9572'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____call_pattern___1-1').
9573'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____initial_call_pattern___1-1').
9574'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____functional_dependency___4-12').
9575'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____functional_dependency___4-1').
9576'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____use_auxiliary_module___1-1').
9577'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____use_auxiliary_predicate___2-12').
9578'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____use_auxiliary_predicate___2-1').
9579'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____use_auxiliary_predicate___1-1').
9580'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____memo_has_active_occurrence___1-1').
9581'$chr_prolog_global_variable'('$chr_store_global_ground_chr_translate____constraints_code1___3').
9582'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____check_all_passive___2-1').
9583'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____check_all_passive___2-12').
9584'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____stored_complete___3-1').
9585'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____stored_complete___3-13').
9586'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____stored___3-123').
9587'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____stored___3-13').
9588'$chr_prolog_global_variable'('$chr_store_global_list_chr_translate____atomic_type___1').
9589'$chr_prolog_global_variable'('$chr_store_global_ground_chr_translate____dynamic_type_check_clauses___1').
9590'$chr_prolog_global_variable'('$chr_store_global_ground_chr_translate____dynamic_type_check___0').
9591'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____ast_static_atomic_builtin_type_check_var___4-13').
9592'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____ast_static_atomic_builtin_type_check_var___4-1').
9593'$chr_prolog_global_variable'('$chr_store_global_list_chr_translate____ast_static_type_check_var___4').
9594'$chr_prolog_global_variable'('$chr_store_global_ground_chr_translate____static_type_check___2').
9595'$chr_prolog_global_variable'('$chr_store_global_ground_chr_translate____types_modes_condition___3').
9596'$chr_prolog_global_variable'('$chr_store_global_list_chr_translate____unalias_type___2').
9597'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____constraint_type___2-1').
9598'$chr_prolog_global_variable'('$chr_store_global_ground_chr_translate____constraint_type___2').
9599'$chr_prolog_global_variable'('$chr_store_global_list_chr_translate____type_alias___2').
9600'$chr_prolog_global_variable'('$chr_store_global_list_chr_translate____type_definition___2').
9601'$chr_prolog_global_variable'('$chr_store_global_ground_chr_translate____multiple_occ_constraints_checked___1').
9602'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____make_head_matchings_explicit_memo_table___3-1').
9603'$chr_prolog_global_variable'('$chr_store_global_ground_chr_translate____precompute_head_matchings___0').
9604'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____set_all_passive___1-1').
9605'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____prev_guard_list___6-1').
9606'$chr_prolog_global_variable'('$chr_store_global_ground_chr_translate____prev_guard_list___6').
9607'$chr_prolog_global_variable'('$chr_store_global_ground_chr_translate____get_bg_info_answer___1').
9608'$chr_prolog_global_variable'('$chr_store_global_list_chr_translate____get_bg_info___2').
9609'$chr_prolog_global_variable'('$chr_store_global_list_chr_translate____background_info___2').
9610'$chr_prolog_global_variable'('$chr_store_global_ground_chr_translate____background_info___1').
9611'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____prolog_global_variable___1-1').
9612'$chr_prolog_global_variable'('$chr_store_global_ground_chr_translate____prolog_global_variable___1').
9613'$chr_prolog_global_variable'('$chr_store_global_list_chr_translate____fresh_symbol___2').
9614'$chr_prolog_global_variable'('$chr_store_global_list_chr_translate____symbol_count___2').
9615'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____actual_non_ground_multi_hash_key___2-12').
9616'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____actual_ground_multi_hash_keys___3-1').
9617'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____actual_ground_multi_hash_keys___3-12').
9618'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____actual_atomic_multi_hash_keys___3-1').
9619'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____actual_atomic_multi_hash_keys___3-12').
9620'$chr_prolog_global_variable'('$chr_store_global_ground_chr_translate____module_initializer___1').
9621'$chr_prolog_global_variable'('$chr_store_global_ground_chr_translate____find_empty_named_histories___0').
9622'$chr_prolog_global_variable'('$chr_store_global_list_chr_translate____generate_empty_named_history_initialisation___1').
9623'$chr_prolog_global_variable'('$chr_store_global_ground_chr_translate____empty_named_history_initialisations___2').
9624'$chr_prolog_global_variable'('$chr_store_global_ground_chr_translate____spawns_all_triggers_implies_spawns_all___0').
9625'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____spawns_all_triggers___2-12').
9626'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____spawns_all_triggers___2-1').
9627'$chr_prolog_global_variable'('$chr_store_global_ground_chr_translate____spawns_all_triggers___2').
9628'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____spawns_all___2-12').
9629'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____spawns_all___2-1').
9630'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____spawns___3-123').
9631'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____spawns___3-3').
9632'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____spawns___3-1').
9633'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____spawns___3-12').
9634'$chr_prolog_global_variable'('$chr_store_global_ground_chr_translate____spawns___3').
9635'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____spawns___3-13').
9636'$chr_prolog_global_variable'('$chr_store_global_ground_chr_translate____observation_analysis___1').
9637'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____indexing_spec___2-1').
9638'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____history___3-1').
9639'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____history___3-2').
9640'$chr_prolog_global_variable'('$chr_store_constants_chr_translate____history___3___[3]___[]').
9641'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____no_history___1-1').
9642'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____type_indexed_identifier_index___4-23').
9643'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____type_indexed_identifier_index___4-123').
9644'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____type_indexed_identifier_size___2-1').
9645'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____identifier_index___3-12').
9646'$chr_prolog_global_variable'('$chr_store_global_ground_chr_translate____identifier_size___1').
9647'$chr_prolog_global_variable'('$chr_store_global_ground_chr_translate____max_constraint_index___1').
9648'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____constraint_index___2-1').
9649'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____constraint_index___2-2').
9650'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____least_occurrence___2-1').
9651'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____least_occurrence___2-12').
9652'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____rule___2-1').
9653'$chr_prolog_global_variable'('$chr_store_global_ground_chr_translate____rule___2').
9654'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____allocation_occurrence___2-12').
9655'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____allocation_occurrence___2-1').
9656'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____max_occurrence___2-1').
9657'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____occurrence___5-1').
9658'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____occurrence___5-34').
9659'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____occurrence___5-13').
9660'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____occurrence___5-3').
9661'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____occurrence___5-12').
9662'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____occurrence___5-134').
9663'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____occurrence___5-125').
9664'$chr_prolog_global_variable'('$chr_store_global_ground_chr_translate____occurrence___5').
9665'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____occurrence___5-15').
9666'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____passive___2-12').
9667'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____passive___2-1').
9668'$chr_prolog_global_variable'('$chr_store_global_ground_chr_translate____rule_count___1').
9669'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____validate_store_type_assumption___1-1').
9670'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____assumed_store_type___2-1').
9671'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____actual_store_types___2-1').
9672'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____store_type___2-1').
9673'$chr_prolog_global_variable'('$chr_store_global_ground_chr_translate____none_suspended_on_variables___0').
9674'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____constraint_mode___2-1').
9675'$chr_prolog_global_variable'('$chr_store_global_ground_chr_translate____constraint_mode___2').
9676'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____indexed_argument___2-12').
9677'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____indexed_argument___2-1').
9678'$chr_prolog_global_variable'('$chr_store_multi_hash_chr_translate____source_location___2-1').
9679'$chr_prolog_global_variable'('$chr_store_global_ground_chr_translate____target_module___1').
9680'$chr_prolog_global_variable'('$chr_store_global_ground_chr_translate____chr_source_file___1').
9681chr_source_file(C) :-
9682 nb_getval('$chr_store_global_ground_chr_translate____chr_source_file___1',
9683 A),
9684 ( member(B, A),
9685 B=suspension(_, active, _, _),
9686 !
9687 ; !,
9688 chr_source_file___1__0__0__2(A, C)
9689 ).
9690chr_source_file___1__0__0__2([], A) :-
9691 chr_source_file___1__1(A).
9692chr_source_file___1__0__0__2([A|F], G) :-
9693 ( A=suspension(_, active, _, _)
9694 -> ( setarg(2, A, removed),
9695 arg(3, A, B),
9696 ( var(B)
9697 -> nb_getval('$chr_store_global_ground_chr_translate____chr_source_file___1',
9698 C),
9699 C=[_|D],
9700 b_setval('$chr_store_global_ground_chr_translate____chr_source_file___1',
9701 D),
9702 ( D=[E|_]
9703 -> setarg(3, E, _)
9704 ; true
9705 )
9706 ; B=[_, _|D],
9707 setarg(2, B, D),
9708 ( D=[E|_]
9709 -> setarg(3, E, B)
9710 ; true
9711 )
9712 )
9713 ),
9714 chr_source_file___1__0__0__2(F, G)
9715 ; chr_source_file___1__0__0__2(F, G)
9716 ).
9717chr_source_file(A) :-
9718 chr_source_file___1__1(A).
9719chr_source_file___1__1(A) :-
9720 C=suspension(B, active, _, A),
9721 'chr gen_id'(B),
9722 nb_getval('$chr_store_global_ground_chr_translate____chr_source_file___1',
9723 D),
9724 E=[C|D],
9725 b_setval('$chr_store_global_ground_chr_translate____chr_source_file___1',
9726 E),
9727 ( D=[F|_]
9728 -> setarg(3, F, E)
9729 ; true
9730 ).
9731get_chr_source_file(C) :-
9732 nb_getval('$chr_store_global_ground_chr_translate____chr_source_file___1',
9733 A),
9734 member(B, A),
9735 B=suspension(_, active, _, D),
9736 !,
9737 C=D.
9738get_chr_source_file(user).
9739target_module(C) :-
9740 nb_getval('$chr_store_global_ground_chr_translate____target_module___1',
9741 A),
9742 ( member(B, A),
9743 B=suspension(_, active, _, _),
9744 !
9745 ; !,
9746 target_module___1__0__0__2(A, C)
9747 ).
9748target_module___1__0__0__2([], A) :-
9749 target_module___1__1(A).
9750target_module___1__0__0__2([A|F], G) :-
9751 ( A=suspension(_, active, _, _)
9752 -> ( setarg(2, A, removed),
9753 arg(3, A, B),
9754 ( var(B)
9755 -> nb_getval('$chr_store_global_ground_chr_translate____target_module___1',
9756 C),
9757 C=[_|D],
9758 b_setval('$chr_store_global_ground_chr_translate____target_module___1',
9759 D),
9760 ( D=[E|_]
9761 -> setarg(3, E, _)
9762 ; true
9763 )
9764 ; B=[_, _|D],
9765 setarg(2, B, D),
9766 ( D=[E|_]
9767 -> setarg(3, E, B)
9768 ; true
9769 )
9770 )
9771 ),
9772 target_module___1__0__0__2(F, G)
9773 ; target_module___1__0__0__2(F, G)
9774 ).
9775target_module(A) :-
9776 target_module___1__1(A).
9777target_module___1__1(A) :-
9778 C=suspension(B, active, _, A),
9779 'chr gen_id'(B),
9780 nb_getval('$chr_store_global_ground_chr_translate____target_module___1',
9781 D),
9782 E=[C|D],
9783 b_setval('$chr_store_global_ground_chr_translate____target_module___1',
9784 E),
9785 ( D=[F|_]
9786 -> setarg(3, F, E)
9787 ; true
9788 ).
9789get_target_module(C) :-
9790 nb_getval('$chr_store_global_ground_chr_translate____target_module___1',
9791 A),
9792 member(B, A),
9793 B=suspension(_, active, _, D),
9794 !,
9795 C=D.
9796get_target_module(user).
9797source_location(B, E) :-
9798 ( nb_getval('$chr_store_multi_hash_chr_translate____source_location___2-1',
9799 A),
9800 lookup_ht(A, B, C)
9801 ),
9802 ( member(D, C),
9803 D=suspension(_, active, _, _),
9804 !
9805 ; !,
9806 source_location___2__0__0__2(C, B, E)
9807 ).
9808source_location___2__0__0__2([], A, B) :-
9809 source_location___2__1(A, B).
9810source_location___2__0__0__2([A|E], C, F) :-
9811 ( A=suspension(_, active, B, _),
9812 B==C
9813 -> ( setarg(2, A, removed),
9814 nb_getval('$chr_store_multi_hash_chr_translate____source_location___2-1',
9815 D),
9816 delete_ht(D, C, A)
9817 ),
9818 source_location___2__0__0__2(E, C, F)
9819 ; source_location___2__0__0__2(E, C, F)
9820 ).
9821source_location(A, B) :-
9822 source_location___2__1(A, B).
9823source_location___2__1(A, B) :-
9824 E=suspension(C, active, A, B),
9825 'chr gen_id'(C),
9826 nb_getval('$chr_store_multi_hash_chr_translate____source_location___2-1',
9827 D),
9828 insert_ht(D, A, E).
9829get_line_number(B, E) :-
9830 nb_getval('$chr_store_multi_hash_chr_translate____source_location___2-1',
9831 A),
9832 lookup_ht(A, B, C),
9833 member(D, C),
9834 D=suspension(_, active, _, F),
9835 !,
9836 E=F.
9837get_line_number(_, (?):0).
9838indexed_argument(B, C) :-
9839 nb_getval('$chr_store_multi_hash_chr_translate____indexed_argument___2-12',
9840 A),
9841 lookup_ht(A, k(B, C), D),
9842 member(E, D),
9843 E=suspension(_, active, _, _),
9844 !.
9845indexed_argument(A, B) :-
9846 E=suspension(C, active, A, B),
9847 'chr gen_id'(C),
9848 nb_getval('$chr_store_multi_hash_chr_translate____indexed_argument___2-1',
9849 D),
9850 insert_ht(D, A, E),
9851 nb_getval('$chr_store_multi_hash_chr_translate____indexed_argument___2-12',
9852 F),
9853 insert_ht(F, k(A, B), E).
9854is_indexed_argument(B, C) :-
9855 nb_getval('$chr_store_multi_hash_chr_translate____indexed_argument___2-12',
9856 A),
9857 lookup_ht(A, k(B, C), D),
9858 member(E, D),
9859 E=suspension(_, active, _, _),
9860 !.
9861is_indexed_argument(_, _) :-
9862 fail.
9863constraint_mode(A, B) :-
9864 constraint_mode___2__0(A, B, _).
9865constraint_mode___2__0(B, E, F) :-
9866 ( nb_getval('$chr_store_multi_hash_chr_translate____constraint_mode___2-1',
9867 A),
9868 lookup_ht(A, B, C)
9869 ),
9870 ( member(D, C),
9871 D=suspension(_, active, _, _, _, _),
9872 !
9873 ; !,
9874 constraint_mode___2__0__0__2(C, B, E, F)
9875 ).
9876constraint_mode___2__0__0__2([], A, B, C) :-
9877 constraint_mode___2__1(A, B, C).
9878constraint_mode___2__0__0__2([A|I], C, J, K) :-
9879 ( A=suspension(_, active, _, _, B, _),
9880 B==C
9881 -> ( setarg(2, A, removed),
9882 ( arg(4, A, D),
9883 ( var(D)
9884 -> nb_getval('$chr_store_global_ground_chr_translate____constraint_mode___2',
9885 E),
9886 E=[_|F],
9887 b_setval('$chr_store_global_ground_chr_translate____constraint_mode___2',
9888 F),
9889 ( F=[G|_]
9890 -> setarg(4, G, _)
9891 ; true
9892 )
9893 ; D=[_, _|F],
9894 setarg(2, D, F),
9895 ( F=[G|_]
9896 -> setarg(4, G, D)
9897 ; true
9898 )
9899 )
9900 ),
9901 nb_getval('$chr_store_multi_hash_chr_translate____constraint_mode___2-1',
9902 H),
9903 delete_ht(H, C, A)
9904 ),
9905 constraint_mode___2__0__0__2(I, C, J, K)
9906 ; constraint_mode___2__0__0__2(I, C, J, K)
9907 ).
9908constraint_mode___2__0(A, B, C) :-
9909 constraint_mode___2__1(A, B, C).
9910constraint_mode___2__1(A, C, B) :-
9911 A=F/G,
9912 nb_getval('$chr_store_global_ground_chr_translate____types_modes_condition___3',
9913 E),
9914 !,
9915 B=suspension(D, not_stored_yet, t, _, A, C),
9916 'chr gen_id'(D),
9917 constraint_mode___2__1__0__7(E,
9918 A,
9919 C,
9920 B,
9921 F,
9922 G).
9923constraint_mode___2__1__0__7([], A, B, C, _, _) :-
9924 constraint_mode___2__2(A, B, C).
9925constraint_mode___2__1__0__7([A|C1], Q, S, K, E, F) :-
9926 ( ( A=suspension(_, active, _, B, C, R),
9927 B=[D|Z],
9928 C=[V|A1]
9929 ),
9930 functor(D, E, F)
9931 -> ( setarg(2, A, removed),
9932 arg(3, A, G),
9933 ( var(G)
9934 -> nb_getval('$chr_store_global_ground_chr_translate____types_modes_condition___3',
9935 H),
9936 H=[_|I],
9937 b_setval('$chr_store_global_ground_chr_translate____types_modes_condition___3',
9938 I),
9939 ( I=[J|_]
9940 -> setarg(3, J, _)
9941 ; true
9942 )
9943 ; G=[_, _|I],
9944 setarg(2, G, I),
9945 ( I=[J|_]
9946 -> setarg(3, J, G)
9947 ; true
9948 )
9949 )
9950 ),
9951 ( arg(2, K, L),
9952 setarg(2, K, active),
9953 ( L==not_stored_yet
9954 -> ( nb_getval('$chr_store_global_ground_chr_translate____constraint_mode___2',
9955 M),
9956 N=[K|M],
9957 b_setval('$chr_store_global_ground_chr_translate____constraint_mode___2',
9958 N),
9959 ( M=[O|_]
9960 -> setarg(4, O, N)
9961 ; true
9962 )
9963 ),
9964 nb_getval('$chr_store_multi_hash_chr_translate____constraint_mode___2-1',
9965 P),
9966 insert_ht(P, Q, K)
9967 ; true
9968 )
9969 ),
9970 ( D=..[_|T],
9971 R=(U, Y, B1),
9972 modes_condition(S, T, U),
9973 get_constraint_type_det(E/F, W),
9974 V=..[_|X],
9975 types_condition(W, T, X, S, Y),
9976 types_modes_condition(Z, A1, B1)
9977 ),
9978 ( K=suspension(_, active, _, _, _, _)
9979 -> setarg(2, K, inactive),
9980 constraint_mode___2__1__0__7(C1,
9981 Q,
9982 S,
9983 K,
9984 E,
9985 F)
9986 ; true
9987 )
9988 ; constraint_mode___2__1__0__7(C1,
9989 Q,
9990 S,
9991 K,
9992 E,
9993 F)
9994 ).
9995constraint_mode___2__1(B, C, A) :-
9996 A=suspension(D, not_stored_yet, t, _, B, C),
9997 'chr gen_id'(D),
9998 constraint_mode___2__2(B, C, A).
9999constraint_mode___2__2(B, D, E) :-
10000 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-1', A),
10001 lookup_ht(A, B, C),
10002 !,
10003 constraint_mode___2__2__0__8(C, B, D, E).
10004constraint_mode___2__2__0__8([], A, B, C) :-
10005 constraint_mode___2__3(A, B, C).
10006constraint_mode___2__2__0__8([A|H], C, I, J) :-
10007 ( ( A=suspension(_, active, _, _, B, _, E, F, G),
10008 B==C
10009 ),
10010 nb_getval('$chr_store_global_ground_chr_translate____partial_wake_analysis___0',
10011 D)
10012 -> constraint_mode___2__2__1__8(D,
10013 E,
10014 F,
10015 G,
10016 A,
10017 H,
10018 C,
10019 I,
10020 J)
10021 ; constraint_mode___2__2__0__8(H, C, I, J)
10022 ).
10023constraint_mode___2__2__1__8([], _, _, _, _, A, B, C, D) :-
10024 constraint_mode___2__2__0__8(A, B, C, D).
10025constraint_mode___2__2__1__8([A|E], C, F, G, H, I, J, K, L) :-
10026 ( A=suspension(_, active, _, _),
10027 nb_getval('$chr_store_multi_hash_chr_translate____rule___2-1', B),
10028 lookup_ht(B, C, D)
10029 -> constraint_mode___2__2__2__8(D,
10030 A,
10031 E,
10032 C,
10033 F,
10034 G,
10035 H,
10036 I,
10037 J,
10038 K,
10039 L)
10040 ; constraint_mode___2__2__1__8(E,
10041 C,
10042 F,
10043 G,
10044 H,
10045 I,
10046 J,
10047 K,
10048 L)
10049 ).
10050constraint_mode___2__2__2__8([], _, A, B, C, D, E, F, G, H, I) :-
10051 constraint_mode___2__2__1__8(A,
10052 B,
10053 C,
10054 D,
10055 E,
10056 F,
10057 G,
10058 H,
10059 I).
10060constraint_mode___2__2__2__8([A|X], D, Y, C, O, P, E, Z, M, U, F) :-
10061 ( A=suspension(_, active, _, _, B, N),
10062 B==C,
10063 G=t(330, D, E, A, F),
10064 '$novel_production'(D, G),
10065 '$novel_production'(E, G),
10066 '$novel_production'(A, G),
10067 '$novel_production'(F, G)
10068 -> '$extend_history'(F, G),
10069 ( arg(2, F, H),
10070 setarg(2, F, active),
10071 ( H==not_stored_yet
10072 -> ( nb_getval('$chr_store_global_ground_chr_translate____constraint_mode___2',
10073 I),
10074 J=[F|I],
10075 b_setval('$chr_store_global_ground_chr_translate____constraint_mode___2',
10076 J),
10077 ( I=[K|_]
10078 -> setarg(4, K, J)
10079 ; true
10080 )
10081 ),
10082 nb_getval('$chr_store_multi_hash_chr_translate____constraint_mode___2-1',
10083 L),
10084 insert_ht(L, M, F)
10085 ; true
10086 )
10087 ),
10088 ( N=pragma(rule(Q, W, S, _), _, _, _, _),
10089 ( is_passive(C, O)
10090 -> true
10091 ; P==simplification
10092 -> select(R, Q, _),
10093 R=..[_|T],
10094 term_variables(S, V),
10095 partial_wake_args(T, U, V, M)
10096 ; select(R, W, _),
10097 R=..[_|T],
10098 term_variables(S, V),
10099 partial_wake_args(T, U, V, M)
10100 )
10101 ),
10102 ( F=suspension(_, active, _, _, _, _)
10103 -> setarg(2, F, inactive),
10104 constraint_mode___2__2__2__8(X,
10105 D,
10106 Y,
10107 C,
10108 O,
10109 P,
10110 E,
10111 Z,
10112 M,
10113 U,
10114 F)
10115 ; true
10116 )
10117 ; constraint_mode___2__2__2__8(X,
10118 D,
10119 Y,
10120 C,
10121 O,
10122 P,
10123 E,
10124 Z,
10125 M,
10126 U,
10127 F)
10128 ).
10129constraint_mode___2__2(A, B, C) :-
10130 constraint_mode___2__3(A, B, C).
10131constraint_mode___2__3(G, _, A) :-
10132 arg(2, A, B),
10133 setarg(2, A, active),
10134 ( B==not_stored_yet
10135 -> ( nb_getval('$chr_store_global_ground_chr_translate____constraint_mode___2',
10136 C),
10137 D=[A|C],
10138 b_setval('$chr_store_global_ground_chr_translate____constraint_mode___2',
10139 D),
10140 ( C=[E|_]
10141 -> setarg(4, E, D)
10142 ; true
10143 )
10144 ),
10145 nb_getval('$chr_store_multi_hash_chr_translate____constraint_mode___2-1',
10146 F),
10147 insert_ht(F, G, A)
10148 ; true
10149 ).
10150get_constraint_mode(B, E) :-
10151 nb_getval('$chr_store_multi_hash_chr_translate____constraint_mode___2-1',
10152 A),
10153 lookup_ht(A, B, C),
10154 member(D, C),
10155 D=suspension(_, active, _, _, _, F),
10156 !,
10157 E=F.
10158get_constraint_mode(_/A, B) :-
10159 replicate(A, ?, B).
10160may_trigger(A) :-
10161 \+ has_active_occurrence(A),
10162 !,
10163 fail.
10164may_trigger(B) :-
10165 nb_getval('$chr_store_multi_hash_chr_translate____constraint_mode___2-1',
10166 A),
10167 lookup_ht(A, B, C),
10168 member(D, C),
10169 D=suspension(_, active, _, _, _, I),
10170 nb_getval('$chr_store_multi_hash_chr_translate____indexed_argument___2-1',
10171 E),
10172 lookup_ht(E, B, F),
10173 member(G, F),
10174 G=suspension(_, active, _, H),
10175 nth1(H, I, J),
10176 J\==(+),
10177 !,
10178 is_stored(B).
10179may_trigger(_) :-
10180 chr_pp_flag(debugable, on).
10181only_ground_indexed_arguments(B) :-
10182 nb_getval('$chr_store_multi_hash_chr_translate____constraint_mode___2-1',
10183 A),
10184 lookup_ht(A, B, C),
10185 member(D, C),
10186 D=suspension(_, active, _, _, _, I),
10187 nb_getval('$chr_store_multi_hash_chr_translate____indexed_argument___2-1',
10188 E),
10189 lookup_ht(E, B, F),
10190 member(G, F),
10191 G=suspension(_, active, _, H),
10192 nth1(H, I, J),
10193 J\==(+),
10194 !,
10195 fail.
10196only_ground_indexed_arguments(_).
10197none_suspended_on_variables :-
10198 nb_getval('$chr_store_global_ground_chr_translate____none_suspended_on_variables___0',
10199 A),
10200 member(B, A),
10201 B=suspension(_, active, _),
10202 !.
10203none_suspended_on_variables :-
10204 B=suspension(A, active, _),
10205 'chr gen_id'(A),
10206 nb_getval('$chr_store_global_ground_chr_translate____none_suspended_on_variables___0',
10207 C),
10208 D=[B|C],
10209 b_setval('$chr_store_global_ground_chr_translate____none_suspended_on_variables___0',
10210 D),
10211 ( C=[E|_]
10212 -> setarg(3, E, D)
10213 ; true
10214 ).
10215are_none_suspended_on_variables :-
10216 nb_getval('$chr_store_global_ground_chr_translate____none_suspended_on_variables___0',
10217 A),
10218 member(B, A),
10219 B=suspension(_, active, _),
10220 !.
10221are_none_suspended_on_variables :-
10222 fail.
10223store_type(A, B) :-
10224 store_type___2__0(A, B, _).
10225store_type___2__0(B, C, A) :-
10226 chr_pp_flag(verbose, on),
10227 !,
10228 A=suspension(D, active, B, C),
10229 'chr gen_id'(D),
10230 nb_getval('$chr_store_multi_hash_chr_translate____store_type___2-1', E),
10231 insert_ht(E, B, A),
10232 format('The indexes for ~w are:\n', [B]),
10233 format_storetype(C),
10234 ( A=suspension(_, active, _, _)
10235 -> setarg(2, A, inactive),
10236 store_type___2__1(B, C, A)
10237 ; true
10238 ).
10239store_type___2__0(B, C, A) :-
10240 A=suspension(D, not_stored_yet, B, C),
10241 'chr gen_id'(D),
10242 store_type___2__1(B, C, A).
10243store_type___2__1(B, _, J) :-
10244 nb_getval('$chr_store_multi_hash_chr_translate____validate_store_type_assumption___1-1',
10245 A),
10246 lookup_ht(A, B, C),
10247 member(D, C),
10248 D=suspension(_, active, _),
10249 nb_getval('$chr_store_multi_hash_chr_translate____actual_store_types___2-1',
10250 E),
10251 lookup_ht(E, B, F),
10252 member(G, F),
10253 G=suspension(_, active, _, M),
10254 !,
10255 setarg(2, D, removed),
10256 nb_getval('$chr_store_multi_hash_chr_translate____validate_store_type_assumption___1-1',
10257 H),
10258 delete_ht(H, B, D),
10259 setarg(2, G, removed),
10260 nb_getval('$chr_store_multi_hash_chr_translate____actual_store_types___2-1',
10261 I),
10262 delete_ht(I, B, G),
10263 ( var(J)
10264 -> true
10265 ; arg(2, J, K),
10266 setarg(2, J, removed),
10267 ( K==not_stored_yet
10268 -> true
10269 ; nb_getval('$chr_store_multi_hash_chr_translate____store_type___2-1',
10270 L),
10271 delete_ht(L, B, J)
10272 )
10273 ),
10274 store_type(B, multi_store(M)).
10275store_type___2__1(D, _, A) :-
10276 arg(2, A, B),
10277 setarg(2, A, active),
10278 ( B==not_stored_yet
10279 -> nb_getval('$chr_store_multi_hash_chr_translate____store_type___2-1',
10280 C),
10281 insert_ht(C, D, A)
10282 ; true
10283 ).
10284get_store_type(B, E) :-
10285 nb_getval('$chr_store_multi_hash_chr_translate____store_type___2-1', A),
10286 lookup_ht(A, B, C),
10287 member(D, C),
10288 D=suspension(_, active, _, F),
10289 !,
10290 E=F.
10291get_store_type(B, E) :-
10292 nb_getval('$chr_store_multi_hash_chr_translate____assumed_store_type___2-1',
10293 A),
10294 lookup_ht(A, B, C),
10295 member(D, C),
10296 D=suspension(_, active, _, F),
10297 !,
10298 E=F.
10299get_store_type(_, default).
10300update_store_type(B, E) :-
10301 ( nb_getval('$chr_store_multi_hash_chr_translate____actual_store_types___2-1',
10302 A),
10303 lookup_ht(A, B, C),
10304 member(D, C),
10305 D=suspension(_, active, _, F)
10306 ),
10307 ( memberchk(E, F),
10308 !
10309 ; !,
10310 setarg(2, D, removed),
10311 nb_getval('$chr_store_multi_hash_chr_translate____actual_store_types___2-1',
10312 G),
10313 delete_ht(G, B, D),
10314 actual_store_types(B, [E|F])
10315 ).
10316update_store_type(A, B) :-
10317 actual_store_types(A, [B]).
10318actual_store_types(B, K) :-
10319 nb_getval('$chr_store_multi_hash_chr_translate____actual_atomic_multi_hash_keys___3-1',
10320 A),
10321 lookup_ht(A, B, C),
10322 member(D, C),
10323 D=suspension(_, active, _, I, P),
10324 nb_getval('$chr_store_multi_hash_chr_translate____validate_store_type_assumption___1-1',
10325 E),
10326 lookup_ht(E, B, F),
10327 member(G, F),
10328 G=suspension(_, active, _),
10329 !,
10330 setarg(2, D, removed),
10331 nb_getval('$chr_store_multi_hash_chr_translate____actual_atomic_multi_hash_keys___3-12',
10332 H),
10333 delete_ht(H, k(B, I), D),
10334 nb_getval('$chr_store_multi_hash_chr_translate____actual_atomic_multi_hash_keys___3-1',
10335 J),
10336 delete_ht(J, B, D),
10337 selectchk(multi_hash([I]), K, R),
10338 I=[L],
10339 ( get_constraint_arg_type(B, L, M),
10340 enumerated_atomic_type(M, N)
10341 -> O=N,
10342 Q=complete
10343 ; O=P,
10344 Q=incomplete
10345 ),
10346 actual_store_types(B,
10347 [atomic_constants(I, O, Q)|R]).
10348actual_store_types(B, P) :-
10349 nb_getval('$chr_store_multi_hash_chr_translate____actual_ground_multi_hash_keys___3-1',
10350 A),
10351 lookup_ht(A, B, C),
10352 member(D, C),
10353 D=suspension(_, active, _, I, N),
10354 nb_getval('$chr_store_multi_hash_chr_translate____validate_store_type_assumption___1-1',
10355 E),
10356 lookup_ht(E, B, F),
10357 member(G, F),
10358 G=suspension(_, active, _),
10359 !,
10360 setarg(2, D, removed),
10361 nb_getval('$chr_store_multi_hash_chr_translate____actual_ground_multi_hash_keys___3-12',
10362 H),
10363 delete_ht(H, k(B, I), D),
10364 nb_getval('$chr_store_multi_hash_chr_translate____actual_ground_multi_hash_keys___3-1',
10365 J),
10366 delete_ht(J, B, D),
10367 ( I=[K],
10368 get_constraint_arg_type(B, K, L),
10369 L=chr_enum(M)
10370 -> O=complete
10371 ; M=N,
10372 O=incomplete
10373 ),
10374 selectchk(multi_hash([I]), P, Q),
10375 actual_store_types(B,
10376 [ground_constants(I, M, O)|Q]).
10377actual_store_types(B, E) :-
10378 ( nb_getval('$chr_store_multi_hash_chr_translate____validate_store_type_assumption___1-1',
10379 A),
10380 lookup_ht(A, B, C),
10381 member(D, C),
10382 D=suspension(_, active, _)
10383 ),
10384 ( ( memberchk(multi_hash([[F]]), E),
10385 ( get_constraint_type(B, G),
10386 nth1(F, G, H),
10387 enumerated_atomic_type(H, I),
10388 !,
10389 selectchk(multi_hash([[F]]), E, J),
10390 actual_store_types(B,
10391
10392 [ atomic_constants([F],
10393 I,
10394 complete)
10395 | J
10396 ])
10397 ; get_constraint_arg_type(B, F, K),
10398 K=chr_enum(L),
10399 !,
10400 selectchk(multi_hash([[F]]), E, M),
10401 actual_store_types(B,
10402
10403 [ ground_constants([F],
10404 L,
10405 complete)
10406 | M
10407 ])
10408 )
10409 ; nb_getval('$chr_store_multi_hash_chr_translate____assumed_store_type___2-1',
10410 N),
10411 lookup_ht(N, B, O),
10412 member(P, O),
10413 P=suspension(_, active, _, _),
10414 !,
10415 setarg(2, D, removed),
10416 nb_getval('$chr_store_multi_hash_chr_translate____validate_store_type_assumption___1-1',
10417 Q),
10418 delete_ht(Q, B, D),
10419 setarg(2, P, removed),
10420 nb_getval('$chr_store_multi_hash_chr_translate____assumed_store_type___2-1',
10421 R),
10422 delete_ht(R, B, P),
10423 ( maplist(partial_store, E)
10424 -> S=[global_ground|E]
10425 ; S=E
10426 ),
10427 store_type(B, multi_store(S))
10428 )
10429 ; nb_getval('$chr_store_multi_hash_chr_translate____store_type___2-1',
10430 T),
10431 lookup_ht(T, B, U),
10432 member(V, U),
10433 V=suspension(_, active, _, _),
10434 !,
10435 setarg(2, D, removed),
10436 nb_getval('$chr_store_multi_hash_chr_translate____validate_store_type_assumption___1-1',
10437 W),
10438 delete_ht(W, B, D),
10439 setarg(2, V, removed),
10440 nb_getval('$chr_store_multi_hash_chr_translate____store_type___2-1',
10441 X),
10442 delete_ht(X, B, V),
10443 store_type(B, multi_store(E))
10444 ).
10445actual_store_types(A, B) :-
10446 E=suspension(C, active, A, B),
10447 'chr gen_id'(C),
10448 nb_getval('$chr_store_multi_hash_chr_translate____actual_store_types___2-1',
10449 D),
10450 insert_ht(D, A, E).
10451assumed_store_type(B, _) :-
10452 ( nb_getval('$chr_store_multi_hash_chr_translate____validate_store_type_assumption___1-1',
10453 A),
10454 lookup_ht(A, B, C),
10455 member(D, C),
10456 D=suspension(_, active, _)
10457 ),
10458 ( ( nb_getval('$chr_store_multi_hash_chr_translate____actual_store_types___2-1',
10459 E),
10460 lookup_ht(E, B, F),
10461 member(G, F),
10462 G=suspension(_, active, _, J),
10463 !,
10464 setarg(2, D, removed),
10465 nb_getval('$chr_store_multi_hash_chr_translate____validate_store_type_assumption___1-1',
10466 H),
10467 delete_ht(H, B, D),
10468 setarg(2, G, removed),
10469 nb_getval('$chr_store_multi_hash_chr_translate____actual_store_types___2-1',
10470 I),
10471 delete_ht(I, B, G),
10472 ( maplist(partial_store, J)
10473 -> K=[global_ground|J]
10474 ; K=J
10475 ),
10476 store_type(B, multi_store(K))
10477 ; chr_pp_flag(debugable, on),
10478 !,
10479 setarg(2, D, removed),
10480 nb_getval('$chr_store_multi_hash_chr_translate____validate_store_type_assumption___1-1',
10481 L),
10482 delete_ht(L, B, D),
10483 store_type(B, default)
10484 )
10485 ; !,
10486 setarg(2, D, removed),
10487 nb_getval('$chr_store_multi_hash_chr_translate____validate_store_type_assumption___1-1',
10488 M),
10489 delete_ht(M, B, D),
10490 store_type(B, global_ground)
10491 ).
10492assumed_store_type(A, B) :-
10493 E=suspension(C, active, A, B),
10494 'chr gen_id'(C),
10495 nb_getval('$chr_store_multi_hash_chr_translate____assumed_store_type___2-1',
10496 D),
10497 insert_ht(D, A, E).
10498validate_store_type_assumption(A) :-
10499 validate_store_type_assumption___1__0(A, _).
10500validate_store_type_assumption___1__0(B, C) :-
10501 nb_getval('$chr_store_multi_hash_chr_translate____actual_store_types___2-1',
10502 A),
10503 lookup_ht(A, B, E),
10504 !,
10505 C=suspension(D, not_stored_yet, B),
10506 'chr gen_id'(D),
10507 validate_store_type_assumption___1__0__0__1(E, B, C).
10508validate_store_type_assumption___1__0__0__1([], A, B) :-
10509 validate_store_type_assumption___1__1(A, B).
10510validate_store_type_assumption___1__0__0__1([A|V], C, K) :-
10511 ( ( A=suspension(_, active, B, N),
10512 B==C
10513 ),
10514 ( ground(C),
10515 nb_getval('$chr_store_multi_hash_chr_translate____actual_atomic_multi_hash_keys___3-1',
10516 D),
10517 lookup_ht(D, C, E)
10518 ),
10519 member(F, E),
10520 F=suspension(_, active, _, I, S)
10521 -> ( ( setarg(2, A, removed),
10522 nb_getval('$chr_store_multi_hash_chr_translate____actual_store_types___2-1',
10523 G),
10524 delete_ht(G, C, A)
10525 ),
10526 setarg(2, F, removed),
10527 ( nb_getval('$chr_store_multi_hash_chr_translate____actual_atomic_multi_hash_keys___3-12',
10528 H),
10529 delete_ht(H, k(C, I), F)
10530 ),
10531 nb_getval('$chr_store_multi_hash_chr_translate____actual_atomic_multi_hash_keys___3-1',
10532 J),
10533 delete_ht(J, C, F)
10534 ),
10535 ( arg(2, K, L),
10536 setarg(2, K, active),
10537 ( L==not_stored_yet
10538 -> nb_getval('$chr_store_multi_hash_chr_translate____validate_store_type_assumption___1-1',
10539 M),
10540 insert_ht(M, C, K)
10541 ; true
10542 )
10543 ),
10544 ( selectchk(multi_hash([I]), N, U),
10545 I=[O],
10546 ( get_constraint_arg_type(C, O, P),
10547 enumerated_atomic_type(P, Q)
10548 -> R=Q,
10549 T=complete
10550 ; R=S,
10551 T=incomplete
10552 ),
10553 actual_store_types(C,
10554
10555 [ atomic_constants(I, R, T)
10556 | U
10557 ])
10558 ),
10559 ( K=suspension(_, active, _)
10560 -> setarg(2, K, inactive),
10561 validate_store_type_assumption___1__0__0__1(V,
10562 C,
10563 K)
10564 ; true
10565 )
10566 ; validate_store_type_assumption___1__0__0__1(V, C, K)
10567 ).
10568validate_store_type_assumption___1__0(B, A) :-
10569 A=suspension(C, not_stored_yet, B),
10570 'chr gen_id'(C),
10571 validate_store_type_assumption___1__1(B, A).
10572validate_store_type_assumption___1__1(B, D) :-
10573 nb_getval('$chr_store_multi_hash_chr_translate____actual_store_types___2-1',
10574 A),
10575 lookup_ht(A, B, C),
10576 !,
10577 validate_store_type_assumption___1__1__0__2(C, B, D).
10578validate_store_type_assumption___1__1__0__2([], A, B) :-
10579 validate_store_type_assumption___1__2(A, B).
10580validate_store_type_assumption___1__1__0__2([A|U], C, K) :-
10581 ( ( A=suspension(_, active, B, S),
10582 B==C
10583 ),
10584 ( ground(C),
10585 nb_getval('$chr_store_multi_hash_chr_translate____actual_ground_multi_hash_keys___3-1',
10586 D),
10587 lookup_ht(D, C, E)
10588 ),
10589 member(F, E),
10590 F=suspension(_, active, _, I, Q)
10591 -> ( ( setarg(2, A, removed),
10592 nb_getval('$chr_store_multi_hash_chr_translate____actual_store_types___2-1',
10593 G),
10594 delete_ht(G, C, A)
10595 ),
10596 setarg(2, F, removed),
10597 ( nb_getval('$chr_store_multi_hash_chr_translate____actual_ground_multi_hash_keys___3-12',
10598 H),
10599 delete_ht(H, k(C, I), F)
10600 ),
10601 nb_getval('$chr_store_multi_hash_chr_translate____actual_ground_multi_hash_keys___3-1',
10602 J),
10603 delete_ht(J, C, F)
10604 ),
10605 ( arg(2, K, L),
10606 setarg(2, K, active),
10607 ( L==not_stored_yet
10608 -> nb_getval('$chr_store_multi_hash_chr_translate____validate_store_type_assumption___1-1',
10609 M),
10610 insert_ht(M, C, K)
10611 ; true
10612 )
10613 ),
10614 ( ( I=[N],
10615 get_constraint_arg_type(C, N, O),
10616 O=chr_enum(P)
10617 -> R=complete
10618 ; P=Q,
10619 R=incomplete
10620 ),
10621 selectchk(multi_hash([I]), S, T),
10622 actual_store_types(C,
10623
10624 [ ground_constants(I, P, R)
10625 | T
10626 ])
10627 ),
10628 ( K=suspension(_, active, _)
10629 -> setarg(2, K, inactive),
10630 validate_store_type_assumption___1__1__0__2(U,
10631 C,
10632 K)
10633 ; true
10634 )
10635 ; validate_store_type_assumption___1__1__0__2(U, C, K)
10636 ).
10637validate_store_type_assumption___1__1(A, B) :-
10638 validate_store_type_assumption___1__2(A, B).
10639validate_store_type_assumption___1__2(B, D) :-
10640 nb_getval('$chr_store_multi_hash_chr_translate____actual_store_types___2-1',
10641 A),
10642 lookup_ht(A, B, C),
10643 !,
10644 validate_store_type_assumption___1__2__0__3(C, B, D).
10645validate_store_type_assumption___1__2__0__3([], A, B) :-
10646 validate_store_type_assumption___1__3(A, B).
10647validate_store_type_assumption___1__2__0__3([A|N], C, I) :-
10648 ( ( A=suspension(_, active, B, D),
10649 B==C
10650 ),
10651 memberchk(multi_hash([[E]]), D),
10652 get_constraint_type(C, F),
10653 nth1(E, F, G),
10654 enumerated_atomic_type(G, L)
10655 -> ( setarg(2, A, removed),
10656 nb_getval('$chr_store_multi_hash_chr_translate____actual_store_types___2-1',
10657 H),
10658 delete_ht(H, C, A)
10659 ),
10660 ( arg(2, I, J),
10661 setarg(2, I, active),
10662 ( J==not_stored_yet
10663 -> nb_getval('$chr_store_multi_hash_chr_translate____validate_store_type_assumption___1-1',
10664 K),
10665 insert_ht(K, C, I)
10666 ; true
10667 )
10668 ),
10669 ( selectchk(multi_hash([[E]]), D, M),
10670 actual_store_types(C,
10671
10672 [ atomic_constants([E], L, complete)
10673 | M
10674 ])
10675 ),
10676 ( I=suspension(_, active, _)
10677 -> setarg(2, I, inactive),
10678 validate_store_type_assumption___1__2__0__3(N,
10679 C,
10680 I)
10681 ; true
10682 )
10683 ; validate_store_type_assumption___1__2__0__3(N, C, I)
10684 ).
10685validate_store_type_assumption___1__2(A, B) :-
10686 validate_store_type_assumption___1__3(A, B).
10687validate_store_type_assumption___1__3(B, D) :-
10688 nb_getval('$chr_store_multi_hash_chr_translate____actual_store_types___2-1',
10689 A),
10690 lookup_ht(A, B, C),
10691 !,
10692 validate_store_type_assumption___1__3__0__4(C, B, D).
10693validate_store_type_assumption___1__3__0__4([], A, B) :-
10694 validate_store_type_assumption___1__4(A, B).
10695validate_store_type_assumption___1__3__0__4([A|M], C, H) :-
10696 ( ( A=suspension(_, active, B, D),
10697 B==C
10698 ),
10699 memberchk(multi_hash([[E]]), D),
10700 get_constraint_arg_type(C, E, F),
10701 F=chr_enum(K)
10702 -> ( setarg(2, A, removed),
10703 nb_getval('$chr_store_multi_hash_chr_translate____actual_store_types___2-1',
10704 G),
10705 delete_ht(G, C, A)
10706 ),
10707 ( arg(2, H, I),
10708 setarg(2, H, active),
10709 ( I==not_stored_yet
10710 -> nb_getval('$chr_store_multi_hash_chr_translate____validate_store_type_assumption___1-1',
10711 J),
10712 insert_ht(J, C, H)
10713 ; true
10714 )
10715 ),
10716 ( selectchk(multi_hash([[E]]), D, L),
10717 actual_store_types(C,
10718
10719 [ ground_constants([E], K, complete)
10720 | L
10721 ])
10722 ),
10723 ( H=suspension(_, active, _)
10724 -> setarg(2, H, inactive),
10725 validate_store_type_assumption___1__3__0__4(M,
10726 C,
10727 H)
10728 ; true
10729 )
10730 ; validate_store_type_assumption___1__3__0__4(M, C, H)
10731 ).
10732validate_store_type_assumption___1__3(A, B) :-
10733 validate_store_type_assumption___1__4(A, B).
10734validate_store_type_assumption___1__4(B, J) :-
10735 ( nb_getval('$chr_store_multi_hash_chr_translate____actual_store_types___2-1',
10736 A),
10737 lookup_ht(A, B, C),
10738 member(D, C),
10739 D=suspension(_, active, _, M)
10740 ),
10741 ( nb_getval('$chr_store_multi_hash_chr_translate____assumed_store_type___2-1',
10742 E),
10743 lookup_ht(E, B, F),
10744 member(G, F),
10745 G=suspension(_, active, _, _),
10746 !,
10747 setarg(2, D, removed),
10748 nb_getval('$chr_store_multi_hash_chr_translate____actual_store_types___2-1',
10749 H),
10750 delete_ht(H, B, D),
10751 setarg(2, G, removed),
10752 nb_getval('$chr_store_multi_hash_chr_translate____assumed_store_type___2-1',
10753 I),
10754 delete_ht(I, B, G),
10755 ( var(J)
10756 -> true
10757 ; arg(2, J, K),
10758 setarg(2, J, removed),
10759 ( K==not_stored_yet
10760 -> true
10761 ; nb_getval('$chr_store_multi_hash_chr_translate____validate_store_type_assumption___1-1',
10762 L),
10763 delete_ht(L, B, J)
10764 )
10765 ),
10766 ( maplist(partial_store, M)
10767 -> N=[global_ground|M]
10768 ; N=M
10769 ),
10770 store_type(B, multi_store(N))
10771 ; nb_getval('$chr_store_multi_hash_chr_translate____store_type___2-1',
10772 O),
10773 lookup_ht(O, B, P),
10774 member(Q, P),
10775 Q=suspension(_, active, _, _),
10776 !,
10777 setarg(2, D, removed),
10778 nb_getval('$chr_store_multi_hash_chr_translate____actual_store_types___2-1',
10779 R),
10780 delete_ht(R, B, D),
10781 setarg(2, Q, removed),
10782 nb_getval('$chr_store_multi_hash_chr_translate____store_type___2-1',
10783 S),
10784 delete_ht(S, B, Q),
10785 ( var(J)
10786 -> true
10787 ; arg(2, J, T),
10788 setarg(2, J, removed),
10789 ( T==not_stored_yet
10790 -> true
10791 ; nb_getval('$chr_store_multi_hash_chr_translate____validate_store_type_assumption___1-1',
10792 U),
10793 delete_ht(U, B, J)
10794 )
10795 ),
10796 store_type(B, multi_store(M))
10797 ).
10798validate_store_type_assumption___1__4(B, F) :-
10799 ( nb_getval('$chr_store_multi_hash_chr_translate____assumed_store_type___2-1',
10800 A),
10801 lookup_ht(A, B, C),
10802 member(D, C),
10803 D=suspension(_, active, _, _)
10804 ),
10805 ( chr_pp_flag(debugable, on),
10806 !,
10807 setarg(2, D, removed),
10808 nb_getval('$chr_store_multi_hash_chr_translate____assumed_store_type___2-1',
10809 E),
10810 delete_ht(E, B, D),
10811 ( var(F)
10812 -> true
10813 ; arg(2, F, G),
10814 setarg(2, F, removed),
10815 ( G==not_stored_yet
10816 -> true
10817 ; nb_getval('$chr_store_multi_hash_chr_translate____validate_store_type_assumption___1-1',
10818 H),
10819 delete_ht(H, B, F)
10820 )
10821 ),
10822 store_type(B, default)
10823 ; !,
10824 setarg(2, D, removed),
10825 nb_getval('$chr_store_multi_hash_chr_translate____assumed_store_type___2-1',
10826 I),
10827 delete_ht(I, B, D),
10828 ( var(F)
10829 -> true
10830 ; arg(2, F, J),
10831 setarg(2, F, removed),
10832 ( J==not_stored_yet
10833 -> true
10834 ; nb_getval('$chr_store_multi_hash_chr_translate____validate_store_type_assumption___1-1',
10835 K),
10836 delete_ht(K, B, F)
10837 )
10838 ),
10839 store_type(B, global_ground)
10840 ).
10841validate_store_type_assumption___1__4(D, A) :-
10842 ( var(A)
10843 -> true
10844 ; arg(2, A, B),
10845 setarg(2, A, removed),
10846 ( B==not_stored_yet
10847 -> true
10848 ; nb_getval('$chr_store_multi_hash_chr_translate____validate_store_type_assumption___1-1',
10849 C),
10850 delete_ht(C, D, A)
10851 )
10852 ).
10853rule_count(C) :-
10854 nb_getval('$chr_store_global_ground_chr_translate____rule_count___1',
10855 A),
10856 ( member(B, A),
10857 B=suspension(_, active, _, _),
10858 !
10859 ; !,
10860 rule_count___1__0__0__2(A, C)
10861 ).
10862rule_count___1__0__0__2([], A) :-
10863 rule_count___1__1(A).
10864rule_count___1__0__0__2([A|F], G) :-
10865 ( A=suspension(_, active, _, _)
10866 -> ( setarg(2, A, removed),
10867 arg(3, A, B),
10868 ( var(B)
10869 -> nb_getval('$chr_store_global_ground_chr_translate____rule_count___1',
10870 C),
10871 C=[_|D],
10872 b_setval('$chr_store_global_ground_chr_translate____rule_count___1',
10873 D),
10874 ( D=[E|_]
10875 -> setarg(3, E, _)
10876 ; true
10877 )
10878 ; B=[_, _|D],
10879 setarg(2, B, D),
10880 ( D=[E|_]
10881 -> setarg(3, E, B)
10882 ; true
10883 )
10884 )
10885 ),
10886 rule_count___1__0__0__2(F, G)
10887 ; rule_count___1__0__0__2(F, G)
10888 ).
10889rule_count(A) :-
10890 rule_count___1__1(A).
10891rule_count___1__1(A) :-
10892 C=suspension(B, active, _, A),
10893 'chr gen_id'(B),
10894 nb_getval('$chr_store_global_ground_chr_translate____rule_count___1',
10895 D),
10896 E=[C|D],
10897 b_setval('$chr_store_global_ground_chr_translate____rule_count___1', E),
10898 ( D=[F|_]
10899 -> setarg(3, F, E)
10900 ; true
10901 ).
10902inc_rule_count(G) :-
10903 nb_getval('$chr_store_global_ground_chr_translate____rule_count___1',
10904 A),
10905 member(B, A),
10906 B=suspension(_, active, _, H),
10907 !,
10908 setarg(2, B, removed),
10909 arg(3, B, C),
10910 ( var(C)
10911 -> nb_getval('$chr_store_global_ground_chr_translate____rule_count___1',
10912 D),
10913 D=[_|E],
10914 b_setval('$chr_store_global_ground_chr_translate____rule_count___1',
10915 E),
10916 ( E=[F|_]
10917 -> setarg(3, F, _)
10918 ; true
10919 )
10920 ; C=[_, _|E],
10921 setarg(2, C, E),
10922 ( E=[F|_]
10923 -> setarg(3, F, C)
10924 ; true
10925 )
10926 ),
10927 G is H+1,
10928 rule_count(G).
10929inc_rule_count(1) :-
10930 rule_count(1).
10931passive(A, B) :-
10932 passive___2__0(A, B, _).
10933passive___2__0(B, C, _) :-
10934 nb_getval('$chr_store_multi_hash_chr_translate____passive___2-12', A),
10935 lookup_ht(A, k(B, C), D),
10936 member(E, D),
10937 E=suspension(_, active, _, _, _),
10938 !.
10939passive___2__0(B, D, C) :-
10940 nb_getval('$chr_store_multi_hash_chr_translate____least_occurrence___2-1',
10941 A),
10942 lookup_ht(A, B, F),
10943 !,
10944 C=suspension(E, not_stored_yet, t, B, D),
10945 'chr gen_id'(E),
10946 passive___2__0__0__6(F, B, D, C).
10947passive___2__0__0__6([], A, B, C) :-
10948 passive___2__1(A, B, C).
10949passive___2__0__0__6([A|Q], C, F, M) :-
10950 ( ( A=suspension(_, active, B, D),
10951 B==C,
10952 D=[E|K],
10953 E==F
10954 ),
10955 ( ground(C),
10956 nb_getval('$chr_store_multi_hash_chr_translate____rule___2-1', G),
10957 lookup_ht(G, C, H)
10958 ),
10959 member(I, H),
10960 I=suspension(_, active, _, _, _, _)
10961 -> ( setarg(2, A, removed),
10962 ( nb_getval('$chr_store_multi_hash_chr_translate____least_occurrence___2-12',
10963 J),
10964 delete_ht(J, k(C, [F|K]), A)
10965 ),
10966 nb_getval('$chr_store_multi_hash_chr_translate____least_occurrence___2-1',
10967 L),
10968 delete_ht(L, C, A)
10969 ),
10970 ( arg(2, M, N),
10971 setarg(2, M, active),
10972 ( N==not_stored_yet
10973 -> ( nb_getval('$chr_store_multi_hash_chr_translate____passive___2-1',
10974 O),
10975 insert_ht(O, C, M)
10976 ),
10977 nb_getval('$chr_store_multi_hash_chr_translate____passive___2-12',
10978 P),
10979 insert_ht(P, k(C, F), M)
10980 ; true
10981 )
10982 ),
10983 least_occurrence(C, K),
10984 ( M=suspension(_, active, _, _, _)
10985 -> setarg(2, M, inactive),
10986 passive___2__0__0__6(Q, C, F, M)
10987 ; true
10988 )
10989 ; passive___2__0__0__6(Q, C, F, M)
10990 ).
10991passive___2__0(B, C, A) :-
10992 A=suspension(D, not_stored_yet, t, B, C),
10993 'chr gen_id'(D),
10994 passive___2__1(B, C, A).
10995passive___2__1(B, C, E) :-
10996 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-34',
10997 A),
10998 lookup_ht(A, k(B, C), D),
10999 !,
11000 passive___2__1__0__8(D, B, C, E).
11001passive___2__1__0__8([], A, B, C) :-
11002 passive___2__2(A, B, C).
11003passive___2__1__0__8([A|J], C, E, K) :-
11004 ( ( A=suspension(_, active, _, _, G, I, B, D, _),
11005 B==C,
11006 D==E
11007 ),
11008 nb_getval('$chr_store_multi_hash_chr_translate____stored_complete___3-1',
11009 F),
11010 lookup_ht(F, G, H)
11011 -> passive___2__1__1__8(H,
11012 G,
11013 I,
11014 A,
11015 J,
11016 C,
11017 E,
11018 K)
11019 ; passive___2__1__0__8(J, C, E, K)
11020 ).
11021passive___2__1__1__8([], _, _, _, A, B, C, D) :-
11022 passive___2__1__0__8(A, B, C, D).
11023passive___2__1__1__8([A|U], C, D, V, W, Q, S, N) :-
11024 ( ( A=suspension(_, active, _, B, E, J),
11025 B==C
11026 ),
11027 D<E,
11028 ( ( ground(C),
11029 ground(D)
11030 ),
11031 nb_getval('$chr_store_multi_hash_chr_translate____stored___3-123',
11032 F),
11033 lookup_ht(F, k(C, D, yes), G)
11034 ),
11035 member(H, G),
11036 H=suspension(_, active, _, _, _)
11037 -> ( ( setarg(2, A, removed),
11038 ( nb_getval('$chr_store_multi_hash_chr_translate____stored_complete___3-13',
11039 I),
11040 delete_ht(I, k(C, J), A)
11041 ),
11042 nb_getval('$chr_store_multi_hash_chr_translate____stored_complete___3-1',
11043 K),
11044 delete_ht(K, C, A)
11045 ),
11046 setarg(2, H, removed),
11047 ( nb_getval('$chr_store_multi_hash_chr_translate____stored___3-13',
11048 L),
11049 delete_ht(L, k(C, yes), H)
11050 ),
11051 nb_getval('$chr_store_multi_hash_chr_translate____stored___3-123',
11052 M),
11053 delete_ht(M, k(C, D, yes), H)
11054 ),
11055 ( arg(2, N, O),
11056 setarg(2, N, active),
11057 ( O==not_stored_yet
11058 -> ( nb_getval('$chr_store_multi_hash_chr_translate____passive___2-1',
11059 P),
11060 insert_ht(P, Q, N)
11061 ),
11062 nb_getval('$chr_store_multi_hash_chr_translate____passive___2-12',
11063 R),
11064 insert_ht(R, k(Q, S), N)
11065 ; true
11066 )
11067 ),
11068 ( T is J-1,
11069 stored(C, D, maybe),
11070 stored_complete(C, E, T)
11071 ),
11072 ( N=suspension(_, active, _, _, _)
11073 -> setarg(2, N, inactive),
11074 passive___2__1__1__8(U,
11075 C,
11076 D,
11077 V,
11078 W,
11079 Q,
11080 S,
11081 N)
11082 ; true
11083 )
11084 ; passive___2__1__1__8(U,
11085 C,
11086 D,
11087 V,
11088 W,
11089 Q,
11090 S,
11091 N)
11092 ).
11093passive___2__1(A, B, C) :-
11094 passive___2__2(A, B, C).
11095passive___2__2(B, D, E) :-
11096 nb_getval('$chr_store_multi_hash_chr_translate____rule___2-1', A),
11097 lookup_ht(A, B, C),
11098 !,
11099 passive___2__2__0__9(C, B, D, E).
11100passive___2__2__0__9([], A, B, C) :-
11101 passive___2__3(A, B, C).
11102passive___2__2__0__9([A|N], C, G, D) :-
11103 ( A=suspension(_, active, _, _, B, F),
11104 B==C,
11105 ( E=t(251, A, D),
11106 '$novel_production'(A, E),
11107 '$novel_production'(D, E)
11108 ),
11109 F=pragma(rule(_, _, _, _), ids([G|K], L), _, _, C)
11110 -> '$extend_history'(D, E),
11111 ( arg(2, D, H),
11112 setarg(2, D, active),
11113 ( H==not_stored_yet
11114 -> ( nb_getval('$chr_store_multi_hash_chr_translate____passive___2-1',
11115 I),
11116 insert_ht(I, C, D)
11117 ),
11118 nb_getval('$chr_store_multi_hash_chr_translate____passive___2-12',
11119 J),
11120 insert_ht(J, k(C, G), D)
11121 ; true
11122 )
11123 ),
11124 ( append(K, L, M),
11125 check_all_passive(C, M)
11126 ),
11127 ( D=suspension(_, active, _, _, _)
11128 -> setarg(2, D, inactive),
11129 passive___2__2__0__9(N, C, G, D)
11130 ; true
11131 )
11132 ; passive___2__2__0__9(N, C, G, D)
11133 ).
11134passive___2__2(A, B, C) :-
11135 passive___2__3(A, B, C).
11136passive___2__3(B, D, E) :-
11137 nb_getval('$chr_store_multi_hash_chr_translate____rule___2-1', A),
11138 lookup_ht(A, B, C),
11139 !,
11140 passive___2__3__0__10(C, B, D, E).
11141passive___2__3__0__10([], A, B, C) :-
11142 passive___2__4(A, B, C).
11143passive___2__3__0__10([A|L], C, G, D) :-
11144 ( A=suspension(_, active, _, _, B, F),
11145 B==C,
11146 ( E=t(252, A, D),
11147 '$novel_production'(A, E),
11148 '$novel_production'(D, E)
11149 ),
11150 F=pragma(rule(_, _, _, _), ids([], [G|K]), _, _, C)
11151 -> '$extend_history'(D, E),
11152 ( arg(2, D, H),
11153 setarg(2, D, active),
11154 ( H==not_stored_yet
11155 -> ( nb_getval('$chr_store_multi_hash_chr_translate____passive___2-1',
11156 I),
11157 insert_ht(I, C, D)
11158 ),
11159 nb_getval('$chr_store_multi_hash_chr_translate____passive___2-12',
11160 J),
11161 insert_ht(J, k(C, G), D)
11162 ; true
11163 )
11164 ),
11165 check_all_passive(C, K),
11166 ( D=suspension(_, active, _, _, _)
11167 -> setarg(2, D, inactive),
11168 passive___2__3__0__10(L, C, G, D)
11169 ; true
11170 )
11171 ; passive___2__3__0__10(L, C, G, D)
11172 ).
11173passive___2__3(A, B, C) :-
11174 passive___2__4(A, B, C).
11175passive___2__4(B, D, E) :-
11176 nb_getval('$chr_store_multi_hash_chr_translate____check_all_passive___2-1',
11177 A),
11178 lookup_ht(A, B, C),
11179 !,
11180 passive___2__4__0__11(C, B, D, E).
11181passive___2__4__0__11([], A, B, C) :-
11182 passive___2__5(A, B, C).
11183passive___2__4__0__11([A|N], C, F, J) :-
11184 ( A=suspension(_, active, B, D),
11185 B==C,
11186 D=[E|H],
11187 E==F
11188 -> ( setarg(2, A, removed),
11189 ( nb_getval('$chr_store_multi_hash_chr_translate____check_all_passive___2-12',
11190 G),
11191 delete_ht(G, k(C, [F|H]), A)
11192 ),
11193 nb_getval('$chr_store_multi_hash_chr_translate____check_all_passive___2-1',
11194 I),
11195 delete_ht(I, C, A)
11196 ),
11197 ( arg(2, J, K),
11198 setarg(2, J, active),
11199 ( K==not_stored_yet
11200 -> ( nb_getval('$chr_store_multi_hash_chr_translate____passive___2-1',
11201 L),
11202 insert_ht(L, C, J)
11203 ),
11204 nb_getval('$chr_store_multi_hash_chr_translate____passive___2-12',
11205 M),
11206 insert_ht(M, k(C, F), J)
11207 ; true
11208 )
11209 ),
11210 check_all_passive(C, H),
11211 ( J=suspension(_, active, _, _, _)
11212 -> setarg(2, J, inactive),
11213 passive___2__4__0__11(N, C, F, J)
11214 ; true
11215 )
11216 ; passive___2__4__0__11(N, C, F, J)
11217 ).
11218passive___2__4(A, B, C) :-
11219 passive___2__5(A, B, C).
11220passive___2__5(B, C, E) :-
11221 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-34',
11222 A),
11223 lookup_ht(A, k(B, C), D),
11224 !,
11225 passive___2__5__0__14(D, B, C, E).
11226passive___2__5__0__14([], A, B, C) :-
11227 passive___2__6(A, B, C).
11228passive___2__5__0__14([A|J], C, E, K) :-
11229 ( ( A=suspension(_, active, _, _, G, H, B, D, _),
11230 B==C,
11231 D==E
11232 ),
11233 nb_getval('$chr_store_multi_hash_chr_translate____skip_to_next_id___2-12',
11234 F),
11235 lookup_ht(F, k(G, H), I)
11236 -> passive___2__5__1__14(I,
11237 G,
11238 H,
11239 A,
11240 J,
11241 C,
11242 E,
11243 K)
11244 ; passive___2__5__0__14(J, C, E, K)
11245 ).
11246passive___2__5__1__14([], _, _, _, A, B, C, D) :-
11247 passive___2__5__0__14(A, B, C, D).
11248passive___2__5__1__14([A|O], C, E, F, P, K, M, G) :-
11249 ( A=suspension(_, active, _, B, D),
11250 ( B==C,
11251 D==E
11252 ),
11253 ( H=t(362, F, G, A),
11254 '$novel_production'(F, H),
11255 '$novel_production'(G, H),
11256 '$novel_production'(A, H)
11257 ),
11258 E>1
11259 -> '$extend_history'(G, H),
11260 ( arg(2, G, I),
11261 setarg(2, G, active),
11262 ( I==not_stored_yet
11263 -> ( nb_getval('$chr_store_multi_hash_chr_translate____passive___2-1',
11264 J),
11265 insert_ht(J, K, G)
11266 ),
11267 nb_getval('$chr_store_multi_hash_chr_translate____passive___2-12',
11268 L),
11269 insert_ht(L, k(K, M), G)
11270 ; true
11271 )
11272 ),
11273 ( N is E-1,
11274 skip_to_next_id(C, N)
11275 ),
11276 ( G=suspension(_, active, _, _, _)
11277 -> setarg(2, G, inactive),
11278 passive___2__5__1__14(O,
11279 C,
11280 E,
11281 F,
11282 P,
11283 K,
11284 M,
11285 G)
11286 ; true
11287 )
11288 ; passive___2__5__1__14(O,
11289 C,
11290 E,
11291 F,
11292 P,
11293 K,
11294 M,
11295 G)
11296 ).
11297passive___2__5(A, B, C) :-
11298 passive___2__6(A, B, C).
11299passive___2__6(B, C, E) :-
11300 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-34',
11301 A),
11302 lookup_ht(A, k(B, C), D),
11303 !,
11304 passive___2__6__0__15(D, B, C, E).
11305passive___2__6__0__15([], A, B, C) :-
11306 passive___2__7(A, B, C).
11307passive___2__6__0__15([A|J], C, E, K) :-
11308 ( ( A=suspension(_, active, _, _, G, H, B, D, _),
11309 B==C,
11310 D==E
11311 ),
11312 nb_getval('$chr_store_multi_hash_chr_translate____set_occurrence_code_id___3-12',
11313 F),
11314 lookup_ht(F, k(G, H), I)
11315 -> passive___2__6__1__15(I,
11316 G,
11317 H,
11318 A,
11319 J,
11320 C,
11321 E,
11322 K)
11323 ; passive___2__6__0__15(J, C, E, K)
11324 ).
11325passive___2__6__1__15([], _, _, _, A, B, C, D) :-
11326 passive___2__6__0__15(A, B, C, D).
11327passive___2__6__1__15([A|O], C, E, P, Q, J, L, G) :-
11328 ( A=suspension(_, active, B, D, M),
11329 B==C,
11330 D==E
11331 -> ( setarg(2, A, removed),
11332 nb_getval('$chr_store_multi_hash_chr_translate____set_occurrence_code_id___3-12',
11333 F),
11334 delete_ht(F, k(C, E), A)
11335 ),
11336 ( arg(2, G, H),
11337 setarg(2, G, active),
11338 ( H==not_stored_yet
11339 -> ( nb_getval('$chr_store_multi_hash_chr_translate____passive___2-1',
11340 I),
11341 insert_ht(I, J, G)
11342 ),
11343 nb_getval('$chr_store_multi_hash_chr_translate____passive___2-12',
11344 K),
11345 insert_ht(K, k(J, L), G)
11346 ; true
11347 )
11348 ),
11349 ( occurrence_code_id(C, E, M),
11350 N is E+1,
11351 set_occurrence_code_id(C, N, M)
11352 ),
11353 ( G=suspension(_, active, _, _, _)
11354 -> setarg(2, G, inactive),
11355 passive___2__6__1__15(O,
11356 C,
11357 E,
11358 P,
11359 Q,
11360 J,
11361 L,
11362 G)
11363 ; true
11364 )
11365 ; passive___2__6__1__15(O,
11366 C,
11367 E,
11368 P,
11369 Q,
11370 J,
11371 L,
11372 G)
11373 ).
11374passive___2__6(A, B, C) :-
11375 passive___2__7(A, B, C).
11376passive___2__7(D, F, A) :-
11377 arg(2, A, B),
11378 setarg(2, A, active),
11379 ( B==not_stored_yet
11380 -> ( nb_getval('$chr_store_multi_hash_chr_translate____passive___2-1',
11381 C),
11382 insert_ht(C, D, A)
11383 ),
11384 nb_getval('$chr_store_multi_hash_chr_translate____passive___2-12',
11385 E),
11386 insert_ht(E, k(D, F), A)
11387 ; true
11388 ).
11389is_passive(B, C) :-
11390 nb_getval('$chr_store_multi_hash_chr_translate____passive___2-12', A),
11391 lookup_ht(A, k(B, C), D),
11392 member(E, D),
11393 E=suspension(_, active, _, _, _),
11394 !.
11395is_passive(_, _) :-
11396 fail.
11397any_passive_head(B) :-
11398 nb_getval('$chr_store_multi_hash_chr_translate____passive___2-1', A),
11399 lookup_ht(A, B, C),
11400 member(D, C),
11401 D=suspension(_, active, _, _, _),
11402 !.
11403any_passive_head(_) :-
11404 fail.
11405new_occurrence(B, H, I, J) :-
11406 nb_getval('$chr_store_multi_hash_chr_translate____max_occurrence___2-1',
11407 A),
11408 lookup_ht(A, B, C),
11409 member(D, C),
11410 D=suspension(_, active, _, _, F),
11411 !,
11412 setarg(2, D, removed),
11413 nb_getval('$chr_store_multi_hash_chr_translate____max_occurrence___2-1',
11414 E),
11415 delete_ht(E, B, D),
11416 G is F+1,
11417 occurrence(B, G, H, I, J),
11418 max_occurrence(B, G).
11419new_occurrence(A, B, _, _) :-
11420 chr_error(internal,
11421 'new_occurrence: missing max_occurrence for ~w in rule ~w\n',
11422 [A, B]).
11423occurrence(A, B, C, D, E) :-
11424 occurrence___5__0(A, B, C, D, E, _).
11425occurrence___5__0(D, E, B, F, G, C) :-
11426 nb_getval('$chr_store_multi_hash_chr_translate____rule___2-1', A),
11427 lookup_ht(A, B, I),
11428 !,
11429 C=suspension(H, not_stored_yet, t, _, D, E, B, F, G),
11430 'chr gen_id'(H),
11431 occurrence___5__0__0__4(I,
11432 D,
11433 E,
11434 B,
11435 F,
11436 G,
11437 C).
11438occurrence___5__0__0__4([], A, B, C, D, E, F) :-
11439 occurrence___5__1(A, B, C, D, E, F).
11440occurrence___5__0__0__4([A|I], E, F, C, J, K, L) :-
11441 ( ( A=suspension(_, active, _, _, B, H),
11442 B==C
11443 ),
11444 nb_getval('$chr_store_multi_hash_chr_translate____allocation_occurrence___2-12',
11445 D),
11446 lookup_ht(D, k(E, F), G)
11447 -> occurrence___5__0__1__4(G,
11448 H,
11449 A,
11450 I,
11451 E,
11452 F,
11453 C,
11454 J,
11455 K,
11456 L)
11457 ; occurrence___5__0__0__4(I,
11458 E,
11459 F,
11460 C,
11461 J,
11462 K,
11463 L)
11464 ).
11465occurrence___5__0__1__4([], _, _, A, B, C, D, E, F, G) :-
11466 occurrence___5__0__0__4(A,
11467 B,
11468 C,
11469 D,
11470 E,
11471 F,
11472 G).
11473occurrence___5__0__1__4([A|Y], X, F, Z, C, E, Q, R, K, G) :-
11474 ( A=suspension(_, active, _, B, D),
11475 ( B==C,
11476 D==E
11477 ),
11478 H=t(60, F, G, A),
11479 '$novel_production'(F, H),
11480 '$novel_production'(G, H),
11481 '$novel_production'(A, H)
11482 -> '$extend_history'(G, H),
11483 ( arg(2, G, I),
11484 setarg(2, G, active),
11485 ( I==not_stored_yet
11486 -> ( nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-15',
11487 J),
11488 insert_ht(J, k(C, K), G)
11489 ),
11490 ( nb_getval('$chr_store_global_ground_chr_translate____occurrence___5',
11491 L),
11492 M=[G|L],
11493 b_setval('$chr_store_global_ground_chr_translate____occurrence___5',
11494 M),
11495 ( L=[N|_]
11496 -> setarg(4, N, M)
11497 ; true
11498 )
11499 ),
11500 ( nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-125',
11501 O),
11502 insert_ht(O, k(C, E, K), G)
11503 ),
11504 ( nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-134',
11505 P),
11506 insert_ht(P, k(C, Q, R), G)
11507 ),
11508 ( nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-12',
11509 S),
11510 insert_ht(S, k(C, E), G)
11511 ),
11512 ( nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-3',
11513 T),
11514 insert_ht(T, Q, G)
11515 ),
11516 ( nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-13',
11517 U),
11518 insert_ht(U, k(C, Q), G)
11519 ),
11520 ( nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-34',
11521 V),
11522 insert_ht(V, k(Q, R), G)
11523 ),
11524 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-1',
11525 W),
11526 insert_ht(W, C, G)
11527 ; true
11528 )
11529 ),
11530 ( \+ is_passive(Q, R),
11531 K==propagation,
11532 ( stored_in_guard_before_next_kept_occurrence(C, E)
11533 -> true
11534 ; X=pragma(rule([_|_], _, _, _), _, _, _, _)
11535 -> is_observed(C, E)
11536 ; is_least_occurrence(Q)
11537 -> is_observed(C, E)
11538 ; true
11539 )
11540 ),
11541 ( G=suspension(_, active, _, _, _, _, _, _, _)
11542 -> setarg(2, G, inactive),
11543 occurrence___5__0__1__4(Y,
11544 X,
11545 F,
11546 Z,
11547 C,
11548 E,
11549 Q,
11550 R,
11551 K,
11552 G)
11553 ; true
11554 )
11555 ; occurrence___5__0__1__4(Y,
11556 X,
11557 F,
11558 Z,
11559 C,
11560 E,
11561 Q,
11562 R,
11563 K,
11564 G)
11565 ).
11566occurrence___5__0(B, C, D, E, F, A) :-
11567 A=suspension(G, not_stored_yet, t, _, B, C, D, E, F),
11568 'chr gen_id'(G),
11569 occurrence___5__1(B, C, D, E, F, A).
11570occurrence___5__1(D, E, B, F, G, H) :-
11571 nb_getval('$chr_store_multi_hash_chr_translate____least_occurrence___2-1',
11572 A),
11573 lookup_ht(A, B, C),
11574 !,
11575 occurrence___5__1__0__7(C,
11576 D,
11577 E,
11578 B,
11579 F,
11580 G,
11581 H).
11582occurrence___5__1__0__7([], A, B, C, D, E, F) :-
11583 occurrence___5__2(A, B, C, D, E, F).
11584occurrence___5__1__0__7([A|G1], G, L, C, F, V, S) :-
11585 ( ( A=suspension(_, active, B, D),
11586 B==C,
11587 D=[E|Q],
11588 E==F
11589 ),
11590 ( ( ground(G),
11591 nb_getval('$chr_store_multi_hash_chr_translate____allocation_occurrence___2-1',
11592 H),
11593 lookup_ht(H, G, I)
11594 ),
11595 member(J, I),
11596 J=suspension(_, active, _, _, K)
11597 ),
11598 K>=L,
11599 ( ( ground(C),
11600 nb_getval('$chr_store_multi_hash_chr_translate____rule___2-1',
11601 M),
11602 lookup_ht(M, C, N)
11603 ),
11604 member(O, N),
11605 O=suspension(_, active, _, _, _, _)
11606 ),
11607 \+ may_trigger(G)
11608 -> ( setarg(2, A, removed),
11609 ( nb_getval('$chr_store_multi_hash_chr_translate____least_occurrence___2-12',
11610 P),
11611 delete_ht(P, k(C, [F|Q]), A)
11612 ),
11613 nb_getval('$chr_store_multi_hash_chr_translate____least_occurrence___2-1',
11614 R),
11615 delete_ht(R, C, A)
11616 ),
11617 ( arg(2, S, T),
11618 setarg(2, S, active),
11619 ( T==not_stored_yet
11620 -> ( nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-15',
11621 U),
11622 insert_ht(U, k(G, V), S)
11623 ),
11624 ( nb_getval('$chr_store_global_ground_chr_translate____occurrence___5',
11625 W),
11626 X=[S|W],
11627 b_setval('$chr_store_global_ground_chr_translate____occurrence___5',
11628 X),
11629 ( W=[Y|_]
11630 -> setarg(4, Y, X)
11631 ; true
11632 )
11633 ),
11634 ( nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-125',
11635 Z),
11636 insert_ht(Z, k(G, L, V), S)
11637 ),
11638 ( nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-134',
11639 A1),
11640 insert_ht(A1, k(G, C, F), S)
11641 ),
11642 ( nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-12',
11643 B1),
11644 insert_ht(B1, k(G, L), S)
11645 ),
11646 ( nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-3',
11647 C1),
11648 insert_ht(C1, C, S)
11649 ),
11650 ( nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-13',
11651 D1),
11652 insert_ht(D1, k(G, C), S)
11653 ),
11654 ( nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-34',
11655 E1),
11656 insert_ht(E1, k(C, F), S)
11657 ),
11658 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-1',
11659 F1),
11660 insert_ht(F1, G, S)
11661 ; true
11662 )
11663 ),
11664 least_occurrence(C, Q),
11665 ( S=suspension(_, active, _, _, _, _, _, _, _)
11666 -> setarg(2, S, inactive),
11667 occurrence___5__1__0__7(G1,
11668 G,
11669 L,
11670 C,
11671 F,
11672 V,
11673 S)
11674 ; true
11675 )
11676 ; occurrence___5__1__0__7(G1,
11677 G,
11678 L,
11679 C,
11680 F,
11681 V,
11682 S)
11683 ).
11684occurrence___5__1(A, B, C, D, E, F) :-
11685 occurrence___5__2(A, B, C, D, E, F).
11686occurrence___5__2(D, E, B, F, G, H) :-
11687 nb_getval('$chr_store_multi_hash_chr_translate____set_all_passive___1-1',
11688 A),
11689 lookup_ht(A, B, C),
11690 !,
11691 occurrence___5__2__0__29(C,
11692 D,
11693 E,
11694 B,
11695 F,
11696 G,
11697 H).
11698occurrence___5__2__0__29([], A, B, C, D, E, F) :-
11699 occurrence___5__3(A, B, C, D, E, F).
11700occurrence___5__2__0__29([A|V], H, N, C, P, I, D) :-
11701 ( A=suspension(_, active, _, B),
11702 B==C,
11703 E=t(180, A, D),
11704 '$novel_production'(A, E),
11705 '$novel_production'(D, E)
11706 -> '$extend_history'(D, E),
11707 ( arg(2, D, F),
11708 setarg(2, D, active),
11709 ( F==not_stored_yet
11710 -> ( nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-15',
11711 G),
11712 insert_ht(G, k(H, I), D)
11713 ),
11714 ( nb_getval('$chr_store_global_ground_chr_translate____occurrence___5',
11715 J),
11716 K=[D|J],
11717 b_setval('$chr_store_global_ground_chr_translate____occurrence___5',
11718 K),
11719 ( J=[L|_]
11720 -> setarg(4, L, K)
11721 ; true
11722 )
11723 ),
11724 ( nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-125',
11725 M),
11726 insert_ht(M, k(H, N, I), D)
11727 ),
11728 ( nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-134',
11729 O),
11730 insert_ht(O, k(H, C, P), D)
11731 ),
11732 ( nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-12',
11733 Q),
11734 insert_ht(Q, k(H, N), D)
11735 ),
11736 ( nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-3',
11737 R),
11738 insert_ht(R, C, D)
11739 ),
11740 ( nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-13',
11741 S),
11742 insert_ht(S, k(H, C), D)
11743 ),
11744 ( nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-34',
11745 T),
11746 insert_ht(T, k(C, P), D)
11747 ),
11748 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-1',
11749 U),
11750 insert_ht(U, H, D)
11751 ; true
11752 )
11753 ),
11754 passive(C, P),
11755 ( D=suspension(_, active, _, _, _, _, _, _, _)
11756 -> setarg(2, D, inactive),
11757 occurrence___5__2__0__29(V,
11758 H,
11759 N,
11760 C,
11761 P,
11762 I,
11763 D)
11764 ; true
11765 )
11766 ; occurrence___5__2__0__29(V,
11767 H,
11768 N,
11769 C,
11770 P,
11771 I,
11772 D)
11773 ).
11774occurrence___5__2(A, B, C, D, E, F) :-
11775 occurrence___5__3(A, B, C, D, E, F).
11776occurrence___5__3(D, E, B, F, G, H) :-
11777 nb_getval('$chr_store_multi_hash_chr_translate____rule___2-1', A),
11778 lookup_ht(A, B, C),
11779 !,
11780 occurrence___5__3__0__30(C,
11781 D,
11782 E,
11783 B,
11784 F,
11785 G,
11786 H).
11787occurrence___5__3__0__30([], A, B, C, D, E, F) :-
11788 occurrence___5__4(A, B, C, D, E, F).
11789occurrence___5__3__0__30([A|H], E, I, C, J, K, L) :-
11790 ( ( A=suspension(_, active, _, _, B, G),
11791 B==C
11792 ),
11793 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-13',
11794 D),
11795 lookup_ht(D, k(E, C), F)
11796 -> occurrence___5__3__1__30(F,
11797 G,
11798 A,
11799 H,
11800 E,
11801 I,
11802 C,
11803 J,
11804 K,
11805 L)
11806 ; occurrence___5__3__0__30(H,
11807 E,
11808 I,
11809 C,
11810 J,
11811 K,
11812 L)
11813 ).
11814occurrence___5__3__1__30([], _, _, A, B, C, D, E, F, G) :-
11815 occurrence___5__3__0__30(A,
11816 B,
11817 C,
11818 D,
11819 E,
11820 F,
11821 G).
11822occurrence___5__3__1__30([A|I], J, K, L, C, M, E, N, O, P) :-
11823 ( ( A=suspension(_, active, _, _, B, H, D, _, _),
11824 B==C,
11825 D==E
11826 ),
11827 nb_getval('$chr_store_multi_hash_chr_translate____prev_guard_list___6-1',
11828 F),
11829 lookup_ht(F, E, G)
11830 -> occurrence___5__3__2__30(G,
11831 H,
11832 A,
11833 I,
11834 J,
11835 K,
11836 L,
11837 C,
11838 M,
11839 E,
11840 N,
11841 O,
11842 P)
11843 ; occurrence___5__3__1__30(I,
11844 J,
11845 K,
11846 L,
11847 C,
11848 M,
11849 E,
11850 N,
11851 O,
11852 P)
11853 ).
11854occurrence___5__3__2__30([], _, _, A, B, C, D, E, F, G, H, I, J) :-
11855 occurrence___5__3__1__30(A,
11856 B,
11857 C,
11858 D,
11859 E,
11860 F,
11861 G,
11862 H,
11863 I,
11864 J).
11865occurrence___5__3__2__30([A|E], F, G, H, I, J, K, L, M, C, N, O, P) :-
11866 ( ( A=suspension(_, active, _, _, B, _, _, _, _, _),
11867 B==C
11868 ),
11869 nb_getval('$chr_store_global_ground_chr_translate____multiple_occ_constraints_checked___1',
11870 D)
11871 -> occurrence___5__3__3__30(D,
11872 A,
11873 E,
11874 F,
11875 G,
11876 H,
11877 I,
11878 J,
11879 K,
11880 L,
11881 M,
11882 C,
11883 N,
11884 O,
11885 P)
11886 ; occurrence___5__3__2__30(E,
11887 F,
11888 G,
11889 H,
11890 I,
11891 J,
11892 K,
11893 L,
11894 M,
11895 C,
11896 N,
11897 O,
11898 P)
11899 ).
11900occurrence___5__3__3__30([], _, A, B, C, D, E, F, G, H, I, J, K, L, M) :-
11901 occurrence___5__3__2__30(A,
11902 B,
11903 C,
11904 D,
11905 E,
11906 F,
11907 G,
11908 H,
11909 I,
11910 J,
11911 K,
11912 L,
11913 M).
11914occurrence___5__3__3__30([A|C1], D1, E1, C, F1, G1, D, H1, I1, F, B, U, V, O, L) :-
11915 ( A=suspension(_, active, _, G),
11916 B<C,
11917 chr_pp_flag(occurrence_subsumption, on),
11918 D=pragma(rule(E, _, _, _), _, _, _, _),
11919 E\==[],
11920 \+ tree_set_memberchk(F, G)
11921 -> ( setarg(2, A, removed),
11922 arg(3, A, H),
11923 ( var(H)
11924 -> nb_getval('$chr_store_global_ground_chr_translate____multiple_occ_constraints_checked___1',
11925 I),
11926 I=[_|J],
11927 b_setval('$chr_store_global_ground_chr_translate____multiple_occ_constraints_checked___1',
11928 J),
11929 ( J=[K|_]
11930 -> setarg(3, K, _)
11931 ; true
11932 )
11933 ; H=[_, _|J],
11934 setarg(2, H, J),
11935 ( J=[K|_]
11936 -> setarg(3, K, H)
11937 ; true
11938 )
11939 )
11940 ),
11941 ( arg(2, L, M),
11942 setarg(2, L, active),
11943 ( M==not_stored_yet
11944 -> ( nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-15',
11945 N),
11946 insert_ht(N, k(F, O), L)
11947 ),
11948 ( nb_getval('$chr_store_global_ground_chr_translate____occurrence___5',
11949 P),
11950 Q=[L|P],
11951 b_setval('$chr_store_global_ground_chr_translate____occurrence___5',
11952 Q),
11953 ( P=[R|_]
11954 -> setarg(4, R, Q)
11955 ; true
11956 )
11957 ),
11958 ( nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-125',
11959 S),
11960 insert_ht(S, k(F, B, O), L)
11961 ),
11962 ( nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-134',
11963 T),
11964 insert_ht(T, k(F, U, V), L)
11965 ),
11966 ( nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-12',
11967 W),
11968 insert_ht(W, k(F, B), L)
11969 ),
11970 ( nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-3',
11971 X),
11972 insert_ht(X, U, L)
11973 ),
11974 ( nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-13',
11975 Y),
11976 insert_ht(Y, k(F, U), L)
11977 ),
11978 ( nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-34',
11979 Z),
11980 insert_ht(Z, k(U, V), L)
11981 ),
11982 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-1',
11983 A1),
11984 insert_ht(A1, F, L)
11985 ; true
11986 )
11987 ),
11988 ( first_occ_in_rule(U, F, B, V),
11989 tree_set_add(G, F, B1),
11990 multiple_occ_constraints_checked(B1)
11991 ),
11992 ( L=suspension(_, active, _, _, _, _, _, _, _)
11993 -> setarg(2, L, inactive),
11994 occurrence___5__3__3__30(C1,
11995 D1,
11996 E1,
11997 C,
11998 F1,
11999 G1,
12000 D,
12001 H1,
12002 I1,
12003 F,
12004 B,
12005 U,
12006 V,
12007 O,
12008 L)
12009 ; true
12010 )
12011 ; occurrence___5__3__3__30(C1,
12012 D1,
12013 E1,
12014 C,
12015 F1,
12016 G1,
12017 D,
12018 H1,
12019 I1,
12020 F,
12021 B,
12022 U,
12023 V,
12024 O,
12025 L)
12026 ).
12027occurrence___5__3(A, B, C, D, E, F) :-
12028 occurrence___5__4(A, B, C, D, E, F).
12029occurrence___5__4(D, E, B, F, G, H) :-
12030 nb_getval('$chr_store_multi_hash_chr_translate____rule___2-1', A),
12031 lookup_ht(A, B, C),
12032 !,
12033 occurrence___5__4__0__31(C,
12034 D,
12035 E,
12036 B,
12037 F,
12038 G,
12039 H).
12040occurrence___5__4__0__31([], A, B, C, D, E, F) :-
12041 occurrence___5__5(A, B, C, D, E, F).
12042occurrence___5__4__0__31([A|H], E, I, C, J, K, L) :-
12043 ( ( A=suspension(_, active, _, _, B, G),
12044 B==C
12045 ),
12046 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-13',
12047 D),
12048 lookup_ht(D, k(E, C), F)
12049 -> occurrence___5__4__1__31(F,
12050 G,
12051 A,
12052 H,
12053 E,
12054 I,
12055 C,
12056 J,
12057 K,
12058 L)
12059 ; occurrence___5__4__0__31(H,
12060 E,
12061 I,
12062 C,
12063 J,
12064 K,
12065 L)
12066 ).
12067occurrence___5__4__1__31([], _, _, A, B, C, D, E, F, G) :-
12068 occurrence___5__4__0__31(A,
12069 B,
12070 C,
12071 D,
12072 E,
12073 F,
12074 G).
12075occurrence___5__4__1__31([A|J], K, L, M, C, N, E, O, P, Q) :-
12076 ( ( A=suspension(_, active, _, _, B, H, D, I, _),
12077 B==C,
12078 D==E
12079 ),
12080 nb_getval('$chr_store_multi_hash_chr_translate____prev_guard_list___6-1',
12081 F),
12082 lookup_ht(F, E, G)
12083 -> occurrence___5__4__2__31(G,
12084 H,
12085 I,
12086 A,
12087 J,
12088 K,
12089 L,
12090 M,
12091 C,
12092 N,
12093 E,
12094 O,
12095 P,
12096 Q)
12097 ; occurrence___5__4__1__31(J,
12098 K,
12099 L,
12100 M,
12101 C,
12102 N,
12103 E,
12104 O,
12105 P,
12106 Q)
12107 ).
12108occurrence___5__4__2__31([], _, _, _, A, B, C, D, E, F, G, H, I, J) :-
12109 occurrence___5__4__1__31(A,
12110 B,
12111 C,
12112 D,
12113 E,
12114 F,
12115 G,
12116 H,
12117 I,
12118 J).
12119occurrence___5__4__2__31([A|E], F, G, H, I, J, K, L, M, N, C, O, P, Q) :-
12120 ( ( A=suspension(_, active, _, _, B, _, _, _, _, _),
12121 B==C
12122 ),
12123 nb_getval('$chr_store_global_ground_chr_translate____multiple_occ_constraints_checked___1',
12124 D)
12125 -> occurrence___5__4__3__31(D,
12126 A,
12127 E,
12128 F,
12129 G,
12130 H,
12131 I,
12132 J,
12133 K,
12134 L,
12135 M,
12136 N,
12137 C,
12138 O,
12139 P,
12140 Q)
12141 ; occurrence___5__4__2__31(E,
12142 F,
12143 G,
12144 H,
12145 I,
12146 J,
12147 K,
12148 L,
12149 M,
12150 N,
12151 C,
12152 O,
12153 P,
12154 Q)
12155 ).
12156occurrence___5__4__3__31([], _, A, B, C, D, E, F, G, H, I, J, K, L, M, N) :-
12157 occurrence___5__4__2__31(A,
12158 B,
12159 C,
12160 D,
12161 E,
12162 F,
12163 G,
12164 H,
12165 I,
12166 J,
12167 K,
12168 L,
12169 M,
12170 N).
12171occurrence___5__4__3__31([A|D1], E1, F1, B, B1, G1, H1, D, I1, J1, F, C, U, V, O, L) :-
12172 ( A=suspension(_, active, _, G),
12173 B<C,
12174 chr_pp_flag(occurrence_subsumption, on),
12175 D=pragma(rule(E, _, _, _), _, _, _, _),
12176 E\==[],
12177 \+ tree_set_memberchk(F, G)
12178 -> ( setarg(2, A, removed),
12179 arg(3, A, H),
12180 ( var(H)
12181 -> nb_getval('$chr_store_global_ground_chr_translate____multiple_occ_constraints_checked___1',
12182 I),
12183 I=[_|J],
12184 b_setval('$chr_store_global_ground_chr_translate____multiple_occ_constraints_checked___1',
12185 J),
12186 ( J=[K|_]
12187 -> setarg(3, K, _)
12188 ; true
12189 )
12190 ; H=[_, _|J],
12191 setarg(2, H, J),
12192 ( J=[K|_]
12193 -> setarg(3, K, H)
12194 ; true
12195 )
12196 )
12197 ),
12198 ( arg(2, L, M),
12199 setarg(2, L, active),
12200 ( M==not_stored_yet
12201 -> ( nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-15',
12202 N),
12203 insert_ht(N, k(F, O), L)
12204 ),
12205 ( nb_getval('$chr_store_global_ground_chr_translate____occurrence___5',
12206 P),
12207 Q=[L|P],
12208 b_setval('$chr_store_global_ground_chr_translate____occurrence___5',
12209 Q),
12210 ( P=[R|_]
12211 -> setarg(4, R, Q)
12212 ; true
12213 )
12214 ),
12215 ( nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-125',
12216 S),
12217 insert_ht(S, k(F, C, O), L)
12218 ),
12219 ( nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-134',
12220 T),
12221 insert_ht(T, k(F, U, V), L)
12222 ),
12223 ( nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-12',
12224 W),
12225 insert_ht(W, k(F, C), L)
12226 ),
12227 ( nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-3',
12228 X),
12229 insert_ht(X, U, L)
12230 ),
12231 ( nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-13',
12232 Y),
12233 insert_ht(Y, k(F, U), L)
12234 ),
12235 ( nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-34',
12236 Z),
12237 insert_ht(Z, k(U, V), L)
12238 ),
12239 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-1',
12240 A1),
12241 insert_ht(A1, F, L)
12242 ; true
12243 )
12244 ),
12245 ( first_occ_in_rule(U, F, B, B1),
12246 tree_set_add(G, F, C1),
12247 multiple_occ_constraints_checked(C1)
12248 ),
12249 ( L=suspension(_, active, _, _, _, _, _, _, _)
12250 -> setarg(2, L, inactive),
12251 occurrence___5__4__3__31(D1,
12252 E1,
12253 F1,
12254 B,
12255 B1,
12256 G1,
12257 H1,
12258 D,
12259 I1,
12260 J1,
12261 F,
12262 C,
12263 U,
12264 V,
12265 O,
12266 L)
12267 ; true
12268 )
12269 ; occurrence___5__4__3__31(D1,
12270 E1,
12271 F1,
12272 B,
12273 B1,
12274 G1,
12275 H1,
12276 D,
12277 I1,
12278 J1,
12279 F,
12280 C,
12281 U,
12282 V,
12283 O,
12284 L)
12285 ).
12286occurrence___5__4(A, B, C, D, E, F) :-
12287 occurrence___5__5(A, B, C, D, E, F).
12288occurrence___5__5(B, C, E, F, G, H) :-
12289 nb_getval('$chr_store_multi_hash_chr_translate____stored___3-123', A),
12290 lookup_ht(A, k(B, C, yes), D),
12291 !,
12292 occurrence___5__5__0__35(D,
12293 B,
12294 C,
12295 E,
12296 F,
12297 G,
12298 H).
12299occurrence___5__5__0__35([], A, B, C, D, E, F) :-
12300 occurrence___5__6(A, B, C, D, E, F).
12301occurrence___5__5__0__35([A|J1], C, E, G, H, X, U) :-
12302 ( ( A=suspension(_, active, B, D, F),
12303 B==C,
12304 D==E,
12305 F=yes
12306 ),
12307 ( ( ( ground(G),
12308 ground(H)
12309 ),
12310 nb_getval('$chr_store_multi_hash_chr_translate____passive___2-12',
12311 I),
12312 lookup_ht(I, k(G, H), J)
12313 ),
12314 member(K, J),
12315 K=suspension(_, active, _, _, _)
12316 ),
12317 ( ( ground(C),
12318 nb_getval('$chr_store_multi_hash_chr_translate____stored_complete___3-1',
12319 L),
12320 lookup_ht(L, C, M)
12321 ),
12322 member(N, M),
12323 N=suspension(_, active, _, _, O, S)
12324 ),
12325 E<O
12326 -> ( ( setarg(2, A, removed),
12327 ( nb_getval('$chr_store_multi_hash_chr_translate____stored___3-13',
12328 P),
12329 delete_ht(P, k(C, yes), A)
12330 ),
12331 nb_getval('$chr_store_multi_hash_chr_translate____stored___3-123',
12332 Q),
12333 delete_ht(Q, k(C, E, yes), A)
12334 ),
12335 setarg(2, N, removed),
12336 ( nb_getval('$chr_store_multi_hash_chr_translate____stored_complete___3-13',
12337 R),
12338 delete_ht(R, k(C, S), N)
12339 ),
12340 nb_getval('$chr_store_multi_hash_chr_translate____stored_complete___3-1',
12341 T),
12342 delete_ht(T, C, N)
12343 ),
12344 ( arg(2, U, V),
12345 setarg(2, U, active),
12346 ( V==not_stored_yet
12347 -> ( nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-15',
12348 W),
12349 insert_ht(W, k(C, X), U)
12350 ),
12351 ( nb_getval('$chr_store_global_ground_chr_translate____occurrence___5',
12352 Y),
12353 Z=[U|Y],
12354 b_setval('$chr_store_global_ground_chr_translate____occurrence___5',
12355 Z),
12356 ( Y=[A1|_]
12357 -> setarg(4, A1, Z)
12358 ; true
12359 )
12360 ),
12361 ( nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-125',
12362 B1),
12363 insert_ht(B1, k(C, E, X), U)
12364 ),
12365 ( nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-134',
12366 C1),
12367 insert_ht(C1, k(C, G, H), U)
12368 ),
12369 ( nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-12',
12370 D1),
12371 insert_ht(D1, k(C, E), U)
12372 ),
12373 ( nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-3',
12374 E1),
12375 insert_ht(E1, G, U)
12376 ),
12377 ( nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-13',
12378 F1),
12379 insert_ht(F1, k(C, G), U)
12380 ),
12381 ( nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-34',
12382 G1),
12383 insert_ht(G1, k(G, H), U)
12384 ),
12385 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-1',
12386 H1),
12387 insert_ht(H1, C, U)
12388 ; true
12389 )
12390 ),
12391 ( I1 is S-1,
12392 stored(C, E, maybe),
12393 stored_complete(C, O, I1)
12394 ),
12395 ( U=suspension(_, active, _, _, _, _, _, _, _)
12396 -> setarg(2, U, inactive),
12397 occurrence___5__5__0__35(J1,
12398 C,
12399 E,
12400 G,
12401 H,
12402 X,
12403 U)
12404 ; true
12405 )
12406 ; occurrence___5__5__0__35(J1,
12407 C,
12408 E,
12409 G,
12410 H,
12411 X,
12412 U)
12413 ).
12414occurrence___5__5(A, B, C, D, E, F) :-
12415 occurrence___5__6(A, B, C, D, E, F).
12416occurrence___5__6(D, E, B, F, G, H) :-
12417 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-3', A),
12418 lookup_ht(A, B, C),
12419 !,
12420 occurrence___5__6__0__36(C,
12421 D,
12422 E,
12423 B,
12424 F,
12425 G,
12426 H).
12427occurrence___5__6__0__36([], A, B, C, D, E, F) :-
12428 occurrence___5__7(A, B, C, D, E, F).
12429occurrence___5__6__0__36([A|G], H, I, C, J, K, L) :-
12430 ( ( A=suspension(_, active, _, _, E, _, B, _, _),
12431 B==C
12432 ),
12433 nb_getval('$chr_store_multi_hash_chr_translate____max_occurrence___2-1',
12434 D),
12435 lookup_ht(D, E, F)
12436 -> occurrence___5__6__1__36(F,
12437 E,
12438 A,
12439 G,
12440 H,
12441 I,
12442 C,
12443 J,
12444 K,
12445 L)
12446 ; occurrence___5__6__0__36(G,
12447 H,
12448 I,
12449 C,
12450 J,
12451 K,
12452 L)
12453 ).
12454occurrence___5__6__1__36([], _, _, A, B, C, D, E, F, G) :-
12455 occurrence___5__6__0__36(A,
12456 B,
12457 C,
12458 D,
12459 E,
12460 F,
12461 G).
12462occurrence___5__6__1__36([A|G], C, H, I, J, K, L, M, N, O) :-
12463 ( ( A=suspension(_, active, _, B, F),
12464 B==C
12465 ),
12466 nb_getval('$chr_store_multi_hash_chr_translate____stored_complete___3-13',
12467 D),
12468 lookup_ht(D, k(C, 0), E)
12469 -> occurrence___5__6__2__36(E,
12470 F,
12471 A,
12472 G,
12473 C,
12474 H,
12475 I,
12476 J,
12477 K,
12478 L,
12479 M,
12480 N,
12481 O)
12482 ; occurrence___5__6__1__36(G,
12483 C,
12484 H,
12485 I,
12486 J,
12487 K,
12488 L,
12489 M,
12490 N,
12491 O)
12492 ).
12493occurrence___5__6__2__36([], _, _, A, B, C, D, E, F, G, H, I, J) :-
12494 occurrence___5__6__1__36(A,
12495 B,
12496 C,
12497 D,
12498 E,
12499 F,
12500 G,
12501 H,
12502 I,
12503 J).
12504occurrence___5__6__2__36([A|B1], J, G, C1, C, F, D1, M, S, U, V, N, E) :-
12505 ( A=suspension(_, active, _, B, I, D),
12506 ( B==C,
12507 D=0
12508 ),
12509 ( H=t(250, E, F, A, G),
12510 '$novel_production'(E, H),
12511 '$novel_production'(F, H),
12512 '$novel_production'(A, H),
12513 '$novel_production'(G, H)
12514 ),
12515 I=<J
12516 -> '$extend_history'(E, H),
12517 ( arg(2, E, K),
12518 setarg(2, E, active),
12519 ( K==not_stored_yet
12520 -> ( nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-15',
12521 L),
12522 insert_ht(L, k(M, N), E)
12523 ),
12524 ( nb_getval('$chr_store_global_ground_chr_translate____occurrence___5',
12525 O),
12526 P=[E|O],
12527 b_setval('$chr_store_global_ground_chr_translate____occurrence___5',
12528 P),
12529 ( O=[Q|_]
12530 -> setarg(4, Q, P)
12531 ; true
12532 )
12533 ),
12534 ( nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-125',
12535 R),
12536 insert_ht(R, k(M, S, N), E)
12537 ),
12538 ( nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-134',
12539 T),
12540 insert_ht(T, k(M, U, V), E)
12541 ),
12542 ( nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-12',
12543 W),
12544 insert_ht(W, k(M, S), E)
12545 ),
12546 ( nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-3',
12547 X),
12548 insert_ht(X, U, E)
12549 ),
12550 ( nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-13',
12551 Y),
12552 insert_ht(Y, k(M, U), E)
12553 ),
12554 ( nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-34',
12555 Z),
12556 insert_ht(Z, k(U, V), E)
12557 ),
12558 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-1',
12559 A1),
12560 insert_ht(A1, M, E)
12561 ; true
12562 )
12563 ),
12564 passive(U, V),
12565 ( E=suspension(_, active, _, _, _, _, _, _, _)
12566 -> setarg(2, E, inactive),
12567 occurrence___5__6__2__36(B1,
12568 J,
12569 G,
12570 C1,
12571 C,
12572 F,
12573 D1,
12574 M,
12575 S,
12576 U,
12577 V,
12578 N,
12579 E)
12580 ; true
12581 )
12582 ; occurrence___5__6__2__36(B1,
12583 J,
12584 G,
12585 C1,
12586 C,
12587 F,
12588 D1,
12589 M,
12590 S,
12591 U,
12592 V,
12593 N,
12594 E)
12595 ).
12596occurrence___5__6(A, B, C, D, E, F) :-
12597 occurrence___5__7(A, B, C, D, E, F).
12598occurrence___5__7(D, E, B, F, G, H) :-
12599 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-3', A),
12600 lookup_ht(A, B, C),
12601 !,
12602 occurrence___5__7__0__37(C,
12603 D,
12604 E,
12605 B,
12606 F,
12607 G,
12608 H).
12609occurrence___5__7__0__37([], A, B, C, D, E, F) :-
12610 occurrence___5__8(A, B, C, D, E, F).
12611occurrence___5__7__0__37([A|H], E, I, C, J, K, L) :-
12612 ( ( A=suspension(_, active, _, _, _, _, B, G, _),
12613 B==C
12614 ),
12615 nb_getval('$chr_store_multi_hash_chr_translate____max_occurrence___2-1',
12616 D),
12617 lookup_ht(D, E, F)
12618 -> occurrence___5__7__1__37(F,
12619 G,
12620 A,
12621 H,
12622 E,
12623 I,
12624 C,
12625 J,
12626 K,
12627 L)
12628 ; occurrence___5__7__0__37(H,
12629 E,
12630 I,
12631 C,
12632 J,
12633 K,
12634 L)
12635 ).
12636occurrence___5__7__1__37([], _, _, A, B, C, D, E, F, G) :-
12637 occurrence___5__7__0__37(A,
12638 B,
12639 C,
12640 D,
12641 E,
12642 F,
12643 G).
12644occurrence___5__7__1__37([A|G], H, I, J, C, K, L, M, N, O) :-
12645 ( ( A=suspension(_, active, _, B, F),
12646 B==C
12647 ),
12648 nb_getval('$chr_store_multi_hash_chr_translate____stored_complete___3-13',
12649 D),
12650 lookup_ht(D, k(C, 0), E)
12651 -> occurrence___5__7__2__37(E,
12652 F,
12653 A,
12654 G,
12655 H,
12656 I,
12657 J,
12658 C,
12659 K,
12660 L,
12661 M,
12662 N,
12663 O)
12664 ; occurrence___5__7__1__37(G,
12665 H,
12666 I,
12667 J,
12668 C,
12669 K,
12670 L,
12671 M,
12672 N,
12673 O)
12674 ).
12675occurrence___5__7__2__37([], _, _, A, B, C, D, E, F, G, H, I, J) :-
12676 occurrence___5__7__1__37(A,
12677 B,
12678 C,
12679 D,
12680 E,
12681 F,
12682 G,
12683 H,
12684 I,
12685 J).
12686occurrence___5__7__2__37([A|B1], J, G, C1, A1, E, D1, C, R, T, U, M, F) :-
12687 ( A=suspension(_, active, _, B, I, D),
12688 ( B==C,
12689 D=0
12690 ),
12691 ( H=t(250, E, F, A, G),
12692 '$novel_production'(E, H),
12693 '$novel_production'(F, H),
12694 '$novel_production'(A, H),
12695 '$novel_production'(G, H)
12696 ),
12697 I=<J
12698 -> '$extend_history'(F, H),
12699 ( arg(2, F, K),
12700 setarg(2, F, active),
12701 ( K==not_stored_yet
12702 -> ( nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-15',
12703 L),
12704 insert_ht(L, k(C, M), F)
12705 ),
12706 ( nb_getval('$chr_store_global_ground_chr_translate____occurrence___5',
12707 N),
12708 O=[F|N],
12709 b_setval('$chr_store_global_ground_chr_translate____occurrence___5',
12710 O),
12711 ( N=[P|_]
12712 -> setarg(4, P, O)
12713 ; true
12714 )
12715 ),
12716 ( nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-125',
12717 Q),
12718 insert_ht(Q, k(C, R, M), F)
12719 ),
12720 ( nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-134',
12721 S),
12722 insert_ht(S, k(C, T, U), F)
12723 ),
12724 ( nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-12',
12725 V),
12726 insert_ht(V, k(C, R), F)
12727 ),
12728 ( nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-3',
12729 W),
12730 insert_ht(W, T, F)
12731 ),
12732 ( nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-13',
12733 X),
12734 insert_ht(X, k(C, T), F)
12735 ),
12736 ( nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-34',
12737 Y),
12738 insert_ht(Y, k(T, U), F)
12739 ),
12740 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-1',
12741 Z),
12742 insert_ht(Z, C, F)
12743 ; true
12744 )
12745 ),
12746 passive(T, A1),
12747 ( F=suspension(_, active, _, _, _, _, _, _, _)
12748 -> setarg(2, F, inactive),
12749 occurrence___5__7__2__37(B1,
12750 J,
12751 G,
12752 C1,
12753 A1,
12754 E,
12755 D1,
12756 C,
12757 R,
12758 T,
12759 U,
12760 M,
12761 F)
12762 ; true
12763 )
12764 ; occurrence___5__7__2__37(B1,
12765 J,
12766 G,
12767 C1,
12768 A1,
12769 E,
12770 D1,
12771 C,
12772 R,
12773 T,
12774 U,
12775 M,
12776 F)
12777 ).
12778occurrence___5__7(A, B, C, D, E, F) :-
12779 occurrence___5__8(A, B, C, D, E, F).
12780occurrence___5__8(B, D, E, F, G, H) :-
12781 nb_getval('$chr_store_multi_hash_chr_translate____stored_complete___3-1',
12782 A),
12783 lookup_ht(A, B, C),
12784 !,
12785 occurrence___5__8__0__38(C,
12786 B,
12787 D,
12788 E,
12789 F,
12790 G,
12791 H).
12792occurrence___5__8__0__38([], A, B, C, D, E, F) :-
12793 occurrence___5__9(A, B, C, D, E, F).
12794occurrence___5__8__0__38([A|W], C, F, P, Q, J, D) :-
12795 ( A=suspension(_, active, _, B, G, _),
12796 B==C,
12797 ( E=t(259, A, D),
12798 '$novel_production'(A, E),
12799 '$novel_production'(D, E)
12800 ),
12801 F>G
12802 -> '$extend_history'(D, E),
12803 ( arg(2, D, H),
12804 setarg(2, D, active),
12805 ( H==not_stored_yet
12806 -> ( nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-15',
12807 I),
12808 insert_ht(I, k(C, J), D)
12809 ),
12810 ( nb_getval('$chr_store_global_ground_chr_translate____occurrence___5',
12811 K),
12812 L=[D|K],
12813 b_setval('$chr_store_global_ground_chr_translate____occurrence___5',
12814 L),
12815 ( K=[M|_]
12816 -> setarg(4, M, L)
12817 ; true
12818 )
12819 ),
12820 ( nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-125',
12821 N),
12822 insert_ht(N, k(C, F, J), D)
12823 ),
12824 ( nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-134',
12825 O),
12826 insert_ht(O, k(C, P, Q), D)
12827 ),
12828 ( nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-12',
12829 R),
12830 insert_ht(R, k(C, F), D)
12831 ),
12832 ( nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-3',
12833 S),
12834 insert_ht(S, P, D)
12835 ),
12836 ( nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-13',
12837 T),
12838 insert_ht(T, k(C, P), D)
12839 ),
12840 ( nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-34',
12841 U),
12842 insert_ht(U, k(P, Q), D)
12843 ),
12844 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-1',
12845 V),
12846 insert_ht(V, C, D)
12847 ; true
12848 )
12849 ),
12850 passive(P, Q),
12851 ( D=suspension(_, active, _, _, _, _, _, _, _)
12852 -> setarg(2, D, inactive),
12853 occurrence___5__8__0__38(W,
12854 C,
12855 F,
12856 P,
12857 Q,
12858 J,
12859 D)
12860 ; true
12861 )
12862 ; occurrence___5__8__0__38(W,
12863 C,
12864 F,
12865 P,
12866 Q,
12867 J,
12868 D)
12869 ).
12870occurrence___5__8(A, B, C, D, E, F) :-
12871 occurrence___5__9(A, B, C, D, E, F).
12872occurrence___5__9(B, E, C, F, G, H) :-
12873 nb_getval('$chr_store_multi_hash_chr_translate____functional_dependency___4-12',
12874 A),
12875 lookup_ht(A, k(B, C), D),
12876 !,
12877 occurrence___5__9__0__42(D,
12878 B,
12879 E,
12880 C,
12881 F,
12882 G,
12883 H).
12884occurrence___5__9__0__42([], A, B, C, D, E, F) :-
12885 occurrence___5__10(A, B, C, D, E, F).
12886occurrence___5__9__0__42([A|D1], C, J, E, V, P, M) :-
12887 ( ( A=suspension(_, active, B, D, B1, C1),
12888 B==C,
12889 D==E
12890 ),
12891 E>1,
12892 ( ( ground(C),
12893 nb_getval('$chr_store_multi_hash_chr_translate____allocation_occurrence___2-1',
12894 F),
12895 lookup_ht(F, C, G)
12896 ),
12897 member(H, G),
12898 H=suspension(_, active, _, _, I)
12899 ),
12900 I>J
12901 -> ( setarg(2, A, removed),
12902 ( nb_getval('$chr_store_multi_hash_chr_translate____functional_dependency___4-1',
12903 K),
12904 delete_ht(K, C, A)
12905 ),
12906 nb_getval('$chr_store_multi_hash_chr_translate____functional_dependency___4-12',
12907 L),
12908 delete_ht(L, k(C, E), A)
12909 ),
12910 ( arg(2, M, N),
12911 setarg(2, M, active),
12912 ( N==not_stored_yet
12913 -> ( nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-15',
12914 O),
12915 insert_ht(O, k(C, P), M)
12916 ),
12917 ( nb_getval('$chr_store_global_ground_chr_translate____occurrence___5',
12918 Q),
12919 R=[M|Q],
12920 b_setval('$chr_store_global_ground_chr_translate____occurrence___5',
12921 R),
12922 ( Q=[S|_]
12923 -> setarg(4, S, R)
12924 ; true
12925 )
12926 ),
12927 ( nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-125',
12928 T),
12929 insert_ht(T, k(C, J, P), M)
12930 ),
12931 ( nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-134',
12932 U),
12933 insert_ht(U, k(C, E, V), M)
12934 ),
12935 ( nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-12',
12936 W),
12937 insert_ht(W, k(C, J), M)
12938 ),
12939 ( nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-3',
12940 X),
12941 insert_ht(X, E, M)
12942 ),
12943 ( nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-13',
12944 Y),
12945 insert_ht(Y, k(C, E), M)
12946 ),
12947 ( nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-34',
12948 Z),
12949 insert_ht(Z, k(E, V), M)
12950 ),
12951 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-1',
12952 A1),
12953 insert_ht(A1, C, M)
12954 ; true
12955 )
12956 ),
12957 functional_dependency(C, 1, B1, C1),
12958 ( M=suspension(_, active, _, _, _, _, _, _, _)
12959 -> setarg(2, M, inactive),
12960 occurrence___5__9__0__42(D1,
12961 C,
12962 J,
12963 E,
12964 V,
12965 P,
12966 M)
12967 ; true
12968 )
12969 ; occurrence___5__9__0__42(D1,
12970 C,
12971 J,
12972 E,
12973 V,
12974 P,
12975 M)
12976 ).
12977occurrence___5__9(A, B, C, D, E, F) :-
12978 occurrence___5__10(A, B, C, D, E, F).
12979occurrence___5__10(B, D, E, F, G, H) :-
12980 nb_getval('$chr_store_multi_hash_chr_translate____constraint_mode___2-1',
12981 A),
12982 lookup_ht(A, B, C),
12983 !,
12984 occurrence___5__10__0__48(C,
12985 B,
12986 D,
12987 E,
12988 F,
12989 G,
12990 H).
12991occurrence___5__10__0__48([], A, B, C, D, E, F) :-
12992 occurrence___5__11(A, B, C, D, E, F).
12993occurrence___5__10__0__48([A|F], C, G, H, I, J, K) :-
12994 ( ( A=suspension(_, active, _, _, B, E),
12995 B==C
12996 ),
12997 nb_getval('$chr_store_global_ground_chr_translate____partial_wake_analysis___0',
12998 D)
12999 -> occurrence___5__10__1__48(D,
13000 E,
13001 A,
13002 F,
13003 C,
13004 G,
13005 H,
13006 I,
13007 J,
13008 K)
13009 ; occurrence___5__10__0__48(F,
13010 C,
13011 G,
13012 H,
13013 I,
13014 J,
13015 K)
13016 ).
13017occurrence___5__10__1__48([], _, _, A, B, C, D, E, F, G) :-
13018 occurrence___5__10__0__48(A,
13019 B,
13020 C,
13021 D,
13022 E,
13023 F,
13024 G).
13025occurrence___5__10__1__48([A|E], F, G, H, I, J, C, K, L, M) :-
13026 ( A=suspension(_, active, _, _),
13027 nb_getval('$chr_store_multi_hash_chr_translate____rule___2-1', B),
13028 lookup_ht(B, C, D)
13029 -> occurrence___5__10__2__48(D,
13030 A,
13031 E,
13032 F,
13033 G,
13034 H,
13035 I,
13036 J,
13037 C,
13038 K,
13039 L,
13040 M)
13041 ; occurrence___5__10__1__48(E,
13042 F,
13043 G,
13044 H,
13045 I,
13046 J,
13047 C,
13048 K,
13049 L,
13050 M)
13051 ).
13052occurrence___5__10__2__48([], _, A, B, C, D, E, F, G, H, I, J) :-
13053 occurrence___5__10__1__48(A,
13054 B,
13055 C,
13056 D,
13057 E,
13058 F,
13059 G,
13060 H,
13061 I,
13062 J).
13063occurrence___5__10__2__48([A|F1], D, G1, C1, F, H1, J, P, C, R, K, E) :-
13064 ( A=suspension(_, active, _, _, B, X),
13065 B==C,
13066 G=t(330, D, E, A, F),
13067 '$novel_production'(D, G),
13068 '$novel_production'(E, G),
13069 '$novel_production'(A, G),
13070 '$novel_production'(F, G)
13071 -> '$extend_history'(E, G),
13072 ( arg(2, E, H),
13073 setarg(2, E, active),
13074 ( H==not_stored_yet
13075 -> ( nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-15',
13076 I),
13077 insert_ht(I, k(J, K), E)
13078 ),
13079 ( nb_getval('$chr_store_global_ground_chr_translate____occurrence___5',
13080 L),
13081 M=[E|L],
13082 b_setval('$chr_store_global_ground_chr_translate____occurrence___5',
13083 M),
13084 ( L=[N|_]
13085 -> setarg(4, N, M)
13086 ; true
13087 )
13088 ),
13089 ( nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-125',
13090 O),
13091 insert_ht(O, k(J, P, K), E)
13092 ),
13093 ( nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-134',
13094 Q),
13095 insert_ht(Q, k(J, C, R), E)
13096 ),
13097 ( nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-12',
13098 S),
13099 insert_ht(S, k(J, P), E)
13100 ),
13101 ( nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-3',
13102 T),
13103 insert_ht(T, C, E)
13104 ),
13105 ( nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-13',
13106 U),
13107 insert_ht(U, k(J, C), E)
13108 ),
13109 ( nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-34',
13110 V),
13111 insert_ht(V, k(C, R), E)
13112 ),
13113 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-1',
13114 W),
13115 insert_ht(W, J, E)
13116 ; true
13117 )
13118 ),
13119 ( X=pragma(rule(Y, E1, A1, _), _, _, _, _),
13120 ( is_passive(C, R)
13121 -> true
13122 ; K==simplification
13123 -> select(Z, Y, _),
13124 Z=..[_|B1],
13125 term_variables(A1, D1),
13126 partial_wake_args(B1, C1, D1, J)
13127 ; select(Z, E1, _),
13128 Z=..[_|B1],
13129 term_variables(A1, D1),
13130 partial_wake_args(B1, C1, D1, J)
13131 )
13132 ),
13133 ( E=suspension(_, active, _, _, _, _, _, _, _)
13134 -> setarg(2, E, inactive),
13135 occurrence___5__10__2__48(F1,
13136 D,
13137 G1,
13138 C1,
13139 F,
13140 H1,
13141 J,
13142 P,
13143 C,
13144 R,
13145 K,
13146 E)
13147 ; true
13148 )
13149 ; occurrence___5__10__2__48(F1,
13150 D,
13151 G1,
13152 C1,
13153 F,
13154 H1,
13155 J,
13156 P,
13157 C,
13158 R,
13159 K,
13160 E)
13161 ).
13162occurrence___5__10(A, B, C, D, E, F) :-
13163 occurrence___5__11(A, B, C, D, E, F).
13164occurrence___5__11(E, F, B, C, G, H) :-
13165 nb_getval('$chr_store_multi_hash_chr_translate____passive___2-12', A),
13166 lookup_ht(A, k(B, C), D),
13167 !,
13168 occurrence___5__11__0__50(D,
13169 E,
13170 F,
13171 B,
13172 C,
13173 G,
13174 H).
13175occurrence___5__11__0__50([], A, B, C, D, E, F) :-
13176 occurrence___5__12(A, B, C, D, E, F).
13177occurrence___5__11__0__50([A|J], G, H, C, E, K, L) :-
13178 ( ( A=suspension(_, active, _, B, D),
13179 B==C,
13180 D==E
13181 ),
13182 nb_getval('$chr_store_multi_hash_chr_translate____skip_to_next_id___2-12',
13183 F),
13184 lookup_ht(F, k(G, H), I)
13185 -> occurrence___5__11__1__50(I,
13186 A,
13187 J,
13188 G,
13189 H,
13190 C,
13191 E,
13192 K,
13193 L)
13194 ; occurrence___5__11__0__50(J,
13195 G,
13196 H,
13197 C,
13198 E,
13199 K,
13200 L)
13201 ).
13202occurrence___5__11__1__50([], _, A, B, C, D, E, F, G) :-
13203 occurrence___5__11__0__50(A,
13204 B,
13205 C,
13206 D,
13207 E,
13208 F,
13209 G).
13210occurrence___5__11__1__50([A|Y], G, Z, C, E, Q, R, K, F) :-
13211 ( A=suspension(_, active, _, B, D),
13212 ( B==C,
13213 D==E
13214 ),
13215 ( H=t(362, F, G, A),
13216 '$novel_production'(F, H),
13217 '$novel_production'(G, H),
13218 '$novel_production'(A, H)
13219 ),
13220 E>1
13221 -> '$extend_history'(F, H),
13222 ( arg(2, F, I),
13223 setarg(2, F, active),
13224 ( I==not_stored_yet
13225 -> ( nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-15',
13226 J),
13227 insert_ht(J, k(C, K), F)
13228 ),
13229 ( nb_getval('$chr_store_global_ground_chr_translate____occurrence___5',
13230 L),
13231 M=[F|L],
13232 b_setval('$chr_store_global_ground_chr_translate____occurrence___5',
13233 M),
13234 ( L=[N|_]
13235 -> setarg(4, N, M)
13236 ; true
13237 )
13238 ),
13239 ( nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-125',
13240 O),
13241 insert_ht(O, k(C, E, K), F)
13242 ),
13243 ( nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-134',
13244 P),
13245 insert_ht(P, k(C, Q, R), F)
13246 ),
13247 ( nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-12',
13248 S),
13249 insert_ht(S, k(C, E), F)
13250 ),
13251 ( nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-3',
13252 T),
13253 insert_ht(T, Q, F)
13254 ),
13255 ( nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-13',
13256 U),
13257 insert_ht(U, k(C, Q), F)
13258 ),
13259 ( nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-34',
13260 V),
13261 insert_ht(V, k(Q, R), F)
13262 ),
13263 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-1',
13264 W),
13265 insert_ht(W, C, F)
13266 ; true
13267 )
13268 ),
13269 ( X is E-1,
13270 skip_to_next_id(C, X)
13271 ),
13272 ( F=suspension(_, active, _, _, _, _, _, _, _)
13273 -> setarg(2, F, inactive),
13274 occurrence___5__11__1__50(Y,
13275 G,
13276 Z,
13277 C,
13278 E,
13279 Q,
13280 R,
13281 K,
13282 F)
13283 ; true
13284 )
13285 ; occurrence___5__11__1__50(Y,
13286 G,
13287 Z,
13288 C,
13289 E,
13290 Q,
13291 R,
13292 K,
13293 F)
13294 ).
13295occurrence___5__11(A, B, C, D, E, F) :-
13296 occurrence___5__12(A, B, C, D, E, F).
13297occurrence___5__12(B, C, E, F, G, H) :-
13298 nb_getval('$chr_store_multi_hash_chr_translate____set_occurrence_code_id___3-12',
13299 A),
13300 lookup_ht(A, k(B, C), D),
13301 !,
13302 occurrence___5__12__0__51(D,
13303 B,
13304 C,
13305 E,
13306 F,
13307 G,
13308 H).
13309occurrence___5__12__0__51([], A, B, C, D, E, F) :-
13310 occurrence___5__13(A, B, C, D, E, F).
13311occurrence___5__12__0__51([A|B1], C, E, F, G, O, L) :-
13312 ( ( A=suspension(_, active, B, D, Z),
13313 B==C,
13314 D==E
13315 ),
13316 ( ( ground(F),
13317 ground(G)
13318 ),
13319 nb_getval('$chr_store_multi_hash_chr_translate____passive___2-12',
13320 H),
13321 lookup_ht(H, k(F, G), I)
13322 ),
13323 member(J, I),
13324 J=suspension(_, active, _, _, _)
13325 -> ( setarg(2, A, removed),
13326 nb_getval('$chr_store_multi_hash_chr_translate____set_occurrence_code_id___3-12',
13327 K),
13328 delete_ht(K, k(C, E), A)
13329 ),
13330 ( arg(2, L, M),
13331 setarg(2, L, active),
13332 ( M==not_stored_yet
13333 -> ( nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-15',
13334 N),
13335 insert_ht(N, k(C, O), L)
13336 ),
13337 ( nb_getval('$chr_store_global_ground_chr_translate____occurrence___5',
13338 P),
13339 Q=[L|P],
13340 b_setval('$chr_store_global_ground_chr_translate____occurrence___5',
13341 Q),
13342 ( P=[R|_]
13343 -> setarg(4, R, Q)
13344 ; true
13345 )
13346 ),
13347 ( nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-125',
13348 S),
13349 insert_ht(S, k(C, E, O), L)
13350 ),
13351 ( nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-134',
13352 T),
13353 insert_ht(T, k(C, F, G), L)
13354 ),
13355 ( nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-12',
13356 U),
13357 insert_ht(U, k(C, E), L)
13358 ),
13359 ( nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-3',
13360 V),
13361 insert_ht(V, F, L)
13362 ),
13363 ( nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-13',
13364 W),
13365 insert_ht(W, k(C, F), L)
13366 ),
13367 ( nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-34',
13368 X),
13369 insert_ht(X, k(F, G), L)
13370 ),
13371 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-1',
13372 Y),
13373 insert_ht(Y, C, L)
13374 ; true
13375 )
13376 ),
13377 ( occurrence_code_id(C, E, Z),
13378 A1 is E+1,
13379 set_occurrence_code_id(C, A1, Z)
13380 ),
13381 ( L=suspension(_, active, _, _, _, _, _, _, _)
13382 -> setarg(2, L, inactive),
13383 occurrence___5__12__0__51(B1,
13384 C,
13385 E,
13386 F,
13387 G,
13388 O,
13389 L)
13390 ; true
13391 )
13392 ; occurrence___5__12__0__51(B1,
13393 C,
13394 E,
13395 F,
13396 G,
13397 O,
13398 L)
13399 ).
13400occurrence___5__12(A, B, C, D, E, F) :-
13401 occurrence___5__13(A, B, C, D, E, F).
13402occurrence___5__13(B, C, E, F, simplification, G) :-
13403 nb_getval('$chr_store_multi_hash_chr_translate____set_occurrence_code_id___3-12',
13404 A),
13405 lookup_ht(A, k(B, C), D),
13406 !,
13407 occurrence___5__13__0__52(D,
13408 B,
13409 C,
13410 E,
13411 F,
13412 simplification,
13413 G).
13414occurrence___5__13__0__52([], A, B, C, D, E, F) :-
13415 occurrence___5__15(A, B, C, D, E, F).
13416occurrence___5__13__0__52([A|Y], C, E, P, Q, J, G) :-
13417 ( A=suspension(_, active, B, D, W),
13418 B==C,
13419 D==E
13420 -> ( setarg(2, A, removed),
13421 nb_getval('$chr_store_multi_hash_chr_translate____set_occurrence_code_id___3-12',
13422 F),
13423 delete_ht(F, k(C, E), A)
13424 ),
13425 ( arg(2, G, H),
13426 setarg(2, G, active),
13427 ( H==not_stored_yet
13428 -> ( nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-15',
13429 I),
13430 insert_ht(I, k(C, J), G)
13431 ),
13432 ( nb_getval('$chr_store_global_ground_chr_translate____occurrence___5',
13433 K),
13434 L=[G|K],
13435 b_setval('$chr_store_global_ground_chr_translate____occurrence___5',
13436 L),
13437 ( K=[M|_]
13438 -> setarg(4, M, L)
13439 ; true
13440 )
13441 ),
13442 ( nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-125',
13443 N),
13444 insert_ht(N, k(C, E, J), G)
13445 ),
13446 ( nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-134',
13447 O),
13448 insert_ht(O, k(C, P, Q), G)
13449 ),
13450 ( nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-12',
13451 R),
13452 insert_ht(R, k(C, E), G)
13453 ),
13454 ( nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-3',
13455 S),
13456 insert_ht(S, P, G)
13457 ),
13458 ( nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-13',
13459 T),
13460 insert_ht(T, k(C, P), G)
13461 ),
13462 ( nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-34',
13463 U),
13464 insert_ht(U, k(P, Q), G)
13465 ),
13466 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-1',
13467 V),
13468 insert_ht(V, C, G)
13469 ; true
13470 )
13471 ),
13472 ( occurrence_code_id(C, E, W),
13473 X is E+1,
13474 set_occurrence_code_id(C, X, W)
13475 ),
13476 ( G=suspension(_, active, _, _, _, _, _, _, _)
13477 -> setarg(2, G, inactive),
13478 occurrence___5__13__0__52(Y,
13479 C,
13480 E,
13481 P,
13482 Q,
13483 J,
13484 G)
13485 ; true
13486 )
13487 ; occurrence___5__13__0__52(Y,
13488 C,
13489 E,
13490 P,
13491 Q,
13492 J,
13493 G)
13494 ).
13495occurrence___5__13(B, C, E, F, propagation, G) :-
13496 nb_getval('$chr_store_multi_hash_chr_translate____set_occurrence_code_id___3-12',
13497 A),
13498 lookup_ht(A, k(B, C), D),
13499 !,
13500 occurrence___5__13__0__53(D,
13501 B,
13502 C,
13503 E,
13504 F,
13505 propagation,
13506 G).
13507occurrence___5__13__0__53([], A, B, C, D, E, F) :-
13508 occurrence___5__14(A, B, C, D, E, F).
13509occurrence___5__13__0__53([A|C1], C, E, S, T, M, J) :-
13510 ( ( A=suspension(_, active, B, D, Z),
13511 B==C,
13512 D==E
13513 ),
13514 ( ( ground(C),
13515 ground(E)
13516 ),
13517 nb_getval('$chr_store_multi_hash_chr_translate____skip_to_next_id___2-12',
13518 F),
13519 lookup_ht(F, k(C, E), G)
13520 ),
13521 member(H, G),
13522 H=suspension(_, active, _, _, _)
13523 -> ( setarg(2, A, removed),
13524 nb_getval('$chr_store_multi_hash_chr_translate____set_occurrence_code_id___3-12',
13525 I),
13526 delete_ht(I, k(C, E), A)
13527 ),
13528 ( arg(2, J, K),
13529 setarg(2, J, active),
13530 ( K==not_stored_yet
13531 -> ( nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-15',
13532 L),
13533 insert_ht(L, k(C, M), J)
13534 ),
13535 ( nb_getval('$chr_store_global_ground_chr_translate____occurrence___5',
13536 N),
13537 O=[J|N],
13538 b_setval('$chr_store_global_ground_chr_translate____occurrence___5',
13539 O),
13540 ( N=[P|_]
13541 -> setarg(4, P, O)
13542 ; true
13543 )
13544 ),
13545 ( nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-125',
13546 Q),
13547 insert_ht(Q, k(C, E, M), J)
13548 ),
13549 ( nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-134',
13550 R),
13551 insert_ht(R, k(C, S, T), J)
13552 ),
13553 ( nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-12',
13554 U),
13555 insert_ht(U, k(C, E), J)
13556 ),
13557 ( nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-3',
13558 V),
13559 insert_ht(V, S, J)
13560 ),
13561 ( nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-13',
13562 W),
13563 insert_ht(W, k(C, S), J)
13564 ),
13565 ( nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-34',
13566 X),
13567 insert_ht(X, k(S, T), J)
13568 ),
13569 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-1',
13570 Y),
13571 insert_ht(Y, C, J)
13572 ; true
13573 )
13574 ),
13575 ( occurrence_code_id(C, E, Z),
13576 A1 is E+1,
13577 B1 is Z+1,
13578 set_occurrence_code_id(C, A1, B1)
13579 ),
13580 ( J=suspension(_, active, _, _, _, _, _, _, _)
13581 -> setarg(2, J, inactive),
13582 occurrence___5__13__0__53(C1,
13583 C,
13584 E,
13585 S,
13586 T,
13587 M,
13588 J)
13589 ; true
13590 )
13591 ; occurrence___5__13__0__53(C1,
13592 C,
13593 E,
13594 S,
13595 T,
13596 M,
13597 J)
13598 ).
13599occurrence___5__13(A, B, C, D, E, F) :-
13600 occurrence___5__14(A, B, C, D, E, F).
13601occurrence___5__14(B, C, E, F, propagation, G) :-
13602 nb_getval('$chr_store_multi_hash_chr_translate____set_occurrence_code_id___3-12',
13603 A),
13604 lookup_ht(A, k(B, C), D),
13605 !,
13606 occurrence___5__14__0__54(D,
13607 B,
13608 C,
13609 E,
13610 F,
13611 propagation,
13612 G).
13613occurrence___5__14__0__54([], A, B, C, D, E, F) :-
13614 occurrence___5__15(A, B, C, D, E, F).
13615occurrence___5__14__0__54([A|Y], C, E, P, Q, J, G) :-
13616 ( A=suspension(_, active, B, D, W),
13617 B==C,
13618 D==E
13619 -> ( setarg(2, A, removed),
13620 nb_getval('$chr_store_multi_hash_chr_translate____set_occurrence_code_id___3-12',
13621 F),
13622 delete_ht(F, k(C, E), A)
13623 ),
13624 ( arg(2, G, H),
13625 setarg(2, G, active),
13626 ( H==not_stored_yet
13627 -> ( nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-15',
13628 I),
13629 insert_ht(I, k(C, J), G)
13630 ),
13631 ( nb_getval('$chr_store_global_ground_chr_translate____occurrence___5',
13632 K),
13633 L=[G|K],
13634 b_setval('$chr_store_global_ground_chr_translate____occurrence___5',
13635 L),
13636 ( K=[M|_]
13637 -> setarg(4, M, L)
13638 ; true
13639 )
13640 ),
13641 ( nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-125',
13642 N),
13643 insert_ht(N, k(C, E, J), G)
13644 ),
13645 ( nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-134',
13646 O),
13647 insert_ht(O, k(C, P, Q), G)
13648 ),
13649 ( nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-12',
13650 R),
13651 insert_ht(R, k(C, E), G)
13652 ),
13653 ( nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-3',
13654 S),
13655 insert_ht(S, P, G)
13656 ),
13657 ( nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-13',
13658 T),
13659 insert_ht(T, k(C, P), G)
13660 ),
13661 ( nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-34',
13662 U),
13663 insert_ht(U, k(P, Q), G)
13664 ),
13665 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-1',
13666 V),
13667 insert_ht(V, C, G)
13668 ; true
13669 )
13670 ),
13671 ( occurrence_code_id(C, E, W),
13672 X is E+1,
13673 set_occurrence_code_id(C, X, W)
13674 ),
13675 ( G=suspension(_, active, _, _, _, _, _, _, _)
13676 -> setarg(2, G, inactive),
13677 occurrence___5__14__0__54(Y,
13678 C,
13679 E,
13680 P,
13681 Q,
13682 J,
13683 G)
13684 ; true
13685 )
13686 ; occurrence___5__14__0__54(Y,
13687 C,
13688 E,
13689 P,
13690 Q,
13691 J,
13692 G)
13693 ).
13694occurrence___5__14(A, B, C, D, E, F) :-
13695 occurrence___5__15(A, B, C, D, E, F).
13696occurrence___5__15(D, J, L, M, E, A) :-
13697 arg(2, A, B),
13698 setarg(2, A, active),
13699 ( B==not_stored_yet
13700 -> ( nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-15',
13701 C),
13702 insert_ht(C, k(D, E), A)
13703 ),
13704 ( nb_getval('$chr_store_global_ground_chr_translate____occurrence___5',
13705 F),
13706 G=[A|F],
13707 b_setval('$chr_store_global_ground_chr_translate____occurrence___5',
13708 G),
13709 ( F=[H|_]
13710 -> setarg(4, H, G)
13711 ; true
13712 )
13713 ),
13714 ( nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-125',
13715 I),
13716 insert_ht(I, k(D, J, E), A)
13717 ),
13718 ( nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-134',
13719 K),
13720 insert_ht(K, k(D, L, M), A)
13721 ),
13722 ( nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-12',
13723 N),
13724 insert_ht(N, k(D, J), A)
13725 ),
13726 ( nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-3',
13727 O),
13728 insert_ht(O, L, A)
13729 ),
13730 ( nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-13',
13731 P),
13732 insert_ht(P, k(D, L), A)
13733 ),
13734 ( nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-34',
13735 Q),
13736 insert_ht(Q, k(L, M), A)
13737 ),
13738 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-1',
13739 R),
13740 insert_ht(R, D, A)
13741 ; true
13742 ).
13743get_occurrence(B, C, G, I) :-
13744 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-12',
13745 A),
13746 lookup_ht(A, k(B, C), D),
13747 member(E, D),
13748 E=suspension(_, active, _, _, _, _, F, H, _),
13749 !,
13750 F=G,
13751 H=I.
13752get_occurrence(A, B, _, _) :-
13753 chr_error(internal,
13754 'get_occurrence: missing occurrence ~w:~w\n',
13755 [A, B]).
13756get_occurrence(B, C, G, I, K) :-
13757 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-12',
13758 A),
13759 lookup_ht(A, k(B, C), D),
13760 member(E, D),
13761 E=suspension(_, active, _, _, _, _, F, H, J),
13762 !,
13763 F=G,
13764 H=I,
13765 J=K.
13766get_occurrence(A, B, _, _, _) :-
13767 chr_error(internal,
13768 'get_occurrence: missing occurrence ~w:~w\n',
13769 [A, B]).
13770get_occurrence_from_id(F, H, B, C) :-
13771 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-34',
13772 A),
13773 lookup_ht(A, k(B, C), D),
13774 member(E, D),
13775 E=suspension(_, active, _, _, G, I, _, _, _),
13776 !,
13777 F=G,
13778 H=I.
13779get_occurrence_from_id(_, _, _, _) :-
13780 chr_error(internal, 'get_occurrence_from_id: missing occurrence ~w:~w\n', []).
13781max_occurrence(A, B) :-
13782 max_occurrence___2__0(A, B, _).
13783max_occurrence___2__0(B, F, G) :-
13784 ( nb_getval('$chr_store_multi_hash_chr_translate____max_occurrence___2-1',
13785 A),
13786 lookup_ht(A, B, C)
13787 ),
13788 ( member(D, C),
13789 D=suspension(_, active, _, _, E),
13790 E>=F,
13791 !
13792 ; !,
13793 max_occurrence___2__0__0__2(C, B, F, G)
13794 ).
13795max_occurrence___2__0__0__2([], A, B, C) :-
13796 max_occurrence___2__1(A, B, C).
13797max_occurrence___2__0__0__2([A|G], C, D, H) :-
13798 ( ( A=suspension(_, active, _, B, E),
13799 B==C
13800 ),
13801 D>=E
13802 -> ( setarg(2, A, removed),
13803 nb_getval('$chr_store_multi_hash_chr_translate____max_occurrence___2-1',
13804 F),
13805 delete_ht(F, C, A)
13806 ),
13807 max_occurrence___2__0__0__2(G, C, D, H)
13808 ; max_occurrence___2__0__0__2(G, C, D, H)
13809 ).
13810max_occurrence___2__0(A, B, C) :-
13811 max_occurrence___2__1(A, B, C).
13812max_occurrence___2__1(B, D, C) :-
13813 nb_getval('$chr_store_multi_hash_chr_translate____stored_complete___3-13',
13814 A),
13815 lookup_ht(A, k(B, 0), F),
13816 !,
13817 C=suspension(E, not_stored_yet, t, B, D),
13818 'chr gen_id'(E),
13819 max_occurrence___2__1__0__5(F, B, D, C).
13820max_occurrence___2__1__0__5([], A, B, C) :-
13821 max_occurrence___2__2(A, B, C).
13822max_occurrence___2__1__0__5([A|H], C, I, J) :-
13823 ( ( A=suspension(_, active, _, B, G, D),
13824 B==C,
13825 D=0
13826 ),
13827 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-1',
13828 E),
13829 lookup_ht(E, C, F)
13830 -> max_occurrence___2__1__1__5(F,
13831 G,
13832 A,
13833 H,
13834 C,
13835 I,
13836 J)
13837 ; max_occurrence___2__1__0__5(H, C, I, J)
13838 ).
13839max_occurrence___2__1__1__5([], _, _, A, B, C, D) :-
13840 max_occurrence___2__1__0__5(A, B, C, D).
13841max_occurrence___2__1__1__5([A|G], H, I, J, C, K, L) :-
13842 ( ( A=suspension(_, active, _, _, B, _, E, _, _),
13843 B==C
13844 ),
13845 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-3',
13846 D),
13847 lookup_ht(D, E, F)
13848 -> max_occurrence___2__1__2__5(F,
13849 E,
13850 A,
13851 G,
13852 H,
13853 I,
13854 J,
13855 C,
13856 K,
13857 L)
13858 ; max_occurrence___2__1__1__5(G,
13859 H,
13860 I,
13861 J,
13862 C,
13863 K,
13864 L)
13865 ).
13866max_occurrence___2__1__2__5([], _, _, A, B, C, D, E, F, G) :-
13867 max_occurrence___2__1__1__5(A,
13868 B,
13869 C,
13870 D,
13871 E,
13872 F,
13873 G).
13874max_occurrence___2__1__2__5([A|N], D, B, O, H, E, P, L, I, F) :-
13875 ( A=suspension(_, active, _, _, _, _, C, M, _),
13876 A\==B,
13877 C==D,
13878 ( G=t(250, A, B, E, F),
13879 '$novel_production'(A, G),
13880 '$novel_production'(B, G),
13881 '$novel_production'(E, G),
13882 '$novel_production'(F, G)
13883 ),
13884 H=<I
13885 -> '$extend_history'(F, G),
13886 ( arg(2, F, J),
13887 setarg(2, F, active),
13888 ( J==not_stored_yet
13889 -> nb_getval('$chr_store_multi_hash_chr_translate____max_occurrence___2-1',
13890 K),
13891 insert_ht(K, L, F)
13892 ; true
13893 )
13894 ),
13895 passive(D, M),
13896 ( F=suspension(_, active, _, _, _)
13897 -> setarg(2, F, inactive),
13898 max_occurrence___2__1__2__5(N,
13899 D,
13900 B,
13901 O,
13902 H,
13903 E,
13904 P,
13905 L,
13906 I,
13907 F)
13908 ; true
13909 )
13910 ; max_occurrence___2__1__2__5(N,
13911 D,
13912 B,
13913 O,
13914 H,
13915 E,
13916 P,
13917 L,
13918 I,
13919 F)
13920 ).
13921max_occurrence___2__1(B, C, A) :-
13922 A=suspension(D, not_stored_yet, t, B, C),
13923 'chr gen_id'(D),
13924 max_occurrence___2__2(B, C, A).
13925max_occurrence___2__2(D, _, A) :-
13926 arg(2, A, B),
13927 setarg(2, A, active),
13928 ( B==not_stored_yet
13929 -> nb_getval('$chr_store_multi_hash_chr_translate____max_occurrence___2-1',
13930 C),
13931 insert_ht(C, D, A)
13932 ; true
13933 ).
13934get_max_occurrence(B, E) :-
13935 nb_getval('$chr_store_multi_hash_chr_translate____max_occurrence___2-1',
13936 A),
13937 lookup_ht(A, B, C),
13938 member(D, C),
13939 D=suspension(_, active, _, _, F),
13940 !,
13941 E=F.
13942get_max_occurrence(A, _) :-
13943 chr_error(internal,
13944 'get_max_occurrence: missing max occurrence for ~w\n',
13945 [A]).
13946allocation_occurrence(A, B) :-
13947 allocation_occurrence___2__0(A, B, _).
13948allocation_occurrence___2__0(B, 0, A) :-
13949 !,
13950 A=suspension(C, active, t, B, 0),
13951 'chr gen_id'(C),
13952 nb_getval('$chr_store_multi_hash_chr_translate____allocation_occurrence___2-1',
13953 D),
13954 insert_ht(D, B, A),
13955 nb_getval('$chr_store_multi_hash_chr_translate____allocation_occurrence___2-12',
13956 E),
13957 insert_ht(E, k(B, 0), A),
13958 stored_in_guard_before_next_kept_occurrence(B, 0),
13959 ( A=suspension(_, active, _, _, _)
13960 -> setarg(2, A, inactive),
13961 allocation_occurrence___2__1(B, 0, A)
13962 ; true
13963 ).
13964allocation_occurrence___2__0(B, C, A) :-
13965 A=suspension(D, not_stored_yet, t, B, C),
13966 'chr gen_id'(D),
13967 allocation_occurrence___2__1(B, C, A).
13968allocation_occurrence___2__1(B, C, E) :-
13969 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-12',
13970 A),
13971 lookup_ht(A, k(B, C), D),
13972 !,
13973 allocation_occurrence___2__1__0__2(D, B, C, E).
13974allocation_occurrence___2__1__0__2([], A, B, C) :-
13975 allocation_occurrence___2__2(A, B, C).
13976allocation_occurrence___2__1__0__2([A|K], C, E, L) :-
13977 ( ( A=suspension(_, active, _, _, B, D, G, I, J),
13978 B==C,
13979 D==E
13980 ),
13981 nb_getval('$chr_store_multi_hash_chr_translate____rule___2-1', F),
13982 lookup_ht(F, G, H)
13983 -> allocation_occurrence___2__1__1__2(H,
13984 G,
13985 I,
13986 J,
13987 A,
13988 K,
13989 C,
13990 E,
13991 L)
13992 ; allocation_occurrence___2__1__0__2(K, C, E, L)
13993 ).
13994allocation_occurrence___2__1__1__2([], _, _, _, _, A, B, C, D) :-
13995 allocation_occurrence___2__1__0__2(A, B, C, D).
13996allocation_occurrence___2__1__1__2([A|O], C, L, M, D, P, I, K, E) :-
13997 ( A=suspension(_, active, _, _, B, N),
13998 B==C,
13999 F=t(60, A, D, E),
14000 '$novel_production'(A, F),
14001 '$novel_production'(D, F),
14002 '$novel_production'(E, F)
14003 -> '$extend_history'(E, F),
14004 ( arg(2, E, G),
14005 setarg(2, E, active),
14006 ( G==not_stored_yet
14007 -> ( nb_getval('$chr_store_multi_hash_chr_translate____allocation_occurrence___2-1',
14008 H),
14009 insert_ht(H, I, E)
14010 ),
14011 nb_getval('$chr_store_multi_hash_chr_translate____allocation_occurrence___2-12',
14012 J),
14013 insert_ht(J, k(I, K), E)
14014 ; true
14015 )
14016 ),
14017 ( \+ is_passive(C, L),
14018 M==propagation,
14019 ( stored_in_guard_before_next_kept_occurrence(I, K)
14020 -> true
14021 ; N=pragma(rule([_|_], _, _, _), _, _, _, _)
14022 -> is_observed(I, K)
14023 ; is_least_occurrence(C)
14024 -> is_observed(I, K)
14025 ; true
14026 )
14027 ),
14028 ( E=suspension(_, active, _, _, _)
14029 -> setarg(2, E, inactive),
14030 allocation_occurrence___2__1__1__2(O,
14031 C,
14032 L,
14033 M,
14034 D,
14035 P,
14036 I,
14037 K,
14038 E)
14039 ; true
14040 )
14041 ; allocation_occurrence___2__1__1__2(O,
14042 C,
14043 L,
14044 M,
14045 D,
14046 P,
14047 I,
14048 K,
14049 E)
14050 ).
14051allocation_occurrence___2__1(A, B, C) :-
14052 allocation_occurrence___2__2(A, B, C).
14053allocation_occurrence___2__2(B, D, E) :-
14054 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-1', A),
14055 lookup_ht(A, B, C),
14056 !,
14057 allocation_occurrence___2__2__0__3(C, B, D, E).
14058allocation_occurrence___2__2__0__3([], A, B, C) :-
14059 allocation_occurrence___2__3(A, B, C).
14060allocation_occurrence___2__2__0__3([A|I], C, J, K) :-
14061 ( ( A=suspension(_, active, _, _, B, G, E, H, _),
14062 B==C
14063 ),
14064 nb_getval('$chr_store_multi_hash_chr_translate____least_occurrence___2-1',
14065 D),
14066 lookup_ht(D, E, F)
14067 -> allocation_occurrence___2__2__1__3(F,
14068 G,
14069 E,
14070 H,
14071 A,
14072 I,
14073 C,
14074 J,
14075 K)
14076 ; allocation_occurrence___2__2__0__3(I, C, J, K)
14077 ).
14078allocation_occurrence___2__2__1__3([], _, _, _, _, A, B, C, D) :-
14079 allocation_occurrence___2__2__0__3(A, B, C, D).
14080allocation_occurrence___2__2__1__3([A|T], H, C, F, U, V, L, G, P) :-
14081 ( ( A=suspension(_, active, B, D),
14082 B==C,
14083 D=[E|N],
14084 E==F
14085 ),
14086 G>=H,
14087 ( ( ground(C),
14088 nb_getval('$chr_store_multi_hash_chr_translate____rule___2-1',
14089 I),
14090 lookup_ht(I, C, J)
14091 ),
14092 member(K, J),
14093 K=suspension(_, active, _, _, _, _)
14094 ),
14095 \+ may_trigger(L)
14096 -> ( setarg(2, A, removed),
14097 ( nb_getval('$chr_store_multi_hash_chr_translate____least_occurrence___2-12',
14098 M),
14099 delete_ht(M, k(C, [F|N]), A)
14100 ),
14101 nb_getval('$chr_store_multi_hash_chr_translate____least_occurrence___2-1',
14102 O),
14103 delete_ht(O, C, A)
14104 ),
14105 ( arg(2, P, Q),
14106 setarg(2, P, active),
14107 ( Q==not_stored_yet
14108 -> ( nb_getval('$chr_store_multi_hash_chr_translate____allocation_occurrence___2-1',
14109 R),
14110 insert_ht(R, L, P)
14111 ),
14112 nb_getval('$chr_store_multi_hash_chr_translate____allocation_occurrence___2-12',
14113 S),
14114 insert_ht(S, k(L, G), P)
14115 ; true
14116 )
14117 ),
14118 least_occurrence(C, N),
14119 ( P=suspension(_, active, _, _, _)
14120 -> setarg(2, P, inactive),
14121 allocation_occurrence___2__2__1__3(T,
14122 H,
14123 C,
14124 F,
14125 U,
14126 V,
14127 L,
14128 G,
14129 P)
14130 ; true
14131 )
14132 ; allocation_occurrence___2__2__1__3(T,
14133 H,
14134 C,
14135 F,
14136 U,
14137 V,
14138 L,
14139 G,
14140 P)
14141 ).
14142allocation_occurrence___2__2(A, B, C) :-
14143 allocation_occurrence___2__3(A, B, C).
14144allocation_occurrence___2__3(B, D, E) :-
14145 nb_getval('$chr_store_multi_hash_chr_translate____functional_dependency___4-1',
14146 A),
14147 lookup_ht(A, B, C),
14148 !,
14149 allocation_occurrence___2__3__0__5(C, B, D, E).
14150allocation_occurrence___2__3__0__5([], A, B, C) :-
14151 allocation_occurrence___2__4(A, B, C).
14152allocation_occurrence___2__3__0__5([A|R], C, H, L) :-
14153 ( ( A=suspension(_, active, B, D, P, Q),
14154 B==C
14155 ),
14156 D>1,
14157 ( ( ( ground(C),
14158 ground(D)
14159 ),
14160 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-13',
14161 E),
14162 lookup_ht(E, k(C, D), F)
14163 ),
14164 member(G, F),
14165 G=suspension(_, active, _, _, _, I, _, _, _)
14166 ),
14167 H>I
14168 -> ( setarg(2, A, removed),
14169 ( nb_getval('$chr_store_multi_hash_chr_translate____functional_dependency___4-1',
14170 J),
14171 delete_ht(J, C, A)
14172 ),
14173 nb_getval('$chr_store_multi_hash_chr_translate____functional_dependency___4-12',
14174 K),
14175 delete_ht(K, k(C, D), A)
14176 ),
14177 ( arg(2, L, M),
14178 setarg(2, L, active),
14179 ( M==not_stored_yet
14180 -> ( nb_getval('$chr_store_multi_hash_chr_translate____allocation_occurrence___2-1',
14181 N),
14182 insert_ht(N, C, L)
14183 ),
14184 nb_getval('$chr_store_multi_hash_chr_translate____allocation_occurrence___2-12',
14185 O),
14186 insert_ht(O, k(C, H), L)
14187 ; true
14188 )
14189 ),
14190 functional_dependency(C, 1, P, Q),
14191 ( L=suspension(_, active, _, _, _)
14192 -> setarg(2, L, inactive),
14193 allocation_occurrence___2__3__0__5(R,
14194 C,
14195 H,
14196 L)
14197 ; true
14198 )
14199 ; allocation_occurrence___2__3__0__5(R, C, H, L)
14200 ).
14201allocation_occurrence___2__3(A, B, C) :-
14202 allocation_occurrence___2__4(A, B, C).
14203allocation_occurrence___2__4(D, F, A) :-
14204 arg(2, A, B),
14205 setarg(2, A, active),
14206 ( B==not_stored_yet
14207 -> ( nb_getval('$chr_store_multi_hash_chr_translate____allocation_occurrence___2-1',
14208 C),
14209 insert_ht(C, D, A)
14210 ),
14211 nb_getval('$chr_store_multi_hash_chr_translate____allocation_occurrence___2-12',
14212 E),
14213 insert_ht(E, k(D, F), A)
14214 ; true
14215 ).
14216get_allocation_occurrence(B, E) :-
14217 nb_getval('$chr_store_multi_hash_chr_translate____allocation_occurrence___2-1',
14218 A),
14219 lookup_ht(A, B, C),
14220 member(D, C),
14221 D=suspension(_, active, _, _, F),
14222 !,
14223 E=F.
14224get_allocation_occurrence(_, A) :-
14225 chr_pp_flag(late_allocation, off),
14226 A=0.
14227rule(A, B) :-
14228 rule___2__0(A, B, _).
14229rule___2__0(B, D, C) :-
14230 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-3', A),
14231 lookup_ht(A, B, F),
14232 !,
14233 C=suspension(E, not_stored_yet, t, _, B, D),
14234 'chr gen_id'(E),
14235 rule___2__0__0__1(F, B, D, C).
14236rule___2__0__0__1([], A, B, C) :-
14237 rule___2__1(A, B, C).
14238rule___2__0__0__1([A|J], C, K, L) :-
14239 ( ( A=suspension(_, active, _, _, E, F, B, H, I),
14240 B==C
14241 ),
14242 nb_getval('$chr_store_multi_hash_chr_translate____allocation_occurrence___2-12',
14243 D),
14244 lookup_ht(D, k(E, F), G)
14245 -> rule___2__0__1__1(G,
14246 E,
14247 F,
14248 H,
14249 I,
14250 A,
14251 J,
14252 C,
14253 K,
14254 L)
14255 ; rule___2__0__0__1(J, C, K, L)
14256 ).
14257rule___2__0__1__1([], _, _, _, _, _, A, B, C, D) :-
14258 rule___2__0__0__1(A, B, C, D).
14259rule___2__0__1__1([A|R], C, E, O, P, G, S, N, Q, F) :-
14260 ( A=suspension(_, active, _, B, D),
14261 ( B==C,
14262 D==E
14263 ),
14264 H=t(60, F, G, A),
14265 '$novel_production'(F, H),
14266 '$novel_production'(G, H),
14267 '$novel_production'(A, H)
14268 -> '$extend_history'(F, H),
14269 ( arg(2, F, I),
14270 setarg(2, F, active),
14271 ( I==not_stored_yet
14272 -> ( nb_getval('$chr_store_global_ground_chr_translate____rule___2',
14273 J),
14274 K=[F|J],
14275 b_setval('$chr_store_global_ground_chr_translate____rule___2',
14276 K),
14277 ( J=[L|_]
14278 -> setarg(4, L, K)
14279 ; true
14280 )
14281 ),
14282 nb_getval('$chr_store_multi_hash_chr_translate____rule___2-1',
14283 M),
14284 insert_ht(M, N, F)
14285 ; true
14286 )
14287 ),
14288 ( \+ is_passive(N, O),
14289 P==propagation,
14290 ( stored_in_guard_before_next_kept_occurrence(C, E)
14291 -> true
14292 ; Q=pragma(rule([_|_], _, _, _), _, _, _, _)
14293 -> is_observed(C, E)
14294 ; is_least_occurrence(N)
14295 -> is_observed(C, E)
14296 ; true
14297 )
14298 ),
14299 ( F=suspension(_, active, _, _, _, _)
14300 -> setarg(2, F, inactive),
14301 rule___2__0__1__1(R,
14302 C,
14303 E,
14304 O,
14305 P,
14306 G,
14307 S,
14308 N,
14309 Q,
14310 F)
14311 ; true
14312 )
14313 ; rule___2__0__1__1(R,
14314 C,
14315 E,
14316 O,
14317 P,
14318 G,
14319 S,
14320 N,
14321 Q,
14322 F)
14323 ).
14324rule___2__0(B, C, A) :-
14325 A=suspension(D, not_stored_yet, t, _, B, C),
14326 'chr gen_id'(D),
14327 rule___2__1(B, C, A).
14328rule___2__1(B, D, E) :-
14329 nb_getval('$chr_store_multi_hash_chr_translate____least_occurrence___2-1',
14330 A),
14331 lookup_ht(A, B, C),
14332 !,
14333 rule___2__1__0__2(C, B, D, E).
14334rule___2__1__0__2([], A, B, C) :-
14335 rule___2__2(A, B, C).
14336rule___2__1__0__2([A|X], C, Y, R) :-
14337 ( ( A=suspension(_, active, B, D),
14338 B==C,
14339 D=[E|P]
14340 ),
14341 ( ( ( ground(C),
14342 ground(E)
14343 ),
14344 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-34',
14345 F),
14346 lookup_ht(F, k(C, E), G)
14347 ),
14348 member(H, G),
14349 H=suspension(_, active, _, _, J, N, _, _, _)
14350 ),
14351 ( ( nb_getval('$chr_store_multi_hash_chr_translate____allocation_occurrence___2-1',
14352 I),
14353 lookup_ht(I, J, K)
14354 ),
14355 member(L, K),
14356 L=suspension(_, active, _, _, M)
14357 ),
14358 M>=N,
14359 \+ may_trigger(J)
14360 -> ( setarg(2, A, removed),
14361 ( nb_getval('$chr_store_multi_hash_chr_translate____least_occurrence___2-12',
14362 O),
14363 delete_ht(O, k(C, [E|P]), A)
14364 ),
14365 nb_getval('$chr_store_multi_hash_chr_translate____least_occurrence___2-1',
14366 Q),
14367 delete_ht(Q, C, A)
14368 ),
14369 ( arg(2, R, S),
14370 setarg(2, R, active),
14371 ( S==not_stored_yet
14372 -> ( nb_getval('$chr_store_global_ground_chr_translate____rule___2',
14373 T),
14374 U=[R|T],
14375 b_setval('$chr_store_global_ground_chr_translate____rule___2',
14376 U),
14377 ( T=[V|_]
14378 -> setarg(4, V, U)
14379 ; true
14380 )
14381 ),
14382 nb_getval('$chr_store_multi_hash_chr_translate____rule___2-1',
14383 W),
14384 insert_ht(W, C, R)
14385 ; true
14386 )
14387 ),
14388 least_occurrence(C, P),
14389 ( R=suspension(_, active, _, _, _, _)
14390 -> setarg(2, R, inactive),
14391 rule___2__1__0__2(X, C, Y, R)
14392 ; true
14393 )
14394 ; rule___2__1__0__2(X, C, Y, R)
14395 ).
14396rule___2__1(A, B, C) :-
14397 rule___2__2(A, B, C).
14398rule___2__2(B, D, E) :-
14399 nb_getval('$chr_store_multi_hash_chr_translate____least_occurrence___2-1',
14400 A),
14401 lookup_ht(A, B, C),
14402 !,
14403 rule___2__2__0__3(C, B, D, E).
14404rule___2__2__0__3([], A, B, C) :-
14405 rule___2__3(A, B, C).
14406rule___2__2__0__3([A|R], C, S, L) :-
14407 ( ( A=suspension(_, active, B, D),
14408 B==C,
14409 D=[E|J]
14410 ),
14411 ( ( ground(C),
14412 ground(E)
14413 ),
14414 nb_getval('$chr_store_multi_hash_chr_translate____passive___2-12',
14415 F),
14416 lookup_ht(F, k(C, E), G)
14417 ),
14418 member(H, G),
14419 H=suspension(_, active, _, _, _)
14420 -> ( setarg(2, A, removed),
14421 ( nb_getval('$chr_store_multi_hash_chr_translate____least_occurrence___2-12',
14422 I),
14423 delete_ht(I, k(C, [E|J]), A)
14424 ),
14425 nb_getval('$chr_store_multi_hash_chr_translate____least_occurrence___2-1',
14426 K),
14427 delete_ht(K, C, A)
14428 ),
14429 ( arg(2, L, M),
14430 setarg(2, L, active),
14431 ( M==not_stored_yet
14432 -> ( nb_getval('$chr_store_global_ground_chr_translate____rule___2',
14433 N),
14434 O=[L|N],
14435 b_setval('$chr_store_global_ground_chr_translate____rule___2',
14436 O),
14437 ( N=[P|_]
14438 -> setarg(4, P, O)
14439 ; true
14440 )
14441 ),
14442 nb_getval('$chr_store_multi_hash_chr_translate____rule___2-1',
14443 Q),
14444 insert_ht(Q, C, L)
14445 ; true
14446 )
14447 ),
14448 least_occurrence(C, J),
14449 ( L=suspension(_, active, _, _, _, _)
14450 -> setarg(2, L, inactive),
14451 rule___2__2__0__3(R, C, S, L)
14452 ; true
14453 )
14454 ; rule___2__2__0__3(R, C, S, L)
14455 ).
14456rule___2__2(A, B, C) :-
14457 rule___2__3(A, B, C).
14458rule___2__3(H, A, B) :-
14459 A=pragma(rule([], _, _, _), ids([], I), _, _, _),
14460 !,
14461 arg(2, B, C),
14462 setarg(2, B, active),
14463 ( C==not_stored_yet
14464 -> ( nb_getval('$chr_store_global_ground_chr_translate____rule___2',
14465 D),
14466 E=[B|D],
14467 b_setval('$chr_store_global_ground_chr_translate____rule___2', E),
14468 ( D=[F|_]
14469 -> setarg(4, F, E)
14470 ; true
14471 )
14472 ),
14473 nb_getval('$chr_store_multi_hash_chr_translate____rule___2-1', G),
14474 insert_ht(G, H, B)
14475 ; true
14476 ),
14477 least_occurrence(H, I),
14478 ( B=suspension(_, active, _, _, _, _)
14479 -> setarg(2, B, inactive),
14480 rule___2__4(H, A, B)
14481 ; true
14482 ).
14483rule___2__3(A, B, C) :-
14484 rule___2__4(A, B, C).
14485rule___2__4(B, E, S) :-
14486 nb_getval('$chr_store_multi_hash_chr_translate____prev_guard_list___6-1',
14487 A),
14488 lookup_ht(A, B, C),
14489 member(D, C),
14490 D=suspension(_, active, _, _, _, F1, F, H, G, _),
14491 E=pragma(rule(Z, A1, F, L), C1, D1, E1, B),
14492 F\==true,
14493 append(G, H, I),
14494 ( conj2list(F, J),
14495 append(I, J, K),
14496 guard_entailment:entails_guard(K, fail)
14497 -> M=fail
14498 ; simplify_guard(F, L, I, M, B1)
14499 ),
14500 F\==M,
14501 !,
14502 setarg(2, D, removed),
14503 arg(4, D, N),
14504 ( var(N)
14505 -> nb_getval('$chr_store_global_ground_chr_translate____prev_guard_list___6',
14506 O),
14507 O=[_|P],
14508 b_setval('$chr_store_global_ground_chr_translate____prev_guard_list___6',
14509 P),
14510 ( P=[Q|_]
14511 -> setarg(4, Q, _)
14512 ; true
14513 )
14514 ; N=[_, _|P],
14515 setarg(2, N, P),
14516 ( P=[Q|_]
14517 -> setarg(4, Q, N)
14518 ; true
14519 )
14520 ),
14521 nb_getval('$chr_store_multi_hash_chr_translate____prev_guard_list___6-1',
14522 R),
14523 delete_ht(R, B, D),
14524 ( var(S)
14525 -> true
14526 ; arg(2, S, T),
14527 setarg(2, S, removed),
14528 ( T==not_stored_yet
14529 -> true
14530 ; ( arg(4, S, U),
14531 ( var(U)
14532 -> nb_getval('$chr_store_global_ground_chr_translate____rule___2',
14533 V),
14534 V=[_|W],
14535 b_setval('$chr_store_global_ground_chr_translate____rule___2',
14536 W),
14537 ( W=[X|_]
14538 -> setarg(4, X, _)
14539 ; true
14540 )
14541 ; U=[_, _|W],
14542 setarg(2, U, W),
14543 ( W=[X|_]
14544 -> setarg(4, X, U)
14545 ; true
14546 )
14547 )
14548 ),
14549 nb_getval('$chr_store_multi_hash_chr_translate____rule___2-1',
14550 Y),
14551 delete_ht(Y, B, S)
14552 )
14553 ),
14554 rule(B,
14555 pragma(rule(Z, A1, M, B1),
14556 C1,
14557 D1,
14558 E1,
14559 B)),
14560 prev_guard_list(B, F1, M, H, G, []).
14561rule___2__4(B, C, D) :-
14562 nb_getval('$chr_store_global_ground_chr_translate____precompute_head_matchings___0',
14563 A),
14564 !,
14565 rule___2__4__0__10(A, B, C, D).
14566rule___2__4__0__10([], A, B, C) :-
14567 rule___2__5(A, B, C).
14568rule___2__4__0__10([A|R], I, J, B) :-
14569 ( A=suspension(_, active, _, _),
14570 C=t(174, B, A),
14571 '$novel_production'(B, C),
14572 '$novel_production'(A, C)
14573 -> '$extend_history'(B, C),
14574 ( arg(2, B, D),
14575 setarg(2, B, active),
14576 ( D==not_stored_yet
14577 -> ( nb_getval('$chr_store_global_ground_chr_translate____rule___2',
14578 E),
14579 F=[B|E],
14580 b_setval('$chr_store_global_ground_chr_translate____rule___2',
14581 F),
14582 ( E=[G|_]
14583 -> setarg(4, G, F)
14584 ; true
14585 )
14586 ),
14587 nb_getval('$chr_store_multi_hash_chr_translate____rule___2-1',
14588 H),
14589 insert_ht(H, I, B)
14590 ; true
14591 )
14592 ),
14593 ( J=pragma(rule(K, L, _, _), _, _, _, _),
14594 append(K, L, M),
14595 make_head_matchings_explicit_(M, N, O),
14596 copy_term_nat(N-O, P-Q),
14597 make_head_matchings_explicit_memo_table(I, P, Q)
14598 ),
14599 ( B=suspension(_, active, _, _, _, _)
14600 -> setarg(2, B, inactive),
14601 rule___2__4__0__10(R, I, J, B)
14602 ; true
14603 )
14604 ; rule___2__4__0__10(R, I, J, B)
14605 ).
14606rule___2__4(A, B, C) :-
14607 rule___2__5(A, B, C).
14608rule___2__5(B, D, E) :-
14609 nb_getval('$chr_store_multi_hash_chr_translate____prev_guard_list___6-1',
14610 A),
14611 lookup_ht(A, B, C),
14612 !,
14613 rule___2__5__0__11(C, B, D, E).
14614rule___2__5__0__11([], A, B, C) :-
14615 rule___2__6(A, B, C).
14616rule___2__5__0__11([A|R], C, F, D) :-
14617 ( A=suspension(_, active, _, _, B, _, G, I, H, _),
14618 B==C,
14619 ( E=t(178, A, D),
14620 '$novel_production'(A, E),
14621 '$novel_production'(D, E)
14622 ),
14623 chr_pp_flag(check_impossible_rules, on),
14624 F=pragma(rule(_, _, G, _), _, _, _, C),
14625 conj2list(G, K),
14626 append(H, I, J),
14627 append(J, K, L),
14628 guard_entailment:entails_guard(L, fail)
14629 -> '$extend_history'(D, E),
14630 ( arg(2, D, M),
14631 setarg(2, D, active),
14632 ( M==not_stored_yet
14633 -> ( nb_getval('$chr_store_global_ground_chr_translate____rule___2',
14634 N),
14635 O=[D|N],
14636 b_setval('$chr_store_global_ground_chr_translate____rule___2',
14637 O),
14638 ( N=[P|_]
14639 -> setarg(4, P, O)
14640 ; true
14641 )
14642 ),
14643 nb_getval('$chr_store_multi_hash_chr_translate____rule___2-1',
14644 Q),
14645 insert_ht(Q, C, D)
14646 ; true
14647 )
14648 ),
14649 ( chr_warning(weird_program,
14650 'Heads will never match or guard will always fail in ~@.\n\tThis rule will never fire!\n',
14651 [format_rule(F)]),
14652 set_all_passive(C)
14653 ),
14654 ( D=suspension(_, active, _, _, _, _)
14655 -> setarg(2, D, inactive),
14656 rule___2__5__0__11(R, C, F, D)
14657 ; true
14658 )
14659 ; rule___2__5__0__11(R, C, F, D)
14660 ).
14661rule___2__5(A, B, C) :-
14662 rule___2__6(A, B, C).
14663rule___2__6(B, E, B1) :-
14664 nb_getval('$chr_store_multi_hash_chr_translate____prev_guard_list___6-1',
14665 A),
14666 lookup_ht(A, B, C),
14667 member(D, C),
14668 D=suspension(_, active, _, _, _, M, F, H, G, _),
14669 E=pragma(rule(K, L, F, I), Y, Z, A1, B),
14670 simplify_heads(G, H, F, I, J, S),
14671 J\==[],
14672 extract_arguments(K, N),
14673 extract_arguments(L, O),
14674 extract_arguments(M, P),
14675 replace_some_heads(N,
14676 O,
14677 P,
14678 J,
14679 Q,
14680 R,
14681 F,
14682 I,
14683 T),
14684 substitute_arguments(K, Q, V),
14685 substitute_arguments(L, R, W),
14686 append(S, T, U),
14687 list2conj(U, X),
14688 I1=pragma(rule(V, W, F, (X, I)), Y, Z, A1, B),
14689 ( K\==V
14690 ; L\==W
14691 ),
14692 !,
14693 ( var(B1)
14694 -> true
14695 ; arg(2, B1, C1),
14696 setarg(2, B1, removed),
14697 ( C1==not_stored_yet
14698 -> true
14699 ; ( arg(4, B1, D1),
14700 ( var(D1)
14701 -> nb_getval('$chr_store_global_ground_chr_translate____rule___2',
14702 E1),
14703 E1=[_|F1],
14704 b_setval('$chr_store_global_ground_chr_translate____rule___2',
14705 F1),
14706 ( F1=[G1|_]
14707 -> setarg(4, G1, _)
14708 ; true
14709 )
14710 ; D1=[_, _|F1],
14711 setarg(2, D1, F1),
14712 ( F1=[G1|_]
14713 -> setarg(4, G1, D1)
14714 ; true
14715 )
14716 )
14717 ),
14718 nb_getval('$chr_store_multi_hash_chr_translate____rule___2-1',
14719 H1),
14720 delete_ht(H1, B, B1)
14721 )
14722 ),
14723 rule(B, I1).
14724rule___2__6(B, D, E) :-
14725 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-3', A),
14726 lookup_ht(A, B, C),
14727 !,
14728 rule___2__6__0__13(C, B, D, E).
14729rule___2__6__0__13([], A, B, C) :-
14730 rule___2__7(A, B, C).
14731rule___2__6__0__13([A|H], C, I, J) :-
14732 ( ( A=suspension(_, active, _, _, E, G, B, _, _),
14733 B==C
14734 ),
14735 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-13',
14736 D),
14737 lookup_ht(D, k(E, C), F)
14738 -> rule___2__6__1__13(F,
14739 E,
14740 G,
14741 A,
14742 H,
14743 C,
14744 I,
14745 J)
14746 ; rule___2__6__0__13(H, C, I, J)
14747 ).
14748rule___2__6__1__13([], _, _, _, A, B, C, D) :-
14749 rule___2__6__0__13(A, B, C, D).
14750rule___2__6__1__13([A|K], D, L, B, M, F, N, O) :-
14751 ( ( A=suspension(_, active, _, _, C, I, E, J, _),
14752 A\==B,
14753 C==D,
14754 E==F
14755 ),
14756 nb_getval('$chr_store_multi_hash_chr_translate____prev_guard_list___6-1',
14757 G),
14758 lookup_ht(G, F, H)
14759 -> rule___2__6__2__13(H,
14760 I,
14761 J,
14762 A,
14763 K,
14764 D,
14765 L,
14766 B,
14767 M,
14768 F,
14769 N,
14770 O)
14771 ; rule___2__6__1__13(K,
14772 D,
14773 L,
14774 B,
14775 M,
14776 F,
14777 N,
14778 O)
14779 ).
14780rule___2__6__2__13([], _, _, _, A, B, C, D, E, F, G, H) :-
14781 rule___2__6__1__13(A,
14782 B,
14783 C,
14784 D,
14785 E,
14786 F,
14787 G,
14788 H).
14789rule___2__6__2__13([A|E], F, G, H, I, J, K, L, M, C, N, O) :-
14790 ( ( A=suspension(_, active, _, _, B, _, _, _, _, _),
14791 B==C
14792 ),
14793 nb_getval('$chr_store_global_ground_chr_translate____multiple_occ_constraints_checked___1',
14794 D)
14795 -> rule___2__6__3__13(D,
14796 A,
14797 E,
14798 F,
14799 G,
14800 H,
14801 I,
14802 J,
14803 K,
14804 L,
14805 M,
14806 C,
14807 N,
14808 O)
14809 ; rule___2__6__2__13(E,
14810 F,
14811 G,
14812 H,
14813 I,
14814 J,
14815 K,
14816 L,
14817 M,
14818 C,
14819 N,
14820 O)
14821 ).
14822rule___2__6__3__13([], _, A, B, C, D, E, F, G, H, I, J, K, L) :-
14823 rule___2__6__2__13(A,
14824 B,
14825 C,
14826 D,
14827 E,
14828 F,
14829 G,
14830 H,
14831 I,
14832 J,
14833 K,
14834 L).
14835rule___2__6__3__13([A|U], V, W, B, S, X, Y, F, C, Z, A1, R, D, L) :-
14836 ( A=suspension(_, active, _, G),
14837 B<C,
14838 chr_pp_flag(occurrence_subsumption, on),
14839 D=pragma(rule(E, _, _, _), _, _, _, _),
14840 E\==[],
14841 \+ tree_set_memberchk(F, G)
14842 -> ( setarg(2, A, removed),
14843 arg(3, A, H),
14844 ( var(H)
14845 -> nb_getval('$chr_store_global_ground_chr_translate____multiple_occ_constraints_checked___1',
14846 I),
14847 I=[_|J],
14848 b_setval('$chr_store_global_ground_chr_translate____multiple_occ_constraints_checked___1',
14849 J),
14850 ( J=[K|_]
14851 -> setarg(3, K, _)
14852 ; true
14853 )
14854 ; H=[_, _|J],
14855 setarg(2, H, J),
14856 ( J=[K|_]
14857 -> setarg(3, K, H)
14858 ; true
14859 )
14860 )
14861 ),
14862 ( arg(2, L, M),
14863 setarg(2, L, active),
14864 ( M==not_stored_yet
14865 -> ( nb_getval('$chr_store_global_ground_chr_translate____rule___2',
14866 N),
14867 O=[L|N],
14868 b_setval('$chr_store_global_ground_chr_translate____rule___2',
14869 O),
14870 ( N=[P|_]
14871 -> setarg(4, P, O)
14872 ; true
14873 )
14874 ),
14875 nb_getval('$chr_store_multi_hash_chr_translate____rule___2-1',
14876 Q),
14877 insert_ht(Q, R, L)
14878 ; true
14879 )
14880 ),
14881 ( first_occ_in_rule(R, F, B, S),
14882 tree_set_add(G, F, T),
14883 multiple_occ_constraints_checked(T)
14884 ),
14885 ( L=suspension(_, active, _, _, _, _)
14886 -> setarg(2, L, inactive),
14887 rule___2__6__3__13(U,
14888 V,
14889 W,
14890 B,
14891 S,
14892 X,
14893 Y,
14894 F,
14895 C,
14896 Z,
14897 A1,
14898 R,
14899 D,
14900 L)
14901 ; true
14902 )
14903 ; rule___2__6__3__13(U,
14904 V,
14905 W,
14906 B,
14907 S,
14908 X,
14909 Y,
14910 F,
14911 C,
14912 Z,
14913 A1,
14914 R,
14915 D,
14916 L)
14917 ).
14918rule___2__6(A, B, C) :-
14919 rule___2__7(A, B, C).
14920rule___2__7(B, D, E) :-
14921 nb_getval('$chr_store_multi_hash_chr_translate____passive___2-1', A),
14922 lookup_ht(A, B, C),
14923 !,
14924 rule___2__7__0__15(C, B, D, E).
14925rule___2__7__0__15([], A, B, C) :-
14926 rule___2__8(A, B, C).
14927rule___2__7__0__15([A|P], C, F, D) :-
14928 ( A=suspension(_, active, _, B, G),
14929 B==C,
14930 ( E=t(251, D, A),
14931 '$novel_production'(D, E),
14932 '$novel_production'(A, E)
14933 ),
14934 F=pragma(rule(_, _, _, _), ids([G|M], N), _, _, C)
14935 -> '$extend_history'(D, E),
14936 ( arg(2, D, H),
14937 setarg(2, D, active),
14938 ( H==not_stored_yet
14939 -> ( nb_getval('$chr_store_global_ground_chr_translate____rule___2',
14940 I),
14941 J=[D|I],
14942 b_setval('$chr_store_global_ground_chr_translate____rule___2',
14943 J),
14944 ( I=[K|_]
14945 -> setarg(4, K, J)
14946 ; true
14947 )
14948 ),
14949 nb_getval('$chr_store_multi_hash_chr_translate____rule___2-1',
14950 L),
14951 insert_ht(L, C, D)
14952 ; true
14953 )
14954 ),
14955 ( append(M, N, O),
14956 check_all_passive(C, O)
14957 ),
14958 ( D=suspension(_, active, _, _, _, _)
14959 -> setarg(2, D, inactive),
14960 rule___2__7__0__15(P, C, F, D)
14961 ; true
14962 )
14963 ; rule___2__7__0__15(P, C, F, D)
14964 ).
14965rule___2__7(A, B, C) :-
14966 rule___2__8(A, B, C).
14967rule___2__8(B, D, E) :-
14968 nb_getval('$chr_store_multi_hash_chr_translate____passive___2-1', A),
14969 lookup_ht(A, B, C),
14970 !,
14971 rule___2__8__0__16(C, B, D, E).
14972rule___2__8__0__16([], A, B, C) :-
14973 rule___2__9(A, B, C).
14974rule___2__8__0__16([A|N], C, F, D) :-
14975 ( A=suspension(_, active, _, B, G),
14976 B==C,
14977 ( E=t(252, D, A),
14978 '$novel_production'(D, E),
14979 '$novel_production'(A, E)
14980 ),
14981 F=pragma(rule(_, _, _, _), ids([], [G|M]), _, _, C)
14982 -> '$extend_history'(D, E),
14983 ( arg(2, D, H),
14984 setarg(2, D, active),
14985 ( H==not_stored_yet
14986 -> ( nb_getval('$chr_store_global_ground_chr_translate____rule___2',
14987 I),
14988 J=[D|I],
14989 b_setval('$chr_store_global_ground_chr_translate____rule___2',
14990 J),
14991 ( I=[K|_]
14992 -> setarg(4, K, J)
14993 ; true
14994 )
14995 ),
14996 nb_getval('$chr_store_multi_hash_chr_translate____rule___2-1',
14997 L),
14998 insert_ht(L, C, D)
14999 ; true
15000 )
15001 ),
15002 check_all_passive(C, M),
15003 ( D=suspension(_, active, _, _, _, _)
15004 -> setarg(2, D, inactive),
15005 rule___2__8__0__16(N, C, F, D)
15006 ; true
15007 )
15008 ; rule___2__8__0__16(N, C, F, D)
15009 ).
15010rule___2__8(A, B, C) :-
15011 rule___2__9(A, B, C).
15012rule___2__9(B, D, E) :-
15013 nb_getval('$chr_store_multi_hash_chr_translate____check_all_passive___2-12',
15014 A),
15015 lookup_ht(A, k(B, []), C),
15016 !,
15017 rule___2__9__0__17(C, B, D, E).
15018rule___2__9__0__17([], A, B, C) :-
15019 rule___2__10(A, B, C).
15020rule___2__9__0__17([A|N], C, M, G) :-
15021 ( A=suspension(_, active, B, D),
15022 B==C,
15023 D=[]
15024 -> ( setarg(2, A, removed),
15025 ( nb_getval('$chr_store_multi_hash_chr_translate____check_all_passive___2-12',
15026 E),
15027 delete_ht(E, k(C, []), A)
15028 ),
15029 nb_getval('$chr_store_multi_hash_chr_translate____check_all_passive___2-1',
15030 F),
15031 delete_ht(F, C, A)
15032 ),
15033 ( arg(2, G, H),
15034 setarg(2, G, active),
15035 ( H==not_stored_yet
15036 -> ( nb_getval('$chr_store_global_ground_chr_translate____rule___2',
15037 I),
15038 J=[G|I],
15039 b_setval('$chr_store_global_ground_chr_translate____rule___2',
15040 J),
15041 ( I=[K|_]
15042 -> setarg(4, K, J)
15043 ; true
15044 )
15045 ),
15046 nb_getval('$chr_store_multi_hash_chr_translate____rule___2-1',
15047 L),
15048 insert_ht(L, C, G)
15049 ; true
15050 )
15051 ),
15052 chr_warning(weird_program,
15053 'All heads passive in ~@.\n\tThis rule never fires. Please check your program.\n',
15054 [format_rule(M)]),
15055 ( G=suspension(_, active, _, _, _, _)
15056 -> setarg(2, G, inactive),
15057 rule___2__9__0__17(N, C, M, G)
15058 ; true
15059 )
15060 ; rule___2__9__0__17(N, C, M, G)
15061 ).
15062rule___2__9(A, B, C) :-
15063 rule___2__10(A, B, C).
15064rule___2__10(B, D, E) :-
15065 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-3', A),
15066 lookup_ht(A, B, C),
15067 !,
15068 rule___2__10__0__22(C, B, D, E).
15069rule___2__10__0__22([], A, B, C) :-
15070 rule___2__11(A, B, C).
15071rule___2__10__0__22([A|H], C, I, J) :-
15072 ( ( A=suspension(_, active, _, _, E, _, B, F, G),
15073 B==C
15074 ),
15075 nb_getval('$chr_store_global_ground_chr_translate____partial_wake_analysis___0',
15076 D)
15077 -> rule___2__10__1__22(D,
15078 E,
15079 F,
15080 G,
15081 A,
15082 H,
15083 C,
15084 I,
15085 J)
15086 ; rule___2__10__0__22(H, C, I, J)
15087 ).
15088rule___2__10__1__22([], _, _, _, _, A, B, C, D) :-
15089 rule___2__10__0__22(A, B, C, D).
15090rule___2__10__1__22([A|E], C, F, G, H, I, J, K, L) :-
15091 ( A=suspension(_, active, _, _),
15092 nb_getval('$chr_store_multi_hash_chr_translate____constraint_mode___2-1',
15093 B),
15094 lookup_ht(B, C, D)
15095 -> rule___2__10__2__22(D,
15096 A,
15097 E,
15098 C,
15099 F,
15100 G,
15101 H,
15102 I,
15103 J,
15104 K,
15105 L)
15106 ; rule___2__10__1__22(E,
15107 C,
15108 F,
15109 G,
15110 H,
15111 I,
15112 J,
15113 K,
15114 L)
15115 ).
15116rule___2__10__2__22([], _, A, B, C, D, E, F, G, H, I) :-
15117 rule___2__10__1__22(A,
15118 B,
15119 C,
15120 D,
15121 E,
15122 F,
15123 G,
15124 H,
15125 I).
15126rule___2__10__2__22([A|X], D, Y, C, O, P, E, Z, M, N, F) :-
15127 ( A=suspension(_, active, _, _, B, U),
15128 B==C,
15129 G=t(330, D, E, F, A),
15130 '$novel_production'(D, G),
15131 '$novel_production'(E, G),
15132 '$novel_production'(F, G),
15133 '$novel_production'(A, G)
15134 -> '$extend_history'(F, G),
15135 ( arg(2, F, H),
15136 setarg(2, F, active),
15137 ( H==not_stored_yet
15138 -> ( nb_getval('$chr_store_global_ground_chr_translate____rule___2',
15139 I),
15140 J=[F|I],
15141 b_setval('$chr_store_global_ground_chr_translate____rule___2',
15142 J),
15143 ( I=[K|_]
15144 -> setarg(4, K, J)
15145 ; true
15146 )
15147 ),
15148 nb_getval('$chr_store_multi_hash_chr_translate____rule___2-1',
15149 L),
15150 insert_ht(L, M, F)
15151 ; true
15152 )
15153 ),
15154 ( N=pragma(rule(Q, W, S, _), _, _, _, _),
15155 ( is_passive(M, O)
15156 -> true
15157 ; P==simplification
15158 -> select(R, Q, _),
15159 R=..[_|T],
15160 term_variables(S, V),
15161 partial_wake_args(T, U, V, C)
15162 ; select(R, W, _),
15163 R=..[_|T],
15164 term_variables(S, V),
15165 partial_wake_args(T, U, V, C)
15166 )
15167 ),
15168 ( F=suspension(_, active, _, _, _, _)
15169 -> setarg(2, F, inactive),
15170 rule___2__10__2__22(X,
15171 D,
15172 Y,
15173 C,
15174 O,
15175 P,
15176 E,
15177 Z,
15178 M,
15179 N,
15180 F)
15181 ; true
15182 )
15183 ; rule___2__10__2__22(X,
15184 D,
15185 Y,
15186 C,
15187 O,
15188 P,
15189 E,
15190 Z,
15191 M,
15192 N,
15193 F)
15194 ).
15195rule___2__10(A, B, C) :-
15196 rule___2__11(A, B, C).
15197rule___2__11(G, _, A) :-
15198 arg(2, A, B),
15199 setarg(2, A, active),
15200 ( B==not_stored_yet
15201 -> ( nb_getval('$chr_store_global_ground_chr_translate____rule___2',
15202 C),
15203 D=[A|C],
15204 b_setval('$chr_store_global_ground_chr_translate____rule___2', D),
15205 ( C=[E|_]
15206 -> setarg(4, E, D)
15207 ; true
15208 )
15209 ),
15210 nb_getval('$chr_store_multi_hash_chr_translate____rule___2-1', F),
15211 insert_ht(F, G, A)
15212 ; true
15213 ).
15214get_rule(B, E) :-
15215 nb_getval('$chr_store_multi_hash_chr_translate____rule___2-1', A),
15216 lookup_ht(A, B, C),
15217 member(D, C),
15218 D=suspension(_, active, _, _, _, F),
15219 !,
15220 E=F.
15221get_rule(_, _) :-
15222 fail.
15223least_occurrence(B, [F|O]) :-
15224 ( nb_getval('$chr_store_multi_hash_chr_translate____rule___2-1', A),
15225 lookup_ht(A, B, C),
15226 member(D, C),
15227 D=suspension(_, active, _, _, _, _)
15228 ),
15229 ( nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-34',
15230 E),
15231 lookup_ht(E, k(B, F), G),
15232 member(H, G),
15233 H=suspension(_, active, _, _, J, N, _, _, _),
15234 nb_getval('$chr_store_multi_hash_chr_translate____allocation_occurrence___2-1',
15235 I),
15236 lookup_ht(I, J, K),
15237 member(L, K),
15238 L=suspension(_, active, _, _, M),
15239 M>=N,
15240 \+ may_trigger(J),
15241 !,
15242 least_occurrence(B, O)
15243 ; nb_getval('$chr_store_multi_hash_chr_translate____passive___2-12',
15244 P),
15245 lookup_ht(P, k(B, F), Q),
15246 member(R, Q),
15247 R=suspension(_, active, _, _, _),
15248 !,
15249 least_occurrence(B, O)
15250 ).
15251least_occurrence(A, B) :-
15252 E=suspension(C, active, A, B),
15253 'chr gen_id'(C),
15254 nb_getval('$chr_store_multi_hash_chr_translate____least_occurrence___2-12',
15255 D),
15256 insert_ht(D, k(A, B), E),
15257 nb_getval('$chr_store_multi_hash_chr_translate____least_occurrence___2-1',
15258 F),
15259 insert_ht(F, A, E).
15260is_least_occurrence(B) :-
15261 nb_getval('$chr_store_multi_hash_chr_translate____least_occurrence___2-12',
15262 A),
15263 lookup_ht(A, k(B, []), C),
15264 member(D, C),
15265 D=suspension(_, active, _, _),
15266 !.
15267is_least_occurrence(_) :-
15268 fail.
15269stored_in_guard_lookahead(B, C) :-
15270 ( nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-12',
15271 A),
15272 lookup_ht(A, k(B, C), D),
15273 member(E, D),
15274 E=suspension(_, active, _, _, _, _, G, H, L)
15275 ),
15276 ( nb_getval('$chr_store_multi_hash_chr_translate____passive___2-12',
15277 F),
15278 lookup_ht(F, k(G, H), I),
15279 member(J, I),
15280 J=suspension(_, active, _, _, _),
15281 !,
15282 K is C+1,
15283 stored_in_guard_lookahead(B, K)
15284 ; !,
15285 L==simplification,
15286 ( is_stored_in_guard(B, G)
15287 -> true
15288 ; M is C+1,
15289 stored_in_guard_lookahead(B, M)
15290 )
15291 ).
15292stored_in_guard_lookahead(_, _) :-
15293 fail.
15294constraint_index(A, B) :-
15295 E=suspension(C, active, A, B),
15296 'chr gen_id'(C),
15297 nb_getval('$chr_store_multi_hash_chr_translate____constraint_index___2-2',
15298 D),
15299 insert_ht(D, B, E),
15300 nb_getval('$chr_store_multi_hash_chr_translate____constraint_index___2-1',
15301 F),
15302 insert_ht(F, A, E).
15303get_constraint_index(B, E) :-
15304 nb_getval('$chr_store_multi_hash_chr_translate____constraint_index___2-1',
15305 A),
15306 lookup_ht(A, B, C),
15307 member(D, C),
15308 D=suspension(_, active, _, F),
15309 !,
15310 E=F.
15311get_constraint_index(_, _) :-
15312 fail.
15313get_indexed_constraint(B, E) :-
15314 nb_getval('$chr_store_multi_hash_chr_translate____constraint_index___2-2',
15315 A),
15316 lookup_ht(A, B, C),
15317 member(D, C),
15318 D=suspension(_, active, F, _),
15319 !,
15320 E=F.
15321get_indexed_constraint(_, _) :-
15322 fail.
15323max_constraint_index(A) :-
15324 C=suspension(B, active, _, A),
15325 'chr gen_id'(B),
15326 nb_getval('$chr_store_global_ground_chr_translate____max_constraint_index___1',
15327 D),
15328 E=[C|D],
15329 b_setval('$chr_store_global_ground_chr_translate____max_constraint_index___1',
15330 E),
15331 ( D=[F|_]
15332 -> setarg(3, F, E)
15333 ; true
15334 ).
15335get_max_constraint_index(C) :-
15336 nb_getval('$chr_store_global_ground_chr_translate____max_constraint_index___1',
15337 A),
15338 member(B, A),
15339 B=suspension(_, active, _, D),
15340 !,
15341 C=D.
15342get_max_constraint_index(0).
15343identifier_size(C) :-
15344 nb_getval('$chr_store_global_ground_chr_translate____identifier_size___1',
15345 A),
15346 ( member(B, A),
15347 B=suspension(_, active, _, _),
15348 !
15349 ; !,
15350 identifier_size___1__0__0__2(A, C)
15351 ).
15352identifier_size___1__0__0__2([], A) :-
15353 identifier_size___1__1(A).
15354identifier_size___1__0__0__2([A|F], G) :-
15355 ( A=suspension(_, active, _, _)
15356 -> ( setarg(2, A, removed),
15357 arg(3, A, B),
15358 ( var(B)
15359 -> nb_getval('$chr_store_global_ground_chr_translate____identifier_size___1',
15360 C),
15361 C=[_|D],
15362 b_setval('$chr_store_global_ground_chr_translate____identifier_size___1',
15363 D),
15364 ( D=[E|_]
15365 -> setarg(3, E, _)
15366 ; true
15367 )
15368 ; B=[_, _|D],
15369 setarg(2, B, D),
15370 ( D=[E|_]
15371 -> setarg(3, E, B)
15372 ; true
15373 )
15374 )
15375 ),
15376 identifier_size___1__0__0__2(F, G)
15377 ; identifier_size___1__0__0__2(F, G)
15378 ).
15379identifier_size(A) :-
15380 identifier_size___1__1(A).
15381identifier_size___1__1(A) :-
15382 C=suspension(B, active, _, A),
15383 'chr gen_id'(B),
15384 nb_getval('$chr_store_global_ground_chr_translate____identifier_size___1',
15385 D),
15386 E=[C|D],
15387 b_setval('$chr_store_global_ground_chr_translate____identifier_size___1',
15388 E),
15389 ( D=[F|_]
15390 -> setarg(3, F, E)
15391 ; true
15392 ).
15393get_identifier_size(C) :-
15394 nb_getval('$chr_store_global_ground_chr_translate____identifier_size___1',
15395 A),
15396 member(B, A),
15397 B=suspension(_, active, _, D),
15398 !,
15399 C=D.
15400get_identifier_size(1).
15401identifier_index(B, C, F) :-
15402 ( nb_getval('$chr_store_multi_hash_chr_translate____identifier_index___3-12',
15403 A),
15404 lookup_ht(A, k(B, C), D)
15405 ),
15406 ( member(E, D),
15407 E=suspension(_, active, _, _, _),
15408 !
15409 ; !,
15410 identifier_index___3__0__0__2(D, B, C, F)
15411 ).
15412identifier_index___3__0__0__2([], A, B, C) :-
15413 identifier_index___3__1(A, B, C).
15414identifier_index___3__0__0__2([A|G], C, E, H) :-
15415 ( A=suspension(_, active, B, D, _),
15416 B==C,
15417 D==E
15418 -> ( setarg(2, A, removed),
15419 nb_getval('$chr_store_multi_hash_chr_translate____identifier_index___3-12',
15420 F),
15421 delete_ht(F, k(C, E), A)
15422 ),
15423 identifier_index___3__0__0__2(G, C, E, H)
15424 ; identifier_index___3__0__0__2(G, C, E, H)
15425 ).
15426identifier_index(A, B, C) :-
15427 identifier_index___3__1(A, B, C).
15428identifier_index___3__1(A, B, C) :-
15429 F=suspension(D, active, A, B, C),
15430 'chr gen_id'(D),
15431 nb_getval('$chr_store_multi_hash_chr_translate____identifier_index___3-12',
15432 E),
15433 insert_ht(E, k(A, B), F).
15434get_identifier_index(B, C, F) :-
15435 nb_getval('$chr_store_multi_hash_chr_translate____identifier_index___3-12',
15436 A),
15437 lookup_ht(A, k(B, C), D),
15438 member(E, D),
15439 E=suspension(_, active, _, _, G),
15440 !,
15441 F=G.
15442get_identifier_index(H, I, K) :-
15443 nb_getval('$chr_store_global_ground_chr_translate____identifier_size___1',
15444 A),
15445 member(B, A),
15446 B=suspension(_, active, _, G),
15447 !,
15448 setarg(2, B, removed),
15449 arg(3, B, C),
15450 ( var(C)
15451 -> nb_getval('$chr_store_global_ground_chr_translate____identifier_size___1',
15452 D),
15453 D=[_|E],
15454 b_setval('$chr_store_global_ground_chr_translate____identifier_size___1',
15455 E),
15456 ( E=[F|_]
15457 -> setarg(3, F, _)
15458 ; true
15459 )
15460 ; C=[_, _|E],
15461 setarg(2, C, E),
15462 ( E=[F|_]
15463 -> setarg(3, F, C)
15464 ; true
15465 )
15466 ),
15467 J is G+1,
15468 identifier_index(H, I, J),
15469 identifier_size(J),
15470 K=J.
15471get_identifier_index(A, B, C) :-
15472 identifier_index(A, B, 2),
15473 identifier_size(2),
15474 C=2.
15475type_indexed_identifier_size(B, E) :-
15476 ( nb_getval('$chr_store_multi_hash_chr_translate____type_indexed_identifier_size___2-1',
15477 A),
15478 lookup_ht(A, B, C)
15479 ),
15480 ( member(D, C),
15481 D=suspension(_, active, _, _),
15482 !
15483 ; !,
15484 type_indexed_identifier_size___2__0__0__2(C, B, E)
15485 ).
15486type_indexed_identifier_size___2__0__0__2([], A, B) :-
15487 type_indexed_identifier_size___2__1(A, B).
15488type_indexed_identifier_size___2__0__0__2([A|E], C, F) :-
15489 ( A=suspension(_, active, B, _),
15490 B==C
15491 -> ( setarg(2, A, removed),
15492 nb_getval('$chr_store_multi_hash_chr_translate____type_indexed_identifier_size___2-1',
15493 D),
15494 delete_ht(D, C, A)
15495 ),
15496 type_indexed_identifier_size___2__0__0__2(E, C, F)
15497 ; type_indexed_identifier_size___2__0__0__2(E, C, F)
15498 ).
15499type_indexed_identifier_size(A, B) :-
15500 type_indexed_identifier_size___2__1(A, B).
15501type_indexed_identifier_size___2__1(A, B) :-
15502 E=suspension(C, active, A, B),
15503 'chr gen_id'(C),
15504 nb_getval('$chr_store_multi_hash_chr_translate____type_indexed_identifier_size___2-1',
15505 D),
15506 insert_ht(D, A, E).
15507get_type_indexed_identifier_size(B, E) :-
15508 nb_getval('$chr_store_multi_hash_chr_translate____type_indexed_identifier_size___2-1',
15509 A),
15510 lookup_ht(A, B, C),
15511 member(D, C),
15512 D=suspension(_, active, _, F),
15513 !,
15514 E=F.
15515get_type_indexed_identifier_size(_, 1).
15516type_indexed_identifier_index(F, B, C, G) :-
15517 ( nb_getval('$chr_store_multi_hash_chr_translate____type_indexed_identifier_index___4-23',
15518 A),
15519 lookup_ht(A, k(B, C), D)
15520 ),
15521 ( member(E, D),
15522 E=suspension(_, active, _, _, _, _),
15523 !
15524 ; !,
15525 type_indexed_identifier_index___4__0__0__2(D,
15526 F,
15527 B,
15528 C,
15529 G)
15530 ).
15531type_indexed_identifier_index___4__0__0__2([], A, B, C, D) :-
15532 type_indexed_identifier_index___4__1(A, B, C, D).
15533type_indexed_identifier_index___4__0__0__2([A|I], J, C, E, K) :-
15534 ( A=suspension(_, active, G, B, D, _),
15535 B==C,
15536 D==E
15537 -> ( setarg(2, A, removed),
15538 ( nb_getval('$chr_store_multi_hash_chr_translate____type_indexed_identifier_index___4-123',
15539 F),
15540 delete_ht(F, k(G, C, E), A)
15541 ),
15542 nb_getval('$chr_store_multi_hash_chr_translate____type_indexed_identifier_index___4-23',
15543 H),
15544 delete_ht(H, k(C, E), A)
15545 ),
15546 type_indexed_identifier_index___4__0__0__2(I,
15547 J,
15548 C,
15549 E,
15550 K)
15551 ; type_indexed_identifier_index___4__0__0__2(I,
15552 J,
15553 C,
15554 E,
15555 K)
15556 ).
15557type_indexed_identifier_index(A, B, C, D) :-
15558 type_indexed_identifier_index___4__1(A, B, C, D).
15559type_indexed_identifier_index___4__1(A, B, C, D) :-
15560 G=suspension(E, active, A, B, C, D),
15561 'chr gen_id'(E),
15562 nb_getval('$chr_store_multi_hash_chr_translate____type_indexed_identifier_index___4-123',
15563 F),
15564 insert_ht(F, k(A, B, C), G),
15565 nb_getval('$chr_store_multi_hash_chr_translate____type_indexed_identifier_index___4-23',
15566 H),
15567 insert_ht(H, k(B, C), G).
15568get_type_indexed_identifier_index(B, C, D, G) :-
15569 nb_getval('$chr_store_multi_hash_chr_translate____type_indexed_identifier_index___4-123',
15570 A),
15571 lookup_ht(A, k(B, C, D), E),
15572 member(F, E),
15573 F=suspension(_, active, _, _, _, H),
15574 !,
15575 G=H.
15576get_type_indexed_identifier_index(B, G, H, J) :-
15577 nb_getval('$chr_store_multi_hash_chr_translate____type_indexed_identifier_size___2-1',
15578 A),
15579 lookup_ht(A, B, C),
15580 member(D, C),
15581 D=suspension(_, active, _, F),
15582 !,
15583 setarg(2, D, removed),
15584 nb_getval('$chr_store_multi_hash_chr_translate____type_indexed_identifier_size___2-1',
15585 E),
15586 delete_ht(E, B, D),
15587 I is F+1,
15588 type_indexed_identifier_index(B, G, H, I),
15589 type_indexed_identifier_size(B, I),
15590 J=I.
15591get_type_indexed_identifier_index(A, B, C, D) :-
15592 type_indexed_identifier_index(A, B, C, 2),
15593 type_indexed_identifier_size(A, 2),
15594 D=2.
15595no_history(A) :-
15596 D=suspension(B, active, A),
15597 'chr gen_id'(B),
15598 nb_getval('$chr_store_multi_hash_chr_translate____no_history___1-1', C),
15599 insert_ht(C, A, D).
15600has_no_history(B) :-
15601 nb_getval('$chr_store_multi_hash_chr_translate____no_history___1-1', A),
15602 lookup_ht(A, B, C),
15603 member(D, C),
15604 D=suspension(_, active, _),
15605 !.
15606has_no_history(_) :-
15607 fail.
15608history(A, B, C) :-
15609 history___3__0(A, B, C, _).
15610history___3__0(B, D, E, C) :-
15611 nb_getval('$chr_store_multi_hash_chr_translate____history___3-1', A),
15612 lookup_ht(A, B, G),
15613 !,
15614 C=suspension(F, not_stored_yet, t, B, D, E),
15615 'chr gen_id'(F),
15616 history___3__0__0__1(G, B, D, E, C).
15617history___3__0__0__1([], A, B, C, D) :-
15618 history___3__1(A, B, C, D).
15619history___3__0__0__1([A|M], C, K, G, D) :-
15620 ( A=suspension(_, active, _, B, _, _),
15621 B==C,
15622 E=t(95, D, A),
15623 '$novel_production'(D, E),
15624 '$novel_production'(A, E)
15625 -> '$extend_history'(D, E),
15626 ( arg(2, D, F),
15627 setarg(2, D, active),
15628 ( F==not_stored_yet
15629 -> ( '$chr_store_constants_chr_translate____history___3___[3]'(G,
15630 H)
15631 -> nb_getval(H, I),
15632 b_setval(H, [D|I])
15633 ; true
15634 ),
15635 ( nb_getval('$chr_store_multi_hash_chr_translate____history___3-2',
15636 J),
15637 insert_ht(J, K, D)
15638 ),
15639 nb_getval('$chr_store_multi_hash_chr_translate____history___3-1',
15640 L),
15641 insert_ht(L, C, D)
15642 ; true
15643 )
15644 ),
15645 chr_error(syntax,
15646 'Only one pragma history allowed per rule (rule number ~w)\n',
15647 [C]),
15648 ( D=suspension(_, active, _, _, _, _)
15649 -> setarg(2, D, inactive),
15650 history___3__0__0__1(M, C, K, G, D)
15651 ; true
15652 )
15653 ; history___3__0__0__1(M, C, K, G, D)
15654 ).
15655history___3__0(B, C, D, A) :-
15656 A=suspension(E, not_stored_yet, t, B, C, D),
15657 'chr gen_id'(E),
15658 history___3__1(B, C, D, A).
15659history___3__1(B, D, E, F) :-
15660 nb_getval('$chr_store_multi_hash_chr_translate____history___3-1', A),
15661 lookup_ht(A, B, C),
15662 !,
15663 history___3__1__0__2(C, B, D, E, F).
15664history___3__1__0__2([], A, B, C, D) :-
15665 history___3__2(A, B, C, D).
15666history___3__1__0__2([A|M], C, K, G, D) :-
15667 ( A=suspension(_, active, _, B, _, _),
15668 B==C,
15669 E=t(95, A, D),
15670 '$novel_production'(A, E),
15671 '$novel_production'(D, E)
15672 -> '$extend_history'(D, E),
15673 ( arg(2, D, F),
15674 setarg(2, D, active),
15675 ( F==not_stored_yet
15676 -> ( '$chr_store_constants_chr_translate____history___3___[3]'(G,
15677 H)
15678 -> nb_getval(H, I),
15679 b_setval(H, [D|I])
15680 ; true
15681 ),
15682 ( nb_getval('$chr_store_multi_hash_chr_translate____history___3-2',
15683 J),
15684 insert_ht(J, K, D)
15685 ),
15686 nb_getval('$chr_store_multi_hash_chr_translate____history___3-1',
15687 L),
15688 insert_ht(L, C, D)
15689 ; true
15690 )
15691 ),
15692 chr_error(syntax,
15693 'Only one pragma history allowed per rule (rule number ~w)\n',
15694 [C]),
15695 ( D=suspension(_, active, _, _, _, _)
15696 -> setarg(2, D, inactive),
15697 history___3__1__0__2(M, C, K, G, D)
15698 ; true
15699 )
15700 ; history___3__1__0__2(M, C, K, G, D)
15701 ).
15702history___3__1(A, B, C, D) :-
15703 history___3__2(A, B, C, D).
15704history___3__2(D, B, E, F) :-
15705 nb_getval('$chr_store_multi_hash_chr_translate____history___3-2', A),
15706 lookup_ht(A, B, C),
15707 !,
15708 history___3__2__0__3(C, D, B, E, F).
15709history___3__2__0__3([], A, B, C, D) :-
15710 history___3__3(A, B, C, D).
15711history___3__2__0__3([A|Q], L, C, G, D) :-
15712 ( A=suspension(_, active, _, P, B, M),
15713 B==C,
15714 E=t(96, D, A),
15715 '$novel_production'(D, E),
15716 '$novel_production'(A, E)
15717 -> '$extend_history'(D, E),
15718 ( arg(2, D, F),
15719 setarg(2, D, active),
15720 ( F==not_stored_yet
15721 -> ( '$chr_store_constants_chr_translate____history___3___[3]'(G,
15722 H)
15723 -> nb_getval(H, I),
15724 b_setval(H, [D|I])
15725 ; true
15726 ),
15727 ( nb_getval('$chr_store_multi_hash_chr_translate____history___3-2',
15728 J),
15729 insert_ht(J, C, D)
15730 ),
15731 nb_getval('$chr_store_multi_hash_chr_translate____history___3-1',
15732 K),
15733 insert_ht(K, L, D)
15734 ; true
15735 )
15736 ),
15737 ( length(G, N),
15738 length(M, O),
15739 ( N\==O
15740 -> chr_error(syntax,
15741 'The history named ~w does not always range over an equal amount of occurrences.\n',
15742 [C])
15743 ; test_named_history_id_pairs(L, G, P, M)
15744 )
15745 ),
15746 ( D=suspension(_, active, _, _, _, _)
15747 -> setarg(2, D, inactive),
15748 history___3__2__0__3(Q, L, C, G, D)
15749 ; true
15750 )
15751 ; history___3__2__0__3(Q, L, C, G, D)
15752 ).
15753history___3__2(A, B, C, D) :-
15754 history___3__3(A, B, C, D).
15755history___3__3(D, B, E, F) :-
15756 nb_getval('$chr_store_multi_hash_chr_translate____history___3-2', A),
15757 lookup_ht(A, B, C),
15758 !,
15759 history___3__3__0__4(C, D, B, E, F).
15760history___3__3__0__4([], A, B, C, D) :-
15761 history___3__4(A, B, C, D).
15762history___3__3__0__4([A|Q], L, C, G, D) :-
15763 ( A=suspension(_, active, _, P, B, M),
15764 B==C,
15765 E=t(96, A, D),
15766 '$novel_production'(A, E),
15767 '$novel_production'(D, E)
15768 -> '$extend_history'(D, E),
15769 ( arg(2, D, F),
15770 setarg(2, D, active),
15771 ( F==not_stored_yet
15772 -> ( '$chr_store_constants_chr_translate____history___3___[3]'(G,
15773 H)
15774 -> nb_getval(H, I),
15775 b_setval(H, [D|I])
15776 ; true
15777 ),
15778 ( nb_getval('$chr_store_multi_hash_chr_translate____history___3-2',
15779 J),
15780 insert_ht(J, C, D)
15781 ),
15782 nb_getval('$chr_store_multi_hash_chr_translate____history___3-1',
15783 K),
15784 insert_ht(K, L, D)
15785 ; true
15786 )
15787 ),
15788 ( length(M, N),
15789 length(G, O),
15790 ( N\==O
15791 -> chr_error(syntax,
15792 'The history named ~w does not always range over an equal amount of occurrences.\n',
15793 [C])
15794 ; test_named_history_id_pairs(P, M, L, G)
15795 )
15796 ),
15797 ( D=suspension(_, active, _, _, _, _)
15798 -> setarg(2, D, inactive),
15799 history___3__3__0__4(Q, L, C, G, D)
15800 ; true
15801 )
15802 ; history___3__3__0__4(Q, L, C, G, D)
15803 ).
15804history___3__3(A, B, C, D) :-
15805 history___3__4(A, B, C, D).
15806history___3__4(B, C, [], D) :-
15807 nb_getval('$chr_store_global_ground_chr_translate____find_empty_named_histories___0',
15808 A),
15809 !,
15810 history___3__4__0__6(A, B, C, [], D).
15811history___3__4__0__6([], A, B, C, D) :-
15812 history___3__5(A, B, C, D).
15813history___3__4__0__6([A|L], K, I, E, B) :-
15814 ( A=suspension(_, active, _, _),
15815 C=t(142, A, B),
15816 '$novel_production'(A, C),
15817 '$novel_production'(B, C)
15818 -> '$extend_history'(B, C),
15819 ( arg(2, B, D),
15820 setarg(2, B, active),
15821 ( D==not_stored_yet
15822 -> ( '$chr_store_constants_chr_translate____history___3___[3]'(E,
15823 F)
15824 -> nb_getval(F, G),
15825 b_setval(F, [B|G])
15826 ; true
15827 ),
15828 ( nb_getval('$chr_store_multi_hash_chr_translate____history___3-2',
15829 H),
15830 insert_ht(H, I, B)
15831 ),
15832 nb_getval('$chr_store_multi_hash_chr_translate____history___3-1',
15833 J),
15834 insert_ht(J, K, B)
15835 ; true
15836 )
15837 ),
15838 generate_empty_named_history_initialisation(I),
15839 ( B=suspension(_, active, _, _, _, _)
15840 -> setarg(2, B, inactive),
15841 history___3__4__0__6(L, K, I, E, B)
15842 ; true
15843 )
15844 ; history___3__4__0__6(L, K, I, E, B)
15845 ).
15846history___3__4(A, B, C, D) :-
15847 history___3__5(A, B, C, D).
15848history___3__5(I, G, C, A) :-
15849 arg(2, A, B),
15850 setarg(2, A, active),
15851 ( B==not_stored_yet
15852 -> ( '$chr_store_constants_chr_translate____history___3___[3]'(C,
15853 D)
15854 -> nb_getval(D, E),
15855 b_setval(D, [A|E])
15856 ; true
15857 ),
15858 ( nb_getval('$chr_store_multi_hash_chr_translate____history___3-2',
15859 F),
15860 insert_ht(F, G, A)
15861 ),
15862 nb_getval('$chr_store_multi_hash_chr_translate____history___3-1',
15863 H),
15864 insert_ht(H, I, A)
15865 ; true
15866 ).
15867named_history(A, E, G) :-
15868 ground(A),
15869 nb_getval('$chr_store_multi_hash_chr_translate____history___3-1', B),
15870 lookup_ht(B, A, C),
15871 member(D, C),
15872 D=suspension(_, active, _, _, F, H),
15873 !,
15874 E=F,
15875 G=H.
15876named_history(_, _, _) :-
15877 fail.
15878test_named_history_id_pair(B, C, H, I) :-
15879 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-34',
15880 A),
15881 lookup_ht(A, k(B, C), D),
15882 member(E, D),
15883 E=suspension(_, active, _, _, G, _, _, _, _),
15884 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-134',
15885 F),
15886 lookup_ht(F, k(G, H, I), J),
15887 member(K, J),
15888 K=suspension(_, active, _, _, _, _, _, _, _),
15889 K\==E,
15890 !.
15891test_named_history_id_pair(B, _, A, _) :-
15892 chr_error(syntax,
15893 'Occurrences of shared history in rules number ~w and ~w do not correspond\n',
15894 [A, B]).
15895indexing_spec(B, F) :-
15896 nb_getval('$chr_store_multi_hash_chr_translate____indexing_spec___2-1',
15897 A),
15898 lookup_ht(A, B, C),
15899 member(D, C),
15900 D=suspension(_, active, _, G),
15901 !,
15902 setarg(2, D, removed),
15903 nb_getval('$chr_store_multi_hash_chr_translate____indexing_spec___2-1',
15904 E),
15905 delete_ht(E, B, D),
15906 append(F, G, H),
15907 indexing_spec(B, H).
15908indexing_spec(A, B) :-
15909 E=suspension(C, active, A, B),
15910 'chr gen_id'(C),
15911 nb_getval('$chr_store_multi_hash_chr_translate____indexing_spec___2-1',
15912 D),
15913 insert_ht(D, A, E).
15914get_indexing_spec(B, E) :-
15915 nb_getval('$chr_store_multi_hash_chr_translate____indexing_spec___2-1',
15916 A),
15917 lookup_ht(A, B, C),
15918 member(D, C),
15919 D=suspension(_, active, _, F),
15920 !,
15921 E=F.
15922get_indexing_spec(_, []).
15923observation_analysis(A) :-
15924 observation_analysis___1__0(A, _).
15925observation_analysis___1__0(B, A) :-
15926 nb_getval('$chr_store_global_ground_chr_translate____rule___2', D),
15927 !,
15928 A=suspension(C, not_stored_yet, _, B),
15929 'chr gen_id'(C),
15930 observation_analysis___1__0__0__1(D, B, A).
15931observation_analysis___1__0__0__1([], A, B) :-
15932 observation_analysis___1__1(A, B).
15933observation_analysis___1__0__0__1([A|G], E, H) :-
15934 ( A=suspension(_, active, _, _, C, B)
15935 -> ( B=pragma(rule(_, _, D, F), _, _, _, _),
15936 ( chr_pp_flag(store_in_guards, on)
15937 -> observation_analysis(C, D, guard, E)
15938 ; true
15939 ),
15940 observation_analysis(C, F, body, E)
15941 ),
15942 observation_analysis___1__0__0__1(G, E, H)
15943 ; observation_analysis___1__0__0__1(G, E, H)
15944 ).
15945observation_analysis___1__0(B, A) :-
15946 A=suspension(C, not_stored_yet, _, B),
15947 'chr gen_id'(C),
15948 observation_analysis___1__1(B, A).
15949observation_analysis___1__1(_, A) :-
15950 ( var(A)
15951 -> true
15952 ; arg(2, A, B),
15953 setarg(2, A, removed),
15954 ( B==not_stored_yet
15955 -> true
15956 ; arg(3, A, C),
15957 ( var(C)
15958 -> nb_getval('$chr_store_global_ground_chr_translate____observation_analysis___1',
15959 D),
15960 D=[_|E],
15961 b_setval('$chr_store_global_ground_chr_translate____observation_analysis___1',
15962 E),
15963 ( E=[F|_]
15964 -> setarg(3, F, _)
15965 ; true
15966 )
15967 ; C=[_, _|E],
15968 setarg(2, C, E),
15969 ( E=[F|_]
15970 -> setarg(3, F, C)
15971 ; true
15972 )
15973 )
15974 )
15975 ).
15976spawns(A, B, C) :-
15977 spawns___3__0(A, B, C, _).
15978spawns___3__0(B, C, D, _) :-
15979 nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-123', A),
15980 lookup_ht(A, k(B, C, D), E),
15981 member(F, E),
15982 F=suspension(_, active, _, _, _, _, _),
15983 !.
15984spawns___3__0(B, body, C, _) :-
15985 nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-123', A),
15986 lookup_ht(A, k(B, guard, C), D),
15987 member(E, D),
15988 E=suspension(_, active, _, _, _, _, _),
15989 !.
15990spawns___3__0(B, guard, C, E) :-
15991 nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-123', A),
15992 lookup_ht(A, k(B, body, C), D),
15993 !,
15994 spawns___3__0__0__4(D, B, guard, C, E).
15995spawns___3__0__0__4([], A, B, C, D) :-
15996 spawns___3__1(A, B, C, D).
15997spawns___3__0__0__4([A|P], C, Q, F, R) :-
15998 ( A=suspension(_, active, _, _, B, D, E),
15999 B==C,
16000 D=body,
16001 E==F
16002 -> ( setarg(2, A, removed),
16003 ( nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-13',
16004 G),
16005 delete_ht(G, k(C, F), A)
16006 ),
16007 ( arg(4, A, H),
16008 ( var(H)
16009 -> nb_getval('$chr_store_global_ground_chr_translate____spawns___3',
16010 I),
16011 I=[_|J],
16012 b_setval('$chr_store_global_ground_chr_translate____spawns___3',
16013 J),
16014 ( J=[K|_]
16015 -> setarg(4, K, _)
16016 ; true
16017 )
16018 ; H=[_, _|J],
16019 setarg(2, H, J),
16020 ( J=[K|_]
16021 -> setarg(4, K, H)
16022 ; true
16023 )
16024 )
16025 ),
16026 ( nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-12',
16027 L),
16028 delete_ht(L, k(C, body), A)
16029 ),
16030 ( nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-1',
16031 M),
16032 delete_ht(M, C, A)
16033 ),
16034 ( nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-3',
16035 N),
16036 delete_ht(N, F, A)
16037 ),
16038 nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-123',
16039 O),
16040 delete_ht(O, k(C, body, F), A)
16041 ),
16042 spawns___3__0__0__4(P, C, Q, F, R)
16043 ; spawns___3__0__0__4(P, C, Q, F, R)
16044 ).
16045spawns___3__0(A, B, C, D) :-
16046 spawns___3__1(A, B, C, D).
16047spawns___3__1(B, C, I, F) :-
16048 nb_getval('$chr_store_multi_hash_chr_translate____spawns_all___2-12',
16049 A),
16050 lookup_ht(A, k(B, C), D),
16051 member(E, D),
16052 E=suspension(_, active, _, _),
16053 !,
16054 ( var(F)
16055 -> true
16056 ; arg(2, F, G),
16057 setarg(2, F, removed),
16058 ( G==not_stored_yet
16059 -> true
16060 ; ( nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-13',
16061 H),
16062 delete_ht(H, k(B, I), F)
16063 ),
16064 ( arg(4, F, J),
16065 ( var(J)
16066 -> nb_getval('$chr_store_global_ground_chr_translate____spawns___3',
16067 K),
16068 K=[_|L],
16069 b_setval('$chr_store_global_ground_chr_translate____spawns___3',
16070 L),
16071 ( L=[M|_]
16072 -> setarg(4, M, _)
16073 ; true
16074 )
16075 ; J=[_, _|L],
16076 setarg(2, J, L),
16077 ( L=[M|_]
16078 -> setarg(4, M, J)
16079 ; true
16080 )
16081 )
16082 ),
16083 ( nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-12',
16084 N),
16085 delete_ht(N, k(B, C), F)
16086 ),
16087 ( nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-1',
16088 O),
16089 delete_ht(O, B, F)
16090 ),
16091 ( nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-3',
16092 P),
16093 delete_ht(P, I, F)
16094 ),
16095 nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-123',
16096 Q),
16097 delete_ht(Q, k(B, C, I), F)
16098 )
16099 ).
16100spawns___3__1(B, body, H, E) :-
16101 nb_getval('$chr_store_multi_hash_chr_translate____spawns_all___2-12',
16102 A),
16103 lookup_ht(A, k(B, guard), C),
16104 member(D, C),
16105 D=suspension(_, active, _, _),
16106 !,
16107 ( var(E)
16108 -> true
16109 ; arg(2, E, F),
16110 setarg(2, E, removed),
16111 ( F==not_stored_yet
16112 -> true
16113 ; ( nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-13',
16114 G),
16115 delete_ht(G, k(B, H), E)
16116 ),
16117 ( arg(4, E, I),
16118 ( var(I)
16119 -> nb_getval('$chr_store_global_ground_chr_translate____spawns___3',
16120 J),
16121 J=[_|K],
16122 b_setval('$chr_store_global_ground_chr_translate____spawns___3',
16123 K),
16124 ( K=[L|_]
16125 -> setarg(4, L, _)
16126 ; true
16127 )
16128 ; I=[_, _|K],
16129 setarg(2, I, K),
16130 ( K=[L|_]
16131 -> setarg(4, L, I)
16132 ; true
16133 )
16134 )
16135 ),
16136 ( nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-12',
16137 M),
16138 delete_ht(M, k(B, body), E)
16139 ),
16140 ( nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-1',
16141 N),
16142 delete_ht(N, B, E)
16143 ),
16144 ( nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-3',
16145 O),
16146 delete_ht(O, H, E)
16147 ),
16148 nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-123',
16149 P),
16150 delete_ht(P, k(B, body, H), E)
16151 )
16152 ).
16153spawns___3__1(B, C, F, G) :-
16154 nb_getval('$chr_store_multi_hash_chr_translate____spawns_all_triggers___2-12',
16155 A),
16156 lookup_ht(A, k(B, C), D),
16157 member(E, D),
16158 E=suspension(_, active, _, _, _, _),
16159 may_trigger(F),
16160 !,
16161 ( var(G)
16162 -> true
16163 ; arg(2, G, H),
16164 setarg(2, G, removed),
16165 ( H==not_stored_yet
16166 -> true
16167 ; ( nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-13',
16168 I),
16169 delete_ht(I, k(B, F), G)
16170 ),
16171 ( arg(4, G, J),
16172 ( var(J)
16173 -> nb_getval('$chr_store_global_ground_chr_translate____spawns___3',
16174 K),
16175 K=[_|L],
16176 b_setval('$chr_store_global_ground_chr_translate____spawns___3',
16177 L),
16178 ( L=[M|_]
16179 -> setarg(4, M, _)
16180 ; true
16181 )
16182 ; J=[_, _|L],
16183 setarg(2, J, L),
16184 ( L=[M|_]
16185 -> setarg(4, M, J)
16186 ; true
16187 )
16188 )
16189 ),
16190 ( nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-12',
16191 N),
16192 delete_ht(N, k(B, C), G)
16193 ),
16194 ( nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-1',
16195 O),
16196 delete_ht(O, B, G)
16197 ),
16198 ( nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-3',
16199 P),
16200 delete_ht(P, F, G)
16201 ),
16202 nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-123',
16203 Q),
16204 delete_ht(Q, k(B, C, F), G)
16205 )
16206 ).
16207spawns___3__1(B, body, E, F) :-
16208 nb_getval('$chr_store_multi_hash_chr_translate____spawns_all_triggers___2-12',
16209 A),
16210 lookup_ht(A, k(B, guard), C),
16211 member(D, C),
16212 D=suspension(_, active, _, _, _, _),
16213 may_trigger(E),
16214 !,
16215 ( var(F)
16216 -> true
16217 ; arg(2, F, G),
16218 setarg(2, F, removed),
16219 ( G==not_stored_yet
16220 -> true
16221 ; ( nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-13',
16222 H),
16223 delete_ht(H, k(B, E), F)
16224 ),
16225 ( arg(4, F, I),
16226 ( var(I)
16227 -> nb_getval('$chr_store_global_ground_chr_translate____spawns___3',
16228 J),
16229 J=[_|K],
16230 b_setval('$chr_store_global_ground_chr_translate____spawns___3',
16231 K),
16232 ( K=[L|_]
16233 -> setarg(4, L, _)
16234 ; true
16235 )
16236 ; I=[_, _|K],
16237 setarg(2, I, K),
16238 ( K=[L|_]
16239 -> setarg(4, L, I)
16240 ; true
16241 )
16242 )
16243 ),
16244 ( nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-12',
16245 M),
16246 delete_ht(M, k(B, body), F)
16247 ),
16248 ( nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-1',
16249 N),
16250 delete_ht(N, B, F)
16251 ),
16252 ( nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-3',
16253 O),
16254 delete_ht(O, E, F)
16255 ),
16256 nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-123',
16257 P),
16258 delete_ht(P, k(B, body, E), F)
16259 )
16260 ).
16261spawns___3__1(M, S, B, J) :-
16262 ( nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-1',
16263 A),
16264 lookup_ht(A, B, C)
16265 ),
16266 ( member(D, C),
16267 D=suspension(_, active, _, _, _, _, F, I, _),
16268 ( nb_getval('$chr_store_multi_hash_chr_translate____spawns_all___2-1',
16269 E),
16270 lookup_ht(E, F, G),
16271 member(H, G),
16272 H=suspension(_, active, _, _),
16273 \+ is_passive(F, I),
16274 !,
16275 ( var(J)
16276 -> true
16277 ; arg(2, J, K),
16278 setarg(2, J, removed),
16279 ( K==not_stored_yet
16280 -> true
16281 ; ( nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-13',
16282 L),
16283 delete_ht(L, k(M, B), J)
16284 ),
16285 ( arg(4, J, N),
16286 ( var(N)
16287 -> nb_getval('$chr_store_global_ground_chr_translate____spawns___3',
16288 O),
16289 O=[_|P],
16290 b_setval('$chr_store_global_ground_chr_translate____spawns___3',
16291 P),
16292 ( P=[Q|_]
16293 -> setarg(4, Q, _)
16294 ; true
16295 )
16296 ; N=[_, _|P],
16297 setarg(2, N, P),
16298 ( P=[Q|_]
16299 -> setarg(4, Q, N)
16300 ; true
16301 )
16302 )
16303 ),
16304 ( nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-12',
16305 R),
16306 delete_ht(R, k(M, S), J)
16307 ),
16308 ( nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-1',
16309 T),
16310 delete_ht(T, M, J)
16311 ),
16312 ( nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-3',
16313 U),
16314 delete_ht(U, B, J)
16315 ),
16316 nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-123',
16317 V),
16318 delete_ht(V, k(M, S, B), J)
16319 )
16320 ),
16321 spawns_all(M, S)
16322 ; nb_getval('$chr_store_multi_hash_chr_translate____spawns_all_triggers___2-1',
16323 W),
16324 lookup_ht(W, F, X),
16325 member(Y, X),
16326 Y=suspension(_, active, _, _, _, _),
16327 may_trigger(B),
16328 \+ is_passive(F, I),
16329 !,
16330 ( var(J)
16331 -> true
16332 ; arg(2, J, Z),
16333 setarg(2, J, removed),
16334 ( Z==not_stored_yet
16335 -> true
16336 ; ( nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-13',
16337 A1),
16338 delete_ht(A1, k(M, B), J)
16339 ),
16340 ( arg(4, J, B1),
16341 ( var(B1)
16342 -> nb_getval('$chr_store_global_ground_chr_translate____spawns___3',
16343 C1),
16344 C1=[_|D1],
16345 b_setval('$chr_store_global_ground_chr_translate____spawns___3',
16346 D1),
16347 ( D1=[E1|_]
16348 -> setarg(4, E1, _)
16349 ; true
16350 )
16351 ; B1=[_, _|D1],
16352 setarg(2, B1, D1),
16353 ( D1=[E1|_]
16354 -> setarg(4, E1, B1)
16355 ; true
16356 )
16357 )
16358 ),
16359 ( nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-12',
16360 F1),
16361 delete_ht(F1, k(M, S), J)
16362 ),
16363 ( nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-1',
16364 G1),
16365 delete_ht(G1, M, J)
16366 ),
16367 ( nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-3',
16368 H1),
16369 delete_ht(H1, B, J)
16370 ),
16371 nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-123',
16372 I1),
16373 delete_ht(I1, k(M, S, B), J)
16374 )
16375 ),
16376 spawns_all_triggers(M, S)
16377 )
16378 ; !,
16379 J=suspension(J1, not_stored_yet, t, _, M, S, B),
16380 'chr gen_id'(J1),
16381 spawns___3__1__0__11(C, M, S, B, J)
16382 ).
16383spawns___3__1__0__11([], A, B, C, D) :-
16384 spawns___3__2(A, B, C, D).
16385spawns___3__1__0__11([A|H], I, J, C, K) :-
16386 ( ( A=suspension(_, active, _, _, B, _, E, G, _),
16387 B==C
16388 ),
16389 nb_getval('$chr_store_multi_hash_chr_translate____spawns_all_triggers___2-1',
16390 D),
16391 lookup_ht(D, E, F)
16392 -> spawns___3__1__1__11(F,
16393 E,
16394 G,
16395 A,
16396 H,
16397 I,
16398 J,
16399 C,
16400 K)
16401 ; spawns___3__1__0__11(H, I, J, C, K)
16402 ).
16403spawns___3__1__1__11([], _, _, _, A, B, C, D, E) :-
16404 spawns___3__1__0__11(A, B, C, D, E).
16405spawns___3__1__1__11([A|T], C, H, D, U, K, P, G, E) :-
16406 ( A=suspension(_, active, _, _, B, _),
16407 B==C,
16408 ( F=t(123, A, D, E),
16409 '$novel_production'(A, F),
16410 '$novel_production'(E, F)
16411 ),
16412 \+ may_trigger(G),
16413 \+ is_passive(C, H)
16414 -> '$extend_history'(E, F),
16415 ( arg(2, E, I),
16416 setarg(2, E, active),
16417 ( I==not_stored_yet
16418 -> ( nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-13',
16419 J),
16420 insert_ht(J, k(K, G), E)
16421 ),
16422 ( nb_getval('$chr_store_global_ground_chr_translate____spawns___3',
16423 L),
16424 M=[E|L],
16425 b_setval('$chr_store_global_ground_chr_translate____spawns___3',
16426 M),
16427 ( L=[N|_]
16428 -> setarg(4, N, M)
16429 ; true
16430 )
16431 ),
16432 ( nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-12',
16433 O),
16434 insert_ht(O, k(K, P), E)
16435 ),
16436 ( nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-1',
16437 Q),
16438 insert_ht(Q, K, E)
16439 ),
16440 ( nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-3',
16441 R),
16442 insert_ht(R, G, E)
16443 ),
16444 nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-123',
16445 S),
16446 insert_ht(S, k(K, P, G), E)
16447 ; true
16448 )
16449 ),
16450 spawns_all_triggers(K, P),
16451 ( E=suspension(_, active, _, _, _, _, _)
16452 -> setarg(2, E, inactive),
16453 spawns___3__1__1__11(T,
16454 C,
16455 H,
16456 D,
16457 U,
16458 K,
16459 P,
16460 G,
16461 E)
16462 ; true
16463 )
16464 ; spawns___3__1__1__11(T,
16465 C,
16466 H,
16467 D,
16468 U,
16469 K,
16470 P,
16471 G,
16472 E)
16473 ).
16474spawns___3__1(B, C, D, A) :-
16475 A=suspension(E, not_stored_yet, t, _, B, C, D),
16476 'chr gen_id'(E),
16477 spawns___3__2(B, C, D, A).
16478spawns___3__2(B, D, E, F) :-
16479 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-3', A),
16480 lookup_ht(A, B, C),
16481 !,
16482 spawns___3__2__0__12(C, B, D, E, F).
16483spawns___3__2__0__12([], A, B, C, D) :-
16484 spawns___3__3(A, B, C, D).
16485spawns___3__2__0__12([A|H], C, I, J, K) :-
16486 ( ( A=suspension(_, active, _, _, E, _, B, G, _),
16487 B==C
16488 ),
16489 nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-3', D),
16490 lookup_ht(D, E, F)
16491 -> spawns___3__2__1__12(F,
16492 E,
16493 G,
16494 A,
16495 H,
16496 C,
16497 I,
16498 J,
16499 K)
16500 ; spawns___3__2__0__12(H, C, I, J, K)
16501 ).
16502spawns___3__2__1__12([], _, _, _, A, B, C, D, E) :-
16503 spawns___3__2__0__12(A, B, C, D, E).
16504spawns___3__2__1__12([A|V], C, J, E, W, H, Q, I, D) :-
16505 ( A=suspension(_, active, _, _, G, U, B),
16506 B==C,
16507 ( F=t(124, D, E, A),
16508 '$novel_production'(D, F),
16509 '$novel_production'(A, F)
16510 ),
16511 G\==H,
16512 C\==I,
16513 \+ is_passive(H, J)
16514 -> '$extend_history'(D, F),
16515 ( arg(2, D, K),
16516 setarg(2, D, active),
16517 ( K==not_stored_yet
16518 -> ( nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-13',
16519 L),
16520 insert_ht(L, k(H, I), D)
16521 ),
16522 ( nb_getval('$chr_store_global_ground_chr_translate____spawns___3',
16523 M),
16524 N=[D|M],
16525 b_setval('$chr_store_global_ground_chr_translate____spawns___3',
16526 N),
16527 ( M=[O|_]
16528 -> setarg(4, O, N)
16529 ; true
16530 )
16531 ),
16532 ( nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-12',
16533 P),
16534 insert_ht(P, k(H, Q), D)
16535 ),
16536 ( nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-1',
16537 R),
16538 insert_ht(R, H, D)
16539 ),
16540 ( nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-3',
16541 S),
16542 insert_ht(S, I, D)
16543 ),
16544 nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-123',
16545 T),
16546 insert_ht(T, k(H, Q, I), D)
16547 ; true
16548 )
16549 ),
16550 spawns(G, U, I),
16551 ( D=suspension(_, active, _, _, _, _, _)
16552 -> setarg(2, D, inactive),
16553 spawns___3__2__1__12(V,
16554 C,
16555 J,
16556 E,
16557 W,
16558 H,
16559 Q,
16560 I,
16561 D)
16562 ; true
16563 )
16564 ; spawns___3__2__1__12(V,
16565 C,
16566 J,
16567 E,
16568 W,
16569 H,
16570 Q,
16571 I,
16572 D)
16573 ).
16574spawns___3__2(A, B, C, D) :-
16575 spawns___3__3(A, B, C, D).
16576spawns___3__3(D, E, B, F) :-
16577 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-1', A),
16578 lookup_ht(A, B, C),
16579 !,
16580 spawns___3__3__0__13(C, D, E, B, F).
16581spawns___3__3__0__13([], A, B, C, D) :-
16582 spawns___3__4(A, B, C, D).
16583spawns___3__3__0__13([A|H], I, J, C, K) :-
16584 ( ( A=suspension(_, active, _, _, B, _, E, G, _),
16585 B==C
16586 ),
16587 nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-1', D),
16588 lookup_ht(D, E, F)
16589 -> spawns___3__3__1__13(F,
16590 E,
16591 G,
16592 A,
16593 H,
16594 I,
16595 J,
16596 C,
16597 K)
16598 ; spawns___3__3__0__13(H, I, J, C, K)
16599 ).
16600spawns___3__3__1__13([], _, _, _, A, B, C, D, E) :-
16601 spawns___3__3__0__13(A, B, C, D, E).
16602spawns___3__3__1__13([A|U], C, J, D, V, G, Q, H, E) :-
16603 ( A=suspension(_, active, _, _, B, _, I),
16604 B==C,
16605 ( F=t(124, A, D, E),
16606 '$novel_production'(A, F),
16607 '$novel_production'(E, F)
16608 ),
16609 G\==C,
16610 H\==I,
16611 \+ is_passive(C, J)
16612 -> '$extend_history'(E, F),
16613 ( arg(2, E, K),
16614 setarg(2, E, active),
16615 ( K==not_stored_yet
16616 -> ( nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-13',
16617 L),
16618 insert_ht(L, k(G, H), E)
16619 ),
16620 ( nb_getval('$chr_store_global_ground_chr_translate____spawns___3',
16621 M),
16622 N=[E|M],
16623 b_setval('$chr_store_global_ground_chr_translate____spawns___3',
16624 N),
16625 ( M=[O|_]
16626 -> setarg(4, O, N)
16627 ; true
16628 )
16629 ),
16630 ( nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-12',
16631 P),
16632 insert_ht(P, k(G, Q), E)
16633 ),
16634 ( nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-1',
16635 R),
16636 insert_ht(R, G, E)
16637 ),
16638 ( nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-3',
16639 S),
16640 insert_ht(S, H, E)
16641 ),
16642 nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-123',
16643 T),
16644 insert_ht(T, k(G, Q, H), E)
16645 ; true
16646 )
16647 ),
16648 spawns(G, Q, I),
16649 ( E=suspension(_, active, _, _, _, _, _)
16650 -> setarg(2, E, inactive),
16651 spawns___3__3__1__13(U,
16652 C,
16653 J,
16654 D,
16655 V,
16656 G,
16657 Q,
16658 H,
16659 E)
16660 ; true
16661 )
16662 ; spawns___3__3__1__13(U,
16663 C,
16664 J,
16665 D,
16666 V,
16667 G,
16668 Q,
16669 H,
16670 E)
16671 ).
16672spawns___3__3(A, B, C, D) :-
16673 spawns___3__4(A, B, C, D).
16674spawns___3__4(B, D, E, F) :-
16675 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-3', A),
16676 lookup_ht(A, B, C),
16677 !,
16678 spawns___3__4__0__14(C, B, D, E, F).
16679spawns___3__4__0__14([], A, B, C, D) :-
16680 spawns___3__5(A, B, C, D).
16681spawns___3__4__0__14([A|G], C, H, I, J) :-
16682 ( ( A=suspension(_, active, _, _, E, _, B, F, _),
16683 B==C
16684 ),
16685 nb_getval('$chr_store_global_ground_chr_translate____spawns_all_triggers___2',
16686 D)
16687 -> spawns___3__4__1__14(D,
16688 E,
16689 F,
16690 A,
16691 G,
16692 C,
16693 H,
16694 I,
16695 J)
16696 ; spawns___3__4__0__14(G, C, H, I, J)
16697 ).
16698spawns___3__4__1__14([], _, _, _, A, B, C, D, E) :-
16699 spawns___3__4__0__14(A, B, C, D, E).
16700spawns___3__4__1__14([A|U], G, F, C, V, E, O, H, B) :-
16701 ( A=suspension(_, active, _, _, S, T),
16702 ( D=t(125, B, C, A),
16703 '$novel_production'(B, D),
16704 '$novel_production'(A, D)
16705 ),
16706 \+ is_passive(E, F),
16707 may_trigger(G),
16708 \+ may_trigger(H)
16709 -> '$extend_history'(B, D),
16710 ( arg(2, B, I),
16711 setarg(2, B, active),
16712 ( I==not_stored_yet
16713 -> ( nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-13',
16714 J),
16715 insert_ht(J, k(E, H), B)
16716 ),
16717 ( nb_getval('$chr_store_global_ground_chr_translate____spawns___3',
16718 K),
16719 L=[B|K],
16720 b_setval('$chr_store_global_ground_chr_translate____spawns___3',
16721 L),
16722 ( K=[M|_]
16723 -> setarg(4, M, L)
16724 ; true
16725 )
16726 ),
16727 ( nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-12',
16728 N),
16729 insert_ht(N, k(E, O), B)
16730 ),
16731 ( nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-1',
16732 P),
16733 insert_ht(P, E, B)
16734 ),
16735 ( nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-3',
16736 Q),
16737 insert_ht(Q, H, B)
16738 ),
16739 nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-123',
16740 R),
16741 insert_ht(R, k(E, O, H), B)
16742 ; true
16743 )
16744 ),
16745 spawns(S, T, H),
16746 ( B=suspension(_, active, _, _, _, _, _)
16747 -> setarg(2, B, inactive),
16748 spawns___3__4__1__14(U,
16749 G,
16750 F,
16751 C,
16752 V,
16753 E,
16754 O,
16755 H,
16756 B)
16757 ; true
16758 )
16759 ; spawns___3__4__1__14(U,
16760 G,
16761 F,
16762 C,
16763 V,
16764 E,
16765 O,
16766 H,
16767 B)
16768 ).
16769spawns___3__4(A, B, C, D) :-
16770 spawns___3__5(A, B, C, D).
16771spawns___3__5(D, J, E, A) :-
16772 arg(2, A, B),
16773 setarg(2, A, active),
16774 ( B==not_stored_yet
16775 -> ( nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-13',
16776 C),
16777 insert_ht(C, k(D, E), A)
16778 ),
16779 ( nb_getval('$chr_store_global_ground_chr_translate____spawns___3',
16780 F),
16781 G=[A|F],
16782 b_setval('$chr_store_global_ground_chr_translate____spawns___3',
16783 G),
16784 ( F=[H|_]
16785 -> setarg(4, H, G)
16786 ; true
16787 )
16788 ),
16789 ( nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-12',
16790 I),
16791 insert_ht(I, k(D, J), A)
16792 ),
16793 ( nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-1',
16794 K),
16795 insert_ht(K, D, A)
16796 ),
16797 ( nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-3',
16798 L),
16799 insert_ht(L, E, A)
16800 ),
16801 nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-123',
16802 M),
16803 insert_ht(M, k(D, J, E), A)
16804 ; true
16805 ).
16806spawns_all(A, B) :-
16807 spawns_all___2__0(A, B, _).
16808spawns_all___2__0(B, C, _) :-
16809 nb_getval('$chr_store_multi_hash_chr_translate____spawns_all___2-12',
16810 A),
16811 lookup_ht(A, k(B, C), D),
16812 member(E, D),
16813 E=suspension(_, active, _, _),
16814 !.
16815spawns_all___2__0(B, body, _) :-
16816 nb_getval('$chr_store_multi_hash_chr_translate____spawns_all___2-12',
16817 A),
16818 lookup_ht(A, k(B, guard), C),
16819 member(D, C),
16820 D=suspension(_, active, _, _),
16821 !.
16822spawns_all___2__0(B, guard, D) :-
16823 nb_getval('$chr_store_multi_hash_chr_translate____spawns_all___2-12',
16824 A),
16825 lookup_ht(A, k(B, body), C),
16826 !,
16827 spawns_all___2__0__0__4(C, B, guard, D).
16828spawns_all___2__0__0__4([], A, B, C) :-
16829 spawns_all___2__1(A, B, C).
16830spawns_all___2__0__0__4([A|G], C, H, I) :-
16831 ( A=suspension(_, active, B, D),
16832 B==C,
16833 D=body
16834 -> ( setarg(2, A, removed),
16835 ( nb_getval('$chr_store_multi_hash_chr_translate____spawns_all___2-1',
16836 E),
16837 delete_ht(E, C, A)
16838 ),
16839 nb_getval('$chr_store_multi_hash_chr_translate____spawns_all___2-12',
16840 F),
16841 delete_ht(F, k(C, body), A)
16842 ),
16843 spawns_all___2__0__0__4(G, C, H, I)
16844 ; spawns_all___2__0__0__4(G, C, H, I)
16845 ).
16846spawns_all___2__0(A, B, C) :-
16847 spawns_all___2__1(A, B, C).
16848spawns_all___2__1(B, C, E) :-
16849 nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-12', A),
16850 lookup_ht(A, k(B, C), D),
16851 !,
16852 spawns_all___2__1__0__5(D, B, C, E).
16853spawns_all___2__1__0__5([], A, B, C) :-
16854 spawns_all___2__2(A, B, C).
16855spawns_all___2__1__0__5([A|P], C, E, Q) :-
16856 ( A=suspension(_, active, _, _, B, D, G),
16857 B==C,
16858 D==E
16859 -> ( setarg(2, A, removed),
16860 ( nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-13',
16861 F),
16862 delete_ht(F, k(C, G), A)
16863 ),
16864 ( arg(4, A, H),
16865 ( var(H)
16866 -> nb_getval('$chr_store_global_ground_chr_translate____spawns___3',
16867 I),
16868 I=[_|J],
16869 b_setval('$chr_store_global_ground_chr_translate____spawns___3',
16870 J),
16871 ( J=[K|_]
16872 -> setarg(4, K, _)
16873 ; true
16874 )
16875 ; H=[_, _|J],
16876 setarg(2, H, J),
16877 ( J=[K|_]
16878 -> setarg(4, K, H)
16879 ; true
16880 )
16881 )
16882 ),
16883 ( nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-12',
16884 L),
16885 delete_ht(L, k(C, E), A)
16886 ),
16887 ( nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-1',
16888 M),
16889 delete_ht(M, C, A)
16890 ),
16891 ( nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-3',
16892 N),
16893 delete_ht(N, G, A)
16894 ),
16895 nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-123',
16896 O),
16897 delete_ht(O, k(C, E, G), A)
16898 ),
16899 spawns_all___2__1__0__5(P, C, E, Q)
16900 ; spawns_all___2__1__0__5(P, C, E, Q)
16901 ).
16902spawns_all___2__1(A, B, C) :-
16903 spawns_all___2__2(A, B, C).
16904spawns_all___2__2(B, guard, D) :-
16905 nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-12', A),
16906 lookup_ht(A, k(B, body), C),
16907 !,
16908 spawns_all___2__2__0__6(C, B, guard, D).
16909spawns_all___2__2__0__6([], A, B, C) :-
16910 spawns_all___2__3(A, B, C).
16911spawns_all___2__2__0__6([A|O], C, P, Q) :-
16912 ( A=suspension(_, active, _, _, B, D, F),
16913 B==C,
16914 D=body
16915 -> ( setarg(2, A, removed),
16916 ( nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-13',
16917 E),
16918 delete_ht(E, k(C, F), A)
16919 ),
16920 ( arg(4, A, G),
16921 ( var(G)
16922 -> nb_getval('$chr_store_global_ground_chr_translate____spawns___3',
16923 H),
16924 H=[_|I],
16925 b_setval('$chr_store_global_ground_chr_translate____spawns___3',
16926 I),
16927 ( I=[J|_]
16928 -> setarg(4, J, _)
16929 ; true
16930 )
16931 ; G=[_, _|I],
16932 setarg(2, G, I),
16933 ( I=[J|_]
16934 -> setarg(4, J, G)
16935 ; true
16936 )
16937 )
16938 ),
16939 ( nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-12',
16940 K),
16941 delete_ht(K, k(C, body), A)
16942 ),
16943 ( nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-1',
16944 L),
16945 delete_ht(L, C, A)
16946 ),
16947 ( nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-3',
16948 M),
16949 delete_ht(M, F, A)
16950 ),
16951 nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-123',
16952 N),
16953 delete_ht(N, k(C, body, F), A)
16954 ),
16955 spawns_all___2__2__0__6(O, C, P, Q)
16956 ; spawns_all___2__2__0__6(O, C, P, Q)
16957 ).
16958spawns_all___2__2(A, B, C) :-
16959 spawns_all___2__3(A, B, C).
16960spawns_all___2__3(B, C, E) :-
16961 nb_getval('$chr_store_multi_hash_chr_translate____spawns_all_triggers___2-12',
16962 A),
16963 lookup_ht(A, k(B, C), D),
16964 !,
16965 spawns_all___2__3__0__7(D, B, C, E).
16966spawns_all___2__3__0__7([], A, B, C) :-
16967 spawns_all___2__4(A, B, C).
16968spawns_all___2__3__0__7([A|L], C, E, M) :-
16969 ( A=suspension(_, active, _, _, B, D),
16970 B==C,
16971 D==E
16972 -> ( setarg(2, A, removed),
16973 ( arg(4, A, F),
16974 ( var(F)
16975 -> nb_getval('$chr_store_global_ground_chr_translate____spawns_all_triggers___2',
16976 G),
16977 G=[_|H],
16978 b_setval('$chr_store_global_ground_chr_translate____spawns_all_triggers___2',
16979 H),
16980 ( H=[I|_]
16981 -> setarg(4, I, _)
16982 ; true
16983 )
16984 ; F=[_, _|H],
16985 setarg(2, F, H),
16986 ( H=[I|_]
16987 -> setarg(4, I, F)
16988 ; true
16989 )
16990 )
16991 ),
16992 ( nb_getval('$chr_store_multi_hash_chr_translate____spawns_all_triggers___2-1',
16993 J),
16994 delete_ht(J, C, A)
16995 ),
16996 nb_getval('$chr_store_multi_hash_chr_translate____spawns_all_triggers___2-12',
16997 K),
16998 delete_ht(K, k(C, E), A)
16999 ),
17000 spawns_all___2__3__0__7(L, C, E, M)
17001 ; spawns_all___2__3__0__7(L, C, E, M)
17002 ).
17003spawns_all___2__3(A, B, C) :-
17004 spawns_all___2__4(A, B, C).
17005spawns_all___2__4(B, guard, D) :-
17006 nb_getval('$chr_store_multi_hash_chr_translate____spawns_all_triggers___2-12',
17007 A),
17008 lookup_ht(A, k(B, body), C),
17009 !,
17010 spawns_all___2__4__0__8(C, B, guard, D).
17011spawns_all___2__4__0__8([], A, B, C) :-
17012 spawns_all___2__5(A, B, C).
17013spawns_all___2__4__0__8([A|K], C, L, M) :-
17014 ( A=suspension(_, active, _, _, B, D),
17015 B==C,
17016 D=body
17017 -> ( setarg(2, A, removed),
17018 ( arg(4, A, E),
17019 ( var(E)
17020 -> nb_getval('$chr_store_global_ground_chr_translate____spawns_all_triggers___2',
17021 F),
17022 F=[_|G],
17023 b_setval('$chr_store_global_ground_chr_translate____spawns_all_triggers___2',
17024 G),
17025 ( G=[H|_]
17026 -> setarg(4, H, _)
17027 ; true
17028 )
17029 ; E=[_, _|G],
17030 setarg(2, E, G),
17031 ( G=[H|_]
17032 -> setarg(4, H, E)
17033 ; true
17034 )
17035 )
17036 ),
17037 ( nb_getval('$chr_store_multi_hash_chr_translate____spawns_all_triggers___2-1',
17038 I),
17039 delete_ht(I, C, A)
17040 ),
17041 nb_getval('$chr_store_multi_hash_chr_translate____spawns_all_triggers___2-12',
17042 J),
17043 delete_ht(J, k(C, body), A)
17044 ),
17045 spawns_all___2__4__0__8(K, C, L, M)
17046 ; spawns_all___2__4__0__8(K, C, L, M)
17047 ).
17048spawns_all___2__4(A, B, C) :-
17049 spawns_all___2__5(A, B, C).
17050spawns_all___2__5(B, D, C) :-
17051 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-3', A),
17052 lookup_ht(A, B, F),
17053 !,
17054 C=suspension(E, not_stored_yet, B, D),
17055 'chr gen_id'(E),
17056 spawns_all___2__5__0__9(F, B, D, C).
17057spawns_all___2__5__0__9([], A, B, C) :-
17058 spawns_all___2__6(A, B, C).
17059spawns_all___2__5__0__9([A|H], C, I, J) :-
17060 ( ( A=suspension(_, active, _, _, E, _, B, G, _),
17061 B==C
17062 ),
17063 nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-3', D),
17064 lookup_ht(D, E, F)
17065 -> spawns_all___2__5__1__9(F,
17066 E,
17067 G,
17068 A,
17069 H,
17070 C,
17071 I,
17072 J)
17073 ; spawns_all___2__5__0__9(H, C, I, J)
17074 ).
17075spawns_all___2__5__1__9([], _, _, _, A, B, C, D) :-
17076 spawns_all___2__5__0__9(A, B, C, D).
17077spawns_all___2__5__1__9([A|V], C, E, W, X, D, U, Q) :-
17078 ( ( A=suspension(_, active, _, _, G, M, B),
17079 B==C
17080 ),
17081 \+ is_passive(D, E)
17082 -> ( setarg(2, A, removed),
17083 ( nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-13',
17084 F),
17085 delete_ht(F, k(G, C), A)
17086 ),
17087 ( arg(4, A, H),
17088 ( var(H)
17089 -> nb_getval('$chr_store_global_ground_chr_translate____spawns___3',
17090 I),
17091 I=[_|J],
17092 b_setval('$chr_store_global_ground_chr_translate____spawns___3',
17093 J),
17094 ( J=[K|_]
17095 -> setarg(4, K, _)
17096 ; true
17097 )
17098 ; H=[_, _|J],
17099 setarg(2, H, J),
17100 ( J=[K|_]
17101 -> setarg(4, K, H)
17102 ; true
17103 )
17104 )
17105 ),
17106 ( nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-12',
17107 L),
17108 delete_ht(L, k(G, M), A)
17109 ),
17110 ( nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-1',
17111 N),
17112 delete_ht(N, G, A)
17113 ),
17114 ( nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-3',
17115 O),
17116 delete_ht(O, C, A)
17117 ),
17118 nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-123',
17119 P),
17120 delete_ht(P, k(G, M, C), A)
17121 ),
17122 ( arg(2, Q, R),
17123 setarg(2, Q, active),
17124 ( R==not_stored_yet
17125 -> ( nb_getval('$chr_store_multi_hash_chr_translate____spawns_all___2-1',
17126 S),
17127 insert_ht(S, D, Q)
17128 ),
17129 nb_getval('$chr_store_multi_hash_chr_translate____spawns_all___2-12',
17130 T),
17131 insert_ht(T, k(D, U), Q)
17132 ; true
17133 )
17134 ),
17135 spawns_all(G, M),
17136 ( Q=suspension(_, active, _, _)
17137 -> setarg(2, Q, inactive),
17138 spawns_all___2__5__1__9(V,
17139 C,
17140 E,
17141 W,
17142 X,
17143 D,
17144 U,
17145 Q)
17146 ; true
17147 )
17148 ; spawns_all___2__5__1__9(V,
17149 C,
17150 E,
17151 W,
17152 X,
17153 D,
17154 U,
17155 Q)
17156 ).
17157spawns_all___2__5(B, C, A) :-
17158 A=suspension(D, not_stored_yet, B, C),
17159 'chr gen_id'(D),
17160 spawns_all___2__6(B, C, A).
17161spawns_all___2__6(B, D, E) :-
17162 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-3', A),
17163 lookup_ht(A, B, C),
17164 !,
17165 spawns_all___2__6__0__10(C, B, D, E).
17166spawns_all___2__6__0__10([], A, B, C) :-
17167 spawns_all___2__7(A, B, C).
17168spawns_all___2__6__0__10([A|K], C, J, F) :-
17169 ( A=suspension(_, active, _, _, E, _, B, D, _),
17170 B==C,
17171 \+ \+ spawns_all_triggers_implies_spawns_all,
17172 \+ is_passive(C, D),
17173 may_trigger(E)
17174 -> ( arg(2, F, G),
17175 setarg(2, F, active),
17176 ( G==not_stored_yet
17177 -> ( nb_getval('$chr_store_multi_hash_chr_translate____spawns_all___2-1',
17178 H),
17179 insert_ht(H, C, F)
17180 ),
17181 nb_getval('$chr_store_multi_hash_chr_translate____spawns_all___2-12',
17182 I),
17183 insert_ht(I, k(C, J), F)
17184 ; true
17185 )
17186 ),
17187 spawns_all_triggers_implies_spawns_all,
17188 ( F=suspension(_, active, _, _)
17189 -> setarg(2, F, inactive),
17190 spawns_all___2__6__0__10(K, C, J, F)
17191 ; true
17192 )
17193 ; spawns_all___2__6__0__10(K, C, J, F)
17194 ).
17195spawns_all___2__6(A, B, C) :-
17196 spawns_all___2__7(A, B, C).
17197spawns_all___2__7(D, F, A) :-
17198 arg(2, A, B),
17199 setarg(2, A, active),
17200 ( B==not_stored_yet
17201 -> ( nb_getval('$chr_store_multi_hash_chr_translate____spawns_all___2-1',
17202 C),
17203 insert_ht(C, D, A)
17204 ),
17205 nb_getval('$chr_store_multi_hash_chr_translate____spawns_all___2-12',
17206 E),
17207 insert_ht(E, k(D, F), A)
17208 ; true
17209 ).
17210spawns_all_triggers(A, B) :-
17211 spawns_all_triggers___2__0(A, B, _).
17212spawns_all_triggers___2__0(B, C, _) :-
17213 nb_getval('$chr_store_multi_hash_chr_translate____spawns_all_triggers___2-12',
17214 A),
17215 lookup_ht(A, k(B, C), D),
17216 member(E, D),
17217 E=suspension(_, active, _, _, _, _),
17218 !.
17219spawns_all_triggers___2__0(B, body, _) :-
17220 nb_getval('$chr_store_multi_hash_chr_translate____spawns_all_triggers___2-12',
17221 A),
17222 lookup_ht(A, k(B, guard), C),
17223 member(D, C),
17224 D=suspension(_, active, _, _, _, _),
17225 !.
17226spawns_all_triggers___2__0(B, guard, D) :-
17227 nb_getval('$chr_store_multi_hash_chr_translate____spawns_all_triggers___2-12',
17228 A),
17229 lookup_ht(A, k(B, body), C),
17230 !,
17231 spawns_all_triggers___2__0__0__4(C, B, guard, D).
17232spawns_all_triggers___2__0__0__4([], A, B, C) :-
17233 spawns_all_triggers___2__1(A, B, C).
17234spawns_all_triggers___2__0__0__4([A|K], C, L, M) :-
17235 ( A=suspension(_, active, _, _, B, D),
17236 B==C,
17237 D=body
17238 -> ( setarg(2, A, removed),
17239 ( arg(4, A, E),
17240 ( var(E)
17241 -> nb_getval('$chr_store_global_ground_chr_translate____spawns_all_triggers___2',
17242 F),
17243 F=[_|G],
17244 b_setval('$chr_store_global_ground_chr_translate____spawns_all_triggers___2',
17245 G),
17246 ( G=[H|_]
17247 -> setarg(4, H, _)
17248 ; true
17249 )
17250 ; E=[_, _|G],
17251 setarg(2, E, G),
17252 ( G=[H|_]
17253 -> setarg(4, H, E)
17254 ; true
17255 )
17256 )
17257 ),
17258 ( nb_getval('$chr_store_multi_hash_chr_translate____spawns_all_triggers___2-1',
17259 I),
17260 delete_ht(I, C, A)
17261 ),
17262 nb_getval('$chr_store_multi_hash_chr_translate____spawns_all_triggers___2-12',
17263 J),
17264 delete_ht(J, k(C, body), A)
17265 ),
17266 spawns_all_triggers___2__0__0__4(K, C, L, M)
17267 ; spawns_all_triggers___2__0__0__4(K, C, L, M)
17268 ).
17269spawns_all_triggers___2__0(A, B, C) :-
17270 spawns_all_triggers___2__1(A, B, C).
17271spawns_all_triggers___2__1(B, C, F) :-
17272 nb_getval('$chr_store_multi_hash_chr_translate____spawns_all___2-12',
17273 A),
17274 lookup_ht(A, k(B, C), D),
17275 member(E, D),
17276 E=suspension(_, active, _, _),
17277 !,
17278 ( var(F)
17279 -> true
17280 ; arg(2, F, G),
17281 setarg(2, F, removed),
17282 ( G==not_stored_yet
17283 -> true
17284 ; ( arg(4, F, H),
17285 ( var(H)
17286 -> nb_getval('$chr_store_global_ground_chr_translate____spawns_all_triggers___2',
17287 I),
17288 I=[_|J],
17289 b_setval('$chr_store_global_ground_chr_translate____spawns_all_triggers___2',
17290 J),
17291 ( J=[K|_]
17292 -> setarg(4, K, _)
17293 ; true
17294 )
17295 ; H=[_, _|J],
17296 setarg(2, H, J),
17297 ( J=[K|_]
17298 -> setarg(4, K, H)
17299 ; true
17300 )
17301 )
17302 ),
17303 ( nb_getval('$chr_store_multi_hash_chr_translate____spawns_all_triggers___2-1',
17304 L),
17305 delete_ht(L, B, F)
17306 ),
17307 nb_getval('$chr_store_multi_hash_chr_translate____spawns_all_triggers___2-12',
17308 M),
17309 delete_ht(M, k(B, C), F)
17310 )
17311 ).
17312spawns_all_triggers___2__1(B, body, E) :-
17313 nb_getval('$chr_store_multi_hash_chr_translate____spawns_all___2-12',
17314 A),
17315 lookup_ht(A, k(B, guard), C),
17316 member(D, C),
17317 D=suspension(_, active, _, _),
17318 !,
17319 ( var(E)
17320 -> true
17321 ; arg(2, E, F),
17322 setarg(2, E, removed),
17323 ( F==not_stored_yet
17324 -> true
17325 ; ( arg(4, E, G),
17326 ( var(G)
17327 -> nb_getval('$chr_store_global_ground_chr_translate____spawns_all_triggers___2',
17328 H),
17329 H=[_|I],
17330 b_setval('$chr_store_global_ground_chr_translate____spawns_all_triggers___2',
17331 I),
17332 ( I=[J|_]
17333 -> setarg(4, J, _)
17334 ; true
17335 )
17336 ; G=[_, _|I],
17337 setarg(2, G, I),
17338 ( I=[J|_]
17339 -> setarg(4, J, G)
17340 ; true
17341 )
17342 )
17343 ),
17344 ( nb_getval('$chr_store_multi_hash_chr_translate____spawns_all_triggers___2-1',
17345 K),
17346 delete_ht(K, B, E)
17347 ),
17348 nb_getval('$chr_store_multi_hash_chr_translate____spawns_all_triggers___2-12',
17349 L),
17350 delete_ht(L, k(B, body), E)
17351 )
17352 ).
17353spawns_all_triggers___2__1(B, C, E) :-
17354 nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-12', A),
17355 lookup_ht(A, k(B, C), D),
17356 !,
17357 spawns_all_triggers___2__1__0__7(D, B, C, E).
17358spawns_all_triggers___2__1__0__7([], A, B, C) :-
17359 spawns_all_triggers___2__2(A, B, C).
17360spawns_all_triggers___2__1__0__7([A|P], C, E, Q) :-
17361 ( ( A=suspension(_, active, _, _, B, D, F),
17362 B==C,
17363 D==E
17364 ),
17365 may_trigger(F)
17366 -> ( setarg(2, A, removed),
17367 ( nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-13',
17368 G),
17369 delete_ht(G, k(C, F), A)
17370 ),
17371 ( arg(4, A, H),
17372 ( var(H)
17373 -> nb_getval('$chr_store_global_ground_chr_translate____spawns___3',
17374 I),
17375 I=[_|J],
17376 b_setval('$chr_store_global_ground_chr_translate____spawns___3',
17377 J),
17378 ( J=[K|_]
17379 -> setarg(4, K, _)
17380 ; true
17381 )
17382 ; H=[_, _|J],
17383 setarg(2, H, J),
17384 ( J=[K|_]
17385 -> setarg(4, K, H)
17386 ; true
17387 )
17388 )
17389 ),
17390 ( nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-12',
17391 L),
17392 delete_ht(L, k(C, E), A)
17393 ),
17394 ( nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-1',
17395 M),
17396 delete_ht(M, C, A)
17397 ),
17398 ( nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-3',
17399 N),
17400 delete_ht(N, F, A)
17401 ),
17402 nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-123',
17403 O),
17404 delete_ht(O, k(C, E, F), A)
17405 ),
17406 spawns_all_triggers___2__1__0__7(P, C, E, Q)
17407 ; spawns_all_triggers___2__1__0__7(P, C, E, Q)
17408 ).
17409spawns_all_triggers___2__1(A, B, C) :-
17410 spawns_all_triggers___2__2(A, B, C).
17411spawns_all_triggers___2__2(B, guard, D) :-
17412 nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-12', A),
17413 lookup_ht(A, k(B, body), C),
17414 !,
17415 spawns_all_triggers___2__2__0__8(C, B, guard, D).
17416spawns_all_triggers___2__2__0__8([], A, B, C) :-
17417 spawns_all_triggers___2__3(A, B, C).
17418spawns_all_triggers___2__2__0__8([A|O], C, P, Q) :-
17419 ( ( A=suspension(_, active, _, _, B, D, E),
17420 B==C,
17421 D=body
17422 ),
17423 may_trigger(E)
17424 -> ( setarg(2, A, removed),
17425 ( nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-13',
17426 F),
17427 delete_ht(F, k(C, E), A)
17428 ),
17429 ( arg(4, A, G),
17430 ( var(G)
17431 -> nb_getval('$chr_store_global_ground_chr_translate____spawns___3',
17432 H),
17433 H=[_|I],
17434 b_setval('$chr_store_global_ground_chr_translate____spawns___3',
17435 I),
17436 ( I=[J|_]
17437 -> setarg(4, J, _)
17438 ; true
17439 )
17440 ; G=[_, _|I],
17441 setarg(2, G, I),
17442 ( I=[J|_]
17443 -> setarg(4, J, G)
17444 ; true
17445 )
17446 )
17447 ),
17448 ( nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-12',
17449 K),
17450 delete_ht(K, k(C, body), A)
17451 ),
17452 ( nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-1',
17453 L),
17454 delete_ht(L, C, A)
17455 ),
17456 ( nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-3',
17457 M),
17458 delete_ht(M, E, A)
17459 ),
17460 nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-123',
17461 N),
17462 delete_ht(N, k(C, body, E), A)
17463 ),
17464 spawns_all_triggers___2__2__0__8(O, C, P, Q)
17465 ; spawns_all_triggers___2__2__0__8(O, C, P, Q)
17466 ).
17467spawns_all_triggers___2__2(A, B, C) :-
17468 spawns_all_triggers___2__3(A, B, C).
17469spawns_all_triggers___2__3(J, L, C) :-
17470 nb_getval('$chr_store_global_ground_chr_translate____spawns_all_triggers_implies_spawns_all___0',
17471 A),
17472 member(B, A),
17473 B=suspension(_, active, _),
17474 !,
17475 ( var(C)
17476 -> true
17477 ; arg(2, C, D),
17478 setarg(2, C, removed),
17479 ( D==not_stored_yet
17480 -> true
17481 ; ( arg(4, C, E),
17482 ( var(E)
17483 -> nb_getval('$chr_store_global_ground_chr_translate____spawns_all_triggers___2',
17484 F),
17485 F=[_|G],
17486 b_setval('$chr_store_global_ground_chr_translate____spawns_all_triggers___2',
17487 G),
17488 ( G=[H|_]
17489 -> setarg(4, H, _)
17490 ; true
17491 )
17492 ; E=[_, _|G],
17493 setarg(2, E, G),
17494 ( G=[H|_]
17495 -> setarg(4, H, E)
17496 ; true
17497 )
17498 )
17499 ),
17500 ( nb_getval('$chr_store_multi_hash_chr_translate____spawns_all_triggers___2-1',
17501 I),
17502 delete_ht(I, J, C)
17503 ),
17504 nb_getval('$chr_store_multi_hash_chr_translate____spawns_all_triggers___2-12',
17505 K),
17506 delete_ht(K, k(J, L), C)
17507 )
17508 ),
17509 spawns_all(J, L).
17510spawns_all_triggers___2__3(B, D, C) :-
17511 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-3', A),
17512 lookup_ht(A, B, F),
17513 !,
17514 C=suspension(E, not_stored_yet, t, _, B, D),
17515 'chr gen_id'(E),
17516 spawns_all_triggers___2__3__0__10(F, B, D, C).
17517spawns_all_triggers___2__3__0__10([], A, B, C) :-
17518 spawns_all_triggers___2__4(A, B, C).
17519spawns_all_triggers___2__3__0__10([A|H], C, I, J) :-
17520 ( ( A=suspension(_, active, _, _, E, _, B, G, _),
17521 B==C
17522 ),
17523 nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-3', D),
17524 lookup_ht(D, E, F)
17525 -> spawns_all_triggers___2__3__1__10(F,
17526 E,
17527 G,
17528 A,
17529 H,
17530 C,
17531 I,
17532 J)
17533 ; spawns_all_triggers___2__3__0__10(H, C, I, J)
17534 ).
17535spawns_all_triggers___2__3__1__10([], _, _, _, A, B, C, D) :-
17536 spawns_all_triggers___2__3__0__10(A, B, C, D).
17537spawns_all_triggers___2__3__1__10([A|Y], C, E, Z, A1, D, X, Q) :-
17538 ( ( A=suspension(_, active, _, _, G, M, B),
17539 B==C
17540 ),
17541 may_trigger(C),
17542 \+ is_passive(D, E)
17543 -> ( setarg(2, A, removed),
17544 ( nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-13',
17545 F),
17546 delete_ht(F, k(G, C), A)
17547 ),
17548 ( arg(4, A, H),
17549 ( var(H)
17550 -> nb_getval('$chr_store_global_ground_chr_translate____spawns___3',
17551 I),
17552 I=[_|J],
17553 b_setval('$chr_store_global_ground_chr_translate____spawns___3',
17554 J),
17555 ( J=[K|_]
17556 -> setarg(4, K, _)
17557 ; true
17558 )
17559 ; H=[_, _|J],
17560 setarg(2, H, J),
17561 ( J=[K|_]
17562 -> setarg(4, K, H)
17563 ; true
17564 )
17565 )
17566 ),
17567 ( nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-12',
17568 L),
17569 delete_ht(L, k(G, M), A)
17570 ),
17571 ( nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-1',
17572 N),
17573 delete_ht(N, G, A)
17574 ),
17575 ( nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-3',
17576 O),
17577 delete_ht(O, C, A)
17578 ),
17579 nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-123',
17580 P),
17581 delete_ht(P, k(G, M, C), A)
17582 ),
17583 ( arg(2, Q, R),
17584 setarg(2, Q, active),
17585 ( R==not_stored_yet
17586 -> ( nb_getval('$chr_store_global_ground_chr_translate____spawns_all_triggers___2',
17587 S),
17588 T=[Q|S],
17589 b_setval('$chr_store_global_ground_chr_translate____spawns_all_triggers___2',
17590 T),
17591 ( S=[U|_]
17592 -> setarg(4, U, T)
17593 ; true
17594 )
17595 ),
17596 ( nb_getval('$chr_store_multi_hash_chr_translate____spawns_all_triggers___2-1',
17597 V),
17598 insert_ht(V, D, Q)
17599 ),
17600 nb_getval('$chr_store_multi_hash_chr_translate____spawns_all_triggers___2-12',
17601 W),
17602 insert_ht(W, k(D, X), Q)
17603 ; true
17604 )
17605 ),
17606 spawns_all_triggers(G, M),
17607 ( Q=suspension(_, active, _, _, _, _)
17608 -> setarg(2, Q, inactive),
17609 spawns_all_triggers___2__3__1__10(Y,
17610 C,
17611 E,
17612 Z,
17613 A1,
17614 D,
17615 X,
17616 Q)
17617 ; true
17618 )
17619 ; spawns_all_triggers___2__3__1__10(Y,
17620 C,
17621 E,
17622 Z,
17623 A1,
17624 D,
17625 X,
17626 Q)
17627 ).
17628spawns_all_triggers___2__3(B, C, A) :-
17629 A=suspension(D, not_stored_yet, t, _, B, C),
17630 'chr gen_id'(D),
17631 spawns_all_triggers___2__4(B, C, A).
17632spawns_all_triggers___2__4(B, D, E) :-
17633 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-3', A),
17634 lookup_ht(A, B, C),
17635 !,
17636 spawns_all_triggers___2__4__0__11(C, B, D, E).
17637spawns_all_triggers___2__4__0__11([], A, B, C) :-
17638 spawns_all_triggers___2__5(A, B, C).
17639spawns_all_triggers___2__4__0__11([A|H], C, I, J) :-
17640 ( ( A=suspension(_, active, _, _, E, _, B, G, _),
17641 B==C
17642 ),
17643 nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-3', D),
17644 lookup_ht(D, E, F)
17645 -> spawns_all_triggers___2__4__1__11(F,
17646 E,
17647 G,
17648 A,
17649 H,
17650 C,
17651 I,
17652 J)
17653 ; spawns_all_triggers___2__4__0__11(H, C, I, J)
17654 ).
17655spawns_all_triggers___2__4__1__11([], _, _, _, A, B, C, D) :-
17656 spawns_all_triggers___2__4__0__11(A, B, C, D).
17657spawns_all_triggers___2__4__1__11([A|R], C, H, E, S, G, O, D) :-
17658 ( A=suspension(_, active, _, _, P, Q, B),
17659 B==C,
17660 ( F=t(123, D, E, A),
17661 '$novel_production'(D, F),
17662 '$novel_production'(A, F)
17663 ),
17664 \+ may_trigger(C),
17665 \+ is_passive(G, H)
17666 -> '$extend_history'(D, F),
17667 ( arg(2, D, I),
17668 setarg(2, D, active),
17669 ( I==not_stored_yet
17670 -> ( nb_getval('$chr_store_global_ground_chr_translate____spawns_all_triggers___2',
17671 J),
17672 K=[D|J],
17673 b_setval('$chr_store_global_ground_chr_translate____spawns_all_triggers___2',
17674 K),
17675 ( J=[L|_]
17676 -> setarg(4, L, K)
17677 ; true
17678 )
17679 ),
17680 ( nb_getval('$chr_store_multi_hash_chr_translate____spawns_all_triggers___2-1',
17681 M),
17682 insert_ht(M, G, D)
17683 ),
17684 nb_getval('$chr_store_multi_hash_chr_translate____spawns_all_triggers___2-12',
17685 N),
17686 insert_ht(N, k(G, O), D)
17687 ; true
17688 )
17689 ),
17690 spawns_all_triggers(P, Q),
17691 ( D=suspension(_, active, _, _, _, _)
17692 -> setarg(2, D, inactive),
17693 spawns_all_triggers___2__4__1__11(R,
17694 C,
17695 H,
17696 E,
17697 S,
17698 G,
17699 O,
17700 D)
17701 ; true
17702 )
17703 ; spawns_all_triggers___2__4__1__11(R,
17704 C,
17705 H,
17706 E,
17707 S,
17708 G,
17709 O,
17710 D)
17711 ).
17712spawns_all_triggers___2__4(A, B, C) :-
17713 spawns_all_triggers___2__5(A, B, C).
17714spawns_all_triggers___2__5(B, C, D) :-
17715 nb_getval('$chr_store_global_ground_chr_translate____spawns___3', A),
17716 !,
17717 spawns_all_triggers___2__5__0__12(A, B, C, D).
17718spawns_all_triggers___2__5__0__12([], A, B, C) :-
17719 spawns_all_triggers___2__6(A, B, C).
17720spawns_all_triggers___2__5__0__12([A|F], G, H, I) :-
17721 ( A=suspension(_, active, _, _, C, _, E),
17722 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-3',
17723 B),
17724 lookup_ht(B, C, D)
17725 -> spawns_all_triggers___2__5__1__12(D,
17726 C,
17727 E,
17728 A,
17729 F,
17730 G,
17731 H,
17732 I)
17733 ; spawns_all_triggers___2__5__0__12(F, G, H, I)
17734 ).
17735spawns_all_triggers___2__5__1__12([], _, _, _, A, B, C, D) :-
17736 spawns_all_triggers___2__5__0__12(A, B, C, D).
17737spawns_all_triggers___2__5__1__12([A|R], C, I, D, S, O, Q, E) :-
17738 ( A=suspension(_, active, _, _, H, _, B, G, _),
17739 B==C,
17740 ( F=t(125, D, A, E),
17741 '$novel_production'(D, F),
17742 '$novel_production'(E, F)
17743 ),
17744 \+ is_passive(C, G),
17745 may_trigger(H),
17746 \+ may_trigger(I)
17747 -> '$extend_history'(E, F),
17748 ( arg(2, E, J),
17749 setarg(2, E, active),
17750 ( J==not_stored_yet
17751 -> ( nb_getval('$chr_store_global_ground_chr_translate____spawns_all_triggers___2',
17752 K),
17753 L=[E|K],
17754 b_setval('$chr_store_global_ground_chr_translate____spawns_all_triggers___2',
17755 L),
17756 ( K=[M|_]
17757 -> setarg(4, M, L)
17758 ; true
17759 )
17760 ),
17761 ( nb_getval('$chr_store_multi_hash_chr_translate____spawns_all_triggers___2-1',
17762 N),
17763 insert_ht(N, O, E)
17764 ),
17765 nb_getval('$chr_store_multi_hash_chr_translate____spawns_all_triggers___2-12',
17766 P),
17767 insert_ht(P, k(O, Q), E)
17768 ; true
17769 )
17770 ),
17771 spawns(O, Q, I),
17772 ( E=suspension(_, active, _, _, _, _)
17773 -> setarg(2, E, inactive),
17774 spawns_all_triggers___2__5__1__12(R,
17775 C,
17776 I,
17777 D,
17778 S,
17779 O,
17780 Q,
17781 E)
17782 ; true
17783 )
17784 ; spawns_all_triggers___2__5__1__12(R,
17785 C,
17786 I,
17787 D,
17788 S,
17789 O,
17790 Q,
17791 E)
17792 ).
17793spawns_all_triggers___2__5(A, B, C) :-
17794 spawns_all_triggers___2__6(A, B, C).
17795spawns_all_triggers___2__6(G, I, A) :-
17796 arg(2, A, B),
17797 setarg(2, A, active),
17798 ( B==not_stored_yet
17799 -> ( nb_getval('$chr_store_global_ground_chr_translate____spawns_all_triggers___2',
17800 C),
17801 D=[A|C],
17802 b_setval('$chr_store_global_ground_chr_translate____spawns_all_triggers___2',
17803 D),
17804 ( C=[E|_]
17805 -> setarg(4, E, D)
17806 ; true
17807 )
17808 ),
17809 ( nb_getval('$chr_store_multi_hash_chr_translate____spawns_all_triggers___2-1',
17810 F),
17811 insert_ht(F, G, A)
17812 ),
17813 nb_getval('$chr_store_multi_hash_chr_translate____spawns_all_triggers___2-12',
17814 H),
17815 insert_ht(H, k(G, I), A)
17816 ; true
17817 ).
17818spawns_all_triggers_implies_spawns_all :-
17819 spawns_all_triggers_implies_spawns_all___0__0(_).
17820spawns_all_triggers_implies_spawns_all___0__0(_) :-
17821 nb_getval('$chr_store_global_ground_chr_translate____spawns_all_triggers_implies_spawns_all___0',
17822 A),
17823 member(B, A),
17824 B=suspension(_, active, _),
17825 !,
17826 setarg(2, B, removed),
17827 arg(3, B, C),
17828 ( var(C)
17829 -> nb_getval('$chr_store_global_ground_chr_translate____spawns_all_triggers_implies_spawns_all___0',
17830 D),
17831 D=[_|E],
17832 b_setval('$chr_store_global_ground_chr_translate____spawns_all_triggers_implies_spawns_all___0',
17833 E),
17834 ( E=[F|_]
17835 -> setarg(3, F, _)
17836 ; true
17837 )
17838 ; C=[_, _|E],
17839 setarg(2, C, E),
17840 ( E=[F|_]
17841 -> setarg(3, F, C)
17842 ; true
17843 )
17844 ),
17845 fail.
17846spawns_all_triggers_implies_spawns_all___0__0(A) :-
17847 nb_getval('$chr_store_global_ground_chr_translate____spawns_all_triggers___2',
17848 C),
17849 !,
17850 A=suspension(B, not_stored_yet, _),
17851 'chr gen_id'(B),
17852 spawns_all_triggers_implies_spawns_all___0__0__0__3(C, A).
17853spawns_all_triggers_implies_spawns_all___0__0__0__3([], A) :-
17854 spawns_all_triggers_implies_spawns_all___0__1(A).
17855spawns_all_triggers_implies_spawns_all___0__0__0__3([A|O], J) :-
17856 ( A=suspension(_, active, _, _, G, I)
17857 -> ( setarg(2, A, removed),
17858 ( arg(4, A, B),
17859 ( var(B)
17860 -> nb_getval('$chr_store_global_ground_chr_translate____spawns_all_triggers___2',
17861 C),
17862 C=[_|D],
17863 b_setval('$chr_store_global_ground_chr_translate____spawns_all_triggers___2',
17864 D),
17865 ( D=[E|_]
17866 -> setarg(4, E, _)
17867 ; true
17868 )
17869 ; B=[_, _|D],
17870 setarg(2, B, D),
17871 ( D=[E|_]
17872 -> setarg(4, E, B)
17873 ; true
17874 )
17875 )
17876 ),
17877 ( nb_getval('$chr_store_multi_hash_chr_translate____spawns_all_triggers___2-1',
17878 F),
17879 delete_ht(F, G, A)
17880 ),
17881 nb_getval('$chr_store_multi_hash_chr_translate____spawns_all_triggers___2-12',
17882 H),
17883 delete_ht(H, k(G, I), A)
17884 ),
17885 ( arg(2, J, K),
17886 setarg(2, J, active),
17887 ( K==not_stored_yet
17888 -> nb_getval('$chr_store_global_ground_chr_translate____spawns_all_triggers_implies_spawns_all___0',
17889 L),
17890 M=[J|L],
17891 b_setval('$chr_store_global_ground_chr_translate____spawns_all_triggers_implies_spawns_all___0',
17892 M),
17893 ( L=[N|_]
17894 -> setarg(3, N, M)
17895 ; true
17896 )
17897 ; true
17898 )
17899 ),
17900 spawns_all(G, I),
17901 ( J=suspension(_, active, _)
17902 -> setarg(2, J, inactive),
17903 spawns_all_triggers_implies_spawns_all___0__0__0__3(O,
17904 J)
17905 ; true
17906 )
17907 ; spawns_all_triggers_implies_spawns_all___0__0__0__3(O, J)
17908 ).
17909spawns_all_triggers_implies_spawns_all___0__0(A) :-
17910 A=suspension(B, not_stored_yet, _),
17911 'chr gen_id'(B),
17912 spawns_all_triggers_implies_spawns_all___0__1(A).
17913spawns_all_triggers_implies_spawns_all___0__1(A) :-
17914 arg(2, A, B),
17915 setarg(2, A, active),
17916 ( B==not_stored_yet
17917 -> nb_getval('$chr_store_global_ground_chr_translate____spawns_all_triggers_implies_spawns_all___0',
17918 C),
17919 D=[A|C],
17920 b_setval('$chr_store_global_ground_chr_translate____spawns_all_triggers_implies_spawns_all___0',
17921 D),
17922 ( C=[E|_]
17923 -> setarg(3, E, D)
17924 ; true
17925 )
17926 ; true
17927 ).
17928all_spawned(B, E) :-
17929 nb_getval('$chr_store_multi_hash_chr_translate____spawns_all___2-12',
17930 A),
17931 ( lookup_ht(A, k(B, guard), C),
17932 member(D, C),
17933 D=suspension(_, active, _, _),
17934 !
17935 ; lookup_ht(A, k(B, E), F),
17936 member(G, F),
17937 G=suspension(_, active, _, _),
17938 !
17939 ).
17940all_spawned(_, _) :-
17941 fail.
17942is_observed(B, C, G) :-
17943 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-12',
17944 A),
17945 lookup_ht(A, k(B, C), D),
17946 member(E, D),
17947 E=suspension(_, active, _, _, _, _, F, _, _),
17948 !,
17949 do_is_observed(B, F, G).
17950is_observed(_, _, _) :-
17951 fail.
17952do_is_observed(B, C, A) :-
17953 var(A),
17954 !,
17955 do_is_observed(B, C).
17956do_is_observed(B, K, I) :-
17957 ( nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-1',
17958 A),
17959 lookup_ht(A, B, C),
17960 member(D, C),
17961 D=suspension(_, active, _, _, _, _, F, _, _),
17962 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-3',
17963 E),
17964 lookup_ht(E, F, G),
17965 member(H, G),
17966 H=suspension(_, active, _, _, P, _, _, N, _),
17967 H\==D,
17968 ground(I)
17969 ),
17970 ( ( nb_getval('$chr_store_multi_hash_chr_translate____spawns_all___2-12',
17971 J),
17972 lookup_ht(J, k(K, I), L),
17973 member(M, L),
17974 M=suspension(_, active, _, _),
17975 \+ is_passive(F, N),
17976 !
17977 ; nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-123',
17978 O),
17979 lookup_ht(O, k(K, I, P), Q),
17980 member(R, Q),
17981 R=suspension(_, active, _, _, _, _, _),
17982 \+ is_passive(F, N),
17983 !
17984 )
17985 ; nb_getval('$chr_store_multi_hash_chr_translate____spawns_all_triggers___2-12',
17986 S),
17987 lookup_ht(S, k(K, I), T),
17988 member(U, T),
17989 U=suspension(_, active, _, _, _, _),
17990 \+ is_passive(F, N),
17991 may_trigger(P),
17992 !
17993 ).
17994do_is_observed(_, _, _) :-
17995 chr_pp_flag(observation_analysis, off).
17996do_is_observed(B, J) :-
17997 ( nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-1',
17998 A),
17999 lookup_ht(A, B, C),
18000 member(D, C),
18001 D=suspension(_, active, _, _, _, _, F, _, _),
18002 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-3',
18003 E),
18004 lookup_ht(E, F, G),
18005 member(H, G),
18006 H=suspension(_, active, _, _, O, _, _, M, _),
18007 H\==D
18008 ),
18009 ( ( nb_getval('$chr_store_multi_hash_chr_translate____spawns_all___2-1',
18010 I),
18011 lookup_ht(I, J, K),
18012 member(L, K),
18013 L=suspension(_, active, _, _),
18014 \+ is_passive(F, M),
18015 !
18016 ; nb_getval('$chr_store_multi_hash_chr_translate____spawns___3-13',
18017 N),
18018 lookup_ht(N, k(J, O), P),
18019 member(Q, P),
18020 Q=suspension(_, active, _, _, _, _, _),
18021 \+ is_passive(F, M),
18022 !
18023 )
18024 ; nb_getval('$chr_store_multi_hash_chr_translate____spawns_all_triggers___2-1',
18025 R),
18026 lookup_ht(R, J, S),
18027 member(T, S),
18028 T=suspension(_, active, _, _, _, _),
18029 \+ is_passive(F, M),
18030 may_trigger(O),
18031 !
18032 ).
18033do_is_observed(_, _) :-
18034 chr_pp_flag(observation_analysis, off).
18035generate_indexed_variables_body(B/C, G, H, I) :-
18036 nb_getval('$chr_store_multi_hash_chr_translate____constraint_mode___2-1',
18037 A),
18038 lookup_ht(A, B/C, D),
18039 member(E, D),
18040 E=suspension(_, active, _, _, _, J),
18041 !,
18042 get_indexing_spec(B/C, F),
18043 ( chr_pp_flag(term_indexing, on)
18044 -> spectermvars(F, G, B, C, H, I)
18045 ; get_constraint_type_det(B/C, K),
18046 create_indexed_variables_body(G,
18047 J,
18048 K,
18049 I,
18050 1,
18051 B/C,
18052 L,
18053 M),
18054 ( L==empty
18055 -> H=true,
18056 I=[]
18057 ; M==0
18058 -> ( G=[N]
18059 -> true
18060 ; N=..[term|G]
18061 ),
18062 H=term_variables(N, I)
18063 ; L=H
18064 )
18065 ).
18066generate_indexed_variables_body(A, _, _, _) :-
18067 chr_error(internal,
18068 'generate_indexed_variables_body: missing mode info for ~w.\n',
18069 [A]).
18070empty_named_history_initialisations(A, B) :-
18071 D=suspension(C, active, _, A, B),
18072 'chr gen_id'(C),
18073 nb_getval('$chr_store_global_ground_chr_translate____empty_named_history_initialisations___2',
18074 E),
18075 F=[D|E],
18076 b_setval('$chr_store_global_ground_chr_translate____empty_named_history_initialisations___2',
18077 F),
18078 ( E=[G|_]
18079 -> setarg(3, G, F)
18080 ; true
18081 ).
18082generate_empty_named_history_initialisation(A) :-
18083 generate_empty_named_history_initialisation___1__0(A, _).
18084generate_empty_named_history_initialisation___1__0(A, G) :-
18085 ( 'chr newvia_1'(A, B)
18086 -> get_attr(B, chr_translate, C),
18087 C=v(_, D, _, _, _, _, _, _, _, _, _)
18088 ; nb_getval('$chr_store_global_list_chr_translate____generate_empty_named_history_initialisation___1',
18089 D)
18090 ),
18091 member(E, D),
18092 E=suspension(_, active, _, _, F),
18093 F==A,
18094 !,
18095 ( var(G)
18096 -> true
18097 ; G=suspension(_, H, _, _, I),
18098 setarg(2, G, removed),
18099 ( H==not_stored_yet
18100 -> J=[]
18101 ; term_variables(I, J),
18102 ( arg(4, G, K),
18103 ( var(K)
18104 -> nb_getval('$chr_store_global_list_chr_translate____generate_empty_named_history_initialisation___1',
18105 L),
18106 L=[_|M],
18107 b_setval('$chr_store_global_list_chr_translate____generate_empty_named_history_initialisation___1',
18108 M),
18109 ( M=[N|_]
18110 -> setarg(4, N, _)
18111 ; true
18112 )
18113 ; K=[_, _|M],
18114 setarg(2, K, M),
18115 ( M=[N|_]
18116 -> setarg(4, N, K)
18117 ; true
18118 )
18119 )
18120 ),
18121 detach_generate_empty_named_history_initialisation___1(J,
18122 G)
18123 )
18124 ).
18125generate_empty_named_history_initialisation___1__0(B, A) :-
18126 nb_getval('$chr_store_global_ground_chr_translate____empty_named_history_initialisations___2',
18127 D),
18128 !,
18129 ( var(A)
18130 -> A=suspension(C, not_stored_yet, 0, _, B),
18131 'chr gen_id'(C)
18132 ; true
18133 ),
18134 generate_empty_named_history_initialisation___1__0__0__3(D,
18135 B,
18136 A).
18137generate_empty_named_history_initialisation___1__0__0__3([], A, B) :-
18138 generate_empty_named_history_initialisation___1__1(A, B).
18139generate_empty_named_history_initialisation___1__0__0__3([A|T], O, F) :-
18140 ( A=suspension(_, active, _, P, S)
18141 -> ( setarg(2, A, removed),
18142 arg(3, A, B),
18143 ( var(B)
18144 -> nb_getval('$chr_store_global_ground_chr_translate____empty_named_history_initialisations___2',
18145 C),
18146 C=[_|D],
18147 b_setval('$chr_store_global_ground_chr_translate____empty_named_history_initialisations___2',
18148 D),
18149 ( D=[E|_]
18150 -> setarg(3, E, _)
18151 ; true
18152 )
18153 ; B=[_, _|D],
18154 setarg(2, B, D),
18155 ( D=[E|_]
18156 -> setarg(3, E, B)
18157 ; true
18158 )
18159 )
18160 ),
18161 ( arg(2, F, I),
18162 setarg(2, F, active),
18163 ( arg(3, F, G),
18164 H is G+1,
18165 setarg(3, F, H)
18166 ),
18167 ( I==not_stored_yet
18168 -> F=suspension(_, _, _, _, J),
18169 term_variables(J, N),
18170 ( nb_getval('$chr_store_global_list_chr_translate____generate_empty_named_history_initialisation___1',
18171 K),
18172 L=[F|K],
18173 b_setval('$chr_store_global_list_chr_translate____generate_empty_named_history_initialisation___1',
18174 L),
18175 ( K=[M|_]
18176 -> setarg(4, M, L)
18177 ; true
18178 )
18179 ),
18180 attach_generate_empty_named_history_initialisation___1(N,
18181 F)
18182 ; true
18183 )
18184 ),
18185 ( empty_named_history_global_variable(O, Q),
18186 P=[(:-nb_setval(Q, 0))|R],
18187 empty_named_history_initialisations(R, S)
18188 ),
18189 ( F=suspension(_, active, H, _, _)
18190 -> setarg(2, F, inactive),
18191 generate_empty_named_history_initialisation___1__0__0__3(T,
18192 O,
18193 F)
18194 ; true
18195 )
18196 ; generate_empty_named_history_initialisation___1__0__0__3(T,
18197 O,
18198 F)
18199 ).
18200generate_empty_named_history_initialisation___1__0(B, A) :-
18201 ( var(A)
18202 -> A=suspension(C, not_stored_yet, 0, _, B),
18203 'chr gen_id'(C)
18204 ; true
18205 ),
18206 generate_empty_named_history_initialisation___1__1(B, A).
18207generate_empty_named_history_initialisation___1__1(_, A) :-
18208 arg(2, A, D),
18209 setarg(2, A, active),
18210 arg(3, A, B),
18211 C is B+1,
18212 setarg(3, A, C),
18213 ( D==not_stored_yet
18214 -> A=suspension(_, _, _, _, E),
18215 term_variables(E, I),
18216 ( nb_getval('$chr_store_global_list_chr_translate____generate_empty_named_history_initialisation___1',
18217 F),
18218 G=[A|F],
18219 b_setval('$chr_store_global_list_chr_translate____generate_empty_named_history_initialisation___1',
18220 G),
18221 ( F=[H|_]
18222 -> setarg(4, H, G)
18223 ; true
18224 )
18225 ),
18226 attach_generate_empty_named_history_initialisation___1(I,
18227 A)
18228 ; true
18229 ).
18230find_empty_named_histories :-
18231 find_empty_named_histories___0__0(_).
18232find_empty_named_histories___0__0(A) :-
18233 nb_getval('$chr_store_constants_chr_translate____history___3___[3]___[]',
18234 C),
18235 !,
18236 A=suspension(B, not_stored_yet, t, _),
18237 'chr gen_id'(B),
18238 find_empty_named_histories___0__0__0__1(C, A).
18239find_empty_named_histories___0__0__0__1([], A) :-
18240 find_empty_named_histories___0__1(A).
18241find_empty_named_histories___0__0__0__1([A|J], C) :-
18242 ( A=suspension(_, active, _, _, I, B),
18243 B=[],
18244 D=t(142, C, A),
18245 '$novel_production'(C, D),
18246 '$novel_production'(A, D)
18247 -> '$extend_history'(C, D),
18248 ( arg(2, C, E),
18249 setarg(2, C, active),
18250 ( E==not_stored_yet
18251 -> nb_getval('$chr_store_global_ground_chr_translate____find_empty_named_histories___0',
18252 F),
18253 G=[C|F],
18254 b_setval('$chr_store_global_ground_chr_translate____find_empty_named_histories___0',
18255 G),
18256 ( F=[H|_]
18257 -> setarg(4, H, G)
18258 ; true
18259 )
18260 ; true
18261 )
18262 ),
18263 generate_empty_named_history_initialisation(I),
18264 ( C=suspension(_, active, _, _)
18265 -> setarg(2, C, inactive),
18266 find_empty_named_histories___0__0__0__1(J, C)
18267 ; true
18268 )
18269 ; find_empty_named_histories___0__0__0__1(J, C)
18270 ).
18271find_empty_named_histories___0__0(A) :-
18272 A=suspension(B, not_stored_yet, t, _),
18273 'chr gen_id'(B),
18274 find_empty_named_histories___0__1(A).
18275find_empty_named_histories___0__1(B) :-
18276 nb_getval('$chr_store_global_list_chr_translate____generate_empty_named_history_initialisation___1',
18277 A),
18278 !,
18279 find_empty_named_histories___0__1__0__2(A, B).
18280find_empty_named_histories___0__1__0__2([], A) :-
18281 find_empty_named_histories___0__2(A).
18282find_empty_named_histories___0__1__0__2([A|H], I) :-
18283 ( A=suspension(_, active, _, _, _)
18284 -> ( A=suspension(_, _, _, _, B),
18285 setarg(2, A, removed),
18286 term_variables(B, G),
18287 ( arg(4, A, C),
18288 ( var(C)
18289 -> nb_getval('$chr_store_global_list_chr_translate____generate_empty_named_history_initialisation___1',
18290 D),
18291 D=[_|E],
18292 b_setval('$chr_store_global_list_chr_translate____generate_empty_named_history_initialisation___1',
18293 E),
18294 ( E=[F|_]
18295 -> setarg(4, F, _)
18296 ; true
18297 )
18298 ; C=[_, _|E],
18299 setarg(2, C, E),
18300 ( E=[F|_]
18301 -> setarg(4, F, C)
18302 ; true
18303 )
18304 )
18305 ),
18306 detach_generate_empty_named_history_initialisation___1(G,
18307 A)
18308 ),
18309 find_empty_named_histories___0__1__0__2(H, I)
18310 ; find_empty_named_histories___0__1__0__2(H, I)
18311 ).
18312find_empty_named_histories___0__1(A) :-
18313 find_empty_named_histories___0__2(A).
18314find_empty_named_histories___0__2(G) :-
18315 nb_getval('$chr_store_global_ground_chr_translate____empty_named_history_initialisations___2',
18316 A),
18317 member(B, A),
18318 B=suspension(_, active, _, M, N),
18319 !,
18320 setarg(2, B, removed),
18321 arg(3, B, C),
18322 ( var(C)
18323 -> nb_getval('$chr_store_global_ground_chr_translate____empty_named_history_initialisations___2',
18324 D),
18325 D=[_|E],
18326 b_setval('$chr_store_global_ground_chr_translate____empty_named_history_initialisations___2',
18327 E),
18328 ( E=[F|_]
18329 -> setarg(3, F, _)
18330 ; true
18331 )
18332 ; C=[_, _|E],
18333 setarg(2, C, E),
18334 ( E=[F|_]
18335 -> setarg(3, F, C)
18336 ; true
18337 )
18338 ),
18339 ( var(G)
18340 -> true
18341 ; arg(2, G, H),
18342 setarg(2, G, removed),
18343 ( H==not_stored_yet
18344 -> true
18345 ; arg(4, G, I),
18346 ( var(I)
18347 -> nb_getval('$chr_store_global_ground_chr_translate____find_empty_named_histories___0',
18348 J),
18349 J=[_|K],
18350 b_setval('$chr_store_global_ground_chr_translate____find_empty_named_histories___0',
18351 K),
18352 ( K=[L|_]
18353 -> setarg(4, L, _)
18354 ; true
18355 )
18356 ; I=[_, _|K],
18357 setarg(2, I, K),
18358 ( K=[L|_]
18359 -> setarg(4, L, I)
18360 ; true
18361 )
18362 )
18363 )
18364 ),
18365 M=N.
18366find_empty_named_histories___0__2(A) :-
18367 ( var(A)
18368 -> true
18369 ; arg(2, A, B),
18370 setarg(2, A, removed),
18371 ( B==not_stored_yet
18372 -> true
18373 ; arg(4, A, C),
18374 ( var(C)
18375 -> nb_getval('$chr_store_global_ground_chr_translate____find_empty_named_histories___0',
18376 D),
18377 D=[_|E],
18378 b_setval('$chr_store_global_ground_chr_translate____find_empty_named_histories___0',
18379 E),
18380 ( E=[F|_]
18381 -> setarg(4, F, _)
18382 ; true
18383 )
18384 ; C=[_, _|E],
18385 setarg(2, C, E),
18386 ( E=[F|_]
18387 -> setarg(4, F, C)
18388 ; true
18389 )
18390 )
18391 )
18392 ),
18393 chr_error(internal, 'find_empty_named_histories was not removed', []).
18394module_initializer(A) :-
18395 C=suspension(B, active, _, A),
18396 'chr gen_id'(B),
18397 nb_getval('$chr_store_global_ground_chr_translate____module_initializer___1',
18398 D),
18399 E=[C|D],
18400 b_setval('$chr_store_global_ground_chr_translate____module_initializer___1',
18401 E),
18402 ( D=[F|_]
18403 -> setarg(3, F, E)
18404 ; true
18405 ).
18406module_initializers(G) :-
18407 nb_getval('$chr_store_global_ground_chr_translate____module_initializer___1',
18408 A),
18409 member(B, A),
18410 B=suspension(_, active, _, H),
18411 !,
18412 setarg(2, B, removed),
18413 arg(3, B, C),
18414 ( var(C)
18415 -> nb_getval('$chr_store_global_ground_chr_translate____module_initializer___1',
18416 D),
18417 D=[_|E],
18418 b_setval('$chr_store_global_ground_chr_translate____module_initializer___1',
18419 E),
18420 ( E=[F|_]
18421 -> setarg(3, F, _)
18422 ; true
18423 )
18424 ; C=[_, _|E],
18425 setarg(2, C, E),
18426 ( E=[F|_]
18427 -> setarg(3, F, C)
18428 ; true
18429 )
18430 ),
18431 G=(H, I),
18432 module_initializers(I).
18433module_initializers(true).
18434actual_atomic_multi_hash_keys(B, I, O) :-
18435 nb_getval('$chr_store_multi_hash_chr_translate____actual_store_types___2-1',
18436 A),
18437 lookup_ht(A, B, C),
18438 member(D, C),
18439 D=suspension(_, active, _, J),
18440 nb_getval('$chr_store_multi_hash_chr_translate____validate_store_type_assumption___1-1',
18441 E),
18442 lookup_ht(E, B, F),
18443 member(G, F),
18444 G=suspension(_, active, _),
18445 !,
18446 setarg(2, D, removed),
18447 nb_getval('$chr_store_multi_hash_chr_translate____actual_store_types___2-1',
18448 H),
18449 delete_ht(H, B, D),
18450 selectchk(multi_hash([I]), J, Q),
18451 I=[K],
18452 ( get_constraint_arg_type(B, K, L),
18453 enumerated_atomic_type(L, M)
18454 -> N=M,
18455 P=complete
18456 ; N=O,
18457 P=incomplete
18458 ),
18459 actual_store_types(B,
18460 [atomic_constants(I, N, P)|Q]).
18461actual_atomic_multi_hash_keys(B, C, H) :-
18462 nb_getval('$chr_store_multi_hash_chr_translate____actual_atomic_multi_hash_keys___3-12',
18463 A),
18464 lookup_ht(A, k(B, C), D),
18465 member(E, D),
18466 E=suspension(_, active, _, _, I),
18467 !,
18468 setarg(2, E, removed),
18469 nb_getval('$chr_store_multi_hash_chr_translate____actual_atomic_multi_hash_keys___3-12',
18470 F),
18471 delete_ht(F, k(B, C), E),
18472 nb_getval('$chr_store_multi_hash_chr_translate____actual_atomic_multi_hash_keys___3-1',
18473 G),
18474 delete_ht(G, B, E),
18475 append(H, I, J),
18476 sort(J, K),
18477 actual_atomic_multi_hash_keys(B, C, K).
18478actual_atomic_multi_hash_keys(B, C, I) :-
18479 nb_getval('$chr_store_multi_hash_chr_translate____actual_ground_multi_hash_keys___3-12',
18480 A),
18481 lookup_ht(A, k(B, C), D),
18482 member(E, D),
18483 E=suspension(_, active, _, _, H),
18484 !,
18485 setarg(2, E, removed),
18486 nb_getval('$chr_store_multi_hash_chr_translate____actual_ground_multi_hash_keys___3-12',
18487 F),
18488 delete_ht(F, k(B, C), E),
18489 nb_getval('$chr_store_multi_hash_chr_translate____actual_ground_multi_hash_keys___3-1',
18490 G),
18491 delete_ht(G, B, E),
18492 append(H, I, J),
18493 sort(J, K),
18494 actual_ground_multi_hash_keys(B, C, K).
18495actual_atomic_multi_hash_keys(B, C, _) :-
18496 nb_getval('$chr_store_multi_hash_chr_translate____actual_non_ground_multi_hash_key___2-12',
18497 A),
18498 lookup_ht(A, k(B, C), D),
18499 member(E, D),
18500 E=suspension(_, active, _, _),
18501 !.
18502actual_atomic_multi_hash_keys(A, B, C) :-
18503 F=suspension(D, active, A, B, C),
18504 'chr gen_id'(D),
18505 nb_getval('$chr_store_multi_hash_chr_translate____actual_atomic_multi_hash_keys___3-12',
18506 E),
18507 insert_ht(E, k(A, B), F),
18508 nb_getval('$chr_store_multi_hash_chr_translate____actual_atomic_multi_hash_keys___3-1',
18509 G),
18510 insert_ht(G, A, F).
18511actual_ground_multi_hash_keys(B, I, M) :-
18512 nb_getval('$chr_store_multi_hash_chr_translate____actual_store_types___2-1',
18513 A),
18514 lookup_ht(A, B, C),
18515 member(D, C),
18516 D=suspension(_, active, _, O),
18517 nb_getval('$chr_store_multi_hash_chr_translate____validate_store_type_assumption___1-1',
18518 E),
18519 lookup_ht(E, B, F),
18520 member(G, F),
18521 G=suspension(_, active, _),
18522 !,
18523 setarg(2, D, removed),
18524 nb_getval('$chr_store_multi_hash_chr_translate____actual_store_types___2-1',
18525 H),
18526 delete_ht(H, B, D),
18527 ( I=[J],
18528 get_constraint_arg_type(B, J, K),
18529 K=chr_enum(L)
18530 -> N=complete
18531 ; L=M,
18532 N=incomplete
18533 ),
18534 selectchk(multi_hash([I]), O, P),
18535 actual_store_types(B,
18536 [ground_constants(I, L, N)|P]).
18537actual_ground_multi_hash_keys(B, C, H) :-
18538 nb_getval('$chr_store_multi_hash_chr_translate____actual_atomic_multi_hash_keys___3-12',
18539 A),
18540 lookup_ht(A, k(B, C), D),
18541 member(E, D),
18542 E=suspension(_, active, _, _, I),
18543 !,
18544 setarg(2, E, removed),
18545 nb_getval('$chr_store_multi_hash_chr_translate____actual_atomic_multi_hash_keys___3-12',
18546 F),
18547 delete_ht(F, k(B, C), E),
18548 nb_getval('$chr_store_multi_hash_chr_translate____actual_atomic_multi_hash_keys___3-1',
18549 G),
18550 delete_ht(G, B, E),
18551 append(H, I, J),
18552 sort(J, K),
18553 actual_ground_multi_hash_keys(B, C, K).
18554actual_ground_multi_hash_keys(B, C, H) :-
18555 nb_getval('$chr_store_multi_hash_chr_translate____actual_ground_multi_hash_keys___3-12',
18556 A),
18557 lookup_ht(A, k(B, C), D),
18558 member(E, D),
18559 E=suspension(_, active, _, _, I),
18560 !,
18561 setarg(2, E, removed),
18562 nb_getval('$chr_store_multi_hash_chr_translate____actual_ground_multi_hash_keys___3-12',
18563 F),
18564 delete_ht(F, k(B, C), E),
18565 nb_getval('$chr_store_multi_hash_chr_translate____actual_ground_multi_hash_keys___3-1',
18566 G),
18567 delete_ht(G, B, E),
18568 append(H, I, J),
18569 sort(J, K),
18570 actual_ground_multi_hash_keys(B, C, K).
18571actual_ground_multi_hash_keys(B, C, _) :-
18572 nb_getval('$chr_store_multi_hash_chr_translate____actual_non_ground_multi_hash_key___2-12',
18573 A),
18574 lookup_ht(A, k(B, C), D),
18575 member(E, D),
18576 E=suspension(_, active, _, _),
18577 !.
18578actual_ground_multi_hash_keys(A, B, C) :-
18579 F=suspension(D, active, A, B, C),
18580 'chr gen_id'(D),
18581 nb_getval('$chr_store_multi_hash_chr_translate____actual_ground_multi_hash_keys___3-12',
18582 E),
18583 insert_ht(E, k(A, B), F),
18584 nb_getval('$chr_store_multi_hash_chr_translate____actual_ground_multi_hash_keys___3-1',
18585 G),
18586 insert_ht(G, A, F).
18587actual_non_ground_multi_hash_key(B, C) :-
18588 nb_getval('$chr_store_multi_hash_chr_translate____actual_non_ground_multi_hash_key___2-12',
18589 A),
18590 lookup_ht(A, k(B, C), D),
18591 member(E, D),
18592 E=suspension(_, active, _, _),
18593 !.
18594actual_non_ground_multi_hash_key(B, C) :-
18595 nb_getval('$chr_store_multi_hash_chr_translate____actual_atomic_multi_hash_keys___3-12',
18596 A),
18597 lookup_ht(A, k(B, C), D),
18598 !,
18599 actual_non_ground_multi_hash_key___2__0__0__3(D, B, C).
18600actual_non_ground_multi_hash_key___2__0__0__3([], A, B) :-
18601 actual_non_ground_multi_hash_key___2__1(A, B).
18602actual_non_ground_multi_hash_key___2__0__0__3([A|H], C, E) :-
18603 ( A=suspension(_, active, B, D, _),
18604 B==C,
18605 D==E
18606 -> ( setarg(2, A, removed),
18607 ( nb_getval('$chr_store_multi_hash_chr_translate____actual_atomic_multi_hash_keys___3-12',
18608 F),
18609 delete_ht(F, k(C, E), A)
18610 ),
18611 nb_getval('$chr_store_multi_hash_chr_translate____actual_atomic_multi_hash_keys___3-1',
18612 G),
18613 delete_ht(G, C, A)
18614 ),
18615 actual_non_ground_multi_hash_key___2__0__0__3(H, C, E)
18616 ; actual_non_ground_multi_hash_key___2__0__0__3(H, C, E)
18617 ).
18618actual_non_ground_multi_hash_key(A, B) :-
18619 actual_non_ground_multi_hash_key___2__1(A, B).
18620actual_non_ground_multi_hash_key___2__1(B, C) :-
18621 nb_getval('$chr_store_multi_hash_chr_translate____actual_ground_multi_hash_keys___3-12',
18622 A),
18623 lookup_ht(A, k(B, C), D),
18624 !,
18625 actual_non_ground_multi_hash_key___2__1__0__4(D, B, C).
18626actual_non_ground_multi_hash_key___2__1__0__4([], A, B) :-
18627 actual_non_ground_multi_hash_key___2__2(A, B).
18628actual_non_ground_multi_hash_key___2__1__0__4([A|H], C, E) :-
18629 ( A=suspension(_, active, B, D, _),
18630 B==C,
18631 D==E
18632 -> ( setarg(2, A, removed),
18633 ( nb_getval('$chr_store_multi_hash_chr_translate____actual_ground_multi_hash_keys___3-12',
18634 F),
18635 delete_ht(F, k(C, E), A)
18636 ),
18637 nb_getval('$chr_store_multi_hash_chr_translate____actual_ground_multi_hash_keys___3-1',
18638 G),
18639 delete_ht(G, C, A)
18640 ),
18641 actual_non_ground_multi_hash_key___2__1__0__4(H, C, E)
18642 ; actual_non_ground_multi_hash_key___2__1__0__4(H, C, E)
18643 ).
18644actual_non_ground_multi_hash_key___2__1(A, B) :-
18645 actual_non_ground_multi_hash_key___2__2(A, B).
18646actual_non_ground_multi_hash_key___2__2(A, B) :-
18647 E=suspension(C, active, A, B),
18648 'chr gen_id'(C),
18649 nb_getval('$chr_store_multi_hash_chr_translate____actual_non_ground_multi_hash_key___2-12',
18650 D),
18651 insert_ht(D, k(A, B), E).
18652symbol_count(A, B) :-
18653 symbol_count___2__0(A, B, _).
18654symbol_count___2__0(A, T, M) :-
18655 ( 'chr newvia_1'(A, B)
18656 -> get_attr(B, chr_translate, C),
18657 C=v(_, _, _, D, _, _, _, _, _, _, _)
18658 ; nb_getval('$chr_store_global_list_chr_translate____fresh_symbol___2',
18659 D)
18660 ),
18661 member(E, D),
18662 E=suspension(_, active, _, _, _, F, U),
18663 F==A,
18664 !,
18665 E=suspension(_, _, _, _, _, G, _),
18666 setarg(2, E, removed),
18667 term_variables(G, L),
18668 arg(5, E, H),
18669 ( var(H)
18670 -> nb_getval('$chr_store_global_list_chr_translate____fresh_symbol___2',
18671 I),
18672 I=[_|J],
18673 b_setval('$chr_store_global_list_chr_translate____fresh_symbol___2',
18674 J),
18675 ( J=[K|_]
18676 -> setarg(5, K, _)
18677 ; true
18678 )
18679 ; H=[_, _|J],
18680 setarg(2, H, J),
18681 ( J=[K|_]
18682 -> setarg(5, K, H)
18683 ; true
18684 )
18685 ),
18686 detach_fresh_symbol___2(L, E),
18687 ( var(M)
18688 -> true
18689 ; M=suspension(_, _, _, N, _),
18690 setarg(2, M, removed),
18691 term_variables(N, S),
18692 ( arg(3, M, O),
18693 ( var(O)
18694 -> nb_getval('$chr_store_global_list_chr_translate____symbol_count___2',
18695 P),
18696 P=[_|Q],
18697 b_setval('$chr_store_global_list_chr_translate____symbol_count___2',
18698 Q),
18699 ( Q=[R|_]
18700 -> setarg(3, R, _)
18701 ; true
18702 )
18703 ; O=[_, _|Q],
18704 setarg(2, O, Q),
18705 ( Q=[R|_]
18706 -> setarg(3, R, O)
18707 ; true
18708 )
18709 )
18710 ),
18711 detach_symbol_count___2(S, M)
18712 ),
18713 atom_concat(A, T, U),
18714 V is T+1,
18715 symbol_count(A, V).
18716symbol_count___2__0(B, C, A) :-
18717 ( var(A)
18718 -> ( A=suspension(D, active, _, B, C),
18719 term_variables(B, H),
18720 'chr gen_id'(D)
18721 ),
18722 ( nb_getval('$chr_store_global_list_chr_translate____symbol_count___2',
18723 E),
18724 F=[A|E],
18725 b_setval('$chr_store_global_list_chr_translate____symbol_count___2',
18726 F),
18727 ( E=[G|_]
18728 -> setarg(3, G, F)
18729 ; true
18730 )
18731 ),
18732 attach_symbol_count___2(H, A)
18733 ; setarg(2, A, active)
18734 ).
18735fresh_symbol(A, B) :-
18736 fresh_symbol___2__0(A, B, _).
18737fresh_symbol___2__0(A, V, M) :-
18738 ( 'chr newvia_1'(A, B)
18739 -> get_attr(B, chr_translate, C),
18740 C=v(_, _, D, _, _, _, _, _, _, _, _)
18741 ; nb_getval('$chr_store_global_list_chr_translate____symbol_count___2',
18742 D)
18743 ),
18744 member(E, D),
18745 E=suspension(_, active, _, F, U),
18746 F==A,
18747 !,
18748 E=suspension(_, _, _, G, _),
18749 setarg(2, E, removed),
18750 term_variables(G, L),
18751 arg(3, E, H),
18752 ( var(H)
18753 -> nb_getval('$chr_store_global_list_chr_translate____symbol_count___2',
18754 I),
18755 I=[_|J],
18756 b_setval('$chr_store_global_list_chr_translate____symbol_count___2',
18757 J),
18758 ( J=[K|_]
18759 -> setarg(3, K, _)
18760 ; true
18761 )
18762 ; H=[_, _|J],
18763 setarg(2, H, J),
18764 ( J=[K|_]
18765 -> setarg(3, K, H)
18766 ; true
18767 )
18768 ),
18769 detach_symbol_count___2(L, E),
18770 ( var(M)
18771 -> true
18772 ; M=suspension(_, N, _, _, _, O, _),
18773 setarg(2, M, removed),
18774 ( N==not_stored_yet
18775 -> P=[]
18776 ; term_variables(O, P),
18777 ( arg(5, M, Q),
18778 ( var(Q)
18779 -> nb_getval('$chr_store_global_list_chr_translate____fresh_symbol___2',
18780 R),
18781 R=[_|S],
18782 b_setval('$chr_store_global_list_chr_translate____fresh_symbol___2',
18783 S),
18784 ( S=[T|_]
18785 -> setarg(5, T, _)
18786 ; true
18787 )
18788 ; Q=[_, _|S],
18789 setarg(2, Q, S),
18790 ( S=[T|_]
18791 -> setarg(5, T, Q)
18792 ; true
18793 )
18794 )
18795 ),
18796 detach_fresh_symbol___2(P, M)
18797 )
18798 ),
18799 atom_concat(A, U, V),
18800 W is U+1,
18801 symbol_count(A, W).
18802fresh_symbol___2__0(B, C, A) :-
18803 ( var(A)
18804 -> A=suspension(D, not_stored_yet, t, 0, _, B, C),
18805 'chr gen_id'(D)
18806 ; true
18807 ),
18808 ( '$novel_production'(A, 157),
18809 !,
18810 '$extend_history'(A, 157),
18811 arg(2, A, G),
18812 setarg(2, A, active),
18813 arg(4, A, E),
18814 F is E+1,
18815 setarg(4, A, F),
18816 ( G==not_stored_yet
18817 -> A=suspension(_, _, _, _, _, H, _),
18818 term_variables(H, L),
18819 ( nb_getval('$chr_store_global_list_chr_translate____fresh_symbol___2',
18820 I),
18821 J=[A|I],
18822 b_setval('$chr_store_global_list_chr_translate____fresh_symbol___2',
18823 J),
18824 ( I=[K|_]
18825 -> setarg(5, K, J)
18826 ; true
18827 )
18828 ),
18829 attach_fresh_symbol___2(L, A)
18830 ; true
18831 ),
18832 symbol_count(B, 0),
18833 ( A=suspension(_, active, _, F, _, _, _)
18834 -> setarg(2, A, inactive),
18835 fresh_symbol___2__1(B, C, A)
18836 ; true
18837 )
18838 ; fresh_symbol___2__1(B, C, A)
18839 ).
18840fresh_symbol___2__1(_, _, A) :-
18841 arg(2, A, D),
18842 setarg(2, A, active),
18843 arg(4, A, B),
18844 C is B+1,
18845 setarg(4, A, C),
18846 ( D==not_stored_yet
18847 -> A=suspension(_, _, _, _, _, E, _),
18848 term_variables(E, I),
18849 ( nb_getval('$chr_store_global_list_chr_translate____fresh_symbol___2',
18850 F),
18851 G=[A|F],
18852 b_setval('$chr_store_global_list_chr_translate____fresh_symbol___2',
18853 G),
18854 ( F=[H|_]
18855 -> setarg(5, H, G)
18856 ; true
18857 )
18858 ),
18859 attach_fresh_symbol___2(I, A)
18860 ; true
18861 ).
18862prolog_global_variable(B) :-
18863 nb_getval('$chr_store_multi_hash_chr_translate____prolog_global_variable___1-1',
18864 A),
18865 lookup_ht(A, B, C),
18866 member(D, C),
18867 D=suspension(_, active, _, _),
18868 !.
18869prolog_global_variable(A) :-
18870 C=suspension(B, active, _, A),
18871 'chr gen_id'(B),
18872 nb_getval('$chr_store_global_ground_chr_translate____prolog_global_variable___1',
18873 D),
18874 E=[C|D],
18875 b_setval('$chr_store_global_ground_chr_translate____prolog_global_variable___1',
18876 E),
18877 ( D=[F|_]
18878 -> setarg(3, F, E)
18879 ; true
18880 ),
18881 nb_getval('$chr_store_multi_hash_chr_translate____prolog_global_variable___1-1',
18882 G),
18883 insert_ht(G, A, C).
18884prolog_global_variables(I) :-
18885 nb_getval('$chr_store_global_ground_chr_translate____prolog_global_variable___1',
18886 A),
18887 member(B, A),
18888 B=suspension(_, active, _, H),
18889 !,
18890 setarg(2, B, removed),
18891 arg(3, B, C),
18892 ( var(C)
18893 -> nb_getval('$chr_store_global_ground_chr_translate____prolog_global_variable___1',
18894 D),
18895 D=[_|E],
18896 b_setval('$chr_store_global_ground_chr_translate____prolog_global_variable___1',
18897 E),
18898 ( E=[F|_]
18899 -> setarg(3, F, _)
18900 ; true
18901 )
18902 ; C=[_, _|E],
18903 setarg(2, C, E),
18904 ( E=[F|_]
18905 -> setarg(3, F, C)
18906 ; true
18907 )
18908 ),
18909 nb_getval('$chr_store_multi_hash_chr_translate____prolog_global_variable___1-1',
18910 G),
18911 delete_ht(G, H, B),
18912 I=[H|J],
18913 prolog_global_variables(J).
18914prolog_global_variables([]).
18915background_info(G) :-
18916 nb_getval('$chr_store_global_ground_chr_translate____background_info___1',
18917 A),
18918 member(B, A),
18919 B=suspension(_, active, _, H),
18920 !,
18921 setarg(2, B, removed),
18922 arg(3, B, C),
18923 ( var(C)
18924 -> nb_getval('$chr_store_global_ground_chr_translate____background_info___1',
18925 D),
18926 D=[_|E],
18927 b_setval('$chr_store_global_ground_chr_translate____background_info___1',
18928 E),
18929 ( E=[F|_]
18930 -> setarg(3, F, _)
18931 ; true
18932 )
18933 ; C=[_, _|E],
18934 setarg(2, C, E),
18935 ( E=[F|_]
18936 -> setarg(3, F, C)
18937 ; true
18938 )
18939 ),
18940 append(G, H, I),
18941 background_info(I).
18942background_info(A) :-
18943 C=suspension(B, active, _, A),
18944 'chr gen_id'(B),
18945 nb_getval('$chr_store_global_ground_chr_translate____background_info___1',
18946 D),
18947 E=[C|D],
18948 b_setval('$chr_store_global_ground_chr_translate____background_info___1',
18949 E),
18950 ( D=[F|_]
18951 -> setarg(3, F, E)
18952 ; true
18953 ).
18954background_info(A, B) :-
18955 background_info___2__0(A, B, _).
18956background_info___2__0(B, C, A) :-
18957 nb_getval('$chr_store_global_list_chr_translate____get_bg_info___2', E),
18958 !,
18959 ( var(A)
18960 -> A=suspension(D, not_stored_yet, t, 0, _, B, C),
18961 'chr gen_id'(D)
18962 ; true
18963 ),
18964 background_info___2__0__0__1(E, B, C, A).
18965background_info___2__0__0__1([], A, B, C) :-
18966 background_info___2__1(A, B, C).
18967background_info___2__0__0__1([A|Q], D, O, B) :-
18968 ( A=suspension(_, active, _, _, _, F, _),
18969 ( C=t(164, B, A),
18970 '$novel_production'(B, C),
18971 '$novel_production'(A, C)
18972 ),
18973 copy_term_nat(D, E),
18974 subsumes_term(E, F)
18975 -> '$extend_history'(B, C),
18976 ( arg(2, B, I),
18977 setarg(2, B, active),
18978 ( arg(4, B, G),
18979 H is G+1,
18980 setarg(4, B, H)
18981 ),
18982 ( I==not_stored_yet
18983 -> B=suspension(_, _, _, _, _, J, _),
18984 term_variables(J, N),
18985 ( nb_getval('$chr_store_global_list_chr_translate____background_info___2',
18986 K),
18987 L=[B|K],
18988 b_setval('$chr_store_global_list_chr_translate____background_info___2',
18989 L),
18990 ( K=[M|_]
18991 -> setarg(5, M, L)
18992 ; true
18993 )
18994 ),
18995 attach_background_info___2(N, B)
18996 ; true
18997 )
18998 ),
18999 ( copy_term_nat(D-O, F-P),
19000 get_bg_info_answer([P])
19001 ),
19002 ( B=suspension(_, active, _, H, _, _, _)
19003 -> setarg(2, B, inactive),
19004 background_info___2__0__0__1(Q, D, O, B)
19005 ; true
19006 )
19007 ; background_info___2__0__0__1(Q, D, O, B)
19008 ).
19009background_info___2__0(B, C, A) :-
19010 ( var(A)
19011 -> A=suspension(D, not_stored_yet, t, 0, _, B, C),
19012 'chr gen_id'(D)
19013 ; true
19014 ),
19015 background_info___2__1(B, C, A).
19016background_info___2__1(_, _, A) :-
19017 arg(2, A, D),
19018 setarg(2, A, active),
19019 arg(4, A, B),
19020 C is B+1,
19021 setarg(4, A, C),
19022 ( D==not_stored_yet
19023 -> A=suspension(_, _, _, _, _, E, _),
19024 term_variables(E, I),
19025 ( nb_getval('$chr_store_global_list_chr_translate____background_info___2',
19026 F),
19027 G=[A|F],
19028 b_setval('$chr_store_global_list_chr_translate____background_info___2',
19029 G),
19030 ( F=[H|_]
19031 -> setarg(5, H, G)
19032 ; true
19033 )
19034 ),
19035 attach_background_info___2(I, A)
19036 ; true
19037 ).
19038get_bg_info(C) :-
19039 nb_getval('$chr_store_global_ground_chr_translate____background_info___1',
19040 A),
19041 member(B, A),
19042 B=suspension(_, active, _, D),
19043 !,
19044 C=D.
19045get_bg_info([]).
19046get_bg_info(A, B) :-
19047 get_bg_info___2__0(A, B, _).
19048get_bg_info___2__0(B, C, A) :-
19049 nb_getval('$chr_store_global_list_chr_translate____background_info___2',
19050 E),
19051 !,
19052 ( var(A)
19053 -> A=suspension(D, not_stored_yet, t, 0, _, B, C),
19054 'chr gen_id'(D)
19055 ; true
19056 ),
19057 get_bg_info___2__0__0__1(E, B, C, A).
19058get_bg_info___2__0__0__1([], A, B, C) :-
19059 get_bg_info___2__1(A, B, C).
19060get_bg_info___2__0__0__1([A|Q], F, R, B) :-
19061 ( A=suspension(_, active, _, _, _, D, O),
19062 ( C=t(164, A, B),
19063 '$novel_production'(A, C),
19064 '$novel_production'(B, C)
19065 ),
19066 copy_term_nat(D, E),
19067 subsumes_term(E, F)
19068 -> '$extend_history'(B, C),
19069 ( arg(2, B, I),
19070 setarg(2, B, active),
19071 ( arg(4, B, G),
19072 H is G+1,
19073 setarg(4, B, H)
19074 ),
19075 ( I==not_stored_yet
19076 -> B=suspension(_, _, _, _, _, J, _),
19077 term_variables(J, N),
19078 ( nb_getval('$chr_store_global_list_chr_translate____get_bg_info___2',
19079 K),
19080 L=[B|K],
19081 b_setval('$chr_store_global_list_chr_translate____get_bg_info___2',
19082 L),
19083 ( K=[M|_]
19084 -> setarg(5, M, L)
19085 ; true
19086 )
19087 ),
19088 attach_get_bg_info___2(N, B)
19089 ; true
19090 )
19091 ),
19092 ( copy_term_nat(D-O, F-P),
19093 get_bg_info_answer([P])
19094 ),
19095 ( B=suspension(_, active, _, H, _, _, _)
19096 -> setarg(2, B, inactive),
19097 get_bg_info___2__0__0__1(Q, F, R, B)
19098 ; true
19099 )
19100 ; get_bg_info___2__0__0__1(Q, F, R, B)
19101 ).
19102get_bg_info___2__0(B, C, A) :-
19103 ( var(A)
19104 -> A=suspension(D, not_stored_yet, t, 0, _, B, C),
19105 'chr gen_id'(D)
19106 ; true
19107 ),
19108 get_bg_info___2__1(B, C, A).
19109get_bg_info___2__1(_, O, G) :-
19110 nb_getval('$chr_store_global_ground_chr_translate____get_bg_info_answer___1',
19111 A),
19112 member(B, A),
19113 B=suspension(_, active, _, P),
19114 !,
19115 setarg(2, B, removed),
19116 arg(3, B, C),
19117 ( var(C)
19118 -> nb_getval('$chr_store_global_ground_chr_translate____get_bg_info_answer___1',
19119 D),
19120 D=[_|E],
19121 b_setval('$chr_store_global_ground_chr_translate____get_bg_info_answer___1',
19122 E),
19123 ( E=[F|_]
19124 -> setarg(3, F, _)
19125 ; true
19126 )
19127 ; C=[_, _|E],
19128 setarg(2, C, E),
19129 ( E=[F|_]
19130 -> setarg(3, F, C)
19131 ; true
19132 )
19133 ),
19134 ( var(G)
19135 -> true
19136 ; G=suspension(_, H, _, _, _, I, _),
19137 setarg(2, G, removed),
19138 ( H==not_stored_yet
19139 -> J=[]
19140 ; term_variables(I, J),
19141 ( arg(5, G, K),
19142 ( var(K)
19143 -> nb_getval('$chr_store_global_list_chr_translate____get_bg_info___2',
19144 L),
19145 L=[_|M],
19146 b_setval('$chr_store_global_list_chr_translate____get_bg_info___2',
19147 M),
19148 ( M=[N|_]
19149 -> setarg(5, N, _)
19150 ; true
19151 )
19152 ; K=[_, _|M],
19153 setarg(2, K, M),
19154 ( M=[N|_]
19155 -> setarg(5, N, K)
19156 ; true
19157 )
19158 )
19159 ),
19160 detach_get_bg_info___2(J, G)
19161 )
19162 ),
19163 O=P.
19164get_bg_info___2__1(_, I, A) :-
19165 ( var(A)
19166 -> true
19167 ; A=suspension(_, B, _, _, _, C, _),
19168 setarg(2, A, removed),
19169 ( B==not_stored_yet
19170 -> D=[]
19171 ; term_variables(C, D),
19172 ( arg(5, A, E),
19173 ( var(E)
19174 -> nb_getval('$chr_store_global_list_chr_translate____get_bg_info___2',
19175 F),
19176 F=[_|G],
19177 b_setval('$chr_store_global_list_chr_translate____get_bg_info___2',
19178 G),
19179 ( G=[H|_]
19180 -> setarg(5, H, _)
19181 ; true
19182 )
19183 ; E=[_, _|G],
19184 setarg(2, E, G),
19185 ( G=[H|_]
19186 -> setarg(5, H, E)
19187 ; true
19188 )
19189 )
19190 ),
19191 detach_get_bg_info___2(D, A)
19192 )
19193 ),
19194 I=[].
19195get_bg_info_answer(G) :-
19196 nb_getval('$chr_store_global_ground_chr_translate____get_bg_info_answer___1',
19197 A),
19198 member(B, A),
19199 B=suspension(_, active, _, H),
19200 !,
19201 setarg(2, B, removed),
19202 arg(3, B, C),
19203 ( var(C)
19204 -> nb_getval('$chr_store_global_ground_chr_translate____get_bg_info_answer___1',
19205 D),
19206 D=[_|E],
19207 b_setval('$chr_store_global_ground_chr_translate____get_bg_info_answer___1',
19208 E),
19209 ( E=[F|_]
19210 -> setarg(3, F, _)
19211 ; true
19212 )
19213 ; C=[_, _|E],
19214 setarg(2, C, E),
19215 ( E=[F|_]
19216 -> setarg(3, F, C)
19217 ; true
19218 )
19219 ),
19220 append(G, H, I),
19221 get_bg_info_answer(I).
19222get_bg_info_answer(A) :-
19223 C=suspension(B, active, _, A),
19224 'chr gen_id'(B),
19225 nb_getval('$chr_store_global_ground_chr_translate____get_bg_info_answer___1',
19226 D),
19227 E=[C|D],
19228 b_setval('$chr_store_global_ground_chr_translate____get_bg_info_answer___1',
19229 E),
19230 ( D=[F|_]
19231 -> setarg(3, F, E)
19232 ; true
19233 ).
19234prev_guard_list(W, B, V, H, Z, Q, O, P) :-
19235 nb_getval('$chr_store_multi_hash_chr_translate____rule___2-1', A),
19236 lookup_ht(A, B, C),
19237 member(D, C),
19238 D=suspension(_, active, _, _, _, E),
19239 E=pragma(rule(F, J, N, _), _, _, _, _),
19240 F\==[],
19241 make_head_matchings_explicit(B, G, L),
19242 setof(I, chr_translate:head_subset(G, H, I), K),
19243 !,
19244 append(F, J, M),
19245 compute_derived_info(K,
19246 L,
19247 G,
19248 M,
19249 N,
19250 O,
19251 H,
19252 P,
19253 R,
19254 T),
19255 append(Q, R, S),
19256 normalize_conj_list(S, A1),
19257 append(T, P, U),
19258 normalize_conj_list(U, B1),
19259 next_prev_rule(V, X, Y),
19260 prev_guard_list(W,
19261 X,
19262 Y,
19263 H,
19264 Z,
19265 A1,
19266 O,
19267 B1).
19268prev_guard_list(C, A, B, F, G, H, I, J) :-
19269 ( A>0
19270 -> next_prev_rule(B, D, E),
19271 prev_guard_list(C,
19272 D,
19273 E,
19274 F,
19275 G,
19276 H,
19277 I,
19278 J)
19279 ; prev_guard_list(C, F, G, H, I, J)
19280 ).
19281prev_guard_list(A, B, C, D, E, F) :-
19282 prev_guard_list___6__0(A,
19283 B,
19284 C,
19285 D,
19286 E,
19287 F,
19288 _).
19289prev_guard_list___6__0(M, B, I, F, O, A, _) :-
19290 A\==[],
19291 !,
19292 head_types_modes_condition(A, B, C),
19293 conj2list(C, E),
19294 term_variables(B, D),
19295 append([chr_pp_headvariables(D)|E], F, G),
19296 normalize_conj_list(G, H),
19297 append(B, H, J),
19298 add_background_info([I|J], K),
19299 append(H, K, L),
19300 normalize_conj_list(L, N),
19301 prev_guard_list(M, B, I, N, O, []).
19302prev_guard_list___6__0(B, Y, F, H, G, A1, Z) :-
19303 ( nb_getval('$chr_store_multi_hash_chr_translate____rule___2-1', A),
19304 lookup_ht(A, B, C)
19305 ),
19306 ( member(D, C),
19307 D=suspension(_, active, _, _, _, E),
19308 E=pragma(rule(S, T, F, L), V, W, X, B),
19309 F\==true,
19310 append(G, H, I),
19311 ( conj2list(F, J),
19312 append(I, J, K),
19313 guard_entailment:entails_guard(K, fail)
19314 -> M=fail
19315 ; simplify_guard(F, L, I, M, U)
19316 ),
19317 F\==M,
19318 !,
19319 setarg(2, D, removed),
19320 arg(4, D, N),
19321 ( var(N)
19322 -> nb_getval('$chr_store_global_ground_chr_translate____rule___2',
19323 O),
19324 O=[_|P],
19325 b_setval('$chr_store_global_ground_chr_translate____rule___2',
19326 P),
19327 ( P=[Q|_]
19328 -> setarg(4, Q, _)
19329 ; true
19330 )
19331 ; N=[_, _|P],
19332 setarg(2, N, P),
19333 ( P=[Q|_]
19334 -> setarg(4, Q, N)
19335 ; true
19336 )
19337 ),
19338 nb_getval('$chr_store_multi_hash_chr_translate____rule___2-1', R),
19339 delete_ht(R, B, D),
19340 rule(B,
19341 pragma(rule(S, T, M, U),
19342 V,
19343 W,
19344 X,
19345 B)),
19346 prev_guard_list(B, Y, M, H, G, [])
19347 ; !,
19348 Z=suspension(B1, not_stored_yet, t, _, B, Y, F, H, G, A1),
19349 'chr gen_id'(B1),
19350 prev_guard_list___6__0__0__3(C,
19351 B,
19352 Y,
19353 F,
19354 H,
19355 G,
19356 A1,
19357 Z)
19358 ).
19359prev_guard_list___6__0__0__3([], A, B, C, D, E, F, G) :-
19360 prev_guard_list___6__1(A,
19361 B,
19362 C,
19363 D,
19364 E,
19365 F,
19366 G).
19367prev_guard_list___6__0__0__3([A|R], C, S, G, I, H, T, D) :-
19368 ( A=suspension(_, active, _, _, B, F),
19369 B==C,
19370 ( E=t(178, D, A),
19371 '$novel_production'(D, E),
19372 '$novel_production'(A, E)
19373 ),
19374 chr_pp_flag(check_impossible_rules, on),
19375 F=pragma(rule(_, _, G, _), _, _, _, C),
19376 conj2list(G, K),
19377 append(H, I, J),
19378 append(J, K, L),
19379 guard_entailment:entails_guard(L, fail)
19380 -> '$extend_history'(D, E),
19381 ( arg(2, D, M),
19382 setarg(2, D, active),
19383 ( M==not_stored_yet
19384 -> ( nb_getval('$chr_store_global_ground_chr_translate____prev_guard_list___6',
19385 N),
19386 O=[D|N],
19387 b_setval('$chr_store_global_ground_chr_translate____prev_guard_list___6',
19388 O),
19389 ( N=[P|_]
19390 -> setarg(4, P, O)
19391 ; true
19392 )
19393 ),
19394 nb_getval('$chr_store_multi_hash_chr_translate____prev_guard_list___6-1',
19395 Q),
19396 insert_ht(Q, C, D)
19397 ; true
19398 )
19399 ),
19400 ( chr_warning(weird_program,
19401 'Heads will never match or guard will always fail in ~@.\n\tThis rule will never fire!\n',
19402 [format_rule(F)]),
19403 set_all_passive(C)
19404 ),
19405 ( D=suspension(_, active, _, _, _, _, _, _, _, _)
19406 -> setarg(2, D, inactive),
19407 prev_guard_list___6__0__0__3(R,
19408 C,
19409 S,
19410 G,
19411 I,
19412 H,
19413 T,
19414 D)
19415 ; true
19416 )
19417 ; prev_guard_list___6__0__0__3(R,
19418 C,
19419 S,
19420 G,
19421 I,
19422 H,
19423 T,
19424 D)
19425 ).
19426prev_guard_list___6__0(B, C, D, E, F, G, A) :-
19427 A=suspension(H, not_stored_yet, t, _, B, C, D, E, F, G),
19428 'chr gen_id'(H),
19429 prev_guard_list___6__1(B,
19430 C,
19431 D,
19432 E,
19433 F,
19434 G,
19435 A).
19436prev_guard_list___6__1(B, D, E, F, G, H, I) :-
19437 nb_getval('$chr_store_multi_hash_chr_translate____rule___2-1', A),
19438 lookup_ht(A, B, C),
19439 !,
19440 prev_guard_list___6__1__0__4(C,
19441 B,
19442 D,
19443 E,
19444 F,
19445 G,
19446 H,
19447 I).
19448prev_guard_list___6__1__0__4([], A, B, C, D, E, F, G) :-
19449 prev_guard_list___6__2(A,
19450 B,
19451 C,
19452 D,
19453 E,
19454 F,
19455 G).
19456prev_guard_list___6__1__0__4([A|M1], C, L, E, G, F, N1, F1) :-
19457 ( ( A=suspension(_, active, _, _, B, D),
19458 B==C
19459 ),
19460 D=pragma(rule(J, K, E, H), X, Y, Z, C),
19461 simplify_heads(F, G, E, H, I, R),
19462 I\==[],
19463 extract_arguments(J, M),
19464 extract_arguments(K, N),
19465 extract_arguments(L, O),
19466 replace_some_heads(M,
19467 N,
19468 O,
19469 I,
19470 P,
19471 Q,
19472 E,
19473 H,
19474 S),
19475 substitute_arguments(J, P, U),
19476 substitute_arguments(K, Q, V),
19477 append(R, S, T),
19478 list2conj(T, W),
19479 L1=pragma(rule(U, V, E, (W, H)), X, Y, Z, C),
19480 ( J\==U
19481 ; K\==V
19482 )
19483 -> ( setarg(2, A, removed),
19484 ( arg(4, A, A1),
19485 ( var(A1)
19486 -> nb_getval('$chr_store_global_ground_chr_translate____rule___2',
19487 B1),
19488 B1=[_|C1],
19489 b_setval('$chr_store_global_ground_chr_translate____rule___2',
19490 C1),
19491 ( C1=[D1|_]
19492 -> setarg(4, D1, _)
19493 ; true
19494 )
19495 ; A1=[_, _|C1],
19496 setarg(2, A1, C1),
19497 ( C1=[D1|_]
19498 -> setarg(4, D1, A1)
19499 ; true
19500 )
19501 )
19502 ),
19503 nb_getval('$chr_store_multi_hash_chr_translate____rule___2-1',
19504 E1),
19505 delete_ht(E1, C, A)
19506 ),
19507 ( arg(2, F1, G1),
19508 setarg(2, F1, active),
19509 ( G1==not_stored_yet
19510 -> ( nb_getval('$chr_store_global_ground_chr_translate____prev_guard_list___6',
19511 H1),
19512 I1=[F1|H1],
19513 b_setval('$chr_store_global_ground_chr_translate____prev_guard_list___6',
19514 I1),
19515 ( H1=[J1|_]
19516 -> setarg(4, J1, I1)
19517 ; true
19518 )
19519 ),
19520 nb_getval('$chr_store_multi_hash_chr_translate____prev_guard_list___6-1',
19521 K1),
19522 insert_ht(K1, C, F1)
19523 ; true
19524 )
19525 ),
19526 rule(C, L1),
19527 ( F1=suspension(_, active, _, _, _, _, _, _, _, _)
19528 -> setarg(2, F1, inactive),
19529 prev_guard_list___6__1__0__4(M1,
19530 C,
19531 L,
19532 E,
19533 G,
19534 F,
19535 N1,
19536 F1)
19537 ; true
19538 )
19539 ; prev_guard_list___6__1__0__4(M1,
19540 C,
19541 L,
19542 E,
19543 G,
19544 F,
19545 N1,
19546 F1)
19547 ).
19548prev_guard_list___6__1(A, B, C, D, E, F, G) :-
19549 prev_guard_list___6__2(A,
19550 B,
19551 C,
19552 D,
19553 E,
19554 F,
19555 G).
19556prev_guard_list___6__2(B, D, E, F, G, H, I) :-
19557 nb_getval('$chr_store_multi_hash_chr_translate____rule___2-1', A),
19558 lookup_ht(A, B, C),
19559 !,
19560 prev_guard_list___6__2__0__5(C,
19561 B,
19562 D,
19563 E,
19564 F,
19565 G,
19566 H,
19567 I).
19568prev_guard_list___6__2__0__5([], A, B, C, D, E, F, G) :-
19569 prev_guard_list___6__3(A,
19570 B,
19571 C,
19572 D,
19573 E,
19574 F,
19575 G).
19576prev_guard_list___6__2__0__5([A|G], C, H, I, J, K, L, M) :-
19577 ( ( A=suspension(_, active, _, _, B, F),
19578 B==C
19579 ),
19580 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-3',
19581 D),
19582 lookup_ht(D, C, E)
19583 -> prev_guard_list___6__2__1__5(E,
19584 F,
19585 A,
19586 G,
19587 C,
19588 H,
19589 I,
19590 J,
19591 K,
19592 L,
19593 M)
19594 ; prev_guard_list___6__2__0__5(G,
19595 C,
19596 H,
19597 I,
19598 J,
19599 K,
19600 L,
19601 M)
19602 ).
19603prev_guard_list___6__2__1__5([], _, _, A, B, C, D, E, F, G, H) :-
19604 prev_guard_list___6__2__0__5(A,
19605 B,
19606 C,
19607 D,
19608 E,
19609 F,
19610 G,
19611 H).
19612prev_guard_list___6__2__1__5([A|H], I, J, K, C, L, M, N, O, P, Q) :-
19613 ( ( A=suspension(_, active, _, _, E, G, B, _, _),
19614 B==C
19615 ),
19616 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-13',
19617 D),
19618 lookup_ht(D, k(E, C), F)
19619 -> prev_guard_list___6__2__2__5(F,
19620 E,
19621 G,
19622 A,
19623 H,
19624 I,
19625 J,
19626 K,
19627 C,
19628 L,
19629 M,
19630 N,
19631 O,
19632 P,
19633 Q)
19634 ; prev_guard_list___6__2__1__5(H,
19635 I,
19636 J,
19637 K,
19638 C,
19639 L,
19640 M,
19641 N,
19642 O,
19643 P,
19644 Q)
19645 ).
19646prev_guard_list___6__2__2__5([], _, _, _, A, B, C, D, E, F, G, H, I, J, K) :-
19647 prev_guard_list___6__2__1__5(A,
19648 B,
19649 C,
19650 D,
19651 E,
19652 F,
19653 G,
19654 H,
19655 I,
19656 J,
19657 K).
19658prev_guard_list___6__2__2__5([A|J], D, K, B, L, M, N, O, F, P, Q, R, S, T, U) :-
19659 ( ( A=suspension(_, active, _, _, C, H, E, I, _),
19660 A\==B,
19661 C==D,
19662 E==F
19663 ),
19664 nb_getval('$chr_store_global_ground_chr_translate____multiple_occ_constraints_checked___1',
19665 G)
19666 -> prev_guard_list___6__2__3__5(G,
19667 H,
19668 I,
19669 A,
19670 J,
19671 D,
19672 K,
19673 B,
19674 L,
19675 M,
19676 N,
19677 O,
19678 F,
19679 P,
19680 Q,
19681 R,
19682 S,
19683 T,
19684 U)
19685 ; prev_guard_list___6__2__2__5(J,
19686 D,
19687 K,
19688 B,
19689 L,
19690 M,
19691 N,
19692 O,
19693 F,
19694 P,
19695 Q,
19696 R,
19697 S,
19698 T,
19699 U)
19700 ).
19701prev_guard_list___6__2__3__5([], _, _, _, A, B, C, D, E, F, G, H, I, J, K, L, M, N, O) :-
19702 prev_guard_list___6__2__2__5(A,
19703 B,
19704 C,
19705 D,
19706 E,
19707 F,
19708 G,
19709 H,
19710 I,
19711 J,
19712 K,
19713 L,
19714 M,
19715 N,
19716 O).
19717prev_guard_list___6__2__3__5([A|U], B, S, V, W, F, C, X, Y, D, Z, A1, R, B1, C1, D1, E1, F1, L) :-
19718 ( A=suspension(_, active, _, G),
19719 B<C,
19720 chr_pp_flag(occurrence_subsumption, on),
19721 D=pragma(rule(E, _, _, _), _, _, _, _),
19722 E\==[],
19723 \+ tree_set_memberchk(F, G)
19724 -> ( setarg(2, A, removed),
19725 arg(3, A, H),
19726 ( var(H)
19727 -> nb_getval('$chr_store_global_ground_chr_translate____multiple_occ_constraints_checked___1',
19728 I),
19729 I=[_|J],
19730 b_setval('$chr_store_global_ground_chr_translate____multiple_occ_constraints_checked___1',
19731 J),
19732 ( J=[K|_]
19733 -> setarg(3, K, _)
19734 ; true
19735 )
19736 ; H=[_, _|J],
19737 setarg(2, H, J),
19738 ( J=[K|_]
19739 -> setarg(3, K, H)
19740 ; true
19741 )
19742 )
19743 ),
19744 ( arg(2, L, M),
19745 setarg(2, L, active),
19746 ( M==not_stored_yet
19747 -> ( nb_getval('$chr_store_global_ground_chr_translate____prev_guard_list___6',
19748 N),
19749 O=[L|N],
19750 b_setval('$chr_store_global_ground_chr_translate____prev_guard_list___6',
19751 O),
19752 ( N=[P|_]
19753 -> setarg(4, P, O)
19754 ; true
19755 )
19756 ),
19757 nb_getval('$chr_store_multi_hash_chr_translate____prev_guard_list___6-1',
19758 Q),
19759 insert_ht(Q, R, L)
19760 ; true
19761 )
19762 ),
19763 ( first_occ_in_rule(R, F, B, S),
19764 tree_set_add(G, F, T),
19765 multiple_occ_constraints_checked(T)
19766 ),
19767 ( L=suspension(_, active, _, _, _, _, _, _, _, _)
19768 -> setarg(2, L, inactive),
19769 prev_guard_list___6__2__3__5(U,
19770 B,
19771 S,
19772 V,
19773 W,
19774 F,
19775 C,
19776 X,
19777 Y,
19778 D,
19779 Z,
19780 A1,
19781 R,
19782 B1,
19783 C1,
19784 D1,
19785 E1,
19786 F1,
19787 L)
19788 ; true
19789 )
19790 ; prev_guard_list___6__2__3__5(U,
19791 B,
19792 S,
19793 V,
19794 W,
19795 F,
19796 C,
19797 X,
19798 Y,
19799 D,
19800 Z,
19801 A1,
19802 R,
19803 B1,
19804 C1,
19805 D1,
19806 E1,
19807 F1,
19808 L)
19809 ).
19810prev_guard_list___6__2(A, B, C, D, E, F, G) :-
19811 prev_guard_list___6__3(A,
19812 B,
19813 C,
19814 D,
19815 E,
19816 F,
19817 G).
19818prev_guard_list___6__3(N, _, _, _, _, _, G) :-
19819 nb_getval('$chr_store_global_ground_chr_translate____multiple_occ_constraints_checked___1',
19820 A),
19821 member(B, A),
19822 B=suspension(_, active, _, _),
19823 !,
19824 setarg(2, B, removed),
19825 arg(3, B, C),
19826 ( var(C)
19827 -> nb_getval('$chr_store_global_ground_chr_translate____multiple_occ_constraints_checked___1',
19828 D),
19829 D=[_|E],
19830 b_setval('$chr_store_global_ground_chr_translate____multiple_occ_constraints_checked___1',
19831 E),
19832 ( E=[F|_]
19833 -> setarg(3, F, _)
19834 ; true
19835 )
19836 ; C=[_, _|E],
19837 setarg(2, C, E),
19838 ( E=[F|_]
19839 -> setarg(3, F, C)
19840 ; true
19841 )
19842 ),
19843 ( var(G)
19844 -> true
19845 ; arg(2, G, H),
19846 setarg(2, G, removed),
19847 ( H==not_stored_yet
19848 -> true
19849 ; ( arg(4, G, I),
19850 ( var(I)
19851 -> nb_getval('$chr_store_global_ground_chr_translate____prev_guard_list___6',
19852 J),
19853 J=[_|K],
19854 b_setval('$chr_store_global_ground_chr_translate____prev_guard_list___6',
19855 K),
19856 ( K=[L|_]
19857 -> setarg(4, L, _)
19858 ; true
19859 )
19860 ; I=[_, _|K],
19861 setarg(2, I, K),
19862 ( K=[L|_]
19863 -> setarg(4, L, I)
19864 ; true
19865 )
19866 )
19867 ),
19868 nb_getval('$chr_store_multi_hash_chr_translate____prev_guard_list___6-1',
19869 M),
19870 delete_ht(M, N, G)
19871 )
19872 ).
19873prev_guard_list___6__3(G, _, _, _, _, _, A) :-
19874 arg(2, A, B),
19875 setarg(2, A, active),
19876 ( B==not_stored_yet
19877 -> ( nb_getval('$chr_store_global_ground_chr_translate____prev_guard_list___6',
19878 C),
19879 D=[A|C],
19880 b_setval('$chr_store_global_ground_chr_translate____prev_guard_list___6',
19881 D),
19882 ( C=[E|_]
19883 -> setarg(4, E, D)
19884 ; true
19885 )
19886 ),
19887 nb_getval('$chr_store_multi_hash_chr_translate____prev_guard_list___6-1',
19888 F),
19889 insert_ht(F, G, A)
19890 ; true
19891 ).
19892simplify_guards(B) :-
19893 nb_getval('$chr_store_multi_hash_chr_translate____rule___2-1', A),
19894 lookup_ht(A, B, C),
19895 member(D, C),
19896 D=suspension(_, active, _, _, _, E),
19897 !,
19898 E=pragma(rule(F, G, J, _), ids(K, L), _, _, B),
19899 append(F, G, H),
19900 make_head_matchings_explicit_not_negated(H, W, X),
19901 tree_set_empty(I),
19902 multiple_occ_constraints_checked(I),
19903 apply_guard_wrt_term(H, J, Y),
19904 append(K, L, M),
19905 findall(tuple(N, O, B)-(-B),
19906 ( member(P, M),
19907 get_occurrence_from_id(N, O, B, P)
19908 ),
19909 Q),
19910 empty_q(R),
19911 insert_list_q(Q, R, S),
19912 next_prev_rule(S, _, T),
19913 next_prev_rule(T, U, V),
19914 prev_guard_list(B,
19915 U,
19916 V,
19917 W,
19918 J,
19919 [],
19920 X,
19921 [Y]),
19922 Z is B+1,
19923 simplify_guards(Z).
19924simplify_guards(_).
19925set_all_passive(A) :-
19926 set_all_passive___1__0(A, _).
19927set_all_passive___1__0(B, C) :-
19928 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-3', A),
19929 lookup_ht(A, B, E),
19930 !,
19931 C=suspension(D, not_stored_yet, t, B),
19932 'chr gen_id'(D),
19933 set_all_passive___1__0__0__1(E, B, C).
19934set_all_passive___1__0__0__1([], A, B) :-
19935 set_all_passive___1__1(A, B).
19936set_all_passive___1__0__0__1([A|I], C, D) :-
19937 ( A=suspension(_, active, _, _, _, _, B, H, _),
19938 B==C,
19939 E=t(180, D, A),
19940 '$novel_production'(D, E),
19941 '$novel_production'(A, E)
19942 -> '$extend_history'(D, E),
19943 ( arg(2, D, F),
19944 setarg(2, D, active),
19945 ( F==not_stored_yet
19946 -> nb_getval('$chr_store_multi_hash_chr_translate____set_all_passive___1-1',
19947 G),
19948 insert_ht(G, C, D)
19949 ; true
19950 )
19951 ),
19952 passive(C, H),
19953 ( D=suspension(_, active, _, _)
19954 -> setarg(2, D, inactive),
19955 set_all_passive___1__0__0__1(I, C, D)
19956 ; true
19957 )
19958 ; set_all_passive___1__0__0__1(I, C, D)
19959 ).
19960set_all_passive___1__0(B, A) :-
19961 A=suspension(C, not_stored_yet, t, B),
19962 'chr gen_id'(C),
19963 set_all_passive___1__1(B, A).
19964set_all_passive___1__1(D, A) :-
19965 ( var(A)
19966 -> true
19967 ; arg(2, A, B),
19968 setarg(2, A, removed),
19969 ( B==not_stored_yet
19970 -> true
19971 ; nb_getval('$chr_store_multi_hash_chr_translate____set_all_passive___1-1',
19972 C),
19973 delete_ht(C, D, A)
19974 )
19975 ).
19976precompute_head_matchings :-
19977 precompute_head_matchings___0__0(_).
19978precompute_head_matchings___0__0(A) :-
19979 nb_getval('$chr_store_global_ground_chr_translate____rule___2', C),
19980 !,
19981 A=suspension(B, not_stored_yet, t, _),
19982 'chr gen_id'(B),
19983 precompute_head_matchings___0__0__0__1(C, A).
19984precompute_head_matchings___0__0__0__1([], A) :-
19985 precompute_head_matchings___0__1(A).
19986precompute_head_matchings___0__0__0__1([A|Q], B) :-
19987 ( A=suspension(_, active, _, _, N, H),
19988 C=t(174, A, B),
19989 '$novel_production'(A, C),
19990 '$novel_production'(B, C)
19991 -> '$extend_history'(B, C),
19992 ( arg(2, B, D),
19993 setarg(2, B, active),
19994 ( D==not_stored_yet
19995 -> nb_getval('$chr_store_global_ground_chr_translate____precompute_head_matchings___0',
19996 E),
19997 F=[B|E],
19998 b_setval('$chr_store_global_ground_chr_translate____precompute_head_matchings___0',
19999 F),
20000 ( E=[G|_]
20001 -> setarg(4, G, F)
20002 ; true
20003 )
20004 ; true
20005 )
20006 ),
20007 ( H=pragma(rule(I, J, _, _), _, _, _, _),
20008 append(I, J, K),
20009 make_head_matchings_explicit_(K, L, M),
20010 copy_term_nat(L-M, O-P),
20011 make_head_matchings_explicit_memo_table(N, O, P)
20012 ),
20013 ( B=suspension(_, active, _, _)
20014 -> setarg(2, B, inactive),
20015 precompute_head_matchings___0__0__0__1(Q, B)
20016 ; true
20017 )
20018 ; precompute_head_matchings___0__0__0__1(Q, B)
20019 ).
20020precompute_head_matchings___0__0(A) :-
20021 A=suspension(B, not_stored_yet, t, _),
20022 'chr gen_id'(B),
20023 precompute_head_matchings___0__1(A).
20024precompute_head_matchings___0__1(A) :-
20025 ( var(A)
20026 -> true
20027 ; arg(2, A, B),
20028 setarg(2, A, removed),
20029 ( B==not_stored_yet
20030 -> true
20031 ; arg(4, A, C),
20032 ( var(C)
20033 -> nb_getval('$chr_store_global_ground_chr_translate____precompute_head_matchings___0',
20034 D),
20035 D=[_|E],
20036 b_setval('$chr_store_global_ground_chr_translate____precompute_head_matchings___0',
20037 E),
20038 ( E=[F|_]
20039 -> setarg(4, F, _)
20040 ; true
20041 )
20042 ; C=[_, _|E],
20043 setarg(2, C, E),
20044 ( E=[F|_]
20045 -> setarg(4, F, C)
20046 ; true
20047 )
20048 )
20049 )
20050 ).
20051make_head_matchings_explicit_memo_table(A, B, C) :-
20052 F=suspension(D, active, A, B, C),
20053 'chr gen_id'(D),
20054 nb_getval('$chr_store_multi_hash_chr_translate____make_head_matchings_explicit_memo_table___3-1',
20055 E),
20056 insert_ht(E, A, F).
20057make_head_matchings_explicit_memo_lookup(B, E, G) :-
20058 nb_getval('$chr_store_multi_hash_chr_translate____make_head_matchings_explicit_memo_table___3-1',
20059 A),
20060 lookup_ht(A, B, C),
20061 member(D, C),
20062 D=suspension(_, active, _, F, H),
20063 !,
20064 E=F,
20065 G=H.
20066make_head_matchings_explicit_memo_lookup(_, _, _) :-
20067 fail.
20068first_occ_in_rule(C, B, G, _) :-
20069 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-13',
20070 A),
20071 lookup_ht(A, k(B, C), D),
20072 member(E, D),
20073 E=suspension(_, active, _, _, _, F, _, H, _),
20074 F<G,
20075 !,
20076 first_occ_in_rule(C, B, F, H).
20077first_occ_in_rule(D, A, E, F) :-
20078 A=B/C,
20079 functor(G, B, C),
20080 next_occ_in_rule(D, A, E, F, [], G).
20081next_occ_in_rule(B, F, K, L, _, M) :-
20082 nb_getval('$chr_store_multi_hash_chr_translate____passive___2-1', A),
20083 lookup_ht(A, B, C),
20084 member(D, C),
20085 D=suspension(_, active, _, _, G),
20086 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-134',
20087 E),
20088 lookup_ht(E, k(F, B, G), H),
20089 member(I, H),
20090 I=suspension(_, active, _, _, _, J, _, _, _),
20091 J is K+1,
20092 !,
20093 next_occ_in_rule(B, F, J, L, _, M).
20094next_occ_in_rule(B, I, M, T, Y, U) :-
20095 nb_getval('$chr_store_multi_hash_chr_translate____prev_guard_list___6-1',
20096 A),
20097 lookup_ht(A, B, C),
20098 member(D, C),
20099 D=suspension(_, active, _, _, _, S, O, Z, V, _),
20100 nb_getval('$chr_store_multi_hash_chr_translate____rule___2-1', E),
20101 lookup_ht(E, B, F),
20102 member(G, F),
20103 G=suspension(_, active, _, _, _, N),
20104 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-13',
20105 H),
20106 lookup_ht(H, k(I, B), J),
20107 member(K, J),
20108 K=suspension(_, active, _, _, _, L, _, X, _),
20109 L is M+1,
20110 N=pragma(rule(P, Q, O, _), ids(_, _), _, _, B),
20111 !,
20112 append(P, Q, R),
20113 add_failing_occ(N,
20114 R,
20115 S,
20116 T,
20117 W,
20118 U,
20119 V,
20120 I,
20121 B1),
20122 ( W==[chr_pp_void_info]
20123 -> next_occ_in_rule(B, I, L, X, Y, U)
20124 ; append(W, Y, F1),
20125 add_failing_occ(N,
20126 R,
20127 S,
20128 X,
20129 N1,
20130 U,
20131 V,
20132 I,
20133 C1),
20134 copy_term(Z, A1),
20135 variable_replacement(Z, A1, E1),
20136 copy_with_variable_replacement(Z, G1, B1),
20137 copy_with_variable_replacement(Z, D1, C1),
20138 copy_with_variable_replacement(D1, I1, E1),
20139 append(F1, G1, H1),
20140 append(H1, I1, K1),
20141 copy_with_variable_replacement(V, L1, B1),
20142 copy_with_variable_replacement(V, J1, C1),
20143 append(J1, K1, M1),
20144 append([chr_pp_active_constraint(U)|L1],
20145 M1,
20146 O1),
20147 list2conj(N1, P1),
20148 copy_term((F1, K1, O1, P1, U),
20149 (_, _, Q1, R1, _)),
20150 ( P1\=chr_pp_void_info
20151 -> ( guard_entailment:entails_guard(Q1, R1)
20152 -> passive(B, X)
20153 ; true
20154 )
20155 ; true
20156 ),
20157 !,
20158 next_occ_in_rule(B, I, L, X, F1, U)
20159 ).
20160next_occ_in_rule(_, _, _, _, _, _).
20161multiple_occ_constraints_checked(R) :-
20162 ( nb_getval('$chr_store_global_ground_chr_translate____prev_guard_list___6',
20163 A),
20164 member(B, A),
20165 B=suspension(_, active, _, _, D, _, _, _, _, _)
20166 ),
20167 ( nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-3',
20168 C),
20169 lookup_ht(C, D, E),
20170 member(F, E),
20171 F=suspension(_, active, _, _, K, O, _, _, _),
20172 nb_getval('$chr_store_multi_hash_chr_translate____rule___2-1', G),
20173 lookup_ht(G, D, H),
20174 member(I, H),
20175 I=suspension(_, active, _, _, _, P),
20176 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-13',
20177 J),
20178 lookup_ht(J, k(K, D), L),
20179 member(M, L),
20180 M=suspension(_, active, _, _, _, N, _, S, _),
20181 M\==F,
20182 N<O,
20183 chr_pp_flag(occurrence_subsumption, on),
20184 P=pragma(rule(Q, _, _, _), _, _, _, _),
20185 Q\==[],
20186 \+ tree_set_memberchk(K, R),
20187 !,
20188 first_occ_in_rule(D, K, N, S),
20189 tree_set_add(R, K, T),
20190 multiple_occ_constraints_checked(T)
20191 ; !,
20192 setarg(2, B, removed),
20193 arg(4, B, U),
20194 ( var(U)
20195 -> nb_getval('$chr_store_global_ground_chr_translate____prev_guard_list___6',
20196 V),
20197 V=[_|W],
20198 b_setval('$chr_store_global_ground_chr_translate____prev_guard_list___6',
20199 W),
20200 ( W=[X|_]
20201 -> setarg(4, X, _)
20202 ; true
20203 )
20204 ; U=[_, _|W],
20205 setarg(2, U, W),
20206 ( W=[X|_]
20207 -> setarg(4, X, U)
20208 ; true
20209 )
20210 ),
20211 nb_getval('$chr_store_multi_hash_chr_translate____prev_guard_list___6-1',
20212 Y),
20213 delete_ht(Y, D, B)
20214 ).
20215multiple_occ_constraints_checked(A) :-
20216 C=suspension(B, active, _, A),
20217 'chr gen_id'(B),
20218 nb_getval('$chr_store_global_ground_chr_translate____multiple_occ_constraints_checked___1',
20219 D),
20220 E=[C|D],
20221 b_setval('$chr_store_global_ground_chr_translate____multiple_occ_constraints_checked___1',
20222 E),
20223 ( D=[F|_]
20224 -> setarg(3, F, E)
20225 ; true
20226 ).
20227type_definition(A, B) :-
20228 type_definition___2__0(A, B, _).
20229type_definition___2__0(C, _, N) :-
20230 ( nb_getval('$chr_store_global_list_chr_translate____type_definition___2',
20231 A),
20232 member(B, A),
20233 B=suspension(_, active, _, _, _, D, _)
20234 ),
20235 ( functor(C, E, F),
20236 functor(D, E, F),
20237 !,
20238 B=suspension(_, _, _, _, _, G, H),
20239 setarg(2, B, removed),
20240 term_variables(term(G, H), M),
20241 arg(5, B, I),
20242 ( var(I)
20243 -> nb_getval('$chr_store_global_list_chr_translate____type_definition___2',
20244 J),
20245 J=[_|K],
20246 b_setval('$chr_store_global_list_chr_translate____type_definition___2',
20247 K),
20248 ( K=[L|_]
20249 -> setarg(5, L, _)
20250 ; true
20251 )
20252 ; I=[_, _|K],
20253 setarg(2, I, K),
20254 ( K=[L|_]
20255 -> setarg(5, L, I)
20256 ; true
20257 )
20258 ),
20259 detach_type_definition___2(M, B),
20260 ( var(N)
20261 -> true
20262 ; N=suspension(_, O, _, _, _, P, Q),
20263 setarg(2, N, removed),
20264 ( O==not_stored_yet
20265 -> R=[]
20266 ; term_variables(term(P, Q), R),
20267 ( arg(5, N, S),
20268 ( var(S)
20269 -> nb_getval('$chr_store_global_list_chr_translate____type_definition___2',
20270 T),
20271 T=[_|U],
20272 b_setval('$chr_store_global_list_chr_translate____type_definition___2',
20273 U),
20274 ( U=[V|_]
20275 -> setarg(5, V, _)
20276 ; true
20277 )
20278 ; S=[_, _|U],
20279 setarg(2, S, U),
20280 ( U=[V|_]
20281 -> setarg(5, V, S)
20282 ; true
20283 )
20284 )
20285 ),
20286 detach_type_definition___2(R, N)
20287 )
20288 ),
20289 chr_error(type_error,
20290 'Multiple definitions for type: ~w/~w.\n',
20291 [E, F])
20292 ; functor(D, W, X),
20293 functor(C, W, X),
20294 !,
20295 B=suspension(_, _, _, _, _, Y, Z),
20296 setarg(2, B, removed),
20297 term_variables(term(Y, Z), E1),
20298 arg(5, B, A1),
20299 ( var(A1)
20300 -> nb_getval('$chr_store_global_list_chr_translate____type_definition___2',
20301 B1),
20302 B1=[_|C1],
20303 b_setval('$chr_store_global_list_chr_translate____type_definition___2',
20304 C1),
20305 ( C1=[D1|_]
20306 -> setarg(5, D1, _)
20307 ; true
20308 )
20309 ; A1=[_, _|C1],
20310 setarg(2, A1, C1),
20311 ( C1=[D1|_]
20312 -> setarg(5, D1, A1)
20313 ; true
20314 )
20315 ),
20316 detach_type_definition___2(E1, B),
20317 ( var(N)
20318 -> true
20319 ; N=suspension(_, F1, _, _, _, G1, H1),
20320 setarg(2, N, removed),
20321 ( F1==not_stored_yet
20322 -> I1=[]
20323 ; term_variables(term(G1, H1), I1),
20324 ( arg(5, N, J1),
20325 ( var(J1)
20326 -> nb_getval('$chr_store_global_list_chr_translate____type_definition___2',
20327 K1),
20328 K1=[_|L1],
20329 b_setval('$chr_store_global_list_chr_translate____type_definition___2',
20330 L1),
20331 ( L1=[M1|_]
20332 -> setarg(5, M1, _)
20333 ; true
20334 )
20335 ; J1=[_, _|L1],
20336 setarg(2, J1, L1),
20337 ( L1=[M1|_]
20338 -> setarg(5, M1, J1)
20339 ; true
20340 )
20341 )
20342 ),
20343 detach_type_definition___2(I1, N)
20344 )
20345 ),
20346 chr_error(type_error,
20347 'Multiple definitions for type: ~w/~w.\n',
20348 [W, X])
20349 ).
20350type_definition___2__0(C, _, N) :-
20351 nb_getval('$chr_store_global_list_chr_translate____type_alias___2', A),
20352 member(B, A),
20353 B=suspension(_, active, _, _, _, D, _),
20354 functor(C, E, F),
20355 functor(D, E, F),
20356 !,
20357 B=suspension(_, _, _, _, _, G, H),
20358 setarg(2, B, removed),
20359 term_variables(term(G, H), M),
20360 arg(5, B, I),
20361 ( var(I)
20362 -> nb_getval('$chr_store_global_list_chr_translate____type_alias___2',
20363 J),
20364 J=[_|K],
20365 b_setval('$chr_store_global_list_chr_translate____type_alias___2',
20366 K),
20367 ( K=[L|_]
20368 -> setarg(5, L, _)
20369 ; true
20370 )
20371 ; I=[_, _|K],
20372 setarg(2, I, K),
20373 ( K=[L|_]
20374 -> setarg(5, L, I)
20375 ; true
20376 )
20377 ),
20378 detach_type_alias___2(M, B),
20379 ( var(N)
20380 -> true
20381 ; N=suspension(_, O, _, _, _, P, Q),
20382 setarg(2, N, removed),
20383 ( O==not_stored_yet
20384 -> R=[]
20385 ; term_variables(term(P, Q), R),
20386 ( arg(5, N, S),
20387 ( var(S)
20388 -> nb_getval('$chr_store_global_list_chr_translate____type_definition___2',
20389 T),
20390 T=[_|U],
20391 b_setval('$chr_store_global_list_chr_translate____type_definition___2',
20392 U),
20393 ( U=[V|_]
20394 -> setarg(5, V, _)
20395 ; true
20396 )
20397 ; S=[_, _|U],
20398 setarg(2, S, U),
20399 ( U=[V|_]
20400 -> setarg(5, V, S)
20401 ; true
20402 )
20403 )
20404 ),
20405 detach_type_definition___2(R, N)
20406 )
20407 ),
20408 chr_error(type_error,
20409 'Multiple definitions for type, once in a type definition and once as a type alias: ~w/~w.\n',
20410 [E, F]).
20411type_definition___2__0(B, C, A) :-
20412 nb_getval('$chr_store_global_list_chr_translate____unalias_type___2',
20413 E),
20414 !,
20415 ( var(A)
20416 -> A=suspension(D, not_stored_yet, t, 0, _, B, C),
20417 'chr gen_id'(D)
20418 ; true
20419 ),
20420 type_definition___2__0__0__5(E, B, C, A).
20421type_definition___2__0__0__5([], A, B, C) :-
20422 type_definition___2__1(A, B, C).
20423type_definition___2__0__0__5([A|W], B, X, L) :-
20424 ( A=suspension(_, active, _, C, V),
20425 nonvar(B),
20426 functor(B, D, E),
20427 functor(C, D, E)
20428 -> ( A=suspension(_, _, _, F, _),
20429 setarg(2, A, removed),
20430 term_variables(F, K),
20431 ( arg(3, A, G),
20432 ( var(G)
20433 -> nb_getval('$chr_store_global_list_chr_translate____unalias_type___2',
20434 H),
20435 H=[_|I],
20436 b_setval('$chr_store_global_list_chr_translate____unalias_type___2',
20437 I),
20438 ( I=[J|_]
20439 -> setarg(3, J, _)
20440 ; true
20441 )
20442 ; G=[_, _|I],
20443 setarg(2, G, I),
20444 ( I=[J|_]
20445 -> setarg(3, J, G)
20446 ; true
20447 )
20448 )
20449 ),
20450 detach_unalias_type___2(K, A)
20451 ),
20452 ( arg(2, L, O),
20453 setarg(2, L, active),
20454 ( arg(4, L, M),
20455 N is M+1,
20456 setarg(4, L, N)
20457 ),
20458 ( O==not_stored_yet
20459 -> L=suspension(_, _, _, _, _, P, Q),
20460 term_variables(term(P, Q), U),
20461 ( nb_getval('$chr_store_global_list_chr_translate____type_definition___2',
20462 R),
20463 S=[L|R],
20464 b_setval('$chr_store_global_list_chr_translate____type_definition___2',
20465 S),
20466 ( R=[T|_]
20467 -> setarg(5, T, S)
20468 ; true
20469 )
20470 ),
20471 attach_type_definition___2(U, L)
20472 ; true
20473 )
20474 ),
20475 V=C,
20476 ( L=suspension(_, active, _, N, _, _, _)
20477 -> setarg(2, L, inactive),
20478 type_definition___2__0__0__5(W, B, X, L)
20479 ; true
20480 )
20481 ; type_definition___2__0__0__5(W, B, X, L)
20482 ).
20483type_definition___2__0(B, C, A) :-
20484 ( var(A)
20485 -> A=suspension(D, not_stored_yet, t, 0, _, B, C),
20486 'chr gen_id'(D)
20487 ; true
20488 ),
20489 type_definition___2__1(B, C, A).
20490type_definition___2__1(B, C, D) :-
20491 nb_getval('$chr_store_global_ground_chr_translate____dynamic_type_check___0',
20492 A),
20493 !,
20494 type_definition___2__1__0__7(A, B, C, D).
20495type_definition___2__1__0__7([], A, B, C) :-
20496 type_definition___2__2(A, B, C).
20497type_definition___2__1__0__7([A|R], M, N, B) :-
20498 ( A=suspension(_, active, _, _),
20499 C=t(235, B, A),
20500 '$novel_production'(B, C),
20501 '$novel_production'(A, C)
20502 -> '$extend_history'(B, C),
20503 ( arg(2, B, F),
20504 setarg(2, B, active),
20505 ( arg(4, B, D),
20506 E is D+1,
20507 setarg(4, B, E)
20508 ),
20509 ( F==not_stored_yet
20510 -> B=suspension(_, _, _, _, _, G, H),
20511 term_variables(term(G, H), L),
20512 ( nb_getval('$chr_store_global_list_chr_translate____type_definition___2',
20513 I),
20514 J=[B|I],
20515 b_setval('$chr_store_global_list_chr_translate____type_definition___2',
20516 J),
20517 ( I=[K|_]
20518 -> setarg(5, K, J)
20519 ; true
20520 )
20521 ),
20522 attach_type_definition___2(L, B)
20523 ; true
20524 )
20525 ),
20526 ( copy_term_nat(M-N, O-P),
20527 maplist(dynamic_type_check_clause(O), P, Q),
20528 dynamic_type_check_clauses(Q)
20529 ),
20530 ( B=suspension(_, active, _, E, _, _, _)
20531 -> setarg(2, B, inactive),
20532 type_definition___2__1__0__7(R, M, N, B)
20533 ; true
20534 )
20535 ; type_definition___2__1__0__7(R, M, N, B)
20536 ).
20537type_definition___2__1(A, B, C) :-
20538 type_definition___2__2(A, B, C).
20539type_definition___2__2(B, C, D) :-
20540 nb_getval('$chr_store_global_list_chr_translate____atomic_type___1', A),
20541 !,
20542 type_definition___2__2__0__8(A, B, C, D).
20543type_definition___2__2__0__8([], A, B, C) :-
20544 type_definition___2__3(A, B, C).
20545type_definition___2__2__0__8([A|W], C, V, L) :-
20546 ( A=suspension(_, active, _, B),
20547 functor(B, D, E),
20548 functor(C, D, E)
20549 -> ( A=suspension(_, _, _, F),
20550 setarg(2, A, removed),
20551 term_variables(F, K),
20552 ( arg(3, A, G),
20553 ( var(G)
20554 -> nb_getval('$chr_store_global_list_chr_translate____atomic_type___1',
20555 H),
20556 H=[_|I],
20557 b_setval('$chr_store_global_list_chr_translate____atomic_type___1',
20558 I),
20559 ( I=[J|_]
20560 -> setarg(3, J, _)
20561 ; true
20562 )
20563 ; G=[_, _|I],
20564 setarg(2, G, I),
20565 ( I=[J|_]
20566 -> setarg(3, J, G)
20567 ; true
20568 )
20569 )
20570 ),
20571 detach_atomic_type___1(K, A)
20572 ),
20573 ( arg(2, L, O),
20574 setarg(2, L, active),
20575 ( arg(4, L, M),
20576 N is M+1,
20577 setarg(4, L, N)
20578 ),
20579 ( O==not_stored_yet
20580 -> L=suspension(_, _, _, _, _, P, Q),
20581 term_variables(term(P, Q), U),
20582 ( nb_getval('$chr_store_global_list_chr_translate____type_definition___2',
20583 R),
20584 S=[L|R],
20585 b_setval('$chr_store_global_list_chr_translate____type_definition___2',
20586 S),
20587 ( R=[T|_]
20588 -> setarg(5, T, S)
20589 ; true
20590 )
20591 ),
20592 attach_type_definition___2(U, L)
20593 ; true
20594 )
20595 ),
20596 maplist(atomic, V),
20597 ( L=suspension(_, active, _, N, _, _, _)
20598 -> setarg(2, L, inactive),
20599 type_definition___2__2__0__8(W, C, V, L)
20600 ; true
20601 )
20602 ; type_definition___2__2__0__8(W, C, V, L)
20603 ).
20604type_definition___2__2(A, B, C) :-
20605 type_definition___2__3(A, B, C).
20606type_definition___2__3(_, _, A) :-
20607 arg(2, A, D),
20608 setarg(2, A, active),
20609 arg(4, A, B),
20610 C is B+1,
20611 setarg(4, A, C),
20612 ( D==not_stored_yet
20613 -> A=suspension(_, _, _, _, _, E, F),
20614 term_variables(term(E, F), J),
20615 ( nb_getval('$chr_store_global_list_chr_translate____type_definition___2',
20616 G),
20617 H=[A|G],
20618 b_setval('$chr_store_global_list_chr_translate____type_definition___2',
20619 H),
20620 ( G=[I|_]
20621 -> setarg(5, I, H)
20622 ; true
20623 )
20624 ),
20625 attach_type_definition___2(J, A)
20626 ; true
20627 ).
20628type_alias(A, B) :-
20629 type_alias___2__0(A, B, _).
20630type_alias___2__0(A, K, B) :-
20631 var(A),
20632 !,
20633 ( var(B)
20634 -> true
20635 ; B=suspension(_, C, _, _, _, D, E),
20636 setarg(2, B, removed),
20637 ( C==not_stored_yet
20638 -> F=[]
20639 ; term_variables(term(D, E), F),
20640 ( arg(5, B, G),
20641 ( var(G)
20642 -> nb_getval('$chr_store_global_list_chr_translate____type_alias___2',
20643 H),
20644 H=[_|I],
20645 b_setval('$chr_store_global_list_chr_translate____type_alias___2',
20646 I),
20647 ( I=[J|_]
20648 -> setarg(5, J, _)
20649 ; true
20650 )
20651 ; G=[_, _|I],
20652 setarg(2, G, I),
20653 ( I=[J|_]
20654 -> setarg(5, J, G)
20655 ; true
20656 )
20657 )
20658 ),
20659 detach_type_alias___2(F, B)
20660 )
20661 ),
20662 chr_error(type_error,
20663 'Variable alias definition: "~w".\n',
20664 [(:-chr_type A==K)]).
20665type_alias___2__0(K, A, B) :-
20666 var(A),
20667 !,
20668 ( var(B)
20669 -> true
20670 ; B=suspension(_, C, _, _, _, D, E),
20671 setarg(2, B, removed),
20672 ( C==not_stored_yet
20673 -> F=[]
20674 ; term_variables(term(D, E), F),
20675 ( arg(5, B, G),
20676 ( var(G)
20677 -> nb_getval('$chr_store_global_list_chr_translate____type_alias___2',
20678 H),
20679 H=[_|I],
20680 b_setval('$chr_store_global_list_chr_translate____type_alias___2',
20681 I),
20682 ( I=[J|_]
20683 -> setarg(5, J, _)
20684 ; true
20685 )
20686 ; G=[_, _|I],
20687 setarg(2, G, I),
20688 ( I=[J|_]
20689 -> setarg(5, J, G)
20690 ; true
20691 )
20692 )
20693 ),
20694 detach_type_alias___2(F, B)
20695 )
20696 ),
20697 chr_error(type_error,
20698 'Variable alias definition: "~w".\n',
20699 [(:-chr_type K==A)]).
20700type_alias___2__0(A, B, C) :-
20701 subsumes_term(A, B),
20702 !,
20703 ( var(C)
20704 -> true
20705 ; C=suspension(_, D, _, _, _, E, F),
20706 setarg(2, C, removed),
20707 ( D==not_stored_yet
20708 -> G=[]
20709 ; term_variables(term(E, F), G),
20710 ( arg(5, C, H),
20711 ( var(H)
20712 -> nb_getval('$chr_store_global_list_chr_translate____type_alias___2',
20713 I),
20714 I=[_|J],
20715 b_setval('$chr_store_global_list_chr_translate____type_alias___2',
20716 J),
20717 ( J=[K|_]
20718 -> setarg(5, K, _)
20719 ; true
20720 )
20721 ; H=[_, _|J],
20722 setarg(2, H, J),
20723 ( J=[K|_]
20724 -> setarg(5, K, H)
20725 ; true
20726 )
20727 )
20728 ),
20729 detach_type_alias___2(G, C)
20730 )
20731 ),
20732 chr_error(type_error, 'Cyclic alias definition: "~w".\n', [A==B]).
20733type_alias___2__0(C, Y, N) :-
20734 nb_getval('$chr_store_global_list_chr_translate____type_alias___2', A),
20735 ( member(B, A),
20736 B=suspension(_, active, _, _, _, D, Z),
20737 ( ( functor(C, E, F),
20738 functor(D, E, F),
20739 \+ C\=D,
20740 !,
20741 B=suspension(_, _, _, _, _, G, H),
20742 setarg(2, B, removed),
20743 term_variables(term(G, H), M),
20744 arg(5, B, I),
20745 ( var(I)
20746 -> nb_getval('$chr_store_global_list_chr_translate____type_alias___2',
20747 J),
20748 J=[_|K],
20749 b_setval('$chr_store_global_list_chr_translate____type_alias___2',
20750 K),
20751 ( K=[L|_]
20752 -> setarg(5, L, _)
20753 ; true
20754 )
20755 ; I=[_, _|K],
20756 setarg(2, I, K),
20757 ( K=[L|_]
20758 -> setarg(5, L, I)
20759 ; true
20760 )
20761 ),
20762 detach_type_alias___2(M, B),
20763 ( var(N)
20764 -> true
20765 ; N=suspension(_, O, _, _, _, P, Q),
20766 setarg(2, N, removed),
20767 ( O==not_stored_yet
20768 -> R=[]
20769 ; term_variables(term(P, Q), R),
20770 ( arg(5, N, S),
20771 ( var(S)
20772 -> nb_getval('$chr_store_global_list_chr_translate____type_alias___2',
20773 T),
20774 T=[_|U],
20775 b_setval('$chr_store_global_list_chr_translate____type_alias___2',
20776 U),
20777 ( U=[V|_]
20778 -> setarg(5, V, _)
20779 ; true
20780 )
20781 ; S=[_, _|U],
20782 setarg(2, S, U),
20783 ( U=[V|_]
20784 -> setarg(5, V, S)
20785 ; true
20786 )
20787 )
20788 ),
20789 detach_type_alias___2(R, N)
20790 )
20791 ),
20792 copy_term_nat(C, W),
20793 copy_term_nat(D, X),
20794 W=X,
20795 chr_error(type_error,
20796 'Ambiguous type aliases: you have defined \n\t`~w\'\n\t`~w\'\n\tresulting in two definitions for "~w".\n',
20797 [C==Y, D==Z, W])
20798 ; functor(D, A1, B1),
20799 functor(C, A1, B1),
20800 \+ D\=C,
20801 !,
20802 B=suspension(_, _, _, _, _, C1, D1),
20803 setarg(2, B, removed),
20804 term_variables(term(C1, D1), I1),
20805 arg(5, B, E1),
20806 ( var(E1)
20807 -> nb_getval('$chr_store_global_list_chr_translate____type_alias___2',
20808 F1),
20809 F1=[_|G1],
20810 b_setval('$chr_store_global_list_chr_translate____type_alias___2',
20811 G1),
20812 ( G1=[H1|_]
20813 -> setarg(5, H1, _)
20814 ; true
20815 )
20816 ; E1=[_, _|G1],
20817 setarg(2, E1, G1),
20818 ( G1=[H1|_]
20819 -> setarg(5, H1, E1)
20820 ; true
20821 )
20822 ),
20823 detach_type_alias___2(I1, B),
20824 ( var(N)
20825 -> true
20826 ; N=suspension(_, J1, _, _, _, K1, L1),
20827 setarg(2, N, removed),
20828 ( J1==not_stored_yet
20829 -> M1=[]
20830 ; term_variables(term(K1, L1), M1),
20831 ( arg(5, N, N1),
20832 ( var(N1)
20833 -> nb_getval('$chr_store_global_list_chr_translate____type_alias___2',
20834 O1),
20835 O1=[_|P1],
20836 b_setval('$chr_store_global_list_chr_translate____type_alias___2',
20837 P1),
20838 ( P1=[Q1|_]
20839 -> setarg(5, Q1, _)
20840 ; true
20841 )
20842 ; N1=[_, _|P1],
20843 setarg(2, N1, P1),
20844 ( P1=[Q1|_]
20845 -> setarg(5, Q1, N1)
20846 ; true
20847 )
20848 )
20849 ),
20850 detach_type_alias___2(M1, N)
20851 )
20852 ),
20853 copy_term_nat(D, R1),
20854 copy_term_nat(C, S1),
20855 R1=S1,
20856 chr_error(type_error,
20857 'Ambiguous type aliases: you have defined \n\t`~w\'\n\t`~w\'\n\tresulting in two definitions for "~w".\n',
20858 [D==Z, C==Y, R1])
20859 )
20860 ; functor(D, T1, U1),
20861 functor(Y, T1, U1),
20862 copy_term_nat((C, Y, D, Z),
20863 (F2, W1, V1, G2)),
20864 subsumes_term(V1, W1),
20865 !,
20866 ( var(N)
20867 -> true
20868 ; N=suspension(_, X1, _, _, _, Y1, Z1),
20869 setarg(2, N, removed),
20870 ( X1==not_stored_yet
20871 -> A2=[]
20872 ; term_variables(term(Y1, Z1), A2),
20873 ( arg(5, N, B2),
20874 ( var(B2)
20875 -> nb_getval('$chr_store_global_list_chr_translate____type_alias___2',
20876 C2),
20877 C2=[_|D2],
20878 b_setval('$chr_store_global_list_chr_translate____type_alias___2',
20879 D2),
20880 ( D2=[E2|_]
20881 -> setarg(5, E2, _)
20882 ; true
20883 )
20884 ; B2=[_, _|D2],
20885 setarg(2, B2, D2),
20886 ( D2=[E2|_]
20887 -> setarg(5, E2, B2)
20888 ; true
20889 )
20890 )
20891 ),
20892 detach_type_alias___2(A2, N)
20893 )
20894 ),
20895 type_alias(F2, G2)
20896 )
20897 ; !,
20898 ( var(N)
20899 -> N=suspension(H2, not_stored_yet, t, 0, _, C, Y),
20900 'chr gen_id'(H2)
20901 ; true
20902 ),
20903 type_alias___2__0__0__7(A, C, Y, N)
20904 ).
20905type_alias___2__0__0__7([], A, B, C) :-
20906 type_alias___2__1(A, B, C).
20907type_alias___2__0__0__7([A|C1], B, G, Q) :-
20908 ( A=suspension(_, active, _, _, _, F, C),
20909 functor(B, D, E),
20910 functor(C, D, E),
20911 copy_term_nat((F, C, B, G),
20912 (A1, I, H, B1)),
20913 subsumes_term(H, I)
20914 -> ( A=suspension(_, _, _, _, _, J, K),
20915 setarg(2, A, removed),
20916 term_variables(term(J, K), P),
20917 ( arg(5, A, L),
20918 ( var(L)
20919 -> nb_getval('$chr_store_global_list_chr_translate____type_alias___2',
20920 M),
20921 M=[_|N],
20922 b_setval('$chr_store_global_list_chr_translate____type_alias___2',
20923 N),
20924 ( N=[O|_]
20925 -> setarg(5, O, _)
20926 ; true
20927 )
20928 ; L=[_, _|N],
20929 setarg(2, L, N),
20930 ( N=[O|_]
20931 -> setarg(5, O, L)
20932 ; true
20933 )
20934 )
20935 ),
20936 detach_type_alias___2(P, A)
20937 ),
20938 ( arg(2, Q, T),
20939 setarg(2, Q, active),
20940 ( arg(4, Q, R),
20941 S is R+1,
20942 setarg(4, Q, S)
20943 ),
20944 ( T==not_stored_yet
20945 -> Q=suspension(_, _, _, _, _, U, V),
20946 term_variables(term(U, V), Z),
20947 ( nb_getval('$chr_store_global_list_chr_translate____type_alias___2',
20948 W),
20949 X=[Q|W],
20950 b_setval('$chr_store_global_list_chr_translate____type_alias___2',
20951 X),
20952 ( W=[Y|_]
20953 -> setarg(5, Y, X)
20954 ; true
20955 )
20956 ),
20957 attach_type_alias___2(Z, Q)
20958 ; true
20959 )
20960 ),
20961 type_alias(A1, B1),
20962 ( Q=suspension(_, active, _, S, _, _, _)
20963 -> setarg(2, Q, inactive),
20964 type_alias___2__0__0__7(C1, B, G, Q)
20965 ; true
20966 )
20967 ; type_alias___2__0__0__7(C1, B, G, Q)
20968 ).
20969type_alias___2__0(B, C, A) :-
20970 ( var(A)
20971 -> A=suspension(D, not_stored_yet, t, 0, _, B, C),
20972 'chr gen_id'(D)
20973 ; true
20974 ),
20975 type_alias___2__1(B, C, A).
20976type_alias___2__1(D, _, N) :-
20977 nb_getval('$chr_store_global_list_chr_translate____type_definition___2',
20978 A),
20979 member(B, A),
20980 B=suspension(_, active, _, _, _, C, _),
20981 functor(C, E, F),
20982 functor(D, E, F),
20983 !,
20984 B=suspension(_, _, _, _, _, G, H),
20985 setarg(2, B, removed),
20986 term_variables(term(G, H), M),
20987 arg(5, B, I),
20988 ( var(I)
20989 -> nb_getval('$chr_store_global_list_chr_translate____type_definition___2',
20990 J),
20991 J=[_|K],
20992 b_setval('$chr_store_global_list_chr_translate____type_definition___2',
20993 K),
20994 ( K=[L|_]
20995 -> setarg(5, L, _)
20996 ; true
20997 )
20998 ; I=[_, _|K],
20999 setarg(2, I, K),
21000 ( K=[L|_]
21001 -> setarg(5, L, I)
21002 ; true
21003 )
21004 ),
21005 detach_type_definition___2(M, B),
21006 ( var(N)
21007 -> true
21008 ; N=suspension(_, O, _, _, _, P, Q),
21009 setarg(2, N, removed),
21010 ( O==not_stored_yet
21011 -> R=[]
21012 ; term_variables(term(P, Q), R),
21013 ( arg(5, N, S),
21014 ( var(S)
21015 -> nb_getval('$chr_store_global_list_chr_translate____type_alias___2',
21016 T),
21017 T=[_|U],
21018 b_setval('$chr_store_global_list_chr_translate____type_alias___2',
21019 U),
21020 ( U=[V|_]
21021 -> setarg(5, V, _)
21022 ; true
21023 )
21024 ; S=[_, _|U],
21025 setarg(2, S, U),
21026 ( U=[V|_]
21027 -> setarg(5, V, S)
21028 ; true
21029 )
21030 )
21031 ),
21032 detach_type_alias___2(R, N)
21033 )
21034 ),
21035 chr_error(type_error,
21036 'Multiple definitions for type, once in a type definition and once as a type alias: ~w/~w.\n',
21037 [E, F]).
21038type_alias___2__1(B, C, D) :-
21039 nb_getval('$chr_store_global_list_chr_translate____unalias_type___2',
21040 A),
21041 !,
21042 type_alias___2__1__0__10(A, B, C, D).
21043type_alias___2__1__0__10([], A, B, C) :-
21044 type_alias___2__2(A, B, C).
21045type_alias___2__1__0__10([A|Z], B, F, N) :-
21046 ( A=suspension(_, active, _, C, Y),
21047 functor(B, D, E),
21048 functor(C, D, E),
21049 copy_term_nat((B, F), (G, X)),
21050 C=G
21051 -> ( A=suspension(_, _, _, H, _),
21052 setarg(2, A, removed),
21053 term_variables(H, M),
21054 ( arg(3, A, I),
21055 ( var(I)
21056 -> nb_getval('$chr_store_global_list_chr_translate____unalias_type___2',
21057 J),
21058 J=[_|K],
21059 b_setval('$chr_store_global_list_chr_translate____unalias_type___2',
21060 K),
21061 ( K=[L|_]
21062 -> setarg(3, L, _)
21063 ; true
21064 )
21065 ; I=[_, _|K],
21066 setarg(2, I, K),
21067 ( K=[L|_]
21068 -> setarg(3, L, I)
21069 ; true
21070 )
21071 )
21072 ),
21073 detach_unalias_type___2(M, A)
21074 ),
21075 ( arg(2, N, Q),
21076 setarg(2, N, active),
21077 ( arg(4, N, O),
21078 P is O+1,
21079 setarg(4, N, P)
21080 ),
21081 ( Q==not_stored_yet
21082 -> N=suspension(_, _, _, _, _, R, S),
21083 term_variables(term(R, S), W),
21084 ( nb_getval('$chr_store_global_list_chr_translate____type_alias___2',
21085 T),
21086 U=[N|T],
21087 b_setval('$chr_store_global_list_chr_translate____type_alias___2',
21088 U),
21089 ( T=[V|_]
21090 -> setarg(5, V, U)
21091 ; true
21092 )
21093 ),
21094 attach_type_alias___2(W, N)
21095 ; true
21096 )
21097 ),
21098 unalias_type(X, Y),
21099 ( N=suspension(_, active, _, P, _, _, _)
21100 -> setarg(2, N, inactive),
21101 type_alias___2__1__0__10(Z, B, F, N)
21102 ; true
21103 )
21104 ; type_alias___2__1__0__10(Z, B, F, N)
21105 ).
21106type_alias___2__1(A, B, C) :-
21107 type_alias___2__2(A, B, C).
21108type_alias___2__2(B, C, D) :-
21109 nb_getval('$chr_store_global_list_chr_translate____ast_static_type_check_var___4',
21110 A),
21111 !,
21112 type_alias___2__2__0__12(A, B, C, D).
21113type_alias___2__2__0__12([], A, B, C) :-
21114 type_alias___2__3(A, B, C).
21115type_alias___2__2__0__12([A|A1], B, V, L) :-
21116 ( A=suspension(_, active, _, W, X, C, Z),
21117 functor(B, D, E),
21118 functor(C, D, E)
21119 -> ( A=suspension(_, _, _, _, _, F, _),
21120 setarg(2, A, removed),
21121 term_variables(F, K),
21122 ( arg(3, A, G),
21123 ( var(G)
21124 -> nb_getval('$chr_store_global_list_chr_translate____ast_static_type_check_var___4',
21125 H),
21126 H=[_|I],
21127 b_setval('$chr_store_global_list_chr_translate____ast_static_type_check_var___4',
21128 I),
21129 ( I=[J|_]
21130 -> setarg(3, J, _)
21131 ; true
21132 )
21133 ; G=[_, _|I],
21134 setarg(2, G, I),
21135 ( I=[J|_]
21136 -> setarg(3, J, G)
21137 ; true
21138 )
21139 )
21140 ),
21141 detach_ast_static_type_check_var___4(K, A)
21142 ),
21143 ( arg(2, L, O),
21144 setarg(2, L, active),
21145 ( arg(4, L, M),
21146 N is M+1,
21147 setarg(4, L, N)
21148 ),
21149 ( O==not_stored_yet
21150 -> L=suspension(_, _, _, _, _, P, Q),
21151 term_variables(term(P, Q), U),
21152 ( nb_getval('$chr_store_global_list_chr_translate____type_alias___2',
21153 R),
21154 S=[L|R],
21155 b_setval('$chr_store_global_list_chr_translate____type_alias___2',
21156 S),
21157 ( R=[T|_]
21158 -> setarg(5, T, S)
21159 ; true
21160 )
21161 ),
21162 attach_type_alias___2(U, L)
21163 ; true
21164 )
21165 ),
21166 ( copy_term_nat(B-V, C-Y),
21167 ast_static_type_check_var(W, X, Y, Z)
21168 ),
21169 ( L=suspension(_, active, _, N, _, _, _)
21170 -> setarg(2, L, inactive),
21171 type_alias___2__2__0__12(A1, B, V, L)
21172 ; true
21173 )
21174 ; type_alias___2__2__0__12(A1, B, V, L)
21175 ).
21176type_alias___2__2(A, B, C) :-
21177 type_alias___2__3(A, B, C).
21178type_alias___2__3(B, C, D) :-
21179 nb_getval('$chr_store_global_ground_chr_translate____dynamic_type_check___0',
21180 A),
21181 !,
21182 type_alias___2__3__0__13(A, B, C, D).
21183type_alias___2__3__0__13([], A, B, C) :-
21184 type_alias___2__4(A, B, C).
21185type_alias___2__3__0__13([A|R], M, N, B) :-
21186 ( A=suspension(_, active, _, _),
21187 C=t(236, B, A),
21188 '$novel_production'(B, C),
21189 '$novel_production'(A, C)
21190 -> '$extend_history'(B, C),
21191 ( arg(2, B, F),
21192 setarg(2, B, active),
21193 ( arg(4, B, D),
21194 E is D+1,
21195 setarg(4, B, E)
21196 ),
21197 ( F==not_stored_yet
21198 -> B=suspension(_, _, _, _, _, G, H),
21199 term_variables(term(G, H), L),
21200 ( nb_getval('$chr_store_global_list_chr_translate____type_alias___2',
21201 I),
21202 J=[B|I],
21203 b_setval('$chr_store_global_list_chr_translate____type_alias___2',
21204 J),
21205 ( I=[K|_]
21206 -> setarg(5, K, J)
21207 ; true
21208 )
21209 ),
21210 attach_type_alias___2(L, B)
21211 ; true
21212 )
21213 ),
21214 ( copy_term_nat(M-N, O-P),
21215 dynamic_type_check_alias_clause(O, P, Q),
21216 dynamic_type_check_clauses([Q])
21217 ),
21218 ( B=suspension(_, active, _, E, _, _, _)
21219 -> setarg(2, B, inactive),
21220 type_alias___2__3__0__13(R, M, N, B)
21221 ; true
21222 )
21223 ; type_alias___2__3__0__13(R, M, N, B)
21224 ).
21225type_alias___2__3(A, B, C) :-
21226 type_alias___2__4(A, B, C).
21227type_alias___2__4(B, C, D) :-
21228 nb_getval('$chr_store_global_list_chr_translate____atomic_type___1', A),
21229 !,
21230 type_alias___2__4__0__14(A, B, C, D).
21231type_alias___2__4__0__14([], A, B, C) :-
21232 type_alias___2__5(A, B, C).
21233type_alias___2__4__0__14([A|X], C, V, L) :-
21234 ( A=suspension(_, active, _, B),
21235 functor(B, D, E),
21236 functor(C, D, E)
21237 -> ( A=suspension(_, _, _, F),
21238 setarg(2, A, removed),
21239 term_variables(F, K),
21240 ( arg(3, A, G),
21241 ( var(G)
21242 -> nb_getval('$chr_store_global_list_chr_translate____atomic_type___1',
21243 H),
21244 H=[_|I],
21245 b_setval('$chr_store_global_list_chr_translate____atomic_type___1',
21246 I),
21247 ( I=[J|_]
21248 -> setarg(3, J, _)
21249 ; true
21250 )
21251 ; G=[_, _|I],
21252 setarg(2, G, I),
21253 ( I=[J|_]
21254 -> setarg(3, J, G)
21255 ; true
21256 )
21257 )
21258 ),
21259 detach_atomic_type___1(K, A)
21260 ),
21261 ( arg(2, L, O),
21262 setarg(2, L, active),
21263 ( arg(4, L, M),
21264 N is M+1,
21265 setarg(4, L, N)
21266 ),
21267 ( O==not_stored_yet
21268 -> L=suspension(_, _, _, _, _, P, Q),
21269 term_variables(term(P, Q), U),
21270 ( nb_getval('$chr_store_global_list_chr_translate____type_alias___2',
21271 R),
21272 S=[L|R],
21273 b_setval('$chr_store_global_list_chr_translate____type_alias___2',
21274 S),
21275 ( R=[T|_]
21276 -> setarg(5, T, S)
21277 ; true
21278 )
21279 ),
21280 attach_type_alias___2(U, L)
21281 ; true
21282 )
21283 ),
21284 ( atomic(V),
21285 copy_term_nat(C-V, B-W),
21286 atomic_type(W)
21287 ),
21288 ( L=suspension(_, active, _, N, _, _, _)
21289 -> setarg(2, L, inactive),
21290 type_alias___2__4__0__14(X, C, V, L)
21291 ; true
21292 )
21293 ; type_alias___2__4__0__14(X, C, V, L)
21294 ).
21295type_alias___2__4(A, B, C) :-
21296 type_alias___2__5(A, B, C).
21297type_alias___2__5(_, _, A) :-
21298 arg(2, A, D),
21299 setarg(2, A, active),
21300 arg(4, A, B),
21301 C is B+1,
21302 setarg(4, A, C),
21303 ( D==not_stored_yet
21304 -> A=suspension(_, _, _, _, _, E, F),
21305 term_variables(term(E, F), J),
21306 ( nb_getval('$chr_store_global_list_chr_translate____type_alias___2',
21307 G),
21308 H=[A|G],
21309 b_setval('$chr_store_global_list_chr_translate____type_alias___2',
21310 H),
21311 ( G=[I|_]
21312 -> setarg(5, I, H)
21313 ; true
21314 )
21315 ),
21316 attach_type_alias___2(J, A)
21317 ; true
21318 ).
21319constraint_type(A, B) :-
21320 constraint_type___2__0(A, B, _).
21321constraint_type___2__0(B, C, A) :-
21322 nb_getval('$chr_store_global_ground_chr_translate____static_type_check___2',
21323 E),
21324 !,
21325 A=suspension(D, not_stored_yet, _, B, C),
21326 'chr gen_id'(D),
21327 constraint_type___2__0__0__2(E, B, C, A).
21328constraint_type___2__0__0__2([], A, B, C) :-
21329 constraint_type___2__1(A, B, C).
21330constraint_type___2__0__0__2([A|L], H, I, B) :-
21331 ( A=suspension(_, active, _, _, _)
21332 -> ( arg(2, B, C),
21333 setarg(2, B, active),
21334 ( C==not_stored_yet
21335 -> ( nb_getval('$chr_store_global_ground_chr_translate____constraint_type___2',
21336 D),
21337 E=[B|D],
21338 b_setval('$chr_store_global_ground_chr_translate____constraint_type___2',
21339 E),
21340 ( D=[F|_]
21341 -> setarg(3, F, E)
21342 ; true
21343 )
21344 ),
21345 nb_getval('$chr_store_multi_hash_chr_translate____constraint_type___2-1',
21346 G),
21347 insert_ht(G, H, B)
21348 ; true
21349 )
21350 ),
21351 forall(( member(J, I),
21352 sub_term(J, K)
21353 ),
21354 ( get_type_definition(K, _)
21355 -> true
21356 ; chr_error(type_error,
21357 'Undefined type "~w" used in type declaration of "~w".\n',
21358 [K, H])
21359 )),
21360 ( B=suspension(_, active, _, _, _)
21361 -> setarg(2, B, inactive),
21362 constraint_type___2__0__0__2(L, H, I, B)
21363 ; true
21364 )
21365 ; constraint_type___2__0__0__2(L, H, I, B)
21366 ).
21367constraint_type___2__0(B, C, A) :-
21368 A=suspension(D, not_stored_yet, _, B, C),
21369 'chr gen_id'(D),
21370 constraint_type___2__1(B, C, A).
21371constraint_type___2__1(G, _, A) :-
21372 arg(2, A, B),
21373 setarg(2, A, active),
21374 ( B==not_stored_yet
21375 -> ( nb_getval('$chr_store_global_ground_chr_translate____constraint_type___2',
21376 C),
21377 D=[A|C],
21378 b_setval('$chr_store_global_ground_chr_translate____constraint_type___2',
21379 D),
21380 ( C=[E|_]
21381 -> setarg(3, E, D)
21382 ; true
21383 )
21384 ),
21385 nb_getval('$chr_store_multi_hash_chr_translate____constraint_type___2-1',
21386 F),
21387 insert_ht(F, G, A)
21388 ; true
21389 ).
21390get_type_definition(A, _) :-
21391 \+ ground(A),
21392 !,
21393 chr_error(type_error,
21394 'Non-ground type in constraint definition: "~w".\n',
21395 [A]).
21396get_type_definition(D, J) :-
21397 nb_getval('$chr_store_global_list_chr_translate____type_alias___2', A),
21398 member(B, A),
21399 B=suspension(_, active, _, _, _, C, G),
21400 functor(C, E, F),
21401 functor(D, E, F),
21402 copy_term_nat((C, G), (H, I)),
21403 H=D,
21404 !,
21405 ( get_type_definition(I, J)
21406 -> true
21407 ; chr_error(type_error,
21408 'Could not find type definition for "~w" (accessed via alias "~w").\n',
21409 [I, H]),
21410 fail
21411 ).
21412get_type_definition(D, I) :-
21413 nb_getval('$chr_store_global_list_chr_translate____type_definition___2',
21414 A),
21415 member(B, A),
21416 B=suspension(_, active, _, _, _, C, G),
21417 nonvar(C),
21418 functor(C, E, F),
21419 functor(D, E, F),
21420 copy_term_nat((C, G), (H, J)),
21421 H=D,
21422 !,
21423 I=J.
21424get_type_definition(A, B) :-
21425 atomic_builtin_type(A, _, _),
21426 !,
21427 B=[A].
21428get_type_definition(A, B) :-
21429 compound_builtin_type(A, _, _, _),
21430 !,
21431 B=[A].
21432get_type_definition(_, _) :-
21433 fail.
21434get_constraint_type(B, E) :-
21435 nb_getval('$chr_store_multi_hash_chr_translate____constraint_type___2-1',
21436 A),
21437 lookup_ht(A, B, C),
21438 member(D, C),
21439 D=suspension(_, active, _, _, F),
21440 !,
21441 E=F.
21442get_constraint_type(_, _) :-
21443 fail.
21444unalias_type(A, B) :-
21445 unalias_type___2__0(A, B, _).
21446unalias_type___2__0(A, I, B) :-
21447 var(A),
21448 !,
21449 ( var(B)
21450 -> true
21451 ; B=suspension(_, _, _, C, _),
21452 setarg(2, B, removed),
21453 term_variables(C, H),
21454 ( arg(3, B, D),
21455 ( var(D)
21456 -> nb_getval('$chr_store_global_list_chr_translate____unalias_type___2',
21457 E),
21458 E=[_|F],
21459 b_setval('$chr_store_global_list_chr_translate____unalias_type___2',
21460 F),
21461 ( F=[G|_]
21462 -> setarg(3, G, _)
21463 ; true
21464 )
21465 ; D=[_, _|F],
21466 setarg(2, D, F),
21467 ( F=[G|_]
21468 -> setarg(3, G, D)
21469 ; true
21470 )
21471 )
21472 ),
21473 detach_unalias_type___2(H, B)
21474 ),
21475 I=A.
21476unalias_type___2__0(D, Q, I) :-
21477 nb_getval('$chr_store_global_list_chr_translate____type_alias___2', A),
21478 member(B, A),
21479 B=suspension(_, active, _, _, _, C, G),
21480 functor(C, E, F),
21481 functor(D, E, F),
21482 copy_term_nat((C, G), (H, P)),
21483 D=H,
21484 !,
21485 ( var(I)
21486 -> true
21487 ; I=suspension(_, _, _, J, _),
21488 setarg(2, I, removed),
21489 term_variables(J, O),
21490 ( arg(3, I, K),
21491 ( var(K)
21492 -> nb_getval('$chr_store_global_list_chr_translate____unalias_type___2',
21493 L),
21494 L=[_|M],
21495 b_setval('$chr_store_global_list_chr_translate____unalias_type___2',
21496 M),
21497 ( M=[N|_]
21498 -> setarg(3, N, _)
21499 ; true
21500 )
21501 ; K=[_, _|M],
21502 setarg(2, K, M),
21503 ( M=[N|_]
21504 -> setarg(3, N, K)
21505 ; true
21506 )
21507 )
21508 ),
21509 detach_unalias_type___2(O, I)
21510 ),
21511 unalias_type(P, Q).
21512unalias_type___2__0(D, N, G) :-
21513 nb_getval('$chr_store_global_list_chr_translate____type_definition___2',
21514 A),
21515 member(B, A),
21516 B=suspension(_, active, _, _, _, C, _),
21517 nonvar(C),
21518 functor(C, E, F),
21519 functor(D, E, F),
21520 !,
21521 ( var(G)
21522 -> true
21523 ; G=suspension(_, _, _, H, _),
21524 setarg(2, G, removed),
21525 term_variables(H, M),
21526 ( arg(3, G, I),
21527 ( var(I)
21528 -> nb_getval('$chr_store_global_list_chr_translate____unalias_type___2',
21529 J),
21530 J=[_|K],
21531 b_setval('$chr_store_global_list_chr_translate____unalias_type___2',
21532 K),
21533 ( K=[L|_]
21534 -> setarg(3, L, _)
21535 ; true
21536 )
21537 ; I=[_, _|K],
21538 setarg(2, I, K),
21539 ( K=[L|_]
21540 -> setarg(3, L, I)
21541 ; true
21542 )
21543 )
21544 ),
21545 detach_unalias_type___2(M, G)
21546 ),
21547 N=D.
21548unalias_type___2__0(A, I, B) :-
21549 atomic_builtin_type(A, _, _),
21550 !,
21551 ( var(B)
21552 -> true
21553 ; B=suspension(_, _, _, C, _),
21554 setarg(2, B, removed),
21555 term_variables(C, H),
21556 ( arg(3, B, D),
21557 ( var(D)
21558 -> nb_getval('$chr_store_global_list_chr_translate____unalias_type___2',
21559 E),
21560 E=[_|F],
21561 b_setval('$chr_store_global_list_chr_translate____unalias_type___2',
21562 F),
21563 ( F=[G|_]
21564 -> setarg(3, G, _)
21565 ; true
21566 )
21567 ; D=[_, _|F],
21568 setarg(2, D, F),
21569 ( F=[G|_]
21570 -> setarg(3, G, D)
21571 ; true
21572 )
21573 )
21574 ),
21575 detach_unalias_type___2(H, B)
21576 ),
21577 I=A.
21578unalias_type___2__0(A, I, B) :-
21579 compound_builtin_type(A, _, _, _),
21580 !,
21581 ( var(B)
21582 -> true
21583 ; B=suspension(_, _, _, C, _),
21584 setarg(2, B, removed),
21585 term_variables(C, H),
21586 ( arg(3, B, D),
21587 ( var(D)
21588 -> nb_getval('$chr_store_global_list_chr_translate____unalias_type___2',
21589 E),
21590 E=[_|F],
21591 b_setval('$chr_store_global_list_chr_translate____unalias_type___2',
21592 F),
21593 ( F=[G|_]
21594 -> setarg(3, G, _)
21595 ; true
21596 )
21597 ; D=[_, _|F],
21598 setarg(2, D, F),
21599 ( F=[G|_]
21600 -> setarg(3, G, D)
21601 ; true
21602 )
21603 )
21604 ),
21605 detach_unalias_type___2(H, B)
21606 ),
21607 I=A.
21608unalias_type___2__0(B, C, A) :-
21609 ( var(A)
21610 -> ( A=suspension(D, active, _, B, C),
21611 term_variables(B, H),
21612 'chr gen_id'(D)
21613 ),
21614 ( nb_getval('$chr_store_global_list_chr_translate____unalias_type___2',
21615 E),
21616 F=[A|E],
21617 b_setval('$chr_store_global_list_chr_translate____unalias_type___2',
21618 F),
21619 ( E=[G|_]
21620 -> setarg(3, G, F)
21621 ; true
21622 )
21623 ),
21624 attach_unalias_type___2(H, A)
21625 ; setarg(2, A, active)
21626 ).
21627types_modes_condition([], [], A) :-
21628 !,
21629 A=true.
21630types_modes_condition([D|O], [K|P], G) :-
21631 nb_getval('$chr_store_global_ground_chr_translate____constraint_mode___2',
21632 A),
21633 member(B, A),
21634 B=suspension(_, active, _, _, C, H),
21635 C=E/F,
21636 functor(D, E, F),
21637 !,
21638 D=..[_|I],
21639 G=(J, N, Q),
21640 modes_condition(H, I, J),
21641 get_constraint_type_det(E/F, L),
21642 K=..[_|M],
21643 types_condition(L, I, M, H, N),
21644 types_modes_condition(O, P, Q).
21645types_modes_condition([A|_], _, _) :-
21646 !,
21647 functor(A, B, C),
21648 chr_error(internal, 'Mode information missing for ~w.\n', [B/C]).
21649types_modes_condition(A, B, C) :-
21650 E=suspension(D, active, _, A, B, C),
21651 'chr gen_id'(D),
21652 nb_getval('$chr_store_global_ground_chr_translate____types_modes_condition___3',
21653 F),
21654 G=[E|F],
21655 b_setval('$chr_store_global_ground_chr_translate____types_modes_condition___3',
21656 G),
21657 ( F=[H|_]
21658 -> setarg(3, H, G)
21659 ; true
21660 ).
21661static_type_check(A, B) :-
21662 static_type_check___2__0(A, B, _).
21663static_type_check___2__0(B, C, A) :-
21664 nb_getval('$chr_store_global_ground_chr_translate____constraint_type___2',
21665 E),
21666 !,
21667 A=suspension(D, not_stored_yet, _, B, C),
21668 'chr gen_id'(D),
21669 static_type_check___2__0__0__1(E, B, C, A).
21670static_type_check___2__0__0__1([], A, B, C) :-
21671 static_type_check___2__1(A, B, C).
21672static_type_check___2__0__0__1([A|K], L, M, B) :-
21673 ( A=suspension(_, active, _, J, G)
21674 -> ( arg(2, B, C),
21675 setarg(2, B, active),
21676 ( C==not_stored_yet
21677 -> nb_getval('$chr_store_global_ground_chr_translate____static_type_check___2',
21678 D),
21679 E=[B|D],
21680 b_setval('$chr_store_global_ground_chr_translate____static_type_check___2',
21681 E),
21682 ( D=[F|_]
21683 -> setarg(3, F, E)
21684 ; true
21685 )
21686 ; true
21687 )
21688 ),
21689 forall(( member(H, G),
21690 sub_term(H, I)
21691 ),
21692 ( get_type_definition(I, _)
21693 -> true
21694 ; chr_error(type_error,
21695 'Undefined type "~w" used in type declaration of "~w".\n',
21696 [I, J])
21697 )),
21698 ( B=suspension(_, active, _, _, _)
21699 -> setarg(2, B, inactive),
21700 static_type_check___2__0__0__1(K, L, M, B)
21701 ; true
21702 )
21703 ; static_type_check___2__0__0__1(K, L, M, B)
21704 ).
21705static_type_check___2__0(B, C, A) :-
21706 A=suspension(D, not_stored_yet, _, B, C),
21707 'chr gen_id'(D),
21708 static_type_check___2__1(B, C, A).
21709static_type_check___2__1(G, H, A) :-
21710 ( var(A)
21711 -> true
21712 ; arg(2, A, B),
21713 setarg(2, A, removed),
21714 ( B==not_stored_yet
21715 -> true
21716 ; arg(3, A, C),
21717 ( var(C)
21718 -> nb_getval('$chr_store_global_ground_chr_translate____static_type_check___2',
21719 D),
21720 D=[_|E],
21721 b_setval('$chr_store_global_ground_chr_translate____static_type_check___2',
21722 E),
21723 ( E=[F|_]
21724 -> setarg(3, F, _)
21725 ; true
21726 )
21727 ; C=[_, _|E],
21728 setarg(2, C, E),
21729 ( E=[F|_]
21730 -> setarg(3, F, C)
21731 ; true
21732 )
21733 )
21734 )
21735 ),
21736 maplist(static_type_check_rule, G, H).
21737ast_static_type_check_term(_, _, A) :-
21738 A==any,
21739 !.
21740ast_static_type_check_term(E, A, D) :-
21741 nonvar(A),
21742 A=var(B, C),
21743 !,
21744 ast_static_type_check_var(B, var(B, C), D, E).
21745ast_static_type_check_term(D, B, A) :-
21746 ast_atomic_builtin_type(A, B, C),
21747 !,
21748 ( call(C)
21749 -> true
21750 ; throw(type_error(invalid_functor(D, B, A)))
21751 ).
21752ast_static_type_check_term(D, B, A) :-
21753 ast_compound_builtin_type(A, B, C),
21754 !,
21755 ( call(C)
21756 -> true
21757 ; throw(type_error(invalid_functor(D, B, A)))
21758 ).
21759ast_static_type_check_term(H, I, C) :-
21760 nb_getval('$chr_store_global_list_chr_translate____type_alias___2', A),
21761 member(B, A),
21762 B=suspension(_, active, _, _, _, D, G),
21763 functor(C, E, F),
21764 functor(D, E, F),
21765 !,
21766 copy_term_nat(D-G, C-J),
21767 ast_static_type_check_term(H, I, J).
21768ast_static_type_check_term(M, H, C) :-
21769 nb_getval('$chr_store_global_list_chr_translate____type_definition___2',
21770 A),
21771 member(B, A),
21772 B=suspension(_, active, _, _, _, D, G),
21773 functor(C, E, F),
21774 functor(D, E, F),
21775 !,
21776 copy_term_nat(D-G, C-I),
21777 ast_functor(H, K, L),
21778 ( member(J, I),
21779 functor(J, K, L)
21780 -> ast_args(H, N),
21781 J=..[_|O],
21782 maplist(ast_static_type_check_term(M), N, O)
21783 ; throw(type_error(invalid_functor(M, H, C)))
21784 ).
21785ast_static_type_check_term(C, B, A) :-
21786 chr_error(internal,
21787 'Undefined type ~w while type checking term ~w in ~@.\n',
21788 [A, B, chr_translate:format_src(C)]).
21789ast_static_type_check_var(A, B, C, D) :-
21790 ast_static_type_check_var___4__0(A, B, C, D, _).
21791ast_static_type_check_var___4__0(O, P, D, R, G) :-
21792 nb_getval('$chr_store_global_list_chr_translate____type_alias___2', A),
21793 member(B, A),
21794 B=suspension(_, active, _, _, _, C, N),
21795 functor(C, E, F),
21796 functor(D, E, F),
21797 !,
21798 ( var(G)
21799 -> true
21800 ; G=suspension(_, _, _, _, _, H, _),
21801 setarg(2, G, removed),
21802 term_variables(H, M),
21803 ( arg(3, G, I),
21804 ( var(I)
21805 -> nb_getval('$chr_store_global_list_chr_translate____ast_static_type_check_var___4',
21806 J),
21807 J=[_|K],
21808 b_setval('$chr_store_global_list_chr_translate____ast_static_type_check_var___4',
21809 K),
21810 ( K=[L|_]
21811 -> setarg(3, L, _)
21812 ; true
21813 )
21814 ; I=[_, _|K],
21815 setarg(2, I, K),
21816 ( K=[L|_]
21817 -> setarg(3, L, I)
21818 ; true
21819 )
21820 )
21821 ),
21822 detach_ast_static_type_check_var___4(M, G)
21823 ),
21824 copy_term_nat(C-N, D-Q),
21825 ast_static_type_check_var(O, P, Q, R).
21826ast_static_type_check_var___4__0(I, J, A, K, B) :-
21827 atomic_builtin_type(A, _, _),
21828 !,
21829 ( var(B)
21830 -> true
21831 ; B=suspension(_, _, _, _, _, C, _),
21832 setarg(2, B, removed),
21833 term_variables(C, H),
21834 ( arg(3, B, D),
21835 ( var(D)
21836 -> nb_getval('$chr_store_global_list_chr_translate____ast_static_type_check_var___4',
21837 E),
21838 E=[_|F],
21839 b_setval('$chr_store_global_list_chr_translate____ast_static_type_check_var___4',
21840 F),
21841 ( F=[G|_]
21842 -> setarg(3, G, _)
21843 ; true
21844 )
21845 ; D=[_, _|F],
21846 setarg(2, D, F),
21847 ( F=[G|_]
21848 -> setarg(3, G, D)
21849 ; true
21850 )
21851 )
21852 ),
21853 detach_ast_static_type_check_var___4(H, B)
21854 ),
21855 ast_static_atomic_builtin_type_check_var(I, J, A, K).
21856ast_static_type_check_var___4__0(_, _, A, _, B) :-
21857 compound_builtin_type(A, _, _, _),
21858 !,
21859 ( var(B)
21860 -> true
21861 ; B=suspension(_, _, _, _, _, C, _),
21862 setarg(2, B, removed),
21863 term_variables(C, H),
21864 ( arg(3, B, D),
21865 ( var(D)
21866 -> nb_getval('$chr_store_global_list_chr_translate____ast_static_type_check_var___4',
21867 E),
21868 E=[_|F],
21869 b_setval('$chr_store_global_list_chr_translate____ast_static_type_check_var___4',
21870 F),
21871 ( F=[G|_]
21872 -> setarg(3, G, _)
21873 ; true
21874 )
21875 ; D=[_, _|F],
21876 setarg(2, D, F),
21877 ( F=[G|_]
21878 -> setarg(3, G, D)
21879 ; true
21880 )
21881 )
21882 ),
21883 detach_ast_static_type_check_var___4(H, B)
21884 ).
21885ast_static_type_check_var___4__0(D, T, E, U, M) :-
21886 ( nb_getval('$chr_store_global_list_chr_translate____ast_static_type_check_var___4',
21887 A),
21888 member(B, A),
21889 B=suspension(_, active, _, C, I1, F, V),
21890 C=D
21891 ),
21892 ( E\==F,
21893 !,
21894 B=suspension(_, _, _, _, _, G, _),
21895 setarg(2, B, removed),
21896 term_variables(G, L),
21897 arg(3, B, H),
21898 ( var(H)
21899 -> nb_getval('$chr_store_global_list_chr_translate____ast_static_type_check_var___4',
21900 I),
21901 I=[_|J],
21902 b_setval('$chr_store_global_list_chr_translate____ast_static_type_check_var___4',
21903 J),
21904 ( J=[K|_]
21905 -> setarg(3, K, _)
21906 ; true
21907 )
21908 ; H=[_, _|J],
21909 setarg(2, H, J),
21910 ( J=[K|_]
21911 -> setarg(3, K, H)
21912 ; true
21913 )
21914 ),
21915 detach_ast_static_type_check_var___4(L, B),
21916 ( var(M)
21917 -> true
21918 ; M=suspension(_, _, _, _, _, N, _),
21919 setarg(2, M, removed),
21920 term_variables(N, S),
21921 ( arg(3, M, O),
21922 ( var(O)
21923 -> nb_getval('$chr_store_global_list_chr_translate____ast_static_type_check_var___4',
21924 P),
21925 P=[_|Q],
21926 b_setval('$chr_store_global_list_chr_translate____ast_static_type_check_var___4',
21927 Q),
21928 ( Q=[R|_]
21929 -> setarg(3, R, _)
21930 ; true
21931 )
21932 ; O=[_, _|Q],
21933 setarg(2, O, Q),
21934 ( Q=[R|_]
21935 -> setarg(3, R, O)
21936 ; true
21937 )
21938 )
21939 ),
21940 detach_ast_static_type_check_var___4(S, M)
21941 ),
21942 throw(type_error(type_clash(T,
21943 U,
21944 V,
21945 E,
21946 F)))
21947 ; F\==E,
21948 !,
21949 B=suspension(_, _, _, _, _, W, _),
21950 setarg(2, B, removed),
21951 term_variables(W, B1),
21952 arg(3, B, X),
21953 ( var(X)
21954 -> nb_getval('$chr_store_global_list_chr_translate____ast_static_type_check_var___4',
21955 Y),
21956 Y=[_|Z],
21957 b_setval('$chr_store_global_list_chr_translate____ast_static_type_check_var___4',
21958 Z),
21959 ( Z=[A1|_]
21960 -> setarg(3, A1, _)
21961 ; true
21962 )
21963 ; X=[_, _|Z],
21964 setarg(2, X, Z),
21965 ( Z=[A1|_]
21966 -> setarg(3, A1, X)
21967 ; true
21968 )
21969 ),
21970 detach_ast_static_type_check_var___4(B1, B),
21971 ( var(M)
21972 -> true
21973 ; M=suspension(_, _, _, _, _, C1, _),
21974 setarg(2, M, removed),
21975 term_variables(C1, H1),
21976 ( arg(3, M, D1),
21977 ( var(D1)
21978 -> nb_getval('$chr_store_global_list_chr_translate____ast_static_type_check_var___4',
21979 E1),
21980 E1=[_|F1],
21981 b_setval('$chr_store_global_list_chr_translate____ast_static_type_check_var___4',
21982 F1),
21983 ( F1=[G1|_]
21984 -> setarg(3, G1, _)
21985 ; true
21986 )
21987 ; D1=[_, _|F1],
21988 setarg(2, D1, F1),
21989 ( F1=[G1|_]
21990 -> setarg(3, G1, D1)
21991 ; true
21992 )
21993 )
21994 ),
21995 detach_ast_static_type_check_var___4(H1, M)
21996 ),
21997 throw(type_error(type_clash(I1,
21998 V,
21999 U,
22000 F,
22001 E)))
22002 ).
22003ast_static_type_check_var___4__0(B, C, D, E, A) :-
22004 ( var(A)
22005 -> ( A=suspension(F, active, _, B, C, D, E),
22006 term_variables(D, J),
22007 'chr gen_id'(F)
22008 ),
22009 ( nb_getval('$chr_store_global_list_chr_translate____ast_static_type_check_var___4',
22010 G),
22011 H=[A|G],
22012 b_setval('$chr_store_global_list_chr_translate____ast_static_type_check_var___4',
22013 H),
22014 ( G=[I|_]
22015 -> setarg(3, I, H)
22016 ; true
22017 )
22018 ),
22019 attach_ast_static_type_check_var___4(J, A)
22020 ; setarg(2, A, active)
22021 ).
22022ast_static_atomic_builtin_type_check_var(_, _, any, _) :-
22023 !.
22024ast_static_atomic_builtin_type_check_var(B, F, C, G) :-
22025 ( nb_getval('$chr_store_multi_hash_chr_translate____ast_static_atomic_builtin_type_check_var___4-13',
22026 A),
22027 lookup_ht(A, k(B, C), D)
22028 ),
22029 ( member(E, D),
22030 E=suspension(_, active, _, _, _, _),
22031 !
22032 ; !,
22033 ast_static_atomic_builtin_type_check_var___4__0__0__3(D,
22034 B,
22035 F,
22036 C,
22037 G)
22038 ).
22039ast_static_atomic_builtin_type_check_var___4__0__0__3([], A, B, C, D) :-
22040 ast_static_atomic_builtin_type_check_var___4__1(A,
22041 B,
22042 C,
22043 D).
22044ast_static_atomic_builtin_type_check_var___4__0__0__3([A|H], C, I, E, J) :-
22045 ( A=suspension(_, active, B, _, D, _),
22046 B==C,
22047 D==E
22048 -> ( setarg(2, A, removed),
22049 ( nb_getval('$chr_store_multi_hash_chr_translate____ast_static_atomic_builtin_type_check_var___4-1',
22050 F),
22051 delete_ht(F, C, A)
22052 ),
22053 nb_getval('$chr_store_multi_hash_chr_translate____ast_static_atomic_builtin_type_check_var___4-13',
22054 G),
22055 delete_ht(G, k(C, E), A)
22056 ),
22057 ast_static_atomic_builtin_type_check_var___4__0__0__3(H,
22058 C,
22059 I,
22060 E,
22061 J)
22062 ; ast_static_atomic_builtin_type_check_var___4__0__0__3(H,
22063 C,
22064 I,
22065 E,
22066 J)
22067 ).
22068ast_static_atomic_builtin_type_check_var(A, B, C, D) :-
22069 ast_static_atomic_builtin_type_check_var___4__1(A,
22070 B,
22071 C,
22072 D).
22073ast_static_atomic_builtin_type_check_var___4__1(B, _, number, _) :-
22074 nb_getval('$chr_store_multi_hash_chr_translate____ast_static_atomic_builtin_type_check_var___4-13',
22075 A),
22076 lookup_ht(A, k(B, float), C),
22077 member(D, C),
22078 D=suspension(_, active, _, _, _, _),
22079 !.
22080ast_static_atomic_builtin_type_check_var___4__1(B, D, float, E) :-
22081 nb_getval('$chr_store_multi_hash_chr_translate____ast_static_atomic_builtin_type_check_var___4-13',
22082 A),
22083 lookup_ht(A, k(B, number), C),
22084 !,
22085 ast_static_atomic_builtin_type_check_var___4__1__0__5(C,
22086 B,
22087 D,
22088 float,
22089 E).
22090ast_static_atomic_builtin_type_check_var___4__1__0__5([], A, B, C, D) :-
22091 ast_static_atomic_builtin_type_check_var___4__8(A,
22092 B,
22093 C,
22094 D).
22095ast_static_atomic_builtin_type_check_var___4__1__0__5([A|G], C, H, I, J) :-
22096 ( A=suspension(_, active, B, _, D, _),
22097 B==C,
22098 D=number
22099 -> ( setarg(2, A, removed),
22100 ( nb_getval('$chr_store_multi_hash_chr_translate____ast_static_atomic_builtin_type_check_var___4-1',
22101 E),
22102 delete_ht(E, C, A)
22103 ),
22104 nb_getval('$chr_store_multi_hash_chr_translate____ast_static_atomic_builtin_type_check_var___4-13',
22105 F),
22106 delete_ht(F, k(C, number), A)
22107 ),
22108 ast_static_atomic_builtin_type_check_var___4__1__0__5(G,
22109 C,
22110 H,
22111 I,
22112 J)
22113 ; ast_static_atomic_builtin_type_check_var___4__1__0__5(G,
22114 C,
22115 H,
22116 I,
22117 J)
22118 ).
22119ast_static_atomic_builtin_type_check_var___4__1(A, B, C, D) :-
22120 ast_static_atomic_builtin_type_check_var___4__2(A,
22121 B,
22122 C,
22123 D).
22124ast_static_atomic_builtin_type_check_var___4__2(B, _, number, _) :-
22125 nb_getval('$chr_store_multi_hash_chr_translate____ast_static_atomic_builtin_type_check_var___4-13',
22126 A),
22127 lookup_ht(A, k(B, int), C),
22128 member(D, C),
22129 D=suspension(_, active, _, _, _, _),
22130 !.
22131ast_static_atomic_builtin_type_check_var___4__2(B, D, int, E) :-
22132 nb_getval('$chr_store_multi_hash_chr_translate____ast_static_atomic_builtin_type_check_var___4-13',
22133 A),
22134 lookup_ht(A, k(B, number), C),
22135 !,
22136 ast_static_atomic_builtin_type_check_var___4__2__0__7(C,
22137 B,
22138 D,
22139 int,
22140 E).
22141ast_static_atomic_builtin_type_check_var___4__2__0__7([], A, B, C, D) :-
22142 ast_static_atomic_builtin_type_check_var___4__5(A,
22143 B,
22144 C,
22145 D).
22146ast_static_atomic_builtin_type_check_var___4__2__0__7([A|G], C, H, I, J) :-
22147 ( A=suspension(_, active, B, _, D, _),
22148 B==C,
22149 D=number
22150 -> ( setarg(2, A, removed),
22151 ( nb_getval('$chr_store_multi_hash_chr_translate____ast_static_atomic_builtin_type_check_var___4-1',
22152 E),
22153 delete_ht(E, C, A)
22154 ),
22155 nb_getval('$chr_store_multi_hash_chr_translate____ast_static_atomic_builtin_type_check_var___4-13',
22156 F),
22157 delete_ht(F, k(C, number), A)
22158 ),
22159 ast_static_atomic_builtin_type_check_var___4__2__0__7(G,
22160 C,
22161 H,
22162 I,
22163 J)
22164 ; ast_static_atomic_builtin_type_check_var___4__2__0__7(G,
22165 C,
22166 H,
22167 I,
22168 J)
22169 ).
22170ast_static_atomic_builtin_type_check_var___4__2(A, B, C, D) :-
22171 ast_static_atomic_builtin_type_check_var___4__3(A,
22172 B,
22173 C,
22174 D).
22175ast_static_atomic_builtin_type_check_var___4__3(B, _, number, _) :-
22176 nb_getval('$chr_store_multi_hash_chr_translate____ast_static_atomic_builtin_type_check_var___4-13',
22177 A),
22178 lookup_ht(A, k(B, natural), C),
22179 member(D, C),
22180 D=suspension(_, active, _, _, _, _),
22181 !.
22182ast_static_atomic_builtin_type_check_var___4__3(B, D, natural, E) :-
22183 nb_getval('$chr_store_multi_hash_chr_translate____ast_static_atomic_builtin_type_check_var___4-13',
22184 A),
22185 lookup_ht(A, k(B, number), C),
22186 !,
22187 ast_static_atomic_builtin_type_check_var___4__3__0__9(C,
22188 B,
22189 D,
22190 natural,
22191 E).
22192ast_static_atomic_builtin_type_check_var___4__3__0__9([], A, B, C, D) :-
22193 ast_static_atomic_builtin_type_check_var___4__5(A,
22194 B,
22195 C,
22196 D).
22197ast_static_atomic_builtin_type_check_var___4__3__0__9([A|G], C, H, I, J) :-
22198 ( A=suspension(_, active, B, _, D, _),
22199 B==C,
22200 D=number
22201 -> ( setarg(2, A, removed),
22202 ( nb_getval('$chr_store_multi_hash_chr_translate____ast_static_atomic_builtin_type_check_var___4-1',
22203 E),
22204 delete_ht(E, C, A)
22205 ),
22206 nb_getval('$chr_store_multi_hash_chr_translate____ast_static_atomic_builtin_type_check_var___4-13',
22207 F),
22208 delete_ht(F, k(C, number), A)
22209 ),
22210 ast_static_atomic_builtin_type_check_var___4__3__0__9(G,
22211 C,
22212 H,
22213 I,
22214 J)
22215 ; ast_static_atomic_builtin_type_check_var___4__3__0__9(G,
22216 C,
22217 H,
22218 I,
22219 J)
22220 ).
22221ast_static_atomic_builtin_type_check_var___4__3(A, B, C, D) :-
22222 ast_static_atomic_builtin_type_check_var___4__4(A,
22223 B,
22224 C,
22225 D).
22226ast_static_atomic_builtin_type_check_var___4__4(B, _, number, _) :-
22227 nb_getval('$chr_store_multi_hash_chr_translate____ast_static_atomic_builtin_type_check_var___4-13',
22228 A),
22229 lookup_ht(A, k(B, dense_int), C),
22230 member(D, C),
22231 D=suspension(_, active, _, _, _, _),
22232 !.
22233ast_static_atomic_builtin_type_check_var___4__4(B, D, dense_int, E) :-
22234 nb_getval('$chr_store_multi_hash_chr_translate____ast_static_atomic_builtin_type_check_var___4-13',
22235 A),
22236 lookup_ht(A, k(B, number), C),
22237 !,
22238 ast_static_atomic_builtin_type_check_var___4__4__0__11(C,
22239 B,
22240 D,
22241 dense_int,
22242 E).
22243ast_static_atomic_builtin_type_check_var___4__4__0__11([], A, B, C, D) :-
22244 ast_static_atomic_builtin_type_check_var___4__6(A,
22245 B,
22246 C,
22247 D).
22248ast_static_atomic_builtin_type_check_var___4__4__0__11([A|G], C, H, I, J) :-
22249 ( A=suspension(_, active, B, _, D, _),
22250 B==C,
22251 D=number
22252 -> ( setarg(2, A, removed),
22253 ( nb_getval('$chr_store_multi_hash_chr_translate____ast_static_atomic_builtin_type_check_var___4-1',
22254 E),
22255 delete_ht(E, C, A)
22256 ),
22257 nb_getval('$chr_store_multi_hash_chr_translate____ast_static_atomic_builtin_type_check_var___4-13',
22258 F),
22259 delete_ht(F, k(C, number), A)
22260 ),
22261 ast_static_atomic_builtin_type_check_var___4__4__0__11(G,
22262 C,
22263 H,
22264 I,
22265 J)
22266 ; ast_static_atomic_builtin_type_check_var___4__4__0__11(G,
22267 C,
22268 H,
22269 I,
22270 J)
22271 ).
22272ast_static_atomic_builtin_type_check_var___4__4(A, B, C, D) :-
22273 ast_static_atomic_builtin_type_check_var___4__5(A,
22274 B,
22275 C,
22276 D).
22277ast_static_atomic_builtin_type_check_var___4__5(B, _, int, _) :-
22278 nb_getval('$chr_store_multi_hash_chr_translate____ast_static_atomic_builtin_type_check_var___4-13',
22279 A),
22280 lookup_ht(A, k(B, natural), C),
22281 member(D, C),
22282 D=suspension(_, active, _, _, _, _),
22283 !.
22284ast_static_atomic_builtin_type_check_var___4__5(B, D, natural, E) :-
22285 nb_getval('$chr_store_multi_hash_chr_translate____ast_static_atomic_builtin_type_check_var___4-13',
22286 A),
22287 lookup_ht(A, k(B, int), C),
22288 !,
22289 ast_static_atomic_builtin_type_check_var___4__5__0__13(C,
22290 B,
22291 D,
22292 natural,
22293 E).
22294ast_static_atomic_builtin_type_check_var___4__5__0__13([], A, B, C, D) :-
22295 ast_static_atomic_builtin_type_check_var___4__7(A,
22296 B,
22297 C,
22298 D).
22299ast_static_atomic_builtin_type_check_var___4__5__0__13([A|G], C, H, I, J) :-
22300 ( A=suspension(_, active, B, _, D, _),
22301 B==C,
22302 D=int
22303 -> ( setarg(2, A, removed),
22304 ( nb_getval('$chr_store_multi_hash_chr_translate____ast_static_atomic_builtin_type_check_var___4-1',
22305 E),
22306 delete_ht(E, C, A)
22307 ),
22308 nb_getval('$chr_store_multi_hash_chr_translate____ast_static_atomic_builtin_type_check_var___4-13',
22309 F),
22310 delete_ht(F, k(C, int), A)
22311 ),
22312 ast_static_atomic_builtin_type_check_var___4__5__0__13(G,
22313 C,
22314 H,
22315 I,
22316 J)
22317 ; ast_static_atomic_builtin_type_check_var___4__5__0__13(G,
22318 C,
22319 H,
22320 I,
22321 J)
22322 ).
22323ast_static_atomic_builtin_type_check_var___4__5(A, B, C, D) :-
22324 ast_static_atomic_builtin_type_check_var___4__6(A,
22325 B,
22326 C,
22327 D).
22328ast_static_atomic_builtin_type_check_var___4__6(B, _, int, _) :-
22329 nb_getval('$chr_store_multi_hash_chr_translate____ast_static_atomic_builtin_type_check_var___4-13',
22330 A),
22331 lookup_ht(A, k(B, dense_int), C),
22332 member(D, C),
22333 D=suspension(_, active, _, _, _, _),
22334 !.
22335ast_static_atomic_builtin_type_check_var___4__6(B, D, dense_int, E) :-
22336 nb_getval('$chr_store_multi_hash_chr_translate____ast_static_atomic_builtin_type_check_var___4-13',
22337 A),
22338 lookup_ht(A, k(B, int), C),
22339 !,
22340 ast_static_atomic_builtin_type_check_var___4__6__0__15(C,
22341 B,
22342 D,
22343 dense_int,
22344 E).
22345ast_static_atomic_builtin_type_check_var___4__6__0__15([], A, B, C, D) :-
22346 ast_static_atomic_builtin_type_check_var___4__7(A,
22347 B,
22348 C,
22349 D).
22350ast_static_atomic_builtin_type_check_var___4__6__0__15([A|G], C, H, I, J) :-
22351 ( A=suspension(_, active, B, _, D, _),
22352 B==C,
22353 D=int
22354 -> ( setarg(2, A, removed),
22355 ( nb_getval('$chr_store_multi_hash_chr_translate____ast_static_atomic_builtin_type_check_var___4-1',
22356 E),
22357 delete_ht(E, C, A)
22358 ),
22359 nb_getval('$chr_store_multi_hash_chr_translate____ast_static_atomic_builtin_type_check_var___4-13',
22360 F),
22361 delete_ht(F, k(C, int), A)
22362 ),
22363 ast_static_atomic_builtin_type_check_var___4__6__0__15(G,
22364 C,
22365 H,
22366 I,
22367 J)
22368 ; ast_static_atomic_builtin_type_check_var___4__6__0__15(G,
22369 C,
22370 H,
22371 I,
22372 J)
22373 ).
22374ast_static_atomic_builtin_type_check_var___4__6(A, B, C, D) :-
22375 ast_static_atomic_builtin_type_check_var___4__7(A,
22376 B,
22377 C,
22378 D).
22379ast_static_atomic_builtin_type_check_var___4__7(B, _, natural, _) :-
22380 nb_getval('$chr_store_multi_hash_chr_translate____ast_static_atomic_builtin_type_check_var___4-13',
22381 A),
22382 lookup_ht(A, k(B, dense_int), C),
22383 member(D, C),
22384 D=suspension(_, active, _, _, _, _),
22385 !.
22386ast_static_atomic_builtin_type_check_var___4__7(B, D, dense_int, E) :-
22387 nb_getval('$chr_store_multi_hash_chr_translate____ast_static_atomic_builtin_type_check_var___4-13',
22388 A),
22389 lookup_ht(A, k(B, natural), C),
22390 !,
22391 ast_static_atomic_builtin_type_check_var___4__7__0__17(C,
22392 B,
22393 D,
22394 dense_int,
22395 E).
22396ast_static_atomic_builtin_type_check_var___4__7__0__17([], A, B, C, D) :-
22397 ast_static_atomic_builtin_type_check_var___4__8(A,
22398 B,
22399 C,
22400 D).
22401ast_static_atomic_builtin_type_check_var___4__7__0__17([A|G], C, H, I, J) :-
22402 ( A=suspension(_, active, B, _, D, _),
22403 B==C,
22404 D=natural
22405 -> ( setarg(2, A, removed),
22406 ( nb_getval('$chr_store_multi_hash_chr_translate____ast_static_atomic_builtin_type_check_var___4-1',
22407 E),
22408 delete_ht(E, C, A)
22409 ),
22410 nb_getval('$chr_store_multi_hash_chr_translate____ast_static_atomic_builtin_type_check_var___4-13',
22411 F),
22412 delete_ht(F, k(C, natural), A)
22413 ),
22414 ast_static_atomic_builtin_type_check_var___4__7__0__17(G,
22415 C,
22416 H,
22417 I,
22418 J)
22419 ; ast_static_atomic_builtin_type_check_var___4__7__0__17(G,
22420 C,
22421 H,
22422 I,
22423 J)
22424 ).
22425ast_static_atomic_builtin_type_check_var___4__7(A, B, C, D) :-
22426 ast_static_atomic_builtin_type_check_var___4__8(A,
22427 B,
22428 C,
22429 D).
22430ast_static_atomic_builtin_type_check_var___4__8(B, H, K, I) :-
22431 nb_getval('$chr_store_multi_hash_chr_translate____ast_static_atomic_builtin_type_check_var___4-1',
22432 A),
22433 lookup_ht(A, B, C),
22434 member(D, C),
22435 D=suspension(_, active, _, _, G, J),
22436 !,
22437 setarg(2, D, removed),
22438 nb_getval('$chr_store_multi_hash_chr_translate____ast_static_atomic_builtin_type_check_var___4-1',
22439 E),
22440 delete_ht(E, B, D),
22441 nb_getval('$chr_store_multi_hash_chr_translate____ast_static_atomic_builtin_type_check_var___4-13',
22442 F),
22443 delete_ht(F, k(B, G), D),
22444 throw(type_error(type_clash(H, I, J, K, G))).
22445ast_static_atomic_builtin_type_check_var___4__8(A, B, C, D) :-
22446 G=suspension(E, active, A, B, C, D),
22447 'chr gen_id'(E),
22448 nb_getval('$chr_store_multi_hash_chr_translate____ast_static_atomic_builtin_type_check_var___4-1',
22449 F),
22450 insert_ht(F, A, G),
22451 nb_getval('$chr_store_multi_hash_chr_translate____ast_static_atomic_builtin_type_check_var___4-13',
22452 H),
22453 insert_ht(H, k(A, C), G).
22454dynamic_type_check :-
22455 dynamic_type_check___0__0(_).
22456dynamic_type_check___0__0(A) :-
22457 nb_getval('$chr_store_global_list_chr_translate____type_definition___2',
22458 C),
22459 !,
22460 A=suspension(B, not_stored_yet, t, _),
22461 'chr gen_id'(B),
22462 dynamic_type_check___0__0__0__1(C, A).
22463dynamic_type_check___0__0__0__1([], A) :-
22464 dynamic_type_check___0__1(A).
22465dynamic_type_check___0__0__0__1([A|M], B) :-
22466 ( A=suspension(_, active, _, _, _, H, I),
22467 C=t(235, A, B),
22468 '$novel_production'(A, C),
22469 '$novel_production'(B, C)
22470 -> '$extend_history'(B, C),
22471 ( arg(2, B, D),
22472 setarg(2, B, active),
22473 ( D==not_stored_yet
22474 -> nb_getval('$chr_store_global_ground_chr_translate____dynamic_type_check___0',
22475 E),
22476 F=[B|E],
22477 b_setval('$chr_store_global_ground_chr_translate____dynamic_type_check___0',
22478 F),
22479 ( E=[G|_]
22480 -> setarg(4, G, F)
22481 ; true
22482 )
22483 ; true
22484 )
22485 ),
22486 ( copy_term_nat(H-I, J-K),
22487 maplist(dynamic_type_check_clause(J), K, L),
22488 dynamic_type_check_clauses(L)
22489 ),
22490 ( B=suspension(_, active, _, _)
22491 -> setarg(2, B, inactive),
22492 dynamic_type_check___0__0__0__1(M, B)
22493 ; true
22494 )
22495 ; dynamic_type_check___0__0__0__1(M, B)
22496 ).
22497dynamic_type_check___0__0(A) :-
22498 A=suspension(B, not_stored_yet, t, _),
22499 'chr gen_id'(B),
22500 dynamic_type_check___0__1(A).
22501dynamic_type_check___0__1(B) :-
22502 nb_getval('$chr_store_global_list_chr_translate____type_alias___2', A),
22503 !,
22504 dynamic_type_check___0__1__0__2(A, B).
22505dynamic_type_check___0__1__0__2([], A) :-
22506 dynamic_type_check___0__2(A).
22507dynamic_type_check___0__1__0__2([A|M], B) :-
22508 ( A=suspension(_, active, _, _, _, H, I),
22509 C=t(236, A, B),
22510 '$novel_production'(A, C),
22511 '$novel_production'(B, C)
22512 -> '$extend_history'(B, C),
22513 ( arg(2, B, D),
22514 setarg(2, B, active),
22515 ( D==not_stored_yet
22516 -> nb_getval('$chr_store_global_ground_chr_translate____dynamic_type_check___0',
22517 E),
22518 F=[B|E],
22519 b_setval('$chr_store_global_ground_chr_translate____dynamic_type_check___0',
22520 F),
22521 ( E=[G|_]
22522 -> setarg(4, G, F)
22523 ; true
22524 )
22525 ; true
22526 )
22527 ),
22528 ( copy_term_nat(H-I, J-K),
22529 dynamic_type_check_alias_clause(J, K, L),
22530 dynamic_type_check_clauses([L])
22531 ),
22532 ( B=suspension(_, active, _, _)
22533 -> setarg(2, B, inactive),
22534 dynamic_type_check___0__1__0__2(M, B)
22535 ; true
22536 )
22537 ; dynamic_type_check___0__1__0__2(M, B)
22538 ).
22539dynamic_type_check___0__1(A) :-
22540 dynamic_type_check___0__2(A).
22541dynamic_type_check___0__2(A) :-
22542 ( var(A)
22543 -> true
22544 ; arg(2, A, B),
22545 setarg(2, A, removed),
22546 ( B==not_stored_yet
22547 -> true
22548 ; arg(4, A, C),
22549 ( var(C)
22550 -> nb_getval('$chr_store_global_ground_chr_translate____dynamic_type_check___0',
22551 D),
22552 D=[_|E],
22553 b_setval('$chr_store_global_ground_chr_translate____dynamic_type_check___0',
22554 E),
22555 ( E=[F|_]
22556 -> setarg(4, F, _)
22557 ; true
22558 )
22559 ; C=[_, _|E],
22560 setarg(2, C, E),
22561 ( E=[F|_]
22562 -> setarg(4, F, C)
22563 ; true
22564 )
22565 )
22566 )
22567 ),
22568 findall(('$dynamic_type_check'(G, H):-I),
22569 ( atomic_builtin_type(G, H, I)
22570 ; compound_builtin_type(G, H, I, _)
22571 ),
22572 J),
22573 dynamic_type_check_clauses(J).
22574dynamic_type_check_clauses(G) :-
22575 nb_getval('$chr_store_global_ground_chr_translate____dynamic_type_check_clauses___1',
22576 A),
22577 member(B, A),
22578 B=suspension(_, active, _, H),
22579 !,
22580 setarg(2, B, removed),
22581 arg(3, B, C),
22582 ( var(C)
22583 -> nb_getval('$chr_store_global_ground_chr_translate____dynamic_type_check_clauses___1',
22584 D),
22585 D=[_|E],
22586 b_setval('$chr_store_global_ground_chr_translate____dynamic_type_check_clauses___1',
22587 E),
22588 ( E=[F|_]
22589 -> setarg(3, F, _)
22590 ; true
22591 )
22592 ; C=[_, _|E],
22593 setarg(2, C, E),
22594 ( E=[F|_]
22595 -> setarg(3, F, C)
22596 ; true
22597 )
22598 ),
22599 append(G, H, I),
22600 dynamic_type_check_clauses(I).
22601dynamic_type_check_clauses(A) :-
22602 C=suspension(B, active, _, A),
22603 'chr gen_id'(B),
22604 nb_getval('$chr_store_global_ground_chr_translate____dynamic_type_check_clauses___1',
22605 D),
22606 E=[C|D],
22607 b_setval('$chr_store_global_ground_chr_translate____dynamic_type_check_clauses___1',
22608 E),
22609 ( D=[F|_]
22610 -> setarg(3, F, E)
22611 ; true
22612 ).
22613get_dynamic_type_check_clauses(G) :-
22614 nb_getval('$chr_store_global_ground_chr_translate____dynamic_type_check_clauses___1',
22615 A),
22616 member(B, A),
22617 B=suspension(_, active, _, H),
22618 !,
22619 setarg(2, B, removed),
22620 arg(3, B, C),
22621 ( var(C)
22622 -> nb_getval('$chr_store_global_ground_chr_translate____dynamic_type_check_clauses___1',
22623 D),
22624 D=[_|E],
22625 b_setval('$chr_store_global_ground_chr_translate____dynamic_type_check_clauses___1',
22626 E),
22627 ( E=[F|_]
22628 -> setarg(3, F, _)
22629 ; true
22630 )
22631 ; C=[_, _|E],
22632 setarg(2, C, E),
22633 ( E=[F|_]
22634 -> setarg(3, F, C)
22635 ; true
22636 )
22637 ),
22638 G=H.
22639get_dynamic_type_check_clauses([]).
22640atomic_type(A) :-
22641 atomic_type___1__0(A, _).
22642atomic_type___1__0(A, B) :-
22643 atomic_builtin_type(A, _, _),
22644 !,
22645 ( var(B)
22646 -> true
22647 ; B=suspension(_, _, _, C),
22648 setarg(2, B, removed),
22649 term_variables(C, H),
22650 ( arg(3, B, D),
22651 ( var(D)
22652 -> nb_getval('$chr_store_global_list_chr_translate____atomic_type___1',
22653 E),
22654 E=[_|F],
22655 b_setval('$chr_store_global_list_chr_translate____atomic_type___1',
22656 F),
22657 ( F=[G|_]
22658 -> setarg(3, G, _)
22659 ; true
22660 )
22661 ; D=[_, _|F],
22662 setarg(2, D, F),
22663 ( F=[G|_]
22664 -> setarg(3, G, D)
22665 ; true
22666 )
22667 )
22668 ),
22669 detach_atomic_type___1(H, B)
22670 ),
22671 A\==any.
22672atomic_type___1__0(C, G) :-
22673 nb_getval('$chr_store_global_list_chr_translate____type_definition___2',
22674 A),
22675 member(B, A),
22676 B=suspension(_, active, _, _, _, D, N),
22677 functor(C, E, F),
22678 functor(D, E, F),
22679 !,
22680 ( var(G)
22681 -> true
22682 ; G=suspension(_, _, _, H),
22683 setarg(2, G, removed),
22684 term_variables(H, M),
22685 ( arg(3, G, I),
22686 ( var(I)
22687 -> nb_getval('$chr_store_global_list_chr_translate____atomic_type___1',
22688 J),
22689 J=[_|K],
22690 b_setval('$chr_store_global_list_chr_translate____atomic_type___1',
22691 K),
22692 ( K=[L|_]
22693 -> setarg(3, L, _)
22694 ; true
22695 )
22696 ; I=[_, _|K],
22697 setarg(2, I, K),
22698 ( K=[L|_]
22699 -> setarg(3, L, I)
22700 ; true
22701 )
22702 )
22703 ),
22704 detach_atomic_type___1(M, G)
22705 ),
22706 maplist(atomic, N).
22707atomic_type___1__0(C, G) :-
22708 nb_getval('$chr_store_global_list_chr_translate____type_alias___2', A),
22709 member(B, A),
22710 B=suspension(_, active, _, _, _, D, N),
22711 functor(C, E, F),
22712 functor(D, E, F),
22713 !,
22714 ( var(G)
22715 -> true
22716 ; G=suspension(_, _, _, H),
22717 setarg(2, G, removed),
22718 term_variables(H, M),
22719 ( arg(3, G, I),
22720 ( var(I)
22721 -> nb_getval('$chr_store_global_list_chr_translate____atomic_type___1',
22722 J),
22723 J=[_|K],
22724 b_setval('$chr_store_global_list_chr_translate____atomic_type___1',
22725 K),
22726 ( K=[L|_]
22727 -> setarg(3, L, _)
22728 ; true
22729 )
22730 ; I=[_, _|K],
22731 setarg(2, I, K),
22732 ( K=[L|_]
22733 -> setarg(3, L, I)
22734 ; true
22735 )
22736 )
22737 ),
22738 detach_atomic_type___1(M, G)
22739 ),
22740 atomic(N),
22741 copy_term_nat(D-N, C-O),
22742 atomic_type(O).
22743atomic_type___1__0(B, A) :-
22744 ( var(A)
22745 -> ( A=suspension(C, active, _, B),
22746 term_variables(B, G),
22747 'chr gen_id'(C)
22748 ),
22749 ( nb_getval('$chr_store_global_list_chr_translate____atomic_type___1',
22750 D),
22751 E=[A|D],
22752 b_setval('$chr_store_global_list_chr_translate____atomic_type___1',
22753 E),
22754 ( D=[F|_]
22755 -> setarg(3, F, E)
22756 ; true
22757 )
22758 ),
22759 attach_atomic_type___1(G, A)
22760 ; setarg(2, A, active)
22761 ).
22762enumerated_atomic_type(A, _) :-
22763 atomic_builtin_type(A, _, _),
22764 !,
22765 fail.
22766enumerated_atomic_type(C, H) :-
22767 nb_getval('$chr_store_global_list_chr_translate____type_definition___2',
22768 A),
22769 member(B, A),
22770 B=suspension(_, active, _, _, _, D, G),
22771 functor(C, E, F),
22772 functor(D, E, F),
22773 !,
22774 maplist(atomic, G),
22775 H=G.
22776enumerated_atomic_type(C, I) :-
22777 nb_getval('$chr_store_global_list_chr_translate____type_alias___2', A),
22778 member(B, A),
22779 B=suspension(_, active, _, _, _, D, G),
22780 functor(C, E, F),
22781 functor(D, E, F),
22782 !,
22783 atomic(G),
22784 copy_term_nat(D-G, C-H),
22785 enumerated_atomic_type(H, I).
22786enumerated_atomic_type(_, _) :-
22787 fail.
22788stored(B, C, yes) :-
22789 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-12',
22790 A),
22791 lookup_ht(A, k(B, C), D),
22792 member(E, D),
22793 E=suspension(_, active, _, _, _, _, G, H, _),
22794 nb_getval('$chr_store_multi_hash_chr_translate____passive___2-12', F),
22795 lookup_ht(F, k(G, H), I),
22796 member(J, I),
22797 J=suspension(_, active, _, _, _),
22798 nb_getval('$chr_store_multi_hash_chr_translate____stored_complete___3-1',
22799 K),
22800 lookup_ht(K, B, L),
22801 member(M, L),
22802 M=suspension(_, active, _, _, N, P),
22803 C<N,
22804 !,
22805 setarg(2, M, removed),
22806 nb_getval('$chr_store_multi_hash_chr_translate____stored_complete___3-13',
22807 O),
22808 delete_ht(O, k(B, P), M),
22809 nb_getval('$chr_store_multi_hash_chr_translate____stored_complete___3-1',
22810 Q),
22811 delete_ht(Q, B, M),
22812 R is P-1,
22813 stored(B, C, maybe),
22814 stored_complete(B, N, R).
22815stored(B, E, yes) :-
22816 nb_getval('$chr_store_multi_hash_chr_translate____stored_complete___3-1',
22817 A),
22818 lookup_ht(A, B, C),
22819 member(D, C),
22820 D=suspension(_, active, _, _, F, K),
22821 E<F,
22822 nb_getval('$chr_store_multi_hash_chr_translate____ai_not_observed___2-12',
22823 G),
22824 lookup_ht(G, k(B, E), H),
22825 member(I, H),
22826 I=suspension(_, active, _, _),
22827 !,
22828 setarg(2, D, removed),
22829 nb_getval('$chr_store_multi_hash_chr_translate____stored_complete___3-13',
22830 J),
22831 delete_ht(J, k(B, K), D),
22832 nb_getval('$chr_store_multi_hash_chr_translate____stored_complete___3-1',
22833 L),
22834 delete_ht(L, B, D),
22835 M is K-1,
22836 stored(B, E, maybe),
22837 stored_complete(B, F, M).
22838stored(A, B, C) :-
22839 F=suspension(D, active, A, B, C),
22840 'chr gen_id'(D),
22841 nb_getval('$chr_store_multi_hash_chr_translate____stored___3-13', E),
22842 insert_ht(E, k(A, C), F),
22843 nb_getval('$chr_store_multi_hash_chr_translate____stored___3-123', G),
22844 insert_ht(G, k(A, B, C), F).
22845stored_completing(A, B, F) :-
22846 ( ground(A),
22847 ground(B),
22848 nb_getval('$chr_store_multi_hash_chr_translate____stored___3-123', C)
22849 ),
22850 ( ( lookup_ht(C, k(A, B, yes), D),
22851 member(E, D),
22852 E=suspension(_, active, _, _, _),
22853 !,
22854 G is B+1,
22855 H is F+1,
22856 stored_completing(A, G, H)
22857 ; lookup_ht(C, k(A, B, maybe), I),
22858 member(J, I),
22859 J=suspension(_, active, _, _, _),
22860 !,
22861 K is B+1,
22862 stored_completing(A, K, F)
22863 )
22864 ; lookup_ht(C, k(A, B, no), L),
22865 member(M, L),
22866 M=suspension(_, active, _, _, _),
22867 !,
22868 stored_complete(A, B, F)
22869 ).
22870stored_completing(A, B, C) :-
22871 stored_complete(A, B, C).
22872stored_complete(A, B, C) :-
22873 stored_complete___3__0(A, B, C, _).
22874stored_complete___3__0(B, F, Q, _) :-
22875 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-1', A),
22876 lookup_ht(A, B, C),
22877 member(D, C),
22878 D=suspension(_, active, _, _, _, E, H, I, _),
22879 E<F,
22880 nb_getval('$chr_store_multi_hash_chr_translate____passive___2-12', G),
22881 lookup_ht(G, k(H, I), J),
22882 member(K, J),
22883 K=suspension(_, active, _, _, _),
22884 nb_getval('$chr_store_multi_hash_chr_translate____stored___3-123', L),
22885 lookup_ht(L, k(B, E, yes), M),
22886 member(N, M),
22887 N=suspension(_, active, _, _, _),
22888 !,
22889 setarg(2, N, removed),
22890 nb_getval('$chr_store_multi_hash_chr_translate____stored___3-13', O),
22891 delete_ht(O, k(B, yes), N),
22892 nb_getval('$chr_store_multi_hash_chr_translate____stored___3-123', P),
22893 delete_ht(P, k(B, E, yes), N),
22894 R is Q-1,
22895 stored(B, E, maybe),
22896 stored_complete(B, F, R).
22897stored_complete___3__0(B, F, L, _) :-
22898 nb_getval('$chr_store_multi_hash_chr_translate____stored___3-13', A),
22899 lookup_ht(A, k(B, yes), C),
22900 member(D, C),
22901 D=suspension(_, active, _, E, _),
22902 E<F,
22903 nb_getval('$chr_store_multi_hash_chr_translate____ai_not_observed___2-12',
22904 G),
22905 lookup_ht(G, k(B, E), H),
22906 member(I, H),
22907 I=suspension(_, active, _, _),
22908 !,
22909 setarg(2, D, removed),
22910 nb_getval('$chr_store_multi_hash_chr_translate____stored___3-13', J),
22911 delete_ht(J, k(B, yes), D),
22912 nb_getval('$chr_store_multi_hash_chr_translate____stored___3-123', K),
22913 delete_ht(K, k(B, E, yes), D),
22914 M is L-1,
22915 stored(B, E, maybe),
22916 stored_complete(B, F, M).
22917stored_complete___3__0(B, D, 0, C) :-
22918 nb_getval('$chr_store_multi_hash_chr_translate____max_occurrence___2-1',
22919 A),
22920 lookup_ht(A, B, F),
22921 !,
22922 C=suspension(E, not_stored_yet, t, B, D, 0),
22923 'chr gen_id'(E),
22924 stored_complete___3__0__0__3(F, B, D, 0, C).
22925stored_complete___3__0__0__3([], A, B, C, D) :-
22926 stored_complete___3__1(A, B, C, D).
22927stored_complete___3__0__0__3([A|G], C, H, I, J) :-
22928 ( ( A=suspension(_, active, _, B, F),
22929 B==C
22930 ),
22931 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-1',
22932 D),
22933 lookup_ht(D, C, E)
22934 -> stored_complete___3__0__1__3(E,
22935 F,
22936 A,
22937 G,
22938 C,
22939 H,
22940 I,
22941 J)
22942 ; stored_complete___3__0__0__3(G, C, H, I, J)
22943 ).
22944stored_complete___3__0__1__3([], _, _, A, B, C, D, E) :-
22945 stored_complete___3__0__0__3(A, B, C, D, E).
22946stored_complete___3__0__1__3([A|G], H, I, J, C, K, L, M) :-
22947 ( ( A=suspension(_, active, _, _, B, _, E, _, _),
22948 B==C
22949 ),
22950 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-3',
22951 D),
22952 lookup_ht(D, E, F)
22953 -> stored_complete___3__0__2__3(F,
22954 E,
22955 A,
22956 G,
22957 H,
22958 I,
22959 J,
22960 C,
22961 K,
22962 L,
22963 M)
22964 ; stored_complete___3__0__1__3(G,
22965 H,
22966 I,
22967 J,
22968 C,
22969 K,
22970 L,
22971 M)
22972 ).
22973stored_complete___3__0__2__3([], _, _, A, B, C, D, E, F, G, H) :-
22974 stored_complete___3__0__1__3(A,
22975 B,
22976 C,
22977 D,
22978 E,
22979 F,
22980 G,
22981 H).
22982stored_complete___3__0__2__3([A|P], D, B, Q, I, F, R, L, H, M, E) :-
22983 ( A=suspension(_, active, _, _, _, _, C, O, _),
22984 A\==B,
22985 C==D,
22986 ( G=t(250, A, B, E, F),
22987 '$novel_production'(A, G),
22988 '$novel_production'(B, G),
22989 '$novel_production'(E, G),
22990 '$novel_production'(F, G)
22991 ),
22992 H=<I
22993 -> '$extend_history'(E, G),
22994 ( arg(2, E, J),
22995 setarg(2, E, active),
22996 ( J==not_stored_yet
22997 -> ( nb_getval('$chr_store_multi_hash_chr_translate____stored_complete___3-13',
22998 K),
22999 insert_ht(K, k(L, M), E)
23000 ),
23001 nb_getval('$chr_store_multi_hash_chr_translate____stored_complete___3-1',
23002 N),
23003 insert_ht(N, L, E)
23004 ; true
23005 )
23006 ),
23007 passive(D, O),
23008 ( E=suspension(_, active, _, _, _, _)
23009 -> setarg(2, E, inactive),
23010 stored_complete___3__0__2__3(P,
23011 D,
23012 B,
23013 Q,
23014 I,
23015 F,
23016 R,
23017 L,
23018 H,
23019 M,
23020 E)
23021 ; true
23022 )
23023 ; stored_complete___3__0__2__3(P,
23024 D,
23025 B,
23026 Q,
23027 I,
23028 F,
23029 R,
23030 L,
23031 H,
23032 M,
23033 E)
23034 ).
23035stored_complete___3__0(B, C, D, A) :-
23036 A=suspension(E, not_stored_yet, t, B, C, D),
23037 'chr gen_id'(E),
23038 stored_complete___3__1(B, C, D, A).
23039stored_complete___3__1(B, D, E, F) :-
23040 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-1', A),
23041 lookup_ht(A, B, C),
23042 !,
23043 stored_complete___3__1__0__4(C, B, D, E, F).
23044stored_complete___3__1__0__4([], A, B, C, D) :-
23045 stored_complete___3__2(A, B, C, D).
23046stored_complete___3__1__0__4([A|N], C, G, J, D) :-
23047 ( A=suspension(_, active, _, _, B, F, L, M, _),
23048 B==C,
23049 ( E=t(259, D, A),
23050 '$novel_production'(D, E),
23051 '$novel_production'(A, E)
23052 ),
23053 F>G
23054 -> '$extend_history'(D, E),
23055 ( arg(2, D, H),
23056 setarg(2, D, active),
23057 ( H==not_stored_yet
23058 -> ( nb_getval('$chr_store_multi_hash_chr_translate____stored_complete___3-13',
23059 I),
23060 insert_ht(I, k(C, J), D)
23061 ),
23062 nb_getval('$chr_store_multi_hash_chr_translate____stored_complete___3-1',
23063 K),
23064 insert_ht(K, C, D)
23065 ; true
23066 )
23067 ),
23068 passive(L, M),
23069 ( D=suspension(_, active, _, _, _, _)
23070 -> setarg(2, D, inactive),
23071 stored_complete___3__1__0__4(N,
23072 C,
23073 G,
23074 J,
23075 D)
23076 ; true
23077 )
23078 ; stored_complete___3__1__0__4(N, C, G, J, D)
23079 ).
23080stored_complete___3__1(A, B, C, D) :-
23081 stored_complete___3__2(A, B, C, D).
23082stored_complete___3__2(D, _, E, A) :-
23083 arg(2, A, B),
23084 setarg(2, A, active),
23085 ( B==not_stored_yet
23086 -> ( nb_getval('$chr_store_multi_hash_chr_translate____stored_complete___3-13',
23087 C),
23088 insert_ht(C, k(D, E), A)
23089 ),
23090 nb_getval('$chr_store_multi_hash_chr_translate____stored_complete___3-1',
23091 F),
23092 insert_ht(F, D, A)
23093 ; true
23094 ).
23095is_stored(A) :-
23096 ground(A),
23097 nb_getval('$chr_store_multi_hash_chr_translate____max_occurrence___2-1',
23098 B),
23099 lookup_ht(B, A, C),
23100 member(D, C),
23101 D=suspension(_, active, _, _, I),
23102 nb_getval('$chr_store_multi_hash_chr_translate____stored_complete___3-13',
23103 E),
23104 lookup_ht(E, k(A, 0), F),
23105 member(G, F),
23106 G=suspension(_, active, _, _, H, _),
23107 H=<I,
23108 !,
23109 fail.
23110is_stored(_).
23111is_finally_stored(A) :-
23112 ground(A),
23113 nb_getval('$chr_store_multi_hash_chr_translate____max_occurrence___2-1',
23114 B),
23115 lookup_ht(B, A, C),
23116 member(D, C),
23117 D=suspension(_, active, _, _, I),
23118 nb_getval('$chr_store_multi_hash_chr_translate____stored_complete___3-1',
23119 E),
23120 lookup_ht(E, A, F),
23121 member(G, F),
23122 G=suspension(_, active, _, _, H, _),
23123 H=<I,
23124 !,
23125 fail.
23126is_finally_stored(_).
23127check_all_passive(B, [C|F]) :-
23128 nb_getval('$chr_store_multi_hash_chr_translate____passive___2-12', A),
23129 lookup_ht(A, k(B, C), D),
23130 member(E, D),
23131 E=suspension(_, active, _, _, _),
23132 !,
23133 check_all_passive(B, F).
23134check_all_passive(B, []) :-
23135 nb_getval('$chr_store_multi_hash_chr_translate____rule___2-1', A),
23136 lookup_ht(A, B, C),
23137 member(D, C),
23138 D=suspension(_, active, _, _, _, E),
23139 !,
23140 chr_warning(weird_program,
23141 'All heads passive in ~@.\n\tThis rule never fires. Please check your program.\n',
23142 [format_rule(E)]).
23143check_all_passive(A, B) :-
23144 E=suspension(C, active, A, B),
23145 'chr gen_id'(C),
23146 nb_getval('$chr_store_multi_hash_chr_translate____check_all_passive___2-12',
23147 D),
23148 insert_ht(D, k(A, B), E),
23149 nb_getval('$chr_store_multi_hash_chr_translate____check_all_passive___2-1',
23150 F),
23151 insert_ht(F, A, E).
23152constraints_code1([], A, B) :-
23153 !,
23154 A=B.
23155constraints_code1([A|C], B, E) :-
23156 !,
23157 constraint_code(A, B, D),
23158 constraints_code1(C, D, E).
23159constraints_code1(A, B, C) :-
23160 E=suspension(D, active, _, A, B, C),
23161 'chr gen_id'(D),
23162 nb_getval('$chr_store_global_ground_chr_translate____constraints_code1___3',
23163 F),
23164 G=[E|F],
23165 b_setval('$chr_store_global_ground_chr_translate____constraints_code1___3',
23166 G),
23167 ( F=[H|_]
23168 -> setarg(3, H, G)
23169 ; true
23170 ).
23171constraint_code(A, E, K) :-
23172 ( ( chr_pp_flag(debugable, on)
23173 ; is_stored(A),
23174 ( has_active_occurrence(A)
23175 ; chr_pp_flag(late_allocation, off)
23176 ),
23177 ( may_trigger(A)
23178 ; get_allocation_occurrence(A, C),
23179 get_max_occurrence(A, B),
23180 B>=C
23181 )
23182 )
23183 -> constraint_prelude(A, D),
23184 add_dummy_location(D, F),
23185 E=[F|G]
23186 ; E=G
23187 ),
23188 H=[0],
23189 occurrences_code(A, 1, H, I, G, J),
23190 gen_cond_attach_clause(A, I, J, K).
23191has_active_occurrence(B) :-
23192 nb_getval('$chr_store_multi_hash_chr_translate____memo_has_active_occurrence___1-1',
23193 A),
23194 lookup_ht(A, B, C),
23195 member(D, C),
23196 D=suspension(_, active, _),
23197 !.
23198has_active_occurrence(A) :-
23199 has_active_occurrence(A, 1),
23200 memo_has_active_occurrence(A).
23201has_active_occurrence(B, E) :-
23202 nb_getval('$chr_store_multi_hash_chr_translate____max_occurrence___2-1',
23203 A),
23204 lookup_ht(A, B, C),
23205 member(D, C),
23206 D=suspension(_, active, _, _, F),
23207 E>F,
23208 !,
23209 fail.
23210has_active_occurrence(B, C) :-
23211 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-12',
23212 A),
23213 lookup_ht(A, k(B, C), D),
23214 member(E, D),
23215 E=suspension(_, active, _, _, _, _, G, H, _),
23216 nb_getval('$chr_store_multi_hash_chr_translate____passive___2-12', F),
23217 lookup_ht(F, k(G, H), I),
23218 member(J, I),
23219 J=suspension(_, active, _, _, _),
23220 !,
23221 K is C+1,
23222 has_active_occurrence(B, K).
23223has_active_occurrence(_, _).
23224memo_has_active_occurrence(A) :-
23225 D=suspension(B, active, A),
23226 'chr gen_id'(B),
23227 nb_getval('$chr_store_multi_hash_chr_translate____memo_has_active_occurrence___1-1',
23228 C),
23229 insert_ht(C, A, D).
23230use_auxiliary_predicate(B) :-
23231 nb_getval('$chr_store_multi_hash_chr_translate____use_auxiliary_predicate___1-1',
23232 A),
23233 lookup_ht(A, B, C),
23234 member(D, C),
23235 D=suspension(_, active, _),
23236 !.
23237use_auxiliary_predicate(A) :-
23238 D=suspension(B, active, A),
23239 'chr gen_id'(B),
23240 nb_getval('$chr_store_multi_hash_chr_translate____use_auxiliary_predicate___1-1',
23241 C),
23242 insert_ht(C, A, D).
23243use_auxiliary_predicate(B, C) :-
23244 nb_getval('$chr_store_multi_hash_chr_translate____use_auxiliary_predicate___2-12',
23245 A),
23246 lookup_ht(A, k(B, C), D),
23247 member(E, D),
23248 E=suspension(_, active, _, _),
23249 !.
23250use_auxiliary_predicate(A, B) :-
23251 E=suspension(C, active, A, B),
23252 'chr gen_id'(C),
23253 nb_getval('$chr_store_multi_hash_chr_translate____use_auxiliary_predicate___2-1',
23254 D),
23255 insert_ht(D, A, E),
23256 nb_getval('$chr_store_multi_hash_chr_translate____use_auxiliary_predicate___2-12',
23257 F),
23258 insert_ht(F, k(A, B), E).
23259is_used_auxiliary_predicate(B) :-
23260 nb_getval('$chr_store_multi_hash_chr_translate____use_auxiliary_predicate___1-1',
23261 A),
23262 lookup_ht(A, B, C),
23263 member(D, C),
23264 D=suspension(_, active, _),
23265 !.
23266is_used_auxiliary_predicate(B) :-
23267 nb_getval('$chr_store_multi_hash_chr_translate____use_auxiliary_predicate___2-1',
23268 A),
23269 lookup_ht(A, B, C),
23270 member(D, C),
23271 D=suspension(_, active, _, _),
23272 !.
23273is_used_auxiliary_predicate(_) :-
23274 fail.
23275is_used_auxiliary_predicate(B, _) :-
23276 nb_getval('$chr_store_multi_hash_chr_translate____use_auxiliary_predicate___1-1',
23277 A),
23278 lookup_ht(A, B, C),
23279 member(D, C),
23280 D=suspension(_, active, _),
23281 !.
23282is_used_auxiliary_predicate(B, C) :-
23283 nb_getval('$chr_store_multi_hash_chr_translate____use_auxiliary_predicate___2-12',
23284 A),
23285 lookup_ht(A, k(B, C), D),
23286 member(E, D),
23287 E=suspension(_, active, _, _),
23288 !.
23289is_used_auxiliary_predicate(_, _) :-
23290 fail.
23291use_auxiliary_module(B) :-
23292 nb_getval('$chr_store_multi_hash_chr_translate____use_auxiliary_module___1-1',
23293 A),
23294 lookup_ht(A, B, C),
23295 member(D, C),
23296 D=suspension(_, active, _),
23297 !.
23298use_auxiliary_module(A) :-
23299 D=suspension(B, active, A),
23300 'chr gen_id'(B),
23301 nb_getval('$chr_store_multi_hash_chr_translate____use_auxiliary_module___1-1',
23302 C),
23303 insert_ht(C, A, D).
23304is_used_auxiliary_module(B) :-
23305 nb_getval('$chr_store_multi_hash_chr_translate____use_auxiliary_module___1-1',
23306 A),
23307 lookup_ht(A, B, C),
23308 member(D, C),
23309 D=suspension(_, active, _),
23310 !.
23311is_used_auxiliary_module(_) :-
23312 fail.
23313occurrences_code(B, E, H, G, I, J) :-
23314 nb_getval('$chr_store_multi_hash_chr_translate____max_occurrence___2-1',
23315 A),
23316 lookup_ht(A, B, C),
23317 member(D, C),
23318 D=suspension(_, active, _, _, F),
23319 E>F,
23320 !,
23321 G=H,
23322 I=J.
23323occurrences_code(A, B, C, G, D, I) :-
23324 occurrence_code(A, B, C, F, D, H),
23325 E is B+1,
23326 occurrences_code(A, E, F, G, H, I).
23327occurrence_code(B, C, L, K, M, N) :-
23328 ( nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-12',
23329 A),
23330 lookup_ht(A, k(B, C), D),
23331 member(E, D),
23332 E=suspension(_, active, _, _, _, _, G, H, _)
23333 ),
23334 ( nb_getval('$chr_store_multi_hash_chr_translate____passive___2-12',
23335 F),
23336 lookup_ht(F, k(G, H), I),
23337 member(J, I),
23338 J=suspension(_, active, _, _, _),
23339 !,
23340 ( named_history(G, _, _)
23341 -> does_use_history(B, C)
23342 ; true
23343 ),
23344 K=L,
23345 M=N
23346 ; nb_getval('$chr_store_multi_hash_chr_translate____rule___2-1', O),
23347 lookup_ht(O, G, P),
23348 member(Q, P),
23349 Q=suspension(_, active, _, _, _, R),
23350 !,
23351 R=pragma(rule(T, Y, _, _), ids(S, X), _, _, _),
23352 ( select2(H, U, S, T, W, V)
23353 -> K=L,
23354 head1_code(U,
23355 H,
23356 V,
23357 W,
23358 R,
23359 B,
23360 C,
23361 L,
23362 M,
23363 N)
23364 ; select2(H, Z, X, Y, B1, A1)
23365 -> head2_code(Z,
23366 H,
23367 A1,
23368 B1,
23369 R,
23370 B,
23371 C,
23372 L,
23373 M,
23374 C1),
23375 ( should_skip_to_next_id(B, C)
23376 -> inc_id(L, K),
23377 ( unconditional_occurrence(B, C)
23378 -> C1=N
23379 ; gen_alloc_inc_clause(B,
23380 C,
23381 L,
23382 C1,
23383 N)
23384 )
23385 ; K=L,
23386 C1=N
23387 )
23388 )
23389 ).
23390occurrence_code(A, B, _, _, _, _) :-
23391 chr_error(internal,
23392 'occurrence_code/6: missing information to compile ~w:~w\n',
23393 [A, B]).
23394functional_dependency(C, A, K, L) :-
23395 A>1,
23396 nb_getval('$chr_store_multi_hash_chr_translate____allocation_occurrence___2-1',
23397 B),
23398 lookup_ht(B, C, D),
23399 member(E, D),
23400 E=suspension(_, active, _, _, I),
23401 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-13',
23402 F),
23403 lookup_ht(F, k(C, A), G),
23404 member(H, G),
23405 H=suspension(_, active, _, _, _, J, _, _, _),
23406 I>J,
23407 !,
23408 functional_dependency(C, 1, K, L).
23409functional_dependency(A, B, C, D) :-
23410 G=suspension(E, active, A, B, C, D),
23411 'chr gen_id'(E),
23412 nb_getval('$chr_store_multi_hash_chr_translate____functional_dependency___4-1',
23413 F),
23414 insert_ht(F, A, G),
23415 nb_getval('$chr_store_multi_hash_chr_translate____functional_dependency___4-12',
23416 H),
23417 insert_ht(H, k(A, B), G).
23418get_functional_dependency(B, E, G, I) :-
23419 nb_getval('$chr_store_multi_hash_chr_translate____functional_dependency___4-1',
23420 A),
23421 lookup_ht(A, B, C),
23422 member(D, C),
23423 D=suspension(_, active, _, F, H, J),
23424 E>=F,
23425 !,
23426 G=H,
23427 I=J.
23428get_functional_dependency(_, _, _, _) :-
23429 fail.
23430initial_call_pattern(A) :-
23431 initial_call_pattern___1__0(A, _).
23432initial_call_pattern___1__0(B, _) :-
23433 nb_getval('$chr_store_multi_hash_chr_translate____initial_call_pattern___1-1',
23434 A),
23435 lookup_ht(A, B, C),
23436 member(D, C),
23437 D=suspension(_, active, _, _),
23438 !.
23439initial_call_pattern___1__0(B, A) :-
23440 A=suspension(C, active, t, B),
23441 'chr gen_id'(C),
23442 nb_getval('$chr_store_multi_hash_chr_translate____initial_call_pattern___1-1',
23443 D),
23444 insert_ht(D, B, A),
23445 call_pattern(B),
23446 ( A=suspension(_, active, _, _)
23447 -> setarg(2, A, inactive),
23448 initial_call_pattern___1__1(B, A)
23449 ; true
23450 ).
23451initial_call_pattern___1__1(B, D) :-
23452 nb_getval('$chr_store_multi_hash_chr_translate____final_answer_pattern___2-1',
23453 A),
23454 lookup_ht(A, B, C),
23455 !,
23456 initial_call_pattern___1__1__0__4(C, B, D).
23457initial_call_pattern___1__1__0__4([], A, B) :-
23458 initial_call_pattern___1__2(A, B).
23459initial_call_pattern___1__1__0__4([A|F], C, G) :-
23460 ( ( A=suspension(_, active, _, B, E),
23461 B==C
23462 ),
23463 nb_getval('$chr_store_global_ground_chr_translate____abstract_constraints___1',
23464 D)
23465 -> initial_call_pattern___1__1__1__4(D,
23466 E,
23467 A,
23468 F,
23469 C,
23470 G)
23471 ; initial_call_pattern___1__1__0__4(F, C, G)
23472 ).
23473initial_call_pattern___1__1__1__4([], _, _, A, B, C) :-
23474 initial_call_pattern___1__1__0__4(A, B, C).
23475initial_call_pattern___1__1__1__4([A|G], F, C, H, I, B) :-
23476 ( A=suspension(_, active, _, E),
23477 D=t(303, B, C, A),
23478 '$novel_production'(B, D),
23479 '$novel_production'(C, D)
23480 -> '$extend_history'(B, D),
23481 setarg(2, B, active),
23482 ai_observation_schedule_new_calls(E, F),
23483 ( B=suspension(_, active, _, _)
23484 -> setarg(2, B, inactive),
23485 initial_call_pattern___1__1__1__4(G,
23486 F,
23487 C,
23488 H,
23489 I,
23490 B)
23491 ; true
23492 )
23493 ; initial_call_pattern___1__1__1__4(G,
23494 F,
23495 C,
23496 H,
23497 I,
23498 B)
23499 ).
23500initial_call_pattern___1__1(A, B) :-
23501 initial_call_pattern___1__2(A, B).
23502initial_call_pattern___1__2(_, A) :-
23503 setarg(2, A, active).
23504call_pattern(A) :-
23505 call_pattern___1__0(A, _).
23506call_pattern___1__0(B, _) :-
23507 nb_getval('$chr_store_multi_hash_chr_translate____call_pattern___1-1',
23508 A),
23509 lookup_ht(A, B, C),
23510 member(D, C),
23511 D=suspension(_, active, _),
23512 !.
23513call_pattern___1__0(B, A) :-
23514 A=suspension(C, active, B),
23515 'chr gen_id'(C),
23516 nb_getval('$chr_store_multi_hash_chr_translate____call_pattern___1-1',
23517 D),
23518 insert_ht(D, B, A),
23519 call_pattern_worker(B),
23520 ( A=suspension(_, active, _)
23521 -> setarg(2, A, inactive),
23522 call_pattern___1__1(B, A)
23523 ; true
23524 ).
23525call_pattern___1__1(_, A) :-
23526 setarg(2, A, active).
23527call_pattern_worker(odom([], A)) :-
23528 !,
23529 final_answer_pattern(odom([], A), odom([], A)).
23530call_pattern_worker(odom([A|C], B)) :-
23531 !,
23532 D=odom(A, B),
23533 depends_on_goal(odom([A|C], B), D),
23534 call_pattern(D).
23535call_pattern_worker(odom((A;B), C)) :-
23536 !,
23537 D=odom((A;B), C),
23538 E=odom([], C),
23539 final_answer_pattern(D, E),
23540 F=odom(A, C),
23541 G=odom(B, C),
23542 call_pattern(F),
23543 call_pattern(G),
23544 depends_on_as(D, F, G).
23545call_pattern_worker(odom(builtin, A)) :-
23546 !,
23547 ord_empty(B),
23548 final_answer_pattern(odom(builtin, A), odom([], B)).
23549call_pattern_worker(odom(occ(B, E), G)) :-
23550 nb_getval('$chr_store_multi_hash_chr_translate____max_occurrence___2-1',
23551 A),
23552 lookup_ht(A, B, C),
23553 member(D, C),
23554 D=suspension(_, active, _, _, F),
23555 E>F,
23556 !,
23557 final_answer_pattern(odom(occ(B, E), G), odom([], G)).
23558call_pattern_worker(odom(A, B)) :-
23559 A=_/_,
23560 !,
23561 C=odom(occ(A, 1), B),
23562 call_pattern(C),
23563 depends_on(odom(A, B), C).
23564call_pattern_worker(odom(occ(B, C), I)) :-
23565 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-12',
23566 A),
23567 lookup_ht(A, k(B, C), D),
23568 member(E, D),
23569 E=suspension(_, active, _, _, _, _, F, G, _),
23570 is_passive(F, G),
23571 !,
23572 H is C+1,
23573 J=odom(occ(B, H), I),
23574 call_pattern(J),
23575 final_answer_pattern(odom(occ(B, C), I), odom([], I)),
23576 depends_on(odom(occ(B, C), I), J).
23577call_pattern_worker(odom(occ(B, C), H)) :-
23578 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-125',
23579 A),
23580 ( lookup_ht(A, k(B, C, simplification), D),
23581 member(E, D),
23582 E=suspension(_, active, _, _, _, _, F, G, _),
23583 \+ is_passive(F, G),
23584 !,
23585 ai_observation_memo_simplification_rest_heads(B, C, I),
23586 ai_observation_observe_set(H, I, K),
23587 ai_observation_memo_abstract_goal(F, J),
23588 call_pattern(odom(J, K)),
23589 L is C+1,
23590 M=odom(occ(B, L), H),
23591 call_pattern(M),
23592 depends_on_as(odom(occ(B, C), H),
23593 odom(J, K),
23594 M),
23595 final_answer_pattern(odom(occ(B, C), H),
23596 odom([], H))
23597 ; lookup_ht(A, k(B, C, propagation), N),
23598 member(O, N),
23599 O=suspension(_, active, _, _, _, _, P, Q, _),
23600 \+ is_passive(P, Q),
23601 !,
23602 ai_observation_memo_propagation_rest_heads(B, C, R),
23603 ai_observation_observe_set(H, R, S),
23604 ord_add_element(S, B, U),
23605 ai_observation_memo_abstract_goal(P, T),
23606 call_pattern(odom(T, U)),
23607 ( ord_memberchk(B, S)
23608 -> V=no
23609 ; V=yes
23610 ),
23611 W is C+1,
23612 X=odom(occ(B, W), H),
23613 call_pattern(X),
23614 depends_on_ap(odom(occ(B, C), H),
23615 odom(T, U),
23616 X,
23617 V)
23618 ).
23619call_pattern_worker(A) :-
23620 chr_error(internal,
23621 'AI observation analysis: unexpected abstract state ~w\n',
23622 [A]).
23623final_answer_pattern(A, B) :-
23624 final_answer_pattern___2__0(A, B, _).
23625final_answer_pattern___2__0(B, E, G) :-
23626 ( nb_getval('$chr_store_multi_hash_chr_translate____final_answer_pattern___2-1',
23627 A),
23628 lookup_ht(A, B, C)
23629 ),
23630 ( member(D, C),
23631 D=suspension(_, active, _, _, F),
23632 ai_observation_leq(E, F),
23633 !
23634 ; !,
23635 final_answer_pattern___2__0__0__2(C, B, E, G)
23636 ).
23637final_answer_pattern___2__0__0__2([], A, B, C) :-
23638 final_answer_pattern___2__1(A, B, C).
23639final_answer_pattern___2__0__0__2([A|G], C, E, H) :-
23640 ( ( A=suspension(_, active, _, B, D),
23641 B==C
23642 ),
23643 ai_observation_leq(D, E)
23644 -> ( setarg(2, A, removed),
23645 nb_getval('$chr_store_multi_hash_chr_translate____final_answer_pattern___2-1',
23646 F),
23647 delete_ht(F, C, A)
23648 ),
23649 final_answer_pattern___2__0__0__2(G, C, E, H)
23650 ; final_answer_pattern___2__0__0__2(G, C, E, H)
23651 ).
23652final_answer_pattern___2__0(A, B, C) :-
23653 final_answer_pattern___2__1(A, B, C).
23654final_answer_pattern___2__1(B, D, C) :-
23655 nb_getval('$chr_store_multi_hash_chr_translate____initial_call_pattern___1-1',
23656 A),
23657 lookup_ht(A, B, F),
23658 !,
23659 C=suspension(E, not_stored_yet, t, B, D),
23660 'chr gen_id'(E),
23661 final_answer_pattern___2__1__0__3(F, B, D, C).
23662final_answer_pattern___2__1__0__3([], A, B, C) :-
23663 final_answer_pattern___2__2(A, B, C).
23664final_answer_pattern___2__1__0__3([A|E], C, F, G) :-
23665 ( ( A=suspension(_, active, _, B),
23666 B==C
23667 ),
23668 nb_getval('$chr_store_global_ground_chr_translate____abstract_constraints___1',
23669 D)
23670 -> final_answer_pattern___2__1__1__3(D,
23671 A,
23672 E,
23673 C,
23674 F,
23675 G)
23676 ; final_answer_pattern___2__1__0__3(E, C, F, G)
23677 ).
23678final_answer_pattern___2__1__1__3([], _, A, B, C, D) :-
23679 final_answer_pattern___2__1__0__3(A, B, C, D).
23680final_answer_pattern___2__1__1__3([A|J], B, K, G, I, C) :-
23681 ( A=suspension(_, active, _, H),
23682 D=t(303, B, C, A),
23683 '$novel_production'(B, D),
23684 '$novel_production'(C, D)
23685 -> '$extend_history'(C, D),
23686 ( arg(2, C, E),
23687 setarg(2, C, active),
23688 ( E==not_stored_yet
23689 -> nb_getval('$chr_store_multi_hash_chr_translate____final_answer_pattern___2-1',
23690 F),
23691 insert_ht(F, G, C)
23692 ; true
23693 )
23694 ),
23695 ai_observation_schedule_new_calls(H, I),
23696 ( C=suspension(_, active, _, _, _)
23697 -> setarg(2, C, inactive),
23698 final_answer_pattern___2__1__1__3(J,
23699 B,
23700 K,
23701 G,
23702 I,
23703 C)
23704 ; true
23705 )
23706 ; final_answer_pattern___2__1__1__3(J,
23707 B,
23708 K,
23709 G,
23710 I,
23711 C)
23712 ).
23713final_answer_pattern___2__1(B, C, A) :-
23714 A=suspension(D, not_stored_yet, t, B, C),
23715 'chr gen_id'(D),
23716 final_answer_pattern___2__2(B, C, A).
23717final_answer_pattern___2__2(B, D, E) :-
23718 nb_getval('$chr_store_multi_hash_chr_translate____depends_on___2-2', A),
23719 lookup_ht(A, B, C),
23720 !,
23721 final_answer_pattern___2__2__0__4(C, B, D, E).
23722final_answer_pattern___2__2__0__4([], A, B, C) :-
23723 final_answer_pattern___2__3(A, B, C).
23724final_answer_pattern___2__2__0__4([A|J], C, I, D) :-
23725 ( A=suspension(_, active, _, H, B),
23726 B==C,
23727 E=t(305, A, D),
23728 '$novel_production'(A, E),
23729 '$novel_production'(D, E)
23730 -> '$extend_history'(D, E),
23731 ( arg(2, D, F),
23732 setarg(2, D, active),
23733 ( F==not_stored_yet
23734 -> nb_getval('$chr_store_multi_hash_chr_translate____final_answer_pattern___2-1',
23735 G),
23736 insert_ht(G, C, D)
23737 ; true
23738 )
23739 ),
23740 final_answer_pattern(H, I),
23741 ( D=suspension(_, active, _, _, _)
23742 -> setarg(2, D, inactive),
23743 final_answer_pattern___2__2__0__4(J, C, I, D)
23744 ; true
23745 )
23746 ; final_answer_pattern___2__2__0__4(J, C, I, D)
23747 ).
23748final_answer_pattern___2__2(A, B, C) :-
23749 final_answer_pattern___2__3(A, B, C).
23750final_answer_pattern___2__3(B, D, E) :-
23751 nb_getval('$chr_store_multi_hash_chr_translate____depends_on_goal___2-2',
23752 A),
23753 lookup_ht(A, B, C),
23754 !,
23755 final_answer_pattern___2__3__0__5(C, B, D, E).
23756final_answer_pattern___2__3__0__5([], A, B, C) :-
23757 final_answer_pattern___2__4(A, B, C).
23758final_answer_pattern___2__3__0__5([A|G], C, H, I) :-
23759 ( ( A=suspension(_, active, _, E, B),
23760 B==C
23761 ),
23762 nb_getval('$chr_store_multi_hash_chr_translate____depends_on___2-1',
23763 D),
23764 lookup_ht(D, E, F)
23765 -> final_answer_pattern___2__3__1__5(F,
23766 E,
23767 A,
23768 G,
23769 C,
23770 H,
23771 I)
23772 ; final_answer_pattern___2__3__0__5(G, C, H, I)
23773 ).
23774final_answer_pattern___2__3__1__5([], _, _, A, B, C, D) :-
23775 final_answer_pattern___2__3__0__5(A, B, C, D).
23776final_answer_pattern___2__3__1__5([A|G], C, H, I, J, K, L) :-
23777 ( A=suspension(_, active, _, B, F),
23778 B==C
23779 -> ( setarg(2, A, removed),
23780 ( nb_getval('$chr_store_multi_hash_chr_translate____depends_on___2-1',
23781 D),
23782 delete_ht(D, C, A)
23783 ),
23784 nb_getval('$chr_store_multi_hash_chr_translate____depends_on___2-2',
23785 E),
23786 delete_ht(E, F, A)
23787 ),
23788 final_answer_pattern___2__3__1__5(G,
23789 C,
23790 H,
23791 I,
23792 J,
23793 K,
23794 L)
23795 ; final_answer_pattern___2__3__1__5(G,
23796 C,
23797 H,
23798 I,
23799 J,
23800 K,
23801 L)
23802 ).
23803final_answer_pattern___2__3(A, B, C) :-
23804 final_answer_pattern___2__4(A, B, C).
23805final_answer_pattern___2__4(B, D, E) :-
23806 nb_getval('$chr_store_multi_hash_chr_translate____depends_on_goal___2-2',
23807 A),
23808 lookup_ht(A, B, C),
23809 !,
23810 final_answer_pattern___2__4__0__6(C, B, D, E).
23811final_answer_pattern___2__4__0__6([], A, B, C) :-
23812 final_answer_pattern___2__5(A, B, C).
23813final_answer_pattern___2__4__0__6([A|M], C, I, D) :-
23814 ( A=suspension(_, active, _, H, B),
23815 B==C,
23816 E=t(310, A, D),
23817 '$novel_production'(A, E),
23818 '$novel_production'(D, E)
23819 -> '$extend_history'(D, E),
23820 ( arg(2, D, F),
23821 setarg(2, D, active),
23822 ( F==not_stored_yet
23823 -> nb_getval('$chr_store_multi_hash_chr_translate____final_answer_pattern___2-1',
23824 G),
23825 insert_ht(G, C, D)
23826 ; true
23827 )
23828 ),
23829 ( H=odom([_|J], _),
23830 I=odom([], K),
23831 L=odom(J, K),
23832 call_pattern(L),
23833 depends_on(H, L)
23834 ),
23835 ( D=suspension(_, active, _, _, _)
23836 -> setarg(2, D, inactive),
23837 final_answer_pattern___2__4__0__6(M,
23838 C,
23839 I,
23840 D)
23841 ; true
23842 )
23843 ; final_answer_pattern___2__4__0__6(M, C, I, D)
23844 ).
23845final_answer_pattern___2__4(A, B, C) :-
23846 final_answer_pattern___2__5(A, B, C).
23847final_answer_pattern___2__5(B, D, E) :-
23848 nb_getval('$chr_store_multi_hash_chr_translate____depends_on_as___3-2',
23849 A),
23850 lookup_ht(A, B, C),
23851 !,
23852 final_answer_pattern___2__5__0__7(C, B, D, E).
23853final_answer_pattern___2__5__0__7([], A, B, C) :-
23854 final_answer_pattern___2__6(A, B, C).
23855final_answer_pattern___2__5__0__7([A|H], C, I, J) :-
23856 ( ( A=suspension(_, active, _, G, B, E),
23857 B==C
23858 ),
23859 nb_getval('$chr_store_multi_hash_chr_translate____final_answer_pattern___2-1',
23860 D),
23861 lookup_ht(D, E, F)
23862 -> final_answer_pattern___2__5__1__7(F,
23863 G,
23864 E,
23865 A,
23866 H,
23867 C,
23868 I,
23869 J)
23870 ; final_answer_pattern___2__5__0__7(H, C, I, J)
23871 ).
23872final_answer_pattern___2__5__1__7([], _, _, _, A, B, C, D) :-
23873 final_answer_pattern___2__5__0__7(A, B, C, D).
23874final_answer_pattern___2__5__1__7([A|N], L, C, D, O, I, J, E) :-
23875 ( A=suspension(_, active, _, B, K),
23876 B==C,
23877 F=t(317, D, E, A),
23878 '$novel_production'(D, F),
23879 '$novel_production'(E, F),
23880 '$novel_production'(A, F)
23881 -> '$extend_history'(E, F),
23882 ( arg(2, E, G),
23883 setarg(2, E, active),
23884 ( G==not_stored_yet
23885 -> nb_getval('$chr_store_multi_hash_chr_translate____final_answer_pattern___2-1',
23886 H),
23887 insert_ht(H, I, E)
23888 ; true
23889 )
23890 ),
23891 ( ai_observation_lub(J, K, M),
23892 final_answer_pattern(L, M)
23893 ),
23894 ( E=suspension(_, active, _, _, _)
23895 -> setarg(2, E, inactive),
23896 final_answer_pattern___2__5__1__7(N,
23897 L,
23898 C,
23899 D,
23900 O,
23901 I,
23902 J,
23903 E)
23904 ; true
23905 )
23906 ; final_answer_pattern___2__5__1__7(N,
23907 L,
23908 C,
23909 D,
23910 O,
23911 I,
23912 J,
23913 E)
23914 ).
23915final_answer_pattern___2__5(A, B, C) :-
23916 final_answer_pattern___2__6(A, B, C).
23917final_answer_pattern___2__6(B, D, E) :-
23918 nb_getval('$chr_store_multi_hash_chr_translate____depends_on_as___3-3',
23919 A),
23920 lookup_ht(A, B, C),
23921 !,
23922 final_answer_pattern___2__6__0__8(C, B, D, E).
23923final_answer_pattern___2__6__0__8([], A, B, C) :-
23924 final_answer_pattern___2__7(A, B, C).
23925final_answer_pattern___2__6__0__8([A|H], C, I, J) :-
23926 ( ( A=suspension(_, active, _, G, E, B),
23927 B==C
23928 ),
23929 nb_getval('$chr_store_multi_hash_chr_translate____final_answer_pattern___2-1',
23930 D),
23931 lookup_ht(D, E, F)
23932 -> final_answer_pattern___2__6__1__8(F,
23933 G,
23934 E,
23935 A,
23936 H,
23937 C,
23938 I,
23939 J)
23940 ; final_answer_pattern___2__6__0__8(H, C, I, J)
23941 ).
23942final_answer_pattern___2__6__1__8([], _, _, _, A, B, C, D) :-
23943 final_answer_pattern___2__6__0__8(A, B, C, D).
23944final_answer_pattern___2__6__1__8([A|N], L, C, D, O, I, K, E) :-
23945 ( A=suspension(_, active, _, B, J),
23946 B==C,
23947 F=t(317, D, A, E),
23948 '$novel_production'(D, F),
23949 '$novel_production'(A, F),
23950 '$novel_production'(E, F)
23951 -> '$extend_history'(E, F),
23952 ( arg(2, E, G),
23953 setarg(2, E, active),
23954 ( G==not_stored_yet
23955 -> nb_getval('$chr_store_multi_hash_chr_translate____final_answer_pattern___2-1',
23956 H),
23957 insert_ht(H, I, E)
23958 ; true
23959 )
23960 ),
23961 ( ai_observation_lub(J, K, M),
23962 final_answer_pattern(L, M)
23963 ),
23964 ( E=suspension(_, active, _, _, _)
23965 -> setarg(2, E, inactive),
23966 final_answer_pattern___2__6__1__8(N,
23967 L,
23968 C,
23969 D,
23970 O,
23971 I,
23972 K,
23973 E)
23974 ; true
23975 )
23976 ; final_answer_pattern___2__6__1__8(N,
23977 L,
23978 C,
23979 D,
23980 O,
23981 I,
23982 K,
23983 E)
23984 ).
23985final_answer_pattern___2__6(A, B, C) :-
23986 final_answer_pattern___2__7(A, B, C).
23987final_answer_pattern___2__7(B, D, E) :-
23988 nb_getval('$chr_store_multi_hash_chr_translate____depends_on_ap___4-3',
23989 A),
23990 lookup_ht(A, B, C),
23991 !,
23992 final_answer_pattern___2__7__0__9(C, B, D, E).
23993final_answer_pattern___2__7__0__9([], A, B, C) :-
23994 final_answer_pattern___2__8(A, B, C).
23995final_answer_pattern___2__7__0__9([A|J], C, I, D) :-
23996 ( A=suspension(_, active, _, H, _, B, _),
23997 B==C,
23998 E=t(325, A, D),
23999 '$novel_production'(A, E),
24000 '$novel_production'(D, E)
24001 -> '$extend_history'(D, E),
24002 ( arg(2, D, F),
24003 setarg(2, D, active),
24004 ( F==not_stored_yet
24005 -> nb_getval('$chr_store_multi_hash_chr_translate____final_answer_pattern___2-1',
24006 G),
24007 insert_ht(G, C, D)
24008 ; true
24009 )
24010 ),
24011 final_answer_pattern(H, I),
24012 ( D=suspension(_, active, _, _, _)
24013 -> setarg(2, D, inactive),
24014 final_answer_pattern___2__7__0__9(J, C, I, D)
24015 ; true
24016 )
24017 ; final_answer_pattern___2__7__0__9(J, C, I, D)
24018 ).
24019final_answer_pattern___2__7(A, B, C) :-
24020 final_answer_pattern___2__8(A, B, C).
24021final_answer_pattern___2__8(B, D, E) :-
24022 nb_getval('$chr_store_multi_hash_chr_translate____depends_on_ap___4-2',
24023 A),
24024 lookup_ht(A, B, C),
24025 !,
24026 final_answer_pattern___2__8__0__10(C, B, D, E).
24027final_answer_pattern___2__8__0__10([], A, B, C) :-
24028 final_answer_pattern___2__9(A, B, C).
24029final_answer_pattern___2__8__0__10([A|I], C, J, K) :-
24030 ( ( A=suspension(_, active, _, G, B, E, H),
24031 B==C
24032 ),
24033 nb_getval('$chr_store_multi_hash_chr_translate____final_answer_pattern___2-1',
24034 D),
24035 lookup_ht(D, E, F)
24036 -> final_answer_pattern___2__8__1__10(F,
24037 G,
24038 E,
24039 H,
24040 A,
24041 I,
24042 C,
24043 J,
24044 K)
24045 ; final_answer_pattern___2__8__0__10(I, C, J, K)
24046 ).
24047final_answer_pattern___2__8__1__10([], _, _, _, _, A, B, C, D) :-
24048 final_answer_pattern___2__8__0__10(A, B, C, D).
24049final_answer_pattern___2__8__1__10([A|T], J, C, N, D, U, I, K, E) :-
24050 ( A=suspension(_, active, _, B, R),
24051 B==C,
24052 F=t(326, D, E, A),
24053 '$novel_production'(D, F),
24054 '$novel_production'(E, F),
24055 '$novel_production'(A, F)
24056 -> '$extend_history'(E, F),
24057 ( arg(2, E, G),
24058 setarg(2, E, active),
24059 ( G==not_stored_yet
24060 -> nb_getval('$chr_store_multi_hash_chr_translate____final_answer_pattern___2-1',
24061 H),
24062 insert_ht(H, I, E)
24063 ; true
24064 )
24065 ),
24066 ( J=odom(occ(L, M), _),
24067 ( ai_observation_is_observed(K, L)
24068 -> ai_observed_internal(L, M)
24069 ; ai_not_observed_internal(L, M)
24070 ),
24071 ( N==yes
24072 -> K=odom([], O),
24073 ord_del_element(O, L, P),
24074 Q=odom([], P)
24075 ; Q=K
24076 ),
24077 ai_observation_lub(Q, R, S),
24078 final_answer_pattern(J, S)
24079 ),
24080 ( E=suspension(_, active, _, _, _)
24081 -> setarg(2, E, inactive),
24082 final_answer_pattern___2__8__1__10(T,
24083 J,
24084 C,
24085 N,
24086 D,
24087 U,
24088 I,
24089 K,
24090 E)
24091 ; true
24092 )
24093 ; final_answer_pattern___2__8__1__10(T,
24094 J,
24095 C,
24096 N,
24097 D,
24098 U,
24099 I,
24100 K,
24101 E)
24102 ).
24103final_answer_pattern___2__8(A, B, C) :-
24104 final_answer_pattern___2__9(A, B, C).
24105final_answer_pattern___2__9(B, D, E) :-
24106 nb_getval('$chr_store_multi_hash_chr_translate____depends_on_ap___4-3',
24107 A),
24108 lookup_ht(A, B, C),
24109 !,
24110 final_answer_pattern___2__9__0__11(C, B, D, E).
24111final_answer_pattern___2__9__0__11([], A, B, C) :-
24112 final_answer_pattern___2__10(A, B, C).
24113final_answer_pattern___2__9__0__11([A|I], C, J, K) :-
24114 ( ( A=suspension(_, active, _, G, E, B, H),
24115 B==C
24116 ),
24117 nb_getval('$chr_store_multi_hash_chr_translate____final_answer_pattern___2-1',
24118 D),
24119 lookup_ht(D, E, F)
24120 -> final_answer_pattern___2__9__1__11(F,
24121 G,
24122 E,
24123 H,
24124 A,
24125 I,
24126 C,
24127 J,
24128 K)
24129 ; final_answer_pattern___2__9__0__11(I, C, J, K)
24130 ).
24131final_answer_pattern___2__9__1__11([], _, _, _, _, A, B, C, D) :-
24132 final_answer_pattern___2__9__0__11(A, B, C, D).
24133final_answer_pattern___2__9__1__11([A|T], J, C, N, D, U, I, R, E) :-
24134 ( A=suspension(_, active, _, B, K),
24135 B==C,
24136 F=t(326, D, A, E),
24137 '$novel_production'(D, F),
24138 '$novel_production'(A, F),
24139 '$novel_production'(E, F)
24140 -> '$extend_history'(E, F),
24141 ( arg(2, E, G),
24142 setarg(2, E, active),
24143 ( G==not_stored_yet
24144 -> nb_getval('$chr_store_multi_hash_chr_translate____final_answer_pattern___2-1',
24145 H),
24146 insert_ht(H, I, E)
24147 ; true
24148 )
24149 ),
24150 ( J=odom(occ(L, M), _),
24151 ( ai_observation_is_observed(K, L)
24152 -> ai_observed_internal(L, M)
24153 ; ai_not_observed_internal(L, M)
24154 ),
24155 ( N==yes
24156 -> K=odom([], O),
24157 ord_del_element(O, L, P),
24158 Q=odom([], P)
24159 ; Q=K
24160 ),
24161 ai_observation_lub(Q, R, S),
24162 final_answer_pattern(J, S)
24163 ),
24164 ( E=suspension(_, active, _, _, _)
24165 -> setarg(2, E, inactive),
24166 final_answer_pattern___2__9__1__11(T,
24167 J,
24168 C,
24169 N,
24170 D,
24171 U,
24172 I,
24173 R,
24174 E)
24175 ; true
24176 )
24177 ; final_answer_pattern___2__9__1__11(T,
24178 J,
24179 C,
24180 N,
24181 D,
24182 U,
24183 I,
24184 R,
24185 E)
24186 ).
24187final_answer_pattern___2__9(A, B, C) :-
24188 final_answer_pattern___2__10(A, B, C).
24189final_answer_pattern___2__10(D, _, A) :-
24190 arg(2, A, B),
24191 setarg(2, A, active),
24192 ( B==not_stored_yet
24193 -> nb_getval('$chr_store_multi_hash_chr_translate____final_answer_pattern___2-1',
24194 C),
24195 insert_ht(C, D, A)
24196 ; true
24197 ).
24198abstract_constraints(C) :-
24199 nb_getval('$chr_store_global_ground_chr_translate____abstract_constraints___1',
24200 A),
24201 ( member(B, A),
24202 B=suspension(_, active, _, _),
24203 !
24204 ; !,
24205 abstract_constraints___1__0__0__2(A, C)
24206 ).
24207abstract_constraints___1__0__0__2([], A) :-
24208 abstract_constraints___1__1(A).
24209abstract_constraints___1__0__0__2([A|F], G) :-
24210 ( A=suspension(_, active, _, _)
24211 -> ( setarg(2, A, removed),
24212 arg(3, A, B),
24213 ( var(B)
24214 -> nb_getval('$chr_store_global_ground_chr_translate____abstract_constraints___1',
24215 C),
24216 C=[_|D],
24217 b_setval('$chr_store_global_ground_chr_translate____abstract_constraints___1',
24218 D),
24219 ( D=[E|_]
24220 -> setarg(3, E, _)
24221 ; true
24222 )
24223 ; B=[_, _|D],
24224 setarg(2, B, D),
24225 ( D=[E|_]
24226 -> setarg(3, E, B)
24227 ; true
24228 )
24229 )
24230 ),
24231 abstract_constraints___1__0__0__2(F, G)
24232 ; abstract_constraints___1__0__0__2(F, G)
24233 ).
24234abstract_constraints(A) :-
24235 abstract_constraints___1__1(A).
24236abstract_constraints___1__1(A) :-
24237 C=suspension(B, active, _, A),
24238 'chr gen_id'(B),
24239 nb_getval('$chr_store_global_ground_chr_translate____abstract_constraints___1',
24240 D),
24241 E=[C|D],
24242 b_setval('$chr_store_global_ground_chr_translate____abstract_constraints___1',
24243 E),
24244 ( D=[F|_]
24245 -> setarg(3, F, E)
24246 ; true
24247 ).
24248depends_on(A, B) :-
24249 depends_on___2__0(A, B, _).
24250depends_on___2__0(D, B, C) :-
24251 nb_getval('$chr_store_multi_hash_chr_translate____final_answer_pattern___2-1',
24252 A),
24253 lookup_ht(A, B, F),
24254 !,
24255 C=suspension(E, not_stored_yet, t, D, B),
24256 'chr gen_id'(E),
24257 depends_on___2__0__0__1(F, D, B, C).
24258depends_on___2__0__0__1([], A, B, C) :-
24259 depends_on___2__1(A, B, C).
24260depends_on___2__0__0__1([A|K], H, C, D) :-
24261 ( A=suspension(_, active, _, B, J),
24262 B==C,
24263 E=t(305, D, A),
24264 '$novel_production'(D, E),
24265 '$novel_production'(A, E)
24266 -> '$extend_history'(D, E),
24267 ( arg(2, D, F),
24268 setarg(2, D, active),
24269 ( F==not_stored_yet
24270 -> ( nb_getval('$chr_store_multi_hash_chr_translate____depends_on___2-1',
24271 G),
24272 insert_ht(G, H, D)
24273 ),
24274 nb_getval('$chr_store_multi_hash_chr_translate____depends_on___2-2',
24275 I),
24276 insert_ht(I, C, D)
24277 ; true
24278 )
24279 ),
24280 final_answer_pattern(H, J),
24281 ( D=suspension(_, active, _, _, _)
24282 -> setarg(2, D, inactive),
24283 depends_on___2__0__0__1(K, H, C, D)
24284 ; true
24285 )
24286 ; depends_on___2__0__0__1(K, H, C, D)
24287 ).
24288depends_on___2__0(B, C, A) :-
24289 A=suspension(D, not_stored_yet, t, B, C),
24290 'chr gen_id'(D),
24291 depends_on___2__1(B, C, A).
24292depends_on___2__1(D, F, A) :-
24293 arg(2, A, B),
24294 setarg(2, A, active),
24295 ( B==not_stored_yet
24296 -> ( nb_getval('$chr_store_multi_hash_chr_translate____depends_on___2-1',
24297 C),
24298 insert_ht(C, D, A)
24299 ),
24300 nb_getval('$chr_store_multi_hash_chr_translate____depends_on___2-2',
24301 E),
24302 insert_ht(E, F, A)
24303 ; true
24304 ).
24305depends_on_ap(A, B, C, D) :-
24306 depends_on_ap___4__0(A, B, C, D, _).
24307depends_on_ap___4__0(D, E, B, F, C) :-
24308 nb_getval('$chr_store_multi_hash_chr_translate____final_answer_pattern___2-1',
24309 A),
24310 lookup_ht(A, B, H),
24311 !,
24312 C=suspension(G, not_stored_yet, t, D, E, B, F),
24313 'chr gen_id'(G),
24314 depends_on_ap___4__0__0__1(H,
24315 D,
24316 E,
24317 B,
24318 F,
24319 C).
24320depends_on_ap___4__0__0__1([], A, B, C, D, E) :-
24321 depends_on_ap___4__1(A, B, C, D, E).
24322depends_on_ap___4__0__0__1([A|L], J, H, C, M, D) :-
24323 ( A=suspension(_, active, _, B, K),
24324 B==C,
24325 E=t(325, D, A),
24326 '$novel_production'(D, E),
24327 '$novel_production'(A, E)
24328 -> '$extend_history'(D, E),
24329 ( arg(2, D, F),
24330 setarg(2, D, active),
24331 ( F==not_stored_yet
24332 -> ( nb_getval('$chr_store_multi_hash_chr_translate____depends_on_ap___4-2',
24333 G),
24334 insert_ht(G, H, D)
24335 ),
24336 nb_getval('$chr_store_multi_hash_chr_translate____depends_on_ap___4-3',
24337 I),
24338 insert_ht(I, C, D)
24339 ; true
24340 )
24341 ),
24342 final_answer_pattern(J, K),
24343 ( D=suspension(_, active, _, _, _, _, _)
24344 -> setarg(2, D, inactive),
24345 depends_on_ap___4__0__0__1(L,
24346 J,
24347 H,
24348 C,
24349 M,
24350 D)
24351 ; true
24352 )
24353 ; depends_on_ap___4__0__0__1(L,
24354 J,
24355 H,
24356 C,
24357 M,
24358 D)
24359 ).
24360depends_on_ap___4__0(B, C, D, E, A) :-
24361 A=suspension(F, not_stored_yet, t, B, C, D, E),
24362 'chr gen_id'(F),
24363 depends_on_ap___4__1(B, C, D, E, A).
24364depends_on_ap___4__1(D, B, E, F, G) :-
24365 nb_getval('$chr_store_multi_hash_chr_translate____final_answer_pattern___2-1',
24366 A),
24367 lookup_ht(A, B, C),
24368 !,
24369 depends_on_ap___4__1__0__2(C,
24370 D,
24371 B,
24372 E,
24373 F,
24374 G).
24375depends_on_ap___4__1__0__2([], A, B, C, D, E) :-
24376 depends_on_ap___4__2(A, B, C, D, E).
24377depends_on_ap___4__1__0__2([A|H], I, C, E, J, K) :-
24378 ( ( A=suspension(_, active, _, B, G),
24379 B==C
24380 ),
24381 nb_getval('$chr_store_multi_hash_chr_translate____final_answer_pattern___2-1',
24382 D),
24383 lookup_ht(D, E, F)
24384 -> depends_on_ap___4__1__1__2(F,
24385 G,
24386 A,
24387 H,
24388 I,
24389 C,
24390 E,
24391 J,
24392 K)
24393 ; depends_on_ap___4__1__0__2(H,
24394 I,
24395 C,
24396 E,
24397 J,
24398 K)
24399 ).
24400depends_on_ap___4__1__1__2([], _, _, A, B, C, D, E, F) :-
24401 depends_on_ap___4__1__0__2(A,
24402 B,
24403 C,
24404 D,
24405 E,
24406 F).
24407depends_on_ap___4__1__1__2([A|U], L, B, V, K, I, D, O, E) :-
24408 ( A=suspension(_, active, _, C, S),
24409 A\==B,
24410 C==D,
24411 F=t(326, E, B, A),
24412 '$novel_production'(E, F),
24413 '$novel_production'(B, F),
24414 '$novel_production'(A, F)
24415 -> '$extend_history'(E, F),
24416 ( arg(2, E, G),
24417 setarg(2, E, active),
24418 ( G==not_stored_yet
24419 -> ( nb_getval('$chr_store_multi_hash_chr_translate____depends_on_ap___4-2',
24420 H),
24421 insert_ht(H, I, E)
24422 ),
24423 nb_getval('$chr_store_multi_hash_chr_translate____depends_on_ap___4-3',
24424 J),
24425 insert_ht(J, D, E)
24426 ; true
24427 )
24428 ),
24429 ( K=odom(occ(M, N), _),
24430 ( ai_observation_is_observed(L, M)
24431 -> ai_observed_internal(M, N)
24432 ; ai_not_observed_internal(M, N)
24433 ),
24434 ( O==yes
24435 -> L=odom([], P),
24436 ord_del_element(P, M, Q),
24437 R=odom([], Q)
24438 ; R=L
24439 ),
24440 ai_observation_lub(R, S, T),
24441 final_answer_pattern(K, T)
24442 ),
24443 ( E=suspension(_, active, _, _, _, _, _)
24444 -> setarg(2, E, inactive),
24445 depends_on_ap___4__1__1__2(U,
24446 L,
24447 B,
24448 V,
24449 K,
24450 I,
24451 D,
24452 O,
24453 E)
24454 ; true
24455 )
24456 ; depends_on_ap___4__1__1__2(U,
24457 L,
24458 B,
24459 V,
24460 K,
24461 I,
24462 D,
24463 O,
24464 E)
24465 ).
24466depends_on_ap___4__1(A, B, C, D, E) :-
24467 depends_on_ap___4__2(A, B, C, D, E).
24468depends_on_ap___4__2(_, D, F, _, A) :-
24469 arg(2, A, B),
24470 setarg(2, A, active),
24471 ( B==not_stored_yet
24472 -> ( nb_getval('$chr_store_multi_hash_chr_translate____depends_on_ap___4-2',
24473 C),
24474 insert_ht(C, D, A)
24475 ),
24476 nb_getval('$chr_store_multi_hash_chr_translate____depends_on_ap___4-3',
24477 E),
24478 insert_ht(E, F, A)
24479 ; true
24480 ).
24481depends_on_goal(A, B) :-
24482 depends_on_goal___2__0(A, B, _).
24483depends_on_goal___2__0(B, D, E) :-
24484 nb_getval('$chr_store_multi_hash_chr_translate____depends_on___2-1', A),
24485 lookup_ht(A, B, C),
24486 !,
24487 depends_on_goal___2__0__0__1(C, B, D, E).
24488depends_on_goal___2__0__0__1([], A, B, C) :-
24489 depends_on_goal___2__1(A, B, C).
24490depends_on_goal___2__0__0__1([A|K], C, D, L) :-
24491 ( ( A=suspension(_, active, _, B, J),
24492 B==C
24493 ),
24494 ( ground(D),
24495 nb_getval('$chr_store_multi_hash_chr_translate____final_answer_pattern___2-1',
24496 E),
24497 lookup_ht(E, D, F)
24498 ),
24499 member(G, F),
24500 G=suspension(_, active, _, _, _)
24501 -> ( setarg(2, A, removed),
24502 ( nb_getval('$chr_store_multi_hash_chr_translate____depends_on___2-1',
24503 H),
24504 delete_ht(H, C, A)
24505 ),
24506 nb_getval('$chr_store_multi_hash_chr_translate____depends_on___2-2',
24507 I),
24508 delete_ht(I, J, A)
24509 ),
24510 depends_on_goal___2__0__0__1(K, C, D, L)
24511 ; depends_on_goal___2__0__0__1(K, C, D, L)
24512 ).
24513depends_on_goal___2__0(A, B, C) :-
24514 depends_on_goal___2__1(A, B, C).
24515depends_on_goal___2__1(D, B, C) :-
24516 nb_getval('$chr_store_multi_hash_chr_translate____final_answer_pattern___2-1',
24517 A),
24518 lookup_ht(A, B, F),
24519 !,
24520 C=suspension(E, not_stored_yet, t, D, B),
24521 'chr gen_id'(E),
24522 depends_on_goal___2__1__0__2(F, D, B, C).
24523depends_on_goal___2__1__0__2([], A, B, C) :-
24524 depends_on_goal___2__2(A, B, C).
24525depends_on_goal___2__1__0__2([A|M], H, C, D) :-
24526 ( A=suspension(_, active, _, B, I),
24527 B==C,
24528 E=t(310, D, A),
24529 '$novel_production'(D, E),
24530 '$novel_production'(A, E)
24531 -> '$extend_history'(D, E),
24532 ( arg(2, D, F),
24533 setarg(2, D, active),
24534 ( F==not_stored_yet
24535 -> nb_getval('$chr_store_multi_hash_chr_translate____depends_on_goal___2-2',
24536 G),
24537 insert_ht(G, C, D)
24538 ; true
24539 )
24540 ),
24541 ( H=odom([_|J], _),
24542 I=odom([], K),
24543 L=odom(J, K),
24544 call_pattern(L),
24545 depends_on(H, L)
24546 ),
24547 ( D=suspension(_, active, _, _, _)
24548 -> setarg(2, D, inactive),
24549 depends_on_goal___2__1__0__2(M, H, C, D)
24550 ; true
24551 )
24552 ; depends_on_goal___2__1__0__2(M, H, C, D)
24553 ).
24554depends_on_goal___2__1(B, C, A) :-
24555 A=suspension(D, not_stored_yet, t, B, C),
24556 'chr gen_id'(D),
24557 depends_on_goal___2__2(B, C, A).
24558depends_on_goal___2__2(_, D, A) :-
24559 arg(2, A, B),
24560 setarg(2, A, active),
24561 ( B==not_stored_yet
24562 -> nb_getval('$chr_store_multi_hash_chr_translate____depends_on_goal___2-2',
24563 C),
24564 insert_ht(C, D, A)
24565 ; true
24566 ).
24567ai_observed_internal(B, C) :-
24568 nb_getval('$chr_store_multi_hash_chr_translate____ai_not_observed_internal___2-12',
24569 A),
24570 lookup_ht(A, k(B, C), D),
24571 !,
24572 ai_observed_internal___2__0__0__1(D, B, C).
24573ai_observed_internal___2__0__0__1([], A, B) :-
24574 ai_observed_internal___2__1(A, B).
24575ai_observed_internal___2__0__0__1([A|K], C, E) :-
24576 ( A=suspension(_, active, _, B, D),
24577 B==C,
24578 D==E
24579 -> ( setarg(2, A, removed),
24580 ( arg(3, A, F),
24581 ( var(F)
24582 -> nb_getval('$chr_store_global_ground_chr_translate____ai_not_observed_internal___2',
24583 G),
24584 G=[_|H],
24585 b_setval('$chr_store_global_ground_chr_translate____ai_not_observed_internal___2',
24586 H),
24587 ( H=[I|_]
24588 -> setarg(3, I, _)
24589 ; true
24590 )
24591 ; F=[_, _|H],
24592 setarg(2, F, H),
24593 ( H=[I|_]
24594 -> setarg(3, I, F)
24595 ; true
24596 )
24597 )
24598 ),
24599 nb_getval('$chr_store_multi_hash_chr_translate____ai_not_observed_internal___2-12',
24600 J),
24601 delete_ht(J, k(C, E), A)
24602 ),
24603 ai_observed_internal___2__0__0__1(K, C, E)
24604 ; ai_observed_internal___2__0__0__1(K, C, E)
24605 ).
24606ai_observed_internal(A, B) :-
24607 ai_observed_internal___2__1(A, B).
24608ai_observed_internal___2__1(B, C) :-
24609 nb_getval('$chr_store_multi_hash_chr_translate____ai_observed_internal___2-12',
24610 A),
24611 lookup_ht(A, k(B, C), D),
24612 member(E, D),
24613 E=suspension(_, active, _, _, _),
24614 !.
24615ai_observed_internal___2__1(_, _) :-
24616 nb_getval('$chr_store_global_ground_chr_translate____ai_observation_gather_results___0',
24617 A),
24618 member(B, A),
24619 B=suspension(_, active, _),
24620 !.
24621ai_observed_internal___2__1(A, B) :-
24622 D=suspension(C, active, _, A, B),
24623 'chr gen_id'(C),
24624 nb_getval('$chr_store_global_ground_chr_translate____ai_observed_internal___2',
24625 E),
24626 F=[D|E],
24627 b_setval('$chr_store_global_ground_chr_translate____ai_observed_internal___2',
24628 F),
24629 ( E=[G|_]
24630 -> setarg(3, G, F)
24631 ; true
24632 ),
24633 nb_getval('$chr_store_multi_hash_chr_translate____ai_observed_internal___2-12',
24634 H),
24635 insert_ht(H, k(A, B), D).
24636ai_not_observed_internal(B, C) :-
24637 nb_getval('$chr_store_multi_hash_chr_translate____ai_observed_internal___2-12',
24638 A),
24639 lookup_ht(A, k(B, C), D),
24640 member(E, D),
24641 E=suspension(_, active, _, _, _),
24642 !.
24643ai_not_observed_internal(B, C) :-
24644 nb_getval('$chr_store_multi_hash_chr_translate____ai_not_observed_internal___2-12',
24645 A),
24646 lookup_ht(A, k(B, C), D),
24647 member(E, D),
24648 E=suspension(_, active, _, _, _),
24649 !.
24650ai_not_observed_internal(C, D) :-
24651 nb_getval('$chr_store_global_ground_chr_translate____ai_observation_gather_results___0',
24652 A),
24653 member(B, A),
24654 B=suspension(_, active, _),
24655 !,
24656 ai_not_observed(C, D).
24657ai_not_observed_internal(A, B) :-
24658 D=suspension(C, active, _, A, B),
24659 'chr gen_id'(C),
24660 nb_getval('$chr_store_global_ground_chr_translate____ai_not_observed_internal___2',
24661 E),
24662 F=[D|E],
24663 b_setval('$chr_store_global_ground_chr_translate____ai_not_observed_internal___2',
24664 F),
24665 ( E=[G|_]
24666 -> setarg(3, G, F)
24667 ; true
24668 ),
24669 nb_getval('$chr_store_multi_hash_chr_translate____ai_not_observed_internal___2-12',
24670 H),
24671 insert_ht(H, k(A, B), D).
24672ai_not_observed(A, B) :-
24673 ai_not_observed___2__0(A, B, _).
24674ai_not_observed___2__0(B, C, D) :-
24675 nb_getval('$chr_store_multi_hash_chr_translate____stored___3-123', A),
24676 lookup_ht(A, k(B, C, yes), F),
24677 !,
24678 D=suspension(E, not_stored_yet, B, C),
24679 'chr gen_id'(E),
24680 ai_not_observed___2__0__0__1(F, B, C, D).
24681ai_not_observed___2__0__0__1([], A, B, C) :-
24682 ai_not_observed___2__1(A, B, C).
24683ai_not_observed___2__0__0__1([A|T], C, E, P) :-
24684 ( ( A=suspension(_, active, B, D, F),
24685 B==C,
24686 D==E,
24687 F=yes
24688 ),
24689 ( ( ground(C),
24690 nb_getval('$chr_store_multi_hash_chr_translate____stored_complete___3-1',
24691 G),
24692 lookup_ht(G, C, H)
24693 ),
24694 member(I, H),
24695 I=suspension(_, active, _, _, J, N)
24696 ),
24697 E<J
24698 -> ( ( setarg(2, A, removed),
24699 ( nb_getval('$chr_store_multi_hash_chr_translate____stored___3-13',
24700 K),
24701 delete_ht(K, k(C, yes), A)
24702 ),
24703 nb_getval('$chr_store_multi_hash_chr_translate____stored___3-123',
24704 L),
24705 delete_ht(L, k(C, E, yes), A)
24706 ),
24707 setarg(2, I, removed),
24708 ( nb_getval('$chr_store_multi_hash_chr_translate____stored_complete___3-13',
24709 M),
24710 delete_ht(M, k(C, N), I)
24711 ),
24712 nb_getval('$chr_store_multi_hash_chr_translate____stored_complete___3-1',
24713 O),
24714 delete_ht(O, C, I)
24715 ),
24716 ( arg(2, P, Q),
24717 setarg(2, P, active),
24718 ( Q==not_stored_yet
24719 -> nb_getval('$chr_store_multi_hash_chr_translate____ai_not_observed___2-12',
24720 R),
24721 insert_ht(R, k(C, E), P)
24722 ; true
24723 )
24724 ),
24725 ( S is N-1,
24726 stored(C, E, maybe),
24727 stored_complete(C, J, S)
24728 ),
24729 ( P=suspension(_, active, _, _)
24730 -> setarg(2, P, inactive),
24731 ai_not_observed___2__0__0__1(T, C, E, P)
24732 ; true
24733 )
24734 ; ai_not_observed___2__0__0__1(T, C, E, P)
24735 ).
24736ai_not_observed___2__0(B, C, A) :-
24737 A=suspension(D, not_stored_yet, B, C),
24738 'chr gen_id'(D),
24739 ai_not_observed___2__1(B, C, A).
24740ai_not_observed___2__1(D, E, A) :-
24741 arg(2, A, B),
24742 setarg(2, A, active),
24743 ( B==not_stored_yet
24744 -> nb_getval('$chr_store_multi_hash_chr_translate____ai_not_observed___2-12',
24745 C),
24746 insert_ht(C, k(D, E), A)
24747 ; true
24748 ).
24749ai_is_observed(B, C) :-
24750 nb_getval('$chr_store_multi_hash_chr_translate____ai_not_observed___2-12',
24751 A),
24752 lookup_ht(A, k(B, C), D),
24753 member(E, D),
24754 E=suspension(_, active, _, _),
24755 !,
24756 fail.
24757ai_is_observed(_, _).
24758depends_on_as(A, B, C) :-
24759 depends_on_as___3__0(A, B, C, _).
24760depends_on_as___3__0(D, B, E, C) :-
24761 nb_getval('$chr_store_multi_hash_chr_translate____final_answer_pattern___2-1',
24762 A),
24763 lookup_ht(A, B, G),
24764 !,
24765 C=suspension(F, not_stored_yet, t, D, B, E),
24766 'chr gen_id'(F),
24767 depends_on_as___3__0__0__1(G, D, B, E, C).
24768depends_on_as___3__0__0__1([], A, B, C, D) :-
24769 depends_on_as___3__1(A, B, C, D).
24770depends_on_as___3__0__0__1([A|H], I, C, E, J) :-
24771 ( ( A=suspension(_, active, _, B, G),
24772 B==C
24773 ),
24774 nb_getval('$chr_store_multi_hash_chr_translate____final_answer_pattern___2-1',
24775 D),
24776 lookup_ht(D, E, F)
24777 -> depends_on_as___3__0__1__1(F,
24778 G,
24779 A,
24780 H,
24781 I,
24782 C,
24783 E,
24784 J)
24785 ; depends_on_as___3__0__0__1(H, I, C, E, J)
24786 ).
24787depends_on_as___3__0__1__1([], _, _, A, B, C, D, E) :-
24788 depends_on_as___3__0__0__1(A, B, C, D, E).
24789depends_on_as___3__0__1__1([A|O], K, B, P, M, J, D, E) :-
24790 ( A=suspension(_, active, _, C, L),
24791 A\==B,
24792 C==D,
24793 F=t(317, E, B, A),
24794 '$novel_production'(E, F),
24795 '$novel_production'(B, F),
24796 '$novel_production'(A, F)
24797 -> '$extend_history'(E, F),
24798 ( arg(2, E, G),
24799 setarg(2, E, active),
24800 ( G==not_stored_yet
24801 -> ( nb_getval('$chr_store_multi_hash_chr_translate____depends_on_as___3-3',
24802 H),
24803 insert_ht(H, D, E)
24804 ),
24805 nb_getval('$chr_store_multi_hash_chr_translate____depends_on_as___3-2',
24806 I),
24807 insert_ht(I, J, E)
24808 ; true
24809 )
24810 ),
24811 ( ai_observation_lub(K, L, N),
24812 final_answer_pattern(M, N)
24813 ),
24814 ( E=suspension(_, active, _, _, _, _)
24815 -> setarg(2, E, inactive),
24816 depends_on_as___3__0__1__1(O,
24817 K,
24818 B,
24819 P,
24820 M,
24821 J,
24822 D,
24823 E)
24824 ; true
24825 )
24826 ; depends_on_as___3__0__1__1(O,
24827 K,
24828 B,
24829 P,
24830 M,
24831 J,
24832 D,
24833 E)
24834 ).
24835depends_on_as___3__0(B, C, D, A) :-
24836 A=suspension(E, not_stored_yet, t, B, C, D),
24837 'chr gen_id'(E),
24838 depends_on_as___3__1(B, C, D, A).
24839depends_on_as___3__1(_, F, D, A) :-
24840 arg(2, A, B),
24841 setarg(2, A, active),
24842 ( B==not_stored_yet
24843 -> ( nb_getval('$chr_store_multi_hash_chr_translate____depends_on_as___3-3',
24844 C),
24845 insert_ht(C, D, A)
24846 ),
24847 nb_getval('$chr_store_multi_hash_chr_translate____depends_on_as___3-2',
24848 E),
24849 insert_ht(E, F, A)
24850 ; true
24851 ).
24852ai_observation_gather_results :-
24853 ai_observation_gather_results___0__0(_).
24854ai_observation_gather_results___0__0(B) :-
24855 nb_getval('$chr_store_global_ground_chr_translate____ai_observed_internal___2',
24856 A),
24857 !,
24858 ai_observation_gather_results___0__0__0__1(A, B).
24859ai_observation_gather_results___0__0__0__1([], A) :-
24860 ai_observation_gather_results___0__1(A).
24861ai_observation_gather_results___0__0__0__1([A|I], J) :-
24862 ( A=suspension(_, active, _, G, H)
24863 -> ( setarg(2, A, removed),
24864 ( arg(3, A, B),
24865 ( var(B)
24866 -> nb_getval('$chr_store_global_ground_chr_translate____ai_observed_internal___2',
24867 C),
24868 C=[_|D],
24869 b_setval('$chr_store_global_ground_chr_translate____ai_observed_internal___2',
24870 D),
24871 ( D=[E|_]
24872 -> setarg(3, E, _)
24873 ; true
24874 )
24875 ; B=[_, _|D],
24876 setarg(2, B, D),
24877 ( D=[E|_]
24878 -> setarg(3, E, B)
24879 ; true
24880 )
24881 )
24882 ),
24883 nb_getval('$chr_store_multi_hash_chr_translate____ai_observed_internal___2-12',
24884 F),
24885 delete_ht(F, k(G, H), A)
24886 ),
24887 ai_observation_gather_results___0__0__0__1(I, J)
24888 ; ai_observation_gather_results___0__0__0__1(I, J)
24889 ).
24890ai_observation_gather_results___0__0(A) :-
24891 ai_observation_gather_results___0__1(A).
24892ai_observation_gather_results___0__1(A) :-
24893 nb_getval('$chr_store_global_ground_chr_translate____ai_not_observed_internal___2',
24894 C),
24895 !,
24896 A=suspension(B, not_stored_yet, _),
24897 'chr gen_id'(B),
24898 ai_observation_gather_results___0__1__0__2(C, A).
24899ai_observation_gather_results___0__1__0__2([], A) :-
24900 ai_observation_gather_results___0__2(A).
24901ai_observation_gather_results___0__1__0__2([A|N], I) :-
24902 ( A=suspension(_, active, _, G, H)
24903 -> ( setarg(2, A, removed),
24904 ( arg(3, A, B),
24905 ( var(B)
24906 -> nb_getval('$chr_store_global_ground_chr_translate____ai_not_observed_internal___2',
24907 C),
24908 C=[_|D],
24909 b_setval('$chr_store_global_ground_chr_translate____ai_not_observed_internal___2',
24910 D),
24911 ( D=[E|_]
24912 -> setarg(3, E, _)
24913 ; true
24914 )
24915 ; B=[_, _|D],
24916 setarg(2, B, D),
24917 ( D=[E|_]
24918 -> setarg(3, E, B)
24919 ; true
24920 )
24921 )
24922 ),
24923 nb_getval('$chr_store_multi_hash_chr_translate____ai_not_observed_internal___2-12',
24924 F),
24925 delete_ht(F, k(G, H), A)
24926 ),
24927 ( arg(2, I, J),
24928 setarg(2, I, active),
24929 ( J==not_stored_yet
24930 -> nb_getval('$chr_store_global_ground_chr_translate____ai_observation_gather_results___0',
24931 K),
24932 L=[I|K],
24933 b_setval('$chr_store_global_ground_chr_translate____ai_observation_gather_results___0',
24934 L),
24935 ( K=[M|_]
24936 -> setarg(3, M, L)
24937 ; true
24938 )
24939 ; true
24940 )
24941 ),
24942 ai_not_observed(G, H),
24943 ( I=suspension(_, active, _)
24944 -> setarg(2, I, inactive),
24945 ai_observation_gather_results___0__1__0__2(N, I)
24946 ; true
24947 )
24948 ; ai_observation_gather_results___0__1__0__2(N, I)
24949 ).
24950ai_observation_gather_results___0__1(A) :-
24951 A=suspension(B, not_stored_yet, _),
24952 'chr gen_id'(B),
24953 ai_observation_gather_results___0__2(A).
24954ai_observation_gather_results___0__2(A) :-
24955 ( var(A)
24956 -> true
24957 ; arg(2, A, B),
24958 setarg(2, A, removed),
24959 ( B==not_stored_yet
24960 -> true
24961 ; arg(3, A, C),
24962 ( var(C)
24963 -> nb_getval('$chr_store_global_ground_chr_translate____ai_observation_gather_results___0',
24964 D),
24965 D=[_|E],
24966 b_setval('$chr_store_global_ground_chr_translate____ai_observation_gather_results___0',
24967 E),
24968 ( E=[F|_]
24969 -> setarg(3, F, _)
24970 ; true
24971 )
24972 ; C=[_, _|E],
24973 setarg(2, C, E),
24974 ( E=[F|_]
24975 -> setarg(3, F, C)
24976 ; true
24977 )
24978 )
24979 )
24980 ).
24981ai_observation_memo_simplification_rest_heads(B, C, F) :-
24982 nb_getval('$chr_store_multi_hash_chr_translate____ai_observation_memoed_simplification_rest_heads___3-12',
24983 A),
24984 lookup_ht(A, k(B, C), D),
24985 member(E, D),
24986 E=suspension(_, active, _, _, G),
24987 !,
24988 F=G.
24989ai_observation_memo_simplification_rest_heads(B, C, V) :-
24990 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-12',
24991 A),
24992 lookup_ht(A, k(B, C), D),
24993 member(E, D),
24994 E=suspension(_, active, _, _, _, _, G, M, _),
24995 nb_getval('$chr_store_multi_hash_chr_translate____rule___2-1', F),
24996 lookup_ht(F, G, H),
24997 member(I, H),
24998 I=suspension(_, active, _, _, _, L),
24999 nb_getval('$chr_store_global_ground_chr_translate____abstract_constraints___1',
25000 J),
25001 member(K, J),
25002 K=suspension(_, active, _, Q),
25003 !,
25004 L=pragma(rule(O, R, _, _), ids(N, _), _, _, _),
25005 once(select2(M, _, N, O, _, P)),
25006 ai_observation_abstract_constraints(P, Q, S),
25007 ai_observation_abstract_constraints(R, Q, T),
25008 append(S, T, U),
25009 sort(U, V),
25010 ai_observation_memoed_simplification_rest_heads(B, C, V).
25011ai_observation_memo_simplification_rest_heads(_, _, _) :-
25012 fail.
25013ai_observation_memoed_simplification_rest_heads(A, B, C) :-
25014 F=suspension(D, active, A, B, C),
25015 'chr gen_id'(D),
25016 nb_getval('$chr_store_multi_hash_chr_translate____ai_observation_memoed_simplification_rest_heads___3-12',
25017 E),
25018 insert_ht(E, k(A, B), F).
25019ai_observation_memo_propagation_rest_heads(B, C, F) :-
25020 nb_getval('$chr_store_multi_hash_chr_translate____ai_observation_memoed_propagation_rest_heads___3-12',
25021 A),
25022 lookup_ht(A, k(B, C), D),
25023 member(E, D),
25024 E=suspension(_, active, _, _, G),
25025 !,
25026 F=G.
25027ai_observation_memo_propagation_rest_heads(B, C, V) :-
25028 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-12',
25029 A),
25030 lookup_ht(A, k(B, C), D),
25031 member(E, D),
25032 E=suspension(_, active, _, _, _, _, G, M, _),
25033 nb_getval('$chr_store_multi_hash_chr_translate____rule___2-1', F),
25034 lookup_ht(F, G, H),
25035 member(I, H),
25036 I=suspension(_, active, _, _, _, L),
25037 nb_getval('$chr_store_global_ground_chr_translate____abstract_constraints___1',
25038 J),
25039 member(K, J),
25040 K=suspension(_, active, _, Q),
25041 !,
25042 L=pragma(rule(R, O, _, _), ids(_, N), _, _, _),
25043 once(select2(M, _, N, O, _, P)),
25044 ai_observation_abstract_constraints(P, Q, S),
25045 ai_observation_abstract_constraints(R, Q, T),
25046 append(S, T, U),
25047 sort(U, V),
25048 ai_observation_memoed_propagation_rest_heads(B, C, V).
25049ai_observation_memo_propagation_rest_heads(_, _, _) :-
25050 fail.
25051ai_observation_memoed_propagation_rest_heads(A, B, C) :-
25052 F=suspension(D, active, A, B, C),
25053 'chr gen_id'(D),
25054 nb_getval('$chr_store_multi_hash_chr_translate____ai_observation_memoed_propagation_rest_heads___3-12',
25055 E),
25056 insert_ht(E, k(A, B), F).
25057ai_observation_memoed_abstract_goal(A, B) :-
25058 E=suspension(C, active, A, B),
25059 'chr gen_id'(C),
25060 nb_getval('$chr_store_multi_hash_chr_translate____ai_observation_memoed_abstract_goal___2-1',
25061 D),
25062 insert_ht(D, A, E).
25063ai_observation_memo_abstract_goal(B, E) :-
25064 nb_getval('$chr_store_multi_hash_chr_translate____ai_observation_memoed_abstract_goal___2-1',
25065 A),
25066 lookup_ht(A, B, C),
25067 member(D, C),
25068 D=suspension(_, active, _, F),
25069 !,
25070 E=F.
25071ai_observation_memo_abstract_goal(B, M) :-
25072 nb_getval('$chr_store_multi_hash_chr_translate____rule___2-1', A),
25073 lookup_ht(A, B, C),
25074 member(D, C),
25075 D=suspension(_, active, _, _, _, G),
25076 nb_getval('$chr_store_global_ground_chr_translate____abstract_constraints___1',
25077 E),
25078 member(F, E),
25079 F=suspension(_, active, _, L),
25080 !,
25081 G=pragma(rule(H, I, J, K), _, _, _, _),
25082 ai_observation_abstract_goal_(H,
25083 I,
25084 J,
25085 K,
25086 L,
25087 N),
25088 M=N,
25089 ai_observation_memoed_abstract_goal(B, N).
25090ai_observation_memo_abstract_goal(A, B) :-
25091 D=suspension(C, active, _, A, B),
25092 'chr gen_id'(C),
25093 nb_getval('$chr_store_global_ground_chr_translate____ai_observation_memo_abstract_goal___2',
25094 E),
25095 F=[D|E],
25096 b_setval('$chr_store_global_ground_chr_translate____ai_observation_memo_abstract_goal___2',
25097 F),
25098 ( E=[G|_]
25099 -> setarg(3, G, F)
25100 ; true
25101 ).
25102partial_wake_analysis :-
25103 partial_wake_analysis___0__0(_).
25104partial_wake_analysis___0__0(A) :-
25105 nb_getval('$chr_store_global_ground_chr_translate____occurrence___5',
25106 C),
25107 !,
25108 A=suspension(B, not_stored_yet, t, _),
25109 'chr gen_id'(B),
25110 partial_wake_analysis___0__0__0__1(C, A).
25111partial_wake_analysis___0__0__0__1([], A) :-
25112 partial_wake_analysis___0__1(A).
25113partial_wake_analysis___0__0__0__1([A|H], I) :-
25114 ( A=suspension(_, active, _, _, C, _, E, F, G),
25115 nb_getval('$chr_store_multi_hash_chr_translate____constraint_mode___2-1',
25116 B),
25117 lookup_ht(B, C, D)
25118 -> partial_wake_analysis___0__0__1__1(D,
25119 C,
25120 E,
25121 F,
25122 G,
25123 A,
25124 H,
25125 I)
25126 ; partial_wake_analysis___0__0__0__1(H, I)
25127 ).
25128partial_wake_analysis___0__0__1__1([], _, _, _, _, _, A, B) :-
25129 partial_wake_analysis___0__0__0__1(A, B).
25130partial_wake_analysis___0__0__1__1([A|H], C, E, I, J, K, L, M) :-
25131 ( ( A=suspension(_, active, _, _, B, G),
25132 B==C
25133 ),
25134 nb_getval('$chr_store_multi_hash_chr_translate____rule___2-1', D),
25135 lookup_ht(D, E, F)
25136 -> partial_wake_analysis___0__0__2__1(F,
25137 G,
25138 A,
25139 H,
25140 C,
25141 E,
25142 I,
25143 J,
25144 K,
25145 L,
25146 M)
25147 ; partial_wake_analysis___0__0__1__1(H,
25148 C,
25149 E,
25150 I,
25151 J,
25152 K,
25153 L,
25154 M)
25155 ).
25156partial_wake_analysis___0__0__2__1([], _, _, A, B, C, D, E, F, G, H) :-
25157 partial_wake_analysis___0__0__1__1(A,
25158 B,
25159 C,
25160 D,
25161 E,
25162 F,
25163 G,
25164 H).
25165partial_wake_analysis___0__0__2__1([A|W], S, F, X, U, C, M, N, E, Y, D) :-
25166 ( A=suspension(_, active, _, _, B, L),
25167 B==C,
25168 G=t(330, D, E, A, F),
25169 '$novel_production'(D, G),
25170 '$novel_production'(E, G),
25171 '$novel_production'(A, G),
25172 '$novel_production'(F, G)
25173 -> '$extend_history'(D, G),
25174 ( arg(2, D, H),
25175 setarg(2, D, active),
25176 ( H==not_stored_yet
25177 -> nb_getval('$chr_store_global_ground_chr_translate____partial_wake_analysis___0',
25178 I),
25179 J=[D|I],
25180 b_setval('$chr_store_global_ground_chr_translate____partial_wake_analysis___0',
25181 J),
25182 ( I=[K|_]
25183 -> setarg(4, K, J)
25184 ; true
25185 )
25186 ; true
25187 )
25188 ),
25189 ( L=pragma(rule(O, V, Q, _), _, _, _, _),
25190 ( is_passive(C, M)
25191 -> true
25192 ; N==simplification
25193 -> select(P, O, _),
25194 P=..[_|R],
25195 term_variables(Q, T),
25196 partial_wake_args(R, S, T, U)
25197 ; select(P, V, _),
25198 P=..[_|R],
25199 term_variables(Q, T),
25200 partial_wake_args(R, S, T, U)
25201 )
25202 ),
25203 ( D=suspension(_, active, _, _)
25204 -> setarg(2, D, inactive),
25205 partial_wake_analysis___0__0__2__1(W,
25206 S,
25207 F,
25208 X,
25209 U,
25210 C,
25211 M,
25212 N,
25213 E,
25214 Y,
25215 D)
25216 ; true
25217 )
25218 ; partial_wake_analysis___0__0__2__1(W,
25219 S,
25220 F,
25221 X,
25222 U,
25223 C,
25224 M,
25225 N,
25226 E,
25227 Y,
25228 D)
25229 ).
25230partial_wake_analysis___0__0(A) :-
25231 A=suspension(B, not_stored_yet, t, _),
25232 'chr gen_id'(B),
25233 partial_wake_analysis___0__1(A).
25234partial_wake_analysis___0__1(A) :-
25235 arg(2, A, B),
25236 setarg(2, A, active),
25237 ( B==not_stored_yet
25238 -> nb_getval('$chr_store_global_ground_chr_translate____partial_wake_analysis___0',
25239 C),
25240 D=[A|C],
25241 b_setval('$chr_store_global_ground_chr_translate____partial_wake_analysis___0',
25242 D),
25243 ( C=[E|_]
25244 -> setarg(4, E, D)
25245 ; true
25246 )
25247 ; true
25248 ).
25249no_partial_wake(B) :-
25250 nb_getval('$chr_store_multi_hash_chr_translate____no_partial_wake___1-1',
25251 A),
25252 lookup_ht(A, B, C),
25253 member(D, C),
25254 D=suspension(_, active, _),
25255 !.
25256no_partial_wake(A) :-
25257 D=suspension(B, active, A),
25258 'chr gen_id'(B),
25259 nb_getval('$chr_store_multi_hash_chr_translate____no_partial_wake___1-1',
25260 C),
25261 insert_ht(C, A, D).
25262wakes_partially(B) :-
25263 nb_getval('$chr_store_multi_hash_chr_translate____no_partial_wake___1-1',
25264 A),
25265 lookup_ht(A, B, C),
25266 member(D, C),
25267 D=suspension(_, active, _),
25268 !,
25269 fail.
25270wakes_partially(_).
25271phase_end(A) :-
25272 phase_end___1__0(A, _).
25273phase_end___1__0(B, C) :-
25274 nb_getval('$chr_store_multi_hash_chr_translate____delay_phase_end___2-1',
25275 A),
25276 lookup_ht(A, B, E),
25277 !,
25278 C=suspension(D, not_stored_yet, B),
25279 'chr gen_id'(D),
25280 phase_end___1__0__0__1(E, B, C).
25281phase_end___1__0__0__1([], A, B) :-
25282 phase_end___1__1(A, B).
25283phase_end___1__0__0__1([A|I], C, E) :-
25284 ( A=suspension(_, active, B, H),
25285 B==C
25286 -> ( setarg(2, A, removed),
25287 nb_getval('$chr_store_multi_hash_chr_translate____delay_phase_end___2-1',
25288 D),
25289 delete_ht(D, C, A)
25290 ),
25291 ( arg(2, E, F),
25292 setarg(2, E, active),
25293 ( F==not_stored_yet
25294 -> nb_getval('$chr_store_multi_hash_chr_translate____phase_end___1-1',
25295 G),
25296 insert_ht(G, C, E)
25297 ; true
25298 )
25299 ),
25300 call(H),
25301 ( E=suspension(_, active, _)
25302 -> setarg(2, E, inactive),
25303 phase_end___1__0__0__1(I, C, E)
25304 ; true
25305 )
25306 ; phase_end___1__0__0__1(I, C, E)
25307 ).
25308phase_end___1__0(B, A) :-
25309 A=suspension(C, not_stored_yet, B),
25310 'chr gen_id'(C),
25311 phase_end___1__1(B, A).
25312phase_end___1__1(D, A) :-
25313 arg(2, A, B),
25314 setarg(2, A, active),
25315 ( B==not_stored_yet
25316 -> nb_getval('$chr_store_multi_hash_chr_translate____phase_end___1-1',
25317 C),
25318 insert_ht(C, D, A)
25319 ; true
25320 ).
25321delay_phase_end(B, E) :-
25322 nb_getval('$chr_store_multi_hash_chr_translate____phase_end___1-1', A),
25323 lookup_ht(A, B, C),
25324 member(D, C),
25325 D=suspension(_, active, _),
25326 !,
25327 call(E).
25328delay_phase_end(A, B) :-
25329 E=suspension(C, active, A, B),
25330 'chr gen_id'(C),
25331 nb_getval('$chr_store_multi_hash_chr_translate____delay_phase_end___2-1',
25332 D),
25333 insert_ht(D, A, E).
25334does_use_history(B, C) :-
25335 nb_getval('$chr_store_multi_hash_chr_translate____does_use_history___2-12',
25336 A),
25337 lookup_ht(A, k(B, C), D),
25338 member(E, D),
25339 E=suspension(_, active, _, _),
25340 !.
25341does_use_history(A, B) :-
25342 E=suspension(C, active, A, B),
25343 'chr gen_id'(C),
25344 nb_getval('$chr_store_multi_hash_chr_translate____does_use_history___2-1',
25345 D),
25346 insert_ht(D, A, E),
25347 nb_getval('$chr_store_multi_hash_chr_translate____does_use_history___2-12',
25348 F),
25349 insert_ht(F, k(A, B), E).
25350uses_history(B) :-
25351 nb_getval('$chr_store_multi_hash_chr_translate____does_use_history___2-1',
25352 A),
25353 lookup_ht(A, B, C),
25354 member(D, C),
25355 D=suspension(_, active, _, _),
25356 !.
25357uses_history(_) :-
25358 fail.
25359novel_production_call(B, C, G, F) :-
25360 nb_getval('$chr_store_multi_hash_chr_translate____does_use_history___2-12',
25361 A),
25362 lookup_ht(A, k(B, C), D),
25363 member(E, D),
25364 E=suspension(_, active, _, _),
25365 !,
25366 F=G.
25367novel_production_call(_, _, _, true).
25368does_use_field(B, C) :-
25369 nb_getval('$chr_store_multi_hash_chr_translate____does_use_field___2-12',
25370 A),
25371 lookup_ht(A, k(B, C), D),
25372 member(E, D),
25373 E=suspension(_, active, _, _),
25374 !.
25375does_use_field(A, B) :-
25376 E=suspension(C, active, A, B),
25377 'chr gen_id'(C),
25378 nb_getval('$chr_store_multi_hash_chr_translate____does_use_field___2-12',
25379 D),
25380 insert_ht(D, k(A, B), E).
25381uses_field(B, C) :-
25382 nb_getval('$chr_store_multi_hash_chr_translate____does_use_field___2-12',
25383 A),
25384 lookup_ht(A, k(B, C), D),
25385 member(E, D),
25386 E=suspension(_, active, _, _),
25387 !.
25388uses_field(_, _) :-
25389 fail.
25390uses_state(A, B) :-
25391 uses_state___2__0(A, B, _).
25392uses_state___2__0(B, C, _) :-
25393 nb_getval('$chr_store_multi_hash_chr_translate____uses_state___2-12',
25394 A),
25395 lookup_ht(A, k(B, C), D),
25396 member(E, D),
25397 E=suspension(_, active, _, _),
25398 !.
25399uses_state___2__0(B, C, A) :-
25400 nb_getval('$chr_store_global_ground_chr_translate____used_states_known___0',
25401 E),
25402 !,
25403 A=suspension(D, not_stored_yet, B, C),
25404 'chr gen_id'(D),
25405 uses_state___2__0__0__3(E, B, C, A).
25406uses_state___2__0__0__3([], A, B, C) :-
25407 uses_state___2__1(A, B, C).
25408uses_state___2__0__0__3([A|F], C, D, G) :-
25409 ( A=suspension(_, active, _),
25410 nb_getval('$chr_store_multi_hash_chr_translate____if_used_state___5-12',
25411 B),
25412 lookup_ht(B, k(C, D), E)
25413 -> uses_state___2__0__1__3(E,
25414 A,
25415 F,
25416 C,
25417 D,
25418 G)
25419 ; uses_state___2__0__0__3(F, C, D, G)
25420 ).
25421uses_state___2__0__1__3([], _, A, B, C, D) :-
25422 uses_state___2__0__0__3(A, B, C, D).
25423uses_state___2__0__1__3([A|P], Q, R, C, E, K) :-
25424 ( A=suspension(_, active, _, B, D, O, _, N),
25425 B==C,
25426 D==E
25427 -> ( setarg(2, A, removed),
25428 ( arg(3, A, F),
25429 ( var(F)
25430 -> nb_getval('$chr_store_global_ground_chr_translate____if_used_state___5',
25431 G),
25432 G=[_|H],
25433 b_setval('$chr_store_global_ground_chr_translate____if_used_state___5',
25434 H),
25435 ( H=[I|_]
25436 -> setarg(3, I, _)
25437 ; true
25438 )
25439 ; F=[_, _|H],
25440 setarg(2, F, H),
25441 ( H=[I|_]
25442 -> setarg(3, I, F)
25443 ; true
25444 )
25445 )
25446 ),
25447 nb_getval('$chr_store_multi_hash_chr_translate____if_used_state___5-12',
25448 J),
25449 delete_ht(J, k(C, E), A)
25450 ),
25451 ( arg(2, K, L),
25452 setarg(2, K, active),
25453 ( L==not_stored_yet
25454 -> nb_getval('$chr_store_multi_hash_chr_translate____uses_state___2-12',
25455 M),
25456 insert_ht(M, k(C, E), K)
25457 ; true
25458 )
25459 ),
25460 N=O,
25461 ( K=suspension(_, active, _, _)
25462 -> setarg(2, K, inactive),
25463 uses_state___2__0__1__3(P,
25464 Q,
25465 R,
25466 C,
25467 E,
25468 K)
25469 ; true
25470 )
25471 ; uses_state___2__0__1__3(P,
25472 Q,
25473 R,
25474 C,
25475 E,
25476 K)
25477 ).
25478uses_state___2__0(B, C, A) :-
25479 A=suspension(D, not_stored_yet, B, C),
25480 'chr gen_id'(D),
25481 uses_state___2__1(B, C, A).
25482uses_state___2__1(D, E, A) :-
25483 arg(2, A, B),
25484 setarg(2, A, active),
25485 ( B==not_stored_yet
25486 -> nb_getval('$chr_store_multi_hash_chr_translate____uses_state___2-12',
25487 C),
25488 insert_ht(C, k(D, E), A)
25489 ; true
25490 ).
25491if_used_state(D, E, I, J, H) :-
25492 ( nb_getval('$chr_store_global_ground_chr_translate____used_states_known___0',
25493 A),
25494 member(B, A),
25495 B=suspension(_, active, _)
25496 ),
25497 ( nb_getval('$chr_store_multi_hash_chr_translate____uses_state___2-12',
25498 C),
25499 lookup_ht(C, k(D, E), F),
25500 member(G, F),
25501 G=suspension(_, active, _, _),
25502 !,
25503 H=I
25504 ; !,
25505 H=J
25506 ).
25507if_used_state(A, B, C, D, E) :-
25508 G=suspension(F, active, _, A, B, C, D, E),
25509 'chr gen_id'(F),
25510 nb_getval('$chr_store_global_ground_chr_translate____if_used_state___5',
25511 H),
25512 I=[G|H],
25513 b_setval('$chr_store_global_ground_chr_translate____if_used_state___5',
25514 I),
25515 ( H=[J|_]
25516 -> setarg(3, J, I)
25517 ; true
25518 ),
25519 nb_getval('$chr_store_multi_hash_chr_translate____if_used_state___5-12',
25520 K),
25521 insert_ht(K, k(A, B), G).
25522used_states_known :-
25523 used_states_known___0__0(_).
25524used_states_known___0__0(A) :-
25525 nb_getval('$chr_store_global_ground_chr_translate____if_used_state___5',
25526 C),
25527 !,
25528 A=suspension(B, not_stored_yet, _),
25529 'chr gen_id'(B),
25530 used_states_known___0__0__0__1(C, A).
25531used_states_known___0__0__0__1([], A) :-
25532 used_states_known___0__1(A).
25533used_states_known___0__0__0__1([A|S], L) :-
25534 ( A=suspension(_, active, _, B, C, R, _, Q),
25535 ( ( ground(B),
25536 ground(C)
25537 ),
25538 nb_getval('$chr_store_multi_hash_chr_translate____uses_state___2-12',
25539 D),
25540 lookup_ht(D, k(B, C), E)
25541 ),
25542 member(F, E),
25543 F=suspension(_, active, _, _)
25544 -> ( setarg(2, A, removed),
25545 ( arg(3, A, G),
25546 ( var(G)
25547 -> nb_getval('$chr_store_global_ground_chr_translate____if_used_state___5',
25548 H),
25549 H=[_|I],
25550 b_setval('$chr_store_global_ground_chr_translate____if_used_state___5',
25551 I),
25552 ( I=[J|_]
25553 -> setarg(3, J, _)
25554 ; true
25555 )
25556 ; G=[_, _|I],
25557 setarg(2, G, I),
25558 ( I=[J|_]
25559 -> setarg(3, J, G)
25560 ; true
25561 )
25562 )
25563 ),
25564 nb_getval('$chr_store_multi_hash_chr_translate____if_used_state___5-12',
25565 K),
25566 delete_ht(K, k(B, C), A)
25567 ),
25568 ( arg(2, L, M),
25569 setarg(2, L, active),
25570 ( M==not_stored_yet
25571 -> nb_getval('$chr_store_global_ground_chr_translate____used_states_known___0',
25572 N),
25573 O=[L|N],
25574 b_setval('$chr_store_global_ground_chr_translate____used_states_known___0',
25575 O),
25576 ( N=[P|_]
25577 -> setarg(3, P, O)
25578 ; true
25579 )
25580 ; true
25581 )
25582 ),
25583 Q=R,
25584 ( L=suspension(_, active, _)
25585 -> setarg(2, L, inactive),
25586 used_states_known___0__0__0__1(S, L)
25587 ; true
25588 )
25589 ; used_states_known___0__0__0__1(S, L)
25590 ).
25591used_states_known___0__0(A) :-
25592 A=suspension(B, not_stored_yet, _),
25593 'chr gen_id'(B),
25594 used_states_known___0__1(A).
25595used_states_known___0__1(B) :-
25596 nb_getval('$chr_store_global_ground_chr_translate____if_used_state___5',
25597 A),
25598 !,
25599 used_states_known___0__1__0__2(A, B).
25600used_states_known___0__1__0__2([], A) :-
25601 used_states_known___0__2(A).
25602used_states_known___0__1__0__2([A|P], I) :-
25603 ( A=suspension(_, active, _, G, H, _, O, N)
25604 -> ( setarg(2, A, removed),
25605 ( arg(3, A, B),
25606 ( var(B)
25607 -> nb_getval('$chr_store_global_ground_chr_translate____if_used_state___5',
25608 C),
25609 C=[_|D],
25610 b_setval('$chr_store_global_ground_chr_translate____if_used_state___5',
25611 D),
25612 ( D=[E|_]
25613 -> setarg(3, E, _)
25614 ; true
25615 )
25616 ; B=[_, _|D],
25617 setarg(2, B, D),
25618 ( D=[E|_]
25619 -> setarg(3, E, B)
25620 ; true
25621 )
25622 )
25623 ),
25624 nb_getval('$chr_store_multi_hash_chr_translate____if_used_state___5-12',
25625 F),
25626 delete_ht(F, k(G, H), A)
25627 ),
25628 ( arg(2, I, J),
25629 setarg(2, I, active),
25630 ( J==not_stored_yet
25631 -> nb_getval('$chr_store_global_ground_chr_translate____used_states_known___0',
25632 K),
25633 L=[I|K],
25634 b_setval('$chr_store_global_ground_chr_translate____used_states_known___0',
25635 L),
25636 ( K=[M|_]
25637 -> setarg(3, M, L)
25638 ; true
25639 )
25640 ; true
25641 )
25642 ),
25643 N=O,
25644 ( I=suspension(_, active, _)
25645 -> setarg(2, I, inactive),
25646 used_states_known___0__1__0__2(P, I)
25647 ; true
25648 )
25649 ; used_states_known___0__1__0__2(P, I)
25650 ).
25651used_states_known___0__1(A) :-
25652 used_states_known___0__2(A).
25653used_states_known___0__2(A) :-
25654 arg(2, A, B),
25655 setarg(2, A, active),
25656 ( B==not_stored_yet
25657 -> nb_getval('$chr_store_global_ground_chr_translate____used_states_known___0',
25658 C),
25659 D=[A|C],
25660 b_setval('$chr_store_global_ground_chr_translate____used_states_known___0',
25661 D),
25662 ( C=[E|_]
25663 -> setarg(3, E, D)
25664 ; true
25665 )
25666 ; true
25667 ).
25668stored_assertion(A) :-
25669 D=suspension(B, active, A),
25670 'chr gen_id'(B),
25671 nb_getval('$chr_store_multi_hash_chr_translate____stored_assertion___1-1',
25672 C),
25673 insert_ht(C, A, D).
25674never_stored_default(A, B) :-
25675 never_stored_default___2__0(A, B, _).
25676never_stored_default___2__0(B, C, A) :-
25677 nb_getval('$chr_store_global_ground_chr_translate____never_stored_rules___2',
25678 E),
25679 !,
25680 A=suspension(D, not_stored_yet, B, C),
25681 'chr gen_id'(D),
25682 never_stored_default___2__0__0__1(E, B, C, A).
25683never_stored_default___2__0__0__1([], A, B, C) :-
25684 never_stored_default___2__1(A, B, C).
25685never_stored_default___2__0__0__1([A|U], D, O, I) :-
25686 ( A=suspension(_, active, _, B, Q),
25687 B=[C|S],
25688 C==D
25689 -> ( setarg(2, A, removed),
25690 arg(3, A, E),
25691 ( var(E)
25692 -> nb_getval('$chr_store_global_ground_chr_translate____never_stored_rules___2',
25693 F),
25694 F=[_|G],
25695 b_setval('$chr_store_global_ground_chr_translate____never_stored_rules___2',
25696 G),
25697 ( G=[H|_]
25698 -> setarg(3, H, _)
25699 ; true
25700 )
25701 ; E=[_, _|G],
25702 setarg(2, E, G),
25703 ( G=[H|_]
25704 -> setarg(3, H, E)
25705 ; true
25706 )
25707 )
25708 ),
25709 ( arg(2, I, J),
25710 setarg(2, I, active),
25711 ( J==not_stored_yet
25712 -> nb_getval('$chr_store_multi_hash_chr_translate____never_stored_default___2-1',
25713 K),
25714 insert_ht(K, D, I)
25715 ; true
25716 )
25717 ),
25718 ( D=L/M,
25719 functor(N, L, M),
25720 inc_rule_count(P),
25721 R=pragma(rule([N], [], true, O), ids([0], []), [], no, P),
25722 Q=[R|T],
25723 never_stored_rules(S, T)
25724 ),
25725 ( I=suspension(_, active, _, _)
25726 -> setarg(2, I, inactive),
25727 never_stored_default___2__0__0__1(U,
25728 D,
25729 O,
25730 I)
25731 ; true
25732 )
25733 ; never_stored_default___2__0__0__1(U, D, O, I)
25734 ).
25735never_stored_default___2__0(B, C, A) :-
25736 A=suspension(D, not_stored_yet, B, C),
25737 'chr gen_id'(D),
25738 never_stored_default___2__1(B, C, A).
25739never_stored_default___2__1(D, _, A) :-
25740 arg(2, A, B),
25741 setarg(2, A, active),
25742 ( B==not_stored_yet
25743 -> nb_getval('$chr_store_multi_hash_chr_translate____never_stored_default___2-1',
25744 C),
25745 insert_ht(C, D, A)
25746 ; true
25747 ).
25748never_stored_rules([], A) :-
25749 !,
25750 A=[].
25751never_stored_rules([B|L], J) :-
25752 nb_getval('$chr_store_multi_hash_chr_translate____never_stored_default___2-1',
25753 A),
25754 lookup_ht(A, B, C),
25755 member(D, C),
25756 D=suspension(_, active, _, H),
25757 !,
25758 B=E/F,
25759 functor(G, E, F),
25760 inc_rule_count(I),
25761 K=pragma(rule([G], [], true, H), ids([0], []), [], no, I),
25762 J=[K|M],
25763 never_stored_rules(L, M).
25764never_stored_rules([_|A], B) :-
25765 !,
25766 never_stored_rules(A, B).
25767never_stored_rules(A, B) :-
25768 D=suspension(C, active, _, A, B),
25769 'chr gen_id'(C),
25770 nb_getval('$chr_store_global_ground_chr_translate____never_stored_rules___2',
25771 E),
25772 F=[D|E],
25773 b_setval('$chr_store_global_ground_chr_translate____never_stored_rules___2',
25774 F),
25775 ( E=[G|_]
25776 -> setarg(3, G, F)
25777 ; true
25778 ).
25779check_storedness_assertion(B) :-
25780 nb_getval('$chr_store_multi_hash_chr_translate____stored_assertion___1-1',
25781 A),
25782 lookup_ht(A, B, C),
25783 member(D, C),
25784 D=suspension(_, active, _),
25785 !,
25786 setarg(2, D, removed),
25787 nb_getval('$chr_store_multi_hash_chr_translate____stored_assertion___1-1',
25788 E),
25789 delete_ht(E, B, D),
25790 ( is_stored(B)
25791 -> true
25792 ; chr_warning(assertion_failed,
25793 'Constraint ~w is not stored. However, it was asserted to be stored.\n',
25794 [B])
25795 ).
25796check_storedness_assertion(B) :-
25797 nb_getval('$chr_store_multi_hash_chr_translate____never_stored_default___2-1',
25798 A),
25799 lookup_ht(A, B, C),
25800 member(D, C),
25801 D=suspension(_, active, _, _),
25802 !,
25803 ( is_finally_stored(B)
25804 -> chr_warning(assertion_failed,
25805 'Constraint ~w is stored. However, it was asserted not to be stored.\n',
25806 [B])
25807 ; is_stored(B)
25808 -> chr_warning(assertion_failed,
25809 'Constraint ~w is temporarily stored. However, it was asserted not to be stored.\n',
25810 [B])
25811 ; true
25812 ).
25813check_storedness_assertion(A) :-
25814 ( is_finally_stored(A)
25815 -> chr_warning(assertion_failed,
25816 'Constraint ~w is stored. However, it was asserted not to be stored.\n',
25817 [A])
25818 ; is_stored(A)
25819 -> chr_warning(assertion_failed,
25820 'Constraint ~w is temporarily stored. However, it was asserted not to be stored.\n',
25821 [A])
25822 ; true
25823 ).
25824continuation_occurrence(A, B, C) :-
25825 F=suspension(D, active, A, B, C),
25826 'chr gen_id'(D),
25827 nb_getval('$chr_store_multi_hash_chr_translate____continuation_occurrence___3-12',
25828 E),
25829 insert_ht(E, k(A, B), F).
25830get_success_continuation_occurrence(B, C, F) :-
25831 nb_getval('$chr_store_multi_hash_chr_translate____continuation_occurrence___3-12',
25832 A),
25833 lookup_ht(A, k(B, C), D),
25834 member(E, D),
25835 E=suspension(_, active, _, _, G),
25836 !,
25837 F=G.
25838get_success_continuation_occurrence(A, B, _) :-
25839 chr_error(internal,
25840 'Success continuation not found for ~w.\n',
25841 [A:B]).
25842skip_to_next_id(A, B) :-
25843 skip_to_next_id___2__0(A, B, _).
25844skip_to_next_id___2__0(B, C, _) :-
25845 nb_getval('$chr_store_multi_hash_chr_translate____skip_to_next_id___2-12',
25846 A),
25847 lookup_ht(A, k(B, C), D),
25848 member(E, D),
25849 E=suspension(_, active, _, _, _),
25850 !.
25851skip_to_next_id___2__0(B, C, D) :-
25852 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-12',
25853 A),
25854 lookup_ht(A, k(B, C), F),
25855 !,
25856 D=suspension(E, not_stored_yet, t, B, C),
25857 'chr gen_id'(E),
25858 skip_to_next_id___2__0__0__4(F, B, C, D).
25859skip_to_next_id___2__0__0__4([], A, B, C) :-
25860 skip_to_next_id___2__1(A, B, C).
25861skip_to_next_id___2__0__0__4([A|J], C, E, K) :-
25862 ( ( A=suspension(_, active, _, _, B, D, G, H, _),
25863 B==C,
25864 D==E
25865 ),
25866 nb_getval('$chr_store_multi_hash_chr_translate____passive___2-12',
25867 F),
25868 lookup_ht(F, k(G, H), I)
25869 -> skip_to_next_id___2__0__1__4(I,
25870 G,
25871 H,
25872 A,
25873 J,
25874 C,
25875 E,
25876 K)
25877 ; skip_to_next_id___2__0__0__4(J, C, E, K)
25878 ).
25879skip_to_next_id___2__0__1__4([], _, _, _, A, B, C, D) :-
25880 skip_to_next_id___2__0__0__4(A, B, C, D).
25881skip_to_next_id___2__0__1__4([A|N], C, E, F, O, L, I, G) :-
25882 ( A=suspension(_, active, _, B, D),
25883 ( B==C,
25884 D==E
25885 ),
25886 ( H=t(362, F, A, G),
25887 '$novel_production'(F, H),
25888 '$novel_production'(A, H),
25889 '$novel_production'(G, H)
25890 ),
25891 I>1
25892 -> '$extend_history'(G, H),
25893 ( arg(2, G, J),
25894 setarg(2, G, active),
25895 ( J==not_stored_yet
25896 -> nb_getval('$chr_store_multi_hash_chr_translate____skip_to_next_id___2-12',
25897 K),
25898 insert_ht(K, k(L, I), G)
25899 ; true
25900 )
25901 ),
25902 ( M is I-1,
25903 skip_to_next_id(L, M)
25904 ),
25905 ( G=suspension(_, active, _, _, _)
25906 -> setarg(2, G, inactive),
25907 skip_to_next_id___2__0__1__4(N,
25908 C,
25909 E,
25910 F,
25911 O,
25912 L,
25913 I,
25914 G)
25915 ; true
25916 )
25917 ; skip_to_next_id___2__0__1__4(N,
25918 C,
25919 E,
25920 F,
25921 O,
25922 L,
25923 I,
25924 G)
25925 ).
25926skip_to_next_id___2__0(B, C, A) :-
25927 A=suspension(D, not_stored_yet, t, B, C),
25928 'chr gen_id'(D),
25929 skip_to_next_id___2__1(B, C, A).
25930skip_to_next_id___2__1(B, C, E) :-
25931 nb_getval('$chr_store_multi_hash_chr_translate____set_occurrence_code_id___3-12',
25932 A),
25933 lookup_ht(A, k(B, C), D),
25934 !,
25935 skip_to_next_id___2__1__0__5(D, B, C, E).
25936skip_to_next_id___2__1__0__5([], A, B, C) :-
25937 skip_to_next_id___2__2(A, B, C).
25938skip_to_next_id___2__1__0__5([A|P], C, E, J) :-
25939 ( ( A=suspension(_, active, B, D, M),
25940 B==C,
25941 D==E
25942 ),
25943 ( ( ground(C),
25944 ground(E)
25945 ),
25946 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-125',
25947 F),
25948 lookup_ht(F, k(C, E, propagation), G)
25949 ),
25950 member(H, G),
25951 H=suspension(_, active, _, _, _, _, _, _, _)
25952 -> ( setarg(2, A, removed),
25953 nb_getval('$chr_store_multi_hash_chr_translate____set_occurrence_code_id___3-12',
25954 I),
25955 delete_ht(I, k(C, E), A)
25956 ),
25957 ( arg(2, J, K),
25958 setarg(2, J, active),
25959 ( K==not_stored_yet
25960 -> nb_getval('$chr_store_multi_hash_chr_translate____skip_to_next_id___2-12',
25961 L),
25962 insert_ht(L, k(C, E), J)
25963 ; true
25964 )
25965 ),
25966 ( occurrence_code_id(C, E, M),
25967 N is E+1,
25968 O is M+1,
25969 set_occurrence_code_id(C, N, O)
25970 ),
25971 ( J=suspension(_, active, _, _, _)
25972 -> setarg(2, J, inactive),
25973 skip_to_next_id___2__1__0__5(P, C, E, J)
25974 ; true
25975 )
25976 ; skip_to_next_id___2__1__0__5(P, C, E, J)
25977 ).
25978skip_to_next_id___2__1(A, B, C) :-
25979 skip_to_next_id___2__2(A, B, C).
25980skip_to_next_id___2__2(D, E, A) :-
25981 arg(2, A, B),
25982 setarg(2, A, active),
25983 ( B==not_stored_yet
25984 -> nb_getval('$chr_store_multi_hash_chr_translate____skip_to_next_id___2-12',
25985 C),
25986 insert_ht(C, k(D, E), A)
25987 ; true
25988 ).
25989should_skip_to_next_id(B, C) :-
25990 nb_getval('$chr_store_multi_hash_chr_translate____skip_to_next_id___2-12',
25991 A),
25992 lookup_ht(A, k(B, C), D),
25993 member(E, D),
25994 E=suspension(_, active, _, _, _),
25995 !.
25996should_skip_to_next_id(_, _) :-
25997 fail.
25998bulk_propagation(B, E, _) :-
25999 nb_getval('$chr_store_multi_hash_chr_translate____max_occurrence___2-1',
26000 A),
26001 lookup_ht(A, B, C),
26002 member(D, C),
26003 D=suspension(_, active, _, _, F),
26004 E>=F,
26005 !,
26006 skip_to_next_id(B, E).
26007bulk_propagation(C, B, A) :-
26008 A=:=B+1,
26009 !,
26010 skip_to_next_id(C, B),
26011 get_max_occurrence(C, D),
26012 E is D+1,
26013 bulk_propagation(C, A, E).
26014bulk_propagation(B, F, _) :-
26015 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-15',
26016 A),
26017 lookup_ht(A, k(B, simplification), C),
26018 member(D, C),
26019 D=suspension(_, active, _, _, _, E, _, _, _),
26020 E=:=F+1,
26021 !,
26022 skip_to_next_id(B, F),
26023 get_max_occurrence(B, G),
26024 H is G+1,
26025 bulk_propagation(B, E, H).
26026bulk_propagation(B, C, G) :-
26027 nb_getval('$chr_store_multi_hash_chr_translate____continuation_occurrence___3-12',
26028 A),
26029 lookup_ht(A, k(B, C), D),
26030 member(E, D),
26031 E=suspension(_, active, _, _, F),
26032 F>C+1,
26033 !,
26034 I is min(G, F),
26035 H is C+1,
26036 bulk_propagation(B, H, I).
26037bulk_propagation(A, B, _) :-
26038 skip_to_next_id(A, B),
26039 get_max_occurrence(A, C),
26040 E is C+1,
26041 D is B+1,
26042 bulk_propagation(A, D, E).
26043set_occurrence_code_id(A, B, D) :-
26044 get_max_occurrence(A, C),
26045 B>C,
26046 !,
26047 occurrence_code_id(A, B, D).
26048set_occurrence_code_id(B, C, K) :-
26049 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-12',
26050 A),
26051 lookup_ht(A, k(B, C), D),
26052 member(E, D),
26053 E=suspension(_, active, _, _, _, _, G, H, _),
26054 nb_getval('$chr_store_multi_hash_chr_translate____passive___2-12', F),
26055 lookup_ht(F, k(G, H), I),
26056 member(J, I),
26057 J=suspension(_, active, _, _, _),
26058 !,
26059 occurrence_code_id(B, C, K),
26060 L is C+1,
26061 set_occurrence_code_id(B, L, K).
26062set_occurrence_code_id(B, C, F) :-
26063 nb_getval('$chr_store_multi_hash_chr_translate____occurrence___5-125',
26064 A),
26065 ( ( lookup_ht(A, k(B, C, simplification), D),
26066 member(E, D),
26067 E=suspension(_, active, _, _, _, _, _, _, _),
26068 !,
26069 occurrence_code_id(B, C, F),
26070 G is C+1,
26071 set_occurrence_code_id(B, G, F)
26072 ; lookup_ht(A, k(B, C, propagation), H),
26073 member(I, H),
26074 I=suspension(_, active, _, _, _, _, _, _, _),
26075 nb_getval('$chr_store_multi_hash_chr_translate____skip_to_next_id___2-12',
26076 J),
26077 lookup_ht(J, k(B, C), K),
26078 member(L, K),
26079 L=suspension(_, active, _, _, _),
26080 !,
26081 occurrence_code_id(B, C, F),
26082 M is C+1,
26083 N is F+1,
26084 set_occurrence_code_id(B, M, N)
26085 )
26086 ; lookup_ht(A, k(B, C, propagation), O),
26087 member(P, O),
26088 P=suspension(_, active, _, _, _, _, _, _, _),
26089 !,
26090 occurrence_code_id(B, C, F),
26091 Q is C+1,
26092 set_occurrence_code_id(B, Q, F)
26093 ).
26094set_occurrence_code_id(A, B, C) :-
26095 F=suspension(D, active, A, B, C),
26096 'chr gen_id'(D),
26097 nb_getval('$chr_store_multi_hash_chr_translate____set_occurrence_code_id___3-12',
26098 E),
26099 insert_ht(E, k(A, B), F).
26100occurrence_code_id(A, B, C) :-
26101 F=suspension(D, active, A, B, C),
26102 'chr gen_id'(D),
26103 nb_getval('$chr_store_multi_hash_chr_translate____occurrence_code_id___3-12',
26104 E),
26105 insert_ht(E, k(A, B), F).
26106get_occurrence_code_id(B, C, F) :-
26107 nb_getval('$chr_store_multi_hash_chr_translate____occurrence_code_id___3-12',
26108 A),
26109 lookup_ht(A, k(B, C), D),
26110 member(E, D),
26111 E=suspension(_, active, _, _, G),
26112 !,
26113 F=G.
26114get_occurrence_code_id(B, A, _) :-
26115 ( A==0
26116 -> true
26117 ; format('no occurrence code for ~w!\n', [B:A])
26118 ).
26119chr_constants(A) :-
26120 C=suspension(B, active, _, A),
26121 'chr gen_id'(B),
26122 nb_getval('$chr_store_global_ground_chr_translate____chr_constants___1',
26123 D),
26124 E=[C|D],
26125 b_setval('$chr_store_global_ground_chr_translate____chr_constants___1',
26126 E),
26127 ( D=[F|_]
26128 -> setarg(3, F, E)
26129 ; true
26130 ).
26131get_chr_constants(C) :-
26132 nb_getval('$chr_store_global_ground_chr_translate____chr_constants___1',
26133 A),
26134 member(B, A),
26135 B=suspension(_, active, _, D),
26136 !,
26137 C=D.
26138get_chr_constants(A) :-
26139 chr_warning(internal, 'No constants found for key ~w.\n', [_]),
26140 A=[].
26141add_chr_constants_(G) :-
26142 nb_getval('$chr_store_global_ground_chr_translate____chr_constants___1',
26143 A),
26144 member(B, A),
26145 B=suspension(_, active, _, H),
26146 !,
26147 setarg(2, B, removed),
26148 arg(3, B, C),
26149 ( var(C)
26150 -> nb_getval('$chr_store_global_ground_chr_translate____chr_constants___1',
26151 D),
26152 D=[_|E],
26153 b_setval('$chr_store_global_ground_chr_translate____chr_constants___1',
26154 E),
26155 ( E=[F|_]
26156 -> setarg(3, F, _)
26157 ; true
26158 )
26159 ; C=[_, _|E],
26160 setarg(2, C, E),
26161 ( E=[F|_]
26162 -> setarg(3, F, C)
26163 ; true
26164 )
26165 ),
26166 sort([G|H], I),
26167 chr_constants(I).
26168add_chr_constants_(A) :-
26169 chr_constants([A]).
26170print_chr_constants :-
26171 print_chr_constants___0__0(_).
26172print_chr_constants___0__0(A) :-
26173 nb_getval('$chr_store_global_ground_chr_translate____chr_constants___1',
26174 C),
26175 !,
26176 A=suspension(B, not_stored_yet, _),
26177 'chr gen_id'(B),
26178 print_chr_constants___0__0__0__1(C, A).
26179print_chr_constants___0__0__0__1([], A) :-
26180 print_chr_constants___0__1(A).
26181print_chr_constants___0__0__0__1([A|C], D) :-
26182 ( A=suspension(_, active, _, B)
26183 -> format('\t* chr_constants : ~w.\n', [B]),
26184 print_chr_constants___0__0__0__1(C, D)
26185 ; print_chr_constants___0__0__0__1(C, D)
26186 ).
26187print_chr_constants___0__0(A) :-
26188 A=suspension(B, not_stored_yet, _),
26189 'chr gen_id'(B),
26190 print_chr_constants___0__1(A).
26191print_chr_constants___0__1(A) :-
26192 ( var(A)
26193 -> true
26194 ; arg(2, A, B),
26195 setarg(2, A, removed),
26196 ( B==not_stored_yet
26197 -> true
26198 ; arg(3, A, C),
26199 ( var(C)
26200 -> nb_getval('$chr_store_global_ground_chr_translate____print_chr_constants___0',
26201 D),
26202 D=[_|E],
26203 b_setval('$chr_store_global_ground_chr_translate____print_chr_constants___0',
26204 E),
26205 ( E=[F|_]
26206 -> setarg(3, F, _)
26207 ; true
26208 )
26209 ; C=[_, _|E],
26210 setarg(2, C, E),
26211 ( E=[F|_]
26212 -> setarg(3, F, C)
26213 ; true
26214 )
26215 )
26216 )
26217 )