Quellcodebibliothek Statistik Leitseite products/sources/formale Sprachen/GAP/pkg/fining/doc/   (Algebra von RWTH Aachen Version 4.15.1©)  Datei vom 27.6.2023 mit Größe 127 kB image not shown  

Quellcode-Bibliothek chap3.html   Sprache: HTML

 
 products/sources/formale Sprachen/GAP/pkg/fining/doc/chap3.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>
<title>GAP (FinInG) - Chapter 3: Incidence Geometry</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="chap3"  onload="jscontent()">


<div class="chlinktop"><span class="chlink1">Goto Chapter: </span><a href="chap0.html">Top</a>  <a href="chap1.html">1</a>  <a href="chap2.html">2</a>  <a href="chap3.html">3</a>  <a href="chap4.html">4</a>  <a href="chap5.html">5</a>  <a href="chap6.html">6</a>  <a href="chap7.html">7</a>  <a href="chap8.html">8</a>  <a href="chap9.html">9</a>  <a href="chap10.html">10</a>  <a href="chap11.html">11</a>  <a href="chap12.html">12</a>  <a href="chap13.html">13</a>  <a href="chap14.html">14</a>  <a href="chapA.html">A</a>  <a href="chapB.html">B</a>  <a href="chapC.html">C</a>  <a href="chapBib.html">Bib</a>  <a href="chapInd.html">Ind</a>  </div>

<div class="chlinkprevnexttop"> <a href="chap0.html">[Top of Book]</a>   <a href="chap0.html#contents">[Contents]</a>    <a href="chap2.html">[Previous Chapter]</a>    <a href="chap4.html">[Next Chapter]</a>   </div>

<p id="mathjaxlink" class="pcenter"><a href="chap3_mj.html">[MathJax on]</a></p>
<p><a id="X838ACF8A7F100A2B" name="X838ACF8A7F100A2B"></a></p>
<div class="ChapSects"><a href="chap3.html#X838ACF8A7F100A2B">3 <span class="Heading">Incidence Geometry</span></a>
<div class="ContSect"><span class="tocline"><span class="nocss"> </span><a href="chap3.html#X7FB175337C4F8B76">3.1 <span class="Heading">Incidence structures</span></a>
</span>
<div class="ContSSBlock">
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap3.html#X81F7D8FA82A55561">3.1-1 IsIncidenceStructure</a></span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap3.html#X78C74BE87E050E84">3.1-2 IsIncidenceGeometry</a></span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap3.html#X7C3258887C8DF5C1">3.1-3 IncidenceStructure</a></span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap3.html#X7B0347E2863C1E8C">3.1-4 <span class="Heading">Main categories in <code class="code">IsIncidenceGeometry</code></span></a>
</span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap3.html#X87FFB1648575FFF2">3.1-5 <span class="Heading">Examples of categories of incidence geometries</span></a>
</span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap3.html#X7E574AB27DA97063">3.1-6 TypesOfElementsOfIncidenceStructure</a></span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap3.html#X827146F37E2AA841">3.1-7 Rank</a></span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap3.html#X815BE6D57D623452">3.1-8 IncidenceGraph</a></span>
</div></div>
<div class="ContSect"><span class="tocline"><span class="nocss"> </span><a href="chap3.html#X7BBDB0AE7E29F3FB">3.2 <span class="Heading">Elements of incidence structures</span></a>
</span>
<div class="ContSSBlock">
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap3.html#X827CD3C881DC8364">3.2-1 <span class="Heading">Main categories for individual elements of incidence structures</span></a>
</span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap3.html#X810D4D6D87069697">3.2-2 UnderlyingObject</a></span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap3.html#X823B3D0F87FB5403">3.2-3 Type</a></span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap3.html#X7809B7C183FA7213">3.2-4 ObjectToElement</a></span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap3.html#X7DE974E687A2ABFB">3.2-5 <span class="Heading">Main categories for collections of all the elements of a given type of an incidence structure</span></a>
</span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap3.html#X87657AEF7E2C50F9">3.2-6 ElementsOfIncidenceStructure</a></span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap3.html#X87657AEF7E2C50F9">3.2-7 ElementsOfIncidenceStructure</a></span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap3.html#X87E64DA67C3D6661">3.2-8 <span class="Heading">Short names for ElementsOfIncidenceStructure</span></a>
</span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap3.html#X86CF041F7FA486D6">3.2-9 NrElementsOfIncidenceStructure</a></span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap3.html#X79730D657AB219DB">3.2-10 Random</a></span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap3.html#X7A9ED8327C40B445">3.2-11 IsIncident</a></span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap3.html#X799DB77886B8ABDB">3.2-12 AmbientGeometry</a></span>
</div></div>
<div class="ContSect"><span class="tocline"><span class="nocss"> </span><a href="chap3.html#X7DACFB6785029BF0">3.3 <span class="Heading">Flags of incidence structures</span></a>
</span>
<div class="ContSSBlock">
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap3.html#X7E204A78815C46DD">3.3-1 FlagOfIncidenceStructure</a></span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap3.html#X7A453E0E861F2C94">3.3-2 IsChamberOfIncidenceStructure</a></span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap3.html#X7AEFC2C57F10C3A7">3.3-3 IsEmptyFlag</a></span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap3.html#X86FFFBC584B97371">3.3-4 ElementsOfFlag</a></span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap3.html#X827146F37E2AA841">3.3-5 Rank</a></span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap3.html#X858ADA3B7A684421">3.3-6 Size</a></span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap3.html#X799DB77886B8ABDB">3.3-7 AmbientGeometry</a></span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap3.html#X823B3D0F87FB5403">3.3-8 Type</a></span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap3.html#X7A9ED8327C40B445">3.3-9 IsIncident</a></span>
</div></div>
<div class="ContSect"><span class="tocline"><span class="nocss"> </span><a href="chap3.html#X7AA14EDF7B0B1569">3.4 <span class="Heading">Shadow of elements</span></a>
</span>
<div class="ContSSBlock">
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap3.html#X7FFA08DA85C5251C">3.4-1 ShadowOfElement</a></span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap3.html#X81A8365A7FE68447">3.4-2 ElementsIncidentWithElementOfIncidenceStructure</a></span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap3.html#X7E86E6417871730C">3.4-3 ShadowOfFlag</a></span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap3.html#X78BE3D727B060301">3.4-4 ResidueOfFlag</a></span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap3.html#X7E29C31D7CB5DB23">3.4-5 <span class="Heading">Short names for ElementsIncidentWithElementOfIncidenceStructure</span></a>
</span>
</div></div>
<div class="ContSect"><span class="tocline"><span class="nocss"> </span><a href="chap3.html#X8133F88478BAFCB7">3.5 <span class="Heading">Enumerating elements of an incidence structure</span></a>
</span>
<div class="ContSSBlock">
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap3.html#X83ADF8287ED0668E">3.5-1 Iterator</a></span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap3.html#X7EF8910F82B45EC7">3.5-2 Enumerator</a></span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap3.html#X7EBA57FC7CCF8449">3.5-3 List</a></span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap3.html#X8289FCCC8274C89D">3.5-4 AsList</a></span>
</div></div>
<div class="ContSect"><span class="tocline"><span class="nocss"> </span><a href="chap3.html#X84D77D437B5F3716">3.6 <span class="Heading">Lie geometries</span></a>
</span>
<div class="ContSSBlock">
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap3.html#X7D012B9F86E63702">3.6-1 <span class="Heading">Main categories in <code class="code">IsLieGeometry</code></span></a>
</span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap3.html#X8606750A8586DF8D">3.6-2 AmbientSpace</a></span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap3.html#X7D544D7985A4572D">3.6-3 UnderlyingVectorSpace</a></span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap3.html#X84FDF25D797B874B">3.6-4 ProjectiveDimension</a></span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap3.html#X85DFF5177CA51AE0">3.6-5 IsEmptySubspace</a></span>
</div></div>
<div class="ContSect"><span class="tocline"><span class="nocss"> </span><a href="chap3.html#X7FBCF60385E8C1D8">3.7 <span class="Heading">Elements of Lie geometries</span></a>
</span>
<div class="ContSSBlock">
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap3.html#X82E9593B8074AECB">3.7-1 VectorSpaceToElement</a></span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap3.html#X810D4D6D87069697">3.7-2 UnderlyingObject</a></span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap3.html#X87BDB89B7AAFE8AD"><code>3.7-3 \in</code></a></span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap3.html#X814C3AC27E49AD5B">3.7-4 <span class="Heading">More short names for <code class="file">ElementsIncidentWithElementOfIncidenceStructure</code></span></a>
</span>
</div></div>
<div class="ContSect"><span class="tocline"><span class="nocss"> </span><a href="chap3.html#X7A9EBF9782671634">3.8 <span class="Heading">Changing the ambient geometry of elements of a Lie geometry</span></a>
</span>
<div class="ContSSBlock">
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap3.html#X8561C0117FD76C94">3.8-1 ElementToElement</a></span>
</div></div>
</div>

