| st[r -- _type] = typeval(mkclasstype(class)), r ∈ st, r -- _type ∈ st, sk ∈ instfields(class), goodfieldandtype(r, sk, putByteArray(bytes, r1, i, st)) ⊦ r = jvmref, goodfieldandtype(r, sk, st) |
⊦ is_fskey(sk) → (goodfieldandtype(r, sk, st) ↔ r -- sk ∈ st ∧ oktype(st[r -- sk], sk .fs .type, st))
[[CONCRETESIMPRULES : ([CSIMPSEQ : ⊦ is_indexkey(sk) → ¬ goodfieldandtype(r, sk, st)], [CSIMPSEQ : ⊦ ¬ is_fskey(sk) ↔ is_indexkey(sk)], [CSIMPSEQ : ⊦ is_fskey(sk) → (putByteArray(bytes, r, i, st) [r0 -- sk ] ) = st[r0 -- sk]], [CSIMPSEQ : ⊦ oktype(val, ty, st) ↔ okval(val, ty)], [CSIMPSEQ : ⊦ is_fskey(sk) → ( goodfieldandtype(r, sk, st) ↔ r -- sk ∈ st ∧ okval (st[r -- sk], sk .fs .type))], [CSIMPSEQ : ⊦ 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)], [CSIMPSEQ : ⊦ (r -- sk) .ref = r], [CSIMPSEQ : ⊦ (r -- sk) .key = sk], [CSIMPSEQ : ⊦ ¬ rk ∈ st → st[rk] = ∅[rk]], [CSIMPSEQ : ⊦ ∅[rk] = noval], [CSIMPSEQ : ⊦ is_indexkey(sk) → ¬ is_fskey(sk)])], [EXTRATERMS : (putByteArray(bytes, r1, i, st), sk, r)]]