| ⊦ # sks = 1, sks = [], r0 -- sk ∈ st[r -- sks, val] ↔ r0 -- sk ∈ st ∨ r0 = st[r -- sks .butlast] .refval ∧ sk = sks .last |
∀ r0, sk, st, r, val. # sks0 = 1 ∨ sks0 = [] ∨ (r0 -- sk ∈ st[r -- sks0, val] ↔ r0 -- sk ∈ st ∨ r0 = st[r -- sks0 .butlast] .refval ∧ sk = sks0 .last) ⊦ # (sk0 + sks0) = 1, sk0 + sks0 = [], r0 -- sk ∈ st[r -- (sk0 + sks0), val] ↔ r0 -- sk ∈ st ∨ r0 = st[r -- (sk0 + sks0) .butlast] .refval ∧ sk = (sk0 + sks0) .last
[[CONCRETESIMPRULES : ([CSIMPGEN : storekeys generated by [], +;])]]