Documentation

Formalizations.SetTheory.Ordinal.Gentzen.Ordinals

Height doubling on normal ordinal notations below ε₀ #

The ordinal layer of Gentzen's cut elimination, on Mathlib's normal ordinal notations NONote (ordinals below ε₀): the height-doubling map twoPow a = 2 ^ a (computable, through NONote.opow) and the inequalities L1–L5 used to bound the height of a derivation after a cut is eliminated.

These statements go through NONote.repr and Mathlib's order on NONote, which is defined by repr, so they depend on Classical.choice (through Ordinal.lt_wf). The choice-free versions, stated with a syntactic order and normal form, are in Formalizations.SetTheory.Ordinal.Gentzen.Acc and Formalizations.SetTheory.Ordinal.Gentzen.TwoPow.

Main results #

References #

Basic notations #

@[instance_reducible]

1 as a normal notation (Mathlib's NONote has no One instance).

Equations

2 as a normal notation.

Equations
Instances For
    @[simp]
    theorem Gentzen.Ordinals.ext_repr {a b : NONote} (h : a.repr = b.repr) :
    a = b

    The height-doubling map #

    twoPow a is the notation of the ordinal 2 ^ a (computable, via ONote.opow).

    Equations
    Instances For

      2^(a+1) = 2^a + 2^a.

      L3: monotonicity #

      L4: commutes with max #

      L1, L2: the tall-rule and disjunction-cut bounds #

      theorem Gentzen.Ordinals.L1 {a : NONote} (h : 1 ≤ a) :
      twoPow a + 1 < twoPow (a + 1)

      L1. False at a = 0 (2^0 + 1 = 2 = 2^1), see L1_fails_at_zero.

      theorem Gentzen.Ordinals.L2 {a : NONote} (h : two ≤ a) :
      twoPow a + two < twoPow (a + 1)

      L2. False at a = 1 (2^1 + 2 = 4 = 2^2), see L2_fails_at_one.

      L5: bounds for a cut of height max + 2 #

      theorem Gentzen.Ordinals.L5 (a : NONote) :
      twoPow a + two < twoPow (a + 1 + 1)

      L5a. 2^a + 2 < 2^(a+2) for every a (no side condition).

      L5b. Premises of heights a, b reduce to height at most 2^(max a b + 1).

      Transfinite induction #

      theorem Gentzen.Ordinals.ti {P : NONote → Prop} (h : ∀ (a : NONote), (∀ b < a, P b) → P a) (a : NONote) :
      P a

      Transfinite induction below ε₀, derived from NONote.lt_wf.