Commit 044df936 authored by Marc Schoolderman's avatar Marc Schoolderman
Browse files

merged avrmodel and avrmodel3

parent 9e2e0084
...@@ -135,6 +135,20 @@ let sbc (dst src: register): unit ...@@ -135,6 +135,20 @@ let sbc (dst src: register): unit
cf.value <- (-div sum 256 <> 0); cf.value <- (-div sum 256 <> 0);
() ()
let neg (dst: register): unit
writes { cf }
writes { reg }
ensures { reg = old reg[dst <- mod (old (-reg[dst])) 256] }
(* TODO: which one is useful?
ensures { ?cf = if reg[dst] = 0 then 0 else 1 }
ensures { ?cf = -div (old (-reg[dst])) 256 }
*)
= let sum = - Map.get reg.data dst in
reg.data <- Map.set reg.data dst (mod sum 256);
assert { -255 <= sum <= 255 };
cf.value <- (-div sum 256 <> 0);
()
(* immediate versions *) (* immediate versions *)
let subi (dst: register) (k: int): unit let subi (dst: register) (k: int): unit
requires { 0 <= k <= 255 } requires { 0 <= k <= 255 }
...@@ -445,13 +459,27 @@ let com (dst: register): unit ...@@ -445,13 +459,27 @@ let com (dst: register): unit
let asr (dst: register): unit let asr (dst: register): unit
writes { reg, cf } writes { reg, cf }
ensures { reg = old reg[dst<- BV8.t'int (BV8.asr (BV8.of_int reg[dst]) 1)] } ensures { reg = old reg[dst<- BV8.t'int (BV8.asr (BV8.of_int reg[dst]) 1)] }
(* TODO: is this useful?
ensures { ?cf = mod (old reg[dst]) 2 } ensures { ?cf = mod (old reg[dst]) 2 }
*)
ensures { cf.value = BV8.nth (BV8.of_int (old reg[dst])) 0 } ensures { cf.value = BV8.nth (BV8.of_int (old reg[dst])) 0 }
= cf.value <- BV8.nth (BV8.of_int (Map.get reg.data dst)) 0; = cf.value <- BV8.nth (BV8.of_int (Map.get reg.data dst)) 0;
reg.data <- Map.set reg.data dst (BV8.t'int (BV8.asr (BV8.of_int (Map.get reg.data dst)) 1)) reg.data <- Map.set reg.data dst (BV8.t'int (BV8.asr (BV8.of_int (Map.get reg.data dst)) 1))
let lsr (dst: register): unit
writes { reg, cf }
ensures { reg = old reg[dst<- BV8.t'int (BV8.lsr (BV8.of_int reg[dst]) 1)] }
ensures { ?cf = mod (old reg[dst]) 2 }
ensures { cf.value = BV8.nth (BV8.of_int (old reg[dst])) 0 }
= cf.value <- BV8.nth (BV8.of_int (Map.get reg.data dst)) 0;
reg.data <- Map.set reg.data dst (BV8.t'int (BV8.lsr (BV8.of_int (Map.get reg.data dst)) 1))
let lsl (dst: register): unit
writes { reg, cf }
ensures { reg = old reg[dst<- BV8.t'int (BV8.lsl (BV8.of_int reg[dst]) 1)] }
ensures { ?cf = 0 <-> old reg[dst] < 128 }
ensures { cf.value = BV8.nth (BV8.of_int (old reg[dst])) 7 }
= cf.value <- BV8.nth (BV8.of_int (Map.get reg.data dst)) 7;
reg.data <- Map.set reg.data dst (BV8.t'int (BV8.lsl (BV8.of_int (Map.get reg.data dst)) 1))
(* t flag operations *) (* t flag operations *)
val tf: cpu_flag val tf: cpu_flag
......
...@@ -8,7 +8,7 @@ ...@@ -8,7 +8,7 @@
<prover id="4" name="Alt-Ergo" version="2.0.0" timelimit="13" steplimit="1" memlimit="1000"/> <prover id="4" name="Alt-Ergo" version="2.0.0" timelimit="13" steplimit="1" memlimit="1000"/>
<prover id="5" name="CVC4" version="1.4" alternative="noBV" timelimit="13" steplimit="1" memlimit="1000"/> <prover id="5" name="CVC4" version="1.4" alternative="noBV" timelimit="13" steplimit="1" memlimit="1000"/>
<file name="../avrmodel.mlw"> <file name="../avrmodel.mlw">
<theory name="AVRint" sum="83836e1ba6b23d458a4d1413c05eef71"> <theory name="AVRint" sum="b263d2793d6b4d719244c500d148f089">
<goal name="WP_parameter prefix ?" expl="VC for prefix ?"> <goal name="WP_parameter prefix ?" expl="VC for prefix ?">
<proof prover="4"><result status="valid" time="0.02" steps="70"/></proof> <proof prover="4"><result status="valid" time="0.02" steps="70"/></proof>
</goal> </goal>
...@@ -16,20 +16,33 @@ ...@@ -16,20 +16,33 @@
<proof prover="4"><result status="valid" time="0.07" steps="83"/></proof> <proof prover="4"><result status="valid" time="0.07" steps="83"/></proof>
</goal> </goal>
<goal name="WP_parameter mul" expl="VC for mul"> <goal name="WP_parameter mul" expl="VC for mul">
<proof prover="4"><result status="valid" time="1.66" steps="255"/></proof> <proof prover="4"><result status="valid" time="1.34" steps="255"/></proof>
</goal> </goal>
<goal name="WP_parameter add" expl="VC for add"> <goal name="WP_parameter add" expl="VC for add">
<proof prover="4"><result status="valid" time="1.76" steps="339"/></proof> <proof prover="4"><result status="valid" time="1.36" steps="339"/></proof>
</goal> </goal>
<goal name="WP_parameter adc" expl="VC for adc"> <goal name="WP_parameter adc" expl="VC for adc">
<proof prover="4"><result status="valid" time="0.98" steps="167"/></proof> <proof prover="4"><result status="valid" time="0.66" steps="167"/></proof>
</goal> </goal>
<goal name="WP_parameter sub" expl="VC for sub"> <goal name="WP_parameter sub" expl="VC for sub">
<proof prover="4"><result status="valid" time="0.85" steps="176"/></proof> <proof prover="4"><result status="valid" time="0.59" steps="176"/></proof>
</goal> </goal>
<goal name="WP_parameter sbc" expl="VC for sbc"> <goal name="WP_parameter sbc" expl="VC for sbc">
<proof prover="4"><result status="valid" time="0.40" steps="158"/></proof> <proof prover="4"><result status="valid" time="0.40" steps="158"/></proof>
</goal> </goal>
<goal name="WP_parameter neg" expl="VC for neg">
<transf name="split_goal_wp">
<goal name="WP_parameter neg.1" expl="assertion">
<proof prover="4" steplimit="0"><result status="valid" time="0.05" steps="74"/></proof>
</goal>
<goal name="WP_parameter neg.2" expl="type invariant">
<proof prover="4" steplimit="0"><result status="valid" time="0.09" steps="98"/></proof>
</goal>
<goal name="WP_parameter neg.3" expl="postcondition">
<proof prover="4" steplimit="0"><result status="valid" time="0.02" steps="69"/></proof>
</goal>
</transf>
</goal>
<goal name="WP_parameter subi" expl="VC for subi"> <goal name="WP_parameter subi" expl="VC for subi">
<proof prover="4" steplimit="-1"><result status="valid" time="0.59" steps="208"/></proof> <proof prover="4" steplimit="-1"><result status="valid" time="0.59" steps="208"/></proof>
</goal> </goal>
...@@ -43,13 +56,13 @@ ...@@ -43,13 +56,13 @@
<proof prover="4"><result status="valid" time="0.12" steps="84"/></proof> <proof prover="4"><result status="valid" time="0.12" steps="84"/></proof>
</goal> </goal>
<goal name="WP_parameter ld_inc" expl="VC for ld_inc"> <goal name="WP_parameter ld_inc" expl="VC for ld_inc">
<proof prover="0" steplimit="-1"><result status="valid" time="6.20"/></proof> <proof prover="0" steplimit="-1"><result status="valid" time="5.46"/></proof>
</goal> </goal>
<goal name="WP_parameter ldd" expl="VC for ldd"> <goal name="WP_parameter ldd" expl="VC for ldd">
<proof prover="4"><result status="valid" time="0.28" steps="173"/></proof> <proof prover="4"><result status="valid" time="0.28" steps="173"/></proof>
</goal> </goal>
<goal name="WP_parameter std" expl="VC for std"> <goal name="WP_parameter std" expl="VC for std">
<proof prover="4"><result status="valid" time="0.46" steps="176"/></proof> <proof prover="4"><result status="valid" time="0.30" steps="176"/></proof>
</goal> </goal>
<goal name="WP_parameter push" expl="VC for push"> <goal name="WP_parameter push" expl="VC for push">
<proof prover="4" steplimit="-1"><result status="valid" time="0.02" steps="89"/></proof> <proof prover="4" steplimit="-1"><result status="valid" time="0.02" steps="89"/></proof>
...@@ -67,7 +80,7 @@ ...@@ -67,7 +80,7 @@
<proof prover="4"><result status="valid" time="0.04" steps="78"/></proof> <proof prover="4"><result status="valid" time="0.04" steps="78"/></proof>
</goal> </goal>
<goal name="eq_uint" expl=""> <goal name="eq_uint" expl="">
<proof prover="0"><result status="valid" time="0.63"/></proof> <proof prover="0"><result status="valid" time="0.90"/></proof>
</goal> </goal>
<goal name="uint_0" expl=""> <goal name="uint_0" expl="">
<proof prover="4"><result status="valid" time="0.04" steps="68"/></proof> <proof prover="4"><result status="valid" time="0.04" steps="68"/></proof>
...@@ -100,7 +113,7 @@ ...@@ -100,7 +113,7 @@
<proof prover="4"><result status="valid" time="0.04" steps="88"/></proof> <proof prover="4"><result status="valid" time="0.04" steps="88"/></proof>
</goal> </goal>
<goal name="uint_10" expl=""> <goal name="uint_10" expl="">
<proof prover="4"><result status="valid" time="0.16" steps="92"/></proof> <proof prover="4"><result status="valid" time="0.04" steps="92"/></proof>
</goal> </goal>
<goal name="uint_11" expl=""> <goal name="uint_11" expl="">
<proof prover="4"><result status="valid" time="0.08" steps="96"/></proof> <proof prover="4"><result status="valid" time="0.08" steps="96"/></proof>
...@@ -130,16 +143,16 @@ ...@@ -130,16 +143,16 @@
<proof prover="4"><result status="valid" time="0.29" steps="128"/></proof> <proof prover="4"><result status="valid" time="0.29" steps="128"/></proof>
</goal> </goal>
<goal name="uint_20" expl=""> <goal name="uint_20" expl="">
<proof prover="4"><result status="valid" time="0.55" steps="132"/></proof> <proof prover="4"><result status="valid" time="0.38" steps="132"/></proof>
</goal> </goal>
<goal name="uint_21" expl=""> <goal name="uint_21" expl="">
<proof prover="4"><result status="valid" time="0.55" steps="136"/></proof> <proof prover="4"><result status="valid" time="0.55" steps="136"/></proof>
</goal> </goal>
<goal name="uint_22" expl=""> <goal name="uint_22" expl="">
<proof prover="4"><result status="valid" time="0.80" steps="140"/></proof> <proof prover="4"><result status="valid" time="0.39" steps="140"/></proof>
</goal> </goal>
<goal name="uint_23" expl=""> <goal name="uint_23" expl="">
<proof prover="4"><result status="valid" time="0.68" steps="144"/></proof> <proof prover="4"><result status="valid" time="0.47" steps="144"/></proof>
</goal> </goal>
<goal name="uint_24" expl=""> <goal name="uint_24" expl="">
<proof prover="4"><result status="valid" time="0.49" steps="148"/></proof> <proof prover="4"><result status="valid" time="0.49" steps="148"/></proof>
...@@ -154,19 +167,19 @@ ...@@ -154,19 +167,19 @@
<proof prover="4"><result status="valid" time="0.81" steps="160"/></proof> <proof prover="4"><result status="valid" time="0.81" steps="160"/></proof>
</goal> </goal>
<goal name="uint_28" expl=""> <goal name="uint_28" expl="">
<proof prover="4"><result status="valid" time="0.91" steps="164"/></proof> <proof prover="4"><result status="valid" time="0.66" steps="164"/></proof>
</goal> </goal>
<goal name="uint_29" expl=""> <goal name="uint_29" expl="">
<proof prover="4"><result status="valid" time="0.97" steps="168"/></proof> <proof prover="4"><result status="valid" time="0.68" steps="168"/></proof>
</goal> </goal>
<goal name="uint_30" expl=""> <goal name="uint_30" expl="">
<proof prover="4"><result status="valid" time="1.16" steps="172"/></proof> <proof prover="4"><result status="valid" time="1.16" steps="172"/></proof>
</goal> </goal>
<goal name="uint_31" expl=""> <goal name="uint_31" expl="">
<proof prover="4"><result status="valid" time="1.10" steps="176"/></proof> <proof prover="4"><result status="valid" time="0.84" steps="176"/></proof>
</goal> </goal>
<goal name="uint_32" expl=""> <goal name="uint_32" expl="">
<proof prover="4"><result status="valid" time="1.23" steps="180"/></proof> <proof prover="4"><result status="valid" time="0.84" steps="180"/></proof>
</goal> </goal>
<goal name="WP_parameter movw" expl="VC for movw"> <goal name="WP_parameter movw" expl="VC for movw">
<proof prover="4"><result status="valid" time="0.13" steps="89"/></proof> <proof prover="4"><result status="valid" time="0.13" steps="89"/></proof>
...@@ -231,8 +244,8 @@ ...@@ -231,8 +244,8 @@
<proof prover="0"><result status="valid" time="0.24"/></proof> <proof prover="0"><result status="valid" time="0.24"/></proof>
</goal> </goal>
<goal name="WP_parameter add_.3" expl="postcondition"> <goal name="WP_parameter add_.3" expl="postcondition">
<proof prover="2" timelimit="130"><result status="valid" time="41.35"/></proof> <proof prover="2" timelimit="130"><result status="valid" time="55.03"/></proof>
<proof prover="3"><result status="valid" time="8.73"/></proof> <proof prover="3"><result status="valid" time="7.47"/></proof>
</goal> </goal>
</transf> </transf>
</goal> </goal>
...@@ -251,7 +264,7 @@ ...@@ -251,7 +264,7 @@
</transf> </transf>
</goal> </goal>
<goal name="WP_parameter inc_" expl="VC for inc_"> <goal name="WP_parameter inc_" expl="VC for inc_">
<proof prover="2"><result status="valid" time="1.18"/></proof> <proof prover="2"><result status="valid" time="0.78"/></proof>
</goal> </goal>
<goal name="WP_parameter dec_" expl="VC for dec_"> <goal name="WP_parameter dec_" expl="VC for dec_">
<proof prover="4"><result status="valid" time="0.23" steps="124"/></proof> <proof prover="4"><result status="valid" time="0.23" steps="124"/></proof>
...@@ -266,35 +279,41 @@ ...@@ -266,35 +279,41 @@
<proof prover="4"><result status="valid" time="0.09" steps="133"/></proof> <proof prover="4"><result status="valid" time="0.09" steps="133"/></proof>
</goal> </goal>
<goal name="WP_parameter asr" expl="VC for asr"> <goal name="WP_parameter asr" expl="VC for asr">
<proof prover="2"><result status="valid" time="0.28"/></proof> <proof prover="2"><result status="valid" time="1.30"/></proof>
</goal>
<goal name="WP_parameter lsr" expl="VC for lsr">
<proof prover="2" steplimit="0"><result status="valid" time="1.57"/></proof>
</goal>
<goal name="WP_parameter lsl" expl="VC for lsl">
<proof prover="2" steplimit="0"><result status="valid" time="0.43"/></proof>
</goal> </goal>
<goal name="WP_parameter bst" expl="VC for bst"> <goal name="WP_parameter bst" expl="VC for bst">
<proof prover="4"><result status="valid" time="0.08" steps="72"/></proof> <proof prover="4"><result status="valid" time="0.08" steps="72"/></proof>
</goal> </goal>
<goal name="one_def" expl=""> <goal name="one_def" expl="">
<proof prover="2"><result status="valid" time="0.33"/></proof> <proof prover="2"><result status="valid" time="0.19"/></proof>
</goal> </goal>
<goal name="bitset_correct1" expl=""> <goal name="bitset_correct1" expl="">
<proof prover="0"><result status="valid" time="2.43"/></proof> <proof prover="0"><result status="valid" time="1.56"/></proof>
</goal> </goal>
<goal name="bitset_correct2" expl=""> <goal name="bitset_correct2" expl="">
<proof prover="5"><result status="valid" time="0.30"/></proof> <proof prover="5"><result status="valid" time="0.30"/></proof>
</goal> </goal>
<goal name="bitset_equiv_def" expl=""> <goal name="bitset_equiv_def" expl="">
<proof prover="0"><result status="valid" time="4.64"/></proof> <proof prover="0"><result status="valid" time="1.42"/></proof>
</goal> </goal>
<goal name="bitsetx_equiv_def" expl=""> <goal name="bitsetx_equiv_def" expl="">
<proof prover="5"><result status="valid" time="0.22"/></proof> <proof prover="5"><result status="valid" time="0.22"/></proof>
</goal> </goal>
<goal name="WP_parameter bld" expl="VC for bld"> <goal name="WP_parameter bld" expl="VC for bld">
<proof prover="4"><result status="valid" time="1.36" steps="786"/></proof> <proof prover="4"><result status="valid" time="0.87" steps="786"/></proof>
</goal> </goal>
<goal name="WP_parameter uint_recursion" expl="VC for uint_recursion"> <goal name="WP_parameter uint_recursion" expl="VC for uint_recursion">
<transf name="split_goal_wp"> <transf name="split_goal_wp">
<goal name="WP_parameter uint_recursion.1" expl="assertion"> <goal name="WP_parameter uint_recursion.1" expl="assertion">
<transf name="compute_in_goal"> <transf name="compute_in_goal">
<goal name="WP_parameter uint_recursion.1.1" expl="assertion"> <goal name="WP_parameter uint_recursion.1.1" expl="assertion">
<proof prover="0"><result status="valid" time="3.08"/></proof> <proof prover="0"><result status="valid" time="1.76"/></proof>
</goal> </goal>
</transf> </transf>
</goal> </goal>
...@@ -305,10 +324,10 @@ ...@@ -305,10 +324,10 @@
<proof prover="4" steplimit="-1"><result status="valid" time="0.14" steps="73"/></proof> <proof prover="4" steplimit="-1"><result status="valid" time="0.14" steps="73"/></proof>
</goal> </goal>
<goal name="WP_parameter uint_recursion.4" expl="postcondition"> <goal name="WP_parameter uint_recursion.4" expl="postcondition">
<proof prover="5"><result status="valid" time="3.55"/></proof> <proof prover="5"><result status="valid" time="2.66"/></proof>
</goal> </goal>
<goal name="WP_parameter uint_recursion.5" expl="postcondition"> <goal name="WP_parameter uint_recursion.5" expl="postcondition">
<proof prover="0"><result status="valid" time="0.60"/></proof> <proof prover="0"><result status="valid" time="0.30"/></proof>
</goal> </goal>
</transf> </transf>
</goal> </goal>
...@@ -318,7 +337,7 @@ ...@@ -318,7 +337,7 @@
<proof prover="4" steplimit="-1"><result status="valid" time="0.10" steps="73"/></proof> <proof prover="4" steplimit="-1"><result status="valid" time="0.10" steps="73"/></proof>
</goal> </goal>
<goal name="WP_parameter uint_bound.2" expl="assertion"> <goal name="WP_parameter uint_bound.2" expl="assertion">
<proof prover="5"><result status="valid" time="3.11"/></proof> <proof prover="5"><result status="valid" time="2.40"/></proof>
</goal> </goal>
<goal name="WP_parameter uint_bound.3" expl="variant decrease"> <goal name="WP_parameter uint_bound.3" expl="variant decrease">
<proof prover="4" steplimit="-1"><result status="valid" time="0.06" steps="75"/></proof> <proof prover="4" steplimit="-1"><result status="valid" time="0.06" steps="75"/></proof>
......
No preview for this file type
This diff is collapsed.
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE why3session PUBLIC "-//Why3//proof session v5//EN"
"http://why3.lri.fr/why3session.dtd">
<why3session shape_version="4">
<prover id="0" name="CVC3" version="2.4.1" timelimit="13" steplimit="1" memlimit="1000"/>
<prover id="1" name="Z3" version="4.5.0" alternative="noBV" timelimit="13" steplimit="1" memlimit="1000"/>
<prover id="2" name="CVC4" version="1.4" timelimit="13" steplimit="1" memlimit="1000"/>
<prover id="4" name="CVC4" version="1.4" alternative="noBV" timelimit="13" memlimit="1000"/>
<prover id="5" name="Alt-Ergo" version="0.99.1" timelimit="13" steplimit="1" memlimit="1000"/>
<prover id="6" name="Z3" version="4.5.0" timelimit="13" memlimit="1000"/>
<file name="../avrmodel3.mlw">
<theory name="AVRint" sum="102ba5365bcf0bb9da3d2512a9bbb70e">
<goal name="WP_parameter prefix ?" expl="VC for prefix ?">
<proof prover="5"><result status="valid" time="0.05" steps="72"/></proof>
</goal>
<goal name="WP_parameter mov" expl="VC for mov">
<proof prover="5"><result status="valid" time="1.13" steps="75"/></proof>
</goal>
<goal name="WP_parameter mul" expl="VC for mul">
<transf name="split_goal_wp">
<goal name="WP_parameter mul.1" expl="1. type invariant">
<proof prover="6"><result status="valid" time="0.04"/></proof>
</goal>
<goal name="WP_parameter mul.2" expl="2. postcondition">
<proof prover="5" steplimit="-1"><result status="valid" time="0.08" steps="66"/></proof>
</goal>
<goal name="WP_parameter mul.3" expl="3. postcondition">
<proof prover="5" steplimit="-1"><result status="valid" time="2.85" steps="142"/></proof>
</goal>
</transf>
</goal>
<goal name="WP_parameter add" expl="VC for add">
<proof prover="5"><result status="valid" time="12.63" steps="267"/></proof>
</goal>
<goal name="WP_parameter adc" expl="VC for adc">
<proof prover="5"><result status="valid" time="2.25" steps="138"/></proof>
</goal>
<goal name="WP_parameter sub" expl="VC for sub">
<proof prover="6"><result status="valid" time="0.03"/></proof>
</goal>
<goal name="WP_parameter sbc" expl="VC for sbc">
<proof prover="6"><result status="valid" time="0.04"/></proof>
</goal>
<goal name="WP_parameter neg" expl="VC for neg">
<proof prover="6"><result status="valid" time="0.03"/></proof>
</goal>
<goal name="WP_parameter subi" expl="VC for subi">
<proof prover="5"><result status="valid" time="2.08" steps="158"/></proof>
</goal>
<goal name="WP_parameter sbci" expl="VC for sbci">
<proof prover="5"><result status="valid" time="3.64" steps="186"/></proof>
</goal>
<goal name="WP_parameter inc" expl="VC for inc">
<proof prover="5"><result status="valid" time="0.28" steps="88"/></proof>
</goal>
<goal name="WP_parameter dec" expl="VC for dec">
<proof prover="5"><result status="valid" time="0.30" steps="89"/></proof>
</goal>
<goal name="WP_parameter ld_inc" expl="VC for ld_inc">
<proof prover="0"><result status="valid" time="4.75"/></proof>
</goal>
<goal name="WP_parameter ldd" expl="VC for ldd">
<proof prover="0" steplimit="-1"><result status="valid" time="0.24"/></proof>
</goal>
<goal name="WP_parameter std" expl="VC for std">
<proof prover="0" steplimit="-1"><result status="valid" time="0.35"/></proof>
</goal>
<goal name="WP_parameter push" expl="VC for push">
<proof prover="5"><result status="valid" time="0.05" steps="76"/></proof>
</goal>
<goal name="WP_parameter pop" expl="VC for pop">
<proof prover="5"><result status="valid" time="0.06" steps="76"/></proof>
</goal>
<goal name="WP_parameter nop" expl="VC for nop">
<proof prover="5"><result status="valid" time="0.03" steps="65"/></proof>
</goal>
<goal name="eq_narrow">
<proof prover="5"><result status="valid" time="0.06" steps="74"/></proof>
</goal>
<goal name="eq_combine">
<proof prover="5"><result status="valid" time="0.04" steps="75"/></proof>
</goal>
<goal name="eq_uint">
<proof prover="0"><result status="valid" time="0.95"/></proof>
</goal>
<goal name="uint_0">
<proof prover="5" timelimit="60" steplimit="-1"><result status="valid" time="0.06" steps="68"/></proof>
</goal>
<goal name="uint_1">
<proof prover="5" timelimit="60" steplimit="-1"><result status="valid" time="0.07" steps="73"/></proof>
</goal>
<goal name="uint_2">
<proof prover="5" timelimit="60" steplimit="-1"><result status="valid" time="0.12" steps="77"/></proof>
</goal>
<goal name="uint_3">
<proof prover="5" timelimit="60" steplimit="-1"><result status="valid" time="0.09" steps="80"/></proof>
</goal>
<goal name="uint_4">
<proof prover="5" timelimit="60" steplimit="-1"><result status="valid" time="0.12" steps="83"/></proof>
</goal>
<goal name="uint_5">
<proof prover="5" timelimit="60" steplimit="-1"><result status="valid" time="0.13" steps="86"/></proof>
</goal>
<goal name="uint_6">
<proof prover="5" timelimit="60" steplimit="-1"><result status="valid" time="0.34" steps="89"/></proof>
</goal>
<goal name="uint_7">
<proof prover="5" timelimit="60" steplimit="-1"><result status="valid" time="0.52" steps="92"/></proof>
</goal>
<goal name="uint_8">
<proof prover="5" timelimit="60" steplimit="-1"><result status="valid" time="0.66" steps="95"/></proof>
</goal>
<goal name="uint_9">
<proof prover="5" timelimit="60" steplimit="-1"><result status="valid" time="0.94" steps="98"/></proof>
</goal>
<goal name="uint_10">
<proof prover="5" timelimit="60" steplimit="-1"><result status="valid" time="1.54" steps="103"/></proof>
</goal>
<goal name="uint_11">
<proof prover="5" timelimit="60" steplimit="-1"><result status="valid" time="1.65" steps="108"/></proof>
</goal>
<goal name="uint_12">
<proof prover="5" timelimit="60" steplimit="-1"><result status="valid" time="2.20" steps="113"/></proof>
</goal>
<goal name="uint_13">
<proof prover="5" timelimit="60" steplimit="-1"><result status="valid" time="2.65" steps="118"/></proof>
</goal>
<goal name="uint_14">
<proof prover="5" timelimit="60" steplimit="-1"><result status="valid" time="3.28" steps="123"/></proof>
</goal>
<goal name="uint_15">
<proof prover="5" timelimit="60" steplimit="-1"><result status="valid" time="3.64" steps="128"/></proof>
</goal>
<goal name="uint_16">
<proof prover="5" timelimit="60" steplimit="-1"><result status="valid" time="3.70" steps="133"/></proof>
</goal>
<goal name="uint_17">
<proof prover="5" timelimit="60" steplimit="-1"><result status="valid" time="3.87" steps="138"/></proof>
</goal>
<goal name="uint_18">
<proof prover="5" timelimit="60" steplimit="-1"><result status="valid" time="4.62" steps="143"/></proof>
</goal>
<goal name="uint_19">
<proof prover="5" timelimit="60" steplimit="-1"><result status="valid" time="5.39" steps="148"/></proof>
</goal>
<goal name="uint_20">
<proof prover="5" timelimit="60" steplimit="-1"><result status="valid" time="6.14" steps="153"/></proof>
</goal>
<goal name="uint_21">
<proof prover="5" timelimit="60" steplimit="-1"><result status="valid" time="6.97" steps="158"/></proof>
</goal>
<goal name="uint_22">
<proof prover="5" timelimit="60" steplimit="-1"><result status="valid" time="8.22" steps="163"/></proof>
</goal>
<goal name="uint_23">
<proof prover="5" timelimit="60" steplimit="-1"><result status="valid" time="10.60" steps="168"/></proof>
</goal>
<goal name="uint_24">
<proof prover="5" timelimit="60" steplimit="-1"><result status="valid" time="12.98" steps="173"/></proof>
</goal>
<goal name="uint_25">
<proof prover="5" timelimit="60" steplimit="-1"><result status="valid" time="14.96" steps="178"/></proof>
</goal>
<goal name="uint_26">
<proof prover="5" timelimit="60" steplimit="-1"><result status="valid" time="16.18" steps="183"/></proof>
</goal>
<goal name="uint_27">
<proof prover="5" timelimit="60" steplimit="-1"><result status="valid" time="16.80" steps="188"/></proof>
</goal>
<goal name="uint_28">
<proof prover="5" timelimit="60" steplimit="-1"><result status="valid" time="17.58" steps="193"/></proof>
</goal>
<goal name="uint_29">
<proof prover="5" timelimit="60" steplimit="-1"><result status="valid" time="20.93" steps="198"/></proof>
</goal>
<goal name="uint_30">
<proof prover="5" timelimit="60" steplimit="-1"><result status="valid" time="24.20" steps="203"/></proof>
</goal>
<goal name="uint_31">
<proof prover="5" timelimit="60" steplimit="-1"><result status="valid" time="23.23" steps="208"/></proof>
</goal>
<goal name="uint_32">
<proof prover="5" timelimit="60" steplimit="-1"><result status="valid" time="22.23" steps="213"/></proof>
</goal>
<goal name="WP_parameter movw" expl="VC for movw">
<proof prover="2" steplimit="-1"><result status="valid" time="0.17"/></proof>
</goal>
<goal name="WP_parameter adiw" expl="VC for adiw">
<transf name="compute_in_goal">
<goal name="WP_parameter adiw.1" expl="1. VC for adiw">
<proof prover="4" steplimit="1"><result status="valid" time="0.39"/></proof>
</goal>
</transf>
</goal>
<goal name="WP_parameter sbiw" expl="VC for sbiw">
<transf name="compute_in_goal">
<goal name="WP_parameter sbiw.1" expl="1. VC for sbiw">
<proof prover="4" steplimit="1"><result status="valid" time="0.17"/></proof>
</goal>
</transf>
</goal>
<goal name="WP_parameter add_" expl="VC for add_">
<transf name="split_goal_wp">
<goal name="WP_parameter add_.1" expl="1. type invariant">
<proof prover="0"><result status="valid" time="0.14"/></proof>
</goal>
<goal name="WP_parameter add_.2" expl="2. postcondition">
<proof prover="0"><result status="valid" time="0.25"/></proof>
</goal>
<goal name="WP_parameter add_.3" expl="3. postcondition">
<proof prover="2" timelimit="130"><result status="valid" time="69.38"/></proof>
</goal>
</transf>
</goal>
<goal name="WP_parameter inc_" expl="VC for inc_">
<proof prover="0"><result status="valid" time="0.15"/></proof>
</goal>
<goal name="WP_parameter dec_" expl="VC for dec_">
<proof prover="5"><result status="valid" time="0.33" steps="93"/></proof>
</goal>
<goal name="WP_parameter eor" expl="VC for eor">
<proof prover="5"><result status="valid" time="0.10" steps="85"/></proof>
</goal>
<goal name="WP_parameter clr" expl="VC for clr">
<proof prover="2"><result status="valid" time="0.16"/></proof>
</goal>
<goal name="WP_parameter com" expl="VC for com">