<h3>3 <span class="Heading">Incidence Geometry</span></h3>

<p>We follow <a href="chapBib.html#biBBC2013">[BC13]</a> for the definitions of incidence structure and incidence geometry. An <em>incidence structure</em> consists of a set of elements, a symmetric relation on the elements and a type function from the set of elements to an index set (i.e., every element has a ``type''). It satisfies the following axiom: <em>(i) no two elements of the same type are incident.</em> An incidence structure without type function is in fact a multipartite graph where the adjacency is the incidence (so with a loop on each vertex). The term geometry, or incidence geometry, is interpreted broadly in this package. Particularly, an <em>incidence geometry</em> is an incidence structure satisfying the following axiom: <em>(ii) every maximal flag contains an element of each type</em>. In graph terminology, this means that every maximal clique contains an element of each type. Thus, a projective 5-space is an incidence geometry with five types of elements: points, lines, planes, solids, and hyperplanes. A finite classical polar space of rank 3 is an incidence geometry with three types of elements: points, lines, and planes. Depending on the viewpoint, the Grassmann variety of the lines of a projective 4-space, is an incidence structure that is not an incidence geometry.</p>

<p><strong class="pkg">FinInG</strong> concerns itself primarily with the most commonly studied incidence geometries of rank at least 2: projective spaces, polar spaces, and affine spaces. Throughout, no matter the geometry, we have made the convention that an element of type 1 is a ``point'', an element of type 2 is a ``line'', and so forth. The examples we use in this section use projective spaces, which have not yet been introduced to the reader in this manual. For further information on projective spaces, see Chapter <a href="chap4.html#X83BBAA668672A76D"><span class="RefLink">4</span></a>.</p>

<p>In this chapter we describe functionality that is <strong class="button">declared</strong> for incidence structures, which does not imply that operations described here will work for arbitrary user-constructed incidence structures. Its aim is furthermore to allow the user to become familiar with the general philosophy of the package, using examples that are self-explanatory. Not all details of the commands used in the examples will be explained in this chapter, therefore we refer to the relevant chapter for the commands. These can easily be found using the index.</p>

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

<h4>3.1 <span class="Heading">Incidence structures</span></h4>

<p>Incidence structures can be more general than incidence geometries, e.g., if they do not satisfy axiom (ii) mentioned above. We allow the construction of such objects. This explains one of the top level categories in <strong class="pkg">FinInG</strong>.</p>

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

<h5>3.1-1 IsIncidenceStructure</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ IsIncidenceStructure</code></td><td class="tdright">( category )</td></tr></table></div>
<p>Top level category for all objects representing an incidence structure.</p>

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

<h5>3.1-2 IsIncidenceGeometry</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ IsIncidenceGeometry</code></td><td class="tdright">( category )</td></tr></table></div>
<p>Category for all objects representing an incidence geometry. All particular geometries implemented in <strong class="pkg">FinInG</strong> are incidence geometries.</p>

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

<h5>3.1-3 IncidenceStructure</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ IncidenceStructure</code>( <var class="Arg">eles</var>, <var class="Arg">inc_rel</var>, <var class="Arg">type</var>, <var class="Arg">typeset</var> )</td><td class="tdright">( operation )</td></tr></table></div>
<p>Returns: an incidence structure</p>

<p><var class="Arg">eles</var> is a set containing the elements of the incidence structure. <var class="Arg">inc_rel</var> must be a function that determines whether two objects in the set <var class="Arg">eles</var> are incident. <var class="Arg">type</var> is a function mapping any element to its type, which is a unique element in the set <var class="Arg">typeset</var>.</p>

<p>In the following example we define an incidence structure that is not an incidence geometry. The example used is the incidence structure with elements the subspaces contained in the line Grassmannian of PG(4,2). This example is not meant to create this incidence structure in an efficient way, but just to demonstrate the general philosophy.</p>


