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 90 kB image not shown  

Quelle  chap2.html   Sprache: HTML

 
 products/Sources/formale Sprachen/GAP/pkg/fining/doc/chap2.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 2: Examples</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="chap2"  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="chap1.html">[Previous Chapter]</a>    <a href="chap3.html">[Next Chapter]</a>   </div>

<p id="mathjaxlink" class="pcenter"><a href="chap2_mj.html">[MathJax on]</a></p>
<p><a id="X7A489A5D79DA9E5C" name="X7A489A5D79DA9E5C"></a></p>
<div class="ChapSects"><a href="chap2.html#X7A489A5D79DA9E5C">2 <span class="Heading">Examples</span></a>
<div class="ContSect"><span class="tocline"><span class="nocss"> </span><a href="chap2.html#X81660CB279889CB6">2.1 <span class="Heading">Elementary examples</span></a>
</span>
<div class="ContSSBlock">
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap2.html#X8016E6857D53F2ED">2.1-1 <span class="Heading">subspaces of projective spaces</span></a>
</span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap2.html#X7B99511887D41A95">2.1-2 <span class="Heading">Subspaces of classical polar spaces</span></a>
</span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap2.html#X8555398C83677C27">2.1-3 <span class="Heading">Underlying objects</span></a>
</span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap2.html#X8771ACB879E479C6">2.1-4 <span class="Heading">Constructing polar spaces</span></a>
</span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap2.html#X85D3BB2A8274DDCB">2.1-5 <span class="Heading">Some collineation groups</span></a>
</span>
</div></div>
<div class="ContSect"><span class="tocline"><span class="nocss"> </span><a href="chap2.html#X825F78F57E309197">2.2 <span class="Heading">Some objects with interesting combinatorial properties</span></a>
</span>
<div class="ContSSBlock">
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap2.html#X815BB30986E84DB1">2.2-1 <span class="Heading">The Tits ovoid</span></a>
</span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap2.html#X7E79F18B8170B4B3">2.2-2 <span class="Heading">Lines meeting a hermitian curve</span></a>
</span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap2.html#X85C255FD78C50992">2.2-3 <span class="Heading">The Patterson ovoid</span></a>
</span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap2.html#X80B93785876EF3E0">2.2-4 <span class="Heading">A hyperoval</span></a>
</span>
</div></div>
<div class="ContSect"><span class="tocline"><span class="nocss"> </span><a href="chap2.html#X876240A479A5717C">2.3 <span class="Heading">Geometry morphisms</span></a>
</span>
<div class="ContSSBlock">
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap2.html#X79CE092B7E17DF24">2.3-1 <span class="Heading">Isomorphic polar spaces</span></a>
</span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap2.html#X83ADB5AE8624C74C">2.3-2 <span class="Heading">Intertwiners</span></a>
</span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap2.html#X7C7438AB86A493FE">2.3-3 <span class="Heading">Klein correspondence</span></a>
</span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap2.html#X869EB94D841AE028">2.3-4 <span class="Heading">Embedding in a subspace</span></a>
</span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap2.html#X7FE8E4BF7E700E65">2.3-5 <span class="Heading">Subgeometries</span></a>
</span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap2.html#X838BBDD97FA03FD0">2.3-6 <span class="Heading">Embedding by field reduction</span></a>
</span>
</div></div>
<div class="ContSect"><span class="tocline"><span class="nocss"> </span><a href="chap2.html#X855C8E6D819EB975">2.4 <span class="Heading">Some geometrical objects</span></a>
</span>
<div class="ContSSBlock">
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap2.html#X8475841778D3BEEC">2.4-1 <span class="Heading">Spreads of <span class="SimpleMath">W(5,3)</span></span></a>
</span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap2.html#X81F516D07E8165B9">2.4-2 <span class="Heading">Distance-6 spread of the split Cayley hexagon</span></a>
</span>
</div></div>
<div class="ContSect"><span class="tocline"><span class="nocss"> </span><a href="chap2.html#X7F13364A7EEA2AD1">2.5 <span class="Heading">Some particular incidence geometries</span></a>
</span>
<div class="ContSSBlock">
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap2.html#X79623B9E7D5816B3">2.5-1 <span class="Heading">The split Cayley hexagon</span></a>
</span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap2.html#X8528558E87DE72C5">2.5-2 <span class="Heading">An (apartment of) a building of type <span class="SimpleMath">E_6</span></span></a>
</span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap2.html#X7B783473852C7899">2.5-3 <span class="Heading">A rank 4 geometry for <span class="SimpleMath">PSL(2,11)</span></span></a>
</span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap2.html#X80128FF17BB62C83">2.5-4 <span class="Heading">The Ree-Tits octagon of order <span class="SimpleMath">[2,4]</span> as coset geometry</span></a>
</span>
</div></div>
<div class="ContSect"><span class="tocline"><span class="nocss"> </span><a href="chap2.html#X7BA462527B2777BC">2.6 <span class="Heading">Elation generalised quadrangles</span></a>
</span>
<div class="ContSSBlock">
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap2.html#X7E3707857A74AB5E">2.6-1 <span class="Heading">The classical q-clan</span></a>
</span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap2.html#X83357ED78789111E">2.6-2 <span class="Heading">Two ways to construct a flock generalised quadrangle from a Kantor-Knuth semifield q-clan</span></a>
</span>
</div></div>
<div class="ContSect"><span class="tocline"><span class="nocss"> </span><a href="chap2.html#X87EC44BF7F24486E">2.7 <span class="Heading">Algebraic varieties</span></a>
</span>
<div class="ContSSBlock">
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap2.html#X7ABCF9637B60FF37">2.7-1 <span class="Heading">A projective variety</span></a>
</span>
</div></div>
</div>

<h3>2 <span class="Heading">Examples</span></h3>

<p>In this chapter we provide some simple examples of the use of <strong class="pkg">FinInG</strong>.</p>

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

<h4>2.1 <span class="Heading">Elementary examples</span></h4>

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

<h5>2.1-1 <span class="Heading">subspaces of projective spaces</span></h5>

<p>The following example shows how to create some subspaces of a projective space, test their incidence, and determine their span and intersection. Projective spaces are considered as incidence geometries too. Incidence, to be tested with <code class="file">IsIncident</code> or equivalently <code class="file">\*</code>, is symmetrized set-theoretic containment, the latter which can be tested through the operation <code class="file">in</code>.</p>


<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">pg := PG(3,8);</span>
ProjectiveSpace(3, 8)
<span class="GAPprompt">gap></span> <span class="GAPinput">vec := [0,1,0,1]*Z(8)^0;</span>
[ 0*Z(2), Z(2)^0, 0*Z(2), Z(2)^0 ]
<span class="GAPprompt">gap></span> <span class="GAPinput">point := VectorSpaceToElement(pg,vec);</span>
<a point in ProjectiveSpace(3, 8)>
<span class="GAPprompt">gap></span> <span class="GAPinput">mat := [[0,0,1,1],[0,1,0,0]]*Z(8)^0;</span>
[ [ 0*Z(2), 0*Z(2), Z(2)^0, Z(2)^0 ], [ 0*Z(2), Z(2)^0, 0*Z(2), 0*Z(2) ] ]
<span class="GAPprompt">gap></span> <span class="GAPinput">line := VectorSpaceToElement(pg,mat);</span>
<a line in ProjectiveSpace(3, 8)>
<span class="GAPprompt">gap></span> <span class="GAPinput">mat2 := [[1,0,0,1],[1,0,1,0],[1,1,0,0]]*Z(8)^0;</span>
[ [ Z(2)^0, 0*Z(2), 0*Z(2), Z(2)^0 ], [ Z(2)^0, 0*Z(2), Z(2)^0, 0*Z(2) ], 
  [ Z(2)^0, Z(2)^0, 0*Z(2), 0*Z(2) ] ]
<span class="GAPprompt">gap></span> <span class="GAPinput">plane := VectorSpaceToElement(pg,mat2);</span>
<a plane in ProjectiveSpace(3, 8)>
<span class="GAPprompt">gap></span> <span class="GAPinput">IsIncident(point,line);</span>
false
<span class="GAPprompt">gap></span> <span class="GAPinput">IsIncident(line,point);</span>
false
<span class="GAPprompt">gap></span> <span class="GAPinput">point * line;</span>
false
<span class="GAPprompt">gap></span> <span class="GAPinput">line * point</span>
<span class="GAPprompt">></span> <span class="GAPinput">point in line;</span>
Syntax error: ; expected
point in line;
    ^
