why3session.xml 26.1 KB
Newer Older
1
<?xml version="1.0" encoding="UTF-8"?>
MARCHE Claude's avatar
MARCHE Claude committed
2
<!DOCTYPE why3session PUBLIC "-//Why3//proof session v2//EN" "http://why3.lri.fr/why3session.dtd">
3
<why3session shape_version="2">
4 5 6 7 8 9
 <prover
  id="0"
  name="Alt-Ergo"
  version="0.94"/>
 <prover
  id="1"
MARCHE Claude's avatar
MARCHE Claude committed
10
  name="Alt-Ergo"
11
  version="0.95"/>
MARCHE Claude's avatar
MARCHE Claude committed
12 13
 <prover
  id="2"
14 15 16
  name="CVC3"
  version="2.2"/>
 <prover
MARCHE Claude's avatar
MARCHE Claude committed
17
  id="3"
18 19 20
  name="CVC3"
  version="2.4.1"/>
 <prover
MARCHE Claude's avatar
MARCHE Claude committed
21
  id="4"
22
  name="Coq"
23
  version="8.3pl4"/>
24
 <prover
MARCHE Claude's avatar
MARCHE Claude committed
25
  id="5"
26 27
  name="Z3"
  version="2.19"/>
28
 <prover
MARCHE Claude's avatar
MARCHE Claude committed
29
  id="6"
30 31
  name="Z3"
  version="3.2"/>
32 33
 <file
  name="../hash_tables.mlw"
34
  verified="true"
MARCHE Claude's avatar
MARCHE Claude committed
35
  expanded="true">
36
  <theory
Andrei Paskevich's avatar
Andrei Paskevich committed
37
   name="HashTable"
38
   locfile="../hash_tables.mlw"
39 40 41 42 43
   loclnum="10" loccnumb="7" loccnume="16"
   verified="true"
   expanded="false">
  </theory>
  <theory
Andrei Paskevich's avatar
Andrei Paskevich committed
44
   name="HashTableImpl"
45
   locfile="../hash_tables.mlw"
Andrei Paskevich's avatar
Andrei Paskevich committed
46
   loclnum="37" loccnumb="7" loccnume="20"
47
   verified="true"
MARCHE Claude's avatar
MARCHE Claude committed
48
   expanded="true">
49
   <goal
Andrei Paskevich's avatar
Andrei Paskevich committed
50
    name="idx_bounds"
51
    locfile="../hash_tables.mlw"
Andrei Paskevich's avatar
Andrei Paskevich committed
52 53
    loclnum="59" loccnumb="8" loccnume="18"
    sum="0b464a6d43e7b0fd5875254da47afd58"
54
    proved="true"
55
    expanded="true"
Andrei Paskevich's avatar
Andrei Paskevich committed
56
    shape="ainfix &lt;aidxV0V1alengthadataV0Aainfix &lt;=c0aidxV0V1Iainfix &lt;c0alengthadataV0F">
57
    <proof
58
     prover="0"
MARCHE Claude's avatar
MARCHE Claude committed
59 60
     timelimit="5"
     memlimit="1000"
61
     obsolete="false"
62
     archived="false">
63
     <result status="valid" time="0.14"/>
64 65
    </proof>
    <proof
MARCHE Claude's avatar
MARCHE Claude committed
66 67 68
     prover="2"
     timelimit="5"
     memlimit="1000"
69
     obsolete="false"
70
     archived="false">
Andrei Paskevich's avatar
Andrei Paskevich committed
71
     <result status="valid" time="0.04"/>
72
    </proof>
MARCHE Claude's avatar
MARCHE Claude committed
73 74 75 76 77 78
    <proof
     prover="3"
     timelimit="5"
     memlimit="1000"
     obsolete="false"
     archived="false">
Andrei Paskevich's avatar
Andrei Paskevich committed
79 80 81
     <result status="valid" time="0.06"/>
    </proof>
    <proof
82
     prover="5"
Andrei Paskevich's avatar
Andrei Paskevich committed
83 84 85 86 87
     timelimit="5"
     memlimit="1000"
     obsolete="false"
     archived="false">
     <result status="valid" time="0.03"/>
MARCHE Claude's avatar
MARCHE Claude committed
88 89
    </proof>
    <proof
90
     prover="6"
MARCHE Claude's avatar
MARCHE Claude committed
91 92
     timelimit="5"
     memlimit="1000"
93
     obsolete="false"
94
     archived="false">
95
     <result status="valid" time="0.03"/>
96 97
    </proof>
   </goal>
98
   <goal
Andrei Paskevich's avatar
Andrei Paskevich committed
99
    name="mem_occurs_first"
100
    locfile="../hash_tables.mlw"
Andrei Paskevich's avatar
Andrei Paskevich committed
101 102
    loclnum="69" loccnumb="8" loccnume="24"
    sum="f186a9096cf6ed96f50b1fb8040242c0"
103
    proved="true"
Andrei Paskevich's avatar
Andrei Paskevich committed
104
    expanded="false"
Andrei Paskevich's avatar
Andrei Paskevich committed
105
    shape="amemaTuple2V0V1V2Iaoccurs_firstV0V1V2F">
MARCHE Claude's avatar
MARCHE Claude committed
106
    <proof
Andrei Paskevich's avatar
Andrei Paskevich committed
107 108 109 110
     prover="4"
     timelimit="10"
     memlimit="0"
     edited="hash_tables_WP_HashTableImpl_mem_occurs_first_2.v"
MARCHE Claude's avatar
MARCHE Claude committed
111 112
     obsolete="false"
     archived="false">
113
     <result status="valid" time="0.57"/>
MARCHE Claude's avatar
MARCHE Claude committed
114
    </proof>
Andrei Paskevich's avatar
Andrei Paskevich committed
115 116 117
   </goal>
   <goal
    name="cons_occurs_first"
118
    locfile="../hash_tables.mlw"
Andrei Paskevich's avatar
Andrei Paskevich committed
119 120 121 122 123
    loclnum="73" loccnumb="8" loccnume="25"
    sum="459ccbeca7f21de31c3c557e5adbcba7"
    proved="true"
    expanded="false"
    shape="aoccurs_firstV0V1aConsaTuple2V3V4V2Iainfix =V3V0NFIaoccurs_firstV0V1V2F">
MARCHE Claude's avatar
MARCHE Claude committed
124
    <proof
125
     prover="0"
