| buf1 = mk(mkarray(2)[0, a][1, b], 2, 1, 1) ⊦ ⟪put#(0, c; buf1 .data)⟫ ⟪buf1 := buf1 .len:= (buf1 .len + 1)⟫ ⟪a2 := a ; pop#(; buf1, a2) ; assert#(a2 = b) ; pop#(; buf1, a2) ; assert#(a2 = c)⟫ true |
buf1 = mk(mkarray(2)[0, a][1, b], 2, 1, 1) ⊦ ⟪ar := buf1 .data, a0 := c, i := 0⟫ ⟪if 0 ≤ i ∧ i < n→i(# ar) then ar := ar[i→n(i), a0] else abort⟫ ⟪buf1 := buf1 .data:= ar .len:= ((buf1 .data:= ar) .len + 1)⟫ ⟪a2 := a ; pop#(; buf1, a2) ; assert#(a2 = b) ; pop#(; buf1, a2) ; assert#(a2 = c)⟫ true
[[CONCRETESIMPRULES : ([CSIMPDECL : put# (i, a; ar) { if 0 ≤ i ∧ i < n→i(# ar) then ar := ar[i→n(i), a] else abort }])]]