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