Theorem: Equiv.Perm.IsCycle.support_congr
File: Mathlib/GroupTheory/Perm/Cycle/Basic.lean

tactic: have : f.support = g.support := by
  refine' le_antisymm h _
  intro z hz
  obtain ⟨x, hx, _⟩ := id hf
  have hx' : g x ≠ x := by rwa [← h' x (mem_support.mpr hx)]
  obtain ⟨m, hm⟩ := hg.exists_pow_eq hx' (mem_support.mp hz)
  have h'' : ∀ x ∈ f.support ∩ g.support, f x = g x := by
    intro x hx
    exact h' x (mem_of_mem_inter_left hx)
  rwa [← hm, ←
    pow_eq_on_of_mem_support h'' _ x
      (mem_inter_of_mem (mem_support.mpr hx) (mem_support.mpr hx')),
    pow_apply_mem_support, mem_support]
state_before: ι : Type ?u.1119536
α : Type u_1
β : Type ?u.1119542
f g : Perm α
x y : α
inst✝¹ : DecidableEq α
inst✝ : Fintype α
hf : IsCycle f
hg : IsCycle g
h : support f ⊆ support g
h' : ∀ (x : α), x ∈ support f → ↑f x = ↑g x
⊢ f = g

tactic: refine' Equiv.Perm.support_congr h _
state_before: ι : Type ?u.1119536
α : Type u_1
β : Type ?u.1119542
f g : Perm α
x y : α
inst✝¹ : DecidableEq α
inst✝ : Fintype α
hf : IsCycle f
hg : IsCycle g
h : support f ⊆ support g
h' : ∀ (x : α), x ∈ support f → ↑f x = ↑g x
this : support f = support g
⊢ f = g

tactic: simpa [← this] using h'
state_before: ι : Type ?u.1119536
α : Type u_1
β : Type ?u.1119542
f g : Perm α
x y : α
inst✝¹ : DecidableEq α
inst✝ : Fintype α
hf : IsCycle f
hg : IsCycle g
h : support f ⊆ support g
h' : ∀ (x : α), x ∈ support f → ↑f x = ↑g x
this : support f = support g
⊢ ∀ (x : α), x ∈ support g → ↑f x = ↑g x

tactic: refine' le_antisymm h _
state_before: ι : Type ?u.1119536
α : Type u_1
β : Type ?u.1119542
f g : Perm α
x y : α
inst✝¹ : DecidableEq α
inst✝ : Fintype α
hf : IsCycle f
hg : IsCycle g
h : support f ⊆ support g
h' : ∀ (x : α), x ∈ support f → ↑f x = ↑g x
⊢ support f = support g

tactic: intro z hz
state_before: ι : Type ?u.1119536
α : Type u_1
β : Type ?u.1119542
f g : Perm α
x y : α
inst✝¹ : DecidableEq α
inst✝ : Fintype α
hf : IsCycle f
hg : IsCycle g
h : support f ⊆ support g
h' : ∀ (x : α), x ∈ support f → ↑f x = ↑g x
⊢ support g ≤ support f

tactic: obtain ⟨x, hx, _⟩ := id hf
state_before: ι : Type ?u.1119536
α : Type u_1
β : Type ?u.1119542
f g : Perm α
x y : α
inst✝¹ : DecidableEq α
inst✝ : Fintype α
hf : IsCycle f
hg : IsCycle g
h : support f ⊆ support g
h' : ∀ (x : α), x ∈ support f → ↑f x = ↑g x
z : α
hz : z ∈ support g
⊢ z ∈ support f

tactic: have hx' : g x ≠ x := by rwa [← h' x (mem_support.mpr hx)]
state_before: case intro.intro
ι : Type ?u.1119536
α : Type u_1
β : Type ?u.1119542
f g : Perm α
x✝ y : α
inst✝¹ : DecidableEq α
inst✝ : Fintype α
hf : IsCycle f
hg : IsCycle g
h : support f ⊆ support g
h' : ∀ (x : α), x ∈ support f → ↑f x = ↑g x
z : α
hz : z ∈ support g
x : α
hx : ↑f x ≠ x
right✝ : ∀ ⦃y : α⦄, ↑f y ≠ y → SameCycle f x y
⊢ z ∈ support f

tactic: obtain ⟨m, hm⟩ := hg.exists_pow_eq hx' (mem_support.mp hz)
state_before: case intro.intro
ι : Type ?u.1119536
α : Type u_1
β : Type ?u.1119542
f g : Perm α
x✝ y : α
inst✝¹ : DecidableEq α
inst✝ : Fintype α
hf : IsCycle f
hg : IsCycle g
h : support f ⊆ support g
h' : ∀ (x : α), x ∈ support f → ↑f x = ↑g x
z : α
hz : z ∈ support g
x : α
hx : ↑f x ≠ x
right✝ : ∀ ⦃y : α⦄, ↑f y ≠ y → SameCycle f x y
hx' : ↑g x ≠ x
⊢ z ∈ support f

tactic: have h'' : ∀ x ∈ f.support ∩ g.support, f x = g x := by
  intro x hx
  exact h' x (mem_of_mem_inter_left hx)
state_before: case intro.intro.intro
ι : Type ?u.1119536
α : Type u_1
β : Type ?u.1119542
f g : Perm α
x✝ y : α
inst✝¹ : DecidableEq α
inst✝ : Fintype α
hf : IsCycle f
hg : IsCycle g
h : support f ⊆ support g
h' : ∀ (x : α), x ∈ support f → ↑f x = ↑g x
z : α
hz : z ∈ support g
x : α
hx : ↑f x ≠ x
right✝ : ∀ ⦃y : α⦄, ↑f y ≠ y → SameCycle f x y
hx' : ↑g x ≠ x
m : ℕ
hm : ↑(g ^ m) x = z
⊢ z ∈ support f

tactic: rwa [← hm, ←
  pow_eq_on_of_mem_support h'' _ x
    (mem_inter_of_mem (mem_support.mpr hx) (mem_support.mpr hx')),
  pow_apply_mem_support, mem_support]
state_before: case intro.intro.intro
ι : Type ?u.1119536
α : Type u_1
β : Type ?u.1119542
f g : Perm α
x✝ y : α
inst✝¹ : DecidableEq α
inst✝ : Fintype α
hf : IsCycle f
hg : IsCycle g
h : support f ⊆ support g
h' : ∀ (x : α), x ∈ support f → ↑f x = ↑g x
z : α
hz : z ∈ support g
x : α
hx : ↑f x ≠ x
right✝ : ∀ ⦃y : α⦄, ↑f y ≠ y → SameCycle f x y
hx' : ↑g x ≠ x
m : ℕ
hm : ↑(g ^ m) x = z
h'' : ∀ (x : α), x ∈ support f ∩ support g → ↑f x = ↑g x
⊢ z ∈ support f

tactic: rwa [← h' x (mem_support.mpr hx)]
state_before: ι : Type ?u.1119536
α : Type u_1
β : Type ?u.1119542
f g : Perm α
x✝ y : α
inst✝¹ : DecidableEq α
inst✝ : Fintype α
hf : IsCycle f
hg : IsCycle g
h : support f ⊆ support g
h' : ∀ (x : α), x ∈ support f → ↑f x = ↑g x
z : α
hz : z ∈ support g
x : α
hx : ↑f x ≠ x
right✝ : ∀ ⦃y : α⦄, ↑f y ≠ y → SameCycle f x y
⊢ ↑g x ≠ x

tactic: intro x hx
state_before: ι : Type ?u.1119536
α : Type u_1
β : Type ?u.1119542
f g : Perm α
x✝ y : α
inst✝¹ : DecidableEq α
inst✝ : Fintype α
hf : IsCycle f
hg : IsCycle g
h : support f ⊆ support g
h' : ∀ (x : α), x ∈ support f → ↑f x = ↑g x
z : α
hz : z ∈ support g
x : α
hx : ↑f x ≠ x
right✝ : ∀ ⦃y : α⦄, ↑f y ≠ y → SameCycle f x y
hx' : ↑g x ≠ x
m : ℕ
hm : ↑(g ^ m) x = z
⊢ ∀ (x : α), x ∈ support f ∩ support g → ↑f x = ↑g x

tactic: exact h' x (mem_of_mem_inter_left hx)
state_before: ι : Type ?u.1119536
α : Type u_1
β : Type ?u.1119542
f g : Perm α
x✝¹ y : α
inst✝¹ : DecidableEq α
inst✝ : Fintype α
hf : IsCycle f
hg : IsCycle g
h : support f ⊆ support g
h' : ∀ (x : α), x ∈ support f → ↑f x = ↑g x
z : α
hz : z ∈ support g
x✝ : α
hx✝ : ↑f x✝ ≠ x✝
right✝ : ∀ ⦃y : α⦄, ↑f y ≠ y → SameCycle f x✝ y
hx' : ↑g x✝ ≠ x✝
m : ℕ
hm : ↑(g ^ m) x✝ = z
x : α
hx : x ∈ support f ∩ support g
⊢ ↑f x = ↑g x