MARCHE Claude's avatar
MARCHE Claude committed
126 127 128 129
     timelimit="5"
     memlimit="1000"
     obsolete="false"
     archived="false">
130
     <result status="valid" time="0.02"/>
MARCHE Claude's avatar
MARCHE Claude committed
131
    </proof>
132
    <proof
133
     prover="1"
MARCHE Claude's avatar
MARCHE Claude committed
134 135 136 137
     timelimit="5"
     memlimit="1000"
     obsolete="false"
     archived="false">
Andrei Paskevich's avatar
Andrei Paskevich committed
138
     <result status="valid" time="0.02"/>
MARCHE Claude's avatar
MARCHE Claude committed
139 140
    </proof>
    <proof
141
     prover="2"
MARCHE Claude's avatar
MARCHE Claude committed
142 143 144 145
     timelimit="5"
     memlimit="1000"
     obsolete="false"
     archived="false">
Andrei Paskevich's avatar
Andrei Paskevich committed
146
     <result status="valid" time="0.02"/>
MARCHE Claude's avatar
MARCHE Claude committed
147 148
    </proof>
    <proof
Andrei Paskevich's avatar
Andrei Paskevich committed
149
     prover="3"
MARCHE Claude's avatar
MARCHE Claude committed
150 151 152 153
     timelimit="5"
     memlimit="1000"
     obsolete="false"
     archived="false">
Andrei Paskevich's avatar
Andrei Paskevich committed
154
     <result status="valid" time="0.02"/>
MARCHE Claude's avatar
MARCHE Claude committed
155 156
    </proof>
    <proof
157
     prover="5"
MARCHE Claude's avatar
MARCHE Claude committed
158 159
     timelimit="5"
     memlimit="1000"
160
     obsolete="false"
161
     archived="false">
162
     <result status="valid" time="0.09"/>
163 164 165 166
    </proof>
   </goal>
   <goal
    name="WP_parameter create"
167
    locfile="../hash_tables.mlw"
Andrei Paskevich's avatar
Andrei Paskevich committed
168
    loclnum="86" loccnumb="6" loccnume="12"
169
    expl="VC for create"
170
    sum="bbe7d77626aedb8ae40840244856cca9"
171
    proved="true"
Andrei Paskevich's avatar
Andrei Paskevich committed
172
    expanded="false"
173
    shape="ainfix =agetaconstaNoneV1aNoneFAainfix =V4amodaabsahashV2V0IamemaTuple2V2V3agetaconstaNilV4Iainfix &lt;V4V0Aainfix &lt;=c0V4FFAaoccurs_firstV5V6agetaconstaNilamodaabsahashV5V0qainfix =agetaconstaNoneV5aSomeV6FAainfix &gt;V0c0Aainfix &gt;=V0c0Iainfix &lt;c0V0F">
174
    <label
175
     name="expl:VC for create"/>
176
    <proof
MARCHE Claude's avatar
MARCHE Claude committed
177 178 179 180 181
     prover="5"
     timelimit="5"
     memlimit="1000"
     obsolete="false"
     archived="false">
Andrei Paskevich's avatar
Andrei Paskevich committed
182
     <result status="valid" time="0.04"/>
MARCHE Claude's avatar
MARCHE Claude committed
183 184 185 186 187
    </proof>
    <proof
     prover="6"
     timelimit="5"
     memlimit="1000"
188
     obsolete="false"
189
     archived="false">
Andrei Paskevich's avatar
Andrei Paskevich committed
190
     <result status="valid" time="0.03"/>
191 192 193 194
    </proof>
   </goal>
   <goal
    name="WP_parameter clear"
195
    locfile="../hash_tables.mlw"
Andrei Paskevich's avatar
Andrei Paskevich committed
196
    loclnum="91" loccnumb="6" loccnume="11"
197
    expl="VC for clear"
198
    sum="366e47517dda0050e8a5511b7eb2e1fc"
199
    proved="true"
Andrei Paskevich's avatar
Andrei Paskevich committed
200
    expanded="false"
201
    shape="ainfix =agetV4V5aNoneFAainfix =V8amodaabsahashV6V0IamemaTuple2V6V7agetV3V8Iainfix &lt;V8V0Aainfix &lt;=c0V8FFAaoccurs_firstV9V10agetV3amodaabsahashV9V0qainfix =agetV4V9aSomeV10FAainfix &gt;V0c0Iainfix =V4aconstaNoneFIainfix =agetV3V11aNilIainfix &lt;V11ainfix +c0V0Aainfix &lt;=c0V11FAainfix =agetV3V12agetV1V12Iainfix &lt;V12V0Aainfix &lt;=ainfix +c0V0V12Oainfix &lt;V12c0Aainfix &lt;=c0V12FFAainfix &lt;=ainfix +c0V0V0Aainfix &lt;=c0c0Iainfix =V15amodaabsahashV13V0IamemaTuple2V13V14agetV1V15Iainfix &lt;V15V0Aainfix &lt;=c0V15FFAaoccurs_firstV16V17agetV1amodaabsahashV16V0qainfix =agetV2V16aSomeV17FAainfix &gt;V0c0FF">
202
    <label
203
     name="expl:VC for clear"/>
204 205
    <transf
     name="split_goal"
206
     proved="true"
Andrei Paskevich's avatar
Andrei Paskevich committed
207
     expanded="false">
208 209
     <goal
      name="WP_parameter clear.1"
210
      locfile="../hash_tables.mlw"
Andrei Paskevich's avatar
Andrei Paskevich committed
211
      loclnum="91" loccnumb="6" loccnume="11"
212
      expl="1. precondition"
Andrei Paskevich's avatar
Andrei Paskevich committed
213
      sum="12ac3d8dfe33bd8b4f0923137cae216f"
214
      proved="true"
Andrei Paskevich's avatar
Andrei Paskevich committed
215
      expanded="false"
Andrei Paskevich's avatar
Andrei Paskevich committed
216
      shape="ainfix &lt;=ainfix +c0V0V0Aainfix &lt;=c0c0Iainfix =V5amodaabsahashV3V0IamemaTuple2V3V4agetV1V5Iainfix &lt;V5V0Aainfix &lt;=c0V5FFAaoccurs_firstV6V7agetV1amodaabsahashV6V0qainfix =agetV2V6aSomeV7FAainfix &gt;V0c0FF">
217
      <label
218
       name="expl:VC for clear"/>
MARCHE Claude's avatar
MARCHE Claude committed
219
      <proof