<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">pg := PG(4,2);</span>
ProjectiveSpace(4, 2)
<span class="GAPprompt">gap></span> <span class="GAPinput">pg2 := PG(9,2);</span>
ProjectiveSpace(9, 2)
<span class="GAPprompt">gap></span> <span class="GAPinput">points := List(Lines(pg),x->VectorSpaceToElement(pg2,GrassmannCoordinates(x)));;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">flags := Concatenation(List(Points(pg),x->List(Planes(x),y->FlagOfIncidenceStructure(pg,[x,y]))));;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">prelines := List(flags,flag->ShadowOfFlag(pg,flag,2));;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">lines := List(prelines,x->VectorSpaceToElement(pg2,List(x,y->GrassmannCoordinates(y))));;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">flags2 := Concatenation(List(Points(pg),x->List(Solids(x),y->FlagOfIncidenceStructure(pg,[x,y]))));;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">preplanes := List(flags2,flag->ShadowOfFlag(pg,flag,2));;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">planes := List(preplanes,x->VectorSpaceToElement(pg2,List(x,y->GrassmannCoordinates(y))));;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">maximals1 := List(Planes(pg),x->VectorSpaceToElement(pg2,List(Lines(x),y->GrassmannCoordinates(y))));;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">maximals2 := List(Points(pg),x->VectorSpaceToElement(pg2,List(Lines(x),y->GrassmannCoordinates(y))));;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">elements := Union(points,lines,planes,maximals1,maximals2);;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">Length(elements);</span>
1891
<span class="GAPprompt">gap></span> <span class="GAPinput">type := x -> ProjectiveDimension(x)+1;</span>
function( x ) ... end
<span class="GAPprompt">gap></span> <span class="GAPinput">inc_rel := \*;</span>
<Operation "*">
<span class="GAPprompt">gap></span> <span class="GAPinput">inc := IncidenceStructure(elements,inc_rel,type,[1,2,3,4]);</span>
Incidence structure of rank 4
<span class="GAPprompt">gap></span> <span class="GAPinput">Rank(inc);</span>
4


</pre></div>

<p>Lie Geometries, i.e., geometries with a projective space as ambient space, affine spaces and generalised polygons have their own category, which is a subcategory of <code class="code">IsIncidenceGeometry</code>.</p>

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

<h5>3.1-4 <span class="Heading">Main categories in <code class="code">IsIncidenceGeometry</code></span></h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ IsLieGeometry</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">‣ IsAffineSpace</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">‣ 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">‣ IsCosetGeometry</code></td><td class="tdright">( category )</td></tr></table></div>
<p>Within each category, several subcategories are declared. Subcategories of <code class="code">IsLieGeometry</code> are discussed in Section <a href="chap3.html#X84D77D437B5F3716"><span class="RefLink">3.6</span></a> and subcategories of <code class="code">IsGeneralisedPolygon</code> are discussed in Chapter <a href="chap12.html#X7E1F10767D2A4D6A"><span class="RefLink">12</span></a></p>

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

<h5>3.1-5 <span class="Heading">Examples of categories of incidence geometries</span></h5>


<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">CategoriesOfObject(ProjectiveSpace(5,7));</span>
"IsIncidenceStructure""IsIncidenceGeometry""IsLieGeometry"
  "IsProjectiveSpace" ]
<span class="GAPprompt">gap></span> <span class="GAPinput">CategoriesOfObject(HermitianPolarSpace(5,9));</span>
"IsIncidenceStructure""IsIncidenceGeometry""IsLieGeometry"
  "IsClassicalPolarSpace""IsAlgebraicVariety""IsProjectiveVariety"
  "IsHermitianVariety" ]
<span class="GAPprompt">gap></span> <span class="GAPinput">CategoriesOfObject(AffineSpace(3,3));</span>
"IsIncidenceStructure""IsIncidenceGeometry""IsAffineSpace" ]
<span class="GAPprompt">gap></span> <span class="GAPinput">CategoriesOfObject(SymplecticSpace(3,11));</span>
"IsIncidenceStructure""IsIncidenceGeometry""IsLieGeometry"
  "IsClassicalPolarSpace""IsGeneralisedPolygon""IsGeneralisedQuadrangle"
  "IsClassicalGQ" ]
<span class="GAPprompt">gap></span> <span class="GAPinput">CategoriesOfObject(SplitCayleyHexagon(9));</span>
"IsIncidenceStructure""IsIncidenceGeometry""IsLieGeometry"
  "IsGeneralisedPolygon""IsGeneralisedHexagon"
  "IsClassicalGeneralisedHexagon" ]
<span class="GAPprompt">gap></span> <span class="GAPinput">CategoriesOfObject(ParabolicQuadric(4,16));</span>
"IsIncidenceStructure""IsIncidenceGeometry""IsLieGeometry"
  "IsClassicalPolarSpace""IsGeneralisedPolygon""IsGeneralisedQuadrangle"
  "IsClassicalGQ""IsAlgebraicVariety""IsProjectiveVariety" ]
 
</pre></div>

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

<h5>3.1-6 TypesOfElementsOfIncidenceStructure</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ TypesOfElementsOfIncidenceStructure</code>( <var class="Arg">inc</var> )</td><td class="tdright">( attribute )</td></tr></table></div>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ TypesOfElementsOfIncidenceStructurePlural</code>( <var class="Arg">inc</var> )</td><td class="tdright">( attribute )</td></tr></table></div>
<p>Returns: a list of strings or integers</p>

<p>Both attributes are declared for objects in the category <code class="code">IsIncidenceStructure</code>. Any incidence structure has a set of types, which is usually just the list <span class="SimpleMath">[1..n]</span>. If specific names are given to each type, like points, lines, etc., this attribute returns the names for the particular incidence structure <var class="Arg">inc</var>. The second variant returns the list of plurals of these names. For generically constructed incidence structures, the names of the Elements are also generic: elements of type 1, elements of type 2, etc.</p>


<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">TypesOfElementsOfIncidenceStructure(ProjectiveSpace(5,4));</span>
"point""line""plane""solid""proj. 4-space" ]
<span class="GAPprompt">gap></span> <span class="GAPinput">TypesOfElementsOfIncidenceStructurePlural(AffineSpace(7,4));</span>
"points""lines""planes""solids""affine. subspaces of dim. 4"
  "affine. subspaces of dim. 5""affine. subspaces of dim. 6" ]
 
</pre></div>

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

