Anforderungen  |   Konzepte  |   Entwurf  |   Entwicklung  |   Qualitätssicherung  |   Lebenszyklus  |   Steuerung
 
 
 
 


Quelle  chap11_mj.html   Sprache: HTML

 
 products/sources/formale Sprachen/GAP/pkg/xmod/doc/chap11_mj.html


<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
         "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<script type="text/javascript"
  src="https://cdn.jsdelivr.net/npm/mathjax@2/MathJax.js?config=TeX-AMS-MML_HTMLorMML">
</script>
<title>GAP (XMod) - Chapter 11: Double Groupoids</title>
<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
<meta name="generator" content="GAPDoc2HTML" />
<link rel="stylesheet" type="text/css" href="manual.css" />
<script src="manual.js" type="text/javascript"></script>
<script type="text/javascript">overwriteStyle();</script>
</head>
<body class="chap11"  onload="jscontent()">


<div class="chlinktop"><span class="chlink1">Goto Chapter: </span><a href="chap0_mj.html">Top</a>  <a href="chap1_mj.html">1</a>  <a href="chap2_mj.html">2</a>  <a href="chap3_mj.html">3</a>  <a href="chap4_mj.html">4</a>  <a href="chap5_mj.html">5</a>  <a href="chap6_mj.html">6</a>  <a href="chap7_mj.html">7</a>  <a href="chap8_mj.html">8</a>  <a href="chap9_mj.html">9</a>  <a href="chap10_mj.html">10</a>  <a href="chap11_mj.html">11</a>  <a href="chap12_mj.html">12</a>  <a href="chap13_mj.html">13</a>  <a href="chap14_mj.html">14</a>  <a href="chap15_mj.html">15</a>  <a href="chapBib_mj.html">Bib</a>  <a href="chapInd_mj.html">Ind</a>  </div>

<div class="chlinkprevnexttop"> <a href="chap0_mj.html">[Top of Book]</a>   <a href="chap0_mj.html#contents">[Contents]</a>    <a href="chap10_mj.html">[Previous Chapter]</a>    <a href="chap12_mj.html">[Next Chapter]</a>   </div>

<p id="mathjaxlink" class="pcenter"><a href="chap11.html">[MathJax off]</a></p>
<p><a id="X83B7E8A287C9284A" name="X83B7E8A287C9284A"></a></p>
<div class="ChapSects"><a href="chap11_mj.html#X83B7E8A287C9284A">11 <span class="Heading">Double Groupoids</span></a>
<div class="ContSect"><span class="tocline"><span class="nocss"> </span><a href="chap11_mj.html#X87AC8EF586C35CD4">11.1 <span class="Heading">Constructions for Double Groupoids</span></a>
</span>
<div class="ContSSBlock">
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap11_mj.html#X78936F448231692E">11.1-1 SinglePieceDoubleGroupoid</a></span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap11_mj.html#X823A3A7481B90EB7">11.1-2 SquareOfArrows</a></span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap11_mj.html#X7D3737FA7E9E3ECA">11.1-3 HorizontalProduct</a></span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap11_mj.html#X873F01287A2DC41F">11.1-4 VerticalProduct</a></span>
</div></div>
<div class="ContSect"><span class="tocline"><span class="nocss"> </span><a href="chap11_mj.html#X7D69B5A680FE4C81">11.2 <span class="Heading">Conversion of Basic Double Groupoids</span></a>
</span>
<div class="ContSSBlock">
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap11_mj.html#X7CB177EF78B559DB">11.2-1 EnhancedBasicDoubleGroupoid</a></span>
</div></div>
<div class="ContSect"><span class="tocline"><span class="nocss"> </span><a href="chap11_mj.html#X853B15F483477D5C">11.3 <span class="Heading">Commutative double groupoids</span></a>
</span>
<div class="ContSSBlock">
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap11_mj.html#X7DC35C557E498880">11.3-1 DoubleGroupoidWithZeroBoundary</a></span>
</div></div>
</div>

<h3>11 <span class="Heading">Double Groupoids</span></h3>

<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>

<p><a id="X87AC8EF586C35CD4" name="X87AC8EF586C35CD4"></a></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>

<p><a id="X78936F448231692E" name="X78936F448231692E"></a></p>

<h5>11.1-1 SinglePieceDoubleGroupoid</h5>

<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="example"><pre>

