[GOAL]
α : Type u_1
β : Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
x y : α
S U Z : Set α
⊢ IsGenericPoint x S ↔ ∀ (y : α), x ⤳ y ↔ y ∈ S
[PROOFSTEP]
simp only [specializes_iff_mem_closure, IsGenericPoint, Set.ext_iff]
[GOAL]
α : Type u_1
β : Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
x y : α
S U Z : Set α
h : IsGenericPoint x S
hU : IsOpen U
⊢ Disjoint S U ↔ ¬x ∈ U
[PROOFSTEP]
rw [h.mem_open_set_iff hU, ← not_disjoint_iff_nonempty_inter, Classical.not_not]
[GOAL]
α : Type u_1
β : Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
x y : α
S U Z : Set α
h : IsGenericPoint x S
hZ : IsClosed Z
⊢ x ∈ Z ↔ S ⊆ Z
[PROOFSTEP]
rw [← h.def, hZ.closure_subset_iff, singleton_subset_iff]
[GOAL]
α : Type u_1
β : Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
x y : α
S U Z : Set α
h : IsGenericPoint x S
f : α → β
hf : Continuous f
⊢ IsGenericPoint (f x) (closure (f '' S))
[PROOFSTEP]
rw [isGenericPoint_def, ← h.def, ← image_singleton, closure_image_closure hf]
[GOAL]
α : Type u_1
β : Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
x y : α
S U Z : Set α
hS : IsClosed S
hxS : x ∈ S
⊢ IsGenericPoint x S ↔ ∀ (Z : Set α), IsClosed Z → x ∈ Z → S ⊆ Z
[PROOFSTEP]
have : closure { x } ⊆ S := closure_minimal (singleton_subset_iff.2 hxS) hS
[GOAL]
α : Type u_1
β : Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
x y : α
S U Z : Set α
hS : IsClosed S
hxS : x ∈ S
this : closure {x} ⊆ S
⊢ IsGenericPoint x S ↔ ∀ (Z : Set α), IsClosed Z → x ∈ Z → S ⊆ Z
[PROOFSTEP]
simp_rw [IsGenericPoint, subset_antisymm_iff, this, true_and_iff, closure, subset_sInter_iff, mem_setOf_eq, and_imp,
  singleton_subset_iff]
[GOAL]
α : Type u_1
β : Type u_2
inst✝³ : TopologicalSpace α
inst✝² : TopologicalSpace β
inst✝¹ : QuasiSober α
inst✝ : IrreducibleSpace α
⊢ IsGenericPoint (genericPoint α) ⊤
[PROOFSTEP]
simpa using (IrreducibleSpace.isIrreducible_univ α).genericPoint_spec
[GOAL]
α : Type u_1
β : Type u_2
inst✝³ : TopologicalSpace α
inst✝² : TopologicalSpace β
inst✝¹ : QuasiSober α
inst✝ : IrreducibleSpace α
x : α
⊢ x ∈ closure univ
[PROOFSTEP]
simp
[GOAL]
α : Type u_1
β : Type u_2
inst✝³ : TopologicalSpace α
inst✝² : TopologicalSpace β
inst✝¹ : QuasiSober α
inst✝ : T0Space α
x : α
⊢ IsGenericPoint x (closure (closure {x}))
[PROOFSTEP]
rw [closure_closure]
[GOAL]
α : Type u_1
β : Type u_2
inst✝³ : TopologicalSpace α
inst✝² : TopologicalSpace β
inst✝¹ : QuasiSober α
inst✝ : T0Space α
x : α
⊢ IsGenericPoint x (closure {x})
[PROOFSTEP]
exact isGenericPoint_closure
[GOAL]
α : Type u_1
β : Type u_2
inst✝³ : TopologicalSpace α
inst✝² : TopologicalSpace β
inst✝¹ : QuasiSober α
inst✝ : T0Space α
⊢ ∀ {a b : ↑{s | IsIrreducible s ∧ IsClosed s}},
    ↑{ toFun := fun s => IsIrreducible.genericPoint (_ : IsIrreducible ↑s),
              invFun := fun x =>
                { val := closure {x}, property := (_ : IsIrreducible (closure {x}) ∧ IsClosed (closure {x})) },
              left_inv :=
                (_ :
                  ∀ (s : ↑{s | IsIrreducible s ∧ IsClosed s}),
                    (fun x =>
                          { val := closure {x},
                            property := (_ : IsIrreducible (closure {x}) ∧ IsClosed (closure {x})) })
                        ((fun s => IsIrreducible.genericPoint (_ : IsIrreducible ↑s)) s) =
                      s),
              right_inv := (_ : ∀ (x : α), IsIrreducible.genericPoint (_ : IsIrreducible (closure {x})) = x) }
          a ≤
        ↑{ toFun := fun s => IsIrreducible.genericPoint (_ : IsIrreducible ↑s),
              invFun := fun x =>
                { val := closure {x}, property := (_ : IsIrreducible (closure {x}) ∧ IsClosed (closure {x})) },
              left_inv :=
                (_ :
                  ∀ (s : ↑{s | IsIrreducible s ∧ IsClosed s}),
                    (fun x =>
                          { val := closure {x},
                            property := (_ : IsIrreducible (closure {x}) ∧ IsClosed (closure {x})) })
                        ((fun s => IsIrreducible.genericPoint (_ : IsIrreducible ↑s)) s) =
                      s),
              right_inv := (_ : ∀ (x : α), IsIrreducible.genericPoint (_ : IsIrreducible (closure {x})) = x) }
          b ↔
      a ≤ b
