| fs = mkfs(class1, ty0, fieldvar0), st[r -- _type] = typeval(mkclasstype(class)), okval(st[r -- mkfs(class0, ty, fieldvar) ', val][r -- fs '], ty0), r -- fs ' ∈ st[r -- mkfs(class0, ty, fieldvar) ', val], r -- _type ∈ st, r ∈ st, okval(val, ty), okval(st[r -- mkfs(class0, ty, fieldvar) '], ty), r -- mkfs(class0, ty, fieldvar) ' ∈ st, fs ' ∈ instfields(class), ¬ okval(st[r -- fs '], ty0) ∨ ¬ r -- fs ' ∈ st, ∀ sk0. sk0 ∈ instfields(class) → is_fskey(sk0) ∧ r -- sk0 ∈ st[r -- mkfs(class0, ty, fieldvar) ', val] ∧ okval(st[r -- mkfs(class0, ty, fieldvar) ', val][r -- sk0], sk0 .fs .type) ⊦ r = jvmref, mkfs(class0, ty, fieldvar) ' = _type |
st[r -- _type] = typeval(mkclasstype(class)), okval(st[r -- mkfs(class0, ty, fieldvar) ', val][r -- mkfs(class1, ty0, fieldvar0) '], ty0), r -- mkfs(class1, ty0, fieldvar0) ' ∈ st[r -- mkfs(class0, ty, fieldvar) ', val], r -- _type ∈ st, r ∈ st, okval(val, ty), okval(st[r -- mkfs(class0, ty, fieldvar) '], ty), r -- mkfs(class0, ty, fieldvar) ' ∈ st, mkfs(class1, ty0, fieldvar0) ' ∈ instfields(class), ¬ okval(st[r -- mkfs(class1, ty0, fieldvar0) '], ty0) ∨ ¬ r -- mkfs(class1, ty0, fieldvar0) ' ∈ st, ∀ sk0. sk0 ∈ instfields(class) → is_fskey(sk0) ∧ r -- sk0 ∈ st[r -- mkfs(class0, ty, fieldvar) ', val] ∧ okval(st[r -- mkfs(class0, ty, fieldvar) ', val][r -- sk0], sk0 .fs .type) ⊦ r = jvmref, mkfs(class0, ty, fieldvar) ' = _type
[[CONCRETESIMPRULES : ()]]