220
       prover="0"
MARCHE Claude's avatar
MARCHE Claude committed
221 222 223 224
       timelimit="5"
       memlimit="1000"
       obsolete="false"
       archived="false">
225
       <result status="valid" time="0.01"/>
MARCHE Claude's avatar
MARCHE Claude committed
226 227
      </proof>
      <proof
228
       prover="1"
MARCHE Claude's avatar
MARCHE Claude committed
229 230 231 232
       timelimit="5"
       memlimit="1000"
       obsolete="false"
       archived="false">
233
       <result status="valid" time="0.01"/>
MARCHE Claude's avatar
MARCHE Claude committed
234
      </proof>
235
      <proof
236
       prover="2"
MARCHE Claude's avatar
MARCHE Claude committed
237 238 239 240
       timelimit="5"
       memlimit="1000"
       obsolete="false"
       archived="false">
241
       <result status="valid" time="0.02"/>
MARCHE Claude's avatar
MARCHE Claude committed
242 243 244 245 246 247 248
      </proof>
      <proof
       prover="3"
       timelimit="5"
       memlimit="1000"
       obsolete="false"
       archived="false">
249
       <result status="valid" time="0.02"/>
MARCHE Claude's avatar
MARCHE Claude committed
250 251
      </proof>
      <proof
252
       prover="5"
MARCHE Claude's avatar
MARCHE Claude committed
253 254
       timelimit="5"
       memlimit="1000"
255
       obsolete="false"
256
       archived="false">
257
       <result status="valid" time="0.00"/>
258
      </proof>
MARCHE Claude's avatar
MARCHE Claude committed
259
      <proof
260
       prover="6"
MARCHE Claude's avatar
MARCHE Claude committed
261 262 263 264
       timelimit="5"
       memlimit="1000"
       obsolete="false"
       archived="false">
265
       <result status="valid" time="0.00"/>
MARCHE Claude's avatar
MARCHE Claude committed
266
      </proof>
267 268 269
     </goal>
     <goal
      name="WP_parameter clear.2"
270
      locfile="../hash_tables.mlw"
Andrei Paskevich's avatar
Andrei Paskevich committed
271
      loclnum="91" loccnumb="6" loccnume="11"
272
      expl="2. type invariant"
273
      sum="e40e11aae56e07930f917d151225be01"
274
      proved="true"
Andrei Paskevich's avatar
Andrei Paskevich committed
275
      expanded="false"
276
      shape="ainfix &gt;V0c0Iainfix =V4aconstaNoneFIainfix =agetV3V5aNilIainfix &lt;V5ainfix +c0V0Aainfix &lt;=c0V5FAainfix =agetV3V6agetV1V6Iainfix &lt;V6V0Aainfix &lt;=ainfix +c0V0V6Oainfix &lt;V6c0Aainfix &lt;=c0V6FFIainfix &lt;=ainfix +c0V0V0Aainfix &lt;=c0c0Iainfix =V9amodaabsahashV7V0IamemaTuple2V7V8agetV1V9Iainfix &lt;V9V0Aainfix &lt;=c0V9FFAaoccurs_firstV10V11agetV1amodaabsahashV10V0qainfix =agetV2V10aSomeV11FAainfix &gt;V0c0FF">
Andrei Paskevich's avatar
Andrei Paskevich committed
277
      <label
278
       name="expl:VC for clear"/>
Andrei Paskevich's avatar
Andrei Paskevich committed
279 280 281 282 283 284 285 286 287 288 289
      <proof
       prover="0"
       timelimit="17"
       memlimit="1000"
       obsolete="false"
       archived="false">
       <result status="valid" time="0.02"/>
      </proof>
     </goal>
     <goal
      name="WP_parameter clear.3"
290
      locfile="../hash_tables.mlw"
Andrei Paskevich's avatar
Andrei Paskevich committed
291
      loclnum="91" loccnumb="6" loccnume="11"
292
      expl="3. type invariant"
293
      sum="61e38583ddce8f493fa309baf4f08743"
Andrei Paskevich's avatar
Andrei Paskevich committed
294 295
      proved="true"
      expanded="false"
296
      shape="aoccurs_firstV5V6agetV3amodaabsahashV5V0qainfix =agetV4V5aSomeV6FIainfix =V4aconstaNoneFIainfix =agetV3V7aNilIainfix &lt;V7ainfix +c0V0Aainfix &lt;=c0V7FAainfix =agetV3V8agetV1V8Iainfix &lt;V8V0Aainfix &lt;=ainfix +c0V0V8Oainfix &lt;V8c0Aainfix &lt;=c0V8FFIainfix &lt;=ainfix +c0V0V0Aainfix &lt;=c0c0Iainfix =V11amodaabsahashV9V0IamemaTuple2V9V10agetV1V11Iainfix &lt;V11V0Aainfix &lt;=c0V11FFAaoccurs_firstV12V13agetV1amodaabsahashV12V0qainfix =agetV2V12aSomeV13FAainfix &gt;V0c0FF">
Andrei Paskevich's avatar
Andrei Paskevich committed
297
      <label
298
       name="expl:VC for clear"/>
Andrei Paskevich's avatar
Andrei Paskevich committed
299 300 301 302 303 304
      <proof
       prover="0"
       timelimit="17"
       memlimit="1000"
       obsolete="false"
       archived="false">
305
       <result status="valid" time="0.35"/>
Andrei Paskevich's avatar
Andrei Paskevich committed
306 307 308 309
      </proof>
     </goal>
     <goal
      name="WP_parameter clear.4"
310
      locfile="../hash_tables.mlw"
Andrei Paskevich's avatar
Andrei Paskevich committed
311
      loclnum="91" loccnumb="6" loccnume="11"
312
      expl="4. type invariant"
313
      sum="cf272346d8e6a78569a1ef52d1114377"
Andrei Paskevich's avatar
Andrei Paskevich committed
314 315
      proved="true"
      expanded="false"
316
      shape="ainfix =V7amodaabsahashV5V0IamemaTuple2V5V6agetV3V7Iainfix &lt;V7V0Aainfix &lt;=c0V7FFIainfix =V4aconstaNoneFIainfix =agetV3V8aNilIainfix &lt;V8ainfix +c0V0Aainfix &lt;=c0V8FAainfix =agetV3V9agetV1V9Iainfix &lt;V9V0Aainfix &lt;=ainfix +c0V0V9Oainfix &lt;V9c0Aainfix &lt;=c0V9FFIainfix &lt;=ainfix +c0V0V0Aainfix &lt;=c0c0Iainfix =V12amodaabsahashV10V0IamemaTuple2V10V11agetV1V12Iainfix &lt;V12V0Aainfix &lt;=c0V12FFAaoccurs_firstV13V14agetV1amodaabsahashV13V0qainfix =agetV2V13aSomeV14FAainfix &gt;V0c0FF">
