Skip to content

Commit

Permalink
feat(set_theory/ordinal_arithmetic): Further theorems on normal funct…
Browse files Browse the repository at this point in the history
…ions (#12484)

We prove various theorems giving more convenient characterizations of normal functions.
  • Loading branch information
vihdzp committed Mar 11, 2022
1 parent e3ad468 commit dc5f7fb
Showing 1 changed file with 26 additions and 2 deletions.
28 changes: 26 additions & 2 deletions src/set_theory/ordinal_arithmetic.lean
Expand Up @@ -383,6 +383,11 @@ theorem is_normal.strict_mono {f} (H : is_normal f) : strict_mono f :=
(λ b l IH h, lt_of_lt_of_le (H.1 a)
((H.2 _ l _).1 le_rfl _ (l.2 _ h)))

theorem is_normal_iff_strict_mono_limit (f : ordinal → ordinal) :
is_normal f ↔ (strict_mono f ∧ ∀ o, is_limit o → ∀ a, (∀ b < o, f b ≤ a) → f o ≤ a) :=
⟨λ hf, ⟨hf.strict_mono, λ a ha c, (hf.2 a ha c).2⟩, λ ⟨hs, hl⟩, ⟨λ a, hs (ordinal.lt_succ_self a),
λ a ha c, ⟨λ hac b hba, ((hs hba).trans_le hac).le, hl a ha c⟩⟩⟩

theorem is_normal.lt_iff {f} (H : is_normal f) {a b} : f a < f b ↔ a < b :=
strict_mono.lt_iff_lt $ H.strict_mono

Expand Down Expand Up @@ -1342,6 +1347,13 @@ theorem bsup_eq_blsub_iff_lt_bsup {o} (f : Π a < o, ordinal) :
bsup o f = blsub o f ↔ ∀ i hi, f i hi < bsup o f :=
⟨λ h i, (by { rw h, apply lt_blsub }), λ h, le_antisymm (bsup_le_blsub f) (blsub_le.2 h)⟩

theorem bsup_eq_blsub_of_lt_succ_limit {o} (ho : is_limit o) {f : Π a < o, ordinal}
(hf : ∀ a ha, f a ha < f a.succ (ho.2 a ha)) : bsup o f = blsub o f :=
begin
rw bsup_eq_blsub_iff_lt_bsup,
exact λ i hi, (hf i hi).trans_le (le_bsup f _ _)
end

@[simp] theorem blsub_eq_zero_iff {o} {f : Π a < o, ordinal} : blsub o f = 0 ↔ o = 0 :=
by { rw [blsub_eq_lsub, lsub_eq_zero_iff], exact out_empty_iff_eq_zero }

Expand Down Expand Up @@ -1405,9 +1417,21 @@ by { rw [←is_normal.bsup.{u u} H (λ x _, x) h.1, bsup_id_limit h.2] }

theorem is_normal.blsub_eq {f} (H : is_normal f) {o : ordinal} (h : is_limit o) :
blsub.{u} o (λ x _, f x) = f o :=
by { rw [←H.bsup_eq h, bsup_eq_blsub_of_lt_succ_limit h], exact (λ a _, H.1 a) }

theorem is_normal_iff_lt_succ_and_bsup_eq {f} :
is_normal f ↔ (∀ a, f a < f a.succ) ∧ ∀ o, is_limit o → bsup o (λ x _, f x) = f o :=
⟨λ h, ⟨h.1, @is_normal.bsup_eq f h⟩, λ ⟨h₁, h₂⟩, ⟨h₁, λ o ho a, (by {rw ←h₂ o ho, exact bsup_le})⟩⟩

theorem is_normal_iff_lt_succ_and_blsub_eq {f} :
is_normal f ↔ (∀ a, f a < f a.succ) ∧ ∀ o, is_limit o → blsub o (λ x _, f x) = f o :=
begin
rw ←H.bsup_eq h,
exact ((bsup_eq_blsub_iff_lt_bsup _).2 (λ a ha, (H.1 a).trans_le (le_bsup _ _ (h.2 a ha)))).symm
rw [is_normal_iff_lt_succ_and_bsup_eq, and.congr_right_iff],
intro h,
split;
intros H o ho;
have := H o ho;
rwa ←bsup_eq_blsub_of_lt_succ_limit ho (λ a _, h a) at *
end

theorem is_normal.eq_iff_zero_and_succ {f : ordinal.{u} → ordinal.{u}} (hf : is_normal f) {g}
Expand Down

0 comments on commit dc5f7fb

Please sign in to comment.