<p>A <em>double groupoid</em> is a <em>double category</em> 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 <em>squares</em>. A square is bounded by four arrows, two horizontal and two vertical, and there is a <em>horizontal</em> groupoid structure and a <em>vertical</em> 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>
<p>The double groupoids constructed here are special in that all four arrows come from the same groupoid. We call these <em>edge-symmetric</em> double groupoids.</p>
<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.</p>
<h4>11.1 <span class="Heading">Constructions for Double Groupoids</span></h4>
<p>It is assumed in this chapter that the reader is familiar with constructions for groupoids given in the <strong class="pkg">Groupoids</strong> package, such as <code class="code">SinglePieceBasicDoubleGroupoid</code>. Such groupoids are <em>basic</em>, in that there is no pre-crossed module involvement. In <strong class="pkg">XMod</strong> the operation <code class="code">SinglePieceDoubleGroupoid</code> requires a groupoid and a crossed module as input parameters.</p>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ SinglePieceDoubleGroupoid</code>( <var class="Arg">gpd</var>, <var class="Arg">pxmod</var> )</td><td class="tdright">( operation )</td></tr></table></div>
<p>For an example we take for our groupoid the product of the group <span class="SimpleMath">\(S_3 = \langle (7,8,9), (8,9) \rangle\)</span> with the complete graph on <span class="SimpleMath">\([-6 \ldots -1]\)</span> and, for our pre-crossed module, the <code class="code">X12</code>, isomorphic to <span class="SimpleMath">\((D_{12} \to S_3)\)</span>, constructed using <code class="func">XModByCentralExtension</code> (<a href="chap2_mj.html#X7D0F6FAA7AF69844"><span class="RefLink">2.1-5</span></a>). The source of <code class="code">X12</code> has generating set <span class="SimpleMath">\(\left\{ g = (11,12,13,14,15,16),~ h = (12,16)(13,15) \right\}\)</span>.</p>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ SquareOfArrows</code>( <var class="Arg">bdy</var>, <var class="Arg">act</var> )</td><td class="tdright">( operation )</td></tr></table></div>
<p>Let <span class="SimpleMath">\(G\)</span> be a groupoid with object set <span class="SimpleMath">\(\Omega\)</span> and object group <span class="SimpleMath">\(g\)</span>. Let <span class="SimpleMath">\(\Box\)</span> be the set of squares with objects from <span class="SimpleMath">\(\Omega\)</span> at each corner; plus two vertical arrows and two horizontal arrows from Arr<span class="SimpleMath">\((G)\)</span>. Further, let <span class="SimpleMath">\(\calP = (\partial : S \to R)\)</span> be a pre-crossed module, and let <span class="SimpleMath">\(m_1 \in S\)</span> be placed at the centre of the square. The following picture illustrates the situation where <span class="SimpleMath">\(u_1,v_1,w_1,x_1 \in \Omega\)</span> and <span class="SimpleMath">\(a_1,b_1,c_1,d_1 \in g\)</span>.</p>
<p>We think of the square being <em>based</em> at the bottom, right-hand corner, <span class="SimpleMath">\(x_1\)</span>. The <em>boundary</em> of the square is the loop <span class="SimpleMath">\((x_1, d_1^{-1}b_1^{-1}a_1c_1,x_1) = (x_1,p_1,x_1)\)</span>. The <em>boundary condition</em> which <span class="SimpleMath">\(m_1\)</span> has to satisfy is that <span class="SimpleMath">\(\partial m_1 = p_1\)</span>. (Beware a possible source of confusion. In the example code it is convenient of define arrow <code class="code">a1 := Arrow( Gs3, (7,8), -6, -5 );</code> whereas, in the description, <span class="SimpleMath">\(a_1 = (7,8)\)</span>. Similarly for all the other arrows.)</p>
<p>we have to move <span class="SimpleMath">\(m_1\)</span>, based at <span class="SimpleMath">\(x_1\)</span>, to the new base <span class="SimpleMath">\(x_2\)</span>, and we do this by using the action of the pre-crossed module of <span class="SimpleMath">\(d_2\)</span> on <span class="SimpleMath">\(m_1\)</span>. Notice that the boundary condition for the product is satisfied, since the first pre-crossed module axiom applies:</p>
<h4>11.2 <span class="Heading">Conversion of Basic Double Groupoids</span></h4>
<p>As mentioned earlier, double groupoids were introduced in the <strong class="pkg">Groupoids</strong> package, but these were <em>basic double groupoids</em>, 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.</p>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ EnhancedBasicDoubleGroupoid</code>( <var class="Arg">bdg</var> )</td><td class="tdright">( operation )</td></tr></table></div>
<p>We need to add a pre-crossed module to the definition of a basic double groupoid. We choose to add <span class="SimpleMath">\((G \to G)\)</span> where <span class="SimpleMath">\(G\)</span> 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 <strong class="pkg">Groupoids</strong> package, converting basic <code class="code">B0</code> to <code class="code">D0</code>, and we check that the same square is produced in each case.</p>
<p>is <em>commutative</em> if <span class="SimpleMath">\(a_1c_1 = b_1d_1\)</span>, 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.</p>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ DoubleGroupoidWithZeroBoundary</code>( <var class="Arg">gpd</var>, <var class="Arg">src</var> )</td><td class="tdright">( operation )</td></tr></table></div>
<p>The data for a double groupoid of commutative squares therefore consists of a groupoid and a source group. We may use the operation <code class="func">PreXModWithTrivialRange</code> (<a href="chap2_mj.html#X8487BE427858C5C9"><span class="RefLink">2.3-1</span></a>) to provide a pre-crossed module. We take for our example the groupoid <code class="code">Gd8</code> and the pre-crossed module <code class="code">Q16</code> of section <a href="chap2_mj.html#X7D435B6279032D4D"><span class="RefLink">2.3</span></a>. We introduce a new right arrow to construct a square which commutes.</p>
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.