<span class="GAPprompt">gap></span> <span class="GAPinput">gens3 := [ (7,8,9), (8,9) ];;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">s3 := Group( gens3 );;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">SetName( s3, "s3" ); </span>
<span class="GAPprompt">gap></span> <span class="GAPinput">Gs3 := Groupoid( s3, [-6..-1] );;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">SetName( Gs3, "Gs3" ); </span>
<span class="GAPprompt">gap></span> <span class="GAPinput">g := (11,12,13,14,15,16);;  h := (12,16)(13,15);;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">gend12 := [ g, h ];;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">d12 := Group( gend12 );;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">SetName( d12, "d12" ); </span>
<span class="GAPprompt">gap></span> <span class="GAPinput">pr12 := GroupHomomorphismByImages( d12, s3, gend12, gens3 );;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">X12 := XModByCentralExtension( pr12 );; </span>
<span class="GAPprompt">gap></span> <span class="GAPinput">SetName( X12, "X12" ); </span>
<span class="GAPprompt">gap></span> <span class="GAPinput">Display( X12 ); </span>

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.

<span class="GAPprompt">gap></span> <span class="GAPinput">D1 := SinglePieceDoubleGroupoid( Gs3, X12 );; </span>
<span class="GAPprompt">gap></span> <span class="GAPinput">D1!.groupoid;</span>
Gs3
<span class="GAPprompt">gap></span> <span class="GAPinput">D1!.prexmod;</span>
X12

</pre></div>

<p><a id="X823A3A7481B90EB7" name="X823A3A7481B90EB7"></a></p>

<h5>11.1-2 SquareOfArrows</h5>

<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 class="center">\[ 


\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 
}} 

\]</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>


<div class="example"><pre>

<span class="GAPprompt">gap></span> <span class="GAPinput">a1 := Arrow( Gs3, (7,8), -6, -5 );;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">b1 := Arrow( Gs3, (7,9), -6, -1 );;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">c1 := Arrow( Gs3, (8,9), -5, -3 );;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">d1 := Arrow( Gs3, (7,8,9), -1, -3 );;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">sq1 := SquareOfArrows( D1, g*h, a1, b1, c1, d1 ); </span>
[-6] ------------- (7,8) ------------> [-5]
  |                                     |
(7,9)        (11,16)(12,15)(13,14)        (8,9)
  V                                     V
[-1] ------------ (7,8,9) -----------> [-3]
<span class="GAPprompt">gap></span> <span class="GAPinput">m1 := ElementOfSquare( sq1 ); </span>
(11,16)(12,15)(13,14)
<span class="GAPprompt">gap></span> <span class="GAPinput">UpArrow( sq1 );</span>
[(7,8) : -6 -> -5]
<span class="GAPprompt">gap></span> <span class="GAPinput">LeftArrow( sq1 );</span>
[(7,9) : -6 -> -1]
<span class="GAPprompt">gap></span> <span class="GAPinput">RightArrow( sq1 );</span>
[(8,9) : -5 -> -3]
<span class="GAPprompt">gap></span> <span class="GAPinput">DownArrow( sq1 );</span>
[(7,8,9) : -1 -> -3]
<span class="GAPprompt">gap></span> <span class="GAPinput">## check the boundary condition:</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">bdy1 := Boundary( D1!.prexmod );;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">p1:= BoundaryOfSquare( sq1 );</span>
[(7,9) : -3 -> -3]
<span class="GAPprompt">gap></span> <span class="GAPinput">ImageElm( bdy1, m1 );</span>
(7,9)

</pre></div>

<p><a id="X7D3737FA7E9E3ECA" name="X7D3737FA7E9E3ECA"></a></p>

<h5>11.1-3 HorizontalProduct</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ HorizontalProduct</code>( <var class="Arg">sq1</var>, <var class="Arg">sq2</var> )</td><td class="tdright">( operation )</td></tr></table></div>
<p>When defining a <em>horizontal composition</em>, as illustrated by</p>

<p class="center">\[ 

\vcenter{\xymatrix @=4pc{  
   u_1 \ar[r]^{a_1} \ar[d]_{b_1} \ar@{}[dr]|{m_1} 
     & v_1 \ar[r]^{a_2} \ar[d]^{c_1} \ar@{}[dr]|{m_2}
       & v_2 \ar[d]^{c_2} \ar@{}[dr]|= 
         & u_1 \ar[r]^{a_1a_2} \ar[d]_{b_1} \ar@{}[dr]|{m_1^{d_2}m_2} 
           & v_2 \ar[d]^{c_2} \\ 
   w_1 \ar[r]_{d_1} 
     & x_1 \ar[r]_{d_2} 
       & x_2 
         & w_1 \ar[r]_{d_1d_2}
           & x_2 
}} 

\]</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>

