| #r mx = #r mx0, #c mx = #c mx0 ⊦ mx.dirtyrows≤(1) ∧ colsorted(mx0, #c mx, mx) → rowsincreasing(mx, #r mx) |
#c mx = #c mx0, #r mx = #r mx0, mx.dirtyrows≤(1), colsorted(mx0, #c mx, mx), ¬ rowsincreasing(mx, #r mx) ⊦
| #c mx = #c mx0, #r mx = #r mx0, mx.dirtyrows≤(1), colsorted(mx0, #c mx, mx), ¬ rowsincreasing(mx, #r mx) ⊦ |
#c mx = #c mx0, #r mx = #r mx0, mx.dirtyrows≤(1), colsorted(mx0, #c mx0, mx), ¬ rowsincreasing(mx, #r mx0) ⊦
| #c mx = #c mx0, #r mx = #r mx0, mx.dirtyrows≤(1), colsorted(mx0, #c mx0, mx), ¬ rowsincreasing(mx, #r mx0) ⊦ |
⊦ mx.dirtyrows≤(bound) ↔ (∀ i. #dirtyrows(mx, i) ≤ bound)
#c mx = #c mx0, #r mx = #r mx0, colsorted(mx0, #c mx0, mx), ¬ rowsincreasing(mx, #r mx0), ∀ i. #dirtyrows(mx, i) ≤ 1 ⊦
Used terms: mx, 1
| ⊦ mx.dirtyrows≤(bound) ↔ (∀ i. #dirtyrows(mx, i) ≤ bound) |
| #c mx = #c mx0, #r mx = #r mx0, colsorted(mx0, #c mx0, mx), ¬ rowsincreasing(mx, #r mx0), ∀ i. #dirtyrows(mx, i) ≤ 1 ⊦ |
⊦ rowsincreasing(mx, r) ↔ (∀ r1, r2, c1, c2. r1 < r2 ∧ r2 < r ∧ c1 < #c mx ∧ c2 < #c mx → ¬ mx[r2, c2] < mx[r1, c1])
#c mx = #c mx0, #r mx = #r mx0, colsorted(mx0, #c mx0, mx), ∀ i. #dirtyrows(mx, i) ≤ 1, ∃ r1, r2, c1, c2. ¬(r1 < r2 ∧ r2 < #r mx0 ∧ c1 < #c mx ∧ c2 < #c mx → ¬ mx[r2, c2] < mx[r1, c1]) ⊦
Used terms: mx, #r mx0
| ⊦ rowsincreasing(mx, r) ↔ (∀ r1, r2, c1, c2. r1 < r2 ∧ r2 < r ∧ c1 < #c mx ∧ c2 < #c mx → ¬ mx[r2, c2] < mx[r1, c1]) |
| #c mx = #c mx0, #r mx = #r mx0, colsorted(mx0, #c mx0, mx), ∀ i. #dirtyrows(mx, i) ≤ 1, ∃ r1, r2, c1, c2. ¬(r1 < r2 ∧ r2 < #r mx0 ∧ c1 < #c mx ∧ c2 < #c mx → ¬ mx[r2, c2] < mx[r1, c1]) ⊦ |
#c mx = #c mx0, #r mx = #r mx0, r1 + 1 < #r mx0, mx[r2, c2] < mx[r1, c1], r1 < r2, r2 < #r mx0, c1 < #c mx0, c2 < #c mx0, r1 < #r mx0, colsorted(mx0, #c mx0, mx), ∀ i. #dirtyrows(mx, i) ≤ 1 ⊦
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, r1 + 1 < #r mx0, mx[r2, c2] < mx[r1, c1], r1 < r2, r2 < #r mx0, c1 < #c mx0, c2 < #c mx0, r1 < #r mx0, colsorted(mx0, #c mx0, mx), ∀ i. #dirtyrows(mx, i) ≤ 1 ⊦ |
#c mx ≠ 0, #dirtyrows(mx, i) ≤ 1 ⊦ (∀ r. r < #r mx → count(mx[r]r, λ j. j < i) = 0 ∨ count(mx[r]r, λ j. ¬ j < i) = 0) ∨ (∃ r0. count(mx[r0]r, λ j. j < i) ≠ 0 ∧ count(mx[r0]r, λ j. ¬ j < i) ≠ 0 ∧ (∀ r. r ≠ r0 ∧ r < #r mx → count(mx[r]r, λ j. j < i) = 0 ∨ count(mx[r]r, λ j. ¬ j < i) = 0))
#c mx = #c mx0, #r mx = #r mx0, r1 < #r mx0, c2 < #c mx0, c1 < #c mx0, r2 < #r mx0, r1 < r2, mx[r2, c2] < mx[r1, c1], r1 + 1 < #r mx0, colsorted(mx0, #c mx0, mx), ∀ i. #dirtyrows(mx, i) ≤ 1 ⊦ #c mx ≠ 0 ∧ #dirtyrows(mx, mx[r1, c1]) ≤ 1
#c mx = #c mx0, #r mx = #r mx0, r1 < #r mx0, c2 < #c mx0, c1 < #c mx0, r2 < #r mx0, r1 < r2, mx[r2, c2] < mx[r1, c1], r1 + 1 < #r mx0, colsorted(mx0, #c mx0, mx), ∀ i. #dirtyrows(mx, i) ≤ 1, (∀ r. r < #r mx → count(mx[r]r, λ j. j < mx[r1, c1]) = 0 ∨ count(mx[r]r, λ j. ¬ j < mx[r1, c1]) = 0) ∨ (∃ r0. count(mx[r0]r, λ j. j < mx[r1, c1]) ≠ 0 ∧ count(mx[r0]r, λ j. ¬ j < mx[r1, c1]) ≠ 0 ∧ (∀ r. r ≠ r0 ∧ r < #r mx → count(mx[r]r, λ j. j < mx[r1, c1]) = 0 ∨ count(mx[r]r, λ j. ¬ j < mx[r1, c1]) = 0)) ⊦
Used terms: mx, mx[r1, c1]
| #c mx ≠ 0, #dirtyrows(mx, i) ≤ 1 ⊦ (∀ r. r < #r mx → count(mx[r]r, λ j. j < i) = 0 ∨ count(mx[r]r, λ j. ¬ j < i) = 0) ∨ (∃ r0. count(mx[r0]r, λ j. j < i) ≠ 0 ∧ count(mx[r0]r, λ j. ¬ j < i) ≠ 0 ∧ (∀ r. r ≠ r0 ∧ r < #r mx → count(mx[r]r, λ j. j < i) = 0 ∨ count(mx[r]r, λ j. ¬ j < i) = 0)) |
| #c mx = #c mx0, #r mx = #r mx0, r1 < #r mx0, c2 < #c mx0, c1 < #c mx0, r2 < #r mx0, r1 < r2, mx[r2, c2] < mx[r1, c1], r1 + 1 < #r mx0, colsorted(mx0, #c mx0, mx), ∀ i. #dirtyrows(mx, i) ≤ 1 ⊦ #c mx ≠ 0 ∧ #dirtyrows(mx, mx[r1, c1]) ≤ 1 |
#c mx = #c mx0, #r mx = #r mx0, #dirtyrows(mx, mx[r1, c1]) ≠ 0, #dirtyrows(mx, mx[r1, c1]) ≠ 1, r1 < #r mx0, c2 < #c mx0, c1 < #c mx0, r2 < #r mx0, r1 < r2, mx[r2, c2] < mx[r1, c1], r1 + 1 < #r mx0, colsorted(mx0, #c mx0, mx), ∀ i. #dirtyrows(mx, i) ≤ 1 ⊦
Used simplifier rules: ⊦ 1 < m ↔ ¬(m = 0 ∨ m = 1); (s) ⊦ m ≤ n ↔ ¬ n < m; (ss) ⊦ m < n → n ≠ 0; (s)
| #c mx = #c mx0, #r mx = #r mx0, #dirtyrows(mx, mx[r1, c1]) ≠ 0, #dirtyrows(mx, mx[r1, c1]) ≠ 1, r1 < #r mx0, c2 < #c mx0, c1 < #c mx0, r2 < #r mx0, r1 < r2, mx[r2, c2] < mx[r1, c1], r1 + 1 < #r mx0, colsorted(mx0, #c mx0, mx), ∀ i. #dirtyrows(mx, i) ≤ 1 ⊦ |
Used simplifier rules: ⊦ m ≠ 0 → (m ≤ 1 ↔ m = 1); (s) Used terms: mx[r1, c1]
| #c mx = #c mx0, #r mx = #r mx0, r1 < #r mx0, c2 < #c mx0, c1 < #c mx0, r2 < #r mx0, r1 < r2, mx[r2, c2] < mx[r1, c1], r1 + 1 < #r mx0, colsorted(mx0, #c mx0, mx), ∀ i. #dirtyrows(mx, i) ≤ 1, (∀ r. r < #r mx → count(mx[r]r, λ j. j < mx[r1, c1]) = 0 ∨ count(mx[r]r, λ j. ¬ j < mx[r1, c1]) = 0) ∨ (∃ r0. count(mx[r0]r, λ j. j < mx[r1, c1]) ≠ 0 ∧ count(mx[r0]r, λ j. ¬ j < mx[r1, c1]) ≠ 0 ∧ (∀ r. r ≠ r0 ∧ r < #r mx → count(mx[r]r, λ j. j < mx[r1, c1]) = 0 ∨ count(mx[r]r, λ j. ¬ j < mx[r1, c1]) = 0)) ⊦ |
#c mx = #c mx0, #r mx = #r mx0, r1 + 1 < #r mx0, mx[r2, c2] < mx[r1, c1], r1 < r2, r2 < #r mx0, c1 < #c mx0, c2 < #c mx0, r1 < #r mx0, colsorted(mx0, #c mx0, mx), ∀ i. #dirtyrows(mx, i) ≤ 1, (∀ r. r < #r mx0 → count(mx[r]r, λ j. j < mx[r1, c1]) = 0 ∨ count(mx[r]r, λ j. ¬ j < mx[r1, c1]) = 0) ∨ count(mx[r0]r, λ j. j < mx[r1, c1]) ≠ 0 ∧ count(mx[r0]r, λ j. ¬ j < mx[r1, c1]) ≠ 0 ∧ (∀ r. r ≠ r0 ∧ r < #r mx0 → count(mx[r]r, λ j. j < mx[r1, c1]) = 0 ∨ count(mx[r]r, λ j. ¬ j < mx[r1, c1]) = 0) ⊦
| #c mx = #c mx0, #r mx = #r mx0, r1 + 1 < #r mx0, mx[r2, c2] < mx[r1, c1], r1 < r2, r2 < #r mx0, c1 < #c mx0, c2 < #c mx0, r1 < #r mx0, colsorted(mx0, #c mx0, mx), ∀ i. #dirtyrows(mx, i) ≤ 1, (∀ r. r < #r mx0 → count(mx[r]r, λ j. j < mx[r1, c1]) = 0 ∨ count(mx[r]r, λ j. ¬ j < mx[r1, c1]) = 0) ∨ count(mx[r0]r, λ j. j < mx[r1, c1]) ≠ 0 ∧ count(mx[r0]r, λ j. ¬ j < mx[r1, c1]) ≠ 0 ∧ (∀ r. r ≠ r0 ∧ r < #r mx0 → count(mx[r]r, λ j. j < mx[r1, c1]) = 0 ∨ count(mx[r]r, λ j. ¬ j < mx[r1, c1]) = 0) ⊦ |
⊦ m ≤ #c mx → ( colsorted(mx0, m, mx) ↔ #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, r1 < #r mx0, c2 < #c mx0, c1 < #c mx0, r2 < #r mx0, r1 < r2, mx[r2, c2] < mx[r1, c1], r1 + 1 < #r mx0, #c mx0 ≤ #c mx, ∀ i. #dirtyrows(mx, i) ≤ 1, ∀ c. c < #c mx → (c < #c mx0 ⊃ perm(mx0[c]c, mx[c]c) ∧ ordered≤(mx[c]c);mx0[c]c = mx[c]c), (∀ r. r < #r mx0 → count(mx[r]r, λ j. j < mx[r1, c1]) = 0 ∨ count(mx[r]r, λ j. ¬ j < mx[r1, c1]) = 0) ∨ count(mx[r0]r, λ j. j < mx[r1, c1]) ≠ 0 ∧ count(mx[r0]r, λ j. ¬ j < mx[r1, c1]) ≠ 0 ∧ (∀ r. r ≠ r0 ∧ r < #r mx0 → count(mx[r]r, λ j. j < mx[r1, c1]) = 0 ∨ count(mx[r]r, λ j. ¬ j < mx[r1, c1]) = 0) ⊦
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 → ( colsorted(mx0, m, mx) ↔ #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, r1 < #r mx0, c2 < #c mx0, c1 < #c mx0, r2 < #r mx0, r1 < r2, mx[r2, c2] < mx[r1, c1], r1 + 1 < #r mx0, #c mx0 ≤ #c mx, ∀ i. #dirtyrows(mx, i) ≤ 1, ∀ c. c < #c mx → (c < #c mx0 ⊃ perm(mx0[c]c, mx[c]c) ∧ ordered≤(mx[c]c);mx0[c]c = mx[c]c), (∀ r. r < #r mx0 → count(mx[r]r, λ j. j < mx[r1, c1]) = 0 ∨ count(mx[r]r, λ j. ¬ j < mx[r1, c1]) = 0) ∨ count(mx[r0]r, λ j. j < mx[r1, c1]) ≠ 0 ∧ count(mx[r0]r, λ j. ¬ j < mx[r1, c1]) ≠ 0 ∧ (∀ r. r ≠ r0 ∧ r < #r mx0 → count(mx[r]r, λ j. j < mx[r1, c1]) = 0 ∨ count(mx[r]r, λ j. ¬ j < mx[r1, c1]) = 0) ⊦ |
#c mx = #c mx0, #r mx = #r mx0, r1 < #r mx0, c2 < #c mx0, c1 < #c mx0, r2 < #r mx0, r1 < r2, mx[r2, c2] < mx[r1, c1], r1 + 1 < #r mx0, ∀ i. #dirtyrows(mx, i) ≤ 1, ∀ c. c < #c mx0 → perm(mx0[c]c, mx[c]c) ∧ ordered≤(mx[c]c), (∀ r. r < #r mx0 → count(mx[r]r, λ j. j < mx[r1, c1]) = 0 ∨ count(mx[r]r, λ j. ¬ j < mx[r1, c1]) = 0) ∨ count(mx[r0]r, λ j. j < mx[r1, c1]) ≠ 0 ∧ count(mx[r0]r, λ j. ¬ j < mx[r1, c1]) ≠ 0 ∧ (∀ r. r ≠ r0 ∧ r < #r mx0 → count(mx[r]r, λ j. j < mx[r1, c1]) = 0 ∨ count(mx[r]r, λ j. ¬ j < mx[r1, c1]) = 0) ⊦
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, r1 < #r mx0, c2 < #c mx0, c1 < #c mx0, r2 < #r mx0, r1 < r2, mx[r2, c2] < mx[r1, c1], r1 + 1 < #r mx0, ∀ i. #dirtyrows(mx, i) ≤ 1, ∀ c. c < #c mx0 → perm(mx0[c]c, mx[c]c) ∧ ordered≤(mx[c]c), (∀ r. r < #r mx0 → count(mx[r]r, λ j. j < mx[r1, c1]) = 0 ∨ count(mx[r]r, λ j. ¬ j < mx[r1, c1]) = 0) ∨ count(mx[r0]r, λ j. j < mx[r1, c1]) ≠ 0 ∧ count(mx[r0]r, λ j. ¬ j < mx[r1, c1]) ≠ 0 ∧ (∀ r. r ≠ r0 ∧ r < #r mx0 → count(mx[r]r, λ j. j < mx[r1, c1]) = 0 ∨ count(mx[r]r, λ j. ¬ j < mx[r1, c1]) = 0) ⊦ |
#c mx = #c mx0, #r mx = #r mx0, r1 + 1 < #r mx0, mx[r2, c2] < mx[r1, c1], r1 < r2, r2 < #r mx0, c1 < #c mx0, c2 < #c mx0, r1 < #r mx0, c1 < #c mx0 → perm(mx0[c1]c, mx[c1]c) ∧ ordered≤(mx[c1]c), ∀ c. c < #c mx0 → perm(mx0[c]c, mx[c]c) ∧ ordered≤(mx[c]c), ∀ i. #dirtyrows(mx, i) ≤ 1, (∀ r. r < #r mx0 → count(mx[r]r, λ j. j < mx[r1, c1]) = 0 ∨ count(mx[r]r, λ j. ¬ j < mx[r1, c1]) = 0) ∨ count(mx[r0]r, λ j. j < mx[r1, c1]) ≠ 0 ∧ count(mx[r0]r, λ j. ¬ j < mx[r1, c1]) ≠ 0 ∧ (∀ r. r ≠ r0 ∧ r < #r mx0 → count(mx[r]r, λ j. j < mx[r1, c1]) = 0 ∨ count(mx[r]r, λ j. ¬ j < mx[r1, c1]) = 0) ⊦
Used terms: c1
| #c mx = #c mx0, #r mx = #r mx0, r1 + 1 < #r mx0, mx[r2, c2] < mx[r1, c1], r1 < r2, r2 < #r mx0, c1 < #c mx0, c2 < #c mx0, r1 < #r mx0, c1 < #c mx0 → perm(mx0[c1]c, mx[c1]c) ∧ ordered≤(mx[c1]c), ∀ c. c < #c mx0 → perm(mx0[c]c, mx[c]c) ∧ ordered≤(mx[c]c), ∀ i. #dirtyrows(mx, i) ≤ 1, (∀ r. r < #r mx0 → count(mx[r]r, λ j. j < mx[r1, c1]) = 0 ∨ count(mx[r]r, λ j. ¬ j < mx[r1, c1]) = 0) ∨ count(mx[r0]r, λ j. j < mx[r1, c1]) ≠ 0 ∧ count(mx[r0]r, λ j. ¬ j < mx[r1, c1]) ≠ 0 ∧ (∀ r. r ≠ r0 ∧ r < #r mx0 → count(mx[r]r, λ j. j < mx[r1, c1]) = 0 ∨ count(mx[r]r, λ j. ¬ j < mx[r1, c1]) = 0) ⊦ |
#c mx = #c mx0, #r mx = #r mx0, r1 < #r mx0, c2 < #c mx0, c1 < #c mx0, r2 < #r mx0, r1 < r2, mx[r2, c2] < mx[r1, c1], r1 + 1 < #r mx0, ordered≤(mx[c1]c), perm(mx0[c1]c, mx[c1]c), ∀ i. #dirtyrows(mx, i) ≤ 1, ∀ c. c < #c mx0 → perm(mx0[c]c, mx[c]c) ∧ ordered≤(mx[c]c), (∀ r. r < #r mx0 → count(mx[r]r, λ j. j < mx[r1, c1]) = 0 ∨ count(mx[r]r, λ j. ¬ j < mx[r1, c1]) = 0) ∨ count(mx[r0]r, λ j. j < mx[r1, c1]) ≠ 0 ∧ count(mx[r0]r, λ j. ¬ j < mx[r1, c1]) ≠ 0 ∧ (∀ r. r ≠ r0 ∧ r < #r mx0 → count(mx[r]r, λ j. j < mx[r1, c1]) = 0 ∨ count(mx[r]r, λ j. ¬ j < mx[r1, c1]) = 0) ⊦
| #c mx = #c mx0, #r mx = #r mx0, r1 < #r mx0, c2 < #c mx0, c1 < #c mx0, r2 < #r mx0, r1 < r2, mx[r2, c2] < mx[r1, c1], r1 + 1 < #r mx0, ordered≤(mx[c1]c), perm(mx0[c1]c, mx[c1]c), ∀ i. #dirtyrows(mx, i) ≤ 1, ∀ c. c < #c mx0 → perm(mx0[c]c, mx[c]c) ∧ ordered≤(mx[c]c), (∀ r. r < #r mx0 → count(mx[r]r, λ j. j < mx[r1, c1]) = 0 ∨ count(mx[r]r, λ j. ¬ j < mx[r1, c1]) = 0) ∨ count(mx[r0]r, λ j. j < mx[r1, c1]) ≠ 0 ∧ count(mx[r0]r, λ j. ¬ j < mx[r1, c1]) ≠ 0 ∧ (∀ r. r ≠ r0 ∧ r < #r mx0 → count(mx[r]r, λ j. j < mx[r1, c1]) = 0 ∨ count(mx[r]r, λ j. ¬ j < mx[r1, c1]) = 0) ⊦ |
#c mx = #c mx0, #r mx = #r mx0, r1 + 1 < #r mx0, mx[r2, c2] < mx[r1, c1], r1 < r2, r2 < #r mx0, c1 < #c mx0, c2 < #c mx0, r1 < #r mx0, ordered≤(mx[c1]c), perm(mx0[c1]c, mx[c1]c), c2 < #c mx0 → perm(mx0[c2]c, mx[c2]c) ∧ ordered≤(mx[c2]c), ∀ i. #dirtyrows(mx, i) ≤ 1, (∀ r. r < #r mx0 → count(mx[r]r, λ j. j < mx[r1, c1]) = 0 ∨ count(mx[r]r, λ j. ¬ j < mx[r1, c1]) = 0) ∨ count(mx[r0]r, λ j. j < mx[r1, c1]) ≠ 0 ∧ count(mx[r0]r, λ j. ¬ j < mx[r1, c1]) ≠ 0 ∧ (∀ r. r ≠ r0 ∧ r < #r mx0 → count(mx[r]r, λ j. j < mx[r1, c1]) = 0 ∨ count(mx[r]r, λ j. ¬ j < mx[r1, c1]) = 0) ⊦
Used terms: c2
| #c mx = #c mx0, #r mx = #r mx0, r1 + 1 < #r mx0, mx[r2, c2] < mx[r1, c1], r1 < r2, r2 < #r mx0, c1 < #c mx0, c2 < #c mx0, r1 < #r mx0, ordered≤(mx[c1]c), perm(mx0[c1]c, mx[c1]c), c2 < #c mx0 → perm(mx0[c2]c, mx[c2]c) ∧ ordered≤(mx[c2]c), ∀ i. #dirtyrows(mx, i) ≤ 1, (∀ r. r < #r mx0 → count(mx[r]r, λ j. j < mx[r1, c1]) = 0 ∨ count(mx[r]r, λ j. ¬ j < mx[r1, c1]) = 0) ∨ count(mx[r0]r, λ j. j < mx[r1, c1]) ≠ 0 ∧ count(mx[r0]r, λ j. ¬ j < mx[r1, c1]) ≠ 0 ∧ (∀ r. r ≠ r0 ∧ r < #r mx0 → count(mx[r]r, λ j. j < mx[r1, c1]) = 0 ∨ count(mx[r]r, λ j. ¬ j < mx[r1, c1]) = 0) ⊦ |
#c mx = #c mx0, #r mx = #r mx0, r1 < #r mx0, c2 < #c mx0, c1 < #c mx0, r2 < #r mx0, r1 < r2, mx[r2, c2] < mx[r1, c1], r1 + 1 < #r mx0, ordered≤(mx[c1]c), ordered≤(mx[c2]c), perm(mx0[c1]c, mx[c1]c), perm(mx0[c2]c, mx[c2]c), ∀ i. #dirtyrows(mx, i) ≤ 1, (∀ r. r < #r mx0 → count(mx[r]r, λ j. j < mx[r1, c1]) = 0 ∨ count(mx[r]r, λ j. ¬ j < mx[r1, c1]) = 0) ∨ count(mx[r0]r, λ j. j < mx[r1, c1]) ≠ 0 ∧ count(mx[r0]r, λ j. ¬ j < mx[r1, c1]) ≠ 0 ∧ (∀ r. r ≠ r0 ∧ r < #r mx0 → count(mx[r]r, λ j. j < mx[r1, c1]) = 0 ∨ count(mx[r]r, λ j. ¬ j < mx[r1, c1]) = 0) ⊦
| #c mx = #c mx0, #r mx = #r mx0, r1 < #r mx0, c2 < #c mx0, c1 < #c mx0, r2 < #r mx0, r1 < r2, mx[r2, c2] < mx[r1, c1], r1 + 1 < #r mx0, ordered≤(mx[c1]c), ordered≤(mx[c2]c), perm(mx0[c1]c, mx[c1]c), perm(mx0[c2]c, mx[c2]c), ∀ i. #dirtyrows(mx, i) ≤ 1, (∀ r. r < #r mx0 → count(mx[r]r, λ j. j < mx[r1, c1]) = 0 ∨ count(mx[r]r, λ j. ¬ j < mx[r1, c1]) = 0) ∨ count(mx[r0]r, λ j. j < mx[r1, c1]) ≠ 0 ∧ count(mx[r0]r, λ j. ¬ j < mx[r1, c1]) ≠ 0 ∧ (∀ r. r ≠ r0 ∧ r < #r mx0 → count(mx[r]r, λ j. j < mx[r1, c1]) = 0 ∨ count(mx[r]r, λ j. ¬ j < mx[r1, c1]) = 0) ⊦ |
#c mx = #c mx0, #r mx = #r mx0, r1 + 1 < #r mx0, mx[r2, c2] < mx[r1, c1], r1 < r2, r2 < #r mx0, c1 < #c mx0, c2 < #c mx0, r1 < #r mx0, ordered≤(mx[c2]c), ordered≤(mx[c1]c), ∀ i. #dirtyrows(mx, i) ≤ 1, (∀ r. r < #r mx0 → count(mx[r]r, λ j. j < mx[r1, c1]) = 0 ∨ count(mx[r]r, λ j. ¬ j < mx[r1, c1]) = 0) ∨ count(mx[r0]r, λ j. j < mx[r1, c1]) ≠ 0 ∧ count(mx[r0]r, λ j. ¬ j < mx[r1, c1]) ≠ 0 ∧ (∀ r. r ≠ r0 ∧ r < #r mx0 → count(mx[r]r, λ j. j < mx[r1, c1]) = 0 ∨ count(mx[r]r, λ j. ¬ j < mx[r1, c1]) = 0) ⊦
| #c mx = #c mx0, #r mx = #r mx0, r1 + 1 < #r mx0, mx[r2, c2] < mx[r1, c1], r1 < r2, r2 < #r mx0, c1 < #c mx0, c2 < #c mx0, r1 < #r mx0, ordered≤(mx[c2]c), ordered≤(mx[c1]c), ∀ i. #dirtyrows(mx, i) ≤ 1, (∀ r. r < #r mx0 → count(mx[r]r, λ j. j < mx[r1, c1]) = 0 ∨ count(mx[r]r, λ j. ¬ j < mx[r1, c1]) = 0) ∨ count(mx[r0]r, λ j. j < mx[r1, c1]) ≠ 0 ∧ count(mx[r0]r, λ j. ¬ j < mx[r1, c1]) ≠ 0 ∧ (∀ r. r ≠ r0 ∧ r < #r mx0 → count(mx[r]r, λ j. j < mx[r1, c1]) = 0 ∨ count(mx[r]r, λ j. ¬ j < mx[r1, c1]) = 0) ⊦ |
⊦ ordered≤(x) ↔ (∀ m, n. m ≤ n ∧ n < # x → ¬ x[n] < x[m])
#c mx = #c mx0, #r mx = #r mx0, r1 < #r mx0, c2 < #c mx0, c1 < #c mx0, r2 < #r mx0, r1 < r2, mx[r2, c2] < mx[r1, c1], r1 + 1 < #r mx0, ordered≤(mx[c2]c), ∀ i. #dirtyrows(mx, i) ≤ 1, ∀ m, n. m ≤ n ∧ n < # mx[c1]c → ¬ mx[c1]c[n] < mx[c1]c[m], (∀ r. r < #r mx0 → count(mx[r]r, λ j. j < mx[r1, c1]) = 0 ∨ count(mx[r]r, λ j. ¬ j < mx[r1, c1]) = 0) ∨ count(mx[r0]r, λ j. j < mx[r1, c1]) ≠ 0 ∧ count(mx[r0]r, λ j. ¬ j < mx[r1, c1]) ≠ 0 ∧ (∀ r. r ≠ r0 ∧ r < #r mx0 → count(mx[r]r, λ j. j < mx[r1, c1]) = 0 ∨ count(mx[r]r, λ j. ¬ j < mx[r1, c1]) = 0) ⊦
Used terms: mx[c1]c
| ⊦ ordered≤(x) ↔ (∀ m, n. m ≤ n ∧ n < # x → ¬ x[n] < x[m]) |
| #c mx = #c mx0, #r mx = #r mx0, r1 < #r mx0, c2 < #c mx0, c1 < #c mx0, r2 < #r mx0, r1 < r2, mx[r2, c2] < mx[r1, c1], r1 + 1 < #r mx0, ordered≤(mx[c2]c), ∀ i. #dirtyrows(mx, i) ≤ 1, ∀ m, n. m ≤ n ∧ n < # mx[c1]c → ¬ mx[c1]c[n] < mx[c1]c[m], (∀ r. r < #r mx0 → count(mx[r]r, λ j. j < mx[r1, c1]) = 0 ∨ count(mx[r]r, λ j. ¬ j < mx[r1, c1]) = 0) ∨ count(mx[r0]r, λ j. j < mx[r1, c1]) ≠ 0 ∧ count(mx[r0]r, λ j. ¬ j < mx[r1, c1]) ≠ 0 ∧ (∀ r. r ≠ r0 ∧ r < #r mx0 → count(mx[r]r, λ j. j < mx[r1, c1]) = 0 ∨ count(mx[r]r, λ j. ¬ j < mx[r1, c1]) = 0) ⊦ |
#c mx = #c mx0, #r mx = #r mx0, r1 + 1 < #r mx0, mx[r2, c2] < mx[r1, c1], r1 < r2, r2 < #r mx0, c1 < #c mx0, c2 < #c mx0, r1 < #r mx0, ordered≤(mx[c2]c), ∀ i. #dirtyrows(mx, i) ≤ 1, ∀ m, n. m ≤ n ∧ n < #r mx0 → ¬ mx[n, c1] < mx[m, c1], (∀ r. r < #r mx0 → count(mx[r]r, λ j. j < mx[r1, c1]) = 0 ∨ count(mx[r]r, λ j. ¬ j < mx[r1, c1]) = 0) ∨ count(mx[r0]r, λ j. j < mx[r1, c1]) ≠ 0 ∧ count(mx[r0]r, λ j. ¬ j < mx[r1, c1]) ≠ 0 ∧ (∀ r. r ≠ r0 ∧ r < #r mx0 → count(mx[r]r, λ j. j < mx[r1, c1]) = 0 ∨ count(mx[r]r, λ j. ¬ j < mx[r1, c1]) = 0) ⊦
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, r1 + 1 < #r mx0, mx[r2, c2] < mx[r1, c1], r1 < r2, r2 < #r mx0, c1 < #c mx0, c2 < #c mx0, r1 < #r mx0, ordered≤(mx[c2]c), ∀ i. #dirtyrows(mx, i) ≤ 1, ∀ m, n. m ≤ n ∧ n < #r mx0 → ¬ mx[n, c1] < mx[m, c1], (∀ r. r < #r mx0 → count(mx[r]r, λ j. j < mx[r1, c1]) = 0 ∨ count(mx[r]r, λ j. ¬ j < mx[r1, c1]) = 0) ∨ count(mx[r0]r, λ j. j < mx[r1, c1]) ≠ 0 ∧ count(mx[r0]r, λ j. ¬ j < mx[r1, c1]) ≠ 0 ∧ (∀ r. r ≠ r0 ∧ r < #r mx0 → count(mx[r]r, λ j. j < mx[r1, c1]) = 0 ∨ count(mx[r]r, λ j. ¬ j < mx[r1, c1]) = 0) ⊦ |
#c mx = #c mx0, #r mx = #r mx0, r1 < #r mx0, c2 < #c mx0, c1 < #c mx0, r2 < #r mx0, r1 < r2, mx[r2, c2] < mx[r1, c1], r1 + 1 < #r mx0, ordered≤(mx[c2]c), r1 ≤ r2 ∧ r2 < #r mx0 → ¬ mx[r2, c1] < mx[r1, c1], ∀ i. #dirtyrows(mx, i) ≤ 1, (∀ r. r < #r mx0 → count(mx[r]r, λ j. j < mx[r1, c1]) = 0 ∨ count(mx[r]r, λ j. ¬ j < mx[r1, c1]) = 0) ∨ count(mx[r0]r, λ j. j < mx[r1, c1]) ≠ 0 ∧ count(mx[r0]r, λ j. ¬ j < mx[r1, c1]) ≠ 0 ∧ (∀ r. r ≠ r0 ∧ r < #r mx0 → count(mx[r]r, λ j. j < mx[r1, c1]) = 0 ∨ count(mx[r]r, λ j. ¬ j < mx[r1, c1]) = 0) ⊦
Used terms: r1, r2
| #c mx = #c mx0, #r mx = #r mx0, r1 < #r mx0, c2 < #c mx0, c1 < #c mx0, r2 < #r mx0, r1 < r2, mx[r2, c2] < mx[r1, c1], r1 + 1 < #r mx0, ordered≤(mx[c2]c), r1 ≤ r2 ∧ r2 < #r mx0 → ¬ mx[r2, c1] < mx[r1, c1], ∀ i. #dirtyrows(mx, i) ≤ 1, (∀ r. r < #r mx0 → count(mx[r]r, λ j. j < mx[r1, c1]) = 0 ∨ count(mx[r]r, λ j. ¬ j < mx[r1, c1]) = 0) ∨ count(mx[r0]r, λ j. j < mx[r1, c1]) ≠ 0 ∧ count(mx[r0]r, λ j. ¬ j < mx[r1, c1]) ≠ 0 ∧ (∀ r. r ≠ r0 ∧ r < #r mx0 → count(mx[r]r, λ j. j < mx[r1, c1]) = 0 ∨ count(mx[r]r, λ j. ¬ j < mx[r1, c1]) = 0) ⊦ |
#c mx = #c mx0, #r mx = #r mx0, r1 + 1 < #r mx0, mx[r2, c2] < mx[r1, c1], r1 < r2, r2 < #r mx0, c1 < #c mx0, c2 < #c mx0, r1 < #r mx0, mx[r2, c2] < mx[r2, c1], ordered≤(mx[c2]c), ¬ mx[r2, c1] < mx[r1, c1], ∀ i. #dirtyrows(mx, i) ≤ 1, (∀ r. r < #r mx0 → count(mx[r]r, λ j. j < mx[r1, c1]) = 0 ∨ count(mx[r]r, λ j. ¬ j < mx[r1, c1]) = 0) ∨ count(mx[r0]r, λ j. j < mx[r1, c1]) ≠ 0 ∧ count(mx[r0]r, λ j. ¬ j < mx[r1, c1]) ≠ 0 ∧ (∀ r. r ≠ r0 ∧ r < #r mx0 → count(mx[r]r, λ j. j < mx[r1, c1]) = 0 ∨ count(mx[r]r, λ j. ¬ j < mx[r1, c1]) = 0) ⊦
Used simplifier rules: nll: ⊦ ¬ a < b ∧ c < b → c < a; (forward) from specification tord[Bubblesort-row-rev] ⊦ m < n → m ≤ n; (s)
| #c mx = #c mx0, #r mx = #r mx0, r1 + 1 < #r mx0, mx[r2, c2] < mx[r1, c1], r1 < r2, r2 < #r mx0, c1 < #c mx0, c2 < #c mx0, r1 < #r mx0, mx[r2, c2] < mx[r2, c1], ordered≤(mx[c2]c), ¬ mx[r2, c1] < mx[r1, c1], ∀ i. #dirtyrows(mx, i) ≤ 1, (∀ r. r < #r mx0 → count(mx[r]r, λ j. j < mx[r1, c1]) = 0 ∨ count(mx[r]r, λ j. ¬ j < mx[r1, c1]) = 0) ∨ count(mx[r0]r, λ j. j < mx[r1, c1]) ≠ 0 ∧ count(mx[r0]r, λ j. ¬ j < mx[r1, c1]) ≠ 0 ∧ (∀ r. r ≠ r0 ∧ r < #r mx0 → count(mx[r]r, λ j. j < mx[r1, c1]) = 0 ∨ count(mx[r]r, λ j. ¬ j < mx[r1, c1]) = 0) ⊦ |
⊦ ordered≤(x) ↔ (∀ m, n. m ≤ n ∧ n < # x → ¬ x[n] < x[m])
#c mx = #c mx0, #r mx = #r mx0, mx[r2, c2] < mx[r2, c1], r1 < #r mx0, c2 < #c mx0, c1 < #c mx0, r2 < #r mx0, r1 < r2, mx[r2, c2] < mx[r1, c1], r1 + 1 < #r mx0, ¬ mx[r2, c1] < mx[r1, c1], ∀ i. #dirtyrows(mx, i) ≤ 1, ∀ m, n. m ≤ n ∧ n < # mx[c2]c → ¬ mx[c2]c[n] < mx[c2]c[m], (∀ r. r < #r mx0 → count(mx[r]r, λ j. j < mx[r1, c1]) = 0 ∨ count(mx[r]r, λ j. ¬ j < mx[r1, c1]) = 0) ∨ count(mx[r0]r, λ j. j < mx[r1, c1]) ≠ 0 ∧ count(mx[r0]r, λ j. ¬ j < mx[r1, c1]) ≠ 0 ∧ (∀ r. r ≠ r0 ∧ r < #r mx0 → count(mx[r]r, λ j. j < mx[r1, c1]) = 0 ∨ count(mx[r]r, λ j. ¬ j < mx[r1, c1]) = 0) ⊦
Used terms: mx[c2]c
| ⊦ ordered≤(x) ↔ (∀ m, n. m ≤ n ∧ n < # x → ¬ x[n] < x[m]) |
| #c mx = #c mx0, #r mx = #r mx0, mx[r2, c2] < mx[r2, c1], r1 < #r mx0, c2 < #c mx0, c1 < #c mx0, r2 < #r mx0, r1 < r2, mx[r2, c2] < mx[r1, c1], r1 + 1 < #r mx0, ¬ mx[r2, c1] < mx[r1, c1], ∀ i. #dirtyrows(mx, i) ≤ 1, ∀ m, n. m ≤ n ∧ n < # mx[c2]c → ¬ mx[c2]c[n] < mx[c2]c[m], (∀ r. r < #r mx0 → count(mx[r]r, λ j. j < mx[r1, c1]) = 0 ∨ count(mx[r]r, λ j. ¬ j < mx[r1, c1]) = 0) ∨ count(mx[r0]r, λ j. j < mx[r1, c1]) ≠ 0 ∧ count(mx[r0]r, λ j. ¬ j < mx[r1, c1]) ≠ 0 ∧ (∀ r. r ≠ r0 ∧ r < #r mx0 → count(mx[r]r, λ j. j < mx[r1, c1]) = 0 ∨ count(mx[r]r, λ j. ¬ j < mx[r1, c1]) = 0) ⊦ |
#c mx = #c mx0, #r mx = #r mx0, r1 + 1 < #r mx0, mx[r2, c2] < mx[r1, c1], r1 < r2, r2 < #r mx0, c1 < #c mx0, c2 < #c mx0, r1 < #r mx0, mx[r2, c2] < mx[r2, c1], ¬ mx[r2, c1] < mx[r1, c1], ∀ i. #dirtyrows(mx, i) ≤ 1, ∀ m, n. m ≤ n ∧ n < #r mx0 → ¬ mx[n, c2] < mx[m, c2], (∀ r. r < #r mx0 → count(mx[r]r, λ j. j < mx[r1, c1]) = 0 ∨ count(mx[r]r, λ j. ¬ j < mx[r1, c1]) = 0) ∨ count(mx[r0]r, λ j. j < mx[r1, c1]) ≠ 0 ∧ count(mx[r0]r, λ j. ¬ j < mx[r1, c1]) ≠ 0 ∧ (∀ r. r ≠ r0 ∧ r < #r mx0 → count(mx[r]r, λ j. j < mx[r1, c1]) = 0 ∨ count(mx[r]r, λ j. ¬ j < mx[r1, c1]) = 0) ⊦
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, r1 + 1 < #r mx0, mx[r2, c2] < mx[r1, c1], r1 < r2, r2 < #r mx0, c1 < #c mx0, c2 < #c mx0, r1 < #r mx0, mx[r2, c2] < mx[r2, c1], ¬ mx[r2, c1] < mx[r1, c1], ∀ i. #dirtyrows(mx, i) ≤ 1, ∀ m, n. m ≤ n ∧ n < #r mx0 → ¬ mx[n, c2] < mx[m, c2], (∀ r. r < #r mx0 → count(mx[r]r, λ j. j < mx[r1, c1]) = 0 ∨ count(mx[r]r, λ j. ¬ j < mx[r1, c1]) = 0) ∨ count(mx[r0]r, λ j. j < mx[r1, c1]) ≠ 0 ∧ count(mx[r0]r, λ j. ¬ j < mx[r1, c1]) ≠ 0 ∧ (∀ r. r ≠ r0 ∧ r < #r mx0 → count(mx[r]r, λ j. j < mx[r1, c1]) = 0 ∨ count(mx[r]r, λ j. ¬ j < mx[r1, c1]) = 0) ⊦ |
#c mx = #c mx0, #r mx = #r mx0, mx[r2, c2] < mx[r2, c1], r1 < #r mx0, c2 < #c mx0, c1 < #c mx0, r2 < #r mx0, r1 < r2, mx[r2, c2] < mx[r1, c1], r1 + 1 < #r mx0, ¬ mx[r2, c1] < mx[r1, c1], r1 ≤ r2 ∧ r2 < #r mx0 → ¬ mx[r2, c2] < mx[r1, c2], ∀ i. #dirtyrows(mx, i) ≤ 1, (∀ r. r < #r mx0 → count(mx[r]r, λ j. j < mx[r1, c1]) = 0 ∨ count(mx[r]r, λ j. ¬ j < mx[r1, c1]) = 0) ∨ count(mx[r0]r, λ j. j < mx[r1, c1]) ≠ 0 ∧ count(mx[r0]r, λ j. ¬ j < mx[r1, c1]) ≠ 0 ∧ (∀ r. r ≠ r0 ∧ r < #r mx0 → count(mx[r]r, λ j. j < mx[r1, c1]) = 0 ∨ count(mx[r]r, λ j. ¬ j < mx[r1, c1]) = 0) ⊦
Used terms: r1, r2
| #c mx = #c mx0, #r mx = #r mx0, mx[r2, c2] < mx[r2, c1], r1 < #r mx0, c2 < #c mx0, c1 < #c mx0, r2 < #r mx0, r1 < r2, mx[r2, c2] < mx[r1, c1], r1 + 1 < #r mx0, ¬ mx[r2, c1] < mx[r1, c1], r1 ≤ r2 ∧ r2 < #r mx0 → ¬ mx[r2, c2] < mx[r1, c2], ∀ i. #dirtyrows(mx, i) ≤ 1, (∀ r. r < #r mx0 → count(mx[r]r, λ j. j < mx[r1, c1]) = 0 ∨ count(mx[r]r, λ j. ¬ j < mx[r1, c1]) = 0) ∨ count(mx[r0]r, λ j. j < mx[r1, c1]) ≠ 0 ∧ count(mx[r0]r, λ j. ¬ j < mx[r1, c1]) ≠ 0 ∧ (∀ r. r ≠ r0 ∧ r < #r mx0 → count(mx[r]r, λ j. j < mx[r1, c1]) = 0 ∨ count(mx[r]r, λ j. ¬ j < mx[r1, c1]) = 0) ⊦ |
#c mx = #c mx0, #r mx = #r mx0, r1 + 1 < #r mx0, mx[r2, c2] < mx[r1, c1], r1 < r2, r2 < #r mx0, c1 < #c mx0, c2 < #c mx0, r1 < #r mx0, mx[r2, c2] < mx[r2, c1], mx[r1, c2] < mx[r1, c1], mx[r1, c2] < mx[r2, c1], ¬ mx[r2, c1] < mx[r1, c1], ¬ mx[r2, c2] < mx[r1, c2], ∀ i. #dirtyrows(mx, i) ≤ 1, (∀ r. r < #r mx0 → count(mx[r]r, λ j. j < mx[r1, c1]) = 0 ∨ count(mx[r]r, λ j. ¬ j < mx[r1, c1]) = 0) ∨ count(mx[r0]r, λ j. j < mx[r1, c1]) ≠ 0 ∧ count(mx[r0]r, λ j. ¬ j < mx[r1, c1]) ≠ 0 ∧ (∀ r. r ≠ r0 ∧ r < #r mx0 → count(mx[r]r, λ j. j < mx[r1, c1]) = 0 ∨ count(mx[r]r, λ j. ¬ j < mx[r1, c1]) = 0) ⊦
Used simplifier rules: nll: ⊦ ¬ b < a ∧ b < c → a < c; (forward) from specification tord ⊦ m < n → m ≤ n; (s)
| #c mx = #c mx0, #r mx = #r mx0, r1 + 1 < #r mx0, mx[r2, c2] < mx[r1, c1], r1 < r2, r2 < #r mx0, c1 < #c mx0, c2 < #c mx0, r1 < #r mx0, mx[r2, c2] < mx[r2, c1], mx[r1, c2] < mx[r1, c1], mx[r1, c2] < mx[r2, c1], ¬ mx[r2, c1] < mx[r1, c1], ¬ mx[r2, c2] < mx[r1, c2], ∀ i. #dirtyrows(mx, i) ≤ 1, (∀ r. r < #r mx0 → count(mx[r]r, λ j. j < mx[r1, c1]) = 0 ∨ count(mx[r]r, λ j. ¬ j < mx[r1, c1]) = 0) ∨ count(mx[r0]r, λ j. j < mx[r1, c1]) ≠ 0 ∧ count(mx[r0]r, λ j. ¬ j < mx[r1, c1]) ≠ 0 ∧ (∀ r. r ≠ r0 ∧ r < #r mx0 → count(mx[r]r, λ j. j < mx[r1, c1]) = 0 ∨ count(mx[r]r, λ j. ¬ j < mx[r1, c1]) = 0) ⊦ |
#c mx = #c mx0, #r mx = #r mx0, mx[r1, c2] < mx[r2, c1], mx[r1, c2] < mx[r1, c1], mx[r2, c2] < mx[r2, c1], r1 < #r mx0, c2 < #c mx0, c1 < #c mx0, r2 < #r mx0, r1 < r2, mx[r2, c2] < mx[r1, c1], r1 + 1 < #r mx0, #dirtyrows(mx, mx[r1, c1]) ≤ 1, ¬ mx[r2, c1] < mx[r1, c1], ¬ mx[r2, c2] < mx[r1, c2], ∀ i. #dirtyrows(mx, i) ≤ 1, (∀ r. r < #r mx0 → count(mx[r]r, λ j. j < mx[r1, c1]) = 0 ∨ count(mx[r]r, λ j. ¬ j < mx[r1, c1]) = 0) ∨ count(mx[r0]r, λ j. j < mx[r1, c1]) ≠ 0 ∧ count(mx[r0]r, λ j. ¬ j < mx[r1, c1]) ≠ 0 ∧ (∀ r. r ≠ r0 ∧ r < #r mx0 → count(mx[r]r, λ j. j < mx[r1, c1]) = 0 ∨ count(mx[r]r, λ j. ¬ j < mx[r1, c1]) = 0) ⊦
Used terms: mx[r1, c1]
| #c mx = #c mx0, #r mx = #r mx0, mx[r1, c2] < mx[r2, c1], mx[r1, c2] < mx[r1, c1], mx[r2, c2] < mx[r2, c1], r1 < #r mx0, c2 < #c mx0, c1 < #c mx0, r2 < #r mx0, r1 < r2, mx[r2, c2] < mx[r1, c1], r1 + 1 < #r mx0, #dirtyrows(mx, mx[r1, c1]) ≤ 1, ¬ mx[r2, c1] < mx[r1, c1], ¬ mx[r2, c2] < mx[r1, c2], ∀ i. #dirtyrows(mx, i) ≤ 1, (∀ r. r < #r mx0 → count(mx[r]r, λ j. j < mx[r1, c1]) = 0 ∨ count(mx[r]r, λ j. ¬ j < mx[r1, c1]) = 0) ∨ count(mx[r0]r, λ j. j < mx[r1, c1]) ≠ 0 ∧ count(mx[r0]r, λ j. ¬ j < mx[r1, c1]) ≠ 0 ∧ (∀ r. r ≠ r0 ∧ r < #r mx0 → count(mx[r]r, λ j. j < mx[r1, c1]) = 0 ∨ count(mx[r]r, λ j. ¬ j < mx[r1, c1]) = 0) ⊦ |
#c mx = #c mx0, #r mx = #r mx0, r1 + 1 < #r mx0, mx[r2, c2] < mx[r1, c1], r1 < r2, r2 < #r mx0, c1 < #c mx0, c2 < #c mx0, r1 < #r mx0, mx[r2, c2] < mx[r2, c1], mx[r1, c2] < mx[r1, c1], mx[r1, c2] < mx[r2, c1], #dirtyrows(mx, mx[r1, c1]) ≤ 1, ¬ mx[r2, c1] < mx[r1, c1], ¬ mx[r2, c2] < mx[r1, c2], ∀ i. #dirtyrows(mx, i) ≤ 1, ∀ r. r < #r mx0 → count(mx[r]r, λ j. j < mx[r1, c1]) = 0 ∨ count(mx[r]r, λ j. ¬ j < mx[r1, c1]) = 0 ⊦
#c mx = #c mx0, #r mx = #r mx0, count(mx[r0]r, λ j. ¬ j < mx[r1, c1]) ≠ 0, count(mx[r0]r, λ j. j < mx[r1, c1]) ≠ 0, r1 + 1 < #r mx0, mx[r2, c2] < mx[r1, c1], r1 < r2, r2 < #r mx0, c1 < #c mx0, c2 < #c mx0, r1 < #r mx0, mx[r2, c2] < mx[r2, c1], mx[r1, c2] < mx[r1, c1], mx[r1, c2] < mx[r2, c1], #dirtyrows(mx, mx[r1, c1]) ≤ 1, ¬ mx[r2, c1] < mx[r1, c1], ¬ mx[r2, c2] < mx[r1, c2], ∀ i. #dirtyrows(mx, i) ≤ 1, ∀ r. r ≠ r0 ∧ r < #r mx0 → count(mx[r]r, λ j. j < mx[r1, c1]) = 0 ∨ count(mx[r]r, λ j. ¬ j < mx[r1, c1]) = 0 ⊦
| #c mx = #c mx0, #r mx = #r mx0, r1 + 1 < #r mx0, mx[r2, c2] < mx[r1, c1], r1 < r2, r2 < #r mx0, c1 < #c mx0, c2 < #c mx0, r1 < #r mx0, mx[r2, c2] < mx[r2, c1], mx[r1, c2] < mx[r1, c1], mx[r1, c2] < mx[r2, c1], #dirtyrows(mx, mx[r1, c1]) ≤ 1, ¬ mx[r2, c1] < mx[r1, c1], ¬ mx[r2, c2] < mx[r1, c2], ∀ i. #dirtyrows(mx, i) ≤ 1, ∀ r. r < #r mx0 → count(mx[r]r, λ j. j < mx[r1, c1]) = 0 ∨ count(mx[r]r, λ j. ¬ j < mx[r1, c1]) = 0 ⊦ |
#c mx = #c mx0, #r mx = #r mx0, mx[r1, c2] < mx[r2, c1], mx[r1, c2] < mx[r1, c1], mx[r2, c2] < mx[r2, c1], r1 < #r mx0, c2 < #c mx0, c1 < #c mx0, r2 < #r mx0, r1 < r2, mx[r2, c2] < mx[r1, c1], r1 + 1 < #r mx0, #dirtyrows(mx, mx[r1, c1]) ≤ 1, ¬ mx[r2, c1] < mx[r1, c1], ¬ mx[r2, c2] < mx[r1, c2], r2 < #r mx0 → count(mx[r2]r, λ j. j < mx[r1, c1]) = 0 ∨ count(mx[r2]r, λ j. ¬ j < mx[r1, c1]) = 0, ∀ r. r < #r mx0 → count(mx[r]r, λ j. j < mx[r1, c1]) = 0 ∨ count(mx[r]r, λ j. ¬ j < mx[r1, c1]) = 0, ∀ i. #dirtyrows(mx, i) ≤ 1 ⊦
Used terms: r2
| #c mx = #c mx0, #r mx = #r mx0, mx[r1, c2] < mx[r2, c1], mx[r1, c2] < mx[r1, c1], mx[r2, c2] < mx[r2, c1], r1 < #r mx0, c2 < #c mx0, c1 < #c mx0, r2 < #r mx0, r1 < r2, mx[r2, c2] < mx[r1, c1], r1 + 1 < #r mx0, #dirtyrows(mx, mx[r1, c1]) ≤ 1, ¬ mx[r2, c1] < mx[r1, c1], ¬ mx[r2, c2] < mx[r1, c2], r2 < #r mx0 → count(mx[r2]r, λ j. j < mx[r1, c1]) = 0 ∨ count(mx[r2]r, λ j. ¬ j < mx[r1, c1]) = 0, ∀ r. r < #r mx0 → count(mx[r]r, λ j. j < mx[r1, c1]) = 0 ∨ count(mx[r]r, λ j. ¬ j < mx[r1, c1]) = 0, ∀ i. #dirtyrows(mx, i) ≤ 1 ⊦ |
#c mx = #c mx0, #r mx = #r mx0, r1 + 1 < #r mx0, mx[r2, c2] < mx[r1, c1], r1 < r2, r2 < #r mx0, c1 < #c mx0, c2 < #c mx0, r1 < #r mx0, mx[r2, c2] < mx[r2, c1], mx[r1, c2] < mx[r1, c1], mx[r1, c2] < mx[r2, c1], #dirtyrows(mx, mx[r1, c1]) ≤ 1, ¬ mx[r2, c1] < mx[r1, c1], ¬ mx[r2, c2] < mx[r1, c2], ∀ i. #dirtyrows(mx, i) ≤ 1, ∀ r. r < #r mx0 → count(mx[r]r, λ j. j < mx[r1, c1]) = 0 ∨ count(mx[r]r, λ j. ¬ j < mx[r1, c1]) = 0, count(mx[r2]r, λ j. j < mx[r1, c1]) = 0 ∨ count(mx[r2]r, λ j. ¬ j < mx[r1, c1]) = 0 ⊦
| #c mx = #c mx0, #r mx = #r mx0, r1 + 1 < #r mx0, mx[r2, c2] < mx[r1, c1], r1 < r2, r2 < #r mx0, c1 < #c mx0, c2 < #c mx0, r1 < #r mx0, mx[r2, c2] < mx[r2, c1], mx[r1, c2] < mx[r1, c1], mx[r1, c2] < mx[r2, c1], #dirtyrows(mx, mx[r1, c1]) ≤ 1, ¬ mx[r2, c1] < mx[r1, c1], ¬ mx[r2, c2] < mx[r1, c2], ∀ i. #dirtyrows(mx, i) ≤ 1, ∀ r. r < #r mx0 → count(mx[r]r, λ j. j < mx[r1, c1]) = 0 ∨ count(mx[r]r, λ j. ¬ j < mx[r1, c1]) = 0, count(mx[r2]r, λ j. j < mx[r1, c1]) = 0 ∨ count(mx[r2]r, λ j. ¬ j < mx[r1, c1]) = 0 ⊦ |
⊦ count(x, p) = 0 ↔ (∀ n. n < # x → ¬ p(x[n]))
#c mx = #c mx0, #r mx = #r mx0, mx[r1, c2] < mx[r2, c1], mx[r1, c2] < mx[r1, c1], mx[r2, c2] < mx[r2, c1], r1 < #r mx0, c2 < #c mx0, c1 < #c mx0, r2 < #r mx0, r1 < r2, mx[r2, c2] < mx[r1, c1], r1 + 1 < #r mx0, #dirtyrows(mx, mx[r1, c1]) ≤ 1, ¬ mx[r2, c1] < mx[r1, c1], ¬ mx[r2, c2] < mx[r1, c2], ∀ r. r < #r mx0 → count(mx[r]r, λ j. j < mx[r1, c1]) = 0 ∨ count(mx[r]r, λ j. ¬ j < mx[r1, c1]) = 0, ∀ i. #dirtyrows(mx, i) ≤ 1, (∀ n. n < # mx[r2]r → ¬ mx[r2]r[n] < mx[r1, c1]) ∨ count(mx[r2]r, λ j. ¬ j < mx[r1, c1]) = 0 ⊦
Used terms: mx[r2]r, λ j. j < mx[r1, c1]
| ⊦ count(x, p) = 0 ↔ (∀ n. n < # x → ¬ p(x[n])) |
| #c mx = #c mx0, #r mx = #r mx0, mx[r1, c2] < mx[r2, c1], mx[r1, c2] < mx[r1, c1], mx[r2, c2] < mx[r2, c1], r1 < #r mx0, c2 < #c mx0, c1 < #c mx0, r2 < #r mx0, r1 < r2, mx[r2, c2] < mx[r1, c1], r1 + 1 < #r mx0, #dirtyrows(mx, mx[r1, c1]) ≤ 1, ¬ mx[r2, c1] < mx[r1, c1], ¬ mx[r2, c2] < mx[r1, c2], ∀ r. r < #r mx0 → count(mx[r]r, λ j. j < mx[r1, c1]) = 0 ∨ count(mx[r]r, λ j. ¬ j < mx[r1, c1]) = 0, ∀ i. #dirtyrows(mx, i) ≤ 1, (∀ n. n < # mx[r2]r → ¬ mx[r2]r[n] < mx[r1, c1]) ∨ count(mx[r2]r, λ j. ¬ j < mx[r1, c1]) = 0 ⊦ |
#c mx = #c mx0, #r mx = #r mx0, r1 + 1 < #r mx0, mx[r2, c2] < mx[r1, c1], r1 < r2, r2 < #r mx0, c1 < #c mx0, c2 < #c mx0, r1 < #r mx0, mx[r2, c2] < mx[r2, c1], mx[r1, c2] < mx[r1, c1], mx[r1, c2] < mx[r2, c1], #dirtyrows(mx, mx[r1, c1]) ≤ 1, ¬ mx[r2, c1] < mx[r1, c1], ¬ mx[r2, c2] < mx[r1, c2], ∀ i. #dirtyrows(mx, i) ≤ 1, ∀ r. r < #r mx0 → count(mx[r]r, λ j. j < mx[r1, c1]) = 0 ∨ count(mx[r]r, λ j. ¬ j < mx[r1, c1]) = 0, (∀ n. n < #c mx0 → ¬ mx[r2, n] < mx[r1, c1]) ∨ count(mx[r2]r, λ j. ¬ j < mx[r1, c1]) = 0 ⊦
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, r1 + 1 < #r mx0, mx[r2, c2] < mx[r1, c1], r1 < r2, r2 < #r mx0, c1 < #c mx0, c2 < #c mx0, r1 < #r mx0, mx[r2, c2] < mx[r2, c1], mx[r1, c2] < mx[r1, c1], mx[r1, c2] < mx[r2, c1], #dirtyrows(mx, mx[r1, c1]) ≤ 1, ¬ mx[r2, c1] < mx[r1, c1], ¬ mx[r2, c2] < mx[r1, c2], ∀ i. #dirtyrows(mx, i) ≤ 1, ∀ r. r < #r mx0 → count(mx[r]r, λ j. j < mx[r1, c1]) = 0 ∨ count(mx[r]r, λ j. ¬ j < mx[r1, c1]) = 0, (∀ n. n < #c mx0 → ¬ mx[r2, n] < mx[r1, c1]) ∨ count(mx[r2]r, λ j. ¬ j < mx[r1, c1]) = 0 ⊦ |
⊦ count(x, p) = 0 ↔ (∀ n. n < # x → ¬ p(x[n]))
#c mx = #c mx0, #r mx = #r mx0, mx[r1, c2] < mx[r2, c1], mx[r1, c2] < mx[r1, c1], mx[r2, c2] < mx[r2, c1], r1 < #r mx0, c2 < #c mx0, c1 < #c mx0, r2 < #r mx0, r1 < r2, mx[r2, c2] < mx[r1, c1], r1 + 1 < #r mx0, #dirtyrows(mx, mx[r1, c1]) ≤ 1, ¬ mx[r2, c1] < mx[r1, c1], ¬ mx[r2, c2] < mx[r1, c2], ∀ r. r < #r mx0 → count(mx[r]r, λ j. j < mx[r1, c1]) = 0 ∨ count(mx[r]r, λ j. ¬ j < mx[r1, c1]) = 0, ∀ i. #dirtyrows(mx, i) ≤ 1, (∀ n. n < #c mx0 → ¬ mx[r2, n] < mx[r1, c1]) ∨ (∀ n. n < # mx[r2]r → ¬ ¬ mx[r2]r[n] < mx[r1, c1]) ⊦
Used terms: mx[r2]r, λ j. ¬ j < mx[r1, c1]
| ⊦ count(x, p) = 0 ↔ (∀ n. n < # x → ¬ p(x[n])) |
| #c mx = #c mx0, #r mx = #r mx0, mx[r1, c2] < mx[r2, c1], mx[r1, c2] < mx[r1, c1], mx[r2, c2] < mx[r2, c1], r1 < #r mx0, c2 < #c mx0, c1 < #c mx0, r2 < #r mx0, r1 < r2, mx[r2, c2] < mx[r1, c1], r1 + 1 < #r mx0, #dirtyrows(mx, mx[r1, c1]) ≤ 1, ¬ mx[r2, c1] < mx[r1, c1], ¬ mx[r2, c2] < mx[r1, c2], ∀ r. r < #r mx0 → count(mx[r]r, λ j. j < mx[r1, c1]) = 0 ∨ count(mx[r]r, λ j. ¬ j < mx[r1, c1]) = 0, ∀ i. #dirtyrows(mx, i) ≤ 1, (∀ n. n < #c mx0 → ¬ mx[r2, n] < mx[r1, c1]) ∨ (∀ n. n < # mx[r2]r → ¬ ¬ mx[r2]r[n] < mx[r1, c1]) ⊦ |
#c mx = #c mx0, #r mx = #r mx0, r1 + 1 < #r mx0, mx[r2, c2] < mx[r1, c1], r1 < r2, r2 < #r mx0, c1 < #c mx0, c2 < #c mx0, r1 < #r mx0, mx[r2, c2] < mx[r2, c1], mx[r1, c2] < mx[r1, c1], mx[r1, c2] < mx[r2, c1], #dirtyrows(mx, mx[r1, c1]) ≤ 1, ¬ mx[r2, c1] < mx[r1, c1], ¬ mx[r2, c2] < mx[r1, c2], ∀ i. #dirtyrows(mx, i) ≤ 1, ∀ r. r < #r mx0 → count(mx[r]r, λ j. j < mx[r1, c1]) = 0 ∨ count(mx[r]r, λ j. ¬ j < mx[r1, c1]) = 0, (∀ n. n < #c mx0 → ¬ mx[r2, n] < mx[r1, c1]) ∨ (∀ n. n < #c mx0 → mx[r2, n] < mx[r1, c1]) ⊦
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, r1 + 1 < #r mx0, mx[r2, c2] < mx[r1, c1], r1 < r2, r2 < #r mx0, c1 < #c mx0, c2 < #c mx0, r1 < #r mx0, mx[r2, c2] < mx[r2, c1], mx[r1, c2] < mx[r1, c1], mx[r1, c2] < mx[r2, c1], #dirtyrows(mx, mx[r1, c1]) ≤ 1, ¬ mx[r2, c1] < mx[r1, c1], ¬ mx[r2, c2] < mx[r1, c2], ∀ i. #dirtyrows(mx, i) ≤ 1, ∀ r. r < #r mx0 → count(mx[r]r, λ j. j < mx[r1, c1]) = 0 ∨ count(mx[r]r, λ j. ¬ j < mx[r1, c1]) = 0, (∀ n. n < #c mx0 → ¬ mx[r2, n] < mx[r1, c1]) ∨ (∀ n. n < #c mx0 → mx[r2, n] < mx[r1, c1]) ⊦ |
#c mx = #c mx0, #r mx = #r mx0, mx[r1, c2] < mx[r2, c1], mx[r1, c2] < mx[r1, c1], mx[r2, c2] < mx[r2, c1], r1 < #r mx0, c2 < #c mx0, c1 < #c mx0, r2 < #r mx0, r1 < r2, mx[r2, c2] < mx[r1, c1], r1 + 1 < #r mx0, #dirtyrows(mx, mx[r1, c1]) ≤ 1, ¬ mx[r2, c1] < mx[r1, c1], ¬ mx[r2, c2] < mx[r1, c2], ∀ r. r < #r mx0 → count(mx[r]r, λ j. j < mx[r1, c1]) = 0 ∨ count(mx[r]r, λ j. ¬ j < mx[r1, c1]) = 0, ∀ i. #dirtyrows(mx, i) ≤ 1, ∀ n. n < #c mx0 → ¬ mx[r2, n] < mx[r1, c1] ⊦
#c mx = #c mx0, #r mx = #r mx0, mx[r1, c2] < mx[r2, c1], mx[r1, c2] < mx[r1, c1], mx[r2, c2] < mx[r2, c1], r1 < #r mx0, c2 < #c mx0, c1 < #c mx0, r2 < #r mx0, r1 < r2, mx[r2, c2] < mx[r1, c1], r1 + 1 < #r mx0, #dirtyrows(mx, mx[r1, c1]) ≤ 1, ¬ mx[r2, c1] < mx[r1, c1], ¬ mx[r2, c2] < mx[r1, c2], ∀ r. r < #r mx0 → count(mx[r]r, λ j. j < mx[r1, c1]) = 0 ∨ count(mx[r]r, λ j. ¬ j < mx[r1, c1]) = 0, ∀ i. #dirtyrows(mx, i) ≤ 1, ∀ n. n < #c mx0 → mx[r2, n] < mx[r1, c1] ⊦
| #c mx = #c mx0, #r mx = #r mx0, mx[r1, c2] < mx[r2, c1], mx[r1, c2] < mx[r1, c1], mx[r2, c2] < mx[r2, c1], r1 < #r mx0, c2 < #c mx0, c1 < #c mx0, r2 < #r mx0, r1 < r2, mx[r2, c2] < mx[r1, c1], r1 + 1 < #r mx0, #dirtyrows(mx, mx[r1, c1]) ≤ 1, ¬ mx[r2, c1] < mx[r1, c1], ¬ mx[r2, c2] < mx[r1, c2], ∀ r. r < #r mx0 → count(mx[r]r, λ j. j < mx[r1, c1]) = 0 ∨ count(mx[r]r, λ j. ¬ j < mx[r1, c1]) = 0, ∀ i. #dirtyrows(mx, i) ≤ 1, ∀ n. n < #c mx0 → ¬ mx[r2, n] < mx[r1, c1] ⊦ |
Used terms: c2
| #c mx = #c mx0, #r mx = #r mx0, mx[r1, c2] < mx[r2, c1], mx[r1, c2] < mx[r1, c1], mx[r2, c2] < mx[r2, c1], r1 < #r mx0, c2 < #c mx0, c1 < #c mx0, r2 < #r mx0, r1 < r2, mx[r2, c2] < mx[r1, c1], r1 + 1 < #r mx0, #dirtyrows(mx, mx[r1, c1]) ≤ 1, ¬ mx[r2, c1] < mx[r1, c1], ¬ mx[r2, c2] < mx[r1, c2], ∀ r. r < #r mx0 → count(mx[r]r, λ j. j < mx[r1, c1]) = 0 ∨ count(mx[r]r, λ j. ¬ j < mx[r1, c1]) = 0, ∀ i. #dirtyrows(mx, i) ≤ 1, ∀ n. n < #c mx0 → mx[r2, n] < mx[r1, c1] ⊦ |
Used terms: c1
| #c mx = #c mx0, #r mx = #r mx0, count(mx[r0]r, λ j. ¬ j < mx[r1, c1]) ≠ 0, count(mx[r0]r, λ j. j < mx[r1, c1]) ≠ 0, r1 + 1 < #r mx0, mx[r2, c2] < mx[r1, c1], r1 < r2, r2 < #r mx0, c1 < #c mx0, c2 < #c mx0, r1 < #r mx0, mx[r2, c2] < mx[r2, c1], mx[r1, c2] < mx[r1, c1], mx[r1, c2] < mx[r2, c1], #dirtyrows(mx, mx[r1, c1]) ≤ 1, ¬ mx[r2, c1] < mx[r1, c1], ¬ mx[r2, c2] < mx[r1, c2], ∀ i. #dirtyrows(mx, i) ≤ 1, ∀ r. r ≠ r0 ∧ r < #r mx0 → count(mx[r]r, λ j. j < mx[r1, c1]) = 0 ∨ count(mx[r]r, λ j. ¬ j < mx[r1, c1]) = 0 ⊦ |
#c mx = #c mx0, #r mx = #r mx0, count(mx[r0]r, λ j. ¬ j < mx[r1, c1]) ≠ 0, count(mx[r0]r, λ j. j < mx[r1, c1]) ≠ 0, mx[r1, c2] < mx[r2, c1], mx[r1, c2] < mx[r1, c1], mx[r2, c2] < mx[r2, c1], r1 < #r mx0, c2 < #c mx0, c1 < #c mx0, r2 < #r mx0, r1 < r2, mx[r2, c2] < mx[r1, c1], r1 + 1 < #r mx0, #dirtyrows(mx, mx[r1, c1]) ≤ 1, ¬ mx[r2, c1] < mx[r1, c1], ¬ mx[r2, c2] < mx[r1, c2], r2 ≠ r0 ∧ r2 < #r mx0 → count(mx[r2]r, λ j. j < mx[r1, c1]) = 0 ∨ count(mx[r2]r, λ j. ¬ j < mx[r1, c1]) = 0, ∀ r. r ≠ r0 ∧ r < #r mx0 → count(mx[r]r, λ j. j < mx[r1, c1]) = 0 ∨ count(mx[r]r, λ j. ¬ j < mx[r1, c1]) = 0, ∀ i. #dirtyrows(mx, i) ≤ 1 ⊦
Used terms: r2
| #c mx = #c mx0, #r mx = #r mx0, count(mx[r0]r, λ j. ¬ j < mx[r1, c1]) ≠ 0, count(mx[r0]r, λ j. j < mx[r1, c1]) ≠ 0, mx[r1, c2] < mx[r2, c1], mx[r1, c2] < mx[r1, c1], mx[r2, c2] < mx[r2, c1], r1 < #r mx0, c2 < #c mx0, c1 < #c mx0, r2 < #r mx0, r1 < r2, mx[r2, c2] < mx[r1, c1], r1 + 1 < #r mx0, #dirtyrows(mx, mx[r1, c1]) ≤ 1, ¬ mx[r2, c1] < mx[r1, c1], ¬ mx[r2, c2] < mx[r1, c2], r2 ≠ r0 ∧ r2 < #r mx0 → count(mx[r2]r, λ j. j < mx[r1, c1]) = 0 ∨ count(mx[r2]r, λ j. ¬ j < mx[r1, c1]) = 0, ∀ r. r ≠ r0 ∧ r < #r mx0 → count(mx[r]r, λ j. j < mx[r1, c1]) = 0 ∨ count(mx[r]r, λ j. ¬ j < mx[r1, c1]) = 0, ∀ i. #dirtyrows(mx, i) ≤ 1 ⊦ |
#c mx = #c mx0, #r mx = #r mx0, count(mx[r0]r, λ j. ¬ j < mx[r1, c1]) ≠ 0, count(mx[r0]r, λ j. j < mx[r1, c1]) ≠ 0, r1 + 1 < #r mx0, mx[r2, c2] < mx[r1, c1], r1 < r2, r2 < #r mx0, c1 < #c mx0, c2 < #c mx0, r1 < #r mx0, mx[r2, c2] < mx[r2, c1], mx[r1, c2] < mx[r1, c1], mx[r1, c2] < mx[r2, c1], #dirtyrows(mx, mx[r1, c1]) ≤ 1, ¬ mx[r2, c1] < mx[r1, c1], ¬ mx[r2, c2] < mx[r1, c2], r2 ≠ r0 → count(mx[r2]r, λ j. j < mx[r1, c1]) = 0 ∨ count(mx[r2]r, λ j. ¬ j < mx[r1, c1]) = 0, ∀ i. #dirtyrows(mx, i) ≤ 1, ∀ r. r ≠ r0 ∧ r < #r mx0 → count(mx[r]r, λ j. j < mx[r1, c1]) = 0 ∨ count(mx[r]r, λ j. ¬ j < mx[r1, c1]) = 0 ⊦
| #c mx = #c mx0, #r mx = #r mx0, count(mx[r0]r, λ j. ¬ j < mx[r1, c1]) ≠ 0, count(mx[r0]r, λ j. j < mx[r1, c1]) ≠ 0, r1 + 1 < #r mx0, mx[r2, c2] < mx[r1, c1], r1 < r2, r2 < #r mx0, c1 < #c mx0, c2 < #c mx0, r1 < #r mx0, mx[r2, c2] < mx[r2, c1], mx[r1, c2] < mx[r1, c1], mx[r1, c2] < mx[r2, c1], #dirtyrows(mx, mx[r1, c1]) ≤ 1, ¬ mx[r2, c1] < mx[r1, c1], ¬ mx[r2, c2] < mx[r1, c2], r2 ≠ r0 → count(mx[r2]r, λ j. j < mx[r1, c1]) = 0 ∨ count(mx[r2]r, λ j. ¬ j < mx[r1, c1]) = 0, ∀ i. #dirtyrows(mx, i) ≤ 1, ∀ r. r ≠ r0 ∧ r < #r mx0 → count(mx[r]r, λ j. j < mx[r1, c1]) = 0 ∨ count(mx[r]r, λ j. ¬ j < mx[r1, c1]) = 0 ⊦ |
⊦ count(x, p) = 0 ↔ (∀ n. n < # x → ¬ p(x[n]))
#c mx = #c mx0, #r mx = #r mx0, count(mx[r0]r, λ j. j < mx[r1, c1]) ≠ 0, mx[r1, c2] < mx[r2, c1], mx[r1, c2] < mx[r1, c1], mx[r2, c2] < mx[r2, c1], r1 < #r mx0, c2 < #c mx0, c1 < #c mx0, r2 < #r mx0, r1 < r2, mx[r2, c2] < mx[r1, c1], r1 + 1 < #r mx0, #dirtyrows(mx, mx[r1, c1]) ≤ 1, ¬ mx[r2, c1] < mx[r1, c1], ¬ mx[r2, c2] < mx[r1, c2], r2 ≠ r0 → count(mx[r2]r, λ j. j < mx[r1, c1]) = 0 ∨ count(mx[r2]r, λ j. ¬ j < mx[r1, c1]) = 0, ∀ r. r ≠ r0 ∧ r < #r mx0 → count(mx[r]r, λ j. j < mx[r1, c1]) = 0 ∨ count(mx[r]r, λ j. ¬ j < mx[r1, c1]) = 0, ∀ i. #dirtyrows(mx, i) ≤ 1, ∃ n. ¬(n < # mx[r0]r → ¬ ¬ mx[r0]r[n] < mx[r1, c1]) ⊦
Used terms: mx[r0]r, λ j. ¬ j < mx[r1, c1]
| ⊦ count(x, p) = 0 ↔ (∀ n. n < # x → ¬ p(x[n])) |
| #c mx = #c mx0, #r mx = #r mx0, count(mx[r0]r, λ j. j < mx[r1, c1]) ≠ 0, mx[r1, c2] < mx[r2, c1], mx[r1, c2] < mx[r1, c1], mx[r2, c2] < mx[r2, c1], r1 < #r mx0, c2 < #c mx0, c1 < #c mx0, r2 < #r mx0, r1 < r2, mx[r2, c2] < mx[r1, c1], r1 + 1 < #r mx0, #dirtyrows(mx, mx[r1, c1]) ≤ 1, ¬ mx[r2, c1] < mx[r1, c1], ¬ mx[r2, c2] < mx[r1, c2], r2 ≠ r0 → count(mx[r2]r, λ j. j < mx[r1, c1]) = 0 ∨ count(mx[r2]r, λ j. ¬ j < mx[r1, c1]) = 0, ∀ r. r ≠ r0 ∧ r < #r mx0 → count(mx[r]r, λ j. j < mx[r1, c1]) = 0 ∨ count(mx[r]r, λ j. ¬ j < mx[r1, c1]) = 0, ∀ i. #dirtyrows(mx, i) ≤ 1, ∃ n. ¬(n < # mx[r0]r → ¬ ¬ mx[r0]r[n] < mx[r1, c1]) ⊦ |
#c mx = #c mx0, #r mx = #r mx0, count(mx[r0]r, λ j. j < mx[r1, c1]) ≠ 0, mx[r1, c2] < mx[r0, n], mx[r2, c2] < mx[r0, n], n < #c mx0, mx[r1, c2] < mx[r2, c1], mx[r1, c2] < mx[r1, c1], mx[r2, c2] < mx[r2, c1], r1 < #r mx0, c2 < #c mx0, c1 < #c mx0, r2 < #r mx0, r1 < r2, mx[r2, c2] < mx[r1, c1], r1 + 1 < #r mx0, #dirtyrows(mx, mx[r1, c1]) ≤ 1, ¬ mx[r0, n] < mx[r1, c1], ¬ mx[r2, c2] < mx[r1, c2], ¬ mx[r2, c1] < mx[r1, c1], r2 ≠ r0 → count(mx[r2]r, λ j. j < mx[r1, c1]) = 0 ∨ count(mx[r2]r, λ j. ¬ j < mx[r1, c1]) = 0, ∀ r. r ≠ r0 ∧ r < #r mx0 → count(mx[r]r, λ j. j < mx[r1, c1]) = 0 ∨ count(mx[r]r, λ j. ¬ j < mx[r1, c1]) = 0, ∀ i. #dirtyrows(mx, i) ≤ 1 ⊦
Used simplifier rules: nll: ⊦ ¬ a < b ∧ c < b → c < a; (forward) from specification tord[Bubblesort-row-rev] 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, count(mx[r0]r, λ j. j < mx[r1, c1]) ≠ 0, mx[r1, c2] < mx[r0, n], mx[r2, c2] < mx[r0, n], n < #c mx0, mx[r1, c2] < mx[r2, c1], mx[r1, c2] < mx[r1, c1], mx[r2, c2] < mx[r2, c1], r1 < #r mx0, c2 < #c mx0, c1 < #c mx0, r2 < #r mx0, r1 < r2, mx[r2, c2] < mx[r1, c1], r1 + 1 < #r mx0, #dirtyrows(mx, mx[r1, c1]) ≤ 1, ¬ mx[r0, n] < mx[r1, c1], ¬ mx[r2, c2] < mx[r1, c2], ¬ mx[r2, c1] < mx[r1, c1], r2 ≠ r0 → count(mx[r2]r, λ j. j < mx[r1, c1]) = 0 ∨ count(mx[r2]r, λ j. ¬ j < mx[r1, c1]) = 0, ∀ r. r ≠ r0 ∧ r < #r mx0 → count(mx[r]r, λ j. j < mx[r1, c1]) = 0 ∨ count(mx[r]r, λ j. ¬ j < mx[r1, c1]) = 0, ∀ i. #dirtyrows(mx, i) ≤ 1 ⊦ |
⊦ count(x, p) = 0 ↔ (∀ n. n < # x → ¬ p(x[n]))
#c mx = #c mx0, #r mx = #r mx0, r1 + 1 < #r mx0, mx[r2, c2] < mx[r1, c1], r1 < r2, r2 < #r mx0, c1 < #c mx0, c2 < #c mx0, r1 < #r mx0, mx[r2, c2] < mx[r2, c1], mx[r1, c2] < mx[r1, c1], mx[r1, c2] < mx[r2, c1], n < #c mx0, mx[r2, c2] < mx[r0, n], mx[r1, c2] < mx[r0, n], #dirtyrows(mx, mx[r1, c1]) ≤ 1, ¬ mx[r0, n] < mx[r1, c1], ¬ mx[r2, c2] < mx[r1, c2], ¬ mx[r2, c1] < mx[r1, c1], r2 ≠ r0 → count(mx[r2]r, λ j. j < mx[r1, c1]) = 0 ∨ count(mx[r2]r, λ j. ¬ j < mx[r1, c1]) = 0, ∀ i. #dirtyrows(mx, i) ≤ 1, ∀ r. r ≠ r0 ∧ r < #r mx0 → count(mx[r]r, λ j. j < mx[r1, c1]) = 0 ∨ count(mx[r]r, λ j. ¬ j < mx[r1, c1]) = 0, ∃ n. ¬(n < # mx[r0]r → ¬ mx[r0]r[n] < mx[r1, c1]) ⊦
Used terms: mx[r0]r, λ j. j < mx[r1, c1]
| ⊦ count(x, p) = 0 ↔ (∀ n. n < # x → ¬ p(x[n])) |
| #c mx = #c mx0, #r mx = #r mx0, r1 + 1 < #r mx0, mx[r2, c2] < mx[r1, c1], r1 < r2, r2 < #r mx0, c1 < #c mx0, c2 < #c mx0, r1 < #r mx0, mx[r2, c2] < mx[r2, c1], mx[r1, c2] < mx[r1, c1], mx[r1, c2] < mx[r2, c1], n < #c mx0, mx[r2, c2] < mx[r0, n], mx[r1, c2] < mx[r0, n], #dirtyrows(mx, mx[r1, c1]) ≤ 1, ¬ mx[r0, n] < mx[r1, c1], ¬ mx[r2, c2] < mx[r1, c2], ¬ mx[r2, c1] < mx[r1, c1], r2 ≠ r0 → count(mx[r2]r, λ j. j < mx[r1, c1]) = 0 ∨ count(mx[r2]r, λ j. ¬ j < mx[r1, c1]) = 0, ∀ i. #dirtyrows(mx, i) ≤ 1, ∀ r. r ≠ r0 ∧ r < #r mx0 → count(mx[r]r, λ j. j < mx[r1, c1]) = 0 ∨ count(mx[r]r, λ j. ¬ j < mx[r1, c1]) = 0, ∃ n. ¬(n < # mx[r0]r → ¬ mx[r0]r[n] < mx[r1, c1]) ⊦ |
#c mx = #c mx0, #r mx = #r mx0, mx[r0, n0] < mx[r2, c1], mx[r0, n0] < mx[r0, n], n0 < #c mx0, mx[r0, n0] < mx[r1, c1], r1 + 1 < #r mx0, mx[r2, c2] < mx[r1, c1], r1 < r2, r2 < #r mx0, c1 < #c mx0, c2 < #c mx0, r1 < #r mx0, mx[r2, c2] < mx[r2, c1], mx[r1, c2] < mx[r1, c1], mx[r1, c2] < mx[r2, c1], n < #c mx0, mx[r2, c2] < mx[r0, n], mx[r1, c2] < mx[r0, n], #dirtyrows(mx, mx[r1, c1]) ≤ 1, ¬ mx[r2, c1] < mx[r1, c1], ¬ mx[r2, c2] < mx[r1, c2], ¬ mx[r0, n] < mx[r1, c1], r2 ≠ r0 → count(mx[r2]r, λ j. j < mx[r1, c1]) = 0 ∨ count(mx[r2]r, λ j. ¬ j < mx[r1, c1]) = 0, ∀ i. #dirtyrows(mx, i) ≤ 1, ∀ r. r ≠ r0 ∧ r < #r mx0 → count(mx[r]r, λ j. j < mx[r1, c1]) = 0 ∨ count(mx[r]r, λ j. ¬ j < mx[r1, c1]) = 0 ⊦
Used simplifier rules: nll: ⊦ ¬ a < b ∧ c < b → c < a; (forward) from specification tord[Bubblesort-row-rev] lf-01: ⊦ m < n ∧ n = n0 → m < n0; (forward) from specification nat-basic ⊦ # mx[r]r = #c mx; (s) ⊦ mx[r]r[c] = mx[r, c]; (s)
| #c mx = #c mx0, #r mx = #r mx0, mx[r0, n0] < mx[r2, c1], mx[r0, n0] < mx[r0, n], n0 < #c mx0, mx[r0, n0] < mx[r1, c1], r1 + 1 < #r mx0, mx[r2, c2] < mx[r1, c1], r1 < r2, r2 < #r mx0, c1 < #c mx0, c2 < #c mx0, r1 < #r mx0, mx[r2, c2] < mx[r2, c1], mx[r1, c2] < mx[r1, c1], mx[r1, c2] < mx[r2, c1], n < #c mx0, mx[r2, c2] < mx[r0, n], mx[r1, c2] < mx[r0, n], #dirtyrows(mx, mx[r1, c1]) ≤ 1, ¬ mx[r2, c1] < mx[r1, c1], ¬ mx[r2, c2] < mx[r1, c2], ¬ mx[r0, n] < mx[r1, c1], r2 ≠ r0 → count(mx[r2]r, λ j. j < mx[r1, c1]) = 0 ∨ count(mx[r2]r, λ j. ¬ j < mx[r1, c1]) = 0, ∀ i. #dirtyrows(mx, i) ≤ 1, ∀ r. r ≠ r0 ∧ r < #r mx0 → count(mx[r]r, λ j. j < mx[r1, c1]) = 0 ∨ count(mx[r]r, λ j. ¬ j < mx[r1, c1]) = 0 ⊦ |
#c mx = #c mx0, #r mx = #r mx0, r2 ≠ r0, mx[r1, c2] < mx[r0, n], mx[r2, c2] < mx[r0, n], n < #c mx0, mx[r1, c2] < mx[r2, c1], mx[r1, c2] < mx[r1, c1], mx[r2, c2] < mx[r2, c1], r1 < #r mx0, c2 < #c mx0, c1 < #c mx0, r2 < #r mx0, r1 < r2, mx[r2, c2] < mx[r1, c1], r1 + 1 < #r mx0, mx[r0, n0] < mx[r1, c1], n0 < #c mx0, mx[r0, n0] < mx[r0, n], mx[r0, n0] < mx[r2, c1], #dirtyrows(mx, mx[r1, c1]) ≤ 1, ¬ mx[r2, c1] < mx[r1, c1], ¬ mx[r2, c2] < mx[r1, c2], ¬ mx[r0, n] < mx[r1, c1], r2 ≠ r0 → count(mx[r2]r, λ j. j < mx[r1, c1]) = 0 ∨ count(mx[r2]r, λ j. ¬ j < mx[r1, c1]) = 0, ∀ r. r ≠ r0 ∧ r < #r mx0 → count(mx[r]r, λ j. j < mx[r1, c1]) = 0 ∨ count(mx[r]r, λ j. ¬ j < mx[r1, c1]) = 0, ∀ i. #dirtyrows(mx, i) ≤ 1 ⊦
#c mx = #c mx0, #r mx = #r mx0, r2 = r0, mx[r1, c2] < mx[r0, n], mx[r2, c2] < mx[r0, n], n < #c mx0, mx[r1, c2] < mx[r2, c1], mx[r1, c2] < mx[r1, c1], mx[r2, c2] < mx[r2, c1], r1 < #r mx0, c2 < #c mx0, c1 < #c mx0, r2 < #r mx0, r1 < r2, mx[r2, c2] < mx[r1, c1], r1 + 1 < #r mx0, mx[r0, n0] < mx[r1, c1], n0 < #c mx0, mx[r0, n0] < mx[r0, n], mx[r0, n0] < mx[r2, c1], #dirtyrows(mx, mx[r1, c1]) ≤ 1, ¬ mx[r2, c1] < mx[r1, c1], ¬ mx[r2, c2] < mx[r1, c2], ¬ mx[r0, n] < mx[r1, c1], r2 ≠ r0 → count(mx[r2]r, λ j. j < mx[r1, c1]) = 0 ∨ count(mx[r2]r, λ j. ¬ j < mx[r1, c1]) = 0, ∀ r. r ≠ r0 ∧ r < #r mx0 → count(mx[r]r, λ j. j < mx[r1, c1]) = 0 ∨ count(mx[r]r, λ j. ¬ j < mx[r1, c1]) = 0, ∀ i. #dirtyrows(mx, i) ≤ 1 ⊦
Used formulas: r2 ≠ r0
| #c mx = #c mx0, #r mx = #r mx0, r2 ≠ r0, mx[r1, c2] < mx[r0, n], mx[r2, c2] < mx[r0, n], n < #c mx0, mx[r1, c2] < mx[r2, c1], mx[r1, c2] < mx[r1, c1], mx[r2, c2] < mx[r2, c1], r1 < #r mx0, c2 < #c mx0, c1 < #c mx0, r2 < #r mx0, r1 < r2, mx[r2, c2] < mx[r1, c1], r1 + 1 < #r mx0, mx[r0, n0] < mx[r1, c1], n0 < #c mx0, mx[r0, n0] < mx[r0, n], mx[r0, n0] < mx[r2, c1], #dirtyrows(mx, mx[r1, c1]) ≤ 1, ¬ mx[r2, c1] < mx[r1, c1], ¬ mx[r2, c2] < mx[r1, c2], ¬ mx[r0, n] < mx[r1, c1], r2 ≠ r0 → count(mx[r2]r, λ j. j < mx[r1, c1]) = 0 ∨ count(mx[r2]r, λ j. ¬ j < mx[r1, c1]) = 0, ∀ r. r ≠ r0 ∧ r < #r mx0 → count(mx[r]r, λ j. j < mx[r1, c1]) = 0 ∨ count(mx[r]r, λ j. ¬ j < mx[r1, c1]) = 0, ∀ i. #dirtyrows(mx, i) ≤ 1 ⊦ |
#c mx = #c mx0, #r mx = #r mx0, r2 ≠ r0, mx[r0, n0] < mx[r2, c1], mx[r0, n0] < mx[r0, n], n0 < #c mx0, mx[r0, n0] < mx[r1, c1], r1 + 1 < #r mx0, mx[r2, c2] < mx[r1, c1], r1 < r2, r2 < #r mx0, c1 < #c mx0, c2 < #c mx0, r1 < #r mx0, mx[r2, c2] < mx[r2, c1], mx[r1, c2] < mx[r1, c1], mx[r1, c2] < mx[r2, c1], n < #c mx0, mx[r2, c2] < mx[r0, n], mx[r1, c2] < mx[r0, n], #dirtyrows(mx, mx[r1, c1]) ≤ 1, ¬ mx[r2, c1] < mx[r1, c1], ¬ mx[r2, c2] < mx[r1, c2], ¬ mx[r0, n] < mx[r1, c1], ∀ i. #dirtyrows(mx, i) ≤ 1, ∀ r. r ≠ r0 ∧ r < #r mx0 → count(mx[r]r, λ j. j < mx[r1, c1]) = 0 ∨ count(mx[r]r, λ j. ¬ j < mx[r1, c1]) = 0, count(mx[r2]r, λ j. j < mx[r1, c1]) = 0 ∨ count(mx[r2]r, λ j. ¬ j < mx[r1, c1]) = 0 ⊦
| #c mx = #c mx0, #r mx = #r mx0, r2 ≠ r0, mx[r0, n0] < mx[r2, c1], mx[r0, n0] < mx[r0, n], n0 < #c mx0, mx[r0, n0] < mx[r1, c1], r1 + 1 < #r mx0, mx[r2, c2] < mx[r1, c1], r1 < r2, r2 < #r mx0, c1 < #c mx0, c2 < #c mx0, r1 < #r mx0, mx[r2, c2] < mx[r2, c1], mx[r1, c2] < mx[r1, c1], mx[r1, c2] < mx[r2, c1], n < #c mx0, mx[r2, c2] < mx[r0, n], mx[r1, c2] < mx[r0, n], #dirtyrows(mx, mx[r1, c1]) ≤ 1, ¬ mx[r2, c1] < mx[r1, c1], ¬ mx[r2, c2] < mx[r1, c2], ¬ mx[r0, n] < mx[r1, c1], ∀ i. #dirtyrows(mx, i) ≤ 1, ∀ r. r ≠ r0 ∧ r < #r mx0 → count(mx[r]r, λ j. j < mx[r1, c1]) = 0 ∨ count(mx[r]r, λ j. ¬ j < mx[r1, c1]) = 0, count(mx[r2]r, λ j. j < mx[r1, c1]) = 0 ∨ count(mx[r2]r, λ j. ¬ j < mx[r1, c1]) = 0 ⊦ |
#c mx = #c mx0, #r mx = #r mx0, count(mx[r2]r, λ j. j < mx[r1, c1]) = 0, r2 ≠ r0, mx[r1, c2] < mx[r0, n], mx[r2, c2] < mx[r0, n], n < #c mx0, mx[r1, c2] < mx[r2, c1], mx[r1, c2] < mx[r1, c1], mx[r2, c2] < mx[r2, c1], r1 < #r mx0, c2 < #c mx0, c1 < #c mx0, r2 < #r mx0, r1 < r2, mx[r2, c2] < mx[r1, c1], r1 + 1 < #r mx0, mx[r0, n0] < mx[r1, c1], n0 < #c mx0, mx[r0, n0] < mx[r0, n], mx[r0, n0] < mx[r2, c1], #dirtyrows(mx, mx[r1, c1]) ≤ 1, ¬ mx[r2, c1] < mx[r1, c1], ¬ mx[r2, c2] < mx[r1, c2], ¬ mx[r0, n] < mx[r1, c1], ∀ r. r ≠ r0 ∧ r < #r mx0 → count(mx[r]r, λ j. j < mx[r1, c1]) = 0 ∨ count(mx[r]r, λ j. ¬ j < mx[r1, c1]) = 0, ∀ i. #dirtyrows(mx, i) ≤ 1 ⊦
#c mx = #c mx0, #r mx = #r mx0, count(mx[r2]r, λ j. ¬ j < mx[r1, c1]) = 0, r2 ≠ r0, mx[r1, c2] < mx[r0, n], mx[r2, c2] < mx[r0, n], n < #c mx0, mx[r1, c2] < mx[r2, c1], mx[r1, c2] < mx[r1, c1], mx[r2, c2] < mx[r2, c1], r1 < #r mx0, c2 < #c mx0, c1 < #c mx0, r2 < #r mx0, r1 < r2, mx[r2, c2] < mx[r1, c1], r1 + 1 < #r mx0, mx[r0, n0] < mx[r1, c1], n0 < #c mx0, mx[r0, n0] < mx[r0, n], mx[r0, n0] < mx[r2, c1], #dirtyrows(mx, mx[r1, c1]) ≤ 1, ¬ mx[r2, c1] < mx[r1, c1], ¬ mx[r2, c2] < mx[r1, c2], ¬ mx[r0, n] < mx[r1, c1], ∀ r. r ≠ r0 ∧ r < #r mx0 → count(mx[r]r, λ j. j < mx[r1, c1]) = 0 ∨ count(mx[r]r, λ j. ¬ j < mx[r1, c1]) = 0, ∀ i. #dirtyrows(mx, i) ≤ 1 ⊦
| #c mx = #c mx0, #r mx = #r mx0, count(mx[r2]r, λ j. j < mx[r1, c1]) = 0, r2 ≠ r0, mx[r1, c2] < mx[r0, n], mx[r2, c2] < mx[r0, n], n < #c mx0, mx[r1, c2] < mx[r2, c1], mx[r1, c2] < mx[r1, c1], mx[r2, c2] < mx[r2, c1], r1 < #r mx0, c2 < #c mx0, c1 < #c mx0, r2 < #r mx0, r1 < r2, mx[r2, c2] < mx[r1, c1], r1 + 1 < #r mx0, mx[r0, n0] < mx[r1, c1], n0 < #c mx0, mx[r0, n0] < mx[r0, n], mx[r0, n0] < mx[r2, c1], #dirtyrows(mx, mx[r1, c1]) ≤ 1, ¬ mx[r2, c1] < mx[r1, c1], ¬ mx[r2, c2] < mx[r1, c2], ¬ mx[r0, n] < mx[r1, c1], ∀ r. r ≠ r0 ∧ r < #r mx0 → count(mx[r]r, λ j. j < mx[r1, c1]) = 0 ∨ count(mx[r]r, λ j. ¬ j < mx[r1, c1]) = 0, ∀ i. #dirtyrows(mx, i) ≤ 1 ⊦ |
⊦ count(x, p) = 0 ↔ (∀ n. n < # x → ¬ p(x[n]))
#c mx = #c mx0, #r mx = #r mx0, r2 ≠ r0, mx[r0, n0] < mx[r2, c1], mx[r0, n0] < mx[r0, n], n0 < #c mx0, mx[r0, n0] < mx[r1, c1], r1 + 1 < #r mx0, mx[r2, c2] < mx[r1, c1], r1 < r2, r2 < #r mx0, c1 < #c mx0, c2 < #c mx0, r1 < #r mx0, mx[r2, c2] < mx[r2, c1], mx[r1, c2] < mx[r1, c1], mx[r1, c2] < mx[r2, c1], n < #c mx0, mx[r2, c2] < mx[r0, n], mx[r1, c2] < mx[r0, n], #dirtyrows(mx, mx[r1, c1]) ≤ 1, ¬ mx[r2, c1] < mx[r1, c1], ¬ mx[r2, c2] < mx[r1, c2], ¬ mx[r0, n] < mx[r1, c1], ∀ i. #dirtyrows(mx, i) ≤ 1, ∀ r. r ≠ r0 ∧ r < #r mx0 → count(mx[r]r, λ j. j < mx[r1, c1]) = 0 ∨ count(mx[r]r, λ j. ¬ j < mx[r1, c1]) = 0, ∀ n. n < # mx[r2]r → ¬ mx[r2]r[n] < mx[r1, c1] ⊦
Used terms: mx[r2]r, λ j. j < mx[r1, c1]
| ⊦ count(x, p) = 0 ↔ (∀ n. n < # x → ¬ p(x[n])) |
| #c mx = #c mx0, #r mx = #r mx0, r2 ≠ r0, mx[r0, n0] < mx[r2, c1], mx[r0, n0] < mx[r0, n], n0 < #c mx0, mx[r0, n0] < mx[r1, c1], r1 + 1 < #r mx0, mx[r2, c2] < mx[r1, c1], r1 < r2, r2 < #r mx0, c1 < #c mx0, c2 < #c mx0, r1 < #r mx0, mx[r2, c2] < mx[r2, c1], mx[r1, c2] < mx[r1, c1], mx[r1, c2] < mx[r2, c1], n < #c mx0, mx[r2, c2] < mx[r0, n], mx[r1, c2] < mx[r0, n], #dirtyrows(mx, mx[r1, c1]) ≤ 1, ¬ mx[r2, c1] < mx[r1, c1], ¬ mx[r2, c2] < mx[r1, c2], ¬ mx[r0, n] < mx[r1, c1], ∀ i. #dirtyrows(mx, i) ≤ 1, ∀ r. r ≠ r0 ∧ r < #r mx0 → count(mx[r]r, λ j. j < mx[r1, c1]) = 0 ∨ count(mx[r]r, λ j. ¬ j < mx[r1, c1]) = 0, ∀ n. n < # mx[r2]r → ¬ mx[r2]r[n] < mx[r1, c1] ⊦ |
#c mx = #c mx0, #r mx = #r mx0, r2 ≠ r0, mx[r1, c2] < mx[r0, n], mx[r2, c2] < mx[r0, n], n < #c mx0, mx[r1, c2] < mx[r2, c1], mx[r1, c2] < mx[r1, c1], mx[r2, c2] < mx[r2, c1], r1 < #r mx0, c2 < #c mx0, c1 < #c mx0, r2 < #r mx0, r1 < r2, mx[r2, c2] < mx[r1, c1], r1 + 1 < #r mx0, mx[r0, n0] < mx[r1, c1], n0 < #c mx0, mx[r0, n0] < mx[r0, n], mx[r0, n0] < mx[r2, c1], #dirtyrows(mx, mx[r1, c1]) ≤ 1, ¬ mx[r2, c1] < mx[r1, c1], ¬ mx[r2, c2] < mx[r1, c2], ¬ mx[r0, n] < mx[r1, c1], ∀ r. r ≠ r0 ∧ r < #r mx0 → count(mx[r]r, λ j. j < mx[r1, c1]) = 0 ∨ count(mx[r]r, λ j. ¬ j < mx[r1, c1]) = 0, ∀ i. #dirtyrows(mx, i) ≤ 1, ∀ n1. n1 < #c mx0 → ¬ mx[r2, n1] < mx[r1, c1] ⊦
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, r2 ≠ r0, mx[r1, c2] < mx[r0, n], mx[r2, c2] < mx[r0, n], n < #c mx0, mx[r1, c2] < mx[r2, c1], mx[r1, c2] < mx[r1, c1], mx[r2, c2] < mx[r2, c1], r1 < #r mx0, c2 < #c mx0, c1 < #c mx0, r2 < #r mx0, r1 < r2, mx[r2, c2] < mx[r1, c1], r1 + 1 < #r mx0, mx[r0, n0] < mx[r1, c1], n0 < #c mx0, mx[r0, n0] < mx[r0, n], mx[r0, n0] < mx[r2, c1], #dirtyrows(mx, mx[r1, c1]) ≤ 1, ¬ mx[r2, c1] < mx[r1, c1], ¬ mx[r2, c2] < mx[r1, c2], ¬ mx[r0, n] < mx[r1, c1], ∀ r. r ≠ r0 ∧ r < #r mx0 → count(mx[r]r, λ j. j < mx[r1, c1]) = 0 ∨ count(mx[r]r, λ j. ¬ j < mx[r1, c1]) = 0, ∀ i. #dirtyrows(mx, i) ≤ 1, ∀ n1. n1 < #c mx0 → ¬ mx[r2, n1] < mx[r1, c1] ⊦ |
Used terms: c2
| #c mx = #c mx0, #r mx = #r mx0, count(mx[r2]r, λ j. ¬ j < mx[r1, c1]) = 0, r2 ≠ r0, mx[r1, c2] < mx[r0, n], mx[r2, c2] < mx[r0, n], n < #c mx0, mx[r1, c2] < mx[r2, c1], mx[r1, c2] < mx[r1, c1], mx[r2, c2] < mx[r2, c1], r1 < #r mx0, c2 < #c mx0, c1 < #c mx0, r2 < #r mx0, r1 < r2, mx[r2, c2] < mx[r1, c1], r1 + 1 < #r mx0, mx[r0, n0] < mx[r1, c1], n0 < #c mx0, mx[r0, n0] < mx[r0, n], mx[r0, n0] < mx[r2, c1], #dirtyrows(mx, mx[r1, c1]) ≤ 1, ¬ mx[r2, c1] < mx[r1, c1], ¬ mx[r2, c2] < mx[r1, c2], ¬ mx[r0, n] < mx[r1, c1], ∀ r. r ≠ r0 ∧ r < #r mx0 → count(mx[r]r, λ j. j < mx[r1, c1]) = 0 ∨ count(mx[r]r, λ j. ¬ j < mx[r1, c1]) = 0, ∀ i. #dirtyrows(mx, i) ≤ 1 ⊦ |
⊦ count(x, p) = 0 ↔ (∀ n. n < # x → ¬ p(x[n]))
#c mx = #c mx0, #r mx = #r mx0, r2 ≠ r0, mx[r0, n0] < mx[r2, c1], mx[r0, n0] < mx[r0, n], n0 < #c mx0, mx[r0, n0] < mx[r1, c1], r1 + 1 < #r mx0, mx[r2, c2] < mx[r1, c1], r1 < r2, r2 < #r mx0, c1 < #c mx0, c2 < #c mx0, r1 < #r mx0, mx[r2, c2] < mx[r2, c1], mx[r1, c2] < mx[r1, c1], mx[r1, c2] < mx[r2, c1], n < #c mx0, mx[r2, c2] < mx[r0, n], mx[r1, c2] < mx[r0, n], #dirtyrows(mx, mx[r1, c1]) ≤ 1, ¬ mx[r2, c1] < mx[r1, c1], ¬ mx[r2, c2] < mx[r1, c2], ¬ mx[r0, n] < mx[r1, c1], ∀ i. #dirtyrows(mx, i) ≤ 1, ∀ r. r ≠ r0 ∧ r < #r mx0 → count(mx[r]r, λ j. j < mx[r1, c1]) = 0 ∨ count(mx[r]r, λ j. ¬ j < mx[r1, c1]) = 0, ∀ n. n < # mx[r2]r → ¬ ¬ mx[r2]r[n] < mx[r1, c1] ⊦
Used terms: mx[r2]r, λ j. ¬ j < mx[r1, c1]
| ⊦ count(x, p) = 0 ↔ (∀ n. n < # x → ¬ p(x[n])) |
| #c mx = #c mx0, #r mx = #r mx0, r2 ≠ r0, mx[r0, n0] < mx[r2, c1], mx[r0, n0] < mx[r0, n], n0 < #c mx0, mx[r0, n0] < mx[r1, c1], r1 + 1 < #r mx0, mx[r2, c2] < mx[r1, c1], r1 < r2, r2 < #r mx0, c1 < #c mx0, c2 < #c mx0, r1 < #r mx0, mx[r2, c2] < mx[r2, c1], mx[r1, c2] < mx[r1, c1], mx[r1, c2] < mx[r2, c1], n < #c mx0, mx[r2, c2] < mx[r0, n], mx[r1, c2] < mx[r0, n], #dirtyrows(mx, mx[r1, c1]) ≤ 1, ¬ mx[r2, c1] < mx[r1, c1], ¬ mx[r2, c2] < mx[r1, c2], ¬ mx[r0, n] < mx[r1, c1], ∀ i. #dirtyrows(mx, i) ≤ 1, ∀ r. r ≠ r0 ∧ r < #r mx0 → count(mx[r]r, λ j. j < mx[r1, c1]) = 0 ∨ count(mx[r]r, λ j. ¬ j < mx[r1, c1]) = 0, ∀ n. n < # mx[r2]r → ¬ ¬ mx[r2]r[n] < mx[r1, c1] ⊦ |
#c mx = #c mx0, #r mx = #r mx0, r2 ≠ r0, mx[r1, c2] < mx[r0, n], mx[r2, c2] < mx[r0, n], n < #c mx0, mx[r1, c2] < mx[r2, c1], mx[r1, c2] < mx[r1, c1], mx[r2, c2] < mx[r2, c1], r1 < #r mx0, c2 < #c mx0, c1 < #c mx0, r2 < #r mx0, r1 < r2, mx[r2, c2] < mx[r1, c1], r1 + 1 < #r mx0, mx[r0, n0] < mx[r1, c1], n0 < #c mx0, mx[r0, n0] < mx[r0, n], mx[r0, n0] < mx[r2, c1], #dirtyrows(mx, mx[r1, c1]) ≤ 1, ¬ mx[r2, c1] < mx[r1, c1], ¬ mx[r2, c2] < mx[r1, c2], ¬ mx[r0, n] < mx[r1, c1], ∀ r. r ≠ r0 ∧ r < #r mx0 → count(mx[r]r, λ j. j < mx[r1, c1]) = 0 ∨ count(mx[r]r, λ j. ¬ j < mx[r1, c1]) = 0, ∀ i. #dirtyrows(mx, i) ≤ 1, ∀ n1. n1 < #c mx0 → mx[r2, n1] < mx[r1, c1] ⊦
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, r2 ≠ r0, mx[r1, c2] < mx[r0, n], mx[r2, c2] < mx[r0, n], n < #c mx0, mx[r1, c2] < mx[r2, c1], mx[r1, c2] < mx[r1, c1], mx[r2, c2] < mx[r2, c1], r1 < #r mx0, c2 < #c mx0, c1 < #c mx0, r2 < #r mx0, r1 < r2, mx[r2, c2] < mx[r1, c1], r1 + 1 < #r mx0, mx[r0, n0] < mx[r1, c1], n0 < #c mx0, mx[r0, n0] < mx[r0, n], mx[r0, n0] < mx[r2, c1], #dirtyrows(mx, mx[r1, c1]) ≤ 1, ¬ mx[r2, c1] < mx[r1, c1], ¬ mx[r2, c2] < mx[r1, c2], ¬ mx[r0, n] < mx[r1, c1], ∀ r. r ≠ r0 ∧ r < #r mx0 → count(mx[r]r, λ j. j < mx[r1, c1]) = 0 ∨ count(mx[r]r, λ j. ¬ j < mx[r1, c1]) = 0, ∀ i. #dirtyrows(mx, i) ≤ 1, ∀ n1. n1 < #c mx0 → mx[r2, n1] < mx[r1, c1] ⊦ |
Used terms: c1
| #c mx = #c mx0, #r mx = #r mx0, r2 = r0, mx[r1, c2] < mx[r0, n], mx[r2, c2] < mx[r0, n], n < #c mx0, mx[r1, c2] < mx[r2, c1], mx[r1, c2] < mx[r1, c1], mx[r2, c2] < mx[r2, c1], r1 < #r mx0, c2 < #c mx0, c1 < #c mx0, r2 < #r mx0, r1 < r2, mx[r2, c2] < mx[r1, c1], r1 + 1 < #r mx0, mx[r0, n0] < mx[r1, c1], n0 < #c mx0, mx[r0, n0] < mx[r0, n], mx[r0, n0] < mx[r2, c1], #dirtyrows(mx, mx[r1, c1]) ≤ 1, ¬ mx[r2, c1] < mx[r1, c1], ¬ mx[r2, c2] < mx[r1, c2], ¬ mx[r0, n] < mx[r1, c1], r2 ≠ r0 → count(mx[r2]r, λ j. j < mx[r1, c1]) = 0 ∨ count(mx[r2]r, λ j. ¬ j < mx[r1, c1]) = 0, ∀ r. r ≠ r0 ∧ r < #r mx0 → count(mx[r]r, λ j. j < mx[r1, c1]) = 0 ∨ count(mx[r]r, λ j. ¬ j < mx[r1, c1]) = 0, ∀ i. #dirtyrows(mx, i) ≤ 1 ⊦ |
#c mx = #c mx0, #r mx = #r mx0, mx[r0, c2] < mx[r0, n], mx[r1, c2] < mx[r0, c1], mx[r0, c2] < mx[r0, c1], mx[r0, n0] < mx[r0, c1], mx[r1, c2] < mx[r0, n], n < #c mx0, mx[r1, c2] < mx[r1, c1], r1 < #r mx0, c2 < #c mx0, c1 < #c mx0, r0 < #r mx0, r1 < r0, mx[r0, c2] < mx[r1, c1], r1 + 1 < #r mx0, mx[r0, n0] < mx[r1, c1], n0 < #c mx0, mx[r0, n0] < mx[r0, n], #dirtyrows(mx, mx[r1, c1]) ≤ 1, ¬ mx[r0, n] < mx[r1, c1], ¬ mx[r0, c2] < mx[r1, c2], ¬ mx[r0, c1] < mx[r1, c1], ∀ r. r ≠ r0 ∧ r < #r mx0 → count(mx[r]r, λ j. j < mx[r1, c1]) = 0 ∨ count(mx[r]r, λ j. ¬ j < mx[r1, c1]) = 0, ∀ i. #dirtyrows(mx, i) ≤ 1 ⊦
Used simplifier rules: ⊦ m < n → n ≠ 0; (s) nll: ⊦ ¬ a < b ∧ c < b → c < a; (forward) from specification tord[Bubblesort-row-rev] nll: ⊦ ¬ b < a ∧ b < c → a < c; (forward) from specification tord f: ⊦ m < n → n ≠ 0; (forward) from specification nat-basic lf-01: ⊦ m < n ∧ n = n0 → m < n0; (forward) from specification nat-basic
| #c mx = #c mx0, #r mx = #r mx0, mx[r0, c2] < mx[r0, n], mx[r1, c2] < mx[r0, c1], mx[r0, c2] < mx[r0, c1], mx[r0, n0] < mx[r0, c1], mx[r1, c2] < mx[r0, n], n < #c mx0, mx[r1, c2] < mx[r1, c1], r1 < #r mx0, c2 < #c mx0, c1 < #c mx0, r0 < #r mx0, r1 < r0, mx[r0, c2] < mx[r1, c1], r1 + 1 < #r mx0, mx[r0, n0] < mx[r1, c1], n0 < #c mx0, mx[r0, n0] < mx[r0, n], #dirtyrows(mx, mx[r1, c1]) ≤ 1, ¬ mx[r0, n] < mx[r1, c1], ¬ mx[r0, c2] < mx[r1, c2], ¬ mx[r0, c1] < mx[r1, c1], ∀ r. r ≠ r0 ∧ r < #r mx0 → count(mx[r]r, λ j. j < mx[r1, c1]) = 0 ∨ count(mx[r]r, λ j. ¬ j < mx[r1, c1]) = 0, ∀ i. #dirtyrows(mx, i) ≤ 1 ⊦ |
#c mx = #c mx0, #r mx = #r mx0, mx[r0, n0] < mx[r0, n], n0 < #c mx0, mx[r0, n0] < mx[r1, c1], r1 + 1 < #r mx0, mx[r0, c2] < mx[r1, c1], r1 < r0, r0 < #r mx0, c1 < #c mx0, c2 < #c mx0, r1 < #r mx0, mx[r1, c2] < mx[r1, c1], n < #c mx0, mx[r1, c2] < mx[r0, n], mx[r0, n0] < mx[r0, c1], mx[r0, c2] < mx[r0, c1], mx[r1, c2] < mx[r0, c1], mx[r0, c2] < mx[r0, n], #dirtyrows(mx, mx[r1, c1]) ≤ 1, ¬ mx[r0, n] < mx[r1, c1], ¬ mx[r0, c2] < mx[r1, c2], ¬ mx[r0, c1] < mx[r1, c1], r1 ≠ r0 ∧ r1 < #r mx0 → count(mx[r1]r, λ j. j < mx[r1, c1]) = 0 ∨ count(mx[r1]r, λ j. ¬ j < mx[r1, c1]) = 0, ∀ i. #dirtyrows(mx, i) ≤ 1, ∀ r. r ≠ r0 ∧ r < #r mx0 → count(mx[r]r, λ j. j < mx[r1, c1]) = 0 ∨ count(mx[r]r, λ j. ¬ j < mx[r1, c1]) = 0 ⊦
Used terms: r1
| #c mx = #c mx0, #r mx = #r mx0, mx[r0, n0] < mx[r0, n], n0 < #c mx0, mx[r0, n0] < mx[r1, c1], r1 + 1 < #r mx0, mx[r0, c2] < mx[r1, c1], r1 < r0, r0 < #r mx0, c1 < #c mx0, c2 < #c mx0, r1 < #r mx0, mx[r1, c2] < mx[r1, c1], n < #c mx0, mx[r1, c2] < mx[r0, n], mx[r0, n0] < mx[r0, c1], mx[r0, c2] < mx[r0, c1], mx[r1, c2] < mx[r0, c1], mx[r0, c2] < mx[r0, n], #dirtyrows(mx, mx[r1, c1]) ≤ 1, ¬ mx[r0, n] < mx[r1, c1], ¬ mx[r0, c2] < mx[r1, c2], ¬ mx[r0, c1] < mx[r1, c1], r1 ≠ r0 ∧ r1 < #r mx0 → count(mx[r1]r, λ j. j < mx[r1, c1]) = 0 ∨ count(mx[r1]r, λ j. ¬ j < mx[r1, c1]) = 0, ∀ i. #dirtyrows(mx, i) ≤ 1, ∀ r. r ≠ r0 ∧ r < #r mx0 → count(mx[r]r, λ j. j < mx[r1, c1]) = 0 ∨ count(mx[r]r, λ j. ¬ j < mx[r1, c1]) = 0 ⊦ |
#c mx = #c mx0, #r mx = #r mx0, r1 ≠ r0, mx[r0, n0] < mx[r0, n], n0 < #c mx0, mx[r0, n0] < mx[r1, c1], r1 + 1 < #r mx0, mx[r0, c2] < mx[r1, c1], r1 < r0, r0 < #r mx0, c1 < #c mx0, c2 < #c mx0, r1 < #r mx0, mx[r1, c2] < mx[r1, c1], n < #c mx0, mx[r1, c2] < mx[r0, n], mx[r0, n0] < mx[r0, c1], mx[r0, c2] < mx[r0, c1], mx[r1, c2] < mx[r0, c1], mx[r0, c2] < mx[r0, n], #dirtyrows(mx, mx[r1, c1]) ≤ 1, ¬ mx[r0, c1] < mx[r1, c1], ¬ mx[r0, c2] < mx[r1, c2], ¬ mx[r0, n] < mx[r1, c1], ∀ i. #dirtyrows(mx, i) ≤ 1, ∀ r. r ≠ r0 ∧ r < #r mx0 → count(mx[r]r, λ j. j < mx[r1, c1]) = 0 ∨ count(mx[r]r, λ j. ¬ j < mx[r1, c1]) = 0, count(mx[r1]r, λ j. j < mx[r1, c1]) = 0 ∨ count(mx[r1]r, λ j. ¬ j < mx[r1, c1]) = 0 ⊦
Used simplifier rules: ⊦ ¬ n < n; (s)
| #c mx = #c mx0, #r mx = #r mx0, r1 ≠ r0, mx[r0, n0] < mx[r0, n], n0 < #c mx0, mx[r0, n0] < mx[r1, c1], r1 + 1 < #r mx0, mx[r0, c2] < mx[r1, c1], r1 < r0, r0 < #r mx0, c1 < #c mx0, c2 < #c mx0, r1 < #r mx0, mx[r1, c2] < mx[r1, c1], n < #c mx0, mx[r1, c2] < mx[r0, n], mx[r0, n0] < mx[r0, c1], mx[r0, c2] < mx[r0, c1], mx[r1, c2] < mx[r0, c1], mx[r0, c2] < mx[r0, n], #dirtyrows(mx, mx[r1, c1]) ≤ 1, ¬ mx[r0, c1] < mx[r1, c1], ¬ mx[r0, c2] < mx[r1, c2], ¬ mx[r0, n] < mx[r1, c1], ∀ i. #dirtyrows(mx, i) ≤ 1, ∀ r. r ≠ r0 ∧ r < #r mx0 → count(mx[r]r, λ j. j < mx[r1, c1]) = 0 ∨ count(mx[r]r, λ j. ¬ j < mx[r1, c1]) = 0, count(mx[r1]r, λ j. j < mx[r1, c1]) = 0 ∨ count(mx[r1]r, λ j. ¬ j < mx[r1, c1]) = 0 ⊦ |
⊦ count(x, p) = 0 ↔ (∀ n. n < # x → ¬ p(x[n]))
#c mx = #c mx0, #r mx = #r mx0, r1 ≠ r0, mx[r0, c2] < mx[r0, n], mx[r1, c2] < mx[r0, c1], mx[r0, c2] < mx[r0, c1], mx[r0, n0] < mx[r0, c1], mx[r1, c2] < mx[r0, n], n < #c mx0, mx[r1, c2] < mx[r1, c1], r1 < #r mx0, c2 < #c mx0, c1 < #c mx0, r0 < #r mx0, r1 < r0, mx[r0, c2] < mx[r1, c1], r1 + 1 < #r mx0, mx[r0, n0] < mx[r1, c1], n0 < #c mx0, mx[r0, n0] < mx[r0, n], #dirtyrows(mx, mx[r1, c1]) ≤ 1, ¬ mx[r0, c1] < mx[r1, c1], ¬ mx[r0, c2] < mx[r1, c2], ¬ mx[r0, n] < mx[r1, c1], ∀ r. r ≠ r0 ∧ r < #r mx0 → count(mx[r]r, λ j. j < mx[r1, c1]) = 0 ∨ count(mx[r]r, λ j. ¬ j < mx[r1, c1]) = 0, ∀ i. #dirtyrows(mx, i) ≤ 1, (∀ n. n < # mx[r1]r → ¬ mx[r1]r[n] < mx[r1, c1]) ∨ count(mx[r1]r, λ j. ¬ j < mx[r1, c1]) = 0 ⊦
Used terms: mx[r1]r, λ j. j < mx[r1, c1]
| ⊦ count(x, p) = 0 ↔ (∀ n. n < # x → ¬ p(x[n])) |
| #c mx = #c mx0, #r mx = #r mx0, r1 ≠ r0, mx[r0, c2] < mx[r0, n], mx[r1, c2] < mx[r0, c1], mx[r0, c2] < mx[r0, c1], mx[r0, n0] < mx[r0, c1], mx[r1, c2] < mx[r0, n], n < #c mx0, mx[r1, c2] < mx[r1, c1], r1 < #r mx0, c2 < #c mx0, c1 < #c mx0, r0 < #r mx0, r1 < r0, mx[r0, c2] < mx[r1, c1], r1 + 1 < #r mx0, mx[r0, n0] < mx[r1, c1], n0 < #c mx0, mx[r0, n0] < mx[r0, n], #dirtyrows(mx, mx[r1, c1]) ≤ 1, ¬ mx[r0, c1] < mx[r1, c1], ¬ mx[r0, c2] < mx[r1, c2], ¬ mx[r0, n] < mx[r1, c1], ∀ r. r ≠ r0 ∧ r < #r mx0 → count(mx[r]r, λ j. j < mx[r1, c1]) = 0 ∨ count(mx[r]r, λ j. ¬ j < mx[r1, c1]) = 0, ∀ i. #dirtyrows(mx, i) ≤ 1, (∀ n. n < # mx[r1]r → ¬ mx[r1]r[n] < mx[r1, c1]) ∨ count(mx[r1]r, λ j. ¬ j < mx[r1, c1]) = 0 ⊦ |
⊦ count(x, p) = 0 ↔ (∀ n. n < # x → ¬ p(x[n]))
#c mx = #c mx0, #r mx = #r mx0, r1 ≠ r0, mx[r0, n0] < mx[r0, n], n0 < #c mx0, mx[r0, n0] < mx[r1, c1], r1 + 1 < #r mx0, mx[r0, c2] < mx[r1, c1], r1 < r0, r0 < #r mx0, c1 < #c mx0, c2 < #c mx0, r1 < #r mx0, mx[r1, c2] < mx[r1, c1], n < #c mx0, mx[r1, c2] < mx[r0, n], mx[r0, n0] < mx[r0, c1], mx[r0, c2] < mx[r0, c1], mx[r1, c2] < mx[r0, c1], mx[r0, c2] < mx[r0, n], #dirtyrows(mx, mx[r1, c1]) ≤ 1, ¬ mx[r0, c1] < mx[r1, c1], ¬ mx[r0, c2] < mx[r1, c2], ¬ mx[r0, n] < mx[r1, c1], ∀ i. #dirtyrows(mx, i) ≤ 1, ∀ r. r ≠ r0 ∧ r < #r mx0 → count(mx[r]r, λ j. j < mx[r1, c1]) = 0 ∨ count(mx[r]r, λ j. ¬ j < mx[r1, c1]) = 0, (∀ n. n < # mx[r1]r → ¬ mx[r1]r[n] < mx[r1, c1]) ∨ (∀ n. n < # mx[r1]r → ¬ ¬ mx[r1]r[n] < mx[r1, c1]) ⊦
Used terms: mx[r1]r, λ j. ¬ j < mx[r1, c1]
| ⊦ count(x, p) = 0 ↔ (∀ n. n < # x → ¬ p(x[n])) |
| #c mx = #c mx0, #r mx = #r mx0, r1 ≠ r0, mx[r0, n0] < mx[r0, n], n0 < #c mx0, mx[r0, n0] < mx[r1, c1], r1 + 1 < #r mx0, mx[r0, c2] < mx[r1, c1], r1 < r0, r0 < #r mx0, c1 < #c mx0, c2 < #c mx0, r1 < #r mx0, mx[r1, c2] < mx[r1, c1], n < #c mx0, mx[r1, c2] < mx[r0, n], mx[r0, n0] < mx[r0, c1], mx[r0, c2] < mx[r0, c1], mx[r1, c2] < mx[r0, c1], mx[r0, c2] < mx[r0, n], #dirtyrows(mx, mx[r1, c1]) ≤ 1, ¬ mx[r0, c1] < mx[r1, c1], ¬ mx[r0, c2] < mx[r1, c2], ¬ mx[r0, n] < mx[r1, c1], ∀ i. #dirtyrows(mx, i) ≤ 1, ∀ r. r ≠ r0 ∧ r < #r mx0 → count(mx[r]r, λ j. j < mx[r1, c1]) = 0 ∨ count(mx[r]r, λ j. ¬ j < mx[r1, c1]) = 0, (∀ n. n < # mx[r1]r → ¬ mx[r1]r[n] < mx[r1, c1]) ∨ (∀ n. n < # mx[r1]r → ¬ ¬ mx[r1]r[n] < mx[r1, c1]) ⊦ |
#c mx = #c mx0, #r mx = #r mx0, r1 ≠ r0, mx[r0, c2] < mx[r0, n], mx[r1, c2] < mx[r0, c1], mx[r0, c2] < mx[r0, c1], mx[r0, n0] < mx[r0, c1], mx[r1, c2] < mx[r0, n], n < #c mx0, mx[r1, c2] < mx[r1, c1], r1 < #r mx0, c2 < #c mx0, c1 < #c mx0, r0 < #r mx0, r1 < r0, mx[r0, c2] < mx[r1, c1], r1 + 1 < #r mx0, mx[r0, n0] < mx[r1, c1], n0 < #c mx0, mx[r0, n0] < mx[r0, n], #dirtyrows(mx, mx[r1, c1]) ≤ 1, ¬ mx[r0, c1] < mx[r1, c1], ¬ mx[r0, c2] < mx[r1, c2], ¬ mx[r0, n] < mx[r1, c1], ∀ r. r ≠ r0 ∧ r < #r mx0 → count(mx[r]r, λ j. j < mx[r1, c1]) = 0 ∨ count(mx[r]r, λ j. ¬ j < mx[r1, c1]) = 0, ∀ i. #dirtyrows(mx, i) ≤ 1, ∀ n. n < # mx[r1]r → ¬ mx[r1]r[n] < mx[r1, c1] ⊦
#c mx = #c mx0, #r mx = #r mx0, r1 ≠ r0, mx[r0, c2] < mx[r0, n], mx[r1, c2] < mx[r0, c1], mx[r0, c2] < mx[r0, c1], mx[r0, n0] < mx[r0, c1], mx[r1, c2] < mx[r0, n], n < #c mx0, mx[r1, c2] < mx[r1, c1], r1 < #r mx0, c2 < #c mx0, c1 < #c mx0, r0 < #r mx0, r1 < r0, mx[r0, c2] < mx[r1, c1], r1 + 1 < #r mx0, mx[r0, n0] < mx[r1, c1], n0 < #c mx0, mx[r0, n0] < mx[r0, n], #dirtyrows(mx, mx[r1, c1]) ≤ 1, ¬ mx[r0, c1] < mx[r1, c1], ¬ mx[r0, c2] < mx[r1, c2], ¬ mx[r0, n] < mx[r1, c1], ∀ r. r ≠ r0 ∧ r < #r mx0 → count(mx[r]r, λ j. j < mx[r1, c1]) = 0 ∨ count(mx[r]r, λ j. ¬ j < mx[r1, c1]) = 0, ∀ i. #dirtyrows(mx, i) ≤ 1, ∀ n. n < # mx[r1]r → ¬ ¬ mx[r1]r[n] < mx[r1, c1] ⊦
| #c mx = #c mx0, #r mx = #r mx0, r1 ≠ r0, mx[r0, c2] < mx[r0, n], mx[r1, c2] < mx[r0, c1], mx[r0, c2] < mx[r0, c1], mx[r0, n0] < mx[r0, c1], mx[r1, c2] < mx[r0, n], n < #c mx0, mx[r1, c2] < mx[r1, c1], r1 < #r mx0, c2 < #c mx0, c1 < #c mx0, r0 < #r mx0, r1 < r0, mx[r0, c2] < mx[r1, c1], r1 + 1 < #r mx0, mx[r0, n0] < mx[r1, c1], n0 < #c mx0, mx[r0, n0] < mx[r0, n], #dirtyrows(mx, mx[r1, c1]) ≤ 1, ¬ mx[r0, c1] < mx[r1, c1], ¬ mx[r0, c2] < mx[r1, c2], ¬ mx[r0, n] < mx[r1, c1], ∀ r. r ≠ r0 ∧ r < #r mx0 → count(mx[r]r, λ j. j < mx[r1, c1]) = 0 ∨ count(mx[r]r, λ j. ¬ j < mx[r1, c1]) = 0, ∀ i. #dirtyrows(mx, i) ≤ 1, ∀ n. n < # mx[r1]r → ¬ mx[r1]r[n] < mx[r1, c1] ⊦ |
Used simplifier rules: ⊦ # mx[r]r = #c mx; (s) ⊦ mx[r]r[c] = mx[r, c]; (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 ⊦ ¬ n < n; (s) Used terms: c2
| #c mx = #c mx0, #r mx = #r mx0, r1 ≠ r0, mx[r0, c2] < mx[r0, n], mx[r1, c2] < mx[r0, c1], mx[r0, c2] < mx[r0, c1], mx[r0, n0] < mx[r0, c1], mx[r1, c2] < mx[r0, n], n < #c mx0, mx[r1, c2] < mx[r1, c1], r1 < #r mx0, c2 < #c mx0, c1 < #c mx0, r0 < #r mx0, r1 < r0, mx[r0, c2] < mx[r1, c1], r1 + 1 < #r mx0, mx[r0, n0] < mx[r1, c1], n0 < #c mx0, mx[r0, n0] < mx[r0, n], #dirtyrows(mx, mx[r1, c1]) ≤ 1, ¬ mx[r0, c1] < mx[r1, c1], ¬ mx[r0, c2] < mx[r1, c2], ¬ mx[r0, n] < mx[r1, c1], ∀ r. r ≠ r0 ∧ r < #r mx0 → count(mx[r]r, λ j. j < mx[r1, c1]) = 0 ∨ count(mx[r]r, λ j. ¬ j < mx[r1, c1]) = 0, ∀ i. #dirtyrows(mx, i) ≤ 1, ∀ n. n < # mx[r1]r → ¬ ¬ mx[r1]r[n] < mx[r1, c1] ⊦ |
#c mx = #c mx0, #r mx = #r mx0, r1 ≠ r0, mx[r0, n0] < mx[r0, n], n0 < #c mx0, mx[r0, n0] < mx[r1, c1], r1 + 1 < #r mx0, mx[r0, c2] < mx[r1, c1], r1 < r0, r0 < #r mx0, c1 < #c mx0, c2 < #c mx0, r1 < #r mx0, mx[r1, c2] < mx[r1, c1], n < #c mx0, mx[r1, c2] < mx[r0, n], mx[r0, n0] < mx[r0, c1], mx[r0, c2] < mx[r0, c1], mx[r1, c2] < mx[r0, c1], mx[r0, c2] < mx[r0, n], #dirtyrows(mx, mx[r1, c1]) ≤ 1, ¬ mx[r0, c1] < mx[r1, c1], ¬ mx[r0, c2] < mx[r1, c2], ¬ mx[r0, n] < mx[r1, c1], ∀ i. #dirtyrows(mx, i) ≤ 1, ∀ r. r ≠ r0 ∧ r < #r mx0 → count(mx[r]r, λ j. j < mx[r1, c1]) = 0 ∨ count(mx[r]r, λ j. ¬ j < mx[r1, c1]) = 0, ∀ n1. n1 < #c mx0 → mx[r1, n1] < mx[r1, c1] ⊦
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, r1 ≠ r0, mx[r0, n0] < mx[r0, n], n0 < #c mx0, mx[r0, n0] < mx[r1, c1], r1 + 1 < #r mx0, mx[r0, c2] < mx[r1, c1], r1 < r0, r0 < #r mx0, c1 < #c mx0, c2 < #c mx0, r1 < #r mx0, mx[r1, c2] < mx[r1, c1], n < #c mx0, mx[r1, c2] < mx[r0, n], mx[r0, n0] < mx[r0, c1], mx[r0, c2] < mx[r0, c1], mx[r1, c2] < mx[r0, c1], mx[r0, c2] < mx[r0, n], #dirtyrows(mx, mx[r1, c1]) ≤ 1, ¬ mx[r0, c1] < mx[r1, c1], ¬ mx[r0, c2] < mx[r1, c2], ¬ mx[r0, n] < mx[r1, c1], ∀ i. #dirtyrows(mx, i) ≤ 1, ∀ r. r ≠ r0 ∧ r < #r mx0 → count(mx[r]r, λ j. j < mx[r1, c1]) = 0 ∨ count(mx[r]r, λ j. ¬ j < mx[r1, c1]) = 0, ∀ n1. n1 < #c mx0 → mx[r1, n1] < mx[r1, c1] ⊦ |
Used simplifier rules: ⊦ ¬ a < a; (s) Used terms: c1
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.