Skip to content
Snippets Groups Projects
Commit bc44516d authored by Allan Blanchard's avatar Allan Blanchard
Browse files

[wp] Visit each definition with a fresh set of visited terms

Fixes BTS 2501
parent 88fabd9f
No related branches found
No related tags found
No related merge requests found
...@@ -404,12 +404,19 @@ class virtual visitor main = ...@@ -404,12 +404,19 @@ class virtual visitor main =
| Inductive cases -> List.iter (fun l -> self#vdlemma l) cases | Inductive cases -> List.iter (fun l -> self#vdlemma l) cases
method private vdfun d = method private vdfun d =
let old_terms = terms in
terms <- Tset.empty ;
begin begin
List.iter self#vparam d.d_params ; try
self#vdefinition d.d_definition ; List.iter self#vparam d.d_params ;
self#vproperties d.d_definition ; self#vdefinition d.d_definition ;
self#on_dfun d ; self#vproperties d.d_definition ;
end self#on_dfun d ;
with e ->
terms <- old_terms ;
raise e
end ;
terms <- old_terms
method private vlfun f = method private vlfun f =
match Symbol.find f with match Symbol.find f with
......
/* run.config
OPT:-wp-gen -wp-prover why3
*/
/* run.config_qualif
DONTRUN:
*/
/*@
logic integer F(integer m) = (m <= 0) ? 0 : F(m) ;
logic integer R(integer p) = (p < 0) ? -1 : R(p-1) + F(R(p-1));
lemma R_1: \forall integer p; R(p) == R(p-1) + F(R(p-1));
lemma R_2: \forall integer p; 0 <= R(p);
*/
# frama-c -wp [...]
[kernel] Parsing tests/wp_bts/bts_2501.i (no preprocessing)
[wp] Running WP plugin...
[wp] Loading driver 'share/wp.driver'
[wp] 2 goals scheduled
[wp] 2 goals generated
------------------------------------------------------------
Global
------------------------------------------------------------
Lemma R_1:
Prove: let x_0 = (L_R (p_0-1)) in (x_0+(L_F x_0))=(L_R p_0)
------------------------------------------------------------
Lemma R_2:
Assume: 'R_1'
Prove: 0<=(L_R p_0)
------------------------------------------------------------
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment