| buf1 = mk(mkarray(2)[0, a][1, b], 2, 1, 1), ar0 = buf1 .data ∧ a1 = c ∧ i0 = 0 ⊦ ⟪if 0 ≤ i0 ∧ i0 < n→i(# ar0) then ar0 := ar0[i→n(i0), a1] else abort⟫ ⟪buf1 := buf1 .data:= ar0 .len:= ((buf1 .data:= ar0) .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), ar0 = buf1 .data ∧ a1 = c ∧ i0 = 0 ⊦ ⟪ar0 := ar0[i→n(i0), a1]⟫ ⟪buf1 := buf1 .data:= ar0 .len:= ((buf1 .data:= ar0) .len + 1)⟫ ⟪a2 := a ; pop#(; buf1, a2) ; assert#(a2 = b) ; pop#(; buf1, a2) ; assert#(a2 = c)⟫ true
[[CONCRETESIMPRULES : ([CSIMPSEQ : ⊦ mk(ar, i, i0, i1) .data = ar], [CSIMPSEQ : ⊦ # (ar[n, a]) = # ar], [CSIMPSEQ : ⊦ # mkarray(n) = n])]]