<p class="center">\[ 
\partial(m_1^{d_2}m_2) 
~=~ \partial(m_1^{d_2}) (\partial m_2) 
~=~ d_2^{-1}(d_1^{-1}b_1^{-1}a_1c_1)d_2(d_2^{-1}c_1^{-1}a_2c_2) 
~=~ (d_1d_2)^{-1}b_1^{-1}(a_1a_2)c_2. 
\]</p>


<div class="example"><pre>

<span class="GAPprompt">gap></span> <span class="GAPinput">a2 := Arrow( Gs3, (8,9), -5, -4 );; </span>
<span class="GAPprompt">gap></span> <span class="GAPinput">c2 := Arrow( Gs3, (7,8), -4, -4 );;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">d2 := Arrow( Gs3, (7,9), -3, -4 );;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">sq2 := SquareOfArrows( D1, g^2, a2, c1, c2, d2 ); </span>
[-5] ------------ (8,9) -----------> [-4]
  |                                    |
(8,9)        (11,13,15)(12,14,16)        (7,8)
  V                                    V
[-3] ------------ (7,9) -----------> [-4]
<span class="GAPprompt">gap></span> <span class="GAPinput">m2 := ElementOfSquare( sq2 ); </span>
(11,13,15)(12,14,16)
<span class="GAPprompt">gap></span> <span class="GAPinput">LeftArrow( sq2 ) = RightArrow( sq1 ); </span>
true
<span class="GAPprompt">gap></span> <span class="GAPinput">sq12 := HorizontalProduct( sq1, sq2 );</span>
[-6] ------------ (7,9,8) -----------> [-4]
  |                                     |
(7,9)        (11,12)(13,16)(14,15)        (7,8)
  V                                     V
[-1] ------------- (7,8) ------------> [-4]
<span class="GAPprompt">gap></span> <span class="GAPinput">## check the boundary condition:</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">ed2 := ElementOfArrow( d2 );;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">im1d2 := ImageElmXModAction( X12, m1, ed2 );</span>
(11,16)(12,15)(13,14)
<span class="GAPprompt">gap></span> <span class="GAPinput">m12 := ElementOfSquare( sq12 );</span>
(11,12)(13,16)(14,15)
<span class="GAPprompt">gap></span> <span class="GAPinput">im1d2 * m2 = m12;</span>
true

</pre></div>

<p><a id="X873F01287A2DC41F" name="X873F01287A2DC41F"></a></p>

<h5>11.1-4 VerticalProduct</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ VerticalProduct</code>( <var class="Arg">sq1</var>, <var class="Arg">sq2</var> )</td><td class="tdright">( operation )</td></tr></table></div>
<p>Similarly, vertical composition is illustrated by</p>

<p class="center">\[ 

\vcenter{\xymatrix @=2pc{  
   u_1 \ar[rr]^{a_1}  \ar[dd]_{b_1} \ar@{}[ddrr]|{m_1}  
     && v_1 \ar[dd]^{c_1} 
         & &  &&  \\ 
     &&  & &  u_1 \ar[rr]^{a_1} \ar[dd]_{b_1b_3} \ar@{}[ddrr]|{m_3m_1^{c_3}} 
              && v_1 \ar[dd]^{c_1c_3} \\ 
   w_1 \ar[rr]_{d_1}  \ar[dd]_{b_3} \ar@{}[ddrr]|{m_3}  
     && x_1 \ar[dd]^{c_3} 
         &=&  &&  \\ 
     &&  & &  w_3 \ar[rr]_{d_3} 
              &&  x_3 \\ 
   w_3 \ar[rr]_{d_3} 
     && x_3 
}} 

\]</p>

<p>Again the boundary condition is satisfied:</p>

<p class="center">\[ 
\partial(m_3m_1^{c_3}) 
~=~ (\partial m_3) \partial(m_1^{c_3})  
~=~ (d_3^{-1}b_3^{-1}d_1c_3)c_3^{-1}(d_1^{-1}b_1^{-1}a_1c_1)c_3
~=~ d_3^{-1}(b_1b_3)^{-1}a_1(c_1c_3). 
\]</p>


