Documentation

Formalizations.SetTheory.Ordinal.Gentzen.Acc

Choice-free well-foundedness of ordinal notations below ε₀ #

Mathlib proves that its normal ordinal notations are well founded (NONote.lt_wf), but its order < and normal form ONote.NF on ONote are defined through ONote.repr : ONote → Ordinal, so that proof depends on Classical.choice (through Ordinal.lt_wf).

This file defines a syntactic strict order slt (lexicographic comparison by ONote.cmp) and a syntactic Cantor normal form SNF on Mathlib's ONote, neither of which mentions Ordinal or repr, and proves directly that slt is well founded on syntactic normal forms, by a nested induction (exponent, coefficient, tail) in the style of Gentzen and Schütte. The core results depend only on propext.

A bridge section proves that slt and SNF agree with Mathlib's < and NF; the bridge does use Classical.choice.

Main results #

References #

Syntactic order and normal form (no Ordinal, no repr) #

Syntactic strict order on notations: lexicographic comparison by ONote.cmp.

Equations
Instances For

    topBelow a e: the leading exponent of a (if any) is slt-below e.

    Equations
    Instances For

      Syntactic Cantor normal form: exponents strictly decreasing (w.r.t. slt), recursively.

      Equations
      Instances For

        Constructive facts about Ordering.then and cmp #

        theorem Gentzen.Acc.natCmp_lt {m n : ℕ} (h : cmp m n = Ordering.lt) :
        m < n
        theorem Gentzen.Acc.natCmp_eq {m n : ℕ} (h : cmp m n = Ordering.eq) :
        m = n
        theorem Gentzen.Acc.eq_of_cmp_eq' {a b : ONote} :
        a.cmp b = Ordering.eq → a = b

        Constructive version of ONote.eq_of_cmp_eq.

        theorem Gentzen.Acc.slt_oadd_cases {e : ONote} {n : ℕ+} {a e' : ONote} {n' : ℕ+} {a' : ONote} (h : slt (e'.oadd n' a') (e.oadd n a)) :
        slt e' e ∨ e' = e ∧ ↑n' < ↑n ∨ e' = e ∧ n' = n ∧ slt a' a

        Accessibility #

        def Gentzen.Acc.R (x y : ONote) :

        The relation whose accessibility we prove: slt restricted to syntactic normal forms.

        Equations
        Instances For

          H e: every normal notation below ω ^ e is accessible.

          Equations
          Instances For
            theorem Gentzen.Acc.acc_oadd_of_H {e : ONote} (hH : H e) (k : ℕ) (n : ℕ+) :
            ↑n ≤ k → ∀ (a : ONote), Acc R a → SNF (e.oadd n a) → Acc R (e.oadd n a)

            Coefficient/tail step: if everything below ω^e is accessible, so is ω^e·n + a for accessible a (induction on the coefficient bound k, then on Acc a).

            theorem Gentzen.Acc.H_of_acc (e : ONote) :
            Acc R e → H e

            Exponent step (the "accessibility of ω^x" lemma): induction on Acc e.

            theorem Gentzen.Acc.acc_slt (a : ONote) :
            SNF a → Acc (fun (x y : ONote) => SNF x ∧ slt x y) a

            Main theorem: every syntactic normal form is accessible for slt restricted to SNF.

            theorem Gentzen.Acc.wf_slt :
            WellFounded fun (x y : { a : ONote // SNF a }) => slt ↑x ↑y

            Well-foundedness of slt on the subtype of syntactic normal forms.

            theorem Gentzen.Acc.ti_syntactic {P : ONote → Prop} (h : ∀ (a : ONote), SNF a → (∀ (b : ONote), SNF b → slt b a → P b) → P a) (a : ONote) :
            SNF a → P a

            Transfinite induction below ε₀ on syntactic normal forms (choice-free).

            Bridge to Mathlib's < and NF (uses choice) #

            theorem Gentzen.Acc.slt_iff_lt (a b : ONote) [a.NF] [b.NF] :
            slt a b ↔ a < b

            Checks on samples (by decide) #

            Samples, in increasing order: 0, 1, 2, ω, ω+1, ω·2, ω^ω.

            Equations
            Instances For