| ⊦ (∀ j. 0 ≤ j ∧ j < n→i(# vals) → oktype(vals[i→n(j)], ty, st)) ∧ r ≠ jvmref → r ≠ jvmref ∧ r -- _type ∈ addarray(r, ty, vals, st) ∧ is_typevalue(addarray(r, ty, vals, st)[r -- _type]) ∧ is_arraytype((addarray(r, ty, vals, st)[r -- _type]) .type) ∧ okarray(r, (addarray(r, ty, vals, st)[r -- _type]) .type .type, addarray(r, ty, vals, st)) |
⊦ r -- _type ∈ addarray(r, ty, vals, st)
⊦ (addarray(r, ty, vals, st)[r -- _type]) = typeval(mkarraytype(ty))
∀ j. ¬ j < 0 ∧ ¬ n→i(# vals) ≤ j → oktype(vals[i→n(j)], ty, st) ⊦ r = jvmref, okarray(r, ty, addarray(r, ty, vals, st))
[[CONCRETESIMPRULES : ([CSIMPSEQ : ⊦ mkarraytype(ty) .type = ty], [CSIMPSEQ : ⊦ is_arraytype(mkarraytype(ty))], [CSIMPSEQ : ⊦ typeval(ty) .type = ty], [CSIMPSEQ : ⊦ is_typevalue(typeval(ty))], [CSIMPSEQ : ⊦ ¬ i < j ↔ j ≤ i], [CSIMPSEQ : ⊦ ¬ i ≤ j ↔ j < i])]]