1 <?xml version="1.0" encoding="UTF-8"?>
2 <!DOCTYPE why3session PUBLIC "-//Why3//proof session v5//EN"
3 "https://www.why3.org/why3session.dtd">
4 <why3session shape_version="6">
5 <prover id="0" name="Z3" version="4.12.2" timelimit="5" steplimit="0" memlimit="1000"/>
6 <prover id="1" name="Alt-Ergo" version="2.4.3" timelimit="1" steplimit="0" memlimit="1000"/>
7 <prover id="2" name="Alt-Ergo" version="2.5.2" timelimit="1" steplimit="0" memlimit="1000"/>
8 <prover id="3" name="CVC4" version="1.5" timelimit="1" steplimit="0" memlimit="1000"/>
9 <prover id="4" name="Alt-Ergo" version="2.0.0" timelimit="1" steplimit="0" memlimit="1000"/>
10 <prover id="5" name="Alt-Ergo" version="2.2.0" timelimit="5" steplimit="0" memlimit="1000"/>
11 <file format="whyml" proved="true">
12 <path name=".."/><path name="isqrt_von_neumann.mlw"/>
13 <theory name="VonNeumann16" proved="true">
14 <goal name="sqr_add2" proved="true">
15 <proof prover="0" timelimit="1"><result status="valid" time="0.010000" steps="1148"/></proof>
17 <goal name="isqrt16'vc" expl="VC for isqrt16" proved="true">
18 <transf name="split_goal_right" proved="true" >
19 <goal name="isqrt16'vc.0" expl="loop invariant init" proved="true">
20 <proof prover="3"><result status="valid" time="0.010000" steps="4190"/></proof>
22 <goal name="isqrt16'vc.1" expl="loop invariant init" proved="true">
23 <proof prover="3"><result status="valid" time="0.010000" steps="4238"/></proof>
25 <goal name="isqrt16'vc.2" expl="loop invariant init" proved="true">
26 <proof prover="3"><result status="valid" time="0.020000" steps="4615"/></proof>
28 <goal name="isqrt16'vc.3" expl="loop invariant init" proved="true">
29 <proof prover="3"><result status="valid" time="0.020000" steps="4662"/></proof>
31 <goal name="isqrt16'vc.4" expl="loop invariant init" proved="true">
32 <proof prover="3"><result status="valid" time="0.010000" steps="4280"/></proof>
34 <goal name="isqrt16'vc.5" expl="loop invariant init" proved="true">
35 <proof prover="3"><result status="valid" time="0.010000" steps="4300"/></proof>
37 <goal name="isqrt16'vc.6" expl="loop invariant init" proved="true">
38 <proof prover="3"><result status="valid" time="0.010000" steps="4321"/></proof>
40 <goal name="isqrt16'vc.7" expl="loop invariant init" proved="true">
41 <proof prover="3"><result status="valid" time="0.020000" steps="4785"/></proof>
43 <goal name="isqrt16'vc.8" expl="loop invariant init" proved="true">
44 <proof prover="3"><result status="valid" time="0.010000" steps="4375"/></proof>
46 <goal name="isqrt16'vc.9" expl="loop invariant init" proved="true">
47 <proof prover="3"><result status="valid" time="0.010000" steps="5877"/></proof>
49 <goal name="isqrt16'vc.10" expl="assertion" proved="true">
50 <proof prover="3"><result status="valid" time="0.020000" steps="7552"/></proof>
52 <goal name="isqrt16'vc.11" expl="assertion" proved="true">
53 <proof prover="3"><result status="valid" time="0.010000" steps="4541"/></proof>
55 <goal name="isqrt16'vc.12" expl="assertion" proved="true">
56 <proof prover="3"><result status="valid" time="0.010000" steps="4594"/></proof>
58 <goal name="isqrt16'vc.13" expl="assertion" proved="true">
59 <proof prover="3"><result status="valid" time="0.010000" steps="4697"/></proof>
61 <goal name="isqrt16'vc.14" expl="assertion" proved="true">
62 <proof prover="3"><result status="valid" time="0.050000" steps="22636"/></proof>
64 <goal name="isqrt16'vc.15" expl="assertion" proved="true">
65 <proof prover="3"><result status="valid" time="0.080000" steps="26169"/></proof>
67 <goal name="isqrt16'vc.16" expl="assertion" proved="true">
68 <proof prover="3"><result status="valid" time="0.080000" steps="22542"/></proof>
70 <goal name="isqrt16'vc.17" expl="assertion" proved="true">
71 <proof prover="3"><result status="valid" time="0.060000" steps="30471"/></proof>
73 <goal name="isqrt16'vc.18" expl="assertion" proved="true">
74 <proof prover="3"><result status="valid" time="0.060000" steps="23806"/></proof>
76 <goal name="isqrt16'vc.19" expl="loop variant decrease" proved="true">
77 <proof prover="3"><result status="valid" time="0.080000" steps="33778"/></proof>
79 <goal name="isqrt16'vc.20" expl="loop invariant preservation" proved="true">
80 <proof prover="3"><result status="valid" time="0.060000" steps="23879"/></proof>
82 <goal name="isqrt16'vc.21" expl="loop invariant preservation" proved="true">
83 <proof prover="3"><result status="valid" time="0.050000" steps="25288"/></proof>
85 <goal name="isqrt16'vc.22" expl="loop invariant preservation" proved="true">
86 <proof prover="3"><result status="valid" time="0.190000" steps="62212"/></proof>
88 <goal name="isqrt16'vc.23" expl="loop invariant preservation" proved="true">
89 <proof prover="3"><result status="valid" time="0.060000" steps="56561"/></proof>
91 <goal name="isqrt16'vc.24" expl="loop invariant preservation" proved="true">
92 <proof prover="3"><result status="valid" time="0.050000" steps="26144"/></proof>
94 <goal name="isqrt16'vc.25" expl="loop invariant preservation" proved="true">
95 <proof prover="3"><result status="valid" time="0.010000" steps="5312"/></proof>
97 <goal name="isqrt16'vc.26" expl="loop invariant preservation" proved="true">
98 <proof prover="3"><result status="valid" time="0.020000" steps="33281"/></proof>
100 <goal name="isqrt16'vc.27" expl="loop invariant preservation" proved="true">
101 <proof prover="3"><result status="valid" time="0.180000" steps="78568"/></proof>
103 <goal name="isqrt16'vc.28" expl="loop invariant preservation" proved="true">
104 <proof prover="3"><result status="valid" time="0.070000" steps="28432"/></proof>
106 <goal name="isqrt16'vc.29" expl="loop invariant preservation" proved="true">
107 <proof prover="3"><result status="valid" time="0.040000" steps="35440"/></proof>
109 <goal name="isqrt16'vc.30" expl="loop variant decrease" proved="true">
110 <proof prover="3"><result status="valid" time="0.070000" steps="32949"/></proof>
112 <goal name="isqrt16'vc.31" expl="loop invariant preservation" proved="true">
113 <proof prover="3"><result status="valid" time="0.050000" steps="22673"/></proof>
115 <goal name="isqrt16'vc.32" expl="loop invariant preservation" proved="true">
116 <proof prover="3"><result status="valid" time="0.050000" steps="23915"/></proof>
118 <goal name="isqrt16'vc.33" expl="loop invariant preservation" proved="true">
119 <proof prover="3"><result status="valid" time="0.080000" steps="58904"/></proof>
121 <goal name="isqrt16'vc.34" expl="loop invariant preservation" proved="true">
122 <proof prover="3"><result status="valid" time="0.060000" steps="48029"/></proof>
124 <goal name="isqrt16'vc.35" expl="loop invariant preservation" proved="true">
125 <proof prover="3"><result status="valid" time="0.010000" steps="5382"/></proof>
127 <goal name="isqrt16'vc.36" expl="loop invariant preservation" proved="true">
128 <proof prover="3"><result status="valid" time="0.010000" steps="5061"/></proof>
130 <goal name="isqrt16'vc.37" expl="loop invariant preservation" proved="true">
131 <proof prover="3"><result status="valid" time="0.010000" steps="5426"/></proof>
133 <goal name="isqrt16'vc.38" expl="loop invariant preservation" proved="true">
134 <proof prover="3"><result status="valid" time="0.010000" steps="5447"/></proof>
136 <goal name="isqrt16'vc.39" expl="loop invariant preservation" proved="true">
137 <proof prover="3"><result status="valid" time="0.060000" steps="24896"/></proof>
139 <goal name="isqrt16'vc.40" expl="loop invariant preservation" proved="true">
140 <proof prover="3"><result status="valid" time="0.420000" steps="81023"/></proof>
142 <goal name="isqrt16'vc.41" expl="postcondition" proved="true">
143 <proof prover="3"><result status="valid" time="0.020000" steps="31421"/></proof>
145 <goal name="isqrt16'vc.42" expl="postcondition" proved="true">
146 <proof prover="3"><result status="valid" time="0.010000" steps="28497"/></proof>
151 <theory name="VonNeumann32" proved="true">
152 <goal name="sqr_add2" proved="true">
153 <transf name="unfold" proved="true" arg1="sqr">
154 <goal name="sqr_add2.0" proved="true">
155 <proof prover="0" timelimit="20"><result status="valid" time="0.010000" steps="1148"/></proof>
159 <goal name="isqrt32'vc" expl="VC for isqrt32" proved="true">
160 <transf name="split_goal_right" proved="true" >
161 <goal name="isqrt32'vc.0" expl="loop invariant init" proved="true">
162 <proof prover="3"><result status="valid" time="0.020000" steps="4190"/></proof>
164 <goal name="isqrt32'vc.1" expl="loop invariant init" proved="true">
165 <proof prover="3"><result status="valid" time="0.010000" steps="4238"/></proof>
167 <goal name="isqrt32'vc.2" expl="loop invariant init" proved="true">
168 <proof prover="3"><result status="valid" time="0.020000" steps="4615"/></proof>
170 <goal name="isqrt32'vc.3" expl="loop invariant init" proved="true">
171 <proof prover="3"><result status="valid" time="0.010000" steps="4662"/></proof>
173 <goal name="isqrt32'vc.4" expl="loop invariant init" proved="true">
174 <proof prover="3"><result status="valid" time="0.010000" steps="4280"/></proof>
176 <goal name="isqrt32'vc.5" expl="loop invariant init" proved="true">
177 <proof prover="3"><result status="valid" time="0.010000" steps="4300"/></proof>
179 <goal name="isqrt32'vc.6" expl="loop invariant init" proved="true">
180 <proof prover="3"><result status="valid" time="0.010000" steps="4321"/></proof>
182 <goal name="isqrt32'vc.7" expl="loop invariant init" proved="true">
183 <proof prover="3"><result status="valid" time="0.020000" steps="4785"/></proof>
185 <goal name="isqrt32'vc.8" expl="loop invariant init" proved="true">
186 <proof prover="3"><result status="valid" time="0.020000" steps="4375"/></proof>
188 <goal name="isqrt32'vc.9" expl="loop invariant init" proved="true">
189 <proof prover="3"><result status="valid" time="0.020000" steps="6805"/></proof>
191 <goal name="isqrt32'vc.10" expl="assertion" proved="true">
192 <proof prover="3"><result status="valid" time="0.020000" steps="9839"/></proof>
194 <goal name="isqrt32'vc.11" expl="assertion" proved="true">
195 <proof prover="3"><result status="valid" time="0.010000" steps="4541"/></proof>
197 <goal name="isqrt32'vc.12" expl="assertion" proved="true">
198 <proof prover="3"><result status="valid" time="0.010000" steps="4594"/></proof>
200 <goal name="isqrt32'vc.13" expl="assertion" proved="true">
201 <proof prover="3"><result status="valid" time="0.010000" steps="4697"/></proof>
203 <goal name="isqrt32'vc.14" expl="assertion" proved="true">
204 <proof prover="3"><result status="valid" time="0.140000" steps="66538"/></proof>
206 <goal name="isqrt32'vc.15" expl="assertion" proved="true">
207 <proof prover="3"><result status="valid" time="0.230000" steps="83666"/></proof>
209 <goal name="isqrt32'vc.16" expl="assertion" proved="true">
210 <proof prover="3"><result status="valid" time="0.180000" steps="69854"/></proof>
212 <goal name="isqrt32'vc.17" expl="assertion" proved="true">
213 <proof prover="3"><result status="valid" time="0.190000" steps="96537"/></proof>
215 <goal name="isqrt32'vc.18" expl="assertion" proved="true">
216 <proof prover="3"><result status="valid" time="0.210000" steps="71402"/></proof>
218 <goal name="isqrt32'vc.19" expl="loop variant decrease" proved="true">
219 <proof prover="3"><result status="valid" time="0.383333" steps="104484"/></proof>
221 <goal name="isqrt32'vc.20" expl="loop invariant preservation" proved="true">
222 <proof prover="3"><result status="valid" time="0.130000" steps="67895"/></proof>
224 <goal name="isqrt32'vc.21" expl="loop invariant preservation" proved="true">
225 <proof prover="3"><result status="valid" time="0.140000" steps="70374"/></proof>
227 <goal name="isqrt32'vc.22" expl="loop invariant preservation" proved="true">
228 <proof prover="3"><result status="valid" time="0.614570" steps="201479"/></proof>
230 <goal name="isqrt32'vc.23" expl="loop invariant preservation" proved="true">
231 <proof prover="3"><result status="valid" time="0.500000" steps="175624"/></proof>
233 <goal name="isqrt32'vc.24" expl="loop invariant preservation" proved="true">
234 <proof prover="3"><result status="valid" time="0.130000" steps="71789"/></proof>
236 <goal name="isqrt32'vc.25" expl="loop invariant preservation" proved="true">
237 <proof prover="3"><result status="valid" time="0.010000" steps="5312"/></proof>
239 <goal name="isqrt32'vc.26" expl="loop invariant preservation" proved="true">
240 <proof prover="3"><result status="valid" time="0.290051" steps="88525"/></proof>
242 <goal name="isqrt32'vc.27" expl="loop invariant preservation" proved="true">
243 <transf name="introduce_premises" proved="true" >
244 <goal name="isqrt32'vc.27.0" expl="loop invariant preservation" proved="true">
245 <transf name="replace" proved="true" arg1="res_g" arg2="(add res_g1 bits_g1)">
246 <goal name="isqrt32'vc.27.0.0" expl="loop invariant preservation" proved="true">
247 <transf name="rewrite" proved="true" arg1="sqr_add2">
248 <goal name="isqrt32'vc.27.0.0.0" expl="loop invariant preservation" proved="true">
249 <proof prover="3"><result status="valid" time="0.770000" steps="141299"/></proof>
253 <goal name="isqrt32'vc.27.0.1" expl="equality hypothesis" proved="true">
254 <proof prover="3"><result status="valid" time="0.010000" steps="4892"/></proof>
260 <goal name="isqrt32'vc.28" expl="loop invariant preservation" proved="true">
261 <proof prover="3"><result status="valid" time="0.130000" steps="75788"/></proof>
263 <goal name="isqrt32'vc.29" expl="loop invariant preservation" proved="true">
264 <proof prover="3"><result status="valid" time="0.190000" steps="89649"/></proof>
266 <goal name="isqrt32'vc.30" expl="loop variant decrease" proved="true">
267 <proof prover="3"><result status="valid" time="0.230000" steps="106161"/></proof>
269 <goal name="isqrt32'vc.31" expl="loop invariant preservation" proved="true">
270 <proof prover="3"><result status="valid" time="0.110000" steps="66330"/></proof>
272 <goal name="isqrt32'vc.32" expl="loop invariant preservation" proved="true">
273 <proof prover="3"><result status="valid" time="0.140000" steps="68118"/></proof>
275 <goal name="isqrt32'vc.33" expl="loop invariant preservation" proved="true">
276 <proof prover="3"><result status="valid" time="0.730000" steps="194358"/></proof>
278 <goal name="isqrt32'vc.34" expl="loop invariant preservation" proved="true">
279 <proof prover="3"><result status="valid" time="0.300000" steps="147049"/></proof>
281 <goal name="isqrt32'vc.35" expl="loop invariant preservation" proved="true">
282 <proof prover="3"><result status="valid" time="0.020000" steps="5382"/></proof>
284 <goal name="isqrt32'vc.36" expl="loop invariant preservation" proved="true">
285 <proof prover="3"><result status="valid" time="0.000000" steps="5061"/></proof>
287 <goal name="isqrt32'vc.37" expl="loop invariant preservation" proved="true">
288 <proof prover="3"><result status="valid" time="0.010000" steps="5426"/></proof>
290 <goal name="isqrt32'vc.38" expl="loop invariant preservation" proved="true">
291 <proof prover="3"><result status="valid" time="0.010000" steps="5447"/></proof>
293 <goal name="isqrt32'vc.39" expl="loop invariant preservation" proved="true">
294 <proof prover="3"><result status="valid" time="0.120000" steps="69677"/></proof>
296 <goal name="isqrt32'vc.40" expl="loop invariant preservation" proved="true">
297 <proof prover="3" timelimit="120"><result status="valid" time="86.220000" steps="485446"/></proof>
299 <goal name="isqrt32'vc.41" expl="postcondition" proved="true">
300 <proof prover="3"><result status="valid" time="0.160000" steps="102287"/></proof>
302 <goal name="isqrt32'vc.42" expl="postcondition" proved="true">
303 <proof prover="3"><result status="valid" time="0.150000" steps="86161"/></proof>
308 <theory name="VonNeumann64" proved="true">
309 <goal name="sqr_add2" proved="true">
310 <transf name="unfold" proved="true" arg1="sqr">
311 <goal name="sqr_add2.0" proved="true">
312 <proof prover="0" timelimit="1"><result status="valid" time="0.010000" steps="1148"/></proof>
316 <goal name="isqrt64'vc" expl="VC for isqrt64" proved="true">
317 <transf name="split_goal_right" proved="true" >
318 <goal name="isqrt64'vc.0" expl="loop invariant init" proved="true">
319 <proof prover="3"><result status="valid" time="0.010000" steps="4190"/></proof>
321 <goal name="isqrt64'vc.1" expl="loop invariant init" proved="true">
322 <proof prover="3"><result status="valid" time="0.010000" steps="4238"/></proof>
324 <goal name="isqrt64'vc.2" expl="loop invariant init" proved="true">
325 <proof prover="3"><result status="valid" time="0.010000" steps="4615"/></proof>
327 <goal name="isqrt64'vc.3" expl="loop invariant init" proved="true">
328 <proof prover="3"><result status="valid" time="0.010000" steps="4662"/></proof>
330 <goal name="isqrt64'vc.4" expl="loop invariant init" proved="true">
331 <proof prover="3"><result status="valid" time="0.010000" steps="4280"/></proof>
333 <goal name="isqrt64'vc.5" expl="loop invariant init" proved="true">
334 <proof prover="3"><result status="valid" time="0.010000" steps="4300"/></proof>
336 <goal name="isqrt64'vc.6" expl="loop invariant init" proved="true">
337 <proof prover="3"><result status="valid" time="0.010000" steps="4321"/></proof>
339 <goal name="isqrt64'vc.7" expl="loop invariant init" proved="true">
340 <proof prover="3"><result status="valid" time="0.010000" steps="4785"/></proof>
342 <goal name="isqrt64'vc.8" expl="loop invariant init" proved="true">
343 <proof prover="3"><result status="valid" time="0.010000" steps="4375"/></proof>
345 <goal name="isqrt64'vc.9" expl="loop invariant init" proved="true">
346 <proof prover="3"><result status="valid" time="0.020000" steps="8661"/></proof>
348 <goal name="isqrt64'vc.10" expl="assertion" proved="true">
349 <proof prover="3"><result status="valid" time="0.050000" steps="14525"/></proof>
351 <goal name="isqrt64'vc.11" expl="assertion" proved="true">
352 <proof prover="3"><result status="valid" time="0.010000" steps="4541"/></proof>
354 <goal name="isqrt64'vc.12" expl="assertion" proved="true">
355 <proof prover="3"><result status="valid" time="0.010000" steps="4594"/></proof>
357 <goal name="isqrt64'vc.13" expl="assertion" proved="true">
358 <proof prover="3"><result status="valid" time="0.010000" steps="4697"/></proof>
360 <goal name="isqrt64'vc.14" expl="assertion" proved="true">
361 <proof prover="3"><result status="valid" time="0.740000" steps="235879"/></proof>
363 <goal name="isqrt64'vc.15" expl="assertion" proved="true">
364 <proof prover="3" timelimit="10" memlimit="4000"><result status="valid" time="1.309545" steps="303408"/></proof>
366 <goal name="isqrt64'vc.16" expl="assertion" proved="true">
367 <proof prover="3" timelimit="10" memlimit="4000"><result status="valid" time="1.685720" steps="270174"/></proof>
369 <goal name="isqrt64'vc.17" expl="assertion" proved="true">
370 <proof prover="3" timelimit="5"><result status="valid" time="1.264693" steps="358773"/></proof>
372 <goal name="isqrt64'vc.18" expl="assertion" proved="true">
373 <proof prover="3" timelimit="10" memlimit="4000"><result status="valid" time="2.351444" steps="278519"/></proof>
375 <goal name="isqrt64'vc.19" expl="loop variant decrease" proved="true">
376 <proof prover="3" timelimit="5"><result status="valid" time="1.920000" steps="376838"/></proof>
378 <goal name="isqrt64'vc.20" expl="loop invariant preservation" proved="true">
379 <proof prover="3"><result status="valid" time="0.500000" steps="235802"/></proof>
381 <goal name="isqrt64'vc.21" expl="loop invariant preservation" proved="true">
382 <proof prover="3"><result status="valid" time="0.480000" steps="240482"/></proof>
384 <goal name="isqrt64'vc.22" expl="loop invariant preservation" proved="true">
385 <proof prover="3" timelimit="10" memlimit="4000"><result status="valid" time="2.827910" steps="729017"/></proof>
387 <goal name="isqrt64'vc.23" expl="loop invariant preservation" proved="true">
388 <proof prover="3" timelimit="60"><result status="valid" time="2.356394" steps="622368"/></proof>
390 <goal name="isqrt64'vc.24" expl="loop invariant preservation" proved="true">
391 <proof prover="3"><result status="valid" time="0.490000" steps="242932"/></proof>
393 <goal name="isqrt64'vc.25" expl="loop invariant preservation" proved="true">
394 <proof prover="3"><result status="valid" time="0.010000" steps="5312"/></proof>
396 <goal name="isqrt64'vc.26" expl="loop invariant preservation" proved="true">
397 <proof prover="3"><result status="valid" time="0.913049" steps="285206"/></proof>
399 <goal name="isqrt64'vc.27" expl="loop invariant preservation" proved="true">
400 <transf name="introduce_premises" proved="true" >
401 <goal name="isqrt64'vc.27.0" expl="loop invariant preservation" proved="true">
402 <transf name="replace" proved="true" arg1="res_g" arg2="(add res_g1 bits_g1)">
403 <goal name="isqrt64'vc.27.0.0" expl="loop invariant preservation" proved="true">
404 <transf name="rewrite" proved="true" arg1="sqr_add2">
405 <goal name="isqrt64'vc.27.0.0.0" expl="loop invariant preservation" proved="true">
406 <proof prover="3" timelimit="30"><result status="valid" time="7.788297" steps="550475"/></proof>
410 <goal name="isqrt64'vc.27.0.1" expl="equality hypothesis" proved="true">
411 <proof prover="3"><result status="valid" time="0.010000" steps="4892"/></proof>
417 <goal name="isqrt64'vc.28" expl="loop invariant preservation" proved="true">
418 <proof prover="3"><result status="valid" time="0.510000" steps="250647"/></proof>
420 <goal name="isqrt64'vc.29" expl="loop invariant preservation" proved="true">
421 <proof prover="3"><result status="valid" time="0.675419" steps="279666"/></proof>
423 <goal name="isqrt64'vc.30" expl="loop variant decrease" proved="true">
424 <proof prover="3" timelimit="5"><result status="valid" time="1.528492" steps="396093"/></proof>
426 <goal name="isqrt64'vc.31" expl="loop invariant preservation" proved="true">
427 <proof prover="3"><result status="valid" time="0.450000" steps="234667"/></proof>
429 <goal name="isqrt64'vc.32" expl="loop invariant preservation" proved="true">
430 <proof prover="3"><result status="valid" time="0.510000" steps="236390"/></proof>
432 <goal name="isqrt64'vc.33" expl="loop invariant preservation" proved="true">
433 <proof prover="3" timelimit="10" memlimit="4000"><result status="valid" time="2.870000" steps="711100"/></proof>
435 <goal name="isqrt64'vc.34" expl="loop invariant preservation" proved="true">
436 <proof prover="3"><result status="valid" time="1.495005" steps="524978"/></proof>
438 <goal name="isqrt64'vc.35" expl="loop invariant preservation" proved="true">
439 <proof prover="3"><result status="valid" time="0.010000" steps="5382"/></proof>
441 <goal name="isqrt64'vc.36" expl="loop invariant preservation" proved="true">
442 <proof prover="3"><result status="valid" time="0.010000" steps="5061"/></proof>
444 <goal name="isqrt64'vc.37" expl="loop invariant preservation" proved="true">
445 <proof prover="3"><result status="valid" time="0.010000" steps="5426"/></proof>
447 <goal name="isqrt64'vc.38" expl="loop invariant preservation" proved="true">
448 <proof prover="3"><result status="valid" time="0.010000" steps="5447"/></proof>
450 <goal name="isqrt64'vc.39" expl="loop invariant preservation" proved="true">
451 <proof prover="3"><result status="valid" time="0.550131" steps="239204"/></proof>
453 <goal name="isqrt64'vc.40" expl="loop invariant preservation" proved="true">
454 <transf name="introduce_premises" proved="true" >
455 <goal name="isqrt64'vc.40.0" expl="loop invariant preservation" proved="true">
456 <transf name="unfold" proved="true" arg1="ule">
457 <goal name="isqrt64'vc.40.0.0" expl="VC for isqrt64" proved="true">
458 <transf name="rewrite" proved="true" arg1="sqr_add2">
459 <goal name="isqrt64'vc.40.0.0.0" expl="VC for isqrt64" proved="true">
460 <transf name="assert" proved="true" arg1="(x = add (sqr res_g) num)">
461 <goal name="isqrt64'vc.40.0.0.0.0" expl="asserted formula" proved="true">
462 <proof prover="3" timelimit="5"><result status="valid" time="0.580000" steps="285552"/></proof>
464 <goal name="isqrt64'vc.40.0.0.0.1" expl="VC for isqrt64" proved="true">
465 <transf name="unfold" proved="true" arg1="sqr">
466 <goal name="isqrt64'vc.40.0.0.0.1.0" expl="VC for isqrt64" proved="true">
467 <transf name="rewrite" proved="true" arg1="h">
468 <goal name="isqrt64'vc.40.0.0.0.1.0.0" expl="VC for isqrt64" proved="true">
469 <transf name="assert" proved="true" arg1="(ule num (pred (mul bits_g1 (add (mul (2:t) res_g) bits_g1))))">
470 <goal name="isqrt64'vc.40.0.0.0.1.0.0.0" expl="asserted formula" proved="true">
471 <transf name="assert" proved="true" arg1="(ult num b)">
472 <goal name="isqrt64'vc.40.0.0.0.1.0.0.0.0" expl="asserted formula" proved="true">
473 <proof prover="0"><result status="valid" time="0.010000" steps="1264"/></proof>
475 <goal name="isqrt64'vc.40.0.0.0.1.0.0.0.1" expl="asserted formula" proved="true">
476 <transf name="assert" proved="true" arg1="(forall a b. mul a b = mul b a)">
477 <goal name="isqrt64'vc.40.0.0.0.1.0.0.0.1.0" expl="asserted formula" proved="true">
478 <proof prover="3"><result status="valid" time="0.010000" steps="4846"/></proof>
480 <goal name="isqrt64'vc.40.0.0.0.1.0.0.0.1.1" expl="asserted formula" proved="true">
481 <proof prover="4"><result status="valid" time="0.140000" steps="142"/></proof>
487 <goal name="isqrt64'vc.40.0.0.0.1.0.0.1" expl="VC for isqrt64" proved="true">
488 <transf name="replace" proved="true" arg1="(pow2 m)" arg2="bits_g1">
489 <goal name="isqrt64'vc.40.0.0.0.1.0.0.1.0" expl="VC for isqrt64" proved="true">
490 <transf name="assert" proved="true" arg1="(ule (add res_g (pow2 m1)) (0x100000000:t))">
491 <goal name="isqrt64'vc.40.0.0.0.1.0.0.1.0.0" expl="asserted formula" proved="true">
492 <proof prover="0"><result status="valid" time="0.010000" steps="1856"/></proof>
494 <goal name="isqrt64'vc.40.0.0.0.1.0.0.1.0.1" expl="VC for isqrt64" proved="true">
495 <transf name="assert" proved="true" arg1="(ule (add res_g bits_g1) (0x100000000:t))">
496 <goal name="isqrt64'vc.40.0.0.0.1.0.0.1.0.1.0" expl="asserted formula" proved="true">
497 <proof prover="3" timelimit="5"><result status="valid" time="0.700000" steps="404857"/></proof>
499 <goal name="isqrt64'vc.40.0.0.0.1.0.0.1.0.1.1" expl="VC for isqrt64" proved="true">
500 <transf name="unfold" proved="true" arg1="pred">
501 <goal name="isqrt64'vc.40.0.0.0.1.0.0.1.0.1.1.0" expl="VC for isqrt64" proved="true">
502 <transf name="unfold" proved="true" arg1="pred" arg2="in" arg3="h2">
503 <goal name="isqrt64'vc.40.0.0.0.1.0.0.1.0.1.1.0.0" expl="VC for isqrt64" proved="true">
504 <transf name="assert" proved="true" arg1="(forall a b c. t'int b + t'int c < two_power_size -> ule a b -> ule (add a c) (add b c))">
505 <goal name="isqrt64'vc.40.0.0.0.1.0.0.1.0.1.1.0.0.0" expl="asserted formula" proved="true">
506 <proof prover="5"><result status="valid" time="0.160856" steps="620"/></proof>
508 <goal name="isqrt64'vc.40.0.0.0.1.0.0.1.0.1.1.0.0.1" expl="VC for isqrt64" proved="true">
509 <transf name="case" proved="true" arg1="(add (sqr res_g) (mul bits_g1 (add (mul (2:t) res_g) bits_g1)) = (0:t))">
510 <goal name="isqrt64'vc.40.0.0.0.1.0.0.1.0.1.1.0.0.1.0" expl="true case" proved="true">
511 <transf name="unfold" proved="true" arg1="sqr" arg2="in" arg3="h">
512 <goal name="isqrt64'vc.40.0.0.0.1.0.0.1.0.1.1.0.0.1.0.0" expl="true case" proved="true">
513 <proof prover="3" timelimit="5"><result status="valid" time="3.277349" steps="508151"/></proof>
517 <goal name="isqrt64'vc.40.0.0.0.1.0.0.1.0.1.1.0.0.1.1" expl="false case" proved="true">
518 <transf name="case" proved="true" arg1="(res_g = (0:t))">
519 <goal name="isqrt64'vc.40.0.0.0.1.0.0.1.0.1.1.0.0.1.1.0" expl="false case (true case)" proved="true">
520 <proof prover="3" timelimit="5"><result status="valid" time="3.607718" steps="592821"/></proof>
522 <goal name="isqrt64'vc.40.0.0.0.1.0.0.1.0.1.1.0.0.1.1.1" expl="false case" proved="true">
523 <transf name="rewrite" proved="true" arg1="to_uint_sub_bounded">
524 <goal name="isqrt64'vc.40.0.0.0.1.0.0.1.0.1.1.0.0.1.1.1.0" expl="false case" proved="true">
525 <transf name="rewrite" proved="true" arg1="to_uint_add_bounded">
526 <goal name="isqrt64'vc.40.0.0.0.1.0.0.1.0.1.1.0.0.1.1.1.0.0" expl="false case" proved="true">
527 <transf name="rewrite" proved="true" arg1="to_uint_add_bounded">
528 <goal name="isqrt64'vc.40.0.0.0.1.0.0.1.0.1.1.0.0.1.1.1.0.0.0" expl="false case" proved="true">
529 <transf name="unfold" proved="true" arg1="sqr">
530 <goal name="isqrt64'vc.40.0.0.0.1.0.0.1.0.1.1.0.0.1.1.1.0.0.0.0" expl="false case" proved="true">
531 <transf name="assert" proved="true" arg1="(forall a b c. b <= c -> a + b <= a + c)">
532 <goal name="isqrt64'vc.40.0.0.0.1.0.0.1.0.1.1.0.0.1.1.1.0.0.0.0.0" expl="asserted formula" proved="true">
533 <proof prover="0"><result status="valid" time="0.010000" steps="1460"/></proof>
535 <goal name="isqrt64'vc.40.0.0.0.1.0.0.1.0.1.1.0.0.1.1.1.0.0.0.0.1" expl="false case" proved="true">
536 <transf name="unfold" proved="true" arg1="ule" arg2="in" arg3="h6">
537 <goal name="isqrt64'vc.40.0.0.0.1.0.0.1.0.1.1.0.0.1.1.1.0.0.0.0.1.0" expl="false case" proved="true">
538 <transf name="rewrite" proved="true" arg1="to_uint_sub_bounded" arg2="in" arg3="h6">
539 <goal name="isqrt64'vc.40.0.0.0.1.0.0.1.0.1.1.0.0.1.1.1.0.0.0.0.1.0.0" expl="false case" proved="true">
540 <proof prover="0"><result status="valid" time="0.010000" steps="1513"/></proof>
542 <goal name="isqrt64'vc.40.0.0.0.1.0.0.1.0.1.1.0.0.1.1.1.0.0.0.0.1.0.1" expl="rewrite premises" proved="true">
543 <transf name="assert" proved="true" arg1="(0 <= t'int b - t'int (1:t))">
544 <goal name="isqrt64'vc.40.0.0.0.1.0.0.1.0.1.1.0.0.1.1.1.0.0.0.0.1.0.1.0" expl="asserted formula" proved="true">
545 <proof prover="5"><result status="valid" time="0.095791" steps="219"/></proof>
547 <goal name="isqrt64'vc.40.0.0.0.1.0.0.1.0.1.1.0.0.1.1.1.0.0.0.0.1.0.1.1" expl="rewrite premises" proved="true">
548 <proof prover="0" timelimit="1"><result status="valid" time="0.491190" steps="1599592"/></proof>
560 <goal name="isqrt64'vc.40.0.0.0.1.0.0.1.0.1.1.0.0.1.1.1.0.0.1" expl="rewrite premises" proved="true">
561 <transf name="rewrite" proved="true" arg1="to_uint_mul_bounded">
562 <goal name="isqrt64'vc.40.0.0.0.1.0.0.1.0.1.1.0.0.1.1.1.0.0.1.0" expl="rewrite premises" proved="true">
563 <transf name="rewrite" proved="true" arg1="to_uint_mul_bounded">
564 <goal name="isqrt64'vc.40.0.0.0.1.0.0.1.0.1.1.0.0.1.1.1.0.0.1.0.0" expl="rewrite premises" proved="true">
565 <transf name="rewrite" proved="true" arg1="to_uint_add_bounded">
566 <goal name="isqrt64'vc.40.0.0.0.1.0.0.1.0.1.1.0.0.1.1.1.0.0.1.0.0.0" expl="rewrite premises" proved="true">
567 <transf name="rewrite" proved="true" arg1="to_uint_mul_bounded">
568 <goal name="isqrt64'vc.40.0.0.0.1.0.0.1.0.1.1.0.0.1.1.1.0.0.1.0.0.0.0" expl="rewrite premises" proved="true">
569 <transf name="assert" proved="true" arg1="(forall a b. a * a + b * ((2 * a) + b) = (a + b) * (a + b))">
570 <goal name="isqrt64'vc.40.0.0.0.1.0.0.1.0.1.1.0.0.1.1.1.0.0.1.0.0.0.0.0" expl="asserted formula" proved="true">
571 <proof prover="0"><result status="valid" time="0.010000" steps="5332"/></proof>
573 <goal name="isqrt64'vc.40.0.0.0.1.0.0.1.0.1.1.0.0.1.1.1.0.0.1.0.0.0.0.1" expl="rewrite premises" proved="true">
574 <transf name="replace" proved="true" arg1="(t'int (2:t))" arg2="2">
575 <goal name="isqrt64'vc.40.0.0.0.1.0.0.1.0.1.1.0.0.1.1.1.0.0.1.0.0.0.0.1.0" expl="rewrite premises" proved="true">
576 <transf name="rewrite" proved="true" arg1="h">
577 <goal name="isqrt64'vc.40.0.0.0.1.0.0.1.0.1.1.0.0.1.1.1.0.0.1.0.0.0.0.1.0.0" expl="rewrite premises" proved="true">
578 <transf name="replace" proved="true" arg1="two_power_size" arg2="(0x100000000 * 0x100000000)">
579 <goal name="isqrt64'vc.40.0.0.0.1.0.0.1.0.1.1.0.0.1.1.1.0.0.1.0.0.0.0.1.0.0.0" expl="rewrite premises" proved="true">
580 <transf name="rewrite" proved="true" arg1="<-" arg2="to_uint_add_bounded">
581 <goal name="isqrt64'vc.40.0.0.0.1.0.0.1.0.1.1.0.0.1.1.1.0.0.1.0.0.0.0.1.0.0.0.0" expl="rewrite premises" proved="true">
582 <proof prover="1"><result status="valid" time="0.325152" steps="3492"/></proof>
584 <goal name="isqrt64'vc.40.0.0.0.1.0.0.1.0.1.1.0.0.1.1.1.0.0.1.0.0.0.0.1.0.0.0.1" expl="rewrite premises" proved="true">
585 <proof prover="3" timelimit="10" memlimit="4000"><result status="valid" time="3.140000" steps="598362"/></proof>
589 <goal name="isqrt64'vc.40.0.0.0.1.0.0.1.0.1.1.0.0.1.1.1.0.0.1.0.0.0.0.1.0.0.1" expl="equality hypothesis" proved="true">
590 <proof prover="3" timelimit="5"><result status="valid" time="0.010000" steps="5118"/></proof>
596 <goal name="isqrt64'vc.40.0.0.0.1.0.0.1.0.1.1.0.0.1.1.1.0.0.1.0.0.0.0.1.1" expl="equality hypothesis" proved="true">
597 <proof prover="3"><result status="valid" time="0.010000" steps="5881"/></proof>
603 <goal name="isqrt64'vc.40.0.0.0.1.0.0.1.0.1.1.0.0.1.1.1.0.0.1.0.0.0.1" expl="rewrite premises" proved="true">
604 <proof prover="5" timelimit="1"><result status="valid" time="0.020000" steps="219"/></proof>
608 <goal name="isqrt64'vc.40.0.0.0.1.0.0.1.0.1.1.0.0.1.1.1.0.0.1.0.0.1" expl="rewrite premises" proved="true">
609 <proof prover="3" timelimit="10" memlimit="4000"><result status="valid" time="2.890000" steps="598149"/></proof>
613 <goal name="isqrt64'vc.40.0.0.0.1.0.0.1.0.1.1.0.0.1.1.1.0.0.1.0.1" expl="rewrite premises" proved="true">
614 <transf name="rewrite" proved="true" arg1="to_uint_add_bounded">
615 <goal name="isqrt64'vc.40.0.0.0.1.0.0.1.0.1.1.0.0.1.1.1.0.0.1.0.1.0" expl="rewrite premises" proved="true">
616 <transf name="rewrite" proved="true" arg1="to_uint_mul_bounded">
617 <goal name="isqrt64'vc.40.0.0.0.1.0.0.1.0.1.1.0.0.1.1.1.0.0.1.0.1.0.0" expl="rewrite premises" proved="true">
618 <transf name="assert" proved="true" arg1="(forall a b. a * ((2 * b) + a) = (a + b) * (a + b) - b * b)">
619 <goal name="isqrt64'vc.40.0.0.0.1.0.0.1.0.1.1.0.0.1.1.1.0.0.1.0.1.0.0.0" expl="asserted formula" proved="true">
620 <proof prover="5"><result status="valid" time="0.020000" steps="215"/></proof>
622 <goal name="isqrt64'vc.40.0.0.0.1.0.0.1.0.1.1.0.0.1.1.1.0.0.1.0.1.0.0.1" expl="rewrite premises" proved="true">
623 <transf name="replace" proved="true" arg1="(t'int (2:t))" arg2="2">
624 <goal name="isqrt64'vc.40.0.0.0.1.0.0.1.0.1.1.0.0.1.1.1.0.0.1.0.1.0.0.1.0" expl="rewrite premises" proved="true">
625 <transf name="rewrite" proved="true" arg1="h">
626 <goal name="isqrt64'vc.40.0.0.0.1.0.0.1.0.1.1.0.0.1.1.1.0.0.1.0.1.0.0.1.0.0" expl="rewrite premises" proved="true">
627 <transf name="assert" proved="true" arg1="(((t'int bits_g1 + t'int res_g) * (t'int bits_g1 + t'int res_g)) <= two_power_size)">
628 <goal name="isqrt64'vc.40.0.0.0.1.0.0.1.0.1.1.0.0.1.1.1.0.0.1.0.1.0.0.1.0.0.0" expl="asserted formula" proved="true">
629 <transf name="replace" proved="true" arg1="two_power_size" arg2="(0x100000000 * 0x100000000)">
630 <goal name="isqrt64'vc.40.0.0.0.1.0.0.1.0.1.1.0.0.1.1.1.0.0.1.0.1.0.0.1.0.0.0.0" expl="asserted formula" proved="true">
631 <transf name="rewrite" proved="true" arg1="<-" arg2="to_uint_add_bounded">
632 <goal name="isqrt64'vc.40.0.0.0.1.0.0.1.0.1.1.0.0.1.1.1.0.0.1.0.1.0.0.1.0.0.0.0.0" expl="asserted formula" proved="true">
633 <transf name="assert" proved="true" arg1="(forall a b. add a b = add b a)">
634 <goal name="isqrt64'vc.40.0.0.0.1.0.0.1.0.1.1.0.0.1.1.1.0.0.1.0.1.0.0.1.0.0.0.0.0.0" expl="asserted formula" proved="true">
635 <proof prover="0"><result status="valid" time="0.010000" steps="1517"/></proof>
637 <goal name="isqrt64'vc.40.0.0.0.1.0.0.1.0.1.1.0.0.1.1.1.0.0.1.0.1.0.0.1.0.0.0.0.0.1" expl="asserted formula" proved="true">
638 <transf name="rewrite" proved="true" arg1="h1">
639 <goal name="isqrt64'vc.40.0.0.0.1.0.0.1.0.1.1.0.0.1.1.1.0.0.1.0.1.0.0.1.0.0.0.0.0.1.0" expl="asserted formula" proved="true">
640 <proof prover="4"><result status="valid" time="0.020000" steps="135"/></proof>
646 <goal name="isqrt64'vc.40.0.0.0.1.0.0.1.0.1.1.0.0.1.1.1.0.0.1.0.1.0.0.1.0.0.0.0.1" expl="rewrite premises" proved="true">
647 <proof prover="3" timelimit="5"><result status="valid" time="3.040000" steps="598376"/></proof>
651 <goal name="isqrt64'vc.40.0.0.0.1.0.0.1.0.1.1.0.0.1.1.1.0.0.1.0.1.0.0.1.0.0.0.1" expl="equality hypothesis" proved="true">
652 <proof prover="3" timelimit="5"><result status="valid" time="0.010000" steps="5122"/></proof>
656 <goal name="isqrt64'vc.40.0.0.0.1.0.0.1.0.1.1.0.0.1.1.1.0.0.1.0.1.0.0.1.0.0.1" expl="rewrite premises" proved="true">
657 <proof prover="5"><result status="valid" time="0.180000" steps="221"/></proof>
663 <goal name="isqrt64'vc.40.0.0.0.1.0.0.1.0.1.1.0.0.1.1.1.0.0.1.0.1.0.0.1.1" expl="equality hypothesis" proved="true">
664 <proof prover="3" timelimit="5"><result status="valid" time="0.010000" steps="5885"/></proof>
670 <goal name="isqrt64'vc.40.0.0.0.1.0.0.1.0.1.1.0.0.1.1.1.0.0.1.0.1.0.1" expl="rewrite premises" proved="true">
671 <proof prover="3" timelimit="5"><result status="valid" time="1.721112" steps="562733"/></proof>
675 <goal name="isqrt64'vc.40.0.0.0.1.0.0.1.0.1.1.0.0.1.1.1.0.0.1.0.1.1" expl="rewrite premises" proved="true">
676 <proof prover="3" timelimit="5"><result status="valid" time="2.301000" steps="598149"/></proof>
682 <goal name="isqrt64'vc.40.0.0.0.1.0.0.1.0.1.1.0.0.1.1.1.0.0.1.1" expl="rewrite premises" proved="true">
683 <proof prover="5"><result status="valid" time="0.130843" steps="219"/></proof>
689 <goal name="isqrt64'vc.40.0.0.0.1.0.0.1.0.1.1.0.0.1.1.1.0.1" expl="rewrite premises" proved="true">
690 <proof prover="5"><result status="valid" time="0.114149" steps="219"/></proof>
694 <goal name="isqrt64'vc.40.0.0.0.1.0.0.1.0.1.1.0.0.1.1.1.1" expl="rewrite premises" proved="true">
695 <proof prover="2"><result status="valid" time="0.118514" steps="1358"/></proof>
713 <goal name="isqrt64'vc.40.0.0.0.1.0.0.1.1" expl="equality hypothesis" proved="true">
714 <proof prover="3"><result status="valid" time="0.010000" steps="4859"/></proof>
732 <goal name="isqrt64'vc.41" expl="assertion" proved="true">
733 <proof prover="3"><result status="valid" time="0.350000" steps="178406"/></proof>
735 <goal name="isqrt64'vc.42" expl="assertion" proved="true">
736 <proof prover="3"><result status="valid" time="0.000000" steps="4463"/></proof>
738 <goal name="isqrt64'vc.43" expl="postcondition" proved="true">
739 <proof prover="3"><result status="valid" time="0.050000" steps="25748"/></proof>
741 <goal name="isqrt64'vc.44" expl="postcondition" proved="true">
742 <proof prover="3"><result status="valid" time="0.010000" steps="4855"/></proof>