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="Alt-Ergo" version="2.4.0" timelimit="1" steplimit="0" memlimit="1000"/>
6 <prover id="1" name="CVC4" version="1.8" timelimit="5" steplimit="0" memlimit="1000"/>
7 <prover id="2" name="CVC5" version="1.0.2" timelimit="1" steplimit="0" memlimit="1000"/>
8 <prover id="3" name="Z3" version="4.8.10" timelimit="1" steplimit="0" memlimit="1000"/>
9 <file format="whyml" proved="true">
10 <path name=".."/><path name="split_string.mlw"/>
11 <theory name="SplitString" proved="true">
12 <goal name="concat'vc" expl="VC for concat" proved="true">
13 <proof prover="3"><result status="valid" time="0.044785" steps="65889"/></proof>
15 <goal name="mixfix []'vc" expl="VC for mixfix []" proved="true">
16 <proof prover="3"><result status="valid" time="0.026382" steps="1450"/></proof>
18 <goal name="split_string'vc" expl="VC for split_string" proved="true">
19 <transf name="split_vc" proved="true" >
20 <goal name="split_string'vc.0" expl="postcondition" proved="true">
21 <proof prover="3"><result status="valid" time="0.024453" steps="4693"/></proof>
23 <goal name="split_string'vc.1" expl="postcondition" proved="true">
24 <proof prover="3"><result status="valid" time="0.028792" steps="4716"/></proof>
26 <goal name="split_string'vc.2" expl="postcondition" proved="true">
27 <proof prover="2"><result status="valid" time="0.147316" steps="5560"/></proof>
29 <goal name="split_string'vc.3" expl="postcondition" proved="true">
30 <proof prover="3" timelimit="5"><result status="valid" time="0.022500" steps="4983"/></proof>
32 <goal name="split_string'vc.4" expl="postcondition" proved="true">
33 <proof prover="3"><result status="valid" time="0.058662" steps="67635"/></proof>
35 <goal name="split_string'vc.5" expl="loop invariant init" proved="true">
36 <proof prover="3"><result status="valid" time="0.047299" steps="33631"/></proof>
38 <goal name="split_string'vc.6" expl="loop invariant init" proved="true">
39 <proof prover="3"><result status="valid" time="0.035690" steps="7697"/></proof>
41 <goal name="split_string'vc.7" expl="loop invariant init" proved="true">
42 <proof prover="3"><result status="valid" time="0.026103" steps="4384"/></proof>
44 <goal name="split_string'vc.8" expl="loop invariant init" proved="true">
45 <proof prover="3"><result status="valid" time="0.050247" steps="56982"/></proof>
47 <goal name="split_string'vc.9" expl="loop invariant init" proved="true">
48 <proof prover="3"><result status="valid" time="0.495907" steps="594666"/></proof>
50 <goal name="split_string'vc.10" expl="index in string bounds" proved="true">
51 <proof prover="3"><result status="valid" time="0.018489" steps="81594"/></proof>
53 <goal name="split_string'vc.11" expl="precondition" proved="true">
54 <proof prover="3"><result status="valid" time="0.022147" steps="10520"/></proof>
56 <goal name="split_string'vc.12" expl="assertion" proved="true">
57 <proof prover="0"><result status="valid" time="0.283311" steps="1672"/></proof>
59 <goal name="split_string'vc.13" expl="precondition" proved="true">
60 <proof prover="3"><result status="valid" time="0.052437" steps="101281"/></proof>
62 <goal name="split_string'vc.14" expl="postcondition" proved="true">
63 <proof prover="3"><result status="valid" time="0.057491" steps="102734"/></proof>
65 <goal name="split_string'vc.15" expl="postcondition" proved="true">
66 <proof prover="3"><result status="valid" time="0.040443" steps="55466"/></proof>
68 <goal name="split_string'vc.16" expl="postcondition" proved="true">
69 <proof prover="0" timelimit="5"><result status="valid" time="0.274553" steps="2653"/></proof>
71 <goal name="split_string'vc.17" expl="postcondition" proved="true">
72 <proof prover="0"><result status="valid" time="0.021337" steps="33"/></proof>
74 <goal name="split_string'vc.18" expl="postcondition" proved="true">
75 <proof prover="1"><result status="valid" time="2.797228" steps="258920"/></proof>
77 <goal name="split_string'vc.19" expl="loop variant decrease" proved="true">
78 <proof prover="3"><result status="valid" time="0.030611" steps="51638"/></proof>
80 <goal name="split_string'vc.20" expl="loop invariant preservation" proved="true">
81 <proof prover="3"><result status="valid" time="0.062629" steps="97797"/></proof>
83 <goal name="split_string'vc.21" expl="loop invariant preservation" proved="true">
84 <proof prover="0" timelimit="5"><result status="valid" time="0.395341" steps="3735"/></proof>
86 <goal name="split_string'vc.22" expl="loop invariant preservation" proved="true">
87 <proof prover="3"><result status="valid" time="0.029652" steps="36779"/></proof>
89 <goal name="split_string'vc.23" expl="loop invariant preservation" proved="true">
90 <proof prover="3"><result status="valid" time="0.062801" steps="99559"/></proof>
92 <goal name="split_string'vc.24" expl="loop invariant preservation" proved="true">
93 <proof prover="1"><result status="valid" time="2.769852" steps="295862"/></proof>
95 <goal name="split_string'vc.25" expl="loop variant decrease" proved="true">
96 <proof prover="3"><result status="valid" time="0.044062" steps="50090"/></proof>
98 <goal name="split_string'vc.26" expl="loop invariant preservation" proved="true">
99 <proof prover="3"><result status="valid" time="0.053497" steps="93891"/></proof>
101 <goal name="split_string'vc.27" expl="loop invariant preservation" proved="true">
102 <proof prover="0"><result status="valid" time="0.065083" steps="25"/></proof>
103 <proof prover="3"><result status="valid" time="0.056946" steps="94363"/></proof>
105 <goal name="split_string'vc.28" expl="loop invariant preservation" proved="true">
106 <proof prover="3"><result status="valid" time="0.061993" steps="95819"/></proof>
108 <goal name="split_string'vc.29" expl="loop invariant preservation" proved="true">
109 <proof prover="3"><result status="valid" time="0.025354" steps="10630"/></proof>
111 <goal name="split_string'vc.30" expl="loop invariant preservation" proved="true">
112 <proof prover="3" timelimit="5"><result status="valid" time="0.021910" steps="7287"/></proof>
114 <goal name="split_string'vc.31" expl="precondition" proved="true">
115 <proof prover="3"><result status="valid" time="0.051748" steps="81690"/></proof>
117 <goal name="split_string'vc.32" expl="postcondition" proved="true">
118 <proof prover="3"><result status="valid" time="0.050233" steps="84018"/></proof>
120 <goal name="split_string'vc.33" expl="postcondition" proved="true">
121 <proof prover="3"><result status="valid" time="0.053110" steps="85859"/></proof>
123 <goal name="split_string'vc.34" expl="postcondition" proved="true">
124 <proof prover="3"><result status="valid" time="0.056633" steps="93102"/></proof>
126 <goal name="split_string'vc.35" expl="postcondition" proved="true">
127 <proof prover="0"><result status="valid" time="0.072079" steps="332"/></proof>
129 <goal name="split_string'vc.36" expl="postcondition" proved="true">
130 <proof prover="3"><result status="valid" time="0.045011" steps="7334"/></proof>
135 <theory name="SplitStringOCaml" proved="true">
136 <goal name="concat'vc" expl="VC for concat" proved="true">
137 <proof prover="3"><result status="valid" time="0.076475" steps="72759"/></proof>
139 <goal name="split_string'vc" expl="VC for split_string" proved="true">
140 <transf name="split_vc" proved="true" >
141 <goal name="split_string'vc.0" expl="postcondition" proved="true">
142 <proof prover="3"><result status="valid" time="0.025217" steps="58506"/></proof>
144 <goal name="split_string'vc.1" expl="postcondition" proved="true">
145 <proof prover="3"><result status="valid" time="0.021791" steps="58627"/></proof>
147 <goal name="split_string'vc.2" expl="postcondition" proved="true">
148 <proof prover="3"><result status="valid" time="0.021419" steps="62231"/></proof>
150 <goal name="split_string'vc.3" expl="postcondition" proved="true">
151 <proof prover="3"><result status="valid" time="0.024941" steps="61914"/></proof>
153 <goal name="split_string'vc.4" expl="postcondition" proved="true">
154 <proof prover="3"><result status="valid" time="0.047896" steps="94797"/></proof>
156 <goal name="split_string'vc.5" expl="loop invariant init" proved="true">
157 <proof prover="3"><result status="valid" time="0.048853" steps="44282"/></proof>
159 <goal name="split_string'vc.6" expl="loop invariant init" proved="true">
160 <proof prover="3"><result status="valid" time="0.031802" steps="36642"/></proof>
162 <goal name="split_string'vc.7" expl="loop invariant init" proved="true">
163 <proof prover="3"><result status="valid" time="0.030768" steps="4563"/></proof>
165 <goal name="split_string'vc.8" expl="loop invariant init" proved="true">
166 <proof prover="3"><result status="valid" time="0.062766" steps="67260"/></proof>
168 <goal name="split_string'vc.9" expl="loop invariant init" proved="true">
169 <proof prover="3"><result status="valid" time="0.069983" steps="74713"/></proof>
171 <goal name="split_string'vc.10" expl="loop invariant init" proved="true">
172 <proof prover="3"><result status="valid" time="0.609267" steps="643451"/></proof>
174 <goal name="split_string'vc.11" expl="index in string bounds" proved="true">
175 <proof prover="3"><result status="valid" time="0.067412" steps="108186"/></proof>
177 <goal name="split_string'vc.12" expl="index in string bounds" proved="true">
178 <proof prover="3"><result status="valid" time="0.039962" steps="10839"/></proof>
180 <goal name="split_string'vc.13" expl="assertion" proved="true">
181 <proof prover="0" timelimit="60"><result status="valid" time="12.781115" steps="129761"/></proof>
183 <goal name="split_string'vc.14" expl="integer overflow" proved="true">
184 <proof prover="3"><result status="valid" time="0.066537" steps="114171"/></proof>
186 <goal name="split_string'vc.15" expl="integer overflow" proved="true">
187 <proof prover="3"><result status="valid" time="0.069413" steps="116145"/></proof>
189 <goal name="split_string'vc.16" expl="index in string bounds" proved="true">
190 <proof prover="3"><result status="valid" time="0.054222" steps="117676"/></proof>
192 <goal name="split_string'vc.17" expl="postcondition" proved="true">
193 <proof prover="3"><result status="valid" time="0.067993" steps="125109"/></proof>
195 <goal name="split_string'vc.18" expl="postcondition" proved="true">
196 <proof prover="3"><result status="valid" time="0.043007" steps="125087"/></proof>
198 <goal name="split_string'vc.19" expl="postcondition" proved="true">
199 <transf name="assert" proved="true" arg1="(j < length ss1.seq)">
200 <goal name="split_string'vc.19.0" expl="asserted formula" proved="true">
201 <proof prover="3"><result status="valid" time="0.072076" steps="125981"/></proof>
203 <goal name="split_string'vc.19.1" expl="postcondition" proved="true">
204 <transf name="case" proved="true" arg1="(j = length ss2.seq)">
205 <goal name="split_string'vc.19.1.0" expl="true case (postcondition)" proved="true">
206 <proof prover="3"><result status="valid" time="0.198406" steps="347591"/></proof>
208 <goal name="split_string'vc.19.1.1" expl="false case (postcondition)" proved="true">
209 <proof prover="0"><result status="valid" time="0.244248" steps="1259"/></proof>
215 <goal name="split_string'vc.20" expl="postcondition" proved="true">
216 <proof prover="3" timelimit="5"><result status="valid" time="0.055591" steps="137069"/></proof>
218 <goal name="split_string'vc.21" expl="postcondition" proved="true">
219 <proof prover="1" timelimit="10" memlimit="4000"><result status="valid" time="3.885372" steps="320605"/></proof>
221 <goal name="split_string'vc.22" expl="integer overflow" proved="true">
222 <proof prover="3"><result status="valid" time="0.056339" steps="116408"/></proof>
224 <goal name="split_string'vc.23" expl="index in string bounds" proved="true">
225 <proof prover="3"><result status="valid" time="0.056831" steps="118869"/></proof>
227 <goal name="split_string'vc.24" expl="integer overflow" proved="true">
228 <proof prover="3"><result status="valid" time="0.074191" steps="118450"/></proof>
230 <goal name="split_string'vc.25" expl="loop variant decrease" proved="true">
231 <proof prover="3"><result status="valid" time="0.046044" steps="63560"/></proof>
233 <goal name="split_string'vc.26" expl="loop invariant preservation" proved="true">
234 <proof prover="3"><result status="valid" time="0.064336" steps="120426"/></proof>
236 <goal name="split_string'vc.27" expl="loop invariant preservation" proved="true">
237 <transf name="split_vc" proved="true" >
238 <goal name="split_string'vc.27.0" expl="loop invariant preservation" proved="true">
239 <proof prover="0" timelimit="30"><result status="valid" time="2.065399" steps="17446"/></proof>
243 <goal name="split_string'vc.28" expl="loop invariant preservation" proved="true">
244 <proof prover="2"><result status="valid" time="0.194593" steps="12390"/></proof>
246 <goal name="split_string'vc.29" expl="loop invariant preservation" proved="true">
247 <proof prover="3"><result status="valid" time="0.030694" steps="127696"/></proof>
249 <goal name="split_string'vc.30" expl="loop invariant preservation" proved="true">
250 <proof prover="2"><result status="valid" time="0.236847" steps="15239"/></proof>
252 <goal name="split_string'vc.31" expl="loop invariant preservation" proved="true">
253 <transf name="split_vc" proved="true" >
254 <goal name="split_string'vc.31.0" expl="loop invariant preservation" proved="true">
255 <transf name="assert" proved="true" arg1="(concat (snoc (ss.seq) suffix) sep == concat ss.seq sep ++ cons sep suffix)">
256 <goal name="split_string'vc.31.0.0" expl="asserted formula" proved="true">
257 <proof prover="3"><result status="valid" time="0.212630" steps="350691"/></proof>
259 <goal name="split_string'vc.31.0.1" expl="loop invariant preservation" proved="true">
260 <proof prover="2" timelimit="60"><result status="valid" time="23.361577" steps="1493341"/></proof>
266 <goal name="split_string'vc.32" expl="integer overflow" proved="true">
267 <proof prover="3"><result status="valid" time="0.068592" steps="108455"/></proof>
269 <goal name="split_string'vc.33" expl="loop variant decrease" proved="true">
270 <proof prover="3"><result status="valid" time="0.036479" steps="62020"/></proof>
272 <goal name="split_string'vc.34" expl="loop invariant preservation" proved="true">
273 <proof prover="3"><result status="valid" time="0.054686" steps="109423"/></proof>
275 <goal name="split_string'vc.35" expl="loop invariant preservation" proved="true">
276 <transf name="split_vc" proved="true" >
277 <goal name="split_string'vc.35.0" expl="loop invariant preservation" proved="true">
278 <proof prover="0" timelimit="10" memlimit="4000"><result status="valid" time="0.045440" steps="68"/></proof>
282 <goal name="split_string'vc.36" expl="loop invariant preservation" proved="true">
283 <proof prover="2"><result status="valid" time="0.253610" steps="13546"/></proof>
285 <goal name="split_string'vc.37" expl="loop invariant preservation" proved="true">
286 <proof prover="3"><result status="valid" time="0.056659" steps="11117"/></proof>
288 <goal name="split_string'vc.38" expl="loop invariant preservation" proved="true">
289 <proof prover="3"><result status="valid" time="0.025464" steps="7510"/></proof>
291 <goal name="split_string'vc.39" expl="loop invariant preservation" proved="true">
292 <transf name="split_vc" proved="true" >
293 <goal name="split_string'vc.39.0" expl="loop invariant preservation" proved="true">
294 <proof prover="2" timelimit="10" memlimit="4000"><result status="valid" time="0.198775" steps="11513"/></proof>
298 <goal name="split_string'vc.40" expl="index in string bounds" proved="true">
299 <proof prover="3"><result status="valid" time="0.065305" steps="109545"/></proof>
301 <goal name="split_string'vc.41" expl="postcondition" proved="true">
302 <proof prover="3"><result status="valid" time="0.058935" steps="112177"/></proof>
304 <goal name="split_string'vc.42" expl="postcondition" proved="true">
305 <proof prover="3"><result status="valid" time="0.048567" steps="112502"/></proof>
307 <goal name="split_string'vc.43" expl="postcondition" proved="true">
308 <proof prover="0"><result status="valid" time="0.140543" steps="206"/></proof>
310 <goal name="split_string'vc.44" expl="postcondition" proved="true">
311 <proof prover="0"><result status="valid" time="0.127207" steps="843"/></proof>
313 <goal name="split_string'vc.45" expl="postcondition" proved="true">
314 <proof prover="1" timelimit="1"><result status="valid" time="0.441338" steps="70290"/></proof>