| sk .fs = mkfs(class, ty, fieldvar), type∃(str, ty), goodfieldandtype(r, sk, st), level⊆(str, str0), is_reftype(ty) → validrefval(str, st[r -- sk], ty, st) ⊦ ty = void_type, goodfieldandtype(r, sk, st) ∧ type∃(str0, sk .fs .type) ∧ sk .fs .type ≠ void_type ∧ (is_reftype(sk .fs .type) → validrefval(str0, st[r -- sk], sk .fs .type, st)) |
⊦ type∃(str, ty) ∧ ¬ type∃(str0, ty) → ¬ level⊆(str, str0)
sk .fs = mkfs(class, ty, fieldvar), level⊆(str, str0), goodfieldandtype(r, sk, st), type∃(str, ty), is_reftype(ty), type∃(str0, ty), validrefval(str, st[r -- sk], ty, st) ⊦ ty = void_type, validrefval(str0, st[r -- sk], ty, st)
[[CONCRETESIMPRULES : ([CSIMPSEQ : ⊦ mkfs(class, ty, fieldvar) .type = ty])]]