| sk = i ', st[r -- _type] .type = mkarraytype(ty), 0 ≤ i, i < n→i(# getarray(r, st)), is_indexkey(sk), is_array(r, st) ⊦ getarray(r, st) = [], (r -- sk ∈ addarray(r, ty, getarray(r, st), st) → r -- sk ∈ st) ∧ (addarray(r, ty, getarray(r, st), st)[r -- sk]) = st[r -- sk] |
⊦ r -- j ' ∈ addarray(r, ty, vals, st) ↔ r -- j ' ∈ st ∨ 0 ≤ j ∧ j < n→i(# vals)
⊦ 0 ≤ i ∧ i < n→i(# vals) → (addarray(r, ty, vals, st)[r -- i ']) = vals[i→n(i)]
st[r -- _type] .type = mkarraytype(ty), i < n→i(# getarray(r, st)), is_array(r, st), 0 ≤ i ⊦ getarray(r, st) = [], r -- i ' ∈ st ∧ (getarray(r, st)[i→n(i)]) = st[r -- i ']
[[CONCRETESIMPRULES : ([CSIMPFORWARD : ⊦ i ≤ j ∧ 0 ≤ i → 0 ≤ j], [CSIMPSEQ : ⊦ i ≤ 0 ∧ 0 ≤ j → i ≤ j], [CSIMPSEQ : ⊦ is_indexkey(i ')])]]