| ¬ (r ≠ r0 ∨ r = r0 ∧ is_fskey(sk) ∧ sk ≠ _length ∧ sk ≠ _type ∨ r = r0 ∧ is_indexkey(sk) ∧ (sk .index < 0 ∨ n→i(# vals) ≤ sk .index)) ⊦ (putArray(vals, r, 0, addarray(r, ty, n→i(# vals), st))[r0 -- sk]) = (addarray(r, ty, vals, st)[r0 -- sk]) |
⊦ (addarray(r, ty, i, st)[r -- _length]) = intval(i)
⊦ (addarray(r, ty, vals, st)[r -- _length]) = intval(n→i(# vals))
⊦ (addarray(r, ty, i, st)[r -- _type]) = typeval(mkarraytype(ty))
⊦ (addarray(r, ty, vals, st)[r -- _type]) = typeval(mkarraytype(ty))
0 ≤ sk .index, sk .index < n→i(# vals), is_indexkey(sk) ⊦ sk = _length, sk = _type, (putArray(vals, r0, 0, addarray(r0, ty, n→i(# vals), st))[r0 -- sk]) = (addarray(r0, ty, vals, st)[r0 -- sk]), vals = []
[[CONCRETESIMPRULES : ([CSIMPSEQ : ⊦ # vals = 0 ↔ vals = []], [CSIMPSEQ : ⊦ 0 < n ↔ n ≠ 0], [CSIMPSEQ : 0 ≤ i ⊦ ((* i)) < n→i(n) ↔ i→n(i) < n], [CSIMPFORWARD : ⊦ i ≤ j ∧ 0 ≤ i → 0 ≤ j], [CSIMPFORWARD : ⊦ i < j ∧ 0 ≤ i → 0 < j], [CSIMPSEQ : ⊦ ¬ i ≤ j ↔ j < i], [CSIMPSEQ : ⊦ ¬ i < j ↔ j ≤ i], [CSIMPSEQ : ⊦ is_indexkey(sk) → ¬ is_fskey(sk)], [CSIMPSEQ : ⊦ ¬ is_indexkey(sk) ↔ is_fskey(sk)], [CSIMPSEQ : ⊦ typeval(ty) = typeval(ty0) ↔ ty = ty0], [CSIMPSEQ : ⊦ (putArray(vals, r, i, st) [r0 -- _type ] ) = st[r0 -- _type]], [CSIMPSEQ : ⊦ intval(i) = intval(i0) ↔ i = i0], [CSIMPSEQ : ⊦ (putArray(vals, r, i, st) [r0 -- _length ] ) = st[r0 -- _length]], [CSIMPSEQ : ⊦ ¬ is_fskey(sk) ↔ is_indexkey(sk)])]]