Commit 274df245 authored by Marc Schoolderman's avatar Marc Schoolderman
Browse files

modified 96-bit karatsuba in similar sense

parent 5538acc9
......@@ -484,7 +484,8 @@ end;
push r7;
S.init();
(* TODO optimise *)
(* COMMENT: this block has not been localized, as in this case it complicates matters;
it is more natural to express this in the global parameters *)
abstract ensures { S.synchronized S.shadow reg }
ensures { uint 6 reg 14 = old (abs (uint 6 reg 14 - at(uint 6 mem (uint 2 reg rX))'S)) }
ensures { uint 6 reg 8 = old (abs (uint 6 reg 8 - at(uint 6 mem (uint 2 reg rY))'S)) }
......@@ -492,6 +493,7 @@ ensures { ?tf = 0 <-> old(uint 6 reg 14) < at(uint 6 mem (uint 2 reg rX))'S <->
(* subtract a0 a5 *)
sbiw r26 12;
'B:
(* if you transform these checks into asserts, verification will speed up because cvc4 can then discharge the two assertions *)
ld_inc r0 rX;
(* check { reg[0] = at(mem[uint 2 reg rX])'S }; *)
......@@ -753,11 +755,10 @@ end;
pop r1;
pop r31;
pop r30;
assert { uint 6 mem (uint 2 reg rZ) + pow2 48*uint 6 reg 20 + pow2 96*uint 6 reg 0 = at (uint 6 mem (uint 2 reg rX)*uint 6 mem (uint 2 reg rY))'S + at(pow2 48*uint 6 reg 14*uint 6 reg 8)'L11 };
S.init();
abstract ensures { S.synchronized S.shadow reg }
ensures { uint 6 mem (uint 2 reg rZ) + pow2 48*uint 12 reg 14 + pow2 144*uint 6 reg 0 + ?cf*pow2 144 = (pow2 48+1)*(at(uint 6 mem (uint 2 reg rX)*uint 6 mem (uint 2 reg rY))'S + at(pow2 48*uint 6 reg 14*uint 6 reg 8)'L11) }
ensures { uint 12 reg 14 + ?cf*pow2 96 = old(uint 6 mem (uint 2 reg rZ) + pow2 48*uint 6 reg 20 + uint 6 reg 20 + pow2 48*uint 6 reg 0) }
(* add l5 h0 to l0 and h5 *)
'B:
ldd r14 rZ 0;
......@@ -785,7 +786,6 @@ original location
adc r23 r3;
adc r24 r4;
adc r25 r5;
assert { uint 12 reg 14 + ?cf*pow2 96 = at(uint 6 mem (uint 2 reg rZ) + pow2 48*uint 6 reg 20 + uint 6 reg 20 + pow2 48*uint 6 reg 0)'B };
(* store carrrY in t register *)
S.modify_r14();
S.modify_r15();
......@@ -808,8 +808,7 @@ end;
S.init();
abstract
ensures { S.synchronized S.shadow reg }
(* this next one fails *)
ensures { uint 2 reg 6 + pow2 16*uint 4 reg 26 + pow2 48*uint 2 reg 12 + pow2 64*uint 4 reg 8 = ?cf*(pow2 96 - 1) - (at(uint 6 reg 14)'L11 - at(uint 6 mem (uint 2 reg rX))'S)*(at(uint 6 reg 8)'L11 - at(uint 6 mem (uint 2 reg rY))'S) }
ensures { uint 2 reg 6 + pow2 16*uint 4 reg 26 + pow2 48*uint 2 reg 12 + pow2 64*uint 4 reg 8 = ?cf*(pow2 96 - 1) + (if old ?tf = 0 then -1 else 1)*old (uint 2 reg 6 + pow2 16*uint 4 reg 26 + pow2 48*uint 2 reg 12 + pow2 64*uint 4 reg 8) }
ensures { let cor = reg[31] + (pow2 8+pow2 16+pow2 24+pow2 32+pow2 40)*reg[30] in cor = old ?cf - ?cf \/ cor = pow2 48 + old ?cf - ?cf }
'B:
clr r30;
......@@ -819,7 +818,9 @@ ensures { let cor = reg[31] + (pow2 8+pow2 16+pow2 24+pow2 32+pow2 40)*reg[30] i
assert { reg[30] = 0xFF*(1 - ?tf) };
adc r31 r30;
assert { reg[31] = 0 \/ reg[31] = 1 \/ reg[31] = 0xFF };
(*
check { reg[31] = 0 \/ reg[31] = 1 \/ reg[31] = 0xFF };
*)
'Q:
(* invert all bits or do nothing *)
......@@ -838,17 +839,18 @@ assert { reg[31] = 0 \/ reg[31] = 1 \/ reg[31] = 0xFF };
assert { reg[30] = 0x00 -> uint 2 reg 6 + pow2 16*uint 4 reg 26 + pow2 48*uint 2 reg 12 + pow2 64*uint 4 reg 8 = at(uint 2 reg 6 + pow2 16*uint 4 reg 26 + pow2 48*uint 2 reg 12 + pow2 64*uint 4 reg 8)'B };
assert { reg[30] = 0xFF -> uint 2 reg 6 + pow2 16*uint 4 reg 26 + pow2 48*uint 2 reg 12 + pow2 64*uint 4 reg 8 = pow2 96 - 1 - at(uint 2 reg 6 + pow2 16*uint 4 reg 26 + pow2 48*uint 2 reg 12 + pow2 64*uint 4 reg 8)'B };
(* i do not understand this sequence TODO; also optimise *)
(* this sequence is tricky; commented out assertions are left in to see in detail what happens *)
bst r30 0 ;
mov r30 r31;
asr r30;
mov r30 r31; (* assert { reg[30] = if at(?cf = ?tf)'B then (if at(?cf = 0)'B then 0xFF else 0x01) else 0x00 }; *)
asr r30; (* assert { reg[30] = if at(?cf = ?tf = 0)'B then 0xFF else 0x00 }; *)
'QQ:
bld r30 0;
assert { at reg[30] 'QQ = 0xFF -> reg[30] = 0xFE + ?tf };
assert { at reg[30] 'QQ = 0x00 -> reg[30] = ?tf };
asr r30;
(* assert { reg[30] = if at(?cf = ?tf = 0)'B then 0xFF else ?tf }; *)
asr r30; (* assert { reg[30] = if at(?cf = ?tf = 0)'B then 0xFF else 0x00 }; *)
assert { ?cf = 1 - at ?tf 'B };
S.modify_r6(); S.modify_r7();
......@@ -858,6 +860,10 @@ assert { ?cf = 1 - at ?tf 'B };
S.modify_r30(); S.modify_r31();
end;
S.init();
abstract
ensures { S.synchronized S.shadow reg }
ensures { uint 12 reg 14 + pow2 96*uint 6 reg 0 + ?cf*pow2 144 = old (uint 12 reg 14 + pow2 96*uint 6 reg 0 + ?cf + uint 2 reg 6 + pow2 16*uint 4 reg 26 + pow2 48*uint 2 reg 12 + pow2 64*uint 4 reg 8 + pow2 96*reg[31] + (pow2 104 + pow2 112 + pow2 120 + pow2 128 + pow2 136)*reg[30]) }
(* add in m *)
adc r14 r6;
adc r15 r7;
......@@ -879,6 +885,11 @@ end;
adc r3 r30;
adc r4 r30;
adc r5 r30;
S.modify_r14(); S.modify_r15(); S.modify_r16(); S.modify_r17();
S.modify_r18(); S.modify_r19(); S.modify_r20(); S.modify_r21();
S.modify_r22(); S.modify_r23(); S.modify_r24(); S.modify_r25();
S.modify_r0(); S.modify_r1(); S.modify_r2(); S.modify_r3(); S.modify_r4(); S.modify_r5()
end;
(* restore rZ register *)
pop r31;
......@@ -888,11 +899,25 @@ assert { 0 <= at( (at(uint 6 mem (uint 2 reg rY))'S + pow2 48*uint 6 reg 8) )'L1
assert { 0 <= at( (at(uint 6 mem (uint 2 reg rX))'S + pow2 48*uint 6 reg 14) )'L11 <= (pow2 96-1) };
assert { 0 <= at( (at(uint 6 mem (uint 2 reg rX))'S + pow2 48*uint 6 reg 14)*(at(uint 6 mem (uint 2 reg rY))'S + pow2 48*uint 6 reg 8) )'L11 <= (pow2 96-1)*(pow2 96-1) };
assert { "expl:obvious" 0 <= uint 12 reg 14 by 0 <= uint 6 reg 14 /\ 0 <= uint 6 reg 20 };
assert { 0 <= uint 12 reg 14
by 0 <= uint 6 reg 14 /\ 0 <= uint 6 reg 20 by (0 <= uint 3 reg 20 /\ 0 <= uint 3 reg 23) };
assert { 0 <= uint 6 mem (uint 2 reg rZ) + pow2 48*uint 12 reg 14 + pow2 144*uint 6 reg 0 < pow2 192 };
assert { uint 6 mem (uint 2 reg rZ) + pow2 48*uint 12 reg 14 + pow2 144*uint 6 reg 0 + ?cf*pow2 192
assert { at( (at(uint 6 mem (uint 2 reg rX))'S + pow2 48*uint 6 reg 14) )'L11 =
at( uint 12 mem (uint 2 reg rX) )'S
};
assert { at( (at(uint 6 mem (uint 2 reg rY))'S + pow2 48*uint 6 reg 8) )'L11 =
at( uint 12 mem (uint 2 reg rY))'S
};
(*
check { uint 6 mem (uint 2 reg rZ) + pow2 48*uint 12 reg 14 + pow2 144*uint 6 reg 0 + ?cf*pow2 192
= at( (at(uint 6 mem (uint 2 reg rX))'S + pow2 48*uint 6 reg 14)*(at(uint 6 mem (uint 2 reg rY))'S + pow2 48*uint 6 reg 8) )'L11 + ?cf*pow2 192
};
check { uint 6 mem (uint 2 reg rZ) + pow2 48*uint 12 reg 14 + pow2 144*uint 6 reg 0
= at( (at(uint 6 mem (uint 2 reg rX))'S + pow2 48*uint 6 reg 14)*(at(uint 6 mem (uint 2 reg rY))'S + pow2 48*uint 6 reg 8) )'L11
};
*)
std rZ 6 r14;
std rZ 7 r15;
......@@ -912,6 +937,7 @@ assert { uint 6 mem (uint 2 reg rZ) + pow2 48*uint 12 reg 14 + pow2 144*uint 6
std rZ 21 r3;
std rZ 22 r4;
std rZ 23 r5;
()
end
......@@ -5,18 +5,18 @@
<prover id="0" name="CVC3" version="2.4.1" timelimit="13" steplimit="1" memlimit="1000"/>
<prover id="2" name="Alt-Ergo" version="2.0.0" timelimit="30" steplimit="1" memlimit="1000"/>
<prover id="3" name="CVC4" version="1.4" timelimit="13" steplimit="1" memlimit="1000"/>
<prover id="4" name="CVC4" version="1.4" alternative="noBV" timelimit="30" steplimit="1" memlimit="1000"/>
<prover id="5" name="Eprover" version="1.8-001" timelimit="30" steplimit="1" memlimit="1000"/>
<prover id="4" name="CVC4" version="1.4" alternative="noBV" timelimit="13" steplimit="0" memlimit="1000"/>
<prover id="5" name="Eprover" version="1.8-001" timelimit="30" steplimit="0" memlimit="1000"/>
<file name="../karatsuba96.mlw">
<theory name="BV_asr_Lemmas" sum="16edde4d72a282519bf221e18c8b7013">
<goal name="asr_0" expl="">
<proof prover="4" steplimit="-1"><result status="valid" time="0.05"/></proof>
<proof prover="4" timelimit="30" steplimit="-1"><result status="valid" time="0.05"/></proof>
</goal>
<goal name="asr_1" expl="">
<proof prover="0" steplimit="-1"><result status="valid" time="5.57"/></proof>
<proof prover="0" steplimit="-1"><result status="valid" time="2.42"/></proof>
</goal>
<goal name="asr_f" expl="">
<proof prover="4" steplimit="-1"><result status="valid" time="0.04"/></proof>
<proof prover="4" timelimit="30" steplimit="-1"><result status="valid" time="0.04"/></proof>
</goal>
<goal name="xor_0" expl="">
<proof prover="3"><result status="valid" time="0.02"/></proof>
......@@ -31,70 +31,70 @@
<proof prover="0" timelimit="30" steplimit="-1"><result status="valid" time="0.58"/></proof>
</goal>
<goal name="pow2_80" expl="">
<proof prover="0" timelimit="30" steplimit="-1"><result status="valid" time="0.43"/></proof>
<proof prover="0" timelimit="30" steplimit="-1"><result status="valid" time="0.56"/></proof>
</goal>
<goal name="pow2_88" expl="">
<proof prover="0" timelimit="30" steplimit="-1"><result status="valid" time="0.70"/></proof>
<proof prover="0" timelimit="30" steplimit="-1"><result status="valid" time="0.89"/></proof>
</goal>
<goal name="pow2_96" expl="">
<proof prover="0" timelimit="30" steplimit="-1"><result status="valid" time="0.69"/></proof>
<proof prover="0" timelimit="30" steplimit="-1"><result status="valid" time="0.86"/></proof>
</goal>
<goal name="pow2_104" expl="">
<proof prover="0" timelimit="30" steplimit="-1"><result status="valid" time="0.60"/></proof>
<proof prover="0" timelimit="30" steplimit="-1"><result status="valid" time="0.80"/></proof>
</goal>
<goal name="pow2_112" expl="">
<proof prover="0" timelimit="30" steplimit="-1"><result status="valid" time="0.58"/></proof>
<proof prover="0" timelimit="30" steplimit="-1"><result status="valid" time="0.88"/></proof>
</goal>
<goal name="pow2_120" expl="">
<proof prover="0" timelimit="30" steplimit="-1"><result status="valid" time="0.70"/></proof>
<proof prover="0" timelimit="30" steplimit="-1"><result status="valid" time="1.00"/></proof>
</goal>
<goal name="pow2_128" expl="">
<proof prover="0" timelimit="30" steplimit="-1"><result status="valid" time="0.72"/></proof>
<proof prover="0" timelimit="30" steplimit="-1"><result status="valid" time="1.14"/></proof>
</goal>
<goal name="pow2_136" expl="">
<proof prover="0" timelimit="30" steplimit="-1"><result status="valid" time="0.82"/></proof>
<proof prover="0" timelimit="30" steplimit="-1"><result status="valid" time="1.17"/></proof>
</goal>
<goal name="pow2_144" expl="">
<proof prover="0" timelimit="30" steplimit="-1"><result status="valid" time="1.05"/></proof>
<proof prover="0" timelimit="30" steplimit="-1"><result status="valid" time="1.36"/></proof>
</goal>
<goal name="pow2_152" expl="">
<proof prover="0" timelimit="30" steplimit="-1"><result status="valid" time="0.94"/></proof>
<proof prover="0" timelimit="30" steplimit="-1"><result status="valid" time="1.31"/></proof>
</goal>
<goal name="pow2_160" expl="">
<proof prover="0" timelimit="30" steplimit="-1"><result status="valid" time="1.12"/></proof>
<proof prover="0" timelimit="30" steplimit="-1"><result status="valid" time="1.53"/></proof>
</goal>
<goal name="pow2_168" expl="">
<proof prover="0" timelimit="30" steplimit="-1"><result status="valid" time="1.34"/></proof>
<proof prover="0" timelimit="30" steplimit="-1"><result status="valid" time="1.47"/></proof>
</goal>
<goal name="pow2_176" expl="">
<proof prover="0" timelimit="30" steplimit="-1"><result status="valid" time="1.17"/></proof>
<proof prover="0" timelimit="30" steplimit="-1"><result status="valid" time="1.53"/></proof>
</goal>
<goal name="pow2_184" expl="">
<proof prover="0" timelimit="30" steplimit="-1"><result status="valid" time="1.56"/></proof>
<proof prover="0" timelimit="30" steplimit="-1"><result status="valid" time="1.90"/></proof>
</goal>
<goal name="pow2_192" expl="">
<proof prover="0" timelimit="30" steplimit="-1"><result status="valid" time="1.46"/></proof>
<proof prover="0" timelimit="30" steplimit="-1"><result status="valid" time="1.84"/></proof>
</goal>
<goal name="pow2_200" expl="">
<proof prover="0" timelimit="30" steplimit="-1"><result status="valid" time="1.83"/></proof>
<proof prover="0" timelimit="30" steplimit="-1"><result status="valid" time="2.12"/></proof>
</goal>
<goal name="pow2_208" expl="">
<proof prover="0" timelimit="30" steplimit="-1"><result status="valid" time="1.43"/></proof>
<proof prover="0" timelimit="30" steplimit="-1"><result status="valid" time="2.52"/></proof>
</goal>
<goal name="pow2_216" expl="">
<proof prover="0" timelimit="30" steplimit="-1"><result status="valid" time="1.57"/></proof>
<proof prover="0" timelimit="30" steplimit="-1"><result status="valid" time="2.04"/></proof>
</goal>
<goal name="pow2_224" expl="">
<proof prover="0" timelimit="30" steplimit="-1"><result status="valid" time="2.00"/></proof>
<proof prover="0" timelimit="30" steplimit="-1"><result status="valid" time="2.12"/></proof>
</goal>
<goal name="pow2_232" expl="">
<proof prover="0" timelimit="30" steplimit="-1"><result status="valid" time="1.76"/></proof>
<proof prover="0" timelimit="5" steplimit="-1"><result status="valid" time="2.46"/></proof>
</goal>
<goal name="pow2_240" expl="">
<proof prover="0" timelimit="30" steplimit="-1"><result status="valid" time="1.89"/></proof>
<proof prover="0" timelimit="30" steplimit="-1"><result status="valid" time="2.38"/></proof>
</goal>
<goal name="pow2_248" expl="">
<proof prover="0" timelimit="30" steplimit="-1"><result status="valid" time="1.96"/></proof>
<proof prover="0" timelimit="30" steplimit="-1"><result status="valid" time="2.75"/></proof>
</goal>
</theory>
<theory name="AvrModelLemmas" sum="84c2740c682dbec30eb04b8ce55086ee">
......@@ -105,16 +105,16 @@
<proof prover="2"><result status="valid" time="0.02" steps="68"/></proof>
</goal>
</theory>
<theory name="KaratAvr" sum="151e7c12de0ac5b62c20abd89e35150a">
<theory name="KaratAvr" sum="5ec4064fbaf909fc55e44761f206fa27">
<goal name="mul_bound_preserve" expl="">
<proof prover="5"><result status="valid" time="0.15"/></proof>
<proof prover="5" steplimit="1"><result status="valid" time="0.15"/></proof>
</goal>
<goal name="WP_parameter karatsuba96_marked" expl="VC for karatsuba96_marked">
<transf name="split_goal_wp">
<goal name="WP_parameter karatsuba96_marked.1" expl="precondition">
<transf name="compute_in_goal">
<goal name="WP_parameter karatsuba96_marked.1.1" expl="precondition">
<proof prover="0"><result status="valid" time="0.23"/></proof>
<proof prover="0"><result status="valid" time="0.37"/></proof>
</goal>
</transf>
</goal>
......@@ -149,7 +149,7 @@
<goal name="WP_parameter karatsuba96_marked.6" expl="precondition">
<transf name="compute_in_goal">
<goal name="WP_parameter karatsuba96_marked.6.1" expl="precondition">
<proof prover="0"><result status="valid" time="0.24"/></proof>
<proof prover="0"><result status="valid" time="0.40"/></proof>
</goal>
</transf>
</goal>
......@@ -163,7 +163,7 @@
<goal name="WP_parameter karatsuba96_marked.8" expl="assertion">
<transf name="compute_in_goal">
<goal name="WP_parameter karatsuba96_marked.8.1" expl="assertion">
<proof prover="4" timelimit="5"><result status="valid" time="1.11"/></proof>
<proof prover="4" timelimit="5" steplimit="1"><result status="valid" time="1.11"/></proof>
</goal>
</transf>
</goal>
......@@ -177,161 +177,161 @@
<goal name="WP_parameter karatsuba96_marked.10" expl="assertion">
<transf name="compute_in_goal">
<goal name="WP_parameter karatsuba96_marked.10.1" expl="assertion">
<proof prover="4" timelimit="5"><result status="valid" time="3.98"/></proof>
<proof prover="4" timelimit="5" steplimit="1"><result status="valid" time="3.38"/></proof>
</goal>
</transf>
</goal>
<goal name="WP_parameter karatsuba96_marked.11" expl="precondition">
<transf name="compute_in_goal">
<goal name="WP_parameter karatsuba96_marked.11.1" expl="precondition">
<proof prover="0"><result status="valid" time="1.40"/></proof>
<proof prover="0"><result status="valid" time="2.01"/></proof>
</goal>
</transf>
</goal>
<goal name="WP_parameter karatsuba96_marked.12" expl="assertion">
<transf name="compute_in_goal">
<goal name="WP_parameter karatsuba96_marked.12.1" expl="assertion">
<proof prover="4" timelimit="130"><result status="valid" time="8.67"/></proof>
<proof prover="4" timelimit="130" steplimit="1"><result status="valid" time="9.42"/></proof>
</goal>
</transf>
</goal>
<goal name="WP_parameter karatsuba96_marked.13" expl="precondition">
<transf name="compute_in_goal">
<goal name="WP_parameter karatsuba96_marked.13.1" expl="precondition">
<proof prover="0"><result status="valid" time="2.33"/></proof>
<proof prover="0"><result status="valid" time="2.34"/></proof>
</goal>
</transf>
</goal>
<goal name="WP_parameter karatsuba96_marked.14" expl="precondition">
<transf name="compute_in_goal">
<goal name="WP_parameter karatsuba96_marked.14.1" expl="precondition">
<proof prover="0"><result status="valid" time="2.51"/></proof>
<proof prover="0"><result status="valid" time="2.78"/></proof>
</goal>
</transf>
</goal>
<goal name="WP_parameter karatsuba96_marked.15" expl="precondition">
<transf name="compute_in_goal">
<goal name="WP_parameter karatsuba96_marked.15.1" expl="precondition">
<proof prover="0"><result status="valid" time="2.42"/></proof>
<proof prover="0"><result status="valid" time="2.91"/></proof>
</goal>
</transf>
</goal>
<goal name="WP_parameter karatsuba96_marked.16" expl="assertion">
<transf name="compute_in_goal">
<goal name="WP_parameter karatsuba96_marked.16.1" expl="assertion">
<proof prover="0" timelimit="5"><result status="valid" time="2.34"/></proof>
<proof prover="0" timelimit="5"><result status="valid" time="3.10"/></proof>
</goal>
</transf>
</goal>
<goal name="WP_parameter karatsuba96_marked.17" expl="precondition">
<transf name="compute_in_goal">
<goal name="WP_parameter karatsuba96_marked.17.1" expl="precondition">
<proof prover="0"><result status="valid" time="2.30"/></proof>
<proof prover="0"><result status="valid" time="2.48"/></proof>
</goal>
</transf>
</goal>
<goal name="WP_parameter karatsuba96_marked.18" expl="assertion">
<transf name="compute_in_goal">
<goal name="WP_parameter karatsuba96_marked.18.1" expl="assertion">
<proof prover="4" timelimit="130"><result status="valid" time="21.46"/></proof>
<proof prover="4" timelimit="130" steplimit="1"><result status="valid" time="25.10"/></proof>
</goal>
</transf>
</goal>
<goal name="WP_parameter karatsuba96_marked.19" expl="precondition">
<transf name="compute_in_goal">
<goal name="WP_parameter karatsuba96_marked.19.1" expl="precondition">
<proof prover="0"><result status="valid" time="4.48"/></proof>
<proof prover="0"><result status="valid" time="4.60"/></proof>
</goal>
</transf>
</goal>
<goal name="WP_parameter karatsuba96_marked.20" expl="assertion">
<transf name="compute_in_goal">
<goal name="WP_parameter karatsuba96_marked.20.1" expl="assertion">
<proof prover="4" timelimit="130"><result status="valid" time="44.07"/></proof>
<proof prover="4" timelimit="130" steplimit="1"><result status="valid" time="51.70"/></proof>
</goal>
</transf>
</goal>
<goal name="WP_parameter karatsuba96_marked.21" expl="precondition">
<transf name="compute_in_goal">
<goal name="WP_parameter karatsuba96_marked.21.1" expl="precondition">
<proof prover="0"><result status="valid" time="6.71"/></proof>
<proof prover="0"><result status="valid" time="7.12"/></proof>
</goal>
</transf>
</goal>
<goal name="WP_parameter karatsuba96_marked.22" expl="assertion">
<transf name="compute_in_goal">
<goal name="WP_parameter karatsuba96_marked.22.1" expl="assertion">
<proof prover="4" timelimit="130"><result status="valid" time="81.32"/></proof>
<proof prover="4" timelimit="130" steplimit="1"><result status="valid" time="82.84"/></proof>
</goal>
</transf>
</goal>
<goal name="WP_parameter karatsuba96_marked.23" expl="assertion">
<transf name="compute_in_goal">
<goal name="WP_parameter karatsuba96_marked.23.1" expl="assertion">
<proof prover="0" timelimit="130"><result status="valid" time="10.12"/></proof>
<proof prover="0" timelimit="130"><result status="valid" time="9.94"/></proof>
</goal>
</transf>
</goal>
<goal name="WP_parameter karatsuba96_marked.24" expl="precondition">
<transf name="compute_in_goal">
<goal name="WP_parameter karatsuba96_marked.24.1" expl="precondition">
<proof prover="0"><result status="valid" time="9.83"/></proof>
<proof prover="0"><result status="valid" time="9.60"/></proof>
</goal>
</transf>
</goal>
<goal name="WP_parameter karatsuba96_marked.25" expl="precondition">
<transf name="compute_in_goal">
<goal name="WP_parameter karatsuba96_marked.25.1" expl="precondition">
<proof prover="0"><result status="valid" time="7.30"/></proof>
<proof prover="0"><result status="valid" time="7.57"/></proof>
</goal>
</transf>
</goal>
<goal name="WP_parameter karatsuba96_marked.26" expl="precondition">
<transf name="compute_in_goal">
<goal name="WP_parameter karatsuba96_marked.26.1" expl="precondition">
<proof prover="0"><result status="valid" time="7.38"/></proof>
<proof prover="0"><result status="valid" time="7.95"/></proof>
</goal>
</transf>
</goal>
<goal name="WP_parameter karatsuba96_marked.27" expl="VC for karatsuba96_marked">
<transf name="compute_in_goal">
<goal name="WP_parameter karatsuba96_marked.27.1" expl="VC for karatsuba96_marked">
<proof prover="0"><result status="valid" time="7.93"/></proof>
<proof prover="0"><result status="valid" time="10.28"/></proof>
</goal>
</transf>
</goal>
<goal name="WP_parameter karatsuba96_marked.28" expl="VC for karatsuba96_marked">
<transf name="compute_in_goal">
<goal name="WP_parameter karatsuba96_marked.28.1" expl="VC for karatsuba96_marked">
<proof prover="0" timelimit="90" steplimit="-1"><result status="valid" time="8.17"/></proof>
<proof prover="0" timelimit="90" steplimit="-1"><result status="valid" time="9.09"/></proof>
</goal>
</transf>
</goal>
<goal name="WP_parameter karatsuba96_marked.29" expl="VC for karatsuba96_marked">
<transf name="compute_in_goal">
<goal name="WP_parameter karatsuba96_marked.29.1" expl="VC for karatsuba96_marked">
<proof prover="0" timelimit="130"><result status="valid" time="7.80"/></proof>
<proof prover="0" timelimit="130"><result status="valid" time="7.90"/></proof>
</goal>
</transf>
</goal>
<goal name="WP_parameter karatsuba96_marked.30" expl="VC for karatsuba96_marked">
<transf name="compute_in_goal">
<goal name="WP_parameter karatsuba96_marked.30.1" expl="VC for karatsuba96_marked">
<proof prover="0" timelimit="130"><result status="valid" time="12.25"/></proof>
<proof prover="0" timelimit="130"><result status="valid" time="12.43"/></proof>
</goal>
</transf>
</goal>
<goal name="WP_parameter karatsuba96_marked.31" expl="assertion">
<transf name="compute_in_goal">
<goal name="WP_parameter karatsuba96_marked.31.1" expl="assertion">
<proof prover="4" timelimit="5"><result status="valid" time="0.50"/></proof>
<proof prover="4" timelimit="5" steplimit="1"><result status="valid" time="0.51"/></proof>
</goal>
</transf>
</goal>
<goal name="WP_parameter karatsuba96_marked.32" expl="assertion">
<transf name="compute_in_goal">
<goal name="WP_parameter karatsuba96_marked.32.1" expl="assertion">
<proof prover="4" timelimit="5"><result status="valid" time="0.53"/></proof>
<proof prover="4" timelimit="5" steplimit="1"><result status="valid" time="0.61"/></proof>
</goal>
</transf>
</goal>
......@@ -345,7 +345,7 @@
<goal name="WP_parameter karatsuba96_marked.34" expl="precondition">
<transf name="compute_in_goal">
<goal name="WP_parameter karatsuba96_marked.34.1" expl="precondition">
<proof prover="0"><result status="valid" time="0.22"/></proof>
<proof prover="0"><result status="valid" time="0.38"/></proof>
</goal>
</transf>
</goal>
......@@ -359,28 +359,28 @@
<goal name="WP_parameter karatsuba96_marked.36" expl="precondition">
<transf name="compute_in_goal">
<goal name="WP_parameter karatsuba96_marked.36.1" expl="precondition">
<proof prover="0"><result status="valid" time="0.22"/></proof>
<proof prover="0"><result status="valid" time="0.40"/></proof>
</goal>
</transf>
</goal>
<goal name="WP_parameter karatsuba96_marked.37" expl="precondition">
<transf name="compute_in_goal">
<goal name="WP_parameter karatsuba96_marked.37.1" expl="precondition">
<proof prover="0"><result status="valid" time="0.27"/></proof>
<proof prover="0"><result status="valid" time="0.40"/></proof>
</goal>
</transf>
</goal>
<goal name="WP_parameter karatsuba96_marked.38" expl="precondition">
<transf name="compute_in_goal">
<goal name="WP_parameter karatsuba96_marked.38.1" expl="precondition">
<proof prover="0"><result status="valid" time="0.23"/></proof>
<proof prover="0"><result status="valid" time="0.28"/></proof>
</goal>
</transf>
</goal>
<goal name="WP_parameter karatsuba96_marked.39" expl="precondition">
<transf name="compute_in_goal">
<goal name="WP_parameter karatsuba96_marked.39.1" expl="precondition">
<proof prover="0"><result status="valid" time="0.26"/></proof>
<proof prover="0"><result status="valid" time="0.45"/></proof>
</goal>
</transf>
</goal>
......@@ -394,42 +394,42 @@
<goal name="WP_parameter karatsuba96_marked.41" expl="precondition">
<transf name="compute_in_goal">
<goal name="WP_parameter karatsuba96_marked.41.1" expl="precondition">
<proof prover="0"><result status="valid" time="0.24"/></proof>
<proof prover="0"><result status="valid" time="0.52"/></proof>
</goal>
</transf>
</goal>
<goal name="WP_parameter karatsuba96_marked.42" expl="precondition">
<transf name="compute_in_goal">
<goal name="WP_parameter karatsuba96_marked.42.1" expl="precondition">
<proof prover="0"><result status="valid" time="0.30"/></proof>
<proof prover="0"><result status="valid" time="0.33"/></proof>
</goal>
</transf>
</goal>
<goal name="WP_parameter karatsuba96_marked.43" expl="precondition">
<transf name="compute_in_goal">
<goal name="WP_parameter karatsuba96_marked.43.1" expl="precondition">
<proof prover="0"><result status="valid" time="0.31"/></proof>
<proof prover="0"><result status="valid" time="0.26"/></proof>
</goal>
</transf>
</goal>
<goal name="WP_parameter karatsuba96_marked.44" expl="precondition">
<transf name="compute_in_goal">
<goal name="WP_parameter karatsuba96_marked.44.1" expl="precondition">
<proof prover="0"><result status="valid" time="0.45"/></proof>
<proof prover="0"><result status="valid" time="0.27"/></proof>
</goal>
</transf>
</goal>
<goal name="WP_parameter karatsuba96_marked.45" expl="VC for karatsuba96_marked">
<transf name="compute_in_goal">
<goal name="WP_parameter karatsuba96_marked.45.1" expl="VC for karatsuba96_marked">
<proof prover="0"><result status="valid" time="8.43"/></proof>
<proof prover="0"><result status="valid" time="8.19"/></proof>
</goal>
</transf>
</goal>
<goal name="WP_parameter karatsuba96_marked.46" expl="VC for karatsuba96_marked">
<transf name="compute_in_goal">
<goal name="WP_parameter karatsuba96_marked.46.1" expl="VC for karatsuba96_marked">
<proof prover="4" timelimit="300"><result status="valid" time="119.78"/></proof>
<proof prover="4" timelimit="300" steplimit="1"><result status="valid" time="129.67"/></proof>
</goal>
</transf>
</goal>
......@@ -440,14 +440,14 @@
<goal name="WP_parameter karatsuba96_marked.48" expl="precondition">
<transf name="compute_in_goal">
<goal name="WP_parameter karatsuba96_marked.48.1" expl="precondition">
<proof prover="4" timelimit="13" steplimit="-1"><result status="valid" time="2.02"/></proof>
<proof prover="4" steplimit="-1"><result status="valid" time="1.93"/></proof>
</goal>
</transf>
</goal>
<goal name="WP_parameter karatsuba96_marked.49" expl="precondition">
<transf name="compute_in_goal">
<goal name="WP_parameter karatsuba96_marked.49.1" expl="precondition">
<proof prover="0"><result status="valid" time="0.50"/></proof>
<proof prover="0"><result status="valid" time="0.70"/></proof>
</goal>
</transf>
</goal>
......@@ -468,70 +468,70 @@
<goal name="WP_parameter karatsuba96_marked.52" expl="precondition">
<transf name="compute_in_goal">
<goal name="WP_parameter karatsuba96_marked.52.1" expl="precondition">
<proof prover="0"><result status="valid" time="0.57"/></proof>
<proof prover="0"><result status="valid" time="1.08"/></proof>
</goal>
</transf>
</goal>
<goal name="WP_parameter karatsuba96_marked.53" expl="precondition">
<transf name="compute_in_goal">
<goal name="WP_parameter karatsuba96_marked.53.1" expl="precondition">
<proof prover="0"><result status="valid" time="0.58"/></proof>
<proof prover="0"><result status="valid" time="0.82"/></proof>
</goal>
</transf>
</goal>
<goal name="WP_parameter karatsuba96_marked.54" expl="assertion">
<transf name="compute_in_goal">
<goal name="WP_parameter karatsuba96_marked.54.1" expl="assertion">
<proof prover="0" timelimit="130"><result status="valid" time="67.70"/></proof>
<proof prover="0" timelimit="90"><result status="valid" time="87.27"/></proof>
</goal>
</transf>
</goal>
<goal name="WP_parameter karatsuba96_marked.55" expl="precondition">
<transf name="compute_in_goal">
<goal name="WP_parameter karatsuba96_marked.55.1" expl="precondition">
<proof prover="0"><result status="valid" time="0.66"/></proof>
<proof prover="0"><result status="valid" time="0.61"/></proof>
</goal>
</transf>
</goal>
<goal name="WP_parameter karatsuba96_marked.56" expl="precondition">
<transf name="compute_in_goal"