redefine direct_sum to use multiplicative groups
This commit is contained in:
parent
3881982774
commit
18ee7ce410
3 changed files with 44 additions and 50 deletions
|
@ -12,32 +12,27 @@ open eq algebra is_trunc set_quotient relation sigma prod sum list trunc functio
|
|||
|
||||
namespace group
|
||||
|
||||
variables {G G' : AddGroup} (H : subgroup_rel G) (N : normal_subgroup_rel G) {g g' h h' k : G}
|
||||
{A B : AddAbGroup}
|
||||
|
||||
variables (X : Set) {l l' : list (X ⊎ X)}
|
||||
|
||||
section
|
||||
|
||||
parameters {I : Set} (Y : I → AddAbGroup)
|
||||
variables {A' : AddAbGroup} {Y' : I → AddAbGroup}
|
||||
parameters {I : Set} (Y : I → AbGroup)
|
||||
variables {A' : AbGroup} {Y' : I → AbGroup}
|
||||
|
||||
definition dirsum_carrier : AddAbGroup := free_ab_group (trunctype.mk (Σi, Y i) _)
|
||||
definition dirsum_carrier : AbGroup := free_ab_group (trunctype.mk (Σi, Y i) _)
|
||||
local abbreviation ι [constructor] := @free_ab_group_inclusion
|
||||
inductive dirsum_rel : dirsum_carrier → Type :=
|
||||
| rmk : Πi y₁ y₂, dirsum_rel (ι ⟨i, y₁⟩ + ι ⟨i, y₂⟩ + -(ι ⟨i, y₁ + y₂⟩))
|
||||
| rmk : Πi y₁ y₂, dirsum_rel (ι ⟨i, y₁⟩ * ι ⟨i, y₂⟩ * (ι ⟨i, y₁ * y₂⟩)⁻¹)
|
||||
|
||||
definition dirsum : AddAbGroup := quotient_ab_group_gen dirsum_carrier (λg, ∥dirsum_rel g∥)
|
||||
definition dirsum : AbGroup := quotient_ab_group_gen dirsum_carrier (λg, ∥dirsum_rel g∥)
|
||||
|
||||
-- definition dirsum_carrier_incl [constructor] (i : I) : Y i →a dirsum_carrier :=
|
||||
-- definition dirsum_carrier_incl [constructor] (i : I) : Y i →g dirsum_carrier :=
|
||||
|
||||
definition dirsum_incl [constructor] (i : I) : Y i →a dirsum :=
|
||||
add_homomorphism.mk (λy, class_of (ι ⟨i, y⟩))
|
||||
definition dirsum_incl [constructor] (i : I) : Y i →g dirsum :=
|
||||
homomorphism.mk (λy, class_of (ι ⟨i, y⟩))
|
||||
begin intro g h, symmetry, apply gqg_eq_of_rel, apply tr, apply dirsum_rel.rmk end
|
||||
|
||||
parameter {Y}
|
||||
definition dirsum.rec {P : dirsum → Type} [H : Πg, is_prop (P g)]
|
||||
(h₁ : Πi (y : Y i), P (dirsum_incl i y)) (h₂ : P 0) (h₃ : Πg h, P g → P h → P (g + h)) :
|
||||
(h₁ : Πi (y : Y i), P (dirsum_incl i y)) (h₂ : P 1) (h₃ : Πg h, P g → P h → P (g * h)) :
|
||||
Πg, P g :=
|
||||
begin
|
||||
refine @set_quotient.rec_prop _ _ _ H _,
|
||||
|
@ -49,42 +44,42 @@ namespace group
|
|||
exact h₃ _ _ (h₁ i y) ih,
|
||||
induction v with i y,
|
||||
refine h₃ (gqg_map _ _ (class_of [inr ⟨i, y⟩])) _ _ ih,
|
||||
refine transport P _ (h₁ i (-y)),
|
||||
refine transport P _ (h₁ i y⁻¹),
|
||||
refine _ ⬝ !one_mul,
|
||||
refine _ ⬝ ap (λx, mul x _) (to_respect_zero (dirsum_incl i)),
|
||||
apply gqg_eq_of_rel',
|
||||
apply tr, esimp,
|
||||
refine transport dirsum_rel _ (dirsum_rel.rmk i (-y) y),
|
||||
rewrite [add.left_inv, add.assoc],
|
||||
refine transport dirsum_rel _ (dirsum_rel.rmk i y⁻¹ y),
|
||||
rewrite [mul.left_inv, mul.assoc],
|
||||
end
|
||||
|
||||
definition dirsum_homotopy {φ ψ : dirsum →a A'}
|
||||
definition dirsum_homotopy {φ ψ : dirsum →g A'}
|
||||
(h : Πi (y : Y i), φ (dirsum_incl i y) = ψ (dirsum_incl i y)) : φ ~ ψ :=
|
||||
begin
|
||||
refine dirsum.rec _ _ _,
|
||||
exact h,
|
||||
refine !to_respect_zero ⬝ !to_respect_zero⁻¹,
|
||||
intro g₁ g₂ h₁ h₂, rewrite [+ to_respect_add', h₁, h₂]
|
||||
intro g₁ g₂ h₁ h₂, rewrite [* to_respect_mul, h₁, h₂]
|
||||
end
|
||||
|
||||
definition dirsum_elim_resp_quotient (f : Πi, Y i →a A') (g : dirsum_carrier)
|
||||
definition dirsum_elim_resp_quotient (f : Πi, Y i →g A') (g : dirsum_carrier)
|
||||
(r : ∥dirsum_rel g∥) : free_ab_group_elim (λv, f v.1 v.2) g = 1 :=
|
||||
begin
|
||||
induction r with r, induction r,
|
||||
rewrite [to_respect_add, to_respect_neg, to_respect_add, ▸*, ↑foldl, +one_mul,
|
||||
to_respect_add'], apply mul.right_inv
|
||||
rewrite [to_respect_mul, to_respect_inv, to_respect_mul, ▸*, ↑foldl, *one_mul,
|
||||
to_respect_mul], apply mul.right_inv
|
||||
end
|
||||
|
||||
definition dirsum_elim [constructor] (f : Πi, Y i →a A') : dirsum →a A' :=
|
||||
definition dirsum_elim [constructor] (f : Πi, Y i →g A') : dirsum →g A' :=
|
||||
gqg_elim _ (free_ab_group_elim (λv, f v.1 v.2)) (dirsum_elim_resp_quotient f)
|
||||
|
||||
definition dirsum_elim_compute (f : Πi, Y i →a A') (i : I) :
|
||||
definition dirsum_elim_compute (f : Πi, Y i →g A') (i : I) :
|
||||
dirsum_elim f ∘g dirsum_incl i ~ f i :=
|
||||
begin
|
||||
intro g, apply zero_add
|
||||
intro g, apply one_mul
|
||||
end
|
||||
|
||||
definition dirsum_elim_unique (f : Πi, Y i →a A') (k : dirsum →a A')
|
||||
definition dirsum_elim_unique (f : Πi, Y i →g A') (k : dirsum →g A')
|
||||
(H : Πi, k ∘g dirsum_incl i ~ f i) : k ~ dirsum_elim f :=
|
||||
begin
|
||||
apply gqg_elim_unique,
|
||||
|
@ -94,12 +89,12 @@ namespace group
|
|||
|
||||
end
|
||||
|
||||
variables {I J : Set} {Y Y' Y'' : I → AddAbGroup}
|
||||
variables {I J : Set} {Y Y' Y'' : I → AbGroup}
|
||||
|
||||
definition dirsum_functor [constructor] (f : Πi, Y i →a Y' i) : dirsum Y →a dirsum Y' :=
|
||||
definition dirsum_functor [constructor] (f : Πi, Y i →g Y' i) : dirsum Y →g dirsum Y' :=
|
||||
dirsum_elim (λi, dirsum_incl Y' i ∘g f i)
|
||||
|
||||
theorem dirsum_functor_compose (f' : Πi, Y' i →a Y'' i) (f : Πi, Y i →a Y' i) :
|
||||
theorem dirsum_functor_compose (f' : Πi, Y' i →g Y'' i) (f : Πi, Y i →g Y' i) :
|
||||
dirsum_functor f' ∘a dirsum_functor f ~ dirsum_functor (λi, f' i ∘a f i) :=
|
||||
begin
|
||||
apply dirsum_homotopy,
|
||||
|
@ -107,29 +102,29 @@ namespace group
|
|||
end
|
||||
|
||||
variable (Y)
|
||||
definition dirsum_functor_gid : dirsum_functor (λi, aid (Y i)) ~ aid (dirsum Y) :=
|
||||
definition dirsum_functor_gid : dirsum_functor (λi, gid (Y i)) ~ gid (dirsum Y) :=
|
||||
begin
|
||||
apply dirsum_homotopy,
|
||||
intro i y, reflexivity,
|
||||
end
|
||||
variable {Y}
|
||||
|
||||
definition dirsum_functor_add (f f' : Πi, Y i →a Y' i) :
|
||||
homomorphism_add (dirsum_functor f) (dirsum_functor f') ~
|
||||
dirsum_functor (λi, homomorphism_add (f i) (f' i)) :=
|
||||
definition dirsum_functor_mul (f f' : Πi, Y i →g Y' i) :
|
||||
homomorphism_mul (dirsum_functor f) (dirsum_functor f') ~
|
||||
dirsum_functor (λi, homomorphism_mul (f i) (f' i)) :=
|
||||
begin
|
||||
apply dirsum_homotopy,
|
||||
intro i y, esimp, exact sorry
|
||||
end
|
||||
|
||||
definition dirsum_functor_homotopy {f f' : Πi, Y i →a Y' i} (p : f ~2 f') :
|
||||
definition dirsum_functor_homotopy {f f' : Πi, Y i →g Y' i} (p : f ~2 f') :
|
||||
dirsum_functor f ~ dirsum_functor f' :=
|
||||
begin
|
||||
apply dirsum_homotopy,
|
||||
intro i y, exact sorry
|
||||
end
|
||||
|
||||
definition dirsum_functor_left [constructor] (f : J → I) : dirsum (Y ∘ f) →a dirsum Y :=
|
||||
definition dirsum_functor_left [constructor] (f : J → I) : dirsum (Y ∘ f) →g dirsum Y :=
|
||||
dirsum_elim (λj, dirsum_incl Y (f j))
|
||||
|
||||
end group
|
||||
|
|
|
@ -391,7 +391,7 @@ dirsum_functor (λi, smul_homomorphism (N i) r)
|
|||
definition dirsum_smul_right_distrib (r s : R) (n : dirsum' N) :
|
||||
dirsum_smul (r + s) n = dirsum_smul r n + dirsum_smul s n :=
|
||||
begin
|
||||
refine dirsum_functor_homotopy _ n ⬝ !dirsum_functor_add⁻¹,
|
||||
refine dirsum_functor_homotopy _ n ⬝ !dirsum_functor_mul⁻¹,
|
||||
intro i ni, exact to_smul_right_distrib r s ni
|
||||
end
|
||||
|
||||
|
|
|
@ -6,29 +6,28 @@ namespace group
|
|||
|
||||
section
|
||||
|
||||
parameters (A : @trunctype.mk 0 ℕ _ → AddAbGroup) (f : Πi , A i → A (i + 1))
|
||||
variables {A' : AddAbGroup}
|
||||
parameters (A : @trunctype.mk 0 ℕ _ → AbGroup) (f : Πi , A i → A (i + 1))
|
||||
variables {A' : AbGroup}
|
||||
|
||||
definition seq_colim_carrier : AddAbGroup := dirsum A
|
||||
definition seq_colim_carrier : AbGroup := dirsum A
|
||||
inductive seq_colim_rel : seq_colim_carrier → Type :=
|
||||
| rmk : Πi a, seq_colim_rel ((dirsum_incl A i a) - (dirsum_incl A (i + 1) (f i a)))
|
||||
|
||||
definition seq_colim : AddAbGroup := quotient_ab_group_gen seq_colim_carrier (λa, ∥seq_colim_rel a∥)
|
||||
|
||||
definition seq_colim_incl [constructor] (i : ℕ) : A i →a seq_colim :=
|
||||
| rmk : Πi a, seq_colim_rel ((dirsum_incl A i a) * (dirsum_incl A (i + 1) (f i a))⁻¹)
|
||||
|
||||
definition seq_colim : AbGroup := quotient_ab_group_gen seq_colim_carrier (λa, ∥seq_colim_rel a∥)
|
||||
|
||||
definition seq_colim_incl [constructor] (i : ℕ) : A i →g seq_colim :=
|
||||
qg_map _ ∘g dirsum_incl A i
|
||||
|
||||
definition seq_colim_quotient (h : Πi, A i →a A') (k : Πi a, h i a = h (i + 1) (f i a))
|
||||
(v : seq_colim_carrier) (r : ∥seq_colim_rel v∥) : dirsum_elim h v = 0 :=
|
||||
definition seq_colim_quotient (h : Πi, A i →g A') (k : Πi a, h i a = h (i + 1) (f i a))
|
||||
(v : seq_colim_carrier) (r : ∥seq_colim_rel v∥) : dirsum_elim h v = 1 :=
|
||||
begin
|
||||
induction r with r, induction r,
|
||||
induction r with r, induction r, exact sorry
|
||||
end
|
||||
|
||||
definition seq_colim_elim [constructor] (h : Πi, A i →a A')
|
||||
(k : Πi a, h i a = h (i + 1) (f i a)) : seq_colim →a A' :=
|
||||
definition seq_colim_elim [constructor] (h : Πi, A i →g A')
|
||||
(k : Πi a, h i a = h (i + 1) (f i a)) : seq_colim →g A' :=
|
||||
gqg_elim _ (dirsum_elim h) (seq_colim_quotient h k)
|
||||
|
||||
end
|
||||
|
||||
end group
|
||||
|
||||
|
|
Loading…
Reference in a new issue