Theorem: borel_eq_generateFrom_of_subbasis
File: Mathlib/MeasureTheory/Constructions/BorelSpace/Basic.lean

tactic: rw [hs] at hu
state_before: α : Type u_1
β : Type ?u.27507
γ : Type ?u.27510
γ₂ : Type ?u.27513
δ : Type ?u.27516
ι : Sort y
s✝ t✝ u✝ : Set α
s : Set (Set α)
t : TopologicalSpace α
inst✝ : SecondCountableTopology α
hs : t = TopologicalSpace.generateFrom s
u : Set α
hu : TopologicalSpace.IsOpen u
⊢ MeasurableSet u

tactic: induction hu
state_before: α : Type u_1
β : Type ?u.27507
γ : Type ?u.27510
γ₂ : Type ?u.27513
δ : Type ?u.27516
ι : Sort y
s✝ t✝ u✝ : Set α
s : Set (Set α)
t : TopologicalSpace α
inst✝ : SecondCountableTopology α
hs : t = TopologicalSpace.generateFrom s
u : Set α
hu : TopologicalSpace.IsOpen u
⊢ MeasurableSet u

tactic: case basic u hu => exact GenerateMeasurable.basic u hu
state_before: case basic
α : Type u_1
β : Type ?u.27507
γ : Type ?u.27510
γ₂ : Type ?u.27513
δ : Type ?u.27516
ι : Sort y
s✝¹ t✝ u✝ : Set α
s : Set (Set α)
t : TopologicalSpace α
inst✝ : SecondCountableTopology α
hs : t = TopologicalSpace.generateFrom s
u s✝ : Set α
a✝ : s✝ ∈ s
⊢ MeasurableSet s✝

case univ
α : Type u_1
β : Type ?u.27507
γ : Type ?u.27510
γ₂ : Type ?u.27513
δ : Type ?u.27516
ι : Sort y
s✝ t✝ u✝ : Set α
s : Set (Set α)
t : TopologicalSpace α
inst✝ : SecondCountableTopology α
hs : t = TopologicalSpace.generateFrom s
u : Set α
⊢ MeasurableSet univ

case inter
α : Type u_1
β : Type ?u.27507
γ : Type ?u.27510
γ₂ : Type ?u.27513
δ : Type ?u.27516
ι : Sort y
s✝¹ t✝¹ u✝ : Set α
s : Set (Set α)
t : TopologicalSpace α
inst✝ : SecondCountableTopology α
hs : t = TopologicalSpace.generateFrom s
u s✝ t✝ : Set α
a✝¹ : GenerateOpen s s✝
a✝ : GenerateOpen s t✝
a_ih✝¹ : MeasurableSet s✝
a_ih✝ : MeasurableSet t✝
⊢ MeasurableSet (s✝ ∩ t✝)

case sUnion
α : Type u_1
β : Type ?u.27507
γ : Type ?u.27510
γ₂ : Type ?u.27513
δ : Type ?u.27516
ι : Sort y
s✝ t✝ u✝ : Set α
s : Set (Set α)
t : TopologicalSpace α
inst✝ : SecondCountableTopology α
hs : t = TopologicalSpace.generateFrom s
u : Set α
S✝ : Set (Set α)
a✝ : ∀ (s_1 : Set α), s_1 ∈ S✝ → GenerateOpen s s_1
a_ih✝ : ∀ (s_1 : Set α), s_1 ∈ S✝ → MeasurableSet s_1
⊢ MeasurableSet (⋃₀ S✝)

tactic: case univ => exact @MeasurableSet.univ α (generateFrom s)
state_before: case univ
α : Type u_1
β : Type ?u.27507
γ : Type ?u.27510
γ₂ : Type ?u.27513
δ : Type ?u.27516
ι : Sort y
s✝ t✝ u✝ : Set α
s : Set (Set α)
t : TopologicalSpace α
inst✝ : SecondCountableTopology α
hs : t = TopologicalSpace.generateFrom s
u : Set α
⊢ MeasurableSet univ

case inter
α : Type u_1
β : Type ?u.27507
γ : Type ?u.27510
γ₂ : Type ?u.27513
δ : Type ?u.27516
ι : Sort y
s✝¹ t✝¹ u✝ : Set α
s : Set (Set α)
t : TopologicalSpace α
inst✝ : SecondCountableTopology α
hs : t = TopologicalSpace.generateFrom s
u s✝ t✝ : Set α
a✝¹ : GenerateOpen s s✝
a✝ : GenerateOpen s t✝
a_ih✝¹ : MeasurableSet s✝
a_ih✝ : MeasurableSet t✝
⊢ MeasurableSet (s✝ ∩ t✝)