<h5>3.1-7 Rank</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ Rank</code>( <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">‣ RankAttr</code>( <var class="Arg">inc</var> )</td><td class="tdright">( attribute )</td></tr></table></div>
<p>Returns: rank of <var class="Arg">inc</var>, an object which must belong to the category <code class="code">IsIncidenceStructure</code></p>

<p>The operation <code class="file">Rank</code> returns the rank of the incidence structure <code class="code">inc</code>. The highest level method for <code class="file">Rank</code>, applicable to objects in <code class="code">IsIncidenceStructure</code> simply refers to the attribute <code class="file">RankAttr</code>. In <strong class="pkg">FinInG</strong>, the rank of an incidence structure is determined upon creation, when also <code class="file">RankAttr</code> is set.</p>


<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">Rank(ProjectiveSpace(5,5));</span>
5
<span class="GAPprompt">gap></span> <span class="GAPinput">Rank(AffineSpace(3,5));</span>
3
<span class="GAPprompt">gap></span> <span class="GAPinput">Rank(SymplecticSpace(5,5));</span>
3
 
</pre></div>

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

<h5>3.1-8 IncidenceGraph</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ IncidenceGraph</code>( <var class="Arg">inc</var> )</td><td class="tdright">( attribute )</td></tr></table></div>
<p>Returns: a graph</p>

<p>The vertices are the elements of <var class="Arg">inc</var>, adjacency between different vertices is equal to incidence, and there are of course no loops. For generic incidence structures, i.e. constructed through <code class="file">IncidenceStructure</code>, there is no efficient method installed, so this operation can be time consuming.</p>

<p>If <var class="Arg">inc</var> is a generic incidence structure, i.e. created using <code class="file">IncidenceStructure</code>, the vertex names of the graph are integers. It is not by default possible to use the elements of <var class="Arg">inc</var> as vertex names, since it is not known in the generic case whether the elements of different type of <var class="Arg">inc</var> can be ordered. For particular incidence geometries, e.g. projective spaces, etc., the vertex names will be the elements, which will be demonstrated through examples in the appropriate chapters.</p>

<p>In the example we consider the so-called doubling of the smallest generalised quadrangle: the points of the incidence structure are the points and the lines of the GQ, the lines of the incidence structure are all the point-line flags of the GQ. The incidence is the natural one. It is then checked that diameter and girth of the incidence graph are 8 and 16 respectively, which makes that the incidence structure is a generalised octagon.</p>


<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">ps := SymplecticSpace(3,2);</span>
W(3, 2)
<span class="GAPprompt">gap></span> <span class="GAPinput">pts := List(Points(ps));;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">lines := List(Lines(ps));;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">flags := Union(List(pts,x->List(Lines(x),y->FlagOfIncidenceStructure(ps,[x,y]))));;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">inc := function(x,y)</span>
<span class="GAPprompt">></span> <span class="GAPinput">if x = y then</span>
<span class="GAPprompt">></span> <span class="GAPinput">    return true;</span>
<span class="GAPprompt">></span> <span class="GAPinput">elif IsFlagOfIncidenceStructure(x) and IsElementOfIncidenceStructure(y) then</span>
<span class="GAPprompt">></span> <span class="GAPinput">    return IsIncident(x,y);</span>
<span class="GAPprompt">></span> <span class="GAPinput">elif IsElementOfIncidenceStructure(x) and IsElementOfIncidenceStructure(y) then</span>
<span class="GAPprompt">></span> <span class="GAPinput">    return false;</span>
<span class="GAPprompt">></span> <span class="GAPinput">elif IsFlagOfIncidenceStructure(x) and IsFlagOfIncidenceStructure(y) then   </span>
<span class="GAPprompt">></span> <span class="GAPinput">    return false;</span>
<span class="GAPprompt">></span> <span class="GAPinput">else </span>
<span class="GAPprompt">></span> <span class="GAPinput">    return inc(y,x);</span>
<span class="GAPprompt">></span> <span class="GAPinput">fi;</span>
<span class="GAPprompt">></span> <span class="GAPinput">end;</span>
function( x, y ) ... end
<span class="GAPprompt">gap></span> <span class="GAPinput">type := function(x)</span>
<span class="GAPprompt">></span> <span class="GAPinput">if IsList(Type(x)) then</span>
<span class="GAPprompt">></span> <span class="GAPinput">    return 2;</span>
<span class="GAPprompt">></span> <span class="GAPinput">else</span>
<span class="GAPprompt">></span> <span class="GAPinput">    return 1;</span>
<span class="GAPprompt">></span> <span class="GAPinput">fi;</span>
<span class="GAPprompt">></span> <span class="GAPinput">end;</span>
function( x ) ... end
<span class="GAPprompt">gap></span> <span class="GAPinput">els := Union(pts,lines,flags);;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">struc := IncidenceStructure(els,inc,type,[1,2]);</span>
Incidence structure of rank 2
<span class="GAPprompt">gap></span> <span class="GAPinput">gamma := IncidenceGraph(struc);</span>
rec( adjacencies := [ [ 31, 32, 33 ], [ 34, 35, 36 ], [ 37, 38, 39 ], 
      [ 40, 41, 42 ], [ 43, 44, 45 ], [ 46, 47, 48 ], [ 49, 50, 51 ], 
      [ 52, 53, 54 ], [ 55, 56, 57 ], [ 58, 59, 60 ], [ 61, 62, 63 ], 
      [ 64, 65, 66 ], [ 67, 68, 69 ], [ 70, 71, 72 ], [ 73, 74, 75 ], 
      [ 31, 40, 43 ], [ 32, 52, 55 ], [ 33, 64, 67 ], [ 34, 41, 46 ], 
      [ 35, 53, 58 ], [ 36, 65, 70 ], [ 37, 42, 49 ], [ 38, 54, 61 ], 
      [ 39, 66, 73 ], [ 44, 59, 74 ], [ 45, 62, 71 ], [ 47, 56, 75 ], 
      [ 50, 57, 72 ], [ 48, 63, 68 ], [ 51, 60, 69 ], [ 1, 16 ], [ 1, 17 ], 
      [ 1, 18 ], [ 2, 19 ], [ 2, 20 ], [ 2, 21 ], [ 3, 22 ], [ 3, 23 ], 
      [ 3, 24 ], [ 4, 16 ], [ 4, 19 ], [ 4, 22 ], [ 5, 16 ], [ 5, 25 ], 
      [ 5, 26 ], [ 6, 19 ], [ 6, 27 ], [ 6, 29 ], [ 7, 22 ], [ 7, 28 ], 
      [ 7, 30 ], [ 8, 17 ], [ 8, 20 ], [ 8, 23 ], [ 9, 17 ], [ 9, 27 ], 
      [ 9, 28 ], [ 10, 20 ], [ 10, 25 ], [ 10, 30 ], [ 11, 23 ], [ 11, 26 ], 
      [ 11, 29 ], [ 12, 18 ], [ 12, 21 ], [ 12, 24 ], [ 13, 18 ], [ 13, 29 ], 
      [ 13, 30 ], [ 14, 21 ], [ 14, 26 ], [ 14, 28 ], [ 15, 24 ], [ 15, 25 ], 
      [ 15, 27 ] ], group := Group(()), isGraph := true, names := [ 1 .. 75 ],
  order := 75, 
  representatives := [ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 
      17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 
      35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 
      53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 
      71, 72, 73, 74, 75 ], 
  schreierVector := [ -1, -2, -3, -4, -5, -6, -7, -8, -9, -10, -11, -12, -13, 
      -14, -15, -16, -17, -18, -19, -20, -21, -22, -23, -24, -25, -26, -27, 
      -28, -29, -30, -31, -32, -33, -34, -35, -36, -37, -38, -39, -40, -41, 
      -42, -43, -44, -45, -46, -47, -48, -49, -50, -51, -52, -53, -54, -55, 
      -56, -57, -58, -59, -60, -61, -62, -63, -64, -65, -66, -67, -68, -69, 
      -70, -71, -72, -73, -74, -75 ] )
<span class="GAPprompt">gap></span> <span class="GAPinput">Diameter(gamma);</span>
8
<span class="GAPprompt">gap></span> <span class="GAPinput">Girth(gamma);</span>
16

</pre></div>

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

<h4>3.2 <span class="Heading">Elements of incidence structures</span></h4>

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

<h5>3.2-1 <span class="Heading">Main categories for individual elements of incidence structures</span></h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ IsElementOfIncidenceStructure</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">‣ IsElementOfIncidenceGeometry</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">‣ IsElementOfLieGeometry</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">‣ IsElementOfAffineSpace</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">‣ IsElementOfCosetGeometry</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">‣ IsSubspaceOfProjectiveSpace</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">‣ IsSubspaceOfClassicalPolarSpace</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">‣ IsElementOfGeneralisedPolygon</code></td><td class="tdright">( category )</td></tr></table></div>
<p>In general, elements of an incidence structure belonging to <code class="code">IsIncStr</code>, are in the category <code class="code">IsElementOfIncStr</code>. The inclusion for different categories of geometries is followed for their elements, with an exception for <code class="code">IsSubspaceOfClassicalPolarSpace</code>, which is a subcategory of <code class="code">IsSubspaceOfProjectiveSpace</code>, while <code class="code">IsClassicalPolarSpace</code> is not a subcategory of <code class="code">IsProjectiveSpace</code>.</p>


<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">Random(Lines(SplitCayleyHexagon(3)));</span>
#I  for Split Cayley Hexagon
#I  Computing nice monomorphism...
#I  Found permutation domain...
<a line in H(3)>
<span class="GAPprompt">gap></span> <span class="GAPinput">CategoriesOfObject(last);</span>
"IsElementOfIncidenceStructure""IsElementOfIncidenceGeometry"
  "IsElementOfLieGeometry""IsSubspaceOfProjectiveSpace"
  "IsSubspaceOfClassicalPolarSpace""IsElementOfGeneralisedPolygon" ]
