@@ -5,64 +5,64 @@ Authors: Kevin Buzzard, Patrick Massot.
5
5
6
6
This file is to a certain extent based on `quotient_module.lean` by Johannes Hölzl.
7
7
-/
8
-
9
-
10
8
import group_theory.coset
11
9
12
- universes u v
10
+ universes u v
13
11
14
12
variables {G : Type u} [group G] (N : set G) [normal_subgroup N] {H : Type v} [group H]
15
13
16
14
local attribute [instance] left_rel normal_subgroup.to_is_subgroup
17
15
18
- definition quotient_group := left_cosets N
16
+ definition quotient_group := left_cosets N
19
17
20
18
local notation ` Q ` := quotient_group N
21
19
22
- instance : group Q := left_cosets.group N
20
+ instance : group Q := left_cosets.group N
23
21
24
22
namespace group.quotient
25
23
26
24
instance inhabited : inhabited Q := ⟨1 ⟩
27
25
28
26
def mk : G → Q := λ g, ⟦g⟧
29
27
30
- instance is_group_hom_quotient_mk : is_group_hom (mk N) := by refine {..}; intros; refl
28
+ instance is_group_hom_quotient_mk : is_group_hom (mk N) := by refine {..}; intros; refl
31
29
32
- def lift (φ : G → H) [Hφ : is_group_hom φ] (HN : ∀x∈N, φ x = 1 ) (q : Q) : H :=
30
+ def lift (φ : G → H) [is_group_hom φ] (HN : ∀x∈N, φ x = 1 ) (q : Q) : H :=
33
31
q.lift_on φ $ assume a b (hab : a⁻¹ * b ∈ N),
34
32
(calc φ a = φ a * 1 : by simp
35
33
... = φ a * φ (a⁻¹ * b) : by rw HN (a⁻¹ * b) hab
36
34
... = φ (a * (a⁻¹ * b)) : by rw is_group_hom.mul φ a (a⁻¹ * b)
37
35
... = φ b : by simp)
38
36
39
- @[simp] lemma lift_mk {φ : G → H} [Hφ : is_group_hom φ] (HN : ∀x∈N, φ x = 1 ) (g : G) :
37
+ @[simp] lemma lift_mk {φ : G → H} [is_group_hom φ] (HN : ∀x∈N, φ x = 1 ) (g : G) :
40
38
lift N φ HN ⟦g⟧ = φ g := rfl
41
39
42
- @[simp] lemma lift_mk' {φ : G → H} [Hφ : is_group_hom φ] (HN : ∀x∈N, φ x = 1 ) (g : G) :
40
+ @[simp] lemma lift_mk' {φ : G → H} [is_group_hom φ] (HN : ∀x∈N, φ x = 1 ) (g : G) :
43
41
lift N φ HN (mk N g) = φ g := rfl
44
42
45
- variables (φ : G → H) [Hφ : is_group_hom φ] (HN : ∀x∈N, φ x = 1 )
46
- include Hφ
43
+ variables (φ : G → H) [is_group_hom φ] (HN : ∀x∈N, φ x = 1 )
44
+
47
45
instance is_group_hom_quotient_lift :
48
- is_group_hom (lift N φ HN) :=
49
- ⟨λ q r, quotient.induction_on₂ q r $ λ a b, show φ (a * b) = φ a * φ b, from is_group_hom.mul φ a b⟩
46
+ is_group_hom (lift N φ HN) :=
47
+ ⟨λ q r, quotient.induction_on₂ q r $ λ a b,
48
+ show φ (a * b) = φ a * φ b, from is_group_hom.mul φ a b⟩
50
49
51
50
open function is_group_hom
52
51
53
52
lemma injective_ker_lift : injective (lift (ker φ) φ $ λ x h, (mem_ker φ).1 h) :=
54
- assume a b, quotient.induction_on₂ a b $ assume a b (h : φ a = φ b), quotient.sound $
55
- show a⁻¹ * b ∈ ker φ, by rw [mem_ker φ, Hφ.mul,←h,is_group_hom.inv φ,inv_mul_self]
53
+ assume a b, quotient.induction_on₂ a b $ assume a b (h : φ a = φ b), quotient.sound $
54
+ show a⁻¹ * b ∈ ker φ, by rw [mem_ker φ,
55
+ is_group_hom.mul φ, ← h, is_group_hom.inv φ, inv_mul_self]
56
56
57
57
end group.quotient
58
58
59
59
namespace group
60
- variables {cG : Type u} [comm_group cG] (cN : set cG) [normal_subgroup cN]
60
+ variables {cG : Type u} [comm_group cG] (cN : set cG) [normal_subgroup cN]
61
61
62
- instance : comm_group (quotient_group cN) :=
63
- { mul_comm := λ a b,quotient.induction_on₂ a b $ λ g h,
64
- show ⟦g * h⟧ = ⟦h * g⟧,
62
+ instance : comm_group (quotient_group cN) :=
63
+ { mul_comm := λ a b, quotient.induction_on₂ a b $ λ g h,
64
+ show ⟦g * h⟧ = ⟦h * g⟧,
65
65
by rw [mul_comm g h],
66
- ..left_cosets.group cN
67
- }
68
- end group
66
+ ..left_cosets.group cN }
67
+
68
+ end group
0 commit comments