Theorem: TopologicalSpace.IsTopologicalBasis.quotientMap
File: Mathlib/Topology/Bases.lean

tactic: apply isTopologicalBasis_of_isOpen_of_nhds
state_before: α : Type u
t : TopologicalSpace α
X : Type u_1
inst✝¹ : TopologicalSpace X
Y : Type u_2
inst✝ : TopologicalSpace Y
π : X → Y
V : Set (Set X)
hV : IsTopologicalBasis V
h' : QuotientMap π
h : IsOpenMap π
⊢ IsTopologicalBasis (image π '' V)
state_after: case h_open
α : Type u
t : TopologicalSpace α
X : Type u_1
inst✝¹ : TopologicalSpace X
Y : Type u_2
inst✝ : TopologicalSpace Y
π : X → Y
V : Set (Set X)
hV : IsTopologicalBasis V
h' : QuotientMap π
h : IsOpenMap π
⊢ ∀ u ∈ image π '' V, IsOpen u

case h_nhds
α : Type u
t : TopologicalSpace α
X : Type u_1
inst✝¹ : TopologicalSpace X
Y : Type u_2
inst✝ : TopologicalSpace Y
π : X → Y
V : Set (Set X)
hV : IsTopologicalBasis V
h' : QuotientMap π
h : IsOpenMap π
⊢ ∀ (a : Y) (u : Set Y), a ∈ u → IsOpen u → ∃ v ∈ image π '' V, a ∈ v ∧ v ⊆ u

tactic: rintro - ⟨U, U_in_V, rfl⟩
state_before: case h_open
α : Type u
t : TopologicalSpace α
X : Type u_1
inst✝¹ : TopologicalSpace X
Y : Type u_2
inst✝ : TopologicalSpace Y
π : X → Y
V : Set (Set X)
hV : IsTopologicalBasis V
h' : QuotientMap π
h : IsOpenMap π
⊢ ∀ u ∈ image π '' V, IsOpen u
state_after: case h_open.intro.intro
α : Type u
t : TopologicalSpace α
X : Type u_1
inst✝¹ : TopologicalSpace X
Y : Type u_2
inst✝ : TopologicalSpace Y
π : X → Y
V : Set (Set X)
hV : IsTopologicalBasis V
h' : QuotientMap π
h : IsOpenMap π
U : Set X
U_in_V : U ∈ V
⊢ IsOpen (π '' U)

tactic: apply h U (hV.isOpen U_in_V)
state_before: case h_open.intro.intro
α : Type u
t : TopologicalSpace α
X : Type u_1
inst✝¹ : TopologicalSpace X
Y : Type u_2
inst✝ : TopologicalSpace Y
π : X → Y
V : Set (Set X)
hV : IsTopologicalBasis V
h' : QuotientMap π
h : IsOpenMap π
U : Set X
U_in_V : U ∈ V
⊢ IsOpen (π '' U)
state_after: no goals

tactic: intro y U y_in_U U_open
state_before: case h_nhds
α : Type u
t : TopologicalSpace α
X : Type u_1
inst✝¹ : TopologicalSpace X
Y : Type u_2
inst✝ : TopologicalSpace Y
π : X → Y
V : Set (Set X)
hV : IsTopologicalBasis V
h' : QuotientMap π
h : IsOpenMap π
⊢ ∀ (a : Y) (u : Set Y), a ∈ u → IsOpen u → ∃ v ∈ image π '' V, a ∈ v ∧ v ⊆ u
state_after: case h_nhds
α : Type u
t : TopologicalSpace α
X : Type u_1
inst✝¹ : TopologicalSpace X
Y : Type u_2
inst✝ : TopologicalSpace Y
π : X → Y
V : Set (Set X)
hV : IsTopologicalBasis V
h' : QuotientMap π
h : IsOpenMap π
y : Y
U : Set Y
y_in_U : y ∈ U
U_open : IsOpen U
⊢ ∃ v ∈ image π '' V, y ∈ v ∧ v ⊆ U

