@@ -247,6 +247,8 @@ by refine {mul := (*), one := 1, inv := has_inv.inv, ..};
247
247
instance {α} [comm_monoid α] : comm_group (units α) :=
248
248
{ mul_comm := λ u₁ u₂, ext $ mul_comm _ _, ..units.group }
249
249
250
+ instance [has_repr α] : has_repr (units α) := ⟨repr ∘ val⟩
251
+
250
252
@[simp] theorem mul_left_inj (a : units α) {b c : α} : (a:α) * b = a * c ↔ b = c :=
251
253
⟨λ h, by simpa using congr_arg ((*) ↑(a⁻¹ : units α)) h, congr_arg _⟩
252
254
@@ -576,6 +578,19 @@ end add_comm_group
576
578
577
579
variables {β : Type *} [group α] [group β]
578
580
581
+ def is_conj (a b : α) := ∃ c : α, c * a * c⁻¹ = b
582
+
583
+ @[refl] lemma is_conj_refl (a : α) : is_conj a a := ⟨1 , by simp⟩
584
+
585
+ @[symm] lemma is_conj_symm (a b : α) : is_conj a b → is_conj b a
586
+ | ⟨c, hc⟩ := ⟨c⁻¹, by simp [hc.symm, mul_assoc]⟩
587
+
588
+ @[trans] lemma is_conj_trans (a b c : α) : is_conj a b → is_conj b c → is_conj a c
589
+ | ⟨c₁, hc₁⟩ ⟨c₂, hc₂⟩ := ⟨c₂ * c₁, by simp [hc₁.symm, hc₂.symm, mul_assoc]⟩
590
+
591
+ @[simp] lemma is_conj_iff_eq {α : Type *} [comm_group α] {a b : α} : is_conj a b ↔ a = b :=
592
+ ⟨λ ⟨c, hc⟩, by rw [← hc, mul_right_comm, mul_inv_self, one_mul], λ h, by rw h⟩
593
+
579
594
/-- Predicate for group homomorphism. -/
580
595
class is_group_hom (f : α → β) : Prop :=
581
596
(mul : ∀ a b : α, f (a * b) = f a * f b)
@@ -598,6 +613,9 @@ instance comp {γ} [group γ] (g : β → γ) [is_group_hom g] :
598
613
g (f (x * y)) = g (f x * f y) : by rw mul f
599
614
... = g (f x) * g (f y) : by rw mul g⟩
600
615
616
+ protected lemma is_conj (f : α → β) [is_group_hom f] {a b : α} : is_conj a b → is_conj (f a) (f b)
617
+ | ⟨c, hc⟩ := ⟨f c, by rw [← is_group_hom.mul f, ← is_group_hom.inv f, ← is_group_hom.mul f, hc]⟩
618
+
601
619
end is_group_hom
602
620
603
621
/-- Predicate for group anti-homomorphism, or a homomorphism
0 commit comments