SSL chap12_mj.html
Sprache: HTML
|
|
| products/Sources/formale Sprachen/GAP/pkg/fining/doc/chap12_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://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.js?config=TeX-AMS-MML_HTMLorMML">
</script>
<title>GAP (FinInG) - Chapter 12: Generalised Polygons</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="chap12" 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="chapA_mj.html">A</a> <a href="chapB_mj.html">B</a> <a href="chapC_mj.html">C</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="chap11_mj.html">[Previous Chapter]</a> <a href="chap13_mj.html">[Next Chapter]</a> </div>
<p id="mathjaxlink" class="pcenter"><a href="chap12.html">[MathJax off]</a></p>
<p><a id="X7E1F10767D2A4D6A" name="X7E1F10767D2A4D6A"></a></p>
<div class="ChapSects"><a href="chap12_mj.html#X7E1F10767D2A4D6A">12 <span class="Heading">Generalised Polygons</span></a>
<div class="ContSect"><span class="tocline"><span class="nocss"> </span><a href="chap12_mj.html#X7CC6903E78F24167">12.1 <span class="Heading">Categories</span></a>
</span>
<div class="ContSSBlock">
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap12_mj.html#X8141DFFF7B352E2D">12.1-1 IsGeneralisedPolygon</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap12_mj.html#X832E75AE7CCC5BB2">12.1-2 <span class="Heading">Subcategories in <code class="code">IsGeneralisedPolygon</code></span></a>
</span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap12_mj.html#X86C124B3804C7569">12.1-3 IsWeakGeneralisedPolygon</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap12_mj.html#X8540C04887CF8824">12.1-4 <span class="Heading">Subcategories in <code class="code">IsProjectivePlaneCategory</code></span></a>
</span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap12_mj.html#X7CF10DAE7847939D">12.1-5 <span class="Heading">Subcategories in <code class="code">IsGeneralisedQuadrangle</code></span></a>
</span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap12_mj.html#X7A2ABB0B818E25C5">12.1-6 IsClassicalGeneralisedHexagon</a></span>
</div></div>
<div class="ContSect"><span class="tocline"><span class="nocss"> </span><a href="chap12_mj.html#X8614D6A779F9B1AA">12.2 <span class="Heading">Generic functions to create generalised polygons</span></a>
</span>
<div class="ContSSBlock">
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap12_mj.html#X849A83597CC78B5F">12.2-1 GeneralisedPolygonByBlocks</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap12_mj.html#X8751B0FB8500D0B1">12.2-2 GeneralisedPolygonByIncidenceMatrix</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap12_mj.html#X7A6169127CE8ABC0">12.2-3 GeneralisedPolygonByElements</a></span>
</div></div>
<div class="ContSect"><span class="tocline"><span class="nocss"> </span><a href="chap12_mj.html#X864C966D8184A9C0">12.3 <span class="Heading">Attributes and operations for generalised polygons</span></a>
</span>
<div class="ContSSBlock">
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap12_mj.html#X84F59A2687C62763">12.3-1 Order</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap12_mj.html#X836C15B57968A511">12.3-2 IncidenceGraphAttr</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap12_mj.html#X815BE6D57D623452">12.3-3 IncidenceGraph</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap12_mj.html#X81F531BB7DEA127D">12.3-4 IncidenceMatrixOfGeneralisedPolygon</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap12_mj.html#X83FF6FA0790D5747">12.3-5 CollineationGroup</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap12_mj.html#X8074EDB381D97984">12.3-6 CollineationAction</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap12_mj.html#X7D75521986B958DA">12.3-7 BlockDesignOfGeneralisedPolygon</a></span>
</div></div>
<div class="ContSect"><span class="tocline"><span class="nocss"> </span><a href="chap12_mj.html#X7A13D5EB82E01576">12.4 <span class="Heading">Elements of generalised polygons</span></a>
</span>
<div class="ContSSBlock">
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap12_mj.html#X7E7607CA7D59D086">12.4-1 <span class="Heading">Collections of elements of generalised polygons</span></a>
</span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap12_mj.html#X858ADA3B7A684421">12.4-2 Size</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap12_mj.html#X7E9B2A217DBF2849">12.4-3 <span class="Heading">Creating elements from objects and retrieving objects from elements</span></a>
</span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap12_mj.html#X83B0FA9E7AE3DF01">12.4-4 <span class="Heading">Incidence</span></a>
</span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap12_mj.html#X875BE2957FAF6209">12.4-5 Span</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap12_mj.html#X8469B54180FE1E4C">12.4-6 Meet</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap12_mj.html#X8154BB13844AA0FD">12.4-7 <span class="Heading">Shadow elements</span></a>
</span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap12_mj.html#X7807682E86D3BE10">12.4-8 DistanceBetweenElements</a></span>
</div></div>
<div class="ContSect"><span class="tocline"><span class="nocss"> </span><a href="chap12_mj.html#X7934EB788049B533">12.5 <span class="Heading">The classical generalised hexagons</span></a>
</span>
<div class="ContSSBlock">
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap12_mj.html#X7BF1D2E57B7630CB">12.5-1 <span class="Heading">Trialities of the hyperbolic quadric and generalised hexagons</span></a>
</span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap12_mj.html#X7C35384980AA9B77">12.5-2 IsLieGeometry</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap12_mj.html#X7A05FF0079F55291">12.5-3 SplitCayleyHexagon</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap12_mj.html#X7E17977384011587">12.5-4 TwistedTrialityHexagon</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap12_mj.html#X807A60A28264BD93">12.5-5 vector spaceToElement</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap12_mj.html#X7809B7C183FA7213">12.5-6 ObjectToElement</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap12_mj.html#X810D4D6D87069697">12.5-7 UnderlyingObject</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap12_mj.html#X87BDB89B7AAFE8AD"><code>12.5-8 \in</code></a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap12_mj.html#X7B1380878358938C">12.5-9 <span class="Heading">Span and meet of elements</span></a>
</span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap12_mj.html#X83FF6FA0790D5747">12.5-10 CollineationGroup</a></span>
</div></div>
<div class="ContSect"><span class="tocline"><span class="nocss"> </span><a href="chap12_mj.html#X7BA462527B2777BC">12.6 <span class="Heading">Elation generalised quadrangles</span></a>
</span>
<div class="ContSSBlock">
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap12_mj.html#X86BD86C77BAAF887">12.6-1 <span class="Heading">Elation generalised quadrangles and Kantor families</span></a>
</span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap12_mj.html#X7CC6903E78F24167">12.6-2 <span class="Heading">Categories</span></a>
</span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap12_mj.html#X820A2D6A84A259FC">12.6-3 <span class="Heading">Kantor families</span></a>
</span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap12_mj.html#X7B80E3AC7DEAF948">12.6-4 EGQByKantorFamily</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap12_mj.html#X80C93974807A342B">12.6-5 <span class="Heading">Representation of elements and underlying objects</span></a>
</span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap12_mj.html#X7DCD7EAB839BD97F">12.6-6 <span class="Heading">Elation group and natural action on elements</span></a>
</span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap12_mj.html#X8462F11584736E32">12.6-7 <span class="Heading">Kantor families, q-clans, and elation generalised quadrangles</span></a>
</span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap12_mj.html#X806527387F1D5D42">12.6-8 qClan</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap12_mj.html#X858A1EA8843BEC13">12.6-9 <span class="Heading">Particular q-clans</span></a>
</span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap12_mj.html#X7C59CF8079EA33D3">12.6-10 KantorFamilyByqClan</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap12_mj.html#X830222B084BF866D">12.6-11 EGQByqClan</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap12_mj.html#X7FAE48497B2F658A">12.6-12 <span class="Heading">BLT-sets, flocks, q-clans, and elation generalised quadrangles</span></a>
</span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap12_mj.html#X7A8438537D2F1374">12.6-13 IsEGQByBLTSet</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap12_mj.html#X7ECC1871866AC286">12.6-14 BLTSetByqClan</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap12_mj.html#X84700DDF80B39332">12.6-15 EGQByBLTSet</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap12_mj.html#X79186E29799355BD">12.6-16 DefiningPlanesOfEGQByBLTSet</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap12_mj.html#X80C93974807A342B">12.6-17 <span class="Heading">Representation of elements and underlying objects</span></a>
</span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap12_mj.html#X7C57B0BD7A2E5877">12.6-18 CollineationSubgroup</a></span>
</div></div>
</div>
<h3>12 <span class="Heading">Generalised Polygons</span></h3>
<p>A <em>generalised n-gon</em> is a point/line geometry whose incidence graph is bipartite of diameter <var class="Arg">n</var> and girth <var class="Arg">2n</var>. Although these rank 2 structures are very much a subdomain of <strong class="pkg">GRAPE</strong> and <strong class="pkg">Design</strong>, their significance in finite geometry warrants their inclusion in <strong class="pkg">FinInG</strong>. By the famous theorem of Feit and Higman, a generalised n-gon which has at least three points on every line, must have <span class="SimpleMath">\(n\)</span> in <span class="SimpleMath">\(\{2,3,4,6,8\}\)</span>. The case <span class="SimpleMath">\(n=2\)</span> concerns the complete multipartite graphs, which we disregard. The more interesting cases are accordingly projective planes (<span class="SimpleMath">\(n=3\)</span>), generalised quadrangles (<span class="SimpleMath">\(n=4\)</span>), generalised hexagons (<span class="SimpleMath">\(n=6\)</span>), and generalised octagons (<span class="SimpleMath">\(n=8\)</span>).</p>
<p><strong class="pkg">FinInG</strong> provides some basic functionality to deal with generalised polygons as incidence geometries. A lot of non-trivial interaction with the package <strong class="pkg">GRAPE</strong> has been very useful and even necessary. Currently, generic functions to create generalised polygons, to create elements of generalised polygons, and to explore the elements are implemented. This generic functionality allows the user to construct generalised polygons through many different objects available in GAP and <strong class="pkg">FinInG</strong>. Apart from these generic functions, some particular generalised polygons are available: the classical generalised hexagons and elation generalised quadrangles from different perspectives can be constructed.</p>
<p><a id="X7CC6903E78F24167" name="X7CC6903E78F24167"></a></p>
<h4>12.1 <span class="Heading">Categories</span></h4>
<p><a id="X8141DFFF7B352E2D" name="X8141DFFF7B352E2D"></a></p>
<h5>12.1-1 IsGeneralisedPolygon</h5>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ IsGeneralisedPolygon</code></td><td class="tdright">( category )</td></tr></table></div>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ IsGeneralisedPolygonRep</code></td><td class="tdright">( representation )</td></tr></table></div>
<p>This category is a subcategory of <code class="code">IsIncidenceGeometry</code>, and contains all generalised polygons. Generalised polygons constructed through functions described in this chapter, all belong to <code class="code">IsGeneralisedPolygonRep</code>.</p>
<p><a id="X832E75AE7CCC5BB2" name="X832E75AE7CCC5BB2"></a></p>
<h5>12.1-2 <span class="Heading">Subcategories in <code class="code">IsGeneralisedPolygon</code></span></h5>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ IsProjectivePlaneCategory</code></td><td class="tdright">( category )</td></tr></table></div>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ IsGeneralisedQuadrangle</code></td><td class="tdright">( category )</td></tr></table></div>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ IsGeneralisedHexagon</code></td><td class="tdright">( category )</td></tr></table></div>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ IsGeneralisedOctagon</code></td><td class="tdright">( category )</td></tr></table></div>
<p>All generalised polygons in <strong class="pkg">FinInG</strong> belong to one of these four categories. It is not possible to construct generalised polygons of which the gonality is not known (or checked). Note that the classical generalised quadrangles (which are the classical polar spaces of rank 2) belong also to <code class="code">IsGeneralisedQuadrangle</code> and that the desarguesian projective planes (which are the projective spaces of dimension 2) also belong to <code class="code">IsProjectivePlaneCategory</code>, but both do not belong to <code class="code">IsGeneralisedPolygonRep</code>.</p>
<p><a id="X86C124B3804C7569" name="X86C124B3804C7569"></a></p>
<h5>12.1-3 IsWeakGeneralisedPolygon</h5>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ IsWeakGeneralisedPolygon</code></td><td class="tdright">( category )</td></tr></table></div>
<p><code class="code">IsWeakGeneralisedPolygon</code> is the category for weak generalised polygons.</p>
<p><a id="X8540C04887CF8824" name="X8540C04887CF8824"></a></p>
<h5>12.1-4 <span class="Heading">Subcategories in <code class="code">IsProjectivePlaneCategory</code></span></h5>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ IsDesarguesianPlane</code></td><td class="tdright">( category )</td></tr></table></div>
<p><code class="code">IsDesarguesianPlane</code> is declared as a subcategory of <code class="code">IsProjectivePlaneCategory</code> and <code class="code">IsProjecticeSpace</code>. Projective spaces of dimension 2 constructed using <code class="file">ProjectiveSpace</code> belong to <code class="code">IsDesarguesianPlane</code>.</p>
<p><a id="X7CF10DAE7847939D" name="X7CF10DAE7847939D"></a></p>
<h5>12.1-5 <span class="Heading">Subcategories in <code class="code">IsGeneralisedQuadrangle</code></span></h5>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ IsClassicalGQ</code></td><td class="tdright">( category )</td></tr></table></div>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ IsElationGQ</code></td><td class="tdright">( category )</td></tr></table></div>
<p><code class="code">IsClassicalGQ</code> is declared as a subcategory of <code class="code">IsGeneralisedQuadrangle</code> and <code class="code">IsClassicalPolarSpace</code>. All classical polar spaces of rank 2 belong to <code class="code">IsClassicalGQ</code>. <code class="code">IsElationGQ</code> is declared as subcategory of <code class="code">IsGeneralisedQuadrangle</code>. Elation GQs will be discussed in detail in Section <a href="chap12_mj.html#X7BA462527B2777BC"><span class="RefLink">12.6</span></a></p>
<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">gp := SymplecticSpace(3,2);</span>
W(3, 2)
<span class="GAPprompt">gap></span> <span class="GAPinput">IsGeneralisedPolygon(gp);</span>
true
<span class="GAPprompt">gap></span> <span class="GAPinput">IsGeneralisedQuadrangle(gp);</span>
true
<span class="GAPprompt">gap></span> <span class="GAPinput">IsClassicalGQ(gp);</span>
true
<span class="GAPprompt">gap></span> <span class="GAPinput">IsGeneralisedPolygonRep(gp);</span>
false
</pre></div>
<p><a id="X7A2ABB0B818E25C5" name="X7A2ABB0B818E25C5"></a></p>
<h5>12.1-6 IsClassicalGeneralisedHexagon</h5>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ IsClassicalGeneralisedHexagon</code></td><td class="tdright">( category )</td></tr></table></div>
<p><code class="code">IsClassicalGeneralisedHexagon</code> is declared as subcategory of <code class="code">IsGeneralisedHexagon</code> and <code class="code">IsLieGeometry</code>. The so called classical generalised hexagons are the hexagons that come from the triality of the hyperbolic quadric <span class="SimpleMath">\(\mathrm{Q}^+(7,q)\)</span>. The Split Cayley hexagon is embedded in the parabolic quadric <span class="SimpleMath">\(\mathrm{Q}(6,q)\)</span>, or <span class="SimpleMath">\(\mathrm{W}(5,q)\)</span> in even characteristic. The twisted triality hexagon is embedded in the hyperbolic quadric <span class="SimpleMath">\(\mathrm{Q}^+(7,q)\)</span>. The construction of these hexagons in a subcategory of <code class="code">IsLieGeometry</code> means that the usual operations for Lie geometries become applicable. The classical generalised hexagons are in detail discussed in Section <a href="chap12_mj.html#X7934EB788049B533"><span class="RefLink">12.5</span></a></p>
<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">gp := SplitCayleyHexagon(3);</span>
H(3)
<span class="GAPprompt">gap></span> <span class="GAPinput">IsGeneralisedHexagon(gp);</span>
true
<span class="GAPprompt">gap></span> <span class="GAPinput">IsClassicalGeneralisedHexagon(gp);</span>
true
<span class="GAPprompt">gap></span> <span class="GAPinput">IsLieGeometry(gp);</span>
true
<span class="GAPprompt">gap></span> <span class="GAPinput">IsGeneralisedPolygonRep(gp);</span>
true
</pre></div>
<p><a id="X8614D6A779F9B1AA" name="X8614D6A779F9B1AA"></a></p>
<h4>12.2 <span class="Heading">Generic functions to create generalised polygons</span></h4>
<p><a id="X849A83597CC78B5F" name="X849A83597CC78B5F"></a></p>
<h5>12.2-1 GeneralisedPolygonByBlocks</h5>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ GeneralisedPolygonByBlocks</code>( <var class="Arg">l</var> )</td><td class="tdright">( operation )</td></tr></table></div>
<p>Returns: a generalised polygon</p>
<p>The argument <var class="Arg">l</var> is a finite homogeneous list consisting of ordered sets of a common size <span class="SimpleMath">\(n+1\)</span>. This operation will assume that each element of <var class="Arg">l</var> represents a line of the generalised polygon. Its points are assumed to be the union of all elements of <var class="Arg">l</var>. The incidence is assumed to be symmetrised containment. From this information, an incidence graph is computed using <strong class="pkg">GRAPE</strong>. If this graph has diameter <span class="SimpleMath">\(d\)</span> and girth <span class="SimpleMath">\(2d\)</span>, a generalised polygon is returned. The thickness condition is not checked. If <span class="SimpleMath">\(d \in \{3,4,6,8\}\)</span>, a projective plane, a generalised quadrangle, a generalised hexagon, a generalised octagon respectively, is returned. Note that for large input, this operation can be time consuming.</p>
<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">blocks := [ </span>
<span class="GAPprompt">></span> <span class="GAPinput"> [ 1, 2, 3, 4, 5 ], [ 1, 6, 7, 8, 9 ], [ 1, 10, 11, 12, 13 ],</span>
<span class="GAPprompt">></span> <span class="GAPinput"> [ 1, 14, 15, 16, 17 ], [ 1, 18, 19, 20, 21 ], [ 2, 6, 10, 14, 18 ], </span>
<span class="GAPprompt">></span> <span class="GAPinput"> [ 2, 7, 11, 15, 19 ], [ 2, 8, 12, 16, 20 ], [ 2, 9, 13, 17, 21 ], </span>
<span class="GAPprompt">></span> <span class="GAPinput"> [ 3, 6, 11, 16, 21 ], [ 3, 7, 10, 17, 20 ], [ 3, 8, 13, 14, 19 ], </span>
<span class="GAPprompt">></span> <span class="GAPinput"> [ 3, 9, 12, 15, 18 ], [ 4, 6, 12, 17, 19 ], [ 4, 7, 13, 16, 18 ], </span>
<span class="GAPprompt">></span> <span class="GAPinput"> [ 4, 8, 10, 15, 21 ], [ 4, 9, 11, 14, 20 ], [ 5, 6, 13, 15, 20 ], </span>
<span class="GAPprompt">></span> <span class="GAPinput"> [ 5, 7, 12, 14, 21 ], [ 5, 8, 11, 17, 18 ], [ 5, 9, 10, 16, 19 ] ];;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">gp := GeneralisedPolygonByBlocks( blocks );</span>
<projective plane order 4>
</pre></div>
<p><a id="X8751B0FB8500D0B1" name="X8751B0FB8500D0B1"></a></p>
<h5>12.2-2 GeneralisedPolygonByIncidenceMatrix</h5>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ GeneralisedPolygonByIncidenceMatrix</code>( <var class="Arg">incmat</var> )</td><td class="tdright">( operation )</td></tr></table></div>
<p>Returns: a generalised polygon</p>
<p>The argument <span class="SimpleMath">\(incmat\)</span> is a matrix representing the incidence matrix of a point line geometry. The points are represented by the columns, the rows represent the lines. From <var class="Arg">incmat</var> a homogeneous list of sets of column entries is derived, which is then passed to <code class="file">GeneralisedPolygonByBlocks</code>. When <var class="Arg">incmat</var> indeed represents a generalised polygon, it is returned. The checks are performed by <code class="file">GeneralisedPolygonByBlocks</code>.</p>
<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">incmat := [ </span>
<span class="GAPprompt">></span> <span class="GAPinput"> [ 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], </span>
<span class="GAPprompt">></span> <span class="GAPinput"> [ 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], </span>
<span class="GAPprompt">></span> <span class="GAPinput"> [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0 ], </span>
<span class="GAPprompt">></span> <span class="GAPinput"> [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0 ], </span>
<span class="GAPprompt">></span> <span class="GAPinput"> [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1 ], </span>
<span class="GAPprompt">></span> <span class="GAPinput"> [ 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0 ], </span>
<span class="GAPprompt">></span> <span class="GAPinput"> [ 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0 ], </span>
<span class="GAPprompt">></span> <span class="GAPinput"> [ 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0 ], </span>
<span class="GAPprompt">></span> <span class="GAPinput"> [ 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1 ], </span>
<span class="GAPprompt">></span> <span class="GAPinput"> [ 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1 ], </span>
<span class="GAPprompt">></span> <span class="GAPinput"> [ 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0 ], </span>
<span class="GAPprompt">></span> <span class="GAPinput"> [ 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 0, 0 ], </span>
<span class="GAPprompt">></span> <span class="GAPinput"> [ 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0 ], </span>
<span class="GAPprompt">></span> <span class="GAPinput"> [ 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0 ], </span>
<span class="GAPprompt">></span> <span class="GAPinput"> [ 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 0 ], </span>
<span class="GAPprompt">></span> <span class="GAPinput"> [ 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1 ], </span>
<span class="GAPprompt">></span> <span class="GAPinput"> [ 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0 ], </span>
<span class="GAPprompt">></span> <span class="GAPinput"> [ 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 1, 0 ], </span>
<span class="GAPprompt">></span> <span class="GAPinput"> [ 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 1 ], </span>
<span class="GAPprompt">></span> <span class="GAPinput"> [ 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0 ], </span>
<span class="GAPprompt">></span> <span class="GAPinput"> [ 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0 ] ];;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">pp := GeneralisedPolygonByIncidenceMatrix( incmat );</span>
<projective plane order 4>
</pre></div>
<p><a id="X7A6169127CE8ABC0" name="X7A6169127CE8ABC0"></a></p>
<h5>12.2-3 GeneralisedPolygonByElements</h5>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ GeneralisedPolygonByElements</code>( <var class="Arg">pts</var>, <var class="Arg">lns</var>, <var class="Arg">inc</var> )</td><td class="tdright">( operation )</td></tr></table></div>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ GeneralisedPolygonByElements</code>( <var class="Arg">pts</var>, <var class="Arg">lns</var>, <var class="Arg">inc</var>, <var class="Arg">grp</var>, <var class="Arg">act</var> )</td><td class="tdright">( operation )</td></tr></table></div>
<p>Returns: a generalised polygon</p>
<p>The argument <var class="Arg">pts</var>, <var class="Arg">lns</var> and <var class="Arg">inc</var> are respectively a set of objects, a set of objects and a function. The function <var class="Arg">inc</var> must represent an incidence relation between objects of <var class="Arg">pts</var> and <var class="Arg">lns</var>. The first version of <code class="file">GeneralisedPolygonByElements</code> will construct an incidence graph, and if this graph has diameter <span class="SimpleMath">\(d\)</span> and girth <span class="SimpleMath">\(2d\)</span>, a generalised polygon is returned. The thickness condition is not checked. If <span class="SimpleMath">\(d \in \{3,4,6,8\}\)</span>, a projective plane, a generalised quadrangle, a generalised hexagon, a generalised octagon respectively, is returned. The argument <var class="Arg">grp</var> is a group, and <var class="Arg">act</var> a function, representing an action of the elements of <var class="Arg">grp</var> on the objects in the lists <var class="Arg">pts</var> and <var class="Arg">lns</var>, preserving the incidence. The second version of <code class="file">GeneralisedPolygonByElements</code> acts as the first version, but uses <var class="Arg">grp</var> and <var class="Arg">act</var> to construct the incidence graph in a more efficient way, so if <var class="Arg">grp</var> is a non trivial group, the construction of the graph will be faster. This operation can typically be used to construct generalised polygons from objects that are available in <strong class="pkg">FinInG</strong>. This difference in time is shown in the first two examples. The third examples shows the construction of the generalised quadrangle <span class="SimpleMath">\(T_2(O)\)</span>.</p>
<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">pg := PG(2,25);</span>
ProjectiveSpace(2, 25)
<span class="GAPprompt">gap></span> <span class="GAPinput">pts := Set(Points(pg));;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">lns := Set(Lines(pg));;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">inc := \*;</span>
<Operation "*">
<span class="GAPprompt">gap></span> <span class="GAPinput">gp := GeneralisedPolygonByElements(pts,lns,inc);</span>
<projective plane order 25>
<span class="GAPprompt">gap></span> <span class="GAPinput">time;</span>
26427
<span class="GAPprompt">gap></span> <span class="GAPinput">grp := CollineationGroup(pg);</span>
The FinInG collineation group PGammaL(3,25)
<span class="GAPprompt">gap></span> <span class="GAPinput">act := OnProjSubspaces;</span>
function( var, el ) ... end
<span class="GAPprompt">gap></span> <span class="GAPinput">gp := GeneralisedPolygonByElements(pts,lns,inc,grp,act);</span>
<projective plane order 25>
<span class="GAPprompt">gap></span> <span class="GAPinput">time;</span>
127
<span class="GAPprompt">gap></span> <span class="GAPinput">q := 4;</span>
4
<span class="GAPprompt">gap></span> <span class="GAPinput">conic := Set(Points(ParabolicQuadric(2,q)));</span>
[ <a point in Q(2, 4)>, <a point in Q(2, 4)>, <a point in Q(2, 4)>,
<a point in Q(2, 4)>, <a point in Q(2, 4)> ]
<span class="GAPprompt">gap></span> <span class="GAPinput">pg := PG(3,q);</span>
ProjectiveSpace(3, 4)
<span class="GAPprompt">gap></span> <span class="GAPinput">hyp := HyperplaneByDualCoordinates(pg,[1,0,0,0]*Z(q)^0);</span>
<a plane in ProjectiveSpace(3, 4)>
<span class="GAPprompt">gap></span> <span class="GAPinput">em := NaturalEmbeddingBySubspace(PG(2,q),pg,hyp);</span>
<geometry morphism from <All elements of ProjectiveSpace(2,
4)> to <All elements of ProjectiveSpace(3, 4)>>
<span class="GAPprompt">gap></span> <span class="GAPinput">O := List(conic,x->x^em);;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">group := CollineationGroup(pg);</span>
The FinInG collineation group PGammaL(4,4)
<span class="GAPprompt">gap></span> <span class="GAPinput">stab := FiningSetwiseStabiliser(group,O);</span>
#I Computing adjusted stabilizer chain...
<projective collineation group with 6 generators>
<span class="GAPprompt">gap></span> <span class="GAPinput">points1 := Set(Filtered(Points(pg),x->not x in hyp));;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">tangents := List(conic,x->TangentSpace(x)^em);</span>
[ <a line in ProjectiveSpace(3, 4)>, <a line in ProjectiveSpace(3, 4)>,
<a line in ProjectiveSpace(3, 4)>, <a line in ProjectiveSpace(3, 4)>,
<a line in ProjectiveSpace(3, 4)> ]
<span class="GAPprompt">gap></span> <span class="GAPinput">planes := List(tangents,x->Filtered(Planes(x),y->not y in hyp));;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">points2 := Union(planes);;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">points3 := [hyp];</span>
[ <a plane in ProjectiveSpace(3, 4)> ]
<span class="GAPprompt">gap></span> <span class="GAPinput">linesa := Union(List(O,x->Filtered(Lines(x),y->not y in hyp)));;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">linesb := Set(O);;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">pts := Union(points1,points2,points3);;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">lns := Union(linesa,linesb);;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">inc := \*;</span>
<Operation "*">
<span class="GAPprompt">gap></span> <span class="GAPinput">gp := GeneralisedPolygonByElements(pts,lns,inc,stab,\^);</span>
<generalised quadrangle of order [ 4, 4 ]>
<span class="GAPprompt">gap></span> <span class="GAPinput">time;</span>
50
</pre></div>
<p><a id="X864C966D8184A9C0" name="X864C966D8184A9C0"></a></p>
<h4>12.3 <span class="Heading">Attributes and operations for generalised polygons</span></h4>
<p>All operations described in this section are applicable on objects in the category <code class="code">IsGeneralisedPolygon</code>.</p>
<p><a id="X84F59A2687C62763" name="X84F59A2687C62763"></a></p>
<h5>12.3-1 Order</h5>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ Order</code>( <var class="Arg">gp</var> )</td><td class="tdright">( attribute )</td></tr></table></div>
<p>Returns: a pair of positive integers</p>
<p>This method returns the parameters <span class="SimpleMath">\((s,t)\)</span> of the generalised polygon <var class="Arg">gp</var>. That is, <span class="SimpleMath">\(s+1\)</span> is the number of points on any line of <var class="Arg">gp</var>, and <span class="SimpleMath">\(t+1\)</span> is the number of lines incident with any point of <var class="Arg">gp</var>.</p>
<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">gp := TwistedTrialityHexagon(2^3);</span>
T(8, 2)
<span class="GAPprompt">gap></span> <span class="GAPinput">Order(gp);</span>
[ 8, 2 ]
<span class="GAPprompt">gap></span> <span class="GAPinput">gp := HermitianPolarSpace(4,25);</span>
H(4, 5^2)
<span class="GAPprompt">gap></span> <span class="GAPinput">Order(gp);</span>
[ 25, 125 ]
<span class="GAPprompt">gap></span> <span class="GAPinput">gp := EGQByqClan(LinearqClan(3));</span>
#I Computed Kantor family. Now computing EGQ...
<EGQ of order [ 9, 3 ] and basepoint 0>
<span class="GAPprompt">gap></span> <span class="GAPinput">Order(gp);</span>
[ 9, 3 ]
</pre></div>
<p><a id="X836C15B57968A511" name="X836C15B57968A511"></a></p>
<h5>12.3-2 IncidenceGraphAttr</h5>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ IncidenceGraphAttr</code>( <var class="Arg">gp</var> )</td><td class="tdright">( attribute )</td></tr></table></div>
<p>This attribute is declared for objects in <code class="code">IsGeneralisedPolygon</code>. It is a mutable attribute and can be accessed by the operation <code class="file">IncidenceGraph</code>.</p>
<p><a id="X815BE6D57D623452" name="X815BE6D57D623452"></a></p>
<h5>12.3-3 IncidenceGraph</h5>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ IncidenceGraph</code>( <var class="Arg">gp</var> )</td><td class="tdright">( operation )</td></tr></table></div>
<p>Returns: a graph</p>
<p>The argument <var class="Arg">gp</var> is a generalised polygon. This operation returns the incidence graph of <var class="Arg">gp</var>. If <var class="Arg">gp</var> is constructed using <code class="file">GeneralisedPolygonByBlocks</code>, <code class="file">GeneralisedPolygonByElements</code> or <code class="file">GeneralisedPolygonByIncidenceMatrix</code>, an incidence graph is computed to check the input, and is stored as an attribute. For the particular generalised polygons available in <strong class="pkg">FinInG</strong>, there is no precomputed incidence graph. Note that computing an incidence graph may require some time, especially when the <var class="Arg">gp</var> has no collineation group computed. Therefore, this operation will return an error when <var class="Arg">gp</var> has no collineation group computed. As <code class="file">CollineationGroup</code> is an attribute for objects in <code class="code">IsGeneralisedPolygon</code>, the user should compute the collineation group and then reissue the command to compute the incidence graph.</p>
<p>We should also point out that this method returns a <em>mutable</em> attribute of <var class="Arg">gp</var>, so that acquired information about the incidence graph can be added. For example, the automorphism group of the incidence graph may be computed and stored as a record component after the incidence graph is stored as an attribute of <var class="Arg">gp</var>. Normally, attributes of GAP objects are immutable.</p>
<p>Note that the factor 2 as difference in the order of the collineation group of <span class="SimpleMath">\(Q(4,4)\)</span> and the order of the automorphism group of its incidence graph is easily explained by the fact that the <span class="SimpleMath">\(Q(4,4)\)</span> is self dual.</p>
<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">blocks := [ </span>
<span class="GAPprompt">></span> <span class="GAPinput"> [ 1, 2, 3, 4, 5 ], [ 1, 6, 7, 8, 9 ], [ 1, 10, 11, 12, 13 ],</span>
<span class="GAPprompt">></span> <span class="GAPinput"> [ 1, 14, 15, 16, 17 ], [ 1, 18, 19, 20, 21 ], [ 2, 6, 10, 14, 18 ], </span>
<span class="GAPprompt">></span> <span class="GAPinput"> [ 2, 7, 11, 15, 19 ], [ 2, 8, 12, 16, 20 ], [ 2, 9, 13, 17, 21 ], </span>
<span class="GAPprompt">></span> <span class="GAPinput"> [ 3, 6, 11, 16, 21 ], [ 3, 7, 10, 17, 20 ], [ 3, 8, 13, 14, 19 ], </span>
<span class="GAPprompt">></span> <span class="GAPinput"> [ 3, 9, 12, 15, 18 ], [ 4, 6, 12, 17, 19 ], [ 4, 7, 13, 16, 18 ], </span>
<span class="GAPprompt">></span> <span class="GAPinput"> [ 4, 8, 10, 15, 21 ], [ 4, 9, 11, 14, 20 ], [ 5, 6, 13, 15, 20 ], </span>
<span class="GAPprompt">></span> <span class="GAPinput"> [ 5, 7, 12, 14, 21 ], [ 5, 8, 11, 17, 18 ], [ 5, 9, 10, 16, 19 ] ];;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">gp := GeneralisedPolygonByBlocks( blocks );</span>
<projective plane order 4>
<span class="GAPprompt">gap></span> <span class="GAPinput">incgraph := IncidenceGraph( gp );;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">Diameter( incgraph );</span>
3
<span class="GAPprompt">gap></span> <span class="GAPinput">Girth( incgraph );</span>
6
<span class="GAPprompt">gap></span> <span class="GAPinput">VertexDegrees( incgraph );</span>
[ 5 ]
<span class="GAPprompt">gap></span> <span class="GAPinput">aut := AutGroupGraph( incgraph );</span>
<permutation group with 9 generators>
<span class="GAPprompt">gap></span> <span class="GAPinput">DisplayCompositionSeries(aut);</span>
G (9 gens, size 241920)
| Z(2)
S (5 gens, size 120960)
| Z(2)
S (5 gens, size 60480)
| Z(3)
S (4 gens, size 20160)
| A(2,4) = L(3,4)
1 (0 gens, size 1)
<span class="GAPprompt">gap></span> <span class="GAPinput">gp := ParabolicQuadric(4,4);</span>
Q(4, 4)
<span class="GAPprompt">gap></span> <span class="GAPinput">incgraph := IncidenceGraph( gp );;</span>
Error, No collineation group computed. Please compute collineation group before compu
ting incidence graph,n called from
<function "unknown">( <arguments> )
called from read-eval loop at line 24 of *stdin*
you can 'quit;' to quit to outer loop, or
you can 'return;' to continue
<span class="GAPbrkprompt">brk></span> <span class="GAPinput">quit;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">CollineationGroup(gp);</span>
PGammaO(5,4)
<span class="GAPprompt">gap></span> <span class="GAPinput">Order(last);</span>
1958400
<span class="GAPprompt">gap></span> <span class="GAPinput">incgraph := IncidenceGraph( gp );;</span>
#I Computing incidence graph of generalised polygon...
<span class="GAPprompt">gap></span> <span class="GAPinput">aut := AutGroupGraph( incgraph );</span>
<permutation group with 10 generators>
<span class="GAPprompt">gap></span> <span class="GAPinput">Order(aut);</span>
3916800
</pre></div>
<p><a id="X81F531BB7DEA127D" name="X81F531BB7DEA127D"></a></p>
<h5>12.3-4 IncidenceMatrixOfGeneralisedPolygon</h5>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ IncidenceMatrixOfGeneralisedPolygon</code>( <var class="Arg">gp</var> )</td><td class="tdright">( attribute )</td></tr></table></div>
<p>Returns: a matrix</p>
<p>This method returns the incidence matrix of the generalised polygon via the operation <code class="code">CollapsedAdjacencyMat</code> in the <strong class="pkg">GRAPE</strong> package. The rows of the matrix correspond to the points of <var class="Arg">gp</var>, and the columns correspond to the lines. Note that since this operation relies on <code class="file">IncidenceGraph</code>, for some generalised polygons, it is necessary to compute a collineation group first.</p>
<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">gp := SymplecticSpace(3,2);</span>
W(3, 2)
<span class="GAPprompt">gap></span> <span class="GAPinput">CollineationGroup(gp);</span>
PGammaSp(4,2)
<span class="GAPprompt">gap></span> <span class="GAPinput">mat := IncidenceMatrixOfGeneralisedPolygon(gp);</span>
#I Computing incidence graph of generalised polygon...
[ [ 1, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 ],
[ 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 ],
[ 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0 ],
[ 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0 ],
[ 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0 ],
[ 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0 ],
[ 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0 ],
[ 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0 ],
[ 0, 0, 0, 0, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0 ],
[ 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0 ],
[ 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0 ],
[ 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 1 ],
[ 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1 ],
[ 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0 ],
[ 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1 ] ]
</pre></div>
<p><a id="X83FF6FA0790D5747" name="X83FF6FA0790D5747"></a></p>
<h5>12.3-5 CollineationGroup</h5>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ CollineationGroup</code>( <var class="Arg">gp</var> )</td><td class="tdright">( attribute )</td></tr></table></div>
<p>Returns: a group</p>
<p>This attribute returns the full collineation group of the generalised polygon <var class="Arg">gp</var>. For some particular generalised polygons, a (subgroup) of the full collineation group can be computed efficiently without computing the incidence graph of <var class="Arg">gp</var>: the full collineation group of classical generalised quadrangles and classical generalised hexagons; and an elation group with relation to a base-point of an elation generalised quadrangle. For generalised polygons constructed by the operations <code class="file">GeneralisedPolygonByBlocks</code>, <code class="file">GeneralisedPolygonByElements</code> or <code class="file">GeneralisedPolygonByIncidenceMatrix</code>, the full collineation group is computed using the full automorphism group of the underlying incidence graph, the latter being computed by the package <strong class="pkg">GRAPE</strong>.</p>
<p>The collineation groups computed for classical generalised quadrangles and classical generalised hexagons are collineation groups in the sense of <strong class="pkg">FinInG</strong>, and come equipped with a NiceMonomorphism. The collineation groups computed in all other cases are permutations groups, acting on the vertices of the underlying incidence graph.</p>
<p>Note that the computation of the automorphism group of the underlying graph can be time consuming, also if the complete collineation group of the generalised polygon has been used as an argument in e.g. <code class="file">GeneralisedPolygonByElements</code>.</p>
<p>The first example illustrates that <code class="file">CollineationGroup</code> is naturally applicable to all classical generalised Polygons.</p>
<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">gp := PG(2,2);</span>
ProjectiveSpace(2, 2)
<span class="GAPprompt">gap></span> <span class="GAPinput">CollineationGroup(gp);</span>
The FinInG collineation group PGL(3,2)
<span class="GAPprompt">gap></span> <span class="GAPinput">gp := EllipticQuadric(5,4);</span>
Q-(5, 4)
<span class="GAPprompt">gap></span> <span class="GAPinput">CollineationGroup(gp);</span>
PGammaO-(6,4)
<span class="GAPprompt">gap></span> <span class="GAPinput">gp := TwistedTrialityHexagon(3^3);</span>
T(27, 3)
<span class="GAPprompt">gap></span> <span class="GAPinput">CollineationGroup(gp);</span>
#I Computing nice monomorphism...
#I Found permutation domain...
3D_4(27)
<span class="GAPprompt">gap></span> <span class="GAPinput">time;</span>
40691
</pre></div>
<p>The second example illustrates the computation of collineation groups of generalised polygons constructed using different objects.</p>
<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">mat := [ [ 1, 1, 0, 0, 0, 1, 0 ], [ 1, 0, 0, 1, 1, 0, 0 ],</span>
<span class="GAPprompt">></span> <span class="GAPinput"> [ 1, 0, 1, 0, 0, 0, 1 ], [ 0, 1, 1, 1, 0, 0, 0 ],</span>
<span class="GAPprompt">></span> <span class="GAPinput"> [ 0, 1, 0, 0, 1, 0, 1 ], [ 0, 0, 0, 1, 0, 1, 1 ],</span>
<span class="GAPprompt">></span> <span class="GAPinput"> [ 0, 0, 1, 0, 1, 1, 0 ] ];</span>
[ [ 1, 1, 0, 0, 0, 1, 0 ], [ 1, 0, 0, 1, 1, 0, 0 ], [ 1, 0, 1, 0, 0, 0, 1 ],
[ 0, 1, 1, 1, 0, 0, 0 ], [ 0, 1, 0, 0, 1, 0, 1 ], [ 0, 0, 0, 1, 0, 1, 1 ],
[ 0, 0, 1, 0, 1, 1, 0 ] ]
<span class="GAPprompt">gap></span> <span class="GAPinput">gp := GeneralisedPolygonByIncidenceMatrix(mat);</span>
<projective plane order 2>
<span class="GAPprompt">gap></span> <span class="GAPinput">group := CollineationGroup(gp);</span>
Group([ (3,4)(5,7)(9,10)(13,14), (3,7)(4,5)(11,12)(13,14), (2,3)(6,7)(8,9)
(12,13), (2,6)(4,5)(11,13)(12,14), (1,2)(4,7)(9,11)(10,12) ])
<span class="GAPprompt">gap></span> <span class="GAPinput">gp := EGQByqClan(FisherqClan(3));</span>
#I Computed Kantor family. Now computing EGQ...
<EGQ of order [ 9, 3 ] and basepoint 0>
<span class="GAPprompt">gap></span> <span class="GAPinput">group := CollineationGroup(gp);</span>
#I Computing incidence graph of generalised polygon...
#I Using elation of the collineation group...
<permutation group of size 26127360 with 8 generators>
<span class="GAPprompt">gap></span> <span class="GAPinput">Order(group);</span>
26127360
<span class="GAPprompt">gap></span> <span class="GAPinput">Random(group);</span>
(1,75,27,191,96,50,9,110,88,53,63,154,115,213,229,19,236,226,49,143,16,266,58,
245,11,270,57,44)(2,181,116,225,262,223,17)(3,33,187,149,108,120,177,164,167,
261,198,26,196,276,52,73,94,222,101,176,32,39,43,89,31,280,65,71)(4,250,173,
112,246,38,142,138,54,208,69,243,197,42,269,242,125,8,134,265,67,206,20,13,29,
182,205,36)(5,109,129,82,210,277,185,56,104,114,90,68,61,228,132,235,78,257,
10,238,145,184,241,170,153,263,45,179)(6,159,230,106,147,91,22,137,256,113,
117,180,7,133,279,100,55,156,168,86,122,131,12,35,273,264,254,152)(14,62,66,
268,51,233,253,218,172,130,144,25,169,83,234,127,171,221,34,190,21,46,272,224,
239,267,60,98)(15,40,278,128,160,215,87,178,203,166,247,119,209,84,255,271,
232,81,193,252,92,95,111,201,107,140,135,258)( [...] )
<span class="GAPprompt">gap></span> <span class="GAPinput">q := 4;</span>
4
<span class="GAPprompt">gap></span> <span class="GAPinput">conic := ParabolicQuadric(2,q);</span>
Q(2, 4)
<span class="GAPprompt">gap></span> <span class="GAPinput">nucleus := NucleusOfParabolicQuadric(conic);</span>
<a point in ProjectiveSpace(2, 4)>
<span class="GAPprompt">gap></span> <span class="GAPinput">conic := ParabolicQuadric(2,q);</span>
Q(2, 4)
<span class="GAPprompt">gap></span> <span class="GAPinput">nucleus := NucleusOfParabolicQuadric(conic);</span>
<a point in ProjectiveSpace(2, 4)>
<span class="GAPprompt">gap></span> <span class="GAPinput">hyperoval := Union(List(Points(conic)),[nucleus]);</span>
[ <a point in ProjectiveSpace(2, 4)>, <a point in Q(2, 4)>,
<a point in Q(2, 4)>, <a point in Q(2, 4)>, <a point in Q(2, 4)>,
<a point in Q(2, 4)> ]
<span class="GAPprompt">gap></span> <span class="GAPinput">pg := PG(3,q);</span>
ProjectiveSpace(3, 4)
<span class="GAPprompt">gap></span> <span class="GAPinput">hyp := HyperplaneByDualCoordinates(pg,[1,0,0,0]*Z(q)^0);</span>
<a plane in ProjectiveSpace(3, 4)>
<span class="GAPprompt">gap></span> <span class="GAPinput">em := NaturalEmbeddingBySubspace(PG(2,q),pg,hyp);</span>
<geometry morphism from <All elements of ProjectiveSpace(2,
4)> to <All elements of ProjectiveSpace(3, 4)>>
<span class="GAPprompt">gap></span> <span class="GAPinput">O := List(hyperoval,x->x^em);</span>
[ <a point in ProjectiveSpace(3, 4)>, <a point in ProjectiveSpace(3, 4)>,
<a point in ProjectiveSpace(3, 4)>, <a point in ProjectiveSpace(3, 4)>,
<a point in ProjectiveSpace(3, 4)>, <a point in ProjectiveSpace(3, 4)> ]
<span class="GAPprompt">gap></span> <span class="GAPinput">points := Set(Filtered(Points(pg),x->not x in hyp));;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">lines := Union(List(O,x->Filtered(Lines(x),y->not y in hyp)));;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">inc := \*;</span>
<Operation "*">
<span class="GAPprompt">gap></span> <span class="GAPinput">gp := GeneralisedPolygonByElements(points,lines,inc);</span>
<generalised quadrangle of order [ 3, 5 ]>
<span class="GAPprompt">gap></span> <span class="GAPinput">coll := CollineationGroup(gp);</span>
<permutation group of size 138240 with 8 generators>
<span class="GAPprompt">gap></span> <span class="GAPinput">Order(coll);</span>
138240
<span class="GAPprompt">gap></span> <span class="GAPinput">Random(coll);</span>
(1,29,60,40)(2,42,4,10,3,61,59,19,57,51,58,8)(5,21,17,25,52,13,64,48,44,36,9,
56)(6,34,41,55,50,45,63,27,20,14,11,24)(7,53,18,46,12,35,62,16,43,23,49,
26)(15,32,47,31,28,39,54,37,22,38,33,30)(65,74,83,111,66,117,149,104,70,151,
142,78)(67,135,139,136,68,109,98,125,69,95,120,137)(71,92,73,128,77,106,141,
105,145,150,88,155)(72,121,158,160,76,143,119,103,138,152,134,84)(75,153,133,
107,115,122,118,85,154,116,147,91)(79,110,101,159,126,90,157,81,112,100,89,
108)(80,99,97,86,156,129,144,94,127,114,148,82)(87,132,102,131,123,130,124,96,
93,113,146,140)
</pre></div>
<p>In the third example, the use of an precomputed automorphism group is illustrated. It speeds up the construction of the underlying graph and the computation of the automorphism group of the underlying graph. However, as is also illustrated in the example, despite that the precomputed automorphism group of the generalised polygon is actually the full collineation group, still some time is needed to compute the automorphism group of the underlying graph. The timings after both <code class="file">CollineationGroup</code> commands are wrong. This is because <strong class="pkg">GRAPE</strong> relies on an external binary to computed the automorphism group of a graph. The generalised quadrangle in this example is known as <span class="SimpleMath">\(T_2^*(O)\)</span>.</p>
<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">q := 8;</span>
8
<span class="GAPprompt">gap></span> <span class="GAPinput">conic := ParabolicQuadric(2,q);</span>
Q(2, 8)
<span class="GAPprompt">gap></span> <span class="GAPinput">nucleus := NucleusOfParabolicQuadric(conic);</span>
<a point in ProjectiveSpace(2, 8)>
<span class="GAPprompt">gap></span> <span class="GAPinput">hyperoval := Union(List(Points(conic)),[nucleus]);</span>
[ <a point in ProjectiveSpace(2, 8)>, <a point in Q(2, 8)>,
<a point in Q(2, 8)>, <a point in Q(2, 8)>, <a point in Q(2, 8)>,
<a point in Q(2, 8)>, <a point in Q(2, 8)>, <a point in Q(2, 8)>,
<a point in Q(2, 8)>, <a point in Q(2, 8)> ]
<span class="GAPprompt">gap></span> <span class="GAPinput">pg := PG(3,q);</span>
ProjectiveSpace(3, 8)
<span class="GAPprompt">gap></span> <span class="GAPinput">hyp := HyperplaneByDualCoordinates(pg,[1,0,0,0]*Z(q)^0);</span>
<a plane in ProjectiveSpace(3, 8)>
<span class="GAPprompt">gap></span> <span class="GAPinput">em := NaturalEmbeddingBySubspace(PG(2,q),pg,hyp);</span>
<geometry morphism from <All elements of ProjectiveSpace(2,
8)> to <All elements of ProjectiveSpace(3, 8)>>
<span class="GAPprompt">gap></span> <span class="GAPinput">O := List(hyperoval,x->x^em);</span>
[ <a point in ProjectiveSpace(3, 8)>, <a point in ProjectiveSpace(3, 8)>,
<a point in ProjectiveSpace(3, 8)>, <a point in ProjectiveSpace(3, 8)>,
<a point in ProjectiveSpace(3, 8)>, <a point in ProjectiveSpace(3, 8)>,
<a point in ProjectiveSpace(3, 8)>, <a point in ProjectiveSpace(3, 8)>,
<a point in ProjectiveSpace(3, 8)>, <a point in ProjectiveSpace(3, 8)> ]
<span class="GAPprompt">gap></span> <span class="GAPinput">points := Set(Filtered(Points(pg),x->not x in hyp));;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">lines := Union(List(O,x->Filtered(Lines(x),y->not y in hyp)));;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">inc := \*;</span>
<Operation "*">
<span class="GAPprompt">gap></span> <span class="GAPinput">gp := GeneralisedPolygonByElements(points,lines,inc);</span>
<generalised quadrangle of order [ 7, 9 ]>
<span class="GAPprompt">gap></span> <span class="GAPinput">time;</span>
17466
<span class="GAPprompt">gap></span> <span class="GAPinput">coll := CollineationGroup(gp);</span>
<permutation group of size 5419008 with 9 generators>
<span class="GAPprompt">gap></span> <span class="GAPinput">time;</span>
69
<span class="GAPprompt">gap></span> <span class="GAPinput">group := CollineationGroup(pg);</span>
The FinInG collineation group PGammaL(4,8)
<span class="GAPprompt">gap></span> <span class="GAPinput">stab := FiningSetwiseStabiliser(group,O);</span>
#I Computing adjusted stabilizer chain...
<projective collineation group with 11 generators>
<span class="GAPprompt">gap></span> <span class="GAPinput">time;</span>
2045
<span class="GAPprompt">gap></span> <span class="GAPinput">gp := GeneralisedPolygonByElements(points,lines,inc,stab,\^);</span>
<generalised quadrangle of order [ 7, 9 ]>
<span class="GAPprompt">gap></span> <span class="GAPinput">time;</span>
394
<span class="GAPprompt">gap></span> <span class="GAPinput">coll := CollineationGroup(gp);</span>
<permutation group of size 5419008 with 9 generators>
<span class="GAPprompt">gap></span> <span class="GAPinput">time;</span>
62
<span class="GAPprompt">gap></span> <span class="GAPinput">Order(coll);</span>
5419008
<span class="GAPprompt">gap></span> <span class="GAPinput">Order(stab);</span>
5419008
</pre></div>
<p><a id="X8074EDB381D97984" name="X8074EDB381D97984"></a></p>
<h5>12.3-6 CollineationAction</h5>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ CollineationAction</code>( <var class="Arg">group</var> )</td><td class="tdright">( attribute )</td></tr></table></div>
<p>Returns: a function</p>
<p><var class="Arg">group</var> is a collineation group of a generalised polygon, computed using <code class="file">CollineationGroup</code>. The collineation group of classical generalised polygons will be a collineation group in the sense of <strong class="pkg">FinInG</strong>. The natural action is <code class="file">OnProjectiveSubspaces</code>. The collineation group of any other generalised polygons will be a permutation group. The result of <code class="file">CollineationAction</code> for such a group is a function with input a pair <var class="Arg">(x,g)</var> where <var class="Arg">x</var> is an element of the generalised polygon, and <var class="Arg">g</var> is a collineation of the generalised polygon, so an element of <var class="Arg">group</var>. The example illustrates the use in the generalised quadrangle.</p>
<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">q := 4;</span>
4
<span class="GAPprompt">gap></span> <span class="GAPinput">conic := ParabolicQuadric(2,q);</span>
Q(2, 4)
<span class="GAPprompt">gap></span> <span class="GAPinput">nucleus := NucleusOfParabolicQuadric(conic);</span>
<a point in ProjectiveSpace(2, 4)>
<span class="GAPprompt">gap></span> <span class="GAPinput">hyperoval := Union(List(Points(conic)),[nucleus]);</span>
[ <a point in ProjectiveSpace(2, 4)>, <a point in Q(2, 4)>,
<a point in Q(2, 4)>, <a point in Q(2, 4)>, <a point in Q(2, 4)>,
<a point in Q(2, 4)> ]
<span class="GAPprompt">gap></span> <span class="GAPinput">pg := PG(3,q);</span>
ProjectiveSpace(3, 4)
<span class="GAPprompt">gap></span> <span class="GAPinput">hyp := HyperplaneByDualCoordinates(pg,[1,0,0,0]*Z(q)^0);</span>
<a plane in ProjectiveSpace(3, 4)>
<span class="GAPprompt">gap></span> <span class="GAPinput">em := NaturalEmbeddingBySubspace(PG(2,q),pg,hyp);</span>
<geometry morphism from <All elements of ProjectiveSpace(2,
4)> to <All elements of ProjectiveSpace(3, 4)>>
<span class="GAPprompt">gap></span> <span class="GAPinput">O := List(hyperoval,x->x^em);</span>
[ <a point in ProjectiveSpace(3, 4)>, <a point in ProjectiveSpace(3, 4)>,
<a point in ProjectiveSpace(3, 4)>, <a point in ProjectiveSpace(3, 4)>,
<a point in ProjectiveSpace(3, 4)>, <a point in ProjectiveSpace(3, 4)> ]
<span class="GAPprompt">gap></span> <span class="GAPinput">points := Set(Filtered(Points(pg),x->not x in hyp));;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">lines := Union(List(O,x->Filtered(Lines(x),y->not y in hyp)));;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">inc := \*;</span>
<Operation "*">
<span class="GAPprompt">gap></span> <span class="GAPinput">gp := GeneralisedPolygonByElements(points,lines,inc);</span>
<generalised quadrangle of order [ 3, 5 ]>
<span class="GAPprompt">gap></span> <span class="GAPinput">coll := CollineationGroup(gp);</span>
<permutation group of size 138240 with 8 generators>
<span class="GAPprompt">gap></span> <span class="GAPinput">act := CollineationAction(coll);</span>
function( el, g ) ... end
<span class="GAPprompt">gap></span> <span class="GAPinput">g := Random(coll);</span>
(1,37,45,63,27,19)(2,53,13,64,11,51)(3,33,38,61,31,28)(4,49,6,62,15,60)(5,46,
47,59,20,17)(7,42,40,57,24,26)(8,58)(9,55)(10,39,41,56,25,23)(12,35,34,54,29,
32)(14,48,43,52,18,21)(16,44,36,50,22,30)(65,132,90,157,89,105)(66,68,131,143,
119,103)(67,135,76,123,130,106)(69,133,112,100,81,107)(70,134,150,88,155,
104)(71,99,79,144,93,149)(72,153,95,120,73,122)(74,125,115,128,140,87)(75,121,
136,117,113,91)(77,124,98,83,147,146)(78,145,84,118,85,142)(80,92,137,141,108,
97)(82,86,116,111,138,101)(94,127,126,102,109,96)(110,152,151,154,156,
129)(114,160,139,158,148,159)
<span class="GAPprompt">gap></span> <span class="GAPinput">l := Random(Lines(gp));</span>
<a line in <generalised quadrangle of order [ 3, 5 ]>>
<span class="GAPprompt">gap></span> <span class="GAPinput">act(l,g);</span>
<a line in <generalised quadrangle of order [ 3, 5 ]>>
<span class="GAPprompt">gap></span> <span class="GAPinput">p := Random(Points(gp));</span>
<a point in <generalised quadrangle of order [ 3, 5 ]>>
<span class="GAPprompt">gap></span> <span class="GAPinput">act(p,g);</span>
<a point in <generalised quadrangle of order [ 3, 5 ]>>
<span class="GAPprompt">gap></span> <span class="GAPinput">stab := Stabilizer(coll,p,act);</span>
<permutation group of size 2160 with 3 generators>
<span class="GAPprompt">gap></span> <span class="GAPinput">List(Orbits(stab,List(Points(gp)),act),x->Length(x));</span>
[ 45, 18, 1 ]
<span class="GAPprompt">gap></span> <span class="GAPinput">List(Orbits(stab,List(Lines(gp)),act),x->Length(x));</span>
[ 90, 6 ]
</pre></div>
<p><a id="X7D75521986B958DA" name="X7D75521986B958DA"></a></p>
<h5>12.3-7 BlockDesignOfGeneralisedPolygon</h5>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ BlockDesignOfGeneralisedPolygon</code>( <var class="Arg">gp</var> )</td><td class="tdright">( attribute )</td></tr></table></div>
<p>Returns: a block design</p>
<p>This method allows one to use the GAP package <strong class="pkg">DESIGN</strong> to analyse a generalised polygon, so the user must first load this package. The argument <var class="Arg">gp</var> is a generalised polygon, and if it has a collineation group, the block design is computed with this extra information and thus the resulting design is easier to work with. Likewise, if <var class="Arg">gp</var> is an elation generalised quadrangle and it has an elation group, then we use the elation group's action to efficiently compute the block design. We should also point out that this method returns a mutable attribute of gp, so that acquired information about the block design can be added. For example, the automorphism group of | |