| tdname∃(str, class), mkfs(class, int_type, fieldvar) ' ∈ statfields(class), init⊆(str, st, st0), initdone(class, st0) ⊦ init⊆(str, st, st0[jvmref -- mkfs(class, int_type, fieldvar) ', intval(i)]), goodfieldandtype(jvmref, mkfs(class, int_type, fieldvar) ', st0[jvmref -- mkfs(class, int_type, fieldvar) ', intval(i)]) |
⊦ goodfieldandtype(r, sk, st) ↔ is_fskey(sk) ∧ r -- sk ∈ st ∧ okval(st[r -- sk], sk .fs .type)
[[CONCRETESIMPRULES : ([CSIMPSEQ : ⊦ is_fskey(fs ')], [CSIMPSEQ : ⊦ rk ∈ st[rk0, val] ↔ rk = rk0 ∨ rk ∈ st], [CSIMPSEQ : ⊦ (st[rk, val][rk]) = val], [CSIMPSEQ : ⊦ fs ' .fs = fs], [CSIMPSEQ : ⊦ mkfs(class, ty, fieldvar) .type = ty], [CSIMPSEQ : ⊦ okval(val, int_type) ↔ is_integervalue(val)], [CSIMPSEQ : ⊦ is_integervalue(intval(i))])], [EXTRATERMS : (st0[jvmref -- mkfs(class, int_type, fieldvar) ', intval(i)], mkfs(class, int_type, fieldvar) ', jvmref)]]