| st[jvmref -- mkfs(class, ty, fieldvar) '] = refval(r), jvmref -- mkfs(class, ty, fieldvar) ' ∈ st, initdone(class, st), tdname∃(str0, class), mkfs(class, ty, fieldvar) ' ∈ statfields(class), tdname∃(str, class), type∃(str, ty), same-subclasses-contains(ty .jtelemtype .class, str, str0), is_reftype(ty), ¬ has_classtype(ty) ∨ tdname+∃(str0, ty .jtclass), jvmref ∈ st, validref(str0, r, ty, st) ⊦ ty = void_type, validref(str, r, ty, st), tdname+∃(str0, ty .jtelemtype .class) |
st[jvmref -- mkfs(class, ty, fieldvar) '] = refval(r), jvmref -- mkfs(class, ty, fieldvar) ' ∈ st, initdone(class, st), tdname∃(str0, class), mkfs(class, ty, fieldvar) ' ∈ statfields(class), tdname∃(str, class), same-subclasses-contains(ty .jtelemtype .class, str, str0), is_reftype(ty), jvmref ∈ st, validref(str0, r, ty, st) ⊦ ty = void_type, validref(str, r, ty, st), tdname+∃(str0, ty .jtelemtype .class), has_classtype(ty)
[[CONCRETESIMPRULES : ([CSIMPSEQ : ⊦ ¬ has_classtype(ty) → type∃(str, ty)], [CSIMPSEQ : ⊦ ty .jtclass = ty .jtelemtype .class])]]