tactic: obtain ⟨x, rfl⟩ := h'.surjective y
state_before: case h_nhds
α : Type u
t : TopologicalSpace α
X : Type u_1
inst✝¹ : TopologicalSpace X
Y : Type u_2
inst✝ : TopologicalSpace Y
π : X → Y
V : Set (Set X)
hV : IsTopologicalBasis V
h' : QuotientMap π
h : IsOpenMap π
y : Y
U : Set Y
y_in_U : y ∈ U
U_open : IsOpen U
⊢ ∃ v ∈ image π '' V, y ∈ v ∧ v ⊆ U
state_after: case h_nhds.intro
α : Type u
t : TopologicalSpace α
X : Type u_1
inst✝¹ : TopologicalSpace X
Y : Type u_2
inst✝ : TopologicalSpace Y
π : X → Y
V : Set (Set X)
hV : IsTopologicalBasis V
h' : QuotientMap π
h : IsOpenMap π
U : Set Y
U_open : IsOpen U
x : X
y_in_U : π x ∈ U
⊢ ∃ v ∈ image π '' V, π x ∈ v ∧ v ⊆ U

tactic: let W := π ⁻¹' U
state_before: case h_nhds.intro
α : Type u
t : TopologicalSpace α
X : Type u_1
inst✝¹ : TopologicalSpace X
Y : Type u_2
inst✝ : TopologicalSpace Y
π : X → Y
V : Set (Set X)
hV : IsTopologicalBasis V
h' : QuotientMap π
h : IsOpenMap π
U : Set Y
U_open : IsOpen U
x : X
y_in_U : π x ∈ U
⊢ ∃ v ∈ image π '' V, π x ∈ v ∧ v ⊆ U
state_after: case h_nhds.intro
α : Type u
t : TopologicalSpace α
X : Type u_1
inst✝¹ : TopologicalSpace X
Y : Type u_2
inst✝ : TopologicalSpace Y
π : X → Y
V : Set (Set X)
hV : IsTopologicalBasis V
h' : QuotientMap π
h : IsOpenMap π
U : Set Y
U_open : IsOpen U
x : X
y_in_U : π x ∈ U
W : Set X := π ⁻¹' U
⊢ ∃ v ∈ image π '' V, π x ∈ v ∧ v ⊆ U

tactic: have x_in_W : x ∈ W := y_in_U
state_before: case h_nhds.intro
α : Type u
t : TopologicalSpace α
X : Type u_1
inst✝¹ : TopologicalSpace X
Y : Type u_2
inst✝ : TopologicalSpace Y
π : X → Y
V : Set (Set X)
hV : IsTopologicalBasis V
h' : QuotientMap π
h : IsOpenMap π
U : Set Y
U_open : IsOpen U
x : X
y_in_U : π x ∈ U
W : Set X := π ⁻¹' U
⊢ ∃ v ∈ image π '' V, π x ∈ v ∧ v ⊆ U
state_after: case h_nhds.intro
α : Type u
t : TopologicalSpace α
X : Type u_1
inst✝¹ : TopologicalSpace X
Y : Type u_2
inst✝ : TopologicalSpace Y
π : X → Y
V : Set (Set X)
hV : IsTopologicalBasis V
h' : QuotientMap π
h : IsOpenMap π
U : Set Y
U_open : IsOpen U
x : X
y_in_U : π x ∈ U
W : Set X := π ⁻¹' U
x_in_W : x ∈ W
⊢ ∃ v ∈ image π '' V, π x ∈ v ∧ v ⊆ U

tactic: have W_open : IsOpen W := U_open.preimage h'.continuous
state_before: case h_nhds.intro
α : Type u
t : TopologicalSpace α
X : Type u_1
inst✝¹ : TopologicalSpace X
Y : Type u_2
inst✝ : TopologicalSpace Y
π : X → Y
V : Set (Set X)
hV : IsTopologicalBasis V
h' : QuotientMap π
h : IsOpenMap π
U : Set Y
U_open : IsOpen U
x : X
y_in_U : π x ∈ U
W : Set X := π ⁻¹' U
x_in_W : x ∈ W
⊢ ∃ v ∈ image π '' V, π x ∈ v ∧ v ⊆ U
state_after: case h_nhds.intro
α : Type u
t : TopologicalSpace α
X : Type u_1
inst✝¹ : TopologicalSpace X
Y : Type u_2
inst✝ : TopologicalSpace Y
π : X → Y
V : Set (Set X)
hV : IsTopologicalBasis V
h' : QuotientMap π
h : IsOpenMap π
U : Set Y
U_open : IsOpen U
x : X
y_in_U : π x ∈ U
W : Set X := π ⁻¹' U
x_in_W : x ∈ W
W_open : IsOpen W
⊢ ∃ v ∈ image π '' V, π x ∈ v ∧ v ⊆ U

