| #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, #c mx ≠ 0, #clean0rows(mx, i) < #clean0rows(mx0, i), scolsorted(mx, #c mx0, mx0) ⊦
| #c mx = #c mx0, #r mx = #r mx0, #c mx ≠ 0, #clean0rows(mx, i) < #clean0rows(mx0, i), scolsorted(mx, #c mx0, mx0) ⊦ |
#c mx = #c mx0, #r mx = #r mx0, #c mx0 ≠ 0, #clean0rows(mx, i) < #clean0rows(mx0, i), scolsorted(mx, #c mx0, mx0) ⊦
Used simplifier rules: ⊦ m < n → n ≠ 0; (s) f: ⊦ m < n → n ≠ 0; (forward) from specification nat-basic
| #c mx = #c mx0, #r mx = #r mx0, #c mx0 ≠ 0, #clean0rows(mx, i) < #clean0rows(mx0, i), scolsorted(mx, #c mx0, mx0) ⊦ |
⊦ ¬ #r mx < #clean0rows(mx, i)
#c mx = #c mx0, #r mx = #r mx0, #c mx0 ≠ 0, #clean0rows(mx, i) < #clean0rows(mx0, i), scolsorted(mx, #c mx0, mx0), ¬ #r mx0 < #clean0rows(mx0, i) ⊦
Used terms: i, mx0
| ⊦ ¬ #r mx < #clean0rows(mx, i) |
| #c mx = #c mx0, #r mx = #r mx0, #c mx0 ≠ 0, #clean0rows(mx, i) < #clean0rows(mx0, i), scolsorted(mx, #c mx0, mx0), ¬ #r mx0 < #clean0rows(mx0, i) ⊦ |
#c mx = #c mx0, #r mx = #r mx0, #c mx0 ≠ 0, #clean0rows(mx, i) < #clean0rows(mx0, i), #clean0rows(mx, i) < #r mx0, scolsorted(mx, #c mx0, mx0), #clean0rows(mx0, i) ≤ #r mx0 ⊦
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, #clean0rows(mx, i) < #clean0rows(mx0, i), #clean0rows(mx, i) < #r mx0, scolsorted(mx, #c mx0, mx0), #clean0rows(mx0, i) ≤ #r mx0 ⊦ |
⊦ #clean0rows(mx, i) < #r mx → count(mx[#clean0rows(mx, i)]r, λ j. ¬ j < i) ≠ 0
#c mx = #c mx0, #r mx = #r mx0, #c mx0 ≠ 0, #clean0rows(mx, i) < #r mx0, #clean0rows(mx, i) < #clean0rows(mx0, i), scolsorted(mx, #c mx0, mx0), #clean0rows(mx0, i) ≤ #r mx0, #clean0rows(mx, i) < #r mx → count(mx[#clean0rows(mx, i)]r, λ j. ¬ j < i) ≠ 0 ⊦
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, #c mx0 ≠ 0, #clean0rows(mx, i) < #r mx0, #clean0rows(mx, i) < #clean0rows(mx0, i), scolsorted(mx, #c mx0, mx0), #clean0rows(mx0, i) ≤ #r mx0, #clean0rows(mx, i) < #r mx → count(mx[#clean0rows(mx, i)]r, λ j. ¬ j < i) ≠ 0 ⊦ |
#c mx = #c mx0, #r mx = #r mx0, #c mx0 ≠ 0, count(mx[#clean0rows(mx, i)]r, λ j. ¬ j < i) ≠ 0, #clean0rows(mx, i) < #r mx0, #clean0rows(mx, i) < #clean0rows(mx0, i), scolsorted(mx, #c mx0, mx0), #clean0rows(mx0, i) ≤ #r mx0 ⊦
| #c mx = #c mx0, #r mx = #r mx0, #c mx0 ≠ 0, count(mx[#clean0rows(mx, i)]r, λ j. ¬ j < i) ≠ 0, #clean0rows(mx, i) < #r mx0, #clean0rows(mx, i) < #clean0rows(mx0, i), scolsorted(mx, #c mx0, mx0), #clean0rows(mx0, i) ≤ #r mx0 ⊦ |
⊦ count(x, p) = 0 ↔ (∀ n. n < # x → ¬ p(x[n]))
#c mx = #c mx0, #r mx = #r mx0, #c mx0 ≠ 0, #clean0rows(mx, i) < #clean0rows(mx0, i), #clean0rows(mx, i) < #r mx0, scolsorted(mx, #c mx0, mx0), #clean0rows(mx0, i) ≤ #r mx0, ∃ 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, #c mx0 ≠ 0, #clean0rows(mx, i) < #clean0rows(mx0, i), #clean0rows(mx, i) < #r mx0, scolsorted(mx, #c mx0, mx0), #clean0rows(mx0, i) ≤ #r mx0, ∃ n. ¬(n < # mx[#clean0rows(mx, i)]r → ¬ ¬ mx[#clean0rows(mx, i)]r[n] < i) ⊦ |
#c mx = #c mx0, #r mx = #r mx0, n < #c mx0, #clean0rows(mx, i) < #clean0rows(mx0, i), #clean0rows(mx, i) < #r mx0, scolsorted(mx, #c mx0, mx0), #clean0rows(mx0, i) ≤ #r mx0, ¬ mx[#clean0rows(mx, i), n] < 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 ⊦ mx[r]r[c] = mx[r, c]; (s) ⊦ # mx[r]r = #c mx; (s)
| #c mx = #c mx0, #r mx = #r mx0, n < #c mx0, #clean0rows(mx, i) < #clean0rows(mx0, i), #clean0rows(mx, i) < #r mx0, scolsorted(mx, #c mx0, mx0), #clean0rows(mx0, i) ≤ #r mx0, ¬ mx[#clean0rows(mx, i), n] < 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, #clean0rows(mx, i) < #r mx0, #clean0rows(mx, i) < #clean0rows(mx0, i), n < #c mx0, scolsorted(mx, #c mx0, mx0), #clean0rows(mx0, i) ≤ #r mx0, ¬ mx[#clean0rows(mx, i), n] < i, #clean0rows(mx, i) ≤ #clean0rows(mx0, i) → count(mx0[n]c, 0, #clean0rows(mx, i), λ j. j < i) = #clean0rows(mx, i) ⊦
Used terms: n, mx0, #clean0rows(mx, i), 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, #clean0rows(mx, i) < #r mx0, #clean0rows(mx, i) < #clean0rows(mx0, i), n < #c mx0, scolsorted(mx, #c mx0, mx0), #clean0rows(mx0, i) ≤ #r mx0, ¬ mx[#clean0rows(mx, i), n] < i, #clean0rows(mx, i) ≤ #clean0rows(mx0, i) → count(mx0[n]c, 0, #clean0rows(mx, i), λ j. j < i) = #clean0rows(mx, i) ⊦ |
#c mx = #c mx0, #r mx = #r mx0, count(mx0[n]c, 0, #clean0rows(mx, i), λ j. j < i) = #clean0rows(mx, i), #clean0rows(mx, i) < #r mx0, #clean0rows(mx, i) < #clean0rows(mx0, i), n < #c mx0, scolsorted(mx, #c mx0, mx0), #clean0rows(mx0, i) ≤ #r mx0, ¬ mx[#clean0rows(mx, i), n] < i ⊦
Used simplifier rules: lf-02: ⊦ m < n ∧ m = n0 → n0 < n; (forward) from specification nat-basic ⊦ m < n → m ≤ n; (s)
| #c mx = #c mx0, #r mx = #r mx0, count(mx0[n]c, 0, #clean0rows(mx, i), λ j. j < i) = #clean0rows(mx, i), #clean0rows(mx, i) < #r mx0, #clean0rows(mx, i) < #clean0rows(mx0, i), n < #c mx0, scolsorted(mx, #c mx0, mx0), #clean0rows(mx0, i) ≤ #r mx0, ¬ mx[#clean0rows(mx, i), n] < i ⊦ |
n ≤ # x ⊦ count(x, 0, n, p) < n ↔ (∃ m. m < n ∧ ¬ p(x[m]))
#c mx = #c mx0, #r mx = #r mx0, count(mx0[n]c, 0, #clean0rows(mx, i), λ j. j < i) = #clean0rows(mx, i), n < #c mx0, #clean0rows(mx, i) < #clean0rows(mx0, i), #clean0rows(mx, i) < #r mx0, scolsorted(mx, #c mx0, mx0), #clean0rows(mx0, i) ≤ #r mx0, ¬ mx[#clean0rows(mx, i), n] < i, count(mx0[n]c, 0, #clean0rows(mx, i), λ j. j < i) < #clean0rows(mx, i) ↔ (∃ m. m < #clean0rows(mx, i) ∧ ¬ mx0[n]c[m] < i) ⊦
Used simplifier rules: ⊦ # mx[c]c = #r mx; (s) ⊦ m < n → m ≤ n; (s) Used terms: #clean0rows(mx, i), mx0[n]c, λ j. j < i
| n ≤ # x ⊦ count(x, 0, n, p) < n ↔ (∃ m. m < n ∧ ¬ p(x[m])) |
| #c mx = #c mx0, #r mx = #r mx0, count(mx0[n]c, 0, #clean0rows(mx, i), λ j. j < i) = #clean0rows(mx, i), n < #c mx0, #clean0rows(mx, i) < #clean0rows(mx0, i), #clean0rows(mx, i) < #r mx0, scolsorted(mx, #c mx0, mx0), #clean0rows(mx0, i) ≤ #r mx0, ¬ mx[#clean0rows(mx, i), n] < i, count(mx0[n]c, 0, #clean0rows(mx, i), λ j. j < i) < #clean0rows(mx, i) ↔ (∃ m. m < #clean0rows(mx, i) ∧ ¬ mx0[n]c[m] < i) ⊦ |
#c mx = #c mx0, #r mx = #r mx0, count(mx0[n]c, 0, #clean0rows(mx, i), λ j. j < i) = #clean0rows(mx, i), n < #c mx0, #clean0rows(mx, i) < #clean0rows(mx0, i), #clean0rows(mx, i) < #r mx0, scolsorted(mx, #c mx0, mx0), #clean0rows(mx0, i) ≤ #r mx0, ¬ mx[#clean0rows(mx, i), n] < i ⊦ ∃ m. m < #clean0rows(mx, i) ∧ ¬ mx0[m, n] < i
Used simplifier rules: ⊦ ¬ n < n; (s) ⊦ mx[c]c[r] = mx[r, c]; (s)
| #c mx = #c mx0, #r mx = #r mx0, count(mx0[n]c, 0, #clean0rows(mx, i), λ j. j < i) = #clean0rows(mx, i), n < #c mx0, #clean0rows(mx, i) < #clean0rows(mx0, i), #clean0rows(mx, i) < #r mx0, scolsorted(mx, #c mx0, mx0), #clean0rows(mx0, i) ≤ #r mx0, ¬ mx[#clean0rows(mx, i), n] < i ⊦ ∃ m. m < #clean0rows(mx, i) ∧ ¬ mx0[m, n] < 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, count(mx0[n]c, 0, #clean0rows(mx, i), λ j. j < i) = #clean0rows(mx, i), #clean0rows(mx, i) < #r mx0, #clean0rows(mx, i) < #clean0rows(mx0, i), n < #c mx0, #clean0rows(mx0, i) ≤ #r mx0, #c mx0 ≤ #c mx, ¬ mx[#clean0rows(mx, i), n] < 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) ⊦ ∃ m. m < #clean0rows(mx, i) ∧ ¬ mx0[m, n] < i
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, count(mx0[n]c, 0, #clean0rows(mx, i), λ j. j < i) = #clean0rows(mx, i), #clean0rows(mx, i) < #r mx0, #clean0rows(mx, i) < #clean0rows(mx0, i), n < #c mx0, #clean0rows(mx0, i) ≤ #r mx0, #c mx0 ≤ #c mx, ¬ mx[#clean0rows(mx, i), n] < 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) ⊦ ∃ m. m < #clean0rows(mx, i) ∧ ¬ mx0[m, n] < i |
#c mx = #c mx0, #r mx = #r mx0, count(mx0[n]c, 0, #clean0rows(mx, i), λ j. j < i) = #clean0rows(mx, i), #clean0rows(mx, i) < #r mx0, #clean0rows(mx, i) < #clean0rows(mx0, i), n < #c mx0, #clean0rows(mx0, i) ≤ #r mx0, ¬ mx[#clean0rows(mx, i), n] < i, ∀ c. c < #c mx0 → perm(mx0[c]c, mx[c]c) ∧ ordered≤(mx[c]c) ⊦ ∃ m. m < #clean0rows(mx, i) ∧ ¬ mx0[m, n] < i
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, count(mx0[n]c, 0, #clean0rows(mx, i), λ j. j < i) = #clean0rows(mx, i), #clean0rows(mx, i) < #r mx0, #clean0rows(mx, i) < #clean0rows(mx0, i), n < #c mx0, #clean0rows(mx0, i) ≤ #r mx0, ¬ mx[#clean0rows(mx, i), n] < i, ∀ c. c < #c mx0 → perm(mx0[c]c, mx[c]c) ∧ ordered≤(mx[c]c) ⊦ ∃ m. m < #clean0rows(mx, i) ∧ ¬ mx0[m, n] < i |
#c mx = #c mx0, #r mx = #r mx0, count(mx0[n]c, 0, #clean0rows(mx, i), λ j. j < i) = #clean0rows(mx, i), n < #c mx0, #clean0rows(mx, i) < #clean0rows(mx0, i), #clean0rows(mx, i) < #r mx0, #clean0rows(mx0, i) ≤ #r mx0, ¬ mx[#clean0rows(mx, i), n] < i, n < #c mx0 → perm(mx0[n]c, mx[n]c) ∧ ordered≤(mx[n]c) ⊦ ∃ m. m < #clean0rows(mx, i) ∧ ¬ mx0[m, n] < i
Used terms: n
| #c mx = #c mx0, #r mx = #r mx0, count(mx0[n]c, 0, #clean0rows(mx, i), λ j. j < i) = #clean0rows(mx, i), n < #c mx0, #clean0rows(mx, i) < #clean0rows(mx0, i), #clean0rows(mx, i) < #r mx0, #clean0rows(mx0, i) ≤ #r mx0, ¬ mx[#clean0rows(mx, i), n] < i, n < #c mx0 → perm(mx0[n]c, mx[n]c) ∧ ordered≤(mx[n]c) ⊦ ∃ m. m < #clean0rows(mx, i) ∧ ¬ mx0[m, n] < i |
#c mx = #c mx0, #r mx = #r mx0, count(mx0[n]c, 0, #clean0rows(mx, i), λ j. j < i) = #clean0rows(mx, i), #clean0rows(mx, i) < #r mx0, #clean0rows(mx, i) < #clean0rows(mx0, i), n < #c mx0, ordered≤(mx[n]c), perm(mx0[n]c, mx[n]c), #clean0rows(mx0, i) ≤ #r mx0, ¬ mx[#clean0rows(mx, i), n] < i ⊦ ∃ m. m < #clean0rows(mx, i) ∧ ¬ mx0[m, n] < i
| #c mx = #c mx0, #r mx = #r mx0, count(mx0[n]c, 0, #clean0rows(mx, i), λ j. j < i) = #clean0rows(mx, i), #clean0rows(mx, i) < #r mx0, #clean0rows(mx, i) < #clean0rows(mx0, i), n < #c mx0, ordered≤(mx[n]c), perm(mx0[n]c, mx[n]c), #clean0rows(mx0, i) ≤ #r mx0, ¬ mx[#clean0rows(mx, i), n] < i ⊦ ∃ m. m < #clean0rows(mx, i) ∧ ¬ mx0[m, n] < i |
⊦ a ∈ y ∧ ¬ a ∈ x → ¬ perm(x, y)
#c mx = #c mx0, #r mx = #r mx0, count(mx0[n]c, 0, #clean0rows(mx, i), λ j. j < i) = #clean0rows(mx, i), n < #c mx0, #clean0rows(mx, i) < #clean0rows(mx0, i), #clean0rows(mx, i) < #r mx0, ordered≤(mx[n]c), perm(mx0[n]c, mx[n]c), #clean0rows(mx0, i) ≤ #r mx0, ¬ mx[#clean0rows(mx, i), n] < i ⊦ ∃ m. m < #clean0rows(mx, i) ∧ ¬ mx0[m, n] < i, mx[#clean0rows(mx, i), n] ∈ mx[n]c ∧ ¬ mx[#clean0rows(mx, i), n] ∈ mx0[n]c
Used terms: mx0[n]c, mx[n]c, mx[#clean0rows(mx, i), n]
| ⊦ a ∈ y ∧ ¬ a ∈ x → ¬ perm(x, y) |
| #c mx = #c mx0, #r mx = #r mx0, count(mx0[n]c, 0, #clean0rows(mx, i), λ j. j < i) = #clean0rows(mx, i), n < #c mx0, #clean0rows(mx, i) < #clean0rows(mx0, i), #clean0rows(mx, i) < #r mx0, ordered≤(mx[n]c), perm(mx0[n]c, mx[n]c), #clean0rows(mx0, i) ≤ #r mx0, ¬ mx[#clean0rows(mx, i), n] < i ⊦ ∃ m. m < #clean0rows(mx, i) ∧ ¬ mx0[m, n] < i, mx[#clean0rows(mx, i), n] ∈ mx[n]c ∧ ¬ mx[#clean0rows(mx, i), n] ∈ mx0[n]c |
#c mx = #c mx0, #r mx = #r mx0, count(mx0[n]c, 0, #clean0rows(mx, i), λ j. j < i) = #clean0rows(mx, i), #clean0rows(mx, i) < #r mx0, #clean0rows(mx, i) < #clean0rows(mx0, i), n < #c mx0, ordered≤(mx[n]c), perm(mx0[n]c, mx[n]c), #clean0rows(mx0, i) ≤ #r mx0, ¬ mx[#clean0rows(mx, i), n] < i, ¬ mx[#clean0rows(mx, i), n] ∈ mx[n]c ⊦ ∃ m. m < #clean0rows(mx, i) ∧ ¬ mx0[m, n] < i
#c mx = #c mx0, #r mx = #r mx0, count(mx0[n]c, 0, #clean0rows(mx, i), λ j. j < i) = #clean0rows(mx, i), #clean0rows(mx, i) < #r mx0, #clean0rows(mx, i) < #clean0rows(mx0, i), n < #c mx0, ordered≤(mx[n]c), perm(mx0[n]c, mx[n]c), mx[#clean0rows(mx, i), n] ∈ mx0[n]c, #clean0rows(mx0, i) ≤ #r mx0, ¬ mx[#clean0rows(mx, i), n] < i ⊦ ∃ m. m < #clean0rows(mx, i) ∧ ¬ mx0[m, n] < i
| #c mx = #c mx0, #r mx = #r mx0, count(mx0[n]c, 0, #clean0rows(mx, i), λ j. j < i) = #clean0rows(mx, i), #clean0rows(mx, i) < #r mx0, #clean0rows(mx, i) < #clean0rows(mx0, i), n < #c mx0, ordered≤(mx[n]c), perm(mx0[n]c, mx[n]c), #clean0rows(mx0, i) ≤ #r mx0, ¬ mx[#clean0rows(mx, i), n] < i, ¬ mx[#clean0rows(mx, i), n] ∈ mx[n]c ⊦ ∃ m. m < #clean0rows(mx, i) ∧ ¬ mx0[m, n] < i |
⊦ a ∈ x ↔ (∃ n. n < # x ∧ x[n] = a)
#c mx = #c mx0, #r mx = #r mx0, count(mx0[n]c, 0, #clean0rows(mx, i), λ j. j < i) = #clean0rows(mx, i), n < #c mx0, #clean0rows(mx, i) < #clean0rows(mx0, i), #clean0rows(mx, i) < #r mx0, ordered≤(mx[n]c), perm(mx0[n]c, mx[n]c), #clean0rows(mx0, i) ≤ #r mx0, ¬ mx[#clean0rows(mx, i), n] < i, ∀ n0. ¬(n0 < # mx[n]c ∧ mx[n]c[n0] = mx[#clean0rows(mx, i), n]) ⊦ ∃ m. m < #clean0rows(mx, i) ∧ ¬ mx0[m, n] < i
Used terms: mx[#clean0rows(mx, i), n], mx[n]c
| ⊦ a ∈ x ↔ (∃ n. n < # x ∧ x[n] = a) |
| #c mx = #c mx0, #r mx = #r mx0, count(mx0[n]c, 0, #clean0rows(mx, i), λ j. j < i) = #clean0rows(mx, i), n < #c mx0, #clean0rows(mx, i) < #clean0rows(mx0, i), #clean0rows(mx, i) < #r mx0, ordered≤(mx[n]c), perm(mx0[n]c, mx[n]c), #clean0rows(mx0, i) ≤ #r mx0, ¬ mx[#clean0rows(mx, i), n] < i, ∀ n0. ¬(n0 < # mx[n]c ∧ mx[n]c[n0] = mx[#clean0rows(mx, i), n]) ⊦ ∃ m. m < #clean0rows(mx, i) ∧ ¬ mx0[m, n] < i |
#c mx = #c mx0, #r mx = #r mx0, count(mx0[n]c, 0, #clean0rows(mx, i), λ j. j < i) = #clean0rows(mx, i), #clean0rows(mx, i) < #r mx0, #clean0rows(mx, i) < #clean0rows(mx0, i), n < #c mx0, ordered≤(mx[n]c), perm(mx0[n]c, mx[n]c), #clean0rows(mx0, i) ≤ #r mx0, ¬ mx[#clean0rows(mx, i), n] < i, ∀ n0. ¬ n0 < #r mx0 ∨ mx[n0, n] ≠ mx[#clean0rows(mx, i), n] ⊦ ∃ m. m < #clean0rows(mx, i) ∧ ¬ mx0[m, n] < i
Used simplifier rules: ⊦ mx[c]c[r] = mx[r, c]; (s) ⊦ # mx[c]c = #r mx; (s)
| #c mx = #c mx0, #r mx = #r mx0, count(mx0[n]c, 0, #clean0rows(mx, i), λ j. j < i) = #clean0rows(mx, i), #clean0rows(mx, i) < #r mx0, #clean0rows(mx, i) < #clean0rows(mx0, i), n < #c mx0, ordered≤(mx[n]c), perm(mx0[n]c, mx[n]c), #clean0rows(mx0, i) ≤ #r mx0, ¬ mx[#clean0rows(mx, i), n] < i, ∀ n0. ¬ n0 < #r mx0 ∨ mx[n0, n] ≠ mx[#clean0rows(mx, i), n] ⊦ ∃ m. m < #clean0rows(mx, i) ∧ ¬ mx0[m, n] < i |
Used terms: #clean0rows(mx, i)
| #c mx = #c mx0, #r mx = #r mx0, count(mx0[n]c, 0, #clean0rows(mx, i), λ j. j < i) = #clean0rows(mx, i), #clean0rows(mx, i) < #r mx0, #clean0rows(mx, i) < #clean0rows(mx0, i), n < #c mx0, ordered≤(mx[n]c), perm(mx0[n]c, mx[n]c), mx[#clean0rows(mx, i), n] ∈ mx0[n]c, #clean0rows(mx0, i) ≤ #r mx0, ¬ mx[#clean0rows(mx, i), n] < i ⊦ ∃ m. m < #clean0rows(mx, i) ∧ ¬ mx0[m, n] < i |
⊦ a ∈ x ↔ (∃ n. n < # x ∧ x[n] = a)
#c mx = #c mx0, #r mx = #r mx0, count(mx0[n]c, 0, #clean0rows(mx, i), λ j. j < i) = #clean0rows(mx, i), n < #c mx0, #clean0rows(mx, i) < #clean0rows(mx0, i), #clean0rows(mx, i) < #r mx0, ordered≤(mx[n]c), perm(mx0[n]c, mx[n]c), #clean0rows(mx0, i) ≤ #r mx0, ¬ mx[#clean0rows(mx, i), n] < i, ∃ n0. n0 < # mx0[n]c ∧ mx0[n]c[n0] = mx[#clean0rows(mx, i), n] ⊦ ∃ m. m < #clean0rows(mx, i) ∧ ¬ mx0[m, n] < i
Used terms: mx[#clean0rows(mx, i), n], mx0[n]c
| ⊦ a ∈ x ↔ (∃ n. n < # x ∧ x[n] = a) |
| #c mx = #c mx0, #r mx = #r mx0, count(mx0[n]c, 0, #clean0rows(mx, i), λ j. j < i) = #clean0rows(mx, i), n < #c mx0, #clean0rows(mx, i) < #clean0rows(mx0, i), #clean0rows(mx, i) < #r mx0, ordered≤(mx[n]c), perm(mx0[n]c, mx[n]c), #clean0rows(mx0, i) ≤ #r mx0, ¬ mx[#clean0rows(mx, i), n] < i, ∃ n0. n0 < # mx0[n]c ∧ mx0[n]c[n0] = mx[#clean0rows(mx, i), n] ⊦ ∃ m. m < #clean0rows(mx, i) ∧ ¬ mx0[m, n] < i |
#c mx = #c mx0, #r mx = #r mx0, mx0[n0, n] = mx[#clean0rows(mx, i), n], count(mx0[n]c, 0, #clean0rows(mx, i), λ j. j < i) = #clean0rows(mx, i), n0 < #r mx0, n < #c mx0, #clean0rows(mx, i) < #clean0rows(mx0, i), #clean0rows(mx, i) < #r mx0, ordered≤(mx[n]c), perm(mx0[n]c, mx[n]c), #clean0rows(mx0, i) ≤ #r mx0, ¬ mx0[n0, n] < i ⊦ ∃ m. m < #clean0rows(mx, i) ∧ ¬ mx0[m, n] < i
Used simplifier rules: lf-01: ⊦ m < n ∧ n = n0 → m < n0; (forward) from specification nat-basic ⊦ # mx[c]c = #r mx; (s) ⊦ mx[c]c[r] = mx[r, c]; (s)
| #c mx = #c mx0, #r mx = #r mx0, mx0[n0, n] = mx[#clean0rows(mx, i), n], count(mx0[n]c, 0, #clean0rows(mx, i), λ j. j < i) = #clean0rows(mx, i), n0 < #r mx0, n < #c mx0, #clean0rows(mx, i) < #clean0rows(mx0, i), #clean0rows(mx, i) < #r mx0, ordered≤(mx[n]c), perm(mx0[n]c, mx[n]c), #clean0rows(mx0, i) ≤ #r mx0, ¬ mx0[n0, n] < i ⊦ ∃ m. m < #clean0rows(mx, i) ∧ ¬ mx0[m, n] < i |
#c mx = #c mx0, #r mx = #r mx0, mx0[n0, n] = mx[#clean0rows(mx, i), n], count(mx0[n]c, 0, #clean0rows(mx, i), λ j. j < i) = #clean0rows(mx, i), #clean0rows(mx, i) < #r mx0, #clean0rows(mx, i) < #clean0rows(mx0, i), n < #c mx0, n0 < #r mx0, ordered≤(mx[n]c), perm(mx0[n]c, mx[n]c), #clean0rows(mx0, i) ≤ #r mx0, ¬ mx0[n0, n] < i ⊦ n0 < #clean0rows(mx, i) ∧ ¬ mx0[n0, n] < i
Used terms: n0
| #c mx = #c mx0, #r mx = #r mx0, mx0[n0, n] = mx[#clean0rows(mx, i), n], count(mx0[n]c, 0, #clean0rows(mx, i), λ j. j < i) = #clean0rows(mx, i), #clean0rows(mx, i) < #r mx0, #clean0rows(mx, i) < #clean0rows(mx0, i), n < #c mx0, n0 < #r mx0, ordered≤(mx[n]c), perm(mx0[n]c, mx[n]c), #clean0rows(mx0, i) ≤ #r mx0, ¬ mx0[n0, n] < i ⊦ n0 < #clean0rows(mx, i) ∧ ¬ mx0[n0, n] < i |
#c mx = #c mx0, #r mx = #r mx0, mx0[n0, n] = mx[#clean0rows(mx, i), n], count(mx0[n]c, 0, #clean0rows(mx, i), λ j. j < i) = #clean0rows(mx, i), n0 < #r mx0, n < #c mx0, #clean0rows(mx, i) < #clean0rows(mx0, i), #clean0rows(mx, i) < #r mx0, ordered≤(mx[n]c), perm(mx0[n]c, mx[n]c), #clean0rows(mx0, i) ≤ #r mx0, #clean0rows(mx, i) ≤ n0, ¬ mx0[n0, n] < i ⊦
Used simplifier rules: ⊦ m < n ↔ ¬ n ≤ m; (ss)
| #c mx = #c mx0, #r mx = #r mx0, mx0[n0, n] = mx[#clean0rows(mx, i), n], count(mx0[n]c, 0, #clean0rows(mx, i), λ j. j < i) = #clean0rows(mx, i), n0 < #r mx0, n < #c mx0, #clean0rows(mx, i) < #clean0rows(mx0, i), #clean0rows(mx, i) < #r mx0, ordered≤(mx[n]c), perm(mx0[n]c, mx[n]c), #clean0rows(mx0, i) ≤ #r mx0, #clean0rows(mx, i) ≤ n0, ¬ mx0[n0, n] < 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, mx[n]c[#clean0rows(mx, i)] < i ↔ #clean0rows(mx, i) < count(mx0[n]c, λ j. j < i), mx0[n0, n] = mx[#clean0rows(mx, i), n], count(mx0[n]c, 0, #clean0rows(mx, i), λ j. j < i) = #clean0rows(mx, i), #clean0rows(mx, i) < #r mx0, #clean0rows(mx, i) < #clean0rows(mx0, i), n < #c mx0, n0 < #r mx0, ordered≤(mx[n]c), perm(mx0[n]c, mx[n]c), #clean0rows(mx, i) ≤ n0, #clean0rows(mx0, i) ≤ #r mx0, ¬ mx0[n0, n] < i ⊦
Used simplifier rules: ⊦ # mx[c]c = #r mx; (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) 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, mx[n]c[#clean0rows(mx, i)] < i ↔ #clean0rows(mx, i) < count(mx0[n]c, λ j. j < i), mx0[n0, n] = mx[#clean0rows(mx, i), n], count(mx0[n]c, 0, #clean0rows(mx, i), λ j. j < i) = #clean0rows(mx, i), #clean0rows(mx, i) < #r mx0, #clean0rows(mx, i) < #clean0rows(mx0, i), n < #c mx0, n0 < #r mx0, ordered≤(mx[n]c), perm(mx0[n]c, mx[n]c), #clean0rows(mx, i) ≤ n0, #clean0rows(mx0, i) ≤ #r mx0, ¬ mx0[n0, n] < i ⊦ |
#c mx = #c mx0, #r mx = #r mx0, mx0[n0, n] = mx[#clean0rows(mx, i), n], count(mx0[n]c, 0, #clean0rows(mx, i), λ j. j < i) = #clean0rows(mx, i), #clean0rows(mx, i) < #r mx0, #clean0rows(mx, i) < #clean0rows(mx0, i), n < #c mx0, n0 < #r mx0, count(mx0[n]c, λ j. j < i) < #r mx0, count(mx0[n]c, λ j. j < i) < #clean0rows(mx0, i), ordered≤(mx[n]c), perm(mx0[n]c, mx[n]c), #clean0rows(mx, i) ≤ n0, #clean0rows(mx0, i) ≤ #r mx0, count(mx0[n]c, λ j. j < i) ≤ #clean0rows(mx, i), count(mx0[n]c, λ j. j < i) ≤ n0, ¬ mx0[n0, n] < i ⊦
Used simplifier rules: lf-01: ⊦ m < n ∧ n = n0 → m < n0; (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 ⊦ m < n ↔ ¬ n ≤ m; (ss) ⊦ mx[c]c[r] = mx[r, c]; (s)
| #c mx = #c mx0, #r mx = #r mx0, mx0[n0, n] = mx[#clean0rows(mx, i), n], count(mx0[n]c, 0, #clean0rows(mx, i), λ j. j < i) = #clean0rows(mx, i), #clean0rows(mx, i) < #r mx0, #clean0rows(mx, i) < #clean0rows(mx0, i), n < #c mx0, n0 < #r mx0, count(mx0[n]c, λ j. j < i) < #r mx0, count(mx0[n]c, λ j. j < i) < #clean0rows(mx0, i), ordered≤(mx[n]c), perm(mx0[n]c, mx[n]c), #clean0rows(mx, i) ≤ n0, #clean0rows(mx0, i) ≤ #r mx0, count(mx0[n]c, λ j. j < i) ≤ #clean0rows(mx, i), count(mx0[n]c, λ j. j < i) ≤ n0, ¬ mx0[n0, n] < i ⊦ |
c < #c mx ⊦ #clean0rows(mx, i) ≤ count(mx[c]c, λ j. j < i)
Used simplifier rules: ⊦ m < n → (n ≤ m ↔ false); (s) Used terms: n, mx0, i
| c < #c mx ⊦ #clean0rows(mx, i) ≤ count(mx[c]c, λ j. j < i) |
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.