This commit is contained in:
Egbert Rijke 2015-12-10 16:36:10 -05:00
parent f4a8a679c6
commit fa25173a38
2 changed files with 38 additions and 10 deletions

View file

@ -54,9 +54,9 @@ namespace group
theorem respect_inv (φ : G₁ →g G₂) (g : G₁) : φ g⁻¹ = (φ g)⁻¹ :=
eq_inv_of_mul_eq_one (!respect_mul⁻¹ ⬝ ap φ !mul.left_inv ⬝ !respect_one)
local attribute Pointed_of_Group [coercion]
definition pmap_of_homomorphism [constructor] (φ : G₁ →g G₂) : G₁ →* G₂ :=
pmap.mk φ !respect_one
--local attribute Pointed_of_Group [coercion]
--definition pmap_of_homomorphism [constructor] (φ : G₁ →g G₂) : G₁ →* G₂ :=
--pmap.mk φ !respect_one
definition homomorphism_eq (p : group_fun φ ~ group_fun φ') : φ = φ' :=
begin
@ -72,10 +72,4 @@ namespace group
definition homomorphism_id [constructor] (G : Group) : G → G :=
homomorphism.mk id (λg h, idp)
-- TODO: maybe define this in more generality for pointed types?
definition kernel [constructor] (φ : G₁ →g G₂) (g : G₁) : hprop := trunctype.mk (φ g = 1) _
end group

View file

@ -8,7 +8,7 @@ Constructions of groups
import .basic hit.set_quotient types.sigma types.list types.sum
open eq algebra is_trunc set_quotient relation sigma sigma.ops prod prod.ops sum list trunc function
open eq algebra is_trunc pi pointed set_quotient relation sigma sigma.ops prod prod.ops sum list trunc function
equiv
set_option class.force_new true
namespace group
@ -597,5 +597,39 @@ namespace group
exact !respect_inv⁻¹}}
end
section kernels
variables {G₁ G₂ : Group}
-- TODO: maybe define this in more generality for pointed types?
definition kernel [constructor] (φ : G₁ →g G₂) (g : G₁) : hprop := trunctype.mk (φ g = 1) _
definition kernel_mul (φ : G₁ →g G₂) (g h : G₁) (H₁ : kernel φ g) (H₂ : kernel φ h) : kernel φ (g *[G₁] h) :=
begin
esimp at *,
exact calc
φ (g * h) = (φ g) * (φ h) : respect_mul
... = 1 * (φ h) : H₁
... = 1 * 1 : H₂
... = 1 : one_mul
end
definition kernel_inv (φ : G₁ →g G₂) (g : G₁) (H : kernel φ g) : kernel φ (g⁻¹) :=
begin
esimp at *,
exact calc
φ g⁻¹ = (φ g)⁻¹ : respect_inv
... = 1⁻¹ : H
... = 1 : one_inv
end
definition kernel_subgroup (φ : G₁ →g G₂) : subgroup_rel G₁ :=
⦃ subgroup_rel,
R := kernel φ,
Rone := respect_one φ,
Rmul := kernel_mul φ,
Rinv := kernel_inv φ
end kernels
end group