| ∀ A, n. nodups(A) ∧ m0 < # A → (n < m0 → #oc(A[n], A, m0) = 1) ∧ (m0 ≤ n ∧ n < # A → #oc(A[n], A, m0) = 0), nodups(A), m0 +1 < # A ⊦ (n < m0 +1 → #oc(A[n], A, m0 +1) = 1) ∧ (m0 +1 ≤ n ∧ n < # A → #oc(A[n], A, m0 +1) = 0) |
nodups(A), m0 + 1 < # A, ∀ A, n. nodups(A) ∧ m0 < # A → (n < m0 → #oc(A[n], A, m0) = 1) ∧ (m0 ≤ n ∧ n < # A → #oc(A[n], A, m0) = 0) ⊦ (¬ m0 < n → #oc(A[n], A, m0) + (A[m0] = A[n] ⊃ 1;0) = 1) ∧ (m0 < n ∧ n < # A → #oc(A[n], A, m0) + (A[m0] = A[n] ⊃ 1;0) = 0)
[Concretesimprules((Csimpnamedseq(nat,,succ-01, ⊦ m + 1 ≤ n ↔ m < n) 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,,c, ⊦ m + n = n + m) Csimpnamedseq(nat-basic2,,a, ⊦ (m + n0) + n1 = m + n0 + n1) Csimpnamedseq(nat-basic2,,s, ⊦ m < n + 1 ↔ ¬ n < m) Csimpnamedseq(nat-basic2,,succ, ⊦ m +1 = m + 1)))]