Theorem: MeasureTheory.AnalyticSet.preimage
File: Mathlib/MeasureTheory/Constructions/Polish.lean

tactic: rcases analyticSet_iff_exists_polishSpace_range.1 hs with ⟨Z, _, _, g, hg, rfl⟩
state_before: α : Type u_1
ι : Type u_2
inst✝⁴ : TopologicalSpace α
X : Type u_3
Y : Type u_4
inst✝³ : TopologicalSpace X
inst✝² : TopologicalSpace Y
inst✝¹ : PolishSpace X
inst✝ : T2Space Y
s : Set Y
hs : AnalyticSet s
f : X → Y
hf : Continuous f
⊢ AnalyticSet (f ⁻¹' s)
state_after: case intro.intro.intro.intro.intro
α : Type u_1
ι : Type u_2
inst✝⁴ : TopologicalSpace α
X : Type u_3
Y : Type u_4
inst✝³ : TopologicalSpace X
inst✝² : TopologicalSpace Y
inst✝¹ : PolishSpace X
inst✝ : T2Space Y
f : X → Y
hf : Continuous f
Z : Type
w✝¹ : TopologicalSpace Z
w✝ : PolishSpace Z
g : Z → Y
hg : Continuous g
hs : AnalyticSet (range g)
⊢ AnalyticSet (f ⁻¹' range g)

tactic: have : IsClosed {x : X × Z | f x.1 = g x.2} := isClosed_diagonal.preimage (hf.prod_map hg)
state_before: case intro.intro.intro.intro.intro
α : Type u_1
ι : Type u_2
inst✝⁴ : TopologicalSpace α
X : Type u_3
Y : Type u_4
inst✝³ : TopologicalSpace X
inst✝² : TopologicalSpace Y
inst✝¹ : PolishSpace X
inst✝ : T2Space Y
f : X → Y
hf : Continuous f
Z : Type
w✝¹ : TopologicalSpace Z
w✝ : PolishSpace Z
g : Z → Y
hg : Continuous g
hs : AnalyticSet (range g)
⊢ AnalyticSet (f ⁻¹' range g)
state_after: case intro.intro.intro.intro.intro
α : Type u_1
ι : Type u_2
inst✝⁴ : TopologicalSpace α
X : Type u_3
Y : Type u_4
inst✝³ : TopologicalSpace X
inst✝² : TopologicalSpace Y
inst✝¹ : PolishSpace X
inst✝ : T2Space Y
f : X → Y
hf : Continuous f
Z : Type
w✝¹ : TopologicalSpace Z
w✝ : PolishSpace Z
g : Z → Y
hg : Continuous g
hs : AnalyticSet (range g)
this : IsClosed {x | f x.1 = g x.2}
⊢ AnalyticSet (f ⁻¹' range g)

tactic: convert this.analyticSet.image_of_continuous continuous_fst
state_before: case intro.intro.intro.intro.intro
α : Type u_1
ι : Type u_2
inst✝⁴ : TopologicalSpace α
X : Type u_3
Y : Type u_4
inst✝³ : TopologicalSpace X
inst✝² : TopologicalSpace Y
inst✝¹ : PolishSpace X
inst✝ : T2Space Y
f : X → Y
hf : Continuous f
Z : Type
w✝¹ : TopologicalSpace Z
w✝ : PolishSpace Z
g : Z → Y
hg : Continuous g
hs : AnalyticSet (range g)
this : IsClosed {x | f x.1 = g x.2}
⊢ AnalyticSet (f ⁻¹' range g)
state_after: case h.e'_3
α : Type u_1
ι : Type u_2
inst✝⁴ : TopologicalSpace α
X : Type u_3
Y : Type u_4
inst✝³ : TopologicalSpace X
inst✝² : TopologicalSpace Y
inst✝¹ : PolishSpace X
inst✝ : T2Space Y
f : X → Y
hf : Continuous f
Z : Type
w✝¹ : TopologicalSpace Z
w✝ : PolishSpace Z
g : Z → Y
hg : Continuous g
hs : AnalyticSet (range g)
this : IsClosed {x | f x.1 = g x.2}
⊢ f ⁻¹' range g = Prod.fst '' {x | f x.1 = g x.2}

tactic: ext x
state_before: case h.e'_3
α : Type u_1
ι : Type u_2
inst✝⁴ : TopologicalSpace α
X : Type u_3
Y : Type u_4
inst✝³ : TopologicalSpace X
inst✝² : TopologicalSpace Y
inst✝¹ : PolishSpace X
inst✝ : T2Space Y
f : X → Y
hf : Continuous f
Z : Type
w✝¹ : TopologicalSpace Z
w✝ : PolishSpace Z
g : Z → Y
hg : Continuous g
hs : AnalyticSet (range g)
this : IsClosed {x | f x.1 = g x.2}
⊢ f ⁻¹' range g = Prod.fst '' {x | f x.1 = g x.2}
state_after: case h.e'_3.h
α : Type u_1
ι : Type u_2
inst✝⁴ : TopologicalSpace α
X : Type u_3
Y : Type u_4
inst✝³ : TopologicalSpace X
inst✝² : TopologicalSpace Y
inst✝¹ : PolishSpace X
inst✝ : T2Space Y
f : X → Y
hf : Continuous f
Z : Type
w✝¹ : TopologicalSpace Z
w✝ : PolishSpace Z
g : Z → Y
hg : Continuous g
hs : AnalyticSet (range g)
this : IsClosed {x | f x.1 = g x.2}
x : X
⊢ x ∈ f ⁻¹' range g ↔ x ∈ Prod.fst '' {x | f x.1 = g x.2}

tactic: simp [eq_comm]
state_before: case h.e'_3.h
α : Type u_1
ι : Type u_2
inst✝⁴ : TopologicalSpace α
X : Type u_3
Y : Type u_4
inst✝³ : TopologicalSpace X
inst✝² : TopologicalSpace Y
inst✝¹ : PolishSpace X
inst✝ : T2Space Y
f : X → Y
hf : Continuous f
Z : Type
w✝¹ : TopologicalSpace Z
w✝ : PolishSpace Z
g : Z → Y
hg : Continuous g
hs : AnalyticSet (range g)
this : IsClosed {x | f x.1 = g x.2}
x : X
⊢ x ∈ f ⁻¹' range g ↔ x ∈ Prod.fst '' {x | f x.1 = g x.2}
state_after: no goals