| #r mx = #r mx0, #c mx = #c mx0, #c mx ≠ 0, ∀ r. r < #r mx → perm(mx0[r]r, mx[r]r) ⊦ #clean1rows(mx0, i) = #clean1rows(mx, i) ↔ true |
#c mx = #c mx0, #r mx = #r mx0, #c mx ≠ 0, ¬(#clean1rows(mx0, i) = #clean1rows(mx, i) ↔ true), ∀ r. r < #r mx → perm(mx0[r]r, mx[r]r) ⊦
| #c mx = #c mx0, #r mx = #r mx0, #c mx ≠ 0, ¬(#clean1rows(mx0, i) = #clean1rows(mx, i) ↔ true), ∀ r. r < #r mx → perm(mx0[r]r, mx[r]r) ⊦ |
#c mx = #c mx0, #r mx = #r mx0, #c mx0 ≠ 0, #clean1rows(mx0, i) ≠ #clean1rows(mx, i), ∀ r. r < #r mx0 → perm(mx0[r]r, mx[r]r) ⊦
| #c mx = #c mx0, #r mx = #r mx0, #c mx0 ≠ 0, #clean1rows(mx0, i) ≠ #clean1rows(mx, i), ∀ r. r < #r mx0 → perm(mx0[r]r, mx[r]r) ⊦ |
#c mx = #c mx0, #r mx = #r mx0, #c mx0 ≠ 0, #clean1rows(mx0, i) ≠ #clean1rows(mx, i), #clean1rows(mx0, i) < #clean1rows(mx, i), ∀ r. r < #r mx0 → perm(mx0[r]r, mx[r]r) ⊦
#c mx = #c mx0, #r mx = #r mx0, #c mx0 ≠ 0, #clean1rows(mx0, i) ≠ #clean1rows(mx, i), ¬ #clean1rows(mx0, i) < #clean1rows(mx, i), ∀ r. r < #r mx0 → perm(mx0[r]r, mx[r]r) ⊦
Used formulas: #clean1rows(mx0, i) < #clean1rows(mx, i)
| #c mx = #c mx0, #r mx = #r mx0, #c mx0 ≠ 0, #clean1rows(mx0, i) ≠ #clean1rows(mx, i), #clean1rows(mx0, i) < #clean1rows(mx, i), ∀ r. r < #r mx0 → perm(mx0[r]r, mx[r]r) ⊦ |
⊦ ¬ #r mx < #clean1rows(mx, i)
#c mx = #c mx0, #r mx = #r mx0, #c mx0 ≠ 0, #clean1rows(mx0, i) ≠ #clean1rows(mx, i), #clean1rows(mx0, i) < #clean1rows(mx, i), ¬ #r mx < #clean1rows(mx, i), ∀ r. r < #r mx0 → perm(mx0[r]r, mx[r]r) ⊦
Used terms: i, mx
| ⊦ ¬ #r mx < #clean1rows(mx, i) |
| #c mx = #c mx0, #r mx = #r mx0, #c mx0 ≠ 0, #clean1rows(mx0, i) ≠ #clean1rows(mx, i), #clean1rows(mx0, i) < #clean1rows(mx, i), ¬ #r mx < #clean1rows(mx, i), ∀ r. r < #r mx0 → perm(mx0[r]r, mx[r]r) ⊦ |
#c mx = #c mx0, #r mx = #r mx0, #c mx0 ≠ 0, #clean1rows(mx0, i) ≠ #clean1rows(mx, i), #clean1rows(mx0, i) < #clean1rows(mx, i), #clean1rows(mx0, i) < #r mx0, #clean1rows(mx, i) ≤ #r mx0, ∀ r. r < #r mx0 → perm(mx0[r]r, mx[r]r) ⊦
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 fle: ⊦ m < n ∧ n ≤ n0 → m < n0; (forward) from specification nat ⊦ m < n ↔ ¬ n ≤ m; (ss)
| #c mx = #c mx0, #r mx = #r mx0, #c mx0 ≠ 0, #clean1rows(mx0, i) ≠ #clean1rows(mx, i), #clean1rows(mx0, i) < #clean1rows(mx, i), #clean1rows(mx0, i) < #r mx0, #clean1rows(mx, i) ≤ #r mx0, ∀ r. r < #r mx0 → perm(mx0[r]r, mx[r]r) ⊦ |
⊦ #clean1rows(mx, i) + r + 1 = #r mx → count(mx[r]r, λ j. j < i) ≠ 0
#c mx = #c mx0, #r mx = #r mx0, #c mx0 ≠ 0, #clean1rows(mx0, i) ≠ #clean1rows(mx, i), #clean1rows(mx0, i) < #r mx0, #clean1rows(mx0, i) < #clean1rows(mx, i), #clean1rows(mx, i) ≤ #r mx0, #clean1rows(mx0, i) + (#r mx - #clean1rows(mx0, i) + 1) + 1 = #r mx0 → count(mx0[#r mx - #clean1rows(mx0, i) + 1]r, λ j. j < i) ≠ 0, ∀ r. r < #r mx0 → perm(mx0[r]r, mx[r]r) ⊦
Used terms: mx0, i, #r mx - #clean1rows(mx0, i) + 1
| ⊦ #clean1rows(mx, i) + r + 1 = #r mx → count(mx[r]r, λ j. j < i) ≠ 0 |
| #c mx = #c mx0, #r mx = #r mx0, #c mx0 ≠ 0, #clean1rows(mx0, i) ≠ #clean1rows(mx, i), #clean1rows(mx0, i) < #r mx0, #clean1rows(mx0, i) < #clean1rows(mx, i), #clean1rows(mx, i) ≤ #r mx0, #clean1rows(mx0, i) + (#r mx - #clean1rows(mx0, i) + 1) + 1 = #r mx0 → count(mx0[#r mx - #clean1rows(mx0, i) + 1]r, λ j. j < i) ≠ 0, ∀ r. r < #r mx0 → perm(mx0[r]r, mx[r]r) ⊦ |
#c mx = #c mx0, #r mx = #r mx0, #c mx0 ≠ 0, #clean1rows(mx0, i) ≠ #clean1rows(mx, i), count(mx0[#r mx0 - #clean1rows(mx0, i) + 1]r, λ j. j < i) ≠ 0, #clean1rows(mx0, i) < #clean1rows(mx, i), #clean1rows(mx0, i) < #r mx0, #clean1rows(mx, i) ≤ #r mx0, ∀ r. r < #r mx0 → perm(mx0[r]r, mx[r]r) ⊦
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) n ≤ m ⊦ (m - n) + n0 = n1 ↔ m + n0 = n + n1; (s) ⊦ m < n → (n ≤ m ↔ false); (s) ⊦ m < n ↔ ¬ n ≤ m; (ss) ⊦ m + 1 ≤ n ↔ m < n; (s)
| #c mx = #c mx0, #r mx = #r mx0, #c mx0 ≠ 0, #clean1rows(mx0, i) ≠ #clean1rows(mx, i), count(mx0[#r mx0 - #clean1rows(mx0, i) + 1]r, λ j. j < i) ≠ 0, #clean1rows(mx0, i) < #clean1rows(mx, i), #clean1rows(mx0, i) < #r mx0, #clean1rows(mx, i) ≤ #r mx0, ∀ r. r < #r mx0 → perm(mx0[r]r, mx[r]r) ⊦ |
#c mx = #c mx0, #r mx = #r mx0, #r mx0 = n0 + #clean1rows(mx0, i) + 1, #c mx0 ≠ 0, #clean1rows(mx0, i) ≠ #clean1rows(mx, i), count(mx0[n0]r, λ j. j < i) ≠ 0, #clean1rows(mx0, i) < #r mx0, #clean1rows(mx0, i) < #clean1rows(mx, i), #clean1rows(mx, i) ≤ #r mx0, #clean1rows(mx0, i) + 1 ≤ #r mx0, ∀ r. r < #r mx0 → perm(mx0[r]r, mx[r]r) ⊦
Used simplifier rules: ⊦ m + 1 ≤ n ↔ m < n; (s) ⊦ m < n ↔ ¬ n ≤ m; (ss) ⊦ m < n → (n ≤ m ↔ false); (s) a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic c: ⊦ m + n = n + m; from specification nat-basic n ≤ m ⊦ n0 = m - n ↔ m = n0 + n; (elim) Used terms: #r mx0, #clean1rows(mx0, i) + 1, n0
| #c mx = #c mx0, #r mx = #r mx0, #r mx0 = n0 + #clean1rows(mx0, i) + 1, #c mx0 ≠ 0, #clean1rows(mx0, i) ≠ #clean1rows(mx, i), count(mx0[n0]r, λ j. j < i) ≠ 0, #clean1rows(mx0, i) < #r mx0, #clean1rows(mx0, i) < #clean1rows(mx, i), #clean1rows(mx, i) ≤ #r mx0, #clean1rows(mx0, i) + 1 ≤ #r mx0, ∀ r. r < #r mx0 → perm(mx0[r]r, mx[r]r) ⊦ |
#c mx = #c mx0, #r mx = #r mx0, #r mx0 = n0 + #clean1rows(mx0, i) + 1, #c mx0 ≠ 0, #clean1rows(mx0, i) ≠ #clean1rows(mx, i), count(mx0[n0]r, λ j. j < i) ≠ 0, #clean1rows(mx0, i) < #r mx0, #clean1rows(mx0, i) < #clean1rows(mx, i), #clean1rows(mx, i) ≤ #r mx0, ∀ r. r < #r mx0 → perm(mx0[r]r, mx[r]r) ⊦
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; (s) ⊦ m < n + 1 ↔ ¬ n < m; (s) lf-01: ⊦ m < n ∧ n = n0 → m < n0; (forward) from specification nat-basic ⊦ m + 1 ≤ n ↔ m < n; (s)
| #c mx = #c mx0, #r mx = #r mx0, #r mx0 = n0 + #clean1rows(mx0, i) + 1, #c mx0 ≠ 0, #clean1rows(mx0, i) ≠ #clean1rows(mx, i), count(mx0[n0]r, λ j. j < i) ≠ 0, #clean1rows(mx0, i) < #r mx0, #clean1rows(mx0, i) < #clean1rows(mx, i), #clean1rows(mx, i) ≤ #r mx0, ∀ r. r < #r mx0 → perm(mx0[r]r, mx[r]r) ⊦ |
⊦ #r mx ≤ #clean1rows(mx, i) + r ∧ r < #r mx → count(mx[r]r, λ j. j < i) = 0
#c mx = #c mx0, #r mx0 = n0 + #clean1rows(mx0, i) + 1, #r mx = #r mx0, #c mx0 ≠ 0, #clean1rows(mx0, i) ≠ #clean1rows(mx, i), count(mx0[n0]r, λ j. j < i) ≠ 0, #clean1rows(mx0, i) < #clean1rows(mx, i), #clean1rows(mx0, i) < #r mx0, #clean1rows(mx, i) ≤ #r mx0, #r mx ≤ #clean1rows(mx, i) + n0 ∧ n0 < #r mx → count(mx[n0]r, λ j. j < i) = 0, ∀ r. r < #r mx0 → perm(mx0[r]r, mx[r]r) ⊦
Used terms: mx, i, n0
| ⊦ #r mx ≤ #clean1rows(mx, i) + r ∧ r < #r mx → count(mx[r]r, λ j. j < i) = 0 |
| #c mx = #c mx0, #r mx0 = n0 + #clean1rows(mx0, i) + 1, #r mx = #r mx0, #c mx0 ≠ 0, #clean1rows(mx0, i) ≠ #clean1rows(mx, i), count(mx0[n0]r, λ j. j < i) ≠ 0, #clean1rows(mx0, i) < #clean1rows(mx, i), #clean1rows(mx0, i) < #r mx0, #clean1rows(mx, i) ≤ #r mx0, #r mx ≤ #clean1rows(mx, i) + n0 ∧ n0 < #r mx → count(mx[n0]r, λ j. j < i) = 0, ∀ r. r < #r mx0 → perm(mx0[r]r, mx[r]r) ⊦ |
#c mx = #c mx0, #r mx = #r mx0, #r mx0 = n0 + #clean1rows(mx0, i) + 1, #c mx0 ≠ 0, #clean1rows(mx0, i) ≠ #clean1rows(mx, i), count(mx0[n0]r, λ j. j < i) ≠ 0, #clean1rows(mx0, i) < #r mx0, #clean1rows(mx0, i) < #clean1rows(mx, i), #clean1rows(mx, i) ≤ #r mx0, #r mx0 ≤ #clean1rows(mx, i) + n0 ∧ n0 < #r mx0 → count(mx[n0]r, λ j. j < i) = 0, ∀ r. r < #r mx0 → perm(mx0[r]r, mx[r]r) ⊦
| #c mx = #c mx0, #r mx = #r mx0, #r mx0 = n0 + #clean1rows(mx0, i) + 1, #c mx0 ≠ 0, #clean1rows(mx0, i) ≠ #clean1rows(mx, i), count(mx0[n0]r, λ j. j < i) ≠ 0, #clean1rows(mx0, i) < #r mx0, #clean1rows(mx0, i) < #clean1rows(mx, i), #clean1rows(mx, i) ≤ #r mx0, #r mx0 ≤ #clean1rows(mx, i) + n0 ∧ n0 < #r mx0 → count(mx[n0]r, λ j. j < i) = 0, ∀ r. r < #r mx0 → perm(mx0[r]r, mx[r]r) ⊦ |
#c mx = #c mx0, #r mx0 = n0 + #clean1rows(mx0, i) + 1, #r mx = #r mx0, #c mx0 ≠ 0, #clean1rows(mx0, i) ≠ #clean1rows(mx, i), count(mx0[n0]r, λ j. j < i) ≠ 0, #clean1rows(mx0, i) < #clean1rows(mx, i), #clean1rows(mx0, i) < #r mx0, #clean1rows(mx, i) ≤ #r mx0, ∀ r. r < #r mx0 → perm(mx0[r]r, mx[r]r) ⊦ #r mx0 ≤ #clean1rows(mx, i) + n0 ∧ n0 < #r mx0
#c mx = #c mx0, #r mx0 = n0 + #clean1rows(mx0, i) + 1, #r mx = #r mx0, count(mx[n0]r, λ j. j < i) = 0, #c mx0 ≠ 0, #clean1rows(mx0, i) ≠ #clean1rows(mx, i), count(mx0[n0]r, λ j. j < i) ≠ 0, #clean1rows(mx0, i) < #clean1rows(mx, i), #clean1rows(mx0, i) < #r mx0, #clean1rows(mx, i) ≤ #r mx0, ∀ r. r < #r mx0 → perm(mx0[r]r, mx[r]r) ⊦
| #c mx = #c mx0, #r mx0 = n0 + #clean1rows(mx0, i) + 1, #r mx = #r mx0, #c mx0 ≠ 0, #clean1rows(mx0, i) ≠ #clean1rows(mx, i), count(mx0[n0]r, λ j. j < i) ≠ 0, #clean1rows(mx0, i) < #clean1rows(mx, i), #clean1rows(mx0, i) < #r mx0, #clean1rows(mx, i) ≤ #r mx0, ∀ r. r < #r mx0 → perm(mx0[r]r, mx[r]r) ⊦ #r mx0 ≤ #clean1rows(mx, i) + n0 ∧ n0 < #r mx0 |
#c mx = #c mx0, #r mx0 = n0 + #clean1rows(mx0, i) + 1, #r mx = #r mx0, #c mx0 ≠ 0, #clean1rows(mx0, i) ≠ #clean1rows(mx, i), count(mx0[n0]r, λ j. j < i) ≠ 0, #clean1rows(mx0, i) < #clean1rows(mx, i), #clean1rows(mx0, i) < #r mx0, #clean1rows(mx0, i) < #clean1rows(mx, i) + n0, #clean1rows(mx0, i) < n0, #clean1rows(mx, i) ≤ #r mx0, #r mx0 ≤ #clean1rows(mx, i) + n0, #r mx0 ≤ n0, #clean1rows(mx, i) ≤ n0, ∀ r. r < #r mx0 → perm(mx0[r]r, mx[r]r) ⊦
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 ≤ m + n; (s) fle: ⊦ m < n ∧ n ≤ n0 → m < n0; (forward) from specification nat let: ⊦ n ≤ n0 ∧ n0 ≤ n1 → n ≤ n1; (forward) from specification nat ⊦ m < n ↔ ¬ n ≤ m; (ss) ⊦ m < n → ¬ n < m; (s) ⊦ m ≠ n → (m < n + 1 ↔ m < n); (s) ⊦ m + n < m + n0 ↔ n < n0; (s) lf-01: ⊦ m < n ∧ n = n0 → m < n0; (forward) from specification nat-basic ⊦ m ≤ n ↔ ¬ n < m; (ss)
| #c mx = #c mx0, #r mx0 = n0 + #clean1rows(mx0, i) + 1, #r mx = #r mx0, #c mx0 ≠ 0, #clean1rows(mx0, i) ≠ #clean1rows(mx, i), count(mx0[n0]r, λ j. j < i) ≠ 0, #clean1rows(mx0, i) < #clean1rows(mx, i), #clean1rows(mx0, i) < #r mx0, #clean1rows(mx0, i) < #clean1rows(mx, i) + n0, #clean1rows(mx0, i) < n0, #clean1rows(mx, i) ≤ #r mx0, #r mx0 ≤ #clean1rows(mx, i) + n0, #r mx0 ≤ n0, #clean1rows(mx, i) ≤ n0, ∀ r. r < #r mx0 → perm(mx0[r]r, mx[r]r) ⊦ |
Used simplifier rules: ⊦ m + n ≤ m + n0 ↔ n ≤ n0; (s) ⊦ m + 1 ≤ n ↔ m < n; (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
| #c mx = #c mx0, #r mx0 = n0 + #clean1rows(mx0, i) + 1, #r mx = #r mx0, count(mx[n0]r, λ j. j < i) = 0, #c mx0 ≠ 0, #clean1rows(mx0, i) ≠ #clean1rows(mx, i), count(mx0[n0]r, λ j. j < i) ≠ 0, #clean1rows(mx0, i) < #clean1rows(mx, i), #clean1rows(mx0, i) < #r mx0, #clean1rows(mx, i) ≤ #r mx0, ∀ r. r < #r mx0 → perm(mx0[r]r, mx[r]r) ⊦ |
⊦ perm(x, y) → count(x, p) = count(y, p)
#c mx = #c mx0, #r mx = #r mx0, #r mx0 = n0 + #clean1rows(mx0, i) + 1, count(mx[n0]r, λ j. j < i) = 0, #c mx0 ≠ 0, #clean1rows(mx0, i) ≠ #clean1rows(mx, i), count(mx0[n0]r, λ j. j < i) ≠ 0, #clean1rows(mx0, i) < #r mx0, #clean1rows(mx0, i) < #clean1rows(mx, i), #clean1rows(mx, i) ≤ #r mx0, ¬ perm(mx0[n0]r, mx[n0]r), ∀ r. r < #r mx0 → perm(mx0[r]r, mx[r]r) ⊦
Used terms: mx0[n0]r, mx[n0]r, λ j. j < i
| ⊦ perm(x, y) → count(x, p) = count(y, p) |
| #c mx = #c mx0, #r mx = #r mx0, #r mx0 = n0 + #clean1rows(mx0, i) + 1, count(mx[n0]r, λ j. j < i) = 0, #c mx0 ≠ 0, #clean1rows(mx0, i) ≠ #clean1rows(mx, i), count(mx0[n0]r, λ j. j < i) ≠ 0, #clean1rows(mx0, i) < #r mx0, #clean1rows(mx0, i) < #clean1rows(mx, i), #clean1rows(mx, i) ≤ #r mx0, ¬ perm(mx0[n0]r, mx[n0]r), ∀ r. r < #r mx0 → perm(mx0[r]r, mx[r]r) ⊦ |
#c mx = #c mx0, #r mx0 = n0 + #clean1rows(mx0, i) + 1, #r mx = #r mx0, count(mx[n0]r, λ j. j < i) = 0, #c mx0 ≠ 0, #clean1rows(mx0, i) ≠ #clean1rows(mx, i), count(mx0[n0]r, λ j. j < i) ≠ 0, #clean1rows(mx0, i) < #clean1rows(mx, i), #clean1rows(mx0, i) < #r mx0, #clean1rows(mx, i) ≤ #r mx0, ¬ perm(mx0[n0]r, mx[n0]r), n0 < #r mx0 → perm(mx0[n0]r, mx[n0]r) ⊦
Used terms: n0
| #c mx = #c mx0, #r mx0 = n0 + #clean1rows(mx0, i) + 1, #r mx = #r mx0, count(mx[n0]r, λ j. j < i) = 0, #c mx0 ≠ 0, #clean1rows(mx0, i) ≠ #clean1rows(mx, i), count(mx0[n0]r, λ j. j < i) ≠ 0, #clean1rows(mx0, i) < #clean1rows(mx, i), #clean1rows(mx0, i) < #r mx0, #clean1rows(mx, i) ≤ #r mx0, ¬ perm(mx0[n0]r, mx[n0]r), n0 < #r mx0 → perm(mx0[n0]r, mx[n0]r) ⊦ |
#c mx = #c mx0, #r mx = #r mx0, #r mx0 = n0 + #clean1rows(mx0, i) + 1, count(mx[n0]r, λ j. j < i) = 0, #c mx0 ≠ 0, #clean1rows(mx0, i) ≠ #clean1rows(mx, i), count(mx0[n0]r, λ j. j < i) ≠ 0, #clean1rows(mx0, i) < #r mx0, #clean1rows(mx0, i) < #clean1rows(mx, i), #clean1rows(mx0, i) < n0, #clean1rows(mx, i) ≤ #r mx0, #r mx0 ≤ n0, #clean1rows(mx, i) ≤ n0, ¬ perm(mx0[n0]r, mx[n0]r) ⊦
Used simplifier rules: ⊦ m < n → n ≠ 0; (s) f: ⊦ m < n → n ≠ 0; (forward) from specification nat-basic let: ⊦ n ≤ n0 ∧ n0 ≤ n1 → n ≤ n1; (forward) from specification nat fle: ⊦ m < n ∧ n ≤ n0 → m < n0; (forward) from specification nat ⊦ m < n ↔ ¬ n ≤ m; (ss)
| #c mx = #c mx0, #r mx = #r mx0, #r mx0 = n0 + #clean1rows(mx0, i) + 1, count(mx[n0]r, λ j. j < i) = 0, #c mx0 ≠ 0, #clean1rows(mx0, i) ≠ #clean1rows(mx, i), count(mx0[n0]r, λ j. j < i) ≠ 0, #clean1rows(mx0, i) < #r mx0, #clean1rows(mx0, i) < #clean1rows(mx, i), #clean1rows(mx0, i) < n0, #clean1rows(mx, i) ≤ #r mx0, #r mx0 ≤ n0, #clean1rows(mx, i) ≤ n0, ¬ perm(mx0[n0]r, mx[n0]r) ⊦ |
Used simplifier rules: ⊦ m + 1 ≤ n ↔ m < n; (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
| #c mx = #c mx0, #r mx = #r mx0, #c mx0 ≠ 0, #clean1rows(mx0, i) ≠ #clean1rows(mx, i), ¬ #clean1rows(mx0, i) < #clean1rows(mx, i), ∀ r. r < #r mx0 → perm(mx0[r]r, mx[r]r) ⊦ |
#c mx = #c mx0, #r mx = #r mx0, #c mx0 ≠ 0, #clean1rows(mx0, i) ≠ #clean1rows(mx, i), #clean1rows(mx, i) < #clean1rows(mx0, i), ∀ r. r < #r mx0 → perm(mx0[r]r, mx[r]r) ⊦
Used simplifier rules: ⊦ m < n → n ≠ 0; (s) f: ⊦ m < n → n ≠ 0; (forward) from specification nat-basic ⊦ m ≠ n → (m < n ↔ ¬ n < m); (ss)
| #c mx = #c mx0, #r mx = #r mx0, #c mx0 ≠ 0, #clean1rows(mx0, i) ≠ #clean1rows(mx, i), #clean1rows(mx, i) < #clean1rows(mx0, i), ∀ r. r < #r mx0 → perm(mx0[r]r, mx[r]r) ⊦ |
#c mx = #c mx0, #r mx = #r mx0, #c mx0 ≠ 0, #clean1rows(mx0, i) ≠ #clean1rows(mx, i), #clean1rows(mx0, i) < #clean1rows(mx, i), ∀ r. r < #r mx0 → perm(mx0[r]r, mx[r]r) ⊦
#c mx = #c mx0, #r mx = #r mx0, #c mx0 ≠ 0, #clean1rows(mx0, i) ≠ #clean1rows(mx, i), #clean1rows(mx, i) < #clean1rows(mx0, i), ∀ r. r < #r mx0 → perm(mx0[r]r, mx[r]r) ⊦ #c mx0 = #c mx ∧ #r mx0 = #r mx ∧ #c mx ≠ 0 ∧ #clean1rows(mx, i) ≠ #clean1rows(mx0, i) ∧ (∀ r. r < #r mx → perm(mx[r]r, mx0[r]r))
| #c mx = #c mx0, #r mx = #r mx0, #c mx0 ≠ 0, #clean1rows(mx0, i) ≠ #clean1rows(mx, i), #clean1rows(mx0, i) < #clean1rows(mx, i), ∀ r. r < #r mx0 → perm(mx0[r]r, mx[r]r) ⊦ |
| #c mx = #c mx0, #r mx = #r mx0, #c mx0 ≠ 0, #clean1rows(mx0, i) ≠ #clean1rows(mx, i), #clean1rows(mx, i) < #clean1rows(mx0, i), ∀ r. r < #r mx0 → perm(mx0[r]r, mx[r]r) ⊦ #c mx0 = #c mx ∧ #r mx0 = #r mx ∧ #c mx ≠ 0 ∧ #clean1rows(mx, i) ≠ #clean1rows(mx0, i) ∧ (∀ r. r < #r mx → perm(mx[r]r, mx0[r]r)) |
#c mx = #c mx0, #r mx = #r mx0, #c mx0 ≠ 0, #clean1rows(mx0, i) ≠ #clean1rows(mx, i), r < #r mx0, #clean1rows(mx, i) < #clean1rows(mx0, i), ¬ perm(mx[r]r, mx0[r]r), ∀ r. r < #r mx0 → perm(mx0[r]r, mx[r]r) ⊦
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
| #c mx = #c mx0, #r mx = #r mx0, #c mx0 ≠ 0, #clean1rows(mx0, i) ≠ #clean1rows(mx, i), r < #r mx0, #clean1rows(mx, i) < #clean1rows(mx0, i), ¬ perm(mx[r]r, mx0[r]r), ∀ r. r < #r mx0 → perm(mx0[r]r, mx[r]r) ⊦ |
⊦ perm(x, y) ↔ perm(y, x)
#c mx = #c mx0, #r mx = #r mx0, #c mx0 ≠ 0, #clean1rows(mx0, i) ≠ #clean1rows(mx, i), #clean1rows(mx, i) < #clean1rows(mx0, i), r < #r mx0, ¬ perm(mx0[r]r, mx[r]r), ∀ r. r < #r mx0 → perm(mx0[r]r, mx[r]r) ⊦
Used terms: mx[r]r, mx0[r]r
| ⊦ perm(x, y) ↔ perm(y, x) |
| #c mx = #c mx0, #r mx = #r mx0, #c mx0 ≠ 0, #clean1rows(mx0, i) ≠ #clean1rows(mx, i), #clean1rows(mx, i) < #clean1rows(mx0, i), r < #r mx0, ¬ perm(mx0[r]r, mx[r]r), ∀ r. r < #r mx0 → perm(mx0[r]r, mx[r]r) ⊦ |
Used terms: r
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.