| st[r -- _type] = typeval(mkclasstype(class0)), goodfieldsandtypes(r, instfields(class0), st), okval(val, ty), r -- _type ∈ st, r ∈ st ⊦ ty = void_type, r = jvmref, r ≠ jvmref ∧ (r -- _type) × typeval(mkclasstype(class0)) ∈ st[r1 -- mkfs(class, ty, fieldvar) ', val] ∧ goodfieldsandtypes(r, instfields(class0), st[r1 -- mkfs(class, ty, fieldvar) ', val]) |
st[r -- _type] = typeval(mkclasstype(class0)), goodfieldsandtypes(r, instfields(class0), st), okval(val, ty), r -- _type ∈ st, r ∈ st ⊦ ty = void_type, r = jvmref, goodfieldsandtypes(r, instfields(class0), st[r1 -- mkfs(class, ty, fieldvar) ', val])
[[CONCRETESIMPRULES : ([CSIMPSEQ : ⊦ ty ≠ void_type → (st[ r -- mkfs (class, ty, fieldvar) ', val] [r0 -- _type ] ) = st[r0 -- _type]], [CSIMPSEQ : ⊦ ty ≠ void_type → mkfs(class, ty, fieldvar) ' ≠ _type], [CSIMPSEQ : ⊦ r -- sk = r0 -- sk0 ↔ ¬ ¬ (r = r0 ∧ sk = sk0)], [CSIMPSEQ : ⊦ rk ∈ st[rk0, val] ↔ rk = rk0 ∨ rk ∈ st], [CSIMPSEQ : ⊦ rk × val ∈ st ↔ ¬ ¬ (rk ∈ st ∧ st[rk] = val)])]]