Commit 76d42ea4 authored by Raphael Rieu-Helft's avatar Raphael Rieu-Helft

Add more GMP primitives

parent f0b904bf
......@@ -225,7 +225,8 @@ struct __add64_with_carry_result
uint64_t __field_1;
};
struct __add64_with_carry_result add64_with_carry(uint64_t x, uint64_t y, uint64_t c)
struct __add64_with_carry_result
add64_with_carry(uint64_t x, uint64_t y, uint64_t c)
{
struct __add64_with_carry_result result;
uint64_t r = x + y + c;
......@@ -235,12 +236,26 @@ struct __add64_with_carry_result add64_with_carry(uint64_t x, uint64_t y, uint64
return result;
}
struct __add64_double_result
{ uint64_t __field_0;
uint64_t __field_1;
};
struct __add64_double_result
add64_double(uint64_t a1, uint64_t a0, uint64_t b1, uint64_t b0)
{
struct __add64_double_result result;
add_ssaaaa(result.__field_0, result.__field_1, a1, a0, b1, b0);
return result;
}
struct __sub64_with_borrow_result
{ uint64_t __field_0;
uint64_t __field_1;
};
struct __sub64_with_borrow_result sub64_with_borrow(uint64_t x, uint64_t y, uint64_t b)
struct __sub64_with_borrow_result
sub64_with_borrow(uint64_t x, uint64_t y, uint64_t b)
{
struct __sub64_with_borrow_result result;
uint64_t r = x - y - b;
......@@ -251,6 +266,19 @@ struct __sub64_with_borrow_result sub64_with_borrow(uint64_t x, uint64_t y, uint
return result;
}
struct __sub64_double_result
{ uint64_t __field_0;
uint64_t __field_1;
};
struct __sub64_double_result
sub64_double(uint64_t a1, uint64_t a0, uint64_t b1, uint64_t b0)
{
struct __sub64_double_result result;
sub_ddmmss(result.__field_0, result.__field_1, a1, a0, b1, b0);
return result;
}
struct __mul64_double_result
{ uint64_t __field_0;
uint64_t __field_1;
......@@ -317,6 +345,12 @@ struct __lsld64_result lsld64(uint64_t x, uint64_t cnt)
syntax val (>) "%1 > %2"
syntax val add_with_carry "add64_with_carry"
syntax val add_double "add64_double"
syntax val add_double_nc "add64_double"
syntax val add_double_gc "add64_double"
syntax val sub_double "sub64_double"
syntax val sub_double_nb "sub64_double"
syntax val sub_double_gb "sub64_double"
syntax val sub_with_borrow "sub64_with_borrow"
syntax val mul_double "mul64_double"
syntax val div2by1 "div64_2by1"
......
......@@ -2519,16 +2519,12 @@ module N
returns { q, r -> l2i q * d + l2i r = ul + radix * uh }
returns { _q, r -> 0 <= l2i r < d }
=
let zero = Limb.of_int 0 in
let one = Limb.of_int 1 in
let ghost k = radix * radix - (radix + l2i v) * l2i d in
let ghost u = l2i ul + radix * l2i uh in
assert { 1 <= k <= d };
let l,h = mul_double v uh in
let sl,c = add_with_carry l ul zero in
let (sh,ghost c') = add_with_carry uh h c in (* <c',sh,sl> = <uh, ul> + <h,l> *)
assert { sl + radix * sh + radix * radix * c'
= l + radix * h + ul + radix * uh };
let (ghost c', sh, sl) = add_double_gc h l uh ul in
assert { c' = 0
by
uh < d
......@@ -3038,8 +3034,7 @@ let divmod_1 (q x:t) (y:limb) (sz:int32) : limb
let r0 = ref zero in
let r1 = ref zero in
let l,h = mul_double v uh in
let sl, c = add_with_carry um l zero in
let sh, ghost c' = add_with_carry uh h c in
let (ghost c', sh, sl) = add_double_gc uh um h l in
assert { sl + radix * sh + radix * radix * c'
= um + radix * uh + v * uh };
assert { c' = 0
......@@ -3069,14 +3064,10 @@ let divmod_1 (q x:t) (y:limb) (sz:int32) : limb
(*assert { um - dh * sh = a * radix + !r1
by !r1 = mod (um - dh * sh) radix };*)
let tl, th = mul_double sh dl in
let il, b = sub_with_borrow ul tl zero in
let (ih, ghost b') = sub_with_borrow !r1 th b in
let (ghost b', ih, il) = sub_double_gb !r1 ul th tl in
assert { il + radix * ih - radix * radix * b'
= ul + radix * !r1 - sh * dl };
let bl,b2 = sub_with_borrow il dl zero in
let bh, ghost b2' = sub_with_borrow ih dh b2 in
assert { bl + radix * bh - radix * radix * b2'
= il + radix * ih - dl - radix * dh };
let (bh, bl) = sub_double ih il dh dl in
mod_mult (radix * radix) (l2i b')
(l2i ul + radix * l2i !r1 - l2i sh * l2i dl - l2i dl
- radix * l2i dh);
......@@ -3445,8 +3436,7 @@ let divmod_1 (q x:t) (y:limb) (sz:int32) : limb
so (!q1 at PreCorrections) = cq
so !q1 = mod (cq - 1) radix = cq - 1
};
let rl, c = add_with_carry !r0 dl zero in
let rh, ghost c' = add_with_carry !r1 dh c in
let (ghost c', rh, rl) = add_double_gc !r1 !r0 dh dl in
assert { rl + radix * rh = mod (r' + d) (radix * radix)
by radix * radix * c' + rl + radix * rh
= r' + d
......@@ -3502,9 +3492,7 @@ let divmod_1 (q x:t) (y:limb) (sz:int32) : limb
label PreRemAdjust in
if [@ex:unlikely] (Limb.(>) !r1 dh) || (Limb.(=) !r1 dh && Limb.(>=) !r0 dl)
then begin
let bl, b = sub_with_borrow !r0 dl zero in
let bh, ghost b'= sub_with_borrow !r1 dh b in
assert { b' = 0 };
let (bh, bl) = sub_double_nb !r1 !r0 dh dl in
assert { bl + radix * bh = !r0 + radix * !r1 - d };
assert { !q1 < radix - 1
by !q1 * d + !r0 + radix * !r1 = u
......@@ -5962,9 +5950,7 @@ let divmod_1 (q x:t) (y:limb) (sz:int32) : limb
+ power radix !i * (!rl + radix * !rh) }
ensures { !rl + radix * !rh < dl + radix * dh }
ensures { !qh = 1 }
let (r0, b) = sub_with_borrow !rl dl uzero in
let (r1, ghost b') = sub_with_borrow !rh dh b in
assert { b' = 0 };
let (r1,r0) = sub_double_nb !rh !rl dh dl in
assert { r0 + radix * r1 = !rl + radix * !rh - (dl + radix * dh) };
value_sub_tail (pelts x) x.offset (x.offset + p2i sx - 1);
value_sub_tail (pelts x) x.offset (x.offset + p2i sx - 2);
......
......@@ -55,7 +55,7 @@
</transf>
</goal>
<goal name="VC add_limb.9" expl="assertion" proved="true">
<proof prover="0"><result status="valid" time="0.51"/></proof>
<proof prover="0"><result status="valid" time="0.33"/></proof>
</goal>
<goal name="VC add_limb.10" expl="precondition" proved="true">
<proof prover="3"><result status="valid" time="0.03"/></proof>
......@@ -108,15 +108,15 @@
<goal name="VC add_limb.20" expl="postcondition" proved="true">
<transf name="split_goal_right" proved="true" >
<goal name="VC add_limb.20.0" expl="postcondition" proved="true">
<proof prover="5" memlimit="2000"><result status="valid" time="0.04" steps="22"/></proof>
</goal>
<goal name="VC add_limb.20.1" expl="postcondition" proved="true">
<transf name="inline_all" proved="true" >
<goal name="VC add_limb.20.0.0" expl="postcondition" proved="true">
<proof prover="5" memlimit="2000"><result status="valid" time="0.03" steps="17"/></proof>
<goal name="VC add_limb.20.1.0" expl="postcondition" proved="true">
<proof prover="5" memlimit="2000"><result status="valid" time="0.03" steps="19"/></proof>
</goal>
</transf>
</goal>
<goal name="VC add_limb.20.1" expl="postcondition" proved="true">
<proof prover="5" memlimit="2000"><result status="valid" time="0.04" steps="25"/></proof>
</goal>
</transf>
</goal>
<goal name="VC add_limb.21" expl="postcondition" proved="true">
......@@ -236,7 +236,7 @@
<proof prover="5"><result status="valid" time="0.09" steps="41"/></proof>
</goal>
<goal name="VC add_limbs.10" expl="assertion" proved="true">
<proof prover="0"><result status="valid" time="0.81"/></proof>
<proof prover="0"><result status="valid" time="1.00"/></proof>
</goal>
<goal name="VC add_limbs.11" expl="precondition" proved="true">
<proof prover="4"><result status="valid" time="0.06"/></proof>
......@@ -257,7 +257,7 @@
<goal name="VC add_limbs.14.0.0" expl="assertion" proved="true">
<transf name="reflection_f" proved="true" arg1="mp_decision">
<goal name="VC add_limbs.14.0.0.0" expl="assertion" proved="true">
<proof prover="0"><result status="valid" time="0.22"/></proof>
<proof prover="0"><result status="valid" time="0.41"/></proof>
</goal>
<goal name="VC add_limbs.14.0.0.1" proved="true">
<proof prover="3"><result status="valid" time="0.23"/></proof>
......@@ -426,7 +426,7 @@
<proof prover="4"><result status="valid" time="0.03"/></proof>
</goal>
<goal name="VC add.30" expl="loop invariant init" proved="true">
<proof prover="4"><result status="valid" time="0.02"/></proof>
<proof prover="5"><result status="valid" time="0.07" steps="39"/></proof>
</goal>
<goal name="VC add.31" expl="loop invariant init" proved="true">
<proof prover="3"><result status="valid" time="0.03"/></proof>
......@@ -557,7 +557,7 @@
<proof prover="4"><result status="valid" time="0.00"/></proof>
</goal>
<goal name="VC add.57" expl="integer overflow" proved="true">
<proof prover="5"><result status="valid" time="0.67" steps="72"/></proof>
<proof prover="5"><result status="valid" time="0.45" steps="72"/></proof>
</goal>
<goal name="VC add.58" expl="loop variant decrease" proved="true">
<proof prover="3"><result status="valid" time="0.03"/></proof>
......@@ -584,7 +584,7 @@
<proof prover="5"><result status="valid" time="0.06" steps="36"/></proof>
</goal>
<goal name="VC add.66" expl="loop invariant init" proved="true">
<proof prover="5"><result status="valid" time="0.07" steps="36"/></proof>
<proof prover="4"><result status="valid" time="0.02"/></proof>
</goal>
<goal name="VC add.67" expl="loop invariant init" proved="true">
<proof prover="3"><result status="valid" time="0.03"/></proof>
......@@ -919,7 +919,7 @@
<proof prover="3"><result status="valid" time="0.06"/></proof>
</goal>
<goal name="VC add_in_place.55" expl="loop invariant preservation" proved="true">
<proof prover="5" timelimit="1"><result status="valid" time="0.26" steps="59"/></proof>
<proof prover="5" timelimit="1"><result status="valid" time="0.13" steps="59"/></proof>
</goal>
<goal name="VC add_in_place.56" expl="loop invariant preservation" proved="true">
<proof prover="3"><result status="valid" time="0.05"/></proof>
......@@ -1143,13 +1143,13 @@
<proof prover="5" timelimit="1"><result status="valid" time="0.02" steps="52"/></proof>
</goal>
<goal name="VC incr_1.10" expl="precondition" proved="true">
<proof prover="3"><result status="valid" time="0.02"/></proof>
<proof prover="3"><result status="valid" time="0.03"/></proof>
</goal>
<goal name="VC incr_1.11" expl="precondition" proved="true">
<proof prover="3"><result status="valid" time="0.01"/></proof>
</goal>
<goal name="VC incr_1.12" expl="precondition" proved="true">
<proof prover="5" timelimit="1"><result status="valid" time="0.04" steps="131"/></proof>
<proof prover="5" timelimit="1"><result status="valid" time="0.05" steps="131"/></proof>
</goal>
<goal name="VC incr_1.13" expl="assertion" proved="true">
<proof prover="5" timelimit="1"><result status="valid" time="0.02" steps="55"/></proof>
......@@ -1158,7 +1158,7 @@
<proof prover="5" timelimit="1"><result status="valid" time="0.09" steps="117"/></proof>
</goal>
<goal name="VC incr_1.15" expl="precondition" proved="true">
<proof prover="3"><result status="valid" time="0.02"/></proof>
<proof prover="3"><result status="valid" time="0.01"/></proof>
</goal>
<goal name="VC incr_1.16" expl="precondition" proved="true">
<proof prover="3"><result status="valid" time="0.01"/></proof>
......@@ -1184,7 +1184,7 @@
<proof prover="3"><result status="valid" time="0.02"/></proof>
</goal>
<goal name="VC incr_1.19.4" expl="VC for incr_1" proved="true">
<proof prover="3"><result status="valid" time="0.07"/></proof>
<proof prover="3"><result status="valid" time="0.08"/></proof>
</goal>
</transf>
</goal>
......@@ -1192,13 +1192,13 @@
<proof prover="3"><result status="valid" time="0.04"/></proof>
</goal>
<goal name="VC incr_1.21" expl="loop invariant preservation" proved="true">
<proof prover="5" timelimit="1"><result status="valid" time="0.07" steps="123"/></proof>
<proof prover="5" timelimit="1"><result status="valid" time="0.06" steps="123"/></proof>
</goal>
<goal name="VC incr_1.22" expl="loop invariant preservation" proved="true">
<proof prover="3"><result status="valid" time="0.02"/></proof>
</goal>
<goal name="VC incr_1.23" expl="loop invariant preservation" proved="true">
<proof prover="3"><result status="valid" time="0.04"/></proof>
<proof prover="3"><result status="valid" time="0.02"/></proof>
</goal>
<goal name="VC incr_1.24" expl="loop invariant preservation" proved="true">
<proof prover="3"><result status="valid" time="0.02"/></proof>
......@@ -1207,7 +1207,7 @@
<proof prover="5" timelimit="1"><result status="valid" time="0.02" steps="51"/></proof>
</goal>
<goal name="VC incr_1.26" expl="loop invariant preservation" proved="true">
<proof prover="5" timelimit="1"><result status="valid" time="0.02" steps="67"/></proof>
<proof prover="5" timelimit="1"><result status="valid" time="0.04" steps="67"/></proof>
</goal>
<goal name="VC incr_1.27" expl="loop invariant preservation" proved="true">
<proof prover="5" timelimit="1"><result status="valid" time="0.07" steps="70"/></proof>
......@@ -1216,13 +1216,13 @@
<proof prover="5" timelimit="1"><result status="valid" time="0.02" steps="53"/></proof>
</goal>
<goal name="VC incr_1.29" expl="precondition" proved="true">
<proof prover="3"><result status="valid" time="0.03"/></proof>
<proof prover="3"><result status="valid" time="0.02"/></proof>
</goal>
<goal name="VC incr_1.30" expl="precondition" proved="true">
<proof prover="3"><result status="valid" time="0.01"/></proof>
</goal>
<goal name="VC incr_1.31" expl="precondition" proved="true">
<proof prover="5" timelimit="1"><result status="valid" time="0.05" steps="132"/></proof>
<proof prover="5" timelimit="1"><result status="valid" time="0.04" steps="132"/></proof>
</goal>
<goal name="VC incr_1.32" expl="assertion" proved="true">
<proof prover="5" timelimit="1"><result status="valid" time="0.02" steps="56"/></proof>
......@@ -1231,7 +1231,7 @@
<proof prover="5" timelimit="1"><result status="valid" time="0.11" steps="115"/></proof>
</goal>
<goal name="VC incr_1.34" expl="precondition" proved="true">
<proof prover="3"><result status="valid" time="0.01"/></proof>
<proof prover="3"><result status="valid" time="0.02"/></proof>
</goal>
<goal name="VC incr_1.35" expl="precondition" proved="true">
<proof prover="3"><result status="valid" time="0.01"/></proof>
......@@ -1240,22 +1240,38 @@
<proof prover="5" timelimit="1"><result status="valid" time="0.03" steps="43"/></proof>
</goal>
<goal name="VC incr_1.37" expl="integer overflow" proved="true">
<proof prover="3"><result status="valid" time="0.44"/></proof>
<proof prover="3"><result status="valid" time="0.28"/></proof>
</goal>
<goal name="VC incr_1.38" expl="assertion" proved="true">
<proof prover="3"><result status="valid" time="0.05"/></proof>
<transf name="split_vc" proved="true" >
<goal name="VC incr_1.38.0" expl="VC for incr_1" proved="true">
<proof prover="5" timelimit="1"><result status="valid" time="0.02" steps="48"/></proof>
</goal>
<goal name="VC incr_1.38.1" expl="VC for incr_1" proved="true">
<proof prover="3"><result status="valid" time="0.01"/></proof>
</goal>
<goal name="VC incr_1.38.2" expl="VC for incr_1" proved="true">
<proof prover="3"><result status="valid" time="0.03"/></proof>
</goal>
<goal name="VC incr_1.38.3" expl="VC for incr_1" proved="true">
<proof prover="3"><result status="valid" time="0.02"/></proof>
</goal>
<goal name="VC incr_1.38.4" expl="VC for incr_1" proved="true">
<proof prover="3"><result status="valid" time="0.07"/></proof>
</goal>
</transf>
</goal>
<goal name="VC incr_1.39" expl="loop variant decrease" proved="true">
<proof prover="3"><result status="valid" time="0.03"/></proof>
</goal>
<goal name="VC incr_1.40" expl="loop invariant preservation" proved="true">
<proof prover="5" timelimit="1"><result status="valid" time="0.06" steps="123"/></proof>
<proof prover="5" timelimit="1"><result status="valid" time="0.07" steps="123"/></proof>
</goal>
<goal name="VC incr_1.41" expl="loop invariant preservation" proved="true">
<proof prover="3"><result status="valid" time="0.02"/></proof>
</goal>
<goal name="VC incr_1.42" expl="loop invariant preservation" proved="true">
<proof prover="3"><result status="valid" time="0.02"/></proof>
<proof prover="3"><result status="valid" time="0.04"/></proof>
</goal>
<goal name="VC incr_1.43" expl="loop invariant preservation" proved="true">
<proof prover="3"><result status="valid" time="0.02"/></proof>
......@@ -1264,16 +1280,16 @@
<proof prover="5" timelimit="1"><result status="valid" time="0.05" steps="51"/></proof>
</goal>
<goal name="VC incr_1.45" expl="loop invariant preservation" proved="true">
<proof prover="5" timelimit="1"><result status="valid" time="0.04" steps="67"/></proof>
<proof prover="5" timelimit="1"><result status="valid" time="0.02" steps="67"/></proof>
</goal>
<goal name="VC incr_1.46" expl="loop invariant preservation" proved="true">
<proof prover="5" timelimit="1"><result status="valid" time="0.03" steps="70"/></proof>
</goal>
<goal name="VC incr_1.47" expl="precondition" proved="true">
<proof prover="3"><result status="valid" time="0.02"/></proof>
<proof prover="3"><result status="valid" time="0.01"/></proof>
</goal>
<goal name="VC incr_1.48" expl="precondition" proved="true">
<proof prover="3"><result status="valid" time="0.01"/></proof>
<proof prover="3"><result status="valid" time="0.02"/></proof>
</goal>
<goal name="VC incr_1.49" expl="assertion" proved="true">
<transf name="split_vc" proved="true" >
......
This diff is collapsed.
......@@ -88,7 +88,7 @@
<goal name="VC lsld_ext.5" expl="assertion" proved="true">
<transf name="split_goal_right" proved="true" >
<goal name="VC lsld_ext.5.0" expl="assertion" proved="true">
<proof prover="0" memlimit="1000"><result status="valid" time="0.06"/></proof>
<proof prover="0" memlimit="1000"><result status="valid" time="0.18"/></proof>
</goal>
</transf>
</goal>
......@@ -449,19 +449,19 @@
<proof prover="3"><result status="valid" time="0.02"/></proof>
</goal>
<goal name="VC lshift.34.13" expl="VC for lshift" proved="true">
<proof prover="0"><result status="valid" time="0.02"/></proof>
</goal>
<goal name="VC lshift.34.14" expl="VC for lshift" proved="true">
<transf name="introduce_premises" proved="true" >
<goal name="VC lshift.34.13.0" expl="VC for lshift" proved="true">
<transf name="rewrite" proved="true" arg1="H">
<goal name="VC lshift.34.13.0.0" expl="VC for lshift" proved="true">
<proof prover="3"><result status="valid" time="0.02"/></proof>
<goal name="VC lshift.34.14.0" expl="VC for lshift" proved="true">
<transf name="rewrite" proved="true" arg1="&lt;-" arg2="H">
<goal name="VC lshift.34.14.0.0" expl="VC for lshift" proved="true">
<proof prover="3"><result status="valid" time="0.01"/></proof>
</goal>
</transf>
</goal>
</transf>
</goal>
<goal name="VC lshift.34.14" expl="VC for lshift" proved="true">
<proof prover="3"><result status="valid" time="0.02"/></proof>
</goal>
<goal name="VC lshift.34.15" expl="VC for lshift" proved="true">
<proof prover="3"><result status="valid" time="0.01"/></proof>
</goal>
......@@ -490,7 +490,7 @@
<proof prover="2" timelimit="1"><result status="valid" time="0.07"/></proof>
</goal>
<goal name="VC lshift.37" expl="loop invariant preservation" proved="true">
<proof prover="0"><result status="valid" time="2.54"/></proof>
<proof prover="0"><result status="valid" time="2.16"/></proof>
</goal>
<goal name="VC lshift.38" expl="loop invariant preservation" proved="true">
<proof prover="2" timelimit="1"><result status="valid" time="0.10"/></proof>
......@@ -549,7 +549,7 @@
</transf>
</goal>
<goal name="VC lshift.54" expl="postcondition" proved="true">
<proof prover="1"><result status="valid" time="1.98"/></proof>
<proof prover="1"><result status="valid" time="1.60"/></proof>
</goal>
</transf>
</goal>
......
......@@ -284,7 +284,7 @@
<goal name="VC addmul_limb.22.0.0" expl="assertion" proved="true">
<transf name="reflection_f" proved="true" arg1="mp_decision">
<goal name="VC addmul_limb.22.0.0.0" expl="assertion" proved="true">
<proof prover="0"><result status="valid" time="0.23"/></proof>
<proof prover="0"><result status="valid" time="0.37"/></proof>
</goal>
<goal name="VC addmul_limb.22.0.0.1" proved="true">
<proof prover="3"><result status="valid" time="0.27"/></proof>
......@@ -435,7 +435,7 @@
<proof prover="5" timelimit="1"><result status="valid" time="0.04" steps="57"/></proof>
</goal>
<goal name="VC mul_limbs.21" expl="assertion" proved="true">
<proof prover="4"><result status="valid" time="4.10"/></proof>
<proof prover="4"><result status="valid" time="4.68"/></proof>
</goal>
<goal name="VC mul_limbs.22" expl="precondition" proved="true">
<proof prover="5" memlimit="2000"><result status="valid" time="0.04" steps="58"/></proof>
......@@ -524,7 +524,7 @@
<proof prover="0"><result status="valid" time="0.43"/></proof>
</goal>
<goal name="VC mul_limbs.38.0.0.0.0.0.1" proved="true">
<proof prover="3"><result status="valid" time="2.06"/></proof>
<proof prover="3"><result status="valid" time="1.35"/></proof>
</goal>
</transf>
</goal>
......@@ -992,7 +992,7 @@
<proof prover="5" memlimit="2000"><result status="valid" time="0.14" steps="67"/></proof>
</goal>
<goal name="VC mul.27" expl="assertion" proved="true">
<proof prover="5" memlimit="2000"><result status="valid" time="0.84" steps="137"/></proof>
<proof prover="5" memlimit="2000"><result status="valid" time="0.59" steps="137"/></proof>
</goal>
<goal name="VC mul.28" expl="precondition" proved="true">
<proof prover="0"><result status="valid" time="0.60"/></proof>
......@@ -1112,7 +1112,7 @@
<proof prover="3"><result status="valid" time="0.03"/></proof>
</goal>
<goal name="VC mul.41.0.0.0.0.0.0.15" proved="true">
<proof prover="3"><result status="valid" time="0.02"/></proof>
<proof prover="3"><result status="valid" time="0.03"/></proof>
</goal>
<goal name="VC mul.41.0.0.0.0.0.0.16" proved="true">
<proof prover="3"><result status="valid" time="0.04"/></proof>
......@@ -1121,7 +1121,7 @@
<proof prover="3"><result status="valid" time="0.03"/></proof>
</goal>
<goal name="VC mul.41.0.0.0.0.0.0.18" proved="true">
<proof prover="3"><result status="valid" time="0.03"/></proof>
<proof prover="3"><result status="valid" time="0.02"/></proof>
</goal>
<goal name="VC mul.41.0.0.0.0.0.0.19" proved="true">
<proof prover="3"><result status="valid" time="0.02"/></proof>
......@@ -1136,7 +1136,7 @@
<proof prover="3"><result status="valid" time="0.20"/></proof>
</goal>
<goal name="VC mul.41.0.0.0.0.0.0.23" proved="true">
<proof prover="3"><result status="valid" time="0.02"/></proof>
<proof prover="3"><result status="valid" time="0.03"/></proof>
</goal>
<goal name="VC mul.41.0.0.0.0.0.0.24" proved="true">
<proof prover="3"><result status="valid" time="0.02"/></proof>
......@@ -1253,10 +1253,10 @@
<proof prover="3"><result status="valid" time="0.02"/></proof>
</goal>
<goal name="VC mul.41.0.0.0.0.0.0.62" proved="true">
<proof prover="3"><result status="valid" time="0.03"/></proof>
<proof prover="3"><result status="valid" time="0.02"/></proof>
</goal>
<goal name="VC mul.41.0.0.0.0.0.0.63" proved="true">
<proof prover="3"><result status="valid" time="0.02"/></proof>
<proof prover="3"><result status="valid" time="0.03"/></proof>
</goal>
<goal name="VC mul.41.0.0.0.0.0.0.64" proved="true">
<proof prover="3"><result status="valid" time="0.02"/></proof>
......@@ -1304,7 +1304,7 @@
<proof prover="3"><result status="valid" time="0.02"/></proof>
</goal>
<goal name="VC mul.41.0.0.0.0.0.0.79" proved="true">
<proof prover="3"><result status="valid" time="0.03"/></proof>
<proof prover="3"><result status="valid" time="0.02"/></proof>
</goal>
<goal name="VC mul.41.0.0.0.0.0.0.80" proved="true">
<proof prover="3"><result status="valid" time="0.02"/></proof>
......
......@@ -31,7 +31,7 @@
<proof prover="3"><result status="valid" time="0.01"/></proof>
</goal>
<goal name="VC sub_limb.6" expl="precondition" proved="true">
<proof prover="4"><result status="valid" time="1.07"/></proof>
<proof prover="4"><result status="valid" time="1.37"/></proof>
</goal>
<goal name="VC sub_limb.7" expl="precondition" proved="true">
<transf name="split_goal_right" proved="true" >
......@@ -68,7 +68,7 @@
<proof prover="3"><result status="valid" time="0.30"/></proof>
</goal>
<goal name="VC sub_limb.12.0.0.2" proved="true">
<proof prover="3"><result status="valid" time="0.20"/></proof>
<proof prover="3"><result status="valid" time="0.35"/></proof>
</goal>
</transf>
</goal>
......@@ -100,16 +100,16 @@
<goal name="VC sub_limb.20" expl="postcondition" proved="true">
<transf name="split_goal_right" proved="true" >
<goal name="VC sub_limb.20.0" expl="postcondition" proved="true">
<proof prover="0"><result status="valid" time="0.04"/></proof>
<proof prover="5" memlimit="2000"><result status="valid" time="0.09" steps="22"/></proof>
</goal>
<goal name="VC sub_limb.20.1" expl="postcondition" proved="true">
<transf name="inline_all" proved="true" >
<goal name="VC sub_limb.20.0.0" expl="postcondition" proved="true">
<proof prover="5" memlimit="2000"><result status="valid" time="0.03" steps="17"/></proof>
<goal name="VC sub_limb.20.1.0" expl="postcondition" proved="true">
<proof prover="5" memlimit="2000"><result status="valid" time="0.03" steps="19"/></proof>
</goal>
</transf>
</goal>
<goal name="VC sub_limb.20.1" expl="postcondition" proved="true">
<proof prover="0"><result status="valid" time="0.04"/></proof>
<proof prover="5" memlimit="2000"><result status="valid" time="0.09" steps="25"/></proof>
</goal>
</transf>
</goal>
<goal name="VC sub_limb.21" expl="postcondition" proved="true">
......@@ -217,7 +217,7 @@
</transf>
</goal>
<goal name="VC sub_limbs.10" expl="assertion" proved="true">
<proof prover="0"><result status="valid" time="0.44"/></proof>
<proof prover="0"><result status="valid" time="0.63"/></proof>
</goal>
<goal name="VC sub_limbs.11" expl="precondition" proved="true">
<proof prover="4"><result status="valid" time="0.04"/></proof>
......@@ -235,7 +235,7 @@
<goal name="VC sub_limbs.14.0.0" expl="assertion" proved="true">
<transf name="reflection_f" proved="true" arg1="mp_decision">
<goal name="VC sub_limbs.14.0.0.0" expl="assertion" proved="true">
<proof prover="0"><result status="valid" time="4.20"/></proof>
<proof prover="0"><result status="valid" time="6.19"/></proof>
</goal>
<goal name="VC sub_limbs.14.0.0.1" proved="true">
<proof prover="3"><result status="valid" time="0.20"/></proof>
......@@ -343,7 +343,7 @@
<goal name="VC sub.15.0.0" expl="assertion" proved="true">
<transf name="reflection_f" proved="true" arg1="mp_decision">
<goal name="VC sub.15.0.0.0" expl="assertion" proved="true">
<proof prover="0"><result status="valid" time="3.64"/></proof>
<proof prover="0"><result status="valid" time="6.50"/></proof>
</goal>
<goal name="VC sub.15.0.0.1" proved="true">
<proof prover="3"><result status="valid" time="0.22"/></proof>
......@@ -428,7 +428,7 @@
<proof prover="4"><result status="valid" time="0.04"/></proof>
</goal>
<goal name="VC sub.37" expl="assertion" proved="true">
<proof prover="0"><result status="valid" time="0.59"/></proof>
<proof prover="0"><result status="valid" time="0.78"/></proof>
</goal>
<goal name="VC sub.38" expl="assertion" proved="true">
<transf name="introduce_premises" proved="true" >
......@@ -443,7 +443,7 @@
<proof prover="3"><result status="valid" time="0.28"/></proof>
</goal>
<goal name="VC sub.38.0.0.2" proved="true">
<proof prover="5" timelimit="1"><result status="valid" time="0.26" steps="190"/></proof>
<proof prover="5" timelimit="1"><result status="valid" time="0.41" steps="190"/></proof>