Built with Alectryon, running Coq+SerAPI v8.18.0+0.18.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 Limits.Pullback Cubical.PathSquare.Require Export Algebra.Groups.GrpPullback.Require Import Algebra.AbGroups.AbelianGroup.Require Import WildCat.Core.(** * Pullbacks of abelian groups *)SectionAbPullback.(* Variables are named to correspond with Limits.Pullback. *)Context {ABC : AbGroup} (f : B $-> A) (g : C $-> A).
A, B, C: AbGroup f: B $-> A g: C $-> A
Commutative group_sgop
A, B, C: AbGroup f: B $-> A g: C $-> A
Commutative group_sgop
A, B, C: AbGroup f: B $-> A g: C $-> A
forallxy : grp_pullback f g,
group_sgop x y = group_sgop y x
A, B, C: AbGroup f: B $-> A g: C $-> A b: B c: C p: f b = g c d: B e: C q: f d = g e
A, B, C: AbGroup f: B $-> A g: C $-> A b: B c: C p: f b = g c d: B e: C q: f d = g e
{p0 : sg_op b d = sg_op d b &
{q0 : sg_op c e = sg_op e c &
PathSquare (ap f p0) (ap g q0)
((grp_homo_op f b d @
(ap (funy : A => sg_op (f b) y) q @
ap (funx : A => sg_op x (g e)) p)) @
(grp_homo_op g c e)^)
((grp_homo_op f d b @
(ap (funy : A => sg_op (f d) y) p @
ap (funx : A => sg_op x (g c)) q)) @
(grp_homo_op g e c)^)}}
A, B, C: AbGroup f: B $-> A g: C $-> A b: B c: C p: f b = g c d: B e: C q: f d = g e
PathSquare (ap f (commutativity b d))
(ap g (commutativity c e))
((grp_homo_op f b d @
(ap (funy : A => sg_op (f b) y) q @
ap (funx : A => sg_op x (g e)) p)) @
(grp_homo_op g c e)^)
((grp_homo_op f d b @
(ap (funy : A => sg_op (f d) y) p @
ap (funx : A => sg_op x (g c)) q)) @
(grp_homo_op g e c)^)
A, B, C: AbGroup f: B $-> A g: C $-> A b: B c: C p: f b = g c d: B e: C q: f d = g e
ap f (commutativity b d) @
((grp_homo_op f d b @
(ap (funy : A => sg_op (f d) y) p @
ap (funx : A => sg_op x (g c)) q)) @
(grp_homo_op g e c)^) =
((grp_homo_op f b d @
(ap (funy : A => sg_op (f b) y) q @
ap (funx : A => sg_op x (g e)) p)) @
(grp_homo_op g c e)^) @ ap g (commutativity c e)
apply path_ishprop.Defined.Global Instanceisabgroup_ab_pullback
: IsAbGroup (grp_pullback f g) := {}.Definitionab_pullback
: AbGroup := Build_AbGroup (grp_pullback f g) _.(** The corecursion principle is inherited from Groups; use grp_pullback_corec and friends from Groups/GrpPullback.v. *)EndAbPullback.