<span class="GAPprompt">gap></span> <span class="GAPinput">Random(Solids(AffineSpace(7,17)));</span>
<a solid in AG(7, 17)>
<span class="GAPprompt">gap></span> <span class="GAPinput">CategoriesOfObject(last);</span>
"IsElementOfIncidenceStructure""IsElementOfIncidenceGeometry"
  "IsSubspaceOfAffineSpace" ]
 
</pre></div>

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

<h5>3.2-2 UnderlyingObject</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ UnderlyingObject</code>( <var class="Arg">el</var> )</td><td class="tdright">( operation )</td></tr></table></div>
<p>Returns: an object</p>

<p>An element of an incidence structure has a type and an underlying object. E.g. a line of a projective space is determined by a two dimensional sub vector space, which is determined by a basis. Elements of incidence structure can also be objects representing elements of other incidence structures, as is e.g. the case in the example of <a href="chap3.html#X7C3258887C8DF5C1"><span class="RefLink">3.1-3</span></a>. The examples shows the underlying objects of elements of three totally different incidence geometries.</p>


<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">pg := PG(2,2);</span>
ProjectiveSpace(2, 2)
<span class="GAPprompt">gap></span> <span class="GAPinput">p := Random(Points(pg));</span>
<a point in ProjectiveSpace(2, 2)>
<span class="GAPprompt">gap></span> <span class="GAPinput">UnderlyingObject(p);</span>
<cvec over GF(2,1) of length 3>
<span class="GAPprompt">gap></span> <span class="GAPinput">l := Random(Lines(pg));</span>
<a line in ProjectiveSpace(2, 2)>
<span class="GAPprompt">gap></span> <span class="GAPinput">UnderlyingObject(l);</span>
<cmat 2x3 over GF(2,1)>
<span class="GAPprompt">gap></span> <span class="GAPinput">mat := [ [ 1, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 ], </span>
<span class="GAPprompt">></span> <span class="GAPinput">  [ 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 ], </span>
<span class="GAPprompt">></span> <span class="GAPinput">  [ 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0 ], </span>
<span class="GAPprompt">></span> <span class="GAPinput">  [ 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0 ], </span>
<span class="GAPprompt">></span> <span class="GAPinput">  [ 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0 ], </span>
<span class="GAPprompt">></span> <span class="GAPinput">  [ 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0 ], </span>
<span class="GAPprompt">></span> <span class="GAPinput">  [ 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0 ], </span>
<span class="GAPprompt">></span> <span class="GAPinput">  [ 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0 ], </span>
<span class="GAPprompt">></span> <span class="GAPinput">  [ 0, 0, 0, 0, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0 ], </span>
<span class="GAPprompt">></span> <span class="GAPinput">  [ 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 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, 0, 0 ], </span>
<span class="GAPprompt">></span> <span class="GAPinput">  [ 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 1 ], </span>
<span class="GAPprompt">></span> <span class="GAPinput">  [ 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1 ], </span>
<span class="GAPprompt">></span> <span class="GAPinput">  [ 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0 ], </span>
<span class="GAPprompt">></span> <span class="GAPinput">  [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1 ] ];</span>
[ [ 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 ] ]
<span class="GAPprompt">gap></span> <span class="GAPinput">gp := GeneralisedPolygonByIncidenceMatrix(mat);</span>
<generalised quadrangle of order [ 2, 2 ]>
<span class="GAPprompt">gap></span> <span class="GAPinput">p := Random(Points(gp));</span>
<a point in <generalised quadrangle of order [ 2, 2 ]>>
<span class="GAPprompt">gap></span> <span class="GAPinput">UnderlyingObject(p);</span>
15
<span class="GAPprompt">gap></span> <span class="GAPinput">l := Random(Lines(gp));</span>
<a line in <generalised quadrangle of order [ 2, 2 ]>>
<span class="GAPprompt">gap></span> <span class="GAPinput">UnderlyingObject(l);</span>
[ 7, 13, 15 ]
<span class="GAPprompt">gap></span> <span class="GAPinput">egq := EGQByBLTSet(BLTSetByqClan(LinearqClan(3)));</span>
#I  Now embedding dual BLT-set into W(5,q)...
#I  Computing elation group...
<EGQ of order [ 9, 3 ] and basepoint in W(5, 3 ) >
<span class="GAPprompt">gap></span> <span class="GAPinput">p := Random(Points(egq));</span>
<a point in <EGQ of order [ 9, 3 ] and basepoint in W(5, 3 ) >>
<span class="GAPprompt">gap></span> <span class="GAPinput">UnderlyingObject(p);</span>
<a point in W(5, 3)>

</pre></div>

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

<h5>3.2-3 Type</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ Type</code>( <var class="Arg">el</var> )</td><td class="tdright">( operation )</td></tr></table></div>
<p>Returns: an integer</p>

<p>An element of an incidence structure has a type and an underlying object. Its type is always a non-negative integer. This operation returns the type of an element.</p>


