| okval(val, ty), sk ∈ statfields(class0), initdone(class0, st), tdname∃(str, class0), validstatfield(str, sk, st), r ≠ jvmref ∨ class ≠ class0 ∨ ty ≠ void_type ∨ fieldvar ≠ `initstate' .field ⊦ mkfs(class, ty, fieldvar) ' = _length, r -- mkfs(class, ty, fieldvar) ' = _uninit, validstatfield(str, sk, st[r -- mkfs(class, ty, fieldvar) ', val]), is_referencevalue(val) |
⊦ ¬ is_referencevalue(val) ∧ validstatfield(str, sk0, st) ∧ is_fskey(sk) ∧ oktype(val, sk .fs .type, st) ∧ sk .fs .type ≠ void_type ∧ sk ≠ _length → validstatfield(str, sk0, st[r -- sk, val])
[[CONCRETESIMPRULES : ([CSIMPNAMEDSEQ : storekey, , test-05, ⊦ is_fskey(fs ')], [CSIMPNAMEDSEQ : storekey, , sel-05, ⊦ fs ' .fs = fs], [CSIMPNAMEDSEQ : fieldspec, , sel-03, ⊦ mkfs(class, ty, fieldvar) .type = ty], [CSIMPNAMEDSEQ : okfuns, , oktype-okval, ⊦ oktype(val, ty, st) ↔ okval(val, ty)], [CSIMPNAMEDSEQ : valuefuns, , okval-void, ⊦ okval(val, void_type) ↔ is_referencevalue(val)])], [EXTRATERMS : (val, mkfs(class, ty, fieldvar) ', r, st, sk, str)]]