case sUnion
α : Type u_1
β : Type ?u.27507
γ : Type ?u.27510
γ₂ : Type ?u.27513
δ : Type ?u.27516
ι : Sort y
s✝ t✝ u✝ : Set α
s : Set (Set α)
t : TopologicalSpace α
inst✝ : SecondCountableTopology α
hs : t = TopologicalSpace.generateFrom s
u : Set α
S✝ : Set (Set α)
a✝ : ∀ (s_1 : Set α), s_1 ∈ S✝ → GenerateOpen s s_1
a_ih✝ : ∀ (s_1 : Set α), s_1 ∈ S✝ → MeasurableSet s_1
⊢ MeasurableSet (⋃₀ S✝)

tactic: case inter s₁ s₂ _ _ hs₁ hs₂ => exact @MeasurableSet.inter α (generateFrom s) _ _ hs₁ hs₂
state_before: case inter
α : Type u_1
β : Type ?u.27507
γ : Type ?u.27510
γ₂ : Type ?u.27513
δ : Type ?u.27516
ι : Sort y
s✝¹ t✝¹ u✝ : Set α
s : Set (Set α)
t : TopologicalSpace α
inst✝ : SecondCountableTopology α
hs : t = TopologicalSpace.generateFrom s
u s✝ t✝ : Set α
a✝¹ : GenerateOpen s s✝
a✝ : GenerateOpen s t✝
a_ih✝¹ : MeasurableSet s✝
a_ih✝ : MeasurableSet t✝
⊢ MeasurableSet (s✝ ∩ t✝)

case sUnion
α : Type u_1
β : Type ?u.27507
γ : Type ?u.27510
γ₂ : Type ?u.27513
δ : Type ?u.27516
ι : Sort y
s✝ t✝ u✝ : Set α
s : Set (Set α)
t : TopologicalSpace α
inst✝ : SecondCountableTopology α
hs : t = TopologicalSpace.generateFrom s
u : Set α
S✝ : Set (Set α)
a✝ : ∀ (s_1 : Set α), s_1 ∈ S✝ → GenerateOpen s s_1
a_ih✝ : ∀ (s_1 : Set α), s_1 ∈ S✝ → MeasurableSet s_1
⊢ MeasurableSet (⋃₀ S✝)

tactic: case
  sUnion f hf ih =>
  rcases isOpen_sUnion_countable f (by rwa [hs]) with ⟨v, hv, vf, vu⟩
  rw [← vu]
  exact @MeasurableSet.sUnion α (generateFrom s) _ hv fun x xv => ih _ (vf xv)
state_before: case sUnion
α : Type u_1
β : Type ?u.27507
γ : Type ?u.27510
γ₂ : Type ?u.27513
δ : Type ?u.27516
ι : Sort y
s✝ t✝ u✝ : Set α
s : Set (Set α)
t : TopologicalSpace α
inst✝ : SecondCountableTopology α
hs : t = TopologicalSpace.generateFrom s
u : Set α
S✝ : Set (Set α)
a✝ : ∀ (s_1 : Set α), s_1 ∈ S✝ → GenerateOpen s s_1
a_ih✝ : ∀ (s_1 : Set α), s_1 ∈ S✝ → MeasurableSet s_1
⊢ MeasurableSet (⋃₀ S✝)

tactic: exact GenerateMeasurable.basic u hu
state_before: α : Type u_1
β : Type ?u.27507
γ : Type ?u.27510
γ₂ : Type ?u.27513
δ : Type ?u.27516
ι : Sort y
s✝ t✝ u✝¹ : Set α
s : Set (Set α)
t : TopologicalSpace α
inst✝ : SecondCountableTopology α
hs : t = TopologicalSpace.generateFrom s
u✝ u : Set α
hu : u ∈ s
⊢ MeasurableSet u

tactic: exact @MeasurableSet.univ α (generateFrom s)
state_before: α : Type u_1
β : Type ?u.27507
γ : Type ?u.27510
γ₂ : Type ?u.27513
δ : Type ?u.27516
ι : Sort y
s✝ t✝ u✝ : Set α
s : Set (Set α)
t : TopologicalSpace α
inst✝ : SecondCountableTopology α
hs : t = TopologicalSpace.generateFrom s
u : Set α
⊢ MeasurableSet univ