<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">pg := PG(2,2);</span>
ProjectiveSpace(2, 2)
<span class="GAPprompt">gap></span> <span class="GAPinput">p := Random(Points(pg));</span>
<a point in ProjectiveSpace(2, 2)>
<span class="GAPprompt">gap></span> <span class="GAPinput">Type(p);</span>
1
<span class="GAPprompt">gap></span> <span class="GAPinput">l := Random(Lines(pg));</span>
<a line in ProjectiveSpace(2, 2)>
<span class="GAPprompt">gap></span> <span class="GAPinput">Type(l);</span>
2

</pre></div>

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

<h5>3.2-4 ObjectToElement</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ ObjectToElement</code>( <var class="Arg">inc</var>, <var class="Arg">t</var>, <var class="Arg">obj</var> )</td><td class="tdright">( operation )</td></tr></table></div>
<p>Returns: an element of the incidence structure <var class="Arg">inc</var></p>

<p>If <var class="Arg">obj</var> represents an element of <var class="Arg">inc</var> of type <var class="Arg">t</var>, this operation returns the element. An error (or no method found error) is shown when <var class="Arg">obj</var> does not represent an element of type <var class="Arg">t</var>. Note that <code class="file">ObjectToElement</code> is a generic operation. Versions with a different argument set and even alternative operations exist for some particular geometries to construct particular elements.</p>

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

<h5>3.2-5 <span class="Heading">Main categories for collections of all the elements of a given type of an incidence structure</span></h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ IsElementsOfIncidenceStructure</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">‣ IsElementsOfIncidenceGeometry</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">‣ IsElementsOfLieGeometry</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">‣ IsElementsOfAffineSpace</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">‣ IsElementsOfCosetGeometry</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">‣ IsSubspacesOfProjectiveSpace</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">‣ IsSubspacesOfClassicalPolarSpace</code></td><td class="tdright">( category )</td></tr></table></div>
<p>For a given incidence structure, the collection of elements of a given type can be constructed. constructed here means that an object is returned that represents all the elements of a given type, rather than listing them immediately, to avoid long computation times. Such an abstract object is e.g. used as a range for In general, the collection of elements of a given type of an incidence structure belonging to <code class="code">IsIncStr</code>, is in the category <code class="code">IsElementsOfIncStr</code>. The inclusion for different categories of geometries is followed for their collection of elements of a given type, with an exception for <code class="code">IsSubspacesOfClassicalPolarSpace</code>, which is a subcategory of <code class="code">IsSubspacesOfProjectiveSpace</code>, while <code class="code">IsClassicalPolarSpace</code> is not a subcategory of <code class="code">IsProjectiveSpace</code>.</p>

<p>The object representing the set of elements of a given type can be computed using the general operation <code class="file">ElementsOfIncidenceStructure</code>.</p>

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

