| ¬ (# ar ≠ 0 ∧ # ar ≤ i→n(i0) + n), i→n(i0) + i→n(i1) = (i→n(i0) + n) % # ar + # ar, 0 ≤ (i0 + i1) % n→i(# ar), 0 ≤ i0, i1 ≤ n→i(# ar), i0 < n→i(# ar), inv(mk(ar, n→i(# ar), i0, i1)), i1 < n→i(# ar), inv(mk(ar[(i→n(i0) + n) % # ar, a], n→i(# ar), i0, i1 + 1)), 0 ≤ i0 + i1, n < i→n(i1), 0 < i1, (i→n(i0) + n) % # ar < # ar ⊦ ar[(i→n(i0) + n) % # ar] = a, # ar = 1, i1 = 0 |
i→n(i1) = # ar + n, inv(mk(ar[i→n(i0) + n, a], n→i(# ar), i0, i1 + 1)), i1 < n→i(# ar), inv(mk(ar, n→i(# ar), i0, i1)), i0 < n→i(# ar), i1 ≤ n→i(# ar), 0 ≤ i0, 0 ≤ (i0 + i1) % n→i(# ar), i→n(i0) + n < # ar, 0 < i1, n < i→n(i1), 0 ≤ i0 + i1 ⊦ ar[i→n(i0) + n] = a, i1 = 0, # ar = 1
[[CONCRETESIMPRULES : ([CSIMPSEQ : ⊦ m < m + n ↔ n ≠ 0], [CSIMPFORWARD : ⊦ m < n ∧ n = n0 → m < n0], [CSIMPSEQ : ⊦ m + n = m + n0 ↔ n = n0], [CSIMPSEQ : ⊦ m < n → m % n = m], [CSIMPSEQ : n ≠ 0 ⊦ m % n < n], [CSIMPSEQ : ⊦ ¬ m ≤ n ↔ n < m], [CSIMPSEQ : ⊦ (m + n0) + n1 = m + n0 + n1], [CSIMPSEQ : ⊦ m + n = n + m], [CSIMPSEQ : ⊦ m < n → n ≠ 0])]]