| (st[jvmref -- sk, val][r -- sks0]) = refval(r0), (st[jvmref -- sk, val][r -- sks]) = refval(r0), fits(r, sks, st), fits(r, sks0, st[jvmref -- sk, val]), ¬ fits(r, sks0, st) ∨ st[r -- sks] .refval = jvmref ∨ st[r -- sks] ≠ st[r -- sks0] ⊦ r0 = jvmref, sks = [], sks0 = [], sks0 = sks, junkref(str, r, st) |
⊦ ¬ junkref(str, r, st) → (fits(r, sks, st[jvmref -- sk, val]) ↔ fits(r, sks, st))
¬ junkref(str, r, st), (st[jvmref -- sk, val][r -- sks0]) = refval(r0), (st[jvmref -- sk, val][r -- sks]) = refval(r0), fits(r, sks, st), fits(r, sks0, st), ¬ fits(r, sks0, st) ∨ st[r -- sks] .refval = jvmref ∨ st[r -- sks] ≠ st[r -- sks0] ⊦ r0 = jvmref, sks = [], sks0 = [], sks0 = sks, junkref(str, r, st)
[[CONCRETESIMPRULES : ()], [EXTRATERMS : (str, r, st, sks0, sk, val)]]