<span class="GAPprompt">gap></span> <span class="GAPinput">line in point;</span>
false
<span class="GAPprompt">gap></span> <span class="GAPinput">IsIncident(point,plane);</span>
true
<span class="GAPprompt">gap></span> <span class="GAPinput">IsIncident(line,plane);</span>
false
<span class="GAPprompt">gap></span> <span class="GAPinput">line in plane;</span>
false
<span class="GAPprompt">gap></span> <span class="GAPinput">plane2 := Span(point,line);</span>
<a plane in ProjectiveSpace(3, 8)>
<span class="GAPprompt">gap></span> <span class="GAPinput">Meet(plane,plane2);</span>
<a line in ProjectiveSpace(3, 8)>
<span class="GAPprompt">gap></span> <span class="GAPinput">mat3 := [[1,0,0,0],[0,0,0,1]]*Z(8)^0;</span>
[ [ Z(2)^0, 0*Z(2), 0*Z(2), 0*Z(2) ], [ 0*Z(2), 0*Z(2), 0*Z(2), Z(2)^0 ] ]
<span class="GAPprompt">gap></span> <span class="GAPinput">line2 := VectorSpaceToElement(pg,mat3);</span>
<a line in ProjectiveSpace(3, 8)>
<span class="GAPprompt">gap></span> <span class="GAPinput">Meet(line,line2);</span>
< empty subspace >
<span class="GAPprompt">gap></span> <span class="GAPinput">Span(plane,plane2);</span>
ProjectiveSpace(3, 8)

</pre></div>

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

<h5>2.1-2 <span class="Heading">Subspaces of classical polar spaces</span></h5>

<p><strong class="pkg">FinInG</strong> provides classical polar spaces. Subspaces can be constructed the same way as subspaces of projective spaces. Upon construction, it is checked whether the given vector space does determine a subspace of the polar space. Subspaces of polar spaces are also subspaces of the ambient projective space. Operations like <code class="file">Span</code> and <code class="file">Meet</code> are naturally applicable. However, the span of two subspaces might not be a subspace of the polar space anymore, and if the two subspaces belong to two different polar spaces in the same ambient projective space, it cannot be determined in which polar space thspan should be constructed. Therefore the result of <code class="file">Span</code> of two subspaces of a polar space is a subspace of the ambient projective space. It can be checked whether the result belongs to a polar space using <code class="file">in</code>. This illustrates very well a general philosophy: a subspace of a polar space, and more generally, an element of any incidence structure is always aware of its ambient geometry. This example also illustrates how to create an element that belongs to the polar space from the subspace of the ambient projective geometry by using <code class="file">ElementToElement</code>. Finally note the behaviour of <code class="file">=</code> applied on the two subspaces. Clearly, a subspace of a polar space is really also a subspace of the ambient projective space.</p>


<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">ps := EllipticQuadric(5,7);</span>
Q-(5, 7)
<span class="GAPprompt">gap></span> <span class="GAPinput">vec := [1,0,0,0,0,0]*Z(7)^0;</span>
[ Z(7)^0, 0*Z(7), 0*Z(7), 0*Z(7), 0*Z(7), 0*Z(7) ]
<span class="GAPprompt">gap></span> <span class="GAPinput">point := VectorSpaceToElement(ps,vec);</span>
Error, <v> does not generate an element of <geom> called from
<function "unknown">( <arguments> )
 called from read-eval loop at line 10 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">EquationForPolarSpace(ps);</span>
x_1^2+x_2^2+x_3*x_4+x_5*x_6
<span class="GAPprompt">gap></span> <span class="GAPinput">vec := [0,0,1,0,0,0]*Z(7)^0;</span>
[ 0*Z(7), 0*Z(7), Z(7)^0, 0*Z(7), 0*Z(7), 0*Z(7) ]
<span class="GAPprompt">gap></span> <span class="GAPinput">point := VectorSpaceToElement(ps,vec);</span>
<a point in Q-(5, 7)>
<span class="GAPprompt">gap></span> <span class="GAPinput">vec2 := [0,0,0,1,0,0]*Z(7)^0;</span>
[ 0*Z(7), 0*Z(7), 0*Z(7), Z(7)^0, 0*Z(7), 0*Z(7) ]
<span class="GAPprompt">gap></span> <span class="GAPinput">point2 := VectorSpaceToElement(ps,vec2);</span>
<a point in Q-(5, 7)>
<span class="GAPprompt">gap></span> <span class="GAPinput">line := Span(point,point2);</span>
<a line in ProjectiveSpace(5, 7)>
<span class="GAPprompt">gap></span> <span class="GAPinput">mat := [[0,0,1,0,0,0],[0,0,0,0,1,0]]*Z(7)^0;</span>
[ [ 0*Z(7), 0*Z(7), Z(7)^0, 0*Z(7), 0*Z(7), 0*Z(7) ], 
  [ 0*Z(7), 0*Z(7), 0*Z(7), 0*Z(7), Z(7)^0, 0*Z(7) ] ]
<span class="GAPprompt">gap></span> <span class="GAPinput">line2 := VectorSpaceToElement(ps,mat);</span>
<a line in Q-(5, 7)>
<span class="GAPprompt">gap></span> <span class="GAPinput">meet := Meet(line,line2);</span>
<a point in ProjectiveSpace(5, 7)>
<span class="GAPprompt">gap></span> <span class="GAPinput">meet in ps;</span>
true
<span class="GAPprompt">gap></span> <span class="GAPinput">point3 := ElementToElement(ps,meet);</span>
<a point in Q-(5, 7)>

</pre></div>

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

<h5>2.1-3 <span class="Heading">Underlying objects</span></h5>

<p>Subspaces of projective spaces and polar spaces (and in general, elements of incidence structures), are determined by a mathematical object, called in <strong class="pkg">FinInG</strong> the <em>underlying object</em>. The operation <code class="file">UnderlyingObject</code> simply returns this underlying object. For elements determined by vectors or sub vector spaces, the underlying objects are a vector or a matrix. To represent these objects and to do very efficient orbit calculations under groups, we use the <strong class="pkg">cvec</strong>. This can be noted when applying <code class="file">UnderlyingObject</code>. The operation <code class="file">Unpack</code> simply converts the cvec objects into GAP vectors and matrices. The example also illustrates how the underlying object of an element of an affine spaces looks like.</p>


<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">pg := PG(3,169);</span>
ProjectiveSpace(3, 169)
<span class="GAPprompt">gap></span> <span class="GAPinput">p := Random(Points(pg));</span>
<a point in ProjectiveSpace(3, 169)>
<span class="GAPprompt">gap></span> <span class="GAPinput">UnderlyingObject(p);</span>
<cvec over GF(13,2) of length 4>
<span class="GAPprompt">gap></span> <span class="GAPinput">Unpack(last);</span>
[ Z(13)^0, Z(13^2)^49, Z(13^2)^31, Z(13^2)^143 ]
<span class="GAPprompt">gap></span> <span class="GAPinput">l := Random(Lines(pg));</span>
<a line in ProjectiveSpace(3, 169)>
<span class="GAPprompt">gap></span> <span class="GAPinput">UnderlyingObject(l);</span>
<cmat 2x4 over GF(13,2)>
<span class="GAPprompt">gap></span> <span class="GAPinput">Unpack(last);</span>
[ [ Z(13)^0, 0*Z(13), 0*Z(13), Z(13^2)^96 ], 
  [ 0*Z(13), Z(13)^0, Z(13^2)^113, Z(13^2)^99 ] ]
<span class="GAPprompt">gap></span> <span class="GAPinput">quadric := EllipticQuadric(5,2);</span>
Q-(5, 2)
<span class="GAPprompt">gap></span> <span class="GAPinput">line := Random(Lines(quadric));</span>
<a line in Q-(5, 2)>
<span class="GAPprompt">gap></span> <span class="GAPinput">UnderlyingObject(line);</span>
<cmat 2x6 over GF(2,1)>
<span class="GAPprompt">gap></span> <span class="GAPinput">Unpack(last);</span>
[ [ 0*Z(2), 0*Z(2), Z(2)^0, 0*Z(2), 0*Z(2), Z(2)^0 ], 
  [ 0*Z(2), 0*Z(2), 0*Z(2), Z(2)^0, Z(2)^0, 0*Z(2) ] ]
<span class="GAPprompt">gap></span> <span class="GAPinput">ag := AG(4,3);</span>
AG(4, 3)
<span class="GAPprompt">gap></span> <span class="GAPinput">plane := Random(Planes(ag));</span>
<a plane in AG(4, 3)>
<span class="GAPprompt">gap></span> <span class="GAPinput">UnderlyingObject(plane);</span>
[ <cvec over GF(3,1) of length 4>, <cmat 2x4 over GF(3,1)> ]

</pre></div>

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

<h5>2.1-4 <span class="Heading">Constructing polar spaces</span></h5>

