1 :x: marks a potential source of incompatibility
3 Version 1.2.1, October 28, 2019
4 -------------------------------
7 * fixed compilation with OCaml 4.09
8 * fixed compilation with Lablgtk3
11 * support for Z3 4.8.6 (released Sep 20, 2019)
12 * support for Z3 4.8.5 (released Jun 3, 2019)
13 * support for CVC4 1.7 (released Apr 9, 2019)
14 * support for Alt-Ergo 2.3.0 (released Feb 11, 2019)
15 * support for Coq 8.9.1 (released May 20, 2019)
17 Version 1.2.0, February 11, 2019
18 --------------------------------
21 * file path stored in session files are now represented in a
22 system-independent way
25 * the clause `syntax converter` has been removed; any former use should
26 be replaced by `syntax literal` and/or `syntax function` :x:
29 * the `any` expression is now always ghost :x:
30 * a syntactic sugar called "auto-dereference" is introduced, so as
31 to avoid, on simple programs, the heavy use of `(!)` character on
32 references; see details in Section A.1 of the manual
35 * `split_vc` and `subst_all` now avoid substituting user symbols by
37 * `destruct_rec` applies `destruct` recursively on a goal
38 * `destruct` now simplifies away equalities on constructors :x:
39 * `destruct` now simplifies `if .. then .. else ..` and `match .. with ..` :x:
40 * `destruct_alg` renamed to `destruct_term`; it also has a new experimental
41 keyword `using` to name newly destructed elements :x:
44 * added a command `why3 session update` to modify sessions from the
45 command line; so far, only option `-rename-file` exists, for
47 * `why3 config --add-prover` now takes the shortcut as second
48 argument; option `--list-prover-ids` has been renamed to
49 `--list-prover-families` :x:
52 * clicking on the status of a failed proof attempt in the proof tree
53 now generates counterexamples
54 * added support for GTK3
57 * the trigger for counterexamples has been changed; read Section 5.3.7
58 of the manual for details :x:
59 * various improvements on the generated counterexamples
60 * field names now use ident names instead of smt generated ones, e.g.,
61 `int32qtint` -> `int32'int` :x:
62 * fixed parsing of bitvector values from counterexamples generated by Z3
65 * fixed extraction of functions passed as arguments
66 * fixed extraction of recursive polymorphic functions for Ocaml
67 * improved extraction of records for C
70 * `Stack.length` and `Queue.length` now return a `Peano.t`, for
71 improved extraction :x:
74 * support for Z3 4.8.1 (released Oct 16, 2018)
75 * support for Z3 4.8.3 (released Nov 20, 2018)
76 * support for Z3 4.8.4 (released Dec 20, 2018)
77 * support for Coq 8.9.0 (released Jan 17, 2019)
78 * upgraded Coq realizations for floating-point arithmetic to Flocq 3.1
80 Version 1.1.1, December 17, 2018
81 --------------------------------
84 * prevented broken extraction of `any`
85 * fixed evaluation order when extracting nested mutators
86 * fixed extraction of nested recursive polymorphic functions
87 * fixed cloning of expressions raising exceptions
89 Version 1.1.0, October 17, 2018
90 -------------------------------
93 * variants can now be inferred on some lemma functions
94 * coercions are now supported for `if` and `match` branches
95 * `interrupt` command should now properly interrupt running provers.
96 * clearer typing error messages thanks to printing qualified names
97 * fixed handling of prover upgrades, resurrected the policy
98 "duplicate" and added a policy "remove"
101 * added `Call_provers.interrupt_call` to interrupt a running prover
102 (contribution by Pierre-Yves Strub)
105 * program functions can now be marked `partial` to prevent them from
106 being used in ghost context; the annotation does not have to be
107 explicitly put on their callers
108 * `use` now accepts several module names separated by commas
109 * symbolic operators can be used in identifiers like `(+)_ident` or
111 * range types have now a default ordering to be used in `variant` clause
114 * library `ieee_float`: floating-point operations can now be used in
118 * `split_vc` behaves slightly differently :x:
121 * support for Alt-Ergo 2.1.0 (released Mar 14, 2018)
122 * support for Alt-Ergo 2.2.0 (released Apr 26, 2018)
123 * support for Coq 8.8.1 (released Jun 29, 2018)
124 * support for Coq 8.8.2 (released Sep 26, 2018)
125 * support for CVC4 1.6 (released Jun 25, 2018)
126 * support for Z3 4.7.1 (released May 23, 2018)
127 * support for Isabelle 2018 (released Aug 2018)
128 (contribution by Stefan Berghofer)
129 * dropped support for Isabelle 2016 (2017 still supported) :x:
130 * dropped support for Alt-Ergo versions < 2.0.0 :x:
132 Version 1.0.0, June 25, 2018
133 ----------------------------
136 * improved support of counter-examples
137 * attribute `[@vc:sp]` on an expression switches from traditional WP
138 to Flanagan-Saxe-like VC generation
139 * type invariants now produce logical axioms;
140 a type with an invariant must be proved to be inhabited :x:
141 * logical symbols can no longer be used in non-ghost code;
142 in particular, there is no polymorphic equality in programs any more,
143 so equality functions must be declared/defined on a per-type basis
144 (already done for type `int` in the standard library) :x:
147 * numerous changes to syntax, see documentation appendix :x:
148 * `let function`, `let predicate`, `val function`, and `val predicate`
149 introduce symbols in both logic and programs
150 * added overloading of program symbols
151 * new contract clause `alias { <term> with <term>, ... }` :x:
152 * support for parallel assignment `<term>,... <- <term>,...`
153 * support for local exceptions using `exception ... in ...`
154 * added `break`, `continue`, and `return` statements
155 * support for `exception` branches in `match` constructs
156 * support for `for` loops on range types
157 (including machine integers from the standard library)
158 * support for type coercions in logic using `meta coercion`
159 * keyword `theory` is deprecated; use `module` instead
160 * term on the left of sequence `;` must be of type `unit` :x:
161 * cloned axioms turn into lemmas; use `with axiom my_axiom`
162 or `with axiom .` to keep them as axioms :x:
163 * `any <type> <spec>` produces an existential precondition;
164 use `val f : <type> <spec> in ...` (unsafe!) instead :x:
165 * `use T` and `clone T` now import the generated namespace T;
166 use `use T as T` and `clone T as T` to prevent this :x:
167 * `pure { <term> }` produces a ghost value in program code
168 * `a <-> b <-> c` is now parsed as `(a <-> b) /\ (b <-> c)`;
169 `a <-> b -> c` is now rejected :x:
172 * machine integers in `mach.int.*` are now range types :x:
173 * added a minimal memory model for the C language in `mach.c`
174 * new modules `witness.Witness` and `witness.Nat`
177 * improved extraction to OCaml
178 * added partial extraction to C using the memory model of `mach.c`
179 * added extraction to CakeML (using `why3 extract -D cakeml ...`)
182 * transformations can now have arguments
183 * added transformations `assert`, `apply`, `cut`, `rewrite`, etc., à la Coq
184 * added transformations for reflection-based proofs
187 * support for `use` in theory drivers
190 * replaced left toolbar by a contextual menu
191 * source is now editable
192 * premises are no longer implicitly introduced
193 * added textual interface to call transformations and provers
196 * deprecated `.why` file extension; use `.mlw` instead
199 * removed the `why3` Coq tactic :x:
200 * dropped support for Coq 8.4 :x:
203 * moved the opam base package to `why3`; added `why3-ide` and `why3-coq`
205 Version 0.88.3, January 11, 2018
206 --------------------------------
209 * support for Alt-Ergo 2.0.0 (released Nov 14, 2017)
210 * support for Coq 8.7.1 (released Dec 16, 2017)
211 * support for Z3 4.6.0 (released Dec 18, 2017)
214 * fixed soundness of theory `int.Exponentiation` when multiplication is not
218 * fixed support for `--enable_relocation=yes`
219 * fixed support for Windows
221 Version 0.88.2, December 7, 2017
222 --------------------------------
225 * `why3 session html`: improved compliance of generated files
226 * `why3 doc`: fixed missing anchors for operator definitions
227 * improved build process when `coqtop.byte` is missing
229 Version 0.88.1, November 6, 2017
230 --------------------------------
233 * exported function `Call_provers.get_new_results`
236 * improved support for Isabelle 2017
237 * fixed support for Coq 8.7 (released Oct 17, 2017)
240 * fixed compilation for OCaml 4.06
241 * improved support for nullary `val` declarations with regions
243 Version 0.88.0, October 6, 2017
244 -------------------------------
247 * added two new forms of type declarations: integer range types and
248 floating-point types. To denote constants in such types, integer
249 constants and real constants can be cast to such types. This
250 support is exploited in drivers for provers that support bitvector
251 theories (CVC4, Z3) and floating-point theory (Z3).
252 More details in the manual, section 7.2.4 "Theories".
253 * a quote character `'` inside an identifier must either be at the
254 end, or be followed by either a digit, the underscore character
255 `_` or another quote. Identifiers with a quote followed by a
256 letter are reserved. :x:
259 * new theory `ieee_float` formalizing floating-point arithmetic,
260 compliant to IEEE-754, mapped to SMT-LIB FP theory.
263 * proof strategies: `why3 config` now generates default proof strategies
264 using the installed provers. These are available under name "Auto
265 level 0", "Auto level 1" and "Auto level 2" in `why3 ide`.
266 More details in the manual, section 10.6 "Proof Strategies".
267 * counterexamples: better support for array values, support for
268 floating-point values, support for Z3 in addition to CVC4.
269 More details in the manual, section 6.3.5 "Displaying Counterexamples".
272 * new input format for a small subset of Python
275 * support for Isabelle 2017 (released Oct 2017)
276 * dropped support for Isabelle 2016 (2016-1 still supported) :x:
277 * support for Coq 8.6.1 (released Jul 25, 2017)
278 * tentative support for Coq 8.7
279 * dropped tactic support for Coq 8.4 (proofs still supported) :x:
280 * support for CVC4 1.5 (released Jul 10, 2017)
281 * support for E 2.0 (released Jul 4, 2017)
282 * support for E 1.9.1 (release Aug 31, 2016)
284 Version 0.87.3, January 12, 2017
285 --------------------------------
288 * fixed OCaml extraction with respect to ghost parameters
292 * support for Alt-Ergo 1.30 (released Nov 21, 2016)
293 * support for Coq 8.6 (released Dec 8, 2016)
294 * support for Gappa 1.3 (released Jul 20, 2016)
295 * dropped support for Isabelle 2015 :x:
296 * support for Isabelle 2016-1 (released Dec 2016)
297 * support for Z3 4.5.0 (released Nov 8, 2016)
299 Version 0.87.2, September 1, 2016
300 ---------------------------------
303 * improved well-formedness of extracted OCaml code
306 Version 0.87.1, May 27, 2016
307 ----------------------------
312 Version 0.87.0, March 15, 2016
313 ------------------------------
316 * added two new logical connectives `by` and `so` as keywords :x:
319 * added a command-line option `--extra-expl-prefix` to specify
320 additional possible prefixes for VC explanations. Available for
321 `why3` commands `prove` and `ide`.
322 * removed `jstree` style from the `session` command :x:
325 * all split transformations respect the `"stop_split"` label now.
326 `split_*_wp` is a synonym for `split_*_right` :x:
327 * the `split_*_right` transformations split the left-hand side subformulas
328 when they carry the `"case_split"` label :x:
329 * `split_intro` is now the composition of `split_goal_right` and
330 `introduce_premises` :x:
333 * improved bitvector theories :x:
336 * renamed functions in module `Split_goal` :x:
337 * `split_intro` moved to Introduction :x:
340 * if a task has no polymorphic object (except for the special
341 cases of equality and maps), then the translation to SMT-LIB
345 * dropped support for Alt-Ergo versions older than 0.95.2 :x:
346 * support for Alt-Ergo 1.01 (released Feb 16, 2016) and
347 non-free versions 1.10 and 1.20
348 * support for Coq 8.4pl6 (released Apr 9, 2015)
349 * support for Coq 8.5 (released Jan 21, 2016)
350 * support for Gappa 1.2.0 (released May 19, 2015)
351 * dropped support for Isabelle 2014 :x:
352 * support for Isabelle 2015 (released May 25, 2015) and
353 Isabelle 2016 (released Feb 17, 2016)
354 * support for Z3 4.4.0 (released Apr 29, 2015) and
355 4.4.1 (released Oct 5, 2015)
356 * support for Zenon 0.8.0 (released Oct 21, 2014)
357 * support for Zenon_modulo 0.4.1 (released Jul 2, 2015)
360 * non-free files have been removed: `boomy` icon set,
361 javascript helpers for `why3 session html --style jstree`
363 Version 0.86.3, February 8, 2016
364 --------------------------------
370 * fix compilation issues with Coq 8.5
371 (the tactic for 8.5 now behaves like `idtac` on successfully proved goals) :x:
373 Version 0.86.2, October 13, 2015
374 --------------------------------
379 Version 0.86.1, May 22, 2015
380 ----------------------------
383 * improved task highlighting for negated premises
384 (contributed by Mikhail Mandrykin, AstraVer project)
387 * support for Gappa 1.2 (released May 19, 2015)
390 * `why3doc`: garbled output
392 Version 0.86, May 11, 2015
393 --------------------------
396 * steps limit for reliable replay of proofs, available for Alt-Ergo
400 * new transformations `induction_pr` and `inversion_pr` to reason with
404 * renamed theory `int.NumOfParam` into `int.NumOf`; the predicate `numof`
405 now takes some higher-order predicate as argument (no more need
406 for cloning). Similar change in modules `array.NumOf`... :x:
407 * improved theory `real.PowerReal` :x:
408 * new theory: sequences
409 * new theories for bitvectors, mapped to BV theories of SMT solvers
413 * support for Coq 8.4pl5 (released Nov 7, 2014)
414 * support for Z3 4.3.2 (released Oct 25, 2014)
415 * support for MetiTarski 2.4 (released Oct 21, 2014)
416 * support for Alt-Ergo 0.99.1 (released Dec 30, 2014)
417 * support for Alt-Ergo 1.00.prv (released Jan 29, 2015)
418 * support for veriT 201410 (released Nov 2014)
419 * support for Psyche (experimental,
420 http://www.lix.polytechnique.fr/~lengrand/Psyche/)
421 * preliminary support for upcoming CVC4 1.5 (steps feature)
424 * config file not automatically saved anymore at exit. Configuration
425 is saved on disk for future sessions if, and only if, preferences
426 window is exited by hitting the "Save&Close" button
427 * right part of main window organized in tabs
428 * better explanations and task highlighting
429 (contributed by Mikhail Mandrykin, AstraVer project)
432 * bug in interpreter in presence of nested mutable fields
433 * IDE: proofs in progress should never be "cleaned"
434 * IDE: display warnings after reload
436 Version 0.85, September 17, 2014
437 --------------------------------
440 * fix a soundness bug in the detection of aliases when calling a
441 WhyML function: some alias could have been forgotten when a type
442 variable was substituted with a mutable type :x:
445 * use the full path of identifiers when the user introduces namespaces
449 * fix a soundness bug in `compute_in_goal` regarding the handling of
450 logical implication. :x:
451 * several improvements to `compute_in_goal`:
452 - left-hand side of rewrite rules can be any symbols, not only
453 non-interpreted ones.
454 - perform beta-reduction when possible
455 - the maximal number of reduction steps can be increased using meta
457 - the transformation is documented in details in the manual
458 * new transformation `compute_specified`:
459 less aggressive variant of `compute_in_goal`.
460 Unfolding of definitions is controlled using meta `rewrite_def`
461 * fixed a bug in `eliminate_if` when applied on inductive definitions
464 * fixed wrong warning when detecting Isabelle2014
466 Version 0.84, September 1, 2014
467 -------------------------------
470 * the file generated by `why3 session html f.mlw` is now
471 `f/why3session.html` and not `f/f.html` :x:
472 * the default behavior of `why3` has been moved to the `prove` subcommand :x:
473 * options `--exec`, `--extract`, and `--realize`, have been moved to
474 subcommands: `execute`, `extract`, and `realize` :x:
475 * `why3replayer` has been moved to the `replay` subcommand :x:
476 * other tools have been moved to `why3` subcommands too: `config`, `doc`, `ide`,
477 `session`, `wc`. For local usage, the old commands are still available. :x:
480 * session files are split in two parts: `why3session.xml` and
481 `why3shapes`. The latter file contains the checksums and the shapes
482 for the goals. That second file is not strictly needed for
483 replaying a proof session, it is only useful when input programs
484 are modified, to track obsolete goals. If Why3 is compiled with
485 compression support (provided by the `ocamlzip` library) then files for
486 shapes are compressed into `why3shapes.gz`.
489 * renamed `array.ArraySorted` into `array.IntArraySorted`;
490 `array.ArraySorted` is now generic, with type and order relation parameters :x:
491 * reduced amount of `use export` in the standard library: theories
492 now only export the symbols they define. Users may need to insert more
493 `use import` in their theories (typically `int.Int`, `option.Option`,
494 `list.List`, etc.). :x:
497 * fixed Coq printer (former Coq proofs may have to be updated, by removing
498 non-emptiness constraints from polymorphic type applications) :x:
499 * support for Coq8.4pl4
500 * support for Isabelle2014
501 * support for CVC4 1.4
502 * updated support for TPTP TFA syntax (used by provers Beagle and Princess)
505 * new transformation `compute_in_goal` that simplifies the goal, by
506 computation, as much as possible
508 Version 0.83, March 14, 2014
509 ----------------------------
512 * extra semicolons are now allowed at end of blocks
513 * new clause `diverges`; loops and recursive calls not annotated
514 with variants will generate a warning, unless the`"diverges`
516 * clauses `reads` and `writes` now accept an empty set
517 * modified syntax for `abstract`: `abstract <spec> <expr> end` :x:
518 * types in quantifiers are now optional
519 * formulas and Boolean terms can be used interchangeably
522 * removed inconsistency in libraries `map.MapPermut` and `array.ArrayPermut`
523 (names, definitions, and meaning of symbols `permut...` have been modified) :x:
526 * new version of prover: Coq 8.4pl3
527 * new version of prover: Gappa 1.1.0
528 * new version of prover: E prover 1.8
529 * dropped support for Coq 8.3 :x:
530 * improved support for Isabelle2013-2
531 * fixed Coq printer (former Coq proofs may have to be updated, with
532 extra qualification of imported symbols) :x:
535 * new option `--exec` to interpret WhyML programs; see doc chapter 8
536 * new option `--extract` to compile WhyML programs to OCaml;
537 see doc chapter 8 and `modules/mach/{int,array}.mlw`
538 * `why3replayer` renamed option `-obsolete-only` to `--obsolete-only`,
539 `-smoke-detector` to `--smoke-detector`, `-force` to `--force` :x:
540 * `why3replayer` now fails replaying if new goals are added :x:
543 * new type-inferring API for logical terms and program expressions
546 * fixed compilation bug with lablgtk 2.18
548 Version 0.82, December 12, 2013
549 -------------------------------
553 * polymorphic recursion permitted
557 * more examples of use in `examples/use_api/`
560 * `why3session csv` can create graph with option `--gnuplot [png|svg|pdf|qt]`
561 * shape algorithm modified (see VSTTE'13 paper) but is
562 backward compatible thanks to `shape_version` numbers in
563 `why3session.xml` files
564 * options name and default of `why3session csv` changed :x:
567 * emacs: `why.el` renamed to `why3.el` :x:
568 * GTK sourceview: `why.lang` renamed to `why3.lang` :x:
569 * `Loc.try[1-7]` functions now take location as an optional parameter :x:
572 * new prover: Metitarski (2.2, contribution by Piotr Trojanek)
573 * new prover: Metis (2.3)
574 * new prover: Beagle (0.4.1)
575 * new prover: Princess (2013-05-13)
576 * new prover: Yices2 (2.0.4)
577 * new prover: Isabelle (2013-2, contribution by Stefan Berghofer)
578 * new version of prover: Alt-Ergo 0.95.2
579 * new version of prover: CVC4 1.1 & 1.2 & 1.3
580 * new version of prover: Coq 8.4pl2
581 * new version of prover: Gappa 1.0.0
582 * new version of prover: SPASS 3.8ds
583 * new version of prover: veriT (201310)
586 * remove extra leading zeros in decimal literals when a prover don't like them
587 * PVS output: types are always non-empty
588 * PVS: fixed configuration and installation process
589 * Coq tactic: now loads dynamic plug-ins
590 * bug #15493: correct Coq output for polymorphic algebraic data types
591 * wish #15053: Remove proof time from "Goals proved by only one prover" section
592 of `why3session info --stats` :x:
593 * bug #13736: `why3ml` was slow when there were many inclusions
594 * bug #16488: decimals in TPTP syntax
595 * bug #16454: do not send arithmetic triggers anymore to alt-Ergo
596 * syntax highlighting bugs should be fixed by removing the old language
597 file `alt-ergo.lang` from Alt-ergo distribution
599 Version 0.81, March 25, 2013
600 ----------------------------
603 * experimental support for SPASS >= 3.8 (with types)
604 * support for Z3 4.3.*
605 * fixed Coq 8.4 support for theory `real.Trigonometry`
607 * support for mathematica
608 * support for MathSAT5
611 * accept type expressions in clone substitutions
614 * support for relation chains (e.g., `e1 = e2 < e3`)
615 * every exception raised in a function must be listed
616 in as `raises { ... }` clause. A postcondition may be omitted
617 and equals to `true` by default. :x:
618 * if a function definition contains a `writes { ... }`
619 clause, then every write effect must be listed. If a function
620 definition contains a `reads { ... }` clause, then every read
621 _and_ write effect must be listed. :x:
624 * syntax rules, metas, and preludes are inherited
625 through cloning. Keyword `cloned` becomes unnecessary and
626 is not accepted anymore. :x:
629 Version 0.80, October 31, 2012
630 ------------------------------
633 * modified syntax for mlw programs; a summary of changes is
634 given in Appendix A of the manual :x:
635 * support for type invariants and ghost code
638 * Ocaml interfaces for constructing program modules
641 * experimental support for induction on integers and on algebraic types
644 * new system of warnings, that includes:
645 - form `exists x, P -> Q`, likely an error
646 - unused bound logic variables in `forall`, `exists`, and `let`
649 * replayer: new option `-q`, for running quietly
650 * improved output of `why3session latex`; LaTeX macros have
652 * modifiers in `--extra-config` are now called `[prover_modifier]`
653 instead of just `[prover]` :x:
656 * support for Coq 8.4
657 * dropped support for Coq 8.2 :x:
658 * support for forthcoming PVS 6.0, including realizations
659 * support for iProver and Zenon
660 * new output scheme for Coq using type classes, to ensures
664 * theory realizations now use meta `realized_theory` instead
667 Version 0.73, July 19, 2012
668 ---------------------------
671 * co-inductive predicates
674 * new construct `abstract e { q }` that matches the structure of the goal
677 * small change in the format. Why3 is still able to
678 read session files in the old format.
681 * fixed a consistency issue with `set.Fset` theory
684 * option `-obsolete-only` for `why3replayer`
685 * new option `-e` for `why3session latex` to specify when to
686 split tables in parts
687 * no more executable `why3ml` (`why3` now handles WhyML files) :x:
691 * workaround for a bug about modulo operator in Alt-Ergo 0.94
692 * quotes in identifiers remain quotes in Coq
693 * Coq default tactic is now `intros ...` with a pattern
696 * "Clean" was cleaning too much
699 * completed support for the "Out Of Memory" prover result
701 Version 0.72, May 11, 2012
702 --------------------------
705 * Coq: new tactic `why3` to call external provers as oracles
706 * Coq: new feature: theory realizations (see manual, chapter 9)
709 * new tool `why3session` (see manual, section 6.7)
710 * new tool `why3doc` (see manual, section 6.8)
711 * support for multiple versions of the same prover (see manual, section 5.5)
714 * new features, including prover upgrade, alternate editors
717 * complete support for limiting provers' memory usage
718 * improved support on Microsoft Windows
719 * new parser for TPTP files with support for the newest
720 TFA1 format (TPTP with polymorphic types and arithmetic)
730 * new syntax `constant x:ty` and `constant x:ty = e` to
731 introduce constants, as an alternative to `function`
734 * `Dtype` declaration kind is split into two: `Dtype` for
735 declarations of a single abstract type or type alias, and
736 `Ddata` for a list of (mutually recursive) algebraic types.
737 Similarly, `Dlogic` declaration kind is split into `Dparam` for
738 a single abstract function/predicate symbol and `Dlogic` for
739 a list of (mutually recursive) defined symbols.
741 Version 0.71, October 13, 2011
742 ------------------------------
745 * a lot of new program examples in directory examples/programs
748 * `why3replayer`: new option `-latex` to output a proof session in LaTeX format
751 * significant improvement of the efficiency of the WP calculus
752 * fixed labels and source locations in WPs
755 * better coloring and source positioning including from front-ends
756 such as Krakatoa and Jessie plugin of Frama-C
759 * during reload, new method for pairing old and new subgoals
760 based on goal shapes, stored in database.
761 * prover versions are stored in database. A proof is
762 marked obsolete if it was made by a prover with another version
765 Version 0.70, July 6, 2011
766 --------------------------
769 * language and VC generator
773 - introduced with syntax `type t = {| a:int; b:bool |}`
774 actually syntactic sugar for `type t = 'mk t' (a:int) (b:bool)`
775 i.e. an algebraic with one constructor and projection functions
776 - a record expression is written `{| a = 1; b = True |}`
777 - access to field `a` with syntax `x.a`
778 - update with syntax `{| x with b = False |}`
780 * new syntax for conjunction `/\` and disjunction `\/`
781 (`and` and `or` do not exist anymore) :x:
782 * `logic` is not a keyword anymore, use `function` and `predicate` :x:
785 * new tool `why3replayer`: batch replay of a Why3 session created in IDE
788 * Alt-Ergo, Z3, CVC3, Yices: support for built-in theory of arrays
791 * interactive detection of provers disabled because incompatible
792 with session. Detection must be done with `why3config --detect-provers`
793 * tool "Replay" works
794 * tool "Reload" reloads the file from disk. No need to exit IDE anymore
795 * does not use `Threads` anymore, thanks to `Call_provers.query_call`
796 * displays explanations using labels of the form `"expl:..."`
797 * dropped dependency on `Sqlite3`
800 * functions to create an environment are now exported from `Env` :x:
801 * calls to prover can now be asynchronous.
802 `Driver.prove_task` now returns some intermediate value
803 (of type `prover_call`), which can be queried in two ways:
804 - blocking way with `Call_provers.wait_on_call`
805 - non-blocking way with `Call_provers.query_call`
807 So old code performing `prove_task t () ()` should be translated to
808 `wait_on_call (prove_task t ()) ()`. :x:
811 * IDE: bug 12244 resolved by using `Task.task_equal`
812 * Alt-Ergo: no triggers for `exists` quantifier
813 * Coq: polymorphic inductive predicates
814 * Coq: fixed bug 12934: type def with several type params
816 Version 0.64, February 16, 2011
817 -------------------------------
820 * `/\` renamed into `&&` and `\/` into `||` :x:
821 * algebraic types: must be well-founded, non-positive constructors
822 are forbidden, recursive functions and predicates must
823 structurally terminate
824 * accept lowercase names for axioms, lemmas, goals, and cases in
828 * `split-goal` does not split under disjunction anymore
831 * `why.conf` is no more looked for in the current directory; use `-C` or
833 * when `why.conf` is changed, a backup copy is made in `why.conf.bak`
834 * `why.conf` now contains a magic number; configuration must be
835 rebuilt with `why3config` if the magic number has changed
836 * `why3config`: `--autodetect-provers` renamed to `--detect-provers`,
837 `--autodetect-plugins` renamed to `--detect-plugins`;
838 new option `--detect` to perform both detections
839 * `why3config`: `--conf_file` is replaced by `-C` and `--config`
842 * TPTP: encoding by explicit polymorphism is not anymore the
843 default encoding for TPTP provers. It is now forbidden to use this
844 encoding in presence of finite types.
847 * source file names are stored in database with paths relative
848 to the database, so that databases are now easier to move from a
849 machine to another (e.g when they are stored in source control
853 * better Gappa output: support for `sqrt`, for negative constants
856 * `configure`: fixed `--enable-local`
857 * `configure`: if possible, use `ocamlfind` to find `lablgtk2` and `sqlite3`
858 * labels in terms and formulas are not printed by default
860 Version 0.63, December 21, 2010
861 -------------------------------
863 * first public release. See release notes in manual