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