| ⊦ ∀ n. ∃ nf, ii. ii(0) = 0 ∧ (∀ m. m < n → ii(m + 1) = ii(m) + # lf(m) ∧ (nf from ii(m)) to # lf(m) = lf(m) ∧ (∀ m0. m0 ≤ m → ii(m0) ≤ ii(m))) |
⊦ ∃ nf, ii. ii(0) = 0 ∧ (∀ m. m < n → ii(m + 1) = ii(m) + # lf(m) ∧ (nf from ii(m)) to # lf(m) = lf(m) ∧ (∀ m0. m0 ≤ m → ii(m0) ≤ ii(m)))
| ⊦ ∃ nf, ii. ii(0) = 0 ∧ (∀ m. m < n → ii(m + 1) = ii(m) + # lf(m) ∧ (nf from ii(m)) to # lf(m) = lf(m) ∧ (∀ m0. m0 ≤ m → ii(m0) ≤ ii(m))) |
⊦ ∃ nf, ii. ii(0) = 0 ∧ (∀ m. m < 0 → ii(m + 1) = ii(m) + # lf(m) ∧ (nf from ii(m)) to # lf(m) = lf(m) ∧ (∀ m0. m0 ≤ m → ii(m0) ≤ ii(m)))
∀ lf. ∃ nf, ii. ii(0) = 0 ∧ (∀ m. m < n0 → ii(m + 1) = ii(m) + # lf(m) ∧ (nf from ii(m)) to # lf(m) = lf(m) ∧ (∀ m0. m0 ≤ m → ii(m0) ≤ ii(m))) ⊦ ∃ nf, ii. ii(0) = 0 ∧ (∀ m. m < n0 +1 → ii(m + 1) = ii(m) + # lf(m) ∧ (nf from ii(m)) to # lf(m) = lf(m) ∧ (∀ m0. m0 ≤ m → ii(m0) ≤ ii(m)))
Used simplifier rules: nat freely generated by 0, +1;;
| ⊦ ∃ nf, ii. ii(0) = 0 ∧ (∀ m. m < 0 → ii(m + 1) = ii(m) + # lf(m) ∧ (nf from ii(m)) to # lf(m) = lf(m) ∧ (∀ m0. m0 ≤ m → ii(m0) ≤ ii(m))) |
⊦ ∃ ii. ii(0) = 0
Used simplifier rules: ⊦ ¬ n < 0; (s)
| ⊦ ∃ ii. ii(0) = 0 |
Used terms: λ n. n
| ∀ lf. ∃ nf, ii. ii(0) = 0 ∧ (∀ m. m < n0 → ii(m + 1) = ii(m) + # lf(m) ∧ (nf from ii(m)) to # lf(m) = lf(m) ∧ (∀ m0. m0 ≤ m → ii(m0) ≤ ii(m))) ⊦ ∃ nf, ii. ii(0) = 0 ∧ (∀ m. m < n0 +1 → ii(m + 1) = ii(m) + # lf(m) ∧ (nf from ii(m)) to # lf(m) = lf(m) ∧ (∀ m0. m0 ≤ m → ii(m0) ≤ ii(m))) |
∀ lf. ∃ nf, ii. ii(0) = 0 ∧ (∀ m. m < n0 → ii(m + 1) = ii(m) + # lf(m) ∧ (nf from ii(m)) to # lf(m) = lf(m) ∧ (∀ m0. m0 ≤ m → ii(m0) ≤ ii(m))) ⊦ ∃ nf, ii. ii(0) = 0 ∧ (∀ m. ¬ n0 < m → ii(m + 1) = ii(m) + # lf(m) ∧ (nf from ii(m)) to # lf(m) = lf(m) ∧ (∀ m0. m0 ≤ m → ii(m0) ≤ ii(m)))
Used simplifier rules: 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)
| ∀ lf. ∃ nf, ii. ii(0) = 0 ∧ (∀ m. m < n0 → ii(m + 1) = ii(m) + # lf(m) ∧ (nf from ii(m)) to # lf(m) = lf(m) ∧ (∀ m0. m0 ≤ m → ii(m0) ≤ ii(m))) ⊦ ∃ nf, ii. ii(0) = 0 ∧ (∀ m. ¬ n0 < m → ii(m + 1) = ii(m) + # lf(m) ∧ (nf from ii(m)) to # lf(m) = lf(m) ∧ (∀ m0. m0 ≤ m → ii(m0) ≤ ii(m))) |
∃ nf, ii. ii(0) = 0 ∧ (∀ m. m < n0 → ii(m + 1) = ii(m) + # lf(m) ∧ (nf from ii(m)) to # lf(m) = lf(m) ∧ (∀ m0. m0 ≤ m → ii(m0) ≤ ii(m))) ⊦ ∃ nf, ii. ii(0) = 0 ∧ (∀ m. ¬ n0 < m → ii(m + 1) = ii(m) + # lf(m) ∧ (nf from ii(m)) to # lf(m) = lf(m) ∧ (∀ m0. m0 ≤ m → ii(m0) ≤ ii(m)))
Used terms: lf
| ∃ nf, ii. ii(0) = 0 ∧ (∀ m. m < n0 → ii(m + 1) = ii(m) + # lf(m) ∧ (nf from ii(m)) to # lf(m) = lf(m) ∧ (∀ m0. m0 ≤ m → ii(m0) ≤ ii(m))) ⊦ ∃ nf, ii. ii(0) = 0 ∧ (∀ m. ¬ n0 < m → ii(m + 1) = ii(m) + # lf(m) ∧ (nf from ii(m)) to # lf(m) = lf(m) ∧ (∀ m0. m0 ≤ m → ii(m0) ≤ ii(m))) |
ii(0) = 0, ∀ m. m < n0 → ii(m + 1) = ii(m) + # lf(m) ∧ (nf from ii(m)) to # lf(m) = lf(m) ∧ (∀ m0. m0 ≤ m → ii(m0) ≤ ii(m)) ⊦ ∃ nf, ii. ii(0) = 0 ∧ (∀ m. ¬ n0 < m → ii(m + 1) = ii(m) + # lf(m) ∧ (nf from ii(m)) to # lf(m) = lf(m) ∧ (∀ m0. m0 ≤ m → ii(m0) ≤ ii(m)))
| ii(0) = 0, ∀ m. m < n0 → ii(m + 1) = ii(m) + # lf(m) ∧ (nf from ii(m)) to # lf(m) = lf(m) ∧ (∀ m0. m0 ≤ m → ii(m0) ≤ ii(m)) ⊦ ∃ nf, ii. ii(0) = 0 ∧ (∀ m. ¬ n0 < m → ii(m + 1) = ii(m) + # lf(m) ∧ (nf from ii(m)) to # lf(m) = lf(m) ∧ (∀ m0. m0 ≤ m → ii(m0) ≤ ii(m))) |
ii(0) = 0, ∀ m. m < n0 → ii(m + 1) = ii(m) + # lf(m) ∧ (nf from ii(m)) to # lf(m) = lf(m) ∧ (∀ m0. m0 ≤ m → ii(m0) ≤ ii(m)) ⊦ (0 = n0 + 1 ⊃ ii(n0) + # lf(n0);ii(0)) = 0 ∧ (∀ m. ¬ n0 < m → (m + 1 = n0 + 1 ⊃ ii(n0) + # lf(n0);ii(m + 1)) = (m = n0 + 1 ⊃ ii(n0) + # lf(n0);ii(m)) + # lf(m) ∧ ( (λ n1. (n1 < ii(n0) + # lf(n0) ∧ ¬ n1 < ii(n0) ⊃ lf(n0)[n1 - ii(n0)];nf(n1))) from (m = n0 + 1 ⊃ ii(n0) + # lf(n0);ii(m))) to # lf(m) = lf(m) ∧ (∀ m0. m0 ≤ m → (m0 = n0 + 1 ⊃ ii(n0) + # lf(n0);ii(m0)) ≤ (m = n0 + 1 ⊃ ii(n0) + # lf(n0);ii(m))))
Used terms: λ n1. (n1 < ii(n0) + # lf(n0) ∧ ¬ n1 < ii(n0) ⊃ lf(n0)[n1 - ii(n0)];nf(n1)), λ n1. (n1 = n0 + 1 ⊃ ii(n0) + # lf(n0);ii(n1))
| ii(0) = 0, ∀ m. m < n0 → ii(m + 1) = ii(m) + # lf(m) ∧ (nf from ii(m)) to # lf(m) = lf(m) ∧ (∀ m0. m0 ≤ m → ii(m0) ≤ ii(m)) ⊦ (0 = n0 + 1 ⊃ ii(n0) + # lf(n0);ii(0)) = 0 ∧ (∀ m. ¬ n0 < m → (m + 1 = n0 + 1 ⊃ ii(n0) + # lf(n0);ii(m + 1)) = (m = n0 + 1 ⊃ ii(n0) + # lf(n0);ii(m)) + # lf(m) ∧ ( (λ n1. (n1 < ii(n0) + # lf(n0) ∧ ¬ n1 < ii(n0) ⊃ lf(n0)[n1 - ii(n0)];nf(n1))) from (m = n0 + 1 ⊃ ii(n0) + # lf(n0);ii(m))) to # lf(m) = lf(m) ∧ (∀ m0. m0 ≤ m → (m0 = n0 + 1 ⊃ ii(n0) + # lf(n0);ii(m0)) ≤ (m = n0 + 1 ⊃ ii(n0) + # lf(n0);ii(m)))) |
ii(0) = 0, m ≤ n0, ∀ m. m < n0 → ii(m + 1) = ii(m) + # lf(m) ∧ (nf from ii(m)) to # lf(m) = lf(m) ∧ (∀ m0. m0 ≤ m → ii(m0) ≤ ii(m)) ⊦ (m = n0 ⊃ ii(n0) + # lf(n0);ii(m + 1)) = (m = n0 + 1 ⊃ ii(n0) + # lf(n0);ii(m)) + # lf(m) ∧ ((λ n1. (n1 < ii(n0) + # lf(n0) ∧ ¬ n1 < ii(n0) ⊃ lf(n0)[n1 - ii(n0)];nf(n1))) from (m = n0 + 1 ⊃ ii(n0) + # lf(n0);ii(m))) to # lf(m) = lf(m) ∧ (m0 ≤ m → (m0 = n0 + 1 ⊃ ii(n0) + # lf(n0);ii(m0)) ≤ (m = n0 + 1 ⊃ ii(n0) + # lf(n0);ii(m)))
Used simplifier rules: ⊦ m < n ↔ ¬ n ≤ m; (ss) c: ⊦ m + n = n + m; from specification nat-basic a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic ⊦ m + n = m + n0 ↔ n = n0; (s) ⊦ m + 1 ≠ 0; (s)
| ii(0) = 0, m ≤ n0, ∀ m. m < n0 → ii(m + 1) = ii(m) + # lf(m) ∧ (nf from ii(m)) to # lf(m) = lf(m) ∧ (∀ m0. m0 ≤ m → ii(m0) ≤ ii(m)) ⊦ (m = n0 ⊃ ii(n0) + # lf(n0);ii(m + 1)) = (m = n0 + 1 ⊃ ii(n0) + # lf(n0);ii(m)) + # lf(m) ∧ ((λ n1. (n1 < ii(n0) + # lf(n0) ∧ ¬ n1 < ii(n0) ⊃ lf(n0)[n1 - ii(n0)];nf(n1))) from (m = n0 + 1 ⊃ ii(n0) + # lf(n0);ii(m))) to # lf(m) = lf(m) ∧ (m0 ≤ m → (m0 = n0 + 1 ⊃ ii(n0) + # lf(n0);ii(m0)) ≤ (m = n0 + 1 ⊃ ii(n0) + # lf(n0);ii(m))) |
ii(0) = 0, n0 = m, m ≤ n0, ∀ m. m < n0 → ii(m + 1) = ii(m) + # lf(m) ∧ (nf from ii(m)) to # lf(m) = lf(m) ∧ (∀ m0. m0 ≤ m → ii(m0) ≤ ii(m)) ⊦ (m = n0 ⊃ ii(n0) + # lf(n0);ii(m + 1)) = (m = n0 + 1 ⊃ ii(n0) + # lf(n0);ii(m)) + # lf(m) ∧ ((λ n1. (n1 < ii(n0) + # lf(n0) ∧ ¬ n1 < ii(n0) ⊃ lf(n0)[n1 - ii(n0)];nf(n1))) from (m = n0 + 1 ⊃ ii(n0) + # lf(n0);ii(m))) to # lf(m) = lf(m) ∧ (m0 ≤ m → (m0 = n0 + 1 ⊃ ii(n0) + # lf(n0);ii(m0)) ≤ (m = n0 + 1 ⊃ ii(n0) + # lf(n0);ii(m)))
ii(0) = 0, n0 ≠ m, m ≤ n0, ∀ m. m < n0 → ii(m + 1) = ii(m) + # lf(m) ∧ (nf from ii(m)) to # lf(m) = lf(m) ∧ (∀ m0. m0 ≤ m → ii(m0) ≤ ii(m)) ⊦ (m = n0 ⊃ ii(n0) + # lf(n0);ii(m + 1)) = (m = n0 + 1 ⊃ ii(n0) + # lf(n0);ii(m)) + # lf(m) ∧ ((λ n1. (n1 < ii(n0) + # lf(n0) ∧ ¬ n1 < ii(n0) ⊃ lf(n0)[n1 - ii(n0)];nf(n1))) from (m = n0 + 1 ⊃ ii(n0) + # lf(n0);ii(m))) to # lf(m) = lf(m) ∧ (m0 ≤ m → (m0 = n0 + 1 ⊃ ii(n0) + # lf(n0);ii(m0)) ≤ (m = n0 + 1 ⊃ ii(n0) + # lf(n0);ii(m)))
Used formulas: n0 = m
| ii(0) = 0, n0 = m, m ≤ n0, ∀ m. m < n0 → ii(m + 1) = ii(m) + # lf(m) ∧ (nf from ii(m)) to # lf(m) = lf(m) ∧ (∀ m0. m0 ≤ m → ii(m0) ≤ ii(m)) ⊦ (m = n0 ⊃ ii(n0) + # lf(n0);ii(m + 1)) = (m = n0 + 1 ⊃ ii(n0) + # lf(n0);ii(m)) + # lf(m) ∧ ((λ n1. (n1 < ii(n0) + # lf(n0) ∧ ¬ n1 < ii(n0) ⊃ lf(n0)[n1 - ii(n0)];nf(n1))) from (m = n0 + 1 ⊃ ii(n0) + # lf(n0);ii(m))) to # lf(m) = lf(m) ∧ (m0 ≤ m → (m0 = n0 + 1 ⊃ ii(n0) + # lf(n0);ii(m0)) ≤ (m = n0 + 1 ⊃ ii(n0) + # lf(n0);ii(m))) |
ii(0) = 0, ∀ m0. m0 < m → ii(m0 + 1) = ii(m0) + # lf(m0) ∧ (nf from ii(m0)) to # lf(m0) = lf(m0) ∧ (∀ m1. m1 ≤ m0 → ii(m1) ≤ ii(m0)) ⊦ ((λ n1. (n1 < ii(m) + # lf(m) ∧ ¬ n1 < ii(m) ⊃ lf(m)[n1 - ii(m)];nf(n1))) from ii(m)) to # lf(m) = lf(m) ∧ (m0 ≤ m → (m0 = m + 1 ⊃ ii(m) + # lf(m);ii(m0)) ≤ ii(m))
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 = m + n0 ↔ n = n0; (s) ⊦ m ≤ m; (s)
| ii(0) = 0, ∀ m0. m0 < m → ii(m0 + 1) = ii(m0) + # lf(m0) ∧ (nf from ii(m0)) to # lf(m0) = lf(m0) ∧ (∀ m1. m1 ≤ m0 → ii(m1) ≤ ii(m0)) ⊦ ((λ n1. (n1 < ii(m) + # lf(m) ∧ ¬ n1 < ii(m) ⊃ lf(m)[n1 - ii(m)];nf(n1))) from ii(m)) to # lf(m) = lf(m) ∧ (m0 ≤ m → (m0 = m + 1 ⊃ ii(m) + # lf(m);ii(m0)) ≤ ii(m)) |
ii(0) = 0, ((λ n1. (n1 < ii(m) + # lf(m) ∧ ¬ n1 < ii(m) ⊃ lf(m)[n1 - ii(m)];nf(n1))) from ii(m)) to # lf(m) ≠ lf(m), ∀ m0. m0 < m → ii(m0 + 1) = ii(m0) + # lf(m0) ∧ (nf from ii(m0)) to # lf(m0) = lf(m0) ∧ (∀ m1. m1 ≤ m0 → ii(m1) ≤ ii(m0)) ⊦
ii(0) = 0, m0 ≤ m, ¬ (m0 = m + 1 ⊃ ii(m) + # lf(m);ii(m0)) ≤ ii(m), ∀ m0. m0 < m → ii(m0 + 1) = ii(m0) + # lf(m0) ∧ (nf from ii(m0)) to # lf(m0) = lf(m0) ∧ (∀ m1. m1 ≤ m0 → ii(m1) ≤ ii(m0)) ⊦
| ii(0) = 0, ((λ n1. (n1 < ii(m) + # lf(m) ∧ ¬ n1 < ii(m) ⊃ lf(m)[n1 - ii(m)];nf(n1))) from ii(m)) to # lf(m) ≠ lf(m), ∀ m0. m0 < m → ii(m0 + 1) = ii(m0) + # lf(m0) ∧ (nf from ii(m0)) to # lf(m0) = lf(m0) ∧ (∀ m1. m1 ≤ m0 → ii(m1) ≤ ii(m0)) ⊦ |
⊦ x = y ↔ # x = # y ∧ (∀ n. n < # x → x[n] = y[n])
Used simplifier rules: ⊦ #(nf to n) = n; (s) ⊦ m < n ↔ ¬ n ≤ m; (ss) ⊦ m < n → (n ≤ m ↔ false); (s) m < n ⊦ (nf to n)[m] = nf(m); (s) ⊦ ((nf from n))(m) = nf(m + n); (s) ⊦ m + n < m + n0 ↔ n < n0; (s) ⊦ ¬ m + n < m; (s) ⊦ m + n - m = n; (s) a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic c: ⊦ m + n = n + m; from specification nat-basic Used terms: lf(m), ( (λ n0. (n0 < ii(m) + # lf(m) ∧ ¬ n0 < ii(m) ⊃ lf(m)[n0 - ii(m)];nf(n0))) from ii(m)) to # lf(m)
| ⊦ x = y ↔ # x = # y ∧ (∀ n. n < # x → x[n] = y[n]) |
| ii(0) = 0, m0 ≤ m, ¬ (m0 = m + 1 ⊃ ii(m) + # lf(m);ii(m0)) ≤ ii(m), ∀ m0. m0 < m → ii(m0 + 1) = ii(m0) + # lf(m0) ∧ (nf from ii(m0)) to # lf(m0) = lf(m0) ∧ (∀ m1. m1 ≤ m0 → ii(m1) ≤ ii(m0)) ⊦ |
ii(0) = 0, ii(m) < (m0 = m + 1 ⊃ ii(m) + # lf(m);ii(m0)), m0 ≤ m, ∀ m0. m0 < m → ii(m0 + 1) = ii(m0) + # lf(m0) ∧ (nf from ii(m0)) to # lf(m0) = lf(m0) ∧ (∀ m1. m1 ≤ m0 → ii(m1) ≤ ii(m0)) ⊦
Used simplifier rules: ⊦ m < n → n ≠ 0; (s) f: ⊦ m < n → n ≠ 0; (forward) from specification nat-basic ⊦ m ≤ n ↔ ¬ n < m; (ss)
| ii(0) = 0, ii(m) < (m0 = m + 1 ⊃ ii(m) + # lf(m);ii(m0)), m0 ≤ m, ∀ m0. m0 < m → ii(m0 + 1) = ii(m0) + # lf(m0) ∧ (nf from ii(m0)) to # lf(m0) = lf(m0) ∧ (∀ m1. m1 ≤ m0 → ii(m1) ≤ ii(m0)) ⊦ |
ii(0) = 0, m0 ≠ m + 1, ii(m) < ii(m0), m0 ≤ m, ∀ m0. m0 < m → ii(m0 + 1) = ii(m0) + # lf(m0) ∧ (nf from ii(m0)) to # lf(m0) = lf(m0) ∧ (∀ m1. m1 ≤ m0 → ii(m1) ≤ ii(m0)) ⊦
Used simplifier rules: ⊦ m + 1 ≤ n ↔ m < n; (s) ⊦ ¬ n < n; (s) a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic c: ⊦ m + n = n + m; from specification nat-basic
| ii(0) = 0, m0 ≠ m + 1, ii(m) < ii(m0), m0 ≤ m, ∀ m0. m0 < m → ii(m0 + 1) = ii(m0) + # lf(m0) ∧ (nf from ii(m0)) to # lf(m0) = lf(m0) ∧ (∀ m1. m1 ≤ m0 → ii(m1) ≤ ii(m0)) ⊦ |
ii(0) = 0, m0 ≠ m + 1, ii(m) < ii(m0), m0 ≤ m, ∀ m0. m0 < m → ii(m0 + 1) = ii(m0) + # lf(m0) ∧ (nf from ii(m0)) to # lf(m0) = lf(m0) ∧ (∀ m1. m1 ≤ m0 → ii(m1) ≤ ii(m0)) ⊦
Used simplifier rules: ⊦ m < n → n ≠ 0; (s) f: ⊦ m < n → n ≠ 0; (forward) from specification nat-basic
| ii(0) = 0, m0 ≠ m + 1, ii(m) < ii(m0), m0 ≤ m, ∀ m0. m0 < m → ii(m0 + 1) = ii(m0) + # lf(m0) ∧ (nf from ii(m0)) to # lf(m0) = lf(m0) ∧ (∀ m1. m1 ≤ m0 → ii(m1) ≤ ii(m0)) ⊦ |
ii(0) = 0, m0 ≠ m, m0 ≠ m + 1, ii(m) < ii(m0), m0 ≤ m, ∀ m0. m0 < m → ii(m0 + 1) = ii(m0) + # lf(m0) ∧ (nf from ii(m0)) to # lf(m0) = lf(m0) ∧ (∀ m1. m1 ≤ m0 → ii(m1) ≤ ii(m0)) ⊦
Used simplifier rules: ⊦ m = m + n ↔ n = 0; (s) a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic c: ⊦ m + n = n + m; from specification nat-basic ⊦ m ≤ m; (s) ⊦ ¬ n < n; (s) Used formulas: m0 = m
| ii(0) = 0, m0 ≠ m, m0 ≠ m + 1, ii(m) < ii(m0), m0 ≤ m, ∀ m0. m0 < m → ii(m0 + 1) = ii(m0) + # lf(m0) ∧ (nf from ii(m0)) to # lf(m0) = lf(m0) ∧ (∀ m1. m1 ≤ m0 → ii(m1) ≤ ii(m0)) ⊦ |
ii(0) = 0, m0 ≠ m + 1, m0 ≠ m, m0 < m, ii(m) < ii(m0), ∀ m0. m0 < m → ii(m0 + 1) = ii(m0) + # lf(m0) ∧ (nf from ii(m0)) to # lf(m0) = lf(m0) ∧ (∀ m1. m1 ≤ m0 → ii(m1) ≤ ii(m0)) ⊦
Used simplifier rules: ⊦ m < n → n ≠ 0; (s) f: ⊦ m < n → n ≠ 0; (forward) from specification nat-basic ⊦ m ≠ n → (m ≤ n ↔ m < n); (s)
| ii(0) = 0, m0 ≠ m + 1, m0 ≠ m, m0 < m, ii(m) < ii(m0), ∀ m0. m0 < m → ii(m0 + 1) = ii(m0) + # lf(m0) ∧ (nf from ii(m0)) to # lf(m0) = lf(m0) ∧ (∀ m1. m1 ≤ m0 → ii(m1) ≤ ii(m0)) ⊦ |
ii(0) = 0, m0 ≠ m + 1, m0 ≠ m, ii(m) < ii(m0), m0 < m, m - 1 < m → ii((m - 1) + 1) = ii(m - 1) + # lf(m - 1) ∧ (nf from ii(m - 1)) to # lf(m - 1) = lf(m - 1) ∧ (∀ m1. m1 ≤ m - 1 → ii(m1) ≤ ii(m - 1)), ∀ m0. m0 < m → ii(m0 + 1) = ii(m0) + # lf(m0) ∧ (nf from ii(m0)) to # lf(m0) = lf(m0) ∧ (∀ m1. m1 ≤ m0 → ii(m1) ≤ ii(m0)) ⊦
Used terms: m - 1
| ii(0) = 0, m0 ≠ m + 1, m0 ≠ m, ii(m) < ii(m0), m0 < m, m - 1 < m → ii((m - 1) + 1) = ii(m - 1) + # lf(m - 1) ∧ (nf from ii(m - 1)) to # lf(m - 1) = lf(m - 1) ∧ (∀ m1. m1 ≤ m - 1 → ii(m1) ≤ ii(m - 1)), ∀ m0. m0 < m → ii(m0 + 1) = ii(m0) + # lf(m0) ∧ (nf from ii(m0)) to # lf(m0) = lf(m0) ∧ (∀ m1. m1 ≤ m0 → ii(m1) ≤ ii(m0)) ⊦ |
ii(0) = 0, ii((m - 1) + 1) = ii(m - 1) + # lf(m - 1), (nf from ii(m - 1)) to # lf(m - 1) = lf(m - 1), m0 ≠ m + 1, m0 ≠ m, m0 < m, ii(m) < ii(m0), ∀ m0. m0 < m → ii(m0 + 1) = ii(m0) + # lf(m0) ∧ (nf from ii(m0)) to # lf(m0) = lf(m0) ∧ (∀ m1. m1 ≤ m0 → ii(m1) ≤ ii(m0)), ∀ m1. m1 < m → ii(m1) ≤ ii(m - 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) n0 ≤ n ⊦ m ≤ n - n0 ↔ m + n0 ≤ n; (s) ⊦ m < n → n ≠ 0; (s) ⊦ m < 1 ↔ m = 0; (s) ⊦ m ≤ n ↔ ¬ n < m; (ss) ⊦ ¬ n < n; (s) ⊦ m < n + 1 ↔ ¬ n < m; (s) n0 ≤ n ⊦ n - n0 < m ↔ n < m + n0; (s)
| ii(0) = 0, ii((m - 1) + 1) = ii(m - 1) + # lf(m - 1), (nf from ii(m - 1)) to # lf(m - 1) = lf(m - 1), m0 ≠ m + 1, m0 ≠ m, m0 < m, ii(m) < ii(m0), ∀ m0. m0 < m → ii(m0 + 1) = ii(m0) + # lf(m0) ∧ (nf from ii(m0)) to # lf(m0) = lf(m0) ∧ (∀ m1. m1 ≤ m0 → ii(m1) ≤ ii(m0)), ∀ m1. m1 < m → ii(m1) ≤ ii(m - 1) ⊦ |
ii(m2 + 1) = ii(m2) + # lf(m2), ii(0) = 0, m = m2 + 1, (nf from ii(m2)) to # lf(m2) = lf(m2), m ≠ 0, m0 ≠ m + 1, m0 ≠ m, ii(m) < ii(m0), m0 < m, ∀ m1. m1 < m → ii(m1) ≤ ii(m2), ∀ m0. m0 < m → ii(m0 + 1) = ii(m0) + # lf(m0) ∧ (nf from ii(m0)) to # lf(m0) = lf(m0) ∧ (∀ m1. m1 ≤ m0 → ii(m1) ≤ ii(m0)) ⊦
Used simplifier rules: a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic c: ⊦ m + n = n + m; from specification nat-basic ⊦ ¬ n < 0; (s) n ≠ 0 ⊦ m = n - 1 ↔ n = m + 1; (elim) Used terms: m, m2
| ii(m2 + 1) = ii(m2) + # lf(m2), ii(0) = 0, m = m2 + 1, (nf from ii(m2)) to # lf(m2) = lf(m2), m ≠ 0, m0 ≠ m + 1, m0 ≠ m, ii(m) < ii(m0), m0 < m, ∀ m1. m1 < m → ii(m1) ≤ ii(m2), ∀ m0. m0 < m → ii(m0 + 1) = ii(m0) + # lf(m0) ∧ (nf from ii(m0)) to # lf(m0) = lf(m0) ∧ (∀ m1. m1 ≤ m0 → ii(m1) ≤ ii(m0)) ⊦ |
ii(m2 + 1) = ii(m2) + # lf(m2), ii(0) = 0, (nf from ii(m2)) to # lf(m2) = lf(m2), m0 ≠ 2 + m2, m0 ≠ m2 + 1, ii(m2 + 1) < ii(m0), m0 ≤ m2, ∀ m1. ¬ m2 < m1 → ii(m1) ≤ ii(m2), ∀ m. ¬ m2 < m → ii(m + 1) = ii(m) + # lf(m) ∧ (nf from ii(m)) to # lf(m) = lf(m) ∧ (∀ m1. m1 ≤ m → ii(m1) ≤ ii(m)) ⊦
Used simplifier rules: lf-02: ⊦ m < n ∧ m = n0 → n0 < n; (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 < n ↔ ¬ n ≤ m; (ss) ⊦ m + 1 ≠ 0; (s)
| ii(m2 + 1) = ii(m2) + # lf(m2), ii(0) = 0, (nf from ii(m2)) to # lf(m2) = lf(m2), m0 ≠ 2 + m2, m0 ≠ m2 + 1, ii(m2 + 1) < ii(m0), m0 ≤ m2, ∀ m1. ¬ m2 < m1 → ii(m1) ≤ ii(m2), ∀ m. ¬ m2 < m → ii(m + 1) = ii(m) + # lf(m) ∧ (nf from ii(m)) to # lf(m) = lf(m) ∧ (∀ m1. m1 ≤ m → ii(m1) ≤ ii(m)) ⊦ |
Used simplifier rules: ⊦ m ≤ n → (n < m ↔ false); (s) fle: ⊦ m < n ∧ n ≤ n0 → m < n0; (forward) from specification nat f: ⊦ m < n → n ≠ 0; (forward) from specification nat-basic lf-02: ⊦ m < n ∧ m = n0 → n0 < n; (forward) from specification nat-basic ⊦ m < n → n ≠ 0; (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 Used terms: m0
| ii(0) = 0, n0 ≠ m, m ≤ n0, ∀ m. m < n0 → ii(m + 1) = ii(m) + # lf(m) ∧ (nf from ii(m)) to # lf(m) = lf(m) ∧ (∀ m0. m0 ≤ m → ii(m0) ≤ ii(m)) ⊦ (m = n0 ⊃ ii(n0) + # lf(n0);ii(m + 1)) = (m = n0 + 1 ⊃ ii(n0) + # lf(n0);ii(m)) + # lf(m) ∧ ((λ n1. (n1 < ii(n0) + # lf(n0) ∧ ¬ n1 < ii(n0) ⊃ lf(n0)[n1 - ii(n0)];nf(n1))) from (m = n0 + 1 ⊃ ii(n0) + # lf(n0);ii(m))) to # lf(m) = lf(m) ∧ (m0 ≤ m → (m0 = n0 + 1 ⊃ ii(n0) + # lf(n0);ii(m0)) ≤ (m = n0 + 1 ⊃ ii(n0) + # lf(n0);ii(m))) |
ii(0) = 0, n0 ≠ m, m < n0, ∀ m. m < n0 → ii(m + 1) = ii(m) + # lf(m) ∧ (nf from ii(m)) to # lf(m) = lf(m) ∧ (∀ m0. m0 ≤ m → ii(m0) ≤ ii(m)) ⊦ ii(m + 1) = (m = n0 + 1 ⊃ ii(n0) + # lf(n0);ii(m)) + # lf(m) ∧ ((λ n1. (n1 < ii(n0) + # lf(n0) ∧ ¬ n1 < ii(n0) ⊃ lf(n0)[n1 - ii(n0)];nf(n1))) from (m = n0 + 1 ⊃ ii(n0) + # lf(n0);ii(m))) to # lf(m) = lf(m) ∧ (m0 ≤ m → (m0 = n0 + 1 ⊃ ii(n0) + # lf(n0);ii(m0)) ≤ (m = n0 + 1 ⊃ ii(n0) + # lf(n0);ii(m)))
Used simplifier rules: ⊦ m < n → n ≠ 0; (s) f: ⊦ m < n → n ≠ 0; (forward) from specification nat-basic ⊦ m ≠ n → (m ≤ n ↔ m < n); (s)
| ii(0) = 0, n0 ≠ m, m < n0, ∀ m. m < n0 → ii(m + 1) = ii(m) + # lf(m) ∧ (nf from ii(m)) to # lf(m) = lf(m) ∧ (∀ m0. m0 ≤ m → ii(m0) ≤ ii(m)) ⊦ ii(m + 1) = (m = n0 + 1 ⊃ ii(n0) + # lf(n0);ii(m)) + # lf(m) ∧ ((λ n1. (n1 < ii(n0) + # lf(n0) ∧ ¬ n1 < ii(n0) ⊃ lf(n0)[n1 - ii(n0)];nf(n1))) from (m = n0 + 1 ⊃ ii(n0) + # lf(n0);ii(m))) to # lf(m) = lf(m) ∧ (m0 ≤ m → (m0 = n0 + 1 ⊃ ii(n0) + # lf(n0);ii(m0)) ≤ (m = n0 + 1 ⊃ ii(n0) + # lf(n0);ii(m))) |
ii(0) = 0, m ≠ n0 + 1, n0 ≠ m, m < n0, ∀ m. m < n0 → ii(m + 1) = ii(m) + # lf(m) ∧ (nf from ii(m)) to # lf(m) = lf(m) ∧ (∀ m0. m0 ≤ m → ii(m0) ≤ ii(m)) ⊦ ii(m + 1) = (m = n0 + 1 ⊃ ii(n0) + # lf(n0);ii(m)) + # lf(m) ∧ ((λ n1. (n1 < ii(n0) + # lf(n0) ∧ ¬ n1 < ii(n0) ⊃ lf(n0)[n1 - ii(n0)];nf(n1))) from (m = n0 + 1 ⊃ ii(n0) + # lf(n0);ii(m))) to # lf(m) = lf(m) ∧ (m0 ≤ m → (m0 = n0 + 1 ⊃ ii(n0) + # lf(n0);ii(m0)) ≤ (m = n0 + 1 ⊃ ii(n0) + # lf(n0);ii(m)))
Used simplifier rules: ⊦ m = m + n ↔ n = 0; (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 Used formulas: m = n0 + 1
| ii(0) = 0, m ≠ n0 + 1, n0 ≠ m, m < n0, ∀ m. m < n0 → ii(m + 1) = ii(m) + # lf(m) ∧ (nf from ii(m)) to # lf(m) = lf(m) ∧ (∀ m0. m0 ≤ m → ii(m0) ≤ ii(m)) ⊦ ii(m + 1) = (m = n0 + 1 ⊃ ii(n0) + # lf(n0);ii(m)) + # lf(m) ∧ ((λ n1. (n1 < ii(n0) + # lf(n0) ∧ ¬ n1 < ii(n0) ⊃ lf(n0)[n1 - ii(n0)];nf(n1))) from (m = n0 + 1 ⊃ ii(n0) + # lf(n0);ii(m))) to # lf(m) = lf(m) ∧ (m0 ≤ m → (m0 = n0 + 1 ⊃ ii(n0) + # lf(n0);ii(m0)) ≤ (m = n0 + 1 ⊃ ii(n0) + # lf(n0);ii(m))) |
ii(0) = 0, m ≠ n0 + 1, n0 ≠ m, m < n0, ∀ m. m < n0 → ii(m + 1) = ii(m) + # lf(m) ∧ (nf from ii(m)) to # lf(m) = lf(m) ∧ (∀ m0. m0 ≤ m → ii(m0) ≤ ii(m)) ⊦ ii(m + 1) = ii(m) + # lf(m) ∧ ((λ n1. (n1 < ii(n0) + # lf(n0) ∧ ¬ n1 < ii(n0) ⊃ lf(n0)[n1 - ii(n0)];nf(n1))) from ii(m)) to # lf(m) = lf(m) ∧ (m0 ≤ m → (m0 = n0 + 1 ⊃ ii(n0) + # lf(n0);ii(m0)) ≤ ii(m))
| ii(0) = 0, m ≠ n0 + 1, n0 ≠ m, m < n0, ∀ m. m < n0 → ii(m + 1) = ii(m) + # lf(m) ∧ (nf from ii(m)) to # lf(m) = lf(m) ∧ (∀ m0. m0 ≤ m → ii(m0) ≤ ii(m)) ⊦ ii(m + 1) = ii(m) + # lf(m) ∧ ((λ n1. (n1 < ii(n0) + # lf(n0) ∧ ¬ n1 < ii(n0) ⊃ lf(n0)[n1 - ii(n0)];nf(n1))) from ii(m)) to # lf(m) = lf(m) ∧ (m0 ≤ m → (m0 = n0 + 1 ⊃ ii(n0) + # lf(n0);ii(m0)) ≤ ii(m)) |
ii(0) = 0, m ≠ n0 + 1, n0 ≠ m, m < n0, m < n0 → ii(m + 1) = ii(m) + # lf(m) ∧ (nf from ii(m)) to # lf(m) = lf(m) ∧ (∀ m0. m0 ≤ m → ii(m0) ≤ ii(m)), ∀ m. m < n0 → ii(m + 1) = ii(m) + # lf(m) ∧ (nf from ii(m)) to # lf(m) = lf(m) ∧ (∀ m0. m0 ≤ m → ii(m0) ≤ ii(m)) ⊦ ii(m + 1) = ii(m) + # lf(m) ∧ ((λ n1. (n1 < ii(n0) + # lf(n0) ∧ ¬ n1 < ii(n0) ⊃ lf(n0)[n1 - ii(n0)];nf(n1))) from ii(m)) to # lf(m) = lf(m) ∧ (m0 ≤ m → (m0 = n0 + 1 ⊃ ii(n0) + # lf(n0);ii(m0)) ≤ ii(m))
Used terms: m
| ii(0) = 0, m ≠ n0 + 1, n0 ≠ m, m < n0, m < n0 → ii(m + 1) = ii(m) + # lf(m) ∧ (nf from ii(m)) to # lf(m) = lf(m) ∧ (∀ m0. m0 ≤ m → ii(m0) ≤ ii(m)), ∀ m. m < n0 → ii(m + 1) = ii(m) + # lf(m) ∧ (nf from ii(m)) to # lf(m) = lf(m) ∧ (∀ m0. m0 ≤ m → ii(m0) ≤ ii(m)) ⊦ ii(m + 1) = ii(m) + # lf(m) ∧ ((λ n1. (n1 < ii(n0) + # lf(n0) ∧ ¬ n1 < ii(n0) ⊃ lf(n0)[n1 - ii(n0)];nf(n1))) from ii(m)) to # lf(m) = lf(m) ∧ (m0 ≤ m → (m0 = n0 + 1 ⊃ ii(n0) + # lf(n0);ii(m0)) ≤ ii(m)) |
ii(0) = 0, ii(m + 1) = ii(m) + # lf(m), (nf from ii(m)) to # lf(m) = lf(m), m ≠ n0 + 1, n0 ≠ m, m < n0, ∀ m. m < n0 → ii(m + 1) = ii(m) + # lf(m) ∧ (nf from ii(m)) to # lf(m) = lf(m) ∧ (∀ m0. m0 ≤ m → ii(m0) ≤ ii(m)), ∀ m0. m0 ≤ m → ii(m0) ≤ ii(m) ⊦ ((λ n1. (n1 < ii(n0) + # lf(n0) ∧ ¬ n1 < ii(n0) ⊃ lf(n0)[n1 - ii(n0)];nf(n1))) from ii(m)) to # lf(m) = lf(m) ∧ (m0 ≤ m → (m0 = n0 + 1 ⊃ ii(n0) + # lf(n0);ii(m0)) ≤ ii(m))
| ii(0) = 0, ii(m + 1) = ii(m) + # lf(m), (nf from ii(m)) to # lf(m) = lf(m), m ≠ n0 + 1, n0 ≠ m, m < n0, ∀ m. m < n0 → ii(m + 1) = ii(m) + # lf(m) ∧ (nf from ii(m)) to # lf(m) = lf(m) ∧ (∀ m0. m0 ≤ m → ii(m0) ≤ ii(m)), ∀ m0. m0 ≤ m → ii(m0) ≤ ii(m) ⊦ ((λ n1. (n1 < ii(n0) + # lf(n0) ∧ ¬ n1 < ii(n0) ⊃ lf(n0)[n1 - ii(n0)];nf(n1))) from ii(m)) to # lf(m) = lf(m) ∧ (m0 ≤ m → (m0 = n0 + 1 ⊃ ii(n0) + # lf(n0);ii(m0)) ≤ ii(m)) |
ii(m + 1) = ii(m) + # lf(m), ii(0) = 0, (nf from ii(m)) to # lf(m) = lf(m), m ≠ n0 + 1, n0 ≠ m, ((λ n1. (n1 < ii(n0) + # lf(n0) ∧ ¬ n1 < ii(n0) ⊃ lf(n0)[n1 - ii(n0)];nf(n1))) from ii(m)) to # lf(m) ≠ lf(m), m < n0, ∀ m0. m0 ≤ m → ii(m0) ≤ ii(m), ∀ m. m < n0 → ii(m + 1) = ii(m) + # lf(m) ∧ (nf from ii(m)) to # lf(m) = lf(m) ∧ (∀ m0. m0 ≤ m → ii(m0) ≤ ii(m)) ⊦
ii(m + 1) = ii(m) + # lf(m), ii(0) = 0, (nf from ii(m)) to # lf(m) = lf(m), m ≠ n0 + 1, n0 ≠ m, m < n0, m0 ≤ m, ¬ (m0 = n0 + 1 ⊃ ii(n0) + # lf(n0);ii(m0)) ≤ ii(m), ∀ m0. m0 ≤ m → ii(m0) ≤ ii(m), ∀ m. m < n0 → ii(m + 1) = ii(m) + # lf(m) ∧ (nf from ii(m)) to # lf(m) = lf(m) ∧ (∀ m0. m0 ≤ m → ii(m0) ≤ ii(m)) ⊦
| ii(m + 1) = ii(m) + # lf(m), ii(0) = 0, (nf from ii(m)) to # lf(m) = lf(m), m ≠ n0 + 1, n0 ≠ m, ((λ n1. (n1 < ii(n0) + # lf(n0) ∧ ¬ n1 < ii(n0) ⊃ lf(n0)[n1 - ii(n0)];nf(n1))) from ii(m)) to # lf(m) ≠ lf(m), m < n0, ∀ m0. m0 ≤ m → ii(m0) ≤ ii(m), ∀ m. m < n0 → ii(m + 1) = ii(m) + # lf(m) ∧ (nf from ii(m)) to # lf(m) = lf(m) ∧ (∀ m0. m0 ≤ m → ii(m0) ≤ ii(m)) ⊦ |
⊦ x = y ↔ # x = # y ∧ (∀ n. n < # x → x[n] = y[n])
ii(0) = 0, ii(m + 1) = ii(m) + # lf(m), (nf from ii(m)) to # lf(m) = lf(m), m ≠ n0 + 1, n0 ≠ m, m < n0, ∀ m. m < n0 → ii(m + 1) = ii(m) + # lf(m) ∧ (nf from ii(m)) to # lf(m) = lf(m) ∧ (∀ m0. m0 ≤ m → ii(m0) ≤ ii(m)), ∀ m0. m0 ≤ m → ii(m0) ≤ ii(m), #(((λ n1. (n1 < ii(n0) + # lf(n0) ∧ ¬ n1 < ii(n0) ⊃ lf(n0)[n1 - ii(n0)];nf(n1))) from ii(m)) to # lf(m)) ≠ # lf(m) ∨ (∃ n. ¬ ( n < #(((λ n1. (n1 < ii(n0) + # lf(n0) ∧ ¬ n1 < ii(n0) ⊃ lf(n0)[n1 - ii(n0)];nf(n1))) from ii(m)) to # lf(m)) → (((λ n1. (n1 < ii(n0) + # lf(n0) ∧ ¬ n1 < ii(n0) ⊃ lf(n0)[n1 - ii(n0)];nf(n1))) from ii(m)) to # lf(m))[n] = lf(m)[n])) ⊦
Used terms: lf(m), ( (λ n1. (n1 < ii(n0) + # lf(n0) ∧ ¬ n1 < ii(n0) ⊃ lf(n0)[n1 - ii(n0)] ;nf(n1) )) from ii(m)) to # lf(m)
| ⊦ x = y ↔ # x = # y ∧ (∀ n. n < # x → x[n] = y[n]) |
| ii(0) = 0, ii(m + 1) = ii(m) + # lf(m), (nf from ii(m)) to # lf(m) = lf(m), m ≠ n0 + 1, n0 ≠ m, m < n0, ∀ m. m < n0 → ii(m + 1) = ii(m) + # lf(m) ∧ (nf from ii(m)) to # lf(m) = lf(m) ∧ (∀ m0. m0 ≤ m → ii(m0) ≤ ii(m)), ∀ m0. m0 ≤ m → ii(m0) ≤ ii(m), #(((λ n1. (n1 < ii(n0) + # lf(n0) ∧ ¬ n1 < ii(n0) ⊃ lf(n0)[n1 - ii(n0)];nf(n1))) from ii(m)) to # lf(m)) ≠ # lf(m) ∨ (∃ n. ¬ ( n < #(((λ n1. (n1 < ii(n0) + # lf(n0) ∧ ¬ n1 < ii(n0) ⊃ lf(n0)[n1 - ii(n0)];nf(n1))) from ii(m)) to # lf(m)) → (((λ n1. (n1 < ii(n0) + # lf(n0) ∧ ¬ n1 < ii(n0) ⊃ lf(n0)[n1 - ii(n0)];nf(n1))) from ii(m)) to # lf(m))[n] = lf(m)[n])) ⊦ |
⊦ nf from n = (λ m. nf(n + m))
ii(m + 1) = ii(m) + # lf(m), ii(0) = 0, (nf from ii(m)) to # lf(m) = lf(m), m ≠ n0 + 1, n0 ≠ m, m < n0, ∀ m0. m0 ≤ m → ii(m0) ≤ ii(m), ∀ m. m < n0 → ii(m + 1) = ii(m) + # lf(m) ∧ (nf from ii(m)) to # lf(m) = lf(m) ∧ (∀ m0. m0 ≤ m → ii(m0) ≤ ii(m)), #((λ m0. (ii(m) + m0 < ii(n0) + # lf(n0) ∧ ¬ ii(m) + m0 < ii(n0) ⊃ lf(n0)[ii(m) + m0 - ii(n0)];nf(ii(m) + m0))) to # lf(m)) ≠ # lf(m) ∨ (∃ n. ¬ ( n < # ((λ m0. (ii(m) + m0 < ii(n0) + # lf(n0) ∧ ¬ ii(m) + m0 < ii(n0) ⊃ lf(n0)[ii(m) + m0 - ii(n0)];nf(ii(m) + m0))) to # lf(m)) → ((λ m0. (ii(m) + m0 < ii(n0) + # lf(n0) ∧ ¬ ii(m) + m0 < ii(n0) ⊃ lf(n0)[ii(m) + m0 - ii(n0)];nf(ii(m) + m0))) to # lf(m))[n] = lf(m)[n])) ⊦
Used terms: ii(m), λ n1. (n1 < ii(n0) + # lf(n0) ∧ ¬ n1 < ii(n0) ⊃ lf(n0)[n1 - ii(n0)];nf(n1))
| ⊦ nf from n = (λ m. nf(n + m)) |
| ii(m + 1) = ii(m) + # lf(m), ii(0) = 0, (nf from ii(m)) to # lf(m) = lf(m), m ≠ n0 + 1, n0 ≠ m, m < n0, ∀ m0. m0 ≤ m → ii(m0) ≤ ii(m), ∀ m. m < n0 → ii(m + 1) = ii(m) + # lf(m) ∧ (nf from ii(m)) to # lf(m) = lf(m) ∧ (∀ m0. m0 ≤ m → ii(m0) ≤ ii(m)), #((λ m0. (ii(m) + m0 < ii(n0) + # lf(n0) ∧ ¬ ii(m) + m0 < ii(n0) ⊃ lf(n0)[ii(m) + m0 - ii(n0)];nf(ii(m) + m0))) to # lf(m)) ≠ # lf(m) ∨ (∃ n. ¬ ( n < # ((λ m0. (ii(m) + m0 < ii(n0) + # lf(n0) ∧ ¬ ii(m) + m0 < ii(n0) ⊃ lf(n0)[ii(m) + m0 - ii(n0)];nf(ii(m) + m0))) to # lf(m)) → ((λ m0. (ii(m) + m0 < ii(n0) + # lf(n0) ∧ ¬ ii(m) + m0 < ii(n0) ⊃ lf(n0)[ii(m) + m0 - ii(n0)];nf(ii(m) + m0))) to # lf(m))[n] = lf(m)[n])) ⊦ |
ii(m + 1) = ii(m) + # lf(m), ii(0) = 0, (nf from ii(m)) to # lf(m) = lf(m), (ii(m) + n < ii(n0) + # lf(n0) ∧ ¬ ii(m) + n < ii(n0) ⊃ lf(n0)[ii(m) + n - ii(n0)];nf(ii(m) + n)) ≠ lf(m)[n], lf(m) ≠ [], m ≠ n0 + 1, n0 ≠ m, n < # lf(m), m < n0, ∀ m0. m0 ≤ m → ii(m0) ≤ ii(m), ∀ m. m < n0 → ii(m + 1) = ii(m) + # lf(m) ∧ (nf from ii(m)) to # lf(m) = lf(m) ∧ (∀ m0. m0 ≤ m → ii(m0) ≤ ii(m)) ⊦
Used simplifier rules: ⊦ # x = 0 ↔ x = []; (s) f: ⊦ m < n → n ≠ 0; (forward) from specification nat-basic m < n ⊦ (nf to n)[m] = nf(m); (s) ⊦ m < n → (n ≤ m ↔ false); (s) ⊦ m < n ↔ ¬ n ≤ m; (ss) ⊦ #(nf to n) = n; (s)
| ii(m + 1) = ii(m) + # lf(m), ii(0) = 0, (nf from ii(m)) to # lf(m) = lf(m), (ii(m) + n < ii(n0) + # lf(n0) ∧ ¬ ii(m) + n < ii(n0) ⊃ lf(n0)[ii(m) + n - ii(n0)];nf(ii(m) + n)) ≠ lf(m)[n], lf(m) ≠ [], m ≠ n0 + 1, n0 ≠ m, n < # lf(m), m < n0, ∀ m0. m0 ≤ m → ii(m0) ≤ ii(m), ∀ m. m < n0 → ii(m + 1) = ii(m) + # lf(m) ∧ (nf from ii(m)) to # lf(m) = lf(m) ∧ (∀ m0. m0 ≤ m → ii(m0) ≤ ii(m)) ⊦ |
ii(0) = 0, ii(m + 1) = ii(m) + # lf(m), (nf from ii(m)) to # lf(m) = lf(m), lf(n0)[ii(m) + n - ii(n0)] ≠ lf(m)[n], lf(m) ≠ [], m ≠ n0 + 1, n0 ≠ m, m < n0, n < # lf(m), ii(m) + n < ii(n0) + # lf(n0), ¬ ii(m) + n < ii(n0), ∀ m. m < n0 → ii(m + 1) = ii(m) + # lf(m) ∧ (nf from ii(m)) to # lf(m) = lf(m) ∧ (∀ m0. m0 ≤ m → ii(m0) ≤ ii(m)), ∀ m0. m0 ≤ m → ii(m0) ≤ ii(m) ⊦
ii(0) = 0, ii(m + 1) = ii(m) + # lf(m), (nf from ii(m)) to # lf(m) = lf(m), lf(m) ≠ [], m ≠ n0 + 1, n0 ≠ m, nf(ii(m) + n) ≠ lf(m)[n], m < n0, n < # lf(m), ∀ m. m < n0 → ii(m + 1) = ii(m) + # lf(m) ∧ (nf from ii(m)) to # lf(m) = lf(m) ∧ (∀ m0. m0 ≤ m → ii(m0) ≤ ii(m)), ∀ m0. m0 ≤ m → ii(m0) ≤ ii(m), ¬ ii(m) + n < ii(n0) + # lf(n0) ∨ ii(m) + n < ii(n0) ⊦
| ii(0) = 0, ii(m + 1) = ii(m) + # lf(m), (nf from ii(m)) to # lf(m) = lf(m), lf(n0)[ii(m) + n - ii(n0)] ≠ lf(m)[n], lf(m) ≠ [], m ≠ n0 + 1, n0 ≠ m, m < n0, n < # lf(m), ii(m) + n < ii(n0) + # lf(n0), ¬ ii(m) + n < ii(n0), ∀ m. m < n0 → ii(m + 1) = ii(m) + # lf(m) ∧ (nf from ii(m)) to # lf(m) = lf(m) ∧ (∀ m0. m0 ≤ m → ii(m0) ≤ ii(m)), ∀ m0. m0 ≤ m → ii(m0) ≤ ii(m) ⊦ |
ii(0) = 0, ii(m + 1) = ii(m) + # lf(m), (nf from ii(m)) to # lf(m) = lf(m), lf(n0)[ii(m) + n - ii(n0)] ≠ lf(m)[n], lf(m) ≠ [], lf(n0) ≠ [], m ≠ n0 + 1, n0 ≠ m, m < n0, n < # lf(m), ii(m) + n < ii(n0) + # lf(n0), ii(n0) ≤ ii(m) + n, ∀ m. m < n0 → ii(m + 1) = ii(m) + # lf(m) ∧ (nf from ii(m)) to # lf(m) = lf(m) ∧ (∀ m0. m0 ≤ m → ii(m0) ≤ ii(m)), ∀ m0. m0 ≤ m → ii(m0) ≤ ii(m) ⊦
Used simplifier rules: c: ⊦ m + n = n + m; from specification nat-basic a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic ⊦ # x = 0 ↔ x = []; (s) ⊦ m < m + n ↔ n ≠ 0; (s) ⊦ m < n → n ≠ 0; (s) 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 ≤ m; (ss)
| ii(0) = 0, ii(m + 1) = ii(m) + # lf(m), (nf from ii(m)) to # lf(m) = lf(m), lf(n0)[ii(m) + n - ii(n0)] ≠ lf(m)[n], lf(m) ≠ [], lf(n0) ≠ [], m ≠ n0 + 1, n0 ≠ m, m < n0, n < # lf(m), ii(m) + n < ii(n0) + # lf(n0), ii(n0) ≤ ii(m) + n, ∀ m. m < n0 → ii(m + 1) = ii(m) + # lf(m) ∧ (nf from ii(m)) to # lf(m) = lf(m) ∧ (∀ m0. m0 ≤ m → ii(m0) ≤ ii(m)), ∀ m0. m0 ≤ m → ii(m0) ≤ ii(m) ⊦ |
ii(m) + n = n1 + ii(n0), ii(m + 1) = ii(m) + # lf(m), ii(0) = 0, (nf from ii(m)) to # lf(m) = lf(m), lf(n0)[n1] ≠ lf(m)[n], lf(m) ≠ [], lf(n0) ≠ [], m ≠ n0 + 1, n0 ≠ m, ii(m) + n < ii(n0) + # lf(n0), n < # lf(m), m < n0, ii(n0) ≤ ii(m) + n, ∀ m0. m0 ≤ m → ii(m0) ≤ ii(m), ∀ m. m < n0 → ii(m + 1) = ii(m) + # lf(m) ∧ (nf from ii(m)) to # lf(m) = lf(m) ∧ (∀ m0. m0 ≤ m → ii(m0) ≤ ii(m)) ⊦
Used simplifier rules: n ≤ m ⊦ n0 = m - n ↔ m = n0 + n; (elim) Used terms: ii(m) + n, ii(n0), n1
| ii(m) + n = n1 + ii(n0), ii(m + 1) = ii(m) + # lf(m), ii(0) = 0, (nf from ii(m)) to # lf(m) = lf(m), lf(n0)[n1] ≠ lf(m)[n], lf(m) ≠ [], lf(n0) ≠ [], m ≠ n0 + 1, n0 ≠ m, ii(m) + n < ii(n0) + # lf(n0), n < # lf(m), m < n0, ii(n0) ≤ ii(m) + n, ∀ m0. m0 ≤ m → ii(m0) ≤ ii(m), ∀ m. m < n0 → ii(m + 1) = ii(m) + # lf(m) ∧ (nf from ii(m)) to # lf(m) = lf(m) ∧ (∀ m0. m0 ≤ m → ii(m0) ≤ ii(m)) ⊦ |
ii(m) + n = n1 + ii(n0), ii(0) = 0, ii(m + 1) = ii(m) + # lf(m), (nf from ii(m)) to # lf(m) = lf(m), lf(n0)[n1] ≠ lf(m)[n], lf(m) ≠ [], lf(n0) ≠ [], m ≠ n0 + 1, n0 ≠ m, n1 < # lf(n0), m < n0, n < # lf(m), ∀ m. m < n0 → ii(m + 1) = ii(m) + # lf(m) ∧ (nf from ii(m)) to # lf(m) = lf(m) ∧ (∀ m0. m0 ≤ m → ii(m0) ≤ ii(m)), ∀ m0. m0 ≤ m → ii(m0) ≤ ii(m) ⊦
Used simplifier rules: ⊦ # x = 0 ↔ x = []; (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 ≤ m + n; (s) ⊦ m + n < m + n0 ↔ n < n0; (s)
| ii(m) + n = n1 + ii(n0), ii(0) = 0, ii(m + 1) = ii(m) + # lf(m), (nf from ii(m)) to # lf(m) = lf(m), lf(n0)[n1] ≠ lf(m)[n], lf(m) ≠ [], lf(n0) ≠ [], m ≠ n0 + 1, n0 ≠ m, n1 < # lf(n0), m < n0, n < # lf(m), ∀ m. m < n0 → ii(m + 1) = ii(m) + # lf(m) ∧ (nf from ii(m)) to # lf(m) = lf(m) ∧ (∀ m0. m0 ≤ m → ii(m0) ≤ ii(m)), ∀ m0. m0 ≤ m → ii(m0) ≤ ii(m) ⊦ |
ii(m) + n = n1 + ii(n0), ii(m + 1) = ii(m) + # lf(m), ii(0) = 0, (nf from ii(m)) to # lf(m) = lf(m), lf(n0)[n1] ≠ lf(m)[n], lf(m) ≠ [], lf(n0) ≠ [], m ≠ n0 + 1, n0 ≠ m, n < # lf(m), m < n0, n1 < # lf(n0), n0 - 1 < n0 → ii((n0 - 1) + 1) = ii(n0 - 1) + # lf(n0 - 1) ∧ (nf from ii(n0 - 1)) to # lf(n0 - 1) = lf(n0 - 1) ∧ (∀ m0. m0 ≤ n0 - 1 → ii(m0) ≤ ii(n0 - 1)), ∀ m0. m0 ≤ m → ii(m0) ≤ ii(m), ∀ m. m < n0 → ii(m + 1) = ii(m) + # lf(m) ∧ (nf from ii(m)) to # lf(m) = lf(m) ∧ (∀ m0. m0 ≤ m → ii(m0) ≤ ii(m)) ⊦
Used terms: n0 - 1
| ii(m) + n = n1 + ii(n0), ii(m + 1) = ii(m) + # lf(m), ii(0) = 0, (nf from ii(m)) to # lf(m) = lf(m), lf(n0)[n1] ≠ lf(m)[n], lf(m) ≠ [], lf(n0) ≠ [], m ≠ n0 + 1, n0 ≠ m, n < # lf(m), m < n0, n1 < # lf(n0), n0 - 1 < n0 → ii((n0 - 1) + 1) = ii(n0 - 1) + # lf(n0 - 1) ∧ (nf from ii(n0 - 1)) to # lf(n0 - 1) = lf(n0 - 1) ∧ (∀ m0. m0 ≤ n0 - 1 → ii(m0) ≤ ii(n0 - 1)), ∀ m0. m0 ≤ m → ii(m0) ≤ ii(m), ∀ m. m < n0 → ii(m + 1) = ii(m) + # lf(m) ∧ (nf from ii(m)) to # lf(m) = lf(m) ∧ (∀ m0. m0 ≤ m → ii(m0) ≤ ii(m)) ⊦ |
ii(m) + n = n1 + ii(n0), ii(0) = 0, ii(m + 1) = ii(m) + # lf(m), ii((n0 - 1) + 1) = ii(n0 - 1) + # lf(n0 - 1), (nf from ii(m)) to # lf(m) = lf(m), (nf from ii(n0 - 1)) to # lf(n0 - 1) = lf(n0 - 1), lf(n0)[n1] ≠ lf(m)[n], lf(m) ≠ [], lf(n0) ≠ [], m ≠ n0 + 1, n0 ≠ m, n1 < # lf(n0), m < n0, n < # lf(m), ∀ m. m < n0 → ii(m + 1) = ii(m) + # lf(m) ∧ (nf from ii(m)) to # lf(m) = lf(m) ∧ (∀ m0. m0 ≤ m → ii(m0) ≤ ii(m)), ∀ m0. m0 ≤ m → ii(m0) ≤ ii(m), ∀ m0. m0 < n0 → ii(m0) ≤ ii(n0 - 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) n0 ≤ n ⊦ m ≤ n - n0 ↔ m + n0 ≤ n; (s) ⊦ m < n → n ≠ 0; (s) ⊦ m < 1 ↔ m = 0; (s) ⊦ m ≤ n ↔ ¬ n < m; (ss) ⊦ ¬ n < n; (s) ⊦ m < n + 1 ↔ ¬ n < m; (s) n0 ≤ n ⊦ n - n0 < m ↔ n < m + n0; (s)
| ii(m) + n = n1 + ii(n0), ii(0) = 0, ii(m + 1) = ii(m) + # lf(m), ii((n0 - 1) + 1) = ii(n0 - 1) + # lf(n0 - 1), (nf from ii(m)) to # lf(m) = lf(m), (nf from ii(n0 - 1)) to # lf(n0 - 1) = lf(n0 - 1), lf(n0)[n1] ≠ lf(m)[n], lf(m) ≠ [], lf(n0) ≠ [], m ≠ n0 + 1, n0 ≠ m, n1 < # lf(n0), m < n0, n < # lf(m), ∀ m. m < n0 → ii(m + 1) = ii(m) + # lf(m) ∧ (nf from ii(m)) to # lf(m) = lf(m) ∧ (∀ m0. m0 ≤ m → ii(m0) ≤ ii(m)), ∀ m0. m0 ≤ m → ii(m0) ≤ ii(m), ∀ m0. m0 < n0 → ii(m0) ≤ ii(n0 - 1) ⊦ |
ii(m) + n = n1 + ii(n0), ii(m1 + 1) = ii(m1) + # lf(m1), ii(m + 1) = ii(m) + # lf(m), ii(0) = 0, n0 = m1 + 1, (nf from ii(m1)) to # lf(m1) = lf(m1), (nf from ii(m)) to # lf(m) = lf(m), lf(n0)[n1] ≠ lf(m)[n], lf(m) ≠ [], lf(n0) ≠ [], m ≠ n0 + 1, n0 ≠ 0, n0 ≠ m, n < # lf(m), m < n0, n1 < # lf(n0), ∀ m0. m0 < n0 → ii(m0) ≤ ii(m1), ∀ m0. m0 ≤ m → ii(m0) ≤ ii(m), ∀ m. m < n0 → ii(m + 1) = ii(m) + # lf(m) ∧ (nf from ii(m)) to # lf(m) = lf(m) ∧ (∀ m0. m0 ≤ m → ii(m0) ≤ ii(m)) ⊦
Used simplifier rules: a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic c: ⊦ m + n = n + m; from specification nat-basic ⊦ ¬ n < 0; (s) n ≠ 0 ⊦ m = n - 1 ↔ n = m + 1; (elim) Used terms: n0, m1
| ii(m) + n = n1 + ii(n0), ii(m1 + 1) = ii(m1) + # lf(m1), ii(m + 1) = ii(m) + # lf(m), ii(0) = 0, n0 = m1 + 1, (nf from ii(m1)) to # lf(m1) = lf(m1), (nf from ii(m)) to # lf(m) = lf(m), lf(n0)[n1] ≠ lf(m)[n], lf(m) ≠ [], lf(n0) ≠ [], m ≠ n0 + 1, n0 ≠ 0, n0 ≠ m, n < # lf(m), m < n0, n1 < # lf(n0), ∀ m0. m0 < n0 → ii(m0) ≤ ii(m1), ∀ m0. m0 ≤ m → ii(m0) ≤ ii(m), ∀ m. m < n0 → ii(m + 1) = ii(m) + # lf(m) ∧ (nf from ii(m)) to # lf(m) = lf(m) ∧ (∀ m0. m0 ≤ m → ii(m0) ≤ ii(m)) ⊦ |
ii(m) + n = n1 + ii(m1 + 1), ii(m1 + 1) = ii(m1) + # lf(m1), ii(m + 1) = ii(m) + # lf(m), ii(0) = 0, (nf from ii(m1)) to # lf(m1) = lf(m1), (nf from ii(m)) to # lf(m) = lf(m), m1 + 1 ≠ m, lf(m1 + 1)[n1] ≠ lf(m)[n], lf(m1 + 1) ≠ [], lf(m) ≠ [], m ≠ 2 + m1, n1 < # lf(m1 + 1), n < # lf(m), m ≤ m1, ∀ m0. ¬ m1 < m0 → ii(m0) ≤ ii(m1), ∀ m0. ¬ m1 < m0 → ii(m0 + 1) = ii(m0) + # lf(m0) ∧ (nf from ii(m0)) to # lf(m0) = lf(m0) ∧ (∀ m1. m1 ≤ m0 → ii(m1) ≤ ii(m0)), ∀ m0. m0 ≤ m → ii(m0) ≤ ii(m) ⊦
Used simplifier rules: ⊦ # x = 0 ↔ x = []; (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 < n ↔ ¬ n ≤ m; (ss) ⊦ m + 1 ≠ 0; (s)
| ii(m) + n = n1 + ii(m1 + 1), ii(m1 + 1) = ii(m1) + # lf(m1), ii(m + 1) = ii(m) + # lf(m), ii(0) = 0, (nf from ii(m1)) to # lf(m1) = lf(m1), (nf from ii(m)) to # lf(m) = lf(m), m1 + 1 ≠ m, lf(m1 + 1)[n1] ≠ lf(m)[n], lf(m1 + 1) ≠ [], lf(m) ≠ [], m ≠ 2 + m1, n1 < # lf(m1 + 1), n < # lf(m), m ≤ m1, ∀ m0. ¬ m1 < m0 → ii(m0) ≤ ii(m1), ∀ m0. ¬ m1 < m0 → ii(m0 + 1) = ii(m0) + # lf(m0) ∧ (nf from ii(m0)) to # lf(m0) = lf(m0) ∧ (∀ m1. m1 ≤ m0 → ii(m1) ≤ ii(m0)), ∀ m0. m0 ≤ m → ii(m0) ≤ ii(m) ⊦ |
ii(m) + n = n1 + ii(m1 + 1), ii(0) = 0, ii(m + 1) = ii(m) + # lf(m), ii(m1 + 1) = ii(m1) + # lf(m1), (nf from ii(m)) to # lf(m) = lf(m), (nf from ii(m1)) to # lf(m1) = lf(m1), m1 + 1 ≠ m, lf(m1 + 1)[n1] ≠ lf(m)[n], lf(m1 + 1) ≠ [], lf(m) ≠ [], m ≠ 2 + m1, n < # lf(m), n1 < # lf(m1 + 1), m ≤ m1, ¬ m1 < m + 1 → ii(m + 1) ≤ ii(m1), ∀ m0. m0 ≤ m → ii(m0) ≤ ii(m), ∀ m0. ¬ m1 < m0 → ii(m0 + 1) = ii(m0) + # lf(m0) ∧ (nf from ii(m0)) to # lf(m0) = lf(m0) ∧ (∀ m1. m1 ≤ m0 → ii(m1) ≤ ii(m0)), ∀ m0. ¬ m1 < m0 → ii(m0) ≤ ii(m1) ⊦
Used terms: m + 1
| ii(m) + n = n1 + ii(m1 + 1), ii(0) = 0, ii(m + 1) = ii(m) + # lf(m), ii(m1 + 1) = ii(m1) + # lf(m1), (nf from ii(m)) to # lf(m) = lf(m), (nf from ii(m1)) to # lf(m1) = lf(m1), m1 + 1 ≠ m, lf(m1 + 1)[n1] ≠ lf(m)[n], lf(m1 + 1) ≠ [], lf(m) ≠ [], m ≠ 2 + m1, n < # lf(m), n1 < # lf(m1 + 1), m ≤ m1, ¬ m1 < m + 1 → ii(m + 1) ≤ ii(m1), ∀ m0. m0 ≤ m → ii(m0) ≤ ii(m), ∀ m0. ¬ m1 < m0 → ii(m0 + 1) = ii(m0) + # lf(m0) ∧ (nf from ii(m0)) to # lf(m0) = lf(m0) ∧ (∀ m1. m1 ≤ m0 → ii(m1) ≤ ii(m0)), ∀ m0. ¬ m1 < m0 → ii(m0) ≤ ii(m1) ⊦ |
ii(m) + n = n1 + ii(m1 + 1), ii(m1 + 1) = ii(m1) + # lf(m1), ii(m + 1) = ii(m) + # lf(m), ii(0) = 0, (nf from ii(m1)) to # lf(m1) = lf(m1), (nf from ii(m)) to # lf(m) = lf(m), m1 + 1 ≠ m, lf(m1 + 1)[n1] ≠ lf(m)[n], lf(m1 + 1) ≠ [], lf(m) ≠ [], m ≠ 2 + m1, n1 < # lf(m1 + 1), n < # lf(m), m ≤ m1, m < m1 → ii(m + 1) ≤ ii(m1), ∀ m0. ¬ m1 < m0 → ii(m0) ≤ ii(m1), ∀ m0. ¬ m1 < m0 → ii(m0 + 1) = ii(m0) + # lf(m0) ∧ (nf from ii(m0)) to # lf(m0) = lf(m0) ∧ (∀ m1. m1 ≤ m0 → ii(m1) ≤ ii(m0)), ∀ m0. m0 ≤ m → ii(m0) ≤ ii(m) ⊦
Used simplifier rules: 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)
| ii(m) + n = n1 + ii(m1 + 1), ii(m1 + 1) = ii(m1) + # lf(m1), ii(m + 1) = ii(m) + # lf(m), ii(0) = 0, (nf from ii(m1)) to # lf(m1) = lf(m1), (nf from ii(m)) to # lf(m) = lf(m), m1 + 1 ≠ m, lf(m1 + 1)[n1] ≠ lf(m)[n], lf(m1 + 1) ≠ [], lf(m) ≠ [], m ≠ 2 + m1, n1 < # lf(m1 + 1), n < # lf(m), m ≤ m1, m < m1 → ii(m + 1) ≤ ii(m1), ∀ m0. ¬ m1 < m0 → ii(m0) ≤ ii(m1), ∀ m0. ¬ m1 < m0 → ii(m0 + 1) = ii(m0) + # lf(m0) ∧ (nf from ii(m0)) to # lf(m0) = lf(m0) ∧ (∀ m1. m1 ≤ m0 → ii(m1) ≤ ii(m0)), ∀ m0. m0 ≤ m → ii(m0) ≤ ii(m) ⊦ |
ii(m) + n = n1 + ii(m1 + 1), ii(0) = 0, ii(m + 1) = ii(m) + # lf(m), ii(m1 + 1) = ii(m1) + # lf(m1), m1 = m, (nf from ii(m)) to # lf(m) = lf(m), (nf from ii(m1)) to # lf(m1) = lf(m1), m1 + 1 ≠ m, lf(m1 + 1)[n1] ≠ lf(m)[n], lf(m1 + 1) ≠ [], lf(m) ≠ [], m ≠ 2 + m1, n < # lf(m), n1 < # lf(m1 + 1), m ≤ m1, m < m1 → ii(m + 1) ≤ ii(m1), ∀ m0. m0 ≤ m → ii(m0) ≤ ii(m), ∀ m0. ¬ m1 < m0 → ii(m0 + 1) = ii(m0) + # lf(m0) ∧ (nf from ii(m0)) to # lf(m0) = lf(m0) ∧ (∀ m1. m1 ≤ m0 → ii(m1) ≤ ii(m0)), ∀ m0. ¬ m1 < m0 → ii(m0) ≤ ii(m1) ⊦
ii(m) + n = n1 + ii(m1 + 1), ii(0) = 0, ii(m + 1) = ii(m) + # lf(m), ii(m1 + 1) = ii(m1) + # lf(m1), (nf from ii(m)) to # lf(m) = lf(m), (nf from ii(m1)) to # lf(m1) = lf(m1), m1 + 1 ≠ m, lf(m1 + 1)[n1] ≠ lf(m)[n], lf(m1 + 1) ≠ [], lf(m) ≠ [], m ≠ 2 + m1, m1 ≠ m, n < # lf(m), n1 < # lf(m1 + 1), m ≤ m1, m < m1 → ii(m + 1) ≤ ii(m1), ∀ m0. m0 ≤ m → ii(m0) ≤ ii(m), ∀ m0. ¬ m1 < m0 → ii(m0 + 1) = ii(m0) + # lf(m0) ∧ (nf from ii(m0)) to # lf(m0) = lf(m0) ∧ (∀ m1. m1 ≤ m0 → ii(m1) ≤ ii(m0)), ∀ m0. ¬ m1 < m0 → ii(m0) ≤ ii(m1) ⊦
Used formulas: m1 = m
| ii(m) + n = n1 + ii(m1 + 1), ii(0) = 0, ii(m + 1) = ii(m) + # lf(m), ii(m1 + 1) = ii(m1) + # lf(m1), m1 = m, (nf from ii(m)) to # lf(m) = lf(m), (nf from ii(m1)) to # lf(m1) = lf(m1), m1 + 1 ≠ m, lf(m1 + 1)[n1] ≠ lf(m)[n], lf(m1 + 1) ≠ [], lf(m) ≠ [], m ≠ 2 + m1, n < # lf(m), n1 < # lf(m1 + 1), m ≤ m1, m < m1 → ii(m + 1) ≤ ii(m1), ∀ m0. m0 ≤ m → ii(m0) ≤ ii(m), ∀ m0. ¬ m1 < m0 → ii(m0 + 1) = ii(m0) + # lf(m0) ∧ (nf from ii(m0)) to # lf(m0) = lf(m0) ∧ (∀ m1. m1 ≤ m0 → ii(m1) ≤ ii(m0)), ∀ m0. ¬ m1 < m0 → ii(m0) ≤ ii(m1) ⊦ |
ii(m) + n = n1 + ii(m + 1), ii(0) = 0, ii(m + 1) = ii(m) + # lf(m), (nf from ii(m)) to # lf(m) = lf(m), lf(m + 1)[n1] ≠ lf(m)[n], lf(m) ≠ [], lf(m + 1) ≠ [], n < # lf(m), n1 < # lf(m + 1), ∀ m0. m0 ≤ m → ii(m0) ≤ ii(m), ∀ m0. ¬ m < m0 → ii(m0 + 1) = ii(m0) + # lf(m0) ∧ (nf from ii(m0)) to # lf(m0) = lf(m0) ∧ (∀ m1. m1 ≤ m0 → ii(m1) ≤ ii(m0)), ∀ m0. ¬ m < m0 → ii(m0) ≤ ii(m) ⊦
Used simplifier rules: ⊦ # x = 0 ↔ x = []; (s) f: ⊦ m < n → n ≠ 0; (forward) from specification nat-basic ⊦ ¬ n < n; (s) ⊦ m ≤ m; (s) 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)
| ii(m) + n = n1 + ii(m + 1), ii(0) = 0, ii(m + 1) = ii(m) + # lf(m), (nf from ii(m)) to # lf(m) = lf(m), lf(m + 1)[n1] ≠ lf(m)[n], lf(m) ≠ [], lf(m + 1) ≠ [], n < # lf(m), n1 < # lf(m + 1), ∀ m0. m0 ≤ m → ii(m0) ≤ ii(m), ∀ m0. ¬ m < m0 → ii(m0 + 1) = ii(m0) + # lf(m0) ∧ (nf from ii(m0)) to # lf(m0) = lf(m0) ∧ (∀ m1. m1 ≤ m0 → ii(m1) ≤ ii(m0)), ∀ m0. ¬ m < m0 → ii(m0) ≤ ii(m) ⊦ |
Used simplifier rules: ⊦ m + n = m + n0 ↔ n = n0; (s) lf-02: ⊦ m < n ∧ m = n0 → n0 < n; (forward) from specification nat-basic ⊦ m + m0 < n → ¬ n + n0 < m; (s) a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic c: ⊦ m + n = n + m; from specification nat-basic
| ii(m) + n = n1 + ii(m1 + 1), ii(0) = 0, ii(m + 1) = ii(m) + # lf(m), ii(m1 + 1) = ii(m1) + # lf(m1), (nf from ii(m)) to # lf(m) = lf(m), (nf from ii(m1)) to # lf(m1) = lf(m1), m1 + 1 ≠ m, lf(m1 + 1)[n1] ≠ lf(m)[n], lf(m1 + 1) ≠ [], lf(m) ≠ [], m ≠ 2 + m1, m1 ≠ m, n < # lf(m), n1 < # lf(m1 + 1), m ≤ m1, m < m1 → ii(m + 1) ≤ ii(m1), ∀ m0. m0 ≤ m → ii(m0) ≤ ii(m), ∀ m0. ¬ m1 < m0 → ii(m0 + 1) = ii(m0) + # lf(m0) ∧ (nf from ii(m0)) to # lf(m0) = lf(m0) ∧ (∀ m1. m1 ≤ m0 → ii(m1) ≤ ii(m0)), ∀ m0. ¬ m1 < m0 → ii(m0) ≤ ii(m1) ⊦ |
ii(m) + n = n1 + ii(m1 + 1), ii(0) = 0, ii(m + 1) = ii(m) + # lf(m), ii(m1 + 1) = ii(m1) + # lf(m1), (nf from ii(m)) to # lf(m) = lf(m), (nf from ii(m1)) to # lf(m1) = lf(m1), m1 + 1 ≠ m, lf(m1 + 1)[n1] ≠ lf(m)[n], lf(m) ≠ [], lf(m1 + 1) ≠ [], m ≠ 2 + m1, m1 ≠ m, m < m1, n < # lf(m), n1 < # lf(m1 + 1), ii(m + 1) ≤ ii(m1), ∀ m0. m0 ≤ m → ii(m0) ≤ ii(m), ∀ m0. ¬ m1 < m0 → ii(m0 + 1) = ii(m0) + # lf(m0) ∧ (nf from ii(m0)) to # lf(m0) = lf(m0) ∧ (∀ m1. m1 ≤ m0 → ii(m1) ≤ ii(m0)), ∀ m0. ¬ m1 < m0 → ii(m0) ≤ ii(m1) ⊦
Used simplifier rules: ⊦ m < n → n ≠ 0; (s) f: ⊦ m < n → n ≠ 0; (forward) from specification nat-basic ⊦ m ≠ n → (m ≤ n ↔ m < n); (s)
| ii(m) + n = n1 + ii(m1 + 1), ii(0) = 0, ii(m + 1) = ii(m) + # lf(m), ii(m1 + 1) = ii(m1) + # lf(m1), (nf from ii(m)) to # lf(m) = lf(m), (nf from ii(m1)) to # lf(m1) = lf(m1), m1 + 1 ≠ m, lf(m1 + 1)[n1] ≠ lf(m)[n], lf(m) ≠ [], lf(m1 + 1) ≠ [], m ≠ 2 + m1, m1 ≠ m, m < m1, n < # lf(m), n1 < # lf(m1 + 1), ii(m + 1) ≤ ii(m1), ∀ m0. m0 ≤ m → ii(m0) ≤ ii(m), ∀ m0. ¬ m1 < m0 → ii(m0 + 1) = ii(m0) + # lf(m0) ∧ (nf from ii(m0)) to # lf(m0) = lf(m0) ∧ (∀ m1. m1 ≤ m0 → ii(m1) ≤ ii(m0)), ∀ m0. ¬ m1 < m0 → ii(m0) ≤ ii(m1) ⊦ |
ii(m) + n = n1 + ii(m1 + 1), ii(m1 + 1) = ii(m1) + # lf(m1), ii(m + 1) = ii(m) + # lf(m), ii(0) = 0, (nf from ii(m1)) to # lf(m1) = lf(m1), (nf from ii(m)) to # lf(m) = lf(m), m1 + 1 ≠ m, lf(m1 + 1)[n1] ≠ lf(m)[n], lf(m) ≠ [], lf(m1 + 1) ≠ [], m ≠ 2 + m1, m1 ≠ m, n1 < # lf(m1 + 1), n < # lf(m), m < m1, ii(m) + n < ii(m1), ii(m + 1) ≤ ii(m1), ∀ m0. ¬ m1 < m0 → ii(m0) ≤ ii(m1), ∀ m0. ¬ m1 < m0 → ii(m0 + 1) = ii(m0) + # lf(m0) ∧ (nf from ii(m0)) to # lf(m0) = lf(m0) ∧ (∀ m1. m1 ≤ m0 → ii(m1) ≤ ii(m0)), ∀ m0. m0 ≤ m → ii(m0) ≤ ii(m) ⊦
ii(m) + n = n1 + ii(m1 + 1), ii(m1 + 1) = ii(m1) + # lf(m1), ii(m + 1) = ii(m) + # lf(m), ii(0) = 0, (nf from ii(m1)) to # lf(m1) = lf(m1), (nf from ii(m)) to # lf(m) = lf(m), m1 + 1 ≠ m, lf(m1 + 1)[n1] ≠ lf(m)[n], lf(m) ≠ [], lf(m1 + 1) ≠ [], m ≠ 2 + m1, m1 ≠ m, n1 < # lf(m1 + 1), n < # lf(m), m < m1, ii(m + 1) ≤ ii(m1), ¬ ii(m) + n < ii(m1), ∀ m0. ¬ m1 < m0 → ii(m0) ≤ ii(m1), ∀ m0. ¬ m1 < m0 → ii(m0 + 1) = ii(m0) + # lf(m0) ∧ (nf from ii(m0)) to # lf(m0) = lf(m0) ∧ (∀ m1. m1 ≤ m0 → ii(m1) ≤ ii(m0)), ∀ m0. m0 ≤ m → ii(m0) ≤ ii(m) ⊦
Used formulas: ii(m) + n < ii(m1)
| ii(m) + n = n1 + ii(m1 + 1), ii(m1 + 1) = ii(m1) + # lf(m1), ii(m + 1) = ii(m) + # lf(m), ii(0) = 0, (nf from ii(m1)) to # lf(m1) = lf(m1), (nf from ii(m)) to # lf(m) = lf(m), m1 + 1 ≠ m, lf(m1 + 1)[n1] ≠ lf(m)[n], lf(m) ≠ [], lf(m1 + 1) ≠ [], m ≠ 2 + m1, m1 ≠ m, n1 < # lf(m1 + 1), n < # lf(m), m < m1, ii(m) + n < ii(m1), ii(m + 1) ≤ ii(m1), ∀ m0. ¬ m1 < m0 → ii(m0) ≤ ii(m1), ∀ m0. ¬ m1 < m0 → ii(m0 + 1) = ii(m0) + # lf(m0) ∧ (nf from ii(m0)) to # lf(m0) = lf(m0) ∧ (∀ m1. m1 ≤ m0 → ii(m1) ≤ ii(m0)), ∀ m0. m0 ≤ m → ii(m0) ≤ ii(m) ⊦ |
ii(0) = 0, ii(m + 1) = ii(m) + # lf(m), ii(m1 + 1) = ii(m1) + # lf(m1), (nf from ii(m)) to # lf(m) = lf(m), (nf from ii(m1)) to # lf(m1) = lf(m1), m1 + 1 ≠ m, lf(m1 + 1)[n1] ≠ lf(m)[n], lf(m) ≠ [], lf(m1 + 1) ≠ [], m ≠ 2 + m1, m1 ≠ m, n1 + ii(m1 + 1) < ii(m1), m < m1, n < # lf(m), n1 < # lf(m1 + 1), ii(m + 1) ≤ ii(m1), ∀ m0. m0 ≤ m → ii(m0) ≤ ii(m), ∀ m0. ¬ m1 < m0 → ii(m0 + 1) = ii(m0) + # lf(m0) ∧ (nf from ii(m0)) to # lf(m0) = lf(m0) ∧ (∀ m1. m1 ≤ m0 → ii(m1) ≤ ii(m0)), ∀ m0. ¬ m1 < m0 → ii(m0) ≤ ii(m1) ⊦
| ii(0) = 0, ii(m + 1) = ii(m) + # lf(m), ii(m1 + 1) = ii(m1) + # lf(m1), (nf from ii(m)) to # lf(m) = lf(m), (nf from ii(m1)) to # lf(m1) = lf(m1), m1 + 1 ≠ m, lf(m1 + 1)[n1] ≠ lf(m)[n], lf(m) ≠ [], lf(m1 + 1) ≠ [], m ≠ 2 + m1, m1 ≠ m, n1 + ii(m1 + 1) < ii(m1), m < m1, n < # lf(m), n1 < # lf(m1 + 1), ii(m + 1) ≤ ii(m1), ∀ m0. m0 ≤ m → ii(m0) ≤ ii(m), ∀ m0. ¬ m1 < m0 → ii(m0 + 1) = ii(m0) + # lf(m0) ∧ (nf from ii(m0)) to # lf(m0) = lf(m0) ∧ (∀ m1. m1 ≤ m0 → ii(m1) ≤ ii(m0)), ∀ m0. ¬ m1 < m0 → ii(m0) ≤ ii(m1) ⊦ |
Used simplifier rules: ⊦ ¬ m + n < m; (s) a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic c: ⊦ m + n = n + m; from specification nat-basic
| ii(m) + n = n1 + ii(m1 + 1), ii(m1 + 1) = ii(m1) + # lf(m1), ii(m + 1) = ii(m) + # lf(m), ii(0) = 0, (nf from ii(m1)) to # lf(m1) = lf(m1), (nf from ii(m)) to # lf(m) = lf(m), m1 + 1 ≠ m, lf(m1 + 1)[n1] ≠ lf(m)[n], lf(m) ≠ [], lf(m1 + 1) ≠ [], m ≠ 2 + m1, m1 ≠ m, n1 < # lf(m1 + 1), n < # lf(m), m < m1, ii(m + 1) ≤ ii(m1), ¬ ii(m) + n < ii(m1), ∀ m0. ¬ m1 < m0 → ii(m0) ≤ ii(m1), ∀ m0. ¬ m1 < m0 → ii(m0 + 1) = ii(m0) + # lf(m0) ∧ (nf from ii(m0)) to # lf(m0) = lf(m0) ∧ (∀ m1. m1 ≤ m0 → ii(m1) ≤ ii(m0)), ∀ m0. m0 ≤ m → ii(m0) ≤ ii(m) ⊦ |
ii(m) + n = n1 + ii(m1 + 1), ii(0) = 0, ii(m + 1) = ii(m) + # lf(m), ii(m1 + 1) = ii(m1) + # lf(m1), (nf from ii(m)) to # lf(m) = lf(m), (nf from ii(m1)) to # lf(m1) = lf(m1), m1 + 1 ≠ m, lf(m1 + 1)[n1] ≠ lf(m)[n], lf(m) ≠ [], lf(m1 + 1) ≠ [], m ≠ 2 + m1, m1 ≠ m, m < m1, n < # lf(m), n1 < # lf(m1 + 1), ii(m) + n < ii(m + 1), ii(m + 1) ≤ ii(m1), ¬ ii(m) + n < ii(m1), ∀ m0. m0 ≤ m → ii(m0) ≤ ii(m), ∀ m0. ¬ m1 < m0 → ii(m0 + 1) = ii(m0) + # lf(m0) ∧ (nf from ii(m0)) to # lf(m0) = lf(m0) ∧ (∀ m1. m1 ≤ m0 → ii(m1) ≤ ii(m0)), ∀ m0. ¬ m1 < m0 → ii(m0) ≤ ii(m1) ⊦
Used simplifier rules: ⊦ m = m0 + n0 ∧ n < n0 → m0 + n < m; (s) a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic c: ⊦ m + n = n + m; from specification nat-basic Used formulas: ii(m) + n < ii(m + 1)
| ii(m) + n = n1 + ii(m1 + 1), ii(0) = 0, ii(m + 1) = ii(m) + # lf(m), ii(m1 + 1) = ii(m1) + # lf(m1), (nf from ii(m)) to # lf(m) = lf(m), (nf from ii(m1)) to # lf(m1) = lf(m1), m1 + 1 ≠ m, lf(m1 + 1)[n1] ≠ lf(m)[n], lf(m) ≠ [], lf(m1 + 1) ≠ [], m ≠ 2 + m1, m1 ≠ m, m < m1, n < # lf(m), n1 < # lf(m1 + 1), ii(m) + n < ii(m + 1), ii(m + 1) ≤ ii(m1), ¬ ii(m) + n < ii(m1), ∀ m0. m0 ≤ m → ii(m0) ≤ ii(m), ∀ m0. ¬ m1 < m0 → ii(m0 + 1) = ii(m0) + # lf(m0) ∧ (nf from ii(m0)) to # lf(m0) = lf(m0) ∧ (∀ m1. m1 ≤ m0 → ii(m1) ≤ ii(m0)), ∀ m0. ¬ m1 < m0 → ii(m0) ≤ ii(m1) ⊦ |
m1 + 1 ≠ m, lf(m1 + 1)[n1] ≠ lf(m)[n], lf(m) ≠ [], lf(m1 + 1) ≠ [], m ≠ 2 + m1, m1 ≠ m, ii(m) + n < ii(m + 1), ii(m + 1) ≤ ii(m1), ¬ ii(m) + n < ii(m1) ⊦
| m1 + 1 ≠ m, lf(m1 + 1)[n1] ≠ lf(m)[n], lf(m) ≠ [], lf(m1 + 1) ≠ [], m ≠ 2 + m1, m1 ≠ m, ii(m) + n < ii(m + 1), ii(m + 1) ≤ ii(m1), ¬ ii(m) + n < ii(m1) ⊦ |
Used simplifier rules: ⊦ m ≤ n → (n < m ↔ false); (s) ⊦ m < n → n ≠ 0; (s) let: ⊦ n ≤ n0 ∧ n0 ≤ n1 → n ≤ n1; (forward) from specification nat fle: ⊦ m < n ∧ n ≤ n0 → m < n0; (forward) from specification nat 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 ≤ m; (ss)
| ii(0) = 0, ii(m + 1) = ii(m) + # lf(m), (nf from ii(m)) to # lf(m) = lf(m), lf(m) ≠ [], m ≠ n0 + 1, n0 ≠ m, nf(ii(m) + n) ≠ lf(m)[n], m < n0, n < # lf(m), ∀ m. m < n0 → ii(m + 1) = ii(m) + # lf(m) ∧ (nf from ii(m)) to # lf(m) = lf(m) ∧ (∀ m0. m0 ≤ m → ii(m0) ≤ ii(m)), ∀ m0. m0 ≤ m → ii(m0) ≤ ii(m), ¬ ii(m) + n < ii(n0) + # lf(n0) ∨ ii(m) + n < ii(n0) ⊦ |
⊦ x = y ↔ # x = # y ∧ (∀ n. n < # x → x[n] = y[n])
#((nf from ii(m)) to # lf(m)) = # lf(m), ii(m + 1) = ii(m) + # lf(m), ii(0) = 0, lf(m) ≠ [], m ≠ n0 + 1, n0 ≠ m, nf(ii(m) + n) ≠ lf(m)[n], n < # lf(m), m < n0, ∀ m0. m0 ≤ m → ii(m0) ≤ ii(m), ∀ m. m < n0 → ii(m + 1) = ii(m) + # lf(m) ∧ (nf from ii(m)) to # lf(m) = lf(m) ∧ (∀ m0. m0 ≤ m → ii(m0) ≤ ii(m)), ∀ n. n < #((nf from ii(m)) to # lf(m)) → ((nf from ii(m)) to # lf(m))[n] = lf(m)[n], ¬ ii(m) + n < ii(n0) + # lf(n0) ∨ ii(m) + n < ii(n0) ⊦
Used terms: lf(m), (nf from ii(m)) to # lf(m)
| ⊦ x = y ↔ # x = # y ∧ (∀ n. n < # x → x[n] = y[n]) |
| #((nf from ii(m)) to # lf(m)) = # lf(m), ii(m + 1) = ii(m) + # lf(m), ii(0) = 0, lf(m) ≠ [], m ≠ n0 + 1, n0 ≠ m, nf(ii(m) + n) ≠ lf(m)[n], n < # lf(m), m < n0, ∀ m0. m0 ≤ m → ii(m0) ≤ ii(m), ∀ m. m < n0 → ii(m + 1) = ii(m) + # lf(m) ∧ (nf from ii(m)) to # lf(m) = lf(m) ∧ (∀ m0. m0 ≤ m → ii(m0) ≤ ii(m)), ∀ n. n < #((nf from ii(m)) to # lf(m)) → ((nf from ii(m)) to # lf(m))[n] = lf(m)[n], ¬ ii(m) + n < ii(n0) + # lf(n0) ∨ ii(m) + n < ii(n0) ⊦ |
ii(0) = 0, ii(m + 1) = ii(m) + # lf(m), lf(m) ≠ [], m ≠ n0 + 1, n0 ≠ m, nf(ii(m) + n) ≠ lf(m)[n], m < n0, n < # lf(m), ∀ m. m < n0 → ii(m + 1) = ii(m) + # lf(m) ∧ (nf from ii(m)) to # lf(m) = lf(m) ∧ (∀ m0. m0 ≤ m → ii(m0) ≤ ii(m)), ∀ m0. m0 ≤ m → ii(m0) ≤ ii(m), ∀ n1. n1 < # lf(m) → nf(n1 + ii(m)) = lf(m)[n1], ¬ ii(m) + n < ii(n0) + # lf(n0) ∨ ii(m) + n < ii(n0) ⊦
Used simplifier rules: ⊦ ((nf from n))(m) = nf(m + n); (s) m < n ⊦ (nf to n)[m] = nf(m); (s) ⊦ m < n → (n ≤ m ↔ false); (s) ⊦ m < n ↔ ¬ n ≤ m; (ss) ⊦ #(nf to n) = n; (s)
| ii(0) = 0, ii(m + 1) = ii(m) + # lf(m), lf(m) ≠ [], m ≠ n0 + 1, n0 ≠ m, nf(ii(m) + n) ≠ lf(m)[n], m < n0, n < # lf(m), ∀ m. m < n0 → ii(m + 1) = ii(m) + # lf(m) ∧ (nf from ii(m)) to # lf(m) = lf(m) ∧ (∀ m0. m0 ≤ m → ii(m0) ≤ ii(m)), ∀ m0. m0 ≤ m → ii(m0) ≤ ii(m), ∀ n1. n1 < # lf(m) → nf(n1 + ii(m)) = lf(m)[n1], ¬ ii(m) + n < ii(n0) + # lf(n0) ∨ ii(m) + n < ii(n0) ⊦ |
Used simplifier rules: c: ⊦ m + n = n + m; from specification nat-basic Used terms: n
| ii(m + 1) = ii(m) + # lf(m), ii(0) = 0, (nf from ii(m)) to # lf(m) = lf(m), m ≠ n0 + 1, n0 ≠ m, m < n0, m0 ≤ m, ¬ (m0 = n0 + 1 ⊃ ii(n0) + # lf(n0);ii(m0)) ≤ ii(m), ∀ m0. m0 ≤ m → ii(m0) ≤ ii(m), ∀ m. m < n0 → ii(m + 1) = ii(m) + # lf(m) ∧ (nf from ii(m)) to # lf(m) = lf(m) ∧ (∀ m0. m0 ≤ m → ii(m0) ≤ ii(m)) ⊦ |
ii(m + 1) = ii(m) + # lf(m), ii(0) = 0, (nf from ii(m)) to # lf(m) = lf(m), m ≠ n0 + 1, n0 ≠ m, m0 < n0, ii(m) < (m0 = n0 + 1 ⊃ ii(n0) + # lf(n0);ii(m0)), m < n0, m0 ≤ m, ∀ m0. m0 ≤ m → ii(m0) ≤ ii(m), ∀ m. m < n0 → ii(m + 1) = ii(m) + # lf(m) ∧ (nf from ii(m)) to # lf(m) = lf(m) ∧ (∀ m0. m0 ≤ m → ii(m0) ≤ ii(m)) ⊦
Used simplifier rules: ⊦ m < n → n ≠ 0; (s) fle-01: ⊦ m ≤ n ∧ n < n0 → m < n0; (forward) from specification nat f: ⊦ m < n → n ≠ 0; (forward) from specification nat-basic ⊦ m ≤ n ↔ ¬ n < m; (ss)
| ii(m + 1) = ii(m) + # lf(m), ii(0) = 0, (nf from ii(m)) to # lf(m) = lf(m), m ≠ n0 + 1, n0 ≠ m, m0 < n0, ii(m) < (m0 = n0 + 1 ⊃ ii(n0) + # lf(n0);ii(m0)), m < n0, m0 ≤ m, ∀ m0. m0 ≤ m → ii(m0) ≤ ii(m), ∀ m. m < n0 → ii(m + 1) = ii(m) + # lf(m) ∧ (nf from ii(m)) to # lf(m) = lf(m) ∧ (∀ m0. m0 ≤ m → ii(m0) ≤ ii(m)) ⊦ |
ii(0) = 0, ii(m + 1) = ii(m) + # lf(m), (nf from ii(m)) to # lf(m) = lf(m), m ≠ n0 + 1, m0 ≠ n0 + 1, n0 ≠ m, m < n0, m0 < n0, ii(m) < ii(m0), m0 ≤ m, ∀ m. m < n0 → ii(m + 1) = ii(m) + # lf(m) ∧ (nf from ii(m)) to # lf(m) = lf(m) ∧ (∀ m0. m0 ≤ m → ii(m0) ≤ ii(m)), ∀ m0. m0 ≤ m → ii(m0) ≤ ii(m) ⊦
Used simplifier rules: ⊦ m + 1 ≤ n ↔ m < n; (s) ⊦ m < n → ¬ n < m; (s) a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic c: ⊦ m + n = n + m; from specification nat-basic
| ii(0) = 0, ii(m + 1) = ii(m) + # lf(m), (nf from ii(m)) to # lf(m) = lf(m), m ≠ n0 + 1, m0 ≠ n0 + 1, n0 ≠ m, m < n0, m0 < n0, ii(m) < ii(m0), m0 ≤ m, ∀ m. m < n0 → ii(m + 1) = ii(m) + # lf(m) ∧ (nf from ii(m)) to # lf(m) = lf(m) ∧ (∀ m0. m0 ≤ m → ii(m0) ≤ ii(m)), ∀ m0. m0 ≤ m → ii(m0) ≤ ii(m) ⊦ |
ii(0) = 0, ii(m + 1) = ii(m) + # lf(m), (nf from ii(m)) to # lf(m) = lf(m), m ≠ n0 + 1, m0 ≠ n0 + 1, n0 ≠ m, m < n0, m0 < n0, ii(m) < ii(m0), m0 ≤ m, ∀ m. m < n0 → ii(m + 1) = ii(m) + # lf(m) ∧ (nf from ii(m)) to # lf(m) = lf(m) ∧ (∀ m0. m0 ≤ m → ii(m0) ≤ ii(m)), ∀ m0. m0 ≤ m → ii(m0) ≤ ii(m) ⊦
Used simplifier rules: ⊦ m < n → n ≠ 0; (s) f: ⊦ m < n → n ≠ 0; (forward) from specification nat-basic
| ii(0) = 0, ii(m + 1) = ii(m) + # lf(m), (nf from ii(m)) to # lf(m) = lf(m), m ≠ n0 + 1, m0 ≠ n0 + 1, n0 ≠ m, m < n0, m0 < n0, ii(m) < ii(m0), m0 ≤ m, ∀ m. m < n0 → ii(m + 1) = ii(m) + # lf(m) ∧ (nf from ii(m)) to # lf(m) = lf(m) ∧ (∀ m0. m0 ≤ m → ii(m0) ≤ ii(m)), ∀ m0. m0 ≤ m → ii(m0) ≤ ii(m) ⊦ |
Used simplifier rules: ⊦ m < n → (n ≤ m ↔ false); (s) Used terms: m0
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.