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