CHR bug fix: matching between + and ? mode arguments
[chr.git] / ChangeLog
blob9b06037b03585d022193e81b0babd8f5f0903014
1 [May 22 2008]
3  * CHR: experimental detach code size reduction (bug fix)
5 [May 21 2008]
7  * CHR: reduce code size of attach and detach predicates (experimental)
9 [May 20 2008]
11  * CHR: chr_enum/1 (bug fix) and chr_enum/2 (with handler)
13 [May 18 2008]
15  * CHR: reinstate chr_enum/1
17 [May 14 2008]
19  * CHR: suppress printing of put_attr/3 at toplevel
21 [Apr 18 2008]
23  * MODIFIED: Renamed hash_term/2 to term_hash/2.  Added hash_term/2 to
24    library(backcomp), so most code should not notice this.
25    
26 [Feb 27 2008]
28  * ENHANCED: CHR performance of find_chr_constraint when called with nonvar argument
30 [Feb 14 2008]
32  * ENHANCED: CHR performance (minor issues)
34 [Feb 13 2008]
36  * FIX: CHR new C file for Windows
38  * FIX: CHR: single chr_support.c C file
40 [Feb 12 2008]
42  * ENHANCED: CHR: moved performance critical predicates to C
44 [Feb 11 2008]
46  * ENHANCED: CHR user-provided background knowledge (Jon Sneyers)
48 [Feb 10 2008]
50  * ENHANCED: CHR compiler performance
52  * ENHANCED: CHR compiler performance
54 [Jan 29 2008]
56  * EHANCED: CHR performance: compacted indexing code
58 [Jan 28 2008]
60  * ADDED: CHR: chr_constants/1 built-in type for enumerated constants
62 [Jan 27 2008]
64  * ENHANCED: CHR: performance improvements (success continuation, Prolog code optimization)
66  * COMPAT: Removed min_list/2 from library(hprolog) as this is now in library lists.
68 Jan 24, 2008
70   * TS: Exploit success continuation information.
72 Jan 23, 2008
74   * TS: Bug fix in continuation optimization.
75   * TS: Fixed singleton variable.
76   * TS: Suppress debug message.
78 Jan 22, 2008
80   * TS: Rewrite Prolog code: common prefix elimination in
81         successive clauses of the same predicate. 
82   * TS: Tries stores enabled by default again.
83   * TS: Success and failure continuation optimization for
84         propagation occurrences.
86 Jan 14, 2008
88   * TS: Fix performance bug in locking of guard variables.
89   * TS: Fix performance bug in spurious hash_term call.
91 Jan 10, 2008
93   * TS: Type check constraint declarations.
94   * TS: Trie stores hidden behind `experimental' option.
95   * TS: New option `verbose' prints constraint indices.
96   * TS: Don't compute term_hash for int and natural types.
98 Jan 9, 2008
100   * TS: Avoid trivial warning for declare_stored_constraints.
101   * TS: Bug fix: missing full store was causing compiler to loop.
103 Jan 9, 2008
105   * TS: Bug fix: atomic_constants store was causing compiler
106         to loop.
107   * TS: Clean-up and avoid adding additional global_ground store
108         if atomic_constants store covers all cases.
109   * TS: Clean-up and bug fix.
111 Jan 7, 2008
113   * TS: Performance improvement: use new store
114         implementation for multi-argument lookups
115         on manifest ground terms. Should be faster than 
116         hashtable.
118 Jan 4, 2008
120   * TS: Performance improvement: use new store
121         implementation for single-argument lookups
122         on manifest atomics. Should be faster than
123         hashtable. Will be generalized to arbitrary
124         manifest ground lookups and non-manifest
125         atomically typed lookups .
126         
127 Jan 3, 2008
129   * TS: Modified error messages of declare_stored_constraints
130         option, to distinguish between stored, temporarily stored
131         and never stored.
132   * TS: write/1, writeln/1 and format/2 are now treated as non-binding
133         builtins.
134   * TS: Properly inline inthash constraint lookup.
136 Dec 31, 2007
138   * TS: Additional assertion # default(Goal) for the
139         declare_stored_constraints, which specifies that
140         an unconditional simplification rule for the constraint
141         must be added to the end of the program. The Goal
142         parameter specifies the goal of that rule, e.g.
143         true or fail or throw(...). Experimental.
145 Dec 29, 2007
147   * TS: Experimental option declare_stored_constraints for
148         telling the compiler to warn for stored constraints
149         that are not asserted to be stored. Use the
150                 :- chr_constraint f(...) # stored.
151         notation for asserting that a constraint is expected to
152         be stored.
154 Dec 27, 2007
156   * TS: Inline constraint lookup.
158   * TS: Precompile term hashing.
160 Sep 26, 2007
162   * TS: Code cleaning was hampered by line numbers.
163         Reported by Mike Elston.
165 May 2, 2007
167   * PVW: Bug fix in observation analysis.
168   * PVW: Consistency checks of experimental history pragma.
170 Apr 5, 2007
172   * TS: Lessened worst bottlenecks in CHR compiler,
173         in the guard simplification phase.
175 Mar 26, 2007
177   * TS: Experimental dynattr option, for dynamic size attribute terms.
179 Mar 16, 2007
181   * TS: Extended observation analysis (abstract interpretation)
182         to deal with disjunctions. With Paolo Tacchella.
184 Mar 14, 2007
186   * TS: Renamed hprolog:substitute/4 to substitute_eq/4, because of
187         name conflict with library(edit).
189 Mar 12, 2007
191   * TS: Use line numbers in error and warning messages.
193 Mar 8, 2007
195   * TS: Added maintenance of line numbers through CHR compilation
196         as an option: chr_option(line_numbers,on).
198 Mar 5, 2007
200   * TS: Bug fix: setarg/3 instantiation error reported by Mike Elston.
201         Caused by missing suspension argument in debug off, optimize off
202         mode.
204 Feb 22, 2007
206  * LDK: O(1) removal from hashtables, with experimental
207         chr_option(ht_removal,on).
209 Jan 25, 2007
211  * PVW: Bugfixes for optional use of CHR constraints in rule guards.
213 Jan 18, 2007
215   * PVW: Optional use of CHR constraints in rule guards.
217 Nov 20, 2006
219   * TS: Bug fix in compiler_errors.pl.
221 Oct 25, 2006
223   * TS: Bug fix in occurrence subsumption by Jon Sneyers.
225 Oct 18, 2006
227   * TS: New preprocessor feature.
229   * TS: Parametrization of experimental chr_identifier type.
231 Oct 16, 2006
233   * TS: More inlining.
235   * TS: Stronger static type checking.
237   * TS: Omitted buggy FD analysis from bootstrapping process.
239 Oct 12, 2006
241   * TS: More inlining.
243   * TS: Experimental chr_identifier type.
245 Oct 10, 2006
247   * TS: Allow for empty type definitions aka phantom types. These are 
248         useful for some type-level tricks. A warning is issued so the 
249         user can check whether a phantom type is intended. No other
250         phantom type-specific checks are in place yet.
252   * TS: Fixed static type checking of built-in types.
254 Oct 9, 2006
256   * TS: The dense_int type can now appear on the rhs of type alias
257         definitions.
259 Oct 3, 2006
261   * TS: Fixed bug concerning matchings between ground and possibly
262         non-ground arguments.   
264 Oct 2, 2006
266   * TS: Fixed a bug in code generation, overeager removal of a clause.
268 Sep 28, 2006
270   * TS: Refactored some code.
272 Sep 22, 2006
274   * TS: Add exception handler to initialize chr_leash in new threads.
275   
276 Sep 18. 2006
278   * TS: Bug fix for programs in debugging mode.
280 Aug 30, 2006
282   * JW: Fixed make clean
283   * JW: Enlarged stacks to make build succeed
285 Aug 24, 2006
287   * JW: Add target ln-install
289 Aug 21, 2006
291   * TS: Fixed wrong arities in not inlined predicates. Mike Elston.
293 Aug 18, 2006
295   * TS: Code clean-up, more inlining, only generate used imports.
297 Aug 17, 2006
299   * TS: Inlining and more specialization of auxiliary predicates.
301 Aug 10, 2006
303   * TS: Fixed bug for constraints without rules in debug mode.
305   * TS: Compiler clean-up
307   * TS: Experimental var_assoc_store.
310 Aug 9, 2006
312   * TS: Various minor code generation improvements, including smaller
313         suspension terms.
315 Aug 8, 2006
317   * TS: Absolutely no lock checking when check_guard_bindings is disabled.
319 Aug 4, 2006
321   * TS: Minor optimizations for (-) arguments.
323   * TS: Important optimization for awakening fewer suspended constraints
325 Aug 3, 2006
327   * TS: Fixed typo in static type checker.
329   * TS: Documented static and dynamic type checking.
331 Aug 2, 2006
333   * TS: Fixed bug (type alias related) in static type checker. Mike Elston.
335   * TS: Added static type checking on variable matching in rule heads.
337   * TS: Added static type checking on CHR constraints in rule bodies.
339 Aug 1, 2006
341   * TS: New (limited) compile time type checking of rule heads.
343 Jul 28, 2006
345   * TS: New experimental robustness feature in debug mode:
346         runtime type checking of CHR constraints.
348 Jul 5, 2006
350   * TS: Minor bug fixes.
352 Jun 22, 2006
354   * TS: Improved performance of ai_observation_analysis,
355         mainly via additional tabling and passive declarations.
357 Jun 8, 2006
359   * TS: Disabled some code only intended for SICStus.
361   * TS: Fixed bug in removal of constraints. Spotted by Leslie De Koninck.
363 Jun 7, 2006
365   * TS: Next fix to tracer. Cconstraints in propagation
366         rules are shown in textual order.
368 Jun 2, 2006
370   * TS: Next few fixes to tracer. Constraints in simpagation rules
371         are now shown on the right side of the backslash.
373 Jun 1, 2006
375   * TS: Synchronization with SICStus version of K.U.Leuven CHR.
377   * TS: First few fixes to tracer. Cconstraints in simplification
378         rules are shown in textual order. Constraint insertions
379         are always shown.
381 May 17, 2006
383   * TS: Termination bug fixed in guard_entailment.
385   * TS:  Runtime library predicate run_suspensions is now specialized
386         per constraint, avoiding requirement of fixed suspension layout.
388   * TS: Further update to suspension term layout. Only constraints for
389         which the propagation history is used get a history field.
391 May 9, 2006
393   * TS: Ignore propagation rules with trivial body 'true'.
395 Apr 24, 2006
397   * TS: Guard entailment now first simplifies the formula it processes,
398         in order to reduce the number of disjunctions, to obtain a smaller
399         search tree.
401 Apr 22, 2006
403   * TS: Bug fix by Jon Sneyers:  type aliases now support built-in types.
404         Spotted by Mike Elston.
406   * TS: Small refactorings based on Ciao port experience.
408   * TS: Removed -singleton stylecheck option now that portray_clause
409         prints singleton variables as _.
411 Apr 19, 2006
413  * JW: Make library(chr) load its private stuff silent.
415 Apr 14, 2006
417  * TS: Bug fix: too many guards were locked.
419 Apr 11, 2006
421   * TS: Most runtime library predicates are now specialized
422         per constraint, avoiding generic =.. and lists code.
424         Mayor update to suspension term layout. Layout may now
425         differ from one constraint to the other. Some unused suspension
426         fields (continuation goal and generation number) are omitted.
427         Further analysis can remove more fields.
429         Default store constraints now each have
430         their own global variable: a list of all the suspensions.
431         Removal from this list is now O(1) thanks to setarg/1 and
432         back pointers in the suspension terms. This can cause time
433         time complexity improvements in solvers that always have 
434         variable indexing on their constraints.
436         Ground, non-indexed constraints are now removed from
437         their global list store in O(1), as for the default store.
439         Minor bug fixes in a number of places.
441 Mar 16, 2006
443   * TS: Fixed subtle bug in ai_observation analysis,
444         that caused goal sequences to only generate
445         the optimistic default answer pattern, leading
446         to invalid 'not observed' conclusions.
447   * TS: Variable indexing/suspension analysis now ignores functor/3
448         in guards. Could be extended to other built-ins
449         that cause an error when arguments are not
450         properly instantiated.
452 Mar 11, 2006
453   
454   * TS: Renamed global variable id to chr_id in chr_runtime.pl.
456 Mar 9, 2006
457   * JS: Synchronization with experimental version:
458         - minor optimizations, e.g. efficient lookups with statically known
459           instantiated data 
460         - new alternative syntax for passive declarations
461         - new dense_int built-in type + underlying store
462         - new type alias definitions, like in Mercury
464 Mar 4, 2006
465   * BD: small changes in chr_compiler_options.pl and chr_translate.chr
466         affecting only the SICStus port
468 Mar 3, 2006
469   * BD: lots of changes related to porting to SICStus
470   * TS: Now exception/3 hook is only used in SWI-Prolog
472 Mar 2, 2006
474   * TS: Use exception/3 hook to catch undefined 
475         global variables of chr_runtime.pl and CHR modules,
476         for multi-threaded programs and saved states.
478 Feb 9, 2006
480   * JW: Fix "make check" path issues.
481   * TS: Removed all is_chr_file tests when loading file.
483 Feb 8, 2006
485   * BD: chr_swi.pl: option(optimize --> :- chr_option(optimize
486   * TS: Removed obsolete experimental optimization option.
487   * TS: Correctly report variable pragmas!
488   * TS: No constraints declared is no longer a special case.
490 Jan 19, 2006
492   * BD: chr_swi.pl - use_module(hprolog added for SICStus port
493   * TS: Removed operator declaration for '::'. No longer used.
495 Dec 23, 2005
497   * TS: Removed chr_constraints declaration again, in favor
498         of only the chr_constraint declaration and modified
499         documentation accordingly.
500   * TS: Modified documentation based on recommendations of Bart Demoen.
501   * TS: Added chr_info/3 predicate to chr_compiler_errors, as suggested by
502         Jon Sneyers. Now print banner on calling compiler.
504 Dec 13, 2005
506   * TS: warnings are now written to user_error stream.
508 Dec 12, 2005
510   * TS: option and constraints declarations are now deprecated. They
511         are replaced by chr_option and chr_constraint(s).
512   * TR: Made an interface for warnings and errors. Errors now implemented
513         with exceptions.
514   * TR: Revised documentation.
516 Dec 2, 2005
517   * BD: chr_translate.chr, chr_translate_bootstrap2.chr
518            mutables "abstracted"
519   * BD: chr_translate_bootstrap1.chr
520            atomic_concat - some duplicate code of it is in more than one file :-(
521            create_get_mutable definitions if-deffed
522            verbosity_on/0 for porting
523         hprolog.pl
524            definitions of init_store/2, get_store/2, update_store/2
525            and of make_init_store_goal/make_get_store_goal/make_update_store_goal
526            removed prolog_flag/3 (seemed  nowhere used)
527         chr_translate_bootstrap2.chr
528            make_init_store_goal/make_get_store_goal/make_update_store_goal introduced
529            verbosity_on/0 for porting
530         chr_translate_bootstrap.pl
531            atom_concat -> atomic_concat
532            verbosity_on/0 for porting
533            conditional import van library(terms)
534         chr_translate.chr
535            make_init_store_goal etc. introduced
536         create_get_mutable_ref wherever needed (chr_translate*)
539 Nov 30, 2005
540   * BD: chr_runtime.pl:
541            chr_init for SICStus
542            included contents of chr_debug.pl
543            removed show_store/1
544            create_mutable changed into 'chr create_mutable'
545            got rid of explicit inlining and did it by goal expansion
546            inlining also of 'chr default_store'
547   * BD: chr_swi.pl:
548            removed :- use_module(chr(chr_debug))
549            module header: version for SICStus
550   * BD: chr_debug.pl: emptied
551   * BD: chr_translate.chr:
552            system specific declarations factored out in insert_declarations
553            changed two atom_concat/3 into atomic_concat/3 (because arg 2 was sometimes an int)
554   * BD: chr_compiler_utility.pl:
555            put atomic_concat/3 there 
556            adapted atom_concat_list/2 to use it
557   * BD: chr_swi_bootstrap.pl:
558            introduced chr_swi_bootstrap/2 for ease of porting
559            exported also chr_compile/3
560            porting code for get_time stuff/read_term/absolute_file_name
561   * BD: builtins.pl, a_star.pl, clean_code.pl:
562            some ifdefs
565 Nov 29, 2005
566   * BD: hprolog.pl: removed strip_attributes/2 and restore_attributes/2
568 Nov 29, 2005
569   * BD: chr_swi.pl: Removed code that took Handler for Module (in chr_expand(end_of_file)
570                     Added :- chr_option(_,_) with same meaning as option(_,_)
571                     is_chr_file: .chr is no longer a recognised suffix
572                     added use_module(library(lists))
573                     changed calls to source_location/2 into prolog_load_context/2
574   * BD: chr_translate.chr: chr_translate/2: added end_of_file to translated program
575                            adapted SICStus compatibility message
576                            made :- chr_option(_,_) available
577                            changed precedence of + - ? to 980 (these ops are
578                                      probably not local enough to the module)
580 Nov 21, 2005
582   * TS: Further synchronization with hProlog.
584 Nov 18, 2005
586   * TS: Removed dead code in guard_entailment.chr
587   * TS: Fixed performance bug: now lookup is indexed
588         on maximal number of arguments.
589   * TS: Removed some redundant intermediate predicates
590         in chr_runtime.pl.
591   * TS: It is now possible to disable the printing
592         of the CHR constraint store per module,
593         through the option toplevel_show_store on/off
594   * TS: Synchronized with hProlog
595   * TS: bug fix in functional dependency analysis
597 Nov 17, 2005
599   * TS: Removed two dead predicates in chr_translate.chr
600         and hooked up the late_storage_analysis
601         that was being bypassed.
602   * TS: Renamed global_term_ref_1 to default_store.
603   * TS: Removed redundant predicate values_ht.
604   * TS: Compiler no longer generates dead code for never stored constraints,
605         i.e. attach/detach predicates.
606         This reduces the generated .pl by about 700 lines.
608 Nov 10, 2005
610   * TS: Two more bug fixes for constraints without
611         active occurrences that trigger.
613 Nov 4, 2005
615   * TS: Small optimization of code for constraints
616         without any active occurrence.
617   * TS: Fixed bug caused by previous bug fix:
618         added only_ground_indexed_arguments/1 test
619         to separate out that meaning from may_trigger/1.
621 Nov 3, 2005
623   * TS: Removed strip_attributes code.
624   * TS: Fixed bug that causes new constraints to be added on triggering.
626 Oct 25, 2005
628   * TS: Two minor bug fixes.
630 Oct 19, 2005
632   * TS: Fixed bug due to overly aggressive inlining of get_mutable_value.
634 Oct 18, 2005
636   * JS: Compiled code is broken, if debug is off and optimize too.
637         Debug off now entails optimize on.
639   * TS: Some fixes of the documentation. Thanks to Bart Demoen
640         and Thom Fruehwirth. 
642 Sep 2, 2005
644   * TS: Synchronized with hProlog.
646 Aug 31, 2005
648   * TS: Added missing operator declarations for prefix (?).
650 Aug 9, 2005
652   * JW: import lists into chr_compiler_utility.pl
654   * JW: make message hook for query(yes) detect CHR global variables.
656   * JW: Exported pairlist_delete_eq/3 from pairlist and use this in
657     chr_hashtable_store.pl
659 Aug 4, 2005
661   * TS: Renamed pairlist:delete/3 to pairlist:pairlist_delete/3.
662         Mike Elston.
663 Aug 1, 2005
665   * TS: Extended more efficient ground matching code to
666         removed simpagation occurrence code.
668 Jul 28, 2005
670   * TS: New input verification: duplicate constraint declaration
671         now reported as an error. Requested by Mike Elston.
672   * TS: More efficient matching code for ground constraints
673         when matching an argument of a partner constraint with
674         a ground term
675   * JS: Bug fix in guard simplification.
677 Jul 3, 2005
679   * TS: Factored out option functionality into separate module.
680   * TS: Factored out utility code into separate module.
682 Jun 29, 2005
684   * TS: Changed chr_show_store/1 to use print/1 instead of write/1.
686 Jun 28, 2005
688   * TS: Removed spurious and conflicting operator definitions
689         for +, - and ? as mode declarations.
691 Jun 27, 2005
693   * TS: Added find_chr_constraint/1 functionality.
695 Jun 8, 2005
697   * TS: Improved compiler scalability: use nb_setval/2 to
698         remember compiled code through backtracking over
699         compilation process instead of assert/1.
700   * TS: Removed spurious comma from file.
702 Jun 1, 2005
704   * TS: Added option to disable toplevel constraint store printing.
705   * TS: Slightly improved hash table constraint store implementation.
707 Apr 16, 2005
709   * JW: Added patch from Jon Sneyers.
711 Mar 11, 2005
713   * TS: Improved head reordering heuristic.
714   * TS: Added support primitive for alternate built-in solver dependency.
716 Mar 4, 2005
718   * TS: Fixed bug that causes wrong output in chr_show_store.
720 Feb 25, 2005
722   * TS: Fixed several bugs in generation of debugable code.
724 Feb 19, 2005
726   * JW: Cleanup integration in SWI-Prolog environment:
727         - Extended SWI-Prolog library ordsets.  Renamed ord_delete/3 to
728           ord_del_element/3 and ord_difference/3 to ord_subtract/3 for
729           better compatibility.
730         - Renamed module find to chr_find to avoid name conflict and declared
731           preds as meta-predicate.
732         - Re-inserted and exported strip_attributes/2 and
733           restore_attributes/2 in hprolog.pl. Deleted hprolog: from
734           chr_translate.chr.
735         - Added dummy option declarations to bootstrap compiler.
736         - Fixed path problems in makefile (-p chr=.) and install new
737           components.
738         - Fixed typo 'chr show_store' --> chr_show_store.
740 Feb 17, 2005
742   * JS: Added guard entailment optimizations and
743         new syntax for type and mode declarations.
745 Dec 15, 2004
747   * TS: Use prolog:message/3 hook to automatically print
748         contents of CHR constraint stores with query bindings
749         on toplevel.
751 Dec  3, 2004
753   * TS: Bugfix in code generation. Reported by Lyosha Ilyukhin.
755 Jul 28, 2004
757   * TS: Updated hashtable stores. They now start small and expand.
759 Jul 19, 2004
761   * JW: Removed chr_pp: module prefixes
762   * JW: Updated Windows makefile.mak (more similar organisation, added check)
764 Jul 17, 2004
766   * TS: Added chr_hashtable_store library.
767   * TS: Added find library.
768   * TS: Added builtins library.
769   * TS: Added clean_code library.
770   * TS: Added binomial_heap library.
771   * TS: Added a_star library.
772   * TS: Added new intermediate bootstrapping step
773   * TS: Synchronized CHR compiler with most recent development version
775   Summary of changes:
777    "The new version of the compiler contains several new optimizations, both
778     fully automatic, such as the antimonotny-based delay avoidance (see
779     http://www.cs.kuleuven.be/publicaties/rapporten/cw/CW385.abs.html for
780     the technical report), and enabled by mode declarations (see CHR
781     documentation), such as hashtable-based constraint indexes."
783 Apr 9, 2004
785   * JW: Added chr_messages.pl.  Make all debug messages use the print_message/2
786     interface to enable future embedding.
788 Apr 7, 2004
790   * JW: Added chr:debug_interact/3 hook.  Defined in chr_swi.pl to void
791     showing constraints first as goal and then as CHR call.
792   * JW: Added chr:debug_event/2 hook.  Defined in chr_swi.pl to make the
793     CHR debugger honour a skip command from the Prolog tracer.
795 Apr 6, 2004
797   * JW: Added b (break) to the CHR debugger.
798   * TS: added chr_expandable/2 clause for pragma/2
800 Apr 5, 2004
802   * JW: fixed reference to format_rule/2.
803   * JW: Use select/3 rather than delete/3 in diff/2 in Tests/zebra.pl
804   * TS: CHR translation now leaves CHR store empty
806 Apr 4, 2004
808   * JW: added :- use_module(library(chr)) to all examples.
809   * JW: mapped -O --> option(optimize, full).
810   * JW: introduced file-search-path `chr' for clarity and to enable running
811     make check from the local environment instead of the public installation.
812   * JW: mapped prolog flag generate_debug_info --> option(debug, on)
813   * JW: Replaced the chr -> pl step with term_expansion/2.
814   * JW: Moved insert_declarations/2 to chr_swi.pl
816 Apr 2, 2004
818   * JW: fixed Undefined procedure: chr_runtime:run_suspensions_loop_d/1
819   * TS: Added <space> for creep and shortened debug line prefix to CHR:
821 Mar 29, 2004
823   * JW: Use \+ \+ in chr_compile/3 to undo changes to the constraint
824     pool.  Regression test suite using "make check" works again.
826 Mar 25, 2004
828   * TS: Added skip and ancestor debug commands
830 Mar 24, 2004
832   * TS: Added bootstrapping process for CHR compiler using CHR.
833   * TS: CHR compiler now uses CHR.
834   * TS: Fixed bug in compilation of multi-headed simpagation rules.
835   * TS: Cleaned up compiler.
836   * TS: Added analysis + optimization for never attached constraints.
837   * TS: Exploit uniqueness (functional dependency) results to detect
838     set semantics type simpagation rules where one rule can be passive
839   * TS: Compiler generates 'chr debug_event'/1 calls
840   * TS: Rudimentary support for debugging.
841     option(debug,on) causes a trace of CHR events to be printed
843 Mar 15, 2004
845   * JW: Fix operator handling.
847 Mar 3, 2004
849   * JW: Integrated new version from Tom Schrijvers.