Andrei Paskevich's avatar
Andrei Paskevich committed
317
      <label
318
       name="expl:VC for clear"/>
Andrei Paskevich's avatar
Andrei Paskevich committed
319 320 321 322 323 324
      <proof
       prover="0"
       timelimit="17"
       memlimit="1000"
       obsolete="false"
       archived="false">
325
       <result status="valid" time="0.24"/>
Andrei Paskevich's avatar
Andrei Paskevich committed
326 327 328 329
      </proof>
     </goal>
     <goal
      name="WP_parameter clear.5"
330
      locfile="../hash_tables.mlw"
Andrei Paskevich's avatar
Andrei Paskevich committed
331
      loclnum="91" loccnumb="6" loccnume="11"
332
      expl="5. postcondition"
333
      sum="b43c25c80c790391c60851193b2164ee"
Andrei Paskevich's avatar
Andrei Paskevich committed
334 335
      proved="true"
      expanded="false"
336
      shape="ainfix =agetV4V5aNoneFIainfix =V8amodaabsahashV6V0IamemaTuple2V6V7agetV3V8Iainfix &lt;V8V0Aainfix &lt;=c0V8FFAaoccurs_firstV9V10agetV3amodaabsahashV9V0qainfix =agetV4V9aSomeV10FAainfix &gt;V0c0Iainfix =V4aconstaNoneFIainfix =agetV3V11aNilIainfix &lt;V11ainfix +c0V0Aainfix &lt;=c0V11FAainfix =agetV3V12agetV1V12Iainfix &lt;V12V0Aainfix &lt;=ainfix +c0V0V12Oainfix &lt;V12c0Aainfix &lt;=c0V12FFIainfix &lt;=ainfix +c0V0V0Aainfix &lt;=c0c0Iainfix =V15amodaabsahashV13V0IamemaTuple2V13V14agetV1V15Iainfix &lt;V15V0Aainfix &lt;=c0V15FFAaoccurs_firstV16V17agetV1amodaabsahashV16V0qainfix =agetV2V16aSomeV17FAainfix &gt;V0c0FF">
337
      <label
338
       name="expl:VC for clear"/>
Andrei Paskevich's avatar
Andrei Paskevich committed
339 340 341 342 343 344
      <proof
       prover="0"
       timelimit="17"
       memlimit="1000"
       obsolete="false"
       archived="false">
345
       <result status="valid" time="0.02"/>
Andrei Paskevich's avatar
Andrei Paskevich committed
346
      </proof>
347 348 349 350
     </goal>
    </transf>
   </goal>
   <goal
351
    name="WP_parameter idx"
352
    locfile="../hash_tables.mlw"
Andrei Paskevich's avatar
Andrei Paskevich committed
353
    loclnum="96" loccnumb="6" loccnume="9"
354
    expl="VC for idx"
Andrei Paskevich's avatar
Andrei Paskevich committed
355
    sum="b9c3058211eb551f2fe8d04d8790c772"
356
    proved="true"
Andrei Paskevich's avatar
Andrei Paskevich committed
357
    expanded="false"
Andrei Paskevich's avatar
Andrei Paskevich committed
358
    shape="ainfix =amodaabsahashV1V0amodaabsahashV1V0Iainfix =V6amodaabsahashV4V0IamemaTuple2V4V5agetV2V6Iainfix &lt;V6V0Aainfix &lt;=c0V6FFAaoccurs_firstV7V8agetV2amodaabsahashV7V0qainfix =agetV3V7aSomeV8FAainfix &gt;V0c0FF">
359
    <label
360
     name="expl:VC for idx"/>
MARCHE Claude's avatar
MARCHE Claude committed
361
    <proof
362
     prover="0"
MARCHE Claude's avatar
MARCHE Claude committed
363 364 365 366
     timelimit="5"
     memlimit="1000"
     obsolete="false"
     archived="false">
367
     <result status="valid" time="0.01"/>
MARCHE Claude's avatar
MARCHE Claude committed
368 369
    </proof>
    <proof
370
     prover="1"
MARCHE Claude's avatar
MARCHE Claude committed
371 372 373 374
     timelimit="5"
     memlimit="1000"
     obsolete="false"
     archived="false">
375
     <result status="valid" time="0.01"/>
MARCHE Claude's avatar
MARCHE Claude committed
376
    </proof>
377
    <proof
378
     prover="2"
MARCHE Claude's avatar
MARCHE Claude committed
379 380 381 382
     timelimit="5"
     memlimit="1000"
     obsolete="false"
     archived="false">
383
     <result status="valid" time="0.02"/>
MARCHE Claude's avatar
MARCHE Claude committed
384 385 386 387 388 389 390
    </proof>
    <proof
     prover="3"
     timelimit="5"
     memlimit="1000"
     obsolete="false"
     archived="false">
Andrei Paskevich's avatar
Andrei Paskevich committed
391
     <result status="valid" time="0.03"/>
MARCHE Claude's avatar
MARCHE Claude committed
392 393
    </proof>
    <proof
394
     prover="5"
MARCHE Claude's avatar
MARCHE Claude committed
395 396 397 398 399 400 401
     timelimit="5"
     memlimit="1000"
     obsolete="false"
     archived="false">
     <result status="valid" time="0.00"/>
    </proof>
    <proof
402
     prover="6"
MARCHE Claude's avatar
MARCHE Claude committed
403
     timelimit="5"
404 405 406
     memlimit="1000"
     obsolete="false"
     archived="false">
407
     <result status="valid" time="0.00"/>
408 409 410 411
    </proof>
   </goal>
   <goal
    name="WP_parameter add"
412
    locfile="../hash_tables.mlw"
Andrei Paskevich's avatar
Andrei Paskevich committed
413
    loclnum="100" loccnumb="6" loccnume="9"
414
    expl="VC for add"
415
    sum="bc3ca7c9f5685847391143fa072e6c6a"
416
    proved="true"
Andrei Paskevich's avatar
Andrei Paskevich committed
417
    expanded="false"
