| exactarray(val, byte_type, i, st) ⊦ exactreftype(val, mkarraytype(byte_type), st[r0 -- j ', byteval(by)]) ∧ val .refval ≠ jvmref ∧ (val .refval -- _length) × intval(i) ∈ st[r0 -- j ', byteval(by)] ∧ is_arrayref(val .refval, i, st[r0 -- j ', byteval(by)]) |
⊦ val .refval = jvmref → ¬ exactarray(val, ty, i, st)
exactarray(val, byte_type, i, st) ⊦ val .refval = jvmref, is_arrayref(val .refval, i, st[r0 -- j ', byteval(by)]) ∧ st[val .refval -- _length] = intval(i) ∧ val .refval -- _length ∈ st ∧ exactreftype(val, mkarraytype(byte_type), st[r0 -- j ', byteval(by)])
[[CONCRETESIMPRULES : ([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], [CSIMPSEQ : ⊦ rk × val ∈ st ↔ ¬ ¬ (rk ∈ st ∧ st[rk] = val)])]]