| (r2 ' + refs1) .last = (r3 ' + refs0) .last, st ⊆ st1, newref(r, st), validrefs(str, r2 ' + refs1, st1[r2 -- _type] .type, st1), validrefs(str, r3 ' + refs0, st1[r3 -- _type] .type, st1), ∀ r0. path∃(str, r, r0, st1) → newref(r0, st) ∨ r0 = jvmref ⊦ r2 = r3, r = jvmref, (r3 ' + refs0) .last = jvmref, junkref(str, r1, st), r2 ≠ r1 ∧ r2 ≠ r, r3 ≠ r1 ∧ r3 ≠ r |
(r2 ' + refs1) .last = (r3 ' + refs0) .last, st ⊆ st1, newref(r, st), validrefs(str, r2 ' + refs1, st1[r2 -- _type] .type, st1), validrefs(str, r3 ' + refs0, st1[r3 -- _type] .type, st1), ∀ r0. path∃(str, r, r0, st1) → newref(r0, st) ∨ r0 = jvmref ⊦ r2 ≠ r1, r2 = r3, r = jvmref, (r3 ' + refs0) .last = jvmref, junkref(str, r1, st), r3 ≠ r1 ∧ r3 ≠ r
(r2 ' + refs1) .last = (r3 ' + refs0) .last, st ⊆ st1, newref(r, st), validrefs(str, r2 ' + refs1, st1[r2 -- _type] .type, st1), validrefs(str, r3 ' + refs0, st1[r3 -- _type] .type, st1), ∀ r0. path∃(str, r, r0, st1) → newref(r0, st) ∨ r0 = jvmref ⊦ r2 ≠ r, r2 = r3, r = jvmref, (r3 ' + refs0) .last = jvmref, junkref(str, r1, st), r3 ≠ r1 ∧ r3 ≠ r
[[CONCRETESIMPRULES : ()]]