| sk .fs = mkfs(class, ty, fieldvar), validref(str, st[r -- sk] .refval, ty, st), is_referencevalue(st[r -- sk]), type∃(str0, ty), is_reftype(ty), type∃(str, ty), goodfieldandtype(r, sk, st), level⊆(str, str0) ⊦ ty = void_type, validrefval(str0, st[r -- sk], ty, st) |
⊦ validrefval(str, refval(r), ty, st) ↔ validref(str, r, ty, st)
⊦ level⊆(str, str0) ∧ validref(str, r, ty, st) → (¬ validref(str0, r, ty, st) ↔ false)
[[CONCRETESIMPRULES : ([CSIMPSEQ : ⊦ is_referencevalue(refval(r))], [CSIMPELIM : ⊦ is_referencevalue(val) → ( r = val .refval ↔ val = refval(r))])], [EXTRATERMS : (st[r -- sk], r0)]]