<p><strong class="pkg">FinInG</strong> provides the classical polar spaces as the geometries of which the subspaces are represented by the totally isotropic (resp. totally singular) vector subspaces with relation to a chosen sesquilinear (resp. quadratic form). The user may choose any non-degenerate (resp. non-singular) form to construct the polar space. The usage of the forms makes <strong class="pkg">FinInG</strong> dependent on the package <strong class="pkg">forms</strong>. Shortcuts to polar spaces in <em>standard</em> representation are included. Detailed information can be found in Section <a href="chap7.html#X850CD32686B0656B"><span class="RefLink">7.2</span></a>.</p>


<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">ps := HermitianPolarSpace(4,9);</span>
H(4, 3^2)
<span class="GAPprompt">gap></span> <span class="GAPinput">EquationForPolarSpace(ps);</span>
x_1^4+x_2^4+x_3^4+x_4^4+x_5^4
<span class="GAPprompt">gap></span> <span class="GAPinput">ps := HyperbolicQuadric(5,7);</span>
Q+(5, 7)
<span class="GAPprompt">gap></span> <span class="GAPinput">EquationForPolarSpace(ps);</span>
x_1*x_2+x_3*x_4+x_5*x_6
<span class="GAPprompt">gap></span> <span class="GAPinput">ps := SymplecticSpace(3,3);</span>
W(3, 3)
<span class="GAPprompt">gap></span> <span class="GAPinput">EquationForPolarSpace(ps);</span>
x1*y2-x2*y1+x3*y4-x4*y3
<span class="GAPprompt">gap></span> <span class="GAPinput">mat := IdentityMat(4,GF(11));</span>
[ [ Z(11)^0, 0*Z(11), 0*Z(11), 0*Z(11) ], 
  [ 0*Z(11), Z(11)^0, 0*Z(11), 0*Z(11) ], 
  [ 0*Z(11), 0*Z(11), Z(11)^0, 0*Z(11) ], 
  [ 0*Z(11), 0*Z(11), 0*Z(11), Z(11)^0 ] ]
<span class="GAPprompt">gap></span> <span class="GAPinput">form := BilinearFormByMatrix(mat,GF(11));</span>
< bilinear form >
<span class="GAPprompt">gap></span> <span class="GAPinput">ps := PolarSpace(form);</span>
<polar space in ProjectiveSpace(3,GF(11)): x_1^2+x_2^2+x_3^2+x_4^2=0 >
<span class="GAPprompt">gap></span> <span class="GAPinput">Rank(ps);</span>
2
<span class="GAPprompt">gap></span> <span class="GAPinput">ps;</span>
Q+(3, 11): x_1^2+x_2^2+x_3^2+x_4^2=0

</pre></div>

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

<h5>2.1-5 <span class="Heading">Some collineation groups</span></h5>

<p>In principle, the full group of collineations of almost any incidence structure can be computed in <strong class="pkg">FinInG</strong>. Mathematically, this is almost obvious for projective spaces and affine spaces. For classical polar spaces, the particular forms plays a role. The coordinate change capabilities of the package <strong class="pkg">forms</strong>, together with the standard theory (see <a href="chapBib.html#biBKleidmanLiebeck">[KL90]</a>), ensure that the full collineation group of a classical polar space can be relatively easily obtained. The computation of the full collineation group of particular incidence structures, such as generalised polygons, may rely on the computation of the automorphism group of an underlying incidence graph, which is done by using nauty through the package <strong class="pkg">GRAPE</strong>. Note that the elements of a projective collineation group are semilinear maps, they consist of a matrix together with a field automorphism.</p>


<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">pg := PG(3,4);</span>
ProjectiveSpace(3, 4)
<span class="GAPprompt">gap></span> <span class="GAPinput">coll := CollineationGroup(pg);</span>
The FinInG collineation group PGammaL(4,4)
<span class="GAPprompt">gap></span> <span class="GAPinput">gens := GeneratorsOfGroup(coll);</span>
[ < a collineation: <cmat 4x4 over GF(2,2)>, F^0>, 
  < a collineation: <cmat 4x4 over GF(2,2)>, F^0>, 
  < a collineation: <cmat 4x4 over GF(2,2)>, F^2> ]
<span class="GAPprompt">gap></span> <span class="GAPinput">UnderlyingMatrix(gens[2]);</span>
<cmat 4x4 over GF(2,2)>
<span class="GAPprompt">gap></span> <span class="GAPinput">Unpack(last);</span>
[ [ Z(2)^0, 0*Z(2), 0*Z(2), Z(2)^0 ], [ Z(2)^0, 0*Z(2), 0*Z(2), 0*Z(2) ], 
  [ 0*Z(2), Z(2)^0, 0*Z(2), 0*Z(2) ], [ 0*Z(2), 0*Z(2), Z(2)^0, 0*Z(2) ] ]
<span class="GAPprompt">gap></span> <span class="GAPinput">as := AffineSpace(3,4);</span>
AG(3, 4)
<span class="GAPprompt">gap></span> <span class="GAPinput">coll := CollineationGroup(as);</span>
AGammaL(3,4)
<span class="GAPprompt">gap></span> <span class="GAPinput">GeneratorsOfGroup(coll);</span>
[ < a collineation: <cmat 4x4 over GF(2,2)>, F^0>, 
  < a collineation: <cmat 4x4 over GF(2,2)>, F^0>, 
  < a collineation: <cmat 4x4 over GF(2,2)>, F^0>, 
  < a collineation: <cmat 4x4 over GF(2,2)>, F^2> ]
<span class="GAPprompt">gap></span> <span class="GAPinput">gp := SplitCayleyHexagon(3);</span>
H(3)
<span class="GAPprompt">gap></span> <span class="GAPinput">coll:= CollineationGroup(gp);</span>
#I  for Split Cayley Hexagon
#I  Computing nice monomorphism...
#I  Found permutation domain...
G_2(3)
<span class="GAPprompt">gap></span> <span class="GAPinput">GeneratorsOfGroup(coll);</span>
[ < a collineation: <cmat 7x7 over GF(3,1)>, F^0>, 
  < a collineation: <cmat 7x7 over GF(3,1)>, F^0>, 
  < a collineation: <cmat 7x7 over GF(3,1)>, F^0>, 
  < a collineation: <cmat 7x7 over GF(3,1)>, F^0>, 
  < a collineation: <cmat 7x7 over GF(3,1)>, F^0> ]
<span class="GAPprompt">gap></span> <span class="GAPinput">egq := 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">coll := CollineationGroup(egq);</span>
#I  Computing incidence graph of generalised polygon...
#I  Using elation of the collineation group...
<permutation group of size 26127360 with 6 generators>

</pre></div>

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

<h4>2.2 <span class="Heading">Some objects with interesting combinatorial properties</span></h4>

<p>The examples here are meant to give a flavour of how to explore geometrical objects from different point of views.</p>

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

<h5>2.2-1 <span class="Heading">The Tits ovoid</span></h5>

