| 0 ≤ n→i(# vals) + i, 0 ≤ j, 0 ≤ i, i ≤ j, j ≤ n→i(# vals) + i ⊦ r -- sk ∈ putArray(vals, r, i, addarray(r, ty, j, st)) ↔ r -- sk ∈ addarray(r, ty, mklist(initial_value(ty), i→n(i)) + vals, st), sk = _length, ¬ is_indexkey(sk) ∧ sk ≠ _type |
⊦ r -- _type ∈ addarray(r, ty, vals, st)
⊦ r -- _type ∈ addarray(r, ty, i, st)
0 ≤ n→i(# vals) + i, 0 ≤ j, 0 ≤ i, i ≤ j, j ≤ n→i(# vals) + i, is_indexkey(sk) ⊦ r -- sk ∈ putArray(vals, r, i, addarray(r, ty, j, st)) ↔ r -- sk ∈ addarray(r, ty, mklist(initial_value(ty), i→n(i)) + vals, st), sk = _length, sk = _type
[[CONCRETESIMPRULES : ([CSIMPSEQ : ⊦ rk ∈ putArray(vals, r, i, st) ↔ rk ∈ st ∨ rk .ref = r ∧ is_indexkey(rk .key) ∧ i ≤ rk .key .index ∧ rk .key .index < i + n→i(# vals)], [CSIMPSEQ : ⊦ _type ≠ _length])]]