| st ⊆ st0, okarray(val, ty, i, st) ⊦ okreftype(val, mkarraytype(ty), st0) ∧ val .refval ≠ jvmref ∧ (val .refval -- _length) × intval(i) ∈ st0 ∧ 0 ≤ i ∧ is_arrayref(val .refval, i, st0) ∧ (∀ j. 0 ≤ j ∧ j < i → oktype(st0[val .refval -- j '], ty, st0)) |
⊦ oktype(val, ty, st) ↔ okval(val, ty)
⊦ val .refval = jvmref → ¬ okarray(val, ty, i, st)
st ⊆ st0, okarray(val, ty, i, st) ⊦ val .refval = jvmref, (0 ≤ j ∧ j < i → okval(st0[val .refval -- j '], ty)) ∧ is_arrayref(val .refval, i, st0) ∧ ¬ i < 0 ∧ st0[val .refval -- _length] = intval(i) ∧ val .refval -- _length ∈ st0 ∧ okreftype(val, mkarraytype(ty), st0)
[[CONCRETESIMPRULES : ([CSIMPSEQ : ⊦ ¬ i ≤ j ↔ j < i], [CSIMPSEQ : ⊦ rk × val ∈ st ↔ ¬ ¬ (rk ∈ st ∧ st[rk] = val)])]]