| r = jvmref ∨ r -- _type ∈ st ∧ is_typevalue(st[r -- _type]) ∧ st[r -- _type] .type ≤ mkclasstype(class0) ⊦ validfieldinits((mkfs(class, mkclasstype(class0), fieldvar) ' × refval(r)) ', st) |
⊦ validfieldinits((sk × val) ', st) ↔ is_fskey(sk) ∧ oktype(val, sk .fs .type, st) ∧ ( is_referencevalue(val) → val .refval = jvmref ∨ val .refval -- _type ∈ st ∧ is_typevalue(st[val .refval -- _type]) ∧ st[val .refval -- _type] .type ≤ sk .fs .type)
[[CONCRETESIMPRULES : ([CSIMPSEQ : ⊦ is_fskey(fs ')], [CSIMPSEQ : ⊦ fs ' .fs = fs], [CSIMPSEQ : ⊦ mkfs(class, ty, fieldvar) .type = ty], [CSIMPSEQ : ⊦ oktype (val, mkclasstype(class1), st) ↔ is_referencevalue(val)], [CSIMPSEQ : ⊦ is_referencevalue(refval(r))], [CSIMPSEQ : ⊦ refval(r) .refval = r])], [EXTRATERMS : (st, refval(r), mkfs(class, mkclasstype(class0), fieldvar) ')]]