| ⊦ (∀ sk, r1. sk × refval(r1) ∈ fis → ¬ junkref(str, r1, st)) ∧ ¬ _type ∈ fis ∧ class∃(str, class) ∧ type∃(str, ty) ∧ mkclasstype(class) ≤ ty ∧ newref(r, st) ∧ validfieldinits(fis, st) ∧ fis .keys = instfields(class) ∧ ¬ is_abstract(class) ∧ class+∃(str, class) → validref(str, r, ty, addobj(r, class, fis, st)) |
fis .keys = instfields(class), newref(r, st), validfieldinits(fis, st), class+∃(str, class), class∃(str, class), type∃(str, ty), is_classtype(ty), class ≤ ty .class, ∀ sk, r1. sk × refval(r1) ∈ fis → ¬ junkref(str, r1, st) ⊦ r = jvmref, validref(str, r, ty, addobj(r, class, fis, st)), is_abstract(class)
[[CONCRETESIMPRULES : ([CSIMPFORWARD : ⊦ newref(r, st) → r ≠ jvmref], [CSIMPSEQ : ⊦ fis .keys = instfields(class) → ¬ _type ∈ fis], [CSIMPSEQ : ⊦ mkclasstype(class) ≤ ty ↔ is_classtype(ty) ∧ class ≤ ty .class])]]