| ⊦ finp(ext !(⌜af⌝ )) ↔ (∃ n. ∀ m. n ≤ m → ext(af(m)) = None) |
finp(ext !(⌜af⌝ )) ⊦ ∃ n. ∀ m. n ≤ m → ext(af(m)) = None
¬ finp(ext !(⌜af⌝ )), ∃ n. ∀ m. n ≤ m → ext(af(m)) = None ⊦
| finp(ext !(⌜af⌝ )) ⊦ ∃ n. ∀ m. n ≤ m → ext(af(m)) = None |
⌜el⌝ = ext !(⌜af⌝ ) ⊦ ∃ n. ∀ m. n ≤ m → ext(af(m)) = None
Used simplifier rules: ⊦ finp(σ) ↔ (∃ x. ⌜x⌝ = σ); (as)
| ⌜el⌝ = ext !(⌜af⌝ ) ⊦ ∃ n. ∀ m. n ≤ m → ext(af(m)) = None |
⌜[]⌝ = ext !(⌜af⌝ ) ⊦ ∃ n. ∀ m. n ≤ m → ext(af(m)) = None
⌜e + el0⌝ = ext !(⌜af⌝ ), ∀ ext, af. ⌜el0⌝ = ext !(⌜af⌝ ) → (∃ n. ∀ m. n ≤ m → ext(af(m)) = None) ⊦ ∃ n. ∀ m. n ≤ m → ext(af(m)) = None
Used simplifier rules: List('a) freely generated by [], +;;
| ⌜[]⌝ = ext !(⌜af⌝ ) ⊦ ∃ n. ∀ m. n ≤ m → ext(af(m)) = None |
[] = ext !(⌜af⌝ ) ⊦ ∃ n. ∀ m. n ≤ m → ext(af(m)) = None
Used simplifier rules: ⊦ ⌜[]⌝ = []; (s)
| [] = ext !(⌜af⌝ ) ⊦ ∃ n. ∀ m. n ≤ m → ext(af(m)) = None |
⊦ ext !(α) = [] ↔ (∀ n. ⌜n⌝ < # α → ext(α[n]) = None)
∀ n. ⌜n⌝ < # ⌜af⌝ → ext(⌜af⌝ [n]) = None ⊦ ∃ n. ∀ m. n ≤ m → ext(af(m)) = None
Used terms: ext, ⌜af⌝
| ⊦ ext !(α) = [] ↔ (∀ n. ⌜n⌝ < # α → ext(α[n]) = None) |
| ∀ n. ⌜n⌝ < # ⌜af⌝ → ext(⌜af⌝ [n]) = None ⊦ ∃ n. ∀ m. n ≤ m → ext(af(m)) = None |
∀ n. ext(af(n)) = None ⊦ ∃ n. ∀ m. n ≤ m → ext(af(m)) = None
Used simplifier rules: ⊦ ⌜nf⌝ [n] = nf(n); (s) ⊦ ⌜m⌝ < ∞; (s) ⊦ # ⌜nf⌝ = ∞; (s)
| ∀ n. ext(af(n)) = None ⊦ ∃ n. ∀ m. n ≤ m → ext(af(m)) = None |
∀ n. ext(af(n)) = None ⊦ ∀ m. 0 ≤ m → ext(af(m)) = None
Used terms: 0
| ∀ n. ext(af(n)) = None ⊦ ∀ m. 0 ≤ m → ext(af(m)) = None |
ext(af(m)) ≠ None, ∀ n. ext(af(n)) = None ⊦
Used simplifier rules: ⊦ 0 ≤ m; (s)
| ext(af(m)) ≠ None, ∀ n. ext(af(n)) = None ⊦ |
Used terms: m
| ⌜e + el0⌝ = ext !(⌜af⌝ ), ∀ ext, af. ⌜el0⌝ = ext !(⌜af⌝ ) → (∃ n. ∀ m. n ≤ m → ext(af(m)) = None) ⊦ ∃ n. ∀ m. n ≤ m → ext(af(m)) = None |
⌜e '⌝ + ⌜el0⌝ = ext !(⌜af⌝ ), ∀ ext, af. ⌜el0⌝ = ext !(⌜af⌝ ) → (∃ n. ∀ m. n ≤ m → ext(af(m)) = None) ⊦ ∃ n. ∀ m. n ≤ m → ext(af(m)) = None
Used simplifier rules: a: ⊦ (x + y) + z = x + y + z; from specification list ⊦ ⌜x + y⌝ = ⌜x⌝ + ⌜y⌝ ; (s) ⊦ a + x = a ' + x; (s)
| ⌜e '⌝ + ⌜el0⌝ = ext !(⌜af⌝ ), ∀ ext, af. ⌜el0⌝ = ext !(⌜af⌝ ) → (∃ n. ∀ m. n ≤ m → ext(af(m)) = None) ⊦ ∃ n. ∀ m. n ≤ m → ext(af(m)) = None |
⊦ ext !(α) = ⌜e '⌝ + β ↔ (∃ al, a, α0. α = ⌜al⌝ + ⌜a '⌝ + α0 ∧ ext(a) = Some(e) ∧ ext !(⌜al⌝ ) = [] ∧ ext !(α0) = β)
∀ ext, af. ⌜el0⌝ = ext !(⌜af⌝ ) → (∃ n. ∀ m. n ≤ m → ext(af(m)) = None), ∃ al, a, α0. ⌜af⌝ = ⌜al⌝ + ⌜a '⌝ + α0 ∧ ext(a) = Some(e) ∧ ext !(⌜al⌝ ) = [] ∧ ext !(α0) = ⌜el0⌝ ⊦ ∃ n. ∀ m. n ≤ m → ext(af(m)) = None
Used terms: e, ⌜el0⌝ , ext, ⌜af⌝
| ⊦ ext !(α) = ⌜e '⌝ + β ↔ (∃ al, a, α0. α = ⌜al⌝ + ⌜a '⌝ + α0 ∧ ext(a) = Some(e) ∧ ext !(⌜al⌝ ) = [] ∧ ext !(α0) = β) |
| ∀ ext, af. ⌜el0⌝ = ext !(⌜af⌝ ) → (∃ n. ∀ m. n ≤ m → ext(af(m)) = None), ∃ al, a, α0. ⌜af⌝ = ⌜al⌝ + ⌜a '⌝ + α0 ∧ ext(a) = Some(e) ∧ ext !(⌜al⌝ ) = [] ∧ ext !(α0) = ⌜el0⌝ ⊦ ∃ n. ∀ m. n ≤ m → ext(af(m)) = None |
ext !(al) = [], ext !(⌜af1⌝ ) = ⌜el0⌝ , ext(a) = Some(e), ∀ ext, af. ⌜el0⌝ = ext !(⌜af⌝ ) → (∃ n. ∀ m. n ≤ m → ext(af(m)) = None) ⊦ ∃ n. ∀ m. n ≤ m → ext(((al + a ' + af1))(m)) = None
Used simplifier rules: finremtau-def: ⊦ ext !(⌜al⌝ ) = ⌜ext !(al)⌝ ; append-assoc: ⊦ (σ + σ1) + σ2 = σ + σ1 + σ2; from specification stream ⊦ (⌜x⌝ + ⌜nf⌝ ).f = x + nf; (s) ⊦ finp(σ) ↔ ¬(∃ nf. ⌜nf⌝ = σ); (ss) ⊦ ⌜x⌝ + σ = ⌜nf⌝ ↔ ¬ finp(σ) ∧ x + σ.f = nf; (as) ⊦ ⌜x⌝ = [] ↔ x = []; (s)
| ext !(al) = [], ext !(⌜af1⌝ ) = ⌜el0⌝ , ext(a) = Some(e), ∀ ext, af. ⌜el0⌝ = ext !(⌜af⌝ ) → (∃ n. ∀ m. n ≤ m → ext(af(m)) = None) ⊦ ∃ n. ∀ m. n ≤ m → ext(((al + a ' + af1))(m)) = None |
ext !(⌜af1⌝ ) = ⌜el0⌝ , ext !(al) = [], ext(a) = Some(e), ⌜el0⌝ = ext !(⌜af1⌝ ) → (∃ n. ∀ m. n ≤ m → ext(af1(m)) = None) ⊦ ∃ n. ∀ m. n ≤ m → ext(((al + a ' + af1))(m)) = None
Used terms: ext, af1
| ext !(⌜af1⌝ ) = ⌜el0⌝ , ext !(al) = [], ext(a) = Some(e), ⌜el0⌝ = ext !(⌜af1⌝ ) → (∃ n. ∀ m. n ≤ m → ext(af1(m)) = None) ⊦ ∃ n. ∀ m. n ≤ m → ext(((al + a ' + af1))(m)) = None |
ext !(al) = [], ext !(⌜af1⌝ ) = ⌜el0⌝ , ext(a) = Some(e), ∀ m. n ≤ m → ext(af1(m)) = None ⊦ ∃ n. ∀ m. n ≤ m → ext(((al + a ' + af1))(m)) = None
| ext !(al) = [], ext !(⌜af1⌝ ) = ⌜el0⌝ , ext(a) = Some(e), ∀ m. n ≤ m → ext(af1(m)) = None ⊦ ∃ n. ∀ m. n ≤ m → ext(((al + a ' + af1))(m)) = None |
ext !(⌜af1⌝ ) = ⌜el0⌝ , ext !(al) = [], ext(a) = Some(e), ∀ m. n ≤ m → ext(af1(m)) = None ⊦ ∀ m. n + # al + 1 ≤ m → ext(((al + a ' + af1))(m)) = None
Used terms: n + # al + 1
| ext !(⌜af1⌝ ) = ⌜el0⌝ , ext !(al) = [], ext(a) = Some(e), ∀ m. n ≤ m → ext(af1(m)) = None ⊦ ∀ m. n + # al + 1 ≤ m → ext(((al + a ' + af1))(m)) = None |
ext !(⌜af1⌝ ) = ⌜el0⌝ , ext !(al) = [], ext(a) = Some(e), ext(((al + a ' + af1))(m)) ≠ None, n + # al < m, ∀ m. n ≤ m → ext(af1(m)) = None ⊦
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 + 1 ≤ n ↔ m < n; (s)
| ext !(⌜af1⌝ ) = ⌜el0⌝ , ext !(al) = [], ext(a) = Some(e), ext(((al + a ' + af1))(m)) ≠ None, n + # al < m, ∀ m. n ≤ m → ext(af1(m)) = None ⊦ |
⊦ σ0 = σ1 ↔ # σ0 = # σ1 ∧ (∀ n. ⌜n⌝ < # σ0 → σ0[n] = σ1[n])
ext !(al) = [], # ext !(⌜af1⌝ ) = # ⌜el0⌝ , ext(a) = Some(e), ext(((al + a ' + af1))(m)) ≠ None, n + # al < m, ∀ m. n ≤ m → ext(af1(m)) = None, ∀ n. ⌜n⌝ < # ext !(⌜af1⌝ ) → ext !(⌜af1⌝ )[n] = ⌜el0⌝ [n] ⊦
Used terms: ext !(⌜af1⌝ ), ⌜el0⌝
| ⊦ σ0 = σ1 ↔ # σ0 = # σ1 ∧ (∀ n. ⌜n⌝ < # σ0 → σ0[n] = σ1[n]) |
| ext !(al) = [], # ext !(⌜af1⌝ ) = # ⌜el0⌝ , ext(a) = Some(e), ext(((al + a ' + af1))(m)) ≠ None, n + # al < m, ∀ m. n ≤ m → ext(af1(m)) = None, ∀ n. ⌜n⌝ < # ext !(⌜af1⌝ ) → ext !(⌜af1⌝ )[n] = ⌜el0⌝ [n] ⊦ |
ext !(al) = [], # ext !(⌜af1⌝ ) = ⌜# el0⌝ , ext(a) = Some(e), ext(((al + a ' + af1))(m)) ≠ None, n + # al < m, ∀ m. n ≤ m → ext(af1(m)) = None, ∀ n0. n0 < # el0 → ext !(⌜af1⌝ )[n0] = el0[n0] ⊦
Used simplifier rules: ⊦ ⌜m⌝ < ⌜n⌝ ↔ m < n; (s) ⊦ ⌜x⌝ [n] = x[n]; (s) ⊦ # ⌜x⌝ = ⌜# x⌝ ; (s)
| ext !(al) = [], # ext !(⌜af1⌝ ) = ⌜# el0⌝ , ext(a) = Some(e), ext(((al + a ' + af1))(m)) ≠ None, n + # al < m, ∀ m. n ≤ m → ext(af1(m)) = None, ∀ n0. n0 < # el0 → ext !(⌜af1⌝ )[n0] = el0[n0] ⊦ |
⊦ x + nf = (λ n. (n < # x ⊃ x[n];nf(n - # x)))
ext !(al) = [], # ext !(⌜af1⌝ ) = ⌜# el0⌝ , ext(a) = Some(e), ext(((al + (λ n. (n < # a ' ⊃ a '[n];af1(n - # a ')))))(m)) ≠ None, n + # al < m, ∀ n0. n0 < # el0 → ext !(⌜af1⌝ )[n0] = el0[n0], ∀ m. n ≤ m → ext(af1(m)) = None ⊦
Used terms: a ', af1
| ⊦ x + nf = (λ n. (n < # x ⊃ x[n];nf(n - # x))) |
| ext !(al) = [], # ext !(⌜af1⌝ ) = ⌜# el0⌝ , ext(a) = Some(e), ext(((al + (λ n. (n < # a ' ⊃ a '[n];af1(n - # a ')))))(m)) ≠ None, n + # al < m, ∀ n0. n0 < # el0 → ext !(⌜af1⌝ )[n0] = el0[n0], ∀ m. n ≤ m → ext(af1(m)) = None ⊦ |
ext !(al) = [], # ext !(⌜af1⌝ ) = ⌜# el0⌝ , ext(a) = Some(e), ext(((al + (λ n0. (n0 = 0 ⊃ a;af1(n0 - 1)))))(m)) ≠ None, n + # al < m, ∀ m. n ≤ m → ext(af1(m)) = None, ∀ n0. n0 < # el0 → ext !(⌜af1⌝ )[n0] = el0[n0] ⊦
Used simplifier rules: ⊦ # a ' = 0 +1; (s) ⊦ a '[0] = a; (s) ⊦ m < 1 ↔ m = 0; (s)
| ext !(al) = [], # ext !(⌜af1⌝ ) = ⌜# el0⌝ , ext(a) = Some(e), ext(((al + (λ n0. (n0 = 0 ⊃ a;af1(n0 - 1)))))(m)) ≠ None, n + # al < m, ∀ m. n ≤ m → ext(af1(m)) = None, ∀ n0. n0 < # el0 → ext !(⌜af1⌝ )[n0] = el0[n0] ⊦ |
⊦ x + nf = (λ n. (n < # x ⊃ x[n];nf(n - # x)))
ext !(al) = [], # ext !(⌜af1⌝ ) = ⌜# el0⌝ , ext(a) = Some(e), ext((λ n. (n < # al ⊃ al[n];(n - # al = 0 ⊃ a;af1(n - # al - 1))))(m)) ≠ None, n + # al < m, ∀ n0. n0 < # el0 → ext !(⌜af1⌝ )[n0] = el0[n0], ∀ m. n ≤ m → ext(af1(m)) = None ⊦
Used terms: al, λ n0. (n0 = 0 ⊃ a;af1(n0 - 1))
| ⊦ x + nf = (λ n. (n < # x ⊃ x[n];nf(n - # x))) |
| ext !(al) = [], # ext !(⌜af1⌝ ) = ⌜# el0⌝ , ext(a) = Some(e), ext((λ n. (n < # al ⊃ al[n];(n - # al = 0 ⊃ a;af1(n - # al - 1))))(m)) ≠ None, n + # al < m, ∀ n0. n0 < # el0 → ext !(⌜af1⌝ )[n0] = el0[n0], ∀ m. n ≤ m → ext(af1(m)) = None ⊦ |
ext !(al) = [], # ext !(⌜af1⌝ ) = ⌜# el0⌝ , ext(a) = Some(e), ext((m - # al = 0 ⊃ a;af1(m - # al - 1))) ≠ None, n + # al < m, ∀ n0. n0 < # el0 → ext !(⌜af1⌝ )[n0] = el0[n0], ∀ m. n ≤ m → ext(af1(m)) = None ⊦
Used simplifier rules: c: ⊦ m + n = n + m; from specification nat-basic a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic ⊦ m + m0 < n → ¬ n + n0 < m; (s) ⊦ m +1 = m + 1; (s) ⊦ # x = 0 ↔ x = []; (s) f: ⊦ m < n → n ≠ 0; (forward) from specification nat-basic trans-Nat: ⊦ n < n0 ∧ n0 < n1 → n < n1; (forward) from specification nat-basic lf: ⊦ m < n ∧ n < n0 → m +1 < n0; (forward) from specification nat-basic
| ext !(al) = [], # ext !(⌜af1⌝ ) = ⌜# el0⌝ , ext(a) = Some(e), ext((m - # al = 0 ⊃ a;af1(m - # al - 1))) ≠ None, n + # al < m, ∀ n0. n0 < # el0 → ext !(⌜af1⌝ )[n0] = el0[n0], ∀ m. n ≤ m → ext(af1(m)) = None ⊦ |
ext !(al) = [], # ext !(⌜af1⌝ ) = ⌜# el0⌝ , ext(a) = Some(e), m = n1 + # al, ext((n1 = 0 ⊃ a;af1(n1 - 1))) ≠ None, n + # al < m, # al ≤ m, ∀ m. n ≤ m → ext(af1(m)) = None, ∀ n0. n0 < # el0 → ext !(⌜af1⌝ )[n0] = el0[n0] ⊦
Used simplifier rules: ⊦ m ≤ n ↔ ¬ n < m; (ss) f: ⊦ m < n → n ≠ 0; (forward) from specification nat-basic lf: ⊦ m < n ∧ n < n0 → m +1 < n0; (forward) from specification nat-basic trans-Nat: ⊦ n < n0 ∧ n0 < n1 → n < n1; (forward) from specification nat-basic ⊦ # x = 0 ↔ x = []; (s) ⊦ m +1 = m + 1; (s) ⊦ 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 n ≤ m ⊦ n0 = m - n ↔ m = n0 + n; (elim) Used terms: m, # al, n1
| ext !(al) = [], # ext !(⌜af1⌝ ) = ⌜# el0⌝ , ext(a) = Some(e), m = n1 + # al, ext((n1 = 0 ⊃ a;af1(n1 - 1))) ≠ None, n + # al < m, # al ≤ m, ∀ m. n ≤ m → ext(af1(m)) = None, ∀ n0. n0 < # el0 → ext !(⌜af1⌝ )[n0] = el0[n0] ⊦ |
ext !(al) = [], # ext !(⌜af1⌝ ) = ⌜# el0⌝ , ext(a) = Some(e), ext(af1(n1 - 1)) ≠ None, n < n1, ∀ m. n ≤ m → ext(af1(m)) = None, ∀ n0. n0 < # el0 → ext !(⌜af1⌝ )[n0] = el0[n0] ⊦
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 + n0 ↔ n < n0; (s) ⊦ m ≤ m + n; (s)
| ext !(al) = [], # ext !(⌜af1⌝ ) = ⌜# el0⌝ , ext(a) = Some(e), ext(af1(n1 - 1)) ≠ None, n < n1, ∀ m. n ≤ m → ext(af1(m)) = None, ∀ n0. n0 < # el0 → ext !(⌜af1⌝ )[n0] = el0[n0] ⊦ |
ext !(al) = [], # ext !(⌜af1⌝ ) = ⌜# el0⌝ , ext(a) = Some(e), n1 = m0 + 1, ext(af1(m0)) ≠ None, n1 ≠ 0, n < n1, ∀ n0. n0 < # el0 → ext !(⌜af1⌝ )[n0] = el0[n0], ∀ m. n ≤ m → ext(af1(m)) = None ⊦
Used simplifier rules: ⊦ ¬ n < 0; (s) n ≠ 0 ⊦ m = n - 1 ↔ n = m + 1; (elim) Used terms: n1, m0
| ext !(al) = [], # ext !(⌜af1⌝ ) = ⌜# el0⌝ , ext(a) = Some(e), n1 = m0 + 1, ext(af1(m0)) ≠ None, n1 ≠ 0, n < n1, ∀ n0. n0 < # el0 → ext !(⌜af1⌝ )[n0] = el0[n0], ∀ m. n ≤ m → ext(af1(m)) = None ⊦ |
ext !(al) = [], # ext !(⌜af1⌝ ) = ⌜# el0⌝ , ext(a) = Some(e), ext(af1(m0)) ≠ None, n ≤ m0, ∀ m. n ≤ m → ext(af1(m)) = None, ∀ n0. n0 < # el0 → ext !(⌜af1⌝ )[n0] = el0[n0] ⊦
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 + 1 ↔ ¬ n < m; (s) ⊦ m + 1 ≠ 0; (s)
| ext !(al) = [], # ext !(⌜af1⌝ ) = ⌜# el0⌝ , ext(a) = Some(e), ext(af1(m0)) ≠ None, n ≤ m0, ∀ m. n ≤ m → ext(af1(m)) = None, ∀ n0. n0 < # el0 → ext !(⌜af1⌝ )[n0] = el0[n0] ⊦ |
Used terms: m0
| ¬ finp(ext !(⌜af⌝ )), ∃ n. ∀ m. n ≤ m → ext(af(m)) = None ⊦ |
⌜ef⌝ = ext !(⌜af⌝ ), ∀ m. n ≤ m → ext(af(m)) = None ⊦
Used simplifier rules: ⊦ finp(σ) ↔ ¬(∃ nf. ⌜nf⌝ = σ); (ss)
| ⌜ef⌝ = ext !(⌜af⌝ ), ∀ m. n ≤ m → ext(af(m)) = None ⊦ |
⌜ef⌝ = ext !(⌜af⌝ ), ∀ m. n ≤ m → ext(af(m)) = None, ∀ n0, ef, ext, af. n0 < n → ⌜ef⌝ = ext !(⌜af⌝ ) ∧ (∀ m. n0 ≤ m → ext(af(m)) = None) → false ⊦
Used simplifier rules: <; (wellfounded) Used terms: n
| ⌜ef⌝ = ext !(⌜af⌝ ), ∀ m. n ≤ m → ext(af(m)) = None, ∀ n0, ef, ext, af. n0 < n → ⌜ef⌝ = ext !(⌜af⌝ ) ∧ (∀ m. n0 ≤ m → ext(af(m)) = None) → false ⊦ |
⊦ ⌜nf⌝ = nf(0) + ⌜λ n. nf(n + 1)⌝
ef(0) + ⌜λ n. ef(n + 1)⌝ = ext !(⌜af⌝ ), ∀ m. n ≤ m → ext(af(m)) = None, ∀ n0, ef, ext, af. n0 < n → ⌜ef⌝ = ext !(⌜af⌝ ) ∧ (∀ m. n0 ≤ m → ext(af(m)) = None) → false ⊦
Used terms: ef
| ⊦ ⌜nf⌝ = nf(0) + ⌜λ n. nf(n + 1)⌝ |
| ef(0) + ⌜λ n. ef(n + 1)⌝ = ext !(⌜af⌝ ), ∀ m. n ≤ m → ext(af(m)) = None, ∀ n0, ef, ext, af. n0 < n → ⌜ef⌝ = ext !(⌜af⌝ ) ∧ (∀ m. n0 ≤ m → ext(af(m)) = None) → false ⊦ |
⌜ef(0) '⌝ + ⌜λ n. ef(n + 1)⌝ = ext !(⌜af⌝ ), ∀ m. n ≤ m → ext(af(m)) = None, ∀ n0, ef, ext, af. n0 < n → ⌜ef⌝ = ext !(⌜af⌝ ) ∧ (∀ m. n0 ≤ m → ext(af(m)) = None) → false ⊦
Used simplifier rules: ⊦ a + σ = ⌜a '⌝ + σ; (s)
| ⌜ef(0) '⌝ + ⌜λ n. ef(n + 1)⌝ = ext !(⌜af⌝ ), ∀ m. n ≤ m → ext(af(m)) = None, ∀ n0, ef, ext, af. n0 < n → ⌜ef⌝ = ext !(⌜af⌝ ) ∧ (∀ m. n0 ≤ m → ext(af(m)) = None) → false ⊦ |
⊦ ext !(α) = ⌜e '⌝ + β ↔ (∃ al, a, α0. α = ⌜al⌝ + ⌜a '⌝ + α0 ∧ ext(a) = Some(e) ∧ ext !(⌜al⌝ ) = [] ∧ ext !(α0) = β)
∀ m. n ≤ m → ext(af(m)) = None, ∃ al, a, α0. ⌜af⌝ = ⌜al⌝ + ⌜a '⌝ + α0 ∧ ext(a) = Some(ef(0)) ∧ ext !(⌜al⌝ ) = [] ∧ ext !(α0) = ⌜λ n. ef(n + 1)⌝ , ∀ n0, ef, ext, af. n0 < n → ⌜ef⌝ = ext !(⌜af⌝ ) ∧ (∀ m. n0 ≤ m → ext(af(m)) = None) → false ⊦
Used simplifier rules: append-assoc: ⊦ (σ + σ1) + σ2 = σ + σ1 + σ2; from specification stream Used terms: ext, ⌜af⌝ , ef(0), ⌜λ n. ef(n + 1)⌝
| ⊦ ext !(α) = ⌜e '⌝ + β ↔ (∃ al, a, α0. α = ⌜al⌝ + ⌜a '⌝ + α0 ∧ ext(a) = Some(e) ∧ ext !(⌜al⌝ ) = [] ∧ ext !(α0) = β) |
| ∀ m. n ≤ m → ext(af(m)) = None, ∃ al, a, α0. ⌜af⌝ = ⌜al⌝ + ⌜a '⌝ + α0 ∧ ext(a) = Some(ef(0)) ∧ ext !(⌜al⌝ ) = [] ∧ ext !(α0) = ⌜λ n. ef(n + 1)⌝ , ∀ n0, ef, ext, af. n0 < n → ⌜ef⌝ = ext !(⌜af⌝ ) ∧ (∀ m. n0 ≤ m → ext(af(m)) = None) → false ⊦ |
ext !(al) = [], ext !(⌜af1⌝ ) = ⌜λ n. ef(n + 1)⌝ , ext(a) = Some(ef(0)), ∀ m. n ≤ m → ext(((al + a ' + af1))(m)) = None, ∀ n0, ef, ext, af. n0 < n → ⌜ef⌝ = ext !(⌜af⌝ ) ∧ (∀ m. n0 ≤ m → ext(af(m)) = None) → false ⊦
Used simplifier rules: finremtau-def: ⊦ ext !(⌜al⌝ ) = ⌜ext !(al)⌝ ; append-assoc: ⊦ (σ + σ1) + σ2 = σ + σ1 + σ2; from specification stream ⊦ (⌜x⌝ + ⌜nf⌝ ).f = x + nf; (s) ⊦ finp(σ) ↔ ¬(∃ nf. ⌜nf⌝ = σ); (ss) ⊦ ⌜x⌝ + σ = ⌜nf⌝ ↔ ¬ finp(σ) ∧ x + σ.f = nf; (as) ⊦ ⌜x⌝ = [] ↔ x = []; (s)
| ext !(al) = [], ext !(⌜af1⌝ ) = ⌜λ n. ef(n + 1)⌝ , ext(a) = Some(ef(0)), ∀ m. n ≤ m → ext(((al + a ' + af1))(m)) = None, ∀ n0, ef, ext, af. n0 < n → ⌜ef⌝ = ext !(⌜af⌝ ) ∧ (∀ m. n0 ≤ m → ext(af(m)) = None) → false ⊦ |
ext !(⌜af1⌝ ) = ⌜λ n. ef(n + 1)⌝ , ext !(al) = [], ext(a) = Some(ef(0)), n ≤ # al → ext(((al + a ' + af1))(# al)) = None, ∀ m. n ≤ m → ext(((al + a ' + af1))(m)) = None, ∀ n0, ef, ext, af. n0 < n → ⌜ef⌝ = ext !(⌜af⌝ ) ∧ (∀ m. n0 ≤ m → ext(af(m)) = None) → false ⊦
Used terms: # al
| ext !(⌜af1⌝ ) = ⌜λ n. ef(n + 1)⌝ , ext !(al) = [], ext(a) = Some(ef(0)), n ≤ # al → ext(((al + a ' + af1))(# al)) = None, ∀ m. n ≤ m → ext(((al + a ' + af1))(m)) = None, ∀ n0, ef, ext, af. n0 < n → ⌜ef⌝ = ext !(⌜af⌝ ) ∧ (∀ m. n0 ≤ m → ext(af(m)) = None) → false ⊦ |
⊦ x + nf = (λ n. (n < # x ⊃ x[n];nf(n - # x)))
ext !(al) = [], ext !(⌜af1⌝ ) = ⌜λ n. ef(n + 1)⌝ , ext(a) = Some(ef(0)), n ≤ # al → ext((λ n. (n < # al ⊃ al[n];((a ' + af1))(n - # al)))(# al)) = None, ∀ m. n ≤ m → ext((λ n. (n < # al ⊃ al[n];((a ' + af1))(n - # al)))(m)) = None, ∀ n0, ef, ext, af. n0 < n → ⌜ef⌝ = ext !(⌜af⌝ ) ∧ (∀ m. n0 ≤ m → ext(af(m)) = None) → false ⊦
Used terms: al, a ' + af1
| ⊦ x + nf = (λ n. (n < # x ⊃ x[n];nf(n - # x))) |
| ext !(al) = [], ext !(⌜af1⌝ ) = ⌜λ n. ef(n + 1)⌝ , ext(a) = Some(ef(0)), n ≤ # al → ext((λ n. (n < # al ⊃ al[n];((a ' + af1))(n - # al)))(# al)) = None, ∀ m. n ≤ m → ext((λ n. (n < # al ⊃ al[n];((a ' + af1))(n - # al)))(m)) = None, ∀ n0, ef, ext, af. n0 < n → ⌜ef⌝ = ext !(⌜af⌝ ) ∧ (∀ m. n0 ≤ m → ext(af(m)) = None) → false ⊦ |
ext !(⌜af1⌝ ) = ⌜λ n. ef(n + 1)⌝ , ext !(al) = [], ext(a) = Some(ef(0)), # al < n, ∀ m. n ≤ m → ext(((a ' + af1))(m - # al)) = None, ∀ n0, ef, ext, af. n0 < n → ⌜ef⌝ = ext !(⌜af⌝ ) ∧ (∀ m. n0 ≤ m → ext(af(m)) = None) → false ⊦
Used simplifier rules: ⊦ m < n → n ≠ 0; (s) f: ⊦ m < n → n ≠ 0; (forward) from specification nat-basic ⊦ m < n → ¬ n < m; (s) ⊦ # x = 0 ↔ x = []; (s) trans-Nat: ⊦ n < n0 ∧ n0 < n1 → n < n1; (forward) from specification nat-basic lf: ⊦ m < n ∧ n < n0 → m +1 < n0; (forward) from specification nat-basic fle-01: ⊦ m ≤ n ∧ n < n0 → m < n0; (forward) from specification nat fle: ⊦ m < n ∧ n ≤ n0 → m < n0; (forward) from specification nat ⊦ m ≤ n ↔ ¬ n < m; (ss) ⊦ Some(a) ≠ None; (s) ⊦ ((a ' + nf))(0) = a; (s) ⊦ m - m = 0; (s) ⊦ ¬ n < n; (s)
| ext !(⌜af1⌝ ) = ⌜λ n. ef(n + 1)⌝ , ext !(al) = [], ext(a) = Some(ef(0)), # al < n, ∀ m. n ≤ m → ext(((a ' + af1))(m - # al)) = None, ∀ n0, ef, ext, af. n0 < n → ⌜ef⌝ = ext !(⌜af⌝ ) ∧ (∀ m. n0 ≤ m → ext(af(m)) = None) → false ⊦ |
ext !(al) = [], ext !(⌜af1⌝ ) = ⌜λ n. ef(n + 1)⌝ , ext(a) = Some(ef(0)), # al < n, ∀ m. n ≤ m → ext(((a ' + af1))(m - # al)) = None, ∀ n0, ef, ext, af. n0 < n → ⌜ef⌝ = ext !(⌜af⌝ ) ∧ (∀ m. n0 ≤ m → ext(af(m)) = None) → false ⊦ ⌜λ n. ef(n + 1)⌝ = ext !(⌜af1⌝ ) ∧ (∀ m. n - # al - 1 ≤ m → ext(af1(m)) = None)
Used simplifier rules: n0 ≤ n ⊦ m ≤ n - n0 ↔ m + n0 ≤ n; (s) ⊦ m + 1 ≤ n ↔ m < n; (s) ⊦ m < n ↔ ¬ n ≤ m; (ss) ⊦ m < n → (n ≤ m ↔ false); (s) ⊦ m < n → m ≤ n; (s) n0 ≤ n ⊦ n - n0 < m ↔ n < m + n0; (s) ⊦ m < n + 1 ↔ ¬ n < m; (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: n - # al - 1, λ n. ef(n + 1), ext, af1
| ext !(al) = [], ext !(⌜af1⌝ ) = ⌜λ n. ef(n + 1)⌝ , ext(a) = Some(ef(0)), # al < n, ∀ m. n ≤ m → ext(((a ' + af1))(m - # al)) = None, ∀ n0, ef, ext, af. n0 < n → ⌜ef⌝ = ext !(⌜af⌝ ) ∧ (∀ m. n0 ≤ m → ext(af(m)) = None) → false ⊦ ⌜λ n. ef(n + 1)⌝ = ext !(⌜af1⌝ ) ∧ (∀ m. n - # al - 1 ≤ m → ext(af1(m)) = None) |
ext !(al) = [], ext !(⌜af1⌝ ) = ⌜λ n. ef(n + 1)⌝ , ext(a) = Some(ef(0)), ext(af1(m)) ≠ None, # al < n, n ≤ (m + 1) + # al, ∀ m. n ≤ m → ext(((a ' + af1))(m - # al)) = None, ∀ n0, ef, ext, af. n0 < n → ⌜ef⌝ = ext !(⌜af⌝ ) ∧ (∀ m. n0 ≤ m → ext(af(m)) = None) → false ⊦
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 < m; (s) ⊦ m < n + 1 ↔ ¬ n < m; (s) fle: ⊦ m < n ∧ n ≤ n0 → m < n0; (forward) from specification nat n0 ≤ n ⊦ n - n0 ≤ m ↔ n ≤ m + n0; (s) ⊦ m < n → m ≤ n; (s) ⊦ m < n → (n ≤ m ↔ false); (s) ⊦ m < n ↔ ¬ n ≤ m; (ss) ⊦ m + 1 ≤ n ↔ m < n; (s) n0 ≤ n ⊦ m ≤ n - n0 ↔ m + n0 ≤ n; (s)
| ext !(al) = [], ext !(⌜af1⌝ ) = ⌜λ n. ef(n + 1)⌝ , ext(a) = Some(ef(0)), ext(af1(m)) ≠ None, # al < n, n ≤ (m + 1) + # al, ∀ m. n ≤ m → ext(((a ' + af1))(m - # al)) = None, ∀ n0, ef, ext, af. n0 < n → ⌜ef⌝ = ext !(⌜af⌝ ) ∧ (∀ m. n0 ≤ m → ext(af(m)) = None) → false ⊦ |
ext !(⌜af1⌝ ) = ⌜λ n. ef(n + 1)⌝ , ext !(al) = [], ext(a) = Some(ef(0)), ext(af1(m)) ≠ None, # al < n, n ≤ (m + 1) + # al, n ≤ (m + 1) + # al → ext(((a ' + af1))((m + 1) + # al - # al)) = None, ∀ n0, ef, ext, af. n0 < n → ⌜ef⌝ = ext !(⌜af⌝ ) ∧ (∀ m. n0 ≤ m → ext(af(m)) = None) → false ⊦
Used terms: (m + 1) + # al
| ext !(⌜af1⌝ ) = ⌜λ n. ef(n + 1)⌝ , ext !(al) = [], ext(a) = Some(ef(0)), ext(af1(m)) ≠ None, # al < n, n ≤ (m + 1) + # al, n ≤ (m + 1) + # al → ext(((a ' + af1))((m + 1) + # al - # al)) = None, ∀ n0, ef, ext, af. n0 < n → ⌜ef⌝ = ext !(⌜af⌝ ) ∧ (∀ m. n0 ≤ m → ext(af(m)) = None) → false ⊦ |
ext !(al) = [], ext !(⌜af1⌝ ) = ⌜λ n. ef(n + 1)⌝ , ext(a) = Some(ef(0)), ext(((a ' + af1))(m + 1)) = None, ext(af1(m)) ≠ None, # al < n, n ≤ (m + 1) + # al, ∀ n0, ef, ext, af. n0 < n → ⌜ef⌝ = ext !(⌜af⌝ ) ∧ (∀ m. n0 ≤ m → ext(af(m)) = None) → false ⊦
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 - m = n; (s)
| ext !(al) = [], ext !(⌜af1⌝ ) = ⌜λ n. ef(n + 1)⌝ , ext(a) = Some(ef(0)), ext(((a ' + af1))(m + 1)) = None, ext(af1(m)) ≠ None, # al < n, n ≤ (m + 1) + # al, ∀ n0, ef, ext, af. n0 < n → ⌜ef⌝ = ext !(⌜af⌝ ) ∧ (∀ m. n0 ≤ m → ext(af(m)) = None) → false ⊦ |
⊦ x + nf = (λ n. (n < # x ⊃ x[n];nf(n - # x)))
Used simplifier rules: ⊦ m < 1 ↔ m = 0; (s) ⊦ a '[0] = a; (s) ⊦ # a ' = 0 +1; (s) ⊦ m + 1 ≠ 0; (s) ⊦ n ≤ m → m + n0 - n = (m - n) + n0; (s) ⊦ n + 0 = n; (s) a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic c: ⊦ m + n = n + m; from specification nat-basic Used terms: a ', af1
| ⊦ x + nf = (λ n. (n < # x ⊃ x[n];nf(n - # x))) |
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.