rpms/yap/FC-5 chr_translate.pl, NONE, 1.1 chr_translate_bootstrap1.pl, NONE, 1.1 chr_translate_bootstrap2.pl, NONE, 1.1 guard_entailment.pl, NONE, 1.1 .cvsignore, 1.3, 1.4 sources, 1.4, 1.5 yap.spec, 1.9, 1.10

Gérard Milmeister (gemi) fedora-extras-commits at redhat.com
Mon May 1 11:06:59 UTC 2006


Author: gemi

Update of /cvs/extras/rpms/yap/FC-5
In directory cvs-int.fedora.redhat.com:/tmp/cvs-serv30953

Modified Files:
	.cvsignore sources yap.spec 
Added Files:
	chr_translate.pl chr_translate_bootstrap1.pl 
	chr_translate_bootstrap2.pl guard_entailment.pl 
Log Message:
new version 5.1.1


--- NEW FILE chr_translate.pl ---
/*  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]

    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(library(lists)).
:-use_module(hprolog).
:-use_module(library(assoc)).
:-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(guard_entailment).
:-use_module(chr_compiler_options).
:-use_module(chr_compiler_utility).
:-include(chr_op).
:-op(1150,fx,chr_type).
:-op(1130,xfx,--->).
:-op(1150,fx,+).
:-op(1150,fx,-).
:-op(1150,fx,?).
set_constraint_indices(A) :-
   set_constraint_indices(A,1).
set_constraint_indices([],A) :-
   B is A-1,
   max_constraint_index(B).
set_constraint_indices([A|B],C) :-
   (
     (
       chr_pp_flag(debugable,on)
     ;
       may_trigger(A)
     ;
       is_stored(A),
       get_store_type(A,default)
     ) ->
     constraint_index(A,C),
     D is C+1,
     set_constraint_indices(B,D)
   ;
     set_constraint_indices(B,C)
   ).
chr_translate(A,B) :-
   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)
   ).
store_management_preds(A,B) :-
   generate_attach_detach_a_constraint_all(A,C),
   generate_indexed_variables_clauses(A,D),
   generate_attach_increment(E),
   generate_attr_unify_hook(F),
   generate_extra_clauses(A,G),
   generate_insert_delete_constraints(A,H),
   generate_attach_code(A,I),
   generate_counter_code(J),
   append_lists([C,D,E,F,G,H,I,J],B).
insert_declarations(A,B) :-
   append(A,[(:-use_module(chr(chr_runtime))),(:-use_module(chr(chr_hashtable_store))),(:-use_module(library('clp/clp_events')))],B).
generate_counter_code(A) :-
   ( chr_pp_flag(store_counter,on) ->
     A=[('$counter_init'(B):-nb_setval(B,0)),('$counter'(C,D):-nb_getval(C,D)),('$counter_inc'(E):-nb_getval(E,F),G is F+1,nb_setval(E,G)),(:-'$counter_init'('$insert_counter')),(:-'$counter_init'('$delete_counter')),('$insert_counter_inc':-'$counter_inc'('$insert_counter')),('$delete_counter_inc':-'$counter_inc'('$delete_counter')),(counter_stats(H,I):-'$counter'('$insert_counter',H),'$counter'('$delete_counter',I))]
   ;
     A=[]
   ).
chr_module_declaration(A) :-
   get_target_module(B),
   ( B\==chr_translate ->
     A=[(:-multifile chr:'$chr_module'/1),chr:'$chr_module'(B)]
   ;
     A=[]
   ).
partition_clauses([],[],[],[]).
partition_clauses([A|B],C,D,E) :-
   ( parse_rule(A,F) ->
     C=G,
     D=[F|H],
     E=I
   ;
     ( is_declaration(A,J) ->
       append(J,G,C),
       D=H,
       E=I
     )
   ;
     ( is_module_declaration(A,K) ->
       target_module(K),
       C=G,
       D=H,
       E=[A|I]
     )
   ;
     ( is_type_definition(A) ->
       C=G,
       D=H,
       E=I
     )
   ;
     ( A=(handler _) ->
       format('CHR compiler WARNING: ~w.
',[A]),
       format('    `-->  SICStus compatibility: ignoring handler/1 declaration.
',[]),
       C=G,
       D=H,
       E=I
     )
   ;
     ( A=(rules _) ->
       format('CHR compiler WARNING: ~w.
',[A]),
       format('    `-->  SICStus compatibility: ignoring rules/1 declaration.
',[]),
       C=G,
       D=H,
       E=I
     )
   ;
     ( A=option(L,M) ->
       handle_option(L,M),
       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=..[constraints,D],
   conj2list(D,E),
   extract_type_mode(E,B).
extract_type_mode([],[]).
extract_type_mode([A/B|C],[A/B|D]) :-
   !,
   extract_type_mode(C,D).
extract_type_mode([A|B],[C|D]) :-
   functor(A,E,F),
   C=E/F,
   A=..[_|G],
   extract_types_and_modes(G,H,I),
   constraint_type(E/F,H),
   constraint_mode(E/F,I),
   extract_type_mode(B,D).
extract_types_and_modes([],[],[]).
extract_types_and_modes([(+A)|B],[A|C],[+|D]) :-
   !,
   extract_types_and_modes(B,C,D).
extract_types_and_modes([(?A)|B],[A|C],[?|D]) :-
   !,
   extract_types_and_modes(B,C,D).
extract_types_and_modes([(-A)|B],[A|C],[?|D]) :-
   !,
   extract_types_and_modes(B,C,D).
extract_types_and_modes([A|_],_,_) :-
   format('CHR compiler ERROR: Illegal mode/type declaration "~w".
',[A]),
   format('    `--> correct syntax is +type, -type or ?type.
',[]),
[...8829 lines suppressed...]
     ;
       true
     )
   ;
     'depends_on_goal/2__1__0'(G,A,B,C)
   ).
'depends_on_goal/2__1'(A,B,C) :-
   allocate_constraint(true,C,depends_on_goal(A,B),[A,B]),
   'depends_on_goal/2__2'(A,B,C).
'depends_on_goal/2__2'(_,_,A) :-
   activate_constraint(B,_,A,_),
   ( B==yes ->
     '$insert_in_store_depends_on_goal/2'(A)
   ;
     true
   ).
ai_observed(A,B) :-
   '$via1_multi_hash_ai_not_observed/2-1'(A,C),
   !,
   'ai_observed/2__0__0'(C,A,B).
'ai_observed/2__0__0'([],A,B) :-
   'ai_observed/2__1'(A,B).
'ai_observed/2__0__0'([E|F],A,B) :-
   ( E=suspension(_,mutable(active),_,_,_,_,C,D),
     C==A,
     D==B ->
     remove_constraint_internal(E,_,G),
     ( G==yes ->
       '$delete_from_store_ai_not_observed/2'(E)
     ;
       true
     ),
     'ai_observed/2__0__0'(F,A,B)
   ;
     'ai_observed/2__0__0'(F,A,B)
   ).
ai_observed(A,B) :-
   'ai_observed/2__1'(A,B).
'ai_observed/2__1'(A,B) :-
   '$via1_multi_hash_ai_observed/2-1'(A,E),
   'chr sbag_member'(C,E),
   C=suspension(_,mutable(active),_,_,_,_,_,D),
   D=B,
   !.
'ai_observed/2__1'(A,B) :-
   insert_constraint_internal(_,_,C,true,ai_observed(A,B),[A,B]),
   '$insert_in_store_ai_observed/2'(C).
ai_not_observed(A,B) :-
   'ai_not_observed/2__0'(A,B,_).
'ai_not_observed/2__0'(A,B,C) :-
   '$via1_multi_hash_stored/3-1'(A,D),
   !,
   allocate_constraint(true,C,ai_not_observed(A,B),[A,B]),
   'ai_not_observed/2__0__0'(D,A,B,C).
'ai_not_observed/2__0__0'([],A,B,C) :-
   'ai_not_observed/2__1'(A,B,C).
'ai_not_observed/2__0__0'([G|H],A,B,C) :-
   ( G=suspension(_,mutable(active),_,_,_,_,D,E,F),
     D==A,
     E==B,
     F=yes,
     '$via1_multi_hash_stored_complete/3-1'(A,L),
     'chr sbag_member'(I,L),
     I=suspension(_,mutable(active),_,_,_,_,_,J,K),
     B<J ->
     remove_constraint_internal(G,_,M),
     ( M==yes ->
       '$delete_from_store_stored/3'(G)
     ;
       true
     ),
     remove_constraint_internal(I,_,N),
     ( N==yes ->
       '$delete_from_store_stored_complete/3'(I)
     ;
       true
     ),
     activate_constraint(P,_,C,Q),
     ( P==yes ->
       '$insert_in_store_ai_not_observed/2'(C)
     ;
       true
     ),
     O is K-1,
     stored(A,B,maybe),
     stored_complete(A,J,O),
     ( C=suspension(_,mutable(active),_,mutable(Q),_,_,_,_) ->
       'chr update_mutable'(inactive,mutable(active)),
       'ai_not_observed/2__0__0'(H,A,B,C)
     ;
       true
     )
   ;
     'ai_not_observed/2__0__0'(H,A,B,C)
   ).
'ai_not_observed/2__0'(A,B,C) :-
   allocate_constraint(true,C,ai_not_observed(A,B),[A,B]),
   'ai_not_observed/2__1'(A,B,C).
'ai_not_observed/2__1'(A,B,C) :-
   '$via1_multi_hash_ai_observed/2-1'(A,F),
   'chr sbag_member'(D,F),
   D=suspension(_,mutable(active),_,_,_,_,_,E),
   E=B,
   !,
   ( var(C) ->
     true
   ;
     remove_constraint_internal(C,_,G),
     ( G==yes ->
       '$delete_from_store_ai_not_observed/2'(C)
     ;
       true
     )
   ).
'ai_not_observed/2__1'(A,B,C) :-
   '$via1_multi_hash_ai_not_observed/2-1'(A,F),
   'chr sbag_member'(D,F),
   D=suspension(_,mutable(active),_,_,_,_,_,E),
   E=B,
   !,
   ( var(C) ->
     true
   ;
     remove_constraint_internal(C,_,G),
     ( G==yes ->
       '$delete_from_store_ai_not_observed/2'(C)
     ;
       true
     )
   ).
'ai_not_observed/2__1'(_,_,A) :-
   activate_constraint(B,_,A,_),
   ( B==yes ->
     '$insert_in_store_ai_not_observed/2'(A)
   ;
     true
   ).
ai_is_observed(A,B) :-
   '$via1_multi_hash_ai_not_observed/2-1'(A,E),
   'chr sbag_member'(C,E),
   C=suspension(_,mutable(active),_,_,_,_,_,D),
   D=B,
   !,
   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)
     ;
       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)
     ;
       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)
   ;
     true
   ).


--- NEW FILE chr_translate_bootstrap1.pl ---
/*  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]

    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(hprolog).
:-use_module(library(assoc)).
:-use_module(pairlist).
:-use_module(library(ordsets)).
:-include(chr_op2).
chr_translate(A,B) :-
   init_chr_pp_flags,
   partition_clauses(A,C,D,E),
   ( C==[] ->
     B=E
   ;
     check_rules(D,C),
     unique_analyse_optimise(D,F),
     check_attachments(F),
     set_constraint_indices(C,1),
     store_management_preds(C,G),
     constraints_code(C,F,H),
     append_lists([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).
partition_clauses([],[],[],[]).
partition_clauses([A|B],C,D,E) :-
   ( rule(A,F) ->
     C=G,
     D=[F|H],
     E=I
   ;
     ( is_declaration(A,J) ->
       append(J,G,C),
       D=H,
       E=I
     )
   ;
     ( is_module_declaration(A,K) ->
       target_module(K),
       C=G,
       D=H,
       E=[A|I]
     )
   ;
     ( A=(handler _) ->
       format('CHR compiler WARNING: ~w.
',[A]),
       format('    `-->  SICStus compatibility: ignoring handler/1 declaration.
',[]),
       C=G,
       D=H,
       E=I
     )
   ;
     ( A=(rules _) ->
       format('CHR compiler WARNING: ~w.
',[A]),
       format('    `-->  SICStus compatibility: ignoring rules/1 declaration.
',[]),
       C=G,
       D=H,
       E=I
     )
   ;
     ( A=option(L,M) ->
       handle_option(L,M),
       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=..[constraints,D],
   conj2list(D,B).
rule(A,B) :-
   A=(C at D),
   !,
   rule(D,yes(C),B).
rule(A,B) :-
   rule(A,no,B).
rule(A,B,C) :-
   A=(D pragma E),
   !,
   is_rule(D,F,G),
   conj2list(E,H),
   C=pragma(F,G,H,B).
rule(A,B,C) :-
   is_rule(A,D,E),
   C=pragma(D,E,[],B).
is_rule(A,B,C) :-
   A=(D==>E),
   !,
   conj2list(D,F),
   get_ids(F,G,H),
   C=ids([],G),
   ( E=(I '|' J) ->
     B=rule([],H,I,J)
   ;
     B=rule([],H,true,E)
   ).
is_rule(A,B,C) :-
   A=(D<=>E),
   !,
   ( E=(F '|' G) ->
     H=F,
     I=G
   ;
     H=true,
     I=E
   ),
   ( D=(J\K) ->
     conj2list(J,L),
     conj2list(K,M),
     get_ids(L,N,O,0,P),
     get_ids(M,Q,R,P,_),
     C=ids(Q,N)
   ;
     conj2list(D,M),
     O=[],
     get_ids(M,Q,R),
     C=ids(Q,[])
   ),
   B=rule(R,O,H,I).
get_ids(A,B,C) :-
   get_ids(A,B,C,0,_).
get_ids([],[],[],A,A).
get_ids([A|B],[C|D],[E|F],C,G) :-
   ( A=E#C ->
     true
   ;
     E=A
   ),
   H is C+1,
   get_ids(B,D,F,H,G).
is_module_declaration((:-module(A)),A).
is_module_declaration((:-module(A,_)),A).
check_rules(A,B) :-
   check_rules(A,B,1).
check_rules([],_,_).
check_rules([A|B],C,D) :-
   check_rule(A,C,D),
   E is D+1,
   check_rules(B,C,E).
check_rule(A,B,C) :-
   A=pragma(D,_,E,_),
   D=rule(F,G,_,_),
   append(F,G,H),
   check_head_constraints(H,B,A,C),
   check_pragmas(E,A,C).
check_head_constraints([],_,_,_).
check_head_constraints([A|B],C,D,E) :-
   functor(A,F,G),
   ( member(F/G,C) ->
     check_head_constraints(B,C,D,E)
   ;
     format('CHR compiler ERROR: Undeclared constraint ~w in head of ~@.
',[F/G,format_rule(D,E)]),
     format('    `--> Constraint should be on of ~w.
',[C]),
     fail
   ).
check_pragmas([],_,_).
check_pragmas([A|B],C,D) :-
   check_pragma(A,C,D),
   check_pragmas(B,C,D).
check_pragma(A,B,C) :-
   var(A),
   !,
   format('CHR compiler ERROR: invalid pragma ~w in ~@.
',[A,format_rule(B,C)]),
   format('    `--> Pragma should not be a variable!
',[]),
   fail.
check_pragma(passive(A),B,C) :-
   !,
   B=pragma(_,ids(D,E),_,_),
[...2192 lines suppressed...]
     'detach_attached/2'(K,B)
   ).
'attached/2__1'(A,B,C) :-
   B==no,
   'chr via_1'(A,D),
   get_attr(D,chr_translate_bootstrap1,E),
   E=v(G,_,_,_,_,_,F),
   G/\32=:=32,
   !,
   'attached/2__1__0'(F,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'(E,A,B,C)
   ).
'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),
     I=mutable(active),
     G==A,
     H==maybe ->
     true
   ),
   !,
   ( var(C) ->
     true
   ;
     'chr remove_constraint_internal'(C,L),
     'detach_attached/2'(L,C)
   ).
'attached/2__2'(_,_,A) :-
   'chr activate_constraint'(B,A,_),
   'attach_attached/2'(B,A).
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),
   G=mutable(active),
   E==A,
   !,
   ( F==no ->
     fail
   ;
     true
   ).
'is_attached/1__0'(_,_) :-
   !.
chr_clear :-
   'chr_clear/0__0'(_).
'chr_clear/0__0'(A) :-
   'chr global_term_ref_1'(B),
   get_attr(B,chr_translate_bootstrap1,C),
   C=v(E,D,_,_,_,_,_),
   E/\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'([],A) :-
   'chr_clear/0__1'(A).
'chr_clear/0__0__0'([B|C],A) :-
   ( B=suspension(_,D,_,_,_,_,_,_),
     D=mutable(active) ->
     'chr remove_constraint_internal'(B,E),
     'detach_constraint/2'(E,B),
     'chr_clear/0__0__0'(C,A)
   ;
     'chr_clear/0__0__0'(C,A)
   ).
'chr_clear/0__0'(A) :-
   ( var(A) ->
     'chr allocate_constraint'(chr_translate_bootstrap1:'chr_clear/0__0'(A),A,chr_clear,[])
   ;
     true
   ),
   'chr_clear/0__1'(A).
'chr_clear/0__1'(A) :-
   'chr global_term_ref_1'(B),
   get_attr(B,chr_translate_bootstrap1,C),
   C=v(E,_,D,_,_,_,_),
   E/\2=:=2,
   !,
   'chr_clear/0__1__0'(D,A).
'chr_clear/0__1__0'([],A) :-
   'chr_clear/0__2'(A).
'chr_clear/0__1__0'([B|C],A) :-
   ( B=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_clear/0__1__0'(C,A)
   ).
'chr_clear/0__1'(A) :-
   'chr_clear/0__2'(A).
'chr_clear/0__2'(A) :-
   'chr global_term_ref_1'(B),
   get_attr(B,chr_translate_bootstrap1,C),
   C=v(E,_,_,D,_,_,_),
   E/\4=:=4,
   !,
   'chr_clear/0__2__0'(D,A).
'chr_clear/0__2__0'([],A) :-
   'chr_clear/0__3'(A).
'chr_clear/0__2__0'([B|C],A) :-
   ( B=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_clear/0__2__0'(C,A)
   ).
'chr_clear/0__2'(A) :-
   'chr_clear/0__3'(A).
'chr_clear/0__3'(A) :-
   'chr global_term_ref_1'(B),
   get_attr(B,chr_translate_bootstrap1,C),
   C=v(E,_,_,_,D,_,_),
   E/\8=:=8,
   !,
   'chr_clear/0__3__0'(D,A).
'chr_clear/0__3__0'([],A) :-
   'chr_clear/0__4'(A).
'chr_clear/0__3__0'([B|C],A) :-
   ( B=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_clear/0__3__0'(C,A)
   ).
'chr_clear/0__3'(A) :-
   'chr_clear/0__4'(A).
'chr_clear/0__4'(A) :-
   'chr global_term_ref_1'(B),
   get_attr(B,chr_translate_bootstrap1,C),
   C=v(E,_,_,_,_,D,_),
   E/\16=:=16,
   !,
   'chr_clear/0__4__0'(D,A).
'chr_clear/0__4__0'([],A) :-
   'chr_clear/0__5'(A).
'chr_clear/0__4__0'([B|C],A) :-
   ( B=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_clear/0__4__0'(C,A)
   ).
'chr_clear/0__4'(A) :-
   'chr_clear/0__5'(A).
'chr_clear/0__5'(A) :-
   'chr global_term_ref_1'(B),
   get_attr(B,chr_translate_bootstrap1,C),
   C=v(E,_,_,_,_,_,D),
   E/\32=:=32,
   !,
   'chr_clear/0__5__0'(D,A).
'chr_clear/0__5__0'([],A) :-
   'chr_clear/0__6'(A).
'chr_clear/0__5__0'([B|C],A) :-
   ( B=suspension(_,D,_,_,_,_,_,_),
     D=mutable(active) ->
     'chr remove_constraint_internal'(B,E),
     'detach_attached/2'(E,B),
     'chr_clear/0__5__0'(C,A)
   ;
     'chr_clear/0__5__0'(C,A)
   ).
'chr_clear/0__5'(A) :-
   'chr_clear/0__6'(A).
'chr_clear/0__6'(_) :-
   !.


--- NEW FILE chr_translate_bootstrap2.pl ---
/*  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]

    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(hprolog).
:-use_module(library(assoc)).
:-use_module(pairlist).
:-use_module(library(ordsets)).
:-use_module(a_star).
:-use_module(clean_code).
:-use_module(builtins).
:-use_module(find).
:-include(chr_op2).
chr_translate(A,B) :-
   init_chr_pp_flags,
   partition_clauses(A,C,D,E),
   ( C==[] ->
     insert_declarations(E,B)
   ;
     add_rules(D),
     check_rules(D,C),
     add_occurrences(D),
     late_allocation(C),
     unique_analyse_optimise(D,F),
     check_attachments(C),
     assume_constraint_stores(C),
     set_constraint_indices(C,1),
     constraints_code(C,F,G),
     validate_store_type_assumptions(C),
     store_management_preds(C,H),
     insert_declarations(E,I),
     chr_module_declaration(J),
     append_lists([I,H,G,J],B)
   ).
store_management_preds(A,B) :-
   generate_attach_detach_a_constraint_all(A,C),
   generate_indexed_variables_clauses(A,D),
   generate_attach_increment(E),
   generate_attr_unify_hook(F),
   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).
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]
   ;
     B=[(:-use_module(chr_runtime)),(:-use_module(chr_hashtable_store)),(:-style_check(-singleton)),(:-style_check(-discontiguous))|A]
   ).
chr_module_declaration(A) :-
   get_target_module(B),
   ( B\==chr_translate ->
     A=[(:-multifile chr:'$chr_module'/1),chr:'$chr_module'(B)]
   ;
     A=[]
   ).
partition_clauses([],[],[],[]).
partition_clauses([A|B],C,D,E) :-
   ( parse_rule(A,F) ->
     C=G,
     D=[F|H],
     E=I
   ;
     ( is_declaration(A,J) ->
       append(J,G,C),
       D=H,
       E=I
     )
   ;
     ( is_module_declaration(A,K) ->
       target_module(K),
       C=G,
       D=H,
       E=[A|I]
     )
   ;
     ( A=(handler _) ->
       format('CHR compiler WARNING: ~w.
',[A]),
       format('    `-->  SICStus compatibility: ignoring handler/1 declaration.
',[]),
       C=G,
       D=H,
       E=I
     )
   ;
     ( A=(rules _) ->
       format('CHR compiler WARNING: ~w.
',[A]),
       format('    `-->  SICStus compatibility: ignoring rules/1 declaration.
',[]),
       C=G,
       D=H,
       E=I
     )
   ;
     ( A=option(L,M) ->
       handle_option(L,M),
       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=..[constraints,D],
   conj2list(D,B).
parse_rule(A,B) :-
   A=(C at D),
   !,
   rule(D,yes(C),B).
parse_rule(A,B) :-
   rule(A,no,B).
rule(A,B,C) :-
   A=(D pragma E),
   !,
   is_rule(D,F,G),
   conj2list(E,H),
   inc_rule_count(I),
   C=pragma(F,G,H,B,I).
rule(A,B,C) :-
   is_rule(A,D,E),
   inc_rule_count(F),
   C=pragma(D,E,[],B,F).
is_rule(A,B,C) :-
   A=(D==>E),
   !,
   conj2list(D,F),
   get_ids(F,G,H),
   C=ids([],G),
   ( E=(I '|' J) ->
     B=rule([],H,I,J)
   ;
     B=rule([],H,true,E)
   ).
is_rule(A,B,C) :-
   A=(D<=>E),
   !,
   ( E=(F '|' G) ->
     H=F,
     I=G
   ;
     H=true,
     I=E
   ),
   ( D=(J\K) ->
     conj2list(J,L),
     conj2list(K,M),
     get_ids(L,N,O,0,P),
     get_ids(M,Q,R,P,_),
     C=ids(Q,N)
   ;
     conj2list(D,M),
     O=[],
     get_ids(M,Q,R),
     C=ids(Q,[])
   ),
   B=rule(R,O,H,I).
get_ids(A,B,C) :-
   get_ids(A,B,C,0,_).
get_ids([],[],[],A,A).
get_ids([A|B],[C|D],[E|F],C,G) :-
   ( A=E#C ->
     true
   ;
     E=A
   ),
   H is C+1,
   get_ids(B,D,F,H,G).
is_module_declaration((:-module(A)),A).
is_module_declaration((:-module(A,_)),A).
add_rules([]).
add_rules([A|B]) :-
   A=pragma(_,_,_,_,C),
   rule(C,A),
   add_rules(B).
check_rules([],_).
check_rules([A|B],C) :-
[...3285 lines suppressed...]
     E==A ->
     true
   ),
   !,
   B=F.
'get_max_occurrence/2__0'(_,A,_) :-
   !,
   A=0.
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).
'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).
get_allocation_occurrence(A,B) :-
   'get_allocation_occurrence/2__0'(A,B,_).
'get_allocation_occurrence/2__0'(A,B,_) :-
   '$via1_multi_hash_allocation_occurrence/2-1'(A,D),
   'chr sbag_member'(C,D),
   C=suspension(_,G,_,_,_,_,E,F),
   G=mutable(active),
   E==A,
   !,
   B=F.
'get_allocation_occurrence/2__0'(_,_,_) :-
   !,
   fail.
rule(A,B) :-
   'rule/2__0'(A,B,_).
'rule/2__0'(A,B,C) :-
   nb_getval('$chr_store_global_ground_chr_translate:allocation_occurrence/2',D),
   !,
   allocate_constraint(chr_translate:'rule/2__0'(A,B,C),C,rule(A,B),[A,B]),
   'rule/2__0__0'(D,A,B,C).
'rule/2__0__0'([],A,B,C) :-
   'rule/2__1'(A,B,C).
'rule/2__0__0'([D|E],A,B,C) :-
   ( D=suspension(_,H,_,_,_,_,F,G),
     H=mutable(active),
     '$via1_multi_hash_occurrence/4-1'(F,J),
     'chr sbag_member'(I,J),
     I=suspension(_,O,_,_,_,_,K,L,M,N),
     O=mutable(active),
     K==F,
     L==G,
     M==A,
     'chr lock'(B),
     'chr lock'(N),
     B=pragma(_,ids(_,_),_,_,_),
     member(N,_),
     'chr unlock'(B),
     'chr unlock'(N) ->
     remove_constraint_internal(D,_,P),
     ( P==yes ->
       '$delete_from_store_allocation_occurrence/2'(D)
     ;
       true
     ),
     activate_constraint(R,_,C,S),
     ( R==yes ->
       '$insert_in_store_rule/2'(C)
     ;
       true
     ),
     Q is G+1,
     allocation_occurrence(F,Q),
     ( C=suspension(_,T,_,U,_,_,_,_),
       T=mutable(active),
       U=mutable(S) ->
       'chr update_mutable'(inactive,T),
       'rule/2__0__0'(E,A,B,C)
     ;
       true
     )
   ;
     'rule/2__0__0'(E,A,B,C)
   ).
'rule/2__0'(A,B,C) :-
   allocate_constraint(chr_translate:'rule/2__0'(A,B,C),C,rule(A,B),[A,B]),
   'rule/2__1'(A,B,C).
'rule/2__1'(A,B,C) :-
   nb_getval('$chr_store_global_ground_chr_translate:allocation_occurrence/2',D),
   !,
   'rule/2__1__0'(D,A,B,C).
'rule/2__1__0'([],A,B,C) :-
   'rule/2__2'(A,B,C).
'rule/2__1__0'([D|E],A,B,C) :-
   ( D=suspension(_,H,_,_,_,_,F,G),
     H=mutable(active),
     '$via1_multi_hash_occurrence/4-1'(F,J),
     'chr sbag_member'(I,J),
     I=suspension(_,N,_,_,_,_,K,L,M,_),
     N=mutable(active),
     K==F,
     L==G,
     M==A,
     'chr lock'(B),
     B=pragma(rule(_,_,_,true),_,_,_,_),
     'chr unlock'(B) ->
     remove_constraint_internal(D,_,O),
     ( O==yes ->
       '$delete_from_store_allocation_occurrence/2'(D)
     ;
       true
     ),
     activate_constraint(Q,_,C,R),
     ( Q==yes ->
       '$insert_in_store_rule/2'(C)
     ;
       true
     ),
     P is G+1,
     allocation_occurrence(F,P),
     ( C=suspension(_,S,_,T,_,_,_,_),
       S=mutable(active),
       T=mutable(R) ->
       'chr update_mutable'(inactive,S),
       'rule/2__1__0'(E,A,B,C)
     ;
       true
     )
   ;
     'rule/2__1__0'(E,A,B,C)
   ).
'rule/2__1'(A,B,C) :-
   'rule/2__2'(A,B,C).
'rule/2__2'(_,_,A) :-
   activate_constraint(B,_,A,_),
   ( B==yes ->
     '$insert_in_store_rule/2'(A)
   ;
     true
   ).
get_rule(A,B) :-
   'get_rule/2__0'(A,B,_).
'get_rule/2__0'(A,B,_) :-
   '$via1_multi_hash_rule/2-1'(A,D),
   'chr sbag_member'(C,D),
   C=suspension(_,G,_,_,_,_,E,F),
   G=mutable(active),
   E==A,
   !,
   B=F.
'get_rule/2__0'(_,_,_) :-
   !,
   fail.


--- NEW FILE guard_entailment.pl ---
/*  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]

    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)).
:-use_module(hprolog).
:-use_module(builtins).
entails_guard(A,B) :-
   copy_term_nat((A,B),(C,D)),
   term_variables(C,E),
   variables(E),
   entails_guard2(C),
   !,
   test(D),
   !,
   cleanup.
entails_guard2([]).
entails_guard2([A|B]) :-
   known(A),
   entails_guard2(B).
simplify_guards(A,B,C,D,E) :-
   copy_term_nat((A,C),(F,G)),
   term_variables(F,H),
   variables(H),
   entails_guard2(F),
   !,
   simplify(G,I),
   simplified(C,I,D,B,E),
   !,
   cleanup.
simplified([],[],[],A,A).
simplified([A|B],[keep|C],[A|D],E,F) :-
   simplified(B,C,D,E,F).
simplified([_|_],[fail|_],fail,A,A).
simplified([A|B],[true|C],[D|E],F,G) :-
   builtins:binds_b(A,H),
   term_variables(B,I),
   intersect_eq(H,I,J),
   !,
   ( J=[] ->
     term_variables(F,K),
     intersect_eq(H,K,L),
     !,
     ( L=[] ->
       D=true,
       G=M
     ;
       D=true,
       G=(A,M)
     )
   ;
     D=A,
     G=M
   ),
   simplified(B,C,E,F,M).
simplify([],[]).
simplify([A|B],[C|D]) :-
   ( \+try(true,A) ->
     C=true
   ;
     builtins:negate_b(A,E),
     ( \+try(true,E) ->
       C=fail
     ;
       C=keep
     )
   ),
   known(A),
   simplify(B,D).
try(A,B) :-
   ( known(A) ->
     true
   ;
     format(' ERROR: entailment checker: this is not supposed to happen.
',[])
   ),
   ( test(B) ->
     fail
   ;
     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).
add_args_nunif([],[],fail).
add_args_nunif([A|B],[C|D],(A\=C;E)) :-
   add_args_nunif(B,D,E).
add_args_nmatch([],[],fail).
add_args_nmatch([A|B],[C|D],(A\==C;E)) :-
   add_args_nmatch(B,D,E).
all_unique_vars(A,B) :-
   all_unique_vars(A,B,[]).
all_unique_vars([],_,_).
all_unique_vars([A|B],C,D) :-
   var(A),
   \+memberchk_eq(A,C),
   \+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))
     ;
       G is F\/1,
       put_attr(A,guard_entailment,v(G,[C],E))
     )
   ;
     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 ->
           del_attr(A,guard_entailment)
         ;
           put_attr(A,guard_entailment,v(G,[],E))
         )
       ;
         put_attr(A,guard_entailment,v(F,H,E))
       )
     ;
       true
     )
   ;
     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]))
     ;
       G is F\/2,
       put_attr(A,guard_entailment,v(G,D,[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 ->
           del_attr(A,guard_entailment)
         ;
           put_attr(A,guard_entailment,v(G,D,[]))
         )
       ;
         put_attr(A,guard_entailment,v(F,D,H))
       )
     ;
       true
     )
   ;
     true
   ),
   'detach_variables/1'(B,C).
'$indexed_variables'(B,A) :-
   B=known(_),
   term_variables(B,A).
'$indexed_variables'(B,A) :-
   B=variables(_),
   term_variables(B,A).
attach_increment([],_).
[...3131 lines suppressed...]
   B=functor(C,_,_),
   nonvar(C),
   !.
test(A) :-
   nonvar(A),
   A=(\+B),
   nonvar(B),
   B=ground(C),
   ground(C),
   !,
   fail.
test(A) :-
   nonvar(A),
   A=(\+B),
   nonvar(B),
   B=number(C),
   number(C),
   !,
   fail.
test(A) :-
   nonvar(A),
   A=(\+B),
   nonvar(B),
   B=float(C),
   float(C),
   !,
   fail.
test(A) :-
   nonvar(A),
   A=(\+B),
   nonvar(B),
   B=integer(C),
   integer(C),
   !,
   fail.
test(A) :-
   nonvar(A),
   A=(\+B),
   nonvar(B),
   B=number(C),
   nonvar(C),
   !.
test(A) :-
   nonvar(A),
   A=(\+B),
   nonvar(B),
   B=float(C),
   nonvar(C),
   !.
test(A) :-
   nonvar(A),
   A=(\+B),
   nonvar(B),
   B=integer(C),
   nonvar(C),
   !.
test(A) :-
   nonvar(A),
   A=(B,C),
   !,
   test(B),
   known(B),
   test(C).
test(A) :-
   nonvar(A),
   A=(B;C),
   !,
   negate_b(B,D),
   negate_b(C,E),
   (
     known(E),
     test(B)
   ;
     known(D),
     test(C)
   ).
test(A) :-
   'chr global_term_ref_1'(D),
   get_attr(D,guard_entailment,E),
   E=v(G,F,_),
   G/\1=:=1,
   'chr sbag_member'(B,F),
   B=suspension(_,mutable(active),_,_,_,_,C),
   nonvar(C),
   C=(H;I),
   !,
   remove_constraint_internal(B,K,L),
   ( L==yes ->
     '$delete_from_store_known/1'(B),
     'detach_known/1'(K,B)
   ;
     true
   ),
   \+try(H,A),
   !,
   negate_b(H,J),
   known(J),
   \+try(I,A).
test(_) :-
   fail.
cleanup :-
   'chr global_term_ref_1'(A),
   get_attr(A,guard_entailment,B),
   B=v(D,C,_),
   D/\1=:=1,
   !,
   'cleanup/0__0__0'(C).
'cleanup/0__0__0'([]) :-
   'cleanup/0__1'.
'cleanup/0__0__0'([A|B]) :-
   ( A=suspension(_,mutable(active),_,_,_,_,_) ->
     remove_constraint_internal(A,C,D),
     ( D==yes ->
       '$delete_from_store_known/1'(A),
       'detach_known/1'(C,A)
     ;
       true
     ),
     'cleanup/0__0__0'(B)
   ;
     'cleanup/0__0__0'(B)
   ).
cleanup :-
   'cleanup/0__1'.
'cleanup/0__1' :-
   'chr global_term_ref_1'(A),
   get_attr(A,guard_entailment,B),
   B=v(D,_,C),
   D/\2=:=2,
   !,
   'cleanup/0__1__0'(C).
'cleanup/0__1__0'([]) :-
   'cleanup/0__2'.
'cleanup/0__1__0'([A|B]) :-
   ( A=suspension(_,mutable(active),_,_,_,_,_) ->
     remove_constraint_internal(A,C,D),
     ( D==yes ->
       '$delete_from_store_variables/1'(A),
       'detach_variables/1'(C,A)
     ;
       true
     ),
     'cleanup/0__1__0'(B)
   ;
     'cleanup/0__1__0'(B)
   ).
'cleanup/0__1' :-
   'cleanup/0__2'.
'cleanup/0__2'.
variables(A) :-
   'variables/1__0'(A,_).
'variables/1__0'(A,B) :-
   'chr global_term_ref_1'(E),
   get_attr(E,guard_entailment,F),
   F=v(H,G,_),
   H/\1=:=1,
   'chr sbag_member'(C,G),
   C=suspension(_,mutable(active),_,_,_,_,D),
   nonvar(D),
   D=functor(I,J,K),
   ground(K),
   ground(J),
   var(I),
   !,
   remove_constraint_internal(C,N,O),
   ( O==yes ->
     '$delete_from_store_known/1'(C),
     'detach_known/1'(N,C)
   ;
     true
   ),
   ( var(B) ->
     true
   ;
     remove_constraint_internal(B,P,Q),
     ( Q==yes ->
       '$delete_from_store_variables/1'(B),
       'detach_variables/1'(P,B)
     ;
       true
     )
   ),
   functor(I,J,K),
   I=..[_|L],
   append(L,A,M),
   variables(M).
'variables/1__0'(A,B) :-
   ( var(B) ->
     insert_constraint_internal(D,C,B,guard_entailment:'variables/1__0'(A,B),variables(A),[A])
   ;
     activate_constraint(D,C,B,_)
   ),
   ( D==yes ->
     '$insert_in_store_variables/1'(B),
     'attach_variables/1'(C,B)
   ;
     true
   ).
:-multifile chr:'$chr_module'/1.
chr:'$chr_module'(guard_entailment).


Index: .cvsignore
===================================================================
RCS file: /cvs/extras/rpms/yap/FC-5/.cvsignore,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- .cvsignore	25 Oct 2005 08:32:24 -0000	1.3
+++ .cvsignore	1 May 2006 11:06:59 -0000	1.4
@@ -1 +1 @@
-Yap-5.0.1.tar.gz
+Yap-5.1.1.tar.gz


Index: sources
===================================================================
RCS file: /cvs/extras/rpms/yap/FC-5/sources,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- sources	25 Oct 2005 08:32:24 -0000	1.4
+++ sources	1 May 2006 11:06:59 -0000	1.5
@@ -1 +1 @@
-d8d1f1c5a38d501eb9db38d880668eda  Yap-5.0.1.tar.gz
+1f5c26642a27158c98f6c2fac56d3dad  Yap-5.1.1.tar.gz


Index: yap.spec
===================================================================
RCS file: /cvs/extras/rpms/yap/FC-5/yap.spec,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -r1.9 -r1.10
--- yap.spec	17 Feb 2006 21:42:57 -0000	1.9
+++ yap.spec	1 May 2006 11:06:59 -0000	1.10
@@ -1,12 +1,16 @@
 Name:		yap
-Version:	5.0.1
-Release:	2%{?dist}
+Version:	5.1.1
+Release:	1%{?dist}
 
 Summary:	High-performance Prolog Compiler
 
 Group:		Development/Languages
 License:	Artistic/LGPL
-Source:		http://www.ncc.up.pt/~vsc/Yap/current/Yap-5.0.1.tar.gz
+Source:		http://www.ncc.up.pt/~vsc/Yap/current/Yap-5.1.1.tar.gz
+Source1:	guard_entailment.pl
+Source2:	chr_translate_bootstrap1.pl
+Source3:	chr_translate_bootstrap2.pl
+Source4:	chr_translate.pl
 Patch1:		Yap-noni386.patch
 URL: 		http://www.ncc.up.pt/~vsc/Yap
 BuildRoot:      %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
@@ -21,9 +25,29 @@
 follows the Edinburgh tradition, and is largely compatible with the
 ISO-Prolog standard and with Quintus and SICStus Prolog.
 
+
+%package devel
+Summary:	C-Interface development files for Yap
+Group:		Development/Languages
+Requires:	%{name} = %{version}-%{release}
+
+%description devel
+C-Interface development files for Yap.
+
+
+%package docs
+Summary:	Documentation for Yap
+Group:		Development/Languages
+Requires:	%{name} = %{version}-%{release}
+
+%description docs
+Documentation for Yap.
+
+
 %prep
 %setup -q -n Yap-%{version}
 %patch1 -p1
+cp %{SOURCE1} %{SOURCE2} %{SOURCE3} %{SOURCE4} LGPL/chr
 
 %build
 %configure \
@@ -33,6 +57,7 @@
 make %{?_smp_mflags}
 (cd docs; make info)
 
+
 %install
 rm -rf $RPM_BUILD_ROOT
 make DESTDIR=$RPM_BUILD_ROOT install
@@ -40,10 +65,23 @@
 cp -f docs/yap.info* $RPM_BUILD_ROOT%{_infodir}
 cp -f LGPL/pillow/doc/pillow_doc.info $RPM_BUILD_ROOT%{_infodir}
 
+# fix permissions and flags
+chmod 0644 $RPM_BUILD_ROOT%{_datadir}/Yap/pl/*
+chmod 0644 $RPM_BUILD_ROOT%{_includedir}/Yap/*
+find -name '*.lgt' -exec chmod 0644 '{}' ';'
+find -name '*.h' -exec chmod 0644 '{}' ';'
+find -name '*.c' -exec chmod 0644 '{}' ';'
+
+# 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}
+rm -rf $RPM_BUILD_ROOT%{_datadir}/Yap/clpbn/examples
+
 %post
 /sbin/install-info %{_infodir}/yap.info --section "Programming Languages" %{_infodir}/dir 2>/dev/null || :
 /sbin/install-info %{_infodir}/pillow_doc.info --section "Programming Languages" %{_infodir}/dir 2>/dev/null || :
 
+
 %postun
 if [ $1 -eq 0 ]; then
   /sbin/install-info --delete %{_infodir}/yap.info %{_infodir}/dir 2>/dev/null || :
@@ -54,24 +92,38 @@
 %clean
 rm -rf $RPM_BUILD_ROOT
 
+
 %files
 %defattr(-,root,root,-)
 %doc README
 %doc changes*
+%{_bindir}/yap
+%{_datadir}/Yap
+%{_prefix}/lib/Yap
+%{_infodir}/*
+
+
+%files devel
+%defattr(-,root,root,-)
+%{_prefix}/lib/libYap.a
+%{_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
 %doc --parent Logtalk/examples
-%{_bindir}/yap
-%{_datadir}/Yap
-%{_includedir}/Yap
-%{_prefix}/lib/libYap.a
-%{_prefix}/lib/Yap
-%{_infodir}/*
+
 
 %changelog
+* Mon May  1 2006 Gerard Milmeister <gemi at bluewin.ch> - 5.1.1-1
+- new version 5.1.1
+- split off devel and docs packages
+
 * Fri Feb 17 2006 Gerard Milmeister <gemi at bluewin.ch> - 5.0.1-2
 - Rebuild for Fedora Extras 5
 




More information about the fedora-extras-commits mailing list