| buf = mk(mkarray(2)[0, a][1, b], 2, 0, 2) ⊦ ⟪pop#(; buf, a0)⟫ ⟪assert#(a0 = a) ; push#(c; buf) ; pop#(; buf, a0) ; assert#(a0 = b) ; pop#(; buf, a0) ; assert#(a0 = c)⟫ true |
buf = mk(mkarray(2)[0, a][1, b], 2, 0, 2) ⊦ ⟪get#(buf .first, buf .data; a1)⟫ ⟪buf0 := buf .first:= ((buf .first + 1) % buf .size) ; buf0 := buf0 .len:= (buf0 .len - 1)⟫ ⟪assert#(a1 = a) ; push#(c; buf0) ; pop#(; buf0, a1) ; assert#(a1 = b) ; pop#(; buf0, a1) ; assert#(a1 = c)⟫ true
[[CONCRETESIMPRULES : ([CSIMPDECL : pop# (;buf, a) { get#(buf .first, buf .data; a) ; buf := buf .first:= ( ( buf .first + 1 ) % buf .size ) ; buf := buf .len:= (buf .len - 1) }])]]