mirror of
https://github.com/AdaCore/why3.git
synced 2026-02-12 12:34:55 -08:00
1018 lines
33 KiB
Plaintext
1018 lines
33 KiB
Plaintext
|
||
|
||
============ Long-term Roadmap (see below for roadmaps to next release) ===========
|
||
|
||
|
||
== long-term projects ==
|
||
|
||
* entiers machines
|
||
|
||
* modules, raffinement (these de Leon)
|
||
|
||
* support for higher-order
|
||
|
||
* extraction, more generally how to turn Why3 into a real programming language (these de Martin)
|
||
|
||
* rapprocher la logique et les programmes
|
||
** variant dans la logique ?
|
||
** monter les fonctions de programmes pures dans la logique ?
|
||
|
||
|
||
* internal interpreter, test of specifications, quickcheck
|
||
|
||
* BWare project, support for rewrite rules, improved support for provers,
|
||
extensions of set theory and their Coq realizations.
|
||
|
||
* LABCOM avec Adacore
|
||
** calculs non-linéaires, calculs en virgule flottante
|
||
** production de contre-exemples de preuves solides et exprimés dans le langage d’origine
|
||
** support efficace des invariants de données
|
||
** développer des composants réutilisables prouvés.
|
||
|
||
* jessie3
|
||
|
||
== Papers to write ==
|
||
|
||
* paper on the module system, its semantics, realizations, avec en
|
||
particulier la solution avec les types classes
|
||
|
||
* DONE paper on the proof management system
|
||
|
||
* DONE Encodings and transformations (Andrei+Francois FroCos 11)
|
||
|
||
* DONE Why presentation at the IVL workshop of CADE:
|
||
(http://research.microsoft.com/en-us/um/people/moskal/boogie2011/)
|
||
deadline: May 1st
|
||
|
||
* Caml code ?
|
||
|
||
* logic language for talking to provers
|
||
- DONE (Boogie 11)
|
||
- DONE FOL + poly (FroCos 11)
|
||
- alg + ind + rec ? + theories
|
||
|
||
* VACID-0
|
||
|
||
* system description (e.g. at CADE, TACAS) DONE at ESOP
|
||
|
||
* rapports recherche ?
|
||
|
||
== stages ==
|
||
|
||
* M1. preuve d'un petit compilateur, pas de pb de lieur,
|
||
eventuellement outils pour les preuves par recurrence
|
||
a la Leino, + fct size automatique
|
||
DONE (Stage M1 de Leon)
|
||
|
||
* M2. Lieur en Why3, POPLmark challenge. vers
|
||
un theorie et/ou un module réutilisable de lieurs
|
||
DONE (Stage M2 de Martin)
|
||
|
||
* (M2?) Stage Airbus, "TIP" avec Frama-C/Jessie ou WP/Why/Coq
|
||
besoin de la tactique Coq?
|
||
|
||
== new major features ==
|
||
|
||
* Logic language
|
||
- support for higher-order logic
|
||
- rename andb, orb, xorb and notb into and, or, xor and not
|
||
|
||
* more libraries (theories and modules)
|
||
|
||
* A true Jessie3 front-end
|
||
|
||
* Why3ML
|
||
- Fast WP a la Leino (DONE ?)
|
||
- assert qui ne donne pas une hypothese dans la suite -> "check"
|
||
also: in a black box
|
||
|
||
* Add more examples in the regression tests and in the proval gallery
|
||
|
||
* A literate programming tool for Why3 (JCF)
|
||
|
||
|
||
* IDE:
|
||
- edition, navigation (partially done)
|
||
- saving session: add shortcut "ctrl-S", but beware of confusion with saving the input file
|
||
- reimplement "hide proved goals" feature
|
||
+ suggested solution: replace model + filter_model by a custom model
|
||
(JC + ?)
|
||
- restore provers detection in the middle of a session.
|
||
- commentaires dans les sessions, attachés a chaque ligne
|
||
|
||
|
||
* Projets interessant Cesar ?
|
||
** Preuve de prog flottants avec Frama-C+WP+Why3+PVS
|
||
** Generation d'annotations
|
||
** porter multirounding a jessie->Why3. Completer le mode full et faire passer
|
||
interval_arith.c. Completer la galerie
|
||
** preuve sur l'assembleur
|
||
** support de Yices 2 ? interesserait Cesar
|
||
|
||
==================== Roadmap for next releases ========================
|
||
|
||
HighOrd: Coq output and OCaml extraction should produce lambda's from lambda's
|
||
and no epsilon
|
||
|
||
* terminaison
|
||
** generer une obligation de preuve de well-foundedness quand on utilise
|
||
un variant avec "with R" (une seule fois pour chaque R !)
|
||
** quand une definition logique recursive ne peut pas etre verifiee
|
||
bien-fondee statiquement, generer une obligation de preuve
|
||
(feature wish de F Besson)
|
||
|
||
* replayer
|
||
** deplacer option -bench dans une commande de why3session
|
||
|
||
* IDE
|
||
** todo: run detection immediately at start up if conf file absent or
|
||
outdated. should become doable with the new Session module
|
||
** "detect provers" menu
|
||
|
||
* Contre-exemples de Alt-Ergo
|
||
|
||
* detect editors
|
||
*** check if coqide and also emacs/proof-general is installed
|
||
|
||
* documentation des nouvelles features higher-order
|
||
|
||
* eliminate_match:
|
||
** faire un cas particulier pour "bool", le match pouvant se traduire
|
||
vers ite qui est supporté par pas mal de prouveurs
|
||
** introduire des symboles _match non polymorphes differents pour
|
||
chaque instance necessaires. plutot qu'un seul symbole _match
|
||
polymorphe.
|
||
|
||
|
||
==================== Roadmap for release 0.88 ========================
|
||
|
||
DATE : au plus tard en novembre 2016, pour que ce soit dispo pour les
|
||
etudiants MPRI (pour la feature strategies en particulier)
|
||
|
||
* integrate server feature done by Johannes
|
||
|
||
* Document src/core/trans.mli, and fill the paragraph on
|
||
transformations in the tutorial: doc/api.tex, section 4.7 "Applying
|
||
transformations"
|
||
|
||
* fix bug 18953 : (<>) not allowed as prefix form
|
||
|
||
solution possible: symbol builtin t_neq, inlining systematique au typage
|
||
(ou laisser inline_trivial le faire)
|
||
|
||
* make counter-examples feature more robust
|
||
|
||
* use the file generated by altgr-ergo to replay proofs edited by altgr-ergo
|
||
|
||
alt-ergo -replay <file>.agr
|
||
|
||
-> on pourrait le faire en considerant altgr-ergo comme un prouveur interactif
|
||
|
||
* DONE make the strategy feature public and documented. Possibly generate
|
||
default strategies dynamically at the time of why3 config --detect,
|
||
using the provers detected : for that, we can annotated the provers in
|
||
prover-detection-data.conf to tell if they should be used in the strategies,
|
||
with which priority
|
||
|
||
2 possible default strategies
|
||
|
||
. favor use of many prover before splitting or increasing timeout
|
||
|
||
. or, on the contrary, favor splitting
|
||
|
||
. or, favor timelimit increase...
|
||
|
||
* take some time to fix some bugs of the BTS: 18029 at least
|
||
|
||
|
||
==================== Roadmap for release 0.87 ========================
|
||
|
||
DATE : mars 2016
|
||
|
||
Release Notes (details in file CHANGES):
|
||
|
||
== TODO ==
|
||
|
||
* DONE finalize detect_polymorphism. Allow polymorphic tuples (supported by SMT ?)
|
||
|
||
C'est finalisé. Mais les tuples restent polymorphes.
|
||
|
||
* DONE Coq realization of bitvector theory
|
||
|
||
* DONE support for both isabelle 2014 and 2015
|
||
+ bugfix for installation
|
||
|
||
* DONE review support for division operators by SMT provers
|
||
|
||
==================== Roadmap for release 0.86 ========================
|
||
|
||
DATE : fin avril / début mai
|
||
|
||
Release Notes (details in file CHANGES):
|
||
|
||
* Support for new provers or new versions of provers
|
||
* Stdlib: new theories for sequences and bitvectors
|
||
* bug fixes
|
||
|
||
== TODO ==
|
||
|
||
* decide if GUI with tabs is convenient enough
|
||
-> onglets dans why3 ide : est-ce apprécié ? OUI
|
||
mais enlever l'onglet "Counterexamples" avant la release
|
||
|
||
* for next release: complete realization of bitvector library
|
||
|
||
== DONE ==
|
||
|
||
* clean up the support for SMTLIB bitvectors: there are 2 theories in the stdlib: thoeries/bv.why and modules/bitvectors.mlw
|
||
-> not anymore, but more cleaning can be done: no need to separate all theories in drivers for Z3 and CVC4, since the same theory can be put several times in a driver (or imported sub-drivers)
|
||
|
||
* DONE plusieurs drivers acceptés sur la ligne de commande (AP)
|
||
|
||
* solve issues with metitarski
|
||
. DONE theory PowerReal
|
||
. DONE crashes when applied on a WP (see examples/my_cosine.mlw)
|
||
|
||
* determine which is the minumum version of Ocaml to compile, and then
|
||
updated configure.in and the manual
|
||
-> vérification compilation avec OCaml 3.12 -> Claude va le faire
|
||
|
||
. 3.11.2: opam install menhir plante car ocamlfind ne compile pas
|
||
. 3.12.1: Why3 ne compile pas:
|
||
File "src/core/ident.ml", line 208, characters 2-14:
|
||
Error: Unbound value String.iteri
|
||
. 4.00.0: pas teste, et sans doute pas recommande
|
||
. 4.00.1: ca fonctionne
|
||
|
||
-> ocaml minimal = 4.00.1
|
||
|
||
DONE * sauvegarde de la configuration : à quel endroit dans l'IDE ?
|
||
-> Claude le met dans la fenetre preferences a cote du bouton "Close"
|
||
|
||
* support for veriT recent
|
||
-> DONE: version 201410
|
||
|
||
* support for Yices2 recent
|
||
-> DONE: 2.3.0, but still does not support quantifiers
|
||
|
||
|
||
==================== Roadmap for release 0.85 ========================
|
||
|
||
Release Notes:
|
||
|
||
Mainly a bug-fix release, in particular to fix two soundness bugs
|
||
|
||
See CHANGES
|
||
|
||
|
||
==================== Roadmap for release 0.84 ========================
|
||
|
||
== TODOs ==
|
||
|
||
* verifier support des nouveaux prouveurs: Coq8.4pl4, Isabelle-2014,
|
||
CVC4 1.4, yices2 (quantifiers ?) beagle ? driver TPTP TFA ? autres ?
|
||
|
||
* completer le fichier CHANGES
|
||
** nouvelle facon d'appeler les outils "why3 xxx ..." DONE
|
||
** strategies de preuve, NO for next release only
|
||
** transformation "compute_in_goal", DONE, but rewrite rules not documented
|
||
** support de nouveaux prouveurs, DONE
|
||
** nouvelle structure des fichiers de session et de shape (compatibilité), DONE
|
||
** new examples ? BOF
|
||
|
||
* ajouter dans les instructions de release ci-dessous la procedure de
|
||
fabrication du paquet opam DONE
|
||
|
||
== New Features to announce ==
|
||
|
||
Release Notes:
|
||
|
||
A major visible change in this release is the way Why3 commands are
|
||
invoked: instead of several executables why3, why3config, why3ide,
|
||
why3replay, why3session, etc., there is only one Why3 executable
|
||
called why3, and the former executables are available as commands given
|
||
as first argument, e.g. "why3 config", "why3 ide", etc.
|
||
|
||
Another quite visible change is that session files are split in two
|
||
parts, as detailed below in the detailed changes.
|
||
|
||
See CHANGES
|
||
|
||
|
||
==================== Roadmap for release 0.83 ========================
|
||
|
||
== New Features to announce ==
|
||
|
||
See CHANGES
|
||
|
||
|
||
== TODOs ==
|
||
|
||
* DONE replayer: replay should be considered failed if new goals appeared.
|
||
|
||
* DONE ? fix problems with installed scripts that are missing a proper executable right (mails Frederic Boulanger)
|
||
|
||
* Isabelle Support:
|
||
** DONE ? fix the problem with why3_jedit script missing executable bit
|
||
** DONE add a documentation: start "isabelle why3_jedit" before why3ide, use "Close C-w" to signal the end of edit to why3"
|
||
|
||
* extraction vers Caml
|
||
** DONE utiliser ZArith
|
||
|
||
==================== Roadmap for release 0.82 ========================
|
||
|
||
Scheduled for 9 december 2013
|
||
|
||
== New Features to announce ==
|
||
|
||
* input language
|
||
** lemma functions
|
||
** polymorphic recursion permitted
|
||
** types "opaques" TODO ???
|
||
|
||
|
||
* new provers:
|
||
** veriT 201310
|
||
** Metitarski 2.2 (contribution by Piotr Trojanek)
|
||
** Metis 2.3
|
||
** Beagle 0.4.1
|
||
** Princess 2013-05-13
|
||
** Yices2 2.0.4
|
||
** Isabelle 2013-2 (contribution by Stefan Berghofer)
|
||
|
||
* new versions of provers:
|
||
** Alt-Ergo 0.95.2
|
||
** CVC4 1.1 & 1.2 & 1.3
|
||
** Coq 8.4pl2
|
||
** gappa 1.0.0
|
||
** SPASS 3.8ds
|
||
|
||
* API: more examples of use in examples/use_api/
|
||
|
||
* emacs support: why.el renamed into why3.el
|
||
|
||
* why3session
|
||
** --stats: changed (detailler, temps, distinction root et subgoals, CLAUDE)
|
||
|
||
* bug fixes:
|
||
** remove extra leading zeros in decimal literals when a prover don't like them
|
||
** PVS output: types are always non-empty
|
||
** PVS: fixed configuration and installation process
|
||
** improved shape mecanism for session updates (see VSTTE'13 paper).
|
||
Compatibility with session files from version 0.81 and earlier is
|
||
assured.
|
||
** Coq tactic: now loads dynamic plug-ins
|
||
** Coq output: fixed printing of polymorphic recursive datatypes
|
||
** bug #15493: correct Coq output for polymorphic algebraic data types
|
||
** wish #15053: Remove proof time from "Goals proved by only one prover" section of why3session info --stats
|
||
** bug #13736: why3ml was slow when there are many inclusions
|
||
** bug #16488: decimals in TPTP syntax
|
||
** bug #16454: do not send arithmetic triggers anymore to alt-Ergo
|
||
** syntax highlighting bugs: should be fixed by removing the old language
|
||
file alt-ergo.lang from alt-ergo distribution
|
||
|
||
== TODOs ==
|
||
|
||
* DONE Patch de johannes pour les noms de fichier pour Isabelle
|
||
|
||
* DONE discriminate, mettre les bons arguments par defaut (ANDREI)
|
||
|
||
* DONE efficiency issues
|
||
** understand problems when large number of goals (cf D Mentré examples)
|
||
** prouveur de Martin
|
||
** tester avant la release sur
|
||
*** BWare
|
||
*** Prouveur de Martin
|
||
*** examples de Frama-C/Jessie et Krakatoa
|
||
|
||
* DONE Coq detection (et PVS) (CLAUDE, champ supplementaire compile_support = yes dans le prover-detection-data)
|
||
** refuser de detecter Coq si on n'a pas compilé avec le support de Coq
|
||
(i.e. si Coq a ete installé apres)
|
||
|
||
* Coq tactic (CLAUDE, GUILLAUME, JCF, ANDREI)
|
||
** DONE bug Prod(_,_,_) -> traiter le cas
|
||
|
||
* Smoke detector and absurd: on pourrait mettre un label particulier
|
||
sur le "false" genéré par absurd, pour indiquer que c'est
|
||
intentionel que l'on veuille prouver false. FAIT
|
||
Un tel cas pourrait etre
|
||
traité de facon speciale par le smoke detector avec option "deep",
|
||
pour eviter une fausse alarme.
|
||
PAS FAIT
|
||
|
||
* faire le menage dans les transformations d'induction : _int _ty
|
||
_ty_lex, FAIT et documenter PAS FAIT
|
||
|
||
* Documentation
|
||
- (ANDREI) make the glossary available
|
||
- (CLAUDE) complete api.tex: explain how to build/apply
|
||
transformations, write new functions on terms
|
||
- LEON: add a section "further reading"
|
||
|
||
* DONE bug fix: 16454 (ne pas envoyer des triggers arithmetiques) (GUILLAUME)
|
||
|
||
* DONE bug fix: 15652 (ghost code detection)
|
||
|
||
* support for new provers
|
||
** Alt-Ergo 0.95.2 DONE
|
||
** CVC4 1.2 DONE: pb avec les booleens
|
||
** DONE Coq 8.4pl2: probleme tactique Why3
|
||
** DONE Metitarski: improve it (CLAUDE, GUILLAUME)
|
||
|
||
|
||
* DONE simplification de (a && false) ne devrait pas etre false
|
||
|
||
|
||
==================== Roadmap for release 0.81 ========================
|
||
|
||
released on March 25th, 2013
|
||
|
||
== New Features to announce ==
|
||
|
||
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.
|
||
o [why3ide] allow several files on the command-line
|
||
o [ocaml API] incompatible changes in Set/Map/Hashtbl modules
|
||
o [ocaml API] examples in the manual extended to API for Why3ml programs
|
||
o [stdlib] fixed inconsistency in map.MapPermut theory
|
||
o [prover] fixed Coq 8.4 support for theory real.Trigonometry
|
||
o [prover] support for Gappa up to 0.16.6
|
||
o [prover] support for Z3 4.2, 4.3.*
|
||
o [prover] support for Alt-Ergo 0.95.1
|
||
o [prover] support for CVC4
|
||
o [prover] support for PVS 6
|
||
o [prover] experimental support for mathematica
|
||
o [prover] experimental support for MathSAT5
|
||
o [examples] several new examples, including solutions to the
|
||
VerifyThis@fm2012 challenges
|
||
|
||
== TODOs ==
|
||
|
||
* extraction vers Caml
|
||
- PRIORITAIRE, JCF, ANDREI
|
||
|
||
* Documentation
|
||
- (CLAUDE) complete api.tex: explain how to build theories
|
||
|
||
|
||
==================== Roadmap for release 0.80 ========================
|
||
|
||
Change in programs' input syntax deserves incrementing version to 0.80
|
||
|
||
scheduled on Oct 2012
|
||
|
||
== New Features to announce ==
|
||
|
||
Programs:
|
||
o new concrete syntax for programs
|
||
o new API for programs
|
||
o type invariants
|
||
o ghost code
|
||
|
||
Transformations:
|
||
o induction (experimental, undocumented)
|
||
o bisection (experimental, undocumented)
|
||
|
||
Provers support:
|
||
o support for Coq 8.4
|
||
o dropped support for Coq 8.2
|
||
o support for forthcoming PVS 6.0, including realizations
|
||
o support for iProver and Zenon
|
||
|
||
Misc:
|
||
o improved output of "why3session latex"
|
||
(incompatible changes in LaTeX macros)
|
||
o [replayer] new option -q for running quietly
|
||
o a warning is emitted for unused bound logic variables in "forall",
|
||
"exists" and "let"
|
||
o a warning is emitted for any occurrence of a formula of the form
|
||
"exists x, P -> Q". Formulas of this form are usually a user
|
||
mistake. If this is intended, one can write "exists x, not P \/ Q"
|
||
instead
|
||
|
||
Bug fixes:
|
||
o Coq output uses type classes to ensure Why3 types are inhabited
|
||
o fixed bug on merging config files which prevented the use
|
||
of Why3 back-end of the Frama-C/Jessie plugin when Coq is
|
||
not installed. (Bug 14672 of the Bug Tracking System)
|
||
o fixed bugs 13503 and 13375 of the Bug Tracking System
|
||
|
||
== TODOs ==
|
||
|
||
* DONE (JCF) reject global "val"s in typing environment for logic decls.
|
||
|
||
* DONE appliquer les changements de syntaxe des programmes dans la doc : aussi bien dans le tutorial que dans la BNF des manpages
|
||
|
||
|
||
* DONE Sortie PVS, avec mecanisme de realization
|
||
|
||
* DONE mettre au propre les loc des fichiers de sessions, en particulier
|
||
les noms de fichiers doivent etre relatifs au fichier de session
|
||
lui-meme. Utiliser Sysutil.relativize_filename a bon escient.
|
||
|
||
* DONE sessions: mettre la dtd sur le web et changer l'entête des sessions pour qu'elles
|
||
pointent dessus
|
||
|
||
|
||
* DONE (PRIORITAIRE) Coq output
|
||
- corriger l'incoherence, comprendre si on veut vraiment accepter
|
||
|
||
function x : 'a
|
||
(cf: en caml cela ne marche pas)
|
||
Solution proposee: utiliser des types classes, en particulier Inhabited
|
||
|
||
* DONE (PRIORITAIRE), JCF et ANDREI, clone de module
|
||
- demarche: ecrire une API avec smart constructors garantissant
|
||
le bon typage, et clone sera en premier lieu un de ces constructors
|
||
- cas d'utilisation: range d'entiers de Jessie, Flottants -> double ou single
|
||
containeurs pour Adacore et Claire
|
||
- NON PRIORITAIRE ?
|
||
+ regions : strong update
|
||
+ ghost code
|
||
+ logic symbols used in programs
|
||
|
||
|
||
==================== Roadmap for release 0.73 ========================
|
||
|
||
== New Features to announce ==
|
||
|
||
New features:
|
||
o [Why3ml] new construct "abstract e { q }"
|
||
o [Coq output] default tactic is now "intros ..." with a pattern
|
||
that matches the structure of the goal
|
||
o [why3replayer] option -obsolete-only
|
||
o co-inductive predicates
|
||
o new option -e for "why3session latex" allows to specify when to
|
||
split tables in parts
|
||
o [Sessions] a small change in the format. This hopefully improves
|
||
the association of old goals and new goals when the input is
|
||
modified. For compatibility, Why3 is still able to read session
|
||
files in the old format.
|
||
o [Provers] support for Z3 4.0
|
||
|
||
Bug fix:
|
||
o completed support for the "Out Of Memory" prover result
|
||
o [Coq output] quotes in identifiers remain quotes in Coq
|
||
o workaround for a bug about modulo operator in Alt-Ergo 0.94
|
||
o fixed a consistency issue with set.Fset theory
|
||
|
||
== TODOs ==
|
||
|
||
* DONE Ajouter un result de prouveur "outofmemory" analogue a "timeout"
|
||
|
||
* Why3ML new language constructs
|
||
** NOT NEEDED ANYMORE sandbox
|
||
** DONE abstract e { q }
|
||
** DELAYED contract e { q }
|
||
|
||
* replayer
|
||
** DONE option pour ne rejouer que si obsolete
|
||
|
||
* Documentation
|
||
- DELAYED document co-inductive predicates
|
||
- DONE (CLAUDE) revoir documentation du smoke detector
|
||
|
||
|
||
==================== Roadmap for release 0.72 ========================
|
||
|
||
== New Features to announce ==
|
||
|
||
* Coq realizations. See manual Chapter xx
|
||
* Coq tactic. See manual Chapter xx
|
||
* tool why3session, including commands latex, html, stats. See manual Section xx
|
||
* tool why3doc. See manual Section xx
|
||
* Support for several versions of the same prover, for prover upgrade.
|
||
See manual Section xx
|
||
* Improved IDE:
|
||
- left scrollbar, selection of shown or hidden provers, font enlargement
|
||
- integration of the support for prover upgrade
|
||
- support for selection of alternate editors
|
||
* Complete support for limiting provers' memory usage
|
||
* Improved support of Microsoft Windows OS
|
||
* what else ?
|
||
* see also the file CHANGES
|
||
|
||
== TODOs ==
|
||
|
||
|
||
* DONE bug CVC3 avec la division par 0, cf examples/tests-provers/cvc3.why
|
||
|
||
* DONE Document the Coq plugin and tactic
|
||
** DONE option timelimit <n>
|
||
** DONE renommer "coq-plugin" en "coq-tactic"
|
||
|
||
* DONE (JCF, ANDREI) add all examples from the VSTTE 2012 competition
|
||
|
||
* DONE (CLAUDE) Ajouter page provers sur le site web why3
|
||
** !TODO! relire
|
||
|
||
* Documentation
|
||
|
||
- DONE traiter les \todo :
|
||
|
||
DONE install.tex:179:% \todo{que devient l'option -to-known-prover de why3session ?
|
||
DONE manpages.tex:790:% \todo{A adapter en fonction de la decision sur l'upgrade de prover}
|
||
DONE manpages.tex:809:\section{The \texttt{why3doc} tool} \todo{Documenter}
|
||
|
||
|
||
- (ANDREI) complete technical.tex: section "Drivers of external
|
||
provers"
|
||
|
||
- DONE (GUILLAUME) Realisations Coq, comment fait l'utilisateur pour faire
|
||
ses realisations ne pas oublier de dire que les dependances avec le
|
||
.why ou .mlw: ne sera pas vérifié
|
||
|
||
- DONE Documenter l'utilisation de plusieurs versions du meme
|
||
prouveur comme CVC3 et Z3
|
||
|
||
- DONE (ANDREI) ajouter option a why3config pour ajouter association
|
||
ident-executable
|
||
DONE remplacer le ":" par " " (Arg.Tuple)
|
||
|
||
- DONE (CLAUDE) Documenter les popups qui peuvent apparaitre dans why3ide
|
||
quand les prouveurs ont changé. Et les mettre au point:
|
||
|
||
. DONE Lors d'un replay, le dialogue "replace proof" apparait un nombre
|
||
important de fois, il faut absolument pouvoir interrompre, ou
|
||
donner une reponse qui soit appliquée pour le reste. (le 3e
|
||
bouton "never replace..." ne semble pas jourer ce role...)
|
||
|
||
. DONE le dialogue "replace proof" est de toute facon trop large, et les
|
||
choix possibles sont confus.
|
||
|
||
- DONE (CLAUDE) meme ordre d'idee: ne pas ecraser "default editor" et
|
||
"timelimit"
|
||
en fait c'était déjà le cas
|
||
|
||
* DONE permettre d'utiliser emacs/proof general a la place de coqide depuis
|
||
why3ide
|
||
*** DONE allow to choose which one the IDE Preferences
|
||
|
||
* (CLAUDE) why3session
|
||
- DONE passe sur la documentation ecrite par Francois reecrite par Guillaume
|
||
- DONE "why3replayer -latex" remplacé par "why3session latex"
|
||
- DONE "why3html" remplacé par "why3session html"
|
||
- DONE "why3stats" (src/ide/stats.ml) remplacé par "why3session info --stats"
|
||
|
||
* (JCF) ameliorer why3doc
|
||
- DONE rajouter la production des liens
|
||
- DONE produire un index.html
|
||
|
||
* DONE provers
|
||
- DONE (CLAUDE) Ensure that we kill a prover after some time
|
||
(ressurect %T ? with a meaning like twice the value of %t ?),
|
||
because we cannot be sure they always honor their own -timeout
|
||
option.
|
||
|
||
- DONE (ANDREI) better use of Alt-Ergo's builtin theories: records,
|
||
enumeration types (Alt-Ergo >= 0.94) => at least two drivers for
|
||
Alt-Ergo, depending on its version number
|
||
|
||
* DONE fix bugs and update the BTS
|
||
- DONE (CLAUDE) Refreshing the IDE pane for prover output
|
||
|
||
* DONE (CLAUDE) IDE:
|
||
- DONE enlarge font (menu + shortcut Ctrl-+)
|
||
- DONE Ctrl-A to select all rows
|
||
- DONE Do not save if not needed
|
||
- DONE ne pas ecrire saving sessions si on ne sauve pas la session
|
||
- DONE add a scrollbar for the left panel
|
||
|
||
* DONE (FRANCOIS) move Session module and its dependencies into the
|
||
Why3 library
|
||
- but avoid duplication with session_ro
|
||
- avoid also duplication of type like prover_data record
|
||
- do not include task and transf in the data type, so that
|
||
one can reload, and redetect provers
|
||
- session + session_ro -> session_data + session_dynamic
|
||
|
||
======================= Roadmap for release 0.71 ========================
|
||
|
||
* DONE Final preparation:
|
||
** put on the web page
|
||
*** why3-0.71.tar.gz
|
||
*** manual in PDF: check that macro \todo is commented out
|
||
in ./macros.tex
|
||
*** API doc in HTML (suggestion: http://why3.lri.fr/api/)
|
||
Note: check that URL of API doc is correct in doc/api.tex line 9.
|
||
** What to put in the announcement:
|
||
*** traceability from front-ends work
|
||
(see Krakatoa and Jessie of the next release 2.30 of Why2)
|
||
*** many new examples in examples/ and examples/programs
|
||
*** significantly improved efficiency of WP calculus
|
||
*** improved method for matching old and new goals in proof sessions
|
||
*** several bug fixes
|
||
*** see also the file CHANGES
|
||
** The last commit:
|
||
*** DONE increment the magic number in config
|
||
*** add a tag to the git repository
|
||
*** The next commit : increment why3 version
|
||
|
||
* misc
|
||
** DONE fix bug with term shapes, not taking triggers into account
|
||
** DONE remove prover coq-realize
|
||
|
||
* prover support
|
||
** DONE test/debug TPTP output, make Vampire work
|
||
|
||
* IDE:
|
||
** saving session
|
||
* DONE add a "cancel" choice in the "ask" window
|
||
|
||
* DONE replayer: don't replay a goal that has changed, just display as an
|
||
unsuccessful replay
|
||
|
||
* DONE reload: improve matching of new and old goals by use a kind a distance
|
||
between some notion of shape of a goal
|
||
|
||
=== Roadmap for third release 0.70, july 2011 ========================
|
||
|
||
* Final preparation: put on the web page
|
||
** why3-0.70.tar.gz
|
||
** DONE manual in PDF: check that macro \todo can be commented out
|
||
from ./macros.tex
|
||
** API doc in HTML (suggestion: http://why3.lri.fr/api/)
|
||
Note: check that URL of API doc is correct in doc/api.tex line 9.
|
||
** What to put in the annoucement
|
||
- WhyML VC generator to prove programs
|
||
- new tool why3replayer
|
||
- incompatible changes in syntax: function, predicate, and, or
|
||
- session database in XML format instead of sqlite3
|
||
- threads problem in IDE solved (by not using threads anymore)
|
||
- IDE: not necessary to exit to change the input file: just use "reload"
|
||
|
||
* The last commit (A):
|
||
** DONE increment the magic number in config
|
||
** add a tag to the git repository
|
||
** The next commit : increment de why3 version
|
||
|
||
* DONE Distribution of examples: we should distribute those who have an xml file
|
||
under git, and distribute the XML and Coq proofs (JC)
|
||
|
||
* DONE document "Make obsolete" (A+C)
|
||
|
||
* DONE update IDE section of starting.tex (C)
|
||
|
||
* DONE update doc for why3replayer
|
||
|
||
* DONE fix bug 12934 : Coq syntax
|
||
https://gforge.inria.fr/tracker/index.php?func=detail&aid=12934&group_id=2990&atid=10293
|
||
|
||
* DONE document new IDE features (C)
|
||
|
||
* DONE doc: citer l'article Boogie 2011 quelque part
|
||
|
||
* DONE deplacer le bouton "Cancel" dans le menu "tools",
|
||
le renommer en "make obsolete"
|
||
|
||
* DONE Check if remark in doc/api.tex line 80 is still valid (A)
|
||
|
||
* DONE put an up-to-date use_api.ml in the manual (C)
|
||
|
||
* DONE enlever les caracteres de tab des sources
|
||
et les caracteres latin1 (A)
|
||
|
||
* DONE faire tourner headache pour refabriquer les headers (A)
|
||
** dans gappa.ml : ajouter Guillaume en dessous de l'entete
|
||
|
||
* DONE Rendre optionnel la question "would you like to save the session ?"
|
||
(C) -> 3-state options (Yes/No/ask) dans la config
|
||
+ DONE dans le menu "file" : "save session" sans raccourci clavier
|
||
|
||
* DONE desactiver "Save" (et editable=false dans la fenetre)
|
||
|
||
* DONE mettre "Quit" en dernier (C)
|
||
|
||
* DONE checkout frais, compilation (local ou non) et make bench chaque nuit sur moloch
|
||
(?)
|
||
|
||
* DONE IDE: reload
|
||
(claude)
|
||
|
||
* DONE BD : se passer de sqlite3
|
||
(Claude)
|
||
Solution: un unique fichier XML, qui est ecrit mais pas
|
||
tres souvent (pas plus d'une fois par seconde)
|
||
ne pas oublier neanmoins de mettre une action dans Timeout
|
||
qui enregistre au bout d'un moment
|
||
pb: n'est pas independant de l'IDE, peut-on faire un module
|
||
independant de l'IDE ? qui serait utilisé par why3bench ?
|
||
|
||
* DONE IDE: avoir des transformations non codees en dur
|
||
(Claude d'abord)
|
||
|
||
* DONE Bug des md5
|
||
(Claude. pas reproductible ? Pb de duplication des buts ?)
|
||
|
||
* DONE IDE: no more threads
|
||
|
||
* DONE proof replay
|
||
** DONE IDE: replay all obsolete but previously successful proofs
|
||
** DONE in why3replay in whybench
|
||
** DONE add replay of existing proofs in "make bench" to detect regression
|
||
** DONE add automatic recompilation, install and bench every night on moloch
|
||
|
||
* DONE IDE: implement "inline" (use transformation inline_goal)
|
||
** problem 1: detect that transformation did nothing
|
||
** DONE problem 2: reimport from db does apply inline correctly
|
||
|
||
* DONE IDE: debug "remove" et "clean" qui provoquent des segfaults !!
|
||
|
||
* IDE: ajouter "invalid" comme cas de resultats de preuve
|
||
(utiliser call_provers.proof_result dans gmain)
|
||
DONE
|
||
|
||
|
||
=== Roadmap for second release 0.64 ========================================
|
||
|
||
* fix local installation
|
||
** fix local executables names (DONE)
|
||
|
||
* fix problems with .why.conf (DONE)
|
||
** if we distribute the current state, users who already have a ~/.why.conf
|
||
will get a error message because of missing loadpath to modules
|
||
Done? - the magic number will force to not use the old ~/.why.conf of
|
||
the user
|
||
** generally speaking, we should rethink the design of that .why.conf: avoid
|
||
absolute paths,
|
||
Partially done - libdir, datadir, loadpath, ... are not written in
|
||
why.conf if they correspond to the default value.
|
||
|
||
|
||
* IDE, file names in DB: use only file names relative to the db file
|
||
DONE
|
||
|
||
=== Roadmap for December 2010 ================================================
|
||
|
||
== Documentation ==
|
||
|
||
1 Introduction (done: suppressed)
|
||
2 getting started (Claude: done, to be read by others)
|
||
3 Syntax, tutorial (done: Andrei)
|
||
4 tutorial for API:
|
||
** build a task (Claude: done, to be read by others)
|
||
** call a prover (Claude: done, to be read by others)
|
||
** apply a transformation (a completer plus tard)
|
||
** develop a new transformation (a completer plus tard)
|
||
5 syntax reference (a completer plus tard par typage et semantique)
|
||
6 Standard lib of theories:
|
||
(Claude: done, although quite sparse, to be read by others)
|
||
7 Manpages
|
||
7.1 Compilation, Installation (done)
|
||
7.2 external provers (done)
|
||
7.3 why3config (done)
|
||
7.4 why3 (done)
|
||
7.5 whyml (done)
|
||
7.6 IDE (done)
|
||
7.7 whybench (done, to be read by others)
|
||
7.8 why.conf (done)
|
||
7.9 drivers (to be done later)
|
||
7.10 transformations (done)
|
||
8 API: Andrei + Francois
|
||
(should we really add that in the doc ?)
|
||
** on remplace par la version HTML a mettre sur la forge INRIA (Francois)
|
||
** TODO: mettre un titre au HTML engendré
|
||
|
||
== IDE ==
|
||
|
||
(Claude)
|
||
|
||
* database, session save and restore (done)
|
||
* Coq output (done)
|
||
* Gappa output (done)
|
||
* debug hide goals (TODO)
|
||
* add "context" options (partially done)
|
||
** semantics not clear, should be clarified, documented and
|
||
implemented accordingly
|
||
* add transf "inline goal" (to be done later)
|
||
* add button "remove"
|
||
** removing goals: done
|
||
** removing transformation: done, but subgoals stay in db (not critical)
|
||
* add button "replay" (to be done later)
|
||
** semantics: replay obsolete proofs
|
||
|
||
== Misc ==
|
||
|
||
* README (done)
|
||
* INSTALL (done)
|
||
* LICENSE (done)
|
||
* OCAML-LICENSE (done)
|
||
|
||
* debuguer cpulimit pour gappa (pb de return code)
|
||
|
||
* option --version a tous les executables (done, except IDE: bug 11604)
|
||
** + affichage dans l'IDE (done)
|
||
* Builtin arrays in provers (done)
|
||
* make install (done)
|
||
* make distrib (done)
|
||
* "make -j" (done)
|
||
* META for ocamlfind (done)
|
||
* headers (done)
|
||
|
||
== Mails announcement ==
|
||
|
||
----------------------- Why-discuss list ---------------------------
|
||
|
||
We are happy to announce the first public release of Why3, also known
|
||
as the Why platform next generation. It is a new project, independent
|
||
from Why versions 2.xx.
|
||
|
||
The home web page of Why3 is http://why3.gforge.inria.fr, where you
|
||
can find the source distribution and the manual. See the manual for
|
||
installation instructions and contact information.
|
||
|
||
The main new features with respect to Why 2.xx are the following.
|
||
|
||
1) Completely redesigned input syntax for logic declarations
|
||
|
||
* new syntax for terms and formulas
|
||
* enumerated and algebraic data types, pattern matching
|
||
* recursive definitions of logic functions and predicates,
|
||
with termination checking
|
||
* inductive definitions of predicates
|
||
* declarations are structured in components called "theories",
|
||
which can be reused and instantiated
|
||
|
||
2) More generic handling of goals and lemmas to prove
|
||
|
||
* concept of proof task
|
||
* generic concept of task transformation
|
||
* generic approach for communicating with external provers
|
||
|
||
3) Source code organized as a library with a documented API,
|
||
to allow access to Why3 features programmatically.
|
||
|
||
4) GUI with new features w.r.t. the former GWhy
|
||
|
||
* session save and restore
|
||
* prover calls in parallel
|
||
* splitting, and more generally applying task transformations, on demand
|
||
* ability to edit proofs for interactive provers (Coq only for the moment)
|
||
on any subtask
|
||
|
||
5) Extensible architecture via plugins
|
||
|
||
* users can define new transformations
|
||
* users can add connections to additional provers
|
||
|
||
|
||
Beware that some Why features are not yet available in Why3:
|
||
|
||
* There is a VC generator distributed in Why3 in an experimental stage
|
||
and intentionally undocumented in the current documentation (the input
|
||
syntax for programs may change a lot in the future).
|
||
|
||
* There is no front-end for other languages like C or Java. However,
|
||
the last release Why 2.28 is able to use Why3 as a back-end
|
||
|
||
Notice that Why3 is expected to replace Why2 in the future. As such,
|
||
it is the project where improvements and new features will be
|
||
implemented. As this is the first public release of Why3, it is likely
|
||
that missing features, and possibly bugs, will raise soon. Please
|
||
report those in the bug tracker, we will do our best to fix them and
|
||
provide new releases in a short time.
|
||
|
||
|
||
|
||
|
||
|
||
--------------------- Frama-C list ----------------------------
|
||
|
||
|
||
The first release of Why3, also known as the Why platform next
|
||
generation, is publicly available. Why3 is a new project, independent
|
||
from Why. The detailed announcement is attached below.
|
||
|
||
The Jessie plugin of the Why release 2.28 has the ability to use Why3
|
||
as back-end. You must install both Why 2.28 and Why3 for this to work.
|
||
|
||
Using the Why3 GUI on a C file is done as follows
|
||
frama-c -jessie -jessie-atp why3ide <file>.c
|
||
(You can also run it in batch mode using
|
||
frama-c -jessie -jessie-atp why3 <file>.c
|
||
and process the generated Why3 file "<file>.jessie/why/<file>_why3.why"
|
||
with Why3 batch tools).
|
||
|
||
The main new features of interest in the GUI are
|
||
|
||
* new provers available
|
||
* calling provers in parallel
|
||
* splitting on demand
|
||
* ability to call Coq on a given VC to provide a proof script. Incidentally,
|
||
this feature can be used to analyse the VC to understand why it is
|
||
not proved automatically.
|
||
* proof session saved and restored at startup
|
||
|
||
Any question, remark or bug report concerning only Why3 should be done
|
||
using the Why3 public discussion list and bug tracker.
|