Skip to content

Commit a63dffe

Browse files
committed
refactor(Topology/Irreducible): weaken assumptions of preimage_mem_irreducibleComponents_of_isPreirreducible_fiber (#33784)
This PR weakens the surjectivity assumption of `preimage_mem_irreducibleComponents_of_isPreirreducible_fiber` to `(t ∩ Set.range f).Nonempty`. I also took the liberty of systematizing the file slightly, so that now there are 6 lemmas: preimage of (preirreducible / irreducible / irreducible component) assuming (preirreducible fibers / open embedding). Co-authored-by: tb65536 <thomas.l.browning@gmail.com>
1 parent d8011bb commit a63dffe

File tree

1 file changed

+36
-26
lines changed

1 file changed

+36
-26
lines changed

Mathlib/Topology/Irreducible.lean

Lines changed: 36 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -338,15 +338,6 @@ theorem IsPreirreducible.open_subset {U : Set X} (ht : IsPreirreducible t) (hU :
338338
theorem IsPreirreducible.interior (ht : IsPreirreducible t) : IsPreirreducible (interior t) :=
339339
ht.open_subset isOpen_interior interior_subset
340340

341-
theorem IsPreirreducible.preimage (ht : IsPreirreducible t) {f : Y → X}
342-
(hf : IsOpenEmbedding f) : IsPreirreducible (f ⁻¹' t) := by
343-
rintro U V hU hV ⟨x, hx, hx'⟩ ⟨y, hy, hy'⟩
344-
obtain ⟨_, h₁, ⟨y, h₂, rfl⟩, ⟨y', h₃, h₄⟩⟩ :=
345-
ht _ _ (hf.isOpenMap _ hU) (hf.isOpenMap _ hV) ⟨f x, hx, Set.mem_image_of_mem f hx'⟩
346-
⟨f y, hy, Set.mem_image_of_mem f hy'⟩
347-
cases hf.injective h₄
348-
exact ⟨y, h₁, h₂, h₃⟩
349-
350341
section
351342

352343
open Set.Notation
@@ -371,27 +362,45 @@ lemma IsPreirreducible.preimage_of_isPreirreducible_fiber
371362
refine hV.preimage_of_dense_isPreirreducible_fiber f hf' ?_
372363
simp [hf'', subset_closure]
373364

365+
lemma IsPreirreducible.preimage (ht : IsPreirreducible t) {f : Y → X} (hf : IsOpenEmbedding f) :
366+
IsPreirreducible (f ⁻¹' t) :=
367+
ht.preimage_of_isPreirreducible_fiber f hf.isOpenMap
368+
fun _ ↦ (subsingleton_singleton.preimage hf.injective).isPreirreducible
369+
370+
lemma IsIrreducible.preimage_of_isPreirreducible_fiber (ht : IsIrreducible t)
371+
(f : Y → X) (hf₂ : IsOpenMap f) (hf₃ : ∀ x, IsPreirreducible (f ⁻¹' {x}))
372+
(h : (t ∩ Set.range f).Nonempty) :
373+
IsIrreducible (f ⁻¹' t) := by
374+
refine ⟨?_, IsPreirreducible.preimage_of_isPreirreducible_fiber ht.2 f hf₂ hf₃⟩
375+
obtain ⟨-, hx, x, rfl⟩ := h
376+
exact ⟨x, hx⟩
377+
378+
lemma IsIrreducible.preimage (ht : IsIrreducible t) {f : Y → X}
379+
(hf : IsOpenEmbedding f) (h : (t ∩ Set.range f).Nonempty) : IsIrreducible (f ⁻¹' t) := by
380+
refine ht.preimage_of_isPreirreducible_fiber f hf.isOpenMap
381+
(fun _ ↦ (subsingleton_singleton.preimage hf.injective).isPreirreducible) h
382+
383+
lemma preimage_mem_irreducibleComponents_of_isPreirreducible_fiber
384+
(ht : t ∈ irreducibleComponents X) {f : Y → X} (hf₁ : Continuous f) (hf₂ : IsOpenMap f)
385+
(hf₃ : ∀ x, IsPreirreducible (f ⁻¹'{x})) (h : (t ∩ range f).Nonempty) :
386+
f ⁻¹' t ∈ irreducibleComponents Y := by
387+
refine ⟨ht.1.preimage_of_isPreirreducible_fiber f hf₂ hf₃ h, fun u hu htu ↦ image_subset_iff.mp
388+
(subset_closure.trans (ht.2 (hu.image f hf₁.continuousOn).closure ?_))⟩
389+
suffices t ≤ closure (f '' (f ⁻¹' t)) from this.trans (closure_mono (image_mono htu))
390+
rw [image_preimage_eq_inter_range]
391+
exact subset_closure_inter_of_isPreirreducible_of_isOpen ht.1.2 hf₂.isOpen_range h
392+
393+
lemma preimage_mem_irreducibleComponents (ht : t ∈ irreducibleComponents X) {f : Y → X}
394+
(hf : IsOpenEmbedding f) (h : (t ∩ Set.range f).Nonempty) :
395+
f ⁻¹' t ∈ irreducibleComponents Y := by
396+
refine preimage_mem_irreducibleComponents_of_isPreirreducible_fiber ht hf.continuous hf.isOpenMap
397+
(fun _ ↦ (subsingleton_singleton.preimage hf.injective).isPreirreducible) h
398+
374399
variable (f : X → Y) (hf₁ : Continuous f) (hf₂ : IsOpenMap f)
375400
variable (hf₃ : ∀ x, IsPreirreducible (f ⁻¹' {x})) (hf₄ : Function.Surjective f)
376401

377402
include hf₁ hf₂ hf₃ hf₄
378403

379-
lemma preimage_mem_irreducibleComponents_of_isPreirreducible_fiber
380-
{V : Set Y} (hV : V ∈ irreducibleComponents Y) :
381-
f ⁻¹' V ∈ irreducibleComponents X := by
382-
obtain ⟨Z, hZ, hWZ, H⟩ :=
383-
exists_preirreducible _ (hV.1.2.preimage_of_isPreirreducible_fiber f hf₂ hf₃)
384-
have hZ' : IsIrreducible Z := by
385-
obtain ⟨x, hx⟩ := hV.1.1
386-
obtain ⟨x, rfl⟩ := hf₄ x
387-
exact ⟨⟨_, hWZ hx⟩, hZ⟩
388-
have hWZ' : f ⁻¹' V = Z := by
389-
refine hWZ.antisymm (Set.image_subset_iff.mp ?_)
390-
exact hV.2 (IsIrreducible.image hZ' f hf₁.continuousOn)
391-
((Set.image_preimage_eq V hf₄).symm.trans_le (Set.image_mono hWZ))
392-
rw [hWZ']
393-
exact ⟨hZ', fun s hs hs' ↦ (H s hs.2 hs').le⟩
394-
395404
lemma image_mem_irreducibleComponents_of_isPreirreducible_fiber
396405
{V : Set X} (hV : V ∈ irreducibleComponents X) :
397406
f '' V ∈ irreducibleComponents Y :=
@@ -409,7 +418,8 @@ def irreducibleComponentsEquivOfIsPreirreducibleFiber :
409418
invFun W := ⟨f '' W.1,
410419
image_mem_irreducibleComponents_of_isPreirreducible_fiber f hf₁ hf₂ hf₃ hf₄ W.2
411420
toFun W := ⟨f ⁻¹' W.1,
412-
preimage_mem_irreducibleComponents_of_isPreirreducible_fiber f hf₁ hf₂ hf₃ hf₄ W.2
421+
preimage_mem_irreducibleComponents_of_isPreirreducible_fiber W.2 hf₁ hf₂ hf₃
422+
(by simp [hf₄.range_eq, W.2.1.1])⟩
413423
right_inv W := Subtype.ext <| by
414424
refine (Set.subset_preimage_image _ _).antisymm' (W.2.2 ?_ (Set.subset_preimage_image _ _))
415425
refine ⟨?_, (W.2.1.image _ hf₁.continuousOn).2.preimage_of_isPreirreducible_fiber _ hf₂ hf₃⟩

0 commit comments

Comments
 (0)