| fis .keys = statfields(class0), tdname∃(str, class0), initdone(class0, addclass(class0, fis, st)), okfieldinits(class0, fis), compatrefs(str, st), compatmode(str, st), mkfs(class0, ty, fieldvar) ' ∈ statfields(class0), mkfs(class0, ty, fieldvar) ' ∈ fis, (class∃(str, class0) ∨ interface∃(str, class0)) ∧ initdone(class0, st) → compatfields(str, jvmref, statfields(class0), st) ⊦ compat(str, initial_value(ty), ty, addclass(class0, fis, st)) |
⊦ compat(str, val, ty, st) ↔ okval(val, ty) ∧ ( is_referencevalue(val) ∧ val .refval ≠ jvmref → val .refval -- _type ∈ st ∧ is_typevalue(st[val .refval -- _type]) ∧ is_reftype(st[val .refval -- _type] .type) ∧ (has_classtype(st[val .refval -- _type] .type) → tdname+∃(str, st[val .refval -- _type] .type .jtelemtype .class)) ∧ (is_classtype(st[val .refval -- _type] .type) → class+∃(str, st[val .refval -- _type] .type .class)) ∧ asgcomp(str, val, ty, st))
[[CONCRETESIMPRULES : ([CSIMPSEQ : ⊦ okval(initial_value(ty), ty) ↔ ty ≠ abstract_type], [CSIMPSEQ : ⊦ is_referencevalue (initial_value(ty)) → initial_value(ty) = refval(jvmref)], [CSIMPSEQ : ⊦ refval(r) .refval = r], [CSIMPSEQ : ⊦ ¬ mkfs (class0, abstract_type, fieldvar) ' ∈ statfields(class)])], [EXTRATERMS : (addclass(class0, fis, st), ty, initial_value(ty), str)]]