<p>In this example we consider the Tits ovoid in <span class="SimpleMath">PG(3,8)</span>. We explicitly check the intersection number of the Tits-ovoid with planes of the projective space, and compute its stabiliser group inside the homography group of <span class="SimpleMath">PG(3,8)</span>. The use of <code class="file">;;</code> after a command suppresses its output, which is particularly interesting if the output is a long list. The operation <code class="file">Collected</code> is self-explanatory, and a very useful GAP command. The computed stabiliser is the Suzuki group <span class="SimpleMath">Sz(8)</span>, a finite simple group.</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">pg := PG(3,q);</span>
ProjectiveSpace(3, 8)
<span class="GAPprompt">gap></span> <span class="GAPinput">f := GF(q);</span>
GF(2^3)
<span class="GAPprompt">gap></span> <span class="GAPinput">vecs := Union(List(f,x->List(f,y->[One(f),x*y+x^6+y^4,x,y])));;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">Add(vecs,[0,1,0,0]*Z(q)^0);</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">ovoid := List(vecs,x->VectorSpaceToElement(pg,x));;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">numbers := List(Planes(pg),x->Number(ovoid,y->y in x));</span>
[ 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 
  9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 
  9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 1, 1, 9, 
  9, 9, 9, 9, 9, 9, 9, 9, 1, 9, 9, 1, 9, 9, 9, 9, 9, 1, 1, 9, 9, 9, 9, 9, 9, 
  9, 9, 9, 9, 9, 9, 1, 9, 9, 9, 9, 1, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 
  9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 1, 
  9, 1, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 1, 9, 9, 9, 9, 9, 1, 
  9, 9, 1, 9, 9, 1, 9, 9, 9, 9, 9, 1, 1, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 
  9, 9, 9, 9, 9, 9, 9, 9, 1, 9, 9, 9, 1, 9, 9, 9, 9, 9, 1, 9, 9, 9, 1, 9, 9, 
  1, 9, 9, 9, 9, 9, 1, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 1, 9, 1, 9, 9, 9, 9, 
  9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 1, 1, 9, 9, 9, 9, 
  9, 9, 9, 9, 9, 9, 1, 9, 1, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 
  9, 9, 9, 9, 1, 9, 1, 9, 9, 9, 9, 9, 9, 9, 9, 9, 1, 9, 9, 1, 9, 9, 9, 9, 9, 
  9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 1, 9, 9, 9, 9, 9, 
  9, 1, 9, 9, 1, 9, 9, 1, 9, 9, 9, 9, 9, 1, 1, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 
  9, 9, 1, 9, 9, 9, 9, 1, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 1, 9, 9, 9, 1, 
  9, 1, 1, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 1, 9, 1, 9, 9, 
  9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 1, 9, 9, 9, 9, 1, 9, 9, 9, 9, 
  9, 9, 9, 9, 9, 9, 9, 9, 1, 9, 1, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 
  9, 9, 9, 9, 9, 1, 9, 9, 1, 9, 9, 9, 9, 9, 1, 9, 9, 9, 1, 9, 9, 9, 9, 9, 9, 
  9, 9, 1, 1, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 1, 9, 9, 9, 
  9, 9, 9, 9, 9, 9, 1, 9, 9, 9, 9, 9, 9, 9, 9, 9, 1, 9, 9, 9, 9, 9, 9, 9, 9, 
  9, 1, 9, 9, 1, 9, 9, 9, 9, 9, 9, 9, 9, 9, 1, 9, 9, 9, 9, 9, 9, 9, 9, 9, 1, 
  9, 1, 9, 9, 9, 9, 9, 9, 9, 1 ]
<span class="GAPprompt">gap></span> <span class="GAPinput">Collected(numbers);</span>
[ [ 1, 65 ], [ 9, 520 ] ]
<span class="GAPprompt">gap></span> <span class="GAPinput">group := HomographyGroup(pg);</span>
The FinInG projectivity group PGL(4,8)
<span class="GAPprompt">gap></span> <span class="GAPinput">stab := FiningSetwiseStabiliser(group,ovoid);</span>
#I  Computing adjusted stabilizer chain...
<projective collineation group with 5 generators>
<span class="GAPprompt">gap></span> <span class="GAPinput">time;</span>
55290
<span class="GAPprompt">gap></span> <span class="GAPinput">IsSimple(stab);</span>
true
<span class="GAPprompt">gap></span> <span class="GAPinput">Order(stab);</span>
29120

</pre></div>

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

<h5>2.2-2 <span class="Heading">Lines meeting a hermitian curve</span></h5>

<p>Here we see how the lines of a projective plane PG(2,q<sup>2 </sup>) meet a hermitian curve. It is well known that every line meets in either 1 or <span class="SimpleMath">q+1</span> points. Note that the last comment takes a while to complete.</p>


<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">h:=HermitianPolarSpace(2, 7^2);</span>
H(2, 7^2)
<span class="GAPprompt">gap></span> <span class="GAPinput">pg := AmbientSpace( h );</span>
ProjectiveSpace(2, 49)
<span class="GAPprompt">gap></span> <span class="GAPinput">lines := Lines( pg );</span>
<lines of ProjectiveSpace(2, 49)>
<span class="GAPprompt">gap></span> <span class="GAPinput">curve := AsList( Points( h ) );;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">Size(curve);</span>
344
<span class="GAPprompt">gap></span> <span class="GAPinput">Collected( List(lines, t -> Number(curve, c-> c in t)));</span>
[ [ 1, 344 ], [ 8, 2107 ] ]
<span class="GAPprompt">gap></span> <span class="GAPinput">time;</span>
26412
 
</pre></div>

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

<h5>2.2-3 <span class="Heading">The Patterson ovoid</span></h5>

<p>In this example, we construct the unique ovoid of the parabolic quadric <span class="SimpleMath">Q(6,3)</span>, first discovered by Patterson, but for which was given a nice construction by E. E. Shult. We begin with the ``sums of squares'' quadratic form over <span class="SimpleMath">GF(3)</span> and the associated polar space.</p>


<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">id := IdentityMat(7, GF(3));;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">form := QuadraticFormByMatrix(id, GF(3));</span>
< quadratic form >
<span class="GAPprompt">gap></span> <span class="GAPinput">ps := PolarSpace( form );</span>
<polar space in ProjectiveSpace(
6,GF(3)): x_1^2+x_2^2+x_3^2+x_4^2+x_5^2+x_6^2+x_7^2=0 >
</pre></div>

<p>The construction of the ovoid (a la Shult):</p>


<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">psl32 := PSL(3,2);</span>
Group([ (4,6)(5,7), (1,2,4)(3,6,5) ])
<span class="GAPprompt">gap></span> <span class="GAPinput">reps:=[[1,1,1,0,0,0,0], [-1,1,1,0,0,0,0],</span>
<span class="GAPprompt">></span> <span class="GAPinput">[1,-1,1,0,0,0,0], [1,1,-1,0,0,0,0]]*Z(3)^0;</span>
[ [ Z(3)^0, Z(3)^0, Z(3)^0, 0*Z(3), 0*Z(3), 0*Z(3), 0*Z(3) ], 
  [ Z(3), Z(3)^0, Z(3)^0, 0*Z(3), 0*Z(3), 0*Z(3), 0*Z(3) ], 
  [ Z(3)^0, Z(3), Z(3)^0, 0*Z(3), 0*Z(3), 0*Z(3), 0*Z(3) ], 
  [ Z(3)^0, Z(3)^0, Z(3), 0*Z(3), 0*Z(3), 0*Z(3), 0*Z(3) ] ]
<span class="GAPprompt">gap></span> <span class="GAPinput">ovoid := Union( List(reps, x-> Orbit(psl32, x, Permuted)) );;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">ovoid := List(ovoid, x -> VectorSpaceToElement(ps, x));;</span>
</pre></div>

<p>We check that this is indeed an ovoid. The observant reader will notice <em>#I Computing collineation group of canonical polar space...</em> which is caused by the command <code class="file">AsList</code> applied to the collection of elements <var class="Arg">planes</var>. The use of <code class="file">AsList</code> invokes the computation of all elements in <var class="Arg">planes</var> as an orbit under the collineation group of the ambient polar space. The reader is invited to redo, in a new GAP session, the same example omitting the <code class="file">AsList</codecommand, just defining <code class="file">planes := Planes(ps);;</code>. The result will be te same, but the computation of all elements will now be done using an enumerator, and will be slower.</p>


<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">planes := AsList(Planes( ps ));;</span>
#I  Computing collineation group of canonical polar space...
<span class="GAPprompt">gap></span> <span class="GAPinput">ForAll(planes, p -> Number(ovoid, x -> x * p) = 1);</span>
true
</pre></div>

<p>The stabiliser is interesting since it yields the embedding of <span class="SimpleMath">Sp(6,2)</span> in <span class="SimpleMath">PO(7,3)</span>. To efficiently compute the set-wise stabiliser, we refer to the induced permutation representation.</p>


<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">g := IsometryGroup( ps );</span>
#I  Computing collineation group of canonical polar space...
<projective collineation group of size 9170703360 with 2 generators>
<span class="GAPprompt">gap></span> <span class="GAPinput">stabovoid := FiningSetwiseStabiliser(g, ovoid);</span>
#I  Computing adjusted stabilizer chain...
<projective collineation group with 13 generators>
<span class="GAPprompt">gap></span> <span class="GAPinput">DisplayCompositionSeries(stabovoid);</span>
G (size 1451520)
 | B(3,2) = O(7,2) ~ C(3,2) = S(6,2)
1 (size 1)
<span class="GAPprompt">gap></span> <span class="GAPinput">OrbitLengths(stabovoid, ovoid);</span>
[ 28 ]
<span class="GAPprompt">gap></span> <span class="GAPinput">IsTransitive(stabovoid, ovoid);</span>
true 
</pre></div>

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

<h5>2.2-4 <span class="Heading">A hyperoval</span></h5>

<p>In this example, we consider a hyperoval of the projective plane <span class="SimpleMath">PG(2,4)</span>, that is, six points no three collinear. We will construct such a hyperoval by some basic explorations into particular properties of the projective plane <span class="SimpleMath">PG(2,4)</span>. The projective plane is initialised, its points are computed and listed; then a standard frame is constructed, of which we may assume that it is a subset of the hyperoval. Finally, the stabiliser group of the hyperoval is computed, and it is checked that this group is isomorphic with the symmetric group on six elements.</p>