[PROOFSTEP]
rintro ⟨s, hs⟩ ⟨t, ht⟩
[GOAL]
case mk.mk
α : Type u_1
β : Type u_2
inst✝³ : TopologicalSpace α
inst✝² : TopologicalSpace β
inst✝¹ : QuasiSober α
inst✝ : T0Space α
s : Set α
hs : s ∈ {s | IsIrreducible s ∧ IsClosed s}
t : Set α
ht : t ∈ {s | IsIrreducible s ∧ IsClosed s}
⊢ ↑{ toFun := fun s => IsIrreducible.genericPoint (_ : IsIrreducible ↑s),
            invFun := fun x =>
              { val := closure {x}, property := (_ : IsIrreducible (closure {x}) ∧ IsClosed (closure {x})) },
            left_inv :=
              (_ :
                ∀ (s : ↑{s | IsIrreducible s ∧ IsClosed s}),
                  (fun x =>
                        { val := closure {x}, property := (_ : IsIrreducible (closure {x}) ∧ IsClosed (closure {x})) })
                      ((fun s => IsIrreducible.genericPoint (_ : IsIrreducible ↑s)) s) =
                    s),
            right_inv := (_ : ∀ (x : α), IsIrreducible.genericPoint (_ : IsIrreducible (closure {x})) = x) }
        { val := s, property := hs } ≤
      ↑{ toFun := fun s => IsIrreducible.genericPoint (_ : IsIrreducible ↑s),
            invFun := fun x =>
              { val := closure {x}, property := (_ : IsIrreducible (closure {x}) ∧ IsClosed (closure {x})) },
            left_inv :=
              (_ :
                ∀ (s : ↑{s | IsIrreducible s ∧ IsClosed s}),
                  (fun x =>
                        { val := closure {x}, property := (_ : IsIrreducible (closure {x}) ∧ IsClosed (closure {x})) })
                      ((fun s => IsIrreducible.genericPoint (_ : IsIrreducible ↑s)) s) =
                    s),
            right_inv := (_ : ∀ (x : α), IsIrreducible.genericPoint (_ : IsIrreducible (closure {x})) = x) }
        { val := t, property := ht } ↔
    { val := s, property := hs } ≤ { val := t, property := ht }
[PROOFSTEP]
refine specializes_iff_closure_subset.trans ?_
[GOAL]
case mk.mk
α : Type u_1
β : Type u_2
inst✝³ : TopologicalSpace α
inst✝² : TopologicalSpace β
inst✝¹ : QuasiSober α
inst✝ : T0Space α
s : Set α
hs : s ∈ {s | IsIrreducible s ∧ IsClosed s}
t : Set α
ht : t ∈ {s | IsIrreducible s ∧ IsClosed s}
⊢ closure
        {↑{ toFun := fun s => IsIrreducible.genericPoint (_ : IsIrreducible ↑s),
                invFun := fun x =>
                  { val := closure {x}, property := (_ : IsIrreducible (closure {x}) ∧ IsClosed (closure {x})) },
                left_inv :=
                  (_ :
                    ∀ (s : ↑{s | IsIrreducible s ∧ IsClosed s}),
                      (fun x =>
                            { val := closure {x},
                              property := (_ : IsIrreducible (closure {x}) ∧ IsClosed (closure {x})) })
                          ((fun s => IsIrreducible.genericPoint (_ : IsIrreducible ↑s)) s) =
                        s),
                right_inv := (_ : ∀ (x : α), IsIrreducible.genericPoint (_ : IsIrreducible (closure {x})) = x) }
            { val := s, property := hs }} ⊆
      closure
        {↑{ toFun := fun s => IsIrreducible.genericPoint (_ : IsIrreducible ↑s),
                invFun := fun x =>
                  { val := closure {x}, property := (_ : IsIrreducible (closure {x}) ∧ IsClosed (closure {x})) },
                left_inv :=
                  (_ :
                    ∀ (s : ↑{s | IsIrreducible s ∧ IsClosed s}),
                      (fun x =>
                            { val := closure {x},
                              property := (_ : IsIrreducible (closure {x}) ∧ IsClosed (closure {x})) })
                          ((fun s => IsIrreducible.genericPoint (_ : IsIrreducible ↑s)) s) =
                        s),
                right_inv := (_ : ∀ (x : α), IsIrreducible.genericPoint (_ : IsIrreducible (closure {x})) = x) }
            { val := t, property := ht }} ↔
    { val := s, property := hs } ≤ { val := t, property := ht }
