| st[r -- _type] = typeval(mkclasstype(class)), goodfieldsandtypes(r, instfields(class), st[r -- mkfs(class0, ty, fieldvar) ', val]), r -- mkfs(class0, ty, fieldvar) ' ∈ st, okval(st[r -- mkfs(class0, ty, fieldvar) '], ty), okval(val, ty), r ∈ st, r -- _type ∈ st ⊦ mkfs(class0, ty, fieldvar) ' = _type, r = jvmref, goodfieldsandtypes(r, instfields(class), st) |
⊦ goodfieldsandtypes(r, sks, st) ↔ (∀ sk. sk ∈ sks → goodfieldandtype(r, sk, st))
st[r -- _type] = typeval(mkclasstype(class)), goodfieldsandtypes(r, instfields(class), st[r -- mkfs(class0, ty, fieldvar) ', val]), r -- mkfs(class0, ty, fieldvar) ' ∈ st, okval(st[r -- mkfs(class0, ty, fieldvar) '], ty), okval(val, ty), r ∈ st, r -- _type ∈ st ⊦ mkfs(class0, ty, fieldvar) ' = _type, r = jvmref, ∀ sk. sk ∈ instfields(class) → goodfieldandtype(r, sk, st)
[[CONCRETESIMPRULES : ()], [EXTRATERMS : (st, instfields(class), r)]]