<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">pg := ProjectiveSpace(2,4);</span>
ProjectiveSpace(2, 4)
<span class="GAPprompt">gap></span> <span class="GAPinput">points := Points(pg);</span>
<points of ProjectiveSpace(2, 4)>
<span class="GAPprompt">gap></span> <span class="GAPinput">pointslist := AsList(points);</span>
[ <a point in ProjectiveSpace(2, 4)>, <a point in ProjectiveSpace(2, 4)>, 
  <a point in ProjectiveSpace(2, 4)>, <a point in ProjectiveSpace(2, 4)>, 
  <a point in ProjectiveSpace(2, 4)>, <a point in ProjectiveSpace(2, 4)>, 
  <a point in ProjectiveSpace(2, 4)>, <a point in ProjectiveSpace(2, 4)>, 
  <a point in ProjectiveSpace(2, 4)>, <a point in ProjectiveSpace(2, 4)>, 
  <a point in ProjectiveSpace(2, 4)>, <a point in ProjectiveSpace(2, 4)>, 
  <a point in ProjectiveSpace(2, 4)>, <a point in ProjectiveSpace(2, 4)>, 
  <a point in ProjectiveSpace(2, 4)>, <a point in ProjectiveSpace(2, 4)>, 
  <a point in ProjectiveSpace(2, 4)>, <a point in ProjectiveSpace(2, 4)>, 
  <a point in ProjectiveSpace(2, 4)>, <a point in ProjectiveSpace(2, 4)>, 
  <a point in ProjectiveSpace(2, 4)> ]
<span class="GAPprompt">gap></span> <span class="GAPinput">Display(pointslist[1]);</span>
 . . 1
</pre></div>

<p>Now we may assume that our hyperoval contains the fundamental frame.</p>


<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">frame := [[1,0,0],[0,1,0],[0,0,1],[1,1,1]]*Z(2)^0;</span>
[ [ Z(2)^0, 0*Z(2), 0*Z(2) ], [ 0*Z(2), Z(2)^0, 0*Z(2) ], 
  [ 0*Z(2), 0*Z(2), Z(2)^0 ], [ Z(2)^0, Z(2)^0, Z(2)^0 ] ]
<span class="GAPprompt">gap></span> <span class="GAPinput">frame := List(frame,x -> VectorSpaceToElement(pg,x));</span>
[ <a point in ProjectiveSpace(2, 4)>, <a point in ProjectiveSpace(2, 4)>, 
  <a point in ProjectiveSpace(2, 4)>, <a point in ProjectiveSpace(2, 4)> ]
</pre></div>

<p>Alternatively, we could use:</p>


<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">frame := StandardFrame( pg );</span>
[ <a point in ProjectiveSpace(2, 4)>, <a point in ProjectiveSpace(2, 4)>, 
  <a point in ProjectiveSpace(2, 4)>, <a point in ProjectiveSpace(2, 4)> ]
</pre></div>

<p>There are six secant lines to this frame (``four choose two''). So we put together these secant lines from the pairs of points of this frame.</p>


<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">pairs := Combinations(frame,2);</span>
[ [ <a point in ProjectiveSpace(2, 4)>, <a point in ProjectiveSpace(2, 4)> ], 
  [ <a point in ProjectiveSpace(2, 4)>, <a point in ProjectiveSpace(2, 4)> ], 
  [ <a point in ProjectiveSpace(2, 4)>, <a point in ProjectiveSpace(2, 4)> ], 
  [ <a point in ProjectiveSpace(2, 4)>, <a point in ProjectiveSpace(2, 4)> ], 
  [ <a point in ProjectiveSpace(2, 4)>, <a point in ProjectiveSpace(2, 4)> ], 
  [ <a point in ProjectiveSpace(2, 4)>, <a point in ProjectiveSpace(2, 4)> ] ]
<span class="GAPprompt">gap></span> <span class="GAPinput">secants := List(pairs,p -> Span(p[1],p[2]));</span>
[ <a line in ProjectiveSpace(2, 4)>, <a line in ProjectiveSpace(2, 4)>, 
  <a line in ProjectiveSpace(2, 4)>, <a line in ProjectiveSpace(2, 4)>, 
  <a line in ProjectiveSpace(2, 4)>, <a line in ProjectiveSpace(2, 4)> ]
</pre></div>

<p>By a counting argument, it is known that the frame of <span class="SimpleMath">PG(2,4)</span> completes uniquely to a hyperoval.</p>


<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">leftover := Filtered(pointslist,t->not ForAny(secants,s->t in s));</span>
[ <a point in ProjectiveSpace(2, 4)>, <a point in ProjectiveSpace(2, 4)> ]
<span class="GAPprompt">gap></span> <span class="GAPinput">hyperoval := Union(frame,leftover);</span>
[ <a point in ProjectiveSpace(2, 4)>, <a point in ProjectiveSpace(2, 4)>, 
  <a point in ProjectiveSpace(2, 4)>, <a point in ProjectiveSpace(2, 4)>, 
  <a point in ProjectiveSpace(2, 4)>, <a point in ProjectiveSpace(2, 4)> ]
</pre></div>

<p>This hyperoval has the symmetric group on six symbols as its stabiliser, which can easily be calculated:</p>


<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">g := CollineationGroup(pg);</span>
The FinInG collineation group PGammaL(3,4)
<span class="GAPprompt">gap></span> <span class="GAPinput">stab := Stabilizer(g,Set(hyperoval),OnSets);</span>
<projective collineation group of size 720>
<span class="GAPprompt">gap></span> <span class="GAPinput">StructureDescription(stab);</span>
"S6" 
</pre></div>

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

<h4>2.3 <span class="Heading">Geometry morphisms</span></h4>

<p>A geometry morphism in <strong class="pkg">FinInG</strong> is a map between (a subset of) the elements of one geometry to (a subset of) the elements of a second geometry, preserving the incidence. Geometry morphisms are not necessarily type preserving. This section is meant to illustrate, in a non exhaustive way the basis philosophy behind geometry morphisms in <strong class="pkg">FinInG</strong>.</p>

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

<h5>2.3-1 <span class="Heading">Isomorphic polar spaces</span></h5>

<p>We've seen already that a polar space can be constructed from any non-degenerate sesquilinear or non-singular quadratic form. An isomorphism between polar spaces of the same type, can easily be obtained. This example illustrates IsomorphismPolarSpaces, which is in its basic use self-explanatory, and the use of the obtained map to compute images and pre-images of elements.




<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">mat1 := IdentityMat(4,GF(16));</span>
[ [ Z(2)^0, 0*Z(2), 0*Z(2), 0*Z(2) ], [ 0*Z(2), Z(2)^0, 0*Z(2), 0*Z(2) ], 
  [ 0*Z(2), 0*Z(2), Z(2)^0, 0*Z(2) ], [ 0*Z(2), 0*Z(2), 0*Z(2), Z(2)^0 ] ]
<span class="GAPprompt">gap></span> <span class="GAPinput">form1 := HermitianFormByMatrix(mat1,GF(16));</span>
< hermitian form >
<span class="GAPprompt">gap></span> <span class="GAPinput">ps1 := PolarSpace(form1);</span>
<polar space in ProjectiveSpace(3,GF(2^4)): x_1^5+x_2^5+x_3^5+x_4^5=0 >
<span class="GAPprompt">gap></span> <span class="GAPinput">mat2 := [[0,1,0,0],[1,0,0,0],[0,0,0,1],[0,0,1,0]]*Z(16)^0;</span>
[ [ 0*Z(2), Z(2)^0, 0*Z(2), 0*Z(2) ], [ Z(2)^0, 0*Z(2), 0*Z(2), 0*Z(2) ], 
  [ 0*Z(2), 0*Z(2), 0*Z(2), Z(2)^0 ], [ 0*Z(2), 0*Z(2), Z(2)^0, 0*Z(2) ] ]
