| is_obj(r, st) ⊦ r ≠ jvmref ∧ r -- _type ∈ putByteArray(bytes, r1, i, st) ∧ is_typevalue(putByteArray(bytes, r1, i, st)[r -- _type]) ∧ is_classtype((putByteArray(bytes, r1, i, st)[r -- _type]) .type) ∧ is_obj(r, (putByteArray(bytes, r1, i, st)[r -- _type]) .type .class, putByteArray(bytes, r1, i, st)) |
⊦ ¬ is_obj(jvmref, st)
⊦ ¬ r -- _type ∈ st → ¬ is_obj(r, st)
⊦ ¬ is_typevalue(st[r -- _type]) → ¬ is_obj(r, st)
⊦ ¬ is_classtype(st[r -- _type] .type) → ¬ is_obj(r, st)
is_obj(r, st), is_classtype(st[r -- _type] .type), is_typevalue(st[r -- _type]), r -- _type ∈ st, r ∈ st ⊦ r = jvmref, is_obj(r, st[r -- _type] .type .class, putByteArray(bytes, r1, i, st))
[[CONCRETESIMPRULES : ([CSIMPNAMEDFORWARD : storefuns, , instore-01, ⊦ r -- sk ∈ st → r ∈ st], [CSIMPNAMEDSEQ : storearrays, , putBar-at-type, ⊦ (putByteArray (bytes, r, i, st) [r0 -- _type ] ) = st[r0 -- _type]], [CSIMPNAMEDSEQ : specialkeys, , type-06, ⊦ is_fskey(_type)], [CSIMPNAMEDSEQ : storekey, , test, ⊦ ¬ is_indexkey(sk) ↔ is_fskey(sk)], [CSIMPNAMEDSEQ : refkey, , sel-02, ⊦ (r -- sk) .key = sk], [CSIMPNAMEDSEQ : refkey, , sel-01, ⊦ (r -- sk) .ref = r], [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)])]]