| ∀ n, A. (#oc(n, A, m) = 0 ↔ (∀ m1. m1 < m → A[m1] ≠ n)) ⊦ #oc(n, A, m +1) = 0 ↔ (∀ m1. m1 < m +1 → A[m1] ≠ n) |
∀ n, A. (#oc(n, A, m) = 0 ↔ (∀ m1. m1 < m → A[m1] ≠ n)) ⊦ #oc(n, A, m) + (A[m] = n ⊃ 1;0) = 0 ↔ (∀ m0. ¬ m < m0 → A[m0] ≠ n)
[Concretesimprules((Csimpnamedseq(nat-basic2,,s, ⊦ m < n + 1 ↔ ¬ n < m) Csimpnamedseq(nat-basic2,,c, ⊦ m + n = n + m) Csimpnamedseq(nat-basic2,,a, ⊦ (m + n0) + n1 = m + n0 + n1) Csimpnamedseq(array-perm,array_of_nat,numoc-rec, ⊦ #oc(n0, A, n + 1) = #oc(n0, A, n) + (A[n] = n0 ⊃ 1;0)) Csimpnamedseq(nat-basic2,,succ, ⊦ m +1 = m + 1)))]