| buf = mk(mkarray(2)[0, a][1, b][0, c], 2, 1, 2) ⊦ ⟪a := a0, ar := buf .data, i := buf .first⟫ ⟪if 0 ≤ i ∧ i < n→i(# ar) then a := ar[i→n(i)] else abort⟫ ⟪buf0 := buf .first:= ((buf .first + 1) % buf .size) ; buf0 := buf0 .len:= (buf0 .len - 1)⟫ ⟪assert#(a = b) ; pop#(; buf0, a) ; assert#(a = c)⟫ true |
buf = mk(mkarray(2)[0, a][1, b][0, c], 2, 1, 2), a1 = a0 ∧ ar0 = buf .data ∧ i0 = buf .first ⊦ ⟪if 0 ≤ i0 ∧ i0 < n→i(# ar0) then a1 := ar0[i→n(i0)] else abort⟫ ⟪buf0 := buf .first:= ((buf .first + 1) % buf .size) ; buf0 := buf0 .len:= (buf0 .len - 1)⟫ ⟪assert#(a1 = b) ; pop#(; buf0, a1) ; assert#(a1 = c)⟫ true
[[CONCRETESIMPRULES : ()]]