rpms/yap/F-11 Yap-5.1.3-soname.patch, NONE, 1.1 .cvsignore, 1.4, 1.5 chr_translate.pl, 1.1, 1.2 chr_translate_bootstrap1.pl, 1.1, 1.2 chr_translate_bootstrap2.pl, 1.1, 1.2 guard_entailment.pl, 1.1, 1.2 sources, 1.5, 1.6 yap.spec, 1.23, 1.24

Gérard Milmeister gemi at fedoraproject.org
Mon Jun 15 20:46:53 UTC 2009


Author: gemi

Update of /cvs/pkgs/rpms/yap/F-11
In directory cvs1.fedora.phx.redhat.com:/tmp/cvs-serv32732/F-11

Modified Files:
	.cvsignore chr_translate.pl chr_translate_bootstrap1.pl 
	chr_translate_bootstrap2.pl guard_entailment.pl sources 
	yap.spec 
Added Files:
	Yap-5.1.3-soname.patch 
Log Message:
new release 5.1.3

Yap-5.1.3-soname.patch:

--- NEW FILE Yap-5.1.3-soname.patch ---
diff -up Yap-5.1.3/Makefile.in.soname Yap-5.1.3/Makefile.in
--- Yap-5.1.3/Makefile.in.soname	2009-06-15 22:12:57.000000000 +0200
+++ Yap-5.1.3/Makefile.in	2009-06-15 21:59:18.000000000 +0200
@@ -578,16 +578,16 @@ startup: yap at EXEC_SUFFIX@ $(PL_SOURCES)
 	-rm -f startup
 	echo "bootstrap('$(srcdir)/pl/init.yap'). module(user). save_program(startup)." |  @CROSS_SIMULATOR@ ./yap -b $(srcdir)/pl/boot.yap
 
-yap at EXEC_SUFFIX@: $(HEADERS) yap.o @YAPLIB at .5.1.3
-	$(MPI_CC) $(STANDARD_CFLAGS) $(LDFLAGS) -o yap yap.o @YAPLIB at .5.1.3 $(LIBS) @MPI_LIBS@
+yap at EXEC_SUFFIX@: $(HEADERS) yap.o @YAPLIB@
+	$(MPI_CC) $(STANDARD_CFLAGS) $(LDFLAGS) -o yap yap.o @YAPLIB@ $(LIBS) @MPI_LIBS@
 
 libYap.a: $(LIB_OBJECTS)
 	-rm -f libYap.a
 	$(AR) rc libYap.a $(LIB_OBJECTS)
 	$(RANLIB) libYap.a
 
- at DYNYAPLIB@.5.1.3: $(LIB_OBJECTS)
-	@DYNLIB_LD@ -Wl,-soname=@YAPLIB at .5.1.3 -o @YAPLIB at .5.1.3 $(LIB_OBJECTS) $(LIBS) $(LDFLGS)
+ at DYNYAPLIB@: $(LIB_OBJECTS)
+	@DYNLIB_LD@ -o @YAPLIB@ $(LIB_OBJECTS) $(LIBS) $(LDFLGS)
 
 install: install_bin install_data
 
@@ -598,7 +598,7 @@ install_unix: startup libYap.a
 	$(INSTALL_PROGRAM) -m 755 yap at EXEC_SUFFIX@ $(DESTDIR)$(BINDIR)/yap
 	mkdir -p $(DESTDIR)$(YAPLIBDIR)
 	$(INSTALL_DATA) startup $(DESTDIR)$(YAPLIBDIR)/startup
-	@INSTALL_DLLS@ $(INSTALL_DATA) -m 755 @YAPLIB at .5.1.3 $(DESTDIR)$(LIBDIR)
+	@INSTALL_DLLS@ $(INSTALL_DATA) -m 755 @YAPLIB@ $(DESTDIR)$(LIBDIR)
 	mkdir -p $(DESTDIR)$(SHAREDIR)/Yap
 	mkdir -p $(DESTDIR)$(SHAREDIR)/Yap/pl
 	mkdir -p $(DESTDIR)$(SHAREDIR)/Yap/swi
@@ -643,7 +643,7 @@ install_win32: startup
 	(cd library/tries; make install)
 	@ENABLE_CPLINT@ (cd cplint; make install)
 
-install_library: @YAPLIB at .5.1.3
+install_library: @YAPLIB@
 	mkdir -p $(DESTDIR)$(INCLUDEDIR)
 	for h in $(HEADERS); do $(INSTALL) $$h $(DESTDIR)$(INCLUDEDIR); done
 


Index: .cvsignore
===================================================================
RCS file: /cvs/pkgs/rpms/yap/F-11/.cvsignore,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -p -r1.4 -r1.5
--- .cvsignore	1 May 2006 10:59:04 -0000	1.4
+++ .cvsignore	15 Jun 2009 20:46:22 -0000	1.5
@@ -1 +1,5 @@
-Yap-5.1.1.tar.gz
+Yap-5.1.3.tar.gz
+chr_translate_bootstrap1.pl
+chr_translate_bootstrap2.pl
+chr_translate.pl
+guard_entailment.pl


View full diff with command:
/usr/bin/cvs -f diff  -kk -u -p -N -r 1.1 -r 1.2 chr_translate.pl
Index: chr_translate.pl
===================================================================
RCS file: /cvs/pkgs/rpms/yap/F-11/chr_translate.pl,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -p -r1.1 -r1.2
--- chr_translate.pl	1 May 2006 10:55:44 -0000	1.1
+++ chr_translate.pl	15 Jun 2009 20:46:22 -0000	1.2
@@ -1,33 +1,77 @@
 /*  Generated by CHR bootstrap compiler
     From: chr_translate.chr
-    Date: [77,111,110,32,77,97,121,32,32,49,32,49,50,58,50,50,58,49,51,32,50,48,48,54,10]
+    Date: Mon Jun 15 21:44:05 2009
+
 
     DO NOT EDIT.  EDIT THE CHR FILE INSTEAD
 */
 
-:-module(chr_translate,[chr_translate/2]).
+:-module(chr_translate,[chr_translate/2,chr_translate_line_info/3]).
 :-use_module(chr_runtime).
-:-style_check((-singleton)).
-:-style_check((-discontiguous)).
-:-use_module(library(lists)).
-:-use_module(hprolog).
+:-style_check(-discontiguous).
+:-use_module(library(lists),[member/2,append/3,reverse/2,permutation/2,last/2]).
+:-use_module(library(ordsets)).
+:-use_module(library(aggregate)).
+:-use_module(library(apply_macros)).
+:-use_module(library(occurs)).
 :-use_module(library(assoc)).
+:-use_module(hprolog).
 :-use_module(pairlist).
-:-use_module(library(ordsets)).
 :-use_module(a_star).
 :-use_module(listmap).
 :-use_module(clean_code).
 :-use_module(builtins).
 :-use_module(find).
+:-use_module(binomialheap).
 :-use_module(guard_entailment).
 :-use_module(chr_compiler_options).
 :-use_module(chr_compiler_utility).
+:-use_module(chr_compiler_errors).
 :-include(chr_op).
 :-op(1150,fx,chr_type).
+:-op(1150,fx,chr_declaration).
 :-op(1130,xfx,--->).