<div class="example"><pre>

<span class="GAPprompt">gap></span> <span class="GAPinput">b3 := Arrow( Gs3, (8,9), -1, -2 );;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">c3 := Arrow( Gs3, (7,9,8), -3, -2 );;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">d3 := Arrow( Gs3, (7,9), -2, -2 );;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">sq3 := SquareOfArrows( D1, g, d1, b3, c3, d3 );</span>
[-1] ------------ (7,8,9) -----------> [-3]
  |                                     |
(8,9)        (11,12,13,14,15,16)        (7,9,8)
  V                                     V
[-2] ------------- (7,9) ------------> [-2]
<span class="GAPprompt">gap></span> <span class="GAPinput">m3 := ElementOfSquare( sq3 ); </span>
(11,12,13,14,15,16)
<span class="GAPprompt">gap></span> <span class="GAPinput">UpArrow( sq3 ) = DownArrow( sq1 ); </span>
true
<span class="GAPprompt">gap></span> <span class="GAPinput">sq13 := VerticalProduct( sq1, sq3 ); </span>
[-6] ---------- (7,8) ---------> [-5]
  |                                |
(7,8,9)        (11,13)(14,16)        (7,9)
  V                                V
[-2] ---------- (7,9) ---------> [-2]
<span class="GAPprompt">gap></span> <span class="GAPinput">## check the boundary condition:</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">ec3 := ElementOfArrow( c3 );;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">im1c3 := ImageElmXModAction( X12, m1, ec3 );</span>
(11,14)(12,13)(15,16)
<span class="GAPprompt">gap></span> <span class="GAPinput">m13 := ElementOfSquare( sq13 );</span>
(11,13)(14,16)
<span class="GAPprompt">gap></span> <span class="GAPinput">m3 * im1c3 = m13;</span>
true

</pre></div>

<p>The <code class="code">HorizontalProduct</code> and <code class="code">VerticalProduct</code> commute, so we may construct products such as:</p>

<p class="center">\[ 

\vcenter{\xymatrix @=2pc{  
   u_1 \ar[rr]^{a_1} \ar[dd]_{b_1} \ar@{}[ddrr]|{m_1} 
     && v_1 \ar[rr]^{a_2} \ar[dd]|{c_1} \ar@{}[ddrr]|{m_2}  
         && v_2 \ar[dd]^{c_2} 
             & &  &&&  \\ 
     &&  &&  & &  u_1 \ar[rrr]^{a_1a_2} \ar[dd]_{b_1b_3} 
                  \ar@{}[ddrrr]|{m_3^{d_4}m_4\left(m_1^{d_2}m_2\right)^{c_4}} 
                  &&& v_2 \ar[dd]^{c_1c_4} \\ 
   w_1 \ar[rr]|{d_1} \ar[dd]_{b_3} \ar@{}[ddrr]|{m_3}  
     && x_1 \ar[rr]|{d_2} \ar[dd]|{c_3} \ar@{}[ddrr]|{m_4} 
         &&  x_2 \ar[dd]^{c_4} 
             &=&  &&&  \\ 
     &&  &&  & &  w_3 \ar[rrr]_{d_3d_4} 
                  &&& x_4 \\ 
   w_3 \ar[rr]_{d_3} 
     && x_3 \ar[rr]_{d_4} 
         &&  x_4 
}} 

\]</p>

<p>where</p>

<p class="center">\[
m_3^{d_4}m_4 (m_1^{d_2}m_2)^{c_4} 
~=~ (m_3m_1^{c_3})^{d_4} m_4m_2^{c_4} 
~=~ (d_3d_4)^{-1}(b_1b_3)^{-1}(a_1a_2)(c_3c_4).
\]</p>

<p>Continuing with our example, we check that the two ways of computing the product of four squares below agree.</p>

