Built with Alectryon, running Coq+SerAPI v8.19.0+0.19.3. Bubbles () indicate interactive fragments: hover for details, tap to reveal contents. Use Ctrl+↑Ctrl+↓ to navigate, Ctrl+🖱️ to focus. On Mac, use ⌘ instead of Ctrl.
[Loading ML file number_string_notation_plugin.cmxs (using legacy method) ... done]
Require Import Pointed.Core.Require Import WildCat.Core Homotopy.ExactSequence.Require Import AbGroups.AbelianGroup AbSES.Core AbGroups.Biproduct.LocalOpen Scope pointed_scope.LocalOpen Scope type_scope.LocalOpen Scope mc_add_scope.(** * The direct sum of short exact sequences *)(** Biproducts of abelian groups preserve exactness. *)
A, E, B, X, F, Y: AbGroup i: A $-> E p: E $-> B ex0: IsExact (Tr (-1)) i p j: X $-> F q: F $-> Y ex1: IsExact (Tr (-1)) j q
IsExact (Tr (-1)) (functor_ab_biprod i j)
(functor_ab_biprod p q)
A, E, B, X, F, Y: AbGroup i: A $-> E p: E $-> B ex0: IsExact (Tr (-1)) i p j: X $-> F q: F $-> Y ex1: IsExact (Tr (-1)) j q
IsExact (Tr (-1)) (functor_ab_biprod i j)
(functor_ab_biprod p q)
A, E, B, X, F, Y: AbGroup i: A $-> E p: E $-> B ex0: IsExact (Tr (-1)) i p j: X $-> F q: F $-> Y ex1: IsExact (Tr (-1)) j q
IsComplex (functor_ab_biprod i j)
(functor_ab_biprod p q)
A, E, B, X, F, Y: AbGroup i: A $-> E p: E $-> B ex0: IsExact (Tr (-1)) i p j: X $-> F q: F $-> Y ex1: IsExact (Tr (-1)) j q
A, E, B, X, F, Y: AbGroup i: A $-> E p: E $-> B ex0: IsExact (Tr (-1)) i p j: X $-> F q: F $-> Y ex1: IsExact (Tr (-1)) j q
IsComplex (functor_ab_biprod i j)
(functor_ab_biprod p q)
A, E, B, X, F, Y: AbGroup i: A $-> E p: E $-> B ex0: IsExact (Tr (-1)) i p j: X $-> F q: F $-> Y ex1: IsExact (Tr (-1)) j q
IsHSet (ab_biprod B Y)
A, E, B, X, F, Y: AbGroup i: A $-> E p: E $-> B ex0: IsExact (Tr (-1)) i p j: X $-> F q: F $-> Y ex1: IsExact (Tr (-1)) j q
functor_ab_biprod p q o* functor_ab_biprod i j ==
pconst
A, E, B, X, F, Y: AbGroup i: A $-> E p: E $-> B ex0: IsExact (Tr (-1)) i p j: X $-> F q: F $-> Y ex1: IsExact (Tr (-1)) j q
functor_ab_biprod p q o* functor_ab_biprod i j ==
pconst
A, E, B, X, F, Y: AbGroup i: A $-> E p: E $-> B ex0: IsExact (Tr (-1)) i p j: X $-> F q: F $-> Y ex1: IsExact (Tr (-1)) j q x: ab_biprod A X
p (i (fst x)) = 0
A, E, B, X, F, Y: AbGroup i: A $-> E p: E $-> B ex0: IsExact (Tr (-1)) i p j: X $-> F q: F $-> Y ex1: IsExact (Tr (-1)) j q x: ab_biprod A X
q (j (snd x)) = 0
A, E, B, X, F, Y: AbGroup i: A $-> E p: E $-> B ex0: IsExact (Tr (-1)) i p j: X $-> F q: F $-> Y ex1: IsExact (Tr (-1)) j q x: ab_biprod A X
p (i (fst x)) = 0
apply ex0.
A, E, B, X, F, Y: AbGroup i: A $-> E p: E $-> B ex0: IsExact (Tr (-1)) i p j: X $-> F q: F $-> Y ex1: IsExact (Tr (-1)) j q x: ab_biprod A X
q (j (snd x)) = 0
apply ex1.
A, E, B, X, F, Y: AbGroup i: A $-> E p: E $-> B ex0: IsExact (Tr (-1)) i p j: X $-> F q: F $-> Y ex1: IsExact (Tr (-1)) j q
ReflectiveSubuniverse.IsConnMap (Tr (-1))
(cxfib
(phomotopy_homotopy_hset
((funx : ab_biprod A X =>
path_prod
((functor_ab_biprod p q
o* functor_ab_biprod i j) x) (pconst x)
((letX0 := cx_isexact inletX1 := pointed_fun X0 in X1 (fst x))
:
fst
((functor_ab_biprod p q
o* functor_ab_biprod i j) x) =
fst (pconst x))
((letX0 := cx_isexact inletX1 := pointed_fun X0 in X1 (snd x))
:
snd
((functor_ab_biprod p q
o* functor_ab_biprod i j) x) =
snd (pconst x)))
:
functor_ab_biprod p q
o* functor_ab_biprod i j == pconst)))
A, E, B, X, F, Y: AbGroup i: A $-> E p: E $-> B ex0: IsExact (Tr (-1)) i p j: X $-> F q: F $-> Y ex1: IsExact (Tr (-1)) j q e: E f: F u: functor_ab_biprod p q (e, f) = pt
A, E, B, X, F, Y: AbGroup i: A $-> E p: E $-> B ex0: IsExact (Tr (-1)) i p j: X $-> F q: F $-> Y ex1: IsExact (Tr (-1)) j q e: E f: F u: functor_ab_biprod p q (e, f) = pt
A, E, B, X, F, Y: AbGroup i: A $-> E p: E $-> B ex0: IsExact (Tr (-1)) i p j: X $-> F q: F $-> Y ex1: IsExact (Tr (-1)) j q e: E f: F u: functor_ab_biprod p q (e, f) = pt U:= (ap fst u, ap snd u): (p e = 0) * (q f = 0)
A, E, B, X, F, Y: AbGroup i: A $-> E p: E $-> B ex0: IsExact (Tr (-1)) i p j: X $-> F q: F $-> Y ex1: IsExact (Tr (-1)) j q e: E f: F u: functor_ab_biprod p q (e, f) = pt U:= (ap fst u, ap snd u): (p e = 0) * (q f = 0) a: Tr (-1) (hfiber i e)
A, E, B, X, F, Y: AbGroup i: A $-> E p: E $-> B ex0: IsExact (Tr (-1)) i p j: X $-> F q: F $-> Y ex1: IsExact (Tr (-1)) j q e: E f: F u: functor_ab_biprod p q (e, f) = pt U:= (ap fst u, ap snd u): (p e = 0) * (q f = 0) a: Tr (-1) (hfiber i e) x: Tr (-1) (hfiber j f)
A, E, B, X, F, Y: AbGroup i: A $-> E p: E $-> B ex0: IsExact (Tr (-1)) i p j: X $-> F q: F $-> Y ex1: IsExact (Tr (-1)) j q e: E f: F u: functor_ab_biprod p q (e, f) = pt U:= (ap fst u, ap snd u): (p e = 0) * (q f = 0) x: hfiber j f a: hfiber i e
A, E, B, X, F, Y: AbGroup i: A $-> E p: E $-> B ex0: IsExact (Tr (-1)) i p j: X $-> F q: F $-> Y ex1: IsExact (Tr (-1)) j q e: E f: F u: functor_ab_biprod p q (e, f) = pt U:= (ap fst u, ap snd u): (p e = 0) * (q f = 0) x: hfiber j f a: hfiber i e
A, E, B, X, F, Y: AbGroup i: A $-> E p: E $-> B ex0: IsExact (Tr (-1)) i p j: X $-> F q: F $-> Y ex1: IsExact (Tr (-1)) j q e: E f: F u: functor_ab_biprod p q (e, f) = pt U:= (ap fst u, ap snd u): (p e = 0) * (q f = 0) x: hfiber j f a: hfiber i e IS:= sg_set (ab_biprod B Y): IsHSet (ab_biprod B Y)
A, E, B, X, F, Y: AbGroup i: A $-> E p: E $-> B ex0: IsExact (Tr (-1)) i p j: X $-> F q: F $-> Y ex1: IsExact (Tr (-1)) j q e: E f: F u: functor_ab_biprod p q (e, f) = pt U:= (ap fst u, ap snd u): (p e = 0) * (q f = 0) x: hfiber j f a: hfiber i e IS:= sg_set (ab_biprod B Y): IsHSet (ab_biprod B Y)
A, E, B, X, F, Y: AbGroup i: A $-> E p: E $-> B ex0: IsExact (Tr (-1)) i p j: X $-> F q: F $-> Y ex1: IsExact (Tr (-1)) j q e: E f: F u: functor_ab_biprod p q (e, f) = pt U:= (ap fst u, ap snd u): (p e = 0) * (q f = 0) x: hfiber j f a: hfiber i e IS:= sg_set (ab_biprod B Y): IsHSet (ab_biprod B Y)
i (a.1 + group_unit) = e
A, E, B, X, F, Y: AbGroup i: A $-> E p: E $-> B ex0: IsExact (Tr (-1)) i p j: X $-> F q: F $-> Y ex1: IsExact (Tr (-1)) j q e: E f: F u: functor_ab_biprod p q (e, f) = pt U:= (ap fst u, ap snd u): (p e = 0) * (q f = 0) x: hfiber j f a: hfiber i e IS:= sg_set (ab_biprod B Y): IsHSet (ab_biprod B Y)
j (group_unit + x.1) = f
A, E, B, X, F, Y: AbGroup i: A $-> E p: E $-> B ex0: IsExact (Tr (-1)) i p j: X $-> F q: F $-> Y ex1: IsExact (Tr (-1)) j q e: E f: F u: functor_ab_biprod p q (e, f) = pt U:= (ap fst u, ap snd u): (p e = 0) * (q f = 0) x: hfiber j f a: hfiber i e IS:= sg_set (ab_biprod B Y): IsHSet (ab_biprod B Y)
i (a.1 + group_unit) = e
A, E, B, X, F, Y: AbGroup i: A $-> E p: E $-> B ex0: IsExact (Tr (-1)) i p j: X $-> F q: F $-> Y ex1: IsExact (Tr (-1)) j q e: E f: F u: functor_ab_biprod p q (e, f) = pt U:= (ap fst u, ap snd u): (p e = 0) * (q f = 0) x: hfiber j f a: hfiber i e IS:= sg_set (ab_biprod B Y): IsHSet (ab_biprod B Y)
i a.1 = e
exact a.2.
A, E, B, X, F, Y: AbGroup i: A $-> E p: E $-> B ex0: IsExact (Tr (-1)) i p j: X $-> F q: F $-> Y ex1: IsExact (Tr (-1)) j q e: E f: F u: functor_ab_biprod p q (e, f) = pt U:= (ap fst u, ap snd u): (p e = 0) * (q f = 0) x: hfiber j f a: hfiber i e IS:= sg_set (ab_biprod B Y): IsHSet (ab_biprod B Y)
j (group_unit + x.1) = f
A, E, B, X, F, Y: AbGroup i: A $-> E p: E $-> B ex0: IsExact (Tr (-1)) i p j: X $-> F q: F $-> Y ex1: IsExact (Tr (-1)) j q e: E f: F u: functor_ab_biprod p q (e, f) = pt U:= (ap fst u, ap snd u): (p e = 0) * (q f = 0) x: hfiber j f a: hfiber i e IS:= sg_set (ab_biprod B Y): IsHSet (ab_biprod B Y)
j x.1 = f
exact x.2.Defined.(** The pointwise direct sum of two short exact sequences. *)Definitionabses_direct_sum `{Funext} {B A B' A' : AbGroup} (E : AbSES B A) (F : AbSES B' A')
: AbSES (ab_biprod B B') (ab_biprod A A')
:= Build_AbSES (ab_biprod E F)
(functor_ab_biprod (inclusion E) (inclusion F))
(functor_ab_biprod (projection E) (projection F))
(functor_ab_biprod_embedding _ _)
(functor_ab_biprod_surjection _ _)
(ab_biprod_exact _ _ _ _).(** For any short exact sequences [E], [E'], [F], [F'], and morphisms [f : E -> E'] and [g : F -> F'] there is a morphism [E + F -> E' + F']. *)
H: Funext A, A', B, B', C, C', D, D': AbGroup E: AbSES B A E': AbSES B' A' F: AbSES D C F': AbSES D' C' f: AbSESMorphism E E' g: AbSESMorphism F F'
AbSESMorphism (abses_direct_sum E F)
(abses_direct_sum E' F')
H: Funext A, A', B, B', C, C', D, D': AbGroup E: AbSES B A E': AbSES B' A' F: AbSES D C F': AbSES D' C' f: AbSESMorphism E E' g: AbSESMorphism F F'
AbSESMorphism (abses_direct_sum E F)
(abses_direct_sum E' F')
H: Funext A, A', B, B', C, C', D, D': AbGroup E: AbSES B A E': AbSES B' A' F: AbSES D C F': AbSES D' C' f: AbSESMorphism E E' g: AbSESMorphism F F'
ab_biprod A C $-> ab_biprod A' C'
H: Funext A, A', B, B', C, C', D, D': AbGroup E: AbSES B A E': AbSES B' A' F: AbSES D C F': AbSES D' C' f: AbSESMorphism E E' g: AbSESMorphism F F'
abses_direct_sum E F $-> abses_direct_sum E' F'
H: Funext A, A', B, B', C, C', D, D': AbGroup E: AbSES B A E': AbSES B' A' F: AbSES D C F': AbSES D' C' f: AbSESMorphism E E' g: AbSESMorphism F F'
ab_biprod B D $-> ab_biprod B' D'
H: Funext A, A', B, B', C, C', D, D': AbGroup E: AbSES B A E': AbSES B' A' F: AbSES D C F': AbSES D' C' f: AbSESMorphism E E' g: AbSESMorphism F F'
inclusion (abses_direct_sum E' F') $o ?component1 ==
?component2 $o inclusion (abses_direct_sum E F)
H: Funext A, A', B, B', C, C', D, D': AbGroup E: AbSES B A E': AbSES B' A' F: AbSES D C F': AbSES D' C' f: AbSESMorphism E E' g: AbSESMorphism F F'
projection (abses_direct_sum E' F') $o ?component2 ==
?component3 $o projection (abses_direct_sum E F)
H: Funext A, A', B, B', C, C', D, D': AbGroup E: AbSES B A E': AbSES B' A' F: AbSES D C F': AbSES D' C' f: AbSESMorphism E E' g: AbSESMorphism F F'
H: Funext A, A', B, B', C, C', D, D': AbGroup E: AbSES B A E': AbSES B' A' F: AbSES D C F': AbSES D' C' f: AbSESMorphism E E' g: AbSESMorphism F F' x: ab_biprod A C
(inclusion (abses_direct_sum E' F') $o
functor_ab_biprod (component1 f) (component1 g)) x =
(functor_ab_biprod (component2 f) (component2 g) $o
inclusion (abses_direct_sum E F)) x
apply path_prod; apply left_square.
H: Funext A, A', B, B', C, C', D, D': AbGroup E: AbSES B A E': AbSES B' A' F: AbSES D C F': AbSES D' C' f: AbSESMorphism E E' g: AbSESMorphism F F'
H: Funext A, A', B, B', C, C', D, D': AbGroup E: AbSES B A E': AbSES B' A' F: AbSES D C F': AbSES D' C' f: AbSESMorphism E E' g: AbSESMorphism F F' x: abses_direct_sum E F
(projection (abses_direct_sum E' F') $o
functor_ab_biprod (component2 f) (component2 g)) x =
(functor_ab_biprod (component3 f) (component3 g) $o
projection (abses_direct_sum E F)) x
apply path_prod; apply right_square.Defined.(** For any short exact sequence [E], there is a morphism [E -> abses_direct_sum E E], where each component is ab_diagonal. *)
H: Funext A, B: AbGroup E: AbSES B A
AbSESMorphism E (abses_direct_sum E E)
H: Funext A, B: AbGroup E: AbSES B A
AbSESMorphism E (abses_direct_sum E E)
H: Funext A, B: AbGroup E: AbSES B A
A $-> ab_biprod A A
H: Funext A, B: AbGroup E: AbSES B A
E $-> abses_direct_sum E E
H: Funext A, B: AbGroup E: AbSES B A
B $-> ab_biprod B B
H: Funext A, B: AbGroup E: AbSES B A
inclusion (abses_direct_sum E E) $o ?component1 ==
?component2 $o inclusion E
H: Funext A, B: AbGroup E: AbSES B A
projection (abses_direct_sum E E) $o ?component2 ==
?component3 $o projection E
H: Funext A, B: AbGroup E: AbSES B A
inclusion (abses_direct_sum E E) $o ab_diagonal ==
ab_diagonal $o inclusion E
H: Funext A, B: AbGroup E: AbSES B A
projection (abses_direct_sum E E) $o ab_diagonal ==
ab_diagonal $o projection E
all: reflexivity.Defined.(** For any short exact sequence [E], there is dually a morphism [abses_direct_sum E E -> E], with each component being the codiagonal. *)
H: Funext A, B: AbGroup E: AbSES B A
AbSESMorphism (abses_direct_sum E E) E
H: Funext A, B: AbGroup E: AbSES B A
AbSESMorphism (abses_direct_sum E E) E
H: Funext A, B: AbGroup E: AbSES B A
ab_biprod A A $-> A
H: Funext A, B: AbGroup E: AbSES B A
abses_direct_sum E E $-> E
H: Funext A, B: AbGroup E: AbSES B A
ab_biprod B B $-> B
H: Funext A, B: AbGroup E: AbSES B A
inclusion E $o ?component1 ==
?component2 $o inclusion (abses_direct_sum E E)
H: Funext A, B: AbGroup E: AbSES B A
projection E $o ?component2 ==
?component3 $o projection (abses_direct_sum E E)
H: Funext A, B: AbGroup E: AbSES B A
inclusion E $o ab_codiagonal ==
ab_codiagonal $o inclusion (abses_direct_sum E E)
H: Funext A, B: AbGroup E: AbSES B A
projection E $o ab_codiagonal ==
ab_codiagonal $o projection (abses_direct_sum E E)
all: intro x; cbn; apply grp_homo_op.Defined.(** There is always a morphism [abses_direct_sum E F -> abses_direct_sum F E] of short exact sequences, for any [E : AbSES B A] and [F : AbSES B' A']. *)
H: Funext A, A', B, B': AbGroup E: AbSES B A F: AbSES B' A'
AbSESMorphism (abses_direct_sum E F)
(abses_direct_sum F E)
H: Funext A, A', B, B': AbGroup E: AbSES B A F: AbSES B' A'
AbSESMorphism (abses_direct_sum E F)
(abses_direct_sum F E)
H: Funext A, A', B, B': AbGroup E: AbSES B A F: AbSES B' A'
ab_biprod A A' $-> ab_biprod A' A
H: Funext A, A', B, B': AbGroup E: AbSES B A F: AbSES B' A'
abses_direct_sum E F $-> abses_direct_sum F E
H: Funext A, A', B, B': AbGroup E: AbSES B A F: AbSES B' A'
ab_biprod B B' $-> ab_biprod B' B
H: Funext A, A', B, B': AbGroup E: AbSES B A F: AbSES B' A'
inclusion (abses_direct_sum F E) $o ?component1 ==
?component2 $o inclusion (abses_direct_sum E F)
H: Funext A, A', B, B': AbGroup E: AbSES B A F: AbSES B' A'
projection (abses_direct_sum F E) $o ?component2 ==
?component3 $o projection (abses_direct_sum E F)
H: Funext A, A', B, B': AbGroup E: AbSES B A F: AbSES B' A'
inclusion (abses_direct_sum F E) $o direct_sum_swap ==
direct_sum_swap $o inclusion (abses_direct_sum E F)
H: Funext A, A', B, B': AbGroup E: AbSES B A F: AbSES B' A'
projection (abses_direct_sum F E) $o direct_sum_swap ==
direct_sum_swap $o projection (abses_direct_sum E F)
all: reflexivity.Defined.(** For [E, F, G : AbSES B A], there is a morphism [(E + F) + G -> (G + F) + E] induced by the above map, where [+] denotes [abses_direct_sum]. *)
H: Funext A, B: AbGroup E, F, G: AbSES B A
AbSESMorphism
(abses_direct_sum (abses_direct_sum E F) G)
(abses_direct_sum (abses_direct_sum G F) E)
H: Funext A, B: AbGroup E, F, G: AbSES B A
AbSESMorphism
(abses_direct_sum (abses_direct_sum E F) G)
(abses_direct_sum (abses_direct_sum G F) E)
H: Funext A, B: AbGroup E, F, G: AbSES B A
ab_biprod (ab_biprod A A) A $->
ab_biprod (ab_biprod A A) A
H: Funext A, B: AbGroup E, F, G: AbSES B A
abses_direct_sum (abses_direct_sum E F) G $->
abses_direct_sum (abses_direct_sum G F) E
H: Funext A, B: AbGroup E, F, G: AbSES B A
ab_biprod (ab_biprod B B) B $->
ab_biprod (ab_biprod B B) B
H: Funext A, B: AbGroup E, F, G: AbSES B A
inclusion (abses_direct_sum (abses_direct_sum G F) E) $o
?component1 ==
?component2 $o
inclusion (abses_direct_sum (abses_direct_sum E F) G)
H: Funext A, B: AbGroup E, F, G: AbSES B A
projection (abses_direct_sum (abses_direct_sum G F) E) $o
?component2 ==
?component3 $o
projection (abses_direct_sum (abses_direct_sum E F) G)
H: Funext A, B: AbGroup E, F, G: AbSES B A
inclusion (abses_direct_sum (abses_direct_sum G F) E) $o
ab_biprod_twist ==
ab_biprod_twist $o
inclusion (abses_direct_sum (abses_direct_sum E F) G)
H: Funext A, B: AbGroup E, F, G: AbSES B A
projection (abses_direct_sum (abses_direct_sum G F) E) $o
ab_biprod_twist ==
ab_biprod_twist $o
projection (abses_direct_sum (abses_direct_sum E F) G)