| ∀ str, ty0, r, class, fis, st, r0. validrefs(str, acc, ty0, addobj(r, class, fis, st)) ∧ newref(r, st) ∧ r ∈ acc ∧ r0 = acc .first → junkref(str, r0, st) ⊦ validrefs(str, r1 + acc, ty0, addobj(r, class, fis, st)) ∧ newref(r, st) ∧ r ∈ r1 + acc ∧ r0 = (r1 + acc) .first → junkref(str, r0, st) |
newref(r, st), validrefs(str, r1 ' + acc, ty0, addobj(r, class, fis, st)), r ∈ acc, ∀ str0, ty, r0, class0, fis0, st0. validrefs(str0, acc, ty, addobj(r0, class0, fis0, st0)) ∧ newref(r0, st0) ∧ r0 ∈ acc → junkref(str0, acc .first, st0) ⊦ r = r1, r = jvmref, junkref(str, r1, st)
[[CONCRETESIMPRULES : ([CSIMPFORWARD : ⊦ newref(r, st) → r ≠ jvmref], [CSIMPSEQ : ⊦ newref(r, st) → junkref(str, r, st)], [CSIMPSEQ : ⊦ (r ' + refs) .first = r], [CSIMPSEQ : ⊦ (refs + refs0) + refs1 = refs + refs0 + refs1], [CSIMPSEQ : ⊦ r ∈ r0 ' ↔ r = r0], [CSIMPSEQ : ⊦ r ∈ refs + refs0 ↔ ¬ ¬ (r ∈ refs ∨ r ∈ refs0)], [CSIMPSEQ : ⊦ r + refs = r ' + refs])]]