| 0 ≤ j, 0 ≤ i0, 0 ≤ i0 + j ⊦ (addarray(r, ty, i0 + j + 1, st)[r -- j ', val]) = addarray(r, ty, ((j = 0 ⊃ []; mklist(initial_value(ty), i→n(j)))) + val ' + mklist(initial_value(ty), i→n(i0)), st) |
⊦ st1 = st2 ↔ (∀ rk. (rk ∈ st1 ↔ rk ∈ st2) ∧ st1[rk] = st2[rk])
0 ≤ j, 0 ≤ i0, 0 ≤ i0 + j ⊦ ∀ rk. ( rk ∈ (addarray(r, ty, i0 + j + 1, st)[r -- j ', val]) ↔ rk ∈ addarray(r, ty, ((j = 0 ⊃ []; mklist(initial_value(ty), i→n(j)))) + val ' + mklist(initial_value(ty), i→n(i0)), st)) ∧ (addarray(r, ty, i0 + j + 1, st)[r -- j ', val][rk]) = (addarray(r, ty, ((j = 0 ⊃ []; mklist(initial_value(ty), i→n(j)))) + val ' + mklist(initial_value(ty), i→n(i0)), st)[rk])
[[CONCRETESIMPRULES : ()], [EXTRATERMS : (addarray (r, ty, ((j = 0 ⊃ []; mklist(initial_value(ty), i→n(j)))) + val ' + mklist(initial_value(ty), i→n(i0)), st), addarray(r, ty, i0 + j + 1, st)[r -- j ', val])]]