| initdone(class, st0), tdname∃(str, class), mkfs(class, ty, fieldvar) ' ∈ statfields(class), initdone(class, st0), validfield(str, jvmref, mkfs(class, ty, fieldvar) ', st0) ⊦ jvmref ∈ st, goodfieldandtype(jvmref, mkfs(class, ty, fieldvar) ', st ∪ st0) ∧ type∃(str, mkfs(class, ty, fieldvar) ' .fs .type) ∧ mkfs(class, ty, fieldvar) ' .fs .type ≠ void_type ∧ ( is_reftype(mkfs(class, ty, fieldvar) ' .fs .type) → validrefval(str, (st ∪ st0)[jvmref -- mkfs(class, ty, fieldvar) '], mkfs(class, ty, fieldvar) ' .fs .type, st ∪ st0)) |
tdname∃(str, class), mkfs(class, ty, fieldvar) ' ∈ statfields(class), initdone(class, st0), validfield(str, jvmref, mkfs(class, ty, fieldvar) ', st0) ⊦ ty = void_type, jvmref ∈ st, (is_reftype(ty) → validrefval(str, (st ∪ st0)[jvmref -- mkfs(class, ty, fieldvar) '], ty, st ∪ st0)) ∧ type∃(str, ty) ∧ goodfieldandtype(jvmref, mkfs(class, ty, fieldvar) ', st ∪ st0)
[[CONCRETESIMPRULES : ([CSIMPNAMEDSEQ : addfuns, , statfields-special, ⊦ ¬ mkfs (class0, void_type, fieldvar) ' ∈ statfields(class)], [CSIMPNAMEDSEQ : fieldspec, , sel-03, ⊦ mkfs(class, ty, fieldvar) .type = ty], [CSIMPNAMEDSEQ : storekey, , sel-05, ⊦ fs ' .fs = fs])]]