418
    shape="ainfix =agetV7V8agetV4V8Iainfix =V8V1NFAainfix =agetV7V1aSomeV2Aainfix =V11amodaabsahashV9V0IamemaTuple2V9V10agetV6V11Iainfix &lt;V11V0Aainfix &lt;=c0V11FFAaoccurs_firstV12V13agetV6amodaabsahashV12V0qainfix =agetV7V12aSomeV13FAainfix &gt;V0c0Iainfix =V7asetV4V1aSomeV2FIainfix =V6asetV3V5aConsaTuple2V1V2agetV3V5FAainfix &lt;V5V0Aainfix &lt;=c0V5Aainfix &lt;V5V0Aainfix &lt;=c0V5LamodaabsahashV1V0Iainfix =V16amodaabsahashV14V0IamemaTuple2V14V15agetV3V16Iainfix &lt;V16V0Aainfix &lt;=c0V16FFAaoccurs_firstV17V18agetV3amodaabsahashV17V0qainfix =agetV4V17aSomeV18FAainfix &gt;V0c0FF">
419
    <label
420
     name="expl:VC for add"/>
421 422
    <transf
     name="split_goal"
423
     proved="true"
Andrei Paskevich's avatar
Andrei Paskevich committed
424
     expanded="false">
425 426
     <goal
      name="WP_parameter add.1"
427
      locfile="../hash_tables.mlw"
Andrei Paskevich's avatar
Andrei Paskevich committed
428
      loclnum="100" loccnumb="6" loccnume="9"
429
      expl="1. precondition"
Andrei Paskevich's avatar
Andrei Paskevich committed
430
      sum="c0fd0e11af4f079c0dae935257f38010"
431
      proved="true"
Andrei Paskevich's avatar
Andrei Paskevich committed
432
      expanded="false"
Andrei Paskevich's avatar
Andrei Paskevich committed
433
      shape="ainfix &lt;V5V0Aainfix &lt;=c0V5LamodaabsahashV1V0Iainfix =V8amodaabsahashV6V0IamemaTuple2V6V7agetV3V8Iainfix &lt;V8V0Aainfix &lt;=c0V8FFAaoccurs_firstV9V10agetV3amodaabsahashV9V0qainfix =agetV4V9aSomeV10FAainfix &gt;V0c0FF">
434
      <label
435
       name="expl:VC for add"/>
MARCHE Claude's avatar
MARCHE Claude committed
436
      <proof
437
       prover="0"
MARCHE Claude's avatar
MARCHE Claude committed
438 439 440 441
       timelimit="5"
       memlimit="1000"
       obsolete="false"
       archived="false">
442
       <result status="valid" time="0.07"/>
MARCHE Claude's avatar
MARCHE Claude committed
443 444
      </proof>
      <proof
445
       prover="1"
MARCHE Claude's avatar
MARCHE Claude committed
446 447 448 449
       timelimit="5"
       memlimit="1000"
       obsolete="false"
       archived="false">
450
       <result status="valid" time="0.07"/>
MARCHE Claude's avatar
MARCHE Claude committed
451
      </proof>
452
      <proof
453
       prover="2"
MARCHE Claude's avatar
MARCHE Claude committed
454
       timelimit="5"
455
       memlimit="1000"
456
       obsolete="false"
457
       archived="false">
458
       <result status="valid" time="0.03"/>
459
      </proof>
MARCHE Claude's avatar
MARCHE Claude committed
460 461 462 463 464 465
      <proof
       prover="3"
       timelimit="5"
       memlimit="1000"
       obsolete="false"
       archived="false">
Andrei Paskevich's avatar
Andrei Paskevich committed
466
       <result status="valid" time="0.05"/>
MARCHE Claude's avatar
MARCHE Claude committed
467 468
      </proof>
      <proof
469
       prover="5"
MARCHE Claude's avatar
MARCHE Claude committed
470 471 472 473
       timelimit="5"
       memlimit="1000"
       obsolete="false"
       archived="false">
474
       <result status="valid" time="0.03"/>
MARCHE Claude's avatar
MARCHE Claude committed
475 476
      </proof>
      <proof
477
       prover="6"
MARCHE Claude's avatar
MARCHE Claude committed
478 479 480 481
       timelimit="5"
       memlimit="1000"
       obsolete="false"
       archived="false">
482
       <result status="valid" time="0.02"/>
MARCHE Claude's avatar
MARCHE Claude committed
483
      </proof>
484 485 486
     </goal>
     <goal
      name="WP_parameter add.2"
487
      locfile="../hash_tables.mlw"
Andrei Paskevich's avatar
Andrei Paskevich committed
488
      loclnum="100" loccnumb="6" loccnume="9"
489
      expl="2. precondition"
Andrei Paskevich's avatar
Andrei Paskevich committed
490
      sum="fe3023bff9ba035cd6f03f89969c9884"
491
      proved="true"
Andrei Paskevich's avatar
Andrei Paskevich committed
492
      expanded="false"
Andrei Paskevich's avatar
Andrei Paskevich committed
493
      shape="ainfix &lt;V5V0Aainfix &lt;=c0V5Iainfix &lt;V5V0Aainfix &lt;=c0V5LamodaabsahashV1V0Iainfix =V8amodaabsahashV6V0IamemaTuple2V6V7agetV3V8Iainfix &lt;V8V0Aainfix &lt;=c0V8FFAaoccurs_firstV9V10agetV3amodaabsahashV9V0qainfix =agetV4V9aSomeV10FAainfix &gt;V0c0FF">
494
      <label
495
       name="expl:VC for add"/>
MARCHE Claude's avatar
MARCHE Claude committed
496
      <proof
497
       prover="0"
MARCHE Claude's avatar
MARCHE Claude committed
498 499 500 501
       timelimit="5"
       memlimit="1000"
       obsolete="false"
       archived="false">
502
       <result status="valid" time="0.01"/>
MARCHE Claude's avatar
MARCHE Claude committed
503 504
      </proof>
      <proof
505
       prover="1"
MARCHE Claude's avatar
MARCHE Claude committed
506 507 508 509
       timelimit="5"
       memlimit="1000"
       obsolete="false"
       archived="false">
510
       <result status="valid" time="0.01"/>
MARCHE Claude's avatar
MARCHE Claude committed
511
      </proof>
512
      <proof
513
       prover="2"
MARCHE Claude's avatar
MARCHE Claude committed
514 515 516 517
       timelimit="5"
       memlimit="1000"
       obsolete="false"
       archived="false">
