A <E>double groupoid</E> is a <E>double category</E>
in which all the category structures are groupoids.
There is also a pre-crossed module associated to the double groupoid.
In a double groupoid, as well as objects and arrows we need a set of <E>squares</E>.
A square is bounded by four arrows, two horizontal and two vertical,
and there is a <E>horizontal</E> groupoid structure
and a <E>vertical</E> groupoid structure on these squares.
A square also contains an element of the source group of the
pre-crossed module, and its image under the boundary map
is equal to the boundary of the square.
When printing a square, this element is located at the centre,
<P/>
The double groupoids constructed here are special
in that all four arrows come from the same groupoid.
We call these <E>edge-symmetric</E> double groupoids.
<P/>
This material in this chapter is experimental.
It was started in 2023, in version 2.91,
and extensively revised in 2025, for version 2.95.
Further extensions are likely in due course.
<Section Label="sect-basic-double-groupoids">
<Heading>Constructions for Double Groupoids</Heading>
It is assumed in this chapter that the reader is familiar with constructions
for groupoids given in the <Package>Groupoids</Package> package,
such as <C>SinglePieceBasicDoubleGroupoid</C>.
Such groupoids are <E>basic</E>, in that there is no pre-crossed module
involvement.
In <Package>XMod</Package> the operation <C>SinglePieceDoubleGroupoid</C>
requires a groupoid and a crossed module as input parameters.
<ManSection>
<Oper Name="SinglePieceDoubleGroupoid"
Arg="gpd pxmod" />
<Description>
For an example we take for our groupoid the product of the group
<M>S_3 = \langle (7,8,9), (8,9) \rangle</M>
with the complete graph on <M>[-6 \ldots -1]</M>
and, for our pre-crossed module, the <C>X12</C>,
isomorphic to <M>(D_{12} \to S_3)</M>,
constructed using <Ref Oper="XModByCentralExtension"/>.
The source of <C>X12</C> has generating set
<M>\left\{ g = (11,12,13,14,15,16),~ h = (12,16)(13,15) \right\}</M>.
</Description>
</ManSection>
<Example>
<![CDATA[
gap> gens3 := [ (7,8,9), (8,9) ];;
gap> s3 := Group( gens3 );;
gap> SetName( s3, "s3" );
gap> Gs3 := Groupoid( s3, [-6..-1] );;
gap> SetName( Gs3, "Gs3" );
gap> g := (11,12,13,14,15,16);; h := (12,16)(13,15);;
gap> gend12 := [ g, h ];;
gap> d12 := Group( gend12 );;
gap> SetName( d12, "d12" );
gap> pr12 := GroupHomomorphismByImages( d12, s3, gend12, gens3 );;
gap> X12 := XModByCentralExtension( pr12 );;
gap> SetName( X12, "X12" );
gap> Display( X12 );
Crossed module X12 :-
: Source group d12 has generators:
[ (11,12,13,14,15,16), (12,16)(13,15) ]
: Range group s3 has generators:
[ (7,8,9), (8,9) ]
: Boundary homomorphism maps source generators to:
[ (7,8,9), (8,9) ]
: Action homomorphism maps range generators to automorphisms:
(7,8,9) --> { source gens --> [ (11,12,13,14,15,16), (11,13)(14,16) ] }
(8,9) --> { source gens --> [ (11,16,15,14,13,12), (12,16)(13,15) ] }
These 2 automorphisms generate the group of automorphisms.
<ManSection>
<Oper Name="SquareOfArrows"
Arg="bdy act"/>
<Description>
Let <M>G</M> be a groupoid with object set <M>\Omega</M>
and object group <M>g</M>.
Let <M>\Box</M> be the set of squares with objects from <M>\Omega</M>
at each corner; plus two vertical arrows and two horizontal arrows from Arr<M>(G)</M>.
Further, let <M>\calP = (\partial : S \to R)</M> be a pre-crossed module,
and let <M>m_1 \in S</M> be placed at the centre of the square.
The following picture illustrates the situation where
<M>u_1,v_1,w_1,x_1 \in \Omega</M> and <M>a_1,b_1,c_1,d_1 \in g</M>.
<Display> <!-- \label{square1} \def\labelstyle{\textstyle} -->
<![CDATA[
\vcenter{\xymatrix @=4pc{
u_1 \ar[r]^{a_1} \ar[d]_{b_1}\ar@{}[dr] |{m_1}
& v_1 \ar[d]^{c_1} \\
w_1 \ar[r]_{d_1}
& x_1
}}
]]>
</Display>
We think of the square being <E>based</E> at the bottom, right-hand corner,
<M>x_1</M>.
The <E>boundary</E> of the square is the loop
<M>(x_1, d_1^{-1}b_1^{-1}a_1c_1,x_1) = (x_1,p_1,x_1)</M>.
The <E>boundary condition</E> which <M>m_1</M> has to satisfy
is that <M>\partial m_1 = p_1</M>.
(Beware a possible source of confusion.
In the example code it is convenient of define arrow
<C>a1 := Arrow( Gs3, (7,8), -6, -5 );</C>
whereas, in the description, <M>a_1 = (7,8)</M>.
Similarly for all the other arrows.)
</Description>
</ManSection>
<Example>
<![CDATA[
gap> a1 := Arrow( Gs3, (7,8), -6, -5 );;
gap> b1 := Arrow( Gs3, (7,9), -6, -1 );;
gap> c1 := Arrow( Gs3, (8,9), -5, -3 );;
gap> d1 := Arrow( Gs3, (7,8,9), -1, -3 );;
gap> sq1 := SquareOfArrows( D1, g*h, a1, b1, c1, d1 );
[-6] ------------- (7,8) ------------> [-5]
| |
(7,9) (11,16)(12,15)(13,14) (8,9)
V V
[-1] ------------ (7,8,9) -----------> [-3]
gap> m1 := ElementOfSquare( sq1 );
(11,16)(12,15)(13,14)
gap> UpArrow( sq1 );
[(7,8) : -6 -> -5]
gap> LeftArrow( sq1 );
[(7,9) : -6 -> -1]
gap> RightArrow( sq1 );
[(8,9) : -5 -> -3]
gap> DownArrow( sq1 );
[(7,8,9) : -1 -> -3]
gap> ## check the boundary condition:
gap> bdy1 := Boundary( D1!.prexmod );;
gap> p1:= BoundaryOfSquare( sq1 );
[(7,9) : -3 -> -3]
gap> ImageElm( bdy1, m1 );
(7,9)
]]>
</Example>
<Section Label="sec-basic-dgpds">
<Heading>Conversion of Basic Double Groupoids</Heading>
As mentioned earlier,
double groupoids were introduced in the <Package>Groupoids</Package> package,
but these were <E>basic double groupoids</E>, without any pre-crossed module.
The element of a square was simply its boundary.
Here we introduce an operation which converts such a basic double groupoid
into the more general case considered in this package.
<ManSection>
<Oper Name="EnhancedBasicDoubleGroupoid"
Arg="bdg" />
<Description>
We need to add a pre-crossed module to the definition of a basic
double groupoid.
We choose to add <M>(G \to G)</M> where <M>G</M> is the root group of the
underlying groupoid.
(This is only valid for groupoids which are the direct product
with a complete graph.)
The example is taken from section 7.1 of the
<Package>Groupoids</Package> package,
converting basic <C>B0</C> to <C>D0</C>,
and we check that the same square is produced in each case.
</Description>
</ManSection>
<Example>
<![CDATA[
gap> g2 := (1,2,3,4);; h2 := (1,3);;
gap> gend8 := [ g2, h2 ];;
gap> d8 := Group( gend8 );;
gap> SetName( d8, "d8" );
gap> Gd8 := Groupoid( d8, [-9..-7] );;
gap> SetName( Gd8, "Gd8" );
gap> B0 := SinglePieceBasicDoubleGroupoid( Gd8 );;
gap> B0!.groupoid;
Gd8
gap> B0!.objects;
[ -9 .. -7 ]
gap> a0 := Arrow(Gd8,(),-9,-7);; b0 := Arrow(Gd8,g2,-9,-9);;
gap> c0 := Arrow(Gd8,h2,-7,-8);; d0 := Arrow(Gd8,(2,4),-9,-8);;
gap> bdy0 := d0![2]^-1 * b0![2]^-1 * a0![2] * c0![2];;
gap> bsq0 := SquareOfArrows( B0, bdy0, a0, b0, c0, d0 );
[-9] ---------- () ---------> [-7]
| |
(1,2,3,4) (1,4,3,2) (1,3)
V V
[-9] --------- (2,4) --------> [-8]
A double groupoid square
<Display> <!-- \label{square1} \def\labelstyle{\textstyle} -->
<![CDATA[
\vcenter{\xymatrix @=4pc{
u_1 \ar[r]^{a_1} \ar[d]_{b_1}\ar@{}[dr] |{m}
& v_1 \ar[d]^{c_1} \\
w_1 \ar[r]_{d_1}
& x_1
}}
]]>
</Display>
is <E>commutative</E> if <M>a_1c_1 = b_1d_1</M>,
which means that its boundary is the identity.
So a double groupoid which consists only of commutative squares
must have a pre-crossed module with zero boundary.
Commutative squares compose horizontally and vertically provided only
that they have the correct common arrow.
<ManSection>
<Oper Name="DoubleGroupoidWithZeroBoundary"
Arg="gpd src" />
<Description>
The data for a double groupoid of commutative squares therefore consists of
a groupoid and a source group.
We may use the operation <Ref Oper="PreXModWithTrivialRange"/>
to provide a pre-crossed module.
We take for our example the groupoid <C>Gd8</C> and the pre-crossed module
<C>Q16</C> of section <Ref Sect="sect-precrossed-modules"/>.
We introduce a new right arrow to construct a square which commutes.
</Description>
</ManSection>
<Example>
<![CDATA[
gap> D16 := DoubleGroupoidWithZeroBoundary( Gs3, d16 );;
gap> D16!.prexmod;
[d16->Group( [ () ] )]
gap> e16 := Arrow( Gs3, (7,9,8), -5, -3 );;
gap> sq16 := SquareOfArrows( D16, (12,18)(13,17)(14,16), a1, b1, e16, d1 );
[-6] -------------- (7,8) -------------> [-5]
| |
(7,9) (12,18)(13,17)(14,16) (7,9,8)
V V
[-1] ------------- (7,8,9) ------------> [-3]
]]>
</Example>
</Section>
</Chapter>
¤ Dauer der Verarbeitung: 0.15 Sekunden
(vorverarbeitet)
¤
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung ist noch experimentell.