Theorem: TopCat.GlueData.range_fromOpenSubsetsGlue
File: Mathlib/Topology/Gluing.lean

tactic: ext
state_before: D : GlueData
α : Type u
inst✝ : TopologicalSpace α
J : Type u
U : J → Opens α
⊢ Set.range ⇑(fromOpenSubsetsGlue U) = ⋃ i, ↑(U i)
state_after: case h
D : GlueData
α : Type u
inst✝ : TopologicalSpace α
J : Type u
U : J → Opens α
x✝ : ↑(of α)
⊢ x✝ ∈ Set.range ⇑(fromOpenSubsetsGlue U) ↔ x✝ ∈ ⋃ i, ↑(U i)

tactic: constructor
state_before: case h
D : GlueData
α : Type u
inst✝ : TopologicalSpace α
J : Type u
U : J → Opens α
x✝ : ↑(of α)
⊢ x✝ ∈ Set.range ⇑(fromOpenSubsetsGlue U) ↔ x✝ ∈ ⋃ i, ↑(U i)
state_after: case h.mp
D : GlueData
α : Type u
inst✝ : TopologicalSpace α
J : Type u
U : J → Opens α
x✝ : ↑(of α)
⊢ x✝ ∈ Set.range ⇑(fromOpenSubsetsGlue U) → x✝ ∈ ⋃ i, ↑(U i)

case h.mpr
D : GlueData
α : Type u
inst✝ : TopologicalSpace α
J : Type u
U : J → Opens α
x✝ : ↑(of α)
⊢ x✝ ∈ ⋃ i, ↑(U i) → x✝ ∈ Set.range ⇑(fromOpenSubsetsGlue U)

tactic: rintro ⟨x, rfl⟩
state_before: case h.mp
D : GlueData
α : Type u
inst✝ : TopologicalSpace α
J : Type u
U : J → Opens α
x✝ : ↑(of α)
⊢ x✝ ∈ Set.range ⇑(fromOpenSubsetsGlue U) → x✝ ∈ ⋃ i, ↑(U i)
state_after: case h.mp.intro
D : GlueData
α : Type u
inst✝ : TopologicalSpace α
J : Type u
U : J → Opens α
x : ↑(ofOpenSubsets U).glued
⊢ (fromOpenSubsetsGlue U) x ∈ ⋃ i, ↑(U i)

tactic: obtain ⟨i, ⟨x, hx'⟩, rfl⟩ := (ofOpenSubsets U).ι_jointly_surjective x
state_before: case h.mp.intro
D : GlueData
α : Type u
inst✝ : TopologicalSpace α
J : Type u
U : J → Opens α
x : ↑(ofOpenSubsets U).glued
⊢ (fromOpenSubsetsGlue U) x ∈ ⋃ i, ↑(U i)
state_after: case h.mp.intro.intro.intro.mk
D : GlueData
α : Type u
inst✝ : TopologicalSpace α
J : Type u
U : J → Opens α
i : (ofOpenSubsets U).J
x : ↑(of α)
hx' : x ∈ U i
⊢ (fromOpenSubsetsGlue U) (((ofOpenSubsets U).ι i) ⟨x, hx'⟩) ∈ ⋃ i, ↑(U i)

tactic: erw [ι_fromOpenSubsetsGlue_apply]
state_before: case h.mp.intro.intro.intro.mk
D : GlueData
α : Type u
inst✝ : TopologicalSpace α
J : Type u
U : J → Opens α
i : (ofOpenSubsets U).J
x : ↑(of α)
hx' : x ∈ U i
⊢ (fromOpenSubsetsGlue U) (((ofOpenSubsets U).ι i) ⟨x, hx'⟩) ∈ ⋃ i, ↑(U i)
state_after: case h.mp.intro.intro.intro.mk
D : GlueData
α : Type u
inst✝ : TopologicalSpace α
J : Type u
U : J → Opens α
i : (ofOpenSubsets U).J
x : ↑(of α)
hx' : x ∈ U i
⊢ (U i).inclusion ⟨x, hx'⟩ ∈ ⋃ i, ↑(U i)

tactic: exact Set.subset_iUnion _ i hx'
state_before: case h.mp.intro.intro.intro.mk
D : GlueData
α : Type u
inst✝ : TopologicalSpace α
J : Type u
U : J → Opens α
i : (ofOpenSubsets U).J
x : ↑(of α)
hx' : x ∈ U i
⊢ (U i).inclusion ⟨x, hx'⟩ ∈ ⋃ i, ↑(U i)
state_after: no goals

tactic: rintro ⟨_, ⟨i, rfl⟩, hx⟩
state_before: case h.mpr
D : GlueData
α : Type u
inst✝ : TopologicalSpace α
J : Type u
U : J → Opens α
x✝ : ↑(of α)
⊢ x✝ ∈ ⋃ i, ↑(U i) → x✝ ∈ Set.range ⇑(fromOpenSubsetsGlue U)
state_after: case h.mpr.intro.intro.intro
D : GlueData
α : Type u
inst✝ : TopologicalSpace α
J : Type u
U : J → Opens α
x✝ : ↑(of α)
i : J
hx : x✝ ∈ (fun i => ↑(U i)) i
⊢ x✝ ∈ Set.range ⇑(fromOpenSubsetsGlue U)

tactic: rename_i x
state_before: case h.mpr.intro.intro.intro
D : GlueData
α : Type u
inst✝ : TopologicalSpace α
J : Type u
U : J → Opens α
x✝ : ↑(of α)
i : J
hx : x✝ ∈ (fun i => ↑(U i)) i
⊢ x✝ ∈ Set.range ⇑(fromOpenSubsetsGlue U)
state_after: case h.mpr.intro.intro.intro
D : GlueData
α : Type u
inst✝ : TopologicalSpace α
J : Type u
U : J → Opens α
x : ↑(of α)
i : J
hx : x ∈ (fun i => ↑(U i)) i
⊢ x ∈ Set.range ⇑(fromOpenSubsetsGlue U)

tactic: exact ⟨(ofOpenSubsets U).toGlueData.ι i ⟨x, hx⟩, ι_fromOpenSubsetsGlue_apply _ _ _⟩
state_before: case h.mpr.intro.intro.intro
D : GlueData
α : Type u
inst✝ : TopologicalSpace α
J : Type u
U : J → Opens α
x : ↑(of α)
i : J
hx : x ∈ (fun i => ↑(U i)) i
⊢ x ∈ Set.range ⇑(fromOpenSubsetsGlue U)
state_after: no goals