| fits(r, sk ' + sks0, st), fits(r, sk ' + sks0, st0), unchanged(str, r, st, st0), ∀ r, st0, st, str. fits(r, sks0, st0) ∧ fits(r, sks0, st) ∧ unchanged(str, r, st, st0) → st[r -- sks0] = st0[r -- sks0] ∨ junkref(str, r, st) ∨ junkref(str, r, st0) ⊦ sks0 = [], st[st[r -- sk] .refval -- sks0] = st0[r -- (sk ' + sks0)], junkref(str, r, st0), junkref(str, r, st) |
⊦ sks ≠ [] → st[r -- (sk ' + sks)] = st[st[r -- sk] .refval -- sks]
sks0 ≠ [], fits(r, sk ' + sks0, st), fits(r, sk ' + sks0, st0), unchanged(str, r, st, st0), ∀ r, st0, st, str. fits(r, sks0, st0) ∧ fits(r, sks0, st) ∧ unchanged(str, r, st, st0) → st[r -- sks0] = st0[r -- sks0] ∨ junkref(str, r, st) ∨ junkref(str, r, st0) ⊦ sks0 = [], st[st[r -- sk] .refval -- sks0] = st0[st0[r -- sk] .refval -- sks0], junkref(str, r, st0), junkref(str, r, st)
[[CONCRETESIMPRULES : ()], [EXTRATERMS : (sks0, sk, r, st0)]]