-:-op(1150,fx,+).
-:-op(1150,fx,-).
-:-op(1150,fx,?).
+:-op(980,fx,+).
+:-op(980,fx,-).
+:-op(980,fx,?).
+:-op(1150,fx,constraints).
+:-op(1150,fx,chr_constraint).
+format_storetype(multi_store(A)) :-
+   !,
+   maplist(format_storetype,A).
+format_storetype(atomic_constants(A,B,_)) :-
+   format('	* a trie index on the argument(s) ~w for the ground terms ~w
+',[A,B]).
+format_storetype(ground_constants(A,B,_)) :-
+   format('	* a trie index on the argument(s) ~w for the ground terms ~w
+',[A,B]).
+format_storetype(A) :-
+   format('	* ~w
+',[A]).
+get_constraint_arg_type(A,B,C) :-
+   get_constraint_type(A,D),
+   nth1(B,D,E),
+   unalias_type(E,C).
+partial_store(ground_constants(_,_,incomplete)).
+partial_store(atomic_constants(_,_,incomplete)).
+late_allocation_analysis(A) :-
+   ( chr_pp_flag(late_allocation,on) ->
+     maplist(late_allocation,A)
+   ;
+     true
+   ).
+late_allocation(A) :-
+   late_allocation(A,0).
+late_allocation(A,B) :-
+   allocation_occurrence(A,B),
+   !.
+late_allocation(A,B) :-
+   C is B+1,
+   late_allocation(A,C).
+stored_in_guard_before_next_kept_occurrence(A,B) :-
+   chr_pp_flag(store_in_guards,on),
+   C is B+1,
+   stored_in_guard_lookahead(A,C).
 set_constraint_indices(A) :-
    set_constraint_indices(A,1).
 set_constraint_indices([],A) :-
@@ -38,10 +82,13 @@ set_constraint_indices([A|B],C) :-
      (
        chr_pp_flag(debugable,on)
      ;
-       may_trigger(A)
+       \+only_ground_indexed_arguments(A),
+       is_stored(A)
      ;
        is_stored(A),
        get_store_type(A,default)
+     ;
+       get_store_type(A,var_assoc_store(_,_))
      ) ->
      constraint_index(A,C),
      D is C+1,
@@ -49,47 +96,81 @@ set_constraint_indices([A|B],C) :-
    ;
      set_constraint_indices(B,C)
    ).
+type_indexed_identifier_structure(A,B) :-
+   type_indexed_identifier_name(A,type_indexed_identifier_struct,C),
+   get_type_indexed_identifier_size(A,D),
+   functor(B,C,D).
+type_indexed_identifier_name(A,B,C) :-
+   ( atom(A) ->
+     D=A
+   ;
+     term_to_atom(A,D)
+   ),
+   atom_concat_list([B,'_',D],C).
 chr_translate(A,B) :-
+   chr_translate_line_info(A,bootstrap,B).
+chr_translate_line_info(A,B,C) :-
+   chr_banner,
+   restart_after_flattening(A,D),
    init_chr_pp_flags,
-   partition_clauses(A,C,D,E),
-   check_declared_constraints(C),
-   ( C==[] ->
-     insert_declarations(E,B)
-   ;
-     generate_show_constraint(C,F,D,G),
-     add_constraints(F),
-     add_rules(G),
-     check_rules(G,F),
-     add_occurrences(G),
-     functional_dependency_analysis(G),
-     set_semantics_rules(G),
-     symmetry_analysis(G),
-     guard_simplification,
-     storage_analysis(F),
-     observation_analysis(F),
-     ai_observation_analysis(F),
-     late_allocation(F),
-     assume_constraint_stores(F),
-     set_constraint_indices(F),
-     constraints_code(F,H),
-     validate_store_type_assumptions(F),
-     store_management_preds(F,I),
-     insert_declarations(E,J),
-     chr_module_declaration(K),
-     append_lists([J,I,H,K],B)
-   ).
+   chr_source_file(B),
+   partition_clauses(D,E,F,G),
+   chr_compiler_options:sanity_check,
+   dump_code(D),
+   check_declared_constraints(E),
+   generate_show_constraint(E,H,F,I),
+   add_constraints(H),
+   add_rules(I),
+   generate_never_stored_rules(H,J),
+   add_rules(J),
+   append(I,J,K),
+   chr_analysis(K,H,D),
+   time('constraint code generation',chr_translate:constraints_code(H,L)),
+   time('validate store assumptions',chr_translate:validate_store_type_assumptions(H)),
+   phase_end(validate_store_type_assumptions),
+   used_states_known,
+   time('store code generation',chr_translate:store_management_preds(H,M)),
+   insert_declarations(G,N),
+   chr_module_declaration(O),
+   append([M,L,O,[end_of_file]],P),
+   clean_clauses(P,Q),
+   append([N,Q],C),
+   dump_code(C),
+   !.
+chr_analysis(A,B,C) :-
+   check_rules(A,B),
+   time('type checking',chr_translate:static_type_check),
+   collect_constants(A,B,C),
+   add_occurrences(A),
+   time('functional dependency',chr_translate:functional_dependency_analysis(A)),
+   time('set semantics',chr_translate:set_semantics_rules(A)),
+   time('symmetry analysis',chr_translate:symmetry_analysis(A)),
+   time('guard simplification',chr_translate:guard_simplification),
+   time('late storage',chr_translate:storage_analysis(B)),
+   time(observation,chr_translate:observation_analysis(B)),
+   time('ai observation',chr_translate:ai_observation_analysis(B)),
+   time('late allocation',chr_translate:late_allocation_analysis(B)),
+   partial_wake_analysis,
+   time('assume constraint stores',chr_translate:assume_constraint_stores(B)),
+   time('default constraint indices',chr_translate:set_constraint_indices(B)),
+   time('check storedness assertions',chr_translate:check_storedness_assertions(B)),
[...27441 lines suppressed...]
+   'chr gen_id'(E),
+   nb_getval('$chr_store_multi_hash_chr_translate____set_occurrence_code_id___3-12',F),
+   insert_ht(F,k(A,B),D).
+occurrence_code_id(A,B,C) :-
+   D=suspension(E,active,A,B,C),
+   'chr gen_id'(E),
+   nb_getval('$chr_store_multi_hash_chr_translate____occurrence_code_id___3-12',F),
+   insert_ht(F,k(A,B),D).
+get_occurrence_code_id(A,B,C) :-
+   nb_getval('$chr_store_multi_hash_chr_translate____occurrence_code_id___3-12',G),
+   lookup_ht(G,k(A,B),F),
    'chr sbag_member'(D,F),
-   D=suspension(_,mutable(active),_,_,_,_,_,E),
-   E=B,
+   D=suspension(_,active,_,_,E),
    !,
-   ( var(C) ->
+   C=E.
+get_occurrence_code_id(A,B,_) :-
+   ( B==0 ->
      true
    ;
-     remove_constraint_internal(C,_,G),
-     ( G==yes ->
-       '$delete_from_store_ai_not_observed/2'(C)
-     ;
-       true
-     )
+     format('no occurrence code for ~w!
+',[A:B])
    ).
-'ai_not_observed/2__1'(_,_,A) :-
-   activate_constraint(B,_,A,_),
-   ( B==yes ->
-     '$insert_in_store_ai_not_observed/2'(A)
+chr_constants(A,B) :-
+   C=suspension(D,active,_,A,B),
+   'chr gen_id'(D),
+   nb_getval('$chr_store_global_ground_chr_translate____chr_constants___2',E),
+   F=[C|E],
+   b_setval('$chr_store_global_ground_chr_translate____chr_constants___2',F),
+   ( E=[G|_] ->
+     setarg(3,G,F)
    ;
      true
-   ).
-ai_is_observed(A,B) :-
-   '$via1_multi_hash_ai_not_observed/2-1'(A,E),
+   ),
+   nb_getval('$chr_store_multi_hash_chr_translate____chr_constants___2-1',H),
+   insert_ht(H,A,C).
+get_chr_constants(A,B) :-
+   ground(A),
+   nb_getval('$chr_store_multi_hash_chr_translate____chr_constants___2-1',F),
+   lookup_ht(F,A,E),
    'chr sbag_member'(C,E),
-   C=suspension(_,mutable(active),_,_,_,_,_,D),
-   D=B,
+   C=suspension(_,active,_,_,D),
    !,
-   fail.
-ai_is_observed(_,_).
-depends_on_as(A,B,C) :-
-   'depends_on_as/3__0'(A,B,C,_).
-'depends_on_as/3__0'(A,B,C,D) :-
-   '$via1_multi_hash_final_answer_pattern/2-1'(B,E),
-   !,
-   allocate_constraint(true,D,depends_on_as(A,B,C),[A,B,C]),
-   'depends_on_as/3__0__0'(E,A,B,C,D).
-'depends_on_as/3__0__0'([],A,B,C,D) :-
-   'depends_on_as/3__1'(A,B,C,D).
-'depends_on_as/3__0__0'([G|I],A,B,C,D) :-
-   ( G=suspension(_,mutable(active),_,_,_,_,E,F),
-     E==B,
-     '$via1_multi_hash_final_answer_pattern/2-1'(C,H) ->
-     'depends_on_as/3__0__1'(H,F,G,I,A,B,C,D)
-   ;
-     'depends_on_as/3__0__0'(I,A,B,C,D)
-   ).
-'depends_on_as/3__0__1'([],_,_,E,A,B,C,D) :-
-   'depends_on_as/3__0__0'(E,A,B,C,D).
-'depends_on_as/3__0__1'([J|K],F,A,G,B,C,D,E) :-
-   ( J=suspension(_,mutable(active),_,_,_,_,H,I),
-     J\==A,
-     H==D,
-     O=t(141,E,A,J),
-     'chr novel_production'(E,O),
-     'chr novel_production'(A,O),
-     'chr novel_production'(J,O) ->
-     'chr extend_history'(E,O),
-     activate_constraint(M,_,E,N),
-     ( M==yes ->
-       '$insert_in_store_depends_on_as/3'(E)
+   B=D.
+get_chr_constants(A,B) :-
+   chr_warning(internal,'No constants found for key ~w.
+',[A]),
+   B=[].
+add_chr_constant(A,B) :-
+   nb_getval('$chr_store_multi_hash_chr_translate____chr_constants___2-1',L),
+   lookup_ht(L,A,E),
+   'chr sbag_member'(C,E),
+   C=suspension(_,active,_,_,D),
+   !,
+   setarg(2,C,removed),
+   arg(3,C,G),
+   ( var(G) ->
+     nb_getval('$chr_store_global_ground_chr_translate____chr_constants___2',H),
+     H=[_|I],
+     b_setval('$chr_store_global_ground_chr_translate____chr_constants___2',I),
+     ( I=[J|_] ->
+       setarg(3,J,_)
      ;
        true
-     ),
-     ai_observation_lub(F,I,L),
-     final_answer_pattern(B,L),
-     ( E=suspension(_,mutable(active),_,mutable(N),_,_,_,_,_) ->
-       'chr update_mutable'(inactive,mutable(active)),
-       'depends_on_as/3__0__1'(K,F,A,G,B,C,D,E)
+     )
+   ;
+     G=[_,_|I],
+     setarg(2,G,I),
+     ( I=[J|_] ->
+       setarg(3,J,G)
      ;
        true
      )
-   ;
-     'depends_on_as/3__0__1'(K,F,A,G,B,C,D,E)
-   ).
-'depends_on_as/3__0'(A,B,C,D) :-
-   allocate_constraint(true,D,depends_on_as(A,B,C),[A,B,C]),
-   'depends_on_as/3__1'(A,B,C,D).
-'depends_on_as/3__1'(_,_,_,A) :-
-   activate_constraint(B,_,A,_),
-   ( B==yes ->
-     '$insert_in_store_depends_on_as/3'(A)
-   ;
+   ),
+   nb_getval('$chr_store_multi_hash_chr_translate____chr_constants___2-1',K),
+   delete_ht(K,A,C),
+   sort([B|D],F),
+   chr_constants(A,F).
+add_chr_constant(A,B) :-
+   chr_constants(A,[B]).
+print_chr_constants :-
+   print_chr_constants___0__0(_).
+print_chr_constants___0__0(A) :-
+   nb_getval('$chr_store_global_ground_chr_translate____chr_constants___2',B),
+   !,
+   A=suspension(C,not_stored_yet,_),
+   'chr gen_id'(C),
+   print_chr_constants___0__0__0__1(B,A).
+print_chr_constants___0__0__0__1([],A) :-
+   print_chr_constants___0__1(A).
+print_chr_constants___0__0__0__1([D|E],A) :-
+   ( D=suspension(_,active,_,B,C) ->
+     format('	* chr_constants ~w : ~w.
+',[B,C]),
+     print_chr_constants___0__0__0__1(E,A)
+   ;
+     print_chr_constants___0__0__0__1(E,A)
+   ).
+print_chr_constants___0__0(A) :-
+   A=suspension(B,not_stored_yet,_),
+   'chr gen_id'(B),
+   print_chr_constants___0__1(A).
+print_chr_constants___0__1(A) :-
+   ( var(A) ->
      true
+   ;
+     arg(2,A,F),
+     setarg(2,A,removed),
+     ( F==not_stored_yet ->
+       true
+     ;
+       arg(3,A,B),
+       ( var(B) ->
+         nb_getval('$chr_store_global_ground_chr_translate____print_chr_constants___0',C),
+         C=[_|D],
+         b_setval('$chr_store_global_ground_chr_translate____print_chr_constants___0',D),
+         ( D=[E|_] ->
+           setarg(3,E,_)
+         ;
+           true
+         )
+       ;
+         B=[_,_|D],
+         setarg(2,B,D),
+         ( D=[E|_] ->
+           setarg(3,E,B)
+         ;
+           true
+         )
+       )
+     )
    ).
+end_of_file.


Index: chr_translate_bootstrap1.pl
===================================================================
RCS file: /cvs/pkgs/rpms/yap/F-11/chr_translate_bootstrap1.pl,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -p -r1.1 -r1.2
--- chr_translate_bootstrap1.pl	1 May 2006 10:55:44 -0000	1.1
+++ chr_translate_bootstrap1.pl	15 Jun 2009 20:46:22 -0000	1.2
@@ -1,19 +1,22 @@
 /*  Generated by CHR bootstrap compiler
     From: chr_translate_bootstrap1.chr
-    Date: [77,111,110,32,77,97,121,32,32,49,32,49,50,58,50,49,58,51,51,32,50,48,48,54,10]
+    Date: Mon Jun 15 21:43:46 2009
+
 
     DO NOT EDIT.  EDIT THE CHR FILE INSTEAD
 */
 
 :-module(chr_translate_bootstrap1,[chr_translate/2]).
 :-use_module(chr_runtime).
-:-style_check(-singleton).
 :-style_check(-discontiguous).
-:-use_module(library(lists)).
+:-use_module(chr_runtime).
+:-style_check(-discontiguous).
+:-use_module(chr_runtime).
+:-style_check(-discontiguous).
+:-use_module(library(lists),[append/3,member/2,permutation/2,reverse/2]).
+:-use_module(library(ordsets)).
 :-use_module(hprolog).
-:-use_module(library(assoc)).
 :-use_module(pairlist).
-:-use_module(library(ordsets)).
 :-include(chr_op2).
 chr_translate(A,B) :-
    init_chr_pp_flags,
@@ -27,14 +30,14 @@ chr_translate(A,B) :-
      set_constraint_indices(C,1),
      store_management_preds(C,G),
      constraints_code(C,F,H),
-     append_lists([E,G,H],B)
+     append([E,G,H],B)
    ),
    chr_clear.
 store_management_preds(A,B) :-
    generate_attach_detach_a_constraint_all(A,C),
    generate_attach_increment(D),
    generate_attr_unify_hook(E),
-   append_lists([C,D,E],B).
+   append([C,D,E],B).
 partition_clauses([],[],[],[]).
 partition_clauses([A|B],C,D,E) :-
    ( rule(A,F) ->
@@ -75,7 +78,7 @@ partition_clauses([A|B],C,D,E) :-
        E=I
      )
    ;
-     ( A=option(L,M) ->
+     ( A=(:-chr_option(L,M)) ->
        handle_option(L,M),
        C=G,
        D=H,
@@ -88,12 +91,12 @@ partition_clauses([A|B],C,D,E) :-
    ),
    partition_clauses(B,G,H,I).
 is_declaration(A,B) :-
-   ( A=(:-C) ->
-     true
+   A=(:-C),
+   (
+     C=..[chr_constraint,D]
    ;
-     A=C
+     C=..[chr_constraint,D]
    ),
-   C=..[constraints,D],
    conj2list(D,B).
 rule(A,B) :-
    A=(C at D),
@@ -211,7 +214,7 @@ check_pragma(passive(A),B,C) :-
 check_pragma(A,B,C) :-
    A=unique(_,_),
    !,
-   format('CHR compiler WARNING: undocument pragma ~w in ~@.
+   format('CHR compiler WARNING: undocumented pragma ~w in ~@.
 ',[A,format_rule(B,C)]),
    format('    `--> Only use this pragma if you know what you are doing.
 ',[]).
@@ -300,7 +303,7 @@ set_chr_pp_flags([A-B|C]) :-
    set_chr_pp_flag(A,B),
    set_chr_pp_flags(C).
 set_chr_pp_flag(A,B) :-
-   atom_concat('$chr_pp_',A,C),
+   atomic_concat('$chr_pp_',A,C),
    nb_setval(C,B).
 chr_pp_flag_definition(unique_analyse_optimise,[on,off]).
 chr_pp_flag_definition(check_unnecessary_active,[full,simplification,off]).
@@ -311,7 +314,7 @@ chr_pp_flag_definition(guard_locks,[on,o
 chr_pp_flag_definition(check_attachments,[on,off]).
 chr_pp_flag_definition(debugable,[off,on]).
 chr_pp_flag(A,B) :-
-   atom_concat('$chr_pp_',A,C),
+   atomic_concat('$chr_pp_',A,C),
    nb_getval(C,D),
    ( D==[] ->
      chr_pp_flag_definition(A,[B|_])
@@ -328,7 +331,7 @@ generate_attach_detach_a_constraint_all(
      E=[]
    ),
    generate_attach_detach_a_constraint_all(B,F),
-   append_lists([D,E,F],C).
+   append([D,E,F],C).
 generate_attach_a_constraint(A,[B,C]) :-
    generate_attach_a_constraint_empty_list(A,B),
    get_max_constraint_index(D),
@@ -359,13 +362,13 @@ generate_attach_a_constraint_t_p(A/B,C) 
    or_pattern(K,L),
    get_max_constraint_index(M),
    make_attr(M,N,O,P),
-   nth(K,O,Q),
-   substitute(Q,O,[H|Q],R),
+   nth1(K,O,Q),
+   substitute_eq(Q,O,[H|Q],R),
    make_attr(M,N,R,S),
-   substitute(Q,O,[H],T),
+   substitute_eq(Q,O,[H],T),
    make_attr(M,U,T,V),
-   copy_term(O,W),
-   nth(K,W,[H]),
+   copy_term_nat(O,W),
+   nth1(K,W,[H]),
    chr_delete(W,[H],X),
    set_elems(X,[]),
    make_attr(M,L,W,Y),
@@ -403,10 +406,10 @@ generate_detach_a_constraint_t_p(A/B,C) 
    and_pattern(K,M),
    get_max_constraint_index(N),
    make_attr(N,O,P,Q),
-   nth(K,P,R),
-   substitute(R,P,[],S),
+   nth1(K,P,R),
+   substitute_eq(R,P,[],S),
    make_attr(N,T,S,U),
-   substitute(R,P,V,W),
+   substitute_eq(R,P,V,W),
    make_attr(N,O,W,X),
    get_target_module(Y),
    Z=((get_attr(F,Y,A1)->A1=Q,(O/\L=:=L->'chr sbag_del_element'(R,H,V),(V==[]->T is O/\M,(T==0->del_attr(F,Y);put_attr(F,Y,U));put_attr(F,Y,X));true);true),J),
@@ -816,7 +819,7 @@ unique_analyse_optimise_main([A|B],C,D,[
    J=ids(O,P),
    apply_unique_patterns_to_constraints(M,O,H,Q),
    apply_unique_patterns_to_constraints(N,P,H,R),
-   append_lists([Q,R,K],S),
+   append([Q,R,K],S),
    E=pragma(I,J,S,L),
    T is C+1,
    unique_analyse_optimise_main(B,T,H,F).
@@ -839,9 +842,9 @@ apply_unique_pattern(A,B,C,D) :-
    ),
    D=unique(B,L).
 subsumes(A,B,C) :-
-   empty_assoc(D),
+   empty_ds(D),
    subsumes_aux(A,B,D,E),
-   assoc_to_list(E,F),
+   ds_to_list(E,F),
    build_unifier(F,C).
 subsumes_aux(A,B,C,D) :-
    ( compound(B),
@@ -855,13 +858,13 @@ subsumes_aux(A,B,C,D) :-
      )
    ;
      ( var(B),
-       get_assoc(A,C,G) ->
+       get_ds(A,C,G) ->
        G==B,
        D=C
      )
    ;
      var(B),
-     put_assoc(A,C,B,D)
+     put_ds(A,C,B,D)
    ).
 subsumes_aux(0,_,_,A,A) :-
    !.
@@ -885,11 +888,10 @@ discover_unique_pattern(A,B,C) :-
    term_variables(G,L),
    select_pragma_unique_variables(K,L,M),
    N=unique(G,M),
-   copy_term(N,C),
-   ( prolog_flag(verbose,O),
-     O==yes ->
+   copy_term_nat(N,C),
+   ( verbosity_on ->
      format('Found unique pattern ~w in rule ~d~@
-',[C,B,(F=yes(P)->write([58,32]),write(P);true)])
+',[C,B,(F=yes(O)->write([58,32]),write(O);true)])
    ;
      true
    ).
@@ -1108,10 +1110,10 @@ rest_heads_retrieval_and_matching_n([A|B
    ;
      get_constraint_index(S/T,C1),
      make_attr(A1,_,D1,Q),
-     nth(C1,D1,B1)
+     nth1(C1,D1,B1)
    ),
    different_from_other_susps(A,L,F,G,E1),
-   create_get_mutable(active,Z,F1),
+   create_get_mutable_ref(active,Z,F1),
    G1=('chr sbag_member'(L,B1),L=Y,F1,E1,W),
    ( member(unique(C,H1),E),
      check_unique_keys(H1,N) ->
@@ -1137,7 +1139,7 @@ check_unique_keys([A|B],C) :-
    lookup_eq(C,A,_),
    check_unique_keys(B,C).
 different_from_other_susps(A,B,C,D,E) :-
-   ( bagof(F,G^(nth(G,C,H),\+A\=H,nth(G,D,I),F=(B\==I)),J) ->
+   ( bagof(F,G^(nth1(G,C,H),\+A\=H,nth1(G,D,I),F=(B\==I)),J) ->
      list2conj(J,E)
    ;
      E=true
@@ -1166,7 +1168,7 @@ common_variables(A,B,C) :-
 gen_get_mod_constraints(A,B,C) :-
    get_target_module(D),
    ( A==[] ->
-     B=('chr global_term_ref_1'(E),get_attr(E,D,F),F=C)
+     B=('chr default_store'(E),get_attr(E,D,F),F=C)
    ;
      ( A=[G] ->
        H='chr via_1'(G,I)
@@ -1331,7 +1333,7 @@ simpagation_head2_prelude(A,B,C,D/E,F,G,
      functor(B,U,V),
      get_constraint_index(U/V,W),
      make_attr(S,_,X,Q),
-     nth(W,X,T)
+     nth1(W,X,T)
    ),
    ( F==[0] ->
      gen_cond_allocation(I,J,D/E,K,Y)
@@ -1373,7 +1375,7 @@ simpagation_head2_worker_body(A,B,C,D,E,
    head_info(B,Z,A1,_,_,B1),
    head_arg_matches(B1,T,C1,D1),
    E1=..[suspension,_,F1,_,_,_,_|A1],
-   create_get_mutable(active,F1,G1),
+   create_get_mutable_ref(active,F1,G1),
    H1=(O=E1,G1),
    (
      (
@@ -1426,8 +1428,8 @@ simpagation_head2_worker_body(A,B,C,D,E,
 gen_state_cond_call(A,B,C,D,E) :-
    length(F,B),
    G=..[suspension,_,H,_,I,_,_|F],
-   create_get_mutable(active,H,J),
-   create_get_mutable(D,I,K),
+   create_get_mutable_ref(active,H,J),
+   create_get_mutable_ref(D,I,K),
    E=(A=G,J,K->'chr update_mutable'(inactive,H),C;true).
 simpagation_head2_worker_end(A,B,C/D,E,F,G) :-
    head_info(A,D,_,_,H,I),
@@ -1492,7 +1494,7 @@ propagation_prelude(A,[B|C],D,E/F,G,H,I)
      functor(B,Y,Z),
      make_attr(W,_,A1,U),
      get_constraint_index(Y/Z,B1),
-     nth(B1,A1,X)
+     nth1(B1,A1,X)
    ),
    ( G==[0] ->
      gen_cond_allocation(J,K,E/F,L,C1)
@@ -1521,7 +1523,7 @@ propagation_body(A,B,C,D,E,F/G,H,I,J) :-
    functor(A,_,S),
    gen_vars(S,T),
    U=..[suspension,_,V,_,_,_,_|T],
-   create_get_mutable(active,V,W),
+   create_get_mutable_ref(active,V,W),
    X=(Q=U,W),
    Y=[[Q|R]|M],
    build_head(F,G,H,Y,Z),
@@ -1615,7 +1617,7 @@ propagation_accumulator([A|B],[C|D],E,F/
    head_arg_matches(T,N,U,V),
    W=..[suspension,_,X,_,_,_,_|R],
    different_from_other_susps(C,S,D,O,Y),
-   create_get_mutable(active,X,Z),
+   create_get_mutable_ref(active,X,Z),
    A1=(S=W,Z,Y,U),
    functor(A,B1,C1),
    passive_head_via(A,[C|D],[],V,D1,E1,F1),
@@ -1626,7 +1628,7 @@ propagation_accumulator([A|B],[C|D],E,F/
    ;
      get_constraint_index(B1/C1,I1),
      make_attr(G1,_,J1,E1),
-     nth(I1,J1,H1)
+     nth1(I1,J1,H1)
    ),
    inc_id(H,K1),
    L1=[[S|P]|M],
@@ -1733,7 +1735,7 @@ order_score_vars([A|B],C,D,E,F) :-
      G=E
    ),
    order_score_vars(B,C,D,G,F).
-create_get_mutable(A,B,C) :-
+create_get_mutable_ref(A,B,C) :-
    C=(B=mutable(A)).
 clean_clauses([],[]).
 clean_clauses([A|B],[C|D]) :-
@@ -1841,13 +1843,13 @@ build_head(A,B,C,D,E) :-
    E=..[F|D].
 buildName(A,B,C,D) :-
    atom_concat(A,/,E),
-   atom_concat(E,B,F),
+   atomic_concat(E,B,F),
    buildName_(C,F,D).
 buildName_([],A,A).
 buildName_([A|B],C,D) :-
    buildName_(B,C,E),
    atom_concat(E,'__',F),
-   atom_concat(F,A,D).
+   atomic_concat(F,A,D).
 vars_susp(A,B,C,D) :-
    length(B,A),
    append(B,[C],D).
@@ -1884,7 +1886,20 @@ atom_concat_list([A],A) :-
    !.
 atom_concat_list([A|B],C) :-
    atom_concat_list(B,D),
-   atom_concat(A,D,C).
+   atomic_concat(A,D,C).
+atomic_concat(A,B,C) :-
+   make_atom(A,D),
+   make_atom(B,E),
+   atom_concat(D,E,C).
+make_atom(A,B) :-
+   ( atom(A) ->
+     B=A
+   ;
+     ( number(A) ->
+       number_codes(A,C),
+       atom_codes(B,C)
+     )
+   ).
 set_elems([],_).
 set_elems([A|B],A) :-
    set_elems(B,A).
@@ -1897,15 +1912,18 @@ select2(A,B,[C|D],[E|F],[C|G],[E|H]) :-
 pair_all_with([],_,[]).
 pair_all_with([A|B],C,[A-C|D]) :-
    pair_all_with(B,C,D).
+verbosity_on :-
+   prolog_flag(verbose,A),
+   A==yes.
 'attach_constraint/2'([],_).
 'attach_constraint/2'([A|B],C) :-
-   ( get_attr(A,chr_translate_bootstrap1,L) ->
-     L=v(J,D,E,F,G,H,I),
-     ( J/\1=:=1 ->
-       put_attr(A,chr_translate_bootstrap1,v(J,[C|D],E,F,G,H,I))
+   ( get_attr(A,chr_translate_bootstrap1,D) ->
+     D=v(E,F,G,H,I,J,K),
+     ( E/\1=:=1 ->
+       put_attr(A,chr_translate_bootstrap1,v(E,[C|F],G,H,I,J,K))
      ;
-       K is J\/1,
-       put_attr(A,chr_translate_bootstrap1,v(K,[C],E,F,G,H,I))
+       L is E\/1,
+       put_attr(A,chr_translate_bootstrap1,v(L,[C],G,H,I,J,K))
      )
    ;
      put_attr(A,chr_translate_bootstrap1,v(1,[C],[],[],[],[],[]))
@@ -1913,19 +1931,19 @@ pair_all_with([A|B],C,[A-C|D]) :-
    'attach_constraint/2'(B,C).
 'detach_constraint/2'([],_).
 'detach_constraint/2'([A|B],C) :-
-   ( get_attr(A,chr_translate_bootstrap1,M) ->
-     M=v(J,D,E,F,G,H,I),
-     ( J/\1=:=1 ->
-       'chr sbag_del_element'(D,C,L),
+   ( get_attr(A,chr_translate_bootstrap1,D) ->
+     D=v(E,F,G,H,I,J,K),
+     ( E/\1=:=1 ->
+       'chr sbag_del_element'(F,C,L),
        ( L==[] ->
-         K is J/\ -2,
-         ( K==0 ->
+         M is E/\ -2,
+         ( M==0 ->
            del_attr(A,chr_translate_bootstrap1)
          ;
-           put_attr(A,chr_translate_bootstrap1,v(K,[],E,F,G,H,I))
+           put_attr(A,chr_translate_bootstrap1,v(M,[],G,H,I,J,K))
          )
        ;
-         put_attr(A,chr_translate_bootstrap1,v(J,L,E,F,G,H,I))
+         put_attr(A,chr_translate_bootstrap1,v(E,L,G,H,I,J,K))
        )
      ;
        true
@@ -1936,13 +1954,13 @@ pair_all_with([A|B],C,[A-C|D]) :-
    'detach_constraint/2'(B,C).
 'attach_constraint_count/1'([],_).
 'attach_constraint_count/1'([A|B],C) :-
-   ( get_attr(A,chr_translate_bootstrap1,L) ->
-     L=v(J,D,E,F,G,H,I),
-     ( J/\2=:=2 ->
-       put_attr(A,chr_translate_bootstrap1,v(J,D,[C|E],F,G,H,I))
+   ( get_attr(A,chr_translate_bootstrap1,D) ->
+     D=v(E,F,G,H,I,J,K),
+     ( E/\2=:=2 ->
+       put_attr(A,chr_translate_bootstrap1,v(E,F,[C|G],H,I,J,K))
      ;
-       K is J\/2,
-       put_attr(A,chr_translate_bootstrap1,v(K,D,[C],F,G,H,I))
+       L is E\/2,
+       put_attr(A,chr_translate_bootstrap1,v(L,F,[C],H,I,J,K))
      )
    ;
      put_attr(A,chr_translate_bootstrap1,v(2,[],[C],[],[],[],[]))
@@ -1950,19 +1968,19 @@ pair_all_with([A|B],C,[A-C|D]) :-
    'attach_constraint_count/1'(B,C).
 'detach_constraint_count/1'([],_).
 'detach_constraint_count/1'([A|B],C) :-
-   ( get_attr(A,chr_translate_bootstrap1,M) ->
-     M=v(J,D,E,F,G,H,I),
-     ( J/\2=:=2 ->
-       'chr sbag_del_element'(E,C,L),
+   ( get_attr(A,chr_translate_bootstrap1,D) ->
+     D=v(E,F,G,H,I,J,K),
+     ( E/\2=:=2 ->
+       'chr sbag_del_element'(G,C,L),
        ( L==[] ->
-         K is J/\ -3,
-         ( K==0 ->
+         M is E/\ -3,
+         ( M==0 ->
            del_attr(A,chr_translate_bootstrap1)
          ;
-           put_attr(A,chr_translate_bootstrap1,v(K,D,[],F,G,H,I))
+           put_attr(A,chr_translate_bootstrap1,v(M,F,[],H,I,J,K))
          )
        ;
-         put_attr(A,chr_translate_bootstrap1,v(J,D,L,F,G,H,I))
+         put_attr(A,chr_translate_bootstrap1,v(E,F,L,H,I,J,K))
        )
      ;
        true
@@ -1973,13 +1991,13 @@ pair_all_with([A|B],C,[A-C|D]) :-
    'detach_constraint_count/1'(B,C).
 'attach_constraint_index/2'([],_).
 'attach_constraint_index/2'([A|B],C) :-
-   ( get_attr(A,chr_translate_bootstrap1,L) ->
-     L=v(J,D,E,F,G,H,I),
-     ( J/\4=:=4 ->
-       put_attr(A,chr_translate_bootstrap1,v(J,D,E,[C|F],G,H,I))
+   ( get_attr(A,chr_translate_bootstrap1,D) ->
+     D=v(E,F,G,H,I,J,K),
+     ( E/\4=:=4 ->
+       put_attr(A,chr_translate_bootstrap1,v(E,F,G,[C|H],I,J,K))
      ;
-       K is J\/4,
-       put_attr(A,chr_translate_bootstrap1,v(K,D,E,[C],G,H,I))
+       L is E\/4,
+       put_attr(A,chr_translate_bootstrap1,v(L,F,G,[C],I,J,K))
      )
    ;
      put_attr(A,chr_translate_bootstrap1,v(4,[],[],[C],[],[],[]))
@@ -1987,19 +2005,19 @@ pair_all_with([A|B],C,[A-C|D]) :-
    'attach_constraint_index/2'(B,C).
 'detach_constraint_index/2'([],_).
 'detach_constraint_index/2'([A|B],C) :-
-   ( get_attr(A,chr_translate_bootstrap1,M) ->
-     M=v(J,D,E,F,G,H,I),
-     ( J/\4=:=4 ->
-       'chr sbag_del_element'(F,C,L),
+   ( get_attr(A,chr_translate_bootstrap1,D) ->
+     D=v(E,F,G,H,I,J,K),
+     ( E/\4=:=4 ->
+       'chr sbag_del_element'(H,C,L),
        ( L==[] ->
-         K is J/\ -5,
-         ( K==0 ->
+         M is E/\ -5,
+         ( M==0 ->
            del_attr(A,chr_translate_bootstrap1)
          ;
-           put_attr(A,chr_translate_bootstrap1,v(K,D,E,[],G,H,I))
+           put_attr(A,chr_translate_bootstrap1,v(M,F,G,[],I,J,K))
          )
        ;
-         put_attr(A,chr_translate_bootstrap1,v(J,D,E,L,G,H,I))
+         put_attr(A,chr_translate_bootstrap1,v(E,F,G,L,I,J,K))
        )
      ;
        true
@@ -2010,13 +2028,13 @@ pair_all_with([A|B],C,[A-C|D]) :-
    'detach_constraint_index/2'(B,C).
 'attach_max_constraint_index/1'([],_).
 'attach_max_constraint_index/1'([A|B],C) :-
-   ( get_attr(A,chr_translate_bootstrap1,L) ->
-     L=v(J,D,E,F,G,H,I),
-     ( J/\8=:=8 ->
-       put_attr(A,chr_translate_bootstrap1,v(J,D,E,F,[C|G],H,I))
+   ( get_attr(A,chr_translate_bootstrap1,D) ->
+     D=v(E,F,G,H,I,J,K),
+     ( E/\8=:=8 ->
+       put_attr(A,chr_translate_bootstrap1,v(E,F,G,H,[C|I],J,K))
      ;
-       K is J\/8,
-       put_attr(A,chr_translate_bootstrap1,v(K,D,E,F,[C],H,I))
+       L is E\/8,
+       put_attr(A,chr_translate_bootstrap1,v(L,F,G,H,[C],J,K))
      )
    ;
      put_attr(A,chr_translate_bootstrap1,v(8,[],[],[],[C],[],[]))
@@ -2024,19 +2042,19 @@ pair_all_with([A|B],C,[A-C|D]) :-
    'attach_max_constraint_index/1'(B,C).
 'detach_max_constraint_index/1'([],_).
 'detach_max_constraint_index/1'([A|B],C) :-
-   ( get_attr(A,chr_translate_bootstrap1,M) ->
-     M=v(J,D,E,F,G,H,I),
-     ( J/\8=:=8 ->
-       'chr sbag_del_element'(G,C,L),
+   ( get_attr(A,chr_translate_bootstrap1,D) ->
+     D=v(E,F,G,H,I,J,K),
+     ( E/\8=:=8 ->
+       'chr sbag_del_element'(I,C,L),
        ( L==[] ->
-         K is J/\ -9,
-         ( K==0 ->
+         M is E/\ -9,
+         ( M==0 ->
            del_attr(A,chr_translate_bootstrap1)
          ;
-           put_attr(A,chr_translate_bootstrap1,v(K,D,E,F,[],H,I))
+           put_attr(A,chr_translate_bootstrap1,v(M,F,G,H,[],J,K))
          )
        ;
-         put_attr(A,chr_translate_bootstrap1,v(J,D,E,F,L,H,I))
+         put_attr(A,chr_translate_bootstrap1,v(E,F,G,H,L,J,K))
        )
      ;
        true
@@ -2047,13 +2065,13 @@ pair_all_with([A|B],C,[A-C|D]) :-
    'detach_max_constraint_index/1'(B,C).
 'attach_target_module/1'([],_).
 'attach_target_module/1'([A|B],C) :-
-   ( get_attr(A,chr_translate_bootstrap1,L) ->
-     L=v(J,D,E,F,G,H,I),
-     ( J/\16=:=16 ->
-       put_attr(A,chr_translate_bootstrap1,v(J,D,E,F,G,[C|H],I))
+   ( get_attr(A,chr_translate_bootstrap1,D) ->
+     D=v(E,F,G,H,I,J,K),
+     ( E/\16=:=16 ->
+       put_attr(A,chr_translate_bootstrap1,v(E,F,G,H,I,[C|J],K))
      ;
-       K is J\/16,
-       put_attr(A,chr_translate_bootstrap1,v(K,D,E,F,G,[C],I))
+       L is E\/16,
+       put_attr(A,chr_translate_bootstrap1,v(L,F,G,H,I,[C],K))
      )
    ;
      put_attr(A,chr_translate_bootstrap1,v(16,[],[],[],[],[C],[]))
@@ -2061,19 +2079,19 @@ pair_all_with([A|B],C,[A-C|D]) :-
    'attach_target_module/1'(B,C).
 'detach_target_module/1'([],_).
 'detach_target_module/1'([A|B],C) :-
-   ( get_attr(A,chr_translate_bootstrap1,M) ->
-     M=v(J,D,E,F,G,H,I),
-     ( J/\16=:=16 ->
-       'chr sbag_del_element'(H,C,L),
+   ( get_attr(A,chr_translate_bootstrap1,D) ->
+     D=v(E,F,G,H,I,J,K),
+     ( E/\16=:=16 ->
+       'chr sbag_del_element'(J,C,L),
        ( L==[] ->
-         K is J/\ -17,
-         ( K==0 ->
+         M is E/\ -17,
+         ( M==0 ->
            del_attr(A,chr_translate_bootstrap1)
          ;
-           put_attr(A,chr_translate_bootstrap1,v(K,D,E,F,G,[],I))
+           put_attr(A,chr_translate_bootstrap1,v(M,F,G,H,I,[],K))
          )
        ;
-         put_attr(A,chr_translate_bootstrap1,v(J,D,E,F,G,L,I))
+         put_attr(A,chr_translate_bootstrap1,v(E,F,G,H,I,L,K))
        )
      ;
        true
@@ -2084,13 +2102,13 @@ pair_all_with([A|B],C,[A-C|D]) :-
    'detach_target_module/1'(B,C).
 'attach_attached/2'([],_).
 'attach_attached/2'([A|B],C) :-
-   ( get_attr(A,chr_translate_bootstrap1,L) ->
-     L=v(J,D,E,F,G,H,I),
-     ( J/\32=:=32 ->
-       put_attr(A,chr_translate_bootstrap1,v(J,D,E,F,G,H,[C|I]))
+   ( get_attr(A,chr_translate_bootstrap1,D) ->
+     D=v(E,F,G,H,I,J,K),
+     ( E/\32=:=32 ->
+       put_attr(A,chr_translate_bootstrap1,v(E,F,G,H,I,J,[C|K]))
      ;
-       K is J\/32,
-       put_attr(A,chr_translate_bootstrap1,v(K,D,E,F,G,H,[C]))
+       L is E\/32,
+       put_attr(A,chr_translate_bootstrap1,v(L,F,G,H,I,J,[C]))
      )
    ;
      put_attr(A,chr_translate_bootstrap1,v(32,[],[],[],[],[],[C]))
@@ -2098,19 +2116,19 @@ pair_all_with([A|B],C,[A-C|D]) :-
    'attach_attached/2'(B,C).
 'detach_attached/2'([],_).
 'detach_attached/2'([A|B],C) :-
-   ( get_attr(A,chr_translate_bootstrap1,M) ->
-     M=v(J,D,E,F,G,H,I),
-     ( J/\32=:=32 ->
-       'chr sbag_del_element'(I,C,L),
+   ( get_attr(A,chr_translate_bootstrap1,D) ->
+     D=v(E,F,G,H,I,J,K),
+     ( E/\32=:=32 ->
+       'chr sbag_del_element'(K,C,L),
        ( L==[] ->
-         K is J/\ -33,
-         ( K==0 ->
+         M is E/\ -33,
+         ( M==0 ->
            del_attr(A,chr_translate_bootstrap1)
          ;
-           put_attr(A,chr_translate_bootstrap1,v(K,D,E,F,G,H,[]))
+           put_attr(A,chr_translate_bootstrap1,v(M,F,G,H,I,J,[]))
          )
        ;
-         put_attr(A,chr_translate_bootstrap1,v(J,D,E,F,G,H,L))
+         put_attr(A,chr_translate_bootstrap1,v(E,F,G,H,I,J,L))
        )
      ;
        true
@@ -2120,77 +2138,77 @@ pair_all_with([A|B],C,[A-C|D]) :-
    ),
    'detach_attached/2'(B,C).
 attach_increment([],_).
-attach_increment([O|P],v(G,A,B,C,D,E,F)) :-
-   'chr not_locked'(O),
-   ( get_attr(O,chr_translate_bootstrap1,D1) ->
-     D1=v(N,H,I,J,K,L,M),
-     sort(H,Q),
-     'chr merge_attributes'(A,Q,R),
-     sort(I,S),
-     'chr merge_attributes'(B,S,T),
-     sort(J,U),
-     'chr merge_attributes'(C,U,V),
-     sort(K,W),
-     'chr merge_attributes'(D,W,X),
-     sort(L,Y),
-     'chr merge_attributes'(E,Y,Z),
-     sort(M,A1),
-     'chr merge_attributes'(F,A1,B1),
-     C1 is G\/N,
-     put_attr(O,chr_translate_bootstrap1,v(C1,R,T,V,X,Z,B1))
-   ;
-     put_attr(O,chr_translate_bootstrap1,v(G,A,B,C,D,E,F))
-   ),
-   attach_increment(P,v(G,A,B,C,D,E,F)).
-chr_translate_bootstrap1:attr_unify_hook(v(G,A,B,C,D,E,F),H1) :-
-   sort(A,O),
-   sort(B,P),
-   sort(C,Q),
-   sort(D,R),
-   sort(E,S),
-   sort(F,T),
-   ( var(H1) ->
-     ( get_attr(H1,chr_translate_bootstrap1,I1) ->
-       I1=v(N,H,I,J,K,L,M),
-       sort(H,U),
-       'chr merge_attributes'(O,U,V),
-       sort(I,W),
-       'chr merge_attributes'(P,W,X),
-       sort(J,Y),
-       'chr merge_attributes'(Q,Y,Z),
-       sort(K,A1),
-       'chr merge_attributes'(R,A1,B1),
-       sort(L,C1),
-       'chr merge_attributes'(S,C1,D1),
-       sort(M,E1),
-       'chr merge_attributes'(T,E1,F1),
-       G1 is G\/N,
-       put_attr(H1,chr_translate_bootstrap1,v(G1,V,X,Z,B1,D1,F1)),
-       'chr run_suspensions_loop'([V,X,Z,B1,D1,F1])
-     ;
-       put_attr(H1,chr_translate_bootstrap1,v(G,O,P,Q,R,S,T)),
-       'chr run_suspensions_loop'([O,P,Q,R,S,T])
-     )
-   ;
-     ( compound(H1) ->
-       term_variables(H1,J1),
-       attach_increment(J1,v(G,O,P,Q,R,S,T))
+attach_increment([A|B],v(C,D,E,F,G,H,I)) :-
+   'chr not_locked'(A),
+   ( get_attr(A,chr_translate_bootstrap1,J) ->
+     J=v(K,L,M,N,O,P,Q),
+     sort(L,R),
+     'chr merge_attributes'(D,R,S),
+     sort(M,T),
+     'chr merge_attributes'(E,T,U),
+     sort(N,V),
+     'chr merge_attributes'(F,V,W),
+     sort(O,X),
+     'chr merge_attributes'(G,X,Y),
+     sort(P,Z),
+     'chr merge_attributes'(H,Z,A1),
+     sort(Q,B1),
+     'chr merge_attributes'(I,B1,C1),
+     D1 is C\/K,
+     put_attr(A,chr_translate_bootstrap1,v(D1,S,U,W,Y,A1,C1))
+   ;
+     put_attr(A,chr_translate_bootstrap1,v(C,D,E,F,G,H,I))
+   ),
+   attach_increment(B,v(C,D,E,F,G,H,I)).
+chr_translate_bootstrap1:attr_unify_hook(v(A,B,C,D,E,F,G),H) :-
+   sort(B,I),
+   sort(C,J),
+   sort(D,K),
+   sort(E,L),
+   sort(F,M),
+   sort(G,N),
+   ( var(H) ->
+     ( get_attr(H,chr_translate_bootstrap1,O) ->
+       O=v(P,Q,R,S,T,U,V),
+       sort(Q,W),
+       'chr merge_attributes'(I,W,X),
+       sort(R,Y),
+       'chr merge_attributes'(J,Y,Z),
+       sort(S,A1),
+       'chr merge_attributes'(K,A1,B1),
+       sort(T,C1),
+       'chr merge_attributes'(L,C1,D1),
+       sort(U,E1),
+       'chr merge_attributes'(M,E1,F1),
+       sort(V,G1),
+       'chr merge_attributes'(N,G1,H1),
+       I1 is A\/P,
+       put_attr(H,chr_translate_bootstrap1,v(I1,X,Z,B1,D1,F1,H1)),
+       'chr run_suspensions_loop'([X,Z,B1,D1,F1,H1])
+     ;
+       put_attr(H,chr_translate_bootstrap1,v(A,I,J,K,L,M,N)),
+       'chr run_suspensions_loop'([I,J,K,L,M,N])
+     )
+   ;
+     ( compound(H) ->
+       term_variables(H,J1),
+       attach_increment(J1,v(A,I,J,K,L,M,N))
      ;
        true
      ),
-     'chr run_suspensions_loop'([O,P,Q,R,S,T])
+     'chr run_suspensions_loop'([I,J,K,L,M,N])
    ).
 constraint(A,B) :-
    'constraint/2__0'(A,B,_).
 'constraint/2__0'(A,B,C) :-
-   'chr via_1'(A,E),
-   get_attr(E,chr_translate_bootstrap1,F),
-   F=v(K,J,_,_,_,_,_),
-   K/\1=:=1,
-   ( 'chr sbag_member'(D,J),
-     D=suspension(_,I,_,_,_,_,G,H),
+   'chr via_1'(A,D),
+   get_attr(D,chr_translate_bootstrap1,E),
+   E=v(F,G,_,_,_,_,_),
+   F/\1=:=1,
+   ( 'chr sbag_member'(H,G),
+     H=suspension(_,I,_,_,_,_,J,K),
      I=mutable(active),
-     G==A ->
+     J==A ->
      true
    ),
    !,
@@ -2200,16 +2218,16 @@ constraint(A,B) :-
      'chr remove_constraint_internal'(C,L),
      'detach_constraint/2'(L,C)
    ),
-   B=H.
+   B=K.
 'constraint/2__0'(A,B,C) :-
-   'chr via_1'(B,E),
-   get_attr(E,chr_translate_bootstrap1,F),
-   F=v(K,J,_,_,_,_,_),
-   K/\1=:=1,
-   'chr sbag_member'(D,J),
-   D=suspension(_,I,_,_,_,_,G,H),
+   'chr via_1'(B,D),
+   get_attr(D,chr_translate_bootstrap1,E),
+   E=v(F,G,_,_,_,_,_),
+   F/\1=:=1,
+   'chr sbag_member'(H,G),
+   H=suspension(_,I,_,_,_,_,J,K),
    I=mutable(active),
-   H==B,
+   K==B,
    !,
    ( var(C) ->
      true
@@ -2217,7 +2235,7 @@ constraint(A,B) :-
      'chr remove_constraint_internal'(C,L),
      'detach_constraint/2'(L,C)
    ),
-   A=G.
+   A=J.
 'constraint/2__0'(A,B,C) :-
    ( var(C) ->
      'chr insert_constraint_internal'(D,C,chr_translate_bootstrap1:'constraint/2__0'(A,B,C),constraint,[A,B])
@@ -2228,13 +2246,13 @@ constraint(A,B) :-
 constraint_count(A) :-
    'constraint_count/1__0'(A,_).
 'constraint_count/1__0'(A,B) :-
-   'chr global_term_ref_1'(D),
-   get_attr(D,chr_translate_bootstrap1,E),
-   E=v(I,_,H,_,_,_,_),
-   I/\2=:=2,
-   'chr sbag_member'(C,H),
-   C=suspension(_,G,_,_,_,_,F),
-   G=mutable(active),
+   'chr default_store'(C),
+   get_attr(C,chr_translate_bootstrap1,D),
+   D=v(E,_,F,_,_,_,_),
+   E/\2=:=2,
+   'chr sbag_member'(G,F),
+   G=suspension(_,H,_,_,_,_,I),
+   H=mutable(active),
    !,
    ( var(B) ->
      true
@@ -2242,7 +2260,7 @@ constraint_count(A) :-
      'chr remove_constraint_internal'(B,J),
      'detach_constraint_count/1'(J,B)
    ),
-   A=F.
+   A=I.
 'constraint_count/1__0'(A,B) :-
    ( var(B) ->
      'chr insert_constraint_internal'(C,B,chr_translate_bootstrap1:'constraint_count/1__0'(A,B),constraint_count,[A])
@@ -2262,16 +2280,16 @@ constraint_index(A,B) :-
 get_constraint_index(A,B) :-
    'get_constraint_index/2__0'(A,B,_).
 'get_constraint_index/2__0'(A,B,_) :-
-   'chr via_1'(A,D),
-   get_attr(D,chr_translate_bootstrap1,E),
-   E=v(J,_,_,I,_,_,_),
-   J/\4=:=4,
-   'chr sbag_member'(C,I),
-   C=suspension(_,H,_,_,_,_,F,G),
+   'chr via_1'(A,C),
+   get_attr(C,chr_translate_bootstrap1,D),
+   D=v(E,_,_,F,_,_,_),
+   E/\4=:=4,
+   'chr sbag_member'(G,F),
+   G=suspension(_,H,_,_,_,_,I,J),
    H=mutable(active),
-   F==A,
+   I==A,
    !,
-   B=G.
+   B=J.
 'get_constraint_index/2__0'(_,_,_) :-
    !,
    fail.
@@ -2287,15 +2305,15 @@ max_constraint_index(A) :-
 get_max_constraint_index(A) :-
    'get_max_constraint_index/1__0'(A,_).
 'get_max_constraint_index/1__0'(A,_) :-
-   'chr global_term_ref_1'(C),
-   get_attr(C,chr_translate_bootstrap1,D),
-   D=v(H,_,_,_,G,_,_),
-   H/\8=:=8,
-   'chr sbag_member'(B,G),
-   B=suspension(_,F,_,_,_,_,E),
-   F=mutable(active),
+   'chr default_store'(B),
+   get_attr(B,chr_translate_bootstrap1,C),
+   C=v(D,_,_,_,E,_,_),
+   D/\8=:=8,
+   'chr sbag_member'(F,E),
+   F=suspension(_,G,_,_,_,_,H),
+   G=mutable(active),
    !,
-   A=E.
+   A=H.
 'get_max_constraint_index/1__0'(_,_) :-
    !,
    fail.
@@ -2311,30 +2329,30 @@ target_module(A) :-
 get_target_module(A) :-
    'get_target_module/1__0'(A,_).
 'get_target_module/1__0'(A,_) :-
-   'chr global_term_ref_1'(C),
-   get_attr(C,chr_translate_bootstrap1,D),
-   D=v(H,_,_,_,_,G,_),
-   H/\16=:=16,
-   'chr sbag_member'(B,G),
-   B=suspension(_,F,_,_,_,_,E),
-   F=mutable(active),
+   'chr default_store'(B),
+   get_attr(B,chr_translate_bootstrap1,C),
+   C=v(D,_,_,_,_,E,_),
+   D/\16=:=16,
+   'chr sbag_member'(F,E),
+   F=suspension(_,G,_,_,_,_,H),
+   G=mutable(active),
    !,
-   A=E.
+   A=H.
 'get_target_module/1__0'(A,_) :-
    !,
    A=user.
 attached(A,B) :-
    'attached/2__0'(A,B,_).
 'attached/2__0'(A,_,B) :-
-   'chr via_1'(A,D),
-   get_attr(D,chr_translate_bootstrap1,E),
-   E=v(J,_,_,_,_,_,I),
-   J/\32=:=32,
-   'chr sbag_member'(C,I),
-   C=suspension(_,H,_,_,_,_,F,G),
+   'chr via_1'(A,C),
+   get_attr(C,chr_translate_bootstrap1,D),
+   D=v(E,_,_,_,_,_,F),
+   E/\32=:=32,
+   'chr sbag_member'(G,F),
+   G=suspension(_,H,_,_,_,_,I,J),
    H=mutable(active),
-   F==A,
-   G==yes,
+   I==A,
+   J==yes,
    !,
    ( var(B) ->
      true
@@ -2346,26 +2364,26 @@ attached(A,B) :-
    B==yes,
    'chr via_1'(A,D),
    get_attr(D,chr_translate_bootstrap1,E),
-   E=v(G,_,_,_,_,_,F),
-   G/\32=:=32,
+   E=v(F,_,_,_,_,_,G),
+   F/\32=:=32,
    !,
    ( var(C) ->
      'chr allocate_constraint'(chr_translate_bootstrap1:'attached/2__0'(A,B,C),C,attached,[A,B])
    ;
      true
    ),
-   'attached/2__0__0'(F,A,B,C).
+   'attached/2__0__0'(G,A,B,C).
 'attached/2__0__0'([],A,B,C) :-
    'attached/2__1'(A,B,C).
-'attached/2__0__0'([D|E],A,B,C) :-
-   ( D=suspension(_,G,_,_,_,_,F,_),
-     G=mutable(active),
-     F==A ->
-     'chr remove_constraint_internal'(D,H),
-     'detach_attached/2'(H,D),
-     'attached/2__0__0'(E,A,B,C)
+'attached/2__0__0'([A|B],C,D,E) :-
+   ( A=suspension(_,F,_,_,_,_,G,_),
+     F=mutable(active),
+     G==C ->
+     'chr remove_constraint_internal'(A,H),
+     'detach_attached/2'(H,A),
+     'attached/2__0__0'(B,C,D,E)
    ;
-     'attached/2__0__0'(E,A,B,C)
+     'attached/2__0__0'(B,C,D,E)
    ).
 'attached/2__0'(A,B,C) :-
    ( var(C) ->
@@ -2375,15 +2393,15 @@ attached(A,B) :-
    ),
    'attached/2__1'(A,B,C).
 'attached/2__1'(A,_,B) :-
-   'chr via_1'(A,D),
-   get_attr(D,chr_translate_bootstrap1,E),
-   E=v(J,_,_,_,_,_,I),
-   J/\32=:=32,
-   'chr sbag_member'(C,I),
-   C=suspension(_,H,_,_,_,_,F,G),
+   'chr via_1'(A,C),
+   get_attr(C,chr_translate_bootstrap1,D),
+   D=v(E,_,_,_,_,_,F),
+   E/\32=:=32,
+   'chr sbag_member'(G,F),
+   G=suspension(_,H,_,_,_,_,I,J),
    H=mutable(active),
-   F==A,
-   G==no,
+   I==A,
+   J==no,
    !,
    ( var(B) ->
      true
@@ -2395,35 +2413,35 @@ attached(A,B) :-
    B==no,
    'chr via_1'(A,D),
    get_attr(D,chr_translate_bootstrap1,E),
-   E=v(G,_,_,_,_,_,F),
-   G/\32=:=32,
+   E=v(F,_,_,_,_,_,G),
+   F/\32=:=32,
    !,
-   'attached/2__1__0'(F,A,B,C).
+   'attached/2__1__0'(G,A,B,C).
 'attached/2__1__0'([],A,B,C) :-
    'attached/2__2'(A,B,C).
-'attached/2__1__0'([D|E],A,B,C) :-
-   ( D=suspension(_,G,_,_,_,_,F,_),
-     G=mutable(active),
-     F==A ->
-     'chr remove_constraint_internal'(D,H),
-     'detach_attached/2'(H,D),
-     'attached/2__1__0'(E,A,B,C)
+'attached/2__1__0'([A|B],C,D,E) :-
+   ( A=suspension(_,F,_,_,_,_,G,_),
+     F=mutable(active),
+     G==C ->
+     'chr remove_constraint_internal'(A,H),
+     'detach_attached/2'(H,A),
+     'attached/2__1__0'(B,C,D,E)
    ;
-     'attached/2__1__0'(E,A,B,C)
+     'attached/2__1__0'(B,C,D,E)
    ).
 'attached/2__1'(A,B,C) :-
    'attached/2__2'(A,B,C).
 'attached/2__2'(A,B,C) :-
    B==maybe,
-   'chr via_1'(A,E),
-   get_attr(E,chr_translate_bootstrap1,F),
-   F=v(K,_,_,_,_,_,J),
-   K/\32=:=32,
-   ( 'chr sbag_member'(D,J),
-     D=suspension(_,I,_,_,_,_,G,H),
+   'chr via_1'(A,D),
+   get_attr(D,chr_translate_bootstrap1,E),
+   E=v(F,_,_,_,_,_,G),
+   F/\32=:=32,
+   ( 'chr sbag_member'(H,G),
+     H=suspension(_,I,_,_,_,_,J,K),
      I=mutable(active),
-     G==A,
-     H==maybe ->
+     J==A,
+     K==maybe ->
      true
    ),
    !,
@@ -2439,16 +2457,16 @@ attached(A,B) :-
 is_attached(A) :-
    'is_attached/1__0'(A,_).
 'is_attached/1__0'(A,_) :-
-   'chr via_1'(A,C),
-   get_attr(C,chr_translate_bootstrap1,D),
-   D=v(I,_,_,_,_,_,H),
-   I/\32=:=32,
-   'chr sbag_member'(B,H),
-   B=suspension(_,G,_,_,_,_,E,F),
+   'chr via_1'(A,B),
+   get_attr(B,chr_translate_bootstrap1,C),
+   C=v(D,_,_,_,_,_,E),
+   D/\32=:=32,
+   'chr sbag_member'(F,E),
+   F=suspension(_,G,_,_,_,_,H,I),
    G=mutable(active),
-   E==A,
+   H==A,
    !,
-   ( F==no ->
+   ( I==no ->
      fail
    ;
      true
@@ -2458,27 +2476,27 @@ is_attached(A) :-
 chr_clear :-
    'chr_clear/0__0'(_).
 'chr_clear/0__0'(A) :-
-   'chr global_term_ref_1'(B),
+   'chr default_store'(B),
    get_attr(B,chr_translate_bootstrap1,C),
-   C=v(E,D,_,_,_,_,_),
-   E/\1=:=1,
+   C=v(D,E,_,_,_,_,_),
+   D/\1=:=1,
    !,
    ( var(A) ->
      'chr allocate_constraint'(chr_translate_bootstrap1:'chr_clear/0__0'(A),A,chr_clear,[])
    ;
      true
    ),
-   'chr_clear/0__0__0'(D,A).
+   'chr_clear/0__0__0'(E,A).
 'chr_clear/0__0__0'([],A) :-
    'chr_clear/0__1'(A).
-'chr_clear/0__0__0'([B|C],A) :-
-   ( B=suspension(_,D,_,_,_,_,_,_),
+'chr_clear/0__0__0'([A|B],C) :-
+   ( A=suspension(_,D,_,_,_,_,_,_),
      D=mutable(active) ->
-     'chr remove_constraint_internal'(B,E),
-     'detach_constraint/2'(E,B),
-     'chr_clear/0__0__0'(C,A)
+     'chr remove_constraint_internal'(A,E),
+     'detach_constraint/2'(E,A),
+     'chr_clear/0__0__0'(B,C)
    ;
-     'chr_clear/0__0__0'(C,A)
+     'chr_clear/0__0__0'(B,C)
    ).
 'chr_clear/0__0'(A) :-
    ( var(A) ->
@@ -2488,102 +2506,102 @@ chr_clear :-
    ),
    'chr_clear/0__1'(A).
 'chr_clear/0__1'(A) :-
-   'chr global_term_ref_1'(B),
+   'chr default_store'(B),
    get_attr(B,chr_translate_bootstrap1,C),
-   C=v(E,_,D,_,_,_,_),
-   E/\2=:=2,
+   C=v(D,_,E,_,_,_,_),
+   D/\2=:=2,
    !,
-   'chr_clear/0__1__0'(D,A).
+   'chr_clear/0__1__0'(E,A).
 'chr_clear/0__1__0'([],A) :-
    'chr_clear/0__2'(A).
-'chr_clear/0__1__0'([B|C],A) :-
-   ( B=suspension(_,D,_,_,_,_,_),
+'chr_clear/0__1__0'([A|B],C) :-
+   ( A=suspension(_,D,_,_,_,_,_),
      D=mutable(active) ->
-     'chr remove_constraint_internal'(B,E),
-     'detach_constraint_count/1'(E,B),
-     'chr_clear/0__1__0'(C,A)
+     'chr remove_constraint_internal'(A,E),
+     'detach_constraint_count/1'(E,A),
+     'chr_clear/0__1__0'(B,C)
    ;
-     'chr_clear/0__1__0'(C,A)
+     'chr_clear/0__1__0'(B,C)
    ).
 'chr_clear/0__1'(A) :-
    'chr_clear/0__2'(A).
 'chr_clear/0__2'(A) :-
-   'chr global_term_ref_1'(B),
+   'chr default_store'(B),
    get_attr(B,chr_translate_bootstrap1,C),
-   C=v(E,_,_,D,_,_,_),
-   E/\4=:=4,
+   C=v(D,_,_,E,_,_,_),
+   D/\4=:=4,
    !,
-   'chr_clear/0__2__0'(D,A).
+   'chr_clear/0__2__0'(E,A).
 'chr_clear/0__2__0'([],A) :-
    'chr_clear/0__3'(A).
-'chr_clear/0__2__0'([B|C],A) :-
-   ( B=suspension(_,D,_,_,_,_,_,_),
+'chr_clear/0__2__0'([A|B],C) :-
+   ( A=suspension(_,D,_,_,_,_,_,_),
      D=mutable(active) ->
-     'chr remove_constraint_internal'(B,E),
-     'detach_constraint_index/2'(E,B),
-     'chr_clear/0__2__0'(C,A)
+     'chr remove_constraint_internal'(A,E),
+     'detach_constraint_index/2'(E,A),
+     'chr_clear/0__2__0'(B,C)
    ;
-     'chr_clear/0__2__0'(C,A)
+     'chr_clear/0__2__0'(B,C)
    ).
 'chr_clear/0__2'(A) :-
    'chr_clear/0__3'(A).
 'chr_clear/0__3'(A) :-
-   'chr global_term_ref_1'(B),
+   'chr default_store'(B),
    get_attr(B,chr_translate_bootstrap1,C),
-   C=v(E,_,_,_,D,_,_),
-   E/\8=:=8,
+   C=v(D,_,_,_,E,_,_),
+   D/\8=:=8,
    !,
-   'chr_clear/0__3__0'(D,A).
+   'chr_clear/0__3__0'(E,A).
 'chr_clear/0__3__0'([],A) :-
    'chr_clear/0__4'(A).
-'chr_clear/0__3__0'([B|C],A) :-
-   ( B=suspension(_,D,_,_,_,_,_),
+'chr_clear/0__3__0'([A|B],C) :-
+   ( A=suspension(_,D,_,_,_,_,_),
      D=mutable(active) ->
-     'chr remove_constraint_internal'(B,E),
-     'detach_max_constraint_index/1'(E,B),
-     'chr_clear/0__3__0'(C,A)
+     'chr remove_constraint_internal'(A,E),
+     'detach_max_constraint_index/1'(E,A),
+     'chr_clear/0__3__0'(B,C)
    ;
-     'chr_clear/0__3__0'(C,A)
+     'chr_clear/0__3__0'(B,C)
    ).
 'chr_clear/0__3'(A) :-
    'chr_clear/0__4'(A).
 'chr_clear/0__4'(A) :-
-   'chr global_term_ref_1'(B),
+   'chr default_store'(B),
    get_attr(B,chr_translate_bootstrap1,C),
-   C=v(E,_,_,_,_,D,_),
-   E/\16=:=16,
+   C=v(D,_,_,_,_,E,_),
+   D/\16=:=16,
    !,
-   'chr_clear/0__4__0'(D,A).
+   'chr_clear/0__4__0'(E,A).
 'chr_clear/0__4__0'([],A) :-
    'chr_clear/0__5'(A).
-'chr_clear/0__4__0'([B|C],A) :-
-   ( B=suspension(_,D,_,_,_,_,_),
+'chr_clear/0__4__0'([A|B],C) :-
+   ( A=suspension(_,D,_,_,_,_,_),
      D=mutable(active) ->
-     'chr remove_constraint_internal'(B,E),
-     'detach_target_module/1'(E,B),
-     'chr_clear/0__4__0'(C,A)
+     'chr remove_constraint_internal'(A,E),
+     'detach_target_module/1'(E,A),
+     'chr_clear/0__4__0'(B,C)
    ;
-     'chr_clear/0__4__0'(C,A)
+     'chr_clear/0__4__0'(B,C)
    ).
 'chr_clear/0__4'(A) :-
    'chr_clear/0__5'(A).
 'chr_clear/0__5'(A) :-
-   'chr global_term_ref_1'(B),
+   'chr default_store'(B),
    get_attr(B,chr_translate_bootstrap1,C),
-   C=v(E,_,_,_,_,_,D),
-   E/\32=:=32,
+   C=v(D,_,_,_,_,_,E),
+   D/\32=:=32,
    !,
-   'chr_clear/0__5__0'(D,A).
+   'chr_clear/0__5__0'(E,A).
 'chr_clear/0__5__0'([],A) :-
    'chr_clear/0__6'(A).
-'chr_clear/0__5__0'([B|C],A) :-
-   ( B=suspension(_,D,_,_,_,_,_,_),
+'chr_clear/0__5__0'([A|B],C) :-
+   ( A=suspension(_,D,_,_,_,_,_,_),
      D=mutable(active) ->
-     'chr remove_constraint_internal'(B,E),
-     'detach_attached/2'(E,B),
-     'chr_clear/0__5__0'(C,A)
+     'chr remove_constraint_internal'(A,E),
+     'detach_attached/2'(E,A),
+     'chr_clear/0__5__0'(B,C)
    ;
-     'chr_clear/0__5__0'(C,A)
+     'chr_clear/0__5__0'(B,C)
    ).
 'chr_clear/0__5'(A) :-
    'chr_clear/0__6'(A).


Index: chr_translate_bootstrap2.pl
===================================================================
RCS file: /cvs/pkgs/rpms/yap/F-11/chr_translate_bootstrap2.pl,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -p -r1.1 -r1.2
--- chr_translate_bootstrap2.pl	1 May 2006 10:55:44 -0000	1.1
+++ chr_translate_bootstrap2.pl	15 Jun 2009 20:46:22 -0000	1.2
@@ -1,23 +1,21 @@
 /*  Generated by CHR bootstrap compiler
     From: chr_translate_bootstrap2.chr
-    Date: [77,111,110,32,77,97,121,32,32,49,32,49,50,58,50,49,58,51,55,32,50,48,48,54,10]
+    Date: Mon Jun 15 21:43:47 2009
+
 
     DO NOT EDIT.  EDIT THE CHR FILE INSTEAD
 */
 
 :-module(chr_translate,[chr_translate/2]).
 :-use_module(chr_runtime).
-:-style_check(-singleton).
 :-style_check(-discontiguous).
 :-use_module(chr_runtime).
 :-use_module(chr_hashtable_store).
-:-style_check(-singleton).
 :-style_check(-discontiguous).
-:-use_module(library(lists)).
+:-use_module(library(lists),[append/3,append/2,member/2,delete/3,reverse/2,permutation/2]).
+:-use_module(library(ordsets)).
 :-use_module(hprolog).
-:-use_module(library(assoc)).
 :-use_module(pairlist).
-:-use_module(library(ordsets)).
 :-use_module(a_star).
 :-use_module(clean_code).
 :-use_module(builtins).
@@ -42,7 +40,7 @@ chr_translate(A,B) :-
      store_management_preds(C,H),
      insert_declarations(E,I),
      chr_module_declaration(J),
-     append_lists([I,H,G,J],B)
+     append([I,H,G,J],B)
    ).
 store_management_preds(A,B) :-
    generate_attach_detach_a_constraint_all(A,C),
@@ -52,12 +50,16 @@ store_management_preds(A,B) :-
    generate_extra_clauses(A,G),
    generate_insert_delete_constraints(A,H),
    generate_store_code(A,I),
-   append_lists([C,D,E,F,G,H,I],B).
+   append([C,D,E,F,G,H,I],B).
+specific_declarations([(:-use_module(chr_runtime)),(:-use_module(chr_hashtable_store)),(:-style_check(-discontiguous))|A],A).
 insert_declarations(A,B) :-
-   ( A=[(:-module(C,D))|E] ->
-     B=[(:-module(C,D)),(:-use_module(chr_runtime)),(:-use_module(chr_hashtable_store)),(:-style_check(-singleton)),(:-style_check(-discontiguous))|E]
+   specific_declarations(C,D),
+   ( A=[(:-module(E,F))|G] ->
+     B=[(:-module(E,F))|C],
+     D=G
    ;
-     B=[(:-use_module(chr_runtime)),(:-use_module(chr_hashtable_store)),(:-style_check(-singleton)),(:-style_check(-discontiguous))|A]
+     B=C,
+     D=A
    ).
 chr_module_declaration(A) :-
    get_target_module(B),
@@ -106,25 +108,31 @@ partition_clauses([A|B],C,D,E) :-
        E=I
      )
    ;
-     ( A=option(L,M) ->
+     ( A=(:-chr_option(L,M)) ->
        handle_option(L,M),
        C=G,
        D=H,
        E=I
      )
    ;
+     ( A=(:-chr_type _) ->
+       C=G,
+       D=H,
+       E=I
+     )
+   ;
      C=G,
      D=H,
      E=[A|I]
    ),
    partition_clauses(B,G,H,I).
 is_declaration(A,B) :-
-   ( A=(:-C) ->
-     true
+   A=(:-C),
+   (
+     C=..[chr_constraint,D]
    ;
-     A=C
+     C=..[chr_constraint,D]
    ),
-   C=..[constraints,D],
    conj2list(D,B).
 parse_rule(A,B) :-
    A=(C at D),
@@ -250,7 +258,7 @@ check_pragma(A,B) :-
    !,
    B=pragma(_,_,_,_,E),
    pragma_unique(E,C,D),
-   format('CHR compiler WARNING: undocument pragma ~w in ~@.
+   format('CHR compiler WARNING: undocumented pragma ~w in ~@.
 ',[A,format_rule(B)]),
    format('    `--> Only use this pragma if you know what you are doing.
 ',[]).
@@ -386,7 +394,7 @@ handle_option(A,B) :-
 option_definition(optimize,experimental,A) :-
    A=[unique_analyse_optimise-on,check_unnecessary_active-full,reorder_heads-on,set_semantics_rule-on,check_attachments-on,guard_via_reschedule-on].
 option_definition(optimize,full,A) :-
-   A=[unique_analyse_optimise-on,check_unnecessary_active-full,reorder_heads-on,set_semantics_rule-on,check_attachments-on,guard_via_reschedule-on].
+   A=[unique_analyse_optimise-off,check_unnecessary_active-full,reorder_heads-on,set_semantics_rule-on,check_attachments-on,guard_via_reschedule-on].
 option_definition(optimize,sicstus,A) :-
    A=[unique_analyse_optimise-off,check_unnecessary_active-simplification,reorder_heads-off,set_semantics_rule-off,check_attachments-off,guard_via_reschedule-off].
 option_definition(optimize,off,A) :-
@@ -415,6 +423,7 @@ option_definition(debug,off,A) :-
    A=[debugable-off].
 option_definition(type_definition,_,[]).
 option_definition(type_declaration,_,[]).
+option_definition(verbosity,_,[]).
 init_chr_pp_flags :-
    chr_pp_flag_definition(A,[B|_]),
    set_chr_pp_flag(A,B),
@@ -454,7 +463,7 @@ generate_attach_detach_a_constraint_all(
      E=[]
    ),
    generate_attach_detach_a_constraint_all(B,F),
-   append_lists([D,E,F],C).
+   append([D,E,F],C).
 generate_attach_a_constraint(A,[B,C]) :-
    generate_attach_a_constraint_empty_list(A,B),
    get_max_constraint_index(D),
@@ -491,13 +500,13 @@ generate_attach_body_n(A/B,C,D,E) :-
    or_pattern(F,G),
    get_max_constraint_index(H),
    make_attr(H,I,J,K),
-   nth(F,J,L),
-   substitute(L,J,[D|L],M),
+   nth1(F,J,L),
+   substitute_eq(L,J,[D|L],M),
    make_attr(H,I,M,N),
-   substitute(L,J,[D],O),
+   substitute_eq(L,J,[D],O),
    make_attr(H,P,O,Q),
-   copy_term(J,R),
-   nth(F,R,[D]),
+   copy_term_nat(J,R),
+   nth1(F,R,[D]),
    delete(R,[D],S),
    set_elems(S,[]),
    make_attr(H,G,R,T),
@@ -541,10 +550,10 @@ generate_detach_body_n(A/B,C,D,E) :-
    and_pattern(F,H),
    get_max_constraint_index(I),
    make_attr(I,J,K,L),
-   nth(F,K,M),
-   substitute(M,K,[],N),
+   nth1(F,K,M),
+   substitute_eq(M,K,[],N),
    make_attr(I,O,N,P),
-   substitute(M,K,Q,R),
+   substitute_eq(M,K,Q,R),
    make_attr(I,J,R,S),
    get_target_module(T),
    E=(get_attr(C,T,U)->U=L,(J/\G=:=G->'chr sbag_del_element'(M,D,Q),(Q==[]->O is J/\H,(O==0->del_attr(C,T);put_attr(C,T,P));put_attr(C,T,S));true);true).
@@ -611,13 +620,13 @@ generate_extra_clauses(A,[B,C,D,E,F]) :-
    generate_allocate_clause(D),
    generate_insert_constraint_internal(F).
 generate_remove_clause(A) :-
-   A=(remove_constraint_internal(B,C,D):-arg(2,B,E),E=mutable(F),'chr update_mutable'(removed,E),(compound(F)->C=[],D=no;F==removed->C=[],D=no;D=yes,chr_indexed_variables(B,C))).
+   A=(remove_constraint_internal(B,C,D):-arg(2,B,E),'chr get_mutable'(F,E),'chr update_mutable'(removed,E),(compound(F)->C=[],D=no;F==removed->C=[],D=no;D=yes,chr_indexed_variables(B,C))).
 generate_activate_clause(A) :-
-   A=(activate_constraint(B,C,D,E):-arg(2,D,F),F=mutable(G),'chr update_mutable'(active,F),(nonvar(E)->true;arg(4,D,H),H=mutable(I),E is I+1,'chr update_mutable'(E,H)),(compound(G)->term_variables(G,C),'chr none_locked'(C),B=yes;G==removed->chr_indexed_variables(D,C),B=yes;C=[],B=no)).
+   A=(activate_constraint(B,C,D,E):-arg(2,D,F),'chr get_mutable'(G,F),'chr update_mutable'(active,F),(nonvar(E)->true;arg(4,D,H),'chr get_mutable'(I,H),E is I+1,'chr update_mutable'(E,H)),(compound(G)->term_variables(G,C),'chr none_locked'(C),B=yes;G==removed->chr_indexed_variables(D,C),B=yes;C=[],B=no)).
 generate_allocate_clause(A) :-
-   A=(allocate_constraint(B,C,D,E):-C=..[suspension,F,G,B,H,I,D|E],H=mutable(0),'chr empty_history'(J),I=mutable(J),chr_indexed_variables(C,K),G=mutable(passive(K)),'chr gen_id'(F)).
+   A=(allocate_constraint(B,C,D,E):-C=..[suspension,F,G,B,H,I,D|E],'chr create_mutable'(0,H),'chr empty_history'(J),'chr create_mutable'(J,I),chr_indexed_variables(C,K),'chr create_mutable'(passive(K),G),'chr gen_id'(F)).
 generate_insert_constraint_internal(A) :-
-   A=(insert_constraint_internal(yes,B,C,D,E,F):-C=..[suspension,G,H,D,I,J,E|F],chr_indexed_variables(C,B),'chr none_locked'(B),H=mutable(active),I=mutable(0),J=mutable(K),'chr empty_history'(K),'chr gen_id'(G)).
+   A=(insert_constraint_internal(yes,B,C,D,E,F):-C=..[suspension,G,H,D,I,J,E|F],chr_indexed_variables(C,B),'chr none_locked'(B),'chr create_mutable'(active,H),'chr create_mutable'(0,I),'chr empty_history'(K),'chr create_mutable'(K,J),'chr gen_id'(G)).
 global_indexed_variables_clause(A,B) :-
    ( forsome(C,A,chr_translate:may_trigger(C)) ->
      D=(E=..[_,_,_,_,_,_,F|_],'$indexed_variables'(F,G))
@@ -730,12 +739,14 @@ generate_insert_constraint_body(default,
    ;
      generate_attach_body_n(A,E,B,F)
    ),
-   C=('chr global_term_ref_1'(E),F).
+   C=('chr default_store'(E),F).
 generate_insert_constraint_body(multi_hash(A),B,C,D) :-
    generate_multi_hash_insert_constraint_bodies(A,B,C,D).
 generate_insert_constraint_body(global_ground,A,B,C) :-
    global_ground_store_name(A,D),
-   C=(nb_getval(D,E),b_setval(D,[B|E])).
+   make_get_store_goal(D,E,F),
+   make_update_store_goal(D,[B|E],G),
+   C=(F,G).
 generate_insert_constraint_body(multi_store(A),B,C,D) :-
    find_with_var_identity(E,[C],(member(F,A),chr_translate:generate_insert_constraint_body(F,B,C,E)),G),
    list2conj(G,D).
@@ -743,7 +754,8 @@ generate_multi_hash_insert_constraint_bo
 generate_multi_hash_insert_constraint_bodies([A|B],C,D,(E,F)) :-
    multi_hash_store_name(C,A,G),
    multi_hash_key(C,A,D,H,I),
-   E=(H,nb_getval(G,J),insert_ht(J,I,D)),
+   make_get_store_goal(G,J,K),
+   E=(H,K,insert_ht(J,I,D)),
    generate_multi_hash_insert_constraint_bodies(B,C,D,F).
 generate_delete_constraint(A,B,C) :-
    make_name('$delete_from_store_',B,D),
@@ -755,16 +767,18 @@ generate_delete_constraint_body(default,
    get_max_constraint_index(D),
    ( D==1 ->
      generate_detach_body_1(A,E,B,F),
-     C=('chr global_term_ref_1'(E),F)
+     C=('chr default_store'(E),F)
    ;
      generate_detach_body_n(A,E,B,F),
-     C=('chr global_term_ref_1'(E),F)
+     C=('chr default_store'(E),F)
    ).
 generate_delete_constraint_body(multi_hash(A),B,C,D) :-
    generate_multi_hash_delete_constraint_bodies(A,B,C,D).
 generate_delete_constraint_body(global_ground,A,B,C) :-
    global_ground_store_name(A,D),
-   C=(nb_getval(D,E),'chr sbag_del_element'(E,B,F),b_setval(D,F)).
+   make_get_store_goal(D,E,F),
+   make_update_store_goal(D,G,H),
+   C=(F,'chr sbag_del_element'(E,B,G),H).
 generate_delete_constraint_body(multi_store(A),B,C,D) :-
    find_with_var_identity(E,[C],(member(F,A),chr_translate:generate_delete_constraint_body(F,B,C,E)),G),
    list2conj(G,D).
@@ -772,7 +786,8 @@ generate_multi_hash_delete_constraint_bo
 generate_multi_hash_delete_constraint_bodies([A|B],C,D,(E,F)) :-
    multi_hash_store_name(C,A,G),
    multi_hash_key(C,A,D,H,I),
-   E=(H,nb_getval(G,J),delete_ht(J,I,D)),
+   make_get_store_goal(G,J,K),
+   E=(H,K,delete_ht(J,I,D)),
    generate_multi_hash_delete_constraint_bodies(B,C,D,F).
 generate_delete_constraint_call(A,B,C) :-
    make_name('$delete_from_store_',A,D),
@@ -803,19 +818,22 @@ multi_store_generate_store_code([A|B],C,
 multi_hash_store_initialisations([],_,A,A).
 multi_hash_store_initialisations([A|B],C,D,E) :-
    multi_hash_store_name(C,A,F),
-   D=[(:-new_ht(G),nb_setval(F,G))|H],
-   multi_hash_store_initialisations(B,C,H,E).
+   make_init_store_goal(F,G,H),
+   D=[(:-new_ht(G),H)|I],
+   multi_hash_store_initialisations(B,C,I,E).
 global_ground_store_initialisation(A,B,C) :-
    global_ground_store_name(A,D),
-   B=[(:-nb_setval(D,[]))|C].
+   make_init_store_goal(D,[],E),
+   B=[(:-E)|C].
 multi_hash_via_lookups([],_,A,A).
 multi_hash_via_lookups([A|B],C,D,E) :-
    multi_hash_via_lookup_name(C,A,F),
    G=..[F,H,I],
    multi_hash_store_name(C,A,J),
-   K=(nb_getval(J,L),lookup_ht(L,H,I)),
-   D=[(G:-K)|M],
-   multi_hash_via_lookups(B,C,M,E).
+   make_get_store_goal(J,K,L),
+   M=(L,lookup_ht(K,H,I)),
+   D=[(G:-M)|N],
+   multi_hash_via_lookups(B,C,N,E).
 multi_hash_via_lookup_name(A/B,C,D) :-
    ( integer(C) ->
      E=C
@@ -886,7 +904,7 @@ enumerate_store_body(default,A,B,C) :-
    get_constraint_index(A,D),
    get_target_module(E),
    get_max_constraint_index(F),
-   G=('chr global_term_ref_1'(H),get_attr(H,E,I)),
+   G=('chr default_store'(H),get_attr(H,E,I)),
    ( F>1 ->
      J is D+1,
      K=(arg(J,I,L),'chr sbag_member'(B,L))
@@ -898,12 +916,14 @@ enumerate_store_body(multi_hash([A|_]),B
    multi_hash_enumerate_store_body(A,B,C,D).
 enumerate_store_body(global_ground,A,B,C) :-
    global_ground_store_name(A,D),
-   C=(nb_getval(D,E),'chr sbag_member'(B,E)).
+   make_get_store_goal(D,E,F),
+   C=(F,'chr sbag_member'(B,E)).
 enumerate_store_body(multi_store(A),B,C,D) :-
    once((member(E,A),enumerate_store_body(E,B,C,D))).
 multi_hash_enumerate_store_body(A,B,C,D) :-
    multi_hash_store_name(B,A,E),
-   D=(nb_getval(E,F),value_ht(F,C)).
+   make_get_store_goal(E,F,G),
+   D=(G,value_ht(F,C)).
 check_attachments(A) :-
    ( chr_pp_flag(check_attachments,on) ->
      check_constraint_attachments(A)
@@ -1084,35 +1104,6 @@ gen_uncond_attach_goal(A,B,C,D) :-
    ),
    generate_insert_constraint_call(A,B,H),
    C=(activate_constraint(I,G,B,D),(I==yes->H,F;true)).
-occurrences_code(A,B,C,D,E,F,G) :-
-   ( A>B ->
-     E=D,
-     F=G
-   ;
-     occurrence_code(A,C,D,H,F,I),
-     J is A+1,
-     occurrences_code(J,B,C,H,E,I,G)
-   ).
-occurrences_code(A,B,C,D,E,F) :-
-   get_occurrence(B,A,G,H),
-   ( is_passive(G,H) ->
-     D=C,
-     E=F
-   ;
-     get_rule(G,I),
-     I=pragma(rule(J,K,_,_),ids(L,M),_,_,_),
-     ( select2(L,J,H,N,O,P) ->
-       D=C,
-       head1_code(N,P,O,I,B,C,E,F)
-     ;
-       ( select2(M,K,H,Q,R,S) ->
-         length(S,T),
-         head2_code(Q,S,R,I,T,B,C,E,U),
-         inc_id(C,D),
-         gen_alloc_inc_clause(B,C,U,F)
-       )
-     )
-   ).
 rules_code([],_,A,A,B,B).
 rules_code([A|B],C,D,E,F,G) :-
    rule_code(A,C,D,H,F,I),
@@ -1338,7 +1329,7 @@ unique_analyse_optimise_main([A|B],C,D,[
    apply_unique_patterns_to_constraints(O,Q,H,S),
    globalize_unique_pragmas(R,M),
    globalize_unique_pragmas(S,M),
-   append_lists([R,S,K],T),
+   append([R,S,K],T),
    E=pragma(I,J,T,L,M),
    U is C+1,
    unique_analyse_optimise_main(B,U,H,F).
@@ -1358,16 +1349,14 @@ apply_unique_patterns_to_constraints([A|
 apply_unique_pattern(A,B,C,D) :-
    C=unique(E,F),
    subsumes(A,E,G),
-   ( setof(H,I^J^K^(member(I,F),lookup_eq(G,I,J),term_variables(J,K),member(H,K)),L) ->
-     true
-   ;
-     L=[]
-   ),
-   D=unique(B,L).
+   find_with_var_identity(H,G,(member(I,F),lookup_eq(G,I,J),term_variables(J,K),member(H,K)),L),
+   sort(L,M),
+   N=M,
+   D=unique(B,N).
 subsumes(A,B,C) :-
-   empty_assoc(D),
+   empty_ds(D),
    subsumes_aux(A,B,D,E),
-   assoc_to_list(E,F),
+   ds_to_list(E,F),
    build_unifier(F,C).
 subsumes_aux(A,B,C,D) :-
    ( compound(B),
@@ -1381,13 +1370,13 @@ subsumes_aux(A,B,C,D) :-
      )
    ;
      ( var(B),
-       get_assoc(A,C,G) ->
+       get_ds(A,C,G) ->
        G==B,
        D=C
      )
    ;
      var(B),
-     put_assoc(A,C,B,D)
+     put_ds(A,C,B,D)
    ).
 subsumes_aux(0,_,_,A,A) :-
    !.
@@ -1416,11 +1405,10 @@ discover_unique_pattern(A,B,C) :-
    term_variables(I,L),
    select_pragma_unique_variables(K,L,M),
    N=unique(I,M),
-   copy_term(N,C),
-   ( prolog_flag(verbose,O),
-     O==yes ->
+   copy_term_nat(N,C),
+   ( verbosity_on ->
      format('Found unique pattern ~w in rule ~d~@
-',[C,B,(E=yes(P)->write([58,32]),write(P);true)])
+',[C,B,(E=yes(O)->write([58,32]),write(O);true)])
    ;
      true
    ).
@@ -1611,7 +1599,7 @@ rest_heads_retrieval_and_matching_n([A|B
      ;
        get_constraint_index(Q/R,X),
        make_attr(V,_,Y,T),
-       nth(X,Y,W)
+       nth1(X,Y,W)
      )
    ;
      lookup_passive_head(S,A,[H|F],N,I,W),
@@ -1621,7 +1609,7 @@ rest_heads_retrieval_and_matching_n([A|B
    head_arg_matches(A1,N,B1,C1),
    D1=..[suspension,_,E1,_,_,_,_|Z],
    different_from_other_susps(A,L,F,G,F1),
-   create_get_mutable(active,E1,G1),
+   create_get_mutable_ref(active,E1,G1),
    H1=('chr sbag_member'(L,W),L=D1,G1,F1,B1),
    ( member(unique(C,I1),E),
      check_unique_keys(I1,N) ->
@@ -1647,7 +1635,7 @@ check_unique_keys([A|B],C) :-
    lookup_eq(C,A,_),
    check_unique_keys(B,C).
 different_from_other_susps(A,B,C,D,E) :-
-   ( bagof(F,G^(nth(G,C,H),\+A\=H,nth(G,D,I),F=(B\==I)),J) ->
+   ( bagof(F,G^(nth1(G,C,H),\+A\=H,nth1(G,D,I),F=(B\==I)),J) ->
      list2conj(J,E)
    ;
      E=true
@@ -1676,7 +1664,7 @@ common_variables(A,B,C) :-
 gen_get_mod_constraints(A,B,C) :-
    get_target_module(D),
    ( A==[] ->
-     B=('chr global_term_ref_1'(E),get_attr(E,D,F),F=C)
+     B=('chr default_store'(E),get_attr(E,D,F),F=C)
    ;
      ( A=[G] ->
        H='chr via_1'(G,I)
@@ -1701,7 +1689,7 @@ guard_body_copies2(A,B,C,D) :-
    term_variables(I,N),
    term_variables(L,O),
    ( chr_pp_flag(guard_locks,on),
-     bagof('chr lock'(P)-'chr unlock'(P),Q^(member(Q,N),lookup_eq(B,Q,P),memberchk_eq(P,O)),R) ->
+     find_with_var_identity('chr lock'(P)-'chr unlock'(P),B,(member(Q,N),lookup_eq(B,Q,P),memberchk_eq(P,O)),R) ->
      once(pairup(S,T,R))
    ;
      S=[],
@@ -1864,7 +1852,7 @@ simpagation_head2_worker_body(A,B,C,D,E,
    head_info(B,B1,C1,_,_,D1),
    head_arg_matches(D1,S,E1,F1),
    G1=..[suspension,_,H1,_,_,_,_|C1],
-   create_get_mutable(active,H1,I1),
+   create_get_mutable_ref(active,H1,I1),
    J1=(N=G1,I1),
    (
      (
@@ -1917,8 +1905,8 @@ simpagation_head2_worker_body(A,B,C,D,E,
 gen_state_cond_call(A,B,C,D,E) :-
    length(F,B),
    G=..[suspension,_,H,_,I,_,_|F],
-   create_get_mutable(active,H,J),
-   create_get_mutable(D,I,K),
+   create_get_mutable_ref(active,H,J),
+   create_get_mutable_ref(D,I,K),
    E=(A=G,J,K->'chr update_mutable'(inactive,H),C;true).
 simpagation_head2_worker_end(A,B,C/D,E,F,G) :-
    head_info(A,D,_,_,H,I),
@@ -1993,7 +1981,7 @@ propagation_body(A,B,C,D,E,F/G,H,I,J) :-
    functor(A,_,S),
    gen_vars(S,T),
    U=..[suspension,_,V,_,_,_,_|T],
-   create_get_mutable(active,V,W),
+   create_get_mutable_ref(active,V,W),
    X=(Q=U,W),
    Y=[[Q|R]|M],
    build_head(F,G,H,Y,Z),
@@ -2087,7 +2075,7 @@ propagation_accumulator([A|B],[C|D],E,F/
    head_arg_matches(T,N,U,V),
    W=..[suspension,_,X,_,_,_,_|R],
    different_from_other_susps(C,S,D,O,Y),
-   create_get_mutable(active,X,Z),
+   create_get_mutable_ref(active,X,Z),
    A1=(S=W,Z,Y,U),
    lookup_passive_head(A,[C|D],V,B1,C1),
    inc_id(H,D1),
@@ -2192,7 +2180,7 @@ order_score_vars([A|B],C,D,E,F) :-
      G=E
    ),
    order_score_vars(B,C,D,G,F).
-create_get_mutable(A,B,C) :-
+create_get_mutable_ref(A,B,C) :-
    C=(B=mutable(A)).
 gen_var(_).
 gen_vars(A,B) :-
@@ -2213,13 +2201,13 @@ build_head(A,B,C,D,E) :-
    E=..[F|D].
 buildName(A,B,C,D) :-
    atom_concat(A,/,E),
-   atom_concat(E,B,F),
+   atomic_concat(E,B,F),
    buildName_(C,F,D).
 buildName_([],A,A).
 buildName_([A|B],C,D) :-
    buildName_(B,C,E),
    atom_concat(E,'__',F),
-   atom_concat(F,A,D).
+   atomic_concat(F,A,D).
 vars_susp(A,B,C,D) :-
    length(B,A),
    append(B,[C],D).
@@ -2267,7 +2255,20 @@ atom_concat_list([A],A) :-
    !.
 atom_concat_list([A|B],C) :-
    atom_concat_list(B,D),
-   atom_concat(A,D,C).
+   atomic_concat(A,D,C).
+atomic_concat(A,B,C) :-
+   make_atom(A,D),
+   make_atom(B,E),
+   atom_concat(D,E,C).
+make_atom(A,B) :-
+   ( atom(A) ->
+     B=A
+   ;
+     ( number(A) ->
+       number_codes(A,C),
+       atom_codes(B,C)
+     )
+   ).
 make_name(A,B/C,D) :-
    atom_concat_list([A,B,/,C],D).
 set_elems([],_).
@@ -2296,7 +2297,7 @@ lookup_passive_head(default,A,B,C,D,E) :
      functor(A,I,J),
      get_constraint_index(I/J,K),
      make_attr(H,_,L,F),
-     nth(K,L,E)
+     nth1(K,L,E)
    ).
 lookup_passive_head(multi_hash(A),B,_,C,D,E) :-
    once((member(F,A),multi_hash_key_args(F,B,G),translate(G,C,H))),
@@ -2312,7 +2313,7 @@ lookup_passive_head(multi_hash(A),B,_,C,
 lookup_passive_head(global_ground,A,_,_,B,C) :-
    functor(A,D,E),
    global_ground_store_name(D/E,F),
-   B=nb_getval(F,C),
+   make_get_store_goal(F,C,B),
    update_store_type(D/E,global_ground).
 lookup_passive_head(multi_store(A),B,C,D,E,F) :-
    once((member(G,A),lookup_passive_head(G,B,C,D,E,F))).
@@ -2347,12 +2348,15 @@ validate_store_type_assumptions([]).
 validate_store_type_assumptions([A|B]) :-
    validate_store_type_assumption(A),
    validate_store_type_assumptions(B).
+verbosity_on :-
+   prolog_flag(verbose,A),
+   A==yes.
 attr_unify_hook(_,_) :-
    write('ERROR: Unexpected triggering of attr_unify_hook/2 in module '),
    writeln(chr_translate).
 remove_constraint_internal(A,B,C) :-
    arg(2,A,D),
-   D=mutable(E),
+   'chr get_mutable'(E,D),
    'chr update_mutable'(removed,D),
    ( compound(E) ->
      B=[],
@@ -2368,13 +2372,13 @@ remove_constraint_internal(A,B,C) :-
    ).
 activate_constraint(A,B,C,D) :-
    arg(2,C,E),
-   E=mutable(F),
+   'chr get_mutable'(F,E),
    'chr update_mutable'(active,E),
    ( nonvar(D) ->
      true
    ;
      arg(4,C,G),
-     G=mutable(H),
+     'chr get_mutable'(H,G),
      D is H+1,
      'chr update_mutable'(D,G)
    ),
@@ -2393,21 +2397,21 @@ activate_constraint(A,B,C,D) :-
    ).
 allocate_constraint(A,B,C,D) :-
    B=..[suspension,E,F,A,G,H,C|D],
-   G=mutable(0),
+   'chr create_mutable'(0,G),
    'chr empty_history'(I),
-   H=mutable(I),
+   'chr create_mutable'(I,H),
    chr_indexed_variables(B,J),
-   F=mutable(passive(J)),
+   'chr create_mutable'(passive(J),F),
    'chr gen_id'(E).
 chr_indexed_variables(_,[]).
 insert_constraint_internal(yes,A,B,C,D,E) :-
    B=..[suspension,F,G,C,H,I,D|E],
    chr_indexed_variables(B,A),
    'chr none_locked'(A),
-   G=mutable(active),
-   H=mutable(0),
-   I=mutable(J),
+   'chr create_mutable'(active,G),
+   'chr create_mutable'(0,H),
    'chr empty_history'(J),
+   'chr create_mutable'(J,I),
    'chr gen_id'(F).
 '$insert_in_store_constraint/2'(A) :-
    arg(8,A,B),
@@ -2573,19 +2577,14 @@ insert_constraint_internal(yes,A,B,C,D,E
    'chr sbag_del_element'(D,A,E),
    b_setval('$chr_store_global_ground_chr_translate:allocation_occurrence/2',E).
 '$insert_in_store_rule/2'(A) :-
-   nb_getval('$chr_store_global_ground_chr_translate:rule/2',B),
-   b_setval('$chr_store_global_ground_chr_translate:rule/2',[A|B]),
-   arg(7,A,C),
-   nb_getval('$chr_store_multi_hash_chr_translate:rule/2-1',D),
-   insert_ht(D,C,A),
+   arg(7,A,B),
+   nb_getval('$chr_store_multi_hash_chr_translate:rule/2-1',C),
+   insert_ht(C,B,A),
    true.
 '$delete_from_store_rule/2'(A) :-
-   nb_getval('$chr_store_global_ground_chr_translate:rule/2',B),
-   'chr sbag_del_element'(B,A,C),
-   b_setval('$chr_store_global_ground_chr_translate:rule/2',C),
-   arg(7,A,D),
-   nb_getval('$chr_store_multi_hash_chr_translate:rule/2-1',E),
-   delete_ht(E,D,A),
+   arg(7,A,B),
+   nb_getval('$chr_store_multi_hash_chr_translate:rule/2-1',C),
+   delete_ht(C,B,A),
    true.
 '$enumerate_suspensions'(A) :-
    (
@@ -2640,8 +2639,8 @@ insert_constraint_internal(yes,A,B,C,D,E
      nb_getval('$chr_store_multi_hash_chr_translate:allocation_occurrence/2-1',R),
      value_ht(R,A)
    ;
-     nb_getval('$chr_store_global_ground_chr_translate:rule/2',S),
-     'chr sbag_member'(A,S)
+     nb_getval('$chr_store_multi_hash_chr_translate:rule/2-1',S),
+     value_ht(S,A)
    ).
 :-new_ht(A),nb_setval('$chr_store_multi_hash_chr_translate:constraint/2-2',A).
 '$via1_multi_hash_constraint/2-2'(A,B) :-
@@ -2700,7 +2699,6 @@ insert_constraint_internal(yes,A,B,C,D,E
    nb_getval('$chr_store_multi_hash_chr_translate:allocation_occurrence/2-1',C),
    lookup_ht(C,A,B).
 :-nb_setval('$chr_store_global_ground_chr_translate:allocation_occurrence/2',[]).
-:-nb_setval('$chr_store_global_ground_chr_translate:rule/2',[]).
 :-new_ht(A),nb_setval('$chr_store_multi_hash_chr_translate:rule/2-1',A).
 '$via1_multi_hash_rule/2-1'(A,B) :-
    nb_getval('$chr_store_multi_hash_chr_translate:rule/2-1',C),
@@ -2871,25 +2869,47 @@ attached(A,B) :-
 'attached/2__2'(A,B,C) :-
    B==maybe,
    '$via1_multi_hash_attached/2-1'(A,E),
-   ( 'chr sbag_member'(D,E),
+   (
+     'chr sbag_member'(D,E),
      D=suspension(_,H,_,_,_,_,F,G),
      H=mutable(active),
      F==A,
-     G==maybe ->
-     true
-   ),
-   !,
-   ( var(C) ->
-     true
+     G==maybe,
+     !,
+     ( var(C) ->
+       true
+     ;
+       remove_constraint_internal(C,_,I),
+       ( I==yes ->
+         '$delete_from_store_attached/2'(C)
+       ;
+         true
+       )
+     )
    ;
-     remove_constraint_internal(C,_,I),
+     !,
+     'attached/2__2__0'(E,A,B,C)
+   ).
+'attached/2__2__0'([],A,B,C) :-
+   'attached/2__3'(A,B,C).
+'attached/2__2__0'([D|E],A,B,C) :-
+   ( D=suspension(_,H,_,_,_,_,F,G),
+     H=mutable(active),
+     F==A,
+     G==maybe ->
+     remove_constraint_internal(D,_,I),
      ( I==yes ->
-       '$delete_from_store_attached/2'(C)
+       '$delete_from_store_attached/2'(D)
      ;
        true
-     )
+     ),
+     'attached/2__2__0'(E,A,B,C)
+   ;
+     'attached/2__2__0'(E,A,B,C)
    ).
-'attached/2__2'(_,_,A) :-
+'attached/2__2'(A,B,C) :-
+   'attached/2__3'(A,B,C).
+'attached/2__3'(_,_,A) :-
    activate_constraint(B,_,A,_),
    ( B==yes ->
      '$insert_in_store_attached/2'(A)
@@ -2910,30 +2930,56 @@ is_attached(A) :-
    !.
 indexed_argument(A,B) :-
    'indexed_argument/2__0'(A,B,_).
-'indexed_argument/2__0'(A,B,_) :-
-   '$via1_multi_hash_indexed_argument/2-1'(A,D),
-   ( 'chr sbag_member'(C,D),
-     C=suspension(_,G,_,_,_,_,E,F),
-     G=mutable(active),
-     E==A,
-     F==B ->
-     true
-   ),
-   !.
 'indexed_argument/2__0'(A,B,C) :-
-   insert_constraint_internal(_,_,C,chr_translate:'indexed_argument/2__0'(A,B,C),indexed_argument(A,B),[A,B]),
-   '$insert_in_store_indexed_argument/2'(C).
+   '$via1_multi_hash_indexed_argument/2-1'(A,E),
+   (
+     'chr sbag_member'(D,E),
+     D=suspension(_,H,_,_,_,_,F,G),
+     H=mutable(active),
+     F==A,
+     G==B,
+     !
+   ;
+     !,
+     allocate_constraint(chr_translate:'indexed_argument/2__0'(A,B,C),C,indexed_argument(A,B),[A,B]),
+     'indexed_argument/2__0__0'(E,A,B,C)
+   ).
+'indexed_argument/2__0__0'([],A,B,C) :-
+   'indexed_argument/2__1'(A,B,C).
+'indexed_argument/2__0__0'([D|E],A,B,C) :-
+   ( D=suspension(_,H,_,_,_,_,F,G),
+     H=mutable(active),
+     F==A,
+     G==B ->
+     remove_constraint_internal(D,_,I),
+     ( I==yes ->
+       '$delete_from_store_indexed_argument/2'(D)
+     ;
+       true
+     ),
+     'indexed_argument/2__0__0'(E,A,B,C)
+   ;
+     'indexed_argument/2__0__0'(E,A,B,C)
+   ).
+'indexed_argument/2__0'(A,B,C) :-
+   allocate_constraint(chr_translate:'indexed_argument/2__0'(A,B,C),C,indexed_argument(A,B),[A,B]),
+   'indexed_argument/2__1'(A,B,C).
+'indexed_argument/2__1'(_,_,A) :-
+   activate_constraint(B,_,A,_),
+   ( B==yes ->
+     '$insert_in_store_indexed_argument/2'(A)
+   ;
+     true
+   ).
 is_indexed_argument(A,B) :-
    'is_indexed_argument/2__0'(A,B,_).
 'is_indexed_argument/2__0'(A,B,_) :-
    '$via1_multi_hash_indexed_argument/2-1'(A,D),
-   ( 'chr sbag_member'(C,D),
-     C=suspension(_,G,_,_,_,_,E,F),
-     G=mutable(active),
-     E==A,
-     F==B ->
-     true
-   ),
+   'chr sbag_member'(C,D),
+   C=suspension(_,G,_,_,_,_,E,F),
+   G=mutable(active),
+   E==A,
+   F==B,
    !.
 'is_indexed_argument/2__0'(_,_,_) :-
    !,
@@ -3020,26 +3066,23 @@ update_store_type(A,B) :-
    C=suspension(_,G,_,_,_,_,E,F),
    G=mutable(active),
    E==A,
-   'chr lock'(B),
-   'chr lock'(F),
-   member(B,F),
-   'chr unlock'(B),
-   'chr unlock'(F),
-   !.
-'update_store_type/2__0'(A,B,_) :-
-   '$via1_multi_hash_actual_store_types/2-1'(A,D),
-   'chr sbag_member'(C,D),
-   C=suspension(_,G,_,_,_,_,E,F),
-   G=mutable(active),
-   E==A,
-   !,
-   remove_constraint_internal(C,_,H),
-   ( H==yes ->
-     '$delete_from_store_actual_store_types/2'(C)
+   (
+     'chr lock'(B),
+     'chr lock'(F),
+     member(B,F),
+     'chr unlock'(B),
+     'chr unlock'(F),
+     !
    ;
-     true
-   ),
-   actual_store_types(A,[B|F]).
+     !,
+     remove_constraint_internal(C,_,H),
+     ( H==yes ->
+       '$delete_from_store_actual_store_types/2'(C)
+     ;
+       true
+     ),
+     actual_store_types(A,[B|F])
+   ).
 'update_store_type/2__0'(A,B,_) :-
    !,
    actual_store_types(A,[B]).
@@ -3246,27 +3289,28 @@ occurrence(A,B,C,D) :-
    'occurrence/4__0'(A,B,C,D,_).
 'occurrence/4__0'(A,B,C,D,E) :-
    allocate_constraint(chr_translate:'occurrence/4__0'(A,B,C,D,E),E,occurrence(A,B,C,D),[A,B,C,D]),
-   'chr novel_production'(E,46),
-   !,
-   'chr extend_history'(E,46),
-   activate_constraint(F,_,E,G),
-   ( F==yes ->
-     '$insert_in_store_occurrence/4'(E)
+   (
+     'chr novel_production'(E,46),
+     !,
+     'chr extend_history'(E,46),
+     activate_constraint(F,_,E,G),
+     ( F==yes ->
+       '$insert_in_store_occurrence/4'(E)
+     ;
+       true
+     ),
+     max_occurrence(A,B),
+     ( E=suspension(_,H,_,I,_,_,_,_,_,_),
+       H=mutable(active),
+       I=mutable(G) ->
+       'chr update_mutable'(inactive,H),
+       'occurrence/4__1'(A,B,C,D,E)
+     ;
+       true
+     )
    ;
-     true
-   ),
-   max_occurrence(A,B),
-   ( E=suspension(_,H,_,I,_,_,_,_,_,_),
-     H=mutable(active),
-     I=mutable(G) ->
-     'chr update_mutable'(inactive,H),
      'occurrence/4__1'(A,B,C,D,E)
-   ;
-     true
    ).
-'occurrence/4__0'(A,B,C,D,E) :-
-   allocate_constraint(chr_translate:'occurrence/4__0'(A,B,C,D,E),E,occurrence(A,B,C,D),[A,B,C,D]),
-   'occurrence/4__1'(A,B,C,D,E).
 'occurrence/4__1'(A,B,C,D,E) :-
    '$via1_multi_hash_allocation_occurrence/2-1'(A,F),
    !,
@@ -3430,38 +3474,34 @@ get_occurrence(A,B,C,D) :-
    fail.
 max_occurrence(A,B) :-
    'max_occurrence/2__0'(A,B,_).
-'max_occurrence/2__0'(A,B,_) :-
-   '$via1_multi_hash_max_occurrence/2-1'(A,D),
-   ( 'chr sbag_member'(C,D),
-     C=suspension(_,G,_,_,_,_,E,F),
-     G=mutable(active),
-     E==A ->
-     true
-   ),
-   F>=B,
-   !.
 'max_occurrence/2__0'(A,B,C) :-
-   '$via1_multi_hash_max_occurrence/2-1'(A,D),
-   !,
-   allocate_constraint(chr_translate:'max_occurrence/2__0'(A,B,C),C,max_occurrence(A,B),[A,B]),
-   'max_occurrence/2__0__0'(D,A,B,C).
+   '$via1_multi_hash_max_occurrence/2-1'(A,E),
+   (
+     'chr sbag_member'(D,E),
+     D=suspension(_,H,_,_,_,_,F,G),
+     H=mutable(active),
+     F==A,
+     G>=B,
+     !
+   ;
+     !,
+     allocate_constraint(chr_translate:'max_occurrence/2__0'(A,B,C),C,max_occurrence(A,B),[A,B]),
+     'max_occurrence/2__0__0'(E,A,B,C)
+   ).
 'max_occurrence/2__0__0'([],A,B,C) :-
    'max_occurrence/2__1'(A,B,C).
 'max_occurrence/2__0__0'([D|E],A,B,C) :-
    ( D=suspension(_,H,_,_,_,_,F,G),
      H=mutable(active),
-     F==A ->
-     ( B>=G ->
-       remove_constraint_internal(D,_,I),
-       ( I==yes ->
-         '$delete_from_store_max_occurrence/2'(D)
-       ;
-         true
-       ),
-       'max_occurrence/2__0__0'([],A,B,C)
+     F==A,
+     B>=G ->
+     remove_constraint_internal(D,_,I),
+     ( I==yes ->
+       '$delete_from_store_max_occurrence/2'(D)
      ;
-       'max_occurrence/2__0__0'([],A,B,C)
-     )
+       true
+     ),
+     'max_occurrence/2__0__0'(E,A,B,C)
    ;
      'max_occurrence/2__0__0'(E,A,B,C)
    ).
@@ -3479,12 +3519,10 @@ get_max_occurrence(A,B) :-
    'get_max_occurrence/2__0'(A,B,_).
 'get_max_occurrence/2__0'(A,B,_) :-
    '$via1_multi_hash_max_occurrence/2-1'(A,D),
-   ( 'chr sbag_member'(C,D),
-     C=suspension(_,G,_,_,_,_,E,F),
-     G=mutable(active),
-     E==A ->
-     true
-   ),
+   'chr sbag_member'(C,D),
+   C=suspension(_,G,_,_,_,_,E,F),
+   G=mutable(active),
+   E==A,
    !,
    B=F.
 'get_max_occurrence/2__0'(_,A,_) :-
@@ -3493,60 +3531,46 @@ get_max_occurrence(A,B) :-
 allocation_occurrence(A,B) :-
    'allocation_occurrence/2__0'(A,B,_).
 'allocation_occurrence/2__0'(A,B,_) :-
-   '$via1_multi_hash_occurrence/4-1'(A,I),
-   nb_getval('$chr_store_global_ground_chr_translate:rule/2',D),
-   'chr sbag_member'(C,D),
-   C=suspension(_,G,_,_,_,_,E,F),
-   G=mutable(active),
-   'chr sbag_member'(H,I),
-   H=suspension(_,N,_,_,_,_,J,K,L,M),
-   N=mutable(active),
-   J==A,
-   K==B,
-   L==E,
-   'chr lock'(F),
-   'chr lock'(M),
-   F=pragma(_,ids(_,_),_,_,_),
-   member(M,_),
-   'chr unlock'(F),
-   'chr unlock'(M),
-   !,
-   O is B+1,
-   allocation_occurrence(A,O).
-'allocation_occurrence/2__0'(A,B,_) :-
-   '$via1_multi_hash_occurrence/4-1'(A,I),
-   nb_getval('$chr_store_global_ground_chr_translate:rule/2',D),
-   'chr sbag_member'(C,D),
-   C=suspension(_,G,_,_,_,_,E,F),
-   G=mutable(active),
-   'chr sbag_member'(H,I),
-   H=suspension(_,M,_,_,_,_,J,K,L,_),
-   M=mutable(active),
-   J==A,
-   K==B,
-   L==E,
-   'chr lock'(F),
-   F=pragma(rule(_,_,_,true),_,_,_,_),
-   'chr unlock'(F),
-   !,
-   N is B+1,
-   allocation_occurrence(A,N).
-'allocation_occurrence/2__0'(A,B,_) :-
    '$via1_multi_hash_occurrence/4-1'(A,D),
    'chr sbag_member'(C,D),
    C=suspension(_,I,_,_,_,_,E,F,G,H),
    I=mutable(active),
    E==A,
    F==B,
-   '$via1_multi_hash_passive/2-1'(G,K),
-   'chr sbag_member'(J,K),
-   J=suspension(_,N,_,_,_,_,L,M),
-   N=mutable(active),
-   L==G,
-   M==H,
-   !,
-   O is B+1,
-   allocation_occurrence(A,O).
+   (
+     '$via1_multi_hash_rule/2-1'(G,K),
+     'chr sbag_member'(J,K),
+     J=suspension(_,N,_,_,_,_,L,M),
+     N=mutable(active),
+     L==G,
+     'chr lock'(M),
+     (
+       'chr lock'(H),
+       M=pragma(_,ids(_,_),_,_,_),
+       member(H,_),
+       'chr unlock'(M),
+       'chr unlock'(H),
+       !,
+       O is B+1,
+       allocation_occurrence(A,O)
+     ;
+       M=pragma(rule(_,_,_,true),_,_,_,_),
+       'chr unlock'(M),
+       !,
+       P is B+1,
+       allocation_occurrence(A,P)
+     )
+   ;
+     '$via1_multi_hash_passive/2-1'(G,R),
+     'chr sbag_member'(Q,R),
+     Q=suspension(_,U,_,_,_,_,S,T),
+     U=mutable(active),
+     S==G,
+     T==H,
+     !,
+     V is B+1,
+     allocation_occurrence(A,V)
+   ).
 'allocation_occurrence/2__0'(A,B,C) :-
    insert_constraint_internal(_,_,C,chr_translate:'allocation_occurrence/2__0'(A,B,C),allocation_occurrence(A,B),[A,B]),
    '$insert_in_store_allocation_occurrence/2'(C).


View full diff with command:
/usr/bin/cvs -f diff  -kk -u -p -N -r 1.1 -r 1.2 guard_entailment.pl
Index: guard_entailment.pl
===================================================================
RCS file: /cvs/pkgs/rpms/yap/F-11/guard_entailment.pl,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -p -r1.1 -r1.2
--- guard_entailment.pl	1 May 2006 10:55:44 -0000	1.1
+++ guard_entailment.pl	15 Jun 2009 20:46:22 -0000	1.2
@@ -1,22 +1,24 @@
 /*  Generated by CHR bootstrap compiler
     From: guard_entailment.chr
-    Date: [77,111,110,32,77,97,121,32,32,49,32,49,50,58,50,49,58,53,55,32,50,48,48,54,10]
+    Date: Mon Jun 15 21:43:57 2009
+
 
     DO NOT EDIT.  EDIT THE CHR FILE INSTEAD
 */
 
 :-module(guard_entailment,[entails_guard/2,simplify_guards/5]).
 :-use_module(chr_runtime).
-:-style_check((-singleton)).
-:-style_check((-discontiguous)).
-:-use_module(library(lists)).
+:-style_check(-discontiguous).
+:-include(chr_op).
 :-use_module(hprolog).
 :-use_module(builtins).
+:-use_module(chr_compiler_errors).
 entails_guard(A,B) :-
    copy_term_nat((A,B),(C,D)),
    term_variables(C,E),
    variables(E),
-   entails_guard2(C),
+   sort(C,F),
+   entails_guard2(F),
    !,
    test(D),
    !,
@@ -29,10 +31,11 @@ simplify_guards(A,B,C,D,E) :-
    copy_term_nat((A,C),(F,G)),
    term_variables(F,H),
    variables(H),
-   entails_guard2(F),
+   sort(F,I),
+   entails_guard2(I),
    !,
-   simplify(G,I),
-   simplified(C,I,D,B,E),
+   simplify(G,J),
+   simplified(C,J,D,B,E),
    !,
    cleanup.
 simplified([],[],[],A,A).
@@ -78,7 +81,7 @@ try(A,B) :-
    ( known(A) ->
      true
    ;
-     format(' ERROR: entailment checker: this is not supposed to happen.
+     chr_error(internal,'Entailment Checker: try/2.
 ',[])
    ),
    ( test(B) ->
@@ -86,14 +89,6 @@ try(A,B) :-
    ;
      true
    ).
-lookup([],[],_,_) :-
-   fail.
-lookup([A|B],[C|D],E,F) :-
-   ( E==A ->
-     F=C
-   ;
-     lookup(B,D,E,F)
-   ).
 add_args_unif([],[],true).
 add_args_unif([A|B],[C|D],(A=C,E)) :-
    add_args_unif(B,D,E).
@@ -112,38 +107,36 @@ all_unique_vars([A|B],C,D) :-
    \+memberchk_eq(A,D),
    all_unique_vars(B,[A|D]).
 :-use_module(chr(chr_runtime)).
-:-use_module(chr(chr_hashtable_store)).
-:-use_module(library('clp/clp_events')).
-'attach_known/1'([],_).
-'attach_known/1'([A|B],C) :-
-   ( get_attr(A,guard_entailment,H) ->
-     H=v(F,D,E),
-     ( F/\1=:=1 ->
-       put_attr(A,guard_entailment,v(F,[C|D],E))
+attach_variables___1([],_).
+attach_variables___1([A|B],C) :-
+   ( get_attr(A,guard_entailment,A1) ->
+     A1=v(Y,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X),
+     ( Y/\1=:=1 ->
+       B1=v(Y,[C|D],E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X)
      ;
-       G is F\/1,
-       put_attr(A,guard_entailment,v(G,[C],E))
-     )
+       Z is Y\/1,
+       B1=v(Z,[C],E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X)
+     ),
+     put_attr(A,guard_entailment,B1)
    ;
-     put_attr(A,guard_entailment,v(1,[C],[]))
+     put_attr(A,guard_entailment,v(1,[C],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[]))
    ),
-   true,
-   'attach_known/1'(B,C).
-'detach_known/1'([],_).
-'detach_known/1'([A|B],C) :-
-   ( get_attr(A,guard_entailment,I) ->
-     I=v(F,D,E),
-     ( F/\1=:=1 ->
-       'chr sbag_del_element'(D,C,H),
-       ( H==[] ->
-         G is F/\ -2,
-         ( G==0 ->
+   attach_variables___1(B,C).
+detach_variables___1([],_).
+detach_variables___1([A|B],C) :-
+   ( get_attr(A,guard_entailment,B1) ->
+     B1=v(Y,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X),
+     ( Y/\1=:=1 ->
+       'chr sbag_del_element'(D,C,A1),
+       ( A1==[] ->
+         Z is Y/\ -2,
+         ( Z==0 ->
            del_attr(A,guard_entailment)
          ;
-           put_attr(A,guard_entailment,v(G,[],E))
+           put_attr(A,guard_entailment,v(Z,[],E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X))
          )
        ;
-         put_attr(A,guard_entailment,v(F,H,E))
+         put_attr(A,guard_entailment,v(Y,A1,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X))
        )
      ;
        true
@@ -151,37 +144,37 @@ all_unique_vars([A|B],C,D) :-
    ;
      true
    ),
-   'detach_known/1'(B,C).
-'attach_variables/1'([],_).
-'attach_variables/1'([A|B],C) :-
-   ( get_attr(A,guard_entailment,H) ->
-     H=v(F,D,E),
-     ( F/\2=:=2 ->
-       put_attr(A,guard_entailment,v(F,D,[C|E]))
+   detach_variables___1(B,C).
+'attach_known/1_1_$default___1'([],_).
+'attach_known/1_1_$default___1'([A|B],C) :-
+   ( get_attr(A,guard_entailment,A1) ->
+     A1=v(Y,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X),
+     ( Y/\2=:=2 ->
+       B1=v(Y,D,[C|E],F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X)
      ;
-       G is F\/2,
-       put_attr(A,guard_entailment,v(G,D,[C]))
-     )
+       Z is Y\/2,
+       B1=v(Z,D,[C],F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X)
+     ),
+     put_attr(A,guard_entailment,B1)
    ;
-     put_attr(A,guard_entailment,v(2,[],[C]))
+     put_attr(A,guard_entailment,v(2,[],[C],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[]))
    ),
-   true,
-   'attach_variables/1'(B,C).
-'detach_variables/1'([],_).
-'detach_variables/1'([A|B],C) :-
-   ( get_attr(A,guard_entailment,I) ->
-     I=v(F,D,E),
-     ( F/\2=:=2 ->
-       'chr sbag_del_element'(E,C,H),
-       ( H==[] ->
-         G is F/\ -3,
-         ( G==0 ->
+   'attach_known/1_1_$default___1'(B,C).
+'detach_known/1_1_$default___1'([],_).
+'detach_known/1_1_$default___1'([A|B],C) :-
+   ( get_attr(A,guard_entailment,B1) ->
+     B1=v(Y,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X),
+     ( Y/\2=:=2 ->
+       'chr sbag_del_element'(E,C,A1),
+       ( A1==[] ->
+         Z is Y/\ -3,
+         ( Z==0 ->
            del_attr(A,guard_entailment)
          ;
-           put_attr(A,guard_entailment,v(G,D,[]))
+           put_attr(A,guard_entailment,v(Z,D,[],F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X))
          )
        ;
-         put_attr(A,guard_entailment,v(F,D,H))
+         put_attr(A,guard_entailment,v(Y,D,A1,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X))
        )
      ;
[...20601 lines suppressed...]
+   'known/1_1_$special_fail/0___0__15'.
+'known/1_1_$special_fail/0___0__15' :-
+   nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\==/2___2',A),
+   !,
+   'known/1_1_$special_fail/0___0__15__0__40'(A).
+'known/1_1_$special_fail/0___0__15__0__40'([]) :-
+   'known/1_1_$special_fail/0___0__16'.
+'known/1_1_$special_fail/0___0__15__0__40'([A|B]) :-
+   ( A=suspension(_,active,_,_,_,_,_) ->
+     A=suspension(_,_,_,_,_,H,I),
+     setarg(2,A,removed),
+     term_variables(term(H,I),C),
+     arg(5,A,D),
+     ( var(D) ->
+       nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\==/2___2',E),
+       E=[_|F],
+       b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_\\==/2___2',F),
+       ( F=[G|_] ->
+         setarg(5,G,_)
+       ;
+         true
+       )
+     ;
+       D=[_,_|F],
+       setarg(2,D,F),
+       ( F=[G|_] ->
+         setarg(5,G,D)
+       ;
+         true
+       )
+     ),
+     'detach_known/1_1_$special_\\==/2___2'(C,A),
+     'known/1_1_$special_fail/0___0__15__0__40'(B)
+   ;
+     'known/1_1_$special_fail/0___0__15__0__40'(B)
+   ).
+'known/1_1_$special_fail/0___0__15' :-
+   'known/1_1_$special_fail/0___0__16'.
+'known/1_1_$special_fail/0___0__16' :-
+   nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_==/2___2',A),
+   !,
+   'known/1_1_$special_fail/0___0__16__0__41'(A).
+'known/1_1_$special_fail/0___0__16__0__41'([]) :-
+   'known/1_1_$special_fail/0___0__17'.
+'known/1_1_$special_fail/0___0__16__0__41'([A|B]) :-
+   ( A=suspension(_,active,_,_,_,_,_) ->
+     A=suspension(_,_,_,_,_,H,I),
+     setarg(2,A,removed),
+     term_variables(term(H,I),C),
+     arg(5,A,D),
+     ( var(D) ->
+       nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_==/2___2',E),
+       E=[_|F],
+       b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_==/2___2',F),
+       ( F=[G|_] ->
+         setarg(5,G,_)
+       ;
+         true
+       )
+     ;
+       D=[_,_|F],
+       setarg(2,D,F),
+       ( F=[G|_] ->
+         setarg(5,G,D)
+       ;
+         true
+       )
+     ),
+     'detach_known/1_1_$special_==/2___2'(C,A),
+     'known/1_1_$special_fail/0___0__16__0__41'(B)
+   ;
+     'known/1_1_$special_fail/0___0__16__0__41'(B)
+   ).
+'known/1_1_$special_fail/0___0__16' :-
+   'known/1_1_$special_fail/0___0__17'.
+'known/1_1_$special_fail/0___0__17' :-
+   nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_=</2___2',A),
+   !,
+   'known/1_1_$special_fail/0___0__17__0__46'(A).
+'known/1_1_$special_fail/0___0__17__0__46'([]) :-
+   'known/1_1_$special_fail/0___0__18'.
+'known/1_1_$special_fail/0___0__17__0__46'([A|B]) :-
+   ( A=suspension(_,active,_,_,_,_,_) ->
+     A=suspension(_,_,_,_,_,H,I),
+     setarg(2,A,removed),
+     term_variables(term(H,I),C),
+     arg(5,A,D),
+     ( var(D) ->
+       nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_=</2___2',E),
+       E=[_|F],
+       b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_=</2___2',F),
+       ( F=[G|_] ->
+         setarg(5,G,_)
+       ;
+         true
+       )
+     ;
+       D=[_,_|F],
+       setarg(2,D,F),
+       ( F=[G|_] ->
+         setarg(5,G,D)
+       ;
+         true
+       )
+     ),
+     'detach_known/1_1_$special_=</2___2'(C,A),
+     'known/1_1_$special_fail/0___0__17__0__46'(B)
+   ;
+     'known/1_1_$special_fail/0___0__17__0__46'(B)
+   ).
+'known/1_1_$special_fail/0___0__17' :-
+   'known/1_1_$special_fail/0___0__18'.
+'known/1_1_$special_fail/0___0__18' :-
+   nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_=:=/2___2',A),
+   !,
+   'known/1_1_$special_fail/0___0__18__0__47'(A).
+'known/1_1_$special_fail/0___0__18__0__47'([]) :-
+   'known/1_1_$special_fail/0___0__19'.
+'known/1_1_$special_fail/0___0__18__0__47'([A|B]) :-
+   ( A=suspension(_,active,_,_,_,_,_) ->
+     A=suspension(_,_,_,_,_,H,I),
+     setarg(2,A,removed),
+     term_variables(term(H,I),C),
+     arg(5,A,D),
+     ( var(D) ->
+       nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$special_=:=/2___2',E),
+       E=[_|F],
+       b_setval('$chr_store_global_list_guard_entailment____known/1_1_$special_=:=/2___2',F),
+       ( F=[G|_] ->
+         setarg(5,G,_)
+       ;
+         true
+       )
+     ;
+       D=[_,_|F],
+       setarg(2,D,F),
+       ( F=[G|_] ->
+         setarg(5,G,D)
+       ;
+         true
+       )
+     ),
+     'detach_known/1_1_$special_=:=/2___2'(C,A),
+     'known/1_1_$special_fail/0___0__18__0__47'(B)
+   ;
+     'known/1_1_$special_fail/0___0__18__0__47'(B)
+   ).
+'known/1_1_$special_fail/0___0__18' :-
+   'known/1_1_$special_fail/0___0__19'.
+'known/1_1_$special_fail/0___0__19' :-
+   nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$default___1',A),
+   !,
+   'known/1_1_$special_fail/0___0__19__0__50'(A).
+'known/1_1_$special_fail/0___0__19__0__50'([]) :-
+   'known/1_1_$special_fail/0___0__20'.
+'known/1_1_$special_fail/0___0__19__0__50'([A|B]) :-
+   ( A=suspension(_,active,_,_,_) ->
+     A=suspension(_,_,_,_,H),
+     setarg(2,A,removed),
+     term_variables(H,C),
+     arg(4,A,D),
+     ( var(D) ->
+       nb_getval('$chr_store_global_list_guard_entailment____known/1_1_$default___1',E),
+       E=[_|F],
+       b_setval('$chr_store_global_list_guard_entailment____known/1_1_$default___1',F),
+       ( F=[G|_] ->
+         setarg(4,G,_)
+       ;
+         true
+       )
+     ;
+       D=[_,_|F],
+       setarg(2,D,F),
+       ( F=[G|_] ->
+         setarg(4,G,D)
+       ;
+         true
+       )
+     ),
+     'detach_known/1_1_$default___1'(C,A),
+     'known/1_1_$special_fail/0___0__19__0__50'(B)
+   ;
+     'known/1_1_$special_fail/0___0__19__0__50'(B)
+   ).
+'known/1_1_$special_fail/0___0__19' :-
+   'known/1_1_$special_fail/0___0__20'.
+'known/1_1_$special_fail/0___0__20' :-
+   A=suspension(B,active,_),
+   'chr gen_id'(B),
+   nb_getval('$chr_store_global_ground_guard_entailment____known/1_1_$special_fail/0___0',C),
+   D=[A|C],
+   b_setval('$chr_store_global_ground_guard_entailment____known/1_1_$special_fail/0___0',D),
+   ( C=[E|_] ->
+     setarg(3,E,D)
    ;
      true
    ).
 :-multifile chr:'$chr_module'/1.
 chr:'$chr_module'(guard_entailment).
+end_of_file.


Index: sources
===================================================================
RCS file: /cvs/pkgs/rpms/yap/F-11/sources,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -p -r1.5 -r1.6
--- sources	1 May 2006 10:59:04 -0000	1.5
+++ sources	15 Jun 2009 20:46:22 -0000	1.6
@@ -1 +1,5 @@
-1f5c26642a27158c98f6c2fac56d3dad  Yap-5.1.1.tar.gz
+d04265acead9286b363f7209ac382490  Yap-5.1.3.tar.gz
+89b0825d04a5615b78ca0ff67908b047  chr_translate_bootstrap1.pl
+ebbc6fe2972f03696e8b5397b0076726  chr_translate_bootstrap2.pl
+773fa939564fb229fc7e541e5a74515a  chr_translate.pl
+72541b7579caf15bebe19fc2fc80dd08  guard_entailment.pl


Index: yap.spec
===================================================================
RCS file: /cvs/pkgs/rpms/yap/F-11/yap.spec,v
retrieving revision 1.23
retrieving revision 1.24
diff -u -p -r1.23 -r1.24
--- yap.spec	1 Mar 2009 05:04:11 -0000	1.23
+++ yap.spec	15 Jun 2009 20:46:22 -0000	1.24
@@ -1,12 +1,12 @@
 Name:		yap
-Version:	5.1.1
-Release:	13%{?dist}
+Version:	5.1.3
+Release:	1%{?dist}
 
 Summary:	High-performance Prolog Compiler
 
 Group:		Development/Languages
 License:	Artistic 2.0 or LGPLv2+
-Source:		http://www.ncc.up.pt/~vsc/Yap/current/Yap-5.1.1.tar.gz
+Source:		http://www.ncc.up.pt/~vsc/Yap/current/Yap-%{version}.tar.gz
 Source1:	guard_entailment.pl
 Source2:	chr_translate_bootstrap1.pl
 Source3:	chr_translate_bootstrap2.pl
@@ -53,12 +53,15 @@ Documentation for Yap.
 %patch2 -p1
 %patch3 -p1
 
+find -name CVS -print0 | xargs -0 rm -rf
 cp %{SOURCE1} %{SOURCE2} %{SOURCE3} %{SOURCE4} LGPL/chr
 
 # remove redundant rpath
 sed -i '/-Wl,-R/d' configure
-# properly link dynamically
-sed -i 's/SHLIB_LD=.*/SHLIB_LD="gcc -shared"/' configure
+# add soname to library
+sed -i 's/@YAPLIB@/@YAPLIB at .%{version}/g' Makefile.in
+sed -i 's/@DYNYAPLIB@/@DYNYAPLIB at .%{version}/g' Makefile.in
+sed -i 's/@DYNLIB_LD@/@DYNLIB_LD@ -Wl,-soname=@YAPLIB at .%{version} /g' Makefile.in
 
 find -name Makefile.in | xargs sed -i 's|$(ROOTDIR)/lib|$(ROOTDIR)/%{_lib}|'
 find -name Makefile.in | xargs sed -i 's|$(EROOTDIR)/lib|$(EROOTDIR)/%{_lib}|'
@@ -89,9 +92,11 @@ find -name '*.lgt' -exec chmod 0644 '{}'
 find -name '*.h' -exec chmod 0644 '{}' ';'
 find -name '*.c' -exec chmod 0644 '{}' ';'
 
+(cd $RPM_BUILD_ROOT%{_libdir}; ln -sf libYap.so.%{version} libYap.so)
+
 # move examples to docdir
 mkdir -p $RPM_BUILD_ROOT%{_docdir}/%{name}-%{version}
-mv $RPM_BUILD_ROOT%{_datadir}/Yap/examples $RPM_BUILD_ROOT%{_docdir}/%{name}-%{version}
+#mv $RPM_BUILD_ROOT%{_datadir}/Yap/examples $RPM_BUILD_ROOT%{_docdir}/%{name}-%{version}
 rm -rf $RPM_BUILD_ROOT%{_datadir}/Yap/clpbn/examples
 
 %post
@@ -119,20 +124,18 @@ rm -rf $RPM_BUILD_ROOT
 %{_bindir}/yap
 %{_datadir}/Yap
 %{_libdir}/Yap
-%{_libdir}/libYap.so
+%{_libdir}/libYap.so*
 %{_infodir}/*
 
 
 %files devel
 %defattr(-,root,root,-)
-%{_libdir}/libYap.a
+%{_libdir}/libYap.so
 %{_includedir}/Yap
 
 
 %files docs
 %defattr(-,root,root,-)
-%doc docs/*.html
-%doc docs/yap.pdf
 %doc LGPL/pillow/doc/pillow_doc_html/*
 %doc LGPL/pillow/doc/article.ps.gz
 %doc --parent Logtalk/manuals
@@ -140,13 +143,13 @@ rm -rf $RPM_BUILD_ROOT
 
 
 %changelog
+* Mon Jun 15 2009 Gerard Milmeister <gemi at bluewin.ch> - 5.1.3-1
+- new release 5.1.3
+
 * Sun Mar 01 2009 Ralf Corsépius <corsepiu at fedoraproject.org> - 5.1.1-13
 - Add Yap-5.1.1-config.sub.patch: 
   Upgrade outdated config.sub to fix rebuild breakdown on ppc64.
 
-* Wed Feb 25 2009 Fedora Release Engineering <rel-eng at lists.fedoraproject.org> - 5.1.1-12
-- Rebuilt for https://fedoraproject.org/wiki/Fedora_11_Mass_Rebuild
-
 * Fri Jul 11 2008 Tom "spot" Callaway <tcallawa at redhat.com> - 5.1.1-11
 - fix license tag
 




More information about the fedora-extras-commits mailing list