| ⊦ mon(lf) ↔ (∀ af. mon(⌜λ n. ⌜lf(af.take(n))⌝ ⌝ )) |
⊦ mon(lf) ↔ (∀ al1, al2. al1 ⊑ al2 → lf(al1) ⊑ lf(al2))
⊦ (∀ al1, al2. al1 ⊑ al2 → lf(al1) ⊑ lf(al2)) ↔ (∀ af. mon(⌜λ n. ⌜lf(af.take(n))⌝ ⌝ ))
Used terms: lf
| ⊦ mon(lf) ↔ (∀ al1, al2. al1 ⊑ al2 → lf(al1) ⊑ lf(al2)) |
| ⊦ (∀ al1, al2. al1 ⊑ al2 → lf(al1) ⊑ lf(al2)) ↔ (∀ af. mon(⌜λ n. ⌜lf(af.take(n))⌝ ⌝ )) |
∀ al1, al2. al1 ⊑ al2 → lf(al1) ⊑ lf(al2) ⊦ ∀ af. mon(⌜λ n. ⌜lf(af.take(n))⌝ ⌝ )
∀ af. mon(⌜λ n. ⌜lf(af.take(n))⌝ ⌝ ) ⊦ ∀ al1, al2. al1 ⊑ al2 → lf(al1) ⊑ lf(al2)
| ∀ al1, al2. al1 ⊑ al2 → lf(al1) ⊑ lf(al2) ⊦ ∀ af. mon(⌜λ n. ⌜lf(af.take(n))⌝ ⌝ ) |
¬ mon(⌜λ n. ⌜lf(af.take(n))⌝ ⌝ ), ∀ al1, al2. al1 ⊑ al2 → lf(al1) ⊑ lf(al2) ⊦
| ¬ mon(⌜λ n. ⌜lf(af.take(n))⌝ ⌝ ), ∀ al1, al2. al1 ⊑ al2 → lf(al1) ⊑ lf(al2) ⊦ |
⊦ mon(σσ) ↔ (∀ n. ⌜n⌝ + ⌜1⌝ < # σσ → σσ(n) ⊑ σσ(n + 1))
∀ al1, al2. al1 ⊑ al2 → lf(al1) ⊑ lf(al2), ∃ n. ¬(⌜n⌝ + ⌜1⌝ < # ⌜λ n. ⌜lf(af.take(n))⌝ ⌝ → ⌜λ n. ⌜lf(af.take(n))⌝ ⌝ (n) ⊑ ⌜λ n. ⌜lf(af.take(n))⌝ ⌝ (n + 1)) ⊦
Used terms: ⌜λ n. ⌜lf(af.take(n))⌝ ⌝
| ⊦ mon(σσ) ↔ (∀ n. ⌜n⌝ + ⌜1⌝ < # σσ → σσ(n) ⊑ σσ(n + 1)) |
| ∀ al1, al2. al1 ⊑ al2 → lf(al1) ⊑ lf(al2), ∃ n. ¬(⌜n⌝ + ⌜1⌝ < # ⌜λ n. ⌜lf(af.take(n))⌝ ⌝ → ⌜λ n. ⌜lf(af.take(n))⌝ ⌝ (n) ⊑ ⌜λ n. ⌜lf(af.take(n))⌝ ⌝ (n + 1)) ⊦ |
¬ ⌜lf(af.take(n))⌝ ⊑ ⌜lf(af.take(n + 1))⌝ , ∀ al1, al2. al1 ⊑ al2 → lf(al1) ⊑ lf(al2) ⊦
Used simplifier rules: ⊦ ⌜nf⌝ (n) = nf(n); (s) add-comm: ⊦ n∞1 + n∞2 = n∞2 + n∞1; from specification nat-inf add-assoc: ⊦ (n∞ + n∞1) + n∞2 = n∞ + n∞1 + n∞2; from specification nat-inf ⊦ ⌜n⌝ ≠ ∞; (s) ⊦ ⌜m⌝ + n∞ = ∞ ↔ n∞ = ∞; (s) ⊦ n∞ < ∞ ↔ n∞ ≠ ∞; (s) ⊦ # ⌜nf⌝ = ∞; (s)
| ¬ ⌜lf(af.take(n))⌝ ⊑ ⌜lf(af.take(n + 1))⌝ , ∀ al1, al2. al1 ⊑ al2 → lf(al1) ⊑ lf(al2) ⊦ |
¬ ⌜lf(af.take(n))⌝ ⊑ ⌜lf(af.take(n + 1))⌝ , af.take(n) ⊑ af.take(n + 1) → lf(af.take(n)) ⊑ lf(af.take(n + 1)) ⊦
Used terms: af.take(n), af.take(n + 1)
| ¬ ⌜lf(af.take(n))⌝ ⊑ ⌜lf(af.take(n + 1))⌝ , af.take(n) ⊑ af.take(n + 1) → lf(af.take(n)) ⊑ lf(af.take(n + 1)) ⊦ |
⊦ nf.take(m + 1) = nf.take(m) + nf(m) '
¬ ⌜lf(af.take(n))⌝ ⊑ ⌜lf(af.take(n) + af(n) ')⌝ , af.take(n) ⊑ af.take(n) + af(n) ' → lf(af.take(n)) ⊑ lf(af.take(n) + af(n) ') ⊦
Used simplifier rules: a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic c: ⊦ m + n = n + m; from specification nat-basic Used terms: af, n
| ⊦ nf.take(m + 1) = nf.take(m) + nf(m) ' |
| ¬ ⌜lf(af.take(n))⌝ ⊑ ⌜lf(af.take(n) + af(n) ')⌝ , af.take(n) ⊑ af.take(n) + af(n) ' → lf(af.take(n)) ⊑ lf(af.take(n) + af(n) ') ⊦ |
lf(af.take(n)) ⊑ lf(af.take(n) + af(n) '), ¬ ⌜lf(af.take(n))⌝ ⊑ ⌜lf(af.take(n) + af(n) ')⌝ ⊦
Used simplifier rules: a: ⊦ (x + y) + z = x + y + z; from specification list ⊦ # x0 = # x1 → (x0 ⊑ x1 + x2 ↔ x0 = x1); (s)
| lf(af.take(n)) ⊑ lf(af.take(n) + af(n) '), ¬ ⌜lf(af.take(n))⌝ ⊑ ⌜lf(af.take(n) + af(n) ')⌝ ⊦ |
⊦ x ⊑ y ↔ (∃ z. x + z = y)
Used simplifier rules: ⊦ ⌜x + y⌝ = ⌜x⌝ + ⌜y⌝ ; (s) a: ⊦ (x + y) + z = x + y + z; from specification list ⊦ σ1 ⊑ σ1 + σ2; (s) append-assoc: ⊦ (σ + σ1) + σ2 = σ + σ1 + σ2; from specification stream Used terms: lf(af.take(n)), lf(af.take(n) + af(n) ')
| ⊦ x ⊑ y ↔ (∃ z. x + z = y) |
| ∀ af. mon(⌜λ n. ⌜lf(af.take(n))⌝ ⌝ ) ⊦ ∀ al1, al2. al1 ⊑ al2 → lf(al1) ⊑ lf(al2) |
al1 ⊑ al2, ¬ lf(al1) ⊑ lf(al2), ∀ af. mon(⌜λ n. ⌜lf(af.take(n))⌝ ⌝ ) ⊦
| al1 ⊑ al2, ¬ lf(al1) ⊑ lf(al2), ∀ af. mon(⌜λ n. ⌜lf(af.take(n))⌝ ⌝ ) ⊦ |
mon(⌜λ n. ⌜lf((λ n. (n < # al2 ⊃ al2(n);a)).take(n))⌝ ⌝ ), al1 ⊑ al2, ¬ lf(al1) ⊑ lf(al2) ⊦
Used terms: λ n. (n < # al2 ⊃ al2(n);a)
| mon(⌜λ n. ⌜lf((λ n. (n < # al2 ⊃ al2(n);a)).take(n))⌝ ⌝ ), al1 ⊑ al2, ¬ lf(al1) ⊑ lf(al2) ⊦ |
mon(σσ), m ≤ n, ⌜n⌝ < # σσ ⊦ σσ(m) ⊑ σσ(n)
mon(⌜λ n. ⌜lf((λ n. (n < # al2 ⊃ al2(n);a)).take(n))⌝ ⌝ ), al1 ⊑ al2, ⌜λ n. ⌜lf((λ n. (n < # al2 ⊃ al2(n);a)).take(n))⌝ ⌝ (# al1) ⊑ ⌜λ n. ⌜lf((λ n. (n < # al2 ⊃ al2(n);a)).take(n))⌝ ⌝ (# al2), ¬ lf(al1) ⊑ lf(al2) ⊦
Used simplifier rules: ⊦ # ⌜nf⌝ = ∞; (s) ⊦ ⌜m⌝ < ∞; (s) ⊦ m ≤ n ↔ ¬ n < m; (ss) ⊦ # y < # x → ¬ x ⊑ y; (s) Used terms: ⌜λ n. ⌜lf((λ n. (n < # al2 ⊃ al2(n);a)).take(n))⌝ ⌝ , # al1, # al2
| mon(σσ), m ≤ n, ⌜n⌝ < # σσ ⊦ σσ(m) ⊑ σσ(n) |
| mon(⌜λ n. ⌜lf((λ n. (n < # al2 ⊃ al2(n);a)).take(n))⌝ ⌝ ), al1 ⊑ al2, ⌜λ n. ⌜lf((λ n. (n < # al2 ⊃ al2(n);a)).take(n))⌝ ⌝ (# al1) ⊑ ⌜λ n. ⌜lf((λ n. (n < # al2 ⊃ al2(n);a)).take(n))⌝ ⌝ (# al2), ¬ lf(al1) ⊑ lf(al2) ⊦ |
mon(⌜λ n. ⌜lf((λ n. (n < # al2 ⊃ al2(n);a)).take(n))⌝ ⌝ ), al1 ⊑ al2, ⌜lf((λ n. (n < # al2 ⊃ al2(n);a)).take(# al1))⌝ ⊑ ⌜lf((λ n. (n < # al2 ⊃ al2(n);a)).take(# al2))⌝ , ¬ lf(al1) ⊑ lf(al2) ⊦
Used simplifier rules: ⊦ ⌜nf⌝ (n) = nf(n); (s)
| mon(⌜λ n. ⌜lf((λ n. (n < # al2 ⊃ al2(n);a)).take(n))⌝ ⌝ ), al1 ⊑ al2, ⌜lf((λ n. (n < # al2 ⊃ al2(n);a)).take(# al1))⌝ ⊑ ⌜lf((λ n. (n < # al2 ⊃ al2(n);a)).take(# al2))⌝ , ¬ lf(al1) ⊑ lf(al2) ⊦ |
⊦ x ⊑ y ↔ (∃ z. x + z = y)
mon(⌜λ n. ⌜lf((λ n. (n < # al2 ⊃ al2(n);a)).take(n))⌝ ⌝ ), ⌜lf((λ n. (n < # al2 ⊃ al2(n);a)).take(# al1))⌝ ⊑ ⌜lf((λ n. (n < # al2 ⊃ al2(n);a)).take(# al2))⌝ , ¬ lf(al1) ⊑ lf(al2), ∃ z. al1 + z = al2 ⊦
Used terms: al1, al2
| ⊦ x ⊑ y ↔ (∃ z. x + z = y) |
| mon(⌜λ n. ⌜lf((λ n. (n < # al2 ⊃ al2(n);a)).take(n))⌝ ⌝ ), ⌜lf((λ n. (n < # al2 ⊃ al2(n);a)).take(# al1))⌝ ⊑ ⌜lf((λ n. (n < # al2 ⊃ al2(n);a)).take(# al2))⌝ , ¬ lf(al1) ⊑ lf(al2), ∃ z. al1 + z = al2 ⊦ |
mon(⌜λ n. ⌜lf((λ n. (n < # al1 + # al ⊃ (al1 + al)(n);a)).take(n))⌝ ⌝ ), ⌜lf((λ n. (n < # al1 + # al ⊃ (al1 + al)(n);a)).take(# al1))⌝ ⊑ ⌜lf((λ n. (n < # al1 + # al ⊃ (al1 + al)(n);a)).take(# al1 + # al))⌝ , ¬ lf(al1) ⊑ lf(al1 + al) ⊦
Used simplifier rules: a: ⊦ (x + y) + z = x + y + z; from specification list ⊦ #(x + y) = # x + # y; (s)
| mon(⌜λ n. ⌜lf((λ n. (n < # al1 + # al ⊃ (al1 + al)(n);a)).take(n))⌝ ⌝ ), ⌜lf((λ n. (n < # al1 + # al ⊃ (al1 + al)(n);a)).take(# al1))⌝ ⊑ ⌜lf((λ n. (n < # al1 + # al ⊃ (al1 + al)(n);a)).take(# al1 + # al))⌝ , ¬ lf(al1) ⊑ lf(al1 + al) ⊦ |
(λ n. (n < # al1 + # al ⊃ (al1 + al)(n);a)).take(# al1 + # al) = al1 + al, mon(⌜λ n. ⌜lf((λ n. (n < # al1 + # al ⊃ (al1 + al)(n);a)).take(n))⌝ ⌝ ), ⌜lf((λ n. (n < # al1 + # al ⊃ (al1 + al)(n);a)).take(# al1))⌝ ⊑ ⌜lf((λ n. (n < # al1 + # al ⊃ (al1 + al)(n);a)).take(# al1 + # al))⌝ , ¬ lf(al1) ⊑ lf(al1 + al) ⊦
(λ n. (n < # al1 + # al ⊃ (al1 + al)(n);a)).take(# al1 + # al) ≠ al1 + al, mon(⌜λ n. ⌜lf((λ n. (n < # al1 + # al ⊃ (al1 + al)(n);a)).take(n))⌝ ⌝ ), ⌜lf((λ n. (n < # al1 + # al ⊃ (al1 + al)(n);a)).take(# al1))⌝ ⊑ ⌜lf((λ n. (n < # al1 + # al ⊃ (al1 + al)(n);a)).take(# al1 + # al))⌝ , ¬ lf(al1) ⊑ lf(al1 + al) ⊦
Used formulas: (λ n. (n < # al1 + # al ⊃ (al1 + al)(n);a)).take(# al1 + # al) = al1 + al
| (λ n. (n < # al1 + # al ⊃ (al1 + al)(n);a)).take(# al1 + # al) = al1 + al, mon(⌜λ n. ⌜lf((λ n. (n < # al1 + # al ⊃ (al1 + al)(n);a)).take(n))⌝ ⌝ ), ⌜lf((λ n. (n < # al1 + # al ⊃ (al1 + al)(n);a)).take(# al1))⌝ ⊑ ⌜lf((λ n. (n < # al1 + # al ⊃ (al1 + al)(n);a)).take(# al1 + # al))⌝ , ¬ lf(al1) ⊑ lf(al1 + al) ⊦ |
(λ n. (n < # al1 + # al ⊃ (al1 + al)(n);a)).take(# al1 + # al) = al1 + al, mon(⌜λ n. ⌜lf((λ n. (n < # al1 + # al ⊃ (al1 + al)(n);a)).take(n))⌝ ⌝ ), ⌜lf((λ n. (n < # al1 + # al ⊃ (al1 + al)(n);a)).take(# al1))⌝ ⊑ ⌜lf(al1 + al)⌝ , ¬ lf(al1) ⊑ lf(al1 + al) ⊦
| (λ n. (n < # al1 + # al ⊃ (al1 + al)(n);a)).take(# al1 + # al) = al1 + al, mon(⌜λ n. ⌜lf((λ n. (n < # al1 + # al ⊃ (al1 + al)(n);a)).take(n))⌝ ⌝ ), ⌜lf((λ n. (n < # al1 + # al ⊃ (al1 + al)(n);a)).take(# al1))⌝ ⊑ ⌜lf(al1 + al)⌝ , ¬ lf(al1) ⊑ lf(al1 + al) ⊦ |
(λ n. (n < # al1 + # al ⊃ (al1 + al)(n);a)).take(# al1 + # al) = al1 + al, (λ n. (n < # al1 + # al ⊃ (al1 + al)(n);a)).take(# al1) = al1, mon(⌜λ n. ⌜lf((λ n. (n < # al1 + # al ⊃ (al1 + al)(n);a)).take(n))⌝ ⌝ ), ⌜lf((λ n. (n < # al1 + # al ⊃ (al1 + al)(n);a)).take(# al1))⌝ ⊑ ⌜lf(al1 + al)⌝ , ¬ lf(al1) ⊑ lf(al1 + al) ⊦
(λ n. (n < # al1 + # al ⊃ (al1 + al)(n);a)).take(# al1 + # al) = al1 + al, (λ n. (n < # al1 + # al ⊃ (al1 + al)(n);a)).take(# al1) ≠ al1, mon(⌜λ n. ⌜lf((λ n. (n < # al1 + # al ⊃ (al1 + al)(n);a)).take(n))⌝ ⌝ ), ⌜lf((λ n. (n < # al1 + # al ⊃ (al1 + al)(n);a)).take(# al1))⌝ ⊑ ⌜lf(al1 + al)⌝ , ¬ lf(al1) ⊑ lf(al1 + al) ⊦
Used formulas: (λ n. (n < # al1 + # al ⊃ (al1 + al)(n);a)).take(# al1) = al1
| (λ n. (n < # al1 + # al ⊃ (al1 + al)(n);a)).take(# al1 + # al) = al1 + al, (λ n. (n < # al1 + # al ⊃ (al1 + al)(n);a)).take(# al1) = al1, mon(⌜λ n. ⌜lf((λ n. (n < # al1 + # al ⊃ (al1 + al)(n);a)).take(n))⌝ ⌝ ), ⌜lf((λ n. (n < # al1 + # al ⊃ (al1 + al)(n);a)).take(# al1))⌝ ⊑ ⌜lf(al1 + al)⌝ , ¬ lf(al1) ⊑ lf(al1 + al) ⊦ |
(λ n. (n < # al1 + # al ⊃ (al1 + al)(n);a)).take(# al1) = al1, (λ n. (n < # al1 + # al ⊃ (al1 + al)(n);a)).take(# al1 + # al) = al1 + al, mon(⌜λ n. ⌜lf((λ n. (n < # al1 + # al ⊃ (al1 + al)(n);a)).take(n))⌝ ⌝ ), ⌜lf(al1)⌝ ⊑ ⌜lf(al1 + al)⌝ , ¬ lf(al1) ⊑ lf(al1 + al) ⊦
| (λ n. (n < # al1 + # al ⊃ (al1 + al)(n);a)).take(# al1) = al1, (λ n. (n < # al1 + # al ⊃ (al1 + al)(n);a)).take(# al1 + # al) = al1 + al, mon(⌜λ n. ⌜lf((λ n. (n < # al1 + # al ⊃ (al1 + al)(n);a)).take(n))⌝ ⌝ ), ⌜lf(al1)⌝ ⊑ ⌜lf(al1 + al)⌝ , ¬ lf(al1) ⊑ lf(al1 + al) ⊦ |
⊦ σ ⊑ σ0 ↔ (∃ σ1. σ + σ1 = σ0)
(λ n. (n < # al1 + # al ⊃ (al1 + al)(n);a)).take(# al1 + # al) = al1 + al, (λ n. (n < # al1 + # al ⊃ (al1 + al)(n);a)).take(# al1) = al1, mon(⌜λ n. ⌜lf((λ n. (n < # al1 + # al ⊃ (al1 + al)(n);a)).take(n))⌝ ⌝ ), ¬ lf(al1) ⊑ lf(al1 + al), ∃ β. ⌜lf(al1)⌝ + β = ⌜lf(al1 + al)⌝ ⊦
Used terms: ⌜lf(al1)⌝ , ⌜lf(al1 + al)⌝
| ⊦ σ ⊑ σ0 ↔ (∃ σ1. σ + σ1 = σ0) |
| (λ n. (n < # al1 + # al ⊃ (al1 + al)(n);a)).take(# al1 + # al) = al1 + al, (λ n. (n < # al1 + # al ⊃ (al1 + al)(n);a)).take(# al1) = al1, mon(⌜λ n. ⌜lf((λ n. (n < # al1 + # al ⊃ (al1 + al)(n);a)).take(n))⌝ ⌝ ), ¬ lf(al1) ⊑ lf(al1 + al), ∃ β. ⌜lf(al1)⌝ + β = ⌜lf(al1 + al)⌝ ⊦ |
⌜lf(al1)⌝ + β = ⌜lf(al1 + al)⌝ , (λ n. (n < # al1 + # al ⊃ (al1 + al)(n);a)).take(# al1) = al1, (λ n. (n < # al1 + # al ⊃ (al1 + al)(n);a)).take(# al1 + # al) = al1 + al, mon(⌜λ n. ⌜lf((λ n. (n < # al1 + # al ⊃ (al1 + al)(n);a)).take(n))⌝ ⌝ ), ¬ lf(al1) ⊑ lf(al1 + al) ⊦
| ⌜lf(al1)⌝ + β = ⌜lf(al1 + al)⌝ , (λ n. (n < # al1 + # al ⊃ (al1 + al)(n);a)).take(# al1) = al1, (λ n. (n < # al1 + # al ⊃ (al1 + al)(n);a)).take(# al1 + # al) = al1 + al, mon(⌜λ n. ⌜lf((λ n. (n < # al1 + # al ⊃ (al1 + al)(n);a)).take(n))⌝ ⌝ ), ¬ lf(al1) ⊑ lf(al1 + al) ⊦ |
Used simplifier rules: Stream[A] freely generated by ⌝, ⌝; ⊦ ⌜x⌝ ≠ σ + ⌜nf0⌝ ; (s) append-assoc: ⊦ (σ + σ1) + σ2 = σ + σ1 + σ2; from specification stream ⊦ ⌜x⌝ + ⌜y⌝ = ⌜z⌝ ↔ x + y = z; (s) ⊦ # x0 = # x1 → (x0 ⊑ x1 + x2 ↔ x0 = x1); (s) a: ⊦ (x + y) + z = x + y + z; from specification list
| (λ n. (n < # al1 + # al ⊃ (al1 + al)(n);a)).take(# al1 + # al) = al1 + al, (λ n. (n < # al1 + # al ⊃ (al1 + al)(n);a)).take(# al1) ≠ al1, mon(⌜λ n. ⌜lf((λ n. (n < # al1 + # al ⊃ (al1 + al)(n);a)).take(n))⌝ ⌝ ), ⌜lf((λ n. (n < # al1 + # al ⊃ (al1 + al)(n);a)).take(# al1))⌝ ⊑ ⌜lf(al1 + al)⌝ , ¬ lf(al1) ⊑ lf(al1 + al) ⊦ |
⊦ x = y ↔ # x = # y ∧ (∀ n. n < # x → x(n) = y(n))
Used simplifier rules: ⊦ # nf.take(n) = n; (s) ⊦ m < n → (n ≤ m ↔ false); (s) m < n ⊦ nf.take(n)(m) = nf(m); (s) ⊦ n < # x → (x + y)(n) = x(n); (s) a: ⊦ (x + y) + z = x + y + z; from specification list f: ⊦ m < n → n ≠ 0; (forward) from specification nat-basic ⊦ # x = 0 ↔ x = []; (s) ⊦ m < n ↔ ¬ n ≤ m; (ss) fle-01: ⊦ m ≤ n ∧ n < n0 → m < n0; (forward) from specification nat ⊦ ¬ 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. (n < # al1 + # al ⊃ (al1 + al)(n);a)).take(# al1), al1
| ⊦ x = y ↔ # x = # y ∧ (∀ n. n < # x → x(n) = y(n)) |
| (λ n. (n < # al1 + # al ⊃ (al1 + al)(n);a)).take(# al1 + # al) ≠ al1 + al, mon(⌜λ n. ⌜lf((λ n. (n < # al1 + # al ⊃ (al1 + al)(n);a)).take(n))⌝ ⌝ ), ⌜lf((λ n. (n < # al1 + # al ⊃ (al1 + al)(n);a)).take(# al1))⌝ ⊑ ⌜lf((λ n. (n < # al1 + # al ⊃ (al1 + al)(n);a)).take(# al1 + # al))⌝ , ¬ lf(al1) ⊑ lf(al1 + al) ⊦ |
⊦ x = y ↔ # x = # y ∧ (∀ n. n < # x → x(n) = y(n))
Used simplifier rules: ⊦ #(x + y) = # x + # y; (s) a: ⊦ (x + y) + z = x + y + z; from specification list ⊦ m + n = m + n0 ↔ n = n0; (s) a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic c: ⊦ m + n = n + m; from specification nat-basic ⊦ # nf.take(n) = n; (s) ⊦ m < n ↔ ¬ n ≤ m; (ss) ⊦ m < n → (n ≤ m ↔ false); (s) m < n ⊦ nf.take(n)(m) = nf(m); (s) Used terms: (λ n. (n < # al1 + # al ⊃ (al1 + al)(n);a)).take(# al1 + # al), al1 + al
| ⊦ x = y ↔ # x = # y ∧ (∀ n. n < # x → x(n) = y(n)) |
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.