Theorem: SubmonoidClass.swap_mem_trans
File: Mathlib/GroupTheory/Perm/ClosureSwap.lean

tactic: obtain rfl | hab' := eq_or_ne a b
state_before: G : Type u_1
α : Type u_2
inst✝⁴ : Group G
inst✝³ : MulAction G α
inst✝² : DecidableEq α
a b c : α
C : Type u_3
inst✝¹ : SetLike C (Equiv.Perm α)
inst✝ : SubmonoidClass C (Equiv.Perm α)
M : C
hab : swap a b ∈ M
hbc : swap b c ∈ M
⊢ swap a c ∈ M
state_after: case inl
G : Type u_1
α : Type u_2
inst✝⁴ : Group G
inst✝³ : MulAction G α
inst✝² : DecidableEq α
a c : α
C : Type u_3
inst✝¹ : SetLike C (Equiv.Perm α)
inst✝ : SubmonoidClass C (Equiv.Perm α)
M : C
hab : swap a a ∈ M
hbc : swap a c ∈ M
⊢ swap a c ∈ M

case inr
G : Type u_1
α : Type u_2
inst✝⁴ : Group G
inst✝³ : MulAction G α
inst✝² : DecidableEq α
a b c : α
C : Type u_3
inst✝¹ : SetLike C (Equiv.Perm α)
inst✝ : SubmonoidClass C (Equiv.Perm α)
M : C
hab : swap a b ∈ M
hbc : swap b c ∈ M
hab' : a ≠ b
⊢ swap a c ∈ M

tactic: obtain rfl | hac := eq_or_ne a c
state_before: case inr
G : Type u_1
α : Type u_2
inst✝⁴ : Group G
inst✝³ : MulAction G α
inst✝² : DecidableEq α
a b c : α
C : Type u_3
inst✝¹ : SetLike C (Equiv.Perm α)
inst✝ : SubmonoidClass C (Equiv.Perm α)
M : C
hab : swap a b ∈ M
hbc : swap b c ∈ M
hab' : a ≠ b
⊢ swap a c ∈ M
state_after: case inr.inl
G : Type u_1
α : Type u_2
inst✝⁴ : Group G
inst✝³ : MulAction G α
inst✝² : DecidableEq α
a b : α
C : Type u_3
inst✝¹ : SetLike C (Equiv.Perm α)
inst✝ : SubmonoidClass C (Equiv.Perm α)
M : C
hab : swap a b ∈ M
hab' : a ≠ b
hbc : swap b a ∈ M
⊢ swap a a ∈ M

case inr.inr
G : Type u_1
α : Type u_2
inst✝⁴ : Group G
inst✝³ : MulAction G α
inst✝² : DecidableEq α
a b c : α
C : Type u_3
inst✝¹ : SetLike C (Equiv.Perm α)
inst✝ : SubmonoidClass C (Equiv.Perm α)
M : C
hab : swap a b ∈ M
hbc : swap b c ∈ M
hab' : a ≠ b
hac : a ≠ c
⊢ swap a c ∈ M

tactic: rw [swap_comm, ← swap_mul_swap_mul_swap hab' hac]
state_before: case inr.inr
G : Type u_1
α : Type u_2
inst✝⁴ : Group G
inst✝³ : MulAction G α
inst✝² : DecidableEq α
a b c : α
C : Type u_3
inst✝¹ : SetLike C (Equiv.Perm α)
inst✝ : SubmonoidClass C (Equiv.Perm α)
M : C
hab : swap a b ∈ M
hbc : swap b c ∈ M
hab' : a ≠ b
hac : a ≠ c
⊢ swap a c ∈ M
state_after: case inr.inr
G : Type u_1
α : Type u_2
inst✝⁴ : Group G
inst✝³ : MulAction G α
inst✝² : DecidableEq α
a b c : α
C : Type u_3
inst✝¹ : SetLike C (Equiv.Perm α)
inst✝ : SubmonoidClass C (Equiv.Perm α)
M : C
hab : swap a b ∈ M
hbc : swap b c ∈ M
hab' : a ≠ b
hac : a ≠ c
⊢ swap b c * swap a b * swap b c ∈ M

tactic: exact mul_mem (mul_mem hbc hab) hbc
state_before: case inr.inr
G : Type u_1
α : Type u_2
inst✝⁴ : Group G
inst✝³ : MulAction G α
inst✝² : DecidableEq α
a b c : α
C : Type u_3
inst✝¹ : SetLike C (Equiv.Perm α)
inst✝ : SubmonoidClass C (Equiv.Perm α)
M : C
hab : swap a b ∈ M
hbc : swap b c ∈ M
hab' : a ≠ b
hac : a ≠ c
⊢ swap b c * swap a b * swap b c ∈ M
state_after: no goals

tactic: exact hbc
state_before: case inl
G : Type u_1
α : Type u_2
inst✝⁴ : Group G
inst✝³ : MulAction G α
inst✝² : DecidableEq α
a c : α
C : Type u_3
inst✝¹ : SetLike C (Equiv.Perm α)
inst✝ : SubmonoidClass C (Equiv.Perm α)
M : C
hab : swap a a ∈ M
hbc : swap a c ∈ M
⊢ swap a c ∈ M
state_after: no goals

tactic: exact swap_self a ▸ one_mem M
state_before: case inr.inl
G : Type u_1
α : Type u_2
inst✝⁴ : Group G
inst✝³ : MulAction G α
inst✝² : DecidableEq α
a b : α
C : Type u_3
inst✝¹ : SetLike C (Equiv.Perm α)
inst✝ : SubmonoidClass C (Equiv.Perm α)
M : C
hab : swap a b ∈ M
hab' : a ≠ b
hbc : swap b a ∈ M
⊢ swap a a ∈ M
state_after: no goals