| ⊦ arraycomp(r1, i1, r2, i2, i, st0) ∧ r1 ≠ r2 → arraycomp(r1, i1, r2, i2, i + 1, st0[r2 -- (i2 + i) ', st0[r1 -- (i1 + i) ']]) |
⊦ arraycomp(r1, i1, r2, i2, j, st) ↔ (∀ i. 0 ≤ i ∧ i < j → st[r1 -- (i1 + i) '] = st[r2 -- (i2 + i) '])
i0 ≤ i, 0 ≤ i, 0 ≤ i0, ∀ i0. ¬ i0 < 0 ∧ ¬ i ≤ i0 → st0[r1 -- (i1 + i0) '] = st0[r2 -- (i2 + i0) '] ⊦ r1 = r2, st0[r1 -- (i1 + i0) '] = ((i0 = i ⊃ st0[r1 -- (i1 + i) ']; st0[r2 -- (i2 + i0) ']))
[[CONCRETESIMPRULES : ([CSIMPFORWARD : ⊦ i ≤ j ∧ 0 ≤ i → 0 ≤ j], [CSIMPSEQ : ⊦ i + j = i + i0 ↔ j = i0], [CSIMPSEQ : ⊦ i ' = i0 ' ↔ i = i0], [CSIMPSEQ : ⊦ r -- sk = r0 -- sk0 ↔ ¬ ¬ (r = r0 ∧ sk = sk0)], [CSIMPSEQ : ⊦ (st[rk0, val][rk]) = ((rk = rk0 ⊃ val; st[rk]))], [CSIMPSEQ : ⊦ r ≠ r0 → (st[r0 -- sk0, val][r -- sk]) = st[r -- sk]], [CSIMPSEQ : ⊦ i + j = j + i], [CSIMPSEQ : ⊦ i + j + i0 = (i + j) + i0], [CSIMPSEQ : ⊦ i < j + 1 ↔ i ≤ j], [CSIMPSEQ : ⊦ ¬ i < j ↔ j ≤ i], [CSIMPSEQ : ⊦ ¬ i ≤ j ↔ j < i])]]