| fis .keys = instfields(class), junkref(str, r, addobj(r, class, fis, st)), newref(r, st), class+∃(str, class), validfieldinits(fis, st), ∀ sk, r1. sk × refval(r1) ∈ fis → ¬ junkref(str, r1, st) ⊦ r = jvmref, is_abstract(class) |
⊦ junkref(str, r, st) ↔ (∃ refs. refs ≠ [] ∧ refs .first = r ∧ junkrefs(str, refs, st[r -- _type] .type, st))
fis .keys = instfields(class), ∃ refs. refs ≠ [] ∧ refs .first = r ∧ junkrefs(str, refs, (addobj(r, class, fis, st)[r -- _type]) .type, addobj(r, class, fis, st)), newref(r, st), class+∃(str, class), validfieldinits(fis, st), ∀ sk, r1. sk × refval(r1) ∈ fis → ¬ junkref(str, r1, st) ⊦ r = jvmref, is_abstract(class)
[[CONCRETESIMPRULES : ()], [EXTRATERMS : (addobj(r, class, fis, st), r, str)]]