| ⊦ 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 |
⌜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
| ⌜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 |
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 |
⌜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, ¬ m2 < m2 ∧ nσ(m2) = n ∧ nσ(m2 + 1) = nσ(m2) + 1
Used terms: m2
| ⌜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, ¬ 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)
⌜m2⌝ + ⌜1⌝ < # nσ, n < nσ(m2 + 1), 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) |
| ⌜m2⌝ + ⌜1⌝ < # nσ, n < nσ(m2 + 1), 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σ ≠ [], ⌜m2⌝ + ⌜1⌝ < # nσ, n < nσ(m2 + 1), 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σ ≠ [], ⌜m2⌝ + ⌜1⌝ < # nσ, n < nσ(m2 + 1), 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σ ≠ [], ⌜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σ(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
| nσ(m2 + 1) = nσ(m2), 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σ(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, ∀ 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σ ≠ [], ⌜m2⌝ + ⌜1⌝ < # nσ, n < 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 ∧ nσ(m0 + 1) = nσ(m0) + 1 |
nσ(m2 + 1) = nσ(m2), nσ ≠ [], ⌜m2⌝ + ⌜1⌝ < # nσ, n < nσ(m2), stutf(nσ), ∃ m1. m1 < m2 ∧ nσ(m1) = n ∧ nσ(m1 + 1) = nσ(m1) + 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
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σ), ∃ m1. m1 < m2 ∧ nσ(m1) = n ∧ nσ(m1 + 1) = nσ(m1) + 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σ(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σ ≠ [], ⌜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σ(m2 + 1) = nσ(m2) + 1, nσ ≠ [], 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, ∀ 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σ ≠ [], 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, ∀ 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σ ≠ [], nσ(m2) ≠ n, ⌜m2⌝ + ⌜1⌝ < # nσ, n < nσ(m2), stutf(nσ), ∃ m1. m1 < m2 ∧ nσ(m1) = n ∧ nσ(m1 + 1) = nσ(m1) + 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
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σ ≠ [], nσ(m2) ≠ n, ⌜m2⌝ + ⌜1⌝ < # nσ, n < nσ(m2), stutf(nσ), ∃ m1. m1 < m2 ∧ nσ(m1) = n ∧ nσ(m1 + 1) = nσ(m1) + 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σ(m1 + 1) = nσ(m1) + 1, nσ(m2 + 1) = nσ(m2) + 1, nσ ≠ [], nσ(m2) ≠ nσ(m1), 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σ ≠ [], nσ(m2) ≠ nσ(m1), 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.