518
       <result status="valid" time="0.02"/>
MARCHE Claude's avatar
MARCHE Claude committed
519 520 521 522 523 524 525
      </proof>
      <proof
       prover="3"
       timelimit="5"
       memlimit="1000"
       obsolete="false"
       archived="false">
526
       <result status="valid" time="0.02"/>
MARCHE Claude's avatar
MARCHE Claude committed
527 528
      </proof>
      <proof
529
       prover="5"
MARCHE Claude's avatar
MARCHE Claude committed
530 531 532 533 534 535 536
       timelimit="5"
       memlimit="1000"
       obsolete="false"
       archived="false">
       <result status="valid" time="0.00"/>
      </proof>
      <proof
537
       prover="6"
MARCHE Claude's avatar
MARCHE Claude committed
538
       timelimit="5"
539
       memlimit="1000"
540
       obsolete="false"
541
       archived="false">
542
       <result status="valid" time="0.00"/>
543 544 545 546
      </proof>
     </goal>
     <goal
      name="WP_parameter add.3"
547
      locfile="../hash_tables.mlw"
Andrei Paskevich's avatar
Andrei Paskevich committed
548
      loclnum="100" loccnumb="6" loccnume="9"
549
      expl="3. type invariant"
550
      sum="99608f17fde0388b0ca79c9cc51ab069"
551
      proved="true"
Andrei Paskevich's avatar
Andrei Paskevich committed
552
      expanded="false"
553
      shape="ainfix &gt;V0c0Iainfix =V7asetV4V1aSomeV2FIainfix =V6asetV3V5aConsaTuple2V1V2agetV3V5FIainfix &lt;V5V0Aainfix &lt;=c0V5Iainfix &lt;V5V0Aainfix &lt;=c0V5LamodaabsahashV1V0Iainfix =V10amodaabsahashV8V0IamemaTuple2V8V9agetV3V10Iainfix &lt;V10V0Aainfix &lt;=c0V10FFAaoccurs_firstV11V12agetV3amodaabsahashV11V0qainfix =agetV4V11aSomeV12FAainfix &gt;V0c0FF">
Andrei Paskevich's avatar
Andrei Paskevich committed
554
      <label
555
       name="expl:VC for add"/>
Andrei Paskevich's avatar
Andrei Paskevich committed
556 557 558 559 560 561
      <proof
       prover="0"
       timelimit="17"
       memlimit="1000"
       obsolete="false"
       archived="false">
562
       <result status="valid" time="0.02"/>
Andrei Paskevich's avatar
Andrei Paskevich committed
563 564 565 566
      </proof>
     </goal>
     <goal
      name="WP_parameter add.4"
567
      locfile="../hash_tables.mlw"
Andrei Paskevich's avatar
Andrei Paskevich committed
568
      loclnum="100" loccnumb="6" loccnume="9"
569
      expl="4. type invariant"
570
      sum="cd5d53f309a24d9f628a9b386ef06046"
Andrei Paskevich's avatar
Andrei Paskevich committed
571 572
      proved="true"
      expanded="false"
573
      shape="aoccurs_firstV8V9agetV6amodaabsahashV8V0qainfix =agetV7V8aSomeV9FIainfix =V7asetV4V1aSomeV2FIainfix =V6asetV3V5aConsaTuple2V1V2agetV3V5FIainfix &lt;V5V0Aainfix &lt;=c0V5Iainfix &lt;V5V0Aainfix &lt;=c0V5LamodaabsahashV1V0Iainfix =V12amodaabsahashV10V0IamemaTuple2V10V11agetV3V12Iainfix &lt;V12V0Aainfix &lt;=c0V12FFAaoccurs_firstV13V14agetV3amodaabsahashV13V0qainfix =agetV4V13aSomeV14FAainfix &gt;V0c0FF">
574
      <label
575
       name="expl:VC for add"/>
Andrei Paskevich's avatar
Andrei Paskevich committed
576
      <proof
577
       prover="3"
Andrei Paskevich's avatar
Andrei Paskevich committed
578 579 580 581
       timelimit="17"
       memlimit="1000"
       obsolete="false"
       archived="false">
582
       <result status="valid" time="0.25"/>
Andrei Paskevich's avatar
Andrei Paskevich committed
583 584 585 586
      </proof>
     </goal>
     <goal
      name="WP_parameter add.5"
587
      locfile="../hash_tables.mlw"
Andrei Paskevich's avatar
Andrei Paskevich committed
588
      loclnum="100" loccnumb="6" loccnume="9"
589
      expl="5. type invariant"
590
      sum="6c5e57799dde73067a16f42b6880a131"
Andrei Paskevich's avatar
Andrei Paskevich committed
591 592
      proved="true"
      expanded="false"
593
      shape="ainfix =V10amodaabsahashV8V0IamemaTuple2V8V9agetV6V10Iainfix &lt;V10V0Aainfix &lt;=c0V10FFIainfix =V7asetV4V1aSomeV2FIainfix =V6asetV3V5aConsaTuple2V1V2agetV3V5FIainfix &lt;V5V0Aainfix &lt;=c0V5Iainfix &lt;V5V0Aainfix &lt;=c0V5LamodaabsahashV1V0Iainfix =V13amodaabsahashV11V0IamemaTuple2V11V12agetV3V13Iainfix &lt;V13V0Aainfix &lt;=c0V13FFAaoccurs_firstV14V15agetV3amodaabsahashV14V0qainfix =agetV4V14aSomeV15FAainfix &gt;V0c0FF">
Andrei Paskevich's avatar
Andrei Paskevich committed
594
      <label
595
       name="expl:VC for add"/>
Andrei Paskevich's avatar
Andrei Paskevich committed
596
      <proof
597
       prover="3"
Andrei Paskevich's avatar
Andrei Paskevich committed
598 599 600 601
       timelimit="17"
       memlimit="1000"
       obsolete="false"
       archived="false">
602
       <result status="valid" time="0.53"/>
Andrei Paskevich's avatar
Andrei Paskevich committed
603 604 605 606
      </proof>
     </goal>
     <goal
      name="WP_parameter add.6"
607
      locfile="../hash_tables.mlw"
Andrei Paskevich's avatar
Andrei Paskevich committed
608
      loclnum="100" loccnumb="6" loccnume="9"
609
      expl="6. postcondition"
610
      sum="1a9b94709cd96fa316aecdb9cbde4305"
