| m ≤ n, n ≤ # a, ∀ n0. m ≤ n0 ∧ n0 < n ∧ even(n0) → p(a[n0]) ⊦ countevn(a, m, n, p) = (even(m) ⊃ (n + 1 - m) / 2;(n - m) / 2) |
countevn(a, m, n, p) ≠ (even(m) ⊃ (n + 1 - m) / 2;(n - m) / 2), n ≤ # a, m ≤ n, ∀ n0. m ≤ n0 ∧ n0 < n ∧ even(n0) → p(a[n0]) ⊦
| countevn(a, m, n, p) ≠ (even(m) ⊃ (n + 1 - m) / 2;(n - m) / 2), n ≤ # a, m ≤ n, ∀ n0. m ≤ n0 ∧ n0 < n ∧ even(n0) → p(a[n0]) ⊦ |
countevn(a, m, n, p) ≠ (even(m) ⊃ ((n - m) + 1) / 2;(n - m) / 2), m ≤ n, n ≤ # a, m ≤ # a, ∀ n0. m ≤ n0 ∧ n0 < n ∧ even(n0) → p(a[n0]) ⊦
Used simplifier rules: let: ⊦ n ≤ n0 ∧ n0 ≤ n1 → n ≤ n1; (forward) from specification nat c: ⊦ m + n = n + m; from specification nat-basic a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic ⊦ n ≤ m → m + n0 - n = (m - n) + n0; (s)
| countevn(a, m, n, p) ≠ (even(m) ⊃ ((n - m) + 1) / 2;(n - m) / 2), m ≤ n, n ≤ # a, m ≤ # a, ∀ n0. m ≤ n0 ∧ n0 < n ∧ even(n0) → p(a[n0]) ⊦ |
countevn(a, m, n0 +1, p) ≠ (even(m) ⊃ ((n0 +1 - m) + 1) / 2;(n0 +1 - m) / 2), m ≤ # a, n0 +1 ≤ # a, m ≤ n0 +1, ∀ n1. m ≤ n1 ∧ n1 < n0 +1 ∧ even(n1) → p(a[n1]), ∀ a, m, p. ¬ ( countevn(a, m, n0, p) ≠ (even(m) ⊃ ((n0 - m) + 1) / 2;(n0 - m) / 2) ∧ m ≤ n0 ∧ n0 ≤ # a ∧ m ≤ # a ∧ (∀ n1. m ≤ n1 ∧ n1 < n0 ∧ even(n1) → p(a[n1]))) ⊦
Used simplifier rules: countevn-base: m ≤ # a ⊦ countevn(a, m, m, p) = 0; nat freely generated by 0, +1;; ⊦ m ≤ 0 ↔ m = 0; (s) ⊦ ¬ n < 0; (s) ⊦ 0 ≤ m; (s) ⊦ even(0); (s) a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic c: ⊦ m + n = n + m; from specification nat-basic
| countevn(a, m, n0 +1, p) ≠ (even(m) ⊃ ((n0 +1 - m) + 1) / 2;(n0 +1 - m) / 2), m ≤ # a, n0 +1 ≤ # a, m ≤ n0 +1, ∀ n1. m ≤ n1 ∧ n1 < n0 +1 ∧ even(n1) → p(a[n1]), ∀ a, m, p. ¬ ( countevn(a, m, n0, p) ≠ (even(m) ⊃ ((n0 - m) + 1) / 2;(n0 - m) / 2) ∧ m ≤ n0 ∧ n0 ≤ # a ∧ m ≤ # a ∧ (∀ n1. m ≤ n1 ∧ n1 < n0 ∧ even(n1) → p(a[n1]))) ⊦ |
a ≠ [], countevn(a, m, n0 + 1, p) ≠ (even(m) ⊃ ((n0 + 1 - m) + 1) / 2;(n0 + 1 - m) / 2), n0 < # a, m ≤ n0 + 1, m ≤ # a, ∀ n1. m ≤ n1 ∧ ¬ n0 < n1 ∧ even(n1) → p(a[n1]), ∀ a0, m0, p0. countevn(a0, m0, n0, p0) = (even(m0) ⊃ ((n0 - m0) + 1) / 2;(n0 - m0) / 2) ∨ ¬ m0 ≤ n0 ∨ ¬ n0 ≤ # a0 ∨ ¬ m0 ≤ # a0 ∨ ¬(∀ n1. m0 ≤ n1 ∧ n1 < n0 ∧ even(n1) → p0(a0[n1])) ⊦
Used simplifier rules: ⊦ # x = 0 ↔ x = []; (s) f: ⊦ m < n → n ≠ 0; (forward) from specification nat-basic c: ⊦ m + n = n + m; from specification nat-basic a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic ⊦ m < n + 1 ↔ ¬ n < m; (s) ⊦ m +1 = m + 1; (s) ⊦ m + 1 ≤ n ↔ m < n; (s)
| a ≠ [], countevn(a, m, n0 + 1, p) ≠ (even(m) ⊃ ((n0 + 1 - m) + 1) / 2;(n0 + 1 - m) / 2), n0 < # a, m ≤ n0 + 1, m ≤ # a, ∀ n1. m ≤ n1 ∧ ¬ n0 < n1 ∧ even(n1) → p(a[n1]), ∀ a0, m0, p0. countevn(a0, m0, n0, p0) = (even(m0) ⊃ ((n0 - m0) + 1) / 2;(n0 - m0) / 2) ∨ ¬ m0 ≤ n0 ∨ ¬ n0 ≤ # a0 ∨ ¬ m0 ≤ # a0 ∨ ¬(∀ n1. m0 ≤ n1 ∧ n1 < n0 ∧ even(n1) → p0(a0[n1])) ⊦ |
m ≤ n, n ≤ # a ⊦ countevn(a, m, n + 1, p) = countevn(a, m, n, p) + (even(n) ∧ p(a[n]) ⊃ 1;0)
countevn(a, m, n0, p) + (even(n0) ∧ p(a[n0]) ⊃ 1;0) ≠ (even(m) ⊃ ((n0 + 1 - m) + 1) / 2;(n0 + 1 - m) / 2), a ≠ [], n0 < # a, m ≤ # a, m ≤ n0 + 1, m ≤ n0, n0 ≤ # a, ∀ a0, m0, p0. countevn(a0, m0, n0, p0) = (even(m0) ⊃ ((n0 - m0) + 1) / 2;(n0 - m0) / 2) ∨ ¬ m0 ≤ n0 ∨ ¬ n0 ≤ # a0 ∨ ¬ m0 ≤ # a0 ∨ ¬(∀ n1. m0 ≤ n1 ∧ n1 < n0 ∧ even(n1) → p0(a0[n1])), ∀ n1. m ≤ n1 ∧ ¬ n0 < n1 ∧ even(n1) → p(a[n1]) ⊦
Used simplifier rules: countevn-base: m ≤ # a ⊦ countevn(a, m, m, p) = 0; ⊦ m < n → m ≤ n; (s) ⊦ m ≤ n ↔ ¬ n < m; (ss) ⊦ m < n → (n ≤ m + 1 ↔ n = m + 1); (s) eqle-one: ⊦ m = n + 1 ∧ n < n0 → m ≤ n0; (forward) from specification nat f: ⊦ m < n → n ≠ 0; (forward) from specification nat-basic lf-01: ⊦ m < n ∧ n = n0 → m < n0; (forward) from specification nat-basic fle: ⊦ m < n ∧ n ≤ n0 → m < n0; (forward) from specification nat ⊦ m + 1 ≠ 0; (s) ⊦ m + 1 ≤ n ↔ m < n; (s) ⊦ m < n ↔ ¬ n ≤ m; (ss) ⊦ m < n → (n ≤ m ↔ false); (s) ⊦ even(n + 1) ↔ odd(n); (s) ⊦ m + n - n + n1 = m - n1; (s) ⊦ m - m = 0; (s) a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic c: ⊦ m + n = n + m; from specification nat-basic Used terms: a, m, n0, p
| m ≤ n, n ≤ # a ⊦ countevn(a, m, n + 1, p) = countevn(a, m, n, p) + (even(n) ∧ p(a[n]) ⊃ 1;0) |
| countevn(a, m, n0, p) + (even(n0) ∧ p(a[n0]) ⊃ 1;0) ≠ (even(m) ⊃ ((n0 + 1 - m) + 1) / 2;(n0 + 1 - m) / 2), a ≠ [], n0 < # a, m ≤ # a, m ≤ n0 + 1, m ≤ n0, n0 ≤ # a, ∀ a0, m0, p0. countevn(a0, m0, n0, p0) = (even(m0) ⊃ ((n0 - m0) + 1) / 2;(n0 - m0) / 2) ∨ ¬ m0 ≤ n0 ∨ ¬ n0 ≤ # a0 ∨ ¬ m0 ≤ # a0 ∨ ¬(∀ n1. m0 ≤ n1 ∧ n1 < n0 ∧ even(n1) → p0(a0[n1])), ∀ n1. m ≤ n1 ∧ ¬ n0 < n1 ∧ even(n1) → p(a[n1]) ⊦ |
countevn(a, m, n0, p) + (even(n0) ∧ p(a[n0]) ⊃ 1;0) ≠ (even(m) ⊃ (n0 - m) / 2 + 1;((n0 - m) + 1) / 2), a ≠ [], m < # a, n0 < # a, m ≤ n0 + 1, m ≤ n0, ∀ a0, m0, p0. countevn(a0, m0, n0, p0) = (even(m0) ⊃ ((n0 - m0) + 1) / 2;(n0 - m0) / 2) ∨ ¬ m0 ≤ n0 ∨ ¬ n0 ≤ # a0 ∨ ¬ m0 ≤ # a0 ∨ ¬(∀ n1. m0 ≤ n1 ∧ n1 < n0 ∧ even(n1) → p0(a0[n1])), ∀ n1. m ≤ n1 ∧ ¬ n0 < n1 ∧ even(n1) → p(a[n1]) ⊦
Used simplifier rules: ⊦ m < n → m ≤ n; (s) fle-01: ⊦ m ≤ n ∧ n < n0 → m < n0; (forward) from specification nat c: ⊦ m + n = n + m; from specification nat-basic a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic ⊦ n ≤ m → m + n0 - n = (m - n) + n0; (s) ⊦ (m + 2) / 2 = m / 2 + 1; (s)
| countevn(a, m, n0, p) + (even(n0) ∧ p(a[n0]) ⊃ 1;0) ≠ (even(m) ⊃ (n0 - m) / 2 + 1;((n0 - m) + 1) / 2), a ≠ [], m < # a, n0 < # a, m ≤ n0 + 1, m ≤ n0, ∀ a0, m0, p0. countevn(a0, m0, n0, p0) = (even(m0) ⊃ ((n0 - m0) + 1) / 2;(n0 - m0) / 2) ∨ ¬ m0 ≤ n0 ∨ ¬ n0 ≤ # a0 ∨ ¬ m0 ≤ # a0 ∨ ¬(∀ n1. m0 ≤ n1 ∧ n1 < n0 ∧ even(n1) → p0(a0[n1])), ∀ n1. m ≤ n1 ∧ ¬ n0 < n1 ∧ even(n1) → p(a[n1]) ⊦ |
countevn(a, m, n0, p) + (even(n0) ∧ p(a[n0]) ⊃ 1;0) ≠ (even(m) ⊃ (n0 - m) / 2 + 1;((n0 - m) + 1) / 2), a ≠ [], n0 < # a, m < # a, m ≤ n0, m ≤ n0 + 1, ∀ n1. m ≤ n1 ∧ ¬ n0 < n1 ∧ even(n1) → p(a[n1]), countevn(a, m, n0, p) = (even(m) ⊃ ((n0 - m) + 1) / 2;(n0 - m) / 2) ∨ ¬ m ≤ n0 ∨ ¬ n0 ≤ # a ∨ ¬ m ≤ # a ∨ ¬(∀ n1. m ≤ n1 ∧ n1 < n0 ∧ even(n1) → p(a[n1])) ⊦
Used terms: a, m, p
| countevn(a, m, n0, p) + (even(n0) ∧ p(a[n0]) ⊃ 1;0) ≠ (even(m) ⊃ (n0 - m) / 2 + 1;((n0 - m) + 1) / 2), a ≠ [], n0 < # a, m < # a, m ≤ n0, m ≤ n0 + 1, ∀ n1. m ≤ n1 ∧ ¬ n0 < n1 ∧ even(n1) → p(a[n1]), countevn(a, m, n0, p) = (even(m) ⊃ ((n0 - m) + 1) / 2;(n0 - m) / 2) ∨ ¬ m ≤ n0 ∨ ¬ n0 ≤ # a ∨ ¬ m ≤ # a ∨ ¬(∀ n1. m ≤ n1 ∧ n1 < n0 ∧ even(n1) → p(a[n1])) ⊦ |
countevn(a, m, n0, p) + (even(n0) ∧ p(a[n0]) ⊃ 1;0) ≠ (even(m) ⊃ (n0 - m) / 2 + 1;((n0 - m) + 1) / 2), a ≠ [], m < # a, n0 < # a, m ≤ n0 + 1, m ≤ n0, ∀ n1. m ≤ n1 ∧ ¬ n0 < n1 ∧ even(n1) → p(a[n1]), countevn(a, m, n0, p) = (even(m) ⊃ ((n0 - m) + 1) / 2;(n0 - m) / 2) ∨ ¬(m ≤ n1 ∧ n1 < n0 ∧ even(n1) → p(a[n1])) ⊦
Used simplifier rules: ⊦ m < n → m ≤ n; (s)
| countevn(a, m, n0, p) + (even(n0) ∧ p(a[n0]) ⊃ 1;0) ≠ (even(m) ⊃ (n0 - m) / 2 + 1;((n0 - m) + 1) / 2), a ≠ [], m < # a, n0 < # a, m ≤ n0 + 1, m ≤ n0, ∀ n1. m ≤ n1 ∧ ¬ n0 < n1 ∧ even(n1) → p(a[n1]), countevn(a, m, n0, p) = (even(m) ⊃ ((n0 - m) + 1) / 2;(n0 - m) / 2) ∨ ¬(m ≤ n1 ∧ n1 < n0 ∧ even(n1) → p(a[n1])) ⊦ |
countevn(a, m, n0, p) + (even(n0) ∧ p(a[n0]) ⊃ 1;0) ≠ (even(m) ⊃ (n0 - m) / 2 + 1;((n0 - m) + 1) / 2), a ≠ [], n0 < # a, m < # a, m ≤ n0, m ≤ n0 + 1, m ≤ n0 ∧ ¬ n0 < n0 ∧ even(n0) → p(a[n0]), ∀ n1. m ≤ n1 ∧ ¬ n0 < n1 ∧ even(n1) → p(a[n1]), countevn(a, m, n0, p) = (even(m) ⊃ ((n0 - m) + 1) / 2;(n0 - m) / 2) ∨ ¬(m ≤ n1 ∧ n1 < n0 ∧ even(n1) → p(a[n1])) ⊦
Used terms: n0
| countevn(a, m, n0, p) + (even(n0) ∧ p(a[n0]) ⊃ 1;0) ≠ (even(m) ⊃ (n0 - m) / 2 + 1;((n0 - m) + 1) / 2), a ≠ [], n0 < # a, m < # a, m ≤ n0, m ≤ n0 + 1, m ≤ n0 ∧ ¬ n0 < n0 ∧ even(n0) → p(a[n0]), ∀ n1. m ≤ n1 ∧ ¬ n0 < n1 ∧ even(n1) → p(a[n1]), countevn(a, m, n0, p) = (even(m) ⊃ ((n0 - m) + 1) / 2;(n0 - m) / 2) ∨ ¬(m ≤ n1 ∧ n1 < n0 ∧ even(n1) → p(a[n1])) ⊦ |
countevn(a, m, n0, p) + (even(n0) ∧ p(a[n0]) ⊃ 1;0) ≠ (even(m) ⊃ (n0 - m) / 2 + 1;((n0 - m) + 1) / 2), a ≠ [], m < # a, n0 < # a, m ≤ n0 + 1, m ≤ n0, even(n0) → p(a[n0]), ∀ n1. m ≤ n1 ∧ ¬ n0 < n1 ∧ even(n1) → p(a[n1]), countevn(a, m, n0, p) = (even(m) ⊃ ((n0 - m) + 1) / 2;(n0 - m) / 2) ∨ ¬(m ≤ n1 ∧ n1 < n0 ∧ even(n1) → p(a[n1])) ⊦
Used simplifier rules: ⊦ ¬ n < n; (s)
| countevn(a, m, n0, p) + (even(n0) ∧ p(a[n0]) ⊃ 1;0) ≠ (even(m) ⊃ (n0 - m) / 2 + 1;((n0 - m) + 1) / 2), a ≠ [], m < # a, n0 < # a, m ≤ n0 + 1, m ≤ n0, even(n0) → p(a[n0]), ∀ n1. m ≤ n1 ∧ ¬ n0 < n1 ∧ even(n1) → p(a[n1]), countevn(a, m, n0, p) = (even(m) ⊃ ((n0 - m) + 1) / 2;(n0 - m) / 2) ∨ ¬(m ≤ n1 ∧ n1 < n0 ∧ even(n1) → p(a[n1])) ⊦ |
countevn(a, m, n0, p) + 1 ≠ (even(m) ⊃ (n0 - m) / 2 + 1;((n0 - m) + 1) / 2), a ≠ [], n0 < # a, m < # a, even(n0), p(a[n0]), m ≤ n0, m ≤ n0 + 1, even(n0) → p(a[n0]), ∀ n1. m ≤ n1 ∧ ¬ n0 < n1 ∧ even(n1) → p(a[n1]), countevn(a, m, n0, p) = (even(m) ⊃ ((n0 - m) + 1) / 2;(n0 - m) / 2) ∨ ¬(m ≤ n1 ∧ n1 < n0 ∧ even(n1) → p(a[n1])) ⊦
countevn(a, m, n0, p) + 0 ≠ (even(m) ⊃ (n0 - m) / 2 + 1;((n0 - m) + 1) / 2), a ≠ [], n0 < # a, m < # a, m ≤ n0, m ≤ n0 + 1, even(n0) → p(a[n0]), ∀ n1. m ≤ n1 ∧ ¬ n0 < n1 ∧ even(n1) → p(a[n1]), countevn(a, m, n0, p) = (even(m) ⊃ ((n0 - m) + 1) / 2;(n0 - m) / 2) ∨ ¬(m ≤ n1 ∧ n1 < n0 ∧ even(n1) → p(a[n1])), ¬ even(n0) ∨ ¬ p(a[n0]) ⊦
| countevn(a, m, n0, p) + 1 ≠ (even(m) ⊃ (n0 - m) / 2 + 1;((n0 - m) + 1) / 2), a ≠ [], n0 < # a, m < # a, even(n0), p(a[n0]), m ≤ n0, m ≤ n0 + 1, even(n0) → p(a[n0]), ∀ n1. m ≤ n1 ∧ ¬ n0 < n1 ∧ even(n1) → p(a[n1]), countevn(a, m, n0, p) = (even(m) ⊃ ((n0 - m) + 1) / 2;(n0 - m) / 2) ∨ ¬(m ≤ n1 ∧ n1 < n0 ∧ even(n1) → p(a[n1])) ⊦ |
countevn(a, m, n0, p) + 1 ≠ (even(m) ⊃ (n0 - m) / 2 + 1;((n0 - m) + 1) / 2), a ≠ [], m < # a, n0 < # a, even(n0), p(a[n0]), m ≤ n0 + 1, m ≤ n0, ∀ n1. m ≤ n1 ∧ ¬ n0 < n1 ∧ even(n1) → p(a[n1]), countevn(a, m, n0, p) = (even(m) ⊃ ((n0 - m) + 1) / 2;(n0 - m) / 2) ∨ ¬(m ≤ n1 ∧ n1 < n0 ∧ even(n1) → p(a[n1])) ⊦
| countevn(a, m, n0, p) + 1 ≠ (even(m) ⊃ (n0 - m) / 2 + 1;((n0 - m) + 1) / 2), a ≠ [], m < # a, n0 < # a, even(n0), p(a[n0]), m ≤ n0 + 1, m ≤ n0, ∀ n1. m ≤ n1 ∧ ¬ n0 < n1 ∧ even(n1) → p(a[n1]), countevn(a, m, n0, p) = (even(m) ⊃ ((n0 - m) + 1) / 2;(n0 - m) / 2) ∨ ¬(m ≤ n1 ∧ n1 < n0 ∧ even(n1) → p(a[n1])) ⊦ |
countevn(a, m, n0, p) + 1 ≠ (n0 - m) / 2 + 1, a ≠ [], n0 < # a, m < # a, even(n0), even(m), p(a[n0]), m ≤ n0, m ≤ n0 + 1, ∀ n1. m ≤ n1 ∧ ¬ n0 < n1 ∧ even(n1) → p(a[n1]), countevn(a, m, n0, p) = (even(m) ⊃ ((n0 - m) + 1) / 2;(n0 - m) / 2) ∨ ¬(m ≤ n1 ∧ n1 < n0 ∧ even(n1) → p(a[n1])) ⊦
countevn(a, m, n0, p) + 1 ≠ ((n0 - m) + 1) / 2, a ≠ [], n0 < # a, m < # a, even(n0), p(a[n0]), m ≤ n0, m ≤ n0 + 1, ¬ even(m), ∀ n1. m ≤ n1 ∧ ¬ n0 < n1 ∧ even(n1) → p(a[n1]), countevn(a, m, n0, p) = (even(m) ⊃ ((n0 - m) + 1) / 2;(n0 - m) / 2) ∨ ¬(m ≤ n1 ∧ n1 < n0 ∧ even(n1) → p(a[n1])) ⊦
| countevn(a, m, n0, p) + 1 ≠ (n0 - m) / 2 + 1, a ≠ [], n0 < # a, m < # a, even(n0), even(m), p(a[n0]), m ≤ n0, m ≤ n0 + 1, ∀ n1. m ≤ n1 ∧ ¬ n0 < n1 ∧ even(n1) → p(a[n1]), countevn(a, m, n0, p) = (even(m) ⊃ ((n0 - m) + 1) / 2;(n0 - m) / 2) ∨ ¬(m ≤ n1 ∧ n1 < n0 ∧ even(n1) → p(a[n1])) ⊦ |
a ≠ [], countevn(a, m, n0, p) ≠ (n0 - m) / 2, m < # a, n0 < # a, even(m), even(n0), p(a[n0]), m ≤ n0 + 1, m ≤ n0, ∀ n1. m ≤ n1 ∧ ¬ n0 < n1 ∧ even(n1) → p(a[n1]), countevn(a, m, n0, p) = ((n0 - m) + 1) / 2 ∨ ¬(m ≤ n1 ∧ n1 < n0 ∧ even(n1) → p(a[n1])) ⊦
Used simplifier rules: c: ⊦ m + n = n + m; from specification nat-basic a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic ⊦ m + n = m + n0 ↔ n = n0; (s)
| a ≠ [], countevn(a, m, n0, p) ≠ (n0 - m) / 2, m < # a, n0 < # a, even(m), even(n0), p(a[n0]), m ≤ n0 + 1, m ≤ n0, ∀ n1. m ≤ n1 ∧ ¬ n0 < n1 ∧ even(n1) → p(a[n1]), countevn(a, m, n0, p) = ((n0 - m) + 1) / 2 ∨ ¬(m ≤ n1 ∧ n1 < n0 ∧ even(n1) → p(a[n1])) ⊦ |
n0 = n2 + m, a ≠ [], countevn(a, m, n0, p) ≠ n2 / 2, n0 < # a, m < # a, even(n0), even(m), p(a[n0]), m ≤ n0, m ≤ n0 + 1, ∀ n1. m ≤ n1 ∧ ¬ n0 < n1 ∧ even(n1) → p(a[n1]), countevn(a, m, n0, p) = (n2 + 1) / 2 ∨ ¬(m ≤ n1 ∧ n1 < n0 ∧ even(n1) → p(a[n1])) ⊦
Used simplifier rules: n ≤ m ⊦ n0 = m - n ↔ m = n0 + n; (elim) Used terms: n0, m, n
| n0 = n2 + m, a ≠ [], countevn(a, m, n0, p) ≠ n2 / 2, n0 < # a, m < # a, even(n0), even(m), p(a[n0]), m ≤ n0, m ≤ n0 + 1, ∀ n1. m ≤ n1 ∧ ¬ n0 < n1 ∧ even(n1) → p(a[n1]), countevn(a, m, n0, p) = (n2 + 1) / 2 ∨ ¬(m ≤ n1 ∧ n1 < n0 ∧ even(n1) → p(a[n1])) ⊦ |
a ≠ [], countevn(a, m, n2 + m, p) ≠ n2 / 2, n2 ≠ 0, n1 < n2 + m, n2 + m < # a, m < # a, n1 + 1 < # a, n1 < # a, even(n1), even(n2), even(m), p(a[n2 + m]), m ≤ n1, ¬ p(a[n1]), ∀ n1. m ≤ n1 ∧ ¬ n2 + m < n1 ∧ even(n1) → p(a[n1]) ⊦
Used simplifier rules: c: ⊦ m + n = n + m; from specification nat-basic a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic ⊦ m < m + n ↔ n ≠ 0; (s) ⊦ m +1 = m + 1; (s) ⊦ m < n → n ≠ 0; (s) fle-01: ⊦ m ≤ n ∧ n < n0 → m < n0; (forward) from specification nat trans-nat: ⊦ n < n0 ∧ n0 < n1 → n < n1; (forward) from specification nat-basic lf: ⊦ m < n ∧ n < n0 → m +1 < n0; (forward) from specification nat-basic f: ⊦ m < n → n ≠ 0; (forward) from specification nat-basic ⊦ even(n) → (n + 1) / 2 = n / 2; (s) ⊦ even(m) → (even(m + n) ↔ even(n)); (s) ⊦ m ≤ m + n; (s)
| a ≠ [], countevn(a, m, n2 + m, p) ≠ n2 / 2, n2 ≠ 0, n1 < n2 + m, n2 + m < # a, m < # a, n1 + 1 < # a, n1 < # a, even(n1), even(n2), even(m), p(a[n2 + m]), m ≤ n1, ¬ p(a[n1]), ∀ n1. m ≤ n1 ∧ ¬ n2 + m < n1 ∧ even(n1) → p(a[n1]) ⊦ |
Used simplifier rules: ⊦ m < n → ¬ n < m; (s) Used terms: n1
| countevn(a, m, n0, p) + 1 ≠ ((n0 - m) + 1) / 2, a ≠ [], n0 < # a, m < # a, even(n0), p(a[n0]), m ≤ n0, m ≤ n0 + 1, ¬ even(m), ∀ n1. m ≤ n1 ∧ ¬ n0 < n1 ∧ even(n1) → p(a[n1]), countevn(a, m, n0, p) = (even(m) ⊃ ((n0 - m) + 1) / 2;(n0 - m) / 2) ∨ ¬(m ≤ n1 ∧ n1 < n0 ∧ even(n1) → p(a[n1])) ⊦ |
countevn(a, m, n0, p) + 1 ≠ ((n0 - m) + 1) / 2, a ≠ [], m < # a, n0 < # a, even(n0), odd(m), p(a[n0]), m ≤ n0 + 1, m ≤ n0, ∀ n1. m ≤ n1 ∧ ¬ n0 < n1 ∧ even(n1) → p(a[n1]), countevn(a, m, n0, p) = (n0 - m) / 2 ∨ ¬(m ≤ n1 ∧ n1 < n0 ∧ even(n1) → p(a[n1])) ⊦
Used simplifier rules: ⊦ odd(n) → ¬ even(n); (s) ⊦ even(n) ↔ ¬ odd(n); (ss)
| countevn(a, m, n0, p) + 1 ≠ ((n0 - m) + 1) / 2, a ≠ [], m < # a, n0 < # a, even(n0), odd(m), p(a[n0]), m ≤ n0 + 1, m ≤ n0, ∀ n1. m ≤ n1 ∧ ¬ n0 < n1 ∧ even(n1) → p(a[n1]), countevn(a, m, n0, p) = (n0 - m) / 2 ∨ ¬(m ≤ n1 ∧ n1 < n0 ∧ even(n1) → p(a[n1])) ⊦ |
n0 = n2 + m, countevn(a, m, n0, p) + 1 ≠ (n2 + 1) / 2, a ≠ [], n0 < # a, m < # a, even(n0), odd(m), p(a[n0]), m ≤ n0, m ≤ n0 + 1, ∀ n1. m ≤ n1 ∧ ¬ n0 < n1 ∧ even(n1) → p(a[n1]), countevn(a, m, n0, p) = n2 / 2 ∨ ¬(m ≤ n1 ∧ n1 < n0 ∧ even(n1) → p(a[n1])) ⊦
Used simplifier rules: n ≤ m ⊦ n0 = m - n ↔ m = n0 + n; (elim) Used terms: n0, m, n
| n0 = n2 + m, countevn(a, m, n0, p) + 1 ≠ (n2 + 1) / 2, a ≠ [], n0 < # a, m < # a, even(n0), odd(m), p(a[n0]), m ≤ n0, m ≤ n0 + 1, ∀ n1. m ≤ n1 ∧ ¬ n0 < n1 ∧ even(n1) → p(a[n1]), countevn(a, m, n0, p) = n2 / 2 ∨ ¬(m ≤ n1 ∧ n1 < n0 ∧ even(n1) → p(a[n1])) ⊦ |
countevn(a, m, n2 + m, p) + 1 ≠ (n2 + 1) / 2, a ≠ [], m < # a, n2 + m < # a, even(n2 + m), odd(m), p(a[n2 + m]), ∀ n1. m ≤ n1 ∧ ¬ n2 + m < n1 ∧ even(n1) → p(a[n1]), countevn(a, m, n2 + m, p) = n2 / 2 ∨ ¬(m ≤ n1 ∧ n1 < n2 + m ∧ even(n1) → p(a[n1])) ⊦
Used simplifier rules: c: ⊦ m + n = n + m; from specification nat-basic a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic ⊦ m ≤ m + n; (s)
| countevn(a, m, n2 + m, p) + 1 ≠ (n2 + 1) / 2, a ≠ [], m < # a, n2 + m < # a, even(n2 + m), odd(m), p(a[n2 + m]), ∀ n1. m ≤ n1 ∧ ¬ n2 + m < n1 ∧ even(n1) → p(a[n1]), countevn(a, m, n2 + m, p) = n2 / 2 ∨ ¬(m ≤ n1 ∧ n1 < n2 + m ∧ even(n1) → p(a[n1])) ⊦ |
⊦ even(n) → (n + 1) / 2 = n / 2
countevn(a, m, n2 + m, p) + 1 ≠ (n2 + 1) / 2, a ≠ [], n2 + m < # a, m < # a, even(n2 + m), odd(m), p(a[n2 + m]), ¬ even(n2), ∀ n1. m ≤ n1 ∧ ¬ n2 + m < n1 ∧ even(n1) → p(a[n1]), countevn(a, m, n2 + m, p) = n2 / 2 ∨ ¬(m ≤ n1 ∧ n1 < n2 + m ∧ even(n1) → p(a[n1])) ⊦
Used simplifier rules: ⊦ even(m) → (even(m + n) ↔ even(n)); (s) ⊦ odd(n) → ¬ even(n); (s) a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic c: ⊦ m + n = n + m; from specification nat-basic Used terms: n2
| ⊦ even(n) → (n + 1) / 2 = n / 2 |
| countevn(a, m, n2 + m, p) + 1 ≠ (n2 + 1) / 2, a ≠ [], n2 + m < # a, m < # a, even(n2 + m), odd(m), p(a[n2 + m]), ¬ even(n2), ∀ n1. m ≤ n1 ∧ ¬ n2 + m < n1 ∧ even(n1) → p(a[n1]), countevn(a, m, n2 + m, p) = n2 / 2 ∨ ¬(m ≤ n1 ∧ n1 < n2 + m ∧ even(n1) → p(a[n1])) ⊦ |
a ≠ [], countevn(a, m, n2 + m, p) ≠ n2 / 2, n2 ≠ 0, n1 < n2 + m, n2 + m < # a, m < # a, n1 + 1 < # a, n1 < # a, even(n1), even(n2 + m), odd(n2), odd(m), p(a[n2 + m]), m ≤ n1, ¬ p(a[n1]), ∀ n1. m ≤ n1 ∧ ¬ n2 + m < n1 ∧ even(n1) → p(a[n1]) ⊦
Used simplifier rules: c: ⊦ m + n = n + m; from specification nat-basic a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic ⊦ m < m + n ↔ n ≠ 0; (s) ⊦ m +1 = m + 1; (s) ⊦ m < n → n ≠ 0; (s) fle-01: ⊦ m ≤ n ∧ n < n0 → m < n0; (forward) from specification nat trans-nat: ⊦ n < n0 ∧ n0 < n1 → n < n1; (forward) from specification nat-basic lf: ⊦ m < n ∧ n < n0 → m +1 < n0; (forward) from specification nat-basic f: ⊦ m < n → n ≠ 0; (forward) from specification nat-basic ⊦ m + n = m + n0 ↔ n = n0; (s) ⊦ odd(n) → (n + 1) / 2 = n / 2 + 1; (s) ⊦ even(n) ↔ ¬ odd(n); (ss)
| a ≠ [], countevn(a, m, n2 + m, p) ≠ n2 / 2, n2 ≠ 0, n1 < n2 + m, n2 + m < # a, m < # a, n1 + 1 < # a, n1 < # a, even(n1), even(n2 + m), odd(n2), odd(m), p(a[n2 + m]), m ≤ n1, ¬ p(a[n1]), ∀ n1. m ≤ n1 ∧ ¬ n2 + m < n1 ∧ even(n1) → p(a[n1]) ⊦ |
Used simplifier rules: ⊦ m < n → ¬ n < m; (s) Used terms: n1
| countevn(a, m, n0, p) + 0 ≠ (even(m) ⊃ (n0 - m) / 2 + 1;((n0 - m) + 1) / 2), a ≠ [], n0 < # a, m < # a, m ≤ n0, m ≤ n0 + 1, even(n0) → p(a[n0]), ∀ n1. m ≤ n1 ∧ ¬ n0 < n1 ∧ even(n1) → p(a[n1]), countevn(a, m, n0, p) = (even(m) ⊃ ((n0 - m) + 1) / 2;(n0 - m) / 2) ∨ ¬(m ≤ n1 ∧ n1 < n0 ∧ even(n1) → p(a[n1])), ¬ even(n0) ∨ ¬ p(a[n0]) ⊦ |
a ≠ [], countevn(a, m, n0, p) ≠ (even(m) ⊃ (n0 - m) / 2 + 1;((n0 - m) + 1) / 2), m < # a, n0 < # a, m ≤ n0 + 1, m ≤ n0, even(n0) → p(a[n0]), ∀ n1. m ≤ n1 ∧ ¬ n0 < n1 ∧ even(n1) → p(a[n1]), ¬ even(n0) ∨ ¬ p(a[n0]), countevn(a, m, n0, p) = (even(m) ⊃ ((n0 - m) + 1) / 2;(n0 - m) / 2) ∨ ¬(m ≤ n1 ∧ n1 < n0 ∧ even(n1) → p(a[n1])) ⊦
Used simplifier rules: c: ⊦ m + n = n + m; from specification nat-basic a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic ⊦ n + 0 = n; (s)
| a ≠ [], countevn(a, m, n0, p) ≠ (even(m) ⊃ (n0 - m) / 2 + 1;((n0 - m) + 1) / 2), m < # a, n0 < # a, m ≤ n0 + 1, m ≤ n0, even(n0) → p(a[n0]), ∀ n1. m ≤ n1 ∧ ¬ n0 < n1 ∧ even(n1) → p(a[n1]), ¬ even(n0) ∨ ¬ p(a[n0]), countevn(a, m, n0, p) = (even(m) ⊃ ((n0 - m) + 1) / 2;(n0 - m) / 2) ∨ ¬(m ≤ n1 ∧ n1 < n0 ∧ even(n1) → p(a[n1])) ⊦ |
a ≠ [], countevn(a, m, n0, p) ≠ (n0 - m) / 2 + 1, n0 < # a, m < # a, even(m), m ≤ n0, m ≤ n0 + 1, even(n0) → p(a[n0]), ∀ n1. m ≤ n1 ∧ ¬ n0 < n1 ∧ even(n1) → p(a[n1]), countevn(a, m, n0, p) = (even(m) ⊃ ((n0 - m) + 1) / 2;(n0 - m) / 2) ∨ ¬(m ≤ n1 ∧ n1 < n0 ∧ even(n1) → p(a[n1])), ¬ even(n0) ∨ ¬ p(a[n0]) ⊦
a ≠ [], countevn(a, m, n0, p) ≠ ((n0 - m) + 1) / 2, n0 < # a, m < # a, m ≤ n0, m ≤ n0 + 1, ¬ even(m), even(n0) → p(a[n0]), ∀ n1. m ≤ n1 ∧ ¬ n0 < n1 ∧ even(n1) → p(a[n1]), countevn(a, m, n0, p) = (even(m) ⊃ ((n0 - m) + 1) / 2;(n0 - m) / 2) ∨ ¬(m ≤ n1 ∧ n1 < n0 ∧ even(n1) → p(a[n1])), ¬ even(n0) ∨ ¬ p(a[n0]) ⊦
| a ≠ [], countevn(a, m, n0, p) ≠ (n0 - m) / 2 + 1, n0 < # a, m < # a, even(m), m ≤ n0, m ≤ n0 + 1, even(n0) → p(a[n0]), ∀ n1. m ≤ n1 ∧ ¬ n0 < n1 ∧ even(n1) → p(a[n1]), countevn(a, m, n0, p) = (even(m) ⊃ ((n0 - m) + 1) / 2;(n0 - m) / 2) ∨ ¬(m ≤ n1 ∧ n1 < n0 ∧ even(n1) → p(a[n1])), ¬ even(n0) ∨ ¬ p(a[n0]) ⊦ |
a ≠ [], countevn(a, m, n0, p) ≠ (n0 - m) / 2 + 1, m < # a, n0 < # a, even(m), m ≤ n0 + 1, m ≤ n0, even(n0) → p(a[n0]), ∀ n1. m ≤ n1 ∧ ¬ n0 < n1 ∧ even(n1) → p(a[n1]), ¬ even(n0) ∨ ¬ p(a[n0]), countevn(a, m, n0, p) = ((n0 - m) + 1) / 2 ∨ ¬(m ≤ n1 ∧ n1 < n0 ∧ even(n1) → p(a[n1])) ⊦
| a ≠ [], countevn(a, m, n0, p) ≠ (n0 - m) / 2 + 1, m < # a, n0 < # a, even(m), m ≤ n0 + 1, m ≤ n0, even(n0) → p(a[n0]), ∀ n1. m ≤ n1 ∧ ¬ n0 < n1 ∧ even(n1) → p(a[n1]), ¬ even(n0) ∨ ¬ p(a[n0]), countevn(a, m, n0, p) = ((n0 - m) + 1) / 2 ∨ ¬(m ≤ n1 ∧ n1 < n0 ∧ even(n1) → p(a[n1])) ⊦ |
n0 = n2 + m, a ≠ [], countevn(a, m, n0, p) ≠ n2 / 2 + 1, n0 < # a, m < # a, even(m), m ≤ n0, m ≤ n0 + 1, even(n0) → p(a[n0]), ∀ n1. m ≤ n1 ∧ ¬ n0 < n1 ∧ even(n1) → p(a[n1]), countevn(a, m, n0, p) = (n2 + 1) / 2 ∨ ¬(m ≤ n1 ∧ n1 < n0 ∧ even(n1) → p(a[n1])), ¬ even(n0) ∨ ¬ p(a[n0]) ⊦
Used simplifier rules: n ≤ m ⊦ n0 = m - n ↔ m = n0 + n; (elim) Used terms: n0, m, n
| n0 = n2 + m, a ≠ [], countevn(a, m, n0, p) ≠ n2 / 2 + 1, n0 < # a, m < # a, even(m), m ≤ n0, m ≤ n0 + 1, even(n0) → p(a[n0]), ∀ n1. m ≤ n1 ∧ ¬ n0 < n1 ∧ even(n1) → p(a[n1]), countevn(a, m, n0, p) = (n2 + 1) / 2 ∨ ¬(m ≤ n1 ∧ n1 < n0 ∧ even(n1) → p(a[n1])), ¬ even(n0) ∨ ¬ p(a[n0]) ⊦ |
a ≠ [], countevn(a, m, n2 + m, p) ≠ n2 / 2 + 1, m < # a, n2 + m < # a, even(m), even(n2) → p(a[n2 + m]), ∀ n1. m ≤ n1 ∧ ¬ n2 + m < n1 ∧ even(n1) → p(a[n1]), countevn(a, m, n2 + m, p) = (n2 + 1) / 2 ∨ ¬(m ≤ n1 ∧ n1 < n2 + m ∧ even(n1) → p(a[n1])), ¬ even(n2) ∨ ¬ p(a[n2 + m]) ⊦
Used simplifier rules: c: ⊦ m + n = n + m; from specification nat-basic a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic ⊦ even(m) → (even(m + n) ↔ even(n)); (s) ⊦ m ≤ m + n; (s)
| a ≠ [], countevn(a, m, n2 + m, p) ≠ n2 / 2 + 1, m < # a, n2 + m < # a, even(m), even(n2) → p(a[n2 + m]), ∀ n1. m ≤ n1 ∧ ¬ n2 + m < n1 ∧ even(n1) → p(a[n1]), countevn(a, m, n2 + m, p) = (n2 + 1) / 2 ∨ ¬(m ≤ n1 ∧ n1 < n2 + m ∧ even(n1) → p(a[n1])), ¬ even(n2) ∨ ¬ p(a[n2 + m]) ⊦ |
⊦ odd(n) → (n + 1) / 2 = n / 2 + 1
a ≠ [], countevn(a, m, n2 + m, p) ≠ n2 / 2 + 1, n2 + m < # a, m < # a, even(m), odd(n2), even(n2) → p(a[n2 + m]), ∀ n1. m ≤ n1 ∧ ¬ n2 + m < n1 ∧ even(n1) → p(a[n1]), ¬ even(n2) ∨ ¬ p(a[n2 + m]), countevn(a, m, n2 + m, p) = n2 / 2 + 1 ∨ ¬(m ≤ n1 ∧ n1 < n2 + m ∧ even(n1) → p(a[n1])) ⊦
Used simplifier rules: ⊦ odd(n) ↔ ¬ even(n); (ss) ⊦ even(n) → (n + 1) / 2 = n / 2; (s) a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic c: ⊦ m + n = n + m; from specification nat-basic Used terms: n2
| ⊦ odd(n) → (n + 1) / 2 = n / 2 + 1 |
| a ≠ [], countevn(a, m, n2 + m, p) ≠ n2 / 2 + 1, n2 + m < # a, m < # a, even(m), odd(n2), even(n2) → p(a[n2 + m]), ∀ n1. m ≤ n1 ∧ ¬ n2 + m < n1 ∧ even(n1) → p(a[n1]), ¬ even(n2) ∨ ¬ p(a[n2 + m]), countevn(a, m, n2 + m, p) = n2 / 2 + 1 ∨ ¬(m ≤ n1 ∧ n1 < n2 + m ∧ even(n1) → p(a[n1])) ⊦ |
a ≠ [], countevn(a, m, n2 + m, p) ≠ n2 / 2 + 1, n2 ≠ 0, n1 < n2 + m, n2 + m < # a, m < # a, n1 + 1 < # a, n1 < # a, even(n1), even(m), odd(n2), m ≤ n1, ¬ p(a[n1]), ∀ n1. m ≤ n1 ∧ ¬ n2 + m < n1 ∧ even(n1) → p(a[n1]) ⊦
Used simplifier rules: c: ⊦ m + n = n + m; from specification nat-basic a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic ⊦ m < m + n ↔ n ≠ 0; (s) ⊦ m +1 = m + 1; (s) ⊦ m < n → n ≠ 0; (s) fle-01: ⊦ m ≤ n ∧ n < n0 → m < n0; (forward) from specification nat trans-nat: ⊦ n < n0 ∧ n0 < n1 → n < n1; (forward) from specification nat-basic lf: ⊦ m < n ∧ n < n0 → m +1 < n0; (forward) from specification nat-basic f: ⊦ m < n → n ≠ 0; (forward) from specification nat-basic ⊦ odd(n) → ¬ even(n); (s)
| a ≠ [], countevn(a, m, n2 + m, p) ≠ n2 / 2 + 1, n2 ≠ 0, n1 < n2 + m, n2 + m < # a, m < # a, n1 + 1 < # a, n1 < # a, even(n1), even(m), odd(n2), m ≤ n1, ¬ p(a[n1]), ∀ n1. m ≤ n1 ∧ ¬ n2 + m < n1 ∧ even(n1) → p(a[n1]) ⊦ |
Used simplifier rules: ⊦ m < n → ¬ n < m; (s) Used terms: n1
| a ≠ [], countevn(a, m, n0, p) ≠ ((n0 - m) + 1) / 2, n0 < # a, m < # a, m ≤ n0, m ≤ n0 + 1, ¬ even(m), even(n0) → p(a[n0]), ∀ n1. m ≤ n1 ∧ ¬ n0 < n1 ∧ even(n1) → p(a[n1]), countevn(a, m, n0, p) = (even(m) ⊃ ((n0 - m) + 1) / 2;(n0 - m) / 2) ∨ ¬(m ≤ n1 ∧ n1 < n0 ∧ even(n1) → p(a[n1])), ¬ even(n0) ∨ ¬ p(a[n0]) ⊦ |
a ≠ [], countevn(a, m, n0, p) ≠ ((n0 - m) + 1) / 2, m < # a, n0 < # a, odd(m), m ≤ n0 + 1, m ≤ n0, even(n0) → p(a[n0]), ∀ n1. m ≤ n1 ∧ ¬ n0 < n1 ∧ even(n1) → p(a[n1]), ¬ even(n0) ∨ ¬ p(a[n0]), countevn(a, m, n0, p) = (n0 - m) / 2 ∨ ¬(m ≤ n1 ∧ n1 < n0 ∧ even(n1) → p(a[n1])) ⊦
Used simplifier rules: ⊦ odd(n) → ¬ even(n); (s) ⊦ even(n) ↔ ¬ odd(n); (ss)
| a ≠ [], countevn(a, m, n0, p) ≠ ((n0 - m) + 1) / 2, m < # a, n0 < # a, odd(m), m ≤ n0 + 1, m ≤ n0, even(n0) → p(a[n0]), ∀ n1. m ≤ n1 ∧ ¬ n0 < n1 ∧ even(n1) → p(a[n1]), ¬ even(n0) ∨ ¬ p(a[n0]), countevn(a, m, n0, p) = (n0 - m) / 2 ∨ ¬(m ≤ n1 ∧ n1 < n0 ∧ even(n1) → p(a[n1])) ⊦ |
n0 = n2 + m, a ≠ [], countevn(a, m, n0, p) ≠ (n2 + 1) / 2, n0 < # a, m < # a, odd(m), m ≤ n0, m ≤ n0 + 1, even(n0) → p(a[n0]), ∀ n1. m ≤ n1 ∧ ¬ n0 < n1 ∧ even(n1) → p(a[n1]), countevn(a, m, n0, p) = n2 / 2 ∨ ¬(m ≤ n1 ∧ n1 < n0 ∧ even(n1) → p(a[n1])), ¬ even(n0) ∨ ¬ p(a[n0]) ⊦
Used simplifier rules: n ≤ m ⊦ n0 = m - n ↔ m = n0 + n; (elim) Used terms: n0, m, n
| n0 = n2 + m, a ≠ [], countevn(a, m, n0, p) ≠ (n2 + 1) / 2, n0 < # a, m < # a, odd(m), m ≤ n0, m ≤ n0 + 1, even(n0) → p(a[n0]), ∀ n1. m ≤ n1 ∧ ¬ n0 < n1 ∧ even(n1) → p(a[n1]), countevn(a, m, n0, p) = n2 / 2 ∨ ¬(m ≤ n1 ∧ n1 < n0 ∧ even(n1) → p(a[n1])), ¬ even(n0) ∨ ¬ p(a[n0]) ⊦ |
a ≠ [], countevn(a, m, n2 + m, p) ≠ (n2 + 1) / 2, m < # a, n2 + m < # a, odd(m), even(n2 + m) → p(a[n2 + m]), ∀ n1. m ≤ n1 ∧ ¬ n2 + m < n1 ∧ even(n1) → p(a[n1]), ¬ even(n2 + m) ∨ ¬ p(a[n2 + m]), countevn(a, m, n2 + m, p) = n2 / 2 ∨ ¬(m ≤ n1 ∧ n1 < n2 + m ∧ even(n1) → p(a[n1])) ⊦
Used simplifier rules: c: ⊦ m + n = n + m; from specification nat-basic a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic ⊦ m ≤ m + n; (s)
| a ≠ [], countevn(a, m, n2 + m, p) ≠ (n2 + 1) / 2, m < # a, n2 + m < # a, odd(m), even(n2 + m) → p(a[n2 + m]), ∀ n1. m ≤ n1 ∧ ¬ n2 + m < n1 ∧ even(n1) → p(a[n1]), ¬ even(n2 + m) ∨ ¬ p(a[n2 + m]), countevn(a, m, n2 + m, p) = n2 / 2 ∨ ¬(m ≤ n1 ∧ n1 < n2 + m ∧ even(n1) → p(a[n1])) ⊦ |
⊦ even(n) → (n + 1) / 2 = n / 2
a ≠ [], countevn(a, m, n2 + m, p) ≠ (n2 + 1) / 2, n2 + m < # a, m < # a, odd(m), ¬ even(n2), even(n2 + m) → p(a[n2 + m]), ∀ n1. m ≤ n1 ∧ ¬ n2 + m < n1 ∧ even(n1) → p(a[n1]), countevn(a, m, n2 + m, p) = n2 / 2 ∨ ¬(m ≤ n1 ∧ n1 < n2 + m ∧ even(n1) → p(a[n1])), ¬ even(n2 + m) ∨ ¬ p(a[n2 + m]) ⊦
a ≠ [], countevn(a, m, n2 + m, p) ≠ n2 / 2, n2 + m < # a, m < # a, even(n2), odd(m), even(n2 + m) → p(a[n2 + m]), ∀ n1. m ≤ n1 ∧ ¬ n2 + m < n1 ∧ even(n1) → p(a[n1]), countevn(a, m, n2 + m, p) = n2 / 2 ∨ ¬(m ≤ n1 ∧ n1 < n2 + m ∧ even(n1) → p(a[n1])), ¬ even(n2 + m) ∨ ¬ p(a[n2 + m]) ⊦
Used terms: n2
| ⊦ even(n) → (n + 1) / 2 = n / 2 |
| a ≠ [], countevn(a, m, n2 + m, p) ≠ (n2 + 1) / 2, n2 + m < # a, m < # a, odd(m), ¬ even(n2), even(n2 + m) → p(a[n2 + m]), ∀ n1. m ≤ n1 ∧ ¬ n2 + m < n1 ∧ even(n1) → p(a[n1]), countevn(a, m, n2 + m, p) = n2 / 2 ∨ ¬(m ≤ n1 ∧ n1 < n2 + m ∧ even(n1) → p(a[n1])), ¬ even(n2 + m) ∨ ¬ p(a[n2 + m]) ⊦ |
a ≠ [], countevn(a, m, n2 + m, p) ≠ n2 / 2 + 1, m < # a, n2 + m < # a, odd(m), odd(n2), even(n2 + m) → p(a[n2 + m]), ∀ n1. m ≤ n1 ∧ ¬ n2 + m < n1 ∧ even(n1) → p(a[n1]), ¬ even(n2 + m) ∨ ¬ p(a[n2 + m]), countevn(a, m, n2 + m, p) = n2 / 2 ∨ ¬(m ≤ n1 ∧ n1 < n2 + m ∧ even(n1) → p(a[n1])) ⊦
Used simplifier rules: c: ⊦ m + n = n + m; from specification nat-basic a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic ⊦ odd(n) → (n + 1) / 2 = n / 2 + 1; (s) ⊦ even(n) ↔ ¬ odd(n); (ss)
| a ≠ [], countevn(a, m, n2 + m, p) ≠ n2 / 2 + 1, m < # a, n2 + m < # a, odd(m), odd(n2), even(n2 + m) → p(a[n2 + m]), ∀ n1. m ≤ n1 ∧ ¬ n2 + m < n1 ∧ even(n1) → p(a[n1]), ¬ even(n2 + m) ∨ ¬ p(a[n2 + m]), countevn(a, m, n2 + m, p) = n2 / 2 ∨ ¬(m ≤ n1 ∧ n1 < n2 + m ∧ even(n1) → p(a[n1])) ⊦ |
a ≠ [], countevn(a, m, n2 + m, p) ≠ n2 / 2 + 1, n2 + m < # a, m < # a, odd(n2), odd(m), even(n2 + m) → p(a[n2 + m]), m ≤ n2 + m ∧ ¬ n2 + m < n2 + m ∧ even(n2 + m) → p(a[n2 + m]), ∀ n1. m ≤ n1 ∧ ¬ n2 + m < n1 ∧ even(n1) → p(a[n1]), countevn(a, m, n2 + m, p) = n2 / 2 ∨ ¬(m ≤ n1 ∧ n1 < n2 + m ∧ even(n1) → p(a[n1])), ¬ even(n2 + m) ∨ ¬ p(a[n2 + m]) ⊦
Used terms: n2 + m
| a ≠ [], countevn(a, m, n2 + m, p) ≠ n2 / 2 + 1, n2 + m < # a, m < # a, odd(n2), odd(m), even(n2 + m) → p(a[n2 + m]), m ≤ n2 + m ∧ ¬ n2 + m < n2 + m ∧ even(n2 + m) → p(a[n2 + m]), ∀ n1. m ≤ n1 ∧ ¬ n2 + m < n1 ∧ even(n1) → p(a[n1]), countevn(a, m, n2 + m, p) = n2 / 2 ∨ ¬(m ≤ n1 ∧ n1 < n2 + m ∧ even(n1) → p(a[n1])), ¬ even(n2 + m) ∨ ¬ p(a[n2 + m]) ⊦ |
a ≠ [], countevn(a, m, n2 + m, p) ≠ n2 / 2 + 1, m < # a, n2 + m < # a, odd(m), odd(n2), even(n2 + m) → p(a[n2 + m]), ∀ n1. m ≤ n1 ∧ ¬ n2 + m < n1 ∧ even(n1) → p(a[n1]), ¬ even(n2 + m) ∨ ¬ p(a[n2 + m]), countevn(a, m, n2 + m, p) = n2 / 2 ∨ ¬(m ≤ n1 ∧ n1 < n2 + m ∧ even(n1) → p(a[n1])) ⊦
Used simplifier rules: c: ⊦ m + n = n + m; from specification nat-basic a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic ⊦ ¬ n < n; (s) ⊦ m + n < m + n0 ↔ n < n0; (s) ⊦ m ≤ m + n; (s)
| a ≠ [], countevn(a, m, n2 + m, p) ≠ n2 / 2 + 1, m < # a, n2 + m < # a, odd(m), odd(n2), even(n2 + m) → p(a[n2 + m]), ∀ n1. m ≤ n1 ∧ ¬ n2 + m < n1 ∧ even(n1) → p(a[n1]), ¬ even(n2 + m) ∨ ¬ p(a[n2 + m]), countevn(a, m, n2 + m, p) = n2 / 2 ∨ ¬(m ≤ n1 ∧ n1 < n2 + m ∧ even(n1) → p(a[n1])) ⊦ |
⊦ even(m + n) ↔ even(m) ∧ even(n) ∨ odd(m) ∧ odd(n)
Used simplifier rules: ⊦ odd(n) → ¬ even(n); (s) Used terms: n2, m
| ⊦ even(m + n) ↔ even(m) ∧ even(n) ∨ odd(m) ∧ odd(n) |
| a ≠ [], countevn(a, m, n2 + m, p) ≠ n2 / 2, n2 + m < # a, m < # a, even(n2), odd(m), even(n2 + m) → p(a[n2 + m]), ∀ n1. m ≤ n1 ∧ ¬ n2 + m < n1 ∧ even(n1) → p(a[n1]), countevn(a, m, n2 + m, p) = n2 / 2 ∨ ¬(m ≤ n1 ∧ n1 < n2 + m ∧ even(n1) → p(a[n1])), ¬ even(n2 + m) ∨ ¬ p(a[n2 + m]) ⊦ |
a ≠ [], countevn(a, m, n2 + m, p) ≠ n2 / 2, n2 ≠ 0, n1 < n2 + m, n2 + m < # a, m < # a, n1 + 1 < # a, n1 < # a, even(n1), even(n2), odd(m), m ≤ n1, ¬ p(a[n1]), ∀ n1. m ≤ n1 ∧ ¬ n2 + m < n1 ∧ even(n1) → p(a[n1]) ⊦
Used simplifier rules: c: ⊦ m + n = n + m; from specification nat-basic a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic ⊦ m < m + n ↔ n ≠ 0; (s) ⊦ m +1 = m + 1; (s) ⊦ m < n → n ≠ 0; (s) fle-01: ⊦ m ≤ n ∧ n < n0 → m < n0; (forward) from specification nat trans-nat: ⊦ n < n0 ∧ n0 < n1 → n < n1; (forward) from specification nat-basic lf: ⊦ m < n ∧ n < n0 → m +1 < n0; (forward) from specification nat-basic f: ⊦ m < n → n ≠ 0; (forward) from specification nat-basic ⊦ odd(n) → ¬ even(n); (s) ⊦ even(m) → (even(m + n) ↔ even(n)); (s)
| a ≠ [], countevn(a, m, n2 + m, p) ≠ n2 / 2, n2 ≠ 0, n1 < n2 + m, n2 + m < # a, m < # a, n1 + 1 < # a, n1 < # a, even(n1), even(n2), odd(m), m ≤ n1, ¬ p(a[n1]), ∀ n1. m ≤ n1 ∧ ¬ n2 + m < n1 ∧ even(n1) → p(a[n1]) ⊦ |
Used simplifier rules: ⊦ m < n → ¬ n < m; (s) Used terms: n1
The following image shows the proof tree of sequent calculus. The proved goal is at the bottom. You can click on the nodes to view additional rules. See here for details on colors in a proof tree.