<span class="GAPprompt">gap></span> <span class="GAPinput">form2 := HermitianFormByMatrix(mat2,GF(16));</span>
< hermitian form >
<span class="GAPprompt">gap></span> <span class="GAPinput">ps2 := PolarSpace(form2);</span>
<polar space in ProjectiveSpace(
3,GF(2^4)): x_1^4*x_2+x_1*x_2^4+x_3^4*x_4+x_3*x_4^4=0 >
<span class="GAPprompt">gap></span> <span class="GAPinput">map := IsomorphismPolarSpaces(ps1,ps2);</span>
#I  No intertwiner computed. One of the polar spaces must have a collineation group computed
<geometry morphism from <Elements of H(3, 
4^2): x_1^5+x_2^5+x_3^5+x_4^5=0> to <Elements of H(3, 
4^2): x_1^4*x_2+x_1*x_2^4+x_3^4*x_4+x_3*x_4^4=0>>
<span class="GAPprompt">gap></span> <span class="GAPinput">p := Random(Points(ps1));</span>
<a point in H(3, 4^2): x_1^5+x_2^5+x_3^5+x_4^5=0>
<span class="GAPprompt">gap></span> <span class="GAPinput">p^map;</span>
<a point in H(3, 4^2): x_1^4*x_2+x_1*x_2^4+x_3^4*x_4+x_3*x_4^4=0>
<span class="GAPprompt">gap></span> <span class="GAPinput">l := Random(Lines(ps2));</span>
<a line in H(3, 4^2): x_1^4*x_2+x_1*x_2^4+x_3^4*x_4+x_3*x_4^4=0>
<span class="GAPprompt">gap></span> <span class="GAPinput">PreImageElm(map,l);</span>
<a line in H(3, 4^2): x_1^5+x_2^5+x_3^5+x_4^5=0>
 
</pre></div>

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

<h5>2.3-2 <span class="Heading">Intertwiners</span></h5>

<p>We reconsider the previous example. The observant reader might have noticed the message <em>#I No intertwiner computed...</em>. Given a geometry morphism <span class="SimpleMath">f</span> from <span class="SimpleMath">S</span> to <span class="SimpleMath">S', an intertwiner φ is a map from the automorphism group of S to the automorphism group of S'</span>, such that for every element <span class="SimpleMath">p</span> of <span class="SimpleMath">S</span> and every automorphism <span class="SimpleMath">g</span> of <span class="SimpleMath">S</span>, we have</p>

<p class="pcenter">f(p<sup>g</sup>)=f(p)<sup>φ(g)</sup>.</p>


<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">mat1 := IdentityMat(4,GF(16));</span>
[ [ Z(2)^0, 0*Z(2), 0*Z(2), 0*Z(2) ], [ 0*Z(2), Z(2)^0, 0*Z(2), 0*Z(2) ], 
  [ 0*Z(2), 0*Z(2), Z(2)^0, 0*Z(2) ], [ 0*Z(2), 0*Z(2), 0*Z(2), Z(2)^0 ] ]
<span class="GAPprompt">gap></span> <span class="GAPinput">form1 := HermitianFormByMatrix(mat1,GF(16));</span>
< hermitian form >
<span class="GAPprompt">gap></span> <span class="GAPinput">ps1 := PolarSpace(form1);</span>
<polar space in ProjectiveSpace(3,GF(2^4)): x_1^5+x_2^5+x_3^5+x_4^5=0 >
<span class="GAPprompt">gap></span> <span class="GAPinput">mat2 := [[0,1,0,0],[1,0,0,0],[0,0,0,1],[0,0,1,0]]*Z(16)^0;</span>
[ [ 0*Z(2), Z(2)^0, 0*Z(2), 0*Z(2) ], [ Z(2)^0, 0*Z(2), 0*Z(2), 0*Z(2) ], 
  [ 0*Z(2), 0*Z(2), 0*Z(2), Z(2)^0 ], [ 0*Z(2), 0*Z(2), Z(2)^0, 0*Z(2) ] ]
<span class="GAPprompt">gap></span> <span class="GAPinput">form2 := HermitianFormByMatrix(mat2,GF(16));</span>
< hermitian form >
<span class="GAPprompt">gap></span> <span class="GAPinput">ps2 := PolarSpace(form2);</span>
<polar space in ProjectiveSpace(
3,GF(2^4)): x_1^4*x_2+x_1*x_2^4+x_3^4*x_4+x_3*x_4^4=0 >
<span class="GAPprompt">gap></span> <span class="GAPinput">CollineationGroup(ps1);</span>
#I  Computing collineation group of canonical polar space...
<projective collineation group of size 4073472000 with 3 generators>
<span class="GAPprompt">gap></span> <span class="GAPinput">map := IsomorphismPolarSpaces(ps1,ps2);</span>
<geometry morphism from <Elements of H(3, 
4^2): x_1^5+x_2^5+x_3^5+x_4^5=0> to <Elements of H(3, 
4^2): x_1^4*x_2+x_1*x_2^4+x_3^4*x_4+x_3*x_4^4=0>>
<span class="GAPprompt">gap></span> <span class="GAPinput">phi := Intertwiner(map);</span>
MappingByFunction( <projective collineation group of size 4073472000 with 
3 generators>, <projective collineation group of size 4073472000 with 
3 generators>, function( y ) ... end, function( x ) ... end )
<span class="GAPprompt">gap></span> <span class="GAPinput">g := Random(CollineationGroup(ps1));</span>
< a collineation: <cmat 4x4 over GF(2,4)>, F^4>
<span class="GAPprompt">gap></span> <span class="GAPinput">h := g^phi;</span>
< a collineation: <cmat 4x4 over GF(2,4)>, F^4>
<span class="GAPprompt">gap></span> <span class="GAPinput">h in CollineationGroup(ps2);</span>
#I  Computing collineation group of canonical polar space...
true
<span class="GAPprompt">gap></span> <span class="GAPinput">h := Random(CollineationGroup(ps2));</span>
< a collineation: <cmat 4x4 over GF(2,4)>, F^2>
<span class="GAPprompt">gap></span> <span class="GAPinput">g := PreImageElm(phi,h);</span>
< a collineation: <cmat 4x4 over GF(2,4)>, F^2>
<span class="GAPprompt">gap></span> <span class="GAPinput">g in CollineationGroup(ps1);</span>
true
 
</pre></div>

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

<h5>2.3-3 <span class="Heading">Klein correspondence</span></h5>

<p>The Klein correspondence is well known. The user may define its own hyperbolic quadric as range for the geometry morphism in <strong class="pkg">FinInG</strong>. Note that more is possible than illustrated in the elementary example, see Section <a href="chap10.html#X79C677CD7B7EC451"><span class="RefLink">10.3</span></a>.</p>


<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">ps := HyperbolicQuadric(5,5);</span>
Q+(5, 5)
<span class="GAPprompt">gap></span> <span class="GAPinput">klein := KleinCorrespondence(ps);</span>
<geometry morphism from <lines of ProjectiveSpace(3, 5)> to <points of Q+(5, 
5)>>
<span class="GAPprompt">gap></span> <span class="GAPinput">line1 := Random(Lines(PG(3,5)));</span>
<a line in ProjectiveSpace(3, 5)>
<span class="GAPprompt">gap></span> <span class="GAPinput">line2 := Random(Lines(PG(3,5)));</span>
<a line in ProjectiveSpace(3, 5)>
<span class="GAPprompt">gap></span> <span class="GAPinput">p := line1^klein;</span>
<a point in Q+(5, 5)>
<span class="GAPprompt">gap></span> <span class="GAPinput">q := line2^klein;</span>
<a point in Q+(5, 5)>
<span class="GAPprompt">gap></span> <span class="GAPinput">p in ps;</span>
true
<span class="GAPprompt">gap></span> <span class="GAPinput">q in ps;</span>
true
<span class="GAPprompt">gap></span> <span class="GAPinput">IsCollinear(ps,p,q);</span>
false
<span class="GAPprompt">gap></span> <span class="GAPinput">Meet(line1,line2);</span>
< empty subspace >
 
</pre></div>

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

<h5>2.3-4 <span class="Heading">Embedding in a subspace</span></h5>

<p>A projective space can be embedded as a subspace in a higher dimensional projective space. A comparable embedding is possible for polar spaces, clearly only when a given subspace intersects the polar space of higher rank in a polar space of the same type as the polar space to be embedded.</p>


<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">pg2 := PG(2,5);</span>
ProjectiveSpace(2, 5)
<span class="GAPprompt">gap></span> <span class="GAPinput">pg3 := PG(3,5);</span>
ProjectiveSpace(3, 5)
<span class="GAPprompt">gap></span> <span class="GAPinput">hyp := VectorSpaceToElement(pg3,[[1,2,4,0],[0,3,2,0],[1,1,0,1]]*Z(5)^0);</span>
<a plane in ProjectiveSpace(3, 5)>
<span class="GAPprompt">gap></span> <span class="GAPinput">em := NaturalEmbeddingBySubspace( pg2, pg3, hyp );</span>
<geometry morphism from <All elements of ProjectiveSpace(2, 
5)> to <All elements of ProjectiveSpace(3, 5)>>
<span class="GAPprompt">gap></span> <span class="GAPinput">l := Random(Lines(pg2));</span>
<a line in ProjectiveSpace(2, 5)>
<span class="GAPprompt">gap></span> <span class="GAPinput">l^em;</span>
<a line in ProjectiveSpace(3, 5)>
<span class="GAPprompt">gap></span> <span class="GAPinput">p := Random(Points(hyp));</span>
<a point in ProjectiveSpace(3, 5)>
<span class="GAPprompt">gap></span> <span class="GAPinput">PreImageElm(em,p);</span>
<a point in ProjectiveSpace(2, 5)>
<span class="GAPprompt">gap></span> <span class="GAPinput">mat := [[0,0,0,1],[0,0,1,0],[0,-1,0,0],[-1,0,0,0]]*Z(3);</span>
[ [ 0*Z(3), 0*Z(3), 0*Z(3), Z(3) ], [ 0*Z(3), 0*Z(3), Z(3), 0*Z(3) ], 
  [ 0*Z(3), Z(3)^0, 0*Z(3), 0*Z(3) ], [ Z(3)^0, 0*Z(3), 0*Z(3), 0*Z(3) ] ]
