| buf .len = 1 + n→i(# x), a ' + x = tolist(buf, i→n(buf .len)), inv(buf) ⊦ 〈a1 := a0, ar := buf .data, i := buf .first〉 〈if 0 ≤ i ∧ i < n→i(# ar) then a1 := ar[i→n(i)] else abort〉 〈buf0 := buf .first:= ((buf .first + 1) % buf .size) ; buf0 := buf0 .len:= (buf0 .len - 1)〉 (inv(buf0) ∧ abs(buf0, x) ∧ a = a1) |
buf .len = 1 + n→i(# x), a ' + x = tolist(buf, i→n(buf .len)), inv(buf), a2 = a0 ∧ ar0 = buf .data ∧ i0 = buf .first ⊦ 〈if 0 ≤ i0 ∧ i0 < n→i(# ar0) then a2 := ar0[i→n(i0)] else abort〉 〈buf0 := buf .first:= ((buf .first + 1) % buf .size) ; buf0 := buf0 .len:= (buf0 .len - 1)〉 (inv(buf0) ∧ abs(buf0, x) ∧ a = a2)
[[CONCRETESIMPRULES : ()]]