| ∀ st0, r0, val0. (st0[r0 -- sks0, val0][r0 -- sks0]) = val0 ⊦ (st[r -- (sk ' + sks0), val][r -- (sk ' + sks0)]) = val, sks0 = [], dups(sks0), sk ∈ sks0 |
⊦ sks ≠ [] → st[r -- (sk ' + sks), val] = st[st[r -- sk] .refval -- sks, val]
sks0 ≠ [], ∀ st0, r0, val0. (st0[r0 -- sks0, val0][r0 -- sks0]) = val0 ⊦ (st[st[r -- sk] .refval -- sks0, val][r -- (sk ' + sks0)]) = val, sks0 = [], dups(sks0), sk ∈ sks0
[[CONCRETESIMPRULES : ()], [EXTRATERMS : (val, sks0, sk, r, st)]]