<span class="GAPprompt">gap></span> <span class="GAPinput">form := BilinearFormByMatrix(mat,GF(3));</span>
< bilinear form >
<span class="GAPprompt">gap></span> <span class="GAPinput">w3 := PolarSpace(form);</span>
<polar space in ProjectiveSpace(3,GF(3)): -x1*y4-x2*y3+x3*y2+x4*y1=0 >
<span class="GAPprompt">gap></span> <span class="GAPinput">w5 := SymplecticSpace(5, 3);</span>
W(5, 3)
<span class="GAPprompt">gap></span> <span class="GAPinput">pg := AmbientSpace( w5 );</span>
ProjectiveSpace(5, 3)
<span class="GAPprompt">gap></span> <span class="GAPinput">solid := VectorSpaceToElement(pg,[[1,0,0,0,0,0],[0,1,0,0,0,0],</span>
<span class="GAPprompt">></span> <span class="GAPinput">[0,0,1,0,0,0],[0,0,0,1,0,0]]*Z(3)^0);</span>
<a solid in ProjectiveSpace(5, 3)>
<span class="GAPprompt">gap></span> <span class="GAPinput">TypeOfSubspace(w5,solid);</span>
"symplectic"
<span class="GAPprompt">gap></span> <span class="GAPinput">em := NaturalEmbeddingBySubspace( w3, w5, solid );</span>
<geometry morphism from <Elements of <polar space in ProjectiveSpace(
3,GF(3)): -x1*y4-x2*y3+x3*y2+x4*y1=0 >> to <Elements of W(5, 3)>>
<span class="GAPprompt">gap></span> <span class="GAPinput">points := Points( w3 );</span>
<points of W(3, 3): -x1*y4-x2*y3+x3*y2+x4*y1=0>
<span class="GAPprompt">gap></span> <span class="GAPinput">points2 := ImagesSet(em, AsSet(points));;</span>
#I  Computing collineation group of canonical polar space...
<span class="GAPprompt">gap></span> <span class="GAPinput">ForAll(points2, x -> x in solid);</span>
true
 
</pre></div>

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

<h5>2.3-5 <span class="Heading">Subgeometries</span></h5>

<p>A projective space can be embedded as a subgeometry in a projective space of the same dimension but over a field extension. A polar space, determined by a form <span class="SimpleMath">f</span> can be embedded in a polar space considered over a field extension by interpreting the form <span class="SimpleMath">f</span> over this field extension. This is an interesting tool to construct geometrical objects in projective and polar spaces.</p>


<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">pgsub := PG(2,7);</span>
ProjectiveSpace(2, 7)
<span class="GAPprompt">gap></span> <span class="GAPinput">pg := PG(2,7^2);</span>
ProjectiveSpace(2, 49)
<span class="GAPprompt">gap></span> <span class="GAPinput">em := NaturalEmbeddingBySubfield(pgsub,pg);</span>
<geometry morphism from <All elements of ProjectiveSpace(2, 
7)> to <All elements of ProjectiveSpace(2, 49)>>
<span class="GAPprompt">gap></span> <span class="GAPinput">baer := List(Points(pgsub),x->x^em);;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">numbers := Collected(List(Lines(pg),x->Number(baer,y->y in x)));</span>
[ [ 1, 2394 ], [ 8, 57 ] ]
<span class="GAPprompt">gap></span> <span class="GAPinput">mat := [[0,0,0,1],[0,0,-1,0],[0,1,0,0],[-1,0,0,0]]*Z(5)^0;</span>
[ [ 0*Z(5), 0*Z(5), 0*Z(5), Z(5)^0 ], [ 0*Z(5), 0*Z(5), Z(5)^2, 0*Z(5) ], 
  [ 0*Z(5), Z(5)^0, 0*Z(5), 0*Z(5) ], [ Z(5)^2, 0*Z(5), 0*Z(5), 0*Z(5) ] ]
<span class="GAPprompt">gap></span> <span class="GAPinput">form := BilinearFormByMatrix(mat,GF(5));</span>
< bilinear form >
<span class="GAPprompt">gap></span> <span class="GAPinput">symplecticspace := PolarSpace(form);</span>
<polar space in ProjectiveSpace(3,GF(5)): x1*y4-x2*y3+x3*y2-x4*y1=0 >
<span class="GAPprompt">gap></span> <span class="GAPinput">hermitianspace := HermitianPolarSpace(3,25);</span>
H(3, 5^2)
<span class="GAPprompt">gap></span> <span class="GAPinput">em := NaturalEmbeddingBySubfield(symplecticspace,hermitianspace);</span>
#I  No intertwiner computed. <geom1> must have a collineation group computed
<geometry morphism from <Elements of <polar space in ProjectiveSpace(
3,GF(5)): x1*y4-x2*y3+x3*y2-x4*y1=0 >> to <Elements of H(3, 5^2)>>
<span class="GAPprompt">gap></span> <span class="GAPinput">l := Random(Lines(symplecticspace));</span>
<a line in W(3, 5): x1*y4-x2*y3+x3*y2-x4*y1=0>
<span class="GAPprompt">gap></span> <span class="GAPinput">l^em;</span>
<a line in H(3, 5^2)>

</pre></div>

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

<h5>2.3-6 <span class="Heading">Embedding by field reduction</span></h5>

<p>Field reduction is a power full tool to embed low dimensional projective (and polar spaces) over a field <span class="SimpleMath">K</span> in to high dimensional spaces over a subfield of <span class="SimpleMath">K</span>. The mathematics behind field reduction is explained in sections <a href="chap10.html#X7BC7FCDC7D9E1A09"><span class="RefLink">10.4-3</span></a> and <a href="chap10.html#X7823BA95797898CE"><span class="RefLink">10.5-3</span></a>. The examples here show the use of these embeddings to construct a regular spread of a projective space and a so-called Hermitian spread of a hyperbolic quadric.</p>


<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">pg1 := PG(1,3^2);</span>
ProjectiveSpace(1, 9)
<span class="GAPprompt">gap></span> <span class="GAPinput">pg2 := PG(3,3);</span>
ProjectiveSpace(3, 3)
<span class="GAPprompt">gap></span> <span class="GAPinput">em := NaturalEmbeddingByFieldReduction(pg1,pg2);</span>
<geometry morphism from <All elements of ProjectiveSpace(1, 
9)> to <All elements of ProjectiveSpace(3, 3)>>
<span class="GAPprompt">gap></span> <span class="GAPinput">spread := List(Points(pg1),x->x^em);</span>
[ <a line in ProjectiveSpace(3, 3)>, <a line in ProjectiveSpace(3, 3)>, 
  <a line in ProjectiveSpace(3, 3)>, <a line in ProjectiveSpace(3, 3)>, 
  <a line in ProjectiveSpace(3, 3)>, <a line in ProjectiveSpace(3, 3)>, 
  <a line in ProjectiveSpace(3, 3)>, <a line in ProjectiveSpace(3, 3)>, 
  <a line in ProjectiveSpace(3, 3)>, <a line in ProjectiveSpace(3, 3)> ]
<span class="GAPprompt">gap></span> <span class="GAPinput">Union(List(spread,x->List(Points(x))))=Set(Points(pg2));</span>
true
<span class="GAPprompt">gap></span> <span class="GAPinput">ps1 := HermitianPolarSpace(3,3^2);</span>
H(3, 3^2)
<span class="GAPprompt">gap></span> <span class="GAPinput">ps2 := HyperbolicQuadric(7,3);</span>
Q+(7, 3)
<span class="GAPprompt">gap></span> <span class="GAPinput">em := NaturalEmbeddingByFieldReduction(ps1,ps2);</span>
#I  These polar spaces are suitable for field reduction
<geometry morphism from <Elements of H(3, 3^2)> to <Elements of Q+(7, 3)>>
<span class="GAPprompt">gap></span> <span class="GAPinput">spread := List(Points(ps1),x->x^em);;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">Union(List(spread,x->List(Points(x))))=Set(Points(ps2));</span>
true

