| 0 ≤ i, 0 ≤ i0 + n→i(# vals), 0 ≤ i0 + i + n→i(# vals), 0 < i0 ⊦ rk = r -- _length, ( rk ∈ putArray(vals, r, i, addarray(r, ty, i0 + i + n→i(# vals), st)) ↔ rk ∈ addarray(r, ty, mklist(initial_value(ty), i→n(i)) + vals + mklist(initial_value(ty), i→n(i0)), st)) ∧ (putArray(vals, r, i, addarray(r, ty, i0 + i + n→i(# vals), st))[rk]) = (addarray(r, ty, mklist(initial_value(ty), i→n(i)) + vals + mklist(initial_value(ty), i→n(i0)), st)[rk]) |
⊦ 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)
0 ≤ i, 0 ≤ i0 + n→i(# vals), 0 ≤ i0 + i + n→i(# vals), 0 < i0 ⊦ rk = r -- _length, ( rk ∈ addarray(r, ty, i0 + i + n→i(# vals), st) ∨ rk .ref = r ∧ is_indexkey(rk .key) ∧ i ≤ rk .key .index ∧ rk .key .index < i + n→i(# vals) ↔ rk ∈ addarray(r, ty, mklist(initial_value(ty), i→n(i)) + vals + mklist(initial_value(ty), i→n(i0)), st)) ∧ (putArray(vals, r, i, addarray(r, ty, i0 + i + n→i(# vals), st))[rk]) = (addarray(r, ty, mklist(initial_value(ty), i→n(i)) + vals + mklist(initial_value(ty), i→n(i0)), st)[rk])
[[CONCRETESIMPRULES : ()], [EXTRATERMS : (addarray(r, ty, i0 + i + n→i(# vals), st), i, r, vals, rk)]]