| ∀ r0, st, r, sk0, val. r0 = st[r -- sks0] .refval ∨ sks0 = [] ∨ (st[r -- (sks0 + sk0 '), val][r0 -- sk0]) = st[r0 -- sk0] ⊦ r0 = st[r -- (sk ' + sks0)] .refval, (st[r -- ((sk ' + sks0) + sk0 '), val][r0 -- sk0]) = st[r0 -- sk0] |
⊦ sks ≠ [] → st[r -- (sk ' + sks), val] = st[st[r -- sk] .refval -- sks, val]
sks0 + sk0 ' ≠ [], ∀ r0, st, r, sk0, val. r0 = st[r -- sks0] .refval ∨ sks0 = [] ∨ (st[r -- (sks0 + sk0 '), val][r0 -- sk0]) = st[r0 -- sk0] ⊦ r0 = st[r -- (sk ' + sks0)] .refval, (st[st[r -- sk] .refval -- (sks0 + sk0 '), val][r0 -- sk0]) = st[r0 -- sk0]
[[CONCRETESIMPRULES : ([CSIMPSEQ : ⊦ ¬ sks + sks0 ≠ [] ↔ sks = [] ∧ sks0 = []], [CSIMPSEQ : ⊦ sk ' ≠ []], [CSIMPSEQ : ⊦ (sks + sks0) + sks1 = sks + sks0 + sks1])], [EXTRATERMS : (val, sks0 + sk0 ', sk, r, st)]]