3 ============ Long-term Roadmap (see below for roadmaps to next release) ===========
6 == long-term projects ==
10 * modules, raffinement (these de Leon)
12 * support for higher-order
14 * extraction, more generally how to turn Why3 into a real programming language (these de Martin)
16 * rapprocher la logique et les programmes
17 ** variant dans la logique ?
18 ** monter les fonctions de programmes pures dans la logique ?
21 * internal interpreter, test of specifications, quickcheck
23 * BWare project, support for rewrite rules, improved support for provers,
24 extensions of set theory and their Coq realizations.
27 ** calculs non-linéaires, calculs en virgule flottante
28 ** production de contre-exemples de preuves solides et exprimés dans le langage d’origine
29 ** support efficace des invariants de données
30 ** développer des composants réutilisables prouvés.
36 * paper on the module system, its semantics, realizations, avec en
37 particulier la solution avec les types classes
39 * DONE paper on the proof management system
41 * DONE Encodings and transformations (Andrei+Francois FroCos 11)
43 * DONE Why presentation at the IVL workshop of CADE:
44 (http://research.microsoft.com/en-us/um/people/moskal/boogie2011/)
49 * logic language for talking to provers
51 - DONE FOL + poly (FroCos 11)
52 - alg + ind + rec ? + theories
56 * system description (e.g. at CADE, TACAS) DONE at ESOP
58 * rapports recherche ?
62 * M1. preuve d'un petit compilateur, pas de pb de lieur,
63 eventuellement outils pour les preuves par recurrence
64 a la Leino, + fct size automatique
65 DONE (Stage M1 de Leon)
67 * M2. Lieur en Why3, POPLmark challenge. vers
68 un theorie et/ou un module réutilisable de lieurs
69 DONE (Stage M2 de Martin)
71 * (M2?) Stage Airbus, "TIP" avec Frama-C/Jessie ou WP/Why/Coq
72 besoin de la tactique Coq?
74 == new major features ==
77 - support for higher-order logic
78 - rename andb, orb, xorb and notb into and, or, xor and not
80 * more libraries (theories and modules)
82 * A true Jessie3 front-end
85 - Fast WP a la Leino (DONE ?)
86 - assert qui ne donne pas une hypothese dans la suite -> "check"
89 * Add more examples in the regression tests and in the proval gallery
91 * A literate programming tool for Why3 (JCF)
95 - edition, navigation (partially done)
96 - saving session: add shortcut "ctrl-S", but beware of confusion with saving the input file
97 - reimplement "hide proved goals" feature
98 + suggested solution: replace model + filter_model by a custom model
100 - restore provers detection in the middle of a session.
101 - commentaires dans les sessions, attachés a chaque ligne
104 * Projets interessant Cesar ?
105 ** Preuve de prog flottants avec Frama-C+WP+Why3+PVS
106 ** Generation d'annotations
107 ** porter multirounding a jessie->Why3. Completer le mode full et faire passer
108 interval_arith.c. Completer la galerie
109 ** preuve sur l'assembleur
110 ** support de Yices 2 ? interesserait Cesar
112 ==================== Roadmap for next releases ========================
114 HighOrd: Coq output and OCaml extraction should produce lambda's from lambda's
118 ** generer une obligation de preuve de well-foundedness quand on utilise
119 un variant avec "with R" (une seule fois pour chaque R !)
120 ** quand une definition logique recursive ne peut pas etre verifiee
121 bien-fondee statiquement, generer une obligation de preuve
122 (feature wish de F Besson)
125 ** deplacer option -bench dans une commande de why3session
128 ** todo: run detection immediately at start up if conf file absent or
129 outdated. should become doable with the new Session module
130 ** "detect provers" menu
132 * Contre-exemples de Alt-Ergo
135 *** check if coqide and also emacs/proof-general is installed
137 * documentation des nouvelles features higher-order
140 ** faire un cas particulier pour "bool", le match pouvant se traduire
141 vers ite qui est supporté par pas mal de prouveurs
142 ** introduire des symboles _match non polymorphes differents pour
143 chaque instance necessaires. plutot qu'un seul symbole _match
147 ==================== Roadmap for release 0.88 ========================
149 DATE : au plus tard en novembre 2016, pour que ce soit dispo pour les
150 etudiants MPRI (pour la feature strategies en particulier)
152 * integrate server feature done by Johannes
154 * Document src/core/trans.mli, and fill the paragraph on
155 transformations in the tutorial: doc/api.tex, section 4.7 "Applying
158 * fix bug 18953 : (<>) not allowed as prefix form
160 solution possible: symbol builtin t_neq, inlining systematique au typage
161 (ou laisser inline_trivial le faire)
163 * make counter-examples feature more robust
165 * use the file generated by altgr-ergo to replay proofs edited by altgr-ergo
167 alt-ergo -replay <file>.agr
169 -> on pourrait le faire en considerant altgr-ergo comme un prouveur interactif
171 * DONE make the strategy feature public and documented. Possibly generate
172 default strategies dynamically at the time of why3 config --detect,
173 using the provers detected : for that, we can annotated the provers in
174 prover-detection-data.conf to tell if they should be used in the strategies,
177 2 possible default strategies
179 . favor use of many prover before splitting or increasing timeout
181 . or, on the contrary, favor splitting
183 . or, favor timelimit increase...
185 * take some time to fix some bugs of the BTS: 18029 at least
188 ==================== Roadmap for release 0.87 ========================
192 Release Notes (details in file CHANGES):
196 * DONE finalize detect_polymorphism. Allow polymorphic tuples (supported by SMT ?)
198 C'est finalisé. Mais les tuples restent polymorphes.
200 * DONE Coq realization of bitvector theory
202 * DONE support for both isabelle 2014 and 2015
203 + bugfix for installation
205 * DONE review support for division operators by SMT provers
207 ==================== Roadmap for release 0.86 ========================
209 DATE : fin avril / début mai
211 Release Notes (details in file CHANGES):
213 * Support for new provers or new versions of provers
214 * Stdlib: new theories for sequences and bitvectors
219 * decide if GUI with tabs is convenient enough
220 -> onglets dans why3 ide : est-ce apprécié ? OUI
221 mais enlever l'onglet "Counterexamples" avant la release
223 * for next release: complete realization of bitvector library
227 * clean up the support for SMTLIB bitvectors: there are 2 theories in the stdlib: thoeries/bv.why and modules/bitvectors.mlw
228 -> 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)
230 * DONE plusieurs drivers acceptés sur la ligne de commande (AP)
232 * solve issues with metitarski
233 . DONE theory PowerReal
234 . DONE crashes when applied on a WP (see examples/my_cosine.mlw)
236 * determine which is the minumum version of Ocaml to compile, and then
237 updated configure.in and the manual
238 -> vérification compilation avec OCaml 3.12 -> Claude va le faire
240 . 3.11.2: opam install menhir plante car ocamlfind ne compile pas
241 . 3.12.1: Why3 ne compile pas:
242 File "src/core/ident.ml", line 208, characters 2-14:
243 Error: Unbound value String.iteri
244 . 4.00.0: pas teste, et sans doute pas recommande
245 . 4.00.1: ca fonctionne
247 -> ocaml minimal = 4.00.1
249 DONE * sauvegarde de la configuration : à quel endroit dans l'IDE ?
250 -> Claude le met dans la fenetre preferences a cote du bouton "Close"
252 * support for veriT recent
253 -> DONE: version 201410
255 * support for Yices2 recent
256 -> DONE: 2.3.0, but still does not support quantifiers
259 ==================== Roadmap for release 0.85 ========================
263 Mainly a bug-fix release, in particular to fix two soundness bugs
268 ==================== Roadmap for release 0.84 ========================
272 * verifier support des nouveaux prouveurs: Coq8.4pl4, Isabelle-2014,
273 CVC4 1.4, yices2 (quantifiers ?) beagle ? driver TPTP TFA ? autres ?
275 * completer le fichier CHANGES
276 ** nouvelle facon d'appeler les outils "why3 xxx ..." DONE
277 ** strategies de preuve, NO for next release only
278 ** transformation "compute_in_goal", DONE, but rewrite rules not documented
279 ** support de nouveaux prouveurs, DONE
280 ** nouvelle structure des fichiers de session et de shape (compatibilité), DONE
281 ** new examples ? BOF
283 * ajouter dans les instructions de release ci-dessous la procedure de
284 fabrication du paquet opam DONE
286 == New Features to announce ==
290 A major visible change in this release is the way Why3 commands are
291 invoked: instead of several executables why3, why3config, why3ide,
292 why3replay, why3session, etc., there is only one Why3 executable
293 called why3, and the former executables are available as commands given
294 as first argument, e.g. "why3 config", "why3 ide", etc.
296 Another quite visible change is that session files are split in two
297 parts, as detailed below in the detailed changes.
302 ==================== Roadmap for release 0.83 ========================
304 == New Features to announce ==
311 * DONE replayer: replay should be considered failed if new goals appeared.
313 * DONE ? fix problems with installed scripts that are missing a proper executable right (mails Frederic Boulanger)
316 ** DONE ? fix the problem with why3_jedit script missing executable bit
317 ** DONE add a documentation: start "isabelle why3_jedit" before why3ide, use "Close C-w" to signal the end of edit to why3"
319 * extraction vers Caml
320 ** DONE utiliser ZArith
322 ==================== Roadmap for release 0.82 ========================
324 Scheduled for 9 december 2013
326 == New Features to announce ==
330 ** polymorphic recursion permitted
331 ** types "opaques" TODO ???
336 ** Metitarski 2.2 (contribution by Piotr Trojanek)
339 ** Princess 2013-05-13
341 ** Isabelle 2013-2 (contribution by Stefan Berghofer)
343 * new versions of provers:
345 ** CVC4 1.1 & 1.2 & 1.3
350 * API: more examples of use in examples/use_api/
352 * emacs support: why.el renamed into why3.el
355 ** --stats: changed (detailler, temps, distinction root et subgoals, CLAUDE)
358 ** remove extra leading zeros in decimal literals when a prover don't like them
359 ** PVS output: types are always non-empty
360 ** PVS: fixed configuration and installation process
361 ** improved shape mecanism for session updates (see VSTTE'13 paper).
362 Compatibility with session files from version 0.81 and earlier is
364 ** Coq tactic: now loads dynamic plug-ins
365 ** Coq output: fixed printing of polymorphic recursive datatypes
366 ** bug #15493: correct Coq output for polymorphic algebraic data types
367 ** wish #15053: Remove proof time from "Goals proved by only one prover" section of why3session info --stats
368 ** bug #13736: why3ml was slow when there are many inclusions
369 ** bug #16488: decimals in TPTP syntax
370 ** bug #16454: do not send arithmetic triggers anymore to alt-Ergo
371 ** syntax highlighting bugs: should be fixed by removing the old language
372 file alt-ergo.lang from alt-ergo distribution
376 * DONE Patch de johannes pour les noms de fichier pour Isabelle
378 * DONE discriminate, mettre les bons arguments par defaut (ANDREI)
380 * DONE efficiency issues
381 ** understand problems when large number of goals (cf D Mentré examples)
382 ** prouveur de Martin
383 ** tester avant la release sur
385 *** Prouveur de Martin
386 *** examples de Frama-C/Jessie et Krakatoa
388 * DONE Coq detection (et PVS) (CLAUDE, champ supplementaire compile_support = yes dans le prover-detection-data)
389 ** refuser de detecter Coq si on n'a pas compilé avec le support de Coq
390 (i.e. si Coq a ete installé apres)
392 * Coq tactic (CLAUDE, GUILLAUME, JCF, ANDREI)
393 ** DONE bug Prod(_,_,_) -> traiter le cas
395 * Smoke detector and absurd: on pourrait mettre un label particulier
396 sur le "false" genéré par absurd, pour indiquer que c'est
397 intentionel que l'on veuille prouver false. FAIT
398 Un tel cas pourrait etre
399 traité de facon speciale par le smoke detector avec option "deep",
400 pour eviter une fausse alarme.
403 * faire le menage dans les transformations d'induction : _int _ty
404 _ty_lex, FAIT et documenter PAS FAIT
407 - (ANDREI) make the glossary available
408 - (CLAUDE) complete api.tex: explain how to build/apply
409 transformations, write new functions on terms
410 - LEON: add a section "further reading"
412 * DONE bug fix: 16454 (ne pas envoyer des triggers arithmetiques) (GUILLAUME)
414 * DONE bug fix: 15652 (ghost code detection)
416 * support for new provers
417 ** Alt-Ergo 0.95.2 DONE
418 ** CVC4 1.2 DONE: pb avec les booleens
419 ** DONE Coq 8.4pl2: probleme tactique Why3
420 ** DONE Metitarski: improve it (CLAUDE, GUILLAUME)
423 * DONE simplification de (a && false) ne devrait pas etre false
426 ==================== Roadmap for release 0.81 ========================
428 released on March 25th, 2013
430 == New Features to announce ==
432 o [logic] accept type expressions in clone substitutions
433 o [whyml] support for relation chains (e.g., "e1 = e2 < e3")
434 * [whyml] every exception raised in a function must be listed
435 in as "raises { ... }" clause. A postcondition may be omitted
436 and equals to "true" by default.
437 * [whyml] if a function definition contains a "writes { ... }"
438 clause, then every write effect must be listed. If a function
439 definition contains a "reads { ... }" clause, then every read
440 _and_ write effect must be listed.
441 * [drivers] syntax rules, metas, and preludes are inherited
442 through cloning. Keyword "cloned" becomes unnecessary and
443 is not accepted anymore.
444 o [why3ide] allow several files on the command-line
445 o [ocaml API] incompatible changes in Set/Map/Hashtbl modules
446 o [ocaml API] examples in the manual extended to API for Why3ml programs
447 o [stdlib] fixed inconsistency in map.MapPermut theory
448 o [prover] fixed Coq 8.4 support for theory real.Trigonometry
449 o [prover] support for Gappa up to 0.16.6
450 o [prover] support for Z3 4.2, 4.3.*
451 o [prover] support for Alt-Ergo 0.95.1
452 o [prover] support for CVC4
453 o [prover] support for PVS 6
454 o [prover] experimental support for mathematica
455 o [prover] experimental support for MathSAT5
456 o [examples] several new examples, including solutions to the
457 VerifyThis@fm2012 challenges
461 * extraction vers Caml
462 - PRIORITAIRE, JCF, ANDREI
465 - (CLAUDE) complete api.tex: explain how to build theories
468 ==================== Roadmap for release 0.80 ========================
470 Change in programs' input syntax deserves incrementing version to 0.80
472 scheduled on Oct 2012
474 == New Features to announce ==
477 o new concrete syntax for programs
478 o new API for programs
483 o induction (experimental, undocumented)
484 o bisection (experimental, undocumented)
487 o support for Coq 8.4
488 o dropped support for Coq 8.2
489 o support for forthcoming PVS 6.0, including realizations
490 o support for iProver and Zenon
493 o improved output of "why3session latex"
494 (incompatible changes in LaTeX macros)
495 o [replayer] new option -q for running quietly
496 o a warning is emitted for unused bound logic variables in "forall",
498 o a warning is emitted for any occurrence of a formula of the form
499 "exists x, P -> Q". Formulas of this form are usually a user
500 mistake. If this is intended, one can write "exists x, not P \/ Q"
504 o Coq output uses type classes to ensure Why3 types are inhabited
505 o fixed bug on merging config files which prevented the use
506 of Why3 back-end of the Frama-C/Jessie plugin when Coq is
507 not installed. (Bug 14672 of the Bug Tracking System)
508 o fixed bugs 13503 and 13375 of the Bug Tracking System
512 * DONE (JCF) reject global "val"s in typing environment for logic decls.
514 * DONE appliquer les changements de syntaxe des programmes dans la doc : aussi bien dans le tutorial que dans la BNF des manpages
517 * DONE Sortie PVS, avec mecanisme de realization
519 * DONE mettre au propre les loc des fichiers de sessions, en particulier
520 les noms de fichiers doivent etre relatifs au fichier de session
521 lui-meme. Utiliser Sysutil.relativize_filename a bon escient.
523 * DONE sessions: mettre la dtd sur le web et changer l'entête des sessions pour qu'elles
527 * DONE (PRIORITAIRE) Coq output
528 - corriger l'incoherence, comprendre si on veut vraiment accepter
531 (cf: en caml cela ne marche pas)
532 Solution proposee: utiliser des types classes, en particulier Inhabited
534 * DONE (PRIORITAIRE), JCF et ANDREI, clone de module
535 - demarche: ecrire une API avec smart constructors garantissant
536 le bon typage, et clone sera en premier lieu un de ces constructors
537 - cas d'utilisation: range d'entiers de Jessie, Flottants -> double ou single
538 containeurs pour Adacore et Claire
540 + regions : strong update
542 + logic symbols used in programs
545 ==================== Roadmap for release 0.73 ========================
547 == New Features to announce ==
550 o [Why3ml] new construct "abstract e { q }"
551 o [Coq output] default tactic is now "intros ..." with a pattern
552 that matches the structure of the goal
553 o [why3replayer] option -obsolete-only
554 o co-inductive predicates
555 o new option -e for "why3session latex" allows to specify when to
556 split tables in parts
557 o [Sessions] a small change in the format. This hopefully improves
558 the association of old goals and new goals when the input is
559 modified. For compatibility, Why3 is still able to read session
560 files in the old format.
561 o [Provers] support for Z3 4.0
564 o completed support for the "Out Of Memory" prover result
565 o [Coq output] quotes in identifiers remain quotes in Coq
566 o workaround for a bug about modulo operator in Alt-Ergo 0.94
567 o fixed a consistency issue with set.Fset theory
571 * DONE Ajouter un result de prouveur "outofmemory" analogue a "timeout"
573 * Why3ML new language constructs
574 ** NOT NEEDED ANYMORE sandbox
575 ** DONE abstract e { q }
576 ** DELAYED contract e { q }
579 ** DONE option pour ne rejouer que si obsolete
582 - DELAYED document co-inductive predicates
583 - DONE (CLAUDE) revoir documentation du smoke detector
586 ==================== Roadmap for release 0.72 ========================
588 == New Features to announce ==
590 * Coq realizations. See manual Chapter xx
591 * Coq tactic. See manual Chapter xx
592 * tool why3session, including commands latex, html, stats. See manual Section xx
593 * tool why3doc. See manual Section xx
594 * Support for several versions of the same prover, for prover upgrade.
595 See manual Section xx
597 - left scrollbar, selection of shown or hidden provers, font enlargement
598 - integration of the support for prover upgrade
599 - support for selection of alternate editors
600 * Complete support for limiting provers' memory usage
601 * Improved support of Microsoft Windows OS
603 * see also the file CHANGES
608 * DONE bug CVC3 avec la division par 0, cf examples/tests-provers/cvc3.why
610 * DONE Document the Coq plugin and tactic
611 ** DONE option timelimit <n>
612 ** DONE renommer "coq-plugin" en "coq-tactic"
614 * DONE (JCF, ANDREI) add all examples from the VSTTE 2012 competition
616 * DONE (CLAUDE) Ajouter page provers sur le site web why3
621 - DONE traiter les \todo :
623 DONE install.tex:179:% \todo{que devient l'option -to-known-prover de why3session ?
624 DONE manpages.tex:790:% \todo{A adapter en fonction de la decision sur l'upgrade de prover}
625 DONE manpages.tex:809:\section{The \texttt{why3doc} tool} \todo{Documenter}
628 - (ANDREI) complete technical.tex: section "Drivers of external
631 - DONE (GUILLAUME) Realisations Coq, comment fait l'utilisateur pour faire
632 ses realisations ne pas oublier de dire que les dependances avec le
633 .why ou .mlw: ne sera pas vérifié
635 - DONE Documenter l'utilisation de plusieurs versions du meme
636 prouveur comme CVC3 et Z3
638 - DONE (ANDREI) ajouter option a why3config pour ajouter association
640 DONE remplacer le ":" par " " (Arg.Tuple)
642 - DONE (CLAUDE) Documenter les popups qui peuvent apparaitre dans why3ide
643 quand les prouveurs ont changé. Et les mettre au point:
645 . DONE Lors d'un replay, le dialogue "replace proof" apparait un nombre
646 important de fois, il faut absolument pouvoir interrompre, ou
647 donner une reponse qui soit appliquée pour le reste. (le 3e
648 bouton "never replace..." ne semble pas jourer ce role...)
650 . DONE le dialogue "replace proof" est de toute facon trop large, et les
651 choix possibles sont confus.
653 - DONE (CLAUDE) meme ordre d'idee: ne pas ecraser "default editor" et
655 en fait c'était déjà le cas
657 * DONE permettre d'utiliser emacs/proof general a la place de coqide depuis
659 *** DONE allow to choose which one the IDE Preferences
661 * (CLAUDE) why3session
662 - DONE passe sur la documentation ecrite par Francois reecrite par Guillaume
663 - DONE "why3replayer -latex" remplacé par "why3session latex"
664 - DONE "why3html" remplacé par "why3session html"
665 - DONE "why3stats" (src/ide/stats.ml) remplacé par "why3session info --stats"
667 * (JCF) ameliorer why3doc
668 - DONE rajouter la production des liens
669 - DONE produire un index.html
672 - DONE (CLAUDE) Ensure that we kill a prover after some time
673 (ressurect %T ? with a meaning like twice the value of %t ?),
674 because we cannot be sure they always honor their own -timeout
677 - DONE (ANDREI) better use of Alt-Ergo's builtin theories: records,
678 enumeration types (Alt-Ergo >= 0.94) => at least two drivers for
679 Alt-Ergo, depending on its version number
681 * DONE fix bugs and update the BTS
682 - DONE (CLAUDE) Refreshing the IDE pane for prover output
685 - DONE enlarge font (menu + shortcut Ctrl-+)
686 - DONE Ctrl-A to select all rows
687 - DONE Do not save if not needed
688 - DONE ne pas ecrire saving sessions si on ne sauve pas la session
689 - DONE add a scrollbar for the left panel
691 * DONE (FRANCOIS) move Session module and its dependencies into the
693 - but avoid duplication with session_ro
694 - avoid also duplication of type like prover_data record
695 - do not include task and transf in the data type, so that
696 one can reload, and redetect provers
697 - session + session_ro -> session_data + session_dynamic
699 ======================= Roadmap for release 0.71 ========================
701 * DONE Final preparation:
702 ** put on the web page
704 *** manual in PDF: check that macro \todo is commented out
706 *** API doc in HTML (suggestion: http://why3.lri.fr/api/)
707 Note: check that URL of API doc is correct in doc/api.tex line 9.
708 ** What to put in the announcement:
709 *** traceability from front-ends work
710 (see Krakatoa and Jessie of the next release 2.30 of Why2)
711 *** many new examples in examples/ and examples/programs
712 *** significantly improved efficiency of WP calculus
713 *** improved method for matching old and new goals in proof sessions
714 *** several bug fixes
715 *** see also the file CHANGES
717 *** DONE increment the magic number in config
718 *** add a tag to the git repository
719 *** The next commit : increment why3 version
722 ** DONE fix bug with term shapes, not taking triggers into account
723 ** DONE remove prover coq-realize
726 ** DONE test/debug TPTP output, make Vampire work
730 * DONE add a "cancel" choice in the "ask" window
732 * DONE replayer: don't replay a goal that has changed, just display as an
735 * DONE reload: improve matching of new and old goals by use a kind a distance
736 between some notion of shape of a goal
738 === Roadmap for third release 0.70, july 2011 ========================
740 * Final preparation: put on the web page
742 ** DONE manual in PDF: check that macro \todo can be commented out
744 ** API doc in HTML (suggestion: http://why3.lri.fr/api/)
745 Note: check that URL of API doc is correct in doc/api.tex line 9.
746 ** What to put in the annoucement
747 - WhyML VC generator to prove programs
748 - new tool why3replayer
749 - incompatible changes in syntax: function, predicate, and, or
750 - session database in XML format instead of sqlite3
751 - threads problem in IDE solved (by not using threads anymore)
752 - IDE: not necessary to exit to change the input file: just use "reload"
754 * The last commit (A):
755 ** DONE increment the magic number in config
756 ** add a tag to the git repository
757 ** The next commit : increment de why3 version
759 * DONE Distribution of examples: we should distribute those who have an xml file
760 under git, and distribute the XML and Coq proofs (JC)
762 * DONE document "Make obsolete" (A+C)
764 * DONE update IDE section of starting.tex (C)
766 * DONE update doc for why3replayer
768 * DONE fix bug 12934 : Coq syntax
769 https://gforge.inria.fr/tracker/index.php?func=detail&aid=12934&group_id=2990&atid=10293
771 * DONE document new IDE features (C)
773 * DONE doc: citer l'article Boogie 2011 quelque part
775 * DONE deplacer le bouton "Cancel" dans le menu "tools",
776 le renommer en "make obsolete"
778 * DONE Check if remark in doc/api.tex line 80 is still valid (A)
780 * DONE put an up-to-date use_api.ml in the manual (C)
782 * DONE enlever les caracteres de tab des sources
783 et les caracteres latin1 (A)
785 * DONE faire tourner headache pour refabriquer les headers (A)
786 ** dans gappa.ml : ajouter Guillaume en dessous de l'entete
788 * DONE Rendre optionnel la question "would you like to save the session ?"
789 (C) -> 3-state options (Yes/No/ask) dans la config
790 + DONE dans le menu "file" : "save session" sans raccourci clavier
792 * DONE desactiver "Save" (et editable=false dans la fenetre)
794 * DONE mettre "Quit" en dernier (C)
796 * DONE checkout frais, compilation (local ou non) et make bench chaque nuit sur moloch
802 * DONE BD : se passer de sqlite3
804 Solution: un unique fichier XML, qui est ecrit mais pas
805 tres souvent (pas plus d'une fois par seconde)
806 ne pas oublier neanmoins de mettre une action dans Timeout
807 qui enregistre au bout d'un moment
808 pb: n'est pas independant de l'IDE, peut-on faire un module
809 independant de l'IDE ? qui serait utilisé par why3bench ?
811 * DONE IDE: avoir des transformations non codees en dur
815 (Claude. pas reproductible ? Pb de duplication des buts ?)
817 * DONE IDE: no more threads
820 ** DONE IDE: replay all obsolete but previously successful proofs
821 ** DONE in why3replay in whybench
822 ** DONE add replay of existing proofs in "make bench" to detect regression
823 ** DONE add automatic recompilation, install and bench every night on moloch
825 * DONE IDE: implement "inline" (use transformation inline_goal)
826 ** problem 1: detect that transformation did nothing
827 ** DONE problem 2: reimport from db does apply inline correctly
829 * DONE IDE: debug "remove" et "clean" qui provoquent des segfaults !!
831 * IDE: ajouter "invalid" comme cas de resultats de preuve
832 (utiliser call_provers.proof_result dans gmain)
836 === Roadmap for second release 0.64 ========================================
838 * fix local installation
839 ** fix local executables names (DONE)
841 * fix problems with .why.conf (DONE)
842 ** if we distribute the current state, users who already have a ~/.why.conf
843 will get a error message because of missing loadpath to modules
844 Done? - the magic number will force to not use the old ~/.why.conf of
846 ** generally speaking, we should rethink the design of that .why.conf: avoid
848 Partially done - libdir, datadir, loadpath, ... are not written in
849 why.conf if they correspond to the default value.
852 * IDE, file names in DB: use only file names relative to the db file
855 === Roadmap for December 2010 ================================================
859 1 Introduction (done: suppressed)
860 2 getting started (Claude: done, to be read by others)
861 3 Syntax, tutorial (done: Andrei)
863 ** build a task (Claude: done, to be read by others)
864 ** call a prover (Claude: done, to be read by others)
865 ** apply a transformation (a completer plus tard)
866 ** develop a new transformation (a completer plus tard)
867 5 syntax reference (a completer plus tard par typage et semantique)
868 6 Standard lib of theories:
869 (Claude: done, although quite sparse, to be read by others)
871 7.1 Compilation, Installation (done)
872 7.2 external provers (done)
873 7.3 why3config (done)
877 7.7 whybench (done, to be read by others)
879 7.9 drivers (to be done later)
880 7.10 transformations (done)
881 8 API: Andrei + Francois
882 (should we really add that in the doc ?)
883 ** on remplace par la version HTML a mettre sur la forge INRIA (Francois)
884 ** TODO: mettre un titre au HTML engendré
890 * database, session save and restore (done)
892 * Gappa output (done)
893 * debug hide goals (TODO)
894 * add "context" options (partially done)
895 ** semantics not clear, should be clarified, documented and
896 implemented accordingly
897 * add transf "inline goal" (to be done later)
898 * add button "remove"
899 ** removing goals: done
900 ** removing transformation: done, but subgoals stay in db (not critical)
901 * add button "replay" (to be done later)
902 ** semantics: replay obsolete proofs
909 * OCAML-LICENSE (done)
911 * debuguer cpulimit pour gappa (pb de return code)
913 * option --version a tous les executables (done, except IDE: bug 11604)
914 ** + affichage dans l'IDE (done)
915 * Builtin arrays in provers (done)
916 * make install (done)
917 * make distrib (done)
919 * META for ocamlfind (done)
922 == Mails announcement ==
924 ----------------------- Why-discuss list ---------------------------
926 We are happy to announce the first public release of Why3, also known
927 as the Why platform next generation. It is a new project, independent
928 from Why versions 2.xx.
930 The home web page of Why3 is http://why3.gforge.inria.fr, where you
931 can find the source distribution and the manual. See the manual for
932 installation instructions and contact information.
934 The main new features with respect to Why 2.xx are the following.
936 1) Completely redesigned input syntax for logic declarations
938 * new syntax for terms and formulas
939 * enumerated and algebraic data types, pattern matching
940 * recursive definitions of logic functions and predicates,
941 with termination checking
942 * inductive definitions of predicates
943 * declarations are structured in components called "theories",
944 which can be reused and instantiated
946 2) More generic handling of goals and lemmas to prove
948 * concept of proof task
949 * generic concept of task transformation
950 * generic approach for communicating with external provers
952 3) Source code organized as a library with a documented API,
953 to allow access to Why3 features programmatically.
955 4) GUI with new features w.r.t. the former GWhy
957 * session save and restore
958 * prover calls in parallel
959 * splitting, and more generally applying task transformations, on demand
960 * ability to edit proofs for interactive provers (Coq only for the moment)
963 5) Extensible architecture via plugins
965 * users can define new transformations
966 * users can add connections to additional provers
969 Beware that some Why features are not yet available in Why3:
971 * There is a VC generator distributed in Why3 in an experimental stage
972 and intentionally undocumented in the current documentation (the input
973 syntax for programs may change a lot in the future).
975 * There is no front-end for other languages like C or Java. However,
976 the last release Why 2.28 is able to use Why3 as a back-end
978 Notice that Why3 is expected to replace Why2 in the future. As such,
979 it is the project where improvements and new features will be
980 implemented. As this is the first public release of Why3, it is likely
981 that missing features, and possibly bugs, will raise soon. Please
982 report those in the bug tracker, we will do our best to fix them and
983 provide new releases in a short time.
989 --------------------- Frama-C list ----------------------------
992 The first release of Why3, also known as the Why platform next
993 generation, is publicly available. Why3 is a new project, independent
994 from Why. The detailed announcement is attached below.
996 The Jessie plugin of the Why release 2.28 has the ability to use Why3
997 as back-end. You must install both Why 2.28 and Why3 for this to work.
999 Using the Why3 GUI on a C file is done as follows
1000 frama-c -jessie -jessie-atp why3ide <file>.c
1001 (You can also run it in batch mode using
1002 frama-c -jessie -jessie-atp why3 <file>.c
1003 and process the generated Why3 file "<file>.jessie/why/<file>_why3.why"
1004 with Why3 batch tools).
1006 The main new features of interest in the GUI are
1008 * new provers available
1009 * calling provers in parallel
1010 * splitting on demand
1011 * ability to call Coq on a given VC to provide a proof script. Incidentally,
1012 this feature can be used to analyse the VC to understand why it is
1013 not proved automatically.
1014 * proof session saved and restored at startup
1016 Any question, remark or bug report concerning only Why3 should be done
1017 using the Why3 public discussion list and bug tracker.