| n0 % # ar = (i→n(i0) + n) % # ar, i→n(i0) + i→n(i1) = n0 + # ar, 0 < i1, n < i→n(i1), 0 ≤ i0 + i1, inv(mk(ar[n0 % # ar, 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) ⊦ i1 = 0, # ar = 1, ar[n0 % # ar] = a, # ar = 0 |
⊦ m < n → m % n = m
¬ n0 < # ar, n0 % # ar = (i→n(i0) + n) % # ar, i→n(i0) + i→n(i1) = n0 + # ar, 0 < i1, n < i→n(i1), 0 ≤ i0 + i1, inv(mk(ar[n0 % # ar, 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) ⊦ i1 = 0, # ar = 1, ar[n0 % # ar] = a, # ar = 0
n0 < # ar, n0 = (i→n(i0) + n) % # ar, i→n(i0) + i→n(i1) = n0 + # ar, 0 < i1, n < i→n(i1), 0 ≤ i0 + i1, inv(mk(ar[n0, 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) ⊦ i1 = 0, # ar = 1, ar[n0] = a, # ar = 0
[[CONCRETESIMPRULES : ()], [EXTRATERMS : (# ar, n0)]]