@@ -632,13 +632,9 @@ theorem iSup_typein_limit {o : Ordinal.{u}} (ho : ∀ a, a < o → succ a < o) :
632632@[simp]
633633theorem iSup_typein_succ {o : Ordinal} :
634634 iSup (typein ((· < ·) : (succ o).ToType → (succ o).ToType → Prop )) = o := by
635- rcases iSup_eq_lsub_or_succ_iSup_eq_lsub
636- (typein ((· < ·) : (succ o).ToType → (succ o).ToType → Prop )) with h | h
637- · rw [iSup_eq_lsub_iff] at h
638- simp only [lsub_typein] at h
639- exact (h o (lt_succ o)).false .elim
640- rw [← succ_eq_succ_iff, h]
641- apply lsub_typein
635+ rw [← csSup_Iic (a := o), iSup, PrincipalSeg.range_eq]
636+ congr
637+ simp
642638
643639@ [deprecated (since := "2025-10-01" )] alias sup_eq_lsub := iSup_eq_lsub
644640@ [deprecated (since := "2025-10-01" )] alias sup_le_lsub := iSup_le_lsub
@@ -654,87 +650,110 @@ theorem iSup_typein_succ {o : Ordinal} :
654650
655651end lsub
656652
657- -- TODO: either deprecate this in favor of `lsub` when its universes are generalized, or deprecate
658- -- both of them at once.
659-
660653section blsub
661654
662655/-- The least strict upper bound of a family of ordinals indexed by the set of ordinals less than
663- some `o : Ordinal.{u}`.
664-
665- This is to `lsub` as `bsup` is to `sup`. -/
656+ some `o : Ordinal.{u}`. -/
657+ @ [deprecated "write `⨆ i : Iio o, f i + 1` instead." (since := "2026-03-23" )]
666658def blsub (o : Ordinal.{u}) (f : ∀ a < o, Ordinal.{max u v}) : Ordinal.{max u v} :=
667659 bsup.{_, v} o fun a ha => succ (f a ha)
668660
669- @[simp]
661+ set_option linter.deprecated false in
662+ @ [deprecated "blsub is deprecated" (since := "2026-03-23" )]
670663theorem bsup_eq_blsub (o : Ordinal.{u}) (f : ∀ a < o, Ordinal.{max u v}) :
671664 (bsup.{_, v} o fun a ha => succ (f a ha)) = blsub.{_, v} o f :=
672665 rfl
673666
667+ set_option linter.deprecated false in
668+ @ [deprecated "blsub is deprecated" (since := "2026-03-23" )]
674669theorem lsub_eq_blsub' {ι : Type u} (r : ι → ι → Prop ) [IsWellOrder ι r] {o} (ho : type r = o)
675670 (f : ∀ a < o, Ordinal) : lsub (familyOfBFamily' r ho f) = blsub o f :=
676671 iSup'_eq_bsup r ho fun a ha => succ (f a ha)
677672
673+ set_option linter.deprecated false in
674+ @ [deprecated "blsub is deprecated" (since := "2026-03-23" )]
678675theorem lsub_eq_lsub {ι ι' : Type u} (r : ι → ι → Prop ) (r' : ι' → ι' → Prop ) [IsWellOrder ι r]
679676 [IsWellOrder ι' r'] {o} (ho : type r = o) (ho' : type r' = o)
680677 (f : ∀ a < o, Ordinal.{max u v}) :
681678 lsub.{_, v} (familyOfBFamily' r ho f) = lsub.{_, v} (familyOfBFamily' r' ho' f) := by
682679 rw [lsub_eq_blsub', lsub_eq_blsub']
683680
684- @[simp]
681+ set_option linter.deprecated false in
682+ @ [deprecated "blsub is deprecated" (since := "2026-03-23" )]
685683theorem lsub_eq_blsub {o : Ordinal.{u}} (f : ∀ a < o, Ordinal.{max u v}) :
686684 lsub.{_, v} (familyOfBFamily o f) = blsub.{_, v} o f :=
687685 lsub_eq_blsub' _ _ _
688686
689- @[simp]
687+ set_option linter.deprecated false in
688+ @ [deprecated "blsub is deprecated" (since := "2026-03-23" )]
690689theorem blsub_eq_lsub' {ι : Type u} (r : ι → ι → Prop ) [IsWellOrder ι r]
691690 (f : ι → Ordinal.{max u v}) : blsub.{_, v} _ (bfamilyOfFamily' r f) = lsub.{_, v} f :=
692691 bsup'_eq_iSup r (succ ∘ f)
693692
693+ set_option linter.deprecated false in
694+ @ [deprecated "blsub is deprecated" (since := "2026-03-23" )]
694695theorem blsub_eq_blsub {ι : Type u} (r r' : ι → ι → Prop ) [IsWellOrder ι r] [IsWellOrder ι r']
695696 (f : ι → Ordinal.{max u v}) :
696697 blsub.{_, v} _ (bfamilyOfFamily' r f) = blsub.{_, v} _ (bfamilyOfFamily' r' f) := by
697698 rw [blsub_eq_lsub', blsub_eq_lsub']
698699
699- @[simp]
700+ set_option linter.deprecated false in
701+ @ [deprecated "blsub is deprecated" (since := "2026-03-23" )]
700702theorem blsub_eq_lsub {ι : Type u} (f : ι → Ordinal.{max u v}) :
701703 blsub.{_, v} _ (bfamilyOfFamily f) = lsub.{_, v} f :=
702704 blsub_eq_lsub' _ _
703705
704- @[congr]
706+ set_option linter.deprecated false in
707+ @ [deprecated "blsub is deprecated" (since := "2026-03-23" )]
705708theorem blsub_congr {o₁ o₂ : Ordinal.{u}} (f : ∀ a < o₁, Ordinal.{max u v}) (ho : o₁ = o₂) :
706709 blsub.{_, v} o₁ f = blsub.{_, v} o₂ fun a h => f a (h.trans_eq ho.symm) := by
707710 subst ho
708711 rfl
709712
713+ set_option linter.deprecated false in
714+ @ [deprecated "blsub is deprecated" (since := "2026-03-23" )]
710715theorem blsub_le_iff {o : Ordinal.{u}} {f : ∀ a < o, Ordinal.{max u v}} {a} :
711716 blsub.{_, v} o f ≤ a ↔ ∀ i h, f i h < a := by
712717 convert bsup_le_iff.{_, v} (f := fun a ha => succ (f a ha)) (a := a) using 2
713718 simp_rw [succ_le_iff]
714719
720+ set_option linter.deprecated false in
721+ @ [deprecated "blsub is deprecated" (since := "2026-03-23" )]
715722theorem blsub_le {o : Ordinal} {f : ∀ b < o, Ordinal} {a} : (∀ i h, f i h < a) → blsub o f ≤ a :=
716723 blsub_le_iff.2
717724
725+ set_option linter.deprecated false in
726+ @ [deprecated "blsub is deprecated" (since := "2026-03-23" )]
718727theorem lt_blsub {o} (f : ∀ a < o, Ordinal) (i h) : f i h < blsub o f :=
719728 blsub_le_iff.1 le_rfl _ _
720729
730+ set_option linter.deprecated false in
731+ @ [deprecated "blsub is deprecated" (since := "2026-03-23" )]
721732theorem lt_blsub_iff {o : Ordinal.{u}} {f : ∀ b < o, Ordinal.{max u v}} {a} :
722733 a < blsub.{_, v} o f ↔ ∃ i hi, a ≤ f i hi := by
723734 simpa only [not_forall, not_lt, not_le] using not_congr (@blsub_le_iff.{_, v} _ f a)
724735
736+ set_option linter.deprecated false in
737+ @ [deprecated "blsub is deprecated" (since := "2026-03-23" )]
725738theorem bsup_le_blsub {o : Ordinal.{u}} (f : ∀ a < o, Ordinal.{max u v}) :
726739 bsup.{_, v} o f ≤ blsub.{_, v} o f :=
727740 bsup_le fun i h => (lt_blsub f i h).le
728741
742+ set_option linter.deprecated false in
743+ @ [deprecated "blsub is deprecated" (since := "2026-03-23" )]
729744theorem blsub_le_bsup_succ {o : Ordinal.{u}} (f : ∀ a < o, Ordinal.{max u v}) :
730745 blsub.{_, v} o f ≤ succ (bsup.{_, v} o f) :=
731746 blsub_le fun i h => lt_succ_iff.2 (le_bsup f i h)
732747
748+ set_option linter.deprecated false in
749+ @ [deprecated "blsub is deprecated" (since := "2026-03-23" )]
733750theorem bsup_eq_blsub_or_succ_bsup_eq_blsub {o : Ordinal.{u}} (f : ∀ a < o, Ordinal.{max u v}) :
734751 bsup.{_, v} o f = blsub.{_, v} o f ∨ succ (bsup.{_, v} o f) = blsub.{_, v} o f := by
735752 rw [← iSup_eq_bsup, ← lsub_eq_blsub]
736753 exact iSup_eq_lsub_or_succ_iSup_eq_lsub _
737754
755+ set_option linter.deprecated false in
756+ @ [deprecated "blsub is deprecated" (since := "2026-03-23" )]
738757theorem bsup_succ_le_blsub {o : Ordinal.{u}} (f : ∀ a < o, Ordinal.{max u v}) :
739758 succ (bsup.{_, v} o f) ≤ blsub.{_, v} o f ↔ ∃ i hi, f i hi = bsup.{_, v} o f := by
740759 refine ⟨fun h => ?_, ?_⟩
@@ -746,58 +765,78 @@ theorem bsup_succ_le_blsub {o : Ordinal.{u}} (f : ∀ a < o, Ordinal.{max u v})
746765 rw [succ_le_iff, ← hf]
747766 exact lt_blsub _ _ _
748767
768+ set_option linter.deprecated false in
769+ @ [deprecated "blsub is deprecated" (since := "2026-03-23" )]
749770theorem bsup_succ_eq_blsub {o : Ordinal.{u}} (f : ∀ a < o, Ordinal.{max u v}) :
750771 succ (bsup.{_, v} o f) = blsub.{_, v} o f ↔ ∃ i hi, f i hi = bsup.{_, v} o f :=
751772 (blsub_le_bsup_succ f).ge_iff_eq'.symm.trans (bsup_succ_le_blsub f)
752773
774+ set_option linter.deprecated false in
775+ @ [deprecated "blsub is deprecated" (since := "2026-03-23" )]
753776theorem bsup_eq_blsub_iff_succ {o : Ordinal.{u}} (f : ∀ a < o, Ordinal.{max u v}) :
754777 bsup.{_, v} o f = blsub.{_, v} o f ↔ ∀ a < blsub.{_, v} o f, succ a < blsub.{_, v} o f := by
755778 rw [← iSup_eq_bsup, ← lsub_eq_blsub]
756779 apply iSup_eq_lsub_iff
757780
781+ set_option linter.deprecated false in
782+ @ [deprecated "blsub is deprecated" (since := "2026-03-23" )]
758783theorem bsup_eq_blsub_iff_lt_bsup {o : Ordinal.{u}} (f : ∀ a < o, Ordinal.{max u v}) :
759784 bsup.{_, v} o f = blsub.{_, v} o f ↔ ∀ i hi, f i hi < bsup.{_, v} o f :=
760785 ⟨fun h i => by
761786 rw [h]
762787 apply lt_blsub, fun h => le_antisymm (bsup_le_blsub f) (blsub_le h)⟩
763788
789+ set_option linter.deprecated false in
790+ @ [deprecated "blsub is deprecated" (since := "2026-03-23" )]
764791theorem bsup_eq_blsub_of_lt_succ_limit {o : Ordinal.{u}} (ho : IsSuccLimit o)
765792 {f : ∀ a < o, Ordinal.{max u v}} (hf : ∀ a ha, f a ha < f (succ a) (ho.succ_lt ha)) :
766793 bsup.{_, v} o f = blsub.{_, v} o f := by
767794 rw [bsup_eq_blsub_iff_lt_bsup]
768795 exact fun i hi => (hf i hi).trans_le (le_bsup f _ _)
769796
797+ set_option linter.deprecated false in
798+ @ [deprecated "blsub is deprecated" (since := "2026-03-23" )]
770799theorem blsub_succ_of_mono {o : Ordinal.{u}} {f : ∀ a < succ o, Ordinal.{max u v}}
771800 (hf : ∀ {i j} (hi hj), i ≤ j → f i hi ≤ f j hj) : blsub.{_, v} _ f = succ (f o (lt_succ o)) :=
772801 bsup_succ_of_mono fun {_ _} hi hj h => succ_le_succ (hf hi hj h)
773802
774- @[simp]
803+ set_option linter.deprecated false in
804+ @ [deprecated "blsub is deprecated" (since := "2026-03-23" )]
775805theorem blsub_eq_zero_iff {o} {f : ∀ a < o, Ordinal} : blsub o f = 0 ↔ o = 0 := by
776806 rw [← lsub_eq_blsub, lsub_eq_zero_iff]
777807 exact isEmpty_toType_iff
778808
779- @[simp]
809+ set_option linter.deprecated false in
810+ @ [deprecated "blsub is deprecated" (since := "2026-03-23" )]
780811theorem blsub_zero (f : ∀ a < (0 : Ordinal), Ordinal) : blsub 0 f = 0 := by rw [blsub_eq_zero_iff]
781812
813+ set_option linter.deprecated false in
814+ @ [deprecated "blsub is deprecated" (since := "2026-03-23" )]
782815theorem blsub_pos {o : Ordinal} (ho : 0 < o) (f : ∀ a < o, Ordinal) : 0 < blsub o f :=
783816 (zero_le _).trans_lt (lt_blsub f 0 ho)
784817
818+ set_option linter.deprecated false in
819+ @ [deprecated "blsub is deprecated" (since := "2026-03-23" )]
785820theorem blsub_type {α : Type u} (r : α → α → Prop ) [IsWellOrder α r]
786821 (f : ∀ a < type r, Ordinal.{max u v}) :
787822 blsub.{_, v} (type r) f = lsub.{_, v} fun a => f (typein r a) (typein_lt_type _ _) :=
788823 eq_of_forall_ge_iff fun o => by
789824 rw [blsub_le_iff, lsub_le_iff]
790825 exact ⟨fun H b => H _ _, fun H i h => by simpa only [typein_enum] using H (enum r ⟨i, h⟩)⟩
791826
827+ set_option linter.deprecated false in
828+ @ [deprecated "blsub is deprecated" (since := "2026-03-23" )]
792829theorem blsub_const {o : Ordinal} (ho : o ≠ 0 ) (a : Ordinal) :
793830 (blsub.{u, v} o fun _ _ => a) = succ a :=
794831 bsup_const.{u, v} ho (succ a)
795832
796- @[simp]
833+ set_option linter.deprecated false in
834+ @ [deprecated "blsub is deprecated" (since := "2026-03-23" )]
797835theorem blsub_one (f : ∀ a < (1 : Ordinal), Ordinal) : blsub 1 f = succ (f 0 zero_lt_one) :=
798836 bsup_one _
799837
800- @[simp]
838+ set_option linter.deprecated false in
839+ @ [deprecated "blsub is deprecated" (since := "2026-03-23" )]
801840theorem blsub_id : ∀ o, (blsub.{u, u} o fun x _ => x) = o :=
802841 lsub_typein
803842
@@ -811,18 +850,24 @@ theorem bsup_id_add_one (o) : (bsup.{u, u} (o + 1) fun x _ => x) = o :=
811850theorem bsup_id_succ (o) : (bsup.{u, u} (succ o) fun x _ => x) = o :=
812851 iSup_typein_succ
813852
853+ set_option linter.deprecated false in
854+ @ [deprecated "blsub is deprecated" (since := "2026-03-23" )]
814855theorem blsub_le_of_brange_subset {o o'} {f : ∀ a < o, Ordinal} {g : ∀ a < o', Ordinal}
815856 (h : brange o f ⊆ brange o' g) : blsub.{u, max v w} o f ≤ blsub.{v, max u w} o' g :=
816857 bsup_le_of_brange_subset.{u, v, w} fun a ⟨b, hb, hb'⟩ => by
817858 obtain ⟨c, hc, hc'⟩ := h ⟨b, hb, rfl⟩
818859 simp_rw [← hc'] at hb'
819860 exact ⟨c, hc, hb'⟩
820861
862+ set_option linter.deprecated false in
863+ @ [deprecated "blsub is deprecated" (since := "2026-03-23" )]
821864theorem blsub_eq_of_brange_eq {o o'} {f : ∀ a < o, Ordinal} {g : ∀ a < o', Ordinal}
822865 (h : { o | ∃ i hi, f i hi = o } = { o | ∃ i hi, g i hi = o }) :
823866 blsub.{u, max v w} o f = blsub.{v, max u w} o' g :=
824867 (blsub_le_of_brange_subset.{u, v, w} h.le).antisymm (blsub_le_of_brange_subset.{v, u, w} h.ge)
825868
869+ set_option linter.deprecated false in
870+ @ [deprecated "blsub is deprecated" (since := "2026-03-23" )]
826871theorem bsup_comp {o o' : Ordinal.{max u v}} {f : ∀ a < o, Ordinal.{max u v w}}
827872 (hf : ∀ {i j} (hi) (hj), i ≤ j → f i hi ≤ f j hj) {g : ∀ a < o', Ordinal.{max u v}}
828873 (hg : blsub.{_, u} o' g = o) :
@@ -833,22 +878,29 @@ theorem bsup_comp {o o' : Ordinal.{max u v}} {f : ∀ a < o, Ordinal.{max u v w}
833878 rcases hi with ⟨j, hj, hj'⟩
834879 exact (hf _ _ hj').trans (le_bsup _ _ _)
835880
881+ set_option linter.deprecated false in
882+ @ [deprecated "blsub is deprecated" (since := "2026-03-23" )]
836883theorem blsub_comp {o o' : Ordinal.{max u v}} {f : ∀ a < o, Ordinal.{max u v w}}
837884 (hf : ∀ {i j} (hi) (hj), i ≤ j → f i hi ≤ f j hj) {g : ∀ a < o', Ordinal.{max u v}}
838885 (hg : blsub.{_, u} o' g = o) :
839886 (blsub.{_, w} o' fun a ha => f (g a ha) (by rw [← hg]; apply lt_blsub)) = blsub.{_, w} o f :=
840887 @bsup_comp.{u, v, w} o _ (fun a ha => succ (f a ha))
841888 (fun {_ _} _ _ h => succ_le_succ_iff.2 (hf _ _ h)) g hg
842889
890+ @ [deprecated IsNormal.apply_of_isSuccLimit (since := "2026-03-23" )]
843891theorem IsNormal.bsup_eq {f : Ordinal.{u} → Ordinal.{max u v}} (H : IsNormal f) {o : Ordinal.{u}}
844892 (h : IsSuccLimit o) : (Ordinal.bsup.{_, v} o fun x _ => f x) = f o := by
845893 rw [← IsNormal.bsup.{u, u, v} H (fun x _ => x) h.ne_bot, bsup_id_limit fun _ ↦ h.succ_lt]
846894
895+ set_option linter.deprecated false in
896+ @ [deprecated IsNormal.apply_of_isSuccLimit (since := "2026-03-23" )]
847897theorem IsNormal.blsub_eq {f : Ordinal.{u} → Ordinal.{max u v}} (H : IsNormal f) {o : Ordinal.{u}}
848898 (h : IsSuccLimit o) : (blsub.{_, v} o fun x _ => f x) = f o := by
849899 rw [← IsNormal.bsup_eq.{u, v} H h, bsup_eq_blsub_of_lt_succ_limit h]
850900 exact fun a _ => H.strictMono (lt_succ a)
851901
902+ set_option linter.deprecated false in
903+ @ [deprecated isNormal_iff (since := "2026-03-23" )]
852904theorem isNormal_iff_lt_succ_and_bsup_eq {f : Ordinal.{u} → Ordinal.{max u v}} :
853905 IsNormal f ↔ (∀ a, f a < f (succ a)) ∧
854906 ∀ o, IsSuccLimit o → (bsup.{_, v} o fun x _ => f x) = f o :=
@@ -857,6 +909,8 @@ theorem isNormal_iff_lt_succ_and_bsup_eq {f : Ordinal.{u} → Ordinal.{max u v}}
857909 rw [← h₂ _ ho]
858910 simpa [IsLUB, upperBounds, lowerBounds, IsLeast, bsup_le_iff] using le_bsup _⟩
859911
912+ set_option linter.deprecated false in
913+ @ [deprecated isNormal_iff (since := "2026-03-23" )]
860914theorem isNormal_iff_lt_succ_and_blsub_eq {f : Ordinal.{u} → Ordinal.{max u v}} :
861915 IsNormal f ↔ (∀ a, f a < f (succ a)) ∧
862916 ∀ o, IsSuccLimit o → (blsub.{_, v} o fun x _ => f x) = f o := by
0 commit comments