| 0 ≤ i ⊦ (r -- fs ' ∈ addarray(r, ty, i, st) ↔ r -- fs ' ∈ addarray(r, ty, mklist(initial_value(ty), i→n(i)), st)) ∧ (addarray(r, ty, i, st)[r -- fs ']) = (addarray(r, ty, mklist(initial_value(ty), i→n(i)), st)[r -- fs ']), fs ' ≠ _type ∧ fs ' ≠ _length |
⊦ r -- _type ∈ addarray(r, ty, i, st)
⊦ r -- _type ∈ addarray(r, ty, vals, st)
⊦ (addarray(r, ty, i, st)[r -- _type]) = typeval(mkarraytype(ty))
⊦ (addarray(r, ty, vals, st)[r -- _type]) = typeval(mkarraytype(ty))
⊦ r -- _length ∈ addarray(r, ty, i, st)
⊦ r -- _length ∈ addarray(r0, ty, vals, st) ↔ r = r0 ∨ r -- _length ∈ st
⊦ r -- _length ∈ addarray(r, ty, vals, st)
⊦ (addarray(r, ty, i, st)[r -- _length]) = intval(i)
⊦ (addarray(r, ty, vals, st)[r -- _length]) = intval(n→i(# vals))
[[CONCRETESIMPRULES : ([CSIMPSEQ : ⊦ typeval(ty) = typeval(ty0) ↔ ty = ty0], [CSIMPSEQ : ⊦ # mklist(val, n) = n], [CSIMPSEQ : ⊦ 0 ≤ i → n→i(i→n(i)) = i], [CSIMPSEQ : ⊦ intval(i) = intval(i0) ↔ i = i0])]]