Theorem: Equiv.Perm.eq_on_support_mem_disjoint
File: Mathlib/GroupTheory/Perm/Support.lean

tactic: induction' l with hd tl IH
state_before: α : Type u_1
inst✝¹ : DecidableEq α
inst✝ : Fintype α
f g : Perm α
l : List (Perm α)
h : f ∈ l
hl : List.Pairwise Disjoint l
⊢ ∀ (x : α), x ∈ support f → ↑f x = ↑(List.prod l) x

tactic: simp at h
state_before: case nil
α : Type u_1
inst✝¹ : DecidableEq α
inst✝ : Fintype α
f g : Perm α
l : List (Perm α)
h✝ : f ∈ l
hl✝ : List.Pairwise Disjoint l
h : f ∈ []
hl : List.Pairwise Disjoint []
⊢ ∀ (x : α), x ∈ support f → ↑f x = ↑(List.prod []) x

tactic: intro x hx
state_before: case cons
α : Type u_1
inst✝¹ : DecidableEq α
inst✝ : Fintype α
f g : Perm α
l : List (Perm α)
h✝ : f ∈ l
hl✝ : List.Pairwise Disjoint l
hd : Perm α
tl : List (Perm α)
IH : f ∈ tl → List.Pairwise Disjoint tl → ∀ (x : α), x ∈ support f → ↑f x = ↑(List.prod tl) x
h : f ∈ hd :: tl
hl : List.Pairwise Disjoint (hd :: tl)
⊢ ∀ (x : α), x ∈ support f → ↑f x = ↑(List.prod (hd :: tl)) x

tactic: rw [List.pairwise_cons] at hl
state_before: case cons
α : Type u_1
inst✝¹ : DecidableEq α
inst✝ : Fintype α
f g : Perm α
l : List (Perm α)
h✝ : f ∈ l
hl✝ : List.Pairwise Disjoint l
hd : Perm α
tl : List (Perm α)
IH : f ∈ tl → List.Pairwise Disjoint tl → ∀ (x : α), x ∈ support f → ↑f x = ↑(List.prod tl) x
h : f ∈ hd :: tl
hl : List.Pairwise Disjoint (hd :: tl)
x : α
hx : x ∈ support f
⊢ ↑f x = ↑(List.prod (hd :: tl)) x

tactic: rw [List.mem_cons] at h
state_before: case cons
α : Type u_1
inst✝¹ : DecidableEq α
inst✝ : Fintype α
f g : Perm α
l : List (Perm α)
h✝ : f ∈ l
hl✝ : List.Pairwise Disjoint l
hd : Perm α
tl : List (Perm α)
IH : f ∈ tl → List.Pairwise Disjoint tl → ∀ (x : α), x ∈ support f → ↑f x = ↑(List.prod tl) x
h : f ∈ hd :: tl
hl : (∀ (a' : Perm α), a' ∈ tl → Disjoint hd a') ∧ List.Pairwise Disjoint tl
x : α
hx : x ∈ support f
⊢ ↑f x = ↑(List.prod (hd :: tl)) x

tactic: rcases h with (rfl | h)
state_before: case cons
α : Type u_1
inst✝¹ : DecidableEq α
inst✝ : Fintype α
f g : Perm α
l : List (Perm α)
h✝ : f ∈ l
hl✝ : List.Pairwise Disjoint l
hd : Perm α
tl : List (Perm α)
IH : f ∈ tl → List.Pairwise Disjoint tl → ∀ (x : α), x ∈ support f → ↑f x = ↑(List.prod tl) x
h : f = hd ∨ f ∈ tl
hl : (∀ (a' : Perm α), a' ∈ tl → Disjoint hd a') ∧ List.Pairwise Disjoint tl
x : α
hx : x ∈ support f
⊢ ↑f x = ↑(List.prod (hd :: tl)) x

tactic: rw [List.prod_cons, mul_apply,
  not_mem_support.mp ((disjoint_prod_right tl hl.left).mem_imp hx)]
state_before: case cons.inl
α : Type u_1
inst✝¹ : DecidableEq α
inst✝ : Fintype α
f g : Perm α
l : List (Perm α)
h : f ∈ l
hl✝ : List.Pairwise Disjoint l
tl : List (Perm α)
IH : f ∈ tl → List.Pairwise Disjoint tl → ∀ (x : α), x ∈ support f → ↑f x = ↑(List.prod tl) x
x : α
hx : x ∈ support f
hl : (∀ (a' : Perm α), a' ∈ tl → Disjoint f a') ∧ List.Pairwise Disjoint tl
⊢ ↑f x = ↑(List.prod (f :: tl)) x

tactic: rw [List.prod_cons, mul_apply, ← IH h hl.right _ hx, eq_comm, ← not_mem_support]
state_before: case cons.inr
α : Type u_1
inst✝¹ : DecidableEq α
inst✝ : Fintype α
f g : Perm α
l : List (Perm α)
h✝ : f ∈ l
hl✝ : List.Pairwise Disjoint l
hd : Perm α
tl : List (Perm α)
IH : f ∈ tl → List.Pairwise Disjoint tl → ∀ (x : α), x ∈ support f → ↑f x = ↑(List.prod tl) x
hl : (∀ (a' : Perm α), a' ∈ tl → Disjoint hd a') ∧ List.Pairwise Disjoint tl
x : α
hx : x ∈ support f
h : f ∈ tl
⊢ ↑f x = ↑(List.prod (hd :: tl)) x

tactic: refine' (hl.left _ h).symm.mem_imp _
state_before: case cons.inr
α : Type u_1
inst✝¹ : DecidableEq α
inst✝ : Fintype α
f g : Perm α
l : List (Perm α)
h✝ : f ∈ l
hl✝ : List.Pairwise Disjoint l
hd : Perm α
tl : List (Perm α)
IH : f ∈ tl → List.Pairwise Disjoint tl → ∀ (x : α), x ∈ support f → ↑f x = ↑(List.prod tl) x
hl : (∀ (a' : Perm α), a' ∈ tl → Disjoint hd a') ∧ List.Pairwise Disjoint tl
x : α
hx : x ∈ support f
h : f ∈ tl
⊢ ¬↑f x ∈ support hd

tactic: simpa using hx
state_before: case cons.inr
α : Type u_1
inst✝¹ : DecidableEq α
inst✝ : Fintype α
f g : Perm α
l : List (Perm α)
h✝ : f ∈ l
hl✝ : List.Pairwise Disjoint l
hd : Perm α
tl : List (Perm α)
IH : f ∈ tl → List.Pairwise Disjoint tl → ∀ (x : α), x ∈ support f → ↑f x = ↑(List.prod tl) x
hl : (∀ (a' : Perm α), a' ∈ tl → Disjoint hd a') ∧ List.Pairwise Disjoint tl
x : α
hx : x ∈ support f
h : f ∈ tl
⊢ ↑f x ∈ support f