<p class="center">\[ 

\vcenter{\xymatrix @=2pc{  
   -6 \ar[rr]^{(7,8)} \ar[dd]_{(7,9)} \ar@{}[ddrr]|{gh} 
     && -5 \ar[rr]^{(8,9)} \ar[dd]|{(8,9)} \ar@{}[ddrr]|{g^2}  
         && -4 \ar[dd]^{(7,8)} 
             & &  &&&  \\ 
     &&  &&  & &  -6 \ar[rrr]^{(7,9,8)} \ar[dd]_{(7,8,9)} 
                  \ar@{}[ddrrr]|{(11,15,13)(12,16,14)} 
                  &&& -4 \ar[dd]^{(7,9,8)} \\ 
   -1 \ar[rr]|{(7,8,9)} \ar[dd]_{(8,9)} \ar@{}[ddrr]|{g}  
     && -3 \ar[rr]|{(7,9)} \ar[dd]|{(7,9,8)} \ar@{}[ddrr]|{h} 
         &&  -4 \ar[dd]^{(8,9)} 
             &=&  &&&  \\ 
     &&  &&  & &  -2 \ar[rrr]_{(7,9,8)} 
                  &&& -3 \\ 
   -2 \ar[rr]_{(7,9)} 
     && -2 \ar[rr]_{(7,8)} 
         &&  -3 
}} 

\]</p>


<div class="example"><pre>

<span class="GAPprompt">gap></span> <span class="GAPinput">c4 := Arrow( Gs3, (8,9), -4, -3 );; </span>
<span class="GAPprompt">gap></span> <span class="GAPinput">d4 := Arrow( Gs3, (7,8), -2, -3 );; </span>
<span class="GAPprompt">gap></span> <span class="GAPinput">sq4 := SquareOfArrows( D1, h, d2, c3, c4, d4 );;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">UpArrow(sq4)=DownArrow(sq2) and LeftArrow(sq4)=RightArrow(sq3); </span>
true
<span class="GAPprompt">gap></span> <span class="GAPinput">sq24 := VerticalProduct( sq2, sq4 ); </span>
[-5] ---------- (8,9) ---------> [-4]
  |                                |
(7,9)        (11,15)(12,14)        (7,9,8)
  V                                V
[-2] ---------- (7,8) ---------> [-3]
<span class="GAPprompt">gap></span> <span class="GAPinput">sq34 := HorizontalProduct( sq3, sq4 );</span>
[-1] ------------- (7,8) ------------> [-4]
  |                                     |
(8,9)        (11,12)(13,16)(14,15)        (8,9)
  V                                     V
[-2] ------------ (7,9,8) -----------> [-3]
<span class="GAPprompt">gap></span> <span class="GAPinput">sq1324 := HorizontalProduct( sq13, sq24 );</span>
[-6] ------------- (7,9,8) ------------> [-4]
  |                                        |
(7,8,9)        (11,15,13)(12,16,14)        (7,9,8)
  V                                        V
[-2] ------------- (7,9,8) ------------> [-3]
<span class="GAPprompt">gap></span> <span class="GAPinput">sq1234 := VerticalProduct( sq12, sq34 );;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">sq1324 = sq1234;</span>
true

</pre></div>

<p><a id="X7D69B5A680FE4C81" name="X7D69B5A680FE4C81"></a></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>

<p><a id="X7CB177EF78B559DB" name="X7CB177EF78B559DB"></a></p>

<h5>11.2-1 EnhancedBasicDoubleGroupoid</h5>

<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>


<div class="example"><pre>

<span class="GAPprompt">gap></span> <span class="GAPinput">g2 := (1,2,3,4);;  h2 := (1,3);;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">gend8 := [ g2, h2 ];;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">d8 := Group( gend8 );;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">SetName( d8, "d8" ); </span>
<span class="GAPprompt">gap></span> <span class="GAPinput">Gd8 := Groupoid( d8, [-9..-7] );;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">SetName( Gd8, "Gd8" ); </span>
<span class="GAPprompt">gap></span> <span class="GAPinput">B0 := SinglePieceBasicDoubleGroupoid( Gd8 );; </span>
<span class="GAPprompt">gap></span> <span class="GAPinput">B0!.groupoid;</span>
Gd8
<span class="GAPprompt">gap></span> <span class="GAPinput">B0!.objects;</span>
[ -9 .. -7 ]
<span class="GAPprompt">gap></span> <span class="GAPinput">a0 := Arrow(Gd8,(),-9,-7);;    b0 := Arrow(Gd8,g2,-9,-9);;  </span>
<span class="GAPprompt">gap></span> <span class="GAPinput">c0 := Arrow(Gd8,h2,-7,-8);;    d0 := Arrow(Gd8,(2,4),-9,-8);;      </span>
<span class="GAPprompt">gap></span> <span class="GAPinput">bdy0 := d0![2]^-1 * b0![2]^-1 * a0![2] * c0![2];; </span>
<span class="GAPprompt">gap></span> <span class="GAPinput">bsq0 := SquareOfArrows( B0, bdy0, a0, b0, c0, d0 ); </span>
[-9] ---------- () ---------> [-7]
  |                             |
