| ⊦ stutf(nσ) ∧ ⌜m⌝ < # nσ ∧ n < nσ[m] → (∃ m0. m0 < m ∧ nσ[m0] = n ∧ nσ[m0 + 1] = n + 1) |
⌜m⌝ < # nσ, n < nσ[m], stutf(nσ) ⊦ ∃ m0. m0 < m ∧ nσ[m0] = n ∧ nσ[m0 + 1] = n + 1
| ⌜m⌝ < # nσ, n < nσ[m], stutf(nσ) ⊦ ∃ m0. m0 < m ∧ nσ[m0] = n ∧ nσ[m0 + 1] = n + 1 |
⌜m⌝ < # nσ, n < nσ[m], stutf(nσ) ⊦ ∃ m0. m0 < m ∧ nσ[m0] = n ∧ nσ[m0 + 1] = nσ[m0] + 1
Used simplifier rules: ⊦ m < n → n ≠ 0; (s) f: ⊦ m < n → n ≠ 0; (forward) from specification nat-basic
| ⌜m⌝ < # nσ, n < nσ[m], stutf(nσ) ⊦ ∃ m0. m0 < m ∧ nσ[m0] = n ∧ nσ[m0 + 1] = nσ[m0] + 1 |
⌜m⌝ < # nσ, n < nσ[m], stutf(nσ), ∀ m0, nσ, n. m0 < m → ⌜m0⌝ < # nσ ∧ n < nσ[m0] ∧ stutf(nσ) → (∃ m1. m1 < m0 ∧ nσ[m1] = n ∧ nσ[m1 + 1] = nσ[m1] + 1) ⊦ ∃ m0. m0 < m ∧ nσ[m0] = n ∧ nσ[m0 + 1] = nσ[m0] + 1
Used simplifier rules: <; (wellfounded) Used terms: m
| ⌜m⌝ < # nσ, n < nσ[m], stutf(nσ), ∀ m0, nσ, n. m0 < m → ⌜m0⌝ < # nσ ∧ n < nσ[m0] ∧ stutf(nσ) → (∃ m1. m1 < m0 ∧ nσ[m1] = n ∧ nσ[m1 + 1] = nσ[m1] + 1) ⊦ ∃ m0. m0 < m ∧ nσ[m0] = n ∧ nσ[m0 + 1] = nσ[m0] + 1 |
n < nσ[m], ⌜m⌝ < # nσ, stutf(nσ), ∀ m0, nσ, n. m0 < m → ⌜m0⌝ < # nσ ∧ n < nσ[m0] ∧ stutf(nσ) → (∃ m1. m1 < m0 ∧ nσ[m1] = n ∧ nσ[m1 + 1] = nσ[m1] + 1) ⊦ ∃ m0. m0 < m ∧ nσ[m0] = n ∧ nσ[m0 + 1] = nσ[m0] + 1
| n < nσ[m], ⌜m⌝ < # nσ, stutf(nσ), ∀ m0, nσ, n. m0 < m → ⌜m0⌝ < # nσ ∧ n < nσ[m0] ∧ stutf(nσ) → (∃ m1. m1 < m0 ∧ nσ[m1] = n ∧ nσ[m1 + 1] = nσ[m1] + 1) ⊦ ∃ m0. m0 < m ∧ nσ[m0] = n ∧ nσ[m0 + 1] = nσ[m0] + 1 |
m = m2 +1, ⌜m⌝ < # nσ, n < nσ[m], stutf(nσ), ∀ m0, nσ, n. m0 < m → ⌜m0⌝ < # nσ ∧ n < nσ[m0] ∧ stutf(nσ) → (∃ m1. m1 < m0 ∧ nσ[m1] = n ∧ nσ[m1 + 1] = nσ[m1] + 1) ⊦ ∃ m0. m0 < m ∧ nσ[m0] = n ∧ nσ[m0 + 1] = nσ[m0] + 1
Used simplifier rules: stutf-zero: ⊦ stutf(nσ) → nσ[0] = 0; nat freely generated by 0, +1;; ⊦ ¬ n < 0; (s)
| m = m2 +1, ⌜m⌝ < # nσ, n < nσ[m], stutf(nσ), ∀ m0, nσ, n. m0 < m → ⌜m0⌝ < # nσ ∧ n < nσ[m0] ∧ stutf(nσ) → (∃ m1. m1 < m0 ∧ nσ[m1] = n ∧ nσ[m1 + 1] = nσ[m1] + 1) ⊦ ∃ m0. m0 < m ∧ nσ[m0] = n ∧ nσ[m0 + 1] = nσ[m0] + 1 |
⌜m2⌝ + ⌜1⌝ < # nσ, n < nσ[m2 + 1], stutf(nσ), ∀ m0, nσ, n. m0 < m2 +1 → ⌜m0⌝ < # nσ ∧ n < nσ[m0] ∧ stutf(nσ) → (∃ m1. m1 < m0 ∧ nσ[m1] = n ∧ nσ[m1 + 1] = nσ[m1] + 1) ⊦ ∃ m0. ¬ m2 < m0 ∧ nσ[m0] = n ∧ nσ[m0 + 1] = nσ[m0] + 1
Used simplifier rules: ⊦ m < n → n ≠ 0; (s) f: ⊦ m < n → n ≠ 0; (forward) from specification nat-basic c: ⊦ m + n = n + m; from specification nat-basic a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic ⊦ m < n + 1 ↔ ¬ n < m; (s) ⊦ m +1 = m + 1; (s) ⊦ ⌜m + n⌝ = ⌜m⌝ + ⌜n⌝ ; (s)
| ⌜m2⌝ + ⌜1⌝ < # nσ, n < nσ[m2 + 1], stutf(nσ), ∀ m0, nσ, n. m0 < m2 +1 → ⌜m0⌝ < # nσ ∧ n < nσ[m0] ∧ stutf(nσ) → (∃ m1. m1 < m0 ∧ nσ[m1] = n ∧ nσ[m1 + 1] = nσ[m1] + 1) ⊦ ∃ m0. ¬ m2 < m0 ∧ nσ[m0] = n ∧ nσ[m0 + 1] = nσ[m0] + 1 |
n < nσ[m2 + 1], ⌜m2⌝ + ⌜1⌝ < # nσ, stutf(nσ), ∀ m0, nσ, n. m0 < m2 +1 → ⌜m0⌝ < # nσ ∧ n < nσ[m0] ∧ stutf(nσ) → (∃ m1. m1 < m0 ∧ nσ[m1] = n ∧ nσ[m1 + 1] = nσ[m1] + 1) ⊦ ∃ m0. ¬ m2 < m0 ∧ nσ[m0] = n ∧ nσ[m0 + 1] = nσ[m0] + 1, ¬ m2 < m2 ∧ nσ[m2] = n ∧ nσ[m2 + 1] = nσ[m2] + 1
Used terms: m2
| n < nσ[m2 + 1], ⌜m2⌝ + ⌜1⌝ < # nσ, stutf(nσ), ∀ m0, nσ, n. m0 < m2 +1 → ⌜m0⌝ < # nσ ∧ n < nσ[m0] ∧ stutf(nσ) → (∃ m1. m1 < m0 ∧ nσ[m1] = n ∧ nσ[m1 + 1] = nσ[m1] + 1) ⊦ ∃ m0. ¬ m2 < m0 ∧ nσ[m0] = n ∧ nσ[m0 + 1] = nσ[m0] + 1, ¬ m2 < m2 ∧ nσ[m2] = n ∧ nσ[m2 + 1] = nσ[m2] + 1 |
⌜m2⌝ + ⌜1⌝ < # nσ, n < nσ[m2 + 1], stutf(nσ), ∀ m0, nσ, n. m0 < m2 +1 → ⌜m0⌝ < # nσ ∧ n < nσ[m0] ∧ stutf(nσ) → (∃ m1. m1 < m0 ∧ nσ[m1] = n ∧ nσ[m1 + 1] = nσ[m1] + 1) ⊦ ∃ m0. ¬ m2 < m0 ∧ nσ[m0] = n ∧ nσ[m0 + 1] = nσ[m0] + 1, nσ[m2] = n ∧ nσ[m2 + 1] = nσ[m2] + 1
Used simplifier rules: ⊦ ¬ n < n; (s)
| ⌜m2⌝ + ⌜1⌝ < # nσ, n < nσ[m2 + 1], stutf(nσ), ∀ m0, nσ, n. m0 < m2 +1 → ⌜m0⌝ < # nσ ∧ n < nσ[m0] ∧ stutf(nσ) → (∃ m1. m1 < m0 ∧ nσ[m1] = n ∧ nσ[m1 + 1] = nσ[m1] + 1) ⊦ ∃ m0. ¬ m2 < m0 ∧ nσ[m0] = n ∧ nσ[m0 + 1] = nσ[m0] + 1, nσ[m2] = n ∧ nσ[m2 + 1] = nσ[m2] + 1 |
⊦ stutf(nσ) ↔ nσ ≠ [] ∧ nσ[0] = 0 ∧ (∀ n. ⌜n⌝ + ⌜1⌝ < # nσ → nσ[n + 1] = nσ[n] ∨ nσ[n + 1] = nσ[n] + 1)
n < nσ[m2 + 1], ⌜m2⌝ + ⌜1⌝ < # nσ, stutf(nσ), stutf(nσ) ↔ nσ ≠ [] ∧ nσ[0] = 0 ∧ (∀ n. ⌜n⌝ + ⌜1⌝ < # nσ → nσ[n + 1] = nσ[n] ∨ nσ[n + 1] = nσ[n] + 1), ∀ m0, nσ, n. m0 < m2 +1 → ⌜m0⌝ < # nσ ∧ n < nσ[m0] ∧ stutf(nσ) → (∃ m1. m1 < m0 ∧ nσ[m1] = n ∧ nσ[m1 + 1] = nσ[m1] + 1) ⊦ ∃ m0. ¬ m2 < m0 ∧ nσ[m0] = n ∧ nσ[m0 + 1] = nσ[m0] + 1, nσ[m2] = n ∧ nσ[m2 + 1] = nσ[m2] + 1
Used terms: nσ
| ⊦ stutf(nσ) ↔ nσ ≠ [] ∧ nσ[0] = 0 ∧ (∀ n. ⌜n⌝ + ⌜1⌝ < # nσ → nσ[n + 1] = nσ[n] ∨ nσ[n + 1] = nσ[n] + 1) |
| n < nσ[m2 + 1], ⌜m2⌝ + ⌜1⌝ < # nσ, stutf(nσ), stutf(nσ) ↔ nσ ≠ [] ∧ nσ[0] = 0 ∧ (∀ n. ⌜n⌝ + ⌜1⌝ < # nσ → nσ[n + 1] = nσ[n] ∨ nσ[n + 1] = nσ[n] + 1), ∀ m0, nσ, n. m0 < m2 +1 → ⌜m0⌝ < # nσ ∧ n < nσ[m0] ∧ stutf(nσ) → (∃ m1. m1 < m0 ∧ nσ[m1] = n ∧ nσ[m1 + 1] = nσ[m1] + 1) ⊦ ∃ m0. ¬ m2 < m0 ∧ nσ[m0] = n ∧ nσ[m0 + 1] = nσ[m0] + 1, nσ[m2] = n ∧ nσ[m2 + 1] = nσ[m2] + 1 |
nσ ≠ [], ⌜m2⌝ + ⌜1⌝ < # nσ, n < nσ[m2 + 1], stutf(nσ), ∀ n. ⌜n⌝ + ⌜1⌝ < # nσ → nσ[n + 1] = nσ[n] ∨ nσ[n + 1] = nσ[n] + 1, ∀ m0, nσ, n. m0 < m2 +1 → ⌜m0⌝ < # nσ ∧ n < nσ[m0] ∧ stutf(nσ) → (∃ m1. m1 < m0 ∧ nσ[m1] = n ∧ nσ[m1 + 1] = nσ[m1] + 1) ⊦ ∃ m0. ¬ m2 < m0 ∧ nσ[m0] = n ∧ nσ[m0 + 1] = nσ[m0] + 1, nσ[m2] = n ∧ nσ[m2 + 1] = nσ[m2] + 1
Used simplifier rules: stutf-nonempty: ⊦ stutf(nσ) → (nσ = [] ↔ false); stutf-zero: ⊦ stutf(nσ) → nσ[0] = 0;
| nσ ≠ [], ⌜m2⌝ + ⌜1⌝ < # nσ, n < nσ[m2 + 1], stutf(nσ), ∀ n. ⌜n⌝ + ⌜1⌝ < # nσ → nσ[n + 1] = nσ[n] ∨ nσ[n + 1] = nσ[n] + 1, ∀ m0, nσ, n. m0 < m2 +1 → ⌜m0⌝ < # nσ ∧ n < nσ[m0] ∧ stutf(nσ) → (∃ m1. m1 < m0 ∧ nσ[m1] = n ∧ nσ[m1 + 1] = nσ[m1] + 1) ⊦ ∃ m0. ¬ m2 < m0 ∧ nσ[m0] = n ∧ nσ[m0 + 1] = nσ[m0] + 1, nσ[m2] = n ∧ nσ[m2 + 1] = nσ[m2] + 1 |
nσ ≠ [], n < nσ[m2 + 1], ⌜m2⌝ + ⌜1⌝ < # nσ, stutf(nσ), ⌜m2⌝ + ⌜1⌝ < # nσ → nσ[m2 + 1] = nσ[m2] ∨ nσ[m2 + 1] = nσ[m2] + 1, ∀ n. ⌜n⌝ + ⌜1⌝ < # nσ → nσ[n + 1] = nσ[n] ∨ nσ[n + 1] = nσ[n] + 1, ∀ m0, nσ, n. m0 < m2 +1 → ⌜m0⌝ < # nσ ∧ n < nσ[m0] ∧ stutf(nσ) → (∃ m1. m1 < m0 ∧ nσ[m1] = n ∧ nσ[m1 + 1] = nσ[m1] + 1) ⊦ ∃ m0. ¬ m2 < m0 ∧ nσ[m0] = n ∧ nσ[m0 + 1] = nσ[m0] + 1, nσ[m2] = n ∧ nσ[m2 + 1] = nσ[m2] + 1
Used terms: m2
| nσ ≠ [], n < nσ[m2 + 1], ⌜m2⌝ + ⌜1⌝ < # nσ, stutf(nσ), ⌜m2⌝ + ⌜1⌝ < # nσ → nσ[m2 + 1] = nσ[m2] ∨ nσ[m2 + 1] = nσ[m2] + 1, ∀ n. ⌜n⌝ + ⌜1⌝ < # nσ → nσ[n + 1] = nσ[n] ∨ nσ[n + 1] = nσ[n] + 1, ∀ m0, nσ, n. m0 < m2 +1 → ⌜m0⌝ < # nσ ∧ n < nσ[m0] ∧ stutf(nσ) → (∃ m1. m1 < m0 ∧ nσ[m1] = n ∧ nσ[m1 + 1] = nσ[m1] + 1) ⊦ ∃ m0. ¬ m2 < m0 ∧ nσ[m0] = n ∧ nσ[m0 + 1] = nσ[m0] + 1, nσ[m2] = n ∧ nσ[m2 + 1] = nσ[m2] + 1 |
nσ ≠ [], ⌜m2⌝ + ⌜1⌝ < # nσ, n < nσ[m2 + 1], stutf(nσ), ∀ n. ⌜n⌝ + ⌜1⌝ < # nσ → nσ[n + 1] = nσ[n] ∨ nσ[n + 1] = nσ[n] + 1, nσ[m2 + 1] = nσ[m2] ∨ nσ[m2 + 1] = nσ[m2] + 1, ∀ m0, nσ, n. m0 < m2 +1 → ⌜m0⌝ < # nσ ∧ n < nσ[m0] ∧ stutf(nσ) → (∃ m1. m1 < m0 ∧ nσ[m1] = n ∧ nσ[m1 + 1] = nσ[m1] + 1) ⊦ ∃ m0. ¬ m2 < m0 ∧ nσ[m0] = n ∧ nσ[m0 + 1] = nσ[m0] + 1, nσ[m2] = n ∧ nσ[m2 + 1] = nσ[m2] + 1
| nσ ≠ [], ⌜m2⌝ + ⌜1⌝ < # nσ, n < nσ[m2 + 1], stutf(nσ), ∀ n. ⌜n⌝ + ⌜1⌝ < # nσ → nσ[n + 1] = nσ[n] ∨ nσ[n + 1] = nσ[n] + 1, nσ[m2 + 1] = nσ[m2] ∨ nσ[m2 + 1] = nσ[m2] + 1, ∀ m0, nσ, n. m0 < m2 +1 → ⌜m0⌝ < # nσ ∧ n < nσ[m0] ∧ stutf(nσ) → (∃ m1. m1 < m0 ∧ nσ[m1] = n ∧ nσ[m1 + 1] = nσ[m1] + 1) ⊦ ∃ m0. ¬ m2 < m0 ∧ nσ[m0] = n ∧ nσ[m0 + 1] = nσ[m0] + 1, nσ[m2] = n ∧ nσ[m2 + 1] = nσ[m2] + 1 |
nσ[m2 + 1] = nσ[m2], nσ ≠ [], n < nσ[m2 + 1], ⌜m2⌝ + ⌜1⌝ < # nσ, stutf(nσ), ∀ n. ⌜n⌝ + ⌜1⌝ < # nσ → nσ[n + 1] = nσ[n] ∨ nσ[n + 1] = nσ[n] + 1, ∀ m0, nσ, n. m0 < m2 +1 → ⌜m0⌝ < # nσ ∧ n < nσ[m0] ∧ stutf(nσ) → (∃ m1. m1 < m0 ∧ nσ[m1] = n ∧ nσ[m1 + 1] = nσ[m1] + 1) ⊦ ∃ m0. ¬ m2 < m0 ∧ nσ[m0] = n ∧ nσ[m0 + 1] = nσ[m0] + 1, nσ[m2] = n ∧ nσ[m2 + 1] = nσ[m2] + 1
nσ[m2 + 1] = nσ[m2] + 1, nσ ≠ [], n < nσ[m2 + 1], ⌜m2⌝ + ⌜1⌝ < # nσ, stutf(nσ), ∀ n. ⌜n⌝ + ⌜1⌝ < # nσ → nσ[n + 1] = nσ[n] ∨ nσ[n + 1] = nσ[n] + 1, ∀ m0, nσ, n. m0 < m2 +1 → ⌜m0⌝ < # nσ ∧ n < nσ[m0] ∧ stutf(nσ) → (∃ m1. m1 < m0 ∧ nσ[m1] = n ∧ nσ[m1 + 1] = nσ[m1] + 1) ⊦ ∃ m0. ¬ m2 < m0 ∧ nσ[m0] = n ∧ nσ[m0 + 1] = nσ[m0] + 1, nσ[m2] = n ∧ nσ[m2 + 1] = nσ[m2] + 1
| nσ[m2 + 1] = nσ[m2], nσ ≠ [], n < nσ[m2 + 1], ⌜m2⌝ + ⌜1⌝ < # nσ, stutf(nσ), ∀ n. ⌜n⌝ + ⌜1⌝ < # nσ → nσ[n + 1] = nσ[n] ∨ nσ[n + 1] = nσ[n] + 1, ∀ m0, nσ, n. m0 < m2 +1 → ⌜m0⌝ < # nσ ∧ n < nσ[m0] ∧ stutf(nσ) → (∃ m1. m1 < m0 ∧ nσ[m1] = n ∧ nσ[m1 + 1] = nσ[m1] + 1) ⊦ ∃ m0. ¬ m2 < m0 ∧ nσ[m0] = n ∧ nσ[m0 + 1] = nσ[m0] + 1, nσ[m2] = n ∧ nσ[m2 + 1] = nσ[m2] + 1 |
nσ[m2 + 1] = nσ[m2], nσ ≠ [], n < nσ[m2], ⌜m2⌝ + ⌜1⌝ < # nσ, stutf(nσ), ∀ n. ⌜n⌝ + ⌜1⌝ < # nσ → nσ[n + 1] = nσ[n] ∨ nσ[n + 1] = nσ[n] + 1, ∀ m0, nσ, n. m0 < m2 +1 → ⌜m0⌝ < # nσ ∧ n < nσ[m0] ∧ stutf(nσ) → (∃ m1. m1 < m0 ∧ nσ[m1] = n ∧ nσ[m1 + 1] = nσ[m1] + 1) ⊦ ∃ m0. ¬ m2 < m0 ∧ nσ[m0] = n ∧ nσ[m0 + 1] = nσ[m0] + 1
Used simplifier rules: c: ⊦ m + n = n + m; from specification nat-basic a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic ⊦ m = m + n ↔ n = 0; (s) ⊦ m < n → n ≠ 0; (s) f: ⊦ m < n → n ≠ 0; (forward) from specification nat-basic
| nσ[m2 + 1] = nσ[m2], nσ ≠ [], n < nσ[m2], ⌜m2⌝ + ⌜1⌝ < # nσ, stutf(nσ), ∀ n. ⌜n⌝ + ⌜1⌝ < # nσ → nσ[n + 1] = nσ[n] ∨ nσ[n + 1] = nσ[n] + 1, ∀ m0, nσ, n. m0 < m2 +1 → ⌜m0⌝ < # nσ ∧ n < nσ[m0] ∧ stutf(nσ) → (∃ m1. m1 < m0 ∧ nσ[m1] = n ∧ nσ[m1 + 1] = nσ[m1] + 1) ⊦ ∃ m0. ¬ m2 < m0 ∧ nσ[m0] = n ∧ nσ[m0 + 1] = nσ[m0] + 1 |
nσ[m2 + 1] = nσ[m2], nσ ≠ [], ⌜m2⌝ + ⌜1⌝ < # nσ, n < nσ[m2], stutf(nσ), ∀ n. ⌜n⌝ + ⌜1⌝ < # nσ → nσ[n + 1] = nσ[n] ∨ nσ[n + 1] = nσ[n] + 1, ∃ m1. m1 < m2 ∧ nσ[m1] = n ∧ nσ[m1 + 1] = nσ[m1] + 1, ∀ m0, nσ, n. m0 < m2 +1 → ⌜m0⌝ < # nσ ∧ n < nσ[m0] ∧ stutf(nσ) → (∃ m1. m1 < m0 ∧ nσ[m1] = n ∧ nσ[m1 + 1] = nσ[m1] + 1) ⊦ ∃ m0. ¬ m2 < m0 ∧ nσ[m0] = n ∧ nσ[m0 + 1] = nσ[m0] + 1
Used simplifier rules: lsle-trans: ⊦ n∞ < n∞1 ∧ ¬ n∞2 < n∞1 → n∞ < n∞2; (forward) from specification nat-inf ⊦ ⌜n⌝ + ⌜m⌝ < ⌜n0⌝ ↔ n + m < n0; (s) ⊦ ¬ m + n < m; (s) a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic c: ⊦ m + n = n + m; from specification nat-basic add-assoc: ⊦ (n∞ + n∞1) + n∞2 = n∞ + n∞1 + n∞2; from specification nat-inf add-comm: ⊦ n∞1 + n∞2 = n∞2 + n∞1; from specification nat-inf ⊦ m +1 = m + 1; (s) ⊦ m < n + 1 ↔ ¬ n < m; (s) ⊦ ¬ n < n; (s) Used terms: m2, nσ, n
| nσ[m2 + 1] = nσ[m2], nσ ≠ [], ⌜m2⌝ + ⌜1⌝ < # nσ, n < nσ[m2], stutf(nσ), ∀ n. ⌜n⌝ + ⌜1⌝ < # nσ → nσ[n + 1] = nσ[n] ∨ nσ[n + 1] = nσ[n] + 1, ∃ m1. m1 < m2 ∧ nσ[m1] = n ∧ nσ[m1 + 1] = nσ[m1] + 1, ∀ m0, nσ, n. m0 < m2 +1 → ⌜m0⌝ < # nσ ∧ n < nσ[m0] ∧ stutf(nσ) → (∃ m1. m1 < m0 ∧ nσ[m1] = n ∧ nσ[m1 + 1] = nσ[m1] + 1) ⊦ ∃ m0. ¬ m2 < m0 ∧ nσ[m0] = n ∧ nσ[m0 + 1] = nσ[m0] + 1 |
nσ[m1 + 1] = nσ[m1] + 1, nσ[m2 + 1] = nσ[m2], nσ ≠ [], m1 < m2, ⌜m2⌝ + ⌜1⌝ < # nσ, nσ[m1] < nσ[m2], stutf(nσ), ∀ n. ⌜n⌝ + ⌜1⌝ < # nσ → nσ[n + 1] = nσ[n] ∨ nσ[n + 1] = nσ[n] + 1, ∀ m0, nσ, n. m0 < m2 +1 → ⌜m0⌝ < # nσ ∧ n < nσ[m0] ∧ stutf(nσ) → (∃ m1. m1 < m0 ∧ nσ[m1] = n ∧ nσ[m1 + 1] = nσ[m1] + 1) ⊦ ∃ m0. ¬ m2 < m0 ∧ nσ[m0] = nσ[m1] ∧ nσ[m0 + 1] = nσ[m0] + 1
Used simplifier rules: c: ⊦ m + n = n + m; from specification nat-basic a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic ⊦ m + 1 ≤ n ↔ m < n; (s) ⊦ m < n → n ≠ 0; (s) f: ⊦ m < n → n ≠ 0; (forward) from specification nat-basic eqle-one: ⊦ m = n + 1 ∧ n < n0 → m ≤ n0; (forward) from specification nat
| nσ[m1 + 1] = nσ[m1] + 1, nσ[m2 + 1] = nσ[m2], nσ ≠ [], m1 < m2, ⌜m2⌝ + ⌜1⌝ < # nσ, nσ[m1] < nσ[m2], stutf(nσ), ∀ n. ⌜n⌝ + ⌜1⌝ < # nσ → nσ[n + 1] = nσ[n] ∨ nσ[n + 1] = nσ[n] + 1, ∀ m0, nσ, n. m0 < m2 +1 → ⌜m0⌝ < # nσ ∧ n < nσ[m0] ∧ stutf(nσ) → (∃ m1. m1 < m0 ∧ nσ[m1] = n ∧ nσ[m1 + 1] = nσ[m1] + 1) ⊦ ∃ m0. ¬ m2 < m0 ∧ nσ[m0] = nσ[m1] ∧ nσ[m0 + 1] = nσ[m0] + 1 |
Used simplifier rules: ⊦ m < n → ¬ n < m; (s) Used terms: m1
| nσ[m2 + 1] = nσ[m2] + 1, nσ ≠ [], n < nσ[m2 + 1], ⌜m2⌝ + ⌜1⌝ < # nσ, stutf(nσ), ∀ n. ⌜n⌝ + ⌜1⌝ < # nσ → nσ[n + 1] = nσ[n] ∨ nσ[n + 1] = nσ[n] + 1, ∀ m0, nσ, n. m0 < m2 +1 → ⌜m0⌝ < # nσ ∧ n < nσ[m0] ∧ stutf(nσ) → (∃ m1. m1 < m0 ∧ nσ[m1] = n ∧ nσ[m1 + 1] = nσ[m1] + 1) ⊦ ∃ m0. ¬ m2 < m0 ∧ nσ[m0] = n ∧ nσ[m0 + 1] = nσ[m0] + 1, nσ[m2] = n ∧ nσ[m2 + 1] = nσ[m2] + 1 |
nσ[m2 + 1] = nσ[m2] + 1, nσ[m2] ≠ n, nσ ≠ [], n < nσ[m2], ⌜m2⌝ + ⌜1⌝ < # nσ, stutf(nσ), ∀ n. ⌜n⌝ + ⌜1⌝ < # nσ → nσ[n + 1] = nσ[n] ∨ nσ[n + 1] = nσ[n] + 1, ∀ m0, nσ, n. m0 < m2 +1 → ⌜m0⌝ < # nσ ∧ n < nσ[m0] ∧ stutf(nσ) → (∃ m1. m1 < m0 ∧ nσ[m1] = n ∧ nσ[m1 + 1] = nσ[m1] + 1) ⊦ ∃ m0. ¬ m2 < m0 ∧ nσ[m0] = n ∧ nσ[m0 + 1] = nσ[m0] + 1
Used simplifier rules: ⊦ m < n → n ≠ 0; (s) f: ⊦ m < n → n ≠ 0; (forward) from specification nat-basic c: ⊦ m + n = n + m; from specification nat-basic a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic ⊦ m ≠ n → (m < n + 1 ↔ m < n); (s) ⊦ m + 1 ≠ 0; (s)
| nσ[m2 + 1] = nσ[m2] + 1, nσ[m2] ≠ n, nσ ≠ [], n < nσ[m2], ⌜m2⌝ + ⌜1⌝ < # nσ, stutf(nσ), ∀ n. ⌜n⌝ + ⌜1⌝ < # nσ → nσ[n + 1] = nσ[n] ∨ nσ[n + 1] = nσ[n] + 1, ∀ m0, nσ, n. m0 < m2 +1 → ⌜m0⌝ < # nσ ∧ n < nσ[m0] ∧ stutf(nσ) → (∃ m1. m1 < m0 ∧ nσ[m1] = n ∧ nσ[m1 + 1] = nσ[m1] + 1) ⊦ ∃ m0. ¬ m2 < m0 ∧ nσ[m0] = n ∧ nσ[m0 + 1] = nσ[m0] + 1 |
nσ[m2 + 1] = nσ[m2] + 1, nσ[m2] ≠ n, nσ ≠ [], ⌜m2⌝ + ⌜1⌝ < # nσ, n < nσ[m2], stutf(nσ), ∀ n. ⌜n⌝ + ⌜1⌝ < # nσ → nσ[n + 1] = nσ[n] ∨ nσ[n + 1] = nσ[n] + 1, ∃ m1. m1 < m2 ∧ nσ[m1] = n ∧ nσ[m1 + 1] = nσ[m1] + 1, ∀ m0, nσ, n. m0 < m2 +1 → ⌜m0⌝ < # nσ ∧ n < nσ[m0] ∧ stutf(nσ) → (∃ m1. m1 < m0 ∧ nσ[m1] = n ∧ nσ[m1 + 1] = nσ[m1] + 1) ⊦ ∃ m0. ¬ m2 < m0 ∧ nσ[m0] = n ∧ nσ[m0 + 1] = nσ[m0] + 1
Used simplifier rules: lsle-trans: ⊦ n∞ < n∞1 ∧ ¬ n∞2 < n∞1 → n∞ < n∞2; (forward) from specification nat-inf ⊦ ⌜n⌝ + ⌜m⌝ < ⌜n0⌝ ↔ n + m < n0; (s) ⊦ ¬ m + n < m; (s) a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic c: ⊦ m + n = n + m; from specification nat-basic add-assoc: ⊦ (n∞ + n∞1) + n∞2 = n∞ + n∞1 + n∞2; from specification nat-inf add-comm: ⊦ n∞1 + n∞2 = n∞2 + n∞1; from specification nat-inf ⊦ m +1 = m + 1; (s) ⊦ m < n + 1 ↔ ¬ n < m; (s) ⊦ ¬ n < n; (s) Used terms: m2, nσ, n
| nσ[m2 + 1] = nσ[m2] + 1, nσ[m2] ≠ n, nσ ≠ [], ⌜m2⌝ + ⌜1⌝ < # nσ, n < nσ[m2], stutf(nσ), ∀ n. ⌜n⌝ + ⌜1⌝ < # nσ → nσ[n + 1] = nσ[n] ∨ nσ[n + 1] = nσ[n] + 1, ∃ m1. m1 < m2 ∧ nσ[m1] = n ∧ nσ[m1 + 1] = nσ[m1] + 1, ∀ m0, nσ, n. m0 < m2 +1 → ⌜m0⌝ < # nσ ∧ n < nσ[m0] ∧ stutf(nσ) → (∃ m1. m1 < m0 ∧ nσ[m1] = n ∧ nσ[m1 + 1] = nσ[m1] + 1) ⊦ ∃ m0. ¬ m2 < m0 ∧ nσ[m0] = n ∧ nσ[m0 + 1] = nσ[m0] + 1 |
nσ[m1 + 1] = nσ[m1] + 1, nσ[m2 + 1] = nσ[m2] + 1, nσ[m2] ≠ nσ[m1], nσ ≠ [], m1 < m2, ⌜m2⌝ + ⌜1⌝ < # nσ, nσ[m1] < nσ[m2], stutf(nσ), ∀ n. ⌜n⌝ + ⌜1⌝ < # nσ → nσ[n + 1] = nσ[n] ∨ nσ[n + 1] = nσ[n] + 1, ∀ m0, nσ, n. m0 < m2 +1 → ⌜m0⌝ < # nσ ∧ n < nσ[m0] ∧ stutf(nσ) → (∃ m1. m1 < m0 ∧ nσ[m1] = n ∧ nσ[m1 + 1] = nσ[m1] + 1) ⊦ ∃ m0. ¬ m2 < m0 ∧ nσ[m0] = nσ[m1] ∧ nσ[m0 + 1] = nσ[m0] + 1
Used simplifier rules: c: ⊦ m + n = n + m; from specification nat-basic a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic ⊦ m + 1 ≤ n ↔ m < n; (s) ⊦ m < n → n ≠ 0; (s) f: ⊦ m < n → n ≠ 0; (forward) from specification nat-basic eqle-one: ⊦ m = n + 1 ∧ n < n0 → m ≤ n0; (forward) from specification nat
| nσ[m1 + 1] = nσ[m1] + 1, nσ[m2 + 1] = nσ[m2] + 1, nσ[m2] ≠ nσ[m1], nσ ≠ [], m1 < m2, ⌜m2⌝ + ⌜1⌝ < # nσ, nσ[m1] < nσ[m2], stutf(nσ), ∀ n. ⌜n⌝ + ⌜1⌝ < # nσ → nσ[n + 1] = nσ[n] ∨ nσ[n + 1] = nσ[n] + 1, ∀ m0, nσ, n. m0 < m2 +1 → ⌜m0⌝ < # nσ ∧ n < nσ[m0] ∧ stutf(nσ) → (∃ m1. m1 < m0 ∧ nσ[m1] = n ∧ nσ[m1 + 1] = nσ[m1] + 1) ⊦ ∃ m0. ¬ m2 < m0 ∧ nσ[m0] = nσ[m1] ∧ nσ[m0 + 1] = nσ[m0] + 1 |
Used simplifier rules: ⊦ m < n → ¬ n < m; (s) Used terms: m1
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.