| st[r -- _type] = typeval(mkclasstype(class)), r ∈ st, r -- _type ∈ st, is_obj(r, class, st) ⊦ r = jvmref, r ≠ jvmref ∧ (r -- _type) × typeval(mkclasstype(class)) ∈ putByteArray(bytes, r1, i, st) ∧ goodfieldsandtypes(r, instfields(class), putByteArray(bytes, r1, i, st)) |
⊦ is_obj(r, class, st) → (st[r -- _type] ≠ typeval(mkclasstype(class)) ↔ false)
st[r -- _type] = typeval(mkclasstype(class)), r ∈ st, r -- _type ∈ st, is_obj(r, class, st) ⊦ r = jvmref, goodfieldsandtypes(r, instfields(class), putByteArray(bytes, r1, i, st))
[[CONCRETESIMPRULES : ([CSIMPNAMEDSEQ : storearrays, , putBar-at-type, ⊦ (putByteArray (bytes, r, i, st) [r0 -- _type ] ) = st[r0 -- _type]], [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 : store, javastore, in-pair, ⊦ rk × val ∈ st ↔ ¬ ¬ (rk ∈ st ∧ st[rk] = val)])]]