Commit 1f69aef3 authored by MARCHE Claude's avatar MARCHE Claude

relative paths for files stored in database, preliminary support for inline...

relative paths for files stored in database, preliminary support for inline transformation in the IDE
parent cb7bd5cb
o better Gappa output: support for sqrt, for negative constants
o [IDE] source file names are stored in database as relative paths
to the database, so that databases are now easier to move from a
machine to another (e.g when they are stored in source control
repositories)
o better Gappa output: support for sqrt, for
negative constants
version 0.63, Dec 21, 2010
==========================
......
= Roadmap for second release, as early as possible in 2011 =
* fix local installation
* ajouter "invalid" comme cas de resultats de preuve
* utiliser call_provers.proof_result dans gmain
* file names in DB
** use only file names relative to the db file
** ou alors interdire d'avoir plusieurs fichiers dans la meme base
** fix local executables names (DONE)
* fix problems with .why.conf
** if we distribute the current state, users who already have a ~/.why.conf
will get a error message because of missing loadpath to modules
** generally speaking, we should rethink the design of that .why.conf: avoid
absolute paths,
* proof replay
** in IDE
** in IDE: replay all obsolete but previously successful proofs
** in whybench
** add replay of existing proofs in "make bench" to detect regression
* IDE: implement "inline" (use transformation inline_goal)
** partially done
** problem 1: detect that transformation did nothing
* IDE: debug "hide proved goals" feature
* IDE: ajouter "invalid" comme cas de resultats de preuve
(utiliser call_provers.proof_result dans gmain)
* IDE, file names in DB: use only file names relative to the db file (DONE)
......@@ -33,10 +37,6 @@
* Coq realizations of theories
= Papers to write =
* Encodings and transformations (Andrei+Francois, CADE 2011, deadline January 2011)
......@@ -50,6 +50,12 @@
= Roadmap for December 2010 =
== Documentation ==
......
......@@ -56,7 +56,7 @@
\vfill
\begin{LARGE}
Version \whyversion{}, December 2010
Version \whyversion{}, February 2011
\end{LARGE}
\vfill
......@@ -80,7 +80,7 @@ $^2$ INRIA Saclay - \^Ile-de-France, ProVal, Orsay, F-91893
\bigskip
\textcopyright 2010 Univ Paris-Sud, CNRS, INRIA
\textcopyright 2010-2011 Univ Paris-Sud, CNRS, INRIA
This work has been partly supported by the `U3CAT' national ANR project
(ANR-08-SEGI-021-08, \url{http://frama-c.cea.fr/u3cat}) and by the
......@@ -134,7 +134,26 @@ Lescuyer, Sim\~ao Melo de Sousa, Asma Tafat.
\section*{Release notes}
\paragraph{Version 0.63}
\subsection*{Version 0.6?}
\paragraph{new features}
\begin{itemize}
\item
\item better Gappa output: support for sqrt, for negative constants
\end{itemize}
\paragraph{bug fixes}
\begin{itemize}
\item Fixed local installation
\begin{itemize}
\item executable names are now identical to when they are installed
\end{itemize}
\item IDE: source file names are stored as paths relative to the database
\end{itemize}
\subsection*{Version 0.63}
First public release. The main new features with respect to Why 2.xx
are the following.
\begin{enumerate}
......
......@@ -2,7 +2,7 @@ theory HelloProof "My very first Why3 theory"
goal G1 : true
goal G2 : (true -> false) and (true or false)
goal G2 : (false -> false) and (true or false)
use import int.Int
......
......@@ -16,7 +16,7 @@ module M
exception Not_found (* raised to signal a search failure *)
let binary_search (a :array int) (v : int) =
{ forall i1 i2 : int. 0 <= i1 <= i2 < length a -> a[i1] <= a[i2] }
{ (* forall i1 i2 : int. 0 <= i1 <= i2 < length a -> a[i1] <= a[i2] *) }
try
let l = ref 0 in
let u = ref (length a - 1) in
......
......@@ -5,13 +5,13 @@ module M
logic sqr (x:int) : int = x * x
let isqrt (x:int) =
let isqrt (x:int) : int =
{ x >= 0 }
let count = ref 0 in
let sum = ref 1 in
while !sum <= x do
invariant { count >= 0 and x >= sqr count and sum = sqr (count+1) }
variant { x - sum }
variant { x - count }
count := !count + 1;
sum := !sum + 2 * !count + 1
done;
......
......@@ -209,7 +209,7 @@ let iconname_no = "delete32"
let iconname_directory = "folder32"
let iconname_file = "file32"
let iconname_prover = "wizard32"
let iconname_transf = "cutb32"
let iconname_transf = "configure32"
let iconname_editor = "edit32"
let iconname_remove = "deletefile32"
......@@ -401,6 +401,6 @@ let () = eprintf "end of configuration initialization@."
(*
Local Variables:
compile-command: "unset LANG; make -C ../.. bin/whyide.opt"
compile-command: "unset LANG; make -C ../.. bin/why3ide.byte"
End:
*)
This diff is collapsed.
......@@ -358,15 +358,41 @@ let print_next_proof ?def ch fmt =
| End_of_file -> print_empty_proof ?def fmt
| Exit -> fprintf fmt "@\n"
let realization ~old ?def fmt info =
if info.realization then
let produce_remaining_proofs ~old fmt =
match old with
| None -> ()
| Some ch ->
try
while true do
let s = input_line ch in
if s = proof_begin then
begin
fprintf fmt "(* OBSOLETE PROOF *)@\n";
try while true do
let s = input_line ch in
if s = proof_end then
begin
fprintf fmt "(* END OF OBSOLETE PROOF *)@\n@\n";
raise Exit
end;
fprintf fmt "%s@\n" s;
done
with Exit -> ()
end
done
with
| End_of_file -> fprintf fmt "@\n"
let realization ~old ?def fmt produce_realization =
if produce_realization then
begin match old with
| None -> assert false; print_empty_proof ?def fmt
| None -> print_empty_proof ?def fmt
| Some ch -> print_next_proof ?def ch fmt
end
else
fprintf fmt "@\n"
let print_type_decl ~old info fmt (ts,def) =
if is_ts_tuple ts then () else
match def with
......@@ -375,7 +401,7 @@ let print_type_decl ~old info fmt (ts,def) =
fprintf fmt "@[<hov 2>%a %a : %aType.@]@\n%a"
definition info
print_ts ts print_params_list ts.ts_args
(realization ~old ~def:true) info
(realization ~old ~def:true) info.realization
| Some ty ->
fprintf fmt "@[<hov 2>Definition %a %a :=@ %a.@]@\n@\n"
print_ts ts (print_arrow_list print_tv_binder) ts.ts_args
......@@ -422,7 +448,7 @@ let print_logic_decl ~old info fmt (ls,ld) =
print_params all_ty_params
(print_arrow_list (print_ty info)) ls.ls_args
(print_ls_type ~arrow:(ls.ls_args <> []) info) ls.ls_value
(realization ~old ~def:true) info
(realization ~old ~def:true) info.realization
end;
print_implicits fmt ls ty_vars_args ty_vars_value all_ty_params;
fprintf fmt "@\n"
......@@ -457,16 +483,9 @@ let print_pkind info fmt = function
let print_proof ~old info fmt = function
| Plemma | Pgoal ->
begin match old with
| None -> print_empty_proof fmt
| Some ch -> print_next_proof ch fmt
end
realization ~old fmt true
| Paxiom ->
if info.realization then
begin match old with
| None -> print_empty_proof fmt
| Some ch -> print_next_proof ch fmt
end
realization ~old fmt info.realization
| Pskip -> ()
let print_decl ~old info fmt d = match d.d_node with
......@@ -475,10 +494,6 @@ let print_decl ~old info fmt d = match d.d_node with
| Dind il -> print_list nothing (print_ind_decl info) fmt il
| Dprop (_,pr,_) when Sid.mem pr.pr_name info.info_rem -> ()
| Dprop (k,pr,f) ->
(*
fprintf fmt "@\n@\n(* YOU MAY EDIT BELOW *)@\n@\n@\n";
fprintf fmt "(* DO NOT EDIT BELOW *)@\n@\@\n";
*)
let params = f_ty_freevars Stv.empty f in
fprintf fmt "@[<hov 2>%a %a : %a%a.@]@\n%a"
(print_pkind info) k
......@@ -512,9 +527,10 @@ open Theory
let print_tdecl ~old info fmt d = match d.td_node with
| Decl d -> print_decl ~old info fmt d
| Use _ -> ()
| Meta _ -> ()
| Clone _ -> ()
| Use t ->
fprintf fmt "Require Import %s.@\n@\n" (id_unique iprinter t.th_name)
| Meta _ -> assert false (* TODO ? *)
| Clone _ -> assert false (* TODO *)
let print_tdecls ~old info fmt dl =
fprintf fmt "@[<hov>%a@\n@]" (print_list nothing (print_tdecl ~old info)) dl
......@@ -534,7 +550,8 @@ let print_theory _env pr thpr ~old fmt th =
realization = true;
}
in
print_tdecls ~old info fmt th.th_decls
print_tdecls ~old info fmt th.th_decls;
produce_remaining_proofs ~old fmt
(*
......
......@@ -120,14 +120,41 @@ theory TestRealize
type t
logic f t : t
logic p t t
axiom P_sym: forall x y:t. p x y <-> p y x
axiom P_arefl: forall x:t. not (p x x)
(*
axiom P_total: forall x y:t. p x y or p y x or x=y
logic f t : t
axiom A : forall x:t. p (f x) x
lemma B : forall x:t. p x (f x)
lemma B : forall x:t. not (p x (f x))
*)
end
theory TestRealizeUse
(* use import int.Int *)
use import TestRealize
logic q t : t
axiom C : forall x:t. p (q x) x
end
theory TestInline
use import int.Int
logic p (x:int) (y:int) = x <= 3 and y <= 7
goal G : p 4 4
end
\ No newline at end of file
end
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment