-- Mathlib/MeasureTheory/Group/FundamentalDomain.lean
theorem image_of_equiv {ν : Measure β} (h : IsFundamentalDomain G s μ) (f : α ≃ β)
    (hf : QuasiMeasurePreserving f.symm ν μ) (e : H ≃ G)
    (hef : ∀ g, Semiconj f (e g • ·) (g • ·)) : IsFundamentalDomain H (f '' s) ν

Proof state:
case intro
G : Type u_1
H : Type u_2
α : Type u_3
β : Type u_4
inst✝⁵ : Group G
inst✝⁴ : Group H
inst✝³ : MulAction G α
inst✝² : MeasurableSpace α
inst✝¹ : MulAction H β
inst✝ : MeasurableSpace β
s : Set α
μ : Measure α
ν : Measure β
h : IsFundamentalDomain G s μ
f : α ≃ β
hf : QuasiMeasurePreserving (⇑f.symm) ν μ
e : H ≃ G
hef : ∀ (g : H), Semiconj (⇑f) (fun x => e g • x) fun x => g • x
g : G
x : α
⊢ f.symm ((fun x => e.symm g • x) (f x)) = (fun x => g • x) (f.symm (f x))

Tactic:
rw [← hef _ _, f.symm_apply_apply, f.symm_apply_apply, e.apply_symm_apply]

Result:
no goals

Proof state:
G : Type u_1
H : Type u_2
α : Type u_3
β : Type u_4
inst✝⁵ : Group G
inst✝⁴ : Group H
inst✝³ : MulAction G α
inst✝² : MeasurableSpace α
inst✝¹ : MulAction H β
inst✝ : MeasurableSpace β
s : Set α
μ : Measure α
ν : Measure β
h : IsFundamentalDomain G s μ
f : α ≃ β
hf : QuasiMeasurePreserving (⇑f.symm) ν μ
e : H ≃ G
hef : ∀ (g : H), Semiconj (⇑f) (fun x => e g • x) fun x => g • x
⊢ IsFundamentalDomain H (⇑f '' s) ν

Tactic:
rw [f.image_eq_preimage]

Result:
G : Type u_1
H : Type u_2
α : Type u_3
β : Type u_4
inst✝⁵ : Group G
inst✝⁴ : Group H
inst✝³ : MulAction G α
inst✝² : MeasurableSpace α
inst✝¹ : MulAction H β
inst✝ : MeasurableSpace β
s : Set α
μ : Measure α
ν : Measure β
h : IsFundamentalDomain G s μ
f : α ≃ β
hf : QuasiMeasurePreserving (⇑f.symm) ν μ
e : H ≃ G
hef : ∀ (g : H), Semiconj (⇑f) (fun x => e g • x) fun x => g • x
⊢ IsFundamentalDomain H (⇑f.symm ⁻¹' s) ν

Proof state:
G : Type u_1
H : Type u_2
α : Type u_3
β : Type u_4
inst✝⁵ : Group G
inst✝⁴ : Group H
inst✝³ : MulAction G α
inst✝² : MeasurableSpace α
inst✝¹ : MulAction H β
inst✝ : MeasurableSpace β
s : Set α
μ : Measure α
ν : Measure β
h : IsFundamentalDomain G s μ
f : α ≃ β
hf : QuasiMeasurePreserving (⇑f.symm) ν μ
e : H ≃ G
hef : ∀ (g : H), Semiconj (⇑f) (fun x => e g • x) fun x => g • x
⊢ IsFundamentalDomain H (⇑f.symm ⁻¹' s) ν

Tactic:
refine h.preimage_of_equiv hf e.symm.bijective fun g x => ?_

Result:
G : Type u_1
H : Type u_2
α : Type u_3
β : Type u_4
inst✝⁵ : Group G
inst✝⁴ : Group H
inst✝³ : MulAction G α
inst✝² : MeasurableSpace α
inst✝¹ : MulAction H β
inst✝ : MeasurableSpace β
s : Set α
μ : Measure α
ν : Measure β
h : IsFundamentalDomain G s μ
f : α ≃ β
hf : QuasiMeasurePreserving (⇑f.symm) ν μ
e : H ≃ G
hef : ∀ (g : H), Semiconj (⇑f) (fun x => e g • x) fun x => g • x
g : G
x : β
⊢ f.symm ((fun x => e.symm g • x) x) = (fun x => g • x) (f.symm x)

Proof state:
G : Type u_1
H : Type u_2
α : Type u_3
β : Type u_4
inst✝⁵ : Group G
inst✝⁴ : Group H
inst✝³ : MulAction G α
inst✝² : MeasurableSpace α
inst✝¹ : MulAction H β
inst✝ : MeasurableSpace β
s : Set α
μ : Measure α
ν : Measure β
h : IsFundamentalDomain G s μ
f : α ≃ β
hf : QuasiMeasurePreserving (⇑f.symm) ν μ
e : H ≃ G
hef : ∀ (g : H), Semiconj (⇑f) (fun x => e g • x) fun x => g • x
g : G
x : β
⊢ f.symm ((fun x => e.symm g • x) x) = (fun x => g • x) (f.symm x)

Tactic:
rcases f.surjective x with ⟨x, rfl⟩

Result:
case intro
G : Type u_1
H : Type u_2
α : Type u_3
β : Type u_4
inst✝⁵ : Group G
inst✝⁴ : Group H
inst✝³ : MulAction G α
inst✝² : MeasurableSpace α
inst✝¹ : MulAction H β
inst✝ : MeasurableSpace β
s : Set α
μ : Measure α
ν : Measure β
h : IsFundamentalDomain G s μ
f : α ≃ β
hf : QuasiMeasurePreserving (⇑f.symm) ν μ
e : H ≃ G
hef : ∀ (g : H), Semiconj (⇑f) (fun x => e g • x) fun x => g • x
g : G
x : α
⊢ f.symm ((fun x => e.symm g • x) (f x)) = (fun x => g • x) (f.symm (f x))