</pre></div>

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

<h4>2.4 <span class="Heading">Some geometrical objects</span></h4>

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

<h5>2.4-1 <span class="Heading">Spreads of <span class="SimpleMath">W(5,3)</span></span></h5>

<p>A spread of <span class="SimpleMath">W(5,q)</span> is a set of q<sup>3</sup>+1 planes which partition the points of <span class="SimpleMath">W(5,q)</span>. Here we enumerate all spreads of <span class="SimpleMath">W(5,3)</span> which have a set-wise stabiliser of order a multiple of 13.</p>


<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">w := SymplecticSpace(5, 3);</span>
W(5, 3)
<span class="GAPprompt">gap></span> <span class="GAPinput">g := IsometryGroup(w);</span>
PSp(6,3)
<span class="GAPprompt">gap></span> <span class="GAPinput">syl := SylowSubgroup(g, 13);</span>
<projective collineation group of size 13>
<span class="GAPprompt">gap></span> <span class="GAPinput">planes := Planes( w );</span>
<planes of W(5, 3)>
<span class="GAPprompt">gap></span> <span class="GAPinput">points := Points( w );</span>
<points of W(5, 3)>
<span class="GAPprompt">gap></span> <span class="GAPinput">orbs := Orbits(syl, planes , OnProjSubspaces);;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">IsPartialSpread := x -> Number(points, p -></span>
<span class="GAPprompt">></span> <span class="GAPinput">         ForAny(x, i-> p in i)) = Size(x)*13;;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">partialspreads := Filtered(orbs, IsPartialSpread);;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">Length(partialspreads);</span>
8
<span class="GAPprompt">gap></span> <span class="GAPinput">13s := Filtered(partialspreads, i -> Size(i) = 13);;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">Length(13s);</span>
6
<span class="GAPprompt">gap></span> <span class="GAPinput">13s[1];</span>
[ <a plane in W(5, 3)>, <a plane in W(5, 3)>, <a plane in W(5, 3)>, 
  <a plane in W(5, 3)>, <a plane in W(5, 3)>, <a plane in W(5, 3)>, 
  <a plane in W(5, 3)>, <a plane in W(5, 3)>, <a plane in W(5, 3)>, 
  <a plane in W(5, 3)>, <a plane in W(5, 3)>, <a plane in W(5, 3)>, 
  <a plane in W(5, 3)> ]
<span class="GAPprompt">gap></span> <span class="GAPinput">26s := List(Combinations(13s,2), Union);;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">two := Union(Filtered(partialspreads, i -> Size(i) = 1));;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">good26s := Filtered(26s, x->IsPartialSpread(Union(x, two)));;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">spreads := List(good26s, x->Union(x, two));;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">Length(spreads);</span>
5
 
</pre></div>

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

<h5>2.4-2 <span class="Heading">Distance-6 spread of the split Cayley hexagon</span></h5>

<p>A distance 6 spread of a split Cayley hexagon is a set of lines mutually at maximal distance in the incidence graph. It is well known that the lines of the hexagon contained in a hyperplane meeting the ambient polar space in an elliptic quadric, yield such a spread. This example also illustrates how an element of a geometry <em>remembers</em> its ambient geometry, and how <code class="file">ElementToElement</code> can be used to embed an element in another geometry, see <a href="chap3.html#X8561C0117FD76C94"><span class="RefLink">3.8-1</span></a>.</p>


<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">gh := SplitCayleyHexagon(3);</span>
H(3)
<span class="GAPprompt">gap></span> <span class="GAPinput">q6 := AmbientPolarSpace(gh);</span>
Q(6, 3): -x_1*x_5-x_2*x_6-x_3*x_7+x_4^2=0
<span class="GAPprompt">gap></span> <span class="GAPinput">hyp := First(Hyperplanes(PG(6,3)),x->TypeOfSubspace(q6,x)="elliptic");</span>
<a proj. 5-space in ProjectiveSpace(6, 3)>
<span class="GAPprompt">gap></span> <span class="GAPinput">q5 := EllipticQuadric(5,3);</span>
Q-(5, 3)
<span class="GAPprompt">gap></span> <span class="GAPinput">lines := AsList(Lines(q5));</span>
<closed orbit, 280 points>
<span class="GAPprompt">gap></span> <span class="GAPinput">em := NaturalEmbeddingBySubspace(q5,q6,hyp);</span>
<geometry morphism from <Elements of Q-(5, 3)> to <Elements of Q(6, 
3): -x_1*x_5-x_2*x_6-x_3*x_7+x_4^2=0>>
<span class="GAPprompt">gap></span> <span class="GAPinput">spread := Filtered(lines,x->x^em in gh);</span>
[ <a line in Q-(5, 3)>, <a line in Q-(5, 3)>, <a line in Q-(5, 3)>, 
  <a line in Q-(5, 3)>, <a line in Q-(5, 3)>, <a line in Q-(5, 3)>, 
  <a line in Q-(5, 3)>, <a line in Q-(5, 3)>, <a line in Q-(5, 3)>, 
  <a line in Q-(5, 3)>, <a line in Q-(5, 3)>, <a line in Q-(5, 3)>, 
  <a line in Q-(5, 3)>, <a line in Q-(5, 3)>, <a line in Q-(5, 3)>, 
  <a line in Q-(5, 3)>, <a line in Q-(5, 3)>, <a line in Q-(5, 3)>, 
  <a line in Q-(5, 3)>, <a line in Q-(5, 3)>, <a line in Q-(5, 3)>, 
  <a line in Q-(5, 3)>, <a line in Q-(5, 3)>, <a line in Q-(5, 3)>, 
  <a line in Q-(5, 3)>, <a line in Q-(5, 3)>, <a line in Q-(5, 3)>, 
  <a line in Q-(5, 3)> ]
<span class="GAPprompt">gap></span> <span class="GAPinput">spread := List(spread,x->ElementToElement(gh,x^em));</span>
[ <a line in H(3)>, <a line in H(3)>, <a line in H(3)>, <a line in H(3)>, 
  <a line in H(3)>, <a line in H(3)>, <a line in H(3)>, <a line in H(3)>, 
  <a line in H(3)>, <a line in H(3)>, <a line in H(3)>, <a line in H(3)>, 
  <a line in H(3)>, <a line in H(3)>, <a line in H(3)>, <a line in H(3)>, 
  <a line in H(3)>, <a line in H(3)>, <a line in H(3)>, <a line in H(3)>, 
  <a line in H(3)>, <a line in H(3)>, <a line in H(3)>, <a line in H(3)>, 
  <a line in H(3)>, <a line in H(3)>, <a line in H(3)>, <a line in H(3)> ]
<span class="GAPprompt">gap></span> <span class="GAPinput">Collected(Concatenation(List(spread,x->List(spread,y->DistanceBetweenElements(x,y)))));</span>
[ [ 0, 28 ], [ 6, 756 ] ]

</pre></div>

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

<h4>2.5 <span class="Heading">Some particular incidence geometries</span></h4>

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

<h5>2.5-1 <span class="Heading">The split Cayley hexagon</span></h5>

<p>The split Cayley hexagon is one the well known classical generalised hexagons that are obtained using a triality of the hyperbolic quadric in 7 dimensions. This example shows some basic properties of this geometry.</p>


<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">hexagon := SplitCayleyHexagon(5);</span>
H(5)
<span class="GAPprompt">gap></span> <span class="GAPinput">Order(hexagon);</span>
[ 5, 5 ]
<span class="GAPprompt">gap></span> <span class="GAPinput">g := CollineationGroup( hexagon );</span>
#I  for Split Cayley Hexagon
#I  Computing nice monomorphism...
#I  Found permutation domain...
G_2(5)
<span class="GAPprompt">gap></span> <span class="GAPinput">incgraph := IncidenceGraph( hexagon );;</span>
#I  Computing incidence graph of generalised polygon...
<span class="GAPprompt">gap></span> <span class="GAPinput">Diameter(incgraph);</span>
6
--> --------------------

--> maximum size reached

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

100%


¤ Dauer der Verarbeitung: 0.28 Sekunden  (vorverarbeitet)  ¤

*© Formatika GbR, Deutschland






Wurzel

Suchen

Beweissystem der NASA

Beweissystem Isabelle

NIST Cobol Testsuite

Cephes Mathematical Library

Wiener Entwicklungsmethode

Haftungshinweis

Die Informationen auf dieser Webseite wurden nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit, noch Qualität der bereit gestellten Informationen zugesichert.

Bemerkung:

Die farbliche Syntaxdarstellung ist noch experimentell.