(1,2,3,4)        (1,4,3,2)        (1,3)
  V                             V
[-9] --------- (2,4) --------> [-8]

<span class="GAPprompt">gap></span> <span class="GAPinput">D0 := EnhancedBasicDoubleGroupoid( B0 );;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">D0!.prexmod;</span>
[d8->d8]
<span class="GAPprompt">gap></span> <span class="GAPinput">bsq0 = SquareOfArrows( D0, bdy0, a0, b0, c0, d0 ); </span>
true

</pre></div>

<p><a id="X853B15F483477D5C" name="X853B15F483477D5C"></a></p>

<h4>11.3 <span class="Heading">Commutative double groupoids</span></h4>

<p>A double groupoid square</p>

<p class="center">\[ 


\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 
}} 

\]</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>

<p><a id="X7DC35C557E498880" name="X7DC35C557E498880"></a></p>

<h5>11.3-1 DoubleGroupoidWithZeroBoundary</h5>

<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>


<div class="example"><pre>

<span class="GAPprompt">gap></span> <span class="GAPinput">D16 := DoubleGroupoidWithZeroBoundary( Gs3, d16 );;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">D16!.prexmod;</span>
[d16->Group( [ () ] )]
<span class="GAPprompt">gap></span> <span class="GAPinput">e16 := Arrow( Gs3, (7,9,8), -5, -3 );;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">sq16 := SquareOfArrows( D16, (12,18)(13,17)(14,16), a1, b1, e16, d1 );</span>
[-6] -------------- (7,8) -------------> [-5]
  |                                       |
(7,9)        (12,18)(13,17)(14,16)        (7,9,8)
  V                                       V
[-1] ------------- (7,8,9) ------------> [-3]

</pre></div>


<div class="chlinkprevnextbot"> <a href="chap0_mj.html">[Top of Book]</a>   <a href="chap0_mj.html#contents">[Contents]</a>    <a href="chap10_mj.html">[Previous Chapter]</a>    <a href="chap12_mj.html">[Next Chapter]</a>   </div>


<div class="chlinkbot"><span class="chlink1">Goto Chapter: </span><a href="chap0_mj.html">Top</a>  <a href="chap1_mj.html">1</a>  <a href="chap2_mj.html">2</a>  <a href="chap3_mj.html">3</a>  <a href="chap4_mj.html">4</a>  <a href="chap5_mj.html">5</a>  <a href="chap6_mj.html">6</a>  <a href="chap7_mj.html">7</a>  <a href="chap8_mj.html">8</a>  <a href="chap9_mj.html">9</a>  <a href="chap10_mj.html">10</a>  <a href="chap11_mj.html">11</a>  <a href="chap12_mj.html">12</a>  <a href="chap13_mj.html">13</a>  <a href="chap14_mj.html">14</a>  <a href="chap15_mj.html">15</a>  <a href="chapBib_mj.html">Bib</a>  <a href="chapInd_mj.html">Ind</a>  </div>

<hr />
<p class="foot">generated by <a href="https://www.math.rwth-aachen.de/~Frank.Luebeck/GAPDoc">GAPDoc2HTML</a></p>
</body>
</html>

98%


¤ Dauer der Verarbeitung: 0.5 Sekunden  (vorverarbeitet)  ¤

*© Formatika GbR, Deutschland






Wurzel

Suchen

Beweissystem der NASA

Beweissystem Isabelle

NIST Cobol Testsuite

Cephes Mathematical Library

Wiener Entwicklungsmethode

Haftungshinweis

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.






                                                                                                                                                                                                                                                                                                                                                                                                     


Neuigkeiten

     Aktuelles
     Motto des Tages

Software

     Produkte
     Quellcodebibliothek

Aktivitäten

     Artikel über Sicherheit
     Anleitung zur Aktivierung von SSL

Muße

     Gedichte
     Musik
     Bilder

Jenseits des Üblichen ....

Besucherstatistik

Besucherstatistik

Monitoring

Montastic status badge