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 Limits.Pullback Cubical.PathSquare.Require Export Algebra.Groups.GrpPullback.Require Import Algebra.AbGroups.AbelianGroup.Require Import WildCat.Core.LocalOpen Scope mc_add_scope.(** * 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 : b + d = d + b &
{q0 : c + e = e + c &
PathSquare (ap f p0) (ap g q0)
(grp_homo_op_agree f g p q)
(grp_homo_op_agree f g q p)}}
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_agree f g p q)
(grp_homo_op_agree f g q p)
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_agree f g q p =
grp_homo_op_agree f g p q @ ap g (commutativity c e)
apply path_ishprop.Defined.Definitionab_pullback : AbGroup := Build_AbGroup (grp_pullback f g) _.(** The corecursion principle is inherited from [Group]; use [grp_pullback_corec] and friends from Groups/GrpPullback.v. *)EndAbPullback.