tactic: obtain ⟨Z, Z_in_V, x_in_Z, Z_in_W⟩ := hV.exists_subset_of_mem_open x_in_W W_open
state_before: case h_nhds.intro
α : Type u
t : TopologicalSpace α
X : Type u_1
inst✝¹ : TopologicalSpace X
Y : Type u_2
inst✝ : TopologicalSpace Y
π : X → Y
V : Set (Set X)
hV : IsTopologicalBasis V
h' : QuotientMap π
h : IsOpenMap π
U : Set Y
U_open : IsOpen U
x : X
y_in_U : π x ∈ U
W : Set X := π ⁻¹' U
x_in_W : x ∈ W
W_open : IsOpen W
⊢ ∃ v ∈ image π '' V, π x ∈ v ∧ v ⊆ U
state_after: case h_nhds.intro.intro.intro.intro
α : Type u
t : TopologicalSpace α
X : Type u_1
inst✝¹ : TopologicalSpace X
Y : Type u_2
inst✝ : TopologicalSpace Y
π : X → Y
V : Set (Set X)
hV : IsTopologicalBasis V
h' : QuotientMap π
h : IsOpenMap π
U : Set Y
U_open : IsOpen U
x : X
y_in_U : π x ∈ U
W : Set X := π ⁻¹' U
x_in_W : x ∈ W
W_open : IsOpen W
Z : Set X
Z_in_V : Z ∈ V
x_in_Z : x ∈ Z
Z_in_W : Z ⊆ W
⊢ ∃ v ∈ image π '' V, π x ∈ v ∧ v ⊆ U

tactic: have πZ_in_U : π '' Z ⊆ U := (Set.image_subset _ Z_in_W).trans (image_preimage_subset π U)
state_before: case h_nhds.intro.intro.intro.intro
α : Type u
t : TopologicalSpace α
X : Type u_1
inst✝¹ : TopologicalSpace X
Y : Type u_2
inst✝ : TopologicalSpace Y
π : X → Y
V : Set (Set X)
hV : IsTopologicalBasis V
h' : QuotientMap π
h : IsOpenMap π
U : Set Y
U_open : IsOpen U
x : X
y_in_U : π x ∈ U
W : Set X := π ⁻¹' U
x_in_W : x ∈ W
W_open : IsOpen W
Z : Set X
Z_in_V : Z ∈ V
x_in_Z : x ∈ Z
Z_in_W : Z ⊆ W
⊢ ∃ v ∈ image π '' V, π x ∈ v ∧ v ⊆ U
state_after: case h_nhds.intro.intro.intro.intro
α : Type u
t : TopologicalSpace α
X : Type u_1
inst✝¹ : TopologicalSpace X
Y : Type u_2
inst✝ : TopologicalSpace Y
π : X → Y
V : Set (Set X)
hV : IsTopologicalBasis V
h' : QuotientMap π
h : IsOpenMap π
U : Set Y
U_open : IsOpen U
x : X
y_in_U : π x ∈ U
W : Set X := π ⁻¹' U
x_in_W : x ∈ W
W_open : IsOpen W
Z : Set X
Z_in_V : Z ∈ V
x_in_Z : x ∈ Z
Z_in_W : Z ⊆ W
πZ_in_U : π '' Z ⊆ U
⊢ ∃ v ∈ image π '' V, π x ∈ v ∧ v ⊆ U

tactic: exact ⟨π '' Z, ⟨Z, Z_in_V, rfl⟩, ⟨x, x_in_Z, rfl⟩, πZ_in_U⟩
state_before: case h_nhds.intro.intro.intro.intro
α : Type u
t : TopologicalSpace α
X : Type u_1
inst✝¹ : TopologicalSpace X
Y : Type u_2
inst✝ : TopologicalSpace Y
π : X → Y
V : Set (Set X)
hV : IsTopologicalBasis V
h' : QuotientMap π
h : IsOpenMap π
U : Set Y
U_open : IsOpen U
x : X
y_in_U : π x ∈ U
W : Set X := π ⁻¹' U
x_in_W : x ∈ W
W_open : IsOpen W
Z : Set X
Z_in_V : Z ∈ V
x_in_Z : x ∈ Z
Z_in_W : Z ⊆ W
πZ_in_U : π '' Z ⊆ U
⊢ ∃ v ∈ image π '' V, π x ∈ v ∧ v ⊆ U
state_after: no goals