Commit 3b3244c9 authored by Léon Gondelman's avatar Léon Gondelman

examples: random-access-lists with efficient update (version with sequences)

parent 2f22886f
......@@ -53,13 +53,13 @@ module RandomAccessList
| One _ l1 -> 1 + 2 * size l1
end
let rec add (x: 'a) (l: ral 'a) : ral 'a
let rec cons (x: 'a) (l: ral 'a) : ral 'a
variant { l }
ensures { elements result = Cons x (elements l) }
= match l with
| Empty -> One x Empty
| Zero l1 -> One x l1
| One y l1 -> Zero (add (x, y) l1)
| One y l1 -> Zero (cons (x, y) l1)
end
let rec lemma nth_flatten (i: int) (l: list ('a, 'a))
......@@ -74,14 +74,14 @@ module RandomAccessList
| Cons _ r -> if i > 0 then nth_flatten (i-1) r
end
let rec get (i: int) (l: ral 'a) : 'a
let rec lookup (i: int) (l: ral 'a) : 'a
requires { 0 <= i < length (elements l) }
variant { i, l }
ensures { nth i (elements l) = Some result }
= match l with
| Empty -> absurd
| One x l1 -> if i = 0 then x else get (i-1) (Zero l1)
| Zero l1 -> let (x0, x1) = get (div i 2) l1 in
| One x l1 -> if i = 0 then x else lookup (i-1) (Zero l1)
| Zero l1 -> let (x0, x1) = lookup (div i 2) l1 in
if mod i 2 = 0 then x0 else x1
end
......@@ -95,10 +95,10 @@ module RandomAccessList
= match l with
| Empty -> absurd
| One _ l1 -> Zero l1
| Zero l1 -> let (_, x1) = get 0 l1 in One x1 (tail l1)
| Zero l1 -> let (_, x1) = lookup 0 l1 in One x1 (tail l1)
end
let rec set (i: int) (y: 'a) (l: ral 'a) : ral 'a
let rec update (i: int) (y: 'a) (l: ral 'a) : ral 'a
requires { 0 <= i < length (elements l) }
variant { i, l}
ensures { nth i (elements result) = Some y}
......@@ -112,13 +112,13 @@ module RandomAccessList
= match l with
| Empty -> absurd
| One x l1 -> if i = 0 then One y l1 else
match set (i-1) y (Zero l1) with
match update (i-1) y (Zero l1) with
| Empty | One _ _ -> absurd
| Zero l1 -> One x l1
end
| Zero l1 ->
let (x0, x1) = get (div i 2) l1 in
let l1' = set (div i 2) (if mod i 2 = 0 then (y,x1) else (x0,y)) l1 in
let (x0, x1) = lookup (div i 2) l1 in
let l1' = update (div i 2) (if mod i 2 = 0 then (y,x1) else (x0,y)) l1 in
assert { forall j. 0 <= j < length (elements l) -> j <> i ->
match nth (div j 2) (elements l1) with
| None -> false
......@@ -158,13 +158,13 @@ module RAL
let cons (x: 'a) (s: t 'a) : t 'a
ensures { result.l = Cons x s.l }
=
{ r = add x s.r; l = Cons x s.l }
{ r = cons x s.r; l = Cons x s.l }
let get (i: int) (s: t 'a) : 'a
let lookup (i: int) (s: t 'a) : 'a
requires { 0 <= i < length s.l }
ensures { Some result = nth i s.l }
=
get i s.r
lookup i s.r
end
......@@ -203,23 +203,23 @@ module RandomAccessListWithSeq
| One _ l1 -> 1 + 2 * size l1
end
let rec add (x: 'a) (l: ral 'a) : ral 'a
let rec cons (x: 'a) (l: ral 'a) : ral 'a
variant { l }
ensures { elements result == cons x (elements l) }
= match l with
| Empty -> One x Empty
| Zero l1 -> One x l1
| One y l1 -> Zero (add (x, y) l1)
| One y l1 -> Zero (cons (x, y) l1)
end
let rec get (i: int) (l: ral 'a) : 'a
let rec lookup (i: int) (l: ral 'a) : 'a
requires { 0 <= i < length (elements l) }
variant { i, l }
ensures { (elements l)[i] = result }
= match l with
| Empty -> absurd
| One x l1 -> if i = 0 then x else get (i-1) (Zero l1)
| Zero l1 -> let (x0, x1) = get (div i 2) l1 in
| One x l1 -> if i = 0 then x else lookup (i-1) (Zero l1)
| Zero l1 -> let (x0, x1) = lookup (div i 2) l1 in
if mod i 2 = 0 then x0 else x1
end
......@@ -230,24 +230,33 @@ module RandomAccessListWithSeq
= match l with
| Empty -> absurd
| One _ l1 -> Zero l1
| Zero l1 -> let (_, x1) = get 0 l1 in One x1 (tail l1)
| Zero l1 -> let (_, x1) = lookup 0 l1 in One x1 (tail l1)
end
let rec set (i: int) (y: 'a) (l: ral 'a) : ral 'a
function aux (i: int) (f: 'a -> 'a) : ('a,'a) -> ('a, 'a) =
\ z. let (x,y) = z in if mod i 2 = 0 then (f x, y) else (x, f y)
function setf (s: seq 'a) (i:int) (f: 'a -> 'a) : seq 'a =
set s i (f s[i])
let rec fupdate_aux (f: 'a -> 'a) (i: int) (l: ral 'a) : ral 'a
requires { 0 <= i < length (elements l) }
variant { i, l}
ensures { elements result == set (elements l) i y}
ensures { elements result == setf (elements l) i f}
= match l with
| Empty -> absurd
| One x l1 ->
if i = 0 then One y l1 else
match set (i-1) y (Zero l1) with
| Empty | One _ _ -> absurd
| Zero l1 -> One x l1
end
| Zero l1 ->
let (x0, x1) = get (div i 2) l1 in
Zero (set (div i 2) (if mod i 2 = 0 then (y,x1) else (x0,y)) l1)
| One x l1 -> if i = 0 then One (f x) l1 else
cons x (fupdate_aux f (i-1) (Zero l1))
| Zero l1 -> Zero (fupdate_aux (aux i f) (div i 2) l1)
end
function f (y: 'a) : 'a -> 'a = \ _. y
let fupdate (i:int) (y: 'a) (l: ral 'a) : ral 'a
requires { 0 <= i < length (elements l) }
ensures { elements result == set (elements l) i y}
= fupdate_aux (f y) i l
end
......@@ -2,42 +2,42 @@
<!DOCTYPE why3session PUBLIC "-//Why3//proof session v5//EN"
"http://why3.lri.fr/why3session.dtd">
<why3session shape_version="4">
<prover id="0" name="Alt-Ergo" version="0.99.1" timelimit="6" memlimit="1000"/>
<prover id="0" name="Alt-Ergo" version="0.99.1" timelimit="5" memlimit="1000"/>
<prover id="1" name="CVC4" version="1.4" timelimit="6" memlimit="1000"/>
<prover id="4" name="Z3" version="4.3.1" timelimit="10" memlimit="1000"/>
<prover id="4" name="Z3" version="4.3.1" timelimit="5" memlimit="1000"/>
<prover id="6" name="CVC4" version="1.3" timelimit="1" memlimit="1000"/>
<prover id="8" name="Alt-Ergo" version="0.95.2" timelimit="15" memlimit="1000"/>
<file name="../random_access_list.mlw" expanded="true">
<theory name="RandomAccessList" sum="d27743d57c1d4ea4700ca93cff755188" expanded="true">
<theory name="RandomAccessList" sum="d27743d57c1d4ea4700ca93cff755188">
<goal name="WP_parameter length_flatten" expl="VC for length_flatten">
<transf name="split_goal_wp">
<goal name="WP_parameter length_flatten.1" expl="1. variant decrease">
<proof prover="0" timelimit="5"><result status="valid" time="0.02" steps="25"/></proof>
<proof prover="0"><result status="valid" time="0.02" steps="25"/></proof>
</goal>
<goal name="WP_parameter length_flatten.2" expl="2. postcondition">
<proof prover="1" timelimit="5"><result status="valid" time="0.02"/></proof>
</goal>
<goal name="WP_parameter length_flatten.3" expl="3. postcondition">
<proof prover="0" timelimit="5"><result status="valid" time="0.02" steps="6"/></proof>
<proof prover="0"><result status="valid" time="0.02" steps="6"/></proof>
</goal>
</transf>
</goal>
<goal name="WP_parameter size" expl="VC for size">
<proof prover="0"><result status="valid" time="0.02" steps="68"/></proof>
<proof prover="0" timelimit="6"><result status="valid" time="0.02" steps="68"/></proof>
</goal>
<goal name="WP_parameter add" expl="VC for add">
<proof prover="0"><result status="valid" time="0.02" steps="70"/></proof>
<goal name="WP_parameter cons" expl="VC for cons">
<proof prover="0"><result status="valid" time="0.03" steps="70"/></proof>
</goal>
<goal name="WP_parameter nth_flatten" expl="VC for nth_flatten">
<transf name="split_goal_wp">
<goal name="WP_parameter nth_flatten.1" expl="1. postcondition">
<proof prover="0"><result status="valid" time="0.02" steps="11"/></proof>
<proof prover="0" timelimit="6"><result status="valid" time="0.02" steps="11"/></proof>
</goal>
<goal name="WP_parameter nth_flatten.2" expl="2. variant decrease">
<proof prover="0"><result status="valid" time="0.02" steps="21"/></proof>
<proof prover="0" timelimit="6"><result status="valid" time="0.02" steps="21"/></proof>
</goal>
<goal name="WP_parameter nth_flatten.3" expl="3. precondition">
<proof prover="0"><result status="valid" time="0.02" steps="12"/></proof>
<proof prover="0" timelimit="6"><result status="valid" time="0.02" steps="12"/></proof>
</goal>
<goal name="WP_parameter nth_flatten.4" expl="4. postcondition">
<proof prover="6"><result status="valid" time="0.24"/></proof>
......@@ -47,124 +47,124 @@
</goal>
</transf>
</goal>
<goal name="WP_parameter get" expl="VC for get">
<proof prover="0"><result status="valid" time="0.34" steps="410"/></proof>
<goal name="WP_parameter lookup" expl="VC for lookup">
<proof prover="0"><result status="valid" time="0.47" steps="410"/></proof>
</goal>
<goal name="WP_parameter tail" expl="VC for tail">
<transf name="split_goal_wp">
<goal name="WP_parameter tail.1" expl="1. unreachable point">
<proof prover="0"><result status="valid" time="0.01" steps="3"/></proof>
<proof prover="0" timelimit="6"><result status="valid" time="0.01" steps="3"/></proof>
</goal>
<goal name="WP_parameter tail.2" expl="2. postcondition">
<proof prover="0"><result status="valid" time="0.02" steps="34"/></proof>
<proof prover="0" timelimit="6"><result status="valid" time="0.02" steps="34"/></proof>
</goal>
<goal name="WP_parameter tail.3" expl="3. precondition">
<proof prover="0"><result status="valid" time="0.01" steps="8"/></proof>
<proof prover="0" timelimit="6"><result status="valid" time="0.01" steps="8"/></proof>
</goal>
<goal name="WP_parameter tail.4" expl="4. variant decrease">
<proof prover="0"><result status="valid" time="0.01" steps="22"/></proof>
<proof prover="0" timelimit="6"><result status="valid" time="0.01" steps="22"/></proof>
</goal>
<goal name="WP_parameter tail.5" expl="5. precondition">
<proof prover="0"><result status="valid" time="0.02" steps="7"/></proof>
<proof prover="0" timelimit="6"><result status="valid" time="0.02" steps="7"/></proof>
</goal>
<goal name="WP_parameter tail.6" expl="6. postcondition">
<proof prover="1"><result status="valid" time="0.07"/></proof>
</goal>
</transf>
</goal>
<goal name="WP_parameter set" expl="VC for set" expanded="true">
<transf name="split_goal_wp" expanded="true">
<goal name="WP_parameter set.1" expl="1. unreachable point">
<proof prover="8" timelimit="5"><result status="valid" time="0.02" steps="7"/></proof>
<goal name="WP_parameter update" expl="VC for update">
<transf name="split_goal_wp">
<goal name="WP_parameter update.1" expl="1. unreachable point">
<proof prover="0"><result status="valid" time="0.02" steps="7"/></proof>
</goal>
<goal name="WP_parameter set.2" expl="2. postcondition">
<proof prover="8" timelimit="10"><result status="valid" time="0.01" steps="22"/></proof>
<goal name="WP_parameter update.2" expl="2. postcondition">
<proof prover="0"><result status="valid" time="0.01" steps="22"/></proof>
</goal>
<goal name="WP_parameter set.3" expl="3. postcondition">
<proof prover="8" timelimit="5"><result status="valid" time="0.02" steps="46"/></proof>
<goal name="WP_parameter update.3" expl="3. postcondition">
<proof prover="0"><result status="valid" time="0.02" steps="37"/></proof>
</goal>
<goal name="WP_parameter set.4" expl="4. postcondition">
<proof prover="8" timelimit="5"><result status="valid" time="0.02" steps="40"/></proof>
<goal name="WP_parameter update.4" expl="4. postcondition">
<proof prover="0"><result status="valid" time="0.02" steps="33"/></proof>
</goal>
<goal name="WP_parameter set.5" expl="5. postcondition">
<proof prover="8" timelimit="5"><result status="valid" time="0.02" steps="18"/></proof>
<goal name="WP_parameter update.5" expl="5. postcondition">
<proof prover="0"><result status="valid" time="0.02" steps="17"/></proof>
</goal>
<goal name="WP_parameter set.6" expl="6. variant decrease">
<proof prover="8" timelimit="5"><result status="valid" time="0.02" steps="4"/></proof>
<goal name="WP_parameter update.6" expl="6. variant decrease">
<proof prover="0"><result status="valid" time="0.02" steps="4"/></proof>
</goal>
<goal name="WP_parameter set.7" expl="7. precondition">
<proof prover="8" timelimit="5"><result status="valid" time="0.03" steps="31"/></proof>
<goal name="WP_parameter update.7" expl="7. precondition">
<proof prover="0"><result status="valid" time="0.02" steps="32"/></proof>
</goal>
<goal name="WP_parameter set.8" expl="8. unreachable point">
<proof prover="8" timelimit="5"><result status="valid" time="0.02" steps="22"/></proof>
<goal name="WP_parameter update.8" expl="8. unreachable point">
<proof prover="0"><result status="valid" time="0.02" steps="22"/></proof>
</goal>
<goal name="WP_parameter set.9" expl="9. unreachable point">
<proof prover="8" timelimit="5"><result status="valid" time="0.02" steps="23"/></proof>
<goal name="WP_parameter update.9" expl="9. unreachable point">
<proof prover="0"><result status="valid" time="0.02" steps="23"/></proof>
</goal>
<goal name="WP_parameter set.10" expl="10. postcondition">
<proof prover="8" timelimit="5"><result status="valid" time="0.03" steps="38"/></proof>
<goal name="WP_parameter update.10" expl="10. postcondition">
<proof prover="0"><result status="valid" time="0.02" steps="39"/></proof>
</goal>
<goal name="WP_parameter set.11" expl="11. postcondition">
<proof prover="8" timelimit="10"><result status="valid" time="0.02" steps="99"/></proof>
<goal name="WP_parameter update.11" expl="11. postcondition">
<proof prover="0"><result status="valid" time="0.04" steps="87"/></proof>
</goal>
<goal name="WP_parameter set.12" expl="12. postcondition">
<proof prover="8" timelimit="5"><result status="valid" time="0.03" steps="60"/></proof>
<goal name="WP_parameter update.12" expl="12. postcondition">
<proof prover="0"><result status="valid" time="0.03" steps="58"/></proof>
</goal>
<goal name="WP_parameter set.13" expl="13. postcondition">
<proof prover="8" timelimit="5"><result status="valid" time="0.02" steps="36"/></proof>
<goal name="WP_parameter update.13" expl="13. postcondition">
<proof prover="0"><result status="valid" time="0.02" steps="29"/></proof>
</goal>
<goal name="WP_parameter set.14" expl="14. precondition">
<proof prover="8" timelimit="5"><result status="valid" time="0.07" steps="40"/></proof>
<goal name="WP_parameter update.14" expl="14. precondition">
<proof prover="0"><result status="valid" time="0.11" steps="69"/></proof>
</goal>
<goal name="WP_parameter set.15" expl="15. variant decrease">
<proof prover="8" timelimit="5"><result status="valid" time="0.02" steps="42"/></proof>
<goal name="WP_parameter update.15" expl="15. variant decrease">
<proof prover="0"><result status="valid" time="0.02" steps="43"/></proof>
</goal>
<goal name="WP_parameter set.16" expl="16. precondition">
<proof prover="8" timelimit="5"><result status="valid" time="0.01" steps="6"/></proof>
<goal name="WP_parameter update.16" expl="16. precondition">
<proof prover="0"><result status="valid" time="0.02" steps="6"/></proof>
</goal>
<goal name="WP_parameter set.17" expl="17. assertion" expanded="true">
<transf name="split_goal_wp" expanded="true">
<goal name="WP_parameter set.17.1" expl="1. assertion">
<proof prover="8" timelimit="3"><result status="valid" time="0.87" steps="195"/></proof>
<goal name="WP_parameter update.17" expl="17. assertion">
<transf name="split_goal_wp">
<goal name="WP_parameter update.17.1" expl="1. assertion">
<proof prover="0"><result status="valid" time="2.06" steps="370"/></proof>
</goal>
<goal name="WP_parameter set.17.2" expl="2. assertion" expanded="true">
<proof prover="1" timelimit="36"><result status="valid" time="0.06"/></proof>
<goal name="WP_parameter update.17.2" expl="2. assertion">
<proof prover="4"><result status="valid" time="0.03"/></proof>
</goal>
<goal name="WP_parameter set.17.3" expl="3. assertion">
<proof prover="4"><result status="valid" time="0.46"/></proof>
<goal name="WP_parameter update.17.3" expl="3. assertion">
<proof prover="4"><result status="valid" time="0.40"/></proof>
</goal>
</transf>
</goal>
<goal name="WP_parameter set.18" expl="18. postcondition">
<proof prover="8" timelimit="5"><result status="valid" time="0.87" steps="511"/></proof>
<goal name="WP_parameter update.18" expl="18. postcondition">
<proof prover="0"><result status="valid" time="1.00" steps="484"/></proof>
</goal>
<goal name="WP_parameter set.19" expl="19. postcondition">
<proof prover="8" timelimit="5"><result status="valid" time="0.04" steps="17"/></proof>
<goal name="WP_parameter update.19" expl="19. postcondition">
<proof prover="0"><result status="valid" time="0.03" steps="14"/></proof>
</goal>
<goal name="WP_parameter set.20" expl="20. postcondition">
<proof prover="8" timelimit="10"><result status="valid" time="0.03" steps="94"/></proof>
<goal name="WP_parameter update.20" expl="20. postcondition">
<proof prover="0"><result status="valid" time="0.12" steps="136"/></proof>
</goal>
<goal name="WP_parameter set.21" expl="21. postcondition">
<proof prover="8" timelimit="10"><result status="valid" time="0.03" steps="36"/></proof>
<goal name="WP_parameter update.21" expl="21. postcondition">
<proof prover="0"><result status="valid" time="0.03" steps="32"/></proof>
</goal>
</transf>
</goal>
</theory>
<theory name="RAL" sum="ef67f0d6811c1a4189d9e2bd83248eb7">
<goal name="WP_parameter empty" expl="VC for empty">
<proof prover="0"><result status="valid" time="0.01" steps="4"/></proof>
<proof prover="0" timelimit="6"><result status="valid" time="0.01" steps="4"/></proof>
</goal>
<goal name="WP_parameter size" expl="VC for size">
<proof prover="0"><result status="valid" time="0.01" steps="1"/></proof>
<proof prover="0" timelimit="6"><result status="valid" time="0.01" steps="1"/></proof>
</goal>
<goal name="WP_parameter cons" expl="VC for cons">
<proof prover="0"><result status="valid" time="0.01" steps="2"/></proof>
<proof prover="0" timelimit="6"><result status="valid" time="0.01" steps="2"/></proof>
</goal>
<goal name="WP_parameter get" expl="VC for get">
<proof prover="0"><result status="valid" time="0.01" steps="7"/></proof>
<goal name="WP_parameter lookup" expl="VC for lookup">
<proof prover="0"><result status="valid" time="0.02" steps="7"/></proof>
</goal>
</theory>
<theory name="RandomAccessListWithSeq" sum="98a44fae0089720a7e399a74aaafb1d9">
<theory name="RandomAccessListWithSeq" sum="fcb68ecfcb876f1501923453e0387c2d">
<goal name="WP_parameter size" expl="VC for size">
<transf name="split_goal_wp">
<goal name="WP_parameter size.1" expl="1. postcondition">
......@@ -184,49 +184,24 @@
</goal>
</transf>
</goal>
<goal name="WP_parameter add" expl="VC for add">
<goal name="WP_parameter cons" expl="VC for cons">
<transf name="split_goal_wp">
<goal name="WP_parameter add.1" expl="1. postcondition">
<proof prover="8"><result status="valid" time="0.03" steps="49"/></proof>
<goal name="WP_parameter cons.1" expl="1. postcondition">
<proof prover="0"><result status="valid" time="0.03" steps="43"/></proof>
</goal>
<goal name="WP_parameter add.2" expl="2. postcondition">
<proof prover="8"><result status="valid" time="0.02" steps="6"/></proof>
<goal name="WP_parameter cons.2" expl="2. postcondition">
<proof prover="0"><result status="valid" time="0.01" steps="8"/></proof>
</goal>
<goal name="WP_parameter add.3" expl="3. variant decrease">
<proof prover="8"><result status="valid" time="0.02" steps="18"/></proof>
<goal name="WP_parameter cons.3" expl="3. variant decrease">
<proof prover="0"><result status="valid" time="0.01" steps="22"/></proof>
</goal>
<goal name="WP_parameter add.4" expl="4. postcondition">
<proof prover="8"><result status="valid" time="2.74" steps="427"/></proof>
<goal name="WP_parameter cons.4" expl="4. postcondition">
<proof prover="0"><result status="valid" time="1.27" steps="280"/></proof>
</goal>
</transf>
</goal>
<goal name="WP_parameter get" expl="VC for get">
<transf name="split_goal_wp">
<goal name="WP_parameter get.1" expl="1. unreachable point">
<proof prover="8"><result status="valid" time="0.02" steps="7"/></proof>
</goal>
<goal name="WP_parameter get.2" expl="2. postcondition">
<proof prover="8"><result status="valid" time="0.03" steps="14"/></proof>
</goal>
<goal name="WP_parameter get.3" expl="3. variant decrease">
<proof prover="8"><result status="valid" time="0.02" steps="4"/></proof>
</goal>
<goal name="WP_parameter get.4" expl="4. precondition">
<proof prover="8"><result status="valid" time="0.02" steps="22"/></proof>
</goal>
<goal name="WP_parameter get.5" expl="5. postcondition">
<proof prover="8"><result status="valid" time="0.02" steps="19"/></proof>
</goal>
<goal name="WP_parameter get.6" expl="6. variant decrease">
<proof prover="8"><result status="valid" time="0.05" steps="29"/></proof>
</goal>
<goal name="WP_parameter get.7" expl="7. precondition">
<proof prover="8"><result status="valid" time="0.06" steps="31"/></proof>
</goal>
<goal name="WP_parameter get.8" expl="8. postcondition">
<proof prover="8"><result status="valid" time="0.53" steps="151"/></proof>
</goal>
</transf>
<goal name="WP_parameter lookup" expl="VC for lookup">
<proof prover="0"><result status="valid" time="0.72" steps="406"/></proof>
</goal>
<goal name="WP_parameter tail" expl="VC for tail">
<transf name="split_goal_wp">
......@@ -250,43 +225,37 @@
</goal>
</transf>
</goal>
<goal name="WP_parameter set" expl="VC for set">
<goal name="WP_parameter fupdate_aux" expl="VC for fupdate_aux">
<transf name="split_goal_wp">
<goal name="WP_parameter set.1" expl="1. unreachable point">
<proof prover="8"><result status="valid" time="0.02" steps="7"/></proof>
</goal>
<goal name="WP_parameter set.2" expl="2. postcondition">
<proof prover="8"><result status="valid" time="0.04" steps="65"/></proof>
</goal>
<goal name="WP_parameter set.3" expl="3. variant decrease">
<proof prover="8"><result status="valid" time="0.02" steps="4"/></proof>
</goal>
<goal name="WP_parameter set.4" expl="4. precondition">
<proof prover="8"><result status="valid" time="0.02" steps="22"/></proof>
<goal name="WP_parameter fupdate_aux.1" expl="1. unreachable point">
<proof prover="8" timelimit="5"><result status="valid" time="0.02" steps="7"/></proof>
</goal>
<goal name="WP_parameter set.5" expl="5. unreachable point">
<proof prover="8"><result status="valid" time="0.02" steps="28"/></proof>
<goal name="WP_parameter fupdate_aux.2" expl="2. postcondition">
<proof prover="8" timelimit="5"><result status="valid" time="0.05" steps="99"/></proof>
</goal>
<goal name="WP_parameter set.6" expl="6. unreachable point">
<proof prover="8"><result status="valid" time="0.04" steps="62"/></proof>
<goal name="WP_parameter fupdate_aux.3" expl="3. variant decrease">
<proof prover="8" timelimit="5"><result status="valid" time="0.02" steps="4"/></proof>
</goal>
<goal name="WP_parameter set.7" expl="7. postcondition">
<proof prover="8"><result status="valid" time="0.11" steps="117"/></proof>
<goal name="WP_parameter fupdate_aux.4" expl="4. precondition">
<proof prover="8" timelimit="5"><result status="valid" time="0.02" steps="22"/></proof>
</goal>
<goal name="WP_parameter set.8" expl="8. precondition">
<proof prover="8"><result status="valid" time="0.05" steps="31"/></proof>
<goal name="WP_parameter fupdate_aux.5" expl="5. postcondition">
<proof prover="8" timelimit="5"><result status="valid" time="0.08" steps="115"/></proof>
</goal>
<goal name="WP_parameter set.9" expl="9. variant decrease">
<proof prover="8"><result status="valid" time="0.03" steps="38"/></proof>
<goal name="WP_parameter fupdate_aux.6" expl="6. variant decrease">
<proof prover="8" timelimit="5"><result status="valid" time="0.04" steps="29"/></proof>
</goal>
<goal name="WP_parameter set.10" expl="10. precondition">
<proof prover="8"><result status="valid" time="0.02" steps="6"/></proof>
<goal name="WP_parameter fupdate_aux.7" expl="7. precondition">
<proof prover="8" timelimit="5"><result status="valid" time="0.06" steps="31"/></proof>
</goal>
<goal name="WP_parameter set.11" expl="11. postcondition">
<proof prover="8"><result status="valid" time="1.71" steps="610"/></proof>
<goal name="WP_parameter fupdate_aux.8" expl="8. postcondition">
<proof prover="8" timelimit="5"><result status="valid" time="5.33" steps="559"/></proof>
</goal>
</transf>
</goal>
<goal name="WP_parameter fupdate" expl="VC for fupdate">
<proof prover="0"><result status="valid" time="0.03" steps="16"/></proof>
</goal>
</theory>
</file>
</why3session>
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