Upgrade Coq to version 8.16.1 in the docker image
[why3.git] / ROADMAP
blob606fc016c1e999dfd7e1549f67a9c3d01ec19921
3 ============ Long-term Roadmap (see below for roadmaps to next release) ===========
6 == long-term projects ==
8 * entiers machines
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.
26 * LABCOM avec Adacore
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.
32 * jessie3
34 == Papers to write ==
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/)
45     deadline: May 1st
47   * Caml code ?
49   * logic language for talking to provers
50     - DONE (Boogie 11)
51     - DONE FOL + poly (FroCos 11)
52     -  alg + ind + rec ? + theories
54   * VACID-0
56   * system description (e.g. at CADE, TACAS) DONE at ESOP
58   * rapports recherche ?
60 == stages ==
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 ==
76 * Logic language
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
84 * Why3ML
85  - Fast WP a la Leino (DONE ?)
86  - assert qui ne donne pas une hypothese dans la suite -> "check"
87    also: in a black box
89 * Add more examples in the regression tests and in the proval gallery
91 * A literate programming tool for Why3 (JCF)
94 * IDE:
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
99   (JC + ?)
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
115 and no epsilon
117 * terminaison
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)
124 * replayer
125 ** deplacer option -bench dans une commande de why3session
127 * IDE
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
134 * detect editors
135 *** check if coqide and also emacs/proof-general is installed
137 * documentation des nouvelles features higher-order
139 * eliminate_match:
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
144    polymorphe.
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
156   transformations"
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,
175   with which priority
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 ========================
190 DATE : mars 2016
192 Release Notes (details in file CHANGES):
194 == TODO ==
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
215 * bug fixes
217 == TODO ==
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
225 == DONE ==
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 ========================
261 Release Notes:
263 Mainly a bug-fix release, in particular to fix two soundness bugs
265 See CHANGES
268 ==================== Roadmap for release 0.84 ========================
270 == TODOs ==
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 ==
288 Release Notes:
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.
299 See CHANGES
302 ==================== Roadmap for release 0.83 ========================
304 == New Features to announce ==
306 See CHANGES
309 == TODOs ==
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)
315 * Isabelle Support:
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 ==
328 * input language
329 ** lemma functions
330 ** polymorphic recursion permitted
331 ** types "opaques" TODO ???
334 * new provers:
335 ** veriT 201310
336 ** Metitarski 2.2 (contribution by Piotr Trojanek)
337 ** Metis 2.3
338 ** Beagle 0.4.1
339 ** Princess 2013-05-13
340 ** Yices2 2.0.4
341 ** Isabelle 2013-2 (contribution by Stefan Berghofer)
343 * new versions of provers:
344 ** Alt-Ergo 0.95.2
345 ** CVC4 1.1 & 1.2 & 1.3
346 ** Coq 8.4pl2
347 ** gappa 1.0.0
348 ** SPASS 3.8ds
350 * API: more examples of use in  examples/use_api/
352 * emacs support: why.el renamed into why3.el
354 * why3session
355 ** --stats: changed (detailler, temps, distinction root et subgoals, CLAUDE)
357 * bug fixes:
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
363   assured.
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
374 == TODOs ==
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
384 *** BWare
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.
401   PAS FAIT
403 * faire le menage dans les transformations d'induction : _int _ty
404   _ty_lex, FAIT et documenter PAS FAIT
406 * Documentation
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
459 == TODOs ==
461 * extraction vers Caml
462  - PRIORITAIRE, JCF, ANDREI
464 * Documentation
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 ==
476 Programs:
477   o new concrete syntax for programs
478   o new API for programs
479   o type invariants
480   o ghost code
482 Transformations:
483   o induction (experimental, undocumented)
484   o bisection (experimental, undocumented)
486 Provers support:
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
492 Misc:
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",
497     "exists" and "let"
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"
501     instead
503 Bug fixes:
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
510 == TODOs ==
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
524    pointent dessus
527 * DONE (PRIORITAIRE) Coq output
528  - corriger l'incoherence, comprendre si on veut vraiment accepter
530   function x : 'a
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
539  - NON PRIORITAIRE ?
540   + regions : strong update
541   + ghost code
542   + logic symbols used in programs
545 ==================== Roadmap for release 0.73 ========================
547 == New Features to announce ==
549 New features:
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
563 Bug fix:
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
569 == TODOs ==
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 }
578 * replayer
579 ** DONE option pour ne rejouer que si obsolete
581 * Documentation
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
596 * Improved IDE:
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
602 * what else ?
603 * see also the file CHANGES
605 == TODOs ==
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
617 ** !TODO! relire
619 * Documentation
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
629    provers"
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
639    ident-executable
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
654    "timelimit"
655    en fait c'était déjà le cas
657 * DONE permettre d'utiliser emacs/proof general a la place de coqide depuis
658   why3ide
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
671 * DONE provers
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
675    option.
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
684 * DONE (CLAUDE) IDE:
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
692   Why3 library
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
703 *** why3-0.71.tar.gz
704 *** manual in PDF: check that macro \todo is commented out
705     in ./macros.tex
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
716 ** The last commit:
717 *** DONE increment the magic number in config
718 *** add a tag to the git repository
719 *** The next commit : increment why3 version
721 * misc
722 ** DONE fix bug with term shapes, not taking triggers into account
723 ** DONE remove prover coq-realize
725 * prover support
726 ** DONE test/debug TPTP output, make Vampire work
728 * IDE:
729 ** saving session
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
733   unsuccessful replay
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
741 ** why3-0.70.tar.gz
742 ** DONE manual in PDF: check that macro \todo can be commented out
743    from ./macros.tex
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
797   (?)
799 * DONE IDE: reload
800   (claude)
802 * DONE BD : se passer de sqlite3
803   (Claude)
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
812   (Claude d'abord)
814 * DONE Bug des md5
815   (Claude. pas reproductible ? Pb de duplication des buts ?)
817 * DONE IDE: no more threads
819 * DONE proof replay
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)
833   DONE
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
845              the user
846   ** generally speaking, we should rethink the design of that .why.conf: avoid
847      absolute paths,
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
853   DONE
855 === Roadmap for December 2010 ================================================
857 == Documentation ==
859 1 Introduction (done: suppressed)
860 2 getting started (Claude: done, to be read by others)
861 3 Syntax, tutorial (done: Andrei)
862 4 tutorial for API:
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)
870 7 Manpages
871 7.1 Compilation, Installation (done)
872 7.2 external provers (done)
873 7.3 why3config (done)
874 7.4 why3 (done)
875 7.5 whyml (done)
876 7.6 IDE (done)
877 7.7 whybench (done, to be read by others)
878 7.8 why.conf (done)
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é
886 == IDE ==
888 (Claude)
890 * database, session save and restore (done)
891 * Coq output (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
904 == Misc ==
906 * README (done)
907 * INSTALL (done)
908 * LICENSE (done)
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)
918 * "make -j" (done)
919 * META for ocamlfind (done)
920 * headers (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)
961   on any subtask
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.