@@ -53,6 +53,12 @@ by subtype_instance
53
53
instance subtype.add_group {s : set β} [is_add_subgroup s] : add_group s :=
54
54
by subtype_instance
55
55
attribute [to_additive subtype.add_group] subtype.group
56
+ attribute [to_additive subtype.add_group._proof_1] subtype.group._proof_1
57
+ attribute [to_additive subtype.add_group._proof_2] subtype.group._proof_2
58
+ attribute [to_additive subtype.add_group._proof_3] subtype.group._proof_3
59
+ attribute [to_additive subtype.add_group._proof_4] subtype.group._proof_4
60
+ attribute [to_additive subtype.add_group._proof_5] subtype.group._proof_5
61
+ attribute [to_additive subtype.add_group.equations._eqn_1] subtype.group.equations._eqn_1
56
62
57
63
instance subtype.comm_group {α : Type *} [comm_group α] {s : set α} [is_subgroup s] : comm_group s :=
58
64
by subtype_instance
@@ -545,11 +551,42 @@ lemma inj_iff_trivial_ker (f : α → β) [is_group_hom f] :
545
551
function.injective f ↔ ker f = trivial α :=
546
552
⟨trivial_ker_of_inj f, inj_of_trivial_ker f⟩
547
553
548
- instance (s : set α) [is_subgroup s] : is_group_hom (subtype.val : s → α) :=
549
- ⟨λ _ _, rfl⟩
550
-
551
554
end is_group_hom
552
555
556
+ instance subtype_val.is_group_hom [group α] {s : set α} [is_subgroup s] :
557
+ is_group_hom (subtype.val : s → α) := { ..subtype_val.is_monoid_hom }
558
+
559
+ instance subtype_val.is_add_group_hom [add_group α] {s : set α} [is_add_subgroup s] :
560
+ is_add_group_hom (subtype.val : s → α) := { ..subtype_val.is_add_monoid_hom }
561
+ attribute [to_additive subtype_val.is_group_hom] subtype_val.is_add_group_hom
562
+
563
+ instance coe.is_group_hom [group α] {s : set α} [is_subgroup s] :
564
+ is_group_hom (coe : s → α) := { ..subtype_val.is_monoid_hom }
565
+
566
+ instance coe.is_add_group_hom [add_group α] {s : set α} [is_add_subgroup s] :
567
+ is_add_group_hom (coe : s → α) :=
568
+ { ..subtype_val.is_add_monoid_hom }
569
+ attribute [to_additive coe.is_group_hom] coe.is_add_group_hom
570
+
571
+ instance subtype_mk.is_group_hom [group α] [group β] {s : set α}
572
+ [is_subgroup s] (f : β → α) [is_group_hom f] (h : ∀ x, f x ∈ s) :
573
+ is_group_hom (λ x, (⟨f x, h x⟩ : s)) := { ..subtype_mk.is_monoid_hom f h }
574
+
575
+ instance subtype_mk.is_add_group_hom [add_group α] [add_group β] {s : set α}
576
+ [is_add_subgroup s] (f : β → α) [is_add_group_hom f] (h : ∀ x, f x ∈ s) :
577
+ is_add_group_hom (λ x, (⟨f x, h x⟩ : s)) :=
578
+ { ..subtype_mk.is_add_monoid_hom f h }
579
+ attribute [to_additive subtype_mk.is_group_hom] subtype_mk.is_add_group_hom
580
+
581
+ instance set_inclusion.is_group_hom [group α] {s t : set α}
582
+ [is_subgroup s] [is_subgroup t] (h : s ⊆ t) : is_group_hom (set.inclusion h) :=
583
+ subtype_mk.is_group_hom _ _
584
+
585
+ instance set_inclusion.is_add_group_hom [add_group α] {s t : set α}
586
+ [is_add_subgroup s] [is_add_subgroup t] (h : s ⊆ t) : is_add_group_hom (set.inclusion h) :=
587
+ subtype_mk.is_add_group_hom _ _
588
+ attribute [to_additive set_inclusion.is_group_hom] set_inclusion.is_add_group_hom
589
+
553
590
section simple_group
554
591
555
592
class simple_group (α : Type *) [group α] : Prop :=
0 commit comments