@@ -11,6 +11,7 @@ import Mathlib.SetTheory.Ordinal.FixedPoint
1111We define principal or indecomposable ordinals, and we prove the standard properties about them.
1212
1313## Main definitions and results
14+
1415* `Principal`: A principal or indecomposable ordinal under some binary operation. We include 0 and
1516 any other typically excluded edge cases for simplicity.
1617* `unbounded_principal`: Principal ordinals are unbounded.
@@ -20,6 +21,7 @@ We define principal or indecomposable ordinals, and we prove the standard proper
2021 multiplicative principal ordinals.
2122
2223 ## TODO
24+
2325* Prove that exponential principal ordinals are 0, 1, 2, ω, or epsilon numbers, i.e. fixed points
2426 of `fun x ↦ ω ^ x`.
2527 -/
@@ -56,6 +58,15 @@ theorem principal_iff_principal_swap {o : Ordinal} :
5658theorem not_principal_iff {o : Ordinal} : ¬ Principal op o ↔ ∃ a < o, ∃ b < o, o ≤ op a b := by
5759 simp [Principal]
5860
61+ theorem principal_iff_of_monotone {o : Ordinal}
62+ (h₁ : ∀ a, Monotone (op a)) (h₂ : ∀ a, Monotone (Function.swap op a)):
63+ Principal op o ↔ ∀ a < o, op a a < o := by
64+ use fun h a ha => h ha ha
65+ intro H a b ha hb
66+ obtain hab | hba := le_or_lt a b
67+ · exact (h₂ b hab).trans_lt <| H b hb
68+ · exact (h₁ a hba.le).trans_lt <| H a ha
69+
5970theorem principal_zero : Principal op 0 := fun a _ h =>
6071 (Ordinal.not_lt_zero a h).elim
6172
@@ -115,7 +126,6 @@ theorem unbounded_principal (op : Ordinal → Ordinal → Ordinal) :
115126
116127/-! #### Additive principal ordinals -/
117128
118-
119129theorem principal_add_one : Principal (· + ·) 1 :=
120130 principal_one_iff.2 <| zero_add 0
121131
@@ -265,7 +275,6 @@ theorem mul_principal_add_is_principal_add (a : Ordinal.{u}) {b : Ordinal.{u}} (
265275
266276/-! #### Multiplicative principal ordinals -/
267277
268-
269278theorem principal_mul_one : Principal (· * ·) 1 := by
270279 rw [principal_one_iff]
271280 exact zero_mul _
@@ -423,7 +432,6 @@ theorem mul_eq_opow_log_succ {a b : Ordinal.{u}} (ha : a ≠ 0) (hb : Principal
423432
424433/-! #### Exponential principal ordinals -/
425434
426-
427435theorem principal_opow_omega0 : Principal (· ^ ·) ω := fun a b ha hb =>
428436 match a, b, lt_omega0.1 ha, lt_omega0.1 hb with
429437 | _, _, ⟨m, rfl⟩, ⟨n, rfl⟩ => by
0 commit comments