Commit 67ee9be8 authored by MARCHE Claude's avatar MARCHE Claude

residual example: a bit of cleaning

parent a41bf559
...@@ -21,14 +21,13 @@ module Residuals ...@@ -21,14 +21,13 @@ module Residuals
| Star _ -> true | Star _ -> true
end end
let lemma inversion_mem_star (c:char) (w:word) (r:regexp) lemma inversion_mem_star_gen :
ensures { forall c w r w' r'.
forall w' r'. w' = Cons c w /\ r' = Star r -> w' = Cons c w /\ r' = Star r ->
mem w' r' -> mem w' r' ->
exists w1 w2. w = w1 ++ w2 /\ mem (Cons c w1) r /\ mem w2 r' } exists w1 w2. w = w1 ++ w2 /\ mem (Cons c w1) r /\ mem w2 r'
= ()
lemma inversion_mem_star :
lemma inversion_mem_star2 :
forall c w r. mem (Cons c w) (Star r) -> forall c w r. mem (Cons c w) (Star r) ->
exists w1 w2. w = w1 ++ w2 /\ mem (Cons c w1) r /\ mem w2 (Star r) exists w1 w2. w = w1 ++ w2 /\ mem (Cons c w1) r /\ mem w2 (Star r)
......
...@@ -11,14 +11,15 @@ Require list.Append. ...@@ -11,14 +11,15 @@ Require list.Append.
(* Why3 assumption *) (* Why3 assumption *)
Definition unit := unit. Definition unit := unit.
(* Why3 assumption *) Axiom char : Type.
Definition char := Z. Parameter char_WhyType : WhyType char.
Existing Instance char_WhyType.
(* Why3 assumption *) (* Why3 assumption *)
Inductive regexp := Inductive regexp :=
| Empty : regexp | Empty : regexp
| Epsilon : regexp | Epsilon : regexp
| Char : Z -> regexp | Char : char -> regexp
| Alt : regexp -> regexp -> regexp | Alt : regexp -> regexp -> regexp
| Concat : regexp -> regexp -> regexp | Concat : regexp -> regexp -> regexp
| Star : regexp -> regexp. | Star : regexp -> regexp.
...@@ -26,42 +27,43 @@ Axiom regexp_WhyType : WhyType regexp. ...@@ -26,42 +27,43 @@ Axiom regexp_WhyType : WhyType regexp.
Existing Instance regexp_WhyType. Existing Instance regexp_WhyType.
(* Why3 assumption *) (* Why3 assumption *)
Definition word := (list Z). Definition word := (list char).
(* Why3 assumption *) (* Why3 assumption *)
Inductive mem : (list Z) -> regexp -> Prop := Inductive mem : (list char) -> regexp -> Prop :=
| mem_eps : (mem nil Epsilon) | mem_eps : (mem nil Epsilon)
| mem_char : forall (c:Z), (mem (cons c nil) (Char c)) | mem_char : forall (c:char), (mem (cons c nil) (Char c))
| mem_altl : forall (w:(list Z)) (r1:regexp) (r2:regexp), (mem w r1) -> | mem_altl : forall (w:(list char)) (r1:regexp) (r2:regexp), (mem w r1) ->
(mem w (Alt r1 r2)) (mem w (Alt r1 r2))
| mem_altr : forall (w:(list Z)) (r1:regexp) (r2:regexp), (mem w r2) -> | mem_altr : forall (w:(list char)) (r1:regexp) (r2:regexp), (mem w r2) ->
(mem w (Alt r1 r2)) (mem w (Alt r1 r2))
| mem_concat : forall (w1:(list Z)) (w2:(list Z)) (r1:regexp) (r2:regexp), | mem_concat : forall (w1:(list char)) (w2:(list char)) (r1:regexp)
(mem w1 r1) -> ((mem w2 r2) -> (mem (List.app w1 w2) (Concat r1 r2))) (r2:regexp), (mem w1 r1) -> ((mem w2 r2) -> (mem (List.app w1 w2)
(Concat r1 r2)))
| mems1 : forall (r:regexp), (mem nil (Star r)) | mems1 : forall (r:regexp), (mem nil (Star r))
| mems2 : forall (w1:(list Z)) (w2:(list Z)) (r:regexp), (mem w1 r) -> | mems2 : forall (w1:(list char)) (w2:(list char)) (r:regexp), (mem w1
((mem w2 (Star r)) -> (mem (List.app w1 w2) (Star r))). r) -> ((mem w2 (Star r)) -> (mem (List.app w1 w2) (Star r))).
Axiom inversion_mem_star : forall (c:Z) (w:(list Z)) (r:regexp), Axiom inversion_mem_star_gen : forall (c:char) (w:(list char)) (r:regexp)
forall (w':(list Z)) (r':regexp), ((w' = (cons c w)) /\ (r' = (Star r))) -> (w':(list char)) (r':regexp), ((w' = (cons c w)) /\ (r' = (Star r))) ->
((mem w' r') -> exists w1:(list Z), exists w2:(list Z), ((mem w' r') -> exists w1:(list char), exists w2:(list char),
(w = (List.app w1 w2)) /\ ((mem (cons c w1) r) /\ (mem w2 r'))). (w = (List.app w1 w2)) /\ ((mem (cons c w1) r) /\ (mem w2 r'))).
Axiom inversion_mem_star2 : forall (c:Z) (w:(list Z)) (r:regexp), (mem Axiom inversion_mem_star : forall (c:char) (w:(list char)) (r:regexp), (mem
(cons c w) (Star r)) -> exists w1:(list Z), exists w2:(list Z), (cons c w) (Star r)) -> exists w1:(list char), exists w2:(list char),
(w = (List.app w1 w2)) /\ ((mem (cons c w1) r) /\ (mem w2 (Star r))). (w = (List.app w1 w2)) /\ ((mem (cons c w1) r) /\ (mem w2 (Star r))).
(* Why3 goal *) (* Why3 goal *)
Theorem WP_parameter_residual : forall (r:regexp) (c:Z), Theorem WP_parameter_residual : forall (r:regexp) (c:char),
match r with match r with
| Empty => True | Empty => True
| Epsilon => True | Epsilon => True
| (Char c') => True | (Char c') => True
| (Alt r1 r2) => True | (Alt r1 r2) => True
| (Concat r1 r2) => True | (Concat r1 r2) => True
| (Star r1) => forall (o:regexp), (forall (w:(list Z)), (mem w o) <-> (mem | (Star r1) => forall (o:regexp), (forall (w:(list char)), (mem w o) <->
(cons c w) r1)) -> forall (w:(list Z)), (mem w (Concat o r)) <-> (mem (mem (cons c w) r1)) -> forall (w:(list char)), (mem w (Concat o
(cons c w) r) r)) <-> (mem (cons c w) r)
end. end.
(* Why3 intros r c. *) (* Why3 intros r c. *)
intros r c. intros r c.
...@@ -74,7 +76,7 @@ rewrite List.app_comm_cons. ...@@ -74,7 +76,7 @@ rewrite List.app_comm_cons.
constructor; auto. constructor; auto.
rewrite <- H; auto. rewrite <- H; auto.
destruct (inversion_mem_star2 _ _ _ H0) as (w1 & w2 & h1 & h2 & h3). destruct (inversion_mem_star _ _ _ H0) as (w1 & w2 & h1 & h2 & h3).
subst w. subst w.
constructor; auto. constructor; auto.
now rewrite H. now rewrite H.
......
...@@ -11,14 +11,15 @@ Require list.Append. ...@@ -11,14 +11,15 @@ Require list.Append.
(* Why3 assumption *) (* Why3 assumption *)
Definition unit := unit. Definition unit := unit.
(* Why3 assumption *) Axiom char : Type.
Definition char := Z. Parameter char_WhyType : WhyType char.
Existing Instance char_WhyType.
(* Why3 assumption *) (* Why3 assumption *)
Inductive regexp := Inductive regexp :=
| Empty : regexp | Empty : regexp
| Epsilon : regexp | Epsilon : regexp
| Char : Z -> regexp | Char : char -> regexp
| Alt : regexp -> regexp -> regexp | Alt : regexp -> regexp -> regexp
| Concat : regexp -> regexp -> regexp | Concat : regexp -> regexp -> regexp
| Star : regexp -> regexp. | Star : regexp -> regexp.
...@@ -26,26 +27,27 @@ Axiom regexp_WhyType : WhyType regexp. ...@@ -26,26 +27,27 @@ Axiom regexp_WhyType : WhyType regexp.
Existing Instance regexp_WhyType. Existing Instance regexp_WhyType.
(* Why3 assumption *) (* Why3 assumption *)
Definition word := (list Z). Definition word := (list char).
(* Why3 assumption *) (* Why3 assumption *)
Inductive mem : (list Z) -> regexp -> Prop := Inductive mem : (list char) -> regexp -> Prop :=
| mem_eps : (mem nil Epsilon) | mem_eps : (mem nil Epsilon)
| mem_char : forall (c:Z), (mem (cons c nil) (Char c)) | mem_char : forall (c:char), (mem (cons c nil) (Char c))
| mem_altl : forall (w:(list Z)) (r1:regexp) (r2:regexp), (mem w r1) -> | mem_altl : forall (w:(list char)) (r1:regexp) (r2:regexp), (mem w r1) ->
(mem w (Alt r1 r2)) (mem w (Alt r1 r2))
| mem_altr : forall (w:(list Z)) (r1:regexp) (r2:regexp), (mem w r2) -> | mem_altr : forall (w:(list char)) (r1:regexp) (r2:regexp), (mem w r2) ->
(mem w (Alt r1 r2)) (mem w (Alt r1 r2))
| mem_concat : forall (w1:(list Z)) (w2:(list Z)) (r1:regexp) (r2:regexp), | mem_concat : forall (w1:(list char)) (w2:(list char)) (r1:regexp)
(mem w1 r1) -> ((mem w2 r2) -> (mem (List.app w1 w2) (Concat r1 r2))) (r2:regexp), (mem w1 r1) -> ((mem w2 r2) -> (mem (List.app w1 w2)
(Concat r1 r2)))
| mems1 : forall (r:regexp), (mem nil (Star r)) | mems1 : forall (r:regexp), (mem nil (Star r))
| mems2 : forall (w1:(list Z)) (w2:(list Z)) (r:regexp), (mem w1 r) -> | mems2 : forall (w1:(list char)) (w2:(list char)) (r:regexp), (mem w1
((mem w2 (Star r)) -> (mem (List.app w1 w2) (Star r))). r) -> ((mem w2 (Star r)) -> (mem (List.app w1 w2) (Star r))).
(* Why3 goal *) (* Why3 goal *)
Theorem WP_parameter_inversion_mem_star : forall (c:Z) (w:(list Z)) Theorem inversion_mem_star_gen : forall (c:char) (w:(list char)) (r:regexp)
(r:regexp), forall (w':(list Z)) (r':regexp), ((w' = (cons c w)) /\ (w':(list char)) (r':regexp), ((w' = (cons c w)) /\ (r' = (Star r))) ->
(r' = (Star r))) -> ((mem w' r') -> exists w1:(list Z), exists w2:(list Z), ((mem w' r') -> exists w1:(list char), exists w2:(list char),
(w = (List.app w1 w2)) /\ ((mem (cons c w1) r) /\ (mem w2 r'))). (w = (List.app w1 w2)) /\ ((mem (cons c w1) r) /\ (mem w2 r'))).
(* Why3 intros c w r w' r' (h1,h2) h3. *) (* Why3 intros c w r w' r' (h1,h2) h3. *)
intros c w r w' r' (h1,h2) h3. intros c w r w' r' (h1,h2) h3.
...@@ -63,6 +65,5 @@ exists w1. ...@@ -63,6 +65,5 @@ exists w1.
exists w2. exists w2.
split; auto. split; auto.
Qed. Qed.
...@@ -334,33 +334,28 @@ ...@@ -334,33 +334,28 @@
</transf> </transf>
</goal> </goal>
<goal <goal
name="WP_parameter inversion_mem_star" name="inversion_mem_star_gen"
locfile="../residual.mlw" locfile="../residual.mlw"
loclnum="24" loccnumb="12" loccnume="30" loclnum="24" loccnumb="8" loccnume="30"
expl="VC for inversion_mem_star" sum="f072fb3bcbcbc5f0d31fd4891b37372e"
sum="03b8bc8aded039d2dde43839c0f5c61a"
proved="true" proved="true"
expanded="true" expanded="true"
shape="amemV6V4AamemaConsV0V5V2Aainfix =V1ainfix ++V5V6EIamemV3V4Iainfix =V4aStarV2Aainfix =V3aConsV0V1FF"> shape="amemV6V4AamemaConsV0V5V2Aainfix =V1ainfix ++V5V6EIamemV3V4Iainfix =V4aStarV2Aainfix =V3aConsV0V1F">
<label
name="why3:lemma"/>
<label
name="expl:VC for inversion_mem_star"/>
<proof <proof
prover="3" prover="3"
timelimit="5" timelimit="5"
memlimit="1000" memlimit="1000"
edited="residual_Residuals_WP_parameter_inversion_mem_star_1.v" edited="residual_Residuals_inversion_mem_star_gen_1.v"
obsolete="false" obsolete="false"
archived="false"> archived="false">
<result status="valid" time="0.92"/> <result status="valid" time="0.91"/>
</proof> </proof>
</goal> </goal>
<goal <goal
name="inversion_mem_star2" name="inversion_mem_star"
locfile="../residual.mlw" locfile="../residual.mlw"
loclnum="31" loccnumb="8" loccnume="27" loclnum="30" loccnumb="8" loccnume="26"
sum="be847614e3430762a178607e65748ce0" sum="f23c3a99cd07cdcb9045f8c4ee9dd4f5"
proved="true" proved="true"
expanded="true" expanded="true"
shape="amemV4aStarV2AamemaConsV0V3V2Aainfix =V1ainfix ++V3V4EIamemaConsV0V1aStarV2F"> shape="amemV4aStarV2AamemaConsV0V3V2Aainfix =V1ainfix ++V3V4EIamemaConsV0V1aStarV2F">
...@@ -370,15 +365,15 @@ ...@@ -370,15 +365,15 @@
memlimit="1000" memlimit="1000"
obsolete="false" obsolete="false"
archived="false"> archived="false">
<result status="valid" time="0.03"/> <result status="valid" time="0.02"/>
</proof> </proof>
</goal> </goal>
<goal <goal
name="WP_parameter residual" name="WP_parameter residual"
locfile="../residual.mlw" locfile="../residual.mlw"
loclnum="36" loccnumb="10" loccnume="18" loclnum="35" loccnumb="10" loccnume="18"
expl="VC for residual" expl="VC for residual"
sum="0446dc205ce707e028e28774e7ed7b8d" sum="752fe5294fa9bae91f2b55fe6bfa68f2"
proved="true" proved="true"
expanded="true" expanded="true"
shape="CamemaConsV1V2V0qamemV2aEmptyFaEmptyamemaConsV1V3V0qamemV3aEmptyFaEpsilonamemaConsV1V5V0qamemV5iaEmptyaEpsilonainfix =V1V4FaCharVamemaConsV1V10V0qamemV10aAltV9V8FIamemaConsV1V11V6qamemV11V9FFACfaEmptyfaEpsilonfaCharwainfix =V13V6Oainfix =V12V6aAltVVainfix =V15V6Oainfix =V14V6aConcatVVainfix =V16V6aStarVV0IamemaConsV1V17V7qamemV17V8FFACfaEmptyfaEpsilonfaCharwainfix =V19V7Oainfix =V18V7aAltVVainfix =V21V7Oainfix =V20V7aConcatVVainfix =V22V7aStarVV0aAltVViamemaConsV1V27V0qamemV27aConcatV26V24FIamemaConsV1V28V23qamemV28V26FFACfaEmptyfaEpsilonfaCharwainfix =V30V23Oainfix =V29V23aAltVVainfix =V32V23Oainfix =V31V23aConcatVVainfix =V33V23aStarVV0amemaConsV1V36V0qamemV36aAltaConcatV35V24V34FIamemaConsV1V37V23qamemV37V35FFACfaEmptyfaEpsilonfaCharwainfix =V39V23Oainfix =V38V23aAltVVainfix =V41V23Oainfix =V40V23aConcatVVainfix =V42V23aStarVV0IamemaConsV1V43V24qamemV43V34FFACfaEmptyfaEpsilonfaCharwainfix =V45V24Oainfix =V44V24aAltVVainfix =V47V24Oainfix =V46V24aConcatVVainfix =V48V24aStarVV0ainfix =V25aTrueIamemaNilV23qainfix =V25aTrueFaConcatVVamemaConsV1V51V0qamemV51aConcatV50V0FIamemaConsV1V52V49qamemV52V50FFACfaEmptyfaEpsilonfaCharwainfix =V54V49Oainfix =V53V49aAltVVainfix =V56V49Oainfix =V55V49aConcatVVainfix =V57V49aStarVV0aStarVV0F"> shape="CamemaConsV1V2V0qamemV2aEmptyFaEmptyamemaConsV1V3V0qamemV3aEmptyFaEpsilonamemaConsV1V5V0qamemV5iaEmptyaEpsilonainfix =V1V4FaCharVamemaConsV1V10V0qamemV10aAltV9V8FIamemaConsV1V11V6qamemV11V9FFACfaEmptyfaEpsilonfaCharwainfix =V13V6Oainfix =V12V6aAltVVainfix =V15V6Oainfix =V14V6aConcatVVainfix =V16V6aStarVV0IamemaConsV1V17V7qamemV17V8FFACfaEmptyfaEpsilonfaCharwainfix =V19V7Oainfix =V18V7aAltVVainfix =V21V7Oainfix =V20V7aConcatVVainfix =V22V7aStarVV0aAltVViamemaConsV1V27V0qamemV27aConcatV26V24FIamemaConsV1V28V23qamemV28V26FFACfaEmptyfaEpsilonfaCharwainfix =V30V23Oainfix =V29V23aAltVVainfix =V32V23Oainfix =V31V23aConcatVVainfix =V33V23aStarVV0amemaConsV1V36V0qamemV36aAltaConcatV35V24V34FIamemaConsV1V37V23qamemV37V35FFACfaEmptyfaEpsilonfaCharwainfix =V39V23Oainfix =V38V23aAltVVainfix =V41V23Oainfix =V40V23aConcatVVainfix =V42V23aStarVV0IamemaConsV1V43V24qamemV43V34FFACfaEmptyfaEpsilonfaCharwainfix =V45V24Oainfix =V44V24aAltVVainfix =V47V24Oainfix =V46V24aConcatVVainfix =V48V24aStarVV0ainfix =V25aTrueIamemaNilV23qainfix =V25aTrueFaConcatVVamemaConsV1V51V0qamemV51aConcatV50V0FIamemaConsV1V52V49qamemV52V50FFACfaEmptyfaEpsilonfaCharwainfix =V54V49Oainfix =V53V49aAltVVainfix =V56V49Oainfix =V55V49aConcatVVainfix =V57V49aStarVV0aStarVV0F">
...@@ -391,9 +386,9 @@ ...@@ -391,9 +386,9 @@
<goal <goal
name="WP_parameter residual.1" name="WP_parameter residual.1"
locfile="../residual.mlw" locfile="../residual.mlw"
loclnum="36" loccnumb="10" loccnume="18" loclnum="35" loccnumb="10" loccnume="18"
expl="1. postcondition" expl="1. postcondition"
sum="9c87665e1b7f2f804a05ee9e8834e1c9" sum="17ddf4a24eabc9002f86a438d7b45e0d"
proved="true" proved="true"
expanded="false" expanded="false"
shape="postconditionCamemaConsV1V2V0qamemV2aEmptyFaEmptytaEpsilontaCharVtaAltVVtaConcatVVtaStarVV0F"> shape="postconditionCamemaConsV1V2V0qamemV2aEmptyFaEmptytaEpsilontaCharVtaAltVVtaConcatVVtaStarVV0F">
...@@ -419,9 +414,9 @@ ...@@ -419,9 +414,9 @@
<goal <goal
name="WP_parameter residual.2" name="WP_parameter residual.2"
locfile="../residual.mlw" locfile="../residual.mlw"
loclnum="36" loccnumb="10" loccnume="18" loclnum="35" loccnumb="10" loccnume="18"
expl="2. postcondition" expl="2. postcondition"
sum="ec169ebf7207a01d88f9ee76a2c13fce" sum="6a53e1eb138d1cb3289111a40c6cf8a3"
proved="true" proved="true"
expanded="false" expanded="false"
shape="postconditionCtaEmptyamemaConsV1V2V0qamemV2aEmptyFaEpsilontaCharVtaAltVVtaConcatVVtaStarVV0F"> shape="postconditionCtaEmptyamemaConsV1V2V0qamemV2aEmptyFaEpsilontaCharVtaAltVVtaConcatVVtaStarVV0F">
...@@ -447,9 +442,9 @@ ...@@ -447,9 +442,9 @@
<goal <goal
name="WP_parameter residual.3" name="WP_parameter residual.3"
locfile="../residual.mlw" locfile="../residual.mlw"
loclnum="36" loccnumb="10" loccnume="18" loclnum="35" loccnumb="10" loccnume="18"
expl="3. postcondition" expl="3. postcondition"
sum="2dfd24af8f1c6cce5b220991c2148e86" sum="964e4ff140e8414ef846420e38687dce"
proved="true" proved="true"
expanded="false" expanded="false"
shape="postconditionCtaEmptytaEpsilonamemaConsV1V3V0qamemV3iaEmptyaEpsilonainfix =V1V2FaCharVtaAltVVtaConcatVVtaStarVV0F"> shape="postconditionCtaEmptytaEpsilonamemaConsV1V3V0qamemV3iaEmptyaEpsilonainfix =V1V2FaCharVtaAltVVtaConcatVVtaStarVV0F">
...@@ -475,9 +470,9 @@ ...@@ -475,9 +470,9 @@
<goal <goal
name="WP_parameter residual.4" name="WP_parameter residual.4"
locfile="../residual.mlw" locfile="../residual.mlw"
loclnum="36" loccnumb="10" loccnume="18" loclnum="35" loccnumb="10" loccnume="18"
expl="4. variant decrease" expl="4. variant decrease"
sum="3c4a7f9f6cd9fb47ce516ac236cd6a91" sum="2197599faa3d4baef02b4243d0290cc2"
proved="true" proved="true"
expanded="false" expanded="false"
shape="variant decreaseCtaEmptytaEpsilontaCharVCfaEmptyfaEpsilonfaCharwainfix =V6V4Oainfix =V5V4aAltVVainfix =V8V4Oainfix =V7V4aConcatVVainfix =V9V4aStarVV0aAltVVtaConcatVVtaStarVV0F"> shape="variant decreaseCtaEmptytaEpsilontaCharVCfaEmptyfaEpsilonfaCharwainfix =V6V4Oainfix =V5V4aAltVVainfix =V8V4Oainfix =V7V4aConcatVVainfix =V9V4aStarVV0aAltVVtaConcatVVtaStarVV0F">
...@@ -519,9 +514,9 @@ ...@@ -519,9 +514,9 @@
<goal <goal
name="WP_parameter residual.5" name="WP_parameter residual.5"
locfile="../residual.mlw" locfile="../residual.mlw"
loclnum="36" loccnumb="10" loccnume="18" loclnum="35" loccnumb="10" loccnume="18"
expl="5. variant decrease" expl="5. variant decrease"
sum="d7265ab85e570fb8aa0c134a7200110e" sum="dc7f44578ce3a7a3ab081151fa0149c6"
proved="true" proved="true"
expanded="false" expanded="false"
shape="variant decreaseCtaEmptytaEpsilontaCharVCfaEmptyfaEpsilonfaCharwainfix =V7V3Oainfix =V6V3aAltVVainfix =V9V3Oainfix =V8V3aConcatVVainfix =V10V3aStarVV0IamemaConsV1V11V4qamemV11V5FFaAltVVtaConcatVVtaStarVV0F"> shape="variant decreaseCtaEmptytaEpsilontaCharVCfaEmptyfaEpsilonfaCharwainfix =V7V3Oainfix =V6V3aAltVVainfix =V9V3Oainfix =V8V3aConcatVVainfix =V10V3aStarVV0IamemaConsV1V11V4qamemV11V5FFaAltVVtaConcatVVtaStarVV0F">
...@@ -563,9 +558,9 @@ ...@@ -563,9 +558,9 @@
<goal <goal
name="WP_parameter residual.6" name="WP_parameter residual.6"
locfile="../residual.mlw" locfile="../residual.mlw"
loclnum="36" loccnumb="10" loccnume="18" loclnum="35" loccnumb="10" loccnume="18"
expl="6. postcondition" expl="6. postcondition"
sum="4ee6c16a3c916b261df38881a403fa6d" sum="3dc976da6d8e7a1be789fffddff69988"
proved="true" proved="true"
expanded="false" expanded="false"
shape="postconditionCtaEmptytaEpsilontaCharVamemaConsV1V7V0qamemV7aAltV6V5FIamemaConsV1V8V3qamemV8V6FFIamemaConsV1V9V4qamemV9V5FFaAltVVtaConcatVVtaStarVV0F"> shape="postconditionCtaEmptytaEpsilontaCharVamemaConsV1V7V0qamemV7aAltV6V5FIamemaConsV1V8V3qamemV8V6FFIamemaConsV1V9V4qamemV9V5FFaAltVVtaConcatVVtaStarVV0F">
...@@ -591,9 +586,9 @@ ...@@ -591,9 +586,9 @@
<goal <goal
name="WP_parameter residual.7" name="WP_parameter residual.7"
locfile="../residual.mlw" locfile="../residual.mlw"
loclnum="36" loccnumb="10" loccnume="18" loclnum="35" loccnumb="10" loccnume="18"
expl="7. variant decrease" expl="7. variant decrease"
sum="6a9fd80dfc13295c0e16feca2ab9a666" sum="5d98a64f6f47b2aeddf40fd5bea5cc54"
proved="true" proved="true"
expanded="false" expanded="false"
shape="variant decreaseCtaEmptytaEpsilontaCharVtaAltVVCfaEmptyfaEpsilonfaCharwainfix =V9V6Oainfix =V8V6aAltVVainfix =V11V6Oainfix =V10V6aConcatVVainfix =V12V6aStarVV0Iainfix =V7aTrueIamemaNilV5qainfix =V7aTrueFaConcatVVtaStarVV0F"> shape="variant decreaseCtaEmptytaEpsilontaCharVtaAltVVCfaEmptyfaEpsilonfaCharwainfix =V9V6Oainfix =V8V6aAltVVainfix =V11V6Oainfix =V10V6aConcatVVainfix =V12V6aStarVV0Iainfix =V7aTrueIamemaNilV5qainfix =V7aTrueFaConcatVVtaStarVV0F">
...@@ -635,9 +630,9 @@ ...@@ -635,9 +630,9 @@
<goal <goal
name="WP_parameter residual.8" name="WP_parameter residual.8"
locfile="../residual.mlw" locfile="../residual.mlw"
loclnum="36" loccnumb="10" loccnume="18" loclnum="35" loccnumb="10" loccnume="18"
expl="8. variant decrease" expl="8. variant decrease"
sum="48b8762c0a6fc27adc43997e1c0f3762" sum="f6889b7df03846fcb355520dfb0ec87f"
proved="true" proved="true"
expanded="false" expanded="false"
shape="variant decreaseCtaEmptytaEpsilontaCharVtaAltVVCfaEmptyfaEpsilonfaCharwainfix =V10V5Oainfix =V9V5aAltVVainfix =V12V5Oainfix =V11V5aConcatVVainfix =V13V5aStarVV0IamemaConsV1V14V6qamemV14V8FFIainfix =V7aTrueIamemaNilV5qainfix =V7aTrueFaConcatVVtaStarVV0F"> shape="variant decreaseCtaEmptytaEpsilontaCharVtaAltVVCfaEmptyfaEpsilonfaCharwainfix =V10V5Oainfix =V9V5aAltVVainfix =V12V5Oainfix =V11V5aConcatVVainfix =V13V5aStarVV0IamemaConsV1V14V6qamemV14V8FFIainfix =V7aTrueIamemaNilV5qainfix =V7aTrueFaConcatVVtaStarVV0F">
...@@ -679,9 +674,9 @@ ...@@ -679,9 +674,9 @@
<goal <goal
name="WP_parameter residual.9" name="WP_parameter residual.9"
locfile="../residual.mlw" locfile="../residual.mlw"
loclnum="36" loccnumb="10" loccnume="18" loclnum="35" loccnumb="10" loccnume="18"
expl="9. postcondition" expl="9. postcondition"
sum="6b564ecb96ea4c23f81ab948812f5f2a" sum="3b58324d659f72ff18cc4b5ec6560ba8"
proved="true" proved="true"
expanded="false" expanded="false"
shape="postconditionCtaEmptytaEpsilontaCharVtaAltVVamemaConsV1V10V0qamemV10aAltaConcatV9V6V8FIamemaConsV1V11V5qamemV11V9FFIamemaConsV1V12V6qamemV12V8FFIainfix =V7aTrueIamemaNilV5qainfix =V7aTrueFaConcatVVtaStarVV0F"> shape="postconditionCtaEmptytaEpsilontaCharVtaAltVVamemaConsV1V10V0qamemV10aAltaConcatV9V6V8FIamemaConsV1V11V5qamemV11V9FFIamemaConsV1V12V6qamemV12V8FFIainfix =V7aTrueIamemaNilV5qainfix =V7aTrueFaConcatVVtaStarVV0F">
...@@ -700,9 +695,9 @@ ...@@ -700,9 +695,9 @@
<goal <goal
name="WP_parameter residual.10" name="WP_parameter residual.10"
locfile="../residual.mlw" locfile="../residual.mlw"
loclnum="36" loccnumb="10" loccnume="18" loclnum="35" loccnumb="10" loccnume="18"
expl="10. variant decrease" expl="10. variant decrease"
sum="91622365ba24cceb584e27645c3e5e72" sum="763004c4de603b377629dcd16c46a4d4"
proved="true" proved="true"
expanded="false" expanded="false"
shape="variant decreaseCtaEmptytaEpsilontaCharVtaAltVVCfaEmptyfaEpsilonfaCharwainfix =V9V5Oainfix =V8V5aAltVVainfix =V11V5Oainfix =V10V5aConcatVVainfix =V12V5aStarVV0INainfix =V7aTrueIamemaNilV5qainfix =V7aTrueFaConcatVVtaStarVV0F"> shape="variant decreaseCtaEmptytaEpsilontaCharVtaAltVVCfaEmptyfaEpsilonfaCharwainfix =V9V5Oainfix =V8V5aAltVVainfix =V11V5Oainfix =V10V5aConcatVVainfix =V12V5aStarVV0INainfix =V7aTrueIamemaNilV5qainfix =V7aTrueFaConcatVVtaStarVV0F">
...@@ -744,9 +739,9 @@ ...@@ -744,9 +739,9 @@
<goal <goal
name="WP_parameter residual.11" name="WP_parameter residual.11"
locfile="../residual.mlw" locfile="../residual.mlw"
loclnum="36" loccnumb="10" loccnume="18" loclnum="35" loccnumb="10" loccnume="18"
expl="11. postcondition" expl="11. postcondition"
sum="5aee0dcf337939ded86251b454d0ca6b" sum="dac274ab4786b8dad4826002c5738e9b"
proved="true" proved="true"
expanded="false" expanded="false"
shape="postconditionCtaEmptytaEpsilontaCharVtaAltVVamemaConsV1V9V0qamemV9aConcatV8V6FIamemaConsV1V10V5qamemV10V8FFINainfix =V7aTrueIamemaNilV5qainfix =V7aTrueFaConcatVVtaStarVV0F"> shape="postconditionCtaEmptytaEpsilontaCharVtaAltVVamemaConsV1V9V0qamemV9aConcatV8V6FIamemaConsV1V10V5qamemV10V8FFINainfix =V7aTrueIamemaNilV5qainfix =V7aTrueFaConcatVVtaStarVV0F">
...@@ -765,9 +760,9 @@ ...@@ -765,9 +760,9 @@
<goal <goal
name="WP_parameter residual.12" name="WP_parameter residual.12"
locfile="../residual.mlw" locfile="../residual.mlw"
loclnum="36" loccnumb="10" loccnume="18" loclnum="35" loccnumb="10" loccnume="18"
expl="12. variant decrease" expl="12. variant decrease"
sum="c6f35dbcfd674e8b087bac8cd287352b" sum="57a69961a3efba6a4983c7ef19b9f360"
proved="true" proved="true"
expanded="false" expanded="false"
shape="variant decreaseCtaEmptytaEpsilontaCharVtaAltVVtaConcatVVCfaEmptyfaEpsilonfaCharwainfix =V9V7Oainfix =V8V7aAltVVainfix =V11V7Oainfix =V10V7aConcatVVainfix =V12V7aStarVV0aStarVV0F"> shape="variant decreaseCtaEmptytaEpsilontaCharVtaAltVVtaConcatVVCfaEmptyfaEpsilonfaCharwainfix =V9V7Oainfix =V8V7aAltVVainfix =V11V7Oainfix =V10V7aConcatVVainfix =V12V7aStarVV0aStarVV0F">
...@@ -809,11 +804,11 @@ ...@@ -809,11 +804,11 @@
<goal <goal
name="WP_parameter residual.13" name="WP_parameter residual.13"
locfile="../residual.mlw" locfile="../residual.mlw"
loclnum="36" loccnumb="10" loccnume="18" loclnum="35" loccnumb="10" loccnume="18"
expl="13. postcondition" expl="13. postcondition"
sum="eec0157cdaeb30cc3b00f04b3474b857" sum="afb3725c00066a247666efe39d355d11"
proved="true" proved="true"
expanded="false" expanded="true"
shape="postconditionCtaEmptytaEpsilontaCharVtaAltVVtaConcatVVamemaConsV1V9V0qamemV9aConcatV8V0FIamemaConsV1V10V7qamemV10V8FFaStarVV0F"> shape="postconditionCtaEmptytaEpsilontaCharVtaAltVVtaConcatVVamemaConsV1V9V0qamemV9aConcatV8V0FIamemaConsV1V10V7qamemV10V8FFaStarVV0F">
<label <label
name="expl:VC for residual"/> name="expl:VC for residual"/>
...@@ -824,7 +819,7 @@ ...@@ -824,7 +819,7 @@
edited="residual_Residuals_WP_parameter_residual_2.v" edited="residual_Residuals_WP_parameter_residual_2.v"
obsolete="false" obsolete="false"
archived="false"> archived="false">
<result status="valid" time="0.90"/> <result status="valid" time="0.89"/>
</proof> </proof>
</goal> </goal>
</transf> </transf>
...@@ -832,9 +827,9 @@ ...@@ -832,9 +827,9 @@
<goal <goal
name="WP_parameter decide_mem" name="WP_parameter decide_mem"
locfile="../residual.mlw" locfile="../residual.mlw"
loclnum="52" loccnumb="10" loccnume="20" loclnum="51" loccnumb="10" loccnume="20"
expl="VC for decide_mem" expl="VC for decide_mem"
sum="3f1f64a9984d99d9072281d630d411e5" sum="6865eaacca47b2cbd4c8aecbc0c4fbc1"
proved="true" proved="true"
expanded="true" expanded="true"
shape="CamemV0V1qainfix =V2aTrueIamemaNilV1qainfix =V2aTrueFaNilamemV0V1qainfix =V6aTrueIamemV4V5qainfix =V6aTrueFACfaNilainfix =V7V4aConswVV0IamemaConsV3V8V1qamemV8V5FFaConsVVV0F"> shape="CamemV0V1qainfix =V2aTrueIamemaNilV1qainfix =V2aTrueFaNilamemV0V1qainfix =V6aTrueIamemV4V5qainfix =V6aTrueFACfaNilainfix =V7V4aConswVV0IamemaConsV3V8V1qamemV8V5FFaConsVVV0F">
...@@ -847,9 +842,9 @@ ...@@ -847,9 +842,9 @@
<goal <goal
name="WP_parameter decide_mem.1" name="WP_parameter decide_mem.1"
locfile="../residual.mlw" locfile="../residual.mlw"
loclnum="52" loccnumb="10" loccnume="20" loclnum="51" loccnumb="10" loccnume="20"
expl="1. postcondition" expl="1. postcondition"
sum="ad72b15c6feb566e376a8efea56063d4" sum="c8ad3e884552de0d933883fc70144001"
proved="true" proved="true"
expanded="false" expanded="false"
shape="postconditionCamemV0V1qainfix =V2aTrueIamemaNilV1qainfix =V2aTrueFaNiltaConsVVV0F"> shape="postconditionCamemV0V1qainfix =V2aTrueIamemaNilV1qainfix =V2aTrueFaNiltaConsVVV0F">
...@@ -867,9 +862,9 @@ ...@@ -867,9 +862,9 @@
<goal <goal
name="WP_parameter decide_mem.2" name="WP_parameter decide_mem.2"
locfile="../residual.mlw" locfile="../residual.mlw"
loclnum="52" loccnumb="10" loccnume="20" loclnum="51" loccnumb="10" loccnume="20"
expl="2. variant decrease" expl="2. variant decrease"
sum="de05bd5f6351b3c5deb3093dd4ad29df" sum="eab4c8847a6a1ee4284cd7ca686c787f"
proved="true" proved="true"
expanded="false" expanded="false"
shape="variant decreaseCtaNilCfaNilainfix =V5V3aConswVV0IamemaConsV2V6V1qamemV6V4FFaConsVVV0F"> shape="variant decreaseCtaNilCfaNilainfix =V5V3aConswVV0IamemaConsV2V6V1qamemV6V4FFaConsVVV0F">
...@@ -887,9 +882,9 @@ ...@@ -887,9 +882,9 @@
<goal <goal
name="WP_parameter decide_mem.3" name="WP_parameter decide_mem.3"
locfile="../residual.mlw" locfile="../residual.mlw"
loclnum="52" loccnumb="10" loccnume="20" loclnum="51" loccnumb="10" loccnume="20"
expl="3. postcondition" expl="3. postcondition"
sum="e62b5ae69cb7f2bbd4962ebcfea337c4" sum="e170fcb8205f1973079b7c04a7224db2"
proved="true" proved="true"
expanded="false" expanded="false"
shape="postconditionCtaNilamemV0V1qainfix =V5aTrueIamemV3V4qainfix =V5aTrueFIamemaConsV2V6V1qamemV6V4FFaConsVVV0F"> shape="postconditionCtaNilamemV0V1qainfix =V5aTrueIamemV3V4qainfix =V5aTrueFIamemaConsV2V6V1qamemV6V4FFaConsVVV0F">
...@@ -910,15 +905,15 @@ ...@@ -910,15 +905,15 @@
<theory <theory
name="Test" name="Test"
locfile="../residual.mlw" locfile="../residual.mlw"
loclnum="64" loccnumb="7" loccnume="11" loclnum="63" loccnumb="7" loccnume="11"
verified="true" verified="true"
expanded="true"> expanded="true">
<goal <goal
name="WP_parameter test_astar" name="WP_parameter test_astar"
locfile="../residual.mlw" locfile="../residual.mlw"
loclnum="76" loccnumb="6" loccnume="16" loclnum="75" loccnumb="6" loccnume="16"
expl="VC for test_astar" expl="VC for test_astar"
sum="17ab4fed05431da66ddae0b9dbf12c25" sum="5778320b52b0388224d8d16acb66c20f"
proved="true" proved="true"
expanded="true" expanded="true"
shape="t"> shape="t">
......