| ¬ ( ¬ is_referencevalue(addarray(r, mkclasstype(class), vals, st)[r -- n→i(n) ']) ∧ is_reftype((addarray(r, mkclasstype(class), vals, st)[r -- _type]) .type .type) ∧ 0 ≤ n→i(n) ∧ n→i(n) < (addarray(r, mkclasstype(class), vals, st)[r -- _length]) .intval), is_array(str, r, addarray(r, mkclasstype(class), vals, st)), n < # vals ⊦ vals = [], is_referencevalue(vals[n]) |
⊦ (addarray(r, ty, vals, st)[r -- _type]) = typeval(mkarraytype(ty))
⊦ (addarray(r, ty, vals, st)[r -- _length]) = intval(n→i(# vals))
is_array(str, r, addarray(r, mkclasstype(class), vals, st)), n < # vals, is_referencevalue(addarray(r, mkclasstype(class), vals, st)[r -- n→i(n) ']) ⊦ vals = [], is_referencevalue(vals[n])
[[CONCRETESIMPRULES : ([CSIMPSEQ : ⊦ m < n → (n ≤ m ↔ false)], [CSIMPSEQ : ⊦ ¬ m < n ↔ n ≤ m], [CSIMPSEQ : ⊦ n→i(m) < n→i(n) ↔ m < n], [CSIMPSEQ : ⊦ intval(i) .intval = i], [CSIMPSEQ : ⊦ 0 ≤ n→i(n)], [CSIMPSEQ : ⊦ is_reftype(mkclasstype(class))], [CSIMPSEQ : ⊦ mkarraytype(ty) .type = ty], [CSIMPSEQ : ⊦ typeval(ty) .type = ty])]]