| r -- mkfs(class, ty, fieldvar) ' ∈ st ∧ st ⊆ st0, r -- mkfs(class, ty, fieldvar) ' ∈ st, r ∈ st, type∃(str, ty), st ⊆ st0, okval(st[r -- mkfs(class, ty, fieldvar) '], ty), r -- mkfs(class, ty, fieldvar) ' ∈ st0, r ∈ st0, is_reftype(ty) → validrefval(str, st[r -- mkfs(class, ty, fieldvar) '], ty, st) ⊦ ty = void_type, (is_reftype(ty) → validrefval(str, st[r -- mkfs(class, ty, fieldvar) '], ty, st0)) ∧ okval(st[r -- mkfs(class, ty, fieldvar) '], ty) |
r -- mkfs(class, ty, fieldvar) ' ∈ st0, r ∈ st0, is_reftype(ty), r -- mkfs(class, ty, fieldvar) ' ∈ st, r ∈ st, type∃(str, ty), st ⊆ st0, is_referencevalue(st[r -- mkfs(class, ty, fieldvar) ']), validrefval(str, st[r -- mkfs(class, ty, fieldvar) '], ty, st) ⊦ ty = void_type, validrefval(str, st[r -- mkfs(class, ty, fieldvar) '], ty, st0)
[[CONCRETESIMPRULES : ([CSIMPSEQ : ⊦ is_reftype(ty) → ( okval(val, ty) ↔ is_referencevalue(val))])]]