Release History

Version Date Description
1.0 July 2007  
0.5 July 6, 2006  
0.1 unreleased  

Release 1.0 – July 2007

Type Changes By
The calculation of free/bound variables now handles tmpNNN variables as normal variables, so that they are scoped correctly. This was necessary to avoid errors in the mode calculations, such as for sets whose results contained tmpNNN variables. open
Implemented a FlatPred implementation of function/relation types, like in Jaza. That is, an implementation of A --> B, for all the kinds of functions/relations/sequences that Z supports. (Use flags to keep track of each property such as one-to-one, total, onto etc.) open
Separated the FlatPred hierarchy from the evaluated results that it returns (see the net.sourceforge.czt.animation.eval.result package). For example, FlatPowerSet now returns a PowerSet object each time it is evaluated. This is more flexible, and was necessary to handle examples like {a:1..10 @ \power(0..a)}. MarkU, Petra
Implemented a better mode algorithm to reorder lists of FlatPreds, based on the estimated number of solutions for each mode. Initially, just repeatedly choose the predicate with the smallest number of expected solutions. In the future, more sophisticated path-finding algorithms may be used, such as best-first or A* path-finding algorithms. Petra, MarkU

Release 0.5 – July 6, 2006

Type Changes By
Fix flatpred/FlatForall.java so that simple bounded forall predicates work. For example: (\forall x:\{1,3,5\} @ x = 3) should be false, but currently gives a "Cannot find mode" error. Mark
Design and implement a bounds analysis feature for numeric variables, so that x<=10 and x>=y are combined into the (finite) constraint x \in y..10. This could be done in at least three ways: (1) associate a static lower and upper bound constant with each variable; (2) associate a set of lower/upper bound expressions with each variable; (3) merge several complementary FlatPred constraints into single FlatPred constraint which is more efficient. The first or third approaches seem more in keeping with the ZLive philosophy of static analysis/transformation. MarkU
Change the test-and-compare framework so that a single directory is used for the results (and these change with time). This is a more CVS-friendly way of recording our progress. MarkU
Implement set union as a new FlatPred subclass. This should give us more flexibility to choose different algorithms than just unfolding the definition of union, which is a set comprehension with a disjunction. Intersection and difference might be okay done via unfolding. MarkU
Unfold definitions and rewrite some complex constructs into simpler constructs. This will be done via CZT rules. MarkU
Change the FlatSetComp implementation of sets so that members are generated lazily, on demand. This will allow us to evaluate schemas that have an infinite number of solutions, when we only want to explore the first few solutions. MarkU
Design and implement a 'FlatOr' class to handle disjunctions. All branches of the disjunct must have the same mode. Other complex predicates should probably be unfolded into disjunctions. MarkU
Implemented a simple textual user interface which provides eval Expr and evalp Pred commands. MarkU

Release 0.1 – unreleased

Type Changes By
Better reporting from the usertests. Each animate*.tex file is a separate JUnit test suite so that we can see which groups of tests are mostly passing/failing. It shows line numbers for each test that fails and records previous test runs in subdirectories and shows when new tests pass or old tests start failing. Rohit
Implemented all basic arithmetic operators, tuples and several implementations of sets. MarkU, Rohit
Designed the EvalSet interface. Rohit wrote the first implementation of it (RangeSet for a..b sets), plus the FlatMember predicate which uses it. MarkU, Rohit
Designed basic architecture of ZLive (unfolding, flattening, mode analysis, reordering, then evaluation), and the FlatPred interface (abstract class actually). With Rohit, developed several FlatPred implementations for plus, times, negate etc. plus a basic left-to-right, deterministic-only evaluation engine. MarkU
Translated the 500+ Jaza tests into standard Z conjectures and wrote a JUnit harness which calls evalPred on each one (but conjectures of the form E=undefnum pass E to evalExpr and expect an exception to be raised). The resulting 'usertests' give a good measure of how much progress we are making towards a useful animator. MarkU, Rohit

Back to top

Version: 1.6-SNAPSHOT. Last Published: 2016-04-09.

Reflow Maven skin by Andrius Velykis.