Theorem: MeasureTheory.MeasurePreserving.preErgodic_of_preErgodic_conjugate
File: Mathlib/Dynamics/Ergodic/Ergodic.lean

tactic: intro s hs₀ hs₁
state_before: α : Type u_1
m : MeasurableSpace α
f : α → α
s : Set α
μ : Measure α
β : Type u_2
m' : MeasurableSpace β
μ' : Measure β
s' : Set β
g : α → β
hg : MeasurePreserving g μ μ'
hf : PreErgodic f μ
f' : β → β
h_comm : g ∘ f = f' ∘ g
⊢ ∀ ⦃s : Set β⦄, MeasurableSet s → f' ⁻¹' s = s → s =ᶠ[ae μ'] ∅ ∨ s =ᶠ[ae μ'] univ
state_after: α : Type u_1
m : MeasurableSpace α
f : α → α
s✝ : Set α
μ : Measure α
β : Type u_2
m' : MeasurableSpace β
μ' : Measure β
s' : Set β
g : α → β
hg : MeasurePreserving g μ μ'
hf : PreErgodic f μ
f' : β → β
h_comm : g ∘ f = f' ∘ g
s : Set β
hs₀ : MeasurableSet s
hs₁ : f' ⁻¹' s = s
⊢ s =ᶠ[ae μ'] ∅ ∨ s =ᶠ[ae μ'] univ

tactic: replace hs₁ : f ⁻¹' (g ⁻¹' s) = g ⁻¹' s := by rw [← preimage_comp, h_comm, preimage_comp, hs₁]
state_before: α : Type u_1
m : MeasurableSpace α
f : α → α
s✝ : Set α
μ : Measure α
β : Type u_2
m' : MeasurableSpace β
μ' : Measure β
s' : Set β
g : α → β
hg : MeasurePreserving g μ μ'
hf : PreErgodic f μ
f' : β → β
h_comm : g ∘ f = f' ∘ g
s : Set β
hs₀ : MeasurableSet s
hs₁ : f' ⁻¹' s = s
⊢ s =ᶠ[ae μ'] ∅ ∨ s =ᶠ[ae μ'] univ
state_after: α : Type u_1
m : MeasurableSpace α
f : α → α
s✝ : Set α
μ : Measure α
β : Type u_2
m' : MeasurableSpace β
μ' : Measure β
s' : Set β
g : α → β
hg : MeasurePreserving g μ μ'
hf : PreErgodic f μ
f' : β → β
h_comm : g ∘ f = f' ∘ g
s : Set β
hs₀ : MeasurableSet s
hs₁ : f ⁻¹' (g ⁻¹' s) = g ⁻¹' s
⊢ s =ᶠ[ae μ'] ∅ ∨ s =ᶠ[ae μ'] univ

tactic: cases' hf.ae_empty_or_univ (hg.measurable hs₀) hs₁ with hs₂ hs₂ <;> [left; right]
state_before: α : Type u_1
m : MeasurableSpace α
f : α → α
s✝ : Set α
μ : Measure α
β : Type u_2
m' : MeasurableSpace β
μ' : Measure β
s' : Set β
g : α → β
hg : MeasurePreserving g μ μ'
hf : PreErgodic f μ
f' : β → β
h_comm : g ∘ f = f' ∘ g
s : Set β
hs₀ : MeasurableSet s
hs₁ : f ⁻¹' (g ⁻¹' s) = g ⁻¹' s
⊢ s =ᶠ[ae μ'] ∅ ∨ s =ᶠ[ae μ'] univ
state_after: case inl.h
α : Type u_1
m : MeasurableSpace α
f : α → α
s✝ : Set α
μ : Measure α
β : Type u_2
m' : MeasurableSpace β
μ' : Measure β
s' : Set β
g : α → β
hg : MeasurePreserving g μ μ'
hf : PreErgodic f μ
f' : β → β
h_comm : g ∘ f = f' ∘ g
s : Set β
hs₀ : MeasurableSet s
hs₁ : f ⁻¹' (g ⁻¹' s) = g ⁻¹' s
hs₂ : g ⁻¹' s =ᶠ[ae μ] ∅
⊢ s =ᶠ[ae μ'] ∅

case inr.h
α : Type u_1
m : MeasurableSpace α
f : α → α
s✝ : Set α
μ : Measure α
β : Type u_2
m' : MeasurableSpace β
μ' : Measure β
s' : Set β
g : α → β
hg : MeasurePreserving g μ μ'
hf : PreErgodic f μ
f' : β → β
h_comm : g ∘ f = f' ∘ g
s : Set β
hs₀ : MeasurableSet s
hs₁ : f ⁻¹' (g ⁻¹' s) = g ⁻¹' s
hs₂ : g ⁻¹' s =ᶠ[ae μ] univ
⊢ s =ᶠ[ae μ'] univ

tactic: rw [← preimage_comp, h_comm, preimage_comp, hs₁]
state_before: α : Type u_1
m : MeasurableSpace α
f : α → α
s✝ : Set α
μ : Measure α
β : Type u_2
m' : MeasurableSpace β
μ' : Measure β
s' : Set β
g : α → β
hg : MeasurePreserving g μ μ'
hf : PreErgodic f μ
f' : β → β
h_comm : g ∘ f = f' ∘ g
s : Set β
hs₀ : MeasurableSet s
hs₁ : f' ⁻¹' s = s
⊢ f ⁻¹' (g ⁻¹' s) = g ⁻¹' s
state_after: no goals

tactic: simpa only [ae_eq_empty, hg.measure_preimage hs₀] using hs₂
state_before: case inl.h
α : Type u_1
m : MeasurableSpace α
f : α → α
s✝ : Set α
μ : Measure α
β : Type u_2
m' : MeasurableSpace β
μ' : Measure β
s' : Set β
g : α → β
hg : MeasurePreserving g μ μ'
hf : PreErgodic f μ
f' : β → β
h_comm : g ∘ f = f' ∘ g
s : Set β
hs₀ : MeasurableSet s
hs₁ : f ⁻¹' (g ⁻¹' s) = g ⁻¹' s
hs₂ : g ⁻¹' s =ᶠ[ae μ] ∅
⊢ s =ᶠ[ae μ'] ∅
state_after: no goals

tactic: simpa only [ae_eq_univ, ← preimage_compl, hg.measure_preimage hs₀.compl] using hs₂
state_before: case inr.h
α : Type u_1
m : MeasurableSpace α
f : α → α
s✝ : Set α
μ : Measure α
β : Type u_2
m' : MeasurableSpace β
μ' : Measure β
s' : Set β
g : α → β
hg : MeasurePreserving g μ μ'
hf : PreErgodic f μ
f' : β → β
h_comm : g ∘ f = f' ∘ g
s : Set β
hs₀ : MeasurableSet s
hs₁ : f ⁻¹' (g ⁻¹' s) = g ⁻¹' s
hs₂ : g ⁻¹' s =ᶠ[ae μ] univ
⊢ s =ᶠ[ae μ'] univ
state_after: no goals