Theorem: MeasurableSet.isClopenable'
File: Mathlib/MeasureTheory/Constructions/Polish.lean

tactic: letI := upgradeStandardBorel α
state_before: α : Type u_1
ι : Type u_2
inst✝¹ : MeasurableSpace α
inst✝ : StandardBorelSpace α
s : Set α
hs : MeasurableSet s
⊢ ∃ x, BorelSpace α ∧ PolishSpace α ∧ IsClosed s ∧ IsOpen s
state_after: α : Type u_1
ι : Type u_2
inst✝¹ : MeasurableSpace α
inst✝ : StandardBorelSpace α
s : Set α
hs : MeasurableSet s
this : UpgradedStandardBorel α := upgradeStandardBorel α
⊢ ∃ x, BorelSpace α ∧ PolishSpace α ∧ IsClosed s ∧ IsOpen s

tactic: obtain ⟨t, hle, ht, s_clopen⟩ := hs.isClopenable
state_before: α : Type u_1
ι : Type u_2
inst✝¹ : MeasurableSpace α
inst✝ : StandardBorelSpace α
s : Set α
hs : MeasurableSet s
this : UpgradedStandardBorel α := upgradeStandardBorel α
⊢ ∃ x, BorelSpace α ∧ PolishSpace α ∧ IsClosed s ∧ IsOpen s
state_after: case intro.intro.intro
α : Type u_1
ι : Type u_2
inst✝¹ : MeasurableSpace α
inst✝ : StandardBorelSpace α
s : Set α
hs : MeasurableSet s
this : UpgradedStandardBorel α := upgradeStandardBorel α
t : TopologicalSpace α
hle : t ≤ UpgradedStandardBorel.toTopologicalSpace
ht : PolishSpace α
s_clopen : IsClosed s ∧ IsOpen s
⊢ ∃ x, BorelSpace α ∧ PolishSpace α ∧ IsClosed s ∧ IsOpen s

tactic: refine ⟨t, ?_, ht, s_clopen⟩
state_before: case intro.intro.intro
α : Type u_1
ι : Type u_2
inst✝¹ : MeasurableSpace α
inst✝ : StandardBorelSpace α
s : Set α
hs : MeasurableSet s
this : UpgradedStandardBorel α := upgradeStandardBorel α
t : TopologicalSpace α
hle : t ≤ UpgradedStandardBorel.toTopologicalSpace
ht : PolishSpace α
s_clopen : IsClosed s ∧ IsOpen s
⊢ ∃ x, BorelSpace α ∧ PolishSpace α ∧ IsClosed s ∧ IsOpen s
state_after: case intro.intro.intro
α : Type u_1
ι : Type u_2
inst✝¹ : MeasurableSpace α
inst✝ : StandardBorelSpace α
s : Set α
hs : MeasurableSet s
this : UpgradedStandardBorel α := upgradeStandardBorel α
t : TopologicalSpace α
hle : t ≤ UpgradedStandardBorel.toTopologicalSpace
ht : PolishSpace α
s_clopen : IsClosed s ∧ IsOpen s
⊢ BorelSpace α

tactic: constructor
state_before: case intro.intro.intro
α : Type u_1
ι : Type u_2
inst✝¹ : MeasurableSpace α
inst✝ : StandardBorelSpace α
s : Set α
hs : MeasurableSet s
this : UpgradedStandardBorel α := upgradeStandardBorel α
t : TopologicalSpace α
hle : t ≤ UpgradedStandardBorel.toTopologicalSpace
ht : PolishSpace α
s_clopen : IsClosed s ∧ IsOpen s
⊢ BorelSpace α
state_after: case intro.intro.intro.measurable_eq
α : Type u_1
ι : Type u_2
inst✝¹ : MeasurableSpace α
inst✝ : StandardBorelSpace α
s : Set α
hs : MeasurableSet s
this : UpgradedStandardBorel α := upgradeStandardBorel α
t : TopologicalSpace α
hle : t ≤ UpgradedStandardBorel.toTopologicalSpace
ht : PolishSpace α
s_clopen : IsClosed s ∧ IsOpen s
⊢ inst✝¹ = borel α

tactic: rw [eq_borel_upgradeStandardBorel α, borel_eq_borel_of_le ht _ hle]
state_before: case intro.intro.intro.measurable_eq
α : Type u_1
ι : Type u_2
inst✝¹ : MeasurableSpace α
inst✝ : StandardBorelSpace α
s : Set α
hs : MeasurableSet s
this : UpgradedStandardBorel α := upgradeStandardBorel α
t : TopologicalSpace α
hle : t ≤ UpgradedStandardBorel.toTopologicalSpace
ht : PolishSpace α
s_clopen : IsClosed s ∧ IsOpen s
⊢ inst✝¹ = borel α
state_after: α : Type u_1
ι : Type u_2
inst✝¹ : MeasurableSpace α
inst✝ : StandardBorelSpace α
s : Set α
hs : MeasurableSet s
this : UpgradedStandardBorel α := upgradeStandardBorel α
t : TopologicalSpace α
hle : t ≤ UpgradedStandardBorel.toTopologicalSpace
ht : PolishSpace α
s_clopen : IsClosed s ∧ IsOpen s
⊢ PolishSpace α

tactic: infer_instance
state_before: α : Type u_1
ι : Type u_2
inst✝¹ : MeasurableSpace α
inst✝ : StandardBorelSpace α
s : Set α
hs : MeasurableSet s
this : UpgradedStandardBorel α := upgradeStandardBorel α
t : TopologicalSpace α
hle : t ≤ UpgradedStandardBorel.toTopologicalSpace
ht : PolishSpace α
s_clopen : IsClosed s ∧ IsOpen s
⊢ PolishSpace α
state_after: no goals