| srowsorted(mx, #r mx, mx), c0 < #c mx, c < #c mx, c < c0, m ≤ n, n ≤ #r mx ⊦ count(mx[c]c, m, n, λ j. j < i) ≥ countevn(mx[c0]c, m, n, λ j. j < i) |
c < c0, c < #c mx, c0 < #c mx, srowsorted(mx, #r mx, mx), n ≤ #r mx, m ≤ n, ¬ count(mx[c]c, m, n, λ j. j < i) ≥ countevn(mx[c0]c, m, n, λ j. j < i) ⊦
| c < c0, c < #c mx, c0 < #c mx, srowsorted(mx, #r mx, mx), n ≤ #r mx, m ≤ n, ¬ count(mx[c]c, m, n, λ j. j < i) ≥ countevn(mx[c0]c, m, n, λ j. j < i) ⊦ |
c0 < #c mx, c < #c mx, c < c0, srowsorted(mx, #r mx, mx), m ≤ n0 +1, n0 +1 ≤ #r mx, ¬ count(mx[c]c, m, n0 +1, λ j. j < i) ≥ countevn(mx[c0]c, m, n0 +1, λ j. j < i), ∀ c, c0, mx, m, i. ¬ ( c < c0 ∧ c < #c mx ∧ c0 < #c mx ∧ srowsorted(mx, #r mx, mx) ∧ n0 ≤ #r mx ∧ m ≤ n0 ∧ ¬ count(mx[c]c, m, n0, λ j. j < i) ≥ countevn(mx[c0]c, m, n0, λ j. j < i)) ⊦
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 ≥ m ↔ m ≤ n; (s) ⊦ m ≤ n ↔ ¬ n < m; (ss) f: ⊦ m < n → n ≠ 0; (forward) from specification nat-basic lf: ⊦ m < n ∧ n < n0 → m +1 < n0; (forward) from specification nat-basic trans-nat: ⊦ n < n0 ∧ n0 < n1 → n < n1; (forward) from specification nat-basic ⊦ # mx[c]c = #r mx; (s) ⊦ 0 ≤ m; (s)
| c0 < #c mx, c < #c mx, c < c0, srowsorted(mx, #r mx, mx), m ≤ n0 +1, n0 +1 ≤ #r mx, ¬ count(mx[c]c, m, n0 +1, λ j. j < i) ≥ countevn(mx[c0]c, m, n0 +1, λ j. j < i), ∀ c, c0, mx, m, i. ¬ ( c < c0 ∧ c < #c mx ∧ c0 < #c mx ∧ srowsorted(mx, #r mx, mx) ∧ n0 ≤ #r mx ∧ m ≤ n0 ∧ ¬ count(mx[c]c, m, n0, λ j. j < i) ≥ countevn(mx[c0]c, m, n0, λ j. j < i)) ⊦ |
count(mx[c]c, m, n0 + 1, λ j. j < i) < countevn(mx[c0]c, m, n0 + 1, λ j. j < i), n0 < #r mx, c0 < #c mx, c < #c mx, c < c0, c + 1 < #c mx, srowsorted(mx, #r mx, mx), m ≤ n0 + 1, m ≤ #r mx, ∀ c1, c2, mx0, m0, i0. ¬ c1 < c2 ∨ ¬ c1 < #c mx0 ∨ ¬ c2 < #c mx0 ∨ ¬ srowsorted(mx0, #r mx0, mx0) ∨ ¬ n0 ≤ #r mx0 ∨ ¬ m0 ≤ n0 ∨ countevn(mx0[c2]c, m0, n0, λ j. j < i0) ≤ count(mx0[c1]c, m0, n0, λ j. j < i0) ⊦
Used simplifier rules: ⊦ m +1 = m + 1; (s) ⊦ m < n → n ≠ 0; (s) 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 c: ⊦ m + n = n + m; from specification nat-basic a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic le-one: ⊦ m ≤ n + 1 ∧ n < n0 → m ≤ n0; (forward) from specification nat ⊦ n ≥ m ↔ m ≤ n; (s) ⊦ m ≤ n ↔ ¬ n < m; (ss) ⊦ m + 1 ≤ n ↔ m < n; (s)
| count(mx[c]c, m, n0 + 1, λ j. j < i) < countevn(mx[c0]c, m, n0 + 1, λ j. j < i), n0 < #r mx, c0 < #c mx, c < #c mx, c < c0, c + 1 < #c mx, srowsorted(mx, #r mx, mx), m ≤ n0 + 1, m ≤ #r mx, ∀ c1, c2, mx0, m0, i0. ¬ c1 < c2 ∨ ¬ c1 < #c mx0 ∨ ¬ c2 < #c mx0 ∨ ¬ srowsorted(mx0, #r mx0, mx0) ∨ ¬ n0 ≤ #r mx0 ∨ ¬ m0 ≤ n0 ∨ countevn(mx0[c2]c, m0, n0, λ j. j < i0) ≤ count(mx0[c1]c, m0, n0, λ j. j < i0) ⊦ |
m ≤ n, n ≤ # x ⊦ count(x, m, n + 1, p) = count(x, m, n, p) + (p(x[n]) ⊃ 1;0)
c + 1 < #c mx, c < c0, c < #c mx, c0 < #c mx, n0 < #r mx, count(mx[c]c, m, n0, λ j. j < i) + (mx[c]c[n0] < i ⊃ 1;0) < countevn(mx[c0]c, m, n0 + 1, λ j. j < i), srowsorted(mx, #r mx, mx), m ≤ #r mx, m ≤ n0 + 1, m ≤ n0, n0 ≤ # mx[c]c, ∀ c1, c2, mx0, m0, i0. ¬ c1 < c2 ∨ ¬ c1 < #c mx0 ∨ ¬ c2 < #c mx0 ∨ ¬ srowsorted(mx0, #r mx0, mx0) ∨ ¬ n0 ≤ #r mx0 ∨ ¬ m0 ≤ n0 ∨ countevn(mx0[c2]c, m0, n0, λ j. j < i0) ≤ count(mx0[c1]c, m0, n0, λ j. j < i0) ⊦
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 + n ≤ m + n0 ↔ n ≤ n0; (s) ⊦ m < n + 1 ↔ ¬ n < m; (s) ⊦ ¬ n < n; (s) m ≤ # x ⊦ count(x, m, m, p) = 0; (s) ⊦ # mx[c]c = #r mx; (s) ⊦ m + 1 ≤ n ↔ m < n; (s) ⊦ m < n ↔ ¬ n ≤ m; (ss) ⊦ m < n → (n ≤ m ↔ false); (s) a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic c: ⊦ m + n = n + m; from specification nat-basic Used terms: mx[c]c, m, n0, λ j. j < i
| m ≤ n, n ≤ # x ⊦ count(x, m, n + 1, p) = count(x, m, n, p) + (p(x[n]) ⊃ 1;0) |
| c + 1 < #c mx, c < c0, c < #c mx, c0 < #c mx, n0 < #r mx, count(mx[c]c, m, n0, λ j. j < i) + (mx[c]c[n0] < i ⊃ 1;0) < countevn(mx[c0]c, m, n0 + 1, λ j. j < i), srowsorted(mx, #r mx, mx), m ≤ #r mx, m ≤ n0 + 1, m ≤ n0, n0 ≤ # mx[c]c, ∀ c1, c2, mx0, m0, i0. ¬ c1 < c2 ∨ ¬ c1 < #c mx0 ∨ ¬ c2 < #c mx0 ∨ ¬ srowsorted(mx0, #r mx0, mx0) ∨ ¬ n0 ≤ #r mx0 ∨ ¬ m0 ≤ n0 ∨ countevn(mx0[c2]c, m0, n0, λ j. j < i0) ≤ count(mx0[c1]c, m0, n0, λ j. j < i0) ⊦ |
m < #r mx, count(mx[c]c, m, n0, λ j. j < i) + (mx[n0, c] < i ⊃ 1;0) < countevn(mx[c0]c, m, n0, λ j. j < i) + (even(n0) ∧ mx[n0, c0] < i ⊃ 1;0), c + 1 < #c mx, c < c0, c < #c mx, c0 < #c mx, n0 < #r mx, srowsorted(mx, #r mx, mx), m ≤ n0 + 1, m ≤ n0, ∀ c1, c2, mx0, m0, i0. ¬ c1 < c2 ∨ ¬ c1 < #c mx0 ∨ ¬ c2 < #c mx0 ∨ ¬ srowsorted(mx0, #r mx0, mx0) ∨ ¬ n0 ≤ #r mx0 ∨ ¬ m0 ≤ n0 ∨ countevn(mx0[c2]c, m0, n0, λ j. j < i0) ≤ count(mx0[c1]c, m0, n0, λ j. j < i0) ⊦
Used simplifier rules: countevn-rec: m ≤ n, n ≤ # a ⊦ countevn(a, m, n + 1, p) = countevn(a, m, n, p) + (even(n) ∧ p(a[n]) ⊃ 1;0); ⊦ 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 ⊦ mx[c]c[r] = mx[r, c]; (s) ⊦ # mx[c]c = #r mx; (s)
| m < #r mx, count(mx[c]c, m, n0, λ j. j < i) + (mx[n0, c] < i ⊃ 1;0) < countevn(mx[c0]c, m, n0, λ j. j < i) + (even(n0) ∧ mx[n0, c0] < i ⊃ 1;0), c + 1 < #c mx, c < c0, c < #c mx, c0 < #c mx, n0 < #r mx, srowsorted(mx, #r mx, mx), m ≤ n0 + 1, m ≤ n0, ∀ c1, c2, mx0, m0, i0. ¬ c1 < c2 ∨ ¬ c1 < #c mx0 ∨ ¬ c2 < #c mx0 ∨ ¬ srowsorted(mx0, #r mx0, mx0) ∨ ¬ n0 ≤ #r mx0 ∨ ¬ m0 ≤ n0 ∨ countevn(mx0[c2]c, m0, n0, λ j. j < i0) ≤ count(mx0[c1]c, m0, n0, λ j. j < i0) ⊦ |
n0 < #r mx, c0 < #c mx, c < #c mx, c < c0, c + 1 < #c mx, count(mx[c]c, m, n0, λ j. j < i) + (mx[n0, c] < i ⊃ 1;0) < countevn(mx[c0]c, m, n0, λ j. j < i) + (even(n0) ∧ mx[n0, c0] < i ⊃ 1;0), m < #r mx, srowsorted(mx, #r mx, mx), m ≤ n0, m ≤ n0 + 1, ¬ c < c0 ∨ ¬ c < #c mx ∨ ¬ c0 < #c mx ∨ ¬ srowsorted(mx, #r mx, mx) ∨ ¬ n0 ≤ #r mx ∨ ¬ m ≤ n0 ∨ countevn(mx[c0]c, m, n0, λ j. j < i) ≤ count(mx[c]c, m, n0, λ j. j < i) ⊦
Used terms: c, c0, mx, m, i
| n0 < #r mx, c0 < #c mx, c < #c mx, c < c0, c + 1 < #c mx, count(mx[c]c, m, n0, λ j. j < i) + (mx[n0, c] < i ⊃ 1;0) < countevn(mx[c0]c, m, n0, λ j. j < i) + (even(n0) ∧ mx[n0, c0] < i ⊃ 1;0), m < #r mx, srowsorted(mx, #r mx, mx), m ≤ n0, m ≤ n0 + 1, ¬ c < c0 ∨ ¬ c < #c mx ∨ ¬ c0 < #c mx ∨ ¬ srowsorted(mx, #r mx, mx) ∨ ¬ n0 ≤ #r mx ∨ ¬ m ≤ n0 ∨ countevn(mx[c0]c, m, n0, λ j. j < i) ≤ count(mx[c]c, m, n0, λ j. j < i) ⊦ |
m < #r mx, count(mx[c]c, m, n0, λ j. j < i) + (mx[n0, c] < i ⊃ 1;0) < countevn(mx[c0]c, m, n0, λ j. j < i) + (even(n0) ∧ mx[n0, c0] < i ⊃ 1;0), c + 1 < #c mx, c < c0, c < #c mx, c0 < #c mx, n0 < #r mx, srowsorted(mx, #r mx, mx), m ≤ n0 + 1, m ≤ n0, countevn(mx[c0]c, m, n0, λ j. j < i) ≤ count(mx[c]c, m, n0, λ j. j < i) ⊦
Used simplifier rules: ⊦ m < n → m ≤ n; (s)
| m < #r mx, count(mx[c]c, m, n0, λ j. j < i) + (mx[n0, c] < i ⊃ 1;0) < countevn(mx[c0]c, m, n0, λ j. j < i) + (even(n0) ∧ mx[n0, c0] < i ⊃ 1;0), c + 1 < #c mx, c < c0, c < #c mx, c0 < #c mx, n0 < #r mx, srowsorted(mx, #r mx, mx), m ≤ n0 + 1, m ≤ n0, countevn(mx[c0]c, m, n0, λ j. j < i) ≤ count(mx[c]c, m, n0, λ j. j < i) ⊦ |
n0 < #r mx, c0 < #c mx, c < #c mx, c < c0, c + 1 < #c mx, m < #r mx, count(mx[c]c, m, n0, λ j. j < i) + 1 < countevn(mx[c0]c, m, n0, λ j. j < i) + (even(n0) ∧ mx[n0, c0] < i ⊃ 1;0), mx[n0, c] < i, srowsorted(mx, #r mx, mx), countevn(mx[c0]c, m, n0, λ j. j < i) ≤ count(mx[c]c, m, n0, λ j. j < i), m ≤ n0, m ≤ n0 + 1 ⊦
n0 < #r mx, c0 < #c mx, c < #c mx, c < c0, c + 1 < #c mx, m < #r mx, count(mx[c]c, m, n0, λ j. j < i) + 0 < countevn(mx[c0]c, m, n0, λ j. j < i) + (even(n0) ∧ mx[n0, c0] < i ⊃ 1;0), srowsorted(mx, #r mx, mx), countevn(mx[c0]c, m, n0, λ j. j < i) ≤ count(mx[c]c, m, n0, λ j. j < i), m ≤ n0, m ≤ n0 + 1, ¬ mx[n0, c] < i ⊦
| n0 < #r mx, c0 < #c mx, c < #c mx, c < c0, c + 1 < #c mx, m < #r mx, count(mx[c]c, m, n0, λ j. j < i) + 1 < countevn(mx[c0]c, m, n0, λ j. j < i) + (even(n0) ∧ mx[n0, c0] < i ⊃ 1;0), mx[n0, c] < i, srowsorted(mx, #r mx, mx), countevn(mx[c0]c, m, n0, λ j. j < i) ≤ count(mx[c]c, m, n0, λ j. j < i), m ≤ n0, m ≤ n0 + 1 ⊦ |
Used simplifier rules: ⊦ n + 0 = n; (s) f: ⊦ m < n → n ≠ 0; (forward) from specification nat-basic fle: ⊦ m < n ∧ n ≤ n0 → m < n0; (forward) from specification nat ⊦ m < n → n ≠ 0; (s) ⊦ ¬ m + n < m; (s) a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic c: ⊦ m + n = n + m; from specification nat-basic ⊦ m ≤ m0 ∧ n ≤ n0 → ¬ m0 + n0 < m + n; (s)
| n0 < #r mx, c0 < #c mx, c < #c mx, c < c0, c + 1 < #c mx, m < #r mx, count(mx[c]c, m, n0, λ j. j < i) + 0 < countevn(mx[c0]c, m, n0, λ j. j < i) + (even(n0) ∧ mx[n0, c0] < i ⊃ 1;0), srowsorted(mx, #r mx, mx), countevn(mx[c0]c, m, n0, λ j. j < i) ≤ count(mx[c]c, m, n0, λ j. j < i), m ≤ n0, m ≤ n0 + 1, ¬ mx[n0, c] < i ⊦ |
countevn(mx[c0]c, m, n0, λ j. j < i) = count(mx[c]c, m, n0, λ j. j < i), mx[n0, c0] < i, m < #r mx, c + 1 < #c mx, c < c0, c < #c mx, c0 < #c mx, n0 < #r mx, even(n0), srowsorted(mx, #r mx, mx), m ≤ n0 + 1, m ≤ n0, ¬ mx[n0, c] < i ⊦
Used simplifier rules: ⊦ m ≤ m; (s) ⊦ m ≤ n → (n ≤ m ↔ m = n); (s) ⊦ m < n ↔ ¬ n ≤ m; (ss) 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 < m + n ↔ n ≠ 0; (s) fle-01: ⊦ m ≤ n ∧ n < n0 → m < n0; (forward) from specification nat ⊦ n + 0 = n; (s)
| countevn(mx[c0]c, m, n0, λ j. j < i) = count(mx[c]c, m, n0, λ j. j < i), mx[n0, c0] < i, m < #r mx, c + 1 < #c mx, c < c0, c < #c mx, c0 < #c mx, n0 < #r mx, even(n0), srowsorted(mx, #r mx, mx), m ≤ n0 + 1, m ≤ n0, ¬ mx[n0, c] < i ⊦ |
⊦ m ≤ #r mx → ( srowsorted(mx, m, mx0) ↔ #r mx = #r mx0 ∧ #c mx = #c mx0 ∧ (∀ r. r < #r mx → (r < m ⊃ perm(mx0[r]r, mx[r]r) ∧ ordered≤((even(r) ⊃ mx[r]r;rev(mx[r]r)));mx0[r]r = mx[r]r)))
#c mx = #c mx, #r mx = #r mx, countevn(mx[c0]c, m, n0, λ j. j < i) = count(mx[c]c, m, n0, λ j. j < i), n0 < #r mx, c0 < #c mx, c < #c mx, c < c0, c + 1 < #c mx, m < #r mx, mx[n0, c0] < i, even(n0), m ≤ n0, m ≤ n0 + 1, #r mx ≤ #r mx, ¬ mx[n0, c] < i, ∀ r. r < #r mx → (r < #r mx ⊃ perm(mx[r]r, mx[r]r) ∧ ordered≤((even(r) ⊃ mx[r]r;rev(mx[r]r)));mx[r]r = mx[r]r) ⊦
Used simplifier rules: ⊦ m ≤ n ↔ ¬ n < m; (ss) ⊦ ¬ n < n; (s) Used terms: mx, #r mx, mx
| ⊦ m ≤ #r mx → ( srowsorted(mx, m, mx0) ↔ #r mx = #r mx0 ∧ #c mx = #c mx0 ∧ (∀ r. r < #r mx → (r < m ⊃ perm(mx0[r]r, mx[r]r) ∧ ordered≤((even(r) ⊃ mx[r]r;rev(mx[r]r)));mx0[r]r = mx[r]r))) |
| #c mx = #c mx, #r mx = #r mx, countevn(mx[c0]c, m, n0, λ j. j < i) = count(mx[c]c, m, n0, λ j. j < i), n0 < #r mx, c0 < #c mx, c < #c mx, c < c0, c + 1 < #c mx, m < #r mx, mx[n0, c0] < i, even(n0), m ≤ n0, m ≤ n0 + 1, #r mx ≤ #r mx, ¬ mx[n0, c] < i, ∀ r. r < #r mx → (r < #r mx ⊃ perm(mx[r]r, mx[r]r) ∧ ordered≤((even(r) ⊃ mx[r]r;rev(mx[r]r)));mx[r]r = mx[r]r) ⊦ |
countevn(mx[c0]c, m, n0, λ j. j < i) = count(mx[c]c, m, n0, λ j. j < i), mx[n0, c0] < i, m < #r mx, c + 1 < #c mx, c < c0, c < #c mx, c0 < #c mx, n0 < #r mx, even(n0), m ≤ n0 + 1, m ≤ n0, ¬ mx[n0, c] < i, ∀ r. r < #r mx → ordered≤((even(r) ⊃ mx[r]r;rev(mx[r]r))) ⊦
Used simplifier rules: ⊦ perm(x, x); (s) ⊦ m ≤ m; (s)
| countevn(mx[c0]c, m, n0, λ j. j < i) = count(mx[c]c, m, n0, λ j. j < i), mx[n0, c0] < i, m < #r mx, c + 1 < #c mx, c < c0, c < #c mx, c0 < #c mx, n0 < #r mx, even(n0), m ≤ n0 + 1, m ≤ n0, ¬ mx[n0, c] < i, ∀ r. r < #r mx → ordered≤((even(r) ⊃ mx[r]r;rev(mx[r]r))) ⊦ |
countevn(mx[c0]c, m, n0, λ j. j < i) = count(mx[c]c, m, n0, λ j. j < i), n0 < #r mx, c0 < #c mx, c < #c mx, c < c0, c + 1 < #c mx, m < #r mx, mx[n0, c0] < i, even(n0), m ≤ n0, m ≤ n0 + 1, ¬ mx[n0, c] < i, n0 < #r mx → ordered≤((even(n0) ⊃ mx[n0]r;rev(mx[n0]r))) ⊦
Used terms: n0
| countevn(mx[c0]c, m, n0, λ j. j < i) = count(mx[c]c, m, n0, λ j. j < i), n0 < #r mx, c0 < #c mx, c < #c mx, c < c0, c + 1 < #c mx, m < #r mx, mx[n0, c0] < i, even(n0), m ≤ n0, m ≤ n0 + 1, ¬ mx[n0, c] < i, n0 < #r mx → ordered≤((even(n0) ⊃ mx[n0]r;rev(mx[n0]r))) ⊦ |
countevn(mx[c0]c, m, n0, λ j. j < i) = count(mx[c]c, m, n0, λ j. j < i), mx[n0, c0] < i, m < #r mx, c + 1 < #c mx, c < c0, c < #c mx, c0 < #c mx, n0 < #r mx, even(n0), ordered≤(mx[n0]r), m ≤ n0 + 1, m ≤ n0, ¬ mx[n0, c] < i ⊦
| countevn(mx[c0]c, m, n0, λ j. j < i) = count(mx[c]c, m, n0, λ j. j < i), mx[n0, c0] < i, m < #r mx, c + 1 < #c mx, c < c0, c < #c mx, c0 < #c mx, n0 < #r mx, even(n0), ordered≤(mx[n0]r), m ≤ n0 + 1, m ≤ n0, ¬ mx[n0, c] < i ⊦ |
⊦ ordered≤(x) ↔ (∀ m, n. m ≤ n ∧ n < # x → ¬ x[n] < x[m])
countevn(mx[c0]c, m, n0, λ j. j < i) = count(mx[c]c, m, n0, λ j. j < i), n0 < #r mx, c0 < #c mx, c < #c mx, c < c0, c + 1 < #c mx, m < #r mx, mx[n0, c0] < i, even(n0), m ≤ n0, m ≤ n0 + 1, ¬ mx[n0, c] < i, ∀ m, n. m ≤ n ∧ n < # mx[n0]r → ¬ mx[n0]r[n] < mx[n0]r[m] ⊦
Used terms: mx[n0]r
| ⊦ ordered≤(x) ↔ (∀ m, n. m ≤ n ∧ n < # x → ¬ x[n] < x[m]) |
| countevn(mx[c0]c, m, n0, λ j. j < i) = count(mx[c]c, m, n0, λ j. j < i), n0 < #r mx, c0 < #c mx, c < #c mx, c < c0, c + 1 < #c mx, m < #r mx, mx[n0, c0] < i, even(n0), m ≤ n0, m ≤ n0 + 1, ¬ mx[n0, c] < i, ∀ m, n. m ≤ n ∧ n < # mx[n0]r → ¬ mx[n0]r[n] < mx[n0]r[m] ⊦ |
countevn(mx[c0]c, m, n0, λ j. j < i) = count(mx[c]c, m, n0, λ j. j < i), mx[n0, c0] < i, m < #r mx, c + 1 < #c mx, c < c0, c < #c mx, c0 < #c mx, n0 < #r mx, even(n0), m ≤ n0 + 1, m ≤ n0, ¬ mx[n0, c] < i, ∀ m0, n. m0 ≤ n ∧ n < #c mx → ¬ mx[n0, n] < mx[n0, m0] ⊦
Used simplifier rules: ⊦ mx[r]r[c] = mx[r, c]; (s) ⊦ # mx[r]r = #c mx; (s)
| countevn(mx[c0]c, m, n0, λ j. j < i) = count(mx[c]c, m, n0, λ j. j < i), mx[n0, c0] < i, m < #r mx, c + 1 < #c mx, c < c0, c < #c mx, c0 < #c mx, n0 < #r mx, even(n0), m ≤ n0 + 1, m ≤ n0, ¬ mx[n0, c] < i, ∀ m0, n. m0 ≤ n ∧ n < #c mx → ¬ mx[n0, n] < mx[n0, m0] ⊦ |
Used simplifier rules: ⊦ m < n → m ≤ n; (s) nll: ⊦ ¬ b < a ∧ b < c → a < c; (forward) from specification oelem nnn: ⊦ ¬ c < b ∧ ¬ a < c → ¬ a < b; (forward) from specification oelem Used terms: c, c0
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.