| st[r0 -- sk] = (addobj(r, class1, fis, st0)[r0 -- sk]), newref(r, st), r0 -- sk ∈ st, r0 -- sk ∈ addobj(r, class1, fis, st0), r0 ∈ st, r0 ∈ addobj(r, class1, fis, st0), ∀ rk. rk ∈ st → rk ∈ addobj(r, class1, fis, st0) ∧ st[rk] = (addobj(r, class1, fis, st0)[rk]) ⊦ r = jvmref, r0 -- sk ∈ st0 ∧ (addobj(r, class1, fis, st0)[r0 -- sk]) = st0[r0 -- sk] |
⊦ r ≠ r0 → (addobj(r, class1, fis, st)[r0 -- sk]) = st[r0 -- sk]
r ≠ r0, st[r0 -- sk] = st0[r0 -- sk], newref(r, st), r0 -- sk ∈ st, r0 -- sk ∈ addobj(r, class1, fis, st0), r0 ∈ st, r0 ∈ addobj(r, class1, fis, st0), ∀ rk. rk ∈ st → rk ∈ addobj(r, class1, fis, st0) ∧ st[rk] = (addobj(r, class1, fis, st0)[rk]) ⊦ r = jvmref, r0 -- sk ∈ st0 ∧ st0[r0 -- sk] = st0[r0 -- sk]
[[CONCRETESIMPRULES : ([CSIMPSEQ : ⊦ r ∈ st → ¬ newref(r, st)])], [EXTRATERMS : (sk, r0, st0, fis, class1, r)]]