| #r mx = #r mx0, #c mx = #c mx0, c0 < #c mx, srowsorted(mx0, #r mx0, mx0), scolsorted(mx, #c mx, mx0), ∀ c. c < #c mx → count(mx[c]c, λ j. j < i) ≤ count(mx[c0]c, λ j. j < i) ⊦ #clean0rows(mx, i) ≥ #clean0rows(mx0, i) + min (countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx, λ j. j < i), countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx, λ j. j < i)) |
#c mx = #c mx0, #r mx = #r mx0, c0 < #c mx, scolsorted(mx, #c mx, mx0), srowsorted(mx0, #r mx0, mx0), ¬ #clean0rows(mx, i) ≥ #clean0rows(mx0, i) + min(countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx, λ j. j < i), countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx, λ j. j < i)), ∀ c. c < #c mx → count(mx[c]c, λ j. j < i) ≤ count(mx[c0]c, λ j. j < i) ⊦
| #c mx = #c mx0, #r mx = #r mx0, c0 < #c mx, scolsorted(mx, #c mx, mx0), srowsorted(mx0, #r mx0, mx0), ¬ #clean0rows(mx, i) ≥ #clean0rows(mx0, i) + min(countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx, λ j. j < i), countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx, λ j. j < i)), ∀ c. c < #c mx → count(mx[c]c, λ j. j < i) ≤ count(mx[c0]c, λ j. j < i) ⊦ |
#c mx = #c mx0, #r mx = #r mx0, #clean0rows(mx, i) < #clean0rows(mx0, i) + min (countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i), countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i)), c0 < #c mx0, scolsorted(mx, #c mx0, mx0), srowsorted(mx0, #r mx0, mx0), ∀ c. c < #c mx0 → count(mx[c]c, λ j. j < i) ≤ count(mx[c0]c, λ j. j < i) ⊦
Used simplifier rules: ⊦ m < n → n ≠ 0; (s) lf-01: ⊦ m < n ∧ n = n0 → m < n0; (forward) from specification nat-basic f: ⊦ m < n → n ≠ 0; (forward) from specification nat-basic ⊦ m ≤ n ↔ ¬ n < m; (ss) ⊦ n ≥ m ↔ m ≤ n; (s)
| #c mx = #c mx0, #r mx = #r mx0, #clean0rows(mx, i) < #clean0rows(mx0, i) + min (countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i), countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i)), c0 < #c mx0, scolsorted(mx, #c mx0, mx0), srowsorted(mx0, #r mx0, mx0), ∀ c. c < #c mx0 → count(mx[c]c, λ j. j < i) ≤ count(mx[c0]c, λ j. j < i) ⊦ |
#c mx ≠ 0, #r mx = #r mx0, #c mx = #c mx0 ⊦ scolsorted(mx, #c mx0, mx0) → ¬ #clean0rows(mx, i) < #clean0rows(mx0, i)
#c mx = #c mx0, #r mx = #r mx0, c0 < #c mx0, #clean0rows(mx, i) < #clean0rows(mx0, i) + min (countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i), countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i)), scolsorted(mx, #c mx0, mx0), srowsorted(mx0, #r mx0, mx0), scolsorted(mx, #c mx0, mx0) → ¬ #clean0rows(mx, i) < #clean0rows(mx0, i), ∀ c. c < #c mx0 → count(mx[c]c, λ j. j < i) ≤ count(mx[c0]c, λ j. j < i) ⊦
Used simplifier rules: f: ⊦ m < n → n ≠ 0; (forward) from specification nat-basic lf-01: ⊦ m < n ∧ n = n0 → m < n0; (forward) from specification nat-basic Used terms: mx, mx0, i
| #c mx ≠ 0, #r mx = #r mx0, #c mx = #c mx0 ⊦ scolsorted(mx, #c mx0, mx0) → ¬ #clean0rows(mx, i) < #clean0rows(mx0, i) |
| #c mx = #c mx0, #r mx = #r mx0, c0 < #c mx0, #clean0rows(mx, i) < #clean0rows(mx0, i) + min (countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i), countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i)), scolsorted(mx, #c mx0, mx0), srowsorted(mx0, #r mx0, mx0), scolsorted(mx, #c mx0, mx0) → ¬ #clean0rows(mx, i) < #clean0rows(mx0, i), ∀ c. c < #c mx0 → count(mx[c]c, λ j. j < i) ≤ count(mx[c0]c, λ j. j < i) ⊦ |
#c mx = #c mx0, #r mx = #r mx0, min(countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i), countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i)) ≠ 0, c0 < #c mx0, #clean0rows(mx, i) < #clean0rows(mx0, i) + min (countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i), countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i)), scolsorted(mx, #c mx0, mx0), srowsorted(mx0, #r mx0, mx0), #clean0rows(mx0, i) ≤ #clean0rows(mx, i), ∀ c. c < #c mx0 → count(mx[c]c, λ j. j < i) ≤ count(mx[c0]c, λ j. j < i) ⊦
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) fle-01: ⊦ m ≤ n ∧ n < n0 → m < n0; (forward) from specification nat ⊦ m < n ↔ ¬ n ≤ m; (ss)
| #c mx = #c mx0, #r mx = #r mx0, min(countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i), countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i)) ≠ 0, c0 < #c mx0, #clean0rows(mx, i) < #clean0rows(mx0, i) + min (countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i), countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i)), scolsorted(mx, #c mx0, mx0), srowsorted(mx0, #r mx0, mx0), #clean0rows(mx0, i) ≤ #clean0rows(mx, i), ∀ c. c < #c mx0 → count(mx[c]c, λ j. j < i) ≤ count(mx[c0]c, λ j. j < i) ⊦ |
⊦ ¬ #r mx < #clean0rows(mx, i)
#c mx = #c mx0, #r mx = #r mx0, min(countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i), countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i)) ≠ 0, #clean0rows(mx, i) < #clean0rows(mx0, i) + min (countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i), countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i)), c0 < #c mx0, scolsorted(mx, #c mx0, mx0), srowsorted(mx0, #r mx0, mx0), #clean0rows(mx0, i) ≤ #clean0rows(mx, i), ¬ #r mx < #clean0rows(mx, i), ∀ c. c < #c mx0 → count(mx[c]c, λ j. j < i) ≤ count(mx[c0]c, λ j. j < i) ⊦
Used terms: mx, i
| ⊦ ¬ #r mx < #clean0rows(mx, i) |
| #c mx = #c mx0, #r mx = #r mx0, min(countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i), countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i)) ≠ 0, #clean0rows(mx, i) < #clean0rows(mx0, i) + min (countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i), countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i)), c0 < #c mx0, scolsorted(mx, #c mx0, mx0), srowsorted(mx0, #r mx0, mx0), #clean0rows(mx0, i) ≤ #clean0rows(mx, i), ¬ #r mx < #clean0rows(mx, i), ∀ c. c < #c mx0 → count(mx[c]c, λ j. j < i) ≤ count(mx[c0]c, λ j. j < i) ⊦ |
#c mx = #c mx0, #r mx = #r mx0, min(countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i), countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i)) ≠ 0, c0 < #c mx0, #clean0rows(mx, i) < #clean0rows(mx0, i) + min (countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i), countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i)), scolsorted(mx, #c mx0, mx0), srowsorted(mx0, #r mx0, mx0), #clean0rows(mx0, i) ≤ #clean0rows(mx, i), #clean0rows(mx, i) ≤ #r mx0, #clean0rows(mx0, i) ≤ #r mx0, ∀ c. c < #c mx0 → count(mx[c]c, λ j. j < i) ≤ count(mx[c0]c, λ j. j < i) ⊦
Used simplifier rules: let: ⊦ n ≤ n0 ∧ n0 ≤ n1 → n ≤ n1; (forward) from specification nat ⊦ m < n ↔ ¬ n ≤ m; (ss)
| #c mx = #c mx0, #r mx = #r mx0, min(countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i), countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i)) ≠ 0, c0 < #c mx0, #clean0rows(mx, i) < #clean0rows(mx0, i) + min (countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i), countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i)), scolsorted(mx, #c mx0, mx0), srowsorted(mx0, #r mx0, mx0), #clean0rows(mx0, i) ≤ #clean0rows(mx, i), #clean0rows(mx, i) ≤ #r mx0, #clean0rows(mx0, i) ≤ #r mx0, ∀ c. c < #c mx0 → count(mx[c]c, λ j. j < i) ≤ count(mx[c0]c, λ j. j < i) ⊦ |
⊦ #clean0rows(mx, i) < #r mx → count(mx[#clean0rows(mx, i)]r, λ j. ¬ j < i) ≠ 0
#c mx = #c mx0, #r mx = #r mx0, min(countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i), countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i)) ≠ 0, #clean0rows(mx, i) < #clean0rows(mx0, i) + min (countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i), countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i)), c0 < #c mx0, scolsorted(mx, #c mx0, mx0), srowsorted(mx0, #r mx0, mx0), #clean0rows(mx0, i) ≤ #r mx0, #clean0rows(mx, i) ≤ #r mx0, #clean0rows(mx0, i) ≤ #clean0rows(mx, i), #clean0rows(mx, i) < #r mx → count(mx[#clean0rows(mx, i)]r, λ j. ¬ j < i) ≠ 0, ∀ c. c < #c mx0 → count(mx[c]c, λ j. j < i) ≤ count(mx[c0]c, λ j. j < i) ⊦
Used terms: mx, i
| ⊦ #clean0rows(mx, i) < #r mx → count(mx[#clean0rows(mx, i)]r, λ j. ¬ j < i) ≠ 0 |
| #c mx = #c mx0, #r mx = #r mx0, min(countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i), countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i)) ≠ 0, #clean0rows(mx, i) < #clean0rows(mx0, i) + min (countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i), countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i)), c0 < #c mx0, scolsorted(mx, #c mx0, mx0), srowsorted(mx0, #r mx0, mx0), #clean0rows(mx0, i) ≤ #r mx0, #clean0rows(mx, i) ≤ #r mx0, #clean0rows(mx0, i) ≤ #clean0rows(mx, i), #clean0rows(mx, i) < #r mx → count(mx[#clean0rows(mx, i)]r, λ j. ¬ j < i) ≠ 0, ∀ c. c < #c mx0 → count(mx[c]c, λ j. j < i) ≤ count(mx[c0]c, λ j. j < i) ⊦ |
#c mx = #c mx0, #r mx = #r mx0, min(countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i), countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i)) ≠ 0, c0 < #c mx0, #clean0rows(mx, i) < #clean0rows(mx0, i) + min (countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i), countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i)), scolsorted(mx, #c mx0, mx0), srowsorted(mx0, #r mx0, mx0), #clean0rows(mx0, i) ≤ #clean0rows(mx, i), #clean0rows(mx, i) ≤ #r mx0, #clean0rows(mx0, i) ≤ #r mx0, #clean0rows(mx, i) < #r mx0 → count(mx[#clean0rows(mx, i)]r, λ j. ¬ j < i) ≠ 0, ∀ c. c < #c mx0 → count(mx[c]c, λ j. j < i) ≤ count(mx[c0]c, λ j. j < i) ⊦
| #c mx = #c mx0, #r mx = #r mx0, min(countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i), countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i)) ≠ 0, c0 < #c mx0, #clean0rows(mx, i) < #clean0rows(mx0, i) + min (countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i), countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i)), scolsorted(mx, #c mx0, mx0), srowsorted(mx0, #r mx0, mx0), #clean0rows(mx0, i) ≤ #clean0rows(mx, i), #clean0rows(mx, i) ≤ #r mx0, #clean0rows(mx0, i) ≤ #r mx0, #clean0rows(mx, i) < #r mx0 → count(mx[#clean0rows(mx, i)]r, λ j. ¬ j < i) ≠ 0, ∀ c. c < #c mx0 → count(mx[c]c, λ j. j < i) ≤ count(mx[c0]c, λ j. j < i) ⊦ |
#c mx = #c mx0, #r mx = #r mx0, min(countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i), countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i)) ≠ 0, #clean0rows(mx, i) < #clean0rows(mx0, i) + min (countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i), countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i)), c0 < #c mx0, #clean0rows(mx, i) < #r mx0, scolsorted(mx, #c mx0, mx0), srowsorted(mx0, #r mx0, mx0), #clean0rows(mx0, i) ≤ #r mx0, #clean0rows(mx, i) ≤ #r mx0, #clean0rows(mx0, i) ≤ #clean0rows(mx, i), #clean0rows(mx, i) < #r mx0 → count(mx[#clean0rows(mx, i)]r, λ j. ¬ j < i) ≠ 0, ∀ c. c < #c mx0 → count(mx[c]c, λ j. j < i) ≤ count(mx[c0]c, λ j. j < i) ⊦
#c mx = #c mx0, #r mx = #r mx0, min(countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i), countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i)) ≠ 0, #clean0rows(mx, i) < #clean0rows(mx0, i) + min (countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i), countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i)), c0 < #c mx0, scolsorted(mx, #c mx0, mx0), srowsorted(mx0, #r mx0, mx0), #clean0rows(mx0, i) ≤ #r mx0, #clean0rows(mx, i) ≤ #r mx0, #clean0rows(mx0, i) ≤ #clean0rows(mx, i), ¬ #clean0rows(mx, i) < #r mx0, #clean0rows(mx, i) < #r mx0 → count(mx[#clean0rows(mx, i)]r, λ j. ¬ j < i) ≠ 0, ∀ c. c < #c mx0 → count(mx[c]c, λ j. j < i) ≤ count(mx[c0]c, λ j. j < i) ⊦
Used formulas: #clean0rows(mx, i) < #r mx0
| #c mx = #c mx0, #r mx = #r mx0, min(countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i), countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i)) ≠ 0, #clean0rows(mx, i) < #clean0rows(mx0, i) + min (countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i), countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i)), c0 < #c mx0, #clean0rows(mx, i) < #r mx0, scolsorted(mx, #c mx0, mx0), srowsorted(mx0, #r mx0, mx0), #clean0rows(mx0, i) ≤ #r mx0, #clean0rows(mx, i) ≤ #r mx0, #clean0rows(mx0, i) ≤ #clean0rows(mx, i), #clean0rows(mx, i) < #r mx0 → count(mx[#clean0rows(mx, i)]r, λ j. ¬ j < i) ≠ 0, ∀ c. c < #c mx0 → count(mx[c]c, λ j. j < i) ≤ count(mx[c0]c, λ j. j < i) ⊦ |
#c mx = #c mx0, #r mx = #r mx0, count(mx[#clean0rows(mx, i)]r, λ j. ¬ j < i) ≠ 0, min(countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i), countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i)) ≠ 0, c0 < #c mx0, #clean0rows(mx, i) < #clean0rows(mx0, i) + min (countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i), countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i)), #clean0rows(mx0, i) < #r mx0, #clean0rows(mx, i) < #r mx0, scolsorted(mx, #c mx0, mx0), srowsorted(mx0, #r mx0, mx0), #clean0rows(mx0, i) ≤ #clean0rows(mx, i), ∀ c. c < #c mx0 → count(mx[c]c, λ j. j < i) ≤ count(mx[c0]c, λ j. j < i) ⊦
Used simplifier rules: lf-01: ⊦ m < n ∧ n = n0 → m < n0; (forward) from specification nat-basic ⊦ m < n → m ≤ n; (s) ⊦ m < n → n ≠ 0; (s) fle-01: ⊦ m ≤ n ∧ n < n0 → m < n0; (forward) from specification nat f: ⊦ m < n → n ≠ 0; (forward) from specification nat-basic
| #c mx = #c mx0, #r mx = #r mx0, count(mx[#clean0rows(mx, i)]r, λ j. ¬ j < i) ≠ 0, min(countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i), countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i)) ≠ 0, c0 < #c mx0, #clean0rows(mx, i) < #clean0rows(mx0, i) + min (countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i), countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i)), #clean0rows(mx0, i) < #r mx0, #clean0rows(mx, i) < #r mx0, scolsorted(mx, #c mx0, mx0), srowsorted(mx0, #r mx0, mx0), #clean0rows(mx0, i) ≤ #clean0rows(mx, i), ∀ c. c < #c mx0 → count(mx[c]c, λ j. j < i) ≤ count(mx[c0]c, λ j. j < i) ⊦ |
⊦ count(x, p) = 0 ↔ (∀ n. n < # x → ¬ p(x[n]))
#c mx = #c mx0, #r mx = #r mx0, min(countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i), countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i)) ≠ 0, #clean0rows(mx, i) < #r mx0, #clean0rows(mx0, i) < #r mx0, #clean0rows(mx, i) < #clean0rows(mx0, i) + min (countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i), countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i)), c0 < #c mx0, scolsorted(mx, #c mx0, mx0), srowsorted(mx0, #r mx0, mx0), #clean0rows(mx0, i) ≤ #clean0rows(mx, i), ∀ c. c < #c mx0 → count(mx[c]c, λ j. j < i) ≤ count(mx[c0]c, λ j. j < i), ∃ n. ¬(n < # mx[#clean0rows(mx, i)]r → ¬ ¬ mx[#clean0rows(mx, i)]r[n] < i) ⊦
Used terms: mx[#clean0rows(mx, i)]r, λ j. ¬ j < i
| ⊦ count(x, p) = 0 ↔ (∀ n. n < # x → ¬ p(x[n])) |
| #c mx = #c mx0, #r mx = #r mx0, min(countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i), countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i)) ≠ 0, #clean0rows(mx, i) < #r mx0, #clean0rows(mx0, i) < #r mx0, #clean0rows(mx, i) < #clean0rows(mx0, i) + min (countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i), countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i)), c0 < #c mx0, scolsorted(mx, #c mx0, mx0), srowsorted(mx0, #r mx0, mx0), #clean0rows(mx0, i) ≤ #clean0rows(mx, i), ∀ c. c < #c mx0 → count(mx[c]c, λ j. j < i) ≤ count(mx[c0]c, λ j. j < i), ∃ n. ¬(n < # mx[#clean0rows(mx, i)]r → ¬ ¬ mx[#clean0rows(mx, i)]r[n] < i) ⊦ |
#c mx = #c mx0, #r mx = #r mx0, min(countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i), countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i)) ≠ 0, n < #c mx0, #clean0rows(mx, i) < #r mx0, #clean0rows(mx0, i) < #r mx0, #clean0rows(mx, i) < #clean0rows(mx0, i) + min (countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i), countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i)), c0 < #c mx0, scolsorted(mx, #c mx0, mx0), srowsorted(mx0, #r mx0, mx0), #clean0rows(mx0, i) ≤ #clean0rows(mx, i), ¬ mx[#clean0rows(mx, i), n] < i, ∀ c. c < #c mx0 → count(mx[c]c, λ j. j < i) ≤ count(mx[c0]c, λ j. j < i) ⊦
Used simplifier rules: lf-01: ⊦ m < n ∧ n = n0 → m < n0; (forward) from specification nat-basic ⊦ mx[r]r[c] = mx[r, c]; (s) ⊦ # mx[r]r = #c mx; (s)
| #c mx = #c mx0, #r mx = #r mx0, min(countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i), countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i)) ≠ 0, n < #c mx0, #clean0rows(mx, i) < #r mx0, #clean0rows(mx0, i) < #r mx0, #clean0rows(mx, i) < #clean0rows(mx0, i) + min (countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i), countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i)), c0 < #c mx0, scolsorted(mx, #c mx0, mx0), srowsorted(mx0, #r mx0, mx0), #clean0rows(mx0, i) ≤ #clean0rows(mx, i), ¬ mx[#clean0rows(mx, i), n] < i, ∀ c. c < #c mx0 → count(mx[c]c, λ j. j < i) ≤ count(mx[c0]c, λ j. j < i) ⊦ |
#c mx = #c mx0, #r mx = #r mx0, min(countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i), countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i)) ≠ 0, c0 < #c mx0, #clean0rows(mx, i) < #clean0rows(mx0, i) + min (countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i), countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i)), #clean0rows(mx0, i) < #r mx0, #clean0rows(mx, i) < #r mx0, n < #c mx0, scolsorted(mx, #c mx0, mx0), srowsorted(mx0, #r mx0, mx0), #clean0rows(mx0, i) ≤ #clean0rows(mx, i), ¬ mx[#clean0rows(mx, i), n] < i, n < #c mx0 → count(mx[n]c, λ j. j < i) ≤ count(mx[c0]c, λ j. j < i), ∀ c. c < #c mx0 → count(mx[c]c, λ j. j < i) ≤ count(mx[c0]c, λ j. j < i) ⊦
Used terms: n
| #c mx = #c mx0, #r mx = #r mx0, min(countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i), countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i)) ≠ 0, c0 < #c mx0, #clean0rows(mx, i) < #clean0rows(mx0, i) + min (countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i), countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i)), #clean0rows(mx0, i) < #r mx0, #clean0rows(mx, i) < #r mx0, n < #c mx0, scolsorted(mx, #c mx0, mx0), srowsorted(mx0, #r mx0, mx0), #clean0rows(mx0, i) ≤ #clean0rows(mx, i), ¬ mx[#clean0rows(mx, i), n] < i, n < #c mx0 → count(mx[n]c, λ j. j < i) ≤ count(mx[c0]c, λ j. j < i), ∀ c. c < #c mx0 → count(mx[c]c, λ j. j < i) ≤ count(mx[c0]c, λ j. j < i) ⊦ |
#c mx = #c mx0, #r mx = #r mx0, min(countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i), countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i)) ≠ 0, n < #c mx0, #clean0rows(mx, i) < #r mx0, #clean0rows(mx0, i) < #r mx0, #clean0rows(mx, i) < #clean0rows(mx0, i) + min (countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i), countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i)), c0 < #c mx0, scolsorted(mx, #c mx0, mx0), srowsorted(mx0, #r mx0, mx0), #clean0rows(mx0, i) ≤ #clean0rows(mx, i), count(mx[n]c, λ j. j < i) ≤ count(mx[c0]c, λ j. j < i), ¬ mx[#clean0rows(mx, i), n] < i, ∀ c. c < #c mx0 → count(mx[c]c, λ j. j < i) ≤ count(mx[c0]c, λ j. j < i) ⊦
| #c mx = #c mx0, #r mx = #r mx0, min(countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i), countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i)) ≠ 0, n < #c mx0, #clean0rows(mx, i) < #r mx0, #clean0rows(mx0, i) < #r mx0, #clean0rows(mx, i) < #clean0rows(mx0, i) + min (countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i), countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i)), c0 < #c mx0, scolsorted(mx, #c mx0, mx0), srowsorted(mx0, #r mx0, mx0), #clean0rows(mx0, i) ≤ #clean0rows(mx, i), count(mx[n]c, λ j. j < i) ≤ count(mx[c0]c, λ j. j < i), ¬ mx[#clean0rows(mx, i), n] < i, ∀ c. c < #c mx0 → count(mx[c]c, λ j. j < i) ≤ count(mx[c0]c, λ j. j < i) ⊦ |
#c mx = #c mx0, #r mx = #r mx0, min(countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i), countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i)) ≠ 0, c0 < #c mx0, #clean0rows(mx, i) < #clean0rows(mx0, i) + min (countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i), countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i)), #clean0rows(mx0, i) < #r mx0, #clean0rows(mx, i) < #r mx0, n < #c mx0, n < c0, scolsorted(mx, #c mx0, mx0), srowsorted(mx0, #r mx0, mx0), count(mx[n]c, λ j. j < i) ≤ count(mx[c0]c, λ j. j < i), #clean0rows(mx0, i) ≤ #clean0rows(mx, i), ¬ mx[#clean0rows(mx, i), n] < i, ∀ c. c < #c mx0 → count(mx[c]c, λ j. j < i) ≤ count(mx[c0]c, λ j. j < i) ⊦
#c mx = #c mx0, #r mx = #r mx0, min(countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i), countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i)) ≠ 0, c0 < #c mx0, #clean0rows(mx, i) < #clean0rows(mx0, i) + min (countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i), countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i)), #clean0rows(mx0, i) < #r mx0, #clean0rows(mx, i) < #r mx0, n < #c mx0, scolsorted(mx, #c mx0, mx0), srowsorted(mx0, #r mx0, mx0), count(mx[n]c, λ j. j < i) ≤ count(mx[c0]c, λ j. j < i), #clean0rows(mx0, i) ≤ #clean0rows(mx, i), ¬ n < c0, ¬ mx[#clean0rows(mx, i), n] < i, ∀ c. c < #c mx0 → count(mx[c]c, λ j. j < i) ≤ count(mx[c0]c, λ j. j < i) ⊦
Used formulas: n < c0
| #c mx = #c mx0, #r mx = #r mx0, min(countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i), countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i)) ≠ 0, c0 < #c mx0, #clean0rows(mx, i) < #clean0rows(mx0, i) + min (countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i), countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i)), #clean0rows(mx0, i) < #r mx0, #clean0rows(mx, i) < #r mx0, n < #c mx0, n < c0, scolsorted(mx, #c mx0, mx0), srowsorted(mx0, #r mx0, mx0), count(mx[n]c, λ j. j < i) ≤ count(mx[c0]c, λ j. j < i), #clean0rows(mx0, i) ≤ #clean0rows(mx, i), ¬ mx[#clean0rows(mx, i), n] < i, ∀ c. c < #c mx0 → count(mx[c]c, λ j. j < i) ≤ count(mx[c0]c, λ j. j < i) ⊦ |
#c mx = #c mx0, #r mx = #r mx0, min(countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i), countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i)) ≠ 0, n + 1 < #c mx0, n < c0, #clean0rows(mx, i) < #r mx0, #clean0rows(mx0, i) < #r mx0, #clean0rows(mx, i) < #clean0rows(mx0, i) + min (countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i), countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i)), c0 < #c mx0, n < #c mx0, scolsorted(mx, #c mx0, mx0), srowsorted(mx0, #r mx0, mx0), #clean0rows(mx0, i) ≤ #clean0rows(mx, i), count(mx[n]c, λ j. j < i) ≤ count(mx[c0]c, λ j. j < i), ¬ mx[#clean0rows(mx, i), n] < i, ∀ c. c < #c mx0 → count(mx[c]c, λ j. j < i) ≤ count(mx[c0]c, λ j. j < i) ⊦
Used simplifier rules: lf-01: ⊦ m < n ∧ n = n0 → m < n0; (forward) from specification nat-basic ⊦ 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 mx = #c mx0, #r mx = #r mx0, min(countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i), countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i)) ≠ 0, n + 1 < #c mx0, n < c0, #clean0rows(mx, i) < #r mx0, #clean0rows(mx0, i) < #r mx0, #clean0rows(mx, i) < #clean0rows(mx0, i) + min (countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i), countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i)), c0 < #c mx0, n < #c mx0, scolsorted(mx, #c mx0, mx0), srowsorted(mx0, #r mx0, mx0), #clean0rows(mx0, i) ≤ #clean0rows(mx, i), count(mx[n]c, λ j. j < i) ≤ count(mx[c0]c, λ j. j < i), ¬ mx[#clean0rows(mx, i), n] < i, ∀ c. c < #c mx0 → count(mx[c]c, λ j. j < i) ≤ count(mx[c0]c, λ j. j < i) ⊦ |
#r mx = #r mx0, #c mx = #c mx0, c < #c mx, c0 < #c mx, c < c0, srowsorted(mx0, #r mx0, mx0), scolsorted(mx, #c mx, mx0), ∀ c. c < #c mx → count(mx[c]c, λ j. j < i) ≤ count(mx[c0]c, λ j. j < i) ⊦ count(mx[c]c, λ j. j < i) ≥ #clean0rows(mx0, i) + countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx, λ j. j < i)
#c mx = #c mx0, #r mx = #r mx0, min(countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i), countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i)) ≠ 0, n < #c mx0, c0 < #c mx0, #clean0rows(mx, i) < #clean0rows(mx0, i) + min (countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i), countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i)), #clean0rows(mx0, i) < #r mx0, #clean0rows(mx, i) < #r mx0, n < c0, n + 1 < #c mx0, scolsorted(mx, #c mx0, mx0), srowsorted(mx0, #r mx0, mx0), count(mx[n]c, λ j. j < i) ≤ count(mx[c0]c, λ j. j < i), #clean0rows(mx0, i) ≤ #clean0rows(mx, i), ¬ mx[#clean0rows(mx, i), n] < i, ∀ c. c < #c mx0 → count(mx[c]c, λ j. j < i) ≤ count(mx[c0]c, λ j. j < i) ⊦ n < #c mx ∧ c0 < #c mx ∧ scolsorted(mx, #c mx, mx0) ∧ (∀ c. c < #c mx → count(mx[c]c, λ j. j < i) ≤ count(mx[c0]c, λ j. j < i))
#c mx = #c mx0, #r mx = #r mx0, min(countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i), countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i)) ≠ 0, n < #c mx0, c0 < #c mx0, #clean0rows(mx, i) < #clean0rows(mx0, i) + min (countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i), countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i)), #clean0rows(mx0, i) < #r mx0, #clean0rows(mx, i) < #r mx0, n < c0, n + 1 < #c mx0, scolsorted(mx, #c mx0, mx0), srowsorted(mx0, #r mx0, mx0), count(mx[n]c, λ j. j < i) ≤ count(mx[c0]c, λ j. j < i), #clean0rows(mx0, i) ≤ #clean0rows(mx, i), count(mx[n]c, λ j. j < i) ≥ #clean0rows(mx0, i) + countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx, λ j. j < i), ¬ mx[#clean0rows(mx, i), n] < i, ∀ c. c < #c mx0 → count(mx[c]c, λ j. j < i) ≤ count(mx[c0]c, λ j. j < i) ⊦
Used terms: c0, mx0, n, mx, i
| #r mx = #r mx0, #c mx = #c mx0, c < #c mx, c0 < #c mx, c < c0, srowsorted(mx0, #r mx0, mx0), scolsorted(mx, #c mx, mx0), ∀ c. c < #c mx → count(mx[c]c, λ j. j < i) ≤ count(mx[c0]c, λ j. j < i) ⊦ count(mx[c]c, λ j. j < i) ≥ #clean0rows(mx0, i) + countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx, λ j. j < i) |
| #c mx = #c mx0, #r mx = #r mx0, min(countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i), countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i)) ≠ 0, n < #c mx0, c0 < #c mx0, #clean0rows(mx, i) < #clean0rows(mx0, i) + min (countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i), countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i)), #clean0rows(mx0, i) < #r mx0, #clean0rows(mx, i) < #r mx0, n < c0, n + 1 < #c mx0, scolsorted(mx, #c mx0, mx0), srowsorted(mx0, #r mx0, mx0), count(mx[n]c, λ j. j < i) ≤ count(mx[c0]c, λ j. j < i), #clean0rows(mx0, i) ≤ #clean0rows(mx, i), ¬ mx[#clean0rows(mx, i), n] < i, ∀ c. c < #c mx0 → count(mx[c]c, λ j. j < i) ≤ count(mx[c0]c, λ j. j < i) ⊦ n < #c mx ∧ c0 < #c mx ∧ scolsorted(mx, #c mx, mx0) ∧ (∀ c. c < #c mx → count(mx[c]c, λ j. j < i) ≤ count(mx[c0]c, λ j. j < i)) |
#c mx = #c mx0, #r mx = #r mx0, min(countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i), countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i)) ≠ 0, count(mx[n]c, λ j. j < i) < count(mx[c]c, λ j. j < i), count(mx[c0]c, λ j. j < i) < count(mx[c]c, λ j. j < i), c < #c mx0, n + 1 < #c mx0, n < c0, #clean0rows(mx, i) < #r mx0, #clean0rows(mx0, i) < #r mx0, #clean0rows(mx, i) < #clean0rows(mx0, i) + min (countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i), countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i)), c0 < #c mx0, n < #c mx0, scolsorted(mx, #c mx0, mx0), srowsorted(mx0, #r mx0, mx0), #clean0rows(mx0, i) ≤ #clean0rows(mx, i), count(mx[n]c, λ j. j < i) ≤ count(mx[c0]c, λ j. j < i), ¬ mx[#clean0rows(mx, i), n] < i, ∀ c. c < #c mx0 → count(mx[c]c, λ j. j < i) ≤ count(mx[c0]c, λ j. j < i) ⊦
Used simplifier rules: ⊦ m < n → n ≠ 0; (s) fle-01: ⊦ m ≤ n ∧ n < n0 → m < n0; (forward) from specification nat lf-01: ⊦ m < n ∧ n = n0 → m < n0; (forward) from specification nat-basic f: ⊦ m < n → n ≠ 0; (forward) from specification nat-basic ⊦ m ≤ n ↔ ¬ n < m; (ss)
| #c mx = #c mx0, #r mx = #r mx0, min(countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i), countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i)) ≠ 0, count(mx[n]c, λ j. j < i) < count(mx[c]c, λ j. j < i), count(mx[c0]c, λ j. j < i) < count(mx[c]c, λ j. j < i), c < #c mx0, n + 1 < #c mx0, n < c0, #clean0rows(mx, i) < #r mx0, #clean0rows(mx0, i) < #r mx0, #clean0rows(mx, i) < #clean0rows(mx0, i) + min (countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i), countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i)), c0 < #c mx0, n < #c mx0, scolsorted(mx, #c mx0, mx0), srowsorted(mx0, #r mx0, mx0), #clean0rows(mx0, i) ≤ #clean0rows(mx, i), count(mx[n]c, λ j. j < i) ≤ count(mx[c0]c, λ j. j < i), ¬ mx[#clean0rows(mx, i), n] < i, ∀ c. c < #c mx0 → count(mx[c]c, λ j. j < i) ≤ count(mx[c0]c, λ j. j < i) ⊦ |
Used simplifier rules: ⊦ m < n → (n ≤ m ↔ false); (s) Used terms: c
| #c mx = #c mx0, #r mx = #r mx0, min(countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i), countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i)) ≠ 0, n < #c mx0, c0 < #c mx0, #clean0rows(mx, i) < #clean0rows(mx0, i) + min (countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i), countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i)), #clean0rows(mx0, i) < #r mx0, #clean0rows(mx, i) < #r mx0, n < c0, n + 1 < #c mx0, scolsorted(mx, #c mx0, mx0), srowsorted(mx0, #r mx0, mx0), count(mx[n]c, λ j. j < i) ≤ count(mx[c0]c, λ j. j < i), #clean0rows(mx0, i) ≤ #clean0rows(mx, i), count(mx[n]c, λ j. j < i) ≥ #clean0rows(mx0, i) + countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx, λ j. j < i), ¬ mx[#clean0rows(mx, i), n] < i, ∀ c. c < #c mx0 → count(mx[c]c, λ j. j < i) ≤ count(mx[c0]c, λ j. j < i) ⊦ |
#c mx = #c mx0, #r mx = #r mx0, min(countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i), countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i)) ≠ 0, n + 1 < #c mx0, n < c0, #clean0rows(mx, i) < #r mx0, #clean0rows(mx0, i) < #r mx0, #clean0rows(mx, i) < #clean0rows(mx0, i) + min (countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i), countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i)), c0 < #c mx0, n < #c mx0, scolsorted(mx, #c mx0, mx0), srowsorted(mx0, #r mx0, mx0), #clean0rows(mx0, i) ≤ #clean0rows(mx, i), count(mx[n]c, λ j. j < i) ≤ count(mx[c0]c, λ j. j < i), #clean0rows(mx0, i) + countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i) ≤ count(mx[n]c, λ j. j < i), #clean0rows(mx0, i) + countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i) ≤ count(mx[c0]c, λ j. j < i), ¬ mx[#clean0rows(mx, i), n] < i, ∀ c. c < #c mx0 → count(mx[c]c, λ j. j < i) ≤ count(mx[c0]c, λ j. j < i) ⊦
Used simplifier rules: let: ⊦ n ≤ n0 ∧ n0 ≤ n1 → n ≤ n1; (forward) from specification nat ⊦ n ≥ m ↔ m ≤ n; (s)
| #c mx = #c mx0, #r mx = #r mx0, min(countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i), countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i)) ≠ 0, n + 1 < #c mx0, n < c0, #clean0rows(mx, i) < #r mx0, #clean0rows(mx0, i) < #r mx0, #clean0rows(mx, i) < #clean0rows(mx0, i) + min (countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i), countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i)), c0 < #c mx0, n < #c mx0, scolsorted(mx, #c mx0, mx0), srowsorted(mx0, #r mx0, mx0), #clean0rows(mx0, i) ≤ #clean0rows(mx, i), count(mx[n]c, λ j. j < i) ≤ count(mx[c0]c, λ j. j < i), #clean0rows(mx0, i) + countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i) ≤ count(mx[n]c, λ j. j < i), #clean0rows(mx0, i) + countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i) ≤ count(mx[c0]c, λ j. j < i), ¬ mx[#clean0rows(mx, i), n] < i, ∀ c. c < #c mx0 → count(mx[c]c, λ j. j < i) ≤ count(mx[c0]c, λ j. j < i) ⊦ |
perm(a0, a), ordered≤(a), # a0 = # a, n < # a ⊦ a[n] < i ↔ n < count(a0, λ j. j < i)
#c mx = #c mx0, #r mx = #r mx0, min(countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i), countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i)) ≠ 0, n < #c mx0, c0 < #c mx0, #clean0rows(mx, i) < #clean0rows(mx0, i) + min (countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i), countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i)), #clean0rows(mx0, i) < #r mx0, #clean0rows(mx, i) < #r mx0, n < c0, n + 1 < #c mx0, scolsorted(mx, #c mx0, mx0), srowsorted(mx0, #r mx0, mx0), #clean0rows(mx0, i) + countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i) ≤ count(mx[c0]c, λ j. j < i), #clean0rows(mx0, i) + countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i) ≤ count(mx[n]c, λ j. j < i), count(mx[n]c, λ j. j < i) ≤ count(mx[c0]c, λ j. j < i), #clean0rows(mx0, i) ≤ #clean0rows(mx, i), ¬ mx[#clean0rows(mx, i), n] < i, ∀ c. c < #c mx0 → count(mx[c]c, λ j. j < i) ≤ count(mx[c0]c, λ j. j < i) ⊦ perm(mx0[n]c, mx[n]c) ∧ ordered≤(mx[n]c) ∧ # mx0[n]c = # mx[n]c ∧ #clean0rows(mx, i) < # mx[n]c
#c mx = #c mx0, #r mx = #r mx0, mx[n]c[#clean0rows(mx, i)] < i ↔ #clean0rows(mx, i) < count(mx0[n]c, λ j. j < i), min(countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i), countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i)) ≠ 0, n < #c mx0, c0 < #c mx0, #clean0rows(mx, i) < #clean0rows(mx0, i) + min (countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i), countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i)), #clean0rows(mx0, i) < #r mx0, #clean0rows(mx, i) < #r mx0, n < c0, n + 1 < #c mx0, scolsorted(mx, #c mx0, mx0), srowsorted(mx0, #r mx0, mx0), #clean0rows(mx0, i) + countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i) ≤ count(mx[c0]c, λ j. j < i), #clean0rows(mx0, i) + countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i) ≤ count(mx[n]c, λ j. j < i), count(mx[n]c, λ j. j < i) ≤ count(mx[c0]c, λ j. j < i), #clean0rows(mx0, i) ≤ #clean0rows(mx, i), ¬ mx[#clean0rows(mx, i), n] < i, ∀ c. c < #c mx0 → count(mx[c]c, λ j. j < i) ≤ count(mx[c0]c, λ j. j < i) ⊦
Used terms: mx0[n]c, mx[n]c, #clean0rows(mx, i), i
| perm(a0, a), ordered≤(a), # a0 = # a, n < # a ⊦ a[n] < i ↔ n < count(a0, λ j. j < i) |
| #c mx = #c mx0, #r mx = #r mx0, min(countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i), countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i)) ≠ 0, n < #c mx0, c0 < #c mx0, #clean0rows(mx, i) < #clean0rows(mx0, i) + min (countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i), countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i)), #clean0rows(mx0, i) < #r mx0, #clean0rows(mx, i) < #r mx0, n < c0, n + 1 < #c mx0, scolsorted(mx, #c mx0, mx0), srowsorted(mx0, #r mx0, mx0), #clean0rows(mx0, i) + countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i) ≤ count(mx[c0]c, λ j. j < i), #clean0rows(mx0, i) + countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i) ≤ count(mx[n]c, λ j. j < i), count(mx[n]c, λ j. j < i) ≤ count(mx[c0]c, λ j. j < i), #clean0rows(mx0, i) ≤ #clean0rows(mx, i), ¬ mx[#clean0rows(mx, i), n] < i, ∀ c. c < #c mx0 → count(mx[c]c, λ j. j < i) ≤ count(mx[c0]c, λ j. j < i) ⊦ perm(mx0[n]c, mx[n]c) ∧ ordered≤(mx[n]c) ∧ # mx0[n]c = # mx[n]c ∧ #clean0rows(mx, i) < # mx[n]c |
#c mx = #c mx0, #r mx = #r mx0, min(countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i), countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i)) ≠ 0, n < #c mx0, c0 < #c mx0, #clean0rows(mx, i) < #clean0rows(mx0, i) + min (countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i), countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i)), #clean0rows(mx0, i) < #r mx0, #clean0rows(mx, i) < #r mx0, n < c0, n + 1 < #c mx0, scolsorted(mx, #c mx0, mx0), srowsorted(mx0, #r mx0, mx0), #clean0rows(mx0, i) + countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i) ≤ count(mx[c0]c, λ j. j < i), #clean0rows(mx0, i) + countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i) ≤ count(mx[n]c, λ j. j < i), count(mx[n]c, λ j. j < i) ≤ count(mx[c0]c, λ j. j < i), #clean0rows(mx0, i) ≤ #clean0rows(mx, i), ¬ mx[#clean0rows(mx, i), n] < i, ∀ c. c < #c mx0 → count(mx[c]c, λ j. j < i) ≤ count(mx[c0]c, λ j. j < i) ⊦ perm(mx0[n]c, mx[n]c) ∧ ordered≤(mx[n]c)
Used simplifier rules: ⊦ # mx[c]c = #r mx; (s)
| #c mx = #c mx0, #r mx = #r mx0, min(countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i), countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i)) ≠ 0, n < #c mx0, c0 < #c mx0, #clean0rows(mx, i) < #clean0rows(mx0, i) + min (countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i), countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i)), #clean0rows(mx0, i) < #r mx0, #clean0rows(mx, i) < #r mx0, n < c0, n + 1 < #c mx0, scolsorted(mx, #c mx0, mx0), srowsorted(mx0, #r mx0, mx0), #clean0rows(mx0, i) + countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i) ≤ count(mx[c0]c, λ j. j < i), #clean0rows(mx0, i) + countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i) ≤ count(mx[n]c, λ j. j < i), count(mx[n]c, λ j. j < i) ≤ count(mx[c0]c, λ j. j < i), #clean0rows(mx0, i) ≤ #clean0rows(mx, i), ¬ mx[#clean0rows(mx, i), n] < i, ∀ c. c < #c mx0 → count(mx[c]c, λ j. j < i) ≤ count(mx[c0]c, λ j. j < i) ⊦ perm(mx0[n]c, mx[n]c) ∧ ordered≤(mx[n]c) |
⊦ m ≤ #c mx → ( scolsorted(mx, m, mx0) ↔ #r mx = #r mx0 ∧ #c mx = #c mx0 ∧ (∀ c. c < #c mx → (c < m ⊃ perm(mx0[c]c, mx[c]c) ∧ ordered≤(mx[c]c);mx0[c]c = mx[c]c)))
#c mx = #c mx0, #r mx = #r mx0, min(countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i), countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i)) ≠ 0, n + 1 < #c mx0, n < c0, #clean0rows(mx, i) < #r mx0, #clean0rows(mx0, i) < #r mx0, #clean0rows(mx, i) < #clean0rows(mx0, i) + min (countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i), countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i)), c0 < #c mx0, n < #c mx0, srowsorted(mx0, #r mx0, mx0), #clean0rows(mx0, i) ≤ #clean0rows(mx, i), count(mx[n]c, λ j. j < i) ≤ count(mx[c0]c, λ j. j < i), #clean0rows(mx0, i) + countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i) ≤ count(mx[n]c, λ j. j < i), #clean0rows(mx0, i) + countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i) ≤ count(mx[c0]c, λ j. j < i), #c mx0 ≤ #c mx, ¬ mx[#clean0rows(mx, i), n] < i, ∀ c. c < #c mx0 → count(mx[c]c, λ j. j < i) ≤ count(mx[c0]c, λ j. j < i), ∀ c. c < #c mx → (c < #c mx0 ⊃ perm(mx0[c]c, mx[c]c) ∧ ordered≤(mx[c]c);mx0[c]c = mx[c]c) ⊦ perm(mx0[n]c, mx[n]c) ∧ ordered≤(mx[n]c)
Used simplifier rules: ⊦ m ≤ n ↔ ¬ n < m; (ss) lf-02: ⊦ m < n ∧ m = n0 → n0 < n; (forward) from specification nat-basic lf-01: ⊦ m < n ∧ n = n0 → m < n0; (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 ⊦ m < n → ¬ n < m; (s) Used terms: mx, #c mx0, mx0
| ⊦ m ≤ #c mx → ( scolsorted(mx, m, mx0) ↔ #r mx = #r mx0 ∧ #c mx = #c mx0 ∧ (∀ c. c < #c mx → (c < m ⊃ perm(mx0[c]c, mx[c]c) ∧ ordered≤(mx[c]c);mx0[c]c = mx[c]c))) |
| #c mx = #c mx0, #r mx = #r mx0, min(countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i), countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i)) ≠ 0, n + 1 < #c mx0, n < c0, #clean0rows(mx, i) < #r mx0, #clean0rows(mx0, i) < #r mx0, #clean0rows(mx, i) < #clean0rows(mx0, i) + min (countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i), countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i)), c0 < #c mx0, n < #c mx0, srowsorted(mx0, #r mx0, mx0), #clean0rows(mx0, i) ≤ #clean0rows(mx, i), count(mx[n]c, λ j. j < i) ≤ count(mx[c0]c, λ j. j < i), #clean0rows(mx0, i) + countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i) ≤ count(mx[n]c, λ j. j < i), #clean0rows(mx0, i) + countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i) ≤ count(mx[c0]c, λ j. j < i), #c mx0 ≤ #c mx, ¬ mx[#clean0rows(mx, i), n] < i, ∀ c. c < #c mx0 → count(mx[c]c, λ j. j < i) ≤ count(mx[c0]c, λ j. j < i), ∀ c. c < #c mx → (c < #c mx0 ⊃ perm(mx0[c]c, mx[c]c) ∧ ordered≤(mx[c]c);mx0[c]c = mx[c]c) ⊦ perm(mx0[n]c, mx[n]c) ∧ ordered≤(mx[n]c) |
#c mx = #c mx0, #r mx = #r mx0, min(countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i), countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i)) ≠ 0, n + 1 < #c mx0, n < c0, #clean0rows(mx, i) < #r mx0, #clean0rows(mx0, i) < #r mx0, #clean0rows(mx, i) < #clean0rows(mx0, i) + min (countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i), countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i)), c0 < #c mx0, n < #c mx0, srowsorted(mx0, #r mx0, mx0), #clean0rows(mx0, i) ≤ #clean0rows(mx, i), count(mx[n]c, λ j. j < i) ≤ count(mx[c0]c, λ j. j < i), #clean0rows(mx0, i) + countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i) ≤ count(mx[n]c, λ j. j < i), #clean0rows(mx0, i) + countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i) ≤ count(mx[c0]c, λ j. j < i), ¬ mx[#clean0rows(mx, i), n] < i, ∀ c. c < #c mx0 → count(mx[c]c, λ j. j < i) ≤ count(mx[c0]c, λ j. j < i), ∀ c. c < #c mx0 → perm(mx0[c]c, mx[c]c) ∧ ordered≤(mx[c]c) ⊦ perm(mx0[n]c, mx[n]c) ∧ ordered≤(mx[n]c)
Used simplifier rules: ⊦ m ≤ m; (s) fle: ⊦ m < n ∧ n ≤ n0 → m < n0; (forward) from specification nat
| #c mx = #c mx0, #r mx = #r mx0, min(countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i), countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i)) ≠ 0, n + 1 < #c mx0, n < c0, #clean0rows(mx, i) < #r mx0, #clean0rows(mx0, i) < #r mx0, #clean0rows(mx, i) < #clean0rows(mx0, i) + min (countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i), countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i)), c0 < #c mx0, n < #c mx0, srowsorted(mx0, #r mx0, mx0), #clean0rows(mx0, i) ≤ #clean0rows(mx, i), count(mx[n]c, λ j. j < i) ≤ count(mx[c0]c, λ j. j < i), #clean0rows(mx0, i) + countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i) ≤ count(mx[n]c, λ j. j < i), #clean0rows(mx0, i) + countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i) ≤ count(mx[c0]c, λ j. j < i), ¬ mx[#clean0rows(mx, i), n] < i, ∀ c. c < #c mx0 → count(mx[c]c, λ j. j < i) ≤ count(mx[c0]c, λ j. j < i), ∀ c. c < #c mx0 → perm(mx0[c]c, mx[c]c) ∧ ordered≤(mx[c]c) ⊦ perm(mx0[n]c, mx[n]c) ∧ ordered≤(mx[n]c) |
Used terms: n
| #c mx = #c mx0, #r mx = #r mx0, mx[n]c[#clean0rows(mx, i)] < i ↔ #clean0rows(mx, i) < count(mx0[n]c, λ j. j < i), min(countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i), countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i)) ≠ 0, n < #c mx0, c0 < #c mx0, #clean0rows(mx, i) < #clean0rows(mx0, i) + min (countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i), countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i)), #clean0rows(mx0, i) < #r mx0, #clean0rows(mx, i) < #r mx0, n < c0, n + 1 < #c mx0, scolsorted(mx, #c mx0, mx0), srowsorted(mx0, #r mx0, mx0), #clean0rows(mx0, i) + countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i) ≤ count(mx[c0]c, λ j. j < i), #clean0rows(mx0, i) + countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i) ≤ count(mx[n]c, λ j. j < i), count(mx[n]c, λ j. j < i) ≤ count(mx[c0]c, λ j. j < i), #clean0rows(mx0, i) ≤ #clean0rows(mx, i), ¬ mx[#clean0rows(mx, i), n] < i, ∀ c. c < #c mx0 → count(mx[c]c, λ j. j < i) ≤ count(mx[c0]c, λ j. j < i) ⊦ |
⊦ perm(x, y) → count(x, p) = count(y, p)
#c mx = #c mx0, #r mx = #r mx0, mx[n]c[#clean0rows(mx, i)] < i ↔ #clean0rows(mx, i) < count(mx0[n]c, λ j. j < i), min(countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i), countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i)) ≠ 0, n + 1 < #c mx0, n < c0, #clean0rows(mx, i) < #r mx0, #clean0rows(mx0, i) < #r mx0, #clean0rows(mx, i) < #clean0rows(mx0, i) + min (countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i), countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i)), c0 < #c mx0, n < #c mx0, scolsorted(mx, #c mx0, mx0), srowsorted(mx0, #r mx0, mx0), #clean0rows(mx0, i) ≤ #clean0rows(mx, i), count(mx[n]c, λ j. j < i) ≤ count(mx[c0]c, λ j. j < i), #clean0rows(mx0, i) + countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i) ≤ count(mx[n]c, λ j. j < i), #clean0rows(mx0, i) + countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i) ≤ count(mx[c0]c, λ j. j < i), ¬ mx[#clean0rows(mx, i), n] < i, perm(mx0[n]c, mx[n]c) → count(mx0[n]c, λ j. j < i) = count(mx[n]c, λ j. j < i), ∀ c. c < #c mx0 → count(mx[c]c, λ j. j < i) ≤ count(mx[c0]c, λ j. j < i) ⊦
Used terms: mx0[n]c, mx[n]c, λ j. j < i
| ⊦ perm(x, y) → count(x, p) = count(y, p) |
| #c mx = #c mx0, #r mx = #r mx0, mx[n]c[#clean0rows(mx, i)] < i ↔ #clean0rows(mx, i) < count(mx0[n]c, λ j. j < i), min(countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i), countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i)) ≠ 0, n + 1 < #c mx0, n < c0, #clean0rows(mx, i) < #r mx0, #clean0rows(mx0, i) < #r mx0, #clean0rows(mx, i) < #clean0rows(mx0, i) + min (countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i), countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i)), c0 < #c mx0, n < #c mx0, scolsorted(mx, #c mx0, mx0), srowsorted(mx0, #r mx0, mx0), #clean0rows(mx0, i) ≤ #clean0rows(mx, i), count(mx[n]c, λ j. j < i) ≤ count(mx[c0]c, λ j. j < i), #clean0rows(mx0, i) + countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i) ≤ count(mx[n]c, λ j. j < i), #clean0rows(mx0, i) + countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i) ≤ count(mx[c0]c, λ j. j < i), ¬ mx[#clean0rows(mx, i), n] < i, perm(mx0[n]c, mx[n]c) → count(mx0[n]c, λ j. j < i) = count(mx[n]c, λ j. j < i), ∀ c. c < #c mx0 → count(mx[c]c, λ j. j < i) ≤ count(mx[c0]c, λ j. j < i) ⊦ |
#c mx = #c mx0, #r mx = #r mx0, mx[n]c[#clean0rows(mx, i)] < i ↔ #clean0rows(mx, i) < count(mx0[n]c, λ j. j < i), min(countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i), countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i)) ≠ 0, n < #c mx0, c0 < #c mx0, #clean0rows(mx, i) < #clean0rows(mx0, i) + min (countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i), countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i)), #clean0rows(mx0, i) < #r mx0, #clean0rows(mx, i) < #r mx0, n < c0, n + 1 < #c mx0, scolsorted(mx, #c mx0, mx0), srowsorted(mx0, #r mx0, mx0), #clean0rows(mx0, i) + countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i) ≤ count(mx[c0]c, λ j. j < i), #clean0rows(mx0, i) + countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i) ≤ count(mx[n]c, λ j. j < i), count(mx[n]c, λ j. j < i) ≤ count(mx[c0]c, λ j. j < i), #clean0rows(mx0, i) ≤ #clean0rows(mx, i), ¬ mx[#clean0rows(mx, i), n] < i, ¬ perm(mx0[n]c, mx[n]c), ∀ c. c < #c mx0 → count(mx[c]c, λ j. j < i) ≤ count(mx[c0]c, λ j. j < i) ⊦
Used simplifier rules: ⊦ mx[c]c[r] = mx[r, c]; (s) ⊦ m < n ↔ ¬ n ≤ m; (ss) let: ⊦ n ≤ n0 ∧ n0 ≤ n1 → n ≤ n1; (forward) from specification nat fle-01: ⊦ m ≤ n ∧ n < n0 → m < n0; (forward) from specification nat lf-01: ⊦ m < n ∧ n = n0 → m < n0; (forward) from specification nat-basic lf-02: ⊦ m < n ∧ m = n0 → n0 < n; (forward) from specification nat-basic ⊦ m + n < m + n0 ↔ n < n0; (s) ⊦ ¬ m < min(m, n); (s) min-a: ⊦ min(m, min(n, n0)) = min(min(m, n), n0); from specification nat-even min-c: ⊦ min(m, n) = min(n, m); from specification nat-even a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic c: ⊦ m + n = n + m; from specification nat-basic
| #c mx = #c mx0, #r mx = #r mx0, mx[n]c[#clean0rows(mx, i)] < i ↔ #clean0rows(mx, i) < count(mx0[n]c, λ j. j < i), min(countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i), countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i)) ≠ 0, n < #c mx0, c0 < #c mx0, #clean0rows(mx, i) < #clean0rows(mx0, i) + min (countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i), countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i)), #clean0rows(mx0, i) < #r mx0, #clean0rows(mx, i) < #r mx0, n < c0, n + 1 < #c mx0, scolsorted(mx, #c mx0, mx0), srowsorted(mx0, #r mx0, mx0), #clean0rows(mx0, i) + countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i) ≤ count(mx[c0]c, λ j. j < i), #clean0rows(mx0, i) + countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i) ≤ count(mx[n]c, λ j. j < i), count(mx[n]c, λ j. j < i) ≤ count(mx[c0]c, λ j. j < i), #clean0rows(mx0, i) ≤ #clean0rows(mx, i), ¬ mx[#clean0rows(mx, i), n] < i, ¬ perm(mx0[n]c, mx[n]c), ∀ c. c < #c mx0 → count(mx[c]c, λ j. j < i) ≤ count(mx[c0]c, λ j. j < i) ⊦ |
⊦ m ≤ #c mx → ( scolsorted(mx, m, mx0) ↔ #r mx = #r mx0 ∧ #c mx = #c mx0 ∧ (∀ c. c < #c mx → (c < m ⊃ perm(mx0[c]c, mx[c]c) ∧ ordered≤(mx[c]c);mx0[c]c = mx[c]c)))
#c mx = #c mx0, #r mx = #r mx0, mx[n]c[#clean0rows(mx, i)] < i ↔ #clean0rows(mx, i) < count(mx0[n]c, λ j. j < i), min(countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i), countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i)) ≠ 0, n + 1 < #c mx0, n < c0, #clean0rows(mx, i) < #r mx0, #clean0rows(mx0, i) < #r mx0, #clean0rows(mx, i) < #clean0rows(mx0, i) + min (countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i), countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i)), c0 < #c mx0, n < #c mx0, srowsorted(mx0, #r mx0, mx0), #clean0rows(mx0, i) ≤ #clean0rows(mx, i), count(mx[n]c, λ j. j < i) ≤ count(mx[c0]c, λ j. j < i), #clean0rows(mx0, i) + countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i) ≤ count(mx[n]c, λ j. j < i), #clean0rows(mx0, i) + countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i) ≤ count(mx[c0]c, λ j. j < i), #c mx0 ≤ #c mx, ¬ mx[#clean0rows(mx, i), n] < i, ¬ perm(mx0[n]c, mx[n]c), ∀ c. c < #c mx0 → count(mx[c]c, λ j. j < i) ≤ count(mx[c0]c, λ j. j < i), ∀ c. c < #c mx → (c < #c mx0 ⊃ perm(mx0[c]c, mx[c]c) ∧ ordered≤(mx[c]c);mx0[c]c = mx[c]c) ⊦
Used simplifier rules: ⊦ mx[c]c[r] = mx[r, c]; (s) ⊦ m ≤ n ↔ ¬ n < m; (ss) ⊦ m < n ↔ ¬ n ≤ m; (ss) fle-01: ⊦ m ≤ n ∧ n < n0 → m < n0; (forward) from specification nat lf-02: ⊦ m < n ∧ m = n0 → n0 < n; (forward) from specification nat-basic lf-01: ⊦ m < n ∧ n = n0 → m < n0; (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 ⊦ m < n → ¬ n < m; (s) Used terms: mx, #c mx0, mx0
| ⊦ m ≤ #c mx → ( scolsorted(mx, m, mx0) ↔ #r mx = #r mx0 ∧ #c mx = #c mx0 ∧ (∀ c. c < #c mx → (c < m ⊃ perm(mx0[c]c, mx[c]c) ∧ ordered≤(mx[c]c);mx0[c]c = mx[c]c))) |
| #c mx = #c mx0, #r mx = #r mx0, mx[n]c[#clean0rows(mx, i)] < i ↔ #clean0rows(mx, i) < count(mx0[n]c, λ j. j < i), min(countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i), countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i)) ≠ 0, n + 1 < #c mx0, n < c0, #clean0rows(mx, i) < #r mx0, #clean0rows(mx0, i) < #r mx0, #clean0rows(mx, i) < #clean0rows(mx0, i) + min (countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i), countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i)), c0 < #c mx0, n < #c mx0, srowsorted(mx0, #r mx0, mx0), #clean0rows(mx0, i) ≤ #clean0rows(mx, i), count(mx[n]c, λ j. j < i) ≤ count(mx[c0]c, λ j. j < i), #clean0rows(mx0, i) + countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i) ≤ count(mx[n]c, λ j. j < i), #clean0rows(mx0, i) + countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i) ≤ count(mx[c0]c, λ j. j < i), #c mx0 ≤ #c mx, ¬ mx[#clean0rows(mx, i), n] < i, ¬ perm(mx0[n]c, mx[n]c), ∀ c. c < #c mx0 → count(mx[c]c, λ j. j < i) ≤ count(mx[c0]c, λ j. j < i), ∀ c. c < #c mx → (c < #c mx0 ⊃ perm(mx0[c]c, mx[c]c) ∧ ordered≤(mx[c]c);mx0[c]c = mx[c]c) ⊦ |
#c mx = #c mx0, #r mx = #r mx0, min(countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i), countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i)) ≠ 0, n < #c mx0, #clean0rows(mx, i) < #clean0rows(mx0, i) + min (countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i), countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i)), #clean0rows(mx0, i) < #r mx0, #clean0rows(mx, i) < #r mx0, n < c0, c0 < #c mx0, n + 1 < #c mx0, count(mx0[n]c, λ j. j < i) < #clean0rows(mx0, i) + min (countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i), countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i)), count(mx0[n]c, λ j. j < i) < #r mx0, srowsorted(mx0, #r mx0, mx0), #clean0rows(mx0, i) + countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i) ≤ count(mx[c0]c, λ j. j < i), #clean0rows(mx0, i) + countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i) ≤ count(mx[n]c, λ j. j < i), count(mx[n]c, λ j. j < i) ≤ count(mx[c0]c, λ j. j < i), #clean0rows(mx0, i) ≤ #clean0rows(mx, i), count(mx0[n]c, λ j. j < i) ≤ #clean0rows(mx, i), ¬ mx[#clean0rows(mx, i), n] < i, ¬ perm(mx0[n]c, mx[n]c), ∀ c. c < #c mx0 → perm(mx0[c]c, mx[c]c) ∧ ordered≤(mx[c]c), ∀ c. c < #c mx0 → count(mx[c]c, λ j. j < i) ≤ count(mx[c0]c, λ j. j < i) ⊦
Used simplifier rules: lf-01: ⊦ m < n ∧ n = n0 → m < n0; (forward) from specification nat-basic ⊦ m ≤ m; (s) fle: ⊦ m < n ∧ n ≤ n0 → m < n0; (forward) from specification nat fle-01: ⊦ m ≤ n ∧ n < n0 → m < n0; (forward) from specification nat ⊦ m < n ↔ ¬ n ≤ m; (ss) ⊦ mx[c]c[r] = mx[r, c]; (s)
| #c mx = #c mx0, #r mx = #r mx0, min(countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i), countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i)) ≠ 0, n < #c mx0, #clean0rows(mx, i) < #clean0rows(mx0, i) + min (countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i), countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i)), #clean0rows(mx0, i) < #r mx0, #clean0rows(mx, i) < #r mx0, n < c0, c0 < #c mx0, n + 1 < #c mx0, count(mx0[n]c, λ j. j < i) < #clean0rows(mx0, i) + min (countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i), countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i)), count(mx0[n]c, λ j. j < i) < #r mx0, srowsorted(mx0, #r mx0, mx0), #clean0rows(mx0, i) + countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i) ≤ count(mx[c0]c, λ j. j < i), #clean0rows(mx0, i) + countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i) ≤ count(mx[n]c, λ j. j < i), count(mx[n]c, λ j. j < i) ≤ count(mx[c0]c, λ j. j < i), #clean0rows(mx0, i) ≤ #clean0rows(mx, i), count(mx0[n]c, λ j. j < i) ≤ #clean0rows(mx, i), ¬ mx[#clean0rows(mx, i), n] < i, ¬ perm(mx0[n]c, mx[n]c), ∀ c. c < #c mx0 → perm(mx0[c]c, mx[c]c) ∧ ordered≤(mx[c]c), ∀ c. c < #c mx0 → count(mx[c]c, λ j. j < i) ≤ count(mx[c0]c, λ j. j < i) ⊦ |
Used terms: n
| #c mx = #c mx0, #r mx = #r mx0, min(countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i), countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i)) ≠ 0, c0 < #c mx0, #clean0rows(mx, i) < #clean0rows(mx0, i) + min (countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i), countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i)), #clean0rows(mx0, i) < #r mx0, #clean0rows(mx, i) < #r mx0, n < #c mx0, scolsorted(mx, #c mx0, mx0), srowsorted(mx0, #r mx0, mx0), count(mx[n]c, λ j. j < i) ≤ count(mx[c0]c, λ j. j < i), #clean0rows(mx0, i) ≤ #clean0rows(mx, i), ¬ n < c0, ¬ mx[#clean0rows(mx, i), n] < i, ∀ c. c < #c mx0 → count(mx[c]c, λ j. j < i) ≤ count(mx[c0]c, λ j. j < i) ⊦ |
#c mx = #c mx0, #r mx = #r mx0, min(countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i), countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i)) ≠ 0, n < #c mx0, #clean0rows(mx, i) < #r mx0, #clean0rows(mx0, i) < #r mx0, #clean0rows(mx, i) < #clean0rows(mx0, i) + min (countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i), countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i)), c0 < #c mx0, scolsorted(mx, #c mx0, mx0), srowsorted(mx0, #r mx0, mx0), #clean0rows(mx0, i) ≤ #clean0rows(mx, i), count(mx[n]c, λ j. j < i) ≤ count(mx[c0]c, λ j. j < i), c0 ≤ n, ¬ mx[#clean0rows(mx, i), n] < i, ∀ c. c < #c mx0 → count(mx[c]c, λ j. j < i) ≤ count(mx[c0]c, λ j. j < i) ⊦
Used simplifier rules: fle-01: ⊦ m ≤ n ∧ n < n0 → m < n0; (forward) from specification nat ⊦ m < n ↔ ¬ n ≤ m; (ss)
| #c mx = #c mx0, #r mx = #r mx0, min(countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i), countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i)) ≠ 0, n < #c mx0, #clean0rows(mx, i) < #r mx0, #clean0rows(mx0, i) < #r mx0, #clean0rows(mx, i) < #clean0rows(mx0, i) + min (countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i), countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i)), c0 < #c mx0, scolsorted(mx, #c mx0, mx0), srowsorted(mx0, #r mx0, mx0), #clean0rows(mx0, i) ≤ #clean0rows(mx, i), count(mx[n]c, λ j. j < i) ≤ count(mx[c0]c, λ j. j < i), c0 ≤ n, ¬ mx[#clean0rows(mx, i), n] < i, ∀ c. c < #c mx0 → count(mx[c]c, λ j. j < i) ≤ count(mx[c0]c, λ j. j < i) ⊦ |
#r mx = #r mx0, #c mx = #c mx0, c < #c mx, c0 < #c mx, c ≥ c0, srowsorted(mx0, #r mx0, mx0), scolsorted(mx, #c mx, mx0), ∀ c. c < #c mx → count(mx[c]c, λ j. j < i) ≤ count(mx[c0]c, λ j. j < i) ⊦ count(mx[c]c, λ j. j < i) ≥ #clean0rows(mx0, i) + countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx, λ j. j < i)
#c mx = #c mx0, #r mx = #r mx0, min(countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i), countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i)) ≠ 0, c0 < #c mx0, #clean0rows(mx, i) < #clean0rows(mx0, i) + min (countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i), countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i)), #clean0rows(mx0, i) < #r mx0, #clean0rows(mx, i) < #r mx0, n < #c mx0, scolsorted(mx, #c mx0, mx0), srowsorted(mx0, #r mx0, mx0), c0 ≤ n, count(mx[n]c, λ j. j < i) ≤ count(mx[c0]c, λ j. j < i), #clean0rows(mx0, i) ≤ #clean0rows(mx, i), ¬ mx[#clean0rows(mx, i), n] < i, ∀ c. c < #c mx0 → count(mx[c]c, λ j. j < i) ≤ count(mx[c0]c, λ j. j < i) ⊦ n < #c mx ∧ c0 < #c mx ∧ n ≥ c0 ∧ scolsorted(mx, #c mx, mx0) ∧ (∀ c. c < #c mx → count(mx[c]c, λ j. j < i) ≤ count(mx[c0]c, λ j. j < i))
#c mx = #c mx0, #r mx = #r mx0, min(countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i), countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i)) ≠ 0, c0 < #c mx0, #clean0rows(mx, i) < #clean0rows(mx0, i) + min (countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i), countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i)), #clean0rows(mx0, i) < #r mx0, #clean0rows(mx, i) < #r mx0, n < #c mx0, scolsorted(mx, #c mx0, mx0), srowsorted(mx0, #r mx0, mx0), c0 ≤ n, count(mx[n]c, λ j. j < i) ≤ count(mx[c0]c, λ j. j < i), #clean0rows(mx0, i) ≤ #clean0rows(mx, i), count(mx[n]c, λ j. j < i) ≥ #clean0rows(mx0, i) + countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx, λ j. j < i), ¬ mx[#clean0rows(mx, i), n] < i, ∀ c. c < #c mx0 → count(mx[c]c, λ j. j < i) ≤ count(mx[c0]c, λ j. j < i) ⊦
Used terms: c0, mx0, n, mx, i
| #r mx = #r mx0, #c mx = #c mx0, c < #c mx, c0 < #c mx, c ≥ c0, srowsorted(mx0, #r mx0, mx0), scolsorted(mx, #c mx, mx0), ∀ c. c < #c mx → count(mx[c]c, λ j. j < i) ≤ count(mx[c0]c, λ j. j < i) ⊦ count(mx[c]c, λ j. j < i) ≥ #clean0rows(mx0, i) + countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx, λ j. j < i) |
| #c mx = #c mx0, #r mx = #r mx0, min(countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i), countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i)) ≠ 0, c0 < #c mx0, #clean0rows(mx, i) < #clean0rows(mx0, i) + min (countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i), countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i)), #clean0rows(mx0, i) < #r mx0, #clean0rows(mx, i) < #r mx0, n < #c mx0, scolsorted(mx, #c mx0, mx0), srowsorted(mx0, #r mx0, mx0), c0 ≤ n, count(mx[n]c, λ j. j < i) ≤ count(mx[c0]c, λ j. j < i), #clean0rows(mx0, i) ≤ #clean0rows(mx, i), ¬ mx[#clean0rows(mx, i), n] < i, ∀ c. c < #c mx0 → count(mx[c]c, λ j. j < i) ≤ count(mx[c0]c, λ j. j < i) ⊦ n < #c mx ∧ c0 < #c mx ∧ n ≥ c0 ∧ scolsorted(mx, #c mx, mx0) ∧ (∀ c. c < #c mx → count(mx[c]c, λ j. j < i) ≤ count(mx[c0]c, λ j. j < i)) |
#c mx = #c mx0, #r mx = #r mx0, min(countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i), countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i)) ≠ 0, count(mx[n]c, λ j. j < i) < count(mx[c]c, λ j. j < i), count(mx[c0]c, λ j. j < i) < count(mx[c]c, λ j. j < i), c < #c mx0, n < #c mx0, #clean0rows(mx, i) < #r mx0, #clean0rows(mx0, i) < #r mx0, #clean0rows(mx, i) < #clean0rows(mx0, i) + min (countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i), countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i)), c0 < #c mx0, scolsorted(mx, #c mx0, mx0), srowsorted(mx0, #r mx0, mx0), #clean0rows(mx0, i) ≤ #clean0rows(mx, i), count(mx[n]c, λ j. j < i) ≤ count(mx[c0]c, λ j. j < i), c0 ≤ n, ¬ mx[#clean0rows(mx, i), n] < i, ∀ c. c < #c mx0 → count(mx[c]c, λ j. j < i) ≤ count(mx[c0]c, λ j. j < i) ⊦
Used simplifier rules: ⊦ m < n → n ≠ 0; (s) fle-01: ⊦ m ≤ n ∧ n < n0 → m < n0; (forward) from specification nat lf-01: ⊦ m < n ∧ n = n0 → m < n0; (forward) from specification nat-basic f: ⊦ m < n → n ≠ 0; (forward) from specification nat-basic ⊦ m ≤ n ↔ ¬ n < m; (ss) ⊦ n ≥ m ↔ m ≤ n; (s)
| #c mx = #c mx0, #r mx = #r mx0, min(countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i), countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i)) ≠ 0, count(mx[n]c, λ j. j < i) < count(mx[c]c, λ j. j < i), count(mx[c0]c, λ j. j < i) < count(mx[c]c, λ j. j < i), c < #c mx0, n < #c mx0, #clean0rows(mx, i) < #r mx0, #clean0rows(mx0, i) < #r mx0, #clean0rows(mx, i) < #clean0rows(mx0, i) + min (countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i), countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i)), c0 < #c mx0, scolsorted(mx, #c mx0, mx0), srowsorted(mx0, #r mx0, mx0), #clean0rows(mx0, i) ≤ #clean0rows(mx, i), count(mx[n]c, λ j. j < i) ≤ count(mx[c0]c, λ j. j < i), c0 ≤ n, ¬ mx[#clean0rows(mx, i), n] < i, ∀ c. c < #c mx0 → count(mx[c]c, λ j. j < i) ≤ count(mx[c0]c, λ j. j < i) ⊦ |
Used simplifier rules: ⊦ m < n → (n ≤ m ↔ false); (s) Used terms: c
| #c mx = #c mx0, #r mx = #r mx0, min(countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i), countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i)) ≠ 0, c0 < #c mx0, #clean0rows(mx, i) < #clean0rows(mx0, i) + min (countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i), countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i)), #clean0rows(mx0, i) < #r mx0, #clean0rows(mx, i) < #r mx0, n < #c mx0, scolsorted(mx, #c mx0, mx0), srowsorted(mx0, #r mx0, mx0), c0 ≤ n, count(mx[n]c, λ j. j < i) ≤ count(mx[c0]c, λ j. j < i), #clean0rows(mx0, i) ≤ #clean0rows(mx, i), count(mx[n]c, λ j. j < i) ≥ #clean0rows(mx0, i) + countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx, λ j. j < i), ¬ mx[#clean0rows(mx, i), n] < i, ∀ c. c < #c mx0 → count(mx[c]c, λ j. j < i) ≤ count(mx[c0]c, λ j. j < i) ⊦ |
#c mx = #c mx0, #r mx = #r mx0, min(countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i), countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i)) ≠ 0, n < #c mx0, #clean0rows(mx, i) < #r mx0, #clean0rows(mx0, i) < #r mx0, #clean0rows(mx, i) < #clean0rows(mx0, i) + min (countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i), countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i)), c0 < #c mx0, scolsorted(mx, #c mx0, mx0), srowsorted(mx0, #r mx0, mx0), #clean0rows(mx0, i) ≤ #clean0rows(mx, i), count(mx[n]c, λ j. j < i) ≤ count(mx[c0]c, λ j. j < i), c0 ≤ n, #clean0rows(mx0, i) + countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i) ≤ count(mx[n]c, λ j. j < i), #clean0rows(mx0, i) + countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i) ≤ count(mx[c0]c, λ j. j < i), ¬ mx[#clean0rows(mx, i), n] < i, ∀ c. c < #c mx0 → count(mx[c]c, λ j. j < i) ≤ count(mx[c0]c, λ j. j < i) ⊦
Used simplifier rules: let: ⊦ n ≤ n0 ∧ n0 ≤ n1 → n ≤ n1; (forward) from specification nat ⊦ n ≥ m ↔ m ≤ n; (s)
| #c mx = #c mx0, #r mx = #r mx0, min(countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i), countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i)) ≠ 0, n < #c mx0, #clean0rows(mx, i) < #r mx0, #clean0rows(mx0, i) < #r mx0, #clean0rows(mx, i) < #clean0rows(mx0, i) + min (countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i), countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i)), c0 < #c mx0, scolsorted(mx, #c mx0, mx0), srowsorted(mx0, #r mx0, mx0), #clean0rows(mx0, i) ≤ #clean0rows(mx, i), count(mx[n]c, λ j. j < i) ≤ count(mx[c0]c, λ j. j < i), c0 ≤ n, #clean0rows(mx0, i) + countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i) ≤ count(mx[n]c, λ j. j < i), #clean0rows(mx0, i) + countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i) ≤ count(mx[c0]c, λ j. j < i), ¬ mx[#clean0rows(mx, i), n] < i, ∀ c. c < #c mx0 → count(mx[c]c, λ j. j < i) ≤ count(mx[c0]c, λ j. j < i) ⊦ |
perm(a0, a), ordered≤(a), # a0 = # a, n < # a ⊦ a[n] < i ↔ n < count(a0, λ j. j < i)
#c mx = #c mx0, #r mx = #r mx0, min(countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i), countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i)) ≠ 0, c0 < #c mx0, #clean0rows(mx, i) < #clean0rows(mx0, i) + min (countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i), countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i)), #clean0rows(mx0, i) < #r mx0, #clean0rows(mx, i) < #r mx0, n < #c mx0, scolsorted(mx, #c mx0, mx0), srowsorted(mx0, #r mx0, mx0), #clean0rows(mx0, i) + countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i) ≤ count(mx[c0]c, λ j. j < i), #clean0rows(mx0, i) + countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i) ≤ count(mx[n]c, λ j. j < i), c0 ≤ n, count(mx[n]c, λ j. j < i) ≤ count(mx[c0]c, λ j. j < i), #clean0rows(mx0, i) ≤ #clean0rows(mx, i), ¬ mx[#clean0rows(mx, i), n] < i, ∀ c. c < #c mx0 → count(mx[c]c, λ j. j < i) ≤ count(mx[c0]c, λ j. j < i) ⊦ perm(mx0[n]c, mx[n]c) ∧ ordered≤(mx[n]c) ∧ # mx0[n]c = # mx[n]c ∧ #clean0rows(mx, i) < # mx[n]c
#c mx = #c mx0, #r mx = #r mx0, mx[n]c[#clean0rows(mx, i)] < i ↔ #clean0rows(mx, i) < count(mx0[n]c, λ j. j < i), min(countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i), countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i)) ≠ 0, c0 < #c mx0, #clean0rows(mx, i) < #clean0rows(mx0, i) + min (countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i), countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i)), #clean0rows(mx0, i) < #r mx0, #clean0rows(mx, i) < #r mx0, n < #c mx0, scolsorted(mx, #c mx0, mx0), srowsorted(mx0, #r mx0, mx0), #clean0rows(mx0, i) + countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i) ≤ count(mx[c0]c, λ j. j < i), #clean0rows(mx0, i) + countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i) ≤ count(mx[n]c, λ j. j < i), c0 ≤ n, count(mx[n]c, λ j. j < i) ≤ count(mx[c0]c, λ j. j < i), #clean0rows(mx0, i) ≤ #clean0rows(mx, i), ¬ mx[#clean0rows(mx, i), n] < i, ∀ c. c < #c mx0 → count(mx[c]c, λ j. j < i) ≤ count(mx[c0]c, λ j. j < i) ⊦
Used terms: mx0[n]c, mx[n]c, #clean0rows(mx, i), i
| perm(a0, a), ordered≤(a), # a0 = # a, n < # a ⊦ a[n] < i ↔ n < count(a0, λ j. j < i) |
| #c mx = #c mx0, #r mx = #r mx0, min(countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i), countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i)) ≠ 0, c0 < #c mx0, #clean0rows(mx, i) < #clean0rows(mx0, i) + min (countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i), countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i)), #clean0rows(mx0, i) < #r mx0, #clean0rows(mx, i) < #r mx0, n < #c mx0, scolsorted(mx, #c mx0, mx0), srowsorted(mx0, #r mx0, mx0), #clean0rows(mx0, i) + countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i) ≤ count(mx[c0]c, λ j. j < i), #clean0rows(mx0, i) + countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i) ≤ count(mx[n]c, λ j. j < i), c0 ≤ n, count(mx[n]c, λ j. j < i) ≤ count(mx[c0]c, λ j. j < i), #clean0rows(mx0, i) ≤ #clean0rows(mx, i), ¬ mx[#clean0rows(mx, i), n] < i, ∀ c. c < #c mx0 → count(mx[c]c, λ j. j < i) ≤ count(mx[c0]c, λ j. j < i) ⊦ perm(mx0[n]c, mx[n]c) ∧ ordered≤(mx[n]c) ∧ # mx0[n]c = # mx[n]c ∧ #clean0rows(mx, i) < # mx[n]c |
#c mx = #c mx0, #r mx = #r mx0, min(countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i), countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i)) ≠ 0, c0 < #c mx0, #clean0rows(mx, i) < #clean0rows(mx0, i) + min (countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i), countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i)), #clean0rows(mx0, i) < #r mx0, #clean0rows(mx, i) < #r mx0, n < #c mx0, scolsorted(mx, #c mx0, mx0), srowsorted(mx0, #r mx0, mx0), #clean0rows(mx0, i) + countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i) ≤ count(mx[c0]c, λ j. j < i), #clean0rows(mx0, i) + countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i) ≤ count(mx[n]c, λ j. j < i), c0 ≤ n, count(mx[n]c, λ j. j < i) ≤ count(mx[c0]c, λ j. j < i), #clean0rows(mx0, i) ≤ #clean0rows(mx, i), ¬ mx[#clean0rows(mx, i), n] < i, ∀ c. c < #c mx0 → count(mx[c]c, λ j. j < i) ≤ count(mx[c0]c, λ j. j < i) ⊦ perm(mx0[n]c, mx[n]c) ∧ ordered≤(mx[n]c)
Used simplifier rules: ⊦ # mx[c]c = #r mx; (s)
| #c mx = #c mx0, #r mx = #r mx0, min(countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i), countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i)) ≠ 0, c0 < #c mx0, #clean0rows(mx, i) < #clean0rows(mx0, i) + min (countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i), countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i)), #clean0rows(mx0, i) < #r mx0, #clean0rows(mx, i) < #r mx0, n < #c mx0, scolsorted(mx, #c mx0, mx0), srowsorted(mx0, #r mx0, mx0), #clean0rows(mx0, i) + countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i) ≤ count(mx[c0]c, λ j. j < i), #clean0rows(mx0, i) + countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i) ≤ count(mx[n]c, λ j. j < i), c0 ≤ n, count(mx[n]c, λ j. j < i) ≤ count(mx[c0]c, λ j. j < i), #clean0rows(mx0, i) ≤ #clean0rows(mx, i), ¬ mx[#clean0rows(mx, i), n] < i, ∀ c. c < #c mx0 → count(mx[c]c, λ j. j < i) ≤ count(mx[c0]c, λ j. j < i) ⊦ perm(mx0[n]c, mx[n]c) ∧ ordered≤(mx[n]c) |
⊦ m ≤ #c mx → ( scolsorted(mx, m, mx0) ↔ #r mx = #r mx0 ∧ #c mx = #c mx0 ∧ (∀ c. c < #c mx → (c < m ⊃ perm(mx0[c]c, mx[c]c) ∧ ordered≤(mx[c]c);mx0[c]c = mx[c]c)))
#c mx = #c mx0, #r mx = #r mx0, min(countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i), countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i)) ≠ 0, n < #c mx0, #clean0rows(mx, i) < #r mx0, #clean0rows(mx0, i) < #r mx0, #clean0rows(mx, i) < #clean0rows(mx0, i) + min (countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i), countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i)), c0 < #c mx0, srowsorted(mx0, #r mx0, mx0), #clean0rows(mx0, i) ≤ #clean0rows(mx, i), count(mx[n]c, λ j. j < i) ≤ count(mx[c0]c, λ j. j < i), c0 ≤ n, #clean0rows(mx0, i) + countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i) ≤ count(mx[n]c, λ j. j < i), #clean0rows(mx0, i) + countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i) ≤ count(mx[c0]c, λ j. j < i), #c mx0 ≤ #c mx, ¬ mx[#clean0rows(mx, i), n] < i, ∀ c. c < #c mx0 → count(mx[c]c, λ j. j < i) ≤ count(mx[c0]c, λ j. j < i), ∀ c. c < #c mx → (c < #c mx0 ⊃ perm(mx0[c]c, mx[c]c) ∧ ordered≤(mx[c]c);mx0[c]c = mx[c]c) ⊦ perm(mx0[n]c, mx[n]c) ∧ ordered≤(mx[n]c)
Used simplifier rules: ⊦ m ≤ n ↔ ¬ n < m; (ss) lf-02: ⊦ m < n ∧ m = n0 → n0 < n; (forward) from specification nat-basic lf-01: ⊦ m < n ∧ n = n0 → m < n0; (forward) from specification nat-basic 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 ⊦ m < n → ¬ n < m; (s) Used terms: mx, #c mx0, mx0
| ⊦ m ≤ #c mx → ( scolsorted(mx, m, mx0) ↔ #r mx = #r mx0 ∧ #c mx = #c mx0 ∧ (∀ c. c < #c mx → (c < m ⊃ perm(mx0[c]c, mx[c]c) ∧ ordered≤(mx[c]c);mx0[c]c = mx[c]c))) |
| #c mx = #c mx0, #r mx = #r mx0, min(countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i), countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i)) ≠ 0, n < #c mx0, #clean0rows(mx, i) < #r mx0, #clean0rows(mx0, i) < #r mx0, #clean0rows(mx, i) < #clean0rows(mx0, i) + min (countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i), countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i)), c0 < #c mx0, srowsorted(mx0, #r mx0, mx0), #clean0rows(mx0, i) ≤ #clean0rows(mx, i), count(mx[n]c, λ j. j < i) ≤ count(mx[c0]c, λ j. j < i), c0 ≤ n, #clean0rows(mx0, i) + countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i) ≤ count(mx[n]c, λ j. j < i), #clean0rows(mx0, i) + countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i) ≤ count(mx[c0]c, λ j. j < i), #c mx0 ≤ #c mx, ¬ mx[#clean0rows(mx, i), n] < i, ∀ c. c < #c mx0 → count(mx[c]c, λ j. j < i) ≤ count(mx[c0]c, λ j. j < i), ∀ c. c < #c mx → (c < #c mx0 ⊃ perm(mx0[c]c, mx[c]c) ∧ ordered≤(mx[c]c);mx0[c]c = mx[c]c) ⊦ perm(mx0[n]c, mx[n]c) ∧ ordered≤(mx[n]c) |
#c mx = #c mx0, #r mx = #r mx0, min(countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i), countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i)) ≠ 0, n < #c mx0, #clean0rows(mx, i) < #r mx0, #clean0rows(mx0, i) < #r mx0, #clean0rows(mx, i) < #clean0rows(mx0, i) + min (countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i), countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i)), c0 < #c mx0, srowsorted(mx0, #r mx0, mx0), #clean0rows(mx0, i) ≤ #clean0rows(mx, i), count(mx[n]c, λ j. j < i) ≤ count(mx[c0]c, λ j. j < i), c0 ≤ n, #clean0rows(mx0, i) + countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i) ≤ count(mx[n]c, λ j. j < i), #clean0rows(mx0, i) + countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i) ≤ count(mx[c0]c, λ j. j < i), ¬ mx[#clean0rows(mx, i), n] < i, ∀ c. c < #c mx0 → count(mx[c]c, λ j. j < i) ≤ count(mx[c0]c, λ j. j < i), ∀ c. c < #c mx0 → perm(mx0[c]c, mx[c]c) ∧ ordered≤(mx[c]c) ⊦ perm(mx0[n]c, mx[n]c) ∧ ordered≤(mx[n]c)
Used simplifier rules: ⊦ m ≤ m; (s) fle: ⊦ m < n ∧ n ≤ n0 → m < n0; (forward) from specification nat
| #c mx = #c mx0, #r mx = #r mx0, min(countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i), countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i)) ≠ 0, n < #c mx0, #clean0rows(mx, i) < #r mx0, #clean0rows(mx0, i) < #r mx0, #clean0rows(mx, i) < #clean0rows(mx0, i) + min (countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i), countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i)), c0 < #c mx0, srowsorted(mx0, #r mx0, mx0), #clean0rows(mx0, i) ≤ #clean0rows(mx, i), count(mx[n]c, λ j. j < i) ≤ count(mx[c0]c, λ j. j < i), c0 ≤ n, #clean0rows(mx0, i) + countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i) ≤ count(mx[n]c, λ j. j < i), #clean0rows(mx0, i) + countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i) ≤ count(mx[c0]c, λ j. j < i), ¬ mx[#clean0rows(mx, i), n] < i, ∀ c. c < #c mx0 → count(mx[c]c, λ j. j < i) ≤ count(mx[c0]c, λ j. j < i), ∀ c. c < #c mx0 → perm(mx0[c]c, mx[c]c) ∧ ordered≤(mx[c]c) ⊦ perm(mx0[n]c, mx[n]c) ∧ ordered≤(mx[n]c) |
Used terms: n
| #c mx = #c mx0, #r mx = #r mx0, mx[n]c[#clean0rows(mx, i)] < i ↔ #clean0rows(mx, i) < count(mx0[n]c, λ j. j < i), min(countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i), countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i)) ≠ 0, c0 < #c mx0, #clean0rows(mx, i) < #clean0rows(mx0, i) + min (countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i), countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i)), #clean0rows(mx0, i) < #r mx0, #clean0rows(mx, i) < #r mx0, n < #c mx0, scolsorted(mx, #c mx0, mx0), srowsorted(mx0, #r mx0, mx0), #clean0rows(mx0, i) + countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i) ≤ count(mx[c0]c, λ j. j < i), #clean0rows(mx0, i) + countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i) ≤ count(mx[n]c, λ j. j < i), c0 ≤ n, count(mx[n]c, λ j. j < i) ≤ count(mx[c0]c, λ j. j < i), #clean0rows(mx0, i) ≤ #clean0rows(mx, i), ¬ mx[#clean0rows(mx, i), n] < i, ∀ c. c < #c mx0 → count(mx[c]c, λ j. j < i) ≤ count(mx[c0]c, λ j. j < i) ⊦ |
⊦ perm(x, y) → count(x, p) = count(y, p)
#c mx = #c mx0, #r mx = #r mx0, mx[n]c[#clean0rows(mx, i)] < i ↔ #clean0rows(mx, i) < count(mx0[n]c, λ j. j < i), min(countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i), countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i)) ≠ 0, n < #c mx0, #clean0rows(mx, i) < #r mx0, #clean0rows(mx0, i) < #r mx0, #clean0rows(mx, i) < #clean0rows(mx0, i) + min (countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i), countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i)), c0 < #c mx0, scolsorted(mx, #c mx0, mx0), srowsorted(mx0, #r mx0, mx0), #clean0rows(mx0, i) ≤ #clean0rows(mx, i), count(mx[n]c, λ j. j < i) ≤ count(mx[c0]c, λ j. j < i), c0 ≤ n, #clean0rows(mx0, i) + countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i) ≤ count(mx[n]c, λ j. j < i), #clean0rows(mx0, i) + countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i) ≤ count(mx[c0]c, λ j. j < i), ¬ mx[#clean0rows(mx, i), n] < i, perm(mx0[n]c, mx[n]c) → count(mx0[n]c, λ j. j < i) = count(mx[n]c, λ j. j < i), ∀ c. c < #c mx0 → count(mx[c]c, λ j. j < i) ≤ count(mx[c0]c, λ j. j < i) ⊦
Used terms: mx0[n]c, mx[n]c, λ j. j < i
| ⊦ perm(x, y) → count(x, p) = count(y, p) |
| #c mx = #c mx0, #r mx = #r mx0, mx[n]c[#clean0rows(mx, i)] < i ↔ #clean0rows(mx, i) < count(mx0[n]c, λ j. j < i), min(countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i), countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i)) ≠ 0, n < #c mx0, #clean0rows(mx, i) < #r mx0, #clean0rows(mx0, i) < #r mx0, #clean0rows(mx, i) < #clean0rows(mx0, i) + min (countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i), countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i)), c0 < #c mx0, scolsorted(mx, #c mx0, mx0), srowsorted(mx0, #r mx0, mx0), #clean0rows(mx0, i) ≤ #clean0rows(mx, i), count(mx[n]c, λ j. j < i) ≤ count(mx[c0]c, λ j. j < i), c0 ≤ n, #clean0rows(mx0, i) + countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i) ≤ count(mx[n]c, λ j. j < i), #clean0rows(mx0, i) + countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i) ≤ count(mx[c0]c, λ j. j < i), ¬ mx[#clean0rows(mx, i), n] < i, perm(mx0[n]c, mx[n]c) → count(mx0[n]c, λ j. j < i) = count(mx[n]c, λ j. j < i), ∀ c. c < #c mx0 → count(mx[c]c, λ j. j < i) ≤ count(mx[c0]c, λ j. j < i) ⊦ |
#c mx = #c mx0, #r mx = #r mx0, mx[n]c[#clean0rows(mx, i)] < i ↔ #clean0rows(mx, i) < count(mx0[n]c, λ j. j < i), min(countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i), countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i)) ≠ 0, c0 < #c mx0, #clean0rows(mx, i) < #clean0rows(mx0, i) + min (countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i), countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i)), #clean0rows(mx0, i) < #r mx0, #clean0rows(mx, i) < #r mx0, n < #c mx0, scolsorted(mx, #c mx0, mx0), srowsorted(mx0, #r mx0, mx0), #clean0rows(mx0, i) + countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i) ≤ count(mx[c0]c, λ j. j < i), #clean0rows(mx0, i) + countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i) ≤ count(mx[n]c, λ j. j < i), c0 ≤ n, count(mx[n]c, λ j. j < i) ≤ count(mx[c0]c, λ j. j < i), #clean0rows(mx0, i) ≤ #clean0rows(mx, i), ¬ mx[#clean0rows(mx, i), n] < i, ¬ perm(mx0[n]c, mx[n]c), ∀ c. c < #c mx0 → count(mx[c]c, λ j. j < i) ≤ count(mx[c0]c, λ j. j < i) ⊦
Used simplifier rules: ⊦ mx[c]c[r] = mx[r, c]; (s) ⊦ m < n ↔ ¬ n ≤ m; (ss) let: ⊦ n ≤ n0 ∧ n0 ≤ n1 → n ≤ n1; (forward) from specification nat fle-01: ⊦ m ≤ n ∧ n < n0 → m < n0; (forward) from specification nat lf-01: ⊦ m < n ∧ n = n0 → m < n0; (forward) from specification nat-basic lf-02: ⊦ m < n ∧ m = n0 → n0 < n; (forward) from specification nat-basic ⊦ m + n < m + n0 ↔ n < n0; (s) ⊦ ¬ m < min(m, n); (s) min-a: ⊦ min(m, min(n, n0)) = min(min(m, n), n0); from specification nat-even min-c: ⊦ min(m, n) = min(n, m); from specification nat-even a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic c: ⊦ m + n = n + m; from specification nat-basic
| #c mx = #c mx0, #r mx = #r mx0, mx[n]c[#clean0rows(mx, i)] < i ↔ #clean0rows(mx, i) < count(mx0[n]c, λ j. j < i), min(countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i), countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i)) ≠ 0, c0 < #c mx0, #clean0rows(mx, i) < #clean0rows(mx0, i) + min (countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i), countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i)), #clean0rows(mx0, i) < #r mx0, #clean0rows(mx, i) < #r mx0, n < #c mx0, scolsorted(mx, #c mx0, mx0), srowsorted(mx0, #r mx0, mx0), #clean0rows(mx0, i) + countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i) ≤ count(mx[c0]c, λ j. j < i), #clean0rows(mx0, i) + countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i) ≤ count(mx[n]c, λ j. j < i), c0 ≤ n, count(mx[n]c, λ j. j < i) ≤ count(mx[c0]c, λ j. j < i), #clean0rows(mx0, i) ≤ #clean0rows(mx, i), ¬ mx[#clean0rows(mx, i), n] < i, ¬ perm(mx0[n]c, mx[n]c), ∀ c. c < #c mx0 → count(mx[c]c, λ j. j < i) ≤ count(mx[c0]c, λ j. j < i) ⊦ |
⊦ m ≤ #c mx → ( scolsorted(mx, m, mx0) ↔ #r mx = #r mx0 ∧ #c mx = #c mx0 ∧ (∀ c. c < #c mx → (c < m ⊃ perm(mx0[c]c, mx[c]c) ∧ ordered≤(mx[c]c);mx0[c]c = mx[c]c)))
#c mx = #c mx0, #r mx = #r mx0, mx[n]c[#clean0rows(mx, i)] < i ↔ #clean0rows(mx, i) < count(mx0[n]c, λ j. j < i), min(countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i), countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i)) ≠ 0, n < #c mx0, #clean0rows(mx, i) < #r mx0, #clean0rows(mx0, i) < #r mx0, #clean0rows(mx, i) < #clean0rows(mx0, i) + min (countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i), countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i)), c0 < #c mx0, srowsorted(mx0, #r mx0, mx0), #clean0rows(mx0, i) ≤ #clean0rows(mx, i), count(mx[n]c, λ j. j < i) ≤ count(mx[c0]c, λ j. j < i), c0 ≤ n, #clean0rows(mx0, i) + countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i) ≤ count(mx[n]c, λ j. j < i), #clean0rows(mx0, i) + countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i) ≤ count(mx[c0]c, λ j. j < i), #c mx0 ≤ #c mx, ¬ mx[#clean0rows(mx, i), n] < i, ¬ perm(mx0[n]c, mx[n]c), ∀ c. c < #c mx0 → count(mx[c]c, λ j. j < i) ≤ count(mx[c0]c, λ j. j < i), ∀ c. c < #c mx → (c < #c mx0 ⊃ perm(mx0[c]c, mx[c]c) ∧ ordered≤(mx[c]c);mx0[c]c = mx[c]c) ⊦
Used simplifier rules: ⊦ mx[c]c[r] = mx[r, c]; (s) ⊦ m ≤ n ↔ ¬ n < m; (ss) ⊦ m < n ↔ ¬ n ≤ m; (ss) fle-01: ⊦ m ≤ n ∧ n < n0 → m < n0; (forward) from specification nat lf-02: ⊦ m < n ∧ m = n0 → n0 < n; (forward) from specification nat-basic lf-01: ⊦ m < n ∧ n = n0 → m < n0; (forward) from specification nat-basic 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 ⊦ m < n → ¬ n < m; (s) Used terms: mx, #c mx0, mx0
| ⊦ m ≤ #c mx → ( scolsorted(mx, m, mx0) ↔ #r mx = #r mx0 ∧ #c mx = #c mx0 ∧ (∀ c. c < #c mx → (c < m ⊃ perm(mx0[c]c, mx[c]c) ∧ ordered≤(mx[c]c);mx0[c]c = mx[c]c))) |
| #c mx = #c mx0, #r mx = #r mx0, mx[n]c[#clean0rows(mx, i)] < i ↔ #clean0rows(mx, i) < count(mx0[n]c, λ j. j < i), min(countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i), countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i)) ≠ 0, n < #c mx0, #clean0rows(mx, i) < #r mx0, #clean0rows(mx0, i) < #r mx0, #clean0rows(mx, i) < #clean0rows(mx0, i) + min (countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i), countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i)), c0 < #c mx0, srowsorted(mx0, #r mx0, mx0), #clean0rows(mx0, i) ≤ #clean0rows(mx, i), count(mx[n]c, λ j. j < i) ≤ count(mx[c0]c, λ j. j < i), c0 ≤ n, #clean0rows(mx0, i) + countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i) ≤ count(mx[n]c, λ j. j < i), #clean0rows(mx0, i) + countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i) ≤ count(mx[c0]c, λ j. j < i), #c mx0 ≤ #c mx, ¬ mx[#clean0rows(mx, i), n] < i, ¬ perm(mx0[n]c, mx[n]c), ∀ c. c < #c mx0 → count(mx[c]c, λ j. j < i) ≤ count(mx[c0]c, λ j. j < i), ∀ c. c < #c mx → (c < #c mx0 ⊃ perm(mx0[c]c, mx[c]c) ∧ ordered≤(mx[c]c);mx0[c]c = mx[c]c) ⊦ |
#c mx = #c mx0, #r mx = #r mx0, min(countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i), countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i)) ≠ 0, c0 < #c mx0, #clean0rows(mx, i) < #clean0rows(mx0, i) + min (countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i), countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i)), #clean0rows(mx0, i) < #r mx0, #clean0rows(mx, i) < #r mx0, n < #c mx0, count(mx0[n]c, λ j. j < i) < #clean0rows(mx0, i) + min (countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i), countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i)), count(mx0[n]c, λ j. j < i) < #r mx0, srowsorted(mx0, #r mx0, mx0), #clean0rows(mx0, i) + countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i) ≤ count(mx[c0]c, λ j. j < i), #clean0rows(mx0, i) + countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i) ≤ count(mx[n]c, λ j. j < i), c0 ≤ n, count(mx[n]c, λ j. j < i) ≤ count(mx[c0]c, λ j. j < i), #clean0rows(mx0, i) ≤ #clean0rows(mx, i), count(mx0[n]c, λ j. j < i) ≤ #clean0rows(mx, i), ¬ mx[#clean0rows(mx, i), n] < i, ¬ perm(mx0[n]c, mx[n]c), ∀ c. c < #c mx0 → perm(mx0[c]c, mx[c]c) ∧ ordered≤(mx[c]c), ∀ c. c < #c mx0 → count(mx[c]c, λ j. j < i) ≤ count(mx[c0]c, λ j. j < i) ⊦
Used simplifier rules: lf-01: ⊦ m < n ∧ n = n0 → m < n0; (forward) from specification nat-basic ⊦ m ≤ m; (s) fle: ⊦ m < n ∧ n ≤ n0 → m < n0; (forward) from specification nat fle-01: ⊦ m ≤ n ∧ n < n0 → m < n0; (forward) from specification nat ⊦ m < n ↔ ¬ n ≤ m; (ss) ⊦ mx[c]c[r] = mx[r, c]; (s)
| #c mx = #c mx0, #r mx = #r mx0, min(countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i), countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i)) ≠ 0, c0 < #c mx0, #clean0rows(mx, i) < #clean0rows(mx0, i) + min (countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i), countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i)), #clean0rows(mx0, i) < #r mx0, #clean0rows(mx, i) < #r mx0, n < #c mx0, count(mx0[n]c, λ j. j < i) < #clean0rows(mx0, i) + min (countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i), countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i)), count(mx0[n]c, λ j. j < i) < #r mx0, srowsorted(mx0, #r mx0, mx0), #clean0rows(mx0, i) + countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i) ≤ count(mx[c0]c, λ j. j < i), #clean0rows(mx0, i) + countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i) ≤ count(mx[n]c, λ j. j < i), c0 ≤ n, count(mx[n]c, λ j. j < i) ≤ count(mx[c0]c, λ j. j < i), #clean0rows(mx0, i) ≤ #clean0rows(mx, i), count(mx0[n]c, λ j. j < i) ≤ #clean0rows(mx, i), ¬ mx[#clean0rows(mx, i), n] < i, ¬ perm(mx0[n]c, mx[n]c), ∀ c. c < #c mx0 → perm(mx0[c]c, mx[c]c) ∧ ordered≤(mx[c]c), ∀ c. c < #c mx0 → count(mx[c]c, λ j. j < i) ≤ count(mx[c0]c, λ j. j < i) ⊦ |
Used terms: n
| #c mx = #c mx0, #r mx = #r mx0, min(countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i), countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i)) ≠ 0, #clean0rows(mx, i) < #clean0rows(mx0, i) + min (countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i), countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i)), c0 < #c mx0, scolsorted(mx, #c mx0, mx0), srowsorted(mx0, #r mx0, mx0), #clean0rows(mx0, i) ≤ #r mx0, #clean0rows(mx, i) ≤ #r mx0, #clean0rows(mx0, i) ≤ #clean0rows(mx, i), ¬ #clean0rows(mx, i) < #r mx0, #clean0rows(mx, i) < #r mx0 → count(mx[#clean0rows(mx, i)]r, λ j. ¬ j < i) ≠ 0, ∀ c. c < #c mx0 → count(mx[c]c, λ j. j < i) ≤ count(mx[c0]c, λ j. j < i) ⊦ |
#c mx = #c mx0, #clean0rows(mx, i) = #r mx0, #r mx = #clean0rows(mx, i), min (countevn(mx0[c0]c, #clean0rows(mx0, i), #clean0rows(mx, i), λ j. j < i), countodd(mx0[c0]c, #clean0rows(mx0, i), #clean0rows(mx, i), λ j. j < i)) ≠ 0, #clean0rows(mx, i) < #clean0rows(mx0, i) + min (countevn(mx0[c0]c, #clean0rows(mx0, i), #clean0rows(mx, i), λ j. j < i), countodd(mx0[c0]c, #clean0rows(mx0, i), #clean0rows(mx, i), λ j. j < i)), c0 < #c mx0, scolsorted(mx, #c mx0, mx0), srowsorted(mx0, #clean0rows(mx, i), mx0), #clean0rows(mx0, i) ≤ #clean0rows(mx, i), ∀ c. c < #c mx0 → count(mx[c]c, λ j. j < i) ≤ count(mx[c0]c, λ j. j < i) ⊦
Used simplifier rules: ⊦ ¬ n < n; (s) ⊦ m ≤ m; (s) 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 < n → n ≠ 0; (s) fle-01: ⊦ m ≤ n ∧ n < n0 → m < n0; (forward) from specification nat let: ⊦ n ≤ n0 ∧ n0 ≤ n1 → n ≤ n1; (forward) from specification nat lf-02: ⊦ m < n ∧ m = n0 → n0 < n; (forward) from specification nat-basic f: ⊦ m < n → n ≠ 0; (forward) from specification nat-basic ⊦ m ≤ n → (n ≤ m ↔ m = n); (s) ⊦ m < n ↔ ¬ n ≤ m; (ss)
| #c mx = #c mx0, #clean0rows(mx, i) = #r mx0, #r mx = #clean0rows(mx, i), min (countevn(mx0[c0]c, #clean0rows(mx0, i), #clean0rows(mx, i), λ j. j < i), countodd(mx0[c0]c, #clean0rows(mx0, i), #clean0rows(mx, i), λ j. j < i)) ≠ 0, #clean0rows(mx, i) < #clean0rows(mx0, i) + min (countevn(mx0[c0]c, #clean0rows(mx0, i), #clean0rows(mx, i), λ j. j < i), countodd(mx0[c0]c, #clean0rows(mx0, i), #clean0rows(mx, i), λ j. j < i)), c0 < #c mx0, scolsorted(mx, #c mx0, mx0), srowsorted(mx0, #clean0rows(mx, i), mx0), #clean0rows(mx0, i) ≤ #clean0rows(mx, i), ∀ c. c < #c mx0 → count(mx[c]c, λ j. j < i) ≤ count(mx[c0]c, λ j. j < i) ⊦ |
m ≤ n, n ≤ # a ⊦ countevn(a, m, n, p) + countodd(a, m, n, p) = count(a, m, n, p)
#c mx = #c mx0, #clean0rows(mx, i) = #r mx0, #r mx = #clean0rows(mx, i), countevn(mx0[c0]c, #clean0rows(mx0, i), #clean0rows(mx, i), λ j. j < i) + countodd(mx0[c0]c, #clean0rows(mx0, i), #clean0rows(mx, i), λ j. j < i) = count(mx0[c0]c, #clean0rows(mx0, i), #clean0rows(mx, i), λ j. j < i), min (countevn(mx0[c0]c, #clean0rows(mx0, i), #clean0rows(mx, i), λ j. j < i), countodd(mx0[c0]c, #clean0rows(mx0, i), #clean0rows(mx, i), λ j. j < i)) ≠ 0, c0 < #c mx0, #clean0rows(mx, i) < #clean0rows(mx0, i) + min (countevn(mx0[c0]c, #clean0rows(mx0, i), #clean0rows(mx, i), λ j. j < i), countodd(mx0[c0]c, #clean0rows(mx0, i), #clean0rows(mx, i), λ j. j < i)), scolsorted(mx, #c mx0, mx0), srowsorted(mx0, #clean0rows(mx, i), mx0), #clean0rows(mx0, i) ≤ #clean0rows(mx, i), ∀ c. c < #c mx0 → count(mx[c]c, λ j. j < i) ≤ count(mx[c0]c, λ j. j < i) ⊦
Used simplifier rules: clean0rows-bounded: ⊦ ¬ #r mx < #clean0rows(mx, i); ⊦ # mx[c]c = #r mx; (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 lf-02: ⊦ m < n ∧ m = n0 → n0 < n; (forward) from specification nat-basic lf-01: ⊦ m < n ∧ n = n0 → m < n0; (forward) from specification nat-basic fle-01: ⊦ m ≤ n ∧ n < n0 → m < n0; (forward) from specification nat ⊦ m < n → n ≠ 0; (s) ⊦ m +1 = m + 1; (s) Used terms: #clean0rows(mx0, i), #clean0rows(mx, i), mx0[c0]c, λ j. j < i
| m ≤ n, n ≤ # a ⊦ countevn(a, m, n, p) + countodd(a, m, n, p) = count(a, m, n, p) |
| #c mx = #c mx0, #clean0rows(mx, i) = #r mx0, #r mx = #clean0rows(mx, i), countevn(mx0[c0]c, #clean0rows(mx0, i), #clean0rows(mx, i), λ j. j < i) + countodd(mx0[c0]c, #clean0rows(mx0, i), #clean0rows(mx, i), λ j. j < i) = count(mx0[c0]c, #clean0rows(mx0, i), #clean0rows(mx, i), λ j. j < i), min (countevn(mx0[c0]c, #clean0rows(mx0, i), #clean0rows(mx, i), λ j. j < i), countodd(mx0[c0]c, #clean0rows(mx0, i), #clean0rows(mx, i), λ j. j < i)) ≠ 0, c0 < #c mx0, #clean0rows(mx, i) < #clean0rows(mx0, i) + min (countevn(mx0[c0]c, #clean0rows(mx0, i), #clean0rows(mx, i), λ j. j < i), countodd(mx0[c0]c, #clean0rows(mx0, i), #clean0rows(mx, i), λ j. j < i)), scolsorted(mx, #c mx0, mx0), srowsorted(mx0, #clean0rows(mx, i), mx0), #clean0rows(mx0, i) ≤ #clean0rows(mx, i), ∀ c. c < #c mx0 → count(mx[c]c, λ j. j < i) ≤ count(mx[c0]c, λ j. j < i) ⊦ |
n ≤ m, m ≤ # x ⊦ ¬ m - n < count(x, n, m, p)
#c mx = #c mx0, #clean0rows(mx, i) = #r mx0, #r mx = #clean0rows(mx, i), countevn(mx0[c0]c, #clean0rows(mx0, i), #clean0rows(mx, i), λ j. j < i) + countodd(mx0[c0]c, #clean0rows(mx0, i), #clean0rows(mx, i), λ j. j < i) = count(mx0[c0]c, #clean0rows(mx0, i), #clean0rows(mx, i), λ j. j < i), min (countevn(mx0[c0]c, #clean0rows(mx0, i), #clean0rows(mx, i), λ j. j < i), countodd(mx0[c0]c, #clean0rows(mx0, i), #clean0rows(mx, i), λ j. j < i)) ≠ 0, #clean0rows(mx, i) < #clean0rows(mx0, i) + min (countevn(mx0[c0]c, #clean0rows(mx0, i), #clean0rows(mx, i), λ j. j < i), countodd(mx0[c0]c, #clean0rows(mx0, i), #clean0rows(mx, i), λ j. j < i)), c0 < #c mx0, scolsorted(mx, #c mx0, mx0), srowsorted(mx0, #clean0rows(mx, i), mx0), #clean0rows(mx0, i) ≤ #clean0rows(mx, i), ¬ #clean0rows(mx, i) - #clean0rows(mx0, i) < count(mx[c0]c, #clean0rows(mx0, i), #clean0rows(mx, i), λ j. j < i), ∀ c. c < #c mx0 → count(mx[c]c, λ j. j < i) ≤ count(mx[c0]c, λ j. j < i) ⊦
Used simplifier rules: clean0rows-bounded: ⊦ ¬ #r mx < #clean0rows(mx, i); ⊦ # mx[c]c = #r mx; (s) ⊦ m ≤ n ↔ ¬ n < m; (ss) Used terms: #clean0rows(mx0, i), #clean0rows(mx, i), mx[c0]c, λ j. j < i
| n ≤ m, m ≤ # x ⊦ ¬ m - n < count(x, n, m, p) |
| #c mx = #c mx0, #clean0rows(mx, i) = #r mx0, #r mx = #clean0rows(mx, i), countevn(mx0[c0]c, #clean0rows(mx0, i), #clean0rows(mx, i), λ j. j < i) + countodd(mx0[c0]c, #clean0rows(mx0, i), #clean0rows(mx, i), λ j. j < i) = count(mx0[c0]c, #clean0rows(mx0, i), #clean0rows(mx, i), λ j. j < i), min (countevn(mx0[c0]c, #clean0rows(mx0, i), #clean0rows(mx, i), λ j. j < i), countodd(mx0[c0]c, #clean0rows(mx0, i), #clean0rows(mx, i), λ j. j < i)) ≠ 0, #clean0rows(mx, i) < #clean0rows(mx0, i) + min (countevn(mx0[c0]c, #clean0rows(mx0, i), #clean0rows(mx, i), λ j. j < i), countodd(mx0[c0]c, #clean0rows(mx0, i), #clean0rows(mx, i), λ j. j < i)), c0 < #c mx0, scolsorted(mx, #c mx0, mx0), srowsorted(mx0, #clean0rows(mx, i), mx0), #clean0rows(mx0, i) ≤ #clean0rows(mx, i), ¬ #clean0rows(mx, i) - #clean0rows(mx0, i) < count(mx[c0]c, #clean0rows(mx0, i), #clean0rows(mx, i), λ j. j < i), ∀ c. c < #c mx0 → count(mx[c]c, λ j. j < i) ≤ count(mx[c0]c, λ j. j < i) ⊦ |
#c mx = #c mx0, #clean0rows(mx, i) = #r mx0, #r mx = #clean0rows(mx, i), countevn(mx0[c0]c, #clean0rows(mx0, i), #clean0rows(mx, i), λ j. j < i) + countodd(mx0[c0]c, #clean0rows(mx0, i), #clean0rows(mx, i), λ j. j < i) = count(mx0[c0]c, #clean0rows(mx0, i), #clean0rows(mx, i), λ j. j < i), count(mx[c0]c, #clean0rows(mx0, i), #clean0rows(mx, i), λ j. j < i) < min (countevn(mx0[c0]c, #clean0rows(mx0, i), #clean0rows(mx, i), λ j. j < i), countodd(mx0[c0]c, #clean0rows(mx0, i), #clean0rows(mx, i), λ j. j < i)), c0 < #c mx0, #clean0rows(mx, i) < #clean0rows(mx0, i) + min (countevn(mx0[c0]c, #clean0rows(mx0, i), #clean0rows(mx, i), λ j. j < i), countodd(mx0[c0]c, #clean0rows(mx0, i), #clean0rows(mx, i), λ j. j < i)), scolsorted(mx, #c mx0, mx0), srowsorted(mx0, #clean0rows(mx, i), mx0), #clean0rows(mx0, i) ≤ #clean0rows(mx, i), count(mx[c0]c, #clean0rows(mx0, i), #clean0rows(mx, i), λ j. j < i) + #clean0rows(mx0, i) ≤ #clean0rows(mx, i), ∀ c. c < #c mx0 → count(mx[c]c, λ j. j < i) ≤ count(mx[c0]c, λ j. j < i) ⊦
Used simplifier rules: ⊦ m < n → n ≠ 0; (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 < m + n0 ↔ n < n0; (s) fle-01: ⊦ m ≤ n ∧ n < n0 → m < n0; (forward) from specification nat ⊦ m < n ↔ ¬ n ≤ m; (ss) n0 ≤ n ⊦ n - n0 < m ↔ n < m + n0; (s) ⊦ m ≤ n → (n < m ↔ false); (s) ⊦ m ≤ n ↔ ¬ n < m; (ss)
| #c mx = #c mx0, #clean0rows(mx, i) = #r mx0, #r mx = #clean0rows(mx, i), countevn(mx0[c0]c, #clean0rows(mx0, i), #clean0rows(mx, i), λ j. j < i) + countodd(mx0[c0]c, #clean0rows(mx0, i), #clean0rows(mx, i), λ j. j < i) = count(mx0[c0]c, #clean0rows(mx0, i), #clean0rows(mx, i), λ j. j < i), count(mx[c0]c, #clean0rows(mx0, i), #clean0rows(mx, i), λ j. j < i) < min (countevn(mx0[c0]c, #clean0rows(mx0, i), #clean0rows(mx, i), λ j. j < i), countodd(mx0[c0]c, #clean0rows(mx0, i), #clean0rows(mx, i), λ j. j < i)), c0 < #c mx0, #clean0rows(mx, i) < #clean0rows(mx0, i) + min (countevn(mx0[c0]c, #clean0rows(mx0, i), #clean0rows(mx, i), λ j. j < i), countodd(mx0[c0]c, #clean0rows(mx0, i), #clean0rows(mx, i), λ j. j < i)), scolsorted(mx, #c mx0, mx0), srowsorted(mx0, #clean0rows(mx, i), mx0), #clean0rows(mx0, i) ≤ #clean0rows(mx, i), count(mx[c0]c, #clean0rows(mx0, i), #clean0rows(mx, i), λ j. j < i) + #clean0rows(mx0, i) ≤ #clean0rows(mx, i), ∀ c. c < #c mx0 → count(mx[c]c, λ j. j < i) ≤ count(mx[c0]c, λ j. j < i) ⊦ |
#c mx = #c mx0, #r mx = #r mx0, countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx, λ j. j < i) + countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx, λ j. j < i) = count(mx0[c0]c, #clean0rows(mx0, i), #r mx, λ j. j < i), #r mx < #clean0rows(mx0, i) + min (countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx, λ j. j < i), countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx, λ j. j < i)), c0 < #c mx0, count(mx[c0]c, #clean0rows(mx0, i), #r mx, λ j. j < i) < min(countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx, λ j. j < i), countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx, λ j. j < i)), scolsorted(mx, #c mx0, mx0), srowsorted(mx0, #r mx, mx0), count(mx[c0]c, #clean0rows(mx0, i), #r mx, λ j. j < i) + #clean0rows(mx0, i) ≤ #r mx, #clean0rows(mx0, i) ≤ #r mx, ∀ c. c < #c mx0 → count(mx[c]c, λ j. j < i) ≤ count(mx[c0]c, λ j. j < i) ⊦
| #c mx = #c mx0, #r mx = #r mx0, countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx, λ j. j < i) + countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx, λ j. j < i) = count(mx0[c0]c, #clean0rows(mx0, i), #r mx, λ j. j < i), #r mx < #clean0rows(mx0, i) + min (countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx, λ j. j < i), countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx, λ j. j < i)), c0 < #c mx0, count(mx[c0]c, #clean0rows(mx0, i), #r mx, λ j. j < i) < min(countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx, λ j. j < i), countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx, λ j. j < i)), scolsorted(mx, #c mx0, mx0), srowsorted(mx0, #r mx, mx0), count(mx[c0]c, #clean0rows(mx0, i), #r mx, λ j. j < i) + #clean0rows(mx0, i) ≤ #r mx, #clean0rows(mx0, i) ≤ #r mx, ∀ c. c < #c mx0 → count(mx[c]c, λ j. j < i) ≤ count(mx[c0]c, λ j. j < i) ⊦ |
#c mx = #c mx0, #r mx = #r mx0, countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i) + countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i) = count(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i), c0 < #c mx0, #r mx0 < #clean0rows(mx0, i) + min (countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i), countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i)), count(mx[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i) < min (countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i), countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i)), scolsorted(mx, #c mx0, mx0), srowsorted(mx0, #r mx0, mx0), count(mx[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i) + #clean0rows(mx0, i) ≤ #r mx0, #clean0rows(mx0, i) ≤ #r mx0, ∀ c. c < #c mx0 → count(mx[c]c, λ j. j < i) ≤ count(mx[c0]c, λ j. j < i) ⊦
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) ⊦ m < n → n ≠ 0; (s) fle-01: ⊦ m ≤ n ∧ n < n0 → m < n0; (forward) from specification nat f: ⊦ m < n → n ≠ 0; (forward) from specification nat-basic lf-02: ⊦ m < n ∧ m = n0 → n0 < n; (forward) from specification nat-basic
| #c mx = #c mx0, #r mx = #r mx0, countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i) + countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i) = count(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i), c0 < #c mx0, #r mx0 < #clean0rows(mx0, i) + min (countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i), countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i)), count(mx[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i) < min (countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i), countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i)), scolsorted(mx, #c mx0, mx0), srowsorted(mx0, #r mx0, mx0), count(mx[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i) + #clean0rows(mx0, i) ≤ #r mx0, #clean0rows(mx0, i) ≤ #r mx0, ∀ c. c < #c mx0 → count(mx[c]c, λ j. j < i) ≤ count(mx[c0]c, λ j. j < i) ⊦ |
⊦ perm(x, y) → count(x, p) = count(y, p)
#c mx = #c mx0, #r mx = #r mx0, countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i) + countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i) = count(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i), count(mx[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i) < min (countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i), countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i)), #r mx0 < #clean0rows(mx0, i) + min (countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i), countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i)), c0 < #c mx0, scolsorted(mx, #c mx0, mx0), srowsorted(mx0, #r mx0, mx0), #clean0rows(mx0, i) ≤ #r mx0, count(mx[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i) + #clean0rows(mx0, i) ≤ #r mx0, perm(mx0[c0]c, mx[c0]c) → count(mx0[c0]c, λ j. j < i) = count(mx[c0]c, λ j. j < i), ∀ c. c < #c mx0 → count(mx[c]c, λ j. j < i) ≤ count(mx[c0]c, λ j. j < i) ⊦
Used terms: mx0[c0]c, mx[c0]c, λ j. j < i
| ⊦ perm(x, y) → count(x, p) = count(y, p) |
| #c mx = #c mx0, #r mx = #r mx0, countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i) + countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i) = count(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i), count(mx[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i) < min (countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i), countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i)), #r mx0 < #clean0rows(mx0, i) + min (countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i), countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i)), c0 < #c mx0, scolsorted(mx, #c mx0, mx0), srowsorted(mx0, #r mx0, mx0), #clean0rows(mx0, i) ≤ #r mx0, count(mx[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i) + #clean0rows(mx0, i) ≤ #r mx0, perm(mx0[c0]c, mx[c0]c) → count(mx0[c0]c, λ j. j < i) = count(mx[c0]c, λ j. j < i), ∀ c. c < #c mx0 → count(mx[c]c, λ j. j < i) ≤ count(mx[c0]c, λ j. j < i) ⊦ |
#c mx = #c mx0, #r mx = #r mx0, countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i) + countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i) = count(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i), c0 < #c mx0, #r mx0 < #clean0rows(mx0, i) + min (countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i), countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i)), count(mx[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i) < min (countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i), countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i)), scolsorted(mx, #c mx0, mx0), srowsorted(mx0, #r mx0, mx0), count(mx[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i) + #clean0rows(mx0, i) ≤ #r mx0, #clean0rows(mx0, i) ≤ #r mx0, ¬ perm(mx0[c0]c, mx[c0]c), ∀ c. c < #c mx0 → count(mx[c]c, λ j. j < i) ≤ count(mx[c0]c, λ j. j < i) ⊦
#c mx = #c mx0, #r mx = #r mx0, countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i) + countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i) = count(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i), count(mx0[c0]c, λ j. j < i) = count(mx[c0]c, λ j. j < i), c0 < #c mx0, #r mx0 < #clean0rows(mx0, i) + min (countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i), countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i)), count(mx[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i) < min (countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i), countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i)), scolsorted(mx, #c mx0, mx0), srowsorted(mx0, #r mx0, mx0), count(mx[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i) + #clean0rows(mx0, i) ≤ #r mx0, #clean0rows(mx0, i) ≤ #r mx0, ∀ c. c < #c mx0 → count(mx[c]c, λ j. j < i) ≤ count(mx[c0]c, λ j. j < i) ⊦
| #c mx = #c mx0, #r mx = #r mx0, countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i) + countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i) = count(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i), c0 < #c mx0, #r mx0 < #clean0rows(mx0, i) + min (countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i), countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i)), count(mx[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i) < min (countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i), countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i)), scolsorted(mx, #c mx0, mx0), srowsorted(mx0, #r mx0, mx0), count(mx[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i) + #clean0rows(mx0, i) ≤ #r mx0, #clean0rows(mx0, i) ≤ #r mx0, ¬ perm(mx0[c0]c, mx[c0]c), ∀ c. c < #c mx0 → count(mx[c]c, λ j. j < i) ≤ count(mx[c0]c, λ j. j < i) ⊦ |
⊦ m ≤ #c mx → ( scolsorted(mx, m, mx0) ↔ #r mx = #r mx0 ∧ #c mx = #c mx0 ∧ (∀ c. c < #c mx → (c < m ⊃ perm(mx0[c]c, mx[c]c) ∧ ordered≤(mx[c]c);mx0[c]c = mx[c]c)))
#c mx = #c mx0, #r mx = #r mx0, countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i) + countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i) = count(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i), count(mx[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i) < min (countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i), countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i)), #r mx0 < #clean0rows(mx0, i) + min (countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i), countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i)), c0 < #c mx0, srowsorted(mx0, #r mx0, mx0), #clean0rows(mx0, i) ≤ #r mx0, count(mx[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i) + #clean0rows(mx0, i) ≤ #r mx0, #c mx0 ≤ #c mx, ¬ perm(mx0[c0]c, mx[c0]c), ∀ c. c < #c mx0 → count(mx[c]c, λ j. j < i) ≤ count(mx[c0]c, λ j. j < i), ∀ c. c < #c mx → (c < #c mx0 ⊃ perm(mx0[c]c, mx[c]c) ∧ ordered≤(mx[c]c);mx0[c]c = mx[c]c) ⊦
Used simplifier rules: ⊦ m ≤ n ↔ ¬ n < m; (ss) lf-02: ⊦ m < n ∧ m = n0 → n0 < n; (forward) from specification nat-basic lf-01: ⊦ m < n ∧ n = n0 → m < n0; (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 ⊦ m < n → ¬ n < m; (s) Used terms: mx, #c mx0, mx0
| ⊦ m ≤ #c mx → ( scolsorted(mx, m, mx0) ↔ #r mx = #r mx0 ∧ #c mx = #c mx0 ∧ (∀ c. c < #c mx → (c < m ⊃ perm(mx0[c]c, mx[c]c) ∧ ordered≤(mx[c]c);mx0[c]c = mx[c]c))) |
| #c mx = #c mx0, #r mx = #r mx0, countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i) + countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i) = count(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i), count(mx[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i) < min (countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i), countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i)), #r mx0 < #clean0rows(mx0, i) + min (countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i), countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i)), c0 < #c mx0, srowsorted(mx0, #r mx0, mx0), #clean0rows(mx0, i) ≤ #r mx0, count(mx[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i) + #clean0rows(mx0, i) ≤ #r mx0, #c mx0 ≤ #c mx, ¬ perm(mx0[c0]c, mx[c0]c), ∀ c. c < #c mx0 → count(mx[c]c, λ j. j < i) ≤ count(mx[c0]c, λ j. j < i), ∀ c. c < #c mx → (c < #c mx0 ⊃ perm(mx0[c]c, mx[c]c) ∧ ordered≤(mx[c]c);mx0[c]c = mx[c]c) ⊦ |
#c mx = #c mx0, #r mx = #r mx0, countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i) + countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i) = count(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i), count(mx[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i) < min (countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i), countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i)), #r mx0 < #clean0rows(mx0, i) + min (countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i), countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i)), c0 < #c mx0, srowsorted(mx0, #r mx0, mx0), #clean0rows(mx0, i) ≤ #r mx0, count(mx[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i) + #clean0rows(mx0, i) ≤ #r mx0, ¬ perm(mx0[c0]c, mx[c0]c), ∀ c. c < #c mx0 → count(mx[c]c, λ j. j < i) ≤ count(mx[c0]c, λ j. j < i), ∀ c. c < #c mx0 → perm(mx0[c]c, mx[c]c) ∧ ordered≤(mx[c]c) ⊦
Used simplifier rules: ⊦ m ≤ m; (s) fle: ⊦ m < n ∧ n ≤ n0 → m < n0; (forward) from specification nat
| #c mx = #c mx0, #r mx = #r mx0, countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i) + countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i) = count(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i), count(mx[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i) < min (countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i), countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i)), #r mx0 < #clean0rows(mx0, i) + min (countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i), countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i)), c0 < #c mx0, srowsorted(mx0, #r mx0, mx0), #clean0rows(mx0, i) ≤ #r mx0, count(mx[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i) + #clean0rows(mx0, i) ≤ #r mx0, ¬ perm(mx0[c0]c, mx[c0]c), ∀ c. c < #c mx0 → count(mx[c]c, λ j. j < i) ≤ count(mx[c0]c, λ j. j < i), ∀ c. c < #c mx0 → perm(mx0[c]c, mx[c]c) ∧ ordered≤(mx[c]c) ⊦ |
Used terms: c0
| #c mx = #c mx0, #r mx = #r mx0, countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i) + countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i) = count(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i), count(mx0[c0]c, λ j. j < i) = count(mx[c0]c, λ j. j < i), c0 < #c mx0, #r mx0 < #clean0rows(mx0, i) + min (countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i), countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i)), count(mx[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i) < min (countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i), countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i)), scolsorted(mx, #c mx0, mx0), srowsorted(mx0, #r mx0, mx0), count(mx[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i) + #clean0rows(mx0, i) ≤ #r mx0, #clean0rows(mx0, i) ≤ #r mx0, ∀ c. c < #c mx0 → count(mx[c]c, λ j. j < i) ≤ count(mx[c0]c, λ j. j < i) ⊦ |
⊦ count(x, p) = count(x, 0, # x, p)
#c mx = #c mx0, #r mx = #r mx0, countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i) + countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i) = count(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i), count(mx0[c0]c, 0, # mx0[c0]c, λ j. j < i) = count(mx[c0]c, λ j. j < i), count(mx[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i) < min (countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i), countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i)), #r mx0 < #clean0rows(mx0, i) + min (countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i), countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i)), c0 < #c mx0, scolsorted(mx, #c mx0, mx0), srowsorted(mx0, #r mx0, mx0), #clean0rows(mx0, i) ≤ #r mx0, count(mx[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i) + #clean0rows(mx0, i) ≤ #r mx0, ∀ c. c < #c mx0 → count(mx[c]c, λ j. j < i) ≤ count(mx[c0]c, λ j. j < i) ⊦
Used terms: mx0[c0]c, λ j. j < i
| ⊦ count(x, p) = count(x, 0, # x, p) |
| #c mx = #c mx0, #r mx = #r mx0, countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i) + countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i) = count(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i), count(mx0[c0]c, 0, # mx0[c0]c, λ j. j < i) = count(mx[c0]c, λ j. j < i), count(mx[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i) < min (countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i), countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i)), #r mx0 < #clean0rows(mx0, i) + min (countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i), countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i)), c0 < #c mx0, scolsorted(mx, #c mx0, mx0), srowsorted(mx0, #r mx0, mx0), #clean0rows(mx0, i) ≤ #r mx0, count(mx[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i) + #clean0rows(mx0, i) ≤ #r mx0, ∀ c. c < #c mx0 → count(mx[c]c, λ j. j < i) ≤ count(mx[c0]c, λ j. j < i) ⊦ |
#c mx = #c mx0, #r mx = #r mx0, countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i) + countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i) = count(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i), count(mx0[c0]c, 0, #r mx0, λ j. j < i) = count(mx[c0]c, λ j. j < i), c0 < #c mx0, #r mx0 < #clean0rows(mx0, i) + min (countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i), countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i)), count(mx[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i) < min (countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i), countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i)), scolsorted(mx, #c mx0, mx0), srowsorted(mx0, #r mx0, mx0), count(mx[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i) + #clean0rows(mx0, i) ≤ #r mx0, #clean0rows(mx0, i) ≤ #r mx0, ∀ c. c < #c mx0 → count(mx[c]c, λ j. j < i) ≤ count(mx0[c0]c, 0, #r mx0, λ j. j < i) ⊦
Used simplifier rules: ⊦ # mx[c]c = #r mx; (s)
| #c mx = #c mx0, #r mx = #r mx0, countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i) + countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i) = count(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i), count(mx0[c0]c, 0, #r mx0, λ j. j < i) = count(mx[c0]c, λ j. j < i), c0 < #c mx0, #r mx0 < #clean0rows(mx0, i) + min (countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i), countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i)), count(mx[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i) < min (countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i), countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i)), scolsorted(mx, #c mx0, mx0), srowsorted(mx0, #r mx0, mx0), count(mx[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i) + #clean0rows(mx0, i) ≤ #r mx0, #clean0rows(mx0, i) ≤ #r mx0, ∀ c. c < #c mx0 → count(mx[c]c, λ j. j < i) ≤ count(mx0[c0]c, 0, #r mx0, λ j. j < i) ⊦ |
⊦ count(x, p) = count(x, 0, # x, p)
#c mx = #c mx0, #r mx = #r mx0, countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i) + countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i) = count(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i), count(mx0[c0]c, 0, #r mx0, λ j. j < i) = count(mx[c0]c, 0, # mx[c0]c, λ j. j < i), count(mx[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i) < min (countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i), countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i)), #r mx0 < #clean0rows(mx0, i) + min (countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i), countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i)), c0 < #c mx0, scolsorted(mx, #c mx0, mx0), srowsorted(mx0, #r mx0, mx0), #clean0rows(mx0, i) ≤ #r mx0, count(mx[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i) + #clean0rows(mx0, i) ≤ #r mx0, ∀ c. c < #c mx0 → count(mx[c]c, λ j. j < i) ≤ count(mx0[c0]c, 0, #r mx0, λ j. j < i) ⊦
Used terms: mx[c0]c, λ j. j < i
| ⊦ count(x, p) = count(x, 0, # x, p) |
| #c mx = #c mx0, #r mx = #r mx0, countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i) + countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i) = count(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i), count(mx0[c0]c, 0, #r mx0, λ j. j < i) = count(mx[c0]c, 0, # mx[c0]c, λ j. j < i), count(mx[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i) < min (countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i), countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i)), #r mx0 < #clean0rows(mx0, i) + min (countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i), countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i)), c0 < #c mx0, scolsorted(mx, #c mx0, mx0), srowsorted(mx0, #r mx0, mx0), #clean0rows(mx0, i) ≤ #r mx0, count(mx[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i) + #clean0rows(mx0, i) ≤ #r mx0, ∀ c. c < #c mx0 → count(mx[c]c, λ j. j < i) ≤ count(mx0[c0]c, 0, #r mx0, λ j. j < i) ⊦ |
#c mx = #c mx0, #r mx = #r mx0, countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i) + countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i) = count(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i), count(mx0[c0]c, 0, #r mx0, λ j. j < i) = count(mx[c0]c, 0, #r mx0, λ j. j < i), c0 < #c mx0, #r mx0 < #clean0rows(mx0, i) + min (countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i), countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i)), count(mx[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i) < min (countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i), countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i)), scolsorted(mx, #c mx0, mx0), srowsorted(mx0, #r mx0, mx0), count(mx[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i) + #clean0rows(mx0, i) ≤ #r mx0, #clean0rows(mx0, i) ≤ #r mx0, ∀ c. c < #c mx0 → count(mx[c]c, λ j. j < i) ≤ count(mx[c0]c, 0, #r mx0, λ j. j < i) ⊦
Used simplifier rules: ⊦ # mx[c]c = #r mx; (s)
| #c mx = #c mx0, #r mx = #r mx0, countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i) + countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i) = count(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i), count(mx0[c0]c, 0, #r mx0, λ j. j < i) = count(mx[c0]c, 0, #r mx0, λ j. j < i), c0 < #c mx0, #r mx0 < #clean0rows(mx0, i) + min (countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i), countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i)), count(mx[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i) < min (countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i), countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i)), scolsorted(mx, #c mx0, mx0), srowsorted(mx0, #r mx0, mx0), count(mx[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i) + #clean0rows(mx0, i) ≤ #r mx0, #clean0rows(mx0, i) ≤ #r mx0, ∀ c. c < #c mx0 → count(mx[c]c, λ j. j < i) ≤ count(mx[c0]c, 0, #r mx0, λ j. j < i) ⊦ |
m ≤ n, n ≤ n0, n0 ≤ # x ⊦ count(x, m, n, p) + count(x, n, n0, p) = count(x, m, n0, p)
#c mx = #c mx0, #r mx = #r mx0, count(mx0[c0]c, 0, #clean0rows(mx0, i), λ j. j < i) + count(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i) = count(mx[c0]c, 0, #r mx0, λ j. j < i), countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i) + countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i) = count(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i), count(mx[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i) < min (countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i), countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i)), #r mx0 < #clean0rows(mx0, i) + min (countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i), countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i)), c0 < #c mx0, scolsorted(mx, #c mx0, mx0), srowsorted(mx0, #r mx0, mx0), count(mx[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i) + #clean0rows(mx0, i) ≤ #r mx0, 0 ≤ #clean0rows(mx0, i), #clean0rows(mx0, i) ≤ #r mx0, #r mx0 ≤ # mx0[c0]c, ∀ c. c < #c mx0 → count(mx[c]c, λ j. j < i) ≤ count(mx[c0]c, 0, #r mx0, λ j. j < i) ⊦
Used simplifier rules: ⊦ 0 ≤ m; (s) ⊦ # mx[c]c = #r mx; (s) ⊦ m ≤ m; (s) Used terms: #r mx0, λ j. j < i, #clean0rows(mx0, i), 0, mx0[c0]c
| m ≤ n, n ≤ n0, n0 ≤ # x ⊦ count(x, m, n, p) + count(x, n, n0, p) = count(x, m, n0, p) |
| #c mx = #c mx0, #r mx = #r mx0, count(mx0[c0]c, 0, #clean0rows(mx0, i), λ j. j < i) + count(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i) = count(mx[c0]c, 0, #r mx0, λ j. j < i), countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i) + countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i) = count(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i), count(mx[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i) < min (countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i), countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i)), #r mx0 < #clean0rows(mx0, i) + min (countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i), countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i)), c0 < #c mx0, scolsorted(mx, #c mx0, mx0), srowsorted(mx0, #r mx0, mx0), count(mx[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i) + #clean0rows(mx0, i) ≤ #r mx0, 0 ≤ #clean0rows(mx0, i), #clean0rows(mx0, i) ≤ #r mx0, #r mx0 ≤ # mx0[c0]c, ∀ c. c < #c mx0 → count(mx[c]c, λ j. j < i) ≤ count(mx[c0]c, 0, #r mx0, λ j. j < i) ⊦ |
c < #c mx ⊦ m ≤ #clean0rows(mx, i) → count(mx[c]c, 0, m, λ j. j < i) = m
#c mx = #c mx0, #r mx = #r mx0, countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i) + countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i) = count(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i), #clean0rows(mx0, i) + count(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i) = count(mx[c0]c, 0, #r mx0, λ j. j < i), #r mx0 < #clean0rows(mx0, i) + min (countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i), countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i)), count(mx[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i) < min (countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i), countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i)), c0 < #c mx0, scolsorted(mx, #c mx0, mx0), srowsorted(mx0, #r mx0, mx0), #r mx0 ≤ # mx0[c0]c, #clean0rows(mx0, i) ≤ #r mx0, 0 ≤ #clean0rows(mx0, i), count(mx[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i) + #clean0rows(mx0, i) ≤ #r mx0, #clean0rows(mx0, i) ≤ #clean0rows(mx0, i), ∀ c. c < #c mx0 → count(mx[c]c, λ j. j < i) ≤ count(mx[c0]c, 0, #r mx0, λ j. j < i) ⊦
Used simplifier rules: ⊦ 0 ≤ m; (s) ⊦ # mx[c]c = #r mx; (s) ⊦ m ≤ m; (s) Used terms: i, mx0, c0, #clean0rows(mx0, i)
| c < #c mx ⊦ m ≤ #clean0rows(mx, i) → count(mx[c]c, 0, m, λ j. j < i) = m |
| #c mx = #c mx0, #r mx = #r mx0, countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i) + countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i) = count(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i), #clean0rows(mx0, i) + count(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i) = count(mx[c0]c, 0, #r mx0, λ j. j < i), #r mx0 < #clean0rows(mx0, i) + min (countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i), countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i)), count(mx[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i) < min (countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i), countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i)), c0 < #c mx0, scolsorted(mx, #c mx0, mx0), srowsorted(mx0, #r mx0, mx0), #r mx0 ≤ # mx0[c0]c, #clean0rows(mx0, i) ≤ #r mx0, 0 ≤ #clean0rows(mx0, i), count(mx[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i) + #clean0rows(mx0, i) ≤ #r mx0, #clean0rows(mx0, i) ≤ #clean0rows(mx0, i), ∀ c. c < #c mx0 → count(mx[c]c, λ j. j < i) ≤ count(mx[c0]c, 0, #r mx0, λ j. j < i) ⊦ |
m ≤ n, n ≤ n0, n0 ≤ # x ⊦ count(x, m, n, p) + count(x, n, n0, p) = count(x, m, n0, p)
#c mx = #c mx0, #r mx = #r mx0, #clean0rows(mx0, i) + count(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i) = count(mx[c0]c, 0, #clean0rows(mx0, i), λ j. j < i) + count(mx[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i), countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i) + countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i) = count(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i), c0 < #c mx0, count(mx[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i) < min (countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i), countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i)), #r mx0 < #clean0rows(mx0, i) + min (countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i), countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i)), scolsorted(mx, #c mx0, mx0), srowsorted(mx0, #r mx0, mx0), #clean0rows(mx0, i) ≤ #clean0rows(mx0, i), count(mx[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i) + #clean0rows(mx0, i) ≤ #r mx0, #r mx0 ≤ # mx0[c0]c, 0 ≤ #clean0rows(mx0, i), #clean0rows(mx0, i) ≤ #r mx0, #r mx0 ≤ # mx[c0]c, ∀ c. c < #c mx0 → count(mx[c]c, λ j. j < i) ≤ count(mx[c0]c, 0, #clean0rows(mx0, i), λ j. j < i) + count(mx[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i) ⊦
Used simplifier rules: ⊦ m ≤ m; (s) ⊦ 0 ≤ m; (s) ⊦ # mx[c]c = #r mx; (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 lf-02: ⊦ m < n ∧ m = n0 → n0 < n; (forward) from specification nat-basic lf-01: ⊦ m < n ∧ n = n0 → m < n0; (forward) from specification nat-basic trans-nat: ⊦ n < n0 ∧ n0 < n1 → n < n1; (forward) from specification nat-basic fle-01: ⊦ m ≤ n ∧ n < n0 → m < n0; (forward) from specification nat ⊦ m < n → n ≠ 0; (s) ⊦ m +1 = m + 1; (s) ⊦ m < n → ¬ n < m; (s) Used terms: #r mx0, λ j. j < i, #clean0rows(mx0, i), 0, mx[c0]c
| m ≤ n, n ≤ n0, n0 ≤ # x ⊦ count(x, m, n, p) + count(x, n, n0, p) = count(x, m, n0, p) |
| #c mx = #c mx0, #r mx = #r mx0, #clean0rows(mx0, i) + count(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i) = count(mx[c0]c, 0, #clean0rows(mx0, i), λ j. j < i) + count(mx[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i), countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i) + countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i) = count(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i), c0 < #c mx0, count(mx[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i) < min (countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i), countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i)), #r mx0 < #clean0rows(mx0, i) + min (countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i), countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i)), scolsorted(mx, #c mx0, mx0), srowsorted(mx0, #r mx0, mx0), #clean0rows(mx0, i) ≤ #clean0rows(mx0, i), count(mx[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i) + #clean0rows(mx0, i) ≤ #r mx0, #r mx0 ≤ # mx0[c0]c, 0 ≤ #clean0rows(mx0, i), #clean0rows(mx0, i) ≤ #r mx0, #r mx0 ≤ # mx[c0]c, ∀ c. c < #c mx0 → count(mx[c]c, λ j. j < i) ≤ count(mx[c0]c, 0, #clean0rows(mx0, i), λ j. j < i) + count(mx[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i) ⊦ |
c < #c mx ⊦ m ≤ #clean0rows(mx, i) → count(mx[c]c, 0, m, λ j. j < i) = m
#c mx = #c mx0, #r mx = #r mx0, countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i) + countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i) = count(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i), #clean0rows(mx0, i) + count(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i) = count(mx[c0]c, 0, #clean0rows(mx0, i), λ j. j < i) + count(mx[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i), #r mx0 < #clean0rows(mx0, i) + min (countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i), countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i)), count(mx[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i) < min (countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i), countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i)), c0 < #c mx0, scolsorted(mx, #c mx0, mx0), srowsorted(mx0, #r mx0, mx0), #r mx0 ≤ # mx[c0]c, #clean0rows(mx0, i) ≤ #r mx0, 0 ≤ #clean0rows(mx0, i), #r mx0 ≤ # mx0[c0]c, count(mx[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i) + #clean0rows(mx0, i) ≤ #r mx0, #clean0rows(mx0, i) ≤ #clean0rows(mx0, i), ∀ c. c < #c mx0 → count(mx[c]c, λ j. j < i) ≤ count(mx[c0]c, 0, #clean0rows(mx0, i), λ j. j < i) + count(mx[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i) ⊦ c0 < #c mx ∧ #clean0rows(mx0, i) ≤ #clean0rows(mx, i)
#c mx = #c mx0, #r mx = #r mx0, countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i) + countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i) = count(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i), #clean0rows(mx0, i) + count(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i) = #clean0rows(mx0, i) + count(mx[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i), #r mx0 < #clean0rows(mx0, i) + min (countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i), countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i)), count(mx[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i) < min (countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i), countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i)), c0 < #c mx0, c0 < #c mx, scolsorted(mx, #c mx0, mx0), srowsorted(mx0, #r mx0, mx0), #r mx0 ≤ # mx[c0]c, #clean0rows(mx0, i) ≤ #r mx0, 0 ≤ #clean0rows(mx0, i), #r mx0 ≤ # mx0[c0]c, count(mx[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i) + #clean0rows(mx0, i) ≤ #r mx0, #clean0rows(mx0, i) ≤ #clean0rows(mx0, i), #clean0rows(mx0, i) ≤ #clean0rows(mx, i), ∀ c. c < #c mx0 → count(mx[c]c, λ j. j < i) ≤ #clean0rows(mx0, i) + count(mx[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i) ⊦
Used terms: i, mx, c0, #clean0rows(mx0, i)
| c < #c mx ⊦ m ≤ #clean0rows(mx, i) → count(mx[c]c, 0, m, λ j. j < i) = m |
| #c mx = #c mx0, #r mx = #r mx0, countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i) + countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i) = count(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i), #clean0rows(mx0, i) + count(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i) = count(mx[c0]c, 0, #clean0rows(mx0, i), λ j. j < i) + count(mx[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i), #r mx0 < #clean0rows(mx0, i) + min (countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i), countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i)), count(mx[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i) < min (countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i), countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i)), c0 < #c mx0, scolsorted(mx, #c mx0, mx0), srowsorted(mx0, #r mx0, mx0), #r mx0 ≤ # mx[c0]c, #clean0rows(mx0, i) ≤ #r mx0, 0 ≤ #clean0rows(mx0, i), #r mx0 ≤ # mx0[c0]c, count(mx[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i) + #clean0rows(mx0, i) ≤ #r mx0, #clean0rows(mx0, i) ≤ #clean0rows(mx0, i), ∀ c. c < #c mx0 → count(mx[c]c, λ j. j < i) ≤ count(mx[c0]c, 0, #clean0rows(mx0, i), λ j. j < i) + count(mx[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i) ⊦ c0 < #c mx ∧ #clean0rows(mx0, i) ≤ #clean0rows(mx, i) |
#c mx = #c mx0, #r mx = #r mx0, #clean0rows(mx0, i) + count(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i) = count(mx[c0]c, 0, #clean0rows(mx0, i), λ j. j < i) + count(mx[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i), countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i) + countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i) = count(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i), c0 < #c mx0, count(mx[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i) < min (countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i), countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i)), #r mx0 < #clean0rows(mx0, i) + min (countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i), countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i)), scolsorted(mx, #c mx0, mx0), srowsorted(mx0, #r mx0, mx0), #clean0rows(mx0, i) ≤ #clean0rows(mx0, i), count(mx[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i) + #clean0rows(mx0, i) ≤ #r mx0, #r mx0 ≤ # mx0[c0]c, 0 ≤ #clean0rows(mx0, i), #clean0rows(mx0, i) ≤ #r mx0, #r mx0 ≤ # mx[c0]c, ¬ #clean0rows(mx0, i) ≤ #clean0rows(mx, i), ∀ c. c < #c mx0 → count(mx[c]c, λ j. j < i) ≤ count(mx[c0]c, 0, #clean0rows(mx0, i), λ j. j < i) + count(mx[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i) ⊦
Used simplifier rules: ⊦ 0 ≤ m; (s) ⊦ # mx[c]c = #r mx; (s) ⊦ m ≤ m; (s) ⊦ m < n ↔ ¬ n ≤ m; (ss) fle-01: ⊦ m ≤ n ∧ n < n0 → m < n0; (forward) from specification nat fle: ⊦ m < n ∧ n ≤ n0 → m < n0; (forward) from specification nat let: ⊦ n ≤ n0 ∧ n0 ≤ n1 → n ≤ n1; (forward) from specification nat ⊦ ¬ n < n; (s)
| #c mx = #c mx0, #r mx = #r mx0, #clean0rows(mx0, i) + count(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i) = count(mx[c0]c, 0, #clean0rows(mx0, i), λ j. j < i) + count(mx[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i), countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i) + countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i) = count(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i), c0 < #c mx0, count(mx[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i) < min (countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i), countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i)), #r mx0 < #clean0rows(mx0, i) + min (countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i), countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i)), scolsorted(mx, #c mx0, mx0), srowsorted(mx0, #r mx0, mx0), #clean0rows(mx0, i) ≤ #clean0rows(mx0, i), count(mx[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i) + #clean0rows(mx0, i) ≤ #r mx0, #r mx0 ≤ # mx0[c0]c, 0 ≤ #clean0rows(mx0, i), #clean0rows(mx0, i) ≤ #r mx0, #r mx0 ≤ # mx[c0]c, ¬ #clean0rows(mx0, i) ≤ #clean0rows(mx, i), ∀ c. c < #c mx0 → count(mx[c]c, λ j. j < i) ≤ count(mx[c0]c, 0, #clean0rows(mx0, i), λ j. j < i) + count(mx[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i) ⊦ |
#c mx = #c mx0, #r mx = #r mx0, countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i) + countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i) = count(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i), #clean0rows(mx0, i) + count(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i) = count(mx[c0]c, 0, #clean0rows(mx0, i), λ j. j < i) + count(mx[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i), #clean0rows(mx, i) < #clean0rows(mx0, i) + min (countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i), countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i)), count(mx[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i) < min (countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i), countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i)), c0 < #c mx0, #clean0rows(mx, i) < #clean0rows(mx0, i), #r mx0 < #clean0rows(mx0, i) + min (countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i), countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i)), #clean0rows(mx, i) < #r mx0, #clean0rows(mx, i) + 1 < #clean0rows(mx0, i) + min (countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i), countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i)), scolsorted(mx, #c mx0, mx0), srowsorted(mx0, #r mx0, mx0), #clean0rows(mx0, i) ≤ #r mx0, count(mx[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i) + #clean0rows(mx0, i) ≤ #r mx0, ∀ c. c < #c mx0 → count(mx[c]c, λ j. j < i) ≤ count(mx[c0]c, 0, #clean0rows(mx0, i), λ j. j < i) + count(mx[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i) ⊦
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-01: ⊦ m < n ∧ n = n0 → m < n0; (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 ≤ m; (s) let: ⊦ n ≤ n0 ∧ n0 ≤ n1 → n ≤ n1; (forward) from specification nat fle-01: ⊦ m ≤ n ∧ n < n0 → m < n0; (forward) from specification nat fle: ⊦ m < n ∧ n ≤ n0 → m < n0; (forward) from specification nat ⊦ m ≤ n ↔ ¬ n < m; (ss) ⊦ # mx[c]c = #r mx; (s) ⊦ 0 ≤ m; (s)
| #c mx = #c mx0, #r mx = #r mx0, countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i) + countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i) = count(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i), #clean0rows(mx0, i) + count(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i) = count(mx[c0]c, 0, #clean0rows(mx0, i), λ j. j < i) + count(mx[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i), #clean0rows(mx, i) < #clean0rows(mx0, i) + min (countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i), countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i)), count(mx[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i) < min (countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i), countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i)), c0 < #c mx0, #clean0rows(mx, i) < #clean0rows(mx0, i), #r mx0 < #clean0rows(mx0, i) + min (countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i), countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i)), #clean0rows(mx, i) < #r mx0, #clean0rows(mx, i) + 1 < #clean0rows(mx0, i) + min (countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i), countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i)), scolsorted(mx, #c mx0, mx0), srowsorted(mx0, #r mx0, mx0), #clean0rows(mx0, i) ≤ #r mx0, count(mx[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i) + #clean0rows(mx0, i) ≤ #r mx0, ∀ c. c < #c mx0 → count(mx[c]c, λ j. j < i) ≤ count(mx[c0]c, 0, #clean0rows(mx0, i), λ j. j < i) + count(mx[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i) ⊦ |
#c mx ≠ 0, #r mx = #r mx0, #c mx = #c mx0 ⊦ scolsorted(mx, #c mx0, mx0) → ¬ #clean0rows(mx, i) < #clean0rows(mx0, i)
Used simplifier rules: f: ⊦ m < n → n ≠ 0; (forward) from specification nat-basic lf-01: ⊦ m < n ∧ n = n0 → m < n0; (forward) from specification nat-basic Used terms: mx, i, mx0
| #c mx ≠ 0, #r mx = #r mx0, #c mx = #c mx0 ⊦ scolsorted(mx, #c mx0, mx0) → ¬ #clean0rows(mx, i) < #clean0rows(mx0, i) |
| #c mx = #c mx0, #r mx = #r mx0, countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i) + countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i) = count(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i), #clean0rows(mx0, i) + count(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i) = #clean0rows(mx0, i) + count(mx[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i), #r mx0 < #clean0rows(mx0, i) + min (countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i), countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i)), count(mx[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i) < min (countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i), countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i)), c0 < #c mx0, c0 < #c mx, scolsorted(mx, #c mx0, mx0), srowsorted(mx0, #r mx0, mx0), #r mx0 ≤ # mx[c0]c, #clean0rows(mx0, i) ≤ #r mx0, 0 ≤ #clean0rows(mx0, i), #r mx0 ≤ # mx0[c0]c, count(mx[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i) + #clean0rows(mx0, i) ≤ #r mx0, #clean0rows(mx0, i) ≤ #clean0rows(mx0, i), #clean0rows(mx0, i) ≤ #clean0rows(mx, i), ∀ c. c < #c mx0 → count(mx[c]c, λ j. j < i) ≤ #clean0rows(mx0, i) + count(mx[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i) ⊦ |
#c mx = #c mx0, #r mx = #r mx0, countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i) + countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i) = count(mx[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i), count(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i) = count(mx[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i), #r mx0 < #clean0rows(mx0, i) + min (countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i), countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i)), count(mx[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i) < min (countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i), countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i)), c0 < #c mx0, scolsorted(mx, #c mx0, mx0), srowsorted(mx0, #r mx0, mx0), #clean0rows(mx0, i) ≤ #r mx0, count(mx[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i) + #clean0rows(mx0, i) ≤ #r mx0, #clean0rows(mx0, i) ≤ #clean0rows(mx, i), ∀ c. c < #c mx0 → count(mx[c]c, λ j. j < i) ≤ #clean0rows(mx0, i) + count(mx[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i) ⊦
Used simplifier rules: ⊦ m ≤ m; (s) lf-02: ⊦ m < n ∧ m = n0 → n0 < n; (forward) from specification nat-basic let: ⊦ n ≤ n0 ∧ n0 ≤ n1 → n ≤ n1; (forward) from specification nat fle-01: ⊦ m ≤ n ∧ n < n0 → m < n0; (forward) from specification nat ⊦ # mx[c]c = #r mx; (s) ⊦ 0 ≤ m; (s) 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)
| #c mx = #c mx0, #r mx = #r mx0, countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i) + countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i) = count(mx[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i), count(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i) = count(mx[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i), #r mx0 < #clean0rows(mx0, i) + min (countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i), countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i)), count(mx[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i) < min (countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i), countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i)), c0 < #c mx0, scolsorted(mx, #c mx0, mx0), srowsorted(mx0, #r mx0, mx0), #clean0rows(mx0, i) ≤ #r mx0, count(mx[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i) + #clean0rows(mx0, i) ≤ #r mx0, #clean0rows(mx0, i) ≤ #clean0rows(mx, i), ∀ c. c < #c mx0 → count(mx[c]c, λ j. j < i) ≤ #clean0rows(mx0, i) + count(mx[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i) ⊦ |
#c mx = #c mx0, #r mx = #r mx0, count(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i) = countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i) + countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i), c0 < #c mx0, countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i) + countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i) < min (countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i), countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i)), #r mx0 < #clean0rows(mx0, i) + min (countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i), countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i)), scolsorted(mx, #c mx0, mx0), srowsorted(mx0, #r mx0, mx0), #clean0rows(mx0, i) ≤ #clean0rows(mx, i), (countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i) + countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i)) + #clean0rows(mx0, i) ≤ #r mx0, #clean0rows(mx0, i) ≤ #r mx0, ∀ c. c < #c mx0 → count(mx[c]c, λ j. j < i) ≤ #clean0rows(mx0, i) + countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i) + countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i) ⊦
| #c mx = #c mx0, #r mx = #r mx0, count(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i) = countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i) + countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i), c0 < #c mx0, countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i) + countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i) < min (countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i), countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i)), #r mx0 < #clean0rows(mx0, i) + min (countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i), countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i)), scolsorted(mx, #c mx0, mx0), srowsorted(mx0, #r mx0, mx0), #clean0rows(mx0, i) ≤ #clean0rows(mx, i), (countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i) + countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i)) + #clean0rows(mx0, i) ≤ #r mx0, #clean0rows(mx0, i) ≤ #r mx0, ∀ c. c < #c mx0 → count(mx[c]c, λ j. j < i) ≤ #clean0rows(mx0, i) + countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i) + countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i) ⊦ |
#c mx = #c mx0, #r mx = #r mx0, count(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i) = countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i) + countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i), c0 < #c mx0, #r mx0 < #clean0rows(mx0, i) + min (countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i), countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i)), count(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i) < min (countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i), countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i)), scolsorted(mx, #c mx0, mx0), srowsorted(mx0, #r mx0, mx0), #clean0rows(mx0, i) ≤ #clean0rows(mx, i), count(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i) + #clean0rows(mx0, i) ≤ #r mx0, #clean0rows(mx0, i) ≤ #r mx0, ∀ c. c < #c mx0 → count(mx[c]c, λ j. j < i) ≤ #clean0rows(mx0, i) + count(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i) ⊦
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) fle-01: ⊦ m ≤ n ∧ n < n0 → m < n0; (forward) from specification nat
| #c mx = #c mx0, #r mx = #r mx0, count(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i) = countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i) + countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i), c0 < #c mx0, #r mx0 < #clean0rows(mx0, i) + min (countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i), countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i)), count(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i) < min (countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i), countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i)), scolsorted(mx, #c mx0, mx0), srowsorted(mx0, #r mx0, mx0), #clean0rows(mx0, i) ≤ #clean0rows(mx, i), count(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i) + #clean0rows(mx0, i) ≤ #r mx0, #clean0rows(mx0, i) ≤ #r mx0, ∀ c. c < #c mx0 → count(mx[c]c, λ j. j < i) ≤ #clean0rows(mx0, i) + count(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i) ⊦ |
⊦ m < n → min(m, n) = m
Used simplifier rules: 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 lf-02: ⊦ m < n ∧ m = n0 → n0 < n; (forward) from specification nat-basic f: ⊦ m < n → n ≠ 0; (forward) from specification nat-basic fle-01: ⊦ m ≤ n ∧ n < n0 → m < n0; (forward) from specification nat ⊦ m < n → n ≠ 0; (s) ⊦ m +1 = m + 1; (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 < n → min(m, n) = n; (s) min-a: ⊦ min(m, min(n, n0)) = min(min(m, n), n0); from specification nat-even min-c: ⊦ min(m, n) = min(n, m); from specification nat-even ⊦ m < n ↔ ¬ n ≤ m; (ss) fle: ⊦ m < n ∧ n ≤ n0 → m < n0; (forward) from specification nat Used terms: countevn(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i), countodd(mx0[c0]c, #clean0rows(mx0, i), #r mx0, λ j. j < i)
| ⊦ m < n → min(m, n) = m |
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.