[PROOFSTEP]
simp [hs.2.closure_eq, ht.2.closure_eq]
[GOAL]
α : Type u_1
β : Type u_2
inst✝² : TopologicalSpace α
inst✝¹ : TopologicalSpace β
f : α → β
hf : ClosedEmbedding f
inst✝ : QuasiSober β
S✝ : Set α
hS : IsIrreducible S✝
hS' : IsClosed S✝
⊢ ∃ x, IsGenericPoint x S✝
[PROOFSTEP]
have hS'' := hS.image f hf.continuous.continuousOn
[GOAL]
α : Type u_1
β : Type u_2
inst✝² : TopologicalSpace α
inst✝¹ : TopologicalSpace β
f : α → β
hf : ClosedEmbedding f
inst✝ : QuasiSober β
S✝ : Set α
hS : IsIrreducible S✝
hS' : IsClosed S✝
hS'' : IsIrreducible (f '' S✝)
⊢ ∃ x, IsGenericPoint x S✝
[PROOFSTEP]
obtain ⟨x, hx⟩ := QuasiSober.sober hS'' (hf.isClosedMap _ hS')
[GOAL]
case intro
α : Type u_1
β : Type u_2
inst✝² : TopologicalSpace α
inst✝¹ : TopologicalSpace β
f : α → β
hf : ClosedEmbedding f
inst✝ : QuasiSober β
S✝ : Set α
hS : IsIrreducible S✝
hS' : IsClosed S✝
hS'' : IsIrreducible (f '' S✝)
x : β
hx : IsGenericPoint x (f '' S✝)
⊢ ∃ x, IsGenericPoint x S✝
[PROOFSTEP]
obtain ⟨y, -, rfl⟩ := hx.mem
[GOAL]
case intro.intro.intro
α : Type u_1
β : Type u_2
inst✝² : TopologicalSpace α
inst✝¹ : TopologicalSpace β
f : α → β
hf : ClosedEmbedding f
inst✝ : QuasiSober β
S✝ : Set α
hS : IsIrreducible S✝
hS' : IsClosed S✝
hS'' : IsIrreducible (f '' S✝)
y : α
hx : IsGenericPoint (f y) (f '' S✝)
⊢ ∃ x, IsGenericPoint x S✝
[PROOFSTEP]
use y
[GOAL]
case h
α : Type u_1
β : Type u_2
inst✝² : TopologicalSpace α
inst✝¹ : TopologicalSpace β
f : α → β
hf : ClosedEmbedding f
inst✝ : QuasiSober β
S✝ : Set α
hS : IsIrreducible S✝
hS' : IsClosed S✝
hS'' : IsIrreducible (f '' S✝)
y : α
hx : IsGenericPoint (f y) (f '' S✝)
⊢ IsGenericPoint y S✝
[PROOFSTEP]
apply image_injective.mpr hf.inj
[GOAL]
case h.a
α : Type u_1
β : Type u_2
inst✝² : TopologicalSpace α
inst✝¹ : TopologicalSpace β
f : α → β
hf : ClosedEmbedding f
inst✝ : QuasiSober β
S✝ : Set α
hS : IsIrreducible S✝
hS' : IsClosed S✝
hS'' : IsIrreducible (f '' S✝)
y : α
hx : IsGenericPoint (f y) (f '' S✝)
⊢ f '' closure {y} = f '' S✝
[PROOFSTEP]
rw [← hx.def, ← hf.closure_image_eq, image_singleton]
[GOAL]
α : Type u_1
β : Type u_2
inst✝² : TopologicalSpace α
inst✝¹ : TopologicalSpace β
f : α → β
hf : OpenEmbedding f
inst✝ : QuasiSober β
S✝ : Set α
hS : IsIrreducible S✝
hS' : IsClosed S✝
⊢ ∃ x, IsGenericPoint x S✝
[PROOFSTEP]
have hS'' := hS.image f hf.continuous.continuousOn
[GOAL]
α : Type u_1
β : Type u_2
inst✝² : TopologicalSpace α
inst✝¹ : TopologicalSpace β
f : α → β
hf : OpenEmbedding f
inst✝ : QuasiSober β
S✝ : Set α
hS : IsIrreducible S✝
hS' : IsClosed S✝
hS'' : IsIrreducible (f '' S✝)
⊢ ∃ x, IsGenericPoint x S✝
[PROOFSTEP]
obtain ⟨x, hx⟩ := QuasiSober.sober hS''.closure isClosed_closure
[GOAL]
case intro
α : Type u_1
β : Type u_2
inst✝² : TopologicalSpace α
inst✝¹ : TopologicalSpace β
f : α → β
hf : OpenEmbedding f
inst✝ : QuasiSober β
S✝ : Set α
hS : IsIrreducible S✝
hS' : IsClosed S✝
hS'' : IsIrreducible (f '' S✝)
x : β
hx : IsGenericPoint x (closure (f '' S✝))
⊢ ∃ x, IsGenericPoint x S✝
[PROOFSTEP]
obtain ⟨T, hT, rfl⟩ := hf.toInducing.isClosed_iff.mp hS'
[GOAL]
case intro.intro.intro
α : Type u_1
β : Type u_2
inst✝² : TopologicalSpace α
inst✝¹ : TopologicalSpace β
f : α → β
hf : OpenEmbedding f
inst✝ : QuasiSober β
x : β
T : Set β
hT : IsClosed T
hS : IsIrreducible (f ⁻¹' T)
hS' : IsClosed (f ⁻¹' T)
hS'' : IsIrreducible (f '' (f ⁻¹' T))
hx : IsGenericPoint x (closure (f '' (f ⁻¹' T)))
⊢ ∃ x, IsGenericPoint x (f ⁻¹' T)
[PROOFSTEP]
rw [image_preimage_eq_inter_range] at hx hS'' 
[GOAL]
case intro.intro.intro
α : Type u_1
β : Type u_2
inst✝² : TopologicalSpace α
inst✝¹ : TopologicalSpace β
f : α → β
hf : OpenEmbedding f
inst✝ : QuasiSober β
x : β
T : Set β
hT : IsClosed T
hS : IsIrreducible (f ⁻¹' T)
hS' : IsClosed (f ⁻¹' T)
hS'' : IsIrreducible (T ∩ range f)
hx : IsGenericPoint x (closure (T ∩ range f))
⊢ ∃ x, IsGenericPoint x (f ⁻¹' T)
[PROOFSTEP]
have hxT : x ∈ T := by
  rw [← hT.closure_eq]
  exact closure_mono (inter_subset_left _ _) hx.mem
[GOAL]
α : Type u_1
β : Type u_2
inst✝² : TopologicalSpace α
inst✝¹ : TopologicalSpace β
f : α → β
hf : OpenEmbedding f
inst✝ : QuasiSober β
x : β
T : Set β
hT : IsClosed T
hS : IsIrreducible (f ⁻¹' T)
hS' : IsClosed (f ⁻¹' T)
hS'' : IsIrreducible (T ∩ range f)
hx : IsGenericPoint x (closure (T ∩ range f))
⊢ x ∈ T
[PROOFSTEP]
rw [← hT.closure_eq]
[GOAL]
α : Type u_1
β : Type u_2
inst✝² : TopologicalSpace α
inst✝¹ : TopologicalSpace β
f : α → β
hf : OpenEmbedding f
inst✝ : QuasiSober β
x : β
T : Set β
hT : IsClosed T
hS : IsIrreducible (f ⁻¹' T)
hS' : IsClosed (f ⁻¹' T)
hS'' : IsIrreducible (T ∩ range f)
hx : IsGenericPoint x (closure (T ∩ range f))
⊢ x ∈ closure T
[PROOFSTEP]
exact closure_mono (inter_subset_left _ _) hx.mem
[GOAL]
case intro.intro.intro
α : Type u_1
β : Type u_2
inst✝² : TopologicalSpace α
inst✝¹ : TopologicalSpace β
f : α → β
hf : OpenEmbedding f
inst✝ : QuasiSober β
x : β
T : Set β
hT : IsClosed T
hS : IsIrreducible (f ⁻¹' T)
hS' : IsClosed (f ⁻¹' T)
hS'' : IsIrreducible (T ∩ range f)
hx : IsGenericPoint x (closure (T ∩ range f))
hxT : x ∈ T
⊢ ∃ x, IsGenericPoint x (f ⁻¹' T)
[PROOFSTEP]
obtain ⟨y, rfl⟩ : x ∈ range f := by
  rw [hx.mem_open_set_iff hf.open_range]
  refine' Nonempty.mono _ hS''.1
  simpa using subset_closure
[GOAL]
α : Type u_1
β : Type u_2
inst✝² : TopologicalSpace α
inst✝¹ : TopologicalSpace β
f : α → β
hf : OpenEmbedding f
inst✝ : QuasiSober β
x : β
T : Set β
hT : IsClosed T
hS : IsIrreducible (f ⁻¹' T)
hS' : IsClosed (f ⁻¹' T)
hS'' : IsIrreducible (T ∩ range f)
hx : IsGenericPoint x (closure (T ∩ range f))
hxT : x ∈ T
⊢ x ∈ range f
[PROOFSTEP]
rw [hx.mem_open_set_iff hf.open_range]
[GOAL]
α : Type u_1
β : Type u_2
inst✝² : TopologicalSpace α
inst✝¹ : TopologicalSpace β
f : α → β
hf : OpenEmbedding f
inst✝ : QuasiSober β
x : β
T : Set β
hT : IsClosed T
hS : IsIrreducible (f ⁻¹' T)
hS' : IsClosed (f ⁻¹' T)
hS'' : IsIrreducible (T ∩ range f)
hx : IsGenericPoint x (closure (T ∩ range f))
hxT : x ∈ T
⊢ Set.Nonempty (closure (T ∩ range f) ∩ range f)
[PROOFSTEP]
refine' Nonempty.mono _ hS''.1
[GOAL]
α : Type u_1
β : Type u_2
inst✝² : TopologicalSpace α
inst✝¹ : TopologicalSpace β
f : α → β
hf : OpenEmbedding f
inst✝ : QuasiSober β
x : β
T : Set β
hT : IsClosed T
hS : IsIrreducible (f ⁻¹' T)
hS' : IsClosed (f ⁻¹' T)
hS'' : IsIrreducible (T ∩ range f)
hx : IsGenericPoint x (closure (T ∩ range f))
hxT : x ∈ T
⊢ T ∩ range f ⊆ closure (T ∩ range f) ∩ range f
[PROOFSTEP]
simpa using subset_closure
[GOAL]
case intro.intro.intro.intro
α : Type u_1
β : Type u_2
inst✝² : TopologicalSpace α
inst✝¹ : TopologicalSpace β
f : α → β
hf : OpenEmbedding f
inst✝ : QuasiSober β
T : Set β
hT : IsClosed T
hS : IsIrreducible (f ⁻¹' T)
hS' : IsClosed (f ⁻¹' T)
hS'' : IsIrreducible (T ∩ range f)
y : α
hx : IsGenericPoint (f y) (closure (T ∩ range f))
hxT : f y ∈ T
⊢ ∃ x, IsGenericPoint x (f ⁻¹' T)
[PROOFSTEP]
use y
[GOAL]
case h
α : Type u_1
β : Type u_2
inst✝² : TopologicalSpace α
inst✝¹ : TopologicalSpace β
f : α → β
hf : OpenEmbedding f
inst✝ : QuasiSober β
T : Set β
hT : IsClosed T
hS : IsIrreducible (f ⁻¹' T)
hS' : IsClosed (f ⁻¹' T)
hS'' : IsIrreducible (T ∩ range f)
y : α
hx : IsGenericPoint (f y) (closure (T ∩ range f))
hxT : f y ∈ T
⊢ IsGenericPoint y (f ⁻¹' T)
[PROOFSTEP]
change _ = _
[GOAL]
case h
α : Type u_1
β : Type u_2
inst✝² : TopologicalSpace α
inst✝¹ : TopologicalSpace β
f : α → β
hf : OpenEmbedding f
inst✝ : QuasiSober β
T : Set β
hT : IsClosed T
hS : IsIrreducible (f ⁻¹' T)
hS' : IsClosed (f ⁻¹' T)
hS'' : IsIrreducible (T ∩ range f)
y : α
hx : IsGenericPoint (f y) (closure (T ∩ range f))
hxT : f y ∈ T
⊢ closure {y} = f ⁻¹' T
[PROOFSTEP]
rw [hf.toEmbedding.closure_eq_preimage_closure_image, image_singleton, show _ = _ from hx]
[GOAL]
case h
α : Type u_1
β : Type u_2
inst✝² : TopologicalSpace α
inst✝¹ : TopologicalSpace β
f : α → β
hf : OpenEmbedding f
inst✝ : QuasiSober β
T : Set β
hT : IsClosed T
hS : IsIrreducible (f ⁻¹' T)
hS' : IsClosed (f ⁻¹' T)
hS'' : IsIrreducible (T ∩ range f)
y : α
hx : IsGenericPoint (f y) (closure (T ∩ range f))
hxT : f y ∈ T
⊢ f ⁻¹' closure (T ∩ range f) = f ⁻¹' T
[PROOFSTEP]
apply image_injective.mpr hf.inj
[GOAL]
case h.a
α : Type u_1
β : Type u_2
inst✝² : TopologicalSpace α
inst✝¹ : TopologicalSpace β
f : α → β
hf : OpenEmbedding f
inst✝ : QuasiSober β
T : Set β
hT : IsClosed T
hS : IsIrreducible (f ⁻¹' T)
hS' : IsClosed (f ⁻¹' T)
hS'' : IsIrreducible (T ∩ range f)
y : α
hx : IsGenericPoint (f y) (closure (T ∩ range f))
hxT : f y ∈ T
⊢ f '' (f ⁻¹' closure (T ∩ range f)) = f '' (f ⁻¹' T)
[PROOFSTEP]
ext z
[GOAL]
case h.a.h
α : Type u_1
β : Type u_2
inst✝² : TopologicalSpace α
inst✝¹ : TopologicalSpace β
f : α → β
hf : OpenEmbedding f
inst✝ : QuasiSober β
T : Set β
hT : IsClosed T
hS : IsIrreducible (f ⁻¹' T)
hS' : IsClosed (f ⁻¹' T)
hS'' : IsIrreducible (T ∩ range f)
y : α
hx : IsGenericPoint (f y) (closure (T ∩ range f))
hxT : f y ∈ T
z : β
⊢ z ∈ f '' (f ⁻¹' closure (T ∩ range f)) ↔ z ∈ f '' (f ⁻¹' T)
[PROOFSTEP]
simp only [image_preimage_eq_inter_range, mem_inter_iff, and_congr_left_iff]
[GOAL]
case h.a.h
α : Type u_1
β : Type u_2
inst✝² : TopologicalSpace α
inst✝¹ : TopologicalSpace β
f : α → β
hf : OpenEmbedding f
inst✝ : QuasiSober β
T : Set β
hT : IsClosed T
hS : IsIrreducible (f ⁻¹' T)
hS' : IsClosed (f ⁻¹' T)
hS'' : IsIrreducible (T ∩ range f)
y : α
hx : IsGenericPoint (f y) (closure (T ∩ range f))
hxT : f y ∈ T
z : β
⊢ z ∈ range f → (z ∈ closure (T ∩ range f) ↔ z ∈ T)
[PROOFSTEP]
exact fun hy => ⟨fun h => hT.closure_eq ▸ closure_mono (inter_subset_left _ _) h, fun h => subset_closure ⟨h, hy⟩⟩
[GOAL]
α : Type u_1
β : Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
S : Set (Set α)
hS : ∀ (s : ↑S), IsOpen ↑s
hS' : ∀ (s : ↑S), QuasiSober ↑↑s
hS'' : ⋃₀ S = ⊤
⊢ QuasiSober α
[PROOFSTEP]
rw [quasiSober_iff]
[GOAL]
α : Type u_1
β : Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
S : Set (Set α)
hS : ∀ (s : ↑S), IsOpen ↑s
hS' : ∀ (s : ↑S), QuasiSober ↑↑s
hS'' : ⋃₀ S = ⊤
⊢ ∀ {S : Set α}, IsIrreducible S → IsClosed S → ∃ x, IsGenericPoint x S
[PROOFSTEP]
intro t h h'
[GOAL]
α : Type u_1
β : Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
S : Set (Set α)
hS : ∀ (s : ↑S), IsOpen ↑s
hS' : ∀ (s : ↑S), QuasiSober ↑↑s
hS'' : ⋃₀ S = ⊤
t : Set α
h : IsIrreducible t
h' : IsClosed t
⊢ ∃ x, IsGenericPoint x t
[PROOFSTEP]
obtain ⟨x, hx⟩ := h.1
[GOAL]
case intro
α : Type u_1
β : Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
S : Set (Set α)
hS : ∀ (s : ↑S), IsOpen ↑s
hS' : ∀ (s : ↑S), QuasiSober ↑↑s
hS'' : ⋃₀ S = ⊤
t : Set α
h : IsIrreducible t
h' : IsClosed t
x : α
hx : x ∈ t
⊢ ∃ x, IsGenericPoint x t
[PROOFSTEP]
obtain ⟨U, hU, hU'⟩ : x ∈ ⋃₀ S := by
  rw [hS'']
  trivial
[GOAL]
α : Type u_1
β : Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
S : Set (Set α)
hS : ∀ (s : ↑S), IsOpen ↑s
hS' : ∀ (s : ↑S), QuasiSober ↑↑s
hS'' : ⋃₀ S = ⊤
t : Set α
h : IsIrreducible t
h' : IsClosed t
x : α
hx : x ∈ t
⊢ x ∈ ⋃₀ S
[PROOFSTEP]
rw [hS'']
[GOAL]
α : Type u_1
β : Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
S : Set (Set α)
hS : ∀ (s : ↑S), IsOpen ↑s
hS' : ∀ (s : ↑S), QuasiSober ↑↑s
hS'' : ⋃₀ S = ⊤
t : Set α
h : IsIrreducible t
h' : IsClosed t
x : α
hx : x ∈ t
⊢ x ∈ ⊤
[PROOFSTEP]
trivial
[GOAL]
case intro.intro.intro
α : Type u_1
β : Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
S : Set (Set α)
hS : ∀ (s : ↑S), IsOpen ↑s
hS' : ∀ (s : ↑S), QuasiSober ↑↑s
hS'' : ⋃₀ S = ⊤
t : Set α
h : IsIrreducible t
h' : IsClosed t
x : α
hx : x ∈ t
U : Set α
hU : U ∈ S
hU' : x ∈ U
⊢ ∃ x, IsGenericPoint x t
[PROOFSTEP]
haveI : QuasiSober U := hS' ⟨U, hU⟩
[GOAL]
case intro.intro.intro
α : Type u_1
β : Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
S : Set (Set α)
hS : ∀ (s : ↑S), IsOpen ↑s
hS' : ∀ (s : ↑S), QuasiSober ↑↑s
hS'' : ⋃₀ S = ⊤
t : Set α
h : IsIrreducible t
h' : IsClosed t
x : α
hx : x ∈ t
U : Set α
hU : U ∈ S
hU' : x ∈ U
this : QuasiSober ↑U
⊢ ∃ x, IsGenericPoint x t
[PROOFSTEP]
have H : IsPreirreducible ((↑) ⁻¹' t : Set U) := h.2.preimage (hS ⟨U, hU⟩).openEmbedding_subtype_val
[GOAL]
case intro.intro.intro
α : Type u_1
β : Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
S : Set (Set α)
hS : ∀ (s : ↑S), IsOpen ↑s
hS' : ∀ (s : ↑S), QuasiSober ↑↑s
hS'' : ⋃₀ S = ⊤
t : Set α
h : IsIrreducible t
h' : IsClosed t
x : α
hx : x ∈ t
U : Set α
hU : U ∈ S
hU' : x ∈ U
this : QuasiSober ↑U
H : IsPreirreducible (Subtype.val ⁻¹' t)
⊢ ∃ x, IsGenericPoint x t
[PROOFSTEP]
replace H : IsIrreducible ((↑) ⁻¹' t : Set U) := ⟨⟨⟨x, hU'⟩, by simpa using hx⟩, H⟩
[GOAL]
α : Type u_1
β : Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
S : Set (Set α)
hS : ∀ (s : ↑S), IsOpen ↑s
hS' : ∀ (s : ↑S), QuasiSober ↑↑s
hS'' : ⋃₀ S = ⊤
t : Set α
h : IsIrreducible t
h' : IsClosed t
x : α
hx : x ∈ t
U : Set α
hU : U ∈ S
hU' : x ∈ U
this : QuasiSober ↑U
H : IsPreirreducible (Subtype.val ⁻¹' t)
⊢ { val := x, property := hU' } ∈ Subtype.val ⁻¹' t
[PROOFSTEP]
simpa using hx
[GOAL]
case intro.intro.intro
α : Type u_1
β : Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
S : Set (Set α)
hS : ∀ (s : ↑S), IsOpen ↑s
hS' : ∀ (s : ↑S), QuasiSober ↑↑s
hS'' : ⋃₀ S = ⊤
t : Set α
h : IsIrreducible t
h' : IsClosed t
x : α
hx : x ∈ t
U : Set α
hU : U ∈ S
hU' : x ∈ U
this : QuasiSober ↑U
H : IsIrreducible (Subtype.val ⁻¹' t)
⊢ ∃ x, IsGenericPoint x t
[PROOFSTEP]
use H.genericPoint
[GOAL]
case h
α : Type u_1
β : Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
S : Set (Set α)
hS : ∀ (s : ↑S), IsOpen ↑s
hS' : ∀ (s : ↑S), QuasiSober ↑↑s
hS'' : ⋃₀ S = ⊤
t : Set α
h : IsIrreducible t
h' : IsClosed t
x : α
hx : x ∈ t
U : Set α
hU : U ∈ S
hU' : x ∈ U
this : QuasiSober ↑U
H : IsIrreducible (Subtype.val ⁻¹' t)
⊢ IsGenericPoint (↑(IsIrreducible.genericPoint H)) t
[PROOFSTEP]
have := continuous_subtype_val.closure_preimage_subset _ H.genericPoint_spec.mem
[GOAL]
case h
α : Type u_1
β : Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
S : Set (Set α)
hS : ∀ (s : ↑S), IsOpen ↑s
hS' : ∀ (s : ↑S), QuasiSober ↑↑s
hS'' : ⋃₀ S = ⊤
t : Set α
h : IsIrreducible t
h' : IsClosed t
x : α
hx : x ∈ t
U : Set α
hU : U ∈ S
hU' : x ∈ U
this✝ : QuasiSober ↑U
H : IsIrreducible (Subtype.val ⁻¹' t)
this : IsIrreducible.genericPoint H ∈ Subtype.val ⁻¹' closure t
⊢ IsGenericPoint (↑(IsIrreducible.genericPoint H)) t
[PROOFSTEP]
rw [h'.closure_eq] at this 
[GOAL]
case h
α : Type u_1
β : Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
S : Set (Set α)
hS : ∀ (s : ↑S), IsOpen ↑s
hS' : ∀ (s : ↑S), QuasiSober ↑↑s
hS'' : ⋃₀ S = ⊤
t : Set α
h : IsIrreducible t
h' : IsClosed t
x : α
hx : x ∈ t
U : Set α
hU : U ∈ S
hU' : x ∈ U
this✝ : QuasiSober ↑U
H : IsIrreducible (Subtype.val ⁻¹' t)
this : IsIrreducible.genericPoint H ∈ Subtype.val ⁻¹' t
⊢ IsGenericPoint (↑(IsIrreducible.genericPoint H)) t
[PROOFSTEP]
apply le_antisymm
[GOAL]
case h.a
α : Type u_1
β : Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
S : Set (Set α)
hS : ∀ (s : ↑S), IsOpen ↑s
hS' : ∀ (s : ↑S), QuasiSober ↑↑s
hS'' : ⋃₀ S = ⊤
t : Set α
h : IsIrreducible t
h' : IsClosed t
x : α
hx : x ∈ t
U : Set α
hU : U ∈ S
hU' : x ∈ U
this✝ : QuasiSober ↑U
H : IsIrreducible (Subtype.val ⁻¹' t)
this : IsIrreducible.genericPoint H ∈ Subtype.val ⁻¹' t
⊢ closure {↑(IsIrreducible.genericPoint H)} ≤ t
[PROOFSTEP]
apply h'.closure_subset_iff.mpr
[GOAL]
case h.a
α : Type u_1
β : Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
S : Set (Set α)
hS : ∀ (s : ↑S), IsOpen ↑s
hS' : ∀ (s : ↑S), QuasiSober ↑↑s
hS'' : ⋃₀ S = ⊤
t : Set α
h : IsIrreducible t
h' : IsClosed t
x : α
hx : x ∈ t
U : Set α
hU : U ∈ S
hU' : x ∈ U
this✝ : QuasiSober ↑U
H : IsIrreducible (Subtype.val ⁻¹' t)
this : IsIrreducible.genericPoint H ∈ Subtype.val ⁻¹' t
⊢ {↑(IsIrreducible.genericPoint H)} ⊆ t
[PROOFSTEP]
simpa using this
[GOAL]
case h.a
α : Type u_1
β : Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
S : Set (Set α)
hS : ∀ (s : ↑S), IsOpen ↑s
hS' : ∀ (s : ↑S), QuasiSober ↑↑s
hS'' : ⋃₀ S = ⊤
t : Set α
h : IsIrreducible t
h' : IsClosed t
x : α
hx : x ∈ t
U : Set α
hU : U ∈ S
hU' : x ∈ U
this✝ : QuasiSober ↑U
H : IsIrreducible (Subtype.val ⁻¹' t)
this : IsIrreducible.genericPoint H ∈ Subtype.val ⁻¹' t
⊢ t ≤ closure {↑(IsIrreducible.genericPoint H)}
[PROOFSTEP]
rw [← image_singleton, ← closure_image_closure continuous_subtype_val, H.genericPoint_spec.def]
[GOAL]
case h.a
α : Type u_1
β : Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
S : Set (Set α)
hS : ∀ (s : ↑S), IsOpen ↑s
hS' : ∀ (s : ↑S), QuasiSober ↑↑s
hS'' : ⋃₀ S = ⊤
t : Set α
h : IsIrreducible t
h' : IsClosed t
x : α
hx : x ∈ t
U : Set α
hU : U ∈ S
hU' : x ∈ U
this✝ : QuasiSober ↑U
H : IsIrreducible (Subtype.val ⁻¹' t)
this : IsIrreducible.genericPoint H ∈ Subtype.val ⁻¹' t
⊢ t ≤ closure (Subtype.val '' closure (Subtype.val ⁻¹' t))
[PROOFSTEP]
refine' (subset_closure_inter_of_isPreirreducible_of_isOpen h.2 (hS ⟨U, hU⟩) ⟨x, hx, hU'⟩).trans (closure_mono _)
[GOAL]
case h.a
α : Type u_1
β : Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
S : Set (Set α)
hS : ∀ (s : ↑S), IsOpen ↑s
hS' : ∀ (s : ↑S), QuasiSober ↑↑s
hS'' : ⋃₀ S = ⊤
t : Set α
h : IsIrreducible t
h' : IsClosed t
x : α
hx : x ∈ t
U : Set α
hU : U ∈ S
hU' : x ∈ U
this✝ : QuasiSober ↑U
H : IsIrreducible (Subtype.val ⁻¹' t)
this : IsIrreducible.genericPoint H ∈ Subtype.val ⁻¹' t
⊢ t ∩ ↑{ val := U, property := hU } ⊆ Subtype.val '' closure (Subtype.val ⁻¹' t)
[PROOFSTEP]
rw [← Subtype.image_preimage_coe]
[GOAL]
case h.a
α : Type u_1
β : Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
S : Set (Set α)
hS : ∀ (s : ↑S), IsOpen ↑s
hS' : ∀ (s : ↑S), QuasiSober ↑↑s
hS'' : ⋃₀ S = ⊤
t : Set α
h : IsIrreducible t
h' : IsClosed t
x : α
hx : x ∈ t
U : Set α
hU : U ∈ S
hU' : x ∈ U
this✝ : QuasiSober ↑U
H : IsIrreducible (Subtype.val ⁻¹' t)
this : IsIrreducible.genericPoint H ∈ Subtype.val ⁻¹' t
⊢ Subtype.val '' (Subtype.val ⁻¹' t) ⊆ Subtype.val '' closure (Subtype.val ⁻¹' t)
[PROOFSTEP]
exact Set.image_subset _ subset_closure
[GOAL]
α : Type u_1
β : Type u_2
inst✝² : TopologicalSpace α
inst✝¹ : TopologicalSpace β
inst✝ : T2Space α
S✝ : Set α
h : IsIrreducible S✝
x✝ : IsClosed S✝
⊢ ∃ x, IsGenericPoint x S✝
[PROOFSTEP]
obtain ⟨x, rfl⟩ := isIrreducible_iff_singleton.mp h
[GOAL]
case intro
α : Type u_1
β : Type u_2
inst✝² : TopologicalSpace α
inst✝¹ : TopologicalSpace β
inst✝ : T2Space α
x : α
h : IsIrreducible {x}
x✝ : IsClosed {x}
⊢ ∃ x_1, IsGenericPoint x_1 {x}
[PROOFSTEP]
exact ⟨x, closure_singleton⟩
