case refine_1
M : Type ?u.1645
N : Type u_1
μ : M → N → N
r : N → N → Prop
inst✝¹ : CovariantClass M N μ r
inst✝ : Group N
h : Covariant N N (swap fun x x_1 => x * x_1) r
a b c : N
bc : r (swap (fun x x_1 => x * x_1) a b) (swap (fun x x_1 => x * x_1) a c)
⊢ r b c

case refine_2
M : Type ?u.1645
N : Type u_1
μ : M → N → N
r : N → N → Prop
inst✝¹ : CovariantClass M N μ r
inst✝ : Group N
h : Contravariant N N (swap fun x x_1 => x * x_1) r
a b c : N
bc : r b c
⊢ r (swap (fun x x_1 => x * x_1) a b) (swap (fun x x_1 => x * x_1) a c)
M : Type ?u.1645
N : Type u_1
μ : M → N → N
r : N → N → Prop
inst✝¹ : CovariantClass M N μ r
inst✝ : Group N
⊢ Covariant N N (swap fun x x_1 => x * x_1) r ↔ Contravariant N N (swap fun x x_1 => x * x_1) r
refine ⟨fun h a b c bc ↦ ?_, fun h a b c bc ↦ ?_⟩
case refine_1
M : Type ?u.1645
N : Type u_1
μ : M → N → N
r : N → N → Prop
inst✝¹ : CovariantClass M N μ r
inst✝ : Group N
h : Covariant N N (swap fun x x_1 => x * x_1) r
a b c : N
bc : r (swap (fun x x_1 => x * x_1) a b) (swap (fun x x_1 => x * x_1) a c)
⊢ r (b * a * a⁻¹) (c * a * a⁻¹)
case refine_1
M : Type ?u.1645
N : Type u_1
μ : M → N → N
r : N → N → Prop
inst✝¹ : CovariantClass M N μ r
inst✝ : Group N
h : Covariant N N (swap fun x x_1 => x * x_1) r
a b c : N
bc : r (swap (fun x x_1 => x * x_1) a b) (swap (fun x x_1 => x * x_1) a c)
⊢ r b c
rw [← mul_inv_cancel_right b a, ← mul_inv_cancel_right c a]
no goals
case refine_1
M : Type ?u.1645
N : Type u_1
μ : M → N → N
r : N → N → Prop
inst✝¹ : CovariantClass M N μ r
inst✝ : Group N
h : Covariant N N (swap fun x x_1 => x * x_1) r
a b c : N
bc : r (swap (fun x x_1 => x * x_1) a b) (swap (fun x x_1 => x * x_1) a c)
⊢ r (b * a * a⁻¹) (c * a * a⁻¹)
exact h a⁻¹ bc
case refine_2
M : Type ?u.1645
N : Type u_1
μ : M → N → N
r : N → N → Prop
inst✝¹ : CovariantClass M N μ r
inst✝ : Group N
h : Contravariant N N (swap fun x x_1 => x * x_1) r
a b c : N
bc : r (b * a * a⁻¹) (c * a * a⁻¹)
⊢ r (swap (fun x x_1 => x * x_1) a b) (swap (fun x x_1 => x * x_1) a c)
case refine_2
M : Type ?u.1645
N : Type u_1
μ : M → N → N
r : N → N → Prop
inst✝¹ : CovariantClass M N μ r
inst✝ : Group N
h : Contravariant N N (swap fun x x_1 => x * x_1) r
a b c : N
bc : r b c
⊢ r (swap (fun x x_1 => x * x_1) a b) (swap (fun x x_1 => x * x_1) a c)
rw [← mul_inv_cancel_right b a, ← mul_inv_cancel_right c a] at bc
no goals
case refine_2
M : Type ?u.1645
N : Type u_1
μ : M → N → N
r : N → N → Prop
inst✝¹ : CovariantClass M N μ r
inst✝ : Group N
h : Contravariant N N (swap fun x x_1 => x * x_1) r
a b c : N
bc : r (b * a * a⁻¹) (c * a * a⁻¹)
⊢ r (swap (fun x x_1 => x * x_1) a b) (swap (fun x x_1 => x * x_1) a c)
exact h a⁻¹ bc