Andrei Paskevich's avatar
Andrei Paskevich committed
611 612
      proved="true"
      expanded="false"
613
      shape="ainfix =agetV7V1aSomeV2Iainfix =V10amodaabsahashV8V0IamemaTuple2V8V9agetV6V10Iainfix &lt;V10V0Aainfix &lt;=c0V10FFAaoccurs_firstV11V12agetV6amodaabsahashV11V0qainfix =agetV7V11aSomeV12FAainfix &gt;V0c0Iainfix =V7asetV4V1aSomeV2FIainfix =V6asetV3V5aConsaTuple2V1V2agetV3V5FIainfix &lt;V5V0Aainfix &lt;=c0V5Iainfix &lt;V5V0Aainfix &lt;=c0V5LamodaabsahashV1V0Iainfix =V15amodaabsahashV13V0IamemaTuple2V13V14agetV3V15Iainfix &lt;V15V0Aainfix &lt;=c0V15FFAaoccurs_firstV16V17agetV3amodaabsahashV16V0qainfix =agetV4V16aSomeV17FAainfix &gt;V0c0FF">
Andrei Paskevich's avatar
Andrei Paskevich committed
614
      <label
615
       name="expl:VC for add"/>
Andrei Paskevich's avatar
Andrei Paskevich committed
616
      <proof
617
       prover="0"
Andrei Paskevich's avatar
Andrei Paskevich committed
618 619 620 621
       timelimit="17"
       memlimit="1000"
       obsolete="false"
       archived="false">
622
       <result status="valid" time="0.01"/>
Andrei Paskevich's avatar
Andrei Paskevich committed
623 624 625 626
      </proof>
     </goal>
     <goal
      name="WP_parameter add.7"
627
      locfile="../hash_tables.mlw"
Andrei Paskevich's avatar
Andrei Paskevich committed
628
      loclnum="100" loccnumb="6" loccnume="9"
629
      expl="7. postcondition"
630
      sum="ae827acdde0c698ceb17072f203400bf"
Andrei Paskevich's avatar
Andrei Paskevich committed
631 632
      proved="true"
      expanded="false"
633
      shape="ainfix =agetV7V8agetV4V8Iainfix =V8V1NFIainfix =V11amodaabsahashV9V0IamemaTuple2V9V10agetV6V11Iainfix &lt;V11V0Aainfix &lt;=c0V11FFAaoccurs_firstV12V13agetV6amodaabsahashV12V0qainfix =agetV7V12aSomeV13FAainfix &gt;V0c0Iainfix =V7asetV4V1aSomeV2FIainfix =V6asetV3V5aConsaTuple2V1V2agetV3V5FIainfix &lt;V5V0Aainfix &lt;=c0V5Iainfix &lt;V5V0Aainfix &lt;=c0V5LamodaabsahashV1V0Iainfix =V16amodaabsahashV14V0IamemaTuple2V14V15agetV3V16Iainfix &lt;V16V0Aainfix &lt;=c0V16FFAaoccurs_firstV17V18agetV3amodaabsahashV17V0qainfix =agetV4V17aSomeV18FAainfix &gt;V0c0FF">
Andrei Paskevich's avatar
Andrei Paskevich committed
634
      <label
635
       name="expl:VC for add"/>
Andrei Paskevich's avatar
Andrei Paskevich committed
636
      <proof
637
       prover="0"
Andrei Paskevich's avatar
Andrei Paskevich committed
638 639 640 641
       timelimit="17"
       memlimit="1000"
       obsolete="false"
       archived="false">
642
       <result status="valid" time="0.02"/>
Andrei Paskevich's avatar
Andrei Paskevich committed
643
      </proof>
644 645 646 647 648
     </goal>
    </transf>
   </goal>
   <goal
    name="WP_parameter lookup"
649
    locfile="../hash_tables.mlw"
Andrei Paskevich's avatar
Andrei Paskevich committed
650
    loclnum="109" loccnumb="10" loccnume="16"
651
    expl="VC for lookup"
Andrei Paskevich's avatar
Andrei Paskevich committed
652
    sum="00c7ced43a5b9002b8d964c92c42ccd5"
653
    proved="true"
Andrei Paskevich's avatar
Andrei Paskevich committed
654
    expanded="false"
Andrei Paskevich's avatar
Andrei Paskevich committed
655
    shape="CV1aNilamemaTuple2V0V2V1NFaConsaTuple2VVViainfix =V0V3aoccurs_firstV0V4V1amemaTuple2V0V6V1NFIamemaTuple2V0V7V5NFAaoccurs_firstV0V8V1Iaoccurs_firstV0V8V5FF">
656
    <label
657
     name="expl:VC for lookup"/>
658
    <proof
MARCHE Claude's avatar
MARCHE Claude committed
659 660 661 662 663
     prover="2"
     timelimit="5"
     memlimit="1000"
     obsolete="false"
     archived="false">
Andrei Paskevich's avatar
Andrei Paskevich committed
664
     <result status="valid" time="0.02"/>
MARCHE Claude's avatar
MARCHE Claude committed
665 666 667 668 669
    </proof>
    <proof
     prover="3"
     timelimit="5"
     memlimit="1000"
670
     obsolete="false"
671
     archived="false">
Andrei Paskevich's avatar
Andrei Paskevich committed
672
     <result status="valid" time="0.02"/>
673 674 675 676
    </proof>
   </goal>
   <goal
    name="WP_parameter find"
677
    locfile="../hash_tables.mlw"
Andrei Paskevich's avatar
Andrei Paskevich committed
678
    loclnum="117" loccnumb="6" loccnume="10"
679
    expl="VC for find"
Andrei Paskevich's avatar
Andrei Paskevich committed
680
    sum="5224e2c5ac73a3187f091672db2b295b"
681
    proved="true"
Andrei Paskevich's avatar
Andrei Paskevich committed
682
    expanded="true"
Andrei Paskevich's avatar
Andrei Paskevich committed
683
    shape="ainfix =agetV3V1aNoneIamemaTuple2V1V6V5NFAainfix =agetV3V1aSomeV7Iaoccurs_firstV1V7V5FLagetV2V4Aainfix &lt;V4V0Aainfix &lt;=c0V4LamodaabsahashV1V0Iainfix =V10amodaabsahashV8V0IamemaTuple2V8V9agetV2V10Iainfix &lt;V10V0Aainfix &lt;=c0V10FFAaoccurs_firstV11V12agetV2amodaabsahashV11V0qainfix =agetV3V11aSomeV12FAainfix &gt;V0c0FF">
