| exactarray(r, byte_type, st), r ∈ st ⊦ r = jvmref, exactreftype(refval(r), mkarraytype(byte_type), st[r0 -- i ', byteval(by)]) ∧ r ≠ jvmref ∧ r -- _length ∈ st[r0 -- i ', byteval(by)] ∧ is_integervalue(st[r0 -- i ', byteval(by)][r -- _length]) ∧ 0 ≤ (st[r0 -- i ', byteval(by)][r -- _length]) .intval ∧ is_arrayref(r, (st[r0 -- i ', byteval(by)][r -- _length]) .intval, st[r0 -- i ', byteval(by)]) |
⊦ exactarray(r, ty, st) → ¬ st[r -- _length] .intval < 0
exactarray(r, byte_type, st), r ∈ st ⊦ r = jvmref, exactreftype(refval(r), mkarraytype(byte_type), st[r0 -- i ', byteval(by)]) ∧ r -- _length ∈ st ∧ is_integervalue(st[r -- _length]) ∧ is_arrayref(r, st[r -- _length] .intval, st[r0 -- i ', byteval(by)])
[[CONCRETESIMPRULES : ([CSIMPSEQ : ⊦ ¬ i ≤ j ↔ j < i], [CSIMPSEQ : ⊦ (st[r -- i ', val][r0 -- _length] ) = st[r0 -- _length]], [CSIMPSEQ : ⊦ _length ≠ i '], [CSIMPSEQ : ⊦ r -- sk = r0 -- sk0 ↔ ¬ ¬ (r = r0 ∧ sk = sk0)], [CSIMPSEQ : ⊦ rk ∈ st[rk0, val] ↔ rk = rk0 ∨ rk ∈ st])]]