| st[r -- _type] = typeval(mkclasstype(class)), r -- _type ∈ st, r ∈ st, sk ∈ instfields(class), goodfieldandtype(r, sk, st) ⊦ r = jvmref, goodfieldandtype(r, sk, putByteArray(bytes, r1, i, st)) |
⊦ goodfieldandtype(r, sk, st) ↔ is_fskey(sk) ∧ r -- sk ∈ st ∧ okval(st[r -- sk], sk .fs .type)
[[CONCRETESIMPRULES : ([CSIMPNAMEDSEQ : storekey, , test-01, ⊦ ¬ is_fskey(sk) ↔ is_indexkey(sk)], [CSIMPNAMEDSEQ : storearrays, , putBar-in, ⊦ rk ∈ putByteArray (bytes, r, i, st) ↔ rk ∈ st ∨ rk .ref = r ∧ is_indexkey(rk .key) ∧ i ≤ rk .key .index ∧ rk .key .index < i + n→i(# bytes)], [CSIMPNAMEDSEQ : refkey, , sel-01, ⊦ (r -- sk) .ref = r], [CSIMPNAMEDSEQ : refkey, , sel-02, ⊦ (r -- sk) .key = sk], [CSIMPNAMEDSEQ : storekey, , test, ⊦ ¬ is_indexkey(sk) ↔ is_fskey(sk)], [CSIMPNAMEDSEQ : int-abs, , lels-01, ⊦ ¬ i ≤ j ↔ j < i], [CSIMPNAMEDSEQ : int-abs, , lels, ⊦ ¬ i < j ↔ j ≤ i], [CSIMPNAMEDSEQ : okfuns, , good-field-index, ⊦ is_indexkey(sk) → ¬ goodfieldandtype (r, sk, st)], [CSIMPNAMEDSEQ : okfuns, , good-field-field, ⊦ is_fskey(sk) → ( goodfieldandtype (r, sk, st) ↔ r -- sk ∈ st ∧ okval (st[r -- sk], sk .fs .type))], [CSIMPNAMEDSEQ : storearrays, , putBar-at-fskey, ⊦ is_fskey(sk) → (putByteArray (bytes, r, i, st) [r0 -- sk ] ) = st[r0 -- sk]])], [EXTRATERMS : (putByteArray(bytes, r1, i, st), sk, r)]]