684
    <label
685
     name="expl:VC for find"/>
686 687
    <transf
     name="split_goal"
688
     proved="true"
Andrei Paskevich's avatar
Andrei Paskevich committed
689
     expanded="true">
690
     <goal
691
      name="WP_parameter find.1"
692
      locfile="../hash_tables.mlw"
Andrei Paskevich's avatar
Andrei Paskevich committed
693
      loclnum="117" loccnumb="6" loccnume="10"
694
      expl="1. precondition"
Andrei Paskevich's avatar
Andrei Paskevich committed
695
      sum="5ef39bf9f60c84352f027875e122bd90"
696
      proved="true"
Andrei Paskevich's avatar
Andrei Paskevich committed
697
      expanded="false"
Andrei Paskevich's avatar
Andrei Paskevich committed
698
      shape="ainfix &lt;V4V0Aainfix &lt;=c0V4LamodaabsahashV1V0Iainfix =V7amodaabsahashV5V0IamemaTuple2V5V6agetV2V7Iainfix &lt;V7V0Aainfix &lt;=c0V7FFAaoccurs_firstV8V9agetV2amodaabsahashV8V0qainfix =agetV3V8aSomeV9FAainfix &gt;V0c0FF">
699
      <label
700
       name="expl:VC for find"/>
MARCHE Claude's avatar
MARCHE Claude committed
701
      <proof
702
       prover="0"
MARCHE Claude's avatar
MARCHE Claude committed
703 704 705 706
       timelimit="5"
       memlimit="1000"
       obsolete="false"
       archived="false">
707
       <result status="valid" time="0.08"/>
MARCHE Claude's avatar
MARCHE Claude committed
708 709
      </proof>
      <proof
710
       prover="1"
MARCHE Claude's avatar
MARCHE Claude committed
711 712 713 714
       timelimit="5"
       memlimit="1000"
       obsolete="false"
       archived="false">
715
       <result status="valid" time="0.07"/>
MARCHE Claude's avatar
MARCHE Claude committed
716
      </proof>
717
      <proof
718
       prover="2"
MARCHE Claude's avatar
MARCHE Claude committed
719
       timelimit="5"
720
       memlimit="1000"
721
       obsolete="false"
722
       archived="false">
723
       <result status="valid" time="0.04"/>
724
      </proof>
MARCHE Claude's avatar
MARCHE Claude committed
725 726 727 728 729 730
      <proof
       prover="3"
       timelimit="5"
       memlimit="1000"
       obsolete="false"
       archived="false">
Andrei Paskevich's avatar
Andrei Paskevich committed
731
       <result status="valid" time="0.04"/>
MARCHE Claude's avatar
MARCHE Claude committed
732 733
      </proof>
      <proof
734
       prover="5"
MARCHE Claude's avatar
MARCHE Claude committed
735 736 737 738
       timelimit="5"
       memlimit="1000"
       obsolete="false"
       archived="false">
Andrei Paskevich's avatar
Andrei Paskevich committed
739
       <result status="valid" time="0.03"/>
MARCHE Claude's avatar
MARCHE Claude committed
740 741
      </proof>
      <proof
742
       prover="6"
MARCHE Claude's avatar
MARCHE Claude committed
743 744 745 746
       timelimit="5"
       memlimit="1000"
       obsolete="false"
       archived="false">
747
       <result status="valid" time="0.03"/>
MARCHE Claude's avatar
MARCHE Claude committed
748
      </proof>
749 750
     </goal>
     <goal
751
      name="WP_parameter find.2"
752
      locfile="../hash_tables.mlw"
Andrei Paskevich's avatar
Andrei Paskevich committed
753
      loclnum="117" loccnumb="6" loccnume="10"
754
      expl="2. postcondition"
Andrei Paskevich's avatar
Andrei Paskevich committed
755
      sum="409842db39afa8755629f0dbb0e494be"
756
      proved="true"
Andrei Paskevich's avatar
Andrei Paskevich committed
757 758
      expanded="false"
      shape="ainfix =agetV3V1aSomeV6Iaoccurs_firstV1V6V5FLagetV2V4Iainfix &lt;V4V0Aainfix &lt;=c0V4LamodaabsahashV1V0Iainfix =V9amodaabsahashV7V0IamemaTuple2V7V8agetV2V9Iainfix &lt;V9V0Aainfix &lt;=c0V9FFAaoccurs_firstV10V11agetV2amodaabsahashV10V0qainfix =agetV3V10aSomeV11FAainfix &gt;V0c0FF">
759
      <label
760
       name="expl:VC for find"/>
761
      <proof
MARCHE Claude's avatar
MARCHE Claude committed
762 763
       prover="5"
       timelimit="5"
764
       memlimit="1000"
765
       obsolete="false"
766
       archived="false">
Andrei Paskevich's avatar
Andrei Paskevich committed
767
       <result status="valid" time="0.03"/>
768 769
      </proof>
      <proof
MARCHE Claude's avatar
MARCHE Claude committed
770 771
       prover="6"
       timelimit="5"
772
       memlimit="1000"
773 774
       obsolete="false"
       archived="false">
Andrei Paskevich's avatar
Andrei Paskevich committed
775
       <result status="valid" time="0.02"/>
776 777 778
      </proof>
     </goal>
     <goal
779
      name="WP_parameter find.3"
780
      locfile="../hash_tables.mlw"
Andrei Paskevich's avatar
Andrei Paskevich committed
781
      loclnum="117" loccnumb="6" loccnume="10"
782
      expl="3. exceptional postcondition"
Andrei Paskevich's avatar
Andrei Paskevich committed
783
      sum="2627c5f585ce3502442170a2d4b88842"
784
      proved="true"
Andrei Paskevich's avatar
Andrei Paskevich committed
785
      expanded="true"
Andrei Paskevich's avatar
Andrei Paskevich committed
786
      shape="ainfix =agetV3V1aNoneIamemaTuple2V1V6V5NFLagetV2V4Iainfix &lt;V4V0Aainfix &lt;=c0V4LamodaabsahashV1V0Iainfix =V9amodaabsahashV7V0IamemaTuple2V7V8agetV2V9Iainfix &lt;V9V0Aainfix &lt;=c0V9FFAaoccurs_firstV10V11agetV2amodaabsahashV10V0qainfix =a