<h5>3.2-6 ElementsOfIncidenceStructure</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ ElementsOfIncidenceStructure</code>( <var class="Arg">inc</var>, <var class="Arg">j</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">‣ ElementsOfIncidenceStructure</code>( <var class="Arg">inc</var>, <var class="Arg">str</var> )</td><td class="tdright">( operation )</td></tr></table></div>
<p>Returns: a collection of elements</p>

<p><var class="Arg">inc</var> must be an incidence structure, <var class="Arg">j</var> must be a type of element of <var class="Arg">inc</var>. This function returns all elements of <var class="Arg">inc</var> of type <var class="Arg">j</var>, and an error is displayed if <var class="Arg">inc</var> has no elements of type <var class="Arg">j</var>. Calling the elements (of a given type) of <var class="Arg">inc</var> yields an object in the category <code class="code">IsElementsOfIncidenceStructure</code> (or the appropriate category for projective spaces and classical polar spaces), which does not imply that all elements are computed and stored. In an alternative form of this function <var class="Arg">str</var> can be one of the strings found in the list obtained by calling <code class="file">TypesOfElementsOfIncidenceStructurePlural(inc)</code>. E.g. for projective spaces, ``points", ``lines", ``planes" or ``solids" are the names for elements of type 1,2,3 or 4, respectively, of course if <var class="Arg">inc</var> has elements of the deduced type.</p>


<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">ps := ProjectiveSpace(3,3);</span>
ProjectiveSpace(3, 3)
<span class="GAPprompt">gap></span> <span class="GAPinput">l := ElementsOfIncidenceStructure(ps,2);</span>
<lines of ProjectiveSpace(3, 3)>
<span class="GAPprompt">gap></span> <span class="GAPinput">ps := EllipticQuadric(5,9);</span>
Q-(5, 9)
<span class="GAPprompt">gap></span> <span class="GAPinput">lines := ElementsOfIncidenceStructure(ps,2);</span>
<lines of Q-(5, 9)>
<span class="GAPprompt">gap></span> <span class="GAPinput">planes := ElementsOfIncidenceStructure(ps,3);</span>
Error, <geo> has no elements of type <j> called from
<function "unknown">( <arguments> )
 called from read-eval loop at line 12 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">as := AffineSpace(3,9);</span>
AG(3, 9)
<span class="GAPprompt">gap></span> <span class="GAPinput">lines := ElementsOfIncidenceStructure(as,"lines");</span>
<lines of AG(3, 9)>
 
</pre></div>

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

<h5>3.2-7 ElementsOfIncidenceStructure</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ ElementsOfIncidenceStructure</code>( <var class="Arg">inc</var> )</td><td class="tdright">( operation )</td></tr></table></div>
<p>Returns: a collection of elements</p>

<p><var class="Arg">inc</var> must be an incidence structure, then this operation returns the collection of all elements of <var class="Arg">inc</var>. Such a collection can e.g. be the range of a geometry morphism. Note that this operation has no method for generic incidence structures constructed using <code class="file">Incidence Structure</code>.</p>

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

<h5>3.2-8 <span class="Heading">Short names for ElementsOfIncidenceStructure</span></h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ Points</code>( <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">‣ Lines</code>( <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">‣ Planes</code>( <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">‣ Solids</code>( <var class="Arg">inc</var> )</td><td class="tdright">( operation )</td></tr></table></div>
<p>Returns: The points, lines, planes, solids, respectively of <var class="Arg">inc</var></p>

<p>For geometries in <code class="code">IsLieGeometry</code>, <code class="code">IsAffineSpace</code>, and <code class="code">IsGeneralisedPolygon</code>, the elements of type 1,2,3,4 respectively are called usually points, lines, planes, solids, respectively. These methods are, for such geometries, are shortcuts to <code class="file">ElementsOfIncidenceStructure(inc,j)</code>, with <var class="Arg">j</var> equal to 1,2,3,4, respectively.</p>


<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">Points(HermitianVariety(2,64));</span>
<points of Hermitian Variety in ProjectiveSpace(2, 64)>
<span class="GAPprompt">gap></span> <span class="GAPinput">Lines(EllipticQuadric(5,2));</span>
<lines of Q-(5, 2)>
<span class="GAPprompt">gap></span> <span class="GAPinput">Planes(SymplecticSpace(7,3));</span>
<planes of W(7, 3)>
<span class="GAPprompt">gap></span> <span class="GAPinput">Lines(TwistedTrialityHexagon(2^3));</span>
<lines of T(8, 2)>
 
</pre></div>

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

<h5>3.2-9 NrElementsOfIncidenceStructure</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ NrElementsOfIncidenceStructure</code>( <var class="Arg">inc</var>, <var class="Arg">j</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">‣ NrElementsOfIncidenceStructure</code>( <var class="Arg">inc</var>, <var class="Arg">str</var> )</td><td class="tdright">( operation )</td></tr></table></div>
<p>Returns: a positive integer</p>

<p><var class="Arg">inc</var> must be an incidence structure, <var class="Arg">j</var> must be a type of element of <var class="Arg">inc</var>. This function returns the number of elements of <var class="Arg">inc</var> of type <var class="Arg">j</var>, and an error is displayed if <var class="Arg">inc</var> has no elements of type <var class="Arg">j</var>. In the alternative form of this function <var class="Arg">str</var> can be one of ``points", ``lines", ``planes" or ``solids" and the function returns the number of elements of type 1, 2, 3 or 4 respectively, of course if <var class="Arg">inc</var> has elements of the deduced type. For geometries in the category <code class="code">IsLieGeometry</code>, <code class="code">IsAffineSpace</code>, and <code class="code">IsGeneralisedPolygon</code>, the number of elements of a given type is known upon construction of the geometry. As such, for these geometries, this operation requires no computing time.</p>


<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">ps:=ProjectiveSpace(4,3);</span>
ProjectiveSpace(4, 3)
<span class="GAPprompt">gap></span> <span class="GAPinput">NrElementsOfIncidenceStructure(ps, 2);</span>
1210
<span class="GAPprompt">gap></span> <span class="GAPinput">NrElementsOfIncidenceStructure(ps, "points");</span>
121
 
</pre></div>

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

<h5>3.2-10 Random</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ Random</code>( <var class="Arg">C</var> )</td><td class="tdright">( operation )</td></tr></table></div>
<p>Returns: an element in the collection <var class="Arg">C</var></p>

<p><var class="Arg">C</var> is a collection of elements of an incidence structure, i.e., an object in the category <code class="code">IsElementsOfIncidenceStructure</code>. <code class="file">Random(C)</code> will return a random element in <var class="Arg">C</var> provided there is a method installed. The generic method will compute all elements in <var class="Arg">C</var> and return a random member from the list. For e.g. Lie geometries, more efficient methods are installed.</p>


<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">coll := Hyperplanes(PG(5,7));</span>
<proj. 4-subspaces of ProjectiveSpace(5, 7)>
<span class="GAPprompt">gap></span> <span class="GAPinput">Random(coll);</span>
<a proj. 4-space in ProjectiveSpace(5, 7)>
 
</pre></div>

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

<h5>3.2-11 IsIncident</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ IsIncident</code>( <var class="Arg">u</var>, <var class="Arg">v</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">‣ \*</code>( <var class="Arg">u</var>, <var class="Arg">v</var> )</td><td class="tdright">( operation )</td></tr></table></div>
<p>Returns: true or false</p>

<p><var class="Arg">u</var> and <var class="Arg">v</var> must be elements of an incidence structure. This function returns true if and only if <var class="Arg">u</var> is incident with <var class="Arg">v</var>. Recall that <code class="code">IsIncident</code> is a symmetric relation, while <code class="code">in</code> is not. A method for the operation <code class="file">\*</code> is installed, applicable to objects in <code class="code">IsElementOfIncidenceStructure</code>. It just calls <code class="file">IsIncident</code>.</p>


<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">p := Random(Points(PG(5,4)));</span>
<a point in ProjectiveSpace(5, 4)>
<span class="GAPprompt">gap></span> <span class="GAPinput">l := Random(Lines(p));</span>
<a line in ProjectiveSpace(5, 4)>
<span class="GAPprompt">gap></span> <span class="GAPinput">IsIncident(p,l);</span>
true
<span class="GAPprompt">gap></span> <span class="GAPinput">IsIncident(l,p);</span>
true
<span class="GAPprompt">gap></span> <span class="GAPinput">p * l;</span>
true
<span class="GAPprompt">gap></span> <span class="GAPinput">l * p;</span>
true
<span class="GAPprompt">gap></span> <span class="GAPinput">p * p;</span>
true
<span class="GAPprompt">gap></span> <span class="GAPinput">l * l;</span>
true
 
</pre></div>

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

<h5>3.2-12 AmbientGeometry</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ AmbientGeometry</code>( <var class="Arg">v</var> )</td><td class="tdright">( operation )</td></tr></table></div>
<p>Returns: the ambient geometry of the element <var class="Arg">v</var></p>

<p>If <var class="Arg">v</var> is an element of an incidence geometry currently implemented in <strong class="pkg">FinInG</strong>, then this operation returns the ambient geometry of <var class="Arg">v</var>, i.e., in general the geometry in which <var class="Arg">v</var> was created. If an incidence structure is created with elements that are a subset of elements of another incidence structure, the ambient geometry might stay unchanged.</p>


<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">plane := Random(Planes(HyperbolicQuadric(5,2)));</span>
<a plane in Q+(5, 2)>
<span class="GAPprompt">gap></span> <span class="GAPinput">AmbientGeometry(plane);</span>
Q+(5, 2)
<span class="GAPprompt">gap></span> <span class="GAPinput">l := Random(Lines(SplitCayleyHexagon(3)));</span>
#I  for Split Cayley Hexagon
#I  Computing nice monomorphism...
#I  Found permutation domain...
<a line in H(3)>
<span class="GAPprompt">gap></span> <span class="GAPinput">Print(l);</span>
NewMatrix(IsCMatRep,GF(3,1),7,[[ Z(3)^0, 0*Z(3), 0*Z(3), 0*Z(3), 0*Z(3), 
  Z(3)^0, Z(3)^0 ],[ 0*Z(3), Z(3)^0, Z(3), Z(3)^0, 0*Z(3), Z(3)^0, 0*Z(3) ],])
<span class="GAPprompt">gap></span> <span class="GAPinput">AmbientGeometry(l);</span>
H(3)
<span class="GAPprompt">gap></span> <span class="GAPinput">p := Random(Points(EGQByBLTSet(BLTSetByqClan(LinearqClan(3)))));</span>
#I  Now embedding dual BLT-set into W(5,q)...
#I  Computing elation group...
<a point in <EGQ of order [ 9, 3 ] and basepoint in W(5, 3 ) >>
<span class="GAPprompt">gap></span> <span class="GAPinput">Print(p);</span>
NewRowVector(IsCVecRep,GF(3,1),[Z(3)^0,Z(3),Z(3),Z(3),Z(3)^0,0*Z(3),])
<span class="GAPprompt">gap></span> <span class="GAPinput">AmbientGeometry(p);</span>
<EGQ of order [ 9, 3 ] and basepoint in W(5, 3 ) >
 
</pre></div>

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

<h4>3.3 <span class="Heading">Flags of incidence structures</span></h4>

<p>A <em>flag</em> of an incidence structure <span class="SimpleMath">S</span> is a set <span class="SimpleMath">F</span> of elements of <span class="SimpleMath">S</span> that are two by two incident. This implies that all elements in <span class="SimpleMath">F</span> have a different type. A flag is maximal if it cannot be extended with more elements. <strong class="pkg">FinInG</strong> provides a basic category <code class="code">IsFlagOfIncidenceStructure</code>. For different types of incidence structures, methods to create a flag can be installed. A <em>chamber</em> is a flag of size <span class="SimpleMath">n</span>, where <span class="SimpleMath">n</span> is the rank of the incidence structure. Recall that an incidence structure is an incidence geometry if every maximal flag is a chamber.</p>

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

<h5>3.3-1 FlagOfIncidenceStructure</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ FlagOfIncidenceStructure</code>( <var class="Arg">inc</var>, <var class="Arg">l</var> )</td><td class="tdright">( operation )</td></tr></table></div>
<p>Returns: the flag consisting of the elements of <var class="Arg">inc</var> in the list <var class="Arg">l</var></p>

<p>It is checked if all elements in <var class="Arg">l</var> are incident and belong to the same incidence structure. An empty list is allowed.</p>


<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">ps := PG(3,7);</span>
ProjectiveSpace(3, 7)
<span class="GAPprompt">gap></span> <span class="GAPinput">point := VectorSpaceToElement(ps,[1,2,0,0]*Z(7)^0);</span>
<a point in ProjectiveSpace(3, 7)>
<span class="GAPprompt">gap></span> <span class="GAPinput">line := VectorSpaceToElement(ps,[[1,0,0,0],[0,1,0,0]]*Z(7)^0);</span>
<a line in ProjectiveSpace(3, 7)>
<span class="GAPprompt">gap></span> <span class="GAPinput">plane := VectorSpaceToElement(ps,[[1,0,0,0],[0,1,0,0],[0,0,0,1]]*Z(7)^0);</span>
<a plane in ProjectiveSpace(3, 7)>
<span class="GAPprompt">gap></span> <span class="GAPinput">flag := FlagOfIncidenceStructure(ps,[point,line,plane]);</span>
<a flag of ProjectiveSpace(3, 7)>
 
</pre></div>

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

<h5>3.3-2 IsChamberOfIncidenceStructure</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ IsChamberOfIncidenceStructure</code>( <var class="Arg">flag</var> )</td><td class="tdright">( operation )</td></tr></table></div>
<p>Returns: true if and only if <var class="Arg">flag</var> contains an element of each type</p>

<p>The incidence structure is determined by the elements.</p>


<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">ps := PG(3,7);</span>
ProjectiveSpace(3, 7)
<span class="GAPprompt">gap></span> <span class="GAPinput">point := VectorSpaceToElement(ps,[1,2,0,0]*Z(7)^0);</span>
<a point in ProjectiveSpace(3, 7)>
<span class="GAPprompt">gap></span> <span class="GAPinput">line := VectorSpaceToElement(ps,[[1,0,0,0],[0,1,0,0]]*Z(7)^0);</span>
<a line in ProjectiveSpace(3, 7)>
<span class="GAPprompt">gap></span> <span class="GAPinput">plane := VectorSpaceToElement(ps,[[1,0,0,0],[0,1,0,0],[0,0,0,1]]*Z(7)^0);</span>
<a plane in ProjectiveSpace(3, 7)>
<span class="GAPprompt">gap></span> <span class="GAPinput">flag1 := FlagOfIncidenceStructure(ps,[point,plane]);</span>
<a flag of ProjectiveSpace(3, 7)>
<span class="GAPprompt">gap></span> <span class="GAPinput">IsChamberOfIncidenceStructure(flag1);</span>
false
<span class="GAPprompt">gap></span> <span class="GAPinput">flag2 := FlagOfIncidenceStructure(ps,[point,line,plane]);</span>
<a flag of ProjectiveSpace(3, 7)>
<span class="GAPprompt">gap></span> <span class="GAPinput">IsChamberOfIncidenceStructure(flag2);</span>
true
 
</pre></div>

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

<h5>3.3-3 IsEmptyFlag</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ IsEmptyFlag</code>( <var class="Arg">flag</var> )</td><td class="tdright">( operation )</td></tr></table></div>
<p>Returns: true or false</p>

<p>It is possible to construct the empty flag of an incidence structure. This operation tests whether a given flag is empty.</p>

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

<h5>3.3-4 ElementsOfFlag</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ ElementsOfFlag</code>( <var class="Arg">flag</var> )</td><td class="tdright">( operation )</td></tr></table></div>
<p>Returns: a list of elements</p>

<p>This operations simply returns the list of elements that define <var class="Arg">flag</var></p>


<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">gp := SplitCayleyHexagon(4);</span>
H(4)
<span class="GAPprompt">gap></span> <span class="GAPinput">p := Random(Points(gp));</span>
#I  for Split Cayley Hexagon
#I  Computing nice monomorphism...
#I  Found permutation domain...
<a point in H(4)>
<span class="GAPprompt">gap></span> <span class="GAPinput">l := Random(Lines(p));</span>
<a line in H(4)>
<span class="GAPprompt">gap></span> <span class="GAPinput">flag := FlagOfIncidenceStructure(gp,[l,p]);</span>
<a flag of H(4)>
<span class="GAPprompt">gap></span> <span class="GAPinput">ElementsOfFlag(flag);</span>
[ <a point in H(4)>, <a line in H(4)> ]

</pre></div>

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

<h5>3.3-5 Rank</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ Rank</code>( <var class="Arg">flag</var> )</td><td class="tdright">( attribute )</td></tr></table></div>
<p>Returns: an integer</p>

<p>This operations returns the number of elements that define <var class="Arg">flag</var></p>


<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">ps := ParabolicQuadric(8,3); </span>
Q(8, 3)
<span class="GAPprompt">gap></span> <span class="GAPinput">l := Random(Lines(ps));</span>
<a line in Q(8, 3)>
<span class="GAPprompt">gap></span> <span class="GAPinput">plane := Random(Planes(l));</span>
<a plane in Q(8, 3)>
<span class="GAPprompt">gap></span> <span class="GAPinput">solid := Random(Solids(plane));</span>
<a solid in Q(8, 3)>
<span class="GAPprompt">gap></span> <span class="GAPinput">flag := FlagOfIncidenceStructure(ps,[l,plane,solid]);</span>
<a flag of Q(8, 3) >
<span class="GAPprompt">gap></span> <span class="GAPinput">Rank(flag);</span>
3

</pre></div>

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

<h5>3.3-6 Size</h5>

--> --------------------

--> maximum size reached

--> --------------------

100%


¤ 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.0.93Bemerkung:  (vorverarbeitet)  ¤

*Bot Zugriff






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.