| ⊦ encode(m.1, m.2) = m |
encode(m.1, m.2) ≠ m ⊦
| encode(m.1, m.2) ≠ m ⊦ |
⊦ m.1 = maxenc(m) - m.2
encode(maxenc(m) - m.2, m.2) ≠ m ⊦
Used terms: m
| ⊦ m.1 = maxenc(m) - m.2 |
| encode(maxenc(m) - m.2, m.2) ≠ m ⊦ |
⊦ m.2 = m - (maxenc(m) * (maxenc(m) + 1)) / 2
encode(maxenc(m) - (m - (maxenc(m) * (maxenc(m) + 1)) / 2), m - (maxenc(m) * (maxenc(m) + 1)) / 2) ≠ m ⊦
Used terms: m
| ⊦ m.2 = m - (maxenc(m) * (maxenc(m) + 1)) / 2 |
| encode(maxenc(m) - (m - (maxenc(m) * (maxenc(m) + 1)) / 2), m - (maxenc(m) * (maxenc(m) + 1)) / 2) ≠ m ⊦ |
⊦ encode(m, n) = ((m + n) * (m + n + 1)) / 2 + n
( ((maxenc(m) - (m - (maxenc(m) * (maxenc(m) + 1)) / 2)) + (m - (maxenc(m) * (maxenc(m) + 1)) / 2)) * ((maxenc(m) - (m - (maxenc(m) * (maxenc(m) + 1)) / 2)) + (m - (maxenc(m) * (maxenc(m) + 1)) / 2) + 1)) / 2 + (m - (maxenc(m) * (maxenc(m) + 1)) / 2) ≠ m ⊦
Used terms: m - (maxenc(m) * (maxenc(m) + 1)) / 2, maxenc(m) - (m - (maxenc(m) * (maxenc(m) + 1)) / 2)
| ⊦ encode(m, n) = ((m + n) * (m + n + 1)) / 2 + n |
| ( ((maxenc(m) - (m - (maxenc(m) * (maxenc(m) + 1)) / 2)) + (m - (maxenc(m) * (maxenc(m) + 1)) / 2)) * ((maxenc(m) - (m - (maxenc(m) * (maxenc(m) + 1)) / 2)) + (m - (maxenc(m) * (maxenc(m) + 1)) / 2) + 1)) / 2 + (m - (maxenc(m) * (maxenc(m) + 1)) / 2) ≠ m ⊦ |
⊦ m % n = 0 ∧ n ≠ 0 → (∃ n0. m = n * n0)
( ((maxenc(m) - (m - (maxenc(m) * (maxenc(m) + 1)) / 2)) + (m - (maxenc(m) * (maxenc(m) + 1)) / 2)) * ((maxenc(m) - (m - (maxenc(m) * (maxenc(m) + 1)) / 2)) + (m - (maxenc(m) * (maxenc(m) + 1)) / 2) + 1)) / 2 + (m - (maxenc(m) * (maxenc(m) + 1)) / 2) ≠ m, (maxenc(m) * (maxenc(m) + 1)) % 2 = 0 ∧ 2 ≠ 0 → (∃ n0. maxenc(m) * (maxenc(m) + 1) = 2 * n0) ⊦
Used terms: maxenc(m) * (maxenc(m) + 1), 2
| ⊦ m % n = 0 ∧ n ≠ 0 → (∃ n0. m = n * n0) |
| ( ((maxenc(m) - (m - (maxenc(m) * (maxenc(m) + 1)) / 2)) + (m - (maxenc(m) * (maxenc(m) + 1)) / 2)) * ((maxenc(m) - (m - (maxenc(m) * (maxenc(m) + 1)) / 2)) + (m - (maxenc(m) * (maxenc(m) + 1)) / 2) + 1)) / 2 + (m - (maxenc(m) * (maxenc(m) + 1)) / 2) ≠ m, (maxenc(m) * (maxenc(m) + 1)) % 2 = 0 ∧ 2 ≠ 0 → (∃ n0. maxenc(m) * (maxenc(m) + 1) = 2 * n0) ⊦ |
( ((maxenc(m) - (m - (maxenc(m) * (maxenc(m) + 1)) / 2)) + (m - (maxenc(m) * (maxenc(m) + 1)) / 2)) * ((maxenc(m) - (m - (maxenc(m) * (maxenc(m) + 1)) / 2)) + (m - (maxenc(m) * (maxenc(m) + 1)) / 2) + 1)) / 2 + (m - (maxenc(m) * (maxenc(m) + 1)) / 2) ≠ m, ∃ n0. maxenc(m) * (maxenc(m) + 1) = 2 * n0 ⊦
Used simplifier rules: max-nls: ⊦ ¬ m < (maxenc(m) * maxenc(m) + maxenc(m)) / 2; ⊦ m ≤ n ↔ ¬ n < m; (ss) n ≤ m ⊦ (m - n) + n0 = n1 ↔ m + n0 = n + n1; (s) ⊦ m + n = m + n0 ↔ n = n0; (s) ⊦ m * (n + 1) = m * n + m; (s) ⊦ (m * m + m) % 2 = 0; (s) mult-a: ⊦ m0 * m * n = (m0 * m) * n; from specification nat-mult mult-c: ⊦ m * n = n * m; from specification nat-mult a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic c: ⊦ m + n = n + m; from specification nat-basic
| ( ((maxenc(m) - (m - (maxenc(m) * (maxenc(m) + 1)) / 2)) + (m - (maxenc(m) * (maxenc(m) + 1)) / 2)) * ((maxenc(m) - (m - (maxenc(m) * (maxenc(m) + 1)) / 2)) + (m - (maxenc(m) * (maxenc(m) + 1)) / 2) + 1)) / 2 + (m - (maxenc(m) * (maxenc(m) + 1)) / 2) ≠ m, ∃ n0. maxenc(m) * (maxenc(m) + 1) = 2 * n0 ⊦ |
maxenc(m) * (maxenc(m) + 1) = 2 * n0, ( ((maxenc(m) - (m - (maxenc(m) * (maxenc(m) + 1)) / 2)) + (m - (maxenc(m) * (maxenc(m) + 1)) / 2)) * ((maxenc(m) - (m - (maxenc(m) * (maxenc(m) + 1)) / 2)) + (m - (maxenc(m) * (maxenc(m) + 1)) / 2) + 1)) / 2 + (m - (maxenc(m) * (maxenc(m) + 1)) / 2) ≠ m ⊦
| maxenc(m) * (maxenc(m) + 1) = 2 * n0, ( ((maxenc(m) - (m - (maxenc(m) * (maxenc(m) + 1)) / 2)) + (m - (maxenc(m) * (maxenc(m) + 1)) / 2)) * ((maxenc(m) - (m - (maxenc(m) * (maxenc(m) + 1)) / 2)) + (m - (maxenc(m) * (maxenc(m) + 1)) / 2) + 1)) / 2 + (m - (maxenc(m) * (maxenc(m) + 1)) / 2) ≠ m ⊦ |
maxenc(m) * (maxenc(m) + 1) = 2 * n0, (((maxenc(m) - (m - (2 * n0) / 2)) + (m - (2 * n0) / 2)) * ((maxenc(m) - (m - (2 * n0) / 2)) + (m - (2 * n0) / 2) + 1)) / 2 + (m - (2 * n0) / 2) ≠ m ⊦
| maxenc(m) * (maxenc(m) + 1) = 2 * n0, (((maxenc(m) - (m - (2 * n0) / 2)) + (m - (2 * n0) / 2)) * ((maxenc(m) - (m - (2 * n0) / 2)) + (m - (2 * n0) / 2) + 1)) / 2 + (m - (2 * n0) / 2) ≠ m ⊦ |
⊦ (2 * m) / 2 = m
maxenc(m) * (maxenc(m) + 1) = 2 * n0, (((maxenc(m) - (m - n0)) + (m - n0)) * ((maxenc(m) - (m - n0)) + (m - n0) + 1)) / 2 + (m - n0) ≠ m ⊦
Used terms: n0
| maxenc(m) * (maxenc(m) + 1) = 2 * n0, (((maxenc(m) - (m - n0)) + (m - n0)) * ((maxenc(m) - (m - n0)) + (m - n0) + 1)) / 2 + (m - n0) ≠ m ⊦ |
n ≤ m ⊦ (m - n) + n = m
maxenc(m) * (maxenc(m) + 1) = 2 * n0, (((maxenc(m) - (m - n0)) + (m - n0)) * ((maxenc(m) - (m - n0)) + (m - n0) + 1)) / 2 + (m - n0) ≠ m, ¬ m - n0 ≤ maxenc(m) ⊦
maxenc(m) * (maxenc(m) + 1) = 2 * n0, (maxenc(m) * ((maxenc(m) - (m - n0)) + (m - n0) + 1)) / 2 + (m - n0) ≠ m, m - n0 ≤ maxenc(m) ⊦
Used terms: m - n0, maxenc(m)
| n ≤ m ⊦ (m - n) + n = m |
| maxenc(m) * (maxenc(m) + 1) = 2 * n0, (((maxenc(m) - (m - n0)) + (m - n0)) * ((maxenc(m) - (m - n0)) + (m - n0) + 1)) / 2 + (m - n0) ≠ m, ¬ m - n0 ≤ maxenc(m) ⊦ |
maxenc(m) * (maxenc(m) + 1) = 2 * n0, (((maxenc(m) - (m - n0)) + (m - n0)) * ((maxenc(m) - (m - n0)) + (m - n0) + 1)) / 2 + (m - n0) ≠ m, m < n0, ¬ m - n0 ≤ maxenc(m) ⊦
maxenc(m) * (maxenc(m) + 1) = 2 * n0, (((maxenc(m) - (m - n0)) + (m - n0)) * ((maxenc(m) - (m - n0)) + (m - n0) + 1)) / 2 + (m - n0) ≠ m, ¬ m < n0, ¬ m - n0 ≤ maxenc(m) ⊦
Used formulas: m < n0
| maxenc(m) * (maxenc(m) + 1) = 2 * n0, (((maxenc(m) - (m - n0)) + (m - n0)) * ((maxenc(m) - (m - n0)) + (m - n0) + 1)) / 2 + (m - n0) ≠ m, m < n0, ¬ m - n0 ≤ maxenc(m) ⊦ |
⊦ maxenc(m) * (maxenc(m) + 1) ≤ 2 * m ∧ 2 * m < (maxenc(m) + 1) * (maxenc(m) + 2)
Used simplifier rules: ⊦ m * (n + 1) = m * n + m; (s) ⊦ m ≤ n ↔ ¬ n < m; (ss) fle-01: ⊦ m ≤ n ∧ n < n0 → m < n0; (forward) from specification nat f: ⊦ m < n → n ≠ 0; (forward) from specification nat-basic n < n0 ⊦ (* n) ≠ m0 + (* n0); (s) a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic c: ⊦ m + n = n + m; from specification nat-basic ⊦ m < n → n ≠ 0; (s) 0 ≠ m ⊦ (* m) * n ≤ m * n0 ↔ n ≤ n0; (s) ⊦ m < n → (n ≤ m ↔ false); (s) mult-a: ⊦ m0 * m * n = (m0 * m) * n; from specification nat-mult mult-c: ⊦ m * n = n * m; from specification nat-mult Used terms: m
| ⊦ maxenc(m) * (maxenc(m) + 1) ≤ 2 * m ∧ 2 * m < (maxenc(m) + 1) * (maxenc(m) + 2) |
| maxenc(m) * (maxenc(m) + 1) = 2 * n0, (((maxenc(m) - (m - n0)) + (m - n0)) * ((maxenc(m) - (m - n0)) + (m - n0) + 1)) / 2 + (m - n0) ≠ m, ¬ m < n0, ¬ m - n0 ≤ maxenc(m) ⊦ |
⊦ maxenc(m) * (maxenc(m) + 1) ≤ 2 * m ∧ 2 * m < (maxenc(m) + 1) * (maxenc(m) + 2)
maxenc(m) * (maxenc(m) + 1) = 2 * n0, (((maxenc(m) - (m - n0)) + (m - n0)) * ((maxenc(m) - (m - n0)) + (m - n0) + 1)) / 2 + (m - n0) ≠ m, 2 * m < (maxenc(m) + 1) * (maxenc(m) + 2), maxenc(m) * (maxenc(m) + 1) ≤ 2 * m, ¬ m < n0, ¬ m - n0 ≤ maxenc(m) ⊦
Used terms: m
| ⊦ maxenc(m) * (maxenc(m) + 1) ≤ 2 * m ∧ 2 * m < (maxenc(m) + 1) * (maxenc(m) + 2) |
| maxenc(m) * (maxenc(m) + 1) = 2 * n0, (((maxenc(m) - (m - n0)) + (m - n0)) * ((maxenc(m) - (m - n0)) + (m - n0) + 1)) / 2 + (m - n0) ≠ m, 2 * m < (maxenc(m) + 1) * (maxenc(m) + 2), maxenc(m) * (maxenc(m) + 1) ≤ 2 * m, ¬ m < n0, ¬ m - n0 ≤ maxenc(m) ⊦ |
⊦ (maxenc(m) * (maxenc(m) + 1)) / 2 ≤ m ∧ m < ((maxenc(m) + 1) * (maxenc(m) + 2)) / 2
maxenc(m) * (maxenc(m) + 1) = 2 * n0, (((maxenc(m) - (m - n0)) + (m - n0)) * ((maxenc(m) - (m - n0)) + (m - n0) + 1)) / 2 + (m - n0) ≠ m, 2 * m < (maxenc(m) + 1) * (maxenc(m) + 2), m < ((maxenc(m) + 1) * (maxenc(m) + 2)) / 2, maxenc(m) * (maxenc(m) + 1) ≤ 2 * m, (maxenc(m) * (maxenc(m) + 1)) / 2 ≤ m, ¬ m < n0, ¬ m - n0 ≤ maxenc(m) ⊦
Used terms: m
| ⊦ (maxenc(m) * (maxenc(m) + 1)) / 2 ≤ m ∧ m < ((maxenc(m) + 1) * (maxenc(m) + 2)) / 2 |
| maxenc(m) * (maxenc(m) + 1) = 2 * n0, (((maxenc(m) - (m - n0)) + (m - n0)) * ((maxenc(m) - (m - n0)) + (m - n0) + 1)) / 2 + (m - n0) ≠ m, 2 * m < (maxenc(m) + 1) * (maxenc(m) + 2), m < ((maxenc(m) + 1) * (maxenc(m) + 2)) / 2, maxenc(m) * (maxenc(m) + 1) ≤ 2 * m, (maxenc(m) * (maxenc(m) + 1)) / 2 ≤ m, ¬ m < n0, ¬ m - n0 ≤ maxenc(m) ⊦ |
n0 ≤ n ⊦ n - n0 ≤ m ↔ n ≤ m + n0
maxenc(m) * (maxenc(m) + 1) = 2 * n0, (((maxenc(m) - (m - n0)) + (m - n0)) * ((maxenc(m) - (m - n0)) + (m - n0) + 1)) / 2 + (m - n0) ≠ m, m < ((maxenc(m) + 1) * (maxenc(m) + 2)) / 2, 2 * m < (maxenc(m) + 1) * (maxenc(m) + 2), (maxenc(m) * (maxenc(m) + 1)) / 2 ≤ m, maxenc(m) * (maxenc(m) + 1) ≤ 2 * m, n0 ≤ m, ¬ m < n0, ¬ m ≤ maxenc(m) + n0 ⊦
Used simplifier rules: ⊦ m * (n + 1) = m * n + m; (s) mult-a: ⊦ m0 * m * n = (m0 * m) * n; from specification nat-mult mult-c: ⊦ m * n = n * m; from specification nat-mult ⊦ (m + 2) / 2 = m / 2 + 1; (s) ⊦ m < n + 1 ↔ ¬ n < m; (s) a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic c: ⊦ m + n = n + m; from specification nat-basic ⊦ m ≤ n ↔ ¬ n < m; (ss) Used terms: maxenc(m), n0, m
| n0 ≤ n ⊦ n - n0 ≤ m ↔ n ≤ m + n0 |
| maxenc(m) * (maxenc(m) + 1) = 2 * n0, (((maxenc(m) - (m - n0)) + (m - n0)) * ((maxenc(m) - (m - n0)) + (m - n0) + 1)) / 2 + (m - n0) ≠ m, m < ((maxenc(m) + 1) * (maxenc(m) + 2)) / 2, 2 * m < (maxenc(m) + 1) * (maxenc(m) + 2), (maxenc(m) * (maxenc(m) + 1)) / 2 ≤ m, maxenc(m) * (maxenc(m) + 1) ≤ 2 * m, n0 ≤ m, ¬ m < n0, ¬ m ≤ maxenc(m) + n0 ⊦ |
maxenc(m) * maxenc(m) + maxenc(m) = 2 * n0, (((maxenc(m) - (m - n0)) + (m - n0)) * ((maxenc(m) - (m - n0)) + (m - n0)) + (maxenc(m) - (m - n0)) + (m - n0)) / 2 + (m - n0) ≠ m, 2 * n0 < (maxenc(m) + 2) * maxenc(m) + maxenc(m) + 2, maxenc(m) + n0 < m, 2 * m < (maxenc(m) + 2) * maxenc(m) + maxenc(m) + 2, 2 * n0 ≤ (maxenc(m) + 2) * maxenc(m) + maxenc(m), m * 2 ≤ (maxenc(m) + 2) * maxenc(m) + maxenc(m), n0 ≤ m ⊦
Used simplifier rules: mult-c: ⊦ m * n = n * m; from specification nat-mult mult-a: ⊦ m0 * m * n = (m0 * m) * n; from specification nat-mult 0 ≠ m ⊦ (* m) * n ≤ m * n0 ↔ n ≤ n0; (s) ⊦ (2 * m) / 2 = m; (s) c: ⊦ m + n = n + m; from specification nat-basic a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic n < n0 ⊦ (* n) ≠ m0 + (* n0); (s) ⊦ m < n → n ≠ 0; (s) let: ⊦ n ≤ n0 ∧ n0 ≤ n1 → n ≤ n1; (forward) from specification nat fle-01: ⊦ m ≤ n ∧ n < n0 → m < n0; (forward) from specification nat f: ⊦ m < n → n ≠ 0; (forward) from specification nat-basic m0 ≠ 0 ⊦ n ≤ m / m0 ↔ n * m0 ≤ m; (s) ⊦ m < n ↔ ¬ n ≤ m; (ss) ⊦ m ≤ n ↔ ¬ n < m; (ss) ⊦ m ≤ n → (n < m ↔ false); (s) ⊦ m < n + 1 ↔ ¬ n < m; (s) ⊦ (m + 2) / 2 = m / 2 + 1; (s) ⊦ m * (n + 1) = m * n + m; (s)
| maxenc(m) * maxenc(m) + maxenc(m) = 2 * n0, (((maxenc(m) - (m - n0)) + (m - n0)) * ((maxenc(m) - (m - n0)) + (m - n0)) + (maxenc(m) - (m - n0)) + (m - n0)) / 2 + (m - n0) ≠ m, 2 * n0 < (maxenc(m) + 2) * maxenc(m) + maxenc(m) + 2, maxenc(m) + n0 < m, 2 * m < (maxenc(m) + 2) * maxenc(m) + maxenc(m) + 2, 2 * n0 ≤ (maxenc(m) + 2) * maxenc(m) + maxenc(m), m * 2 ≤ (maxenc(m) + 2) * maxenc(m) + maxenc(m), n0 ≤ m ⊦ |
⊦ m0 * (m + n) = m0 * m + m0 * n
maxenc(m) * maxenc(m) + maxenc(m) = 2 * n0, (((maxenc(m) - (m - n0)) + (m - n0)) * ((maxenc(m) - (m - n0)) + (m - n0)) + (maxenc(m) - (m - n0)) + (m - n0)) / 2 + (m - n0) ≠ m, 2 * m < (maxenc(m) * maxenc(m) + maxenc(m) * 2) + maxenc(m) + 2, maxenc(m) + n0 < m, 2 * n0 < (maxenc(m) * maxenc(m) + maxenc(m) * 2) + maxenc(m) + 2, n0 ≤ m, m * 2 ≤ (maxenc(m) * maxenc(m) + maxenc(m) * 2) + maxenc(m), 2 * n0 ≤ (maxenc(m) * maxenc(m) + maxenc(m) * 2) + maxenc(m) ⊦
Used simplifier rules: mult-c: ⊦ m * n = n * m; from specification nat-mult Used terms: maxenc(m), 2, maxenc(m)
| ⊦ m0 * (m + n) = m0 * m + m0 * n |
| maxenc(m) * maxenc(m) + maxenc(m) = 2 * n0, (((maxenc(m) - (m - n0)) + (m - n0)) * ((maxenc(m) - (m - n0)) + (m - n0)) + (maxenc(m) - (m - n0)) + (m - n0)) / 2 + (m - n0) ≠ m, 2 * m < (maxenc(m) * maxenc(m) + maxenc(m) * 2) + maxenc(m) + 2, maxenc(m) + n0 < m, 2 * n0 < (maxenc(m) * maxenc(m) + maxenc(m) * 2) + maxenc(m) + 2, n0 ≤ m, m * 2 ≤ (maxenc(m) * maxenc(m) + maxenc(m) * 2) + maxenc(m), 2 * n0 ≤ (maxenc(m) * maxenc(m) + maxenc(m) * 2) + maxenc(m) ⊦ |
⊦ m + n = n + m
maxenc(m) * maxenc(m) + maxenc(m) = 2 * n0, (((maxenc(m) - (m - n0)) + (m - n0)) * ((maxenc(m) - (m - n0)) + (m - n0)) + (maxenc(m) - (m - n0)) + (m - n0)) / 2 + (m - n0) ≠ m, 2 * n0 < (maxenc(m) * 2 + maxenc(m) * maxenc(m)) + maxenc(m) + 2, maxenc(m) + n0 < m, 2 * m < (maxenc(m) * 2 + maxenc(m) * maxenc(m)) + maxenc(m) + 2, 2 * n0 ≤ (maxenc(m) * 2 + maxenc(m) * maxenc(m)) + maxenc(m), m * 2 ≤ (maxenc(m) * 2 + maxenc(m) * maxenc(m)) + maxenc(m), n0 ≤ m ⊦
Used terms: maxenc(m) * 2, maxenc(m) * maxenc(m)
| maxenc(m) * maxenc(m) + maxenc(m) = 2 * n0, (((maxenc(m) - (m - n0)) + (m - n0)) * ((maxenc(m) - (m - n0)) + (m - n0)) + (maxenc(m) - (m - n0)) + (m - n0)) / 2 + (m - n0) ≠ m, 2 * n0 < (maxenc(m) * 2 + maxenc(m) * maxenc(m)) + maxenc(m) + 2, maxenc(m) + n0 < m, 2 * m < (maxenc(m) * 2 + maxenc(m) * maxenc(m)) + maxenc(m) + 2, 2 * n0 ≤ (maxenc(m) * 2 + maxenc(m) * maxenc(m)) + maxenc(m), m * 2 ≤ (maxenc(m) * 2 + maxenc(m) * maxenc(m)) + maxenc(m), n0 ≤ m ⊦ |
⊦ (m + n0) + n1 = m + n0 + n1
maxenc(m) * maxenc(m) + maxenc(m) = 2 * n0, (((maxenc(m) - (m - n0)) + (m - n0)) * ((maxenc(m) - (m - n0)) + (m - n0)) + (maxenc(m) - (m - n0)) + (m - n0)) / 2 + (m - n0) ≠ m, 2 * m < (maxenc(m) * 2 + maxenc(m) * maxenc(m)) + maxenc(m) + 2, maxenc(m) + n0 < m, 2 * n0 < (maxenc(m) * 2 + maxenc(m) * maxenc(m)) + maxenc(m) + 2, n0 ≤ m, m * 2 ≤ maxenc(m) * 2 + maxenc(m) * maxenc(m) + maxenc(m), 2 * n0 ≤ maxenc(m) * 2 + maxenc(m) * maxenc(m) + maxenc(m) ⊦
Used terms: maxenc(m), maxenc(m) * maxenc(m), maxenc(m) * 2
| ⊦ (m + n0) + n1 = m + n0 + n1 |
| maxenc(m) * maxenc(m) + maxenc(m) = 2 * n0, (((maxenc(m) - (m - n0)) + (m - n0)) * ((maxenc(m) - (m - n0)) + (m - n0)) + (maxenc(m) - (m - n0)) + (m - n0)) / 2 + (m - n0) ≠ m, 2 * m < (maxenc(m) * 2 + maxenc(m) * maxenc(m)) + maxenc(m) + 2, maxenc(m) + n0 < m, 2 * n0 < (maxenc(m) * 2 + maxenc(m) * maxenc(m)) + maxenc(m) + 2, n0 ≤ m, m * 2 ≤ maxenc(m) * 2 + maxenc(m) * maxenc(m) + maxenc(m), 2 * n0 ≤ maxenc(m) * 2 + maxenc(m) * maxenc(m) + maxenc(m) ⊦ |
Used simplifier rules: ⊦ m * n ≤ m1 * n + m2 * n ↔ m ≤ m1 + m2 ∨ n = 0; (s) ⊦ m < n → (n ≤ m ↔ false); (s) a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic c: ⊦ m + n = n + m; from specification nat-basic mult-a: ⊦ m0 * m * n = (m0 * m) * n; from specification nat-mult mult-c: ⊦ m * n = n * m; from specification nat-mult
| maxenc(m) * (maxenc(m) + 1) = 2 * n0, (maxenc(m) * ((maxenc(m) - (m - n0)) + (m - n0) + 1)) / 2 + (m - n0) ≠ m, m - n0 ≤ maxenc(m) ⊦ |
⊦ n ≤ n0 → (m + (n0 - n)) + n = m + n0
maxenc(m) * (maxenc(m) + 1) = 2 * n0, (maxenc(m) * (1 + maxenc(m))) / 2 + (m - n0) ≠ m, m - n0 ≤ maxenc(m) ⊦
Used simplifier rules: a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic c: ⊦ m + n = n + m; from specification nat-basic Used terms: 1, m - n0, maxenc(m)
| ⊦ n ≤ n0 → (m + (n0 - n)) + n = m + n0 |
| maxenc(m) * (maxenc(m) + 1) = 2 * n0, (maxenc(m) * (1 + maxenc(m))) / 2 + (m - n0) ≠ m, m - n0 ≤ maxenc(m) ⊦ |
maxenc(m) * (maxenc(m) + 1) = 2 * n0, (2 * n0) / 2 + (m - n0) ≠ m, m - n0 ≤ maxenc(m) ⊦
Used simplifier rules: c: ⊦ m + n = n + m; from specification nat-basic
| maxenc(m) * (maxenc(m) + 1) = 2 * n0, (2 * n0) / 2 + (m - n0) ≠ m, m - n0 ≤ maxenc(m) ⊦ |
⊦ (2 * m) / 2 = m
maxenc(m) * (maxenc(m) + 1) = 2 * n0, n0 + (m - n0) ≠ m, m - n0 ≤ maxenc(m) ⊦
Used terms: n0
| maxenc(m) * (maxenc(m) + 1) = 2 * n0, n0 + (m - n0) ≠ m, m - n0 ≤ maxenc(m) ⊦ |
n ≤ m ⊦ (m - n) + n = m
maxenc(m) * (maxenc(m) + 1) = 2 * n0, n0 + (m - n0) ≠ m, m - n0 ≤ maxenc(m), ¬ n0 ≤ m ⊦
Used simplifier rules: c: ⊦ m + n = n + m; from specification nat-basic Used terms: n0, m
| n ≤ m ⊦ (m - n) + n = m |
| maxenc(m) * (maxenc(m) + 1) = 2 * n0, n0 + (m - n0) ≠ m, m - n0 ≤ maxenc(m), ¬ n0 ≤ m ⊦ |
⊦ maxenc(m) * (maxenc(m) + 1) ≤ 2 * m ∧ 2 * m < (maxenc(m) + 1) * (maxenc(m) + 2)
Used simplifier rules: ⊦ m * (n + 1) = m * n + m; (s) ⊦ m ≤ n ↔ ¬ n < m; (ss) f: ⊦ m < n → n ≠ 0; (forward) from specification nat-basic fle-01: ⊦ m ≤ n ∧ n < n0 → m < n0; (forward) from specification nat ⊦ m < n → n ≠ 0; (s) n < n0 ⊦ (* n) ≠ m0 + (* n0); (s) a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic c: ⊦ m + n = n + m; from specification nat-basic 0 ≠ m ⊦ (* m) * n ≤ m * n0 ↔ n ≤ n0; (s) ⊦ m < n → (n ≤ m ↔ false); (s) mult-a: ⊦ m0 * m * n = (m0 * m) * n; from specification nat-mult mult-c: ⊦ m * n = n * m; from specification nat-mult Used terms: m
| ⊦ maxenc(m) * (maxenc(m) + 1) ≤ 2 * m ∧ 2 * m < (maxenc(m) + 1) * (maxenc(m) + 2) |
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.