tactic: exact @MeasurableSet.inter α (generateFrom s) _ _ hs₁ hs₂
state_before: α : Type u_1
β : Type ?u.27507
γ : Type ?u.27510
γ₂ : Type ?u.27513
δ : Type ?u.27516
ι : Sort y
s✝ t✝ u✝ : Set α
s : Set (Set α)
t : TopologicalSpace α
inst✝ : SecondCountableTopology α
hs : t = TopologicalSpace.generateFrom s
u s₁ s₂ : Set α
a✝¹ : GenerateOpen s s₁
a✝ : GenerateOpen s s₂
hs₁ : MeasurableSet s₁
hs₂ : MeasurableSet s₂
⊢ MeasurableSet (s₁ ∩ s₂)

tactic: rcases isOpen_sUnion_countable f (by rwa [hs]) with ⟨v, hv, vf, vu⟩
state_before: α : Type u_1
β : Type ?u.27507
γ : Type ?u.27510
γ₂ : Type ?u.27513
δ : Type ?u.27516
ι : Sort y
s✝ t✝ u✝ : Set α
s : Set (Set α)
t : TopologicalSpace α
inst✝ : SecondCountableTopology α
hs : t = TopologicalSpace.generateFrom s
u : Set α
f : Set (Set α)
hf : ∀ (s_1 : Set α), s_1 ∈ f → GenerateOpen s s_1
ih : ∀ (s_1 : Set α), s_1 ∈ f → MeasurableSet s_1
⊢ MeasurableSet (⋃₀ f)

tactic: rw [← vu]
state_before: case intro.intro.intro
α : Type u_1
β : Type ?u.27507
γ : Type ?u.27510
γ₂ : Type ?u.27513
δ : Type ?u.27516
ι : Sort y
s✝ t✝ u✝ : Set α
s : Set (Set α)
t : TopologicalSpace α
inst✝ : SecondCountableTopology α
hs : t = TopologicalSpace.generateFrom s
u : Set α
f : Set (Set α)
hf : ∀ (s_1 : Set α), s_1 ∈ f → GenerateOpen s s_1
ih : ∀ (s_1 : Set α), s_1 ∈ f → MeasurableSet s_1
v : Set (Set α)
hv : Set.Countable v
vf : v ⊆ f
vu : ⋃₀ v = ⋃₀ f
⊢ MeasurableSet (⋃₀ f)

tactic: exact @MeasurableSet.sUnion α (generateFrom s) _ hv fun x xv => ih _ (vf xv)
state_before: case intro.intro.intro
α : Type u_1
β : Type ?u.27507
γ : Type ?u.27510
γ₂ : Type ?u.27513
δ : Type ?u.27516
ι : Sort y
s✝ t✝ u✝ : Set α
s : Set (Set α)
t : TopologicalSpace α
inst✝ : SecondCountableTopology α
hs : t = TopologicalSpace.generateFrom s
u : Set α
f : Set (Set α)
hf : ∀ (s_1 : Set α), s_1 ∈ f → GenerateOpen s s_1
ih : ∀ (s_1 : Set α), s_1 ∈ f → MeasurableSet s_1
v : Set (Set α)
hv : Set.Countable v
vf : v ⊆ f
vu : ⋃₀ v = ⋃₀ f
⊢ MeasurableSet (⋃₀ v)

tactic: rwa [hs]
state_before: α : Type u_1
β : Type ?u.27507
γ : Type ?u.27510
γ₂ : Type ?u.27513
δ : Type ?u.27516
ι : Sort y
s✝ t✝ u✝ : Set α
s : Set (Set α)
t : TopologicalSpace α
inst✝ : SecondCountableTopology α
hs : t = TopologicalSpace.generateFrom s
u : Set α
f : Set (Set α)
hf : ∀ (s_1 : Set α), s_1 ∈ f → GenerateOpen s s_1
ih : ∀ (s_1 : Set α), s_1 ∈ f → MeasurableSet s_1
⊢ ∀ (s : Set α), s ∈ f → IsOpen s

tactic: rw [hs]
state_before: α : Type u_1
β : Type ?u.27507
γ : Type ?u.27510
γ₂ : Type ?u.27513
δ : Type ?u.27516
ι : Sort y
s✝ t✝ u✝ : Set α
s : Set (Set α)
t : TopologicalSpace α
inst✝ : SecondCountableTopology α
hs : t = TopologicalSpace.generateFrom s
u : Set α
hu : u ∈ s
⊢ TopologicalSpace.IsOpen u

tactic: exact GenerateOpen.basic _ hu
state_before: α : Type u_1
β : Type ?u.27507
γ : Type ?u.27510
γ₂ : Type ?u.27513
δ : Type ?u.27516
ι : Sort y
s✝ t✝ u✝ : Set α
s : Set (Set α)
t : TopologicalSpace α
inst✝ : SecondCountableTopology α
hs : t = TopologicalSpace.generateFrom s
u : Set α
hu : u ∈ s
⊢ TopologicalSpace.IsOpen u