* marks an incompatible change version 0.82, December 9, 2013 ============================ o lemma functions o polymorphic recursion permitted o opaque types o new prover: Metitarski (2.2, contribution by Piotr Trojanek) o new prover: Metis (2.3) o new prover: Beagle (0.4.1) o new prover: Princess (2013-05-13) o new prover: Yices2 (2.0.4) o new prover: Isabelle (2013-2, contribution by Stefan Berghofer) o new version of prover: Alt-Ergo 0.95.2 o new version of prover: CVC4 1.1 & 1.2 & 1.3 o new version of prover: Coq 8.4pl2 o new version of prover: gappa 1.0.0 o new version of prover: SPASS 3.8ds o new version of prover: veriT (201310) o API: more examples of use in examples/use_api/ o why3session new option --hist for histograms o shape algorithm modified (see VSTTE'13 paper) but is backward compatible thanks to shape_version numbers in why3session.xml files * [emacs] why.el renamed to why3.el * [GTK sourceview] why.lang renamed to why3.lang * Loc.try[1-7] functions now take location as an optional parameter * [fix] remove extra leading zeros in decimal literals when a prover don't like them * [fix] PVS output: types are always non-empty * [fix] PVS: fixed configuration and installation process * [fix] Coq tactic: now loads dynamic plug-ins * [fix] bug #15493: correct Coq output for polymorphic algebraic data types * [fix] wish #15053: Remove proof time from "Goals proved by only one prover" section of why3session info --stats * [fix] bug #13736: why3ml was slow when there are many inclusions * [fix] bug #16488: decimals in TPTP syntax * [fix] bug #16454: do not send arithmetic triggers anymore to alt-Ergo * [fix] syntax highlighting bugs: should be fixed by removing the old language file alt-ergo.lang from alt-ergo distribution version 0.81, March 25, 2013 ============================ o [prover] experimental support for SPASS >= 3.8 (with types) o [prover] support for Z3 4.3.* o [prover] fixed Coq 8.4 support for theory real.Trigonometry o [prover] support for CVC4 o [prover] support for mathematica o [prover] support for MathSAT5 o [logic] accept type expressions in clone substitutions o [whyml] support for relation chains (e.g., "e1 = e2 < e3") * [whyml] every exception raised in a function must be listed in as "raises { ... }" clause. A postcondition may be omitted and equals to "true" by default. * [whyml] if a function definition contains a "writes { ... }" clause, then every write effect must be listed. If a function definition contains a "reads { ... }" clause, then every read _and_ write effect must be listed. * [drivers] syntax rules, metas, and preludes are inherited through cloning. Keyword "cloned" becomes unnecessary and is not accepted anymore. version 0.80, Oct 31, 2012 ========================== * [whyml] modified syntax for mlw programs; a summary of changes is given in Appendix A of the manual o [whyml] support for type invariants and ghost code o [api] Ocaml interfaces for constructing program modules o [transformation] experimental support for induction on integers and on algebraic types o [interface] new system of warnings, that includes: - form "exists x, P -> Q", likely an error - unused bound logic variables in "forall", "exists" and "let" o [replayer] new option -q, for running quietly * [session] improved output of "why3session latex"; LaTeX macros have more arguments o [prover] support for Coq 8.4 * [prover] dropped support for Coq 8.2 o [prover] support for forthcoming PVS 6.0, including realizations o [prover] support for iProver and Zenon o [prover] new output scheme for Coq using type classes, to ensures types are inhabited * [driver] theory realizations now use meta "realized_theory" instead of "realized" * [config] modifiers in --extra-config are now called [prover_modifier] instead of just [prover] version 0.73, Jul 19, 2012 ========================== o [IDE] "Clean" was cleaning too much * no more executable why3ml (why3 now handles WhyML files) o [Provers] support for Z3 4.0 o [Sessions] a small change in the format. Why3 is still able to read session files in the old format. o completed support for the "Out Of Memory" prover result o [Why3ml] new construct "abstract e { q }" o [Coq output] quotes in identifiers remain quotes in Coq o [Coq output] default tactic is now "intros ..." with a pattern that matches the structure of the goal o [why3replayer] option -obsolete-only o workaround for a bug about modulo operator in Alt-Ergo 0.94 o fixed a consistency issue with set.Fset theory o co-inductive predicates o new option -e for "why3session latex" allows to specify when to split tables in parts version 0.72, May 11, 2012 ========================== o [Coq] new tactic "why3" to call external provers as oracles o [Coq output] new feature: theory realizations (see manual, chapter 9) o new tool why3session (see manual, section 6.7) o new tool why3doc (see manual, section 6.8) o support for multiple versions of the same prover (see manual, section 5.5) o [why3ide] new features, including prover upgrade, alternate editors o complete support for limiting provers' memory usage o improved support on Microsoft Windows o fix BTS 14221 o fix BTS 14190 o fix BTS 12457 o fix BTS 13854 o fix BTS 13849 o [syntax] new syntax "constant x:ty" and "constant x:ty = e" to introduce constants, as an alternative to "function" o [TPTP] new parser for TPTP files with support for the newest TFA1 format (TPTP with polymorphic types and arithmetic) o [API] Dtype declaration kind is split into two: Dtype for declarations of a single abstract type or type alias, and Ddata for a list of (mutually recursive) algebraic types. Similarly, Dlogic declaration kind is split into Dparam for a single abstract function/predicate symbol and Dlogic for a list of (mutually recursive) defined symbols. version 0.71, October 13, 2011 ============================== o [examples] a lot of new program examples in directory examples/programs o [Why3replayer] new option -latex to output a proof session in LaTeX format o [WhyML] significant improvement of the efficiency of the WP calculus o [WhyIDE] better coloring and source positioning including from front-ends such as Krakatoa and Jessie plugin of Frama-C o [WhyML] fixed labels and source locations in WPs o [Session] during reload, new method for pairing old and new subgoals based on goal shapes, stored in database. o [Session] prover versions are stored in database. A proof is marked obsolete if it was made by a prover with another version than the current. version 0.70, July 6, 2011 ========================== New features o [WhyML] language and VC generator o [syntax] record types - introduced with syntax "type t = {| a:int; b:bool |}" actually syntactic sugar for "type t = `mk t' (a:int) (b:bool)" i.e. an algebraic with one constructor and projection functions - a record expression is written {| a = 1; b = True |} - access to field a with syntax x.a - update with syntax {| x with b = False |} - record patterns o new tool why3replayer: batch replay of a Why3 session created in IDE o [Alt-Ergo/Z3/CVC3/Yices output] support for built-in theory of arrays Fixes and other changes * [syntax] new syntax for conjunction (/\) and disjunction (\/) ("and" and "or" do not exist anymore) * [syntax] "logic" is not a keyword anymore, use "function" and "predicate" o [IDE] interactive detection of provers disabled because incompatible with session. Detection must be done with why3config --detect-provers o [IDE] bug 12244 resolved by using Task.task_equal o [IDE] tool "Replay" works o [IDE] tool "Reload" reloads the file from disk. No need to exit IDE anymore o [IDE] does not use Threads anymore, thanks to Call_provers.query_call o [IDE] displays explanations using labels of the form "expl:..." o [IDE] dropped dependence on Sqlite3 o [Alt-Ergo output] bugfix: no triggers for "exists" quantifier o [Coq output] bugfix: polymorphic inductive predicates o [Coq output] fixed bug 12934: type def with several type params * [API] functions to create an environment are now exported from Env * [API] calls to prover can now be asynchronous Driver.prove_task now returns some intermediate value (of type prover_call), which can be queried in two ways: - blocking way with Call_provers.wait_on_call - non-blocking way with Call_provers.query_call So old code performing "prove_task t () ()" should be translated to "wait_on_call (prove_task t ()) ()". version 0.64, Feb 16, 2011 ========================== o configure: if possible, use ocamlfind to find lablgtk2 and sqlite3 o algebraic types: must be well-founded, non-positive constructors are forbidden, recursive functions and predicates must structurally terminate * syntax: /\ renamed into && and \/ into || o accept lowercase names for axioms, lemmas, goals, and cases in inductive predicates o labels in terms and formulas are not printed by default. o transformation split-goal does not split under disjunction anymore o fixed --enable-local o why.conf is no more looked for in the current directory; use -C or WHY3CONFIG instead o why.conf: when changed, a backup up copy is made in why.conf.bak o why.conf now contains a magic number; configuration must be rebuilt with why3config if the magic number has changed o why3config: --autodetect-provers renamed to --detect-provers --autodetect-plugins renamed to --detect-plugins new option --detect to perform both detections o why3config: --conf_file is replaced by -C and --config o TPTP: encoding by explicit polymorphism is not anymore the default encoding for TPTP provers. It is now forbidden to use this encoding in presence of finite types. o IDE: source file names are stored in database with paths relative to the database, so that databases are now easier to move from a machine to another (e.g when they are stored in source control repositories) o better Gappa output: support for sqrt, for negative constants version 0.63, Dec 21, 2010 ========================== o first public release. See release notes in manual # Emacs parameters Local Variables: mode: text End: