Skip to content
This repository was archived by the owner on Jul 24, 2024. It is now read-only.

Commit b11f8e7

Browse files
committed
refactor(algebra/order/group): unify instances (#14705)
Drop `group.covariant_class_le.to_contravariant_class_le` etc in favor of `group.covconv` (now an instance) and a new similar instance `group.covconv_swap`.
1 parent 2b46992 commit b11f8e7

File tree

2 files changed

+18
-28
lines changed

2 files changed

+18
-28
lines changed

src/algebra/covariant_and_contravariant.lean

Lines changed: 18 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -142,11 +142,27 @@ begin
142142
exact h a⁻¹ bc }
143143
end
144144

145-
@[to_additive]
146-
lemma group.covconv [group N] [covariant_class N N (*) r] :
145+
@[priority 100, to_additive]
146+
instance group.covconv [group N] [covariant_class N N (*) r] :
147147
contravariant_class N N (*) r :=
148148
⟨group.covariant_iff_contravariant.mp covariant_class.elim⟩
149149

150+
@[to_additive]
151+
lemma group.covariant_swap_iff_contravariant_swap [group N] :
152+
covariant N N (swap (*)) r ↔ contravariant N N (swap (*)) r :=
153+
begin
154+
refine ⟨λ h a b c bc, _, λ h a b c bc, _⟩,
155+
{ rw [← mul_inv_cancel_right b a, ← mul_inv_cancel_right c a],
156+
exact h a⁻¹ bc },
157+
{ rw [← mul_inv_cancel_right b a, ← mul_inv_cancel_right c a] at bc,
158+
exact h a⁻¹ bc }
159+
end
160+
161+
@[priority 100, to_additive]
162+
instance group.covconv_swap [group N] [covariant_class N N (swap (*)) r] :
163+
contravariant_class N N (swap (*)) r :=
164+
⟨group.covariant_swap_iff_contravariant_swap.mp covariant_class.elim⟩
165+
150166
section is_trans
151167
variables [is_trans N r] (m n : M) {a b c d : N}
152168

src/algebra/order/group.lean

Lines changed: 0 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -24,32 +24,6 @@ open function
2424
universe u
2525
variable {α : Type u}
2626

27-
@[to_additive]
28-
instance group.covariant_class_le.to_contravariant_class_le
29-
[group α] [has_le α] [covariant_class α α (*) (≤)] : contravariant_class α α (*) (≤) :=
30-
group.covconv
31-
32-
@[to_additive]
33-
instance group.swap.covariant_class_le.to_contravariant_class_le [group α] [has_le α]
34-
[covariant_class α α (swap (*)) (≤)] : contravariant_class α α (swap (*)) (≤) :=
35-
{ elim := λ a b c bc, calc b = b * a * a⁻¹ : eq_mul_inv_of_mul_eq rfl
36-
... ≤ c * a * a⁻¹ : mul_le_mul_right' bc a⁻¹
37-
... = c : mul_inv_eq_of_eq_mul rfl }
38-
39-
@[to_additive]
40-
instance group.covariant_class_lt.to_contravariant_class_lt
41-
[group α] [has_lt α] [covariant_class α α (*) (<)] : contravariant_class α α (*) (<) :=
42-
{ elim := λ a b c bc, calc b = a⁻¹ * (a * b) : eq_inv_mul_of_mul_eq rfl
43-
... < a⁻¹ * (a * c) : mul_lt_mul_left' bc a⁻¹
44-
... = c : inv_mul_cancel_left a c }
45-
46-
@[to_additive]
47-
instance group.swap.covariant_class_lt.to_contravariant_class_lt [group α] [has_lt α]
48-
[covariant_class α α (swap (*)) (<)] : contravariant_class α α (swap (*)) (<) :=
49-
{ elim := λ a b c bc, calc b = b * a * a⁻¹ : eq_mul_inv_of_mul_eq rfl
50-
... < c * a * a⁻¹ : mul_lt_mul_right' bc a⁻¹
51-
... = c : mul_inv_eq_of_eq_mul rfl }
52-
5327
/-- An ordered additive commutative group is an additive commutative group
5428
with a partial order in which addition is strictly monotone. -/
5529
@[protect_proj, ancestor add_comm_group partial_order]

0 commit comments

Comments
 (0)