1 <?xml version="1.0" encoding="UTF-8"?>
2 <!DOCTYPE why3session PUBLIC "-//Why3//proof session v5//EN"
3 "http://why3.lri.fr/why3session.dtd">
4 <why3session shape_version="6">
5 <prover id="0" name="Alt-Ergo" version="2.4.1" timelimit="1" steplimit="0" memlimit="1000"/>
6 <prover id="1" name="CVC4" version="1.4" timelimit="5" steplimit="0" memlimit="1000"/>
7 <prover id="2" name="Alt-Ergo" version="2.0.0" timelimit="5" steplimit="0" memlimit="1000"/>
8 <prover id="3" name="Alt-Ergo" version="2.4.0" timelimit="5" steplimit="0" memlimit="1000"/>
9 <prover id="5" name="Alt-Ergo" version="2.4.2" timelimit="1" steplimit="0" memlimit="1000"/>
10 <prover id="6" name="CVC4" version="1.7" timelimit="1" steplimit="0" memlimit="1000"/>
11 <prover id="7" name="Z3" version="4.12.2" timelimit="5" steplimit="0" memlimit="1000"/>
12 <file format="whyml" proved="true">
13 <path name=".."/><path name="mergesort_list.mlw"/>
14 <theory name="Elt" proved="true">
15 <goal name="Transitive.Trans" proved="true">
16 <proof prover="2"><result status="valid" time="0.000000" steps="5"/></proof>
19 <theory name="Merge" proved="true">
20 <goal name="merge'vc" expl="VC for merge" proved="true">
21 <transf name="split_goal_right" proved="true" >
22 <goal name="merge'vc.0" expl="variant decrease" proved="true">
23 <proof prover="2"><result status="valid" time="0.010000" steps="17"/></proof>
25 <goal name="merge'vc.1" expl="precondition" proved="true">
26 <proof prover="2"><result status="valid" time="0.010000" steps="19"/></proof>
28 <goal name="merge'vc.2" expl="variant decrease" proved="true">
29 <proof prover="2"><result status="valid" time="0.010000" steps="17"/></proof>
31 <goal name="merge'vc.3" expl="precondition" proved="true">
32 <proof prover="2"><result status="valid" time="0.010000" steps="19"/></proof>
34 <goal name="merge'vc.4" expl="postcondition" proved="true">
35 <transf name="split_goal_right" proved="true" >
36 <goal name="merge'vc.4.0" expl="postcondition" proved="true">
37 <proof prover="2"><result status="valid" time="0.010000" steps="7"/></proof>
39 <goal name="merge'vc.4.1" expl="postcondition" proved="true">
40 <proof prover="2"><result status="valid" time="0.010000" steps="7"/></proof>
42 <goal name="merge'vc.4.2" expl="postcondition" proved="true">
43 <proof prover="2"><result status="valid" time="0.010000" steps="7"/></proof>
45 <goal name="merge'vc.4.3" expl="postcondition" proved="true">
46 <proof prover="1"><result status="valid" time="1.450000"/></proof>
48 <goal name="merge'vc.4.4" expl="postcondition" proved="true">
49 <proof prover="1"><result status="valid" time="1.500000"/></proof>
53 <goal name="merge'vc.5" expl="postcondition" proved="true">
54 <transf name="split_goal_right" proved="true" >
55 <goal name="merge'vc.5.0" expl="postcondition" proved="true">
56 <proof prover="2"><result status="valid" time="0.010000" steps="11"/></proof>
58 <goal name="merge'vc.5.1" expl="postcondition" proved="true">
59 <proof prover="2"><result status="valid" time="0.040000" steps="11"/></proof>
61 <goal name="merge'vc.5.2" expl="postcondition" proved="true">
62 <proof prover="2"><result status="valid" time="0.010000" steps="11"/></proof>
64 <goal name="merge'vc.5.3" expl="postcondition" proved="true">
65 <proof prover="2"><result status="valid" time="0.040000" steps="161"/></proof>
67 <goal name="merge'vc.5.4" expl="postcondition" proved="true">
68 <proof prover="2"><result status="valid" time="2.580000" steps="2964"/></proof>
75 <theory name="EfficientMerge" proved="true">
76 <goal name="sorted_reverse_cons" proved="true">
77 <proof prover="2"><result status="valid" time="0.290000" steps="913"/></proof>
79 <goal name="merge_aux'vc" expl="VC for merge_aux" proved="true">
80 <transf name="split_goal_right" proved="true" >
81 <goal name="merge_aux'vc.0" expl="variant decrease" proved="true">
82 <proof prover="2"><result status="valid" time="0.010000" steps="18"/></proof>
84 <goal name="merge_aux'vc.1" expl="precondition" proved="true">
85 <proof prover="2"><result status="valid" time="0.100000" steps="373"/></proof>
87 <goal name="merge_aux'vc.2" expl="precondition" proved="true">
88 <proof prover="2"><result status="valid" time="0.040000" steps="253"/></proof>
90 <goal name="merge_aux'vc.3" expl="precondition" proved="true">
91 <proof prover="2"><result status="valid" time="0.926834" steps="3563"/></proof>
93 <goal name="merge_aux'vc.4" expl="variant decrease" proved="true">
94 <proof prover="2"><result status="valid" time="0.010000" steps="18"/></proof>
96 <goal name="merge_aux'vc.5" expl="precondition" proved="true">
97 <proof prover="2"><result status="valid" time="0.100000" steps="382"/></proof>
99 <goal name="merge_aux'vc.6" expl="precondition" proved="true">
100 <proof prover="2"><result status="valid" time="0.030000" steps="257"/></proof>
102 <goal name="merge_aux'vc.7" expl="precondition" proved="true">
103 <proof prover="2"><result status="valid" time="0.140000" steps="834"/></proof>
105 <goal name="merge_aux'vc.8" expl="postcondition" proved="true">
106 <proof prover="2"><result status="valid" time="0.210000" steps="1269"/></proof>
108 <goal name="merge_aux'vc.9" expl="postcondition" proved="true">
109 <proof prover="2"><result status="valid" time="2.760000" steps="5800"/></proof>
113 <goal name="merge'vc" expl="VC for merge" proved="true">
114 <proof prover="2"><result status="valid" time="0.040000" steps="126"/></proof>
117 <theory name="Mergesort" proved="true">
118 <goal name="split'vc" expl="VC for split" proved="true">
119 <transf name="split_goal_right" proved="true" >
120 <goal name="split'vc.0" expl="variant decrease" proved="true">
121 <proof prover="2"><result status="valid" time="0.010000" steps="12"/></proof>
123 <goal name="split'vc.1" expl="precondition" proved="true">
124 <proof prover="2"><result status="valid" time="0.000000" steps="12"/></proof>
126 <goal name="split'vc.2" expl="postcondition" proved="true">
127 <proof prover="1" timelimit="1"><result status="valid" time="1.080000"/></proof>
129 <goal name="split'vc.3" expl="precondition" proved="true">
130 <proof prover="2"><result status="valid" time="0.010000" steps="2"/></proof>
132 <goal name="split'vc.4" expl="postcondition" proved="true">
133 <proof prover="2"><result status="valid" time="0.040000" steps="99"/></proof>
137 <goal name="mergesort'vc" expl="VC for mergesort" proved="true">
138 <proof prover="2"><result status="valid" time="0.220000" steps="695"/></proof>
141 <theory name="OCamlMergesort" proved="true">
142 <goal name="sorted_reverse_cons" proved="true">
143 <proof prover="2"><result status="valid" time="0.340000" steps="913"/></proof>
145 <goal name="sorted_rev_append" proved="true">
146 <proof prover="7"><result status="valid" time="0.030000" steps="140600"/></proof>
148 <goal name="rev_merge'vc" expl="VC for rev_merge" proved="true">
149 <transf name="split_goal_right" proved="true" >
150 <goal name="rev_merge'vc.0" expl="variant decrease" proved="true">
151 <proof prover="2"><result status="valid" time="0.010000" steps="18"/></proof>
153 <goal name="rev_merge'vc.1" expl="precondition" proved="true">
154 <proof prover="2"><result status="valid" time="0.090000" steps="373"/></proof>
156 <goal name="rev_merge'vc.2" expl="precondition" proved="true">
157 <proof prover="2"><result status="valid" time="0.070000" steps="253"/></proof>
159 <goal name="rev_merge'vc.3" expl="precondition" proved="true">
160 <proof prover="2"><result status="valid" time="0.960000" steps="3563"/></proof>
162 <goal name="rev_merge'vc.4" expl="variant decrease" proved="true">
163 <proof prover="2"><result status="valid" time="0.010000" steps="18"/></proof>
165 <goal name="rev_merge'vc.5" expl="precondition" proved="true">
166 <proof prover="2"><result status="valid" time="0.130000" steps="382"/></proof>
168 <goal name="rev_merge'vc.6" expl="precondition" proved="true">
169 <proof prover="2"><result status="valid" time="0.030000" steps="257"/></proof>
171 <goal name="rev_merge'vc.7" expl="precondition" proved="true">
172 <proof prover="2"><result status="valid" time="0.150000" steps="834"/></proof>
174 <goal name="rev_merge'vc.8" expl="postcondition" proved="true">
175 <proof prover="2"><result status="valid" time="0.030000" steps="168"/></proof>
177 <goal name="rev_merge'vc.9" expl="postcondition" proved="true">
178 <proof prover="2"><result status="valid" time="2.410000" steps="5015"/></proof>
182 <goal name="sorted_reverse_mem" proved="true">
183 <proof prover="2"><result status="valid" time="0.170000" steps="981"/></proof>
185 <goal name="sorted_reverse_cons2" proved="true">
186 <proof prover="2"><result status="valid" time="0.020000" steps="52"/></proof>
188 <goal name="rev_merge_rev'vc" expl="VC for rev_merge_rev" proved="true">
189 <transf name="split_goal_right" proved="true" >
190 <goal name="rev_merge_rev'vc.0" expl="variant decrease" proved="true">
191 <proof prover="2"><result status="valid" time="0.010000" steps="18"/></proof>
193 <goal name="rev_merge_rev'vc.1" expl="precondition" proved="true">
194 <proof prover="2"><result status="valid" time="0.100000" steps="358"/></proof>
196 <goal name="rev_merge_rev'vc.2" expl="precondition" proved="true">
197 <proof prover="2"><result status="valid" time="0.070000" steps="318"/></proof>
199 <goal name="rev_merge_rev'vc.3" expl="precondition" proved="true">
200 <proof prover="2"><result status="valid" time="0.070000" steps="352"/></proof>
202 <goal name="rev_merge_rev'vc.4" expl="variant decrease" proved="true">
203 <proof prover="2"><result status="valid" time="0.010000" steps="18"/></proof>
205 <goal name="rev_merge_rev'vc.5" expl="precondition" proved="true">
206 <proof prover="2"><result status="valid" time="0.100000" steps="353"/></proof>
208 <goal name="rev_merge_rev'vc.6" expl="precondition" proved="true">
209 <proof prover="2"><result status="valid" time="0.060000" steps="565"/></proof>
211 <goal name="rev_merge_rev'vc.7" expl="precondition" proved="true">
212 <proof prover="2"><result status="valid" time="0.200000" steps="845"/></proof>
214 <goal name="rev_merge_rev'vc.8" expl="postcondition" proved="true">
215 <proof prover="2"><result status="valid" time="0.320000" steps="1949"/></proof>
217 <goal name="rev_merge_rev'vc.9" expl="postcondition" proved="true">
218 <transf name="split_goal_right" proved="true" >
219 <goal name="rev_merge_rev'vc.9.0" expl="postcondition" proved="true">
220 <proof prover="2"><result status="valid" time="0.100000" steps="29"/></proof>
222 <goal name="rev_merge_rev'vc.9.1" expl="postcondition" proved="true">
223 <proof prover="2"><result status="valid" time="0.130000" steps="155"/></proof>
225 <goal name="rev_merge_rev'vc.9.2" expl="postcondition" proved="true">
226 <proof prover="2"><result status="valid" time="0.080000" steps="121"/></proof>
228 <goal name="rev_merge_rev'vc.9.3" expl="postcondition" proved="true">
229 <proof prover="2"><result status="valid" time="0.090000" steps="175"/></proof>
231 <goal name="rev_merge_rev'vc.9.4" expl="postcondition" proved="true">
232 <proof prover="2"><result status="valid" time="0.170000" steps="170"/></proof>
238 <goal name="prefix_length'vc" expl="VC for prefix_length" proved="true">
239 <proof prover="2"><result status="valid" time="0.020000" steps="93"/></proof>
241 <goal name="prefix_append'vc" expl="VC for prefix_append" proved="true">
242 <proof prover="2"><result status="valid" time="0.170000" steps="413"/></proof>
244 <goal name="chop'vc" expl="VC for chop" proved="true">
245 <proof prover="2"><result status="valid" time="0.020000" steps="83"/></proof>
247 <goal name="sort'vc" expl="VC for sort" proved="true">
248 <transf name="split_goal_right" proved="true" >
249 <goal name="sort'vc.0" expl="unreachable point" proved="true">
250 <proof prover="2"><result status="valid" time="0.010000" steps="7"/></proof>
252 <goal name="sort'vc.1" expl="unreachable point" proved="true">
253 <proof prover="2"><result status="valid" time="0.010000" steps="6"/></proof>
255 <goal name="sort'vc.2" expl="unreachable point" proved="true">
256 <proof prover="2"><result status="valid" time="0.010000" steps="9"/></proof>
258 <goal name="sort'vc.3" expl="unreachable point" proved="true">
259 <proof prover="2"><result status="valid" time="0.020000" steps="8"/></proof>
261 <goal name="sort'vc.4" expl="unreachable point" proved="true">
262 <proof prover="2"><result status="valid" time="0.010000" steps="7"/></proof>
264 <goal name="sort'vc.5" expl="check division by zero" proved="true">
265 <proof prover="2"><result status="valid" time="0.010000" steps="6"/></proof>
267 <goal name="sort'vc.6" expl="precondition" proved="true">
268 <proof prover="2"><result status="valid" time="0.020000" steps="9"/></proof>
270 <goal name="sort'vc.7" expl="assertion" proved="true">
271 <proof prover="2"><result status="valid" time="0.200000" steps="381"/></proof>
273 <goal name="sort'vc.8" expl="variant decrease" proved="true">
274 <proof prover="2"><result status="valid" time="0.020000" steps="20"/></proof>
276 <goal name="sort'vc.9" expl="precondition" proved="true">
277 <proof prover="2"><result status="valid" time="0.060000" steps="42"/></proof>
279 <goal name="sort'vc.10" expl="variant decrease" proved="true">
280 <proof prover="2"><result status="valid" time="0.020000" steps="26"/></proof>
282 <goal name="sort'vc.11" expl="precondition" proved="true">
283 <proof prover="2"><result status="valid" time="0.020000" steps="68"/></proof>
285 <goal name="sort'vc.12" expl="precondition" proved="true">
286 <proof prover="2"><result status="valid" time="0.010000" steps="12"/></proof>
288 <goal name="sort'vc.13" expl="precondition" proved="true">
289 <proof prover="2"><result status="valid" time="0.020000" steps="15"/></proof>
291 <goal name="sort'vc.14" expl="precondition" proved="true">
292 <proof prover="2"><result status="valid" time="0.020000" steps="15"/></proof>
294 <goal name="sort'vc.15" expl="postcondition" proved="true">
295 <proof prover="2"><result status="valid" time="0.080000" steps="511"/></proof>
297 <goal name="sort'vc.16" expl="postcondition" proved="true">
298 <transf name="split_vc" proved="true" >
299 <goal name="sort'vc.16.0" expl="postcondition" proved="true">
300 <proof prover="6"><result status="valid" time="0.140000" steps="29899"/></proof>
302 <goal name="sort'vc.16.1" expl="postcondition" proved="true">
303 <proof prover="6"><result status="valid" time="0.140000" steps="29597"/></proof>
305 <goal name="sort'vc.16.2" expl="postcondition" proved="true">
306 <proof prover="6" timelimit="5"><result status="valid" time="1.840000" steps="248857"/></proof>
308 <goal name="sort'vc.16.3" expl="postcondition" proved="true">
309 <proof prover="5"><result status="valid" time="0.170000" steps="1550"/></proof>
311 <goal name="sort'vc.16.4" expl="postcondition" proved="true">
312 <proof prover="0"><result status="valid" time="0.300000" steps="1538"/></proof>
314 <goal name="sort'vc.16.5" expl="postcondition" proved="true">
315 <proof prover="3"><result status="valid" time="0.300000" steps="1578"/></proof>
317 <goal name="sort'vc.16.6" expl="postcondition" proved="true">
318 <proof prover="6" timelimit="5"><result status="valid" time="1.523107" steps="227704"/></proof>
320 <goal name="sort'vc.16.7" expl="postcondition" proved="true">
321 <proof prover="6" timelimit="5"><result status="valid" time="1.740000" steps="217737"/></proof>
323 <goal name="sort'vc.16.8" expl="postcondition" proved="true">
324 <proof prover="5"><result status="valid" time="0.170000" steps="1604"/></proof>
330 <goal name="rev_sort'vc" expl="VC for rev_sort" proved="true">
331 <transf name="split_goal_right" proved="true" >
332 <goal name="rev_sort'vc.0" expl="unreachable point" proved="true">
333 <proof prover="2"><result status="valid" time="0.010000" steps="7"/></proof>
335 <goal name="rev_sort'vc.1" expl="unreachable point" proved="true">
336 <proof prover="2"><result status="valid" time="0.010000" steps="6"/></proof>
338 <goal name="rev_sort'vc.2" expl="unreachable point" proved="true">
339 <proof prover="2"><result status="valid" time="0.010000" steps="9"/></proof>
341 <goal name="rev_sort'vc.3" expl="unreachable point" proved="true">
342 <proof prover="2"><result status="valid" time="0.010000" steps="8"/></proof>
344 <goal name="rev_sort'vc.4" expl="unreachable point" proved="true">
345 <proof prover="2"><result status="valid" time="0.020000" steps="7"/></proof>
347 <goal name="rev_sort'vc.5" expl="check division by zero" proved="true">
348 <proof prover="2"><result status="valid" time="0.010000" steps="6"/></proof>
350 <goal name="rev_sort'vc.6" expl="precondition" proved="true">
351 <proof prover="2"><result status="valid" time="0.030000" steps="9"/></proof>
353 <goal name="rev_sort'vc.7" expl="assertion" proved="true">
354 <proof prover="2"><result status="valid" time="0.200000" steps="381"/></proof>
356 <goal name="rev_sort'vc.8" expl="variant decrease" proved="true">
357 <proof prover="2"><result status="valid" time="0.010000" steps="20"/></proof>
359 <goal name="rev_sort'vc.9" expl="precondition" proved="true">
360 <proof prover="2"><result status="valid" time="0.060000" steps="42"/></proof>
362 <goal name="rev_sort'vc.10" expl="variant decrease" proved="true">
363 <proof prover="2"><result status="valid" time="0.030000" steps="24"/></proof>
365 <goal name="rev_sort'vc.11" expl="precondition" proved="true">
366 <proof prover="2"><result status="valid" time="0.020000" steps="62"/></proof>
368 <goal name="rev_sort'vc.12" expl="precondition" proved="true">
369 <proof prover="2"><result status="valid" time="0.010000" steps="34"/></proof>
371 <goal name="rev_sort'vc.13" expl="precondition" proved="true">
372 <proof prover="2"><result status="valid" time="0.010000" steps="16"/></proof>
374 <goal name="rev_sort'vc.14" expl="precondition" proved="true">
375 <proof prover="2"><result status="valid" time="0.010000" steps="16"/></proof>
377 <goal name="rev_sort'vc.15" expl="postcondition" proved="true">
378 <proof prover="2"><result status="valid" time="3.280000" steps="11642"/></proof>
380 <goal name="rev_sort'vc.16" expl="postcondition" proved="true">
381 <transf name="split_vc" proved="true" >
382 <goal name="rev_sort'vc.16.0" expl="postcondition" proved="true">
383 <proof prover="6"><result status="valid" time="0.140000" steps="31273"/></proof>
385 <goal name="rev_sort'vc.16.1" expl="postcondition" proved="true">
386 <proof prover="6"><result status="valid" time="0.150000" steps="30180"/></proof>
388 <goal name="rev_sort'vc.16.2" expl="postcondition" proved="true">
389 <proof prover="3"><result status="valid" time="0.640000" steps="3662"/></proof>
391 <goal name="rev_sort'vc.16.3" expl="postcondition" proved="true">
392 <proof prover="3"><result status="valid" time="0.478592" steps="3547"/></proof>
394 <goal name="rev_sort'vc.16.4" expl="postcondition" proved="true">
395 <proof prover="3"><result status="valid" time="0.460000" steps="3900"/></proof>
397 <goal name="rev_sort'vc.16.5" expl="postcondition" proved="true">
398 <proof prover="3"><result status="valid" time="0.590000" steps="3962"/></proof>
400 <goal name="rev_sort'vc.16.6" expl="postcondition" proved="true">
401 <proof prover="3"><result status="valid" time="0.660000" steps="3562"/></proof>
403 <goal name="rev_sort'vc.16.7" expl="postcondition" proved="true">
404 <proof prover="3"><result status="valid" time="0.570000" steps="3529"/></proof>
406 <goal name="rev_sort'vc.16.8" expl="postcondition" proved="true">
407 <proof prover="3"><result status="valid" time="0.220000" steps="1510"/></proof>
413 <goal name="permut_prefix" proved="true">
414 <transf name="induction_ty_lex" proved="true" >
415 <goal name="permut_prefix.0" proved="true">
416 <proof prover="2"><result status="valid" time="0.040000" steps="148"/></proof>
420 <goal name="mergesort'vc" expl="VC for mergesort" proved="true">
421 <transf name="split_goal_right" proved="true" >
422 <goal name="mergesort'vc.0" expl="assertion" proved="true">
423 <transf name="split_goal_right" proved="true" >
424 <goal name="mergesort'vc.0.0" expl="VC for mergesort" proved="true">
425 <proof prover="2"><result status="valid" time="0.010000" steps="4"/></proof>
427 <goal name="mergesort'vc.0.1" expl="VC for mergesort" proved="true">
428 <proof prover="2"><result status="valid" time="0.010000" steps="8"/></proof>
430 <goal name="mergesort'vc.0.2" expl="VC for mergesort" proved="true">
431 <proof prover="2"><result status="valid" time="0.010000" steps="13"/></proof>
433 <goal name="mergesort'vc.0.3" expl="VC for mergesort" proved="true">
434 <proof prover="2"><result status="valid" time="0.000000" steps="4"/></proof>
438 <goal name="mergesort'vc.1" expl="precondition" proved="true">
439 <proof prover="2"><result status="valid" time="0.010000" steps="3"/></proof>
441 <goal name="mergesort'vc.2" expl="postcondition" proved="true">
442 <proof prover="2"><result status="valid" time="0.020000" steps="136"/></proof>