1 logic eq_unit : unit, unit -> prop
3 logic neq_unit : unit, unit -> prop
5 logic eq_bool : bool, bool -> prop
7 logic neq_bool : bool, bool -> prop
9 logic lt_int : int, int -> prop
11 logic le_int : int, int -> prop
13 logic gt_int : int, int -> prop
15 logic ge_int : int, int -> prop
17 logic eq_int : int, int -> prop
19 logic neq_int : int, int -> prop
21 logic add_int : int, int -> int
23 logic sub_int : int, int -> int
25 logic mul_int : int, int -> int
27 logic div_int : int, int -> int
29 logic mod_int : int, int -> int
31 logic neg_int : int -> int
33 predicate zwf_zero(a: int, b: int) = ((0 <= b) and (a < b))
35 logic bw_compl : int -> int
37 logic bw_and : int, int -> int
39 logic bw_xor : int, int -> int
41 logic bw_or : int, int -> int
43 logic lsl : int, int -> int
45 logic lsr : int, int -> int
53 logic block_length : alloc_table, 'a1 pointer -> int
55 logic base_addr : 'a1 pointer -> 'a1 addr
57 logic offset : 'a1 pointer -> int
59 logic shift : 'a1 pointer, int -> 'a1 pointer
61 logic sub_pointer : 'a1 pointer, 'a1 pointer -> int
63 predicate lt_pointer(p1: 'a1 pointer, p2: 'a1 pointer) =
64 ((base_addr(p1) = base_addr(p2)) and (offset(p1) < offset(p2)))
66 predicate le_pointer(p1: 'a1 pointer, p2: 'a1 pointer) =
67 ((base_addr(p1) = base_addr(p2)) and (offset(p1) <= offset(p2)))
69 predicate gt_pointer(p1: 'a1 pointer, p2: 'a1 pointer) =
70 ((base_addr(p1) = base_addr(p2)) and (offset(p1) > offset(p2)))
72 predicate ge_pointer(p1: 'a1 pointer, p2: 'a1 pointer) =
73 ((base_addr(p1) = base_addr(p2)) and (offset(p1) >= offset(p2)))
75 predicate valid(a: alloc_table, p: 'a1 pointer) =
76 ((0 <= offset(p)) and (offset(p) < block_length(a, p)))
78 predicate valid_index(a: alloc_table, p: 'a1 pointer, i: int) =
79 ((0 <= (offset(p) + i)) and ((offset(p) + i) < block_length(a, p)))
81 predicate valid_range(a: alloc_table, p: 'a1 pointer, i: int, j: int) =
82 ((0 <= (offset(p) + i)) and ((offset(p) + j) < block_length(a, p)))
85 (forall p:'a1 pointer.
86 (forall i:int [offset(shift(p, i))]. (offset(shift(p,
87 i)) = (offset(p) + i))))
89 axiom shift_zero: (forall p:'a1 pointer [shift(p, 0)]. (shift(p, 0) = p))
92 (forall p:'a1 pointer.
94 (forall j:int [shift(shift(p, i), j)]. (shift(shift(p, i),
95 j) = shift(p, (i + j))))))
97 axiom base_addr_shift:
98 (forall p:'a1 pointer.
99 (forall i:int [base_addr(shift(p, i))]. (base_addr(shift(p,
100 i)) = base_addr(p))))
102 axiom block_length_shift:
103 (forall a:alloc_table.
104 (forall p:'a1 pointer.
105 (forall i:int [block_length(a, shift(p, i))]. (block_length(a, shift(p,
106 i)) = block_length(a, p)))))
108 axiom base_addr_block_length:
109 (forall a:alloc_table.
110 (forall p1:'a1 pointer.
111 (forall p2:'a1 pointer.
112 ((base_addr(p1) = base_addr(p2)) -> (block_length(a,
113 p1) = block_length(a, p2))))))
115 axiom pointer_pair_1:
116 (forall p1:'a1 pointer.
117 (forall p2:'a1 pointer.
118 (((base_addr(p1) = base_addr(p2)) and (offset(p1) = offset(p2))) ->
121 axiom pointer_pair_2:
122 (forall p1:'a1 pointer.
123 (forall p2:'a1 pointer.
125 ((base_addr(p1) = base_addr(p2)) and (offset(p1) = offset(p2))))))
127 axiom neq_base_addr_neq_shift:
128 (forall p1:'a1 pointer.
129 (forall p2:'a1 pointer.
132 ((base_addr(p1) <> base_addr(p2)) -> (shift(p1, i) <> shift(p2, j)))))))
134 axiom neq_offset_neq_shift:
135 (forall p1:'a1 pointer.
136 (forall p2:'a1 pointer.
139 (((offset(p1) + i) <> (offset(p2) + j)) -> (shift(p1,
140 i) <> shift(p2, j)))))))
142 axiom eq_offset_eq_shift:
143 (forall p1:'a1 pointer.
144 (forall p2:'a1 pointer.
147 ((base_addr(p1) = base_addr(p2)) ->
148 (((offset(p1) + i) = (offset(p2) + j)) -> (shift(p1,
149 i) = shift(p2, j))))))))
151 axiom valid_index_valid_shift:
152 (forall a:alloc_table.
153 (forall p:'a1 pointer.
154 (forall i:int. (valid_index(a, p, i) -> valid(a, shift(p, i))))))
156 axiom valid_range_valid_shift:
157 (forall a:alloc_table.
158 (forall p:'a1 pointer.
162 (valid_range(a, p, i, j) ->
163 (((i <= k) and (k <= j)) -> valid(a, shift(p, k)))))))))
165 axiom valid_range_valid:
166 (forall a:alloc_table.
167 (forall p:'a1 pointer.
170 (valid_range(a, p, i, j) ->
171 (((i <= 0) and (0 <= j)) -> valid(a, p)))))))
173 axiom valid_range_valid_index:
174 (forall a:alloc_table.
175 (forall p:'a1 pointer.
179 (valid_range(a, p, i, j) ->
180 (((i <= k) and (k <= j)) -> valid_index(a, p, k))))))))
182 axiom sub_pointer_def:
183 (forall p1:'a1 pointer.
184 (forall p2:'a1 pointer.
185 ((base_addr(p1) = base_addr(p2)) -> (sub_pointer(p1,
186 p2) = (offset(p1) - offset(p2))))))
190 logic acc : ('a1, 'a2) memory, 'a2 pointer -> 'a1
192 logic upd : ('a1, 'a2) memory, 'a2 pointer, 'a1 -> ('a1, 'a2) memory
195 (forall m:('a1, 'a2) memory.
196 (forall p:'a2 pointer.
197 (forall a:'a1 [acc(upd(m, p, a), p)]. (acc(upd(m, p, a), p) = a))))
200 (forall m:('a1, 'a2) memory.
201 (forall p1:'a2 pointer.
202 (forall p2:'a2 pointer.
203 (forall a:'a1 [acc(upd(m, p1, a), p2)].
204 ((p1 <> p2) -> (acc(upd(m, p1, a), p2) = acc(m, p2)))))))
206 axiom false_not_true: (false <> true)
210 logic pset_empty : 'a1 pset
212 logic pset_singleton : 'a1 pointer -> 'a1 pset
214 logic pset_star : 'a2 pset, ('a1 pointer, 'a2) memory -> 'a1 pset
216 logic pset_all : 'a1 pset -> 'a1 pset
218 logic pset_range : 'a1 pset, int, int -> 'a1 pset
220 logic pset_range_left : 'a1 pset, int -> 'a1 pset
222 logic pset_range_right : 'a1 pset, int -> 'a1 pset
224 logic pset_acc_all : 'a2 pset, ('a1 pointer, 'a2) memory -> 'a1 pset
226 logic pset_acc_range : 'a2 pset, ('a1 pointer, 'a2) memory, int,
229 logic pset_acc_range_left : 'a2 pset, ('a1 pointer, 'a2) memory,
232 logic pset_acc_range_right : 'a2 pset, ('a1 pointer, 'a2) memory,
235 logic pset_union : 'a1 pset, 'a1 pset -> 'a1 pset
237 logic not_in_pset : 'a1 pointer, 'a1 pset -> prop
239 predicate not_assigns(a: alloc_table, m1: ('a1, 'a2) memory, m2: ('a1,
240 'a2) memory, l: 'a2 pset) =
241 (forall p:'a2 pointer.
242 (valid(a, p) -> (not_in_pset(p, l) -> (acc(m2, p) = acc(m1, p)))))
244 axiom pset_empty_intro: (forall p:'a1 pointer. not_in_pset(p, pset_empty))
246 axiom pset_singleton_intro:
247 (forall p1:'a1 pointer.
248 (forall p2:'a1 pointer [not_in_pset(p1, pset_singleton(p2))].
249 ((p1 <> p2) -> not_in_pset(p1, pset_singleton(p2)))))
251 axiom pset_singleton_elim:
252 (forall p1:'a1 pointer.
253 (forall p2:'a1 pointer [not_in_pset(p1, pset_singleton(p2))].
254 (not_in_pset(p1, pset_singleton(p2)) -> (p1 <> p2))))
256 axiom not_not_in_singleton:
257 (forall p:'a1 pointer. (not not_in_pset(p, pset_singleton(p))))
259 axiom pset_union_intro:
262 (forall p:'a1 pointer [not_in_pset(p, pset_union(l1, l2))].
263 ((not_in_pset(p, l1) and not_in_pset(p, l2)) -> not_in_pset(p,
264 pset_union(l1, l2))))))
266 axiom pset_union_elim1:
269 (forall p:'a1 pointer [not_in_pset(p, pset_union(l1, l2))].
270 (not_in_pset(p, pset_union(l1, l2)) -> not_in_pset(p, l1)))))
272 axiom pset_union_elim2:
275 (forall p:'a1 pointer [not_in_pset(p, pset_union(l1, l2))].
276 (not_in_pset(p, pset_union(l1, l2)) -> not_in_pset(p, l2)))))
278 axiom pset_star_intro:
280 (forall m:('a2 pointer, 'a1) memory.
281 (forall p:'a2 pointer [not_in_pset(p, pset_star(l, m))].
282 ((forall p1:'a1 pointer. ((p = acc(m, p1)) -> not_in_pset(p1, l))) ->
283 not_in_pset(p, pset_star(l, m))))))
285 axiom pset_star_elim:
287 (forall m:('a2 pointer, 'a1) memory.
288 (forall p:'a2 pointer [not_in_pset(p, pset_star(l, m))].
289 (not_in_pset(p, pset_star(l, m)) ->
290 (forall p1:'a1 pointer. ((p = acc(m, p1)) -> not_in_pset(p1, l)))))))
292 axiom pset_all_intro:
293 (forall p:'a1 pointer.
294 (forall l:'a1 pset [not_in_pset(p, pset_all(l))].
295 ((forall p1:'a1 pointer.
296 ((not not_in_pset(p1, l)) -> (base_addr(p) <> base_addr(p1)))) ->
297 not_in_pset(p, pset_all(l)))))
300 (forall p:'a1 pointer.
301 (forall l:'a1 pset [not_in_pset(p, pset_all(l))].
302 (not_in_pset(p, pset_all(l)) ->
303 (forall p1:'a1 pointer.
304 ((not not_in_pset(p1, l)) -> (base_addr(p) <> base_addr(p1)))))))
306 axiom pset_range_intro:
307 (forall p:'a1 pointer.
310 (forall b:int [not_in_pset(p, pset_range(l, a, b))].
311 ((forall p1:'a1 pointer.
312 (not_in_pset(p1, l) or
314 (((a <= i) and (i <= b)) -> (p <> shift(p1, i)))))) ->
315 not_in_pset(p, pset_range(l, a, b)))))))
317 axiom pset_range_elim:
318 (forall p:'a1 pointer.
321 (forall b:int [not_in_pset(p, pset_range(l, a, b))].
322 (not_in_pset(p, pset_range(l, a, b)) ->
323 (forall p1:'a1 pointer.
324 ((not not_in_pset(p1, l)) ->
326 (((a <= i) and (i <= b)) -> (shift(p1, i) <> p))))))))))
328 axiom pset_range_left_intro:
329 (forall p:'a1 pointer.
331 (forall a:int [not_in_pset(p, pset_range_left(l, a))].
332 ((forall p1:'a1 pointer.
333 (not_in_pset(p1, l) or
334 (forall i:int. ((i <= a) -> (p <> shift(p1, i)))))) ->
335 not_in_pset(p, pset_range_left(l, a))))))
337 axiom pset_range_left_elim:
338 (forall p:'a1 pointer.
340 (forall a:int [not_in_pset(p, pset_range_left(l, a))].
341 (not_in_pset(p, pset_range_left(l, a)) ->
342 (forall p1:'a1 pointer.
343 ((not not_in_pset(p1, l)) ->
344 (forall i:int. ((i <= a) -> (shift(p1, i) <> p)))))))))
346 axiom pset_range_right_intro:
347 (forall p:'a1 pointer.
349 (forall a:int [not_in_pset(p, pset_range_right(l, a))].
350 ((forall p1:'a1 pointer.
351 (not_in_pset(p1, l) or
352 (forall i:int. ((a <= i) -> (p <> shift(p1, i)))))) ->
353 not_in_pset(p, pset_range_right(l, a))))))
355 axiom pset_range_right_elim:
356 (forall p:'a1 pointer.
358 (forall a:int [not_in_pset(p, pset_range_right(l, a))].
359 (not_in_pset(p, pset_range_right(l, a)) ->
360 (forall p1:'a1 pointer.
361 ((not not_in_pset(p1, l)) ->
362 (forall i:int. ((a <= i) -> (shift(p1, i) <> p)))))))))
364 axiom pset_acc_all_intro:
365 (forall p:'a1 pointer.
367 (forall m:('a1 pointer, 'a2) memory [not_in_pset(p, pset_acc_all(l,
369 ((forall p1:'a2 pointer.
370 ((not not_in_pset(p1, l)) ->
371 (forall i:int. (p <> acc(m, shift(p1, i)))))) ->
372 not_in_pset(p, pset_acc_all(l, m))))))
374 axiom pset_acc_all_elim:
375 (forall p:'a1 pointer.
377 (forall m:('a1 pointer, 'a2) memory [not_in_pset(p, pset_acc_all(l,
379 (not_in_pset(p, pset_acc_all(l, m)) ->
380 (forall p1:'a2 pointer.
381 ((not not_in_pset(p1, l)) ->
382 (forall i:int. (acc(m, shift(p1, i)) <> p))))))))
384 axiom pset_acc_range_intro:
385 (forall p:'a1 pointer.
387 (forall m:('a1 pointer, 'a2) memory.
389 (forall b:int [not_in_pset(p, pset_acc_range(l, m, a, b))].
390 ((forall p1:'a2 pointer.
391 ((not not_in_pset(p1, l)) ->
393 (((a <= i) and (i <= b)) -> (p <> acc(m, shift(p1, i))))))) ->
394 not_in_pset(p, pset_acc_range(l, m, a, b))))))))
396 axiom pset_acc_range_elim:
397 (forall p:'a1 pointer.
399 (forall m:('a1 pointer, 'a2) memory.
402 (not_in_pset(p, pset_acc_range(l, m, a, b)) ->
403 (forall p1:'a2 pointer.
404 ((not not_in_pset(p1, l)) ->
406 (((a <= i) and (i <= b)) -> (acc(m, shift(p1, i)) <> p)))))))))))
408 axiom pset_acc_range_left_intro:
409 (forall p:'a1 pointer.
411 (forall m:('a1 pointer, 'a2) memory.
412 (forall a:int [not_in_pset(p, pset_acc_range_left(l, m, a))].
413 ((forall p1:'a2 pointer.
414 ((not not_in_pset(p1, l)) ->
415 (forall i:int. ((i <= a) -> (p <> acc(m, shift(p1, i))))))) ->
416 not_in_pset(p, pset_acc_range_left(l, m, a)))))))
418 axiom pset_acc_range_left_elim:
419 (forall p:'a1 pointer.
421 (forall m:('a1 pointer, 'a2) memory.
422 (forall a:int [not_in_pset(p, pset_acc_range_left(l, m, a))].
423 (not_in_pset(p, pset_acc_range_left(l, m, a)) ->
424 (forall p1:'a2 pointer.
425 ((not not_in_pset(p1, l)) ->
426 (forall i:int. ((i <= a) -> (acc(m, shift(p1, i)) <> p))))))))))
428 axiom pset_acc_range_right_intro:
429 (forall p:'a1 pointer.
431 (forall m:('a1 pointer, 'a2) memory.
432 (forall a:int [not_in_pset(p, pset_acc_range_right(l, m, a))].
433 ((forall p1:'a2 pointer.
434 ((not not_in_pset(p1, l)) ->
435 (forall i:int. ((a <= i) -> (p <> acc(m, shift(p1, i))))))) ->
436 not_in_pset(p, pset_acc_range_right(l, m, a)))))))
438 axiom pset_acc_range_right_elim:
439 (forall p:'a1 pointer.
441 (forall m:('a1 pointer, 'a2) memory.
442 (forall a:int [not_in_pset(p, pset_acc_range_right(l, m, a))].
443 (not_in_pset(p, pset_acc_range_right(l, m, a)) ->
444 (forall p1:'a2 pointer.
445 ((not not_in_pset(p1, l)) ->
446 (forall i:int. ((a <= i) -> (acc(m, shift(p1, i)) <> p))))))))))
448 axiom not_assigns_trans:
449 (forall a:alloc_table.
451 (forall m1:('a2, 'a1) memory.
452 (forall m2:('a2, 'a1) memory.
453 (forall m3:('a2, 'a1) memory.
454 (not_assigns(a, m1, m2, l) ->
455 (not_assigns(a, m2, m3, l) -> not_assigns(a, m1, m3, l))))))))
457 axiom not_assigns_refl:
458 (forall a:alloc_table.
460 (forall m:('a2, 'a1) memory. not_assigns(a, m, m, l))))
462 predicate valid_acc(m1: ('a1 pointer, 'a2) memory) =
463 (forall p:'a2 pointer.
464 (forall a:alloc_table. (valid(a, p) -> valid(a, acc(m1, p)))))
466 predicate valid_acc_range(m1: ('a1 pointer, 'a2) memory, size: int) =
467 (forall p:'a2 pointer.
468 (forall a:alloc_table.
469 (valid(a, p) -> valid_range(a, acc(m1, p), 0, (size - 1)))))
471 axiom valid_acc_range_valid:
472 (forall m1:('a1 pointer, 'a2) memory.
474 (forall p:'a2 pointer.
475 (forall a:alloc_table.
476 (valid_acc_range(m1, size) -> (valid(a, p) -> valid(a, acc(m1, p))))))))
478 predicate separation1(m1: ('a1 pointer, 'a2) memory, m2: ('a1 pointer,
480 (forall p:'a2 pointer.
481 (forall a:alloc_table.
482 (valid(a, p) -> (base_addr(acc(m1, p)) <> base_addr(acc(m2, p))))))
484 predicate separation1_range1(m1: ('a1 pointer, 'a2) memory, m2: ('a1 pointer,
485 'a2) memory, size: int) =
486 (forall p:'a2 pointer.
487 (forall a:alloc_table.
491 (((0 <= i1) and (i1 < size)) ->
492 (((0 <= i2) and (i2 < size)) -> (base_addr(acc(m1, shift(p,
493 i1))) <> base_addr(acc(m2, shift(p, i2)))))))))))
495 predicate separation1_range(m: ('a1 pointer, 'a2) memory, size: int) =
496 (forall p:'a2 pointer.
497 (forall a:alloc_table.
500 (((0 <= i1) and (i1 < size)) -> (base_addr(acc(m, shift(p,
501 i1))) <> base_addr(acc(m, p))))))))
503 predicate separation2(m1: ('a1 pointer, 'a2) memory, m2: ('a1 pointer,
505 (forall p1:'a2 pointer.
506 (forall p2:'a2 pointer.
507 ((p1 <> p2) -> (base_addr(acc(m1, p1)) <> base_addr(acc(m2, p2))))))
509 predicate separation2_range1(m1: ('a1 pointer, 'a2) memory, m2: ('a1 pointer,
510 'a2) memory, size: int) =
511 (forall p:'a2 pointer.
512 (forall q:'a2 pointer.
513 (forall a:alloc_table.
515 (((0 <= i) and (i < size)) -> (base_addr(acc(m1, shift(p,
516 i))) <> base_addr(acc(m2, q))))))))
518 logic on_heap : alloc_table, 'a1 pointer -> prop
520 logic on_stack : alloc_table, 'a1 pointer -> prop
522 logic fresh : alloc_table, 'a1 pointer -> prop
524 axiom fresh_not_valid:
525 (forall a:alloc_table.
526 (forall p:'a1 pointer. (fresh(a, p) -> (not valid(a, p)))))
528 axiom fresh_not_valid_shift:
529 (forall a:alloc_table.
530 (forall p:'a1 pointer.
531 (fresh(a, p) -> (forall i:int. (not valid(a, shift(p, i)))))))
533 logic alloc_extends : alloc_table, alloc_table -> prop
535 axiom alloc_extends_valid:
536 (forall a1:alloc_table.
537 (forall a2:alloc_table.
538 (alloc_extends(a1, a2) ->
539 (forall q:'a1 pointer. (valid(a1, q) -> valid(a2, q))))))
541 axiom alloc_extends_valid_index:
542 (forall a1:alloc_table.
543 (forall a2:alloc_table.
544 (alloc_extends(a1, a2) ->
545 (forall q:'a1 pointer.
546 (forall i:int. (valid_index(a1, q, i) -> valid_index(a2, q, i)))))))
548 axiom alloc_extends_valid_range:
549 (forall a1:alloc_table.
550 (forall a2:alloc_table.
551 (alloc_extends(a1, a2) ->
552 (forall q:'a1 pointer.
555 (valid_range(a1, q, i, j) -> valid_range(a2, q, i, j))))))))
557 axiom alloc_extends_refl: (forall a:alloc_table. alloc_extends(a, a))
559 axiom alloc_extends_trans:
560 (forall a1:alloc_table.
561 (forall a2:alloc_table.
562 (forall a3:alloc_table [alloc_extends(a1, a2), alloc_extends(a2, a3)].
563 (alloc_extends(a1, a2) ->
564 (alloc_extends(a2, a3) -> alloc_extends(a1, a3))))))
566 logic free_stack : alloc_table, alloc_table, alloc_table -> prop
568 axiom free_stack_heap:
569 (forall a1:alloc_table.
570 (forall a2:alloc_table.
571 (forall a3:alloc_table.
572 (free_stack(a1, a2, a3) ->
573 (forall p:'a1 pointer.
574 (valid(a2, p) -> (on_heap(a2, p) -> valid(a3, p))))))))
576 axiom free_stack_stack:
577 (forall a1:alloc_table.
578 (forall a2:alloc_table.
579 (forall a3:alloc_table.
580 (free_stack(a1, a2, a3) ->
581 (forall p:'a1 pointer.
582 (valid(a1, p) -> (on_stack(a1, p) -> valid(a3, p))))))))
584 logic null : 'a1 pointer
586 axiom null_not_valid: (forall a:alloc_table. (not valid(a, null)))
637 forall alloc:alloc_table.
638 forall p_u_9:(null_6 pointer, u_9) memory.
639 forall ta_u_9:(null_6 pointer,
641 forall u:u_9 pointer.
643 (valid(alloc, acc(p_u_9, u)) and (base_addr(acc(ta_u_9,
644 u)) <> base_addr(acc(p_u_9, u))))) and
645 (("CADUCEUS_4": valid(alloc, u)) and
646 (("CADUCEUS_3": valid_acc_range(ta_u_9, 1)) and
647 ("CADUCEUS_2": valid_acc(ta_u_9))))) ->
651 forall alloc:alloc_table.
652 forall intM_null_6:(int, null_6) memory.
653 forall p_u_9:(null_6 pointer, u_9) memory.
654 forall ta_u_9:(null_6 pointer,
656 forall u:u_9 pointer.
658 (valid(alloc, acc(p_u_9, u)) and (base_addr(acc(ta_u_9,
659 u)) <> base_addr(acc(p_u_9, u))))) and
660 (("CADUCEUS_4": valid(alloc, u)) and
661 (("CADUCEUS_3": valid_acc_range(ta_u_9, 1)) and
662 ("CADUCEUS_2": valid_acc(ta_u_9))))) ->
664 forall result:null_6 pointer.
665 (result = acc(ta_u_9, u)) ->
666 forall result0:null_6 pointer.
667 (result0 = shift(result, 0)) ->
668 forall intM_null_6_0:(int,
670 (intM_null_6_0 = upd(intM_null_6, result0, 0)) ->
672 forall result1:null_6 pointer.
673 (result1 = acc(p_u_9, u)) ->
674 valid(alloc, result1)
677 forall alloc:alloc_table.
678 forall intM_null_6:(int, null_6) memory.
679 forall p_u_9:(null_6 pointer, u_9) memory.
680 forall ta_u_9:(null_6 pointer,
682 forall u:u_9 pointer.
684 (valid(alloc, acc(p_u_9, u)) and (base_addr(acc(ta_u_9,
685 u)) <> base_addr(acc(p_u_9, u))))) and
686 (("CADUCEUS_4": valid(alloc, u)) and
687 (("CADUCEUS_3": valid_acc_range(ta_u_9, 1)) and
688 ("CADUCEUS_2": valid_acc(ta_u_9))))) ->
690 forall result:null_6 pointer.
691 (result = acc(ta_u_9, u)) ->
692 forall result0:null_6 pointer.
693 (result0 = shift(result, 0)) ->
694 forall intM_null_6_0:(int,
696 (intM_null_6_0 = upd(intM_null_6, result0, 0)) ->
698 forall result1:null_6 pointer.
699 (result1 = acc(p_u_9, u)) ->
700 valid(alloc, result1) ->
701 forall intM_null_6_1:(int,
703 (intM_null_6_1 = upd(intM_null_6_0, result1, 5)) ->
704 ("CADUCEUS_6": ("CADUCEUS_6": (acc(intM_null_6_1, acc(ta_u_9, u)) = 0)))
707 forall alloc:alloc_table.
708 forall intM_null_6:(int, null_6) memory.
709 forall p_u_9:(null_6 pointer, u_9) memory.
710 forall ta_u_9:(null_6 pointer,
712 forall u:u_9 pointer.
714 (valid(alloc, acc(p_u_9, u)) and (base_addr(acc(ta_u_9,
715 u)) <> base_addr(acc(p_u_9, u))))) and
716 (("CADUCEUS_4": valid(alloc, u)) and
717 (("CADUCEUS_3": valid_acc_range(ta_u_9, 1)) and
718 ("CADUCEUS_2": valid_acc(ta_u_9))))) ->
720 forall result:null_6 pointer.
721 (result = acc(ta_u_9, u)) ->
722 forall result0:null_6 pointer.
723 (result0 = shift(result, 0)) ->
724 forall intM_null_6_0:(int,
726 (intM_null_6_0 = upd(intM_null_6, result0, 0)) ->
728 forall result1:null_6 pointer.
729 (result1 = acc(p_u_9, u)) ->
730 valid(alloc, result1) ->
731 forall intM_null_6_1:(int,
733 (intM_null_6_1 = upd(intM_null_6_0, result1, 5)) ->
735 ("CADUCEUS_5": not_assigns(alloc, intM_null_6, intM_null_6_1,
736 pset_union(pset_singleton(acc(ta_u_9, u)), pset_singleton(acc(p_u_9, u))))))