Skip to content

Commit eb4f246

Browse files
chore: deprecate Ordinal.blsub (leanprover-community#37064)
In favor of simply writing `⨆ i : Iio a, f i + 1`. See leanprover-community#17033. Co-authored-by: pre-commit-ci-lite[bot] <117423508+pre-commit-ci-lite[bot]@users.noreply.github.com>
1 parent 63868fe commit eb4f246

4 files changed

Lines changed: 94 additions & 26 deletions

File tree

Mathlib/Order/InitialSeg.lean

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -288,6 +288,9 @@ theorem coe_fn_mk (f : r ↪r s) (t o) : (@PrincipalSeg.mk _ _ r s f t o : α
288288
theorem mem_range_iff_rel (f : r ≺i s) : ∀ {b : β}, b ∈ Set.range f ↔ s b f.top :=
289289
f.mem_range_iff_rel' _
290290

291+
theorem range_eq (f : r ≺i s) : Set.range f = {b | s b f.top} :=
292+
Set.ext_iff.2 fun _ ↦ mem_range_iff_rel f
293+
291294
theorem lt_top (f : r ≺i s) (a : α) : s (f a) f.top :=
292295
f.mem_range_iff_rel.1 ⟨_, rfl⟩
293296

@@ -639,6 +642,9 @@ variable [PartialOrder β] {a a' : α} {b : β}
639642
theorem mem_range_of_le [LT α] (f : α <i β) (h : b ≤ f a) : b ∈ Set.range f :=
640643
(f : α ≤i β).mem_range_of_le h
641644

645+
theorem range_eq_Iio [LT α] (f : α <i β) : Set.range f = Set.Iio f.top :=
646+
f.range_eq
647+
642648
theorem isLowerSet_range [LT α] (f : α <i β) : IsLowerSet (Set.range f) :=
643649
(f : α ≤i β).isLowerSet_range
644650

Mathlib/SetTheory/Cardinal/Cofinality.lean

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -506,14 +506,16 @@ theorem _root_.Cardinal.iSup_lt_of_lt_cof_ord {f : α → Cardinal.{u}} {a : Car
506506

507507
-- TODO: use `⨆ i, f i + 1` instead of `lsub`
508508

509-
private theorem card_mem_cof {o} : ∃ (ι : _) (f : ι → Ordinal), lsub.{u, u} f = o ∧ #ι = o.card :=
510-
⟨_, _, lsub_typein o, mk_toType o⟩
511-
512509
/-- The set in the `lsub` characterization of `cof` is nonempty. -/
510+
@[deprecated "to build an increasing function with limit o, use the fundamental sequence API."
511+
(since := "2026-03-27")]
513512
theorem cof_lsub_def_nonempty (o) :
514513
{ a : Cardinal | ∃ (ι : _) (f : ι → Ordinal), lsub.{u, u} f = o ∧ #ι = a }.Nonempty :=
515-
⟨_, card_mem_cof
514+
⟨_, ⟨_, _, lsub_typein o, mk_toType o⟩
516515

516+
set_option linter.deprecated false in
517+
@[deprecated "to build an increasing function with limit o, use the fundamental sequence API."
518+
(since := "2026-03-27")]
517519
theorem cof_eq_sInf_lsub (o : Ordinal.{u}) : cof o =
518520
sInf { a : Cardinal | ∃ (ι : Type u) (f : ι → Ordinal), lsub.{u, u} f = o ∧ #ι = a } := by
519521
refine le_antisymm (le_csInf (cof_lsub_def_nonempty o) ?_) (csInf_le' ?_)
@@ -529,6 +531,9 @@ theorem cof_eq_sInf_lsub (o : Ordinal.{u}) : cof o =
529531
rw [← not_lt, ← typein_le_typein, typein_enum] at hb'
530532
exact hb'.trans_lt (lt_lsub.{u, u} f ⟨b, hb⟩)
531533

534+
set_option linter.deprecated false in
535+
@[deprecated "to build an increasing function with limit o, use the fundamental sequence API."
536+
(since := "2026-03-27")]
532537
theorem exists_lsub_cof (o : Ordinal) :
533538
∃ (ι : _) (f : ι → Ordinal), lsub.{u, u} f = o ∧ #ι = cof o := by
534539
rw [cof_eq_sInf_lsub]
@@ -544,6 +549,7 @@ theorem cof_lsub_le_lift {ι} (f : ι → Ordinal) :
544549
rw [← lift_id'.{u} (lsub f), ← Cardinal.lift_umax.{u, v}]
545550
exact cof_lift_iSup_add_one_le _
546551

552+
set_option linter.deprecated false in
547553
@[deprecated le_cof_iff (since := "2026-03-21")]
548554
theorem le_cof_iff_lsub {o : Ordinal} {a : Cardinal} :
549555
a ≤ cof o ↔ ∀ {ι} (f : ι → Ordinal), lsub.{u, u} f = o → a ≤ #ι := by
@@ -618,6 +624,7 @@ theorem nfp_lt_ord {f : Ordinal → Ordinal} {c} (hc : ℵ₀ < cof c) (hf : ∀
618624
a < c → nfp f a < c :=
619625
nfpFamily_lt_ord_lift hc (by simpa using Cardinal.one_lt_aleph0.trans hc) fun _ => hf
620626

627+
set_option linter.deprecated false in
621628
@[deprecated exists_lsub_cof (since := "2026-03-21")]
622629
theorem exists_blsub_cof (o : Ordinal) :
623630
∃ f : ∀ a < (cof o).ord, Ordinal, blsub.{u, u} _ f = o := by

Mathlib/SetTheory/Ordinal/Family.lean

Lines changed: 76 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -632,13 +632,9 @@ theorem iSup_typein_limit {o : Ordinal.{u}} (ho : ∀ a, a < o → succ a < o) :
632632
@[simp]
633633
theorem 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

655651
end 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-
660653
section 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")]
666658
def 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")]
670663
theorem 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")]
674669
theorem 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")]
678675
theorem 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")]
685683
theorem 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")]
690689
theorem 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")]
694695
theorem 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")]
700702
theorem 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")]
705708
theorem 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")]
710715
theorem 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")]
715722
theorem 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")]
718727
theorem 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")]
721732
theorem 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")]
725738
theorem 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")]
729744
theorem 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")]
733750
theorem 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")]
738757
theorem 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")]
749770
theorem 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")]
753776
theorem 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")]
758783
theorem 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")]
764791
theorem 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")]
770799
theorem 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")]
775805
theorem 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")]
780811
theorem 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")]
782815
theorem 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")]
785820
theorem 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")]
792829
theorem 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")]
797835
theorem 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")]
801840
theorem 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 :=
811850
theorem 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")]
814855
theorem 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")]
821864
theorem 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")]
826871
theorem 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")]
836883
theorem 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")]
843891
theorem 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")]
847897
theorem 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")]
852904
theorem 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")]
860914
theorem 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

Mathlib/SetTheory/Ordinal/FundamentalSequence.lean

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -121,6 +121,7 @@ theorem exists_isFundamentalSeq (ha : o.cof.ord = a) : ∃ f : Iio a → Iio o,
121121

122122
/-! ### Deprecated material -/
123123

124+
set_option linter.deprecated false in
124125
/-- A fundamental sequence for `a` is an increasing sequence of length `o = cof a` that converges at
125126
`a`. We provide `o` explicitly in order to avoid type rewrites. -/
126127
@[deprecated IsFundamentalSeq (since := "2026-03-23")]

0 commit comments

Comments
 (0)