@@ -114,41 +114,6 @@ theorem to_Iio (hf : IsNormal f) (a : α) :
114114 refine ⟨fun x y h ↦ hf.strictMono h, fun b hb c hc ↦ hf.2 (hb.subtypeVal (isLowerSet_Iio _)) ?_⟩
115115 simpa [upperBounds] using fun d hd ↦ hc ⟨d, hd.trans b.2 ⟩ hd
116116
117- section WellFoundedLT
118- variable [WellFoundedLT α] [SuccOrder α]
119-
120- theorem of_succ_lt
121- (hs : ∀ a, f a < f (succ a)) (hl : ∀ {a}, IsSuccLimit a → IsLUB (f '' Iio a) (f a)) :
122- IsNormal f := by
123- refine ⟨fun a b ↦ ?_, fun ha ↦ (hl ha).2 ⟩
124- induction b using SuccOrder.limitRecOn with
125- | isMin b hb => exact hb.not_lt.elim
126- | succ b hb IH =>
127- intro hab
128- obtain rfl | h := (lt_succ_iff_eq_or_lt_of_not_isMax hb).1 hab
129- · exact hs a
130- · exact (IH h).trans (hs b)
131- | isSuccLimit b hb IH =>
132- intro hab
133- have hab' := hb.succ_lt hab
134- exact (IH _ hab' (lt_succ_of_not_isMax hab.not_isMax)).trans_le
135- ((hl hb).1 (mem_image_of_mem _ hab'))
136-
137- protected theorem ext [OrderBot α] {g : α → β} (hf : IsNormal f) (hg : IsNormal g) :
138- f = g ↔ f ⊥ = g ⊥ ∧ ∀ a, f a = g a → f (succ a) = g (succ a) := by
139- constructor
140- · simp_all
141- rintro ⟨H₁, H₂⟩
142- ext a
143- induction a using SuccOrder.limitRecOn with
144- | isMin a ha => rw [ha.eq_bot, H₁]
145- | succ a ha IH => exact H₂ a IH
146- | isSuccLimit a ha IH =>
147- apply (hf.isLUB_image_Iio_of_isSuccLimit ha).unique
148- convert hg.isLUB_image_Iio_of_isSuccLimit ha using 1
149- aesop
150-
151- end WellFoundedLT
152117end LinearOrder
153118
154119section ConditionallyCompleteLinearOrder
@@ -204,5 +169,63 @@ theorem apply_of_isSuccLimit (hf : IsNormal f) (ha : IsSuccLimit a) :
204169 exact hx.le
205170
206171end ConditionallyCompleteLinearOrderBot
172+
173+ section WellFoundedLT
174+ variable [LinearOrder α] [WellFoundedLT α] [SuccOrder α] [LinearOrder β]
175+
176+ theorem of_succ_lt
177+ (hs : ∀ a, f a < f (succ a)) (hl : ∀ {a}, IsSuccLimit a → IsLUB (f '' Iio a) (f a)) :
178+ IsNormal f := by
179+ refine ⟨fun a b ↦ ?_, fun ha ↦ (hl ha).2 ⟩
180+ induction b using SuccOrder.limitRecOn with
181+ | isMin b hb => exact hb.not_lt.elim
182+ | succ b hb IH =>
183+ intro hab
184+ obtain rfl | h := (lt_succ_iff_eq_or_lt_of_not_isMax hb).1 hab
185+ · exact hs a
186+ · exact (IH h).trans (hs b)
187+ | isSuccLimit b hb IH =>
188+ intro hab
189+ have hab' := hb.succ_lt hab
190+ exact (IH _ hab' (lt_succ_of_not_isMax hab.not_isMax)).trans_le
191+ ((hl hb).1 (mem_image_of_mem _ hab'))
192+
193+ theorem ext_iff [OrderBot α] {g : α → β} (hf : IsNormal f) (hg : IsNormal g) :
194+ f = g ↔ f ⊥ = g ⊥ ∧ ∀ a, f a = g a → f (succ a) = g (succ a) := by
195+ constructor
196+ · simp_all
197+ rintro ⟨H₁, H₂⟩
198+ ext a
199+ induction a using SuccOrder.limitRecOn with
200+ | isMin a ha => rw [ha.eq_bot, H₁]
201+ | succ a ha IH => exact H₂ a IH
202+ | isSuccLimit a ha IH =>
203+ apply (hf.isLUB_image_Iio_of_isSuccLimit ha).unique
204+ convert hg.isLUB_image_Iio_of_isSuccLimit ha using 1
205+ aesop
206+
207+ @ [deprecated (since := "2026-03-22" )] protected alias ext := IsNormal.ext_iff
208+
209+ theorem exists_map_le_lt_map_succ_of_exists_ge [NoMaxOrder α] [OrderBot α] [WellFoundedLT β]
210+ {f : α → β} {x : β} (hf : IsNormal f) (hf' : ∃ y, x ≤ f y) (hx : f ⊥ ≤ x) :
211+ ∃ a, f a ≤ x ∧ x < f (succ a) := by
212+ have : Nonempty β := ⟨x⟩
213+ let := WellFoundedLT.toOrderBot β
214+ let := WellFoundedLT.conditionallyCompleteLinearOrderBot α
215+ let := WellFoundedLT.conditionallyCompleteLinearOrderBot β
216+ have H : BddAbove (f ⁻¹' Iic x) :=
217+ have ⟨y, hy⟩ := hf'
218+ ⟨y, fun z hz ↦ hf.strictMono.le_iff_le.1 <| hz.trans hy⟩
219+ refine ⟨sSup (f ⁻¹' Set.Iic x), ?_, ?_⟩
220+ · rw [hf.le_iff_le_sSup ⟨⊥, hx⟩ H]
221+ · rw [← not_le, hf.le_iff_le_sSup ⟨⊥, hx⟩ H, not_le, lt_succ_iff]
222+
223+ /-- If `f : α → α`, we can infer one of the hypotheses in
224+ `exists_map_le_lt_map_succ_of_exists_ge`. -/
225+ theorem exists_map_le_lt_map_succ [NoMaxOrder α] [OrderBot α] {f : α → α} {x : α}
226+ (hf : IsNormal f) (hx : f ⊥ ≤ x) : ∃ a, f a ≤ x ∧ x < f (succ a) :=
227+ exists_map_le_lt_map_succ_of_exists_ge hf ⟨x, hf.strictMono.le_apply⟩ hx
228+
229+ end WellFoundedLT
207230end IsNormal
208231end Order
0 commit comments