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


Quelle  chap5_mj.html

  Sprache: HTML
 

 products/Sources/formale Sprachen/GAP/pkg/fining/doc/chap5_mj.html


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

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

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<script type="text/javascript"
  src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.js?config=TeX-AMS-MML_HTMLorMML">
</script>
<title>GAP (FinInG) - Chapter 5: Projective Groups</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="chap5"  onload="jscontent()">


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

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

<p id="mathjaxlink" class="pcenter"><a href="chap5.html">[MathJax off]</a></p>
<p><a id="X816FCFB683915E8A" name="X816FCFB683915E8A"></a></p>
<div class="ChapSects"><a href="chap5_mj.html#X816FCFB683915E8A">5 <span class="Heading">Projective Groups</span></a>
<div class="ContSect"><span class="tocline"><span class="nocss"> </span><a href="chap5_mj.html#X7A9762F8861B0772">5.1 <span class="Heading"> Projectivities, collineations and correlations of projective spaces.</span></a>
</span>
<div class="ContSSBlock">
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap5_mj.html#X851186297A91C1C6">5.1-1 <span class="Heading">Categories for group elements</span></a>
</span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap5_mj.html#X7BBF688083857760">5.1-2 <span class="Heading">Representations for group elements</span></a>
</span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap5_mj.html#X8160615081358132">5.1-3 <span class="Heading">Projectivities</span></a>
</span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap5_mj.html#X7E881C237D117C6C">5.1-4 <span class="Heading">Collineations of projective spaces</span></a>
</span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap5_mj.html#X7B89B51F86AE2BCC">5.1-5 <span class="Heading">Projective strictly semilinear maps</span></a>
</span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap5_mj.html#X815B68277D0500C3">5.1-6 <span class="Heading">Correlations and collineations</span></a>
</span>
</div></div>
<div class="ContSect"><span class="tocline"><span class="nocss"> </span><a href="chap5_mj.html#X78EDF0357B58FC0E">5.2 <span class="Heading">Construction of projectivities, collineations and correlations.</span></a>
</span>
<div class="ContSSBlock">
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap5_mj.html#X877DA4E185A1D9C7">5.2-1 Projectivity</a></span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap5_mj.html#X7AB452B2781EF128">5.2-2 CollineationOfProjectiveSpace</a></span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap5_mj.html#X81ED446485A71588">5.2-3 ProjectiveSemilinearMap</a></span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap5_mj.html#X80649C427E3BCBFF">5.2-4 IdentityMappingOfElementsOfProjectiveSpace</a></span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap5_mj.html#X841607A77B841CC9">5.2-5 StandardDualityOfProjectiveSpace</a></span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap5_mj.html#X78BBC4E27B2E06D6">5.2-6 CorrelationOfProjectiveSpace</a></span>
</div></div>
<div class="ContSect"><span class="tocline"><span class="nocss"> </span><a href="chap5_mj.html#X83A5F86F82598AA6">5.3 <span class="Heading">Basic operations for projectivities, collineations and correlations of
projective spaces</span></a>
</span>
<div class="ContSSBlock">
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap5_mj.html#X865507568182424E">5.3-1 Representative</a></span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap5_mj.html#X7CA72CB07E3122F1">5.3-2 MatrixOfCollineation</a></span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap5_mj.html#X7E8B65547970F689">5.3-3 MatrixOfCorrelation</a></span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap5_mj.html#X7BCBA564829D9E89">5.3-4 BaseField</a></span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap5_mj.html#X7B60C4257C46ED4B">5.3-5 FieldAutomorphism</a></span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap5_mj.html#X7FE527AB81C2B675">5.3-6 ProjectiveSpaceIsomorphism</a></span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap5_mj.html#X84F59A2687C62763">5.3-7 Order</a></span>
</div></div>
<div class="ContSect"><span class="tocline"><span class="nocss"> </span><a href="chap5_mj.html#X78E99D9086D64FD9">5.4 <span class="Heading">The groups <span class="SimpleMath">\(\mathrm{P}\Gamma\mathrm{L}\)</span>, <span class="SimpleMath">\(\mathrm{PGL}\)</span>, and <span class="SimpleMath">\(\mathrm{PSL}\)</span> in <strong class="pkg">FinInG</strong>
</span></a>
</span>
<div class="ContSSBlock">
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap5_mj.html#X850A954887CA9A55">5.4-1 ProjectivityGroup</a></span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap5_mj.html#X83FF6FA0790D5747">5.4-2 CollineationGroup</a></span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap5_mj.html#X7BE9CE127ACFA6C2">5.4-3 SpecialProjectivityGroup</a></span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap5_mj.html#X7DEA3BDA82C7B855">5.4-4 IsProjectivityGroup</a></span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap5_mj.html#X7B1FC1327FD85D18">5.4-5 IsCollineationGroup</a></span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap5_mj.html#X81444EF57E228232">5.4-6 CorrelationCollineationGroup</a></span>
</div></div>
<div class="ContSect"><span class="tocline"><span class="nocss"> </span><a href="chap5_mj.html#X7C4C7ADE8746C1B1">5.5 <span class="Heading">Basic operations for projective groups</span></a>
</span>
<div class="ContSSBlock">
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap5_mj.html#X7BCBA564829D9E89">5.5-1 BaseField</a></span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap5_mj.html#X7E6926C6850E7C4E">5.5-2 Dimension</a></span>
</div></div>
<div class="ContSect"><span class="tocline"><span class="nocss"> </span><a href="chap5_mj.html#X87327CBC857D6801">5.6 <span class="Heading">Natural embedding of a collineation group in a correlation/collineation group</span></a>
</span>
<div class="ContSSBlock">
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap5_mj.html#X86452F8587CBAEA0">5.6-1 Embedding</a></span>
</div></div>
<div class="ContSect"><span class="tocline"><span class="nocss"> </span><a href="chap5_mj.html#X7AAD7DDD7E19595E">5.7 <span class="Heading">Basic action of projective group elements</span></a>
</span>
<div class="ContSSBlock">
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap5_mj.html#X7D21FB1A7D21FB1A"><code>5.7-1 \^</code></a></span>
</div></div>
<div class="ContSect"><span class="tocline"><span class="nocss"> </span><a href="chap5_mj.html#X7EBA895D7A501CE0">5.8 <span class="Heading">Projective group actions</span></a>
</span>
<div class="ContSSBlock">
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap5_mj.html#X84A3D5357872EC3B">5.8-1 OnProjSubspaces</a></span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap5_mj.html#X798053D47D8187EC">5.8-2 ActionOnAllProjPoints</a></span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap5_mj.html#X86B4C03E85ADD0C2">5.8-3 OnProjSubspacesExtended</a></span>
</div></div>
<div class="ContSect"><span class="tocline"><span class="nocss"> </span><a href="chap5_mj.html#X809F0F2B857FA178">5.9 <span class="Heading">Special subgroups of the projectivity group</span></a>
</span>
<div class="ContSSBlock">
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap5_mj.html#X86FF1DDE8356E966">5.9-1 ElationOfProjectiveSpace</a></span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap5_mj.html#X7E5660A17A4B1349">5.9-2 ProjectiveElationGroup</a></span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap5_mj.html#X86319DCD7AF98E28">5.9-3 HomologyOfProjectiveSpace</a></span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap5_mj.html#X82FBABF384960A3D">5.9-4 ProjectiveHomologyGroup</a></span>
</div></div>
<div class="ContSect"><span class="tocline"><span class="nocss"> </span><a href="chap5_mj.html#X7FFD731684606BC6">5.10 <span class="Heading">Nice Monomorphisms</span></a>
</span>
<div class="ContSSBlock">
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap5_mj.html#X7965086E82ABCF41">5.10-1 NiceMonomorphism</a></span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap5_mj.html#X7B47BE0983E93A83">5.10-2 NiceObject</a></span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap5_mj.html#X7CE11961817B311C">5.10-3 FINING</a></span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap5_mj.html#X7B102DAE7E0CCF47">5.10-4 CanComputeActionOnPoints</a></span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap5_mj.html#X7D8C4B657FD6F7BA">5.10-5 NiceMonomorphismByDomain</a></span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap5_mj.html#X7BCBD96786901FF9">5.10-6 NiceMonomorphismByOrbit</a></span>
</div></div>
</div>

<h3>5 <span class="Heading">Projective Groups</span></h3>

<p>A <em>collineation</em> of a projective space is a type preserving bijection of the elements of the projective space, that preserves incidence. The Fundamental Theorem of Projective Geometry states that every collineation of a Desarguesian projective space of dimension at least two is induced by a semilinear map of the underlying vector space. The group of all linear maps of a given <span class="SimpleMath">\(n+1\)</span>-dimensional vector space over a given field <span class="SimpleMath">\(\mathrm{GF}(q)\)</span> is denoted by <span class="SimpleMath">\(\mathrm{GL}(n+1,q)\)</span>. This is a matrix group consisting of all non-singular square <span class="SimpleMath">\(n+1\)</span>-dimensional matrices over <span class="SimpleMath">\(\mathrm{GF}(q)\)</span>. The group of all semilinear maps of the vector space <span class="SimpleMath">\(V(n+1,q)\)</span> is obtained as the semidirect product of <span class="SimpleMath">\(\mathrm{GL}(n+1,q)\)</span> and <span class="SimpleMath">\(\mathrm{Aut}(\mathrm{GF}(q))\)</span>, and is denoted by <span class="SimpleMath">\(\Gamma\mathrm{L}(n+1,q)\)</span>. Each semilinear map induces a collineation of <span class="SimpleMath">\(\mathrm{PG}(n,q)\)</span>. The Fundamental theorem of Projective Geometry also guarantees that the converse holds. Note also that <span class="SimpleMath">\(\Gamma\mathrm{L}(n+1,q)\)</span> does not act faithfully on the projective points, and the kernel of its action is the group of scalar matrices, <span class="SimpleMath">\(\mathrm{Sc}(n+1,q)\)</span>. So the group <span class="SimpleMath">\(\mathrm{P}\Gamma\mathrm{L}(n+1,q)\)</span> is defined as the group <span class="SimpleMath">\(\Gamma{}\mathrm{L}(n+1,q) / \mathrm{Sc}(n+1,q)\)</span> , and the group <span class="SimpleMath">\(\mathrm{PGL}(n+1,q)\)</span> as <span class="SimpleMath">\(\mathrm{GL}(n+1,q) / \mathrm{Sc}(n+1,q)\)</span> . An element of the group <span class="SimpleMath">\(\mathrm{PGL}(n+1,q)\)</span> is also called a <em>projectivity</em> or <em>homography</em> of <span class="SimpleMath">\(\mathrm{PG}(n,q)\)</span>, and the group <span class="SimpleMath">\(\mathrm{PGL}(n+1,q)\)</span> is called the <em>projectivity group</em> or <em>homography group</em> of <span class="SimpleMath">\(\mathrm{PG}(n,q)\)</span>. An element of <span class="SimpleMath">\(\mathrm{P}\Gamma\mathrm{L}(n+1,q)\)</span> is called a <em>collineation</em> of <span class="SimpleMath">\(\mathrm{PG}(n,q)\)</span> and the group <span class="SimpleMath">\(\mathrm{P}\Gamma\mathrm{L}(n+1,q)\)</span> is the <em>collineation group</em> of <span class="SimpleMath">\(\mathrm{PG}(n,q)\)</span>.</p>

<p>As usual, we also consider the special linear group <span class="SimpleMath">\(\mathrm{SL}(n+1,q)\)</span>, which is the subgroup of <span class="SimpleMath">\(\mathrm{GL}(n+1,q)\)</span> of all matrices having determinant one. Its projective variant, i.e. <span class="SimpleMath">\(\mathrm{PSL}(n+1,q)\)</span> is defined as <span class="SimpleMath">\(\mathrm{SL}(n+1,q) / (\mathrm{SL}(n+1,q) \cap \mathrm{Sc}(n+1,q))\)</span> and is called the <em>special homography group</em> or <em>special projectivity group</em> of <span class="SimpleMath">\(\mathrm{PG}(n,q)\)</span>.</p>

<p>Consider the projective space <span class="SimpleMath">\(\mathrm{PG}(n,q)\)</span>. As described in Chapter <a href="chap4_mj.html#X83BBAA668672A76D"><span class="RefLink">4</span></a>, a point of <span class="SimpleMath">\(\mathrm{PG}(n,q)\)</span> is represented by a row vector. A <span class="SimpleMath">\(k\)</span>-dimensional subspace of <span class="SimpleMath">\(\mathrm{PG}(n,q)\)</span> is represented by a generating set of <span class="SimpleMath">\(k+1\)</span> points, and as such, by a <span class="SimpleMath">\((k+1) \times (n+1)\)</span> matrix. The convention in <strong class="pkg">FinInG</strong> is that a collineation <span class="SimpleMath">\(\phi\)</span> with underlying matrix <span class="SimpleMath">\(A\)</span> and field automorphism <span class="SimpleMath">\(\theta\)</span> maps the projective point represented by row vector <span class="SimpleMath">\((x_0, x_1, \ldots, x_n)\)</span> to the projective point represented by row vector <span class="SimpleMath">\((y_0,y_1,\ldots,y_n) = ((x_0, x_1, \ldots, x_n) A)^{\theta}\)</span>. This convention determines completely the action of collineations on all elements of a projective space, and it follows that the product of two collineations <span class="SimpleMath">\(\phi_1,\phi_2\)</span> with respective underlying matrices <span class="SimpleMath">\(A_1,A_2\)</span> and respective underlying field automorphisms <span class="SimpleMath">\(\theta_1,\theta_2\)</span> is the collineation with underlying matrix <span class="SimpleMath">\(A_1 \cdot A_2^{\theta_1^{-1}}\)</span> and underlying field automorphism <span class="SimpleMath">\(\theta_1 \theta_2\)</span> .</p>

<p>A <em>correlation</em> of the projective space <span class="SimpleMath">\(\mathrm{PG}(n,q)\)</span> is a collineation from <span class="SimpleMath">\(\mathrm{PG}(n,q)\)</span> to its dual. A projectivity from <span class="SimpleMath">\(\mathrm{PG}(n,q)\)</span> to its dual is sometimes called a <em>reciprocity</em>. The <em>standard duality</em> of the projective space <span class="SimpleMath">\(\mathrm{PG}(n,q)\)</span> maps any point <span class="SimpleMath">\(v\)</span> with coordinates <span class="SimpleMath">\((x_0,x_1,\ldots,x_n)\)</span> on the hyperplane with equation <span class="SimpleMath">\(x_0X_0 + x_1X_1 + \cdots + x_nX_n\)</span> . The standard duality acts as an automorphism on <span class="SimpleMath">\(\mathrm{P}\Gamma\mathrm{L}(n+1,q)\)</span> by mapping the underlying matrix of a collineation to its inverse transpose matrix. (Recall that the frobenius automorphism and the standard duality commute.) The convention in <strong class="pkg">FinInG</strong> is that a correlation <span class="SimpleMath">\(\phi\)</span> with underlying matrix <span class="SimpleMath">\(A\)</span> and field automorphism <span class="SimpleMath">\(\theta\)</span> maps that projective point represented by row vector <span class="SimpleMath">\((x_0, x_1, \ldots, x_n)\)</span> to the projective hyperplane represented by row vector <span class="SimpleMath">\((y_0,y_1,\ldots,y_n) = ((x_0, x_1, \ldots, x_n) A)^{\theta.}\)</span> , i.e. <span class="SimpleMath">\((y_0,y_1,\ldots,y_n) = ((x_0, x_1, \ldots, x_n) A)^{\theta.}\)</span> are the dual coordinates of the hyperplane.</p>

<p>The product of two correlations of <span class="SimpleMath">\(\mathrm{PG}(n,q)\)</span> is a collineation, and the product of a collineation and a correlation is a correlation. So the set of all collineations and correlations of <span class="SimpleMath">\(\mathrm{PG}(n,q)\)</span> forms a group, called the <em>correlation-collineation group</em> of <span class="SimpleMath">\(\mathrm{PG}(n,q)\)</span>. The correlation-collineation group of <span class="SimpleMath">\(\mathrm{PG}(n,q)\)</span> is isomorphic to the semidirect product of PΓL(n+1,q) with the cyclic group of order 2 generated by the <em>standard duality</em> of the projective space <span class="SimpleMath">\(\mathrm{PG}(n,q)\)</span>. The convention determines completely the action of correlations and collineations on all elements of a projective space, and it follows that the product of two elements of the correlation-collineation group <span class="SimpleMath">\(\phi_1,\phi_2\)</span> with respective underlying matrices <span class="SimpleMath">\(A_1,A_2\)</span>, respective underlying field automorphisms <span class="SimpleMath">\(\theta_1,\theta_2\)</span> , and respective underlying projective space isomorphisms (standard duality or identity map) <span class="SimpleMath">\(\delta_1,\delta_2\)</span>, is the element of the correlation-collineation group with underlying matrix <span class="SimpleMath">\(A_1 (A_2^{\theta_1^{-1}})^{\delta_1}\)</span> , underlying field automorphism <span class="SimpleMath">\(\theta_1 \theta_2\)</span> , and underlying projective space automorphism <span class="SimpleMath">\(\delta_1 \delta_2\)</span> , where the action of <span class="SimpleMath">\(\delta_1\)</span> on a matrix is defined as taking the transpose inverse if <span class="SimpleMath">\(\delta_1\)</span> is the standard duality, and as the identity map if <span class="SimpleMath">\(\delta_1\)</span> is the identity.</p>

<p>Action functions for collineations and correlations on the subspaces of a projective space are described in detail in Section <a href="chap5_mj.html#X7EBA895D7A501CE0"><span class="RefLink">5.8</span></a></p>

<p>We mention that the commands <code class="file">PGL</code> (and <code class="file">ProjectiveGeneralLinearGroup</code>) and <code class="file">PSL</code> (and <code class="file">ProjectiveSpecialLinearGroup</code>) are available in GAP and return a (permutation) group isomorphic to the required group. Therefore we do not provide new methods for these commands, but assume that the user will obtain these groups as homography or special homography group of the appropriate projective space. We will follow this philosophy for the other classical groups. The terminology <em>projective semilinear group</em> will be used for a group generated by collineations of a projective space.</p>

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

<h4>5.1 <span class="Heading"> Projectivities, collineations and correlations of projective spaces.</span></h4>

<p>These are the different type of actions on projective spaces in <strong class="pkg">FinInG</strong>, and they naturally give rise to the following distinct categories and representations. Note that these categories and representations are to be considered on a non-user level. Below we describe all user construction methods that hide nicely these technical details.</p>

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

<h5>5.1-1 <span class="Heading">Categories for group elements</span></h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ IsProjGrpEl</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">‣ IsProjGrpElWithFrob</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">‣ IsProjGrpElWithFrobWithPSIsom</code></td><td class="tdright">( category )</td></tr></table></div>
<p><code class="code">IsProjGrpEl</code>, <code class="code">IsProjGrpElWithFrob</code>, and <code class="code">IsProjGrpElWithFrobWithPSIsom</code> are the categories naturally induced by the notions of projectivities, collineations, and correlations of a projective space.</p>

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

<h5>5.1-2 <span class="Heading">Representations for group elements</span></h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ IsProjGrpElRep</code></td><td class="tdright">( representation )</td></tr></table></div>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ IsProjGrpElWithFrobRep</code></td><td class="tdright">( representation )</td></tr></table></div>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ IsProjGrpElWithFrobWithPSIsomRep</code></td><td class="tdright">( representation )</td></tr></table></div>
<p><code class="code">IsProjGrpElRep</code> is the representation naturally induced by a projectivity; <code class="code">IsProjGrpElWithFrobRep</code> is the representation naturally induced by the notion of a collineation of projective space; and <code class="code">IsProjGrpElWithFrobWithPSIsomRep</code> is the representation naturally induced by a correlation of a projective space. This means that an object in the representation <code class="code">IsProjGrpElRep</code> has as underlying object a matrix; an object in the category <code class="code">IsProjGrpElWithFrobRep</code> has as underlying object a pair consisting of a matrix and a field automorphism; and <code class="code">IsProjGrpElWithFrobWithPSIsomRep</code> has as underlying object a triple consisting of a matrix, a field automorphism and an isomorphism from the projective space to its dual space. Also the base field is stored as a component in the representation.</p>

<p>The above mentioned categories allow us to make a distinction between projectivities, collineations and correlations apart from their representation. However, in <strong class="pkg">FinInG</strong>, a group element constructed in the categories <code class="code">IsProjGrpElMore</code> is always constructed in the representation <code class="code">IsProjGrpElMoreRep</code>. Furthermore, projectivities of projective spaces (and also collineations of projective spaces) will by default be constructed in the category <code class="code">IsProjGrpElWithFrobRep</code>. This technical choice was made by the developers to have the projectivity groups naturally embedded in the collineation groups. Correlations of projective spaces will be constructed in the category <code class="code">IsProjGrpElWithFrobWithPSIsom</code>.</p>

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

<h5>5.1-3 <span class="Heading">Projectivities</span></h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ IsProjectivity</code></td><td class="tdright">( property )</td></tr></table></div>
<p><code class="code">IsProjectivity</code> is a property. Projectivities are the elements of <span class="SimpleMath">\(\mathrm{PGL}(n+1,q)\)</span>. Every element belonging to <code class="code">IsProjGrpEl</code> is by construction a projectivity. If <code class="code">IsProjectivity</code> is applied to a an element belonging to <code class="code">IsProjGrpElWithFrob</code>, then it verifies whether the underlying field automorphism is the identity. If <code class="code">IsProjectivity</code> is applied to a an element belonging to <code class="code">IsProjGrpElWithFrobWithPSIsom</code>, then it verifies whether the underlying field automorphism is the identity, and whether the projective space isomorphism is the identity. This operation provides a user-friendly method to distinguish the projectivities from the projective strictly semilinear maps, and the correlations of a projective space.</p>


<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">g := Random(HomographyGroup(PG(3,4)));</span>
< a collineation: <cmat 4x4 over GF(2,2)>, F^0>
<span class="GAPprompt">gap></span> <span class="GAPinput">IsProjectivity(g);</span>
true
<span class="GAPprompt">gap></span> <span class="GAPinput">g := Random(CollineationGroup(PG(3,4)));</span>
< a collineation: <cmat 4x4 over GF(2,2)>, F^0>
<span class="GAPprompt">gap></span> <span class="GAPinput">IsProjectivity(g);</span>
true
<span class="GAPprompt">gap></span> <span class="GAPinput">g := Random(CorrelationCollineationGroup(PG(3,4)));</span>
<projective element with Frobenius with projectivespace isomorphism: <immutabl
e cmat 4x4 over GF(2,2)>, F^
2, StandardDuality( AllElementsOfIncidenceStructure( ProjectiveSpace(
3,GF(2^2)) ) ) >
<span class="GAPprompt">gap></span> <span class="GAPinput">IsProjectivity(g);</span>
false
 
</pre></div>

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

<h5>5.1-4 <span class="Heading">Collineations of projective spaces</span></h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ IsCollineation</code></td><td class="tdright">( property )</td></tr></table></div>
<p><code class="code">IsCollineation</code> is property. All elements of <span class="SimpleMath">\(\mathrm{P}\Gamma\mathrm{L}(n+1,q)\)</span> are collineations, and therefore all elements belonging to <code class="code">IsProjGrpElWithFrob</code> are collineations. But also a projectivity is a collineation, as well as an element belonging to <code class="code">IsProjGrpElWithFrobWithPSIsom</code> with projective space isomorphism equal to the identity, is a collineation.</p>


<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">g := Random(HomographyGroup(PG(2,27)));</span>
< a collineation: <cmat 3x3 over GF(3,3)>, F^0>
<span class="GAPprompt">gap></span> <span class="GAPinput">IsCollineation(g);</span>
true
<span class="GAPprompt">gap></span> <span class="GAPinput">g := Random(CollineationGroup(PG(2,27)));</span>
< a collineation: <cmat 3x3 over GF(3,3)>, F^0>
<span class="GAPprompt">gap></span> <span class="GAPinput">IsCollineation(g);</span>
true
<span class="GAPprompt">gap></span> <span class="GAPinput">g := Random(CorrelationCollineationGroup(PG(2,27)));</span>
<projective element with Frobenius with projectivespace isomorphism: <cmat 3x
3 over GF(3,3)>, F^0, IdentityMapping( <All elements of ProjectiveSpace(2, 
27)> ) >
<span class="GAPprompt">gap></span> <span class="GAPinput">IsCollineation(g);</span>
true
 
</pre></div>

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

<h5>5.1-5 <span class="Heading">Projective strictly semilinear maps</span></h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ IsStrictlySemilinear</code></td><td class="tdright">( property )</td></tr></table></div>
<p><code class="code">IsStrictlySemilinear</code> is a property that checks whether a given collineation has a nontrivial underlying field automorphisms, i.e. whether the element belongs to <span class="SimpleMath">\(\mathrm{P}\Gamma\mathrm{L}(n+1,q)\)</span>, but not to <span class="SimpleMath">\(\mathrm{PGL}(n+1,q)\)</span>. If <code class="code">IsStrictlySemilinear</code> is applied to a an element belonging to <code class="code">IsProjGrpElWithFrobWithPSIsom</code>, then it verifies whether the underlying field automorphism is different from the identity, and whether the projective space isomorphism equals the identity. This operation provides a user-friendly method to distinguish the projective strictly semilinear maps from projectivities inside the category of collineations of a projective space.</p>


<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">g := Random(HomographyGroup(PG(3,25)));</span>
< a collineation: <cmat 4x4 over GF(5,2)>, F^0>
<span class="GAPprompt">gap></span> <span class="GAPinput">IsStrictlySemilinear(g);</span>
false
<span class="GAPprompt">gap></span> <span class="GAPinput">g := Random(CollineationGroup(PG(3,25)));</span>
< a collineation: <cmat 4x4 over GF(5,2)>, F^5>
<span class="GAPprompt">gap></span> <span class="GAPinput">IsStrictlySemilinear(g);</span>
true
<span class="GAPprompt">gap></span> <span class="GAPinput">g := Random(CorrelationCollineationGroup(PG(3,25)));</span>
<projective element with Frobenius with projectivespace isomorphism: <cmat 4x
4 over GF(5,2)>, F^5, IdentityMapping( <All elements of ProjectiveSpace(3, 
25)> ) >
<span class="GAPprompt">gap></span> <span class="GAPinput">IsStrictlySemilinear(g);</span>
true
 
</pre></div>

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

<h5>5.1-6 <span class="Heading">Correlations and collineations</span></h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ IsProjGrpElWithFrobWithPSIsom</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">‣ IsCorrelationCollineation</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">‣ IsCorrelation</code></td><td class="tdright">( property )</td></tr></table></div>
<p>The underlying objects of a correlation-collineation in <strong class="pkg">FinInG</strongare a nonsingular matrix, a field automorphism and a projective space isomorphism. <code class="code">IsProjGrpElWithFrobWithPSIsom</code> is the category of these objects. If the projective space isomorphism is not the identity, then the element is a correlation, and <code class="code">IsCorrelation</code> will return true. <code class="code">IsCorrelationCollineation</codeis a synonym of <code class="code">IsProjGrpElWithFrobWithPSIsom</code>.</p>


<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">g := Random(CollineationGroup(PG(4,7)));</span>
< a collineation: <cmat 5x5 over GF(7,1)>, F^0>
<span class="GAPprompt">gap></span> <span class="GAPinput">IsCorrelationCollineation(g);</span>
false
<span class="GAPprompt">gap></span> <span class="GAPinput">IsCorrelation(g);</span>
false
<span class="GAPprompt">gap></span> <span class="GAPinput">g := Random(CorrelationCollineationGroup(PG(4,7)));</span>
<projective element with Frobenius with projectivespace isomorphism: <cmat 5x
5 over GF(7,1)>, F^0, IdentityMapping( <All elements of ProjectiveSpace(4, 
7)> ) >
<span class="GAPprompt">gap></span> <span class="GAPinput">IsCorrelationCollineation(g);</span>
true
<span class="GAPprompt">gap></span> <span class="GAPinput">IsCorrelation(g);</span>
false
 
</pre></div>

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

<h4>5.2 <span class="Heading">Construction of projectivities, collineations and correlations.</span></h4>

<p>In <strong class="pkg">FinInG</strong>, projectivities and collineations are both constructed in the category <code class="code">IsProjGrpElWithFrob</code>; correlations are constructed in the category <code class="code">IsProjGrpElWithFrobWithPSIsom</code>.</p>

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

<h5>5.2-1 Projectivity</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ Projectivity</code>( <var class="Arg">mat</var>, <var class="Arg">f</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">‣ Projectivity</code>( <var class="Arg">pg</var>, <var class="Arg">mat</var> )</td><td class="tdright">( operation )</td></tr></table></div>
<p>Returns: a projectivity of a projective space</p>

<p>The argument <var class="Arg">mat</var> must be a nonsingular matrix over the finite field <var class="Arg">f</var>. In the second variant, the size of the nonsingular matrix <var class="Arg">mat</var> must be one more than the dimension of the projective space <var class="Arg">pg</var>. This creates an element of a projectivity group. But the returned object belongs to <code class="code">IsProjGrpElWithFrob</code>!</p>


<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">mat := [[1,0,0],[0,1,0],[0,0,1]]*Z(9)^0;</span>
[ [ Z(3)^0, 0*Z(3), 0*Z(3) ], [ 0*Z(3), Z(3)^0, 0*Z(3) ], 
  [ 0*Z(3), 0*Z(3), Z(3)^0 ] ]
<span class="GAPprompt">gap></span> <span class="GAPinput">Projectivity(mat,GF(9));</span>
< a collineation: <cmat 3x3 over GF(3,2)>, F^0>
 
</pre></div>

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

<h5>5.2-2 CollineationOfProjectiveSpace</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ CollineationOfProjectiveSpace</code>( <var class="Arg">mat</var>, <var class="Arg">frob</var>, <var class="Arg">f</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">‣ CollineationOfProjectiveSpace</code>( <var class="Arg">mat</var>, <var class="Arg">f</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">‣ CollineationOfProjectiveSpace</code>( <var class="Arg">mat</var>, <var class="Arg">frob</var>, <var class="Arg">f</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">‣ CollineationOfProjectiveSpace</code>( <var class="Arg">mat</var>, <var class="Arg">f</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">‣ CollineationOfProjectiveSpace</code>( <var class="Arg">pg</var>, <var class="Arg">mat</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">‣ CollineationOfProjectiveSpace</code>( <var class="Arg">pg</var>, <var class="Arg">mat</var>, <var class="Arg">frob</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">‣ Collineation</code>( <var class="Arg">pg</var>, <var class="Arg">mat</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">‣ Collineation</code>( <var class="Arg">pg</var>, <var class="Arg">mat</var>, <var class="Arg">frob</var)</td><td class="tdright">( operation )</td></tr></table></div>
<p><var class="Arg">mat</var> is a nonsingular matrix, <var class="Arg">frob</var> is a field automorphism, <var class="Arg">f</var> is a field, and <var class="Arg">pg</var> is a projective space. This function (and its shorter version) returns the collineation with matrix <var class="Arg">mat</var> and automorphism <var class="Arg">frob</var> of the field <var class="Arg">f</var>. If <var class="Arg">frob</var> is not specified then the companion automorphism of the resulting group element will be the identity map. The returned object belongs to the category <code class="code">IsProjGrpElWithFrob</code>. When the argument <var class="Arg">frob</var> is given, it is checked whether thsource of <var class="Arg">frob</var> equals <var class="Arg">f</var>. When the arguments <var class="Arg">pg</var> and <var class="Arg">mat</var> are used, then it is checked that these two arguments are compatible.</p>


<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">mat:=</span>
<span class="GAPprompt">></span> <span class="GAPinput">[[Z(2^3)^6,Z(2^3),Z(2^3)^3,Z(2^3)^3],[Z(2^3)^6,Z(2)^0,Z(2^3)^2,Z(2^3)^3],</span>
<span class="GAPprompt">></span> <span class="GAPinput">[0*Z(2),Z(2^3)^4,Z(2^3),Z(2^3)],[Z(2^3)^6,Z(2^3)^5,Z(2^3)^3,Z(2^3)^5 ]];</span>
[ [ Z(2^3)^6, Z(2^3), Z(2^3)^3, Z(2^3)^3 ], 
  [ Z(2^3)^6, Z(2)^0, Z(2^3)^2, Z(2^3)^3 ], 
  [ 0*Z(2), Z(2^3)^4, Z(2^3), Z(2^3) ], 
  [ Z(2^3)^6, Z(2^3)^5, Z(2^3)^3, Z(2^3)^5 ] ]
<span class="GAPprompt">gap></span> <span class="GAPinput">frob := FrobeniusAutomorphism(GF(8));</span>
FrobeniusAutomorphism( GF(2^3) )
<span class="GAPprompt">gap></span> <span class="GAPinput">phi := ProjectiveSemilinearMap(mat,frob^2,GF(8));</span>
< a collineation: <cmat 4x4 over GF(2,3)>, F^4>
<span class="GAPprompt">gap></span> <span class="GAPinput">mat2 := [[Z(2^8)^31,Z(2^8)^182,Z(2^8)^49],[Z(2^8)^224,Z(2^8)^25,Z(2^8)^45], </span>
<span class="GAPprompt">></span> <span class="GAPinput">[Z(2^8)^128,Z(2^8)^165,Z(2^8)^217]];</span>
[ [ Z(2^8)^31, Z(2^8)^182, Z(2^8)^49 ], [ Z(2^8)^224, Z(2^8)^25, Z(2^8)^45 ], 
  [ Z(2^8)^128, Z(2^8)^165, Z(2^8)^217 ] ]
<span class="GAPprompt">gap></span> <span class="GAPinput">psi := CollineationOfProjectiveSpace(mat2,GF(256));</span>
< a collineation: <cmat 3x3 over GF(2,8)>, F^0>
 
</pre></div>

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

<h5>5.2-3 ProjectiveSemilinearMap</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ ProjectiveSemilinearMap</code>( <var class="Arg">mat</var>, <var class="Arg">frob</var>, <var class="Arg">f</var> )</td><td class="tdright">( operation )</td></tr></table></div>
<p>Returns: a projectivity of a projective space</p>

<p><var class="Arg">mat</var> is a nonsingular matrix, <var class="Arg">frob</var> is a field automorphism, and <var class="Arg">f</var> is a field. This function returns the collineation with matrix <var class="Arg">mat</var> and automorphism <var class="Arg">frob</var>. The returned object belongs to the category <code class="code">IsProjGrpElWithFrob</code>. When the argument <var class="Arg">frob</var> is given, it is checked whether the source of <var class="Arg">frob</var> equals <var class="Arg">f</var>.</p>

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

<h5>5.2-4 IdentityMappingOfElementsOfProjectiveSpace</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ IdentityMappingOfElementsOfProjectiveSpace</code>( <var class="Arg">ps</var> )</td><td class="tdright">( operation )</td></tr></table></div>
<p>This operation returns the identity mapping on the collection of subspaces of a projective space <var class="Arg">ps</var>.</p>

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

<h5>5.2-5 StandardDualityOfProjectiveSpace</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ StandardDualityOfProjectiveSpace</code>( <var class="Arg">ps</var> )</td><td class="tdright">( operation )</td></tr></table></div>
<p>This operation returns the standard duality of the projective space <var class="Arg">ps</var></p>


<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">ps := ProjectiveSpace(4,5);</span>
ProjectiveSpace(4, 5)
<span class="GAPprompt">gap></span> <span class="GAPinput">delta := StandardDualityOfProjectiveSpace(ps);</span>
StandardDuality( AllElementsOfIncidenceStructure( ProjectiveSpace(4,GF(5)) ) )
<span class="GAPprompt">gap></span> <span class="GAPinput">delta^2;</span>
IdentityMapping( <All elements of ProjectiveSpace(4, 5)> )
<span class="GAPprompt">gap></span> <span class="GAPinput">p := VectorSpaceToElement(ps,[1,2,3,0,1]*Z(5)^0);</span>
<a point in ProjectiveSpace(4, 5)>
<span class="GAPprompt">gap></span> <span class="GAPinput">h := p^delta;</span>
<a solid in ProjectiveSpace(4, 5)>
<span class="GAPprompt">gap></span> <span class="GAPinput">UnderlyingObject(h);</span>
<cmat 4x5 over GF(5,1)>
<span class="GAPprompt">gap></span> <span class="GAPinput">Unpack(last);</span>
[ [ Z(5)^0, 0*Z(5), 0*Z(5), 0*Z(5), Z(5)^2 ], 
  [ 0*Z(5), Z(5)^0, 0*Z(5), 0*Z(5), Z(5)^3 ], 
  [ 0*Z(5), 0*Z(5), Z(5)^0, 0*Z(5), Z(5) ], 
  [ 0*Z(5), 0*Z(5), 0*Z(5), Z(5)^0, 0*Z(5) ] ]
 
</pre></div>

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

<h5>5.2-6 CorrelationOfProjectiveSpace</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ CorrelationOfProjectiveSpace</code>( <var class="Arg">mat</var>, <var class="Arg">f</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">‣ CorrelationOfProjectiveSpace</code>( <var class="Arg">mat</var>, <var class="Arg">frob</var>, <var class="Arg">f</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">‣ CorrelationOfProjectiveSpace</code>( <var class="Arg">mat</var>, <var class="Arg">f</var>, <var class="Arg">delta</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">‣ CorrelationOfProjectiveSpace</code>( <var class="Arg">mat</var>, <var class="Arg">frob</var>, <var class="Arg">f</var>, <var class="Arg">delta</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">‣ CorrelationOfProjectiveSpace</code>( <var class="Arg">pg</var>, <var class="Arg">mat</var>, <var class="Arg">frob</var>, <var class="Arg">delta</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">‣ Correlation</code>( <var class="Arg">pg</var>, <var class="Arg">mat</var>, <var class="Arg">frob</var>, <var class="Arg">delta</var> )</td><td class="tdright">( operation )</td></tr></table></div>
<p><var class="Arg">mat</var> is a nonsingular matrix, <var class="Arg">frob</var> is a field automorphism, <var class="Arg">f</var> is a field, and <var class="Arg">delta</var> is the standard duality of the projective space <span class="SimpleMath">\(\mathrm{PG}(n,q)\)</span>. This function returns the correlation with matrix <var class="Arg">mat</var>, automorphism <var class="Arg">frob</var>, and standard duality <var class="Arg">delta</var>. If <var class="Arg">frob</var> is not specified then the companion automorphism of the resulting group element will be the identity map. If the user specifies <var class="Arg">delta</var>, then it must be the standard duality of a projective space, created using <code class="func">StandardDualityOfProjectiveSpace</code> (<a href="chap5_mj.html#X841607A77B841CC9"><span class="RefLink">5.2-5</span></a>), or the identity mapping on the collection of subspaces of a projective space, created using <code class="func">IdentityMappingOfElementsOfProjectiveSpace</code> (<a href="chap5_mj.html#X80649C427E3BCBFF"><span class="RefLink">5.2-4</span></a>). If not specified, then the companion vector space isomorphism is the identity mapping. The returned object belongs to the category <code class="code">IsProjGrpElWithFrobWithPSIsom</code></p>


<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">mat := [[1,0,0],[3,0,2],[0,5,4]]*Z(7^3);</span>
[ [ Z(7^3), 0*Z(7), 0*Z(7) ], [ Z(7^3)^58, 0*Z(7), Z(7^3)^115 ], 
  [ 0*Z(7), Z(7^3)^286, Z(7^3)^229 ] ]
<span class="GAPprompt">gap></span> <span class="GAPinput">phi1 := CorrelationOfProjectiveSpace(mat,GF(7^3));</span>
<projective element with Frobenius with projectivespace isomorphism: <cmat 3x
3 over GF(7,3)>, F^0, IdentityMapping( <All elements of ProjectiveSpace(2, 
343)> ) >
<span class="GAPprompt">gap></span> <span class="GAPinput">frob := FrobeniusAutomorphism(GF(7^3));</span>
FrobeniusAutomorphism( GF(7^3) )
<span class="GAPprompt">gap></span> <span class="GAPinput">phi2 := CorrelationOfProjectiveSpace(mat,frob,GF(7^3));</span>
<projective element with Frobenius with projectivespace isomorphism: <cmat 3x
3 over GF(7,3)>, F^7, IdentityMapping( <All elements of ProjectiveSpace(2, 
343)> ) >
<span class="GAPprompt">gap></span> <span class="GAPinput">delta := StandardDualityOfProjectiveSpace(ProjectiveSpace(2,GF(7^3)));</span>
StandardDuality( AllElementsOfIncidenceStructure( ProjectiveSpace(
2,GF(7^3)) ) )
<span class="GAPprompt">gap></span> <span class="GAPinput">phi3 := CorrelationOfProjectiveSpace(mat,GF(7^3),delta);</span>
<projective element with Frobenius with projectivespace isomorphism: <cmat 3x
3 over GF(7,
3)>, F^0, StandardDuality( AllElementsOfIncidenceStructure( ProjectiveSpace(
2,GF(7^3)) ) ) >
<span class="GAPprompt">gap></span> <span class="GAPinput">phi4 := CorrelationOfProjectiveSpace(mat,frob,GF(7^3),delta);</span>
<projective element with Frobenius with projectivespace isomorphism: <cmat 3x
3 over GF(7,3)>, F^
7, StandardDuality( AllElementsOfIncidenceStructure( ProjectiveSpace(
2,GF(7^3)) ) ) >
 
</pre></div>

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

<h4>5.3 <span class="Heading">Basic operations for projectivities, collineations and correlations of
projective spaces</span></h4>

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

<h5>5.3-1 Representative</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ Representative</code>( <var class="Arg">g</var> )</td><td class="tdright">( operation )</td></tr></table></div>
<p><var class="Arg">g</var> is a projectivity, collineation or correlation of a projective space. This function returns the representative components that determine <var class="Arg">g</var>, i.e. a matrix, a matrix and a field automorphism, and a matrix, a field automorphism, and a vector space isomorphism, respectively.</p>


<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">g:=CollineationGroup( ProjectiveSpace(2,49));</span>
The FinInG collineation group PGammaL(3,49)
<span class="GAPprompt">gap></span> <span class="GAPinput">x:=Random(g);;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">Representative(x);</span>
[ <immutable cmat 3x3 over GF(7,2)>, FrobeniusAutomorphism( GF(7^2) ) ]
 
</pre></div>

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

<h5>5.3-2 MatrixOfCollineation</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ MatrixOfCollineation</code>( <var class="Arg">g</var> )</td><td class="tdright">( operation )</td></tr></table></div>
<p><var class="Arg">g</var> is a collineation (including a projectivity) of a projective space. This function returns the matrix that was used to construct <var class="Arg">g</var>.</p>


<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">g:=CollineationGroup( ProjectiveSpace(3,3));</span>
The FinInG collineation group PGL(4,3)
<span class="GAPprompt">gap></span> <span class="GAPinput">x:=Random(g);;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">MatrixOfCollineation(x);</span>
<cmat 4x4 over GF(3,1)>
<span class="GAPprompt">gap></span> <span class="GAPinput">Unpack(last);</span>
[ [ 0*Z(3), 0*Z(3), Z(3)^0, Z(3) ], [ Z(3), 0*Z(3), 0*Z(3), 0*Z(3) ], 
  [ Z(3)^0, Z(3)^0, Z(3), 0*Z(3) ], [ Z(3), Z(3), 0*Z(3), 0*Z(3) ] ]
 
</pre></div>

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

<h5>5.3-3 MatrixOfCorrelation</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ MatrixOfCorrelation</code>( <var class="Arg">g</var> )</td><td class="tdright">( operation )</td></tr></table></div>
<p><var class="Arg">g</var> is a correlation of a projective space. This function returns the matrix that was used to construct <var class="Arg">g</var>.</p>


<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">g:=CorrelationCollineationGroup( ProjectiveSpace(4,9));</span>
The FinInG correlation-collineation group PGammaL(5,9) : 2
<span class="GAPprompt">gap></span> <span class="GAPinput">x:=Random(g);;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">MatrixOfCorrelation(x);</span>
<cmat 5x5 over GF(3,2)>
<span class="GAPprompt">gap></span> <span class="GAPinput">Unpack(last);</span>
[ [ Z(3^2)^3, Z(3^2)^6, 0*Z(3), 0*Z(3), 0*Z(3) ], 
  [ Z(3^2), Z(3^2)^3, Z(3^2)^2, Z(3^2)^5, Z(3^2) ], 
  [ Z(3^2)^2, Z(3^2)^3, Z(3^2), Z(3^2), Z(3^2)^3 ], 
  [ Z(3^2)^2, Z(3^2), Z(3^2)^6, Z(3^2), Z(3^2)^5 ], 
  [ Z(3^2), Z(3^2)^3, Z(3)^0, 0*Z(3), Z(3^2)^6 ] ]
 
</pre></div>

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

<h5>5.3-4 BaseField</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ BaseField</code>( <var class="Arg">g</var> )</td><td class="tdright">( operation )</td></tr></table></div>
<p>Returns: a field</p>

<p><var class="Arg">g</var> is a projectivity, collineation or correlation of a projective space. This function returns the base field that was used to construct <var class="Arg">g</var>.</p>


<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">mat := [[0,1,0],[1,0,0],[0,0,2]]*Z(3)^0;</span>
[ [ 0*Z(3), Z(3)^0, 0*Z(3) ], [ Z(3)^0, 0*Z(3), 0*Z(3) ], 
  [ 0*Z(3), 0*Z(3), Z(3) ] ]
<span class="GAPprompt">gap></span> <span class="GAPinput">g := Projectivity(mat,GF(3^6));</span>
< a collineation: <cmat 3x3 over GF(3,6)>, F^0>
<span class="GAPprompt">gap></span> <span class="GAPinput">BaseField(g);</span>
GF(3^6)
 
</pre></div>

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

<h5>5.3-5 FieldAutomorphism</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ FieldAutomorphism</code>( <var class="Arg">g</var> )</td><td class="tdright">( operation )</td></tr></table></div>
<p><var class="Arg">g</var> is a collineation of a projective space or a correlation of a projective space. This function returns the companion field automorphism which defines <var class="Arg">g</var>. Note that in the following example, you may want to execute it several times to see the different possible results generated by the random choice of projective semilinear map here.</p>


<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">g:=CollineationGroup( ProjectiveSpace(3,9));</span>
The FinInG collineation group PGammaL(4,9)
<span class="GAPprompt">gap></span> <span class="GAPinput">x:=Random(g);;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">FieldAutomorphism(x);</span>
IdentityMapping( GF(3^2) )
 
</pre></div>

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

<h5>5.3-6 ProjectiveSpaceIsomorphism</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ ProjectiveSpaceIsomorphism</code>( <var class="Arg">g</var> )</td><td class="tdright">( operation )</td></tr></table></div>
<p><var class="Arg">g</var> is a correlation of a projective space. This function returns the companion isomorphism of the projective space which defines <var class="Arg">g</var>.</p>


<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">mat := [[1,0,0],[3,0,2],[0,5,4]]*Z(7^3);</span>
[ [ Z(7^3), 0*Z(7), 0*Z(7) ], [ Z(7^3)^58, 0*Z(7), Z(7^3)^115 ], 
  [ 0*Z(7), Z(7^3)^286, Z(7^3)^229 ] ]
<span class="GAPprompt">gap></span> <span class="GAPinput">frob := FrobeniusAutomorphism(GF(7^3));</span>
FrobeniusAutomorphism( GF(7^3) )
<span class="GAPprompt">gap></span> <span class="GAPinput">delta := StandardDualityOfProjectiveSpace(ProjectiveSpace(2,GF(7^3)));</span>
StandardDuality( AllElementsOfIncidenceStructure( ProjectiveSpace(
2,GF(7^3)) ) )
<span class="GAPprompt">gap></span> <span class="GAPinput">phi := CorrelationOfProjectiveSpace(mat,frob,GF(7^3),delta);</span>
<projective element with Frobenius with projectivespace isomorphism: <cmat 3x
3 over GF(7,3)>, F^
7, StandardDuality( AllElementsOfIncidenceStructure( ProjectiveSpace(
2,GF(7^3)) ) ) >
<span class="GAPprompt">gap></span> <span class="GAPinput">ProjectiveSpaceIsomorphism(phi);</span>
StandardDuality( AllElementsOfIncidenceStructure( ProjectiveSpace(
2,GF(7^3)) ) )
 
</pre></div>

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

<h5>5.3-7 Order</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ Order</code>( <var class="Arg">g</var> )</td><td class="tdright">( operation )</td></tr></table></div>
<p><var class="Arg">g</var> is a projectivity, collineation or correlation of a projective space. This function returns the order of <var class="Arg">g</var>.</p>


<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">x := Random(CollineationGroup(PG(4,9)));</span>
< a collineation: <cmat 5x5 over GF(3,2)>, F^3>
<span class="GAPprompt">gap></span> <span class="GAPinput">t := Order(x);</span>
32
<span class="GAPprompt">gap></span> <span class="GAPinput">IsOne(x^t);</span>
true
 
</pre></div>

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

<h4>5.4 <span class="Heading">The groups <span class="SimpleMath">\(\mathrm{P}\Gamma\mathrm{L}\)</span>, <span class="SimpleMath">\(\mathrm{PGL}\)</span>, and <span class="SimpleMath">\(\mathrm{PSL}\)</span> in <strong class="pkg">FinInG</strong>
</span></h4>

<p>As mentioned before the commands <code class="file">PGL</code> (and <code class="file">ProjectiveGeneralLinearGroup</code>) and <code class="file">PSL</code> (and <code class="file">ProjectiveSpecialLinearGroup</code>) are already available in GAP and return a (permutation) group isomorphic to the required group. In <strong class="pkg">FinInG</strong>, different categories are created for these groups.</p>

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

<h5>5.4-1 ProjectivityGroup</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ ProjectivityGroup</code>( <var class="Arg">geom</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">‣ HomographyGroup</code>( <var class="Arg">geom</var> )</td><td class="tdright">( operation )</td></tr></table></div>
<p>Returns: the group of projectivities of geom</p>

<p>Let <var class="Arg">geom</var> be the projective space <span class="SimpleMath">\(\mathrm{PG}(n,q)\)</span> This operation (and its synonym) returns the group of projectivities <span class="SimpleMath">\(\mathrm{PGL}(n+1,q)\)</span> of the projective space <span class="SimpleMath">\(\mathrm{PG}(n,q)\)</span>. Note that although a projectivity is a collineation with the identity as associated field isomorphism, this group belongs to the category <code class="code">IsProjectiveGroupWithFrob</code>, and its elements belong to <code class="code">IsProjGrpElWithFrob</code>.</p>


<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">ps := ProjectiveSpace(3,16);</span>
ProjectiveSpace(3, 16)
<span class="GAPprompt">gap></span> <span class="GAPinput">ProjectivityGroup(ps);</span>
The FinInG projectivity group PGL(4,16)
<span class="GAPprompt">gap></span> <span class="GAPinput">HomographyGroup(ps);</span>
The FinInG projectivity group PGL(4,16)
<span class="GAPprompt">gap></span> <span class="GAPinput">ps := ProjectiveSpace(4,81);</span>
ProjectiveSpace(4, 81)
<span class="GAPprompt">gap></span> <span class="GAPinput">ProjectivityGroup(ps);</span>
The FinInG projectivity group PGL(5,81)
<span class="GAPprompt">gap></span> <span class="GAPinput">HomographyGroup(ps);</span>
The FinInG projectivity group PGL(5,81)
<span class="GAPprompt">gap></span> <span class="GAPinput">ps := ProjectiveSpace(5,3);</span>
ProjectiveSpace(5, 3)
<span class="GAPprompt">gap></span> <span class="GAPinput">ProjectivityGroup(ps);</span>
The FinInG projectivity group PGL(6,3)
<span class="GAPprompt">gap></span> <span class="GAPinput">HomographyGroup(ps);</span>
The FinInG projectivity group PGL(6,3)
<span class="GAPprompt">gap></span> <span class="GAPinput">ps := ProjectiveSpace(2,2);</span>
ProjectiveSpace(2, 2)
<span class="GAPprompt">gap></span> <span class="GAPinput">ProjectivityGroup(ps);</span>
The FinInG projectivity group PGL(3,2)
<span class="GAPprompt">gap></span> <span class="GAPinput">HomographyGroup(ps);</span>
The FinInG projectivity group PGL(3,2)
 
</pre></div>

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

<h5>5.4-2 CollineationGroup</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ CollineationGroup</code>( <var class="Arg">geom</var> )</td><td class="tdright">( operation )</td></tr></table></div>
<p>Returns: the group of collineations of geom</p>

<p>Let <var class="Arg">geom</var> be the projective space <span class="SimpleMath">\(\mathrm{PG}(n,q)\)</span>. This operation returns the group of collineations <span class="SimpleMath">\(\mathrm{P}\Gamma\mathrm{L}(n+1,q)\)</span> of the projective space <span class="SimpleMath">\(\mathrm{PG}(n,q)\)</span>. If <span class="SimpleMath">\(\mathrm{GF}(q)\)</span> has no non-trivial field automorphisms, i.e. when <span class="SimpleMath">\(q\)</span> is prime, the group <span class="SimpleMath">\(\mathrm{PGL}(n+1,q)\)</span> is the full collineation group and will be returned.</p>


<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">ps := ProjectiveSpace(3,16);</span>
ProjectiveSpace(3, 16)
<span class="GAPprompt">gap></span> <span class="GAPinput">CollineationGroup(ps);</span>
The FinInG collineation group PGammaL(4,16)
<span class="GAPprompt">gap></span> <span class="GAPinput">ps := ProjectiveSpace(4,81);</span>
ProjectiveSpace(4, 81)
<span class="GAPprompt">gap></span> <span class="GAPinput">CollineationGroup(ps);</span>
The FinInG collineation group PGammaL(5,81)
<span class="GAPprompt">gap></span> <span class="GAPinput">ps := ProjectiveSpace(5,3);</span>
ProjectiveSpace(5, 3)
<span class="GAPprompt">gap></span> <span class="GAPinput">CollineationGroup(ps);</span>
The FinInG collineation group PGL(6,3)
<span class="GAPprompt">gap></span> <span class="GAPinput">ps := ProjectiveSpace(2,2);</span>
ProjectiveSpace(2, 2)
<span class="GAPprompt">gap></span> <span class="GAPinput">CollineationGroup(ps);</span>
The FinInG collineation group PGL(3,2)
 
</pre></div>

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

<h5>5.4-3 SpecialProjectivityGroup</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ SpecialProjectivityGroup</code>( <var class="Arg">geom</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">‣ SpecialHomographyGroup</code>( <var class="Arg">geom</var> )</td><td class="tdright">( operation )</td></tr></table></div>
<p>Returns: the group of special projectivities of geom</p>

<p>Let <var class="Arg">geom</var> be the projective space <span class="SimpleMath">\(\mathrm{PG}(n,q)\)</span> This operation (and its synonym) returns the group of special projectivities <span class="SimpleMath">\(\mathrm{PSL}(n+1,q)\)</span> of the projective space <span class="SimpleMath">\(\mathrm{PG}(n,q)\)</span>.</p>


<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">ps := ProjectiveSpace(3,16);</span>
ProjectiveSpace(3, 16)
<span class="GAPprompt">gap></span> <span class="GAPinput">SpecialProjectivityGroup(ps);</span>
The FinInG PSL group PSL(4,16)
<span class="GAPprompt">gap></span> <span class="GAPinput">SpecialHomographyGroup(ps);</span>
The FinInG PSL group PSL(4,16)
<span class="GAPprompt">gap></span> <span class="GAPinput">ps := ProjectiveSpace(4,81);</span>
ProjectiveSpace(4, 81)
<span class="GAPprompt">gap></span> <span class="GAPinput">SpecialProjectivityGroup(ps);</span>
The FinInG PSL group PSL(5,81)
<span class="GAPprompt">gap></span> <span class="GAPinput">SpecialHomographyGroup(ps);</span>
The FinInG PSL group PSL(5,81)
<span class="GAPprompt">gap></span> <span class="GAPinput">ps := ProjectiveSpace(5,3);</span>
ProjectiveSpace(5, 3)
<span class="GAPprompt">gap></span> <span class="GAPinput">SpecialProjectivityGroup(ps);</span>
The FinInG PSL group PSL(6,3)
<span class="GAPprompt">gap></span> <span class="GAPinput">SpecialHomographyGroup(ps);</span>
The FinInG PSL group PSL(6,3)
<span class="GAPprompt">gap></span> <span class="GAPinput">ps := ProjectiveSpace(2,2);</span>
ProjectiveSpace(2, 2)
<span class="GAPprompt">gap></span> <span class="GAPinput">SpecialProjectivityGroup(ps);</span>
The FinInG PSL group PSL(3,2)
<span class="GAPprompt">gap></span> <span class="GAPinput">SpecialHomographyGroup(ps);</span>
The FinInG PSL group PSL(3,2)
 
</pre></div>

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

<h5>5.4-4 IsProjectivityGroup</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ IsProjectivityGroup</code></td><td class="tdright">( property )</td></tr></table></div>
<p><code class="code">IsProjectivityGroup</code> is a property, which subgroups of a the <code class="code">CollineationGroup</code> or a <code class="code">CorrelationCollineationGroup</code> of a projective space might have. It checks whether the generators are projectivities. Of course <code class="code">ProjectivityGroup</code> has this property.</p>

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

<h5>5.4-5 IsCollineationGroup</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ IsCollineationGroup</code></td><td class="tdright">( property )</td></tr></table></div>
<p><code class="code">IsCollineationGroup</code> is a property, which subgroups of a the <code class="code">CorrelationCollineationGroup</code> of a projective space might have. It checks whether the generators are collineations. Of course <code class="code">ProjectivityGroup</code> and <code class="code">CollineationGroup</code> have this property.</p>

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

<h5>5.4-6 CorrelationCollineationGroup</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ CorrelationCollineationGroup</code>( <var class="Arg">geom</var> )</td><td class="tdright">( operation )</td></tr></table></div>
<p>Returns: the group of correlations and collineations of geom</p>

<p>Let <var class="Arg">geom</var> be the projective space <span class="SimpleMath">\(\mathrm{PG}(n,q)\)</span>. This operation returns the correlations and collineations of <span class="SimpleMath">\(\mathrm{PG}(n,q)\)</span>.</p>


<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">pg := PG(4,3);</span>
ProjectiveSpace(4, 3)
<span class="GAPprompt">gap></span> <span class="GAPinput">group := CorrelationCollineationGroup(pg);</span>
The FinInG correlation-collineation group PGL(5,3) : 2
<span class="GAPprompt">gap></span> <span class="GAPinput">pg := PG(3,8);</span>
ProjectiveSpace(3, 8)
<span class="GAPprompt">gap></span> <span class="GAPinput">group := CorrelationCollineationGroup(pg);</span>
The FinInG correlation-collineation group PGammaL(4,8) : 2

</pre></div>

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

<h4>5.5 <span class="Heading">Basic operations for projective groups</span></h4>

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

<h5>5.5-1 BaseField</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ BaseField</code>( <var class="Arg">g</var> )</td><td class="tdright">( operation )</td></tr></table></div>
<p>Returns: a field</p>

<p><var class="Arg">g</var> must be a projective group. This function finds the base field of the vector space on which the group acts.</p>

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

<h5>5.5-2 Dimension</h5>

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

<p><var class="Arg">g</var> must be a projective group. This function finds the dimension of the vector space on which the group acts.</p>

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

<h4>5.6 <span class="Heading">Natural embedding of a collineation group in a correlation/collineation group</span></h4>

<p>In <strong class="pkg">FinInG</strong> a collineation group is not constructed as a subgroup of a correlation group. However, collineations can be multiplied with correlations (if they both belong mathematically to the same correlation group.</p>


<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">x := Random(CollineationGroup(PG(3,4)));</span>
< a collineation: <cmat 4x4 over GF(2,2)>, F^2>
<span class="GAPprompt">gap></span> <span class="GAPinput">y := Random(CorrelationCollineationGroup(PG(3,4)));</span>
<projective element with Frobenius with projectivespace isomorphism: <immutabl
e cmat 4x4 over GF(2,
2)>, F^0, StandardDuality( AllElementsOfIncidenceStructure( ProjectiveSpace(
3,GF(2^2)) ) ) >
<span class="GAPprompt">gap></span> <span class="GAPinput">x*y;</span>
<projective element with Frobenius with projectivespace isomorphism: <cmat 4x
4 over GF(2,2)>, F^
2, StandardDuality( AllElementsOfIncidenceStructure( ProjectiveSpace(
3,GF(2^2)) ) ) >
 
</pre></div>

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

<h5>5.6-1 Embedding</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ Embedding</code>( <var class="Arg">coll</var>, <var class="Arg">corr</var> )</td><td class="tdright">( function )</td></tr></table></div>
<p>Let <var class="Arg">coll</var> be a the full collineation group of a projective space, and <var class="Arg">corr</var> its full correlation group. <strong class="pkg">FinInG</strong> provides a method for this operation <code class="file">Embedding</code>, returning the natural embedding from <var class="Arg">coll</var> into <var class="Arg">corr</var>. Remark that only an embedding of a collineation group into a correlation group with exactly the same underlying projective space is possible.</p>


<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">coll := CollineationGroup(PG(4,8));</span>
The FinInG collineation group PGammaL(5,8)
<span class="GAPprompt">gap></span> <span class="GAPinput">corr := CorrelationCollineationGroup(PG(4,8));</span>
The FinInG correlation-collineation group PGammaL(5,8) : 2
<span class="GAPprompt">gap></span> <span class="GAPinput">phi := Embedding(coll,corr);</span>
MappingByFunction( The FinInG collineation group PGammaL(5,8), The FinInG corr
elation-collineation group PGammaL(5,8) : 2, function( y ) ... end )
 
</pre></div>

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

<h4>5.7 <span class="Heading">Basic action of projective group elements</span></h4>

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

<h5><code>5.7-1 \^</code></h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ \^</code>( <var class="Arg">x</var>, <var class="Arg">g</var> )</td><td class="tdright">( operation )</td></tr></table></div>
<p>Returns: a subspace of a projective space</p>

<p>This is an operation which returns the image of <var class="Arg">x</var>, a subspace of a projective space, under <var class="Arg">g</var>, an element of the projective group, the collineation group, or the correlation group.</p>

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

<h4>5.8 <span class="Heading">Projective group actions</span></h4>

<p>In this section we give more detailed about the actions that are used in <strong class="pkg">FinInG</strong> for projective groups. Consider the projective space <span class="SimpleMath">\(\mathrm{PG}(n,q)\)</span>. As described in Chapter <a href="chap4_mj.html#X83BBAA668672A76D"><span class="RefLink">4</span></a>, a point of <span class="SimpleMath">\(\mathrm{PG}(n,q)\)</span> is represented by a row vector and a <span class="SimpleMath">\(k\)</span>-dimensional subspace of <span class="SimpleMath">\(\mathrm{PG}(n,q)\)</span> is represented by a <span class="SimpleMath">\((k+1) \times (n+1)\)</span> matrix.</p>

<p>Consider a point <span class="SimpleMath">\(p\)</span> with row vector <span class="SimpleMath">\((x_0, x_1, \ldots, x_n)\)</span>, and a collineation or correlation <span class="SimpleMath">\(\phi\)</span> with underlying matrix <span class="SimpleMath">\(A\)</span> and field automorphism <span class="SimpleMath">\(\theta\)</span>. Define the row vector <span class="SimpleMath">\((y_0,y_1,\ldots,y_n) = ((x_0, x_1, \ldots, x_n) A)^{\theta}\)</span> . When <span class="SimpleMath">\(\phi\)</span> is a collineation, <span class="SimpleMath">\(p^{\phi}\)</span> is the point with underlying row vector <span class="SimpleMath">\((y_0,y_1,\ldots,y_n)\)</span> . When <span class="SimpleMath">\(\phi\)</span> is a correlation, <span class="SimpleMath">\(p^\phi\)</span> is a hyperplane of <span class="SimpleMath">\(\mathrm{PG}(n,q)\)</span> with equation <span class="SimpleMath">\(y_0X_0 + y_1X_1 + \ldots + y_nX_n\)</span> . The action of collineations or correlations on points determines the action on subspaces of arbitrary dimension completely.</p>

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

<h5>5.8-1 OnProjSubspaces</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ OnProjSubspaces</code>( <var class="Arg">subspace</var>, <var class="Arg">el</var> )</td><td class="tdright">( function )</td></tr></table></div>
<p>Returns: a subspace of a projective space</p>

<p>This is a global function that returns the action of an element <var class="Arg">el</var> of the collineation group on a subspace <var class="Arg">subspace</var> of a projective space.</p>

<p><strong class="button">IMPORTANT:</strong> This function should only be used for objects <var class="Arg">el</var> in the category <code class="code">IsProjGrpElWithFrob</code>! This is because this function does not check whether <var class="Arg">el</var> is a correlation or a collineation. So when <var class="Arg">el</var> is a object in the category <code class="code">IsProjGrpElWithFrobWithPSIsom</code>, and <var class="Arg">el</var> is a correlation (i.e. the associated PSIsom is NOT the identity) then this action will not give the image of the <var class="Arg">subspace</varunder the correlation <var class="Arg">el</var>. For the action of an object <var class="Arg">el</var> in the category <code class="code">IsProjGrpElWithFrobWithPSIsom</code>, the action <code class="func">OnProjSubspacesExtended</code> (<a href="chap8_mj.html#X86A646FF8668D82E"><span class="RefLink">8.3-1</span></a>) should be used.</p>


<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">ps := ProjectiveSpace(4,27);</span>
ProjectiveSpace(4, 27)
<span class="GAPprompt">gap></span> <span class="GAPinput">p := VectorSpaceToElement(ps,[ Z(3^3)^22,Z(3^3)^10,Z(3^3),Z(3^3)^3,Z(3^3)^3]);</span>
<a point in ProjectiveSpace(4, 27)>
<span class="GAPprompt">gap></span> <span class="GAPinput">ps := ProjectiveSpace(3,27);</span>
ProjectiveSpace(3, 27)
<span class="GAPprompt">gap></span> <span class="GAPinput">p := VectorSpaceToElement(ps,[ Z(3^3)^22,Z(3^3)^10,Z(3^3),Z(3^3)^3]);</span>
<a point in ProjectiveSpace(3, 27)>
<span class="GAPprompt">gap></span> <span class="GAPinput">Display(p);</span>
[16nh]
<span class="GAPprompt">gap></span> <span class="GAPinput">mat := [[ Z(3^3)^25,Z(3^3)^6,Z(3^3)^7,Z(3^3)^15], </span>
<span class="GAPprompt">></span> <span class="GAPinput">  [Z(3^3)^9,Z(3)^0,Z(3^3)^10,Z(3^3)^18], </span>
<span class="GAPprompt">></span> <span class="GAPinput">  [Z(3^3)^19,0*Z(3),Z(3),Z(3^3)^12], </span>
<span class="GAPprompt">></span> <span class="GAPinput">  [Z(3^3)^4,Z(3^3),Z(3^3),Z(3^3)^22]];</span>
[ [ Z(3^3)^25, Z(3^3)^6, Z(3^3)^7, Z(3^3)^15 ], 
  [ Z(3^3)^9, Z(3)^0, Z(3^3)^10, Z(3^3)^18 ], 
  [ Z(3^3)^19, 0*Z(3), Z(3), Z(3^3)^12 ], 
  [ Z(3^3)^4, Z(3^3), Z(3^3), Z(3^3)^22 ] ]
<span class="GAPprompt">gap></span> <span class="GAPinput">theta := FrobeniusAutomorphism(GF(27));</span>
FrobeniusAutomorphism( GF(3^3) )
<span class="GAPprompt">gap></span> <span class="GAPinput">phi := CollineationOfProjectiveSpace(mat,theta,GF(27));</span>
< a collineation: <cmat 4x4 over GF(3,3)>, F^3>
<span class="GAPprompt">gap></span> <span class="GAPinput">r := OnProjSubspaces(p,phi);</span>
<a point in ProjectiveSpace(3, 27)>
<span class="GAPprompt">gap></span> <span class="GAPinput">Display(r);</span>
[1..l]
<span class="GAPprompt">gap></span> <span class="GAPinput">vect := [[Z(3^3)^9,Z(3^3)^5,Z(3^3)^19,Z(3^3)^17],</span>
<span class="GAPprompt">></span> <span class="GAPinput">  [Z(3^3)^22,Z(3^3)^22,Z(3^3)^4,Z(3^3)^17],</span>
<span class="GAPprompt">></span> <span class="GAPinput">  [Z(3^3)^8,0*Z(3),Z(3^3)^24,Z(3^3)^21]];</span>
[ [ Z(3^3)^9, Z(3^3)^5, Z(3^3)^19, Z(3^3)^17 ], 
  [ Z(3^3)^22, Z(3^3)^22, Z(3^3)^4, Z(3^3)^17 ], 
  [ Z(3^3)^8, 0*Z(3), Z(3^3)^24, Z(3^3)^21 ] ]
<span class="GAPprompt">gap></span> <span class="GAPinput">s := VectorSpaceToElement(ps,vect);</span>
<a plane in ProjectiveSpace(3, 27)>
<span class="GAPprompt">gap></span> <span class="GAPinput">r := OnProjSubspaces(s,phi);</span>
<a plane in ProjectiveSpace(3, 27)>
<span class="GAPprompt">gap></span> <span class="GAPinput">Display(r);</span>
[[1..c]
 [.1.7]
 [..17]
]
 
</pre></div>

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

<h5>5.8-2 ActionOnAllProjPoints</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ ActionOnAllProjPoints</code>( <var class="Arg">g</var> )</td><td class="tdright">( function )</td></tr></table></div>
<p><var class="Arg">g</var> must be a projective group. This function returns the action homomorphism of <var class="Arg">g</var> acting on its projective points. This function is used by NiceMonomorphism when the number of points is small enough for the action to be easy to calculate.</p>

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

<h5>5.8-3 OnProjSubspacesExtended</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ OnProjSubspacesExtended</code>( <var class="Arg">subspace</var>, <var class="Arg">el</var> )</td><td class="tdright">( function )</td></tr></table></div>
<p>Returns: a subspace of a projective space</p>

<p>This should be used for the action of elements in the category <code class="code">IsProjGrpElWithFrobWithPSIsom</code> where <var class="Arg">subspace</var> is a subspace of a projective or polar space and <var class="Arg">el</var> is an element of the correlation group of the ambient geometry of <var class="Arg">subspace</var>. This function returns the image of <var class="Arg">subspace</var> under <var class="Arg">el</var>, which is a subspace of the same dimension as <var class="Arg">subspace</var> if <var class="Arg">el</var> is a collineation and an element of codimension equal to the dimension of <var class="Arg">subspace</var> if <var class="Arg">el</var> is a correlation.</p>


<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">ps := ProjectiveSpace(3,27);</span>
ProjectiveSpace(3, 27)
<span class="GAPprompt">gap></span> <span class="GAPinput">mat := IdentityMat(4,GF(27));</span>
[ [ Z(3)^0, 0*Z(3), 0*Z(3), 0*Z(3) ], [ 0*Z(3), Z(3)^0, 0*Z(3), 0*Z(3) ], 
  [ 0*Z(3), 0*Z(3), Z(3)^0, 0*Z(3) ], [ 0*Z(3), 0*Z(3), 0*Z(3), Z(3)^0 ] ]
<span class="GAPprompt">gap></span> <span class="GAPinput">delta := StandardDualityOfProjectiveSpace(ps);</span>
StandardDuality( AllElementsOfIncidenceStructure( ProjectiveSpace(
3,GF(3^3)) ) )
<span class="GAPprompt">gap></span> <span class="GAPinput">frob := FrobeniusAutomorphism(GF(27));</span>
FrobeniusAutomorphism( GF(3^3) )
<span class="GAPprompt">gap></span> <span class="GAPinput">phi := CorrelationOfProjectiveSpace(mat,frob,GF(27),delta);</span>
<projective element with Frobenius with projectivespace isomorphism: <cmat 4x
4 over GF(3,3)>, F^
3, StandardDuality( AllElementsOfIncidenceStructure( ProjectiveSpace(
3,GF(3^3)) ) ) >
<span class="GAPprompt">gap></span> <span class="GAPinput">p := Random(Points(ps));</span>
<a point in ProjectiveSpace(3, 27)>
<span class="GAPprompt">gap></span> <span class="GAPinput">OnProjSubspacesExtended(p,phi);</span>
<a plane in ProjectiveSpace(3, 27)>
<span class="GAPprompt">gap></span> <span class="GAPinput">l := Random(Lines(ps));</span>
<a line in ProjectiveSpace(3, 27)>
<span class="GAPprompt">gap></span> <span class="GAPinput">OnProjSubspacesExtended(p,phi);</span>
<a plane in ProjectiveSpace(3, 27)>
<span class="GAPprompt">gap></span> <span class="GAPinput">psi := CorrelationOfProjectiveSpace(mat,frob^2,GF(27));</span>
<projective element with Frobenius with projectivespace isomorphism: <cmat 4x
4 over GF(3,3)>, F^9, IdentityMapping( <All elements of ProjectiveSpace(3, 
27)> ) >
<span class="GAPprompt">gap></span> <span class="GAPinput">OnProjSubspacesExtended(p,psi);</span>
<a point in ProjectiveSpace(3, 27)>
<span class="GAPprompt">gap></span> <span class="GAPinput">OnProjSubspacesExtended(l,psi);</span>
<a line in ProjectiveSpace(3, 27)>
 
</pre></div>

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

<h4>5.9 <span class="Heading">Special subgroups of the projectivity group</span></h4>

<p>A <em>transvection</em> of the vector space <span class="SimpleMath">\(V=V(n+1,F)\)</span> is a linear map <span class="SimpleMath">\(\tau\)</span> from <span class="SimpleMath">\(V\)</span> to itself with matrix <span class="SimpleMath">\(M\)</span> such that the rank of <span class="SimpleMath">\(M-I\)</span> equals 1 (where <span class="SimpleMath">\(I\)</span> denotes the <span class="SimpleMath">\((n+1) \times (n+1)\)</span> identity matrix), and <span class="SimpleMath">\((M-I)^2=0\)</span> . Different equivalent definitions are found in the literature, here we followed <a href="chapBib_mj.html#biBCameron2">[Cam00a]</a>. Note that what follows is true for arbitrary fields <span class="SimpleMath">\(F\)</span>, but we will restrict to finite fields. Choosing a basis <span class="SimpleMath">\(e_1,\ldots,e_n,e_{n+1}\)</span> such that <span class="SimpleMath">\(e_1,\ldots,e_{n}\)</span> generates the kernel of <span class="SimpleMath">\(M-I\)</span>, it follows that <span class="SimpleMath">\(M\)</span> equals</p>

<p class="center">\[\left( \begin{array}{ccccc}
    1 & 0 & \ldots & 0 & 0 \\
    0 & 1 & \ldots & 0 & 0 \\
    \vdots & \vdots & \ddots & \vdots & \vdots \\
    0 & 0 & \ldots & 1 & 0 \\
    x_1 & x_2 & \ldots & x_{n-1} & 1 \\
    \end{array} \right).\]</p>

<p>It is also a well known fact that all transvections generate the group <span class="SimpleMath">\(\mathrm{SL}(n+1,q)\)</span>. A transvection gives rise to a projectivity of <span class="SimpleMath">\(\mathrm{PG}(n,q)\)</span>, we call such an element an <em>elation</em>, and it is a projectivity <span class="SimpleMath">\(\phi\)</span> fixing a hyperplane <span class="SimpleMath">\(H\)</span> pointwise, and such that there exists exactly one point <span class="SimpleMath">\(p \in H\)</span> such that all hyperplanes through <span class="SimpleMath">\(p\)</span> are stabilized. The hyperplane <span class="SimpleMath">\(H\)</span> is called the <em>axis</em> of <span class="SimpleMath">\(\phi\)</span>, and the point <span class="SimpleMath">\(p\)</span> is called the <em>centre</em> of <span class="SimpleMath">\(\phi\)</span>. As a transvection is an element of <span class="SimpleMath">\(\mathrm{SL}(n+1,q)\)</span>, an elation is an element of <span class="SimpleMath">\(\mathrm{PSL}(n+1,q)\)</span>. An elation is completely determined by its axis and the image of one point (not contained in the axis). The group of elations with a given axis and centre, is isomorphic with the additive group of <span class="SimpleMath">\(\mathrm{GF}(q)\)</span>. Finally, the group of all elations with a given axis <span class="SimpleMath">\(H\)</span>, acts regularly on the points of <span class="SimpleMath">\(\mathrm{PG}(n,q) \setminus H\)</span> , and is isomorphic with the additive group of the vector space <span class="SimpleMath">\(V(n+1,q)\)</span>.</p>

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

<h5>5.9-1 ElationOfProjectiveSpace</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ ElationOfProjectiveSpace</code>( <var class="Arg">sub</var>, <var class="Arg">point1</var>, <var class="Arg">point2</var> )</td><td class="tdright">( operation )</td></tr></table></div>
<p>Returns: the unique elation with axis <var class="Arg">sub</var> mapping <var class="Arg">point1</var> on <var class="Arg">point2</var></p>

<p>It is checked whether the two points do not belong to <var class="Arg">sub</var>. If <var class="Arg">point1</var> equals <var class="Arg">point2</var>, the identity mapping is returned.</p>


<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">ps := PG(3,9);</span>
ProjectiveSpace(3, 9)
<span class="GAPprompt">gap></span> <span class="GAPinput">sub := VectorSpaceToElement(ps,[[1,0,1,0],[0,1,0,1],[1,2,3,0]]*Z(3)^0);</span>
<a plane in ProjectiveSpace(3, 9)>
<span class="GAPprompt">gap></span> <span class="GAPinput">p1 := VectorSpaceToElement(ps,[1,0,1,2]*Z(3)^0);</span>
<a point in ProjectiveSpace(3, 9)>
<span class="GAPprompt">gap></span> <span class="GAPinput">p2 := VectorSpaceToElement(ps,[1,2,0,2]*Z(3)^0);</span>
<a point in ProjectiveSpace(3, 9)>
<span class="GAPprompt">gap></span> <span class="GAPinput">phi := ElationOfProjectiveSpace(sub,p1,p2);</span>
< a collineation: <cmat 4x4 over GF(3,2)>, F^0>
 
</pre></div>

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

<h5>5.9-2 ProjectiveElationGroup</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ ProjectiveElationGroup</code>( <var class="Arg">axis</var>, <var class="Arg">centre</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">‣ ProjectiveElationGroup</code>( <var class="Arg">axis</var> )</td><td class="tdright">( operation )</td></tr></table></div>
<p>Returns: A group of elations</p>

<p>The first version returns the group of elations with with given axis <var class="Arg">axis</varand centre <var class="Arg">centre</var>. It is checked whether <var class="Arg">centre</var> belongs to <var class="Arg">axis</var>. The second version returns the group of elations with given axis <var class="Arg">axis</var>.</p>


<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">ps := PG(2,27);</span>
ProjectiveSpace(2, 27)
<span class="GAPprompt">gap></span> <span class="GAPinput">sub := VectorSpaceToElement(ps,[[1,0,1,],[0,1,0]]*Z(3)^0);</span>
<a line in ProjectiveSpace(2, 27)>
<span class="GAPprompt">gap></span> <span class="GAPinput">p := VectorSpaceToElement(ps,[1,1,1]*Z(3)^0);</span>
<a point in ProjectiveSpace(2, 27)>
<span class="GAPprompt">gap></span> <span class="GAPinput">g := ProjectiveElationGroup(sub,p);</span>
<projective collineation group with 3 generators>
<span class="GAPprompt">gap></span> <span class="GAPinput">Order(g);</span>
27
<span class="GAPprompt">gap></span> <span class="GAPinput">StructureDescription(g);</span>
"C3 x C3 x C3"
<span class="GAPprompt">gap></span> <span class="GAPinput">ps := PG(3,4);</span>
ProjectiveSpace(3, 4)
<span class="GAPprompt">gap></span> <span class="GAPinput">sub := Random(Hyperplanes(ps));</span>
<a plane in ProjectiveSpace(3, 4)>
<span class="GAPprompt">gap></span> <span class="GAPinput">g := ProjectiveElationGroup(sub);</span>
<projective collineation group with 6 generators>
<span class="GAPprompt">gap></span> <span class="GAPinput">Order(g);</span>
64
<span class="GAPprompt">gap></span> <span class="GAPinput">Transitivity(g,Difference(Points(ps),Points(sub)),OnProjSubspaces);</span>
1
<span class="GAPprompt">gap></span> <span class="GAPinput">StructureDescription(g);</span>
"C2 x C2 x C2 x C2 x C2 x C2"
 
</pre></div>

<p>A <em>homology</em> of the projective space <span class="SimpleMath">\(\mathrm{PG}(n,q)\)</span> is a collineation fixing a hyperplane <span class="SimpleMath">\(H\)</span> pointwise and fixing one more point p ∉ H. It is easily seen that after a suitable choice of a basis for the space, the matrix of a homology is a diagonal matrix with all its diagonal entries except one equal to 1. We call the hyperplane the <em>axis</em> and the point the <em>centre</em> of the homology. Homologies with a common axis and centre are a group isomorphic to the multiplicative group of the field <span class="SimpleMath">\(\mathrm{GF}(q)\)</span>.</p>

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

<h5>5.9-3 HomologyOfProjectiveSpace</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ HomologyOfProjectiveSpace</code>( <var class="Arg">sub</var>, <var class="Arg">centre</var>, <var class="Arg">point1</var>, <var class="Arg">point2</var> )</td><td class="tdright">( operation )</td></tr></table></div>
<p>Returns: the unique homology with axis <var class="Arg">sub</var> and centre <var class="Arg">centre</var> that maps <var class="Arg">point1</var> on <var class="Arg">point2</var></p>

<p>It is checked whether the three points do not belong to <var class="Arg">sub</var> and whether they are collinear. If <var class="Arg">point1</var> equals <var class="Arg">point2</var>, the identity mapping is returned.</p>


<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">ps := PG(3,81);</span>
ProjectiveSpace(3, 81)
<span class="GAPprompt">gap></span> <span class="GAPinput">sub := VectorSpaceToElement(ps,[[1,0,1,0],[0,1,0,1],[1,2,3,0]]*Z(3)^0);</span>
<a plane in ProjectiveSpace(3, 81)>
<span class="GAPprompt">gap></span> <span class="GAPinput">centre := VectorSpaceToElement(ps,[0*Z(3),Z(3)^0,Z(3^4)^36,0*Z(3)]);</span>
<a point in ProjectiveSpace(3, 81)>
<span class="GAPprompt">gap></span> <span class="GAPinput">p1 := VectorSpaceToElement(ps,[0*Z(3),Z(3)^0,Z(3^4)^51,0*Z(3)]);</span>
<a point in ProjectiveSpace(3, 81)>
<span class="GAPprompt">gap></span> <span class="GAPinput">p2 := VectorSpaceToElement(ps,[0*Z(3),Z(3)^0,Z(3^4)^44,0*Z(3)]);</span>
<a point in ProjectiveSpace(3, 81)>
<span class="GAPprompt">gap></span> <span class="GAPinput">phi := HomologyOfProjectiveSpace(sub,centre,p1,p2);</span>
< a collineation: <cmat 4x4 over GF(3,4)>, F^0>
 
</pre></div>

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

<h5>5.9-4 ProjectiveHomologyGroup</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ ProjectiveHomologyGroup</code>( <var class="Arg">axis</var>, <var class="Arg">centre</var> )</td><td class="tdright">( operation )</td></tr></table></div>
<p>Returns: the group of homologies with with given axis <var class="Arg">axis</var> and centre <var class="Arg">centre</var>.</p>

<p>It is checked whether <var class="Arg">centre</var> does not belong to <var class="Arg">axis</var>.</p>


<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">ps := PG(2,27);</span>
ProjectiveSpace(2, 27)
<span class="GAPprompt">gap></span> <span class="GAPinput">sub := VectorSpaceToElement(ps,[[1,0,1,],[0,1,0]]*Z(3)^0);</span>
<a line in ProjectiveSpace(2, 27)>
<span class="GAPprompt">gap></span> <span class="GAPinput">p := VectorSpaceToElement(ps,[1,0,2]*Z(3)^0);</span>
<a point in ProjectiveSpace(2, 27)>
<span class="GAPprompt">gap></span> <span class="GAPinput">g := ProjectiveHomologyGroup(sub,p);</span>
<projective collineation group with 1 generators>
<span class="GAPprompt">gap></span> <span class="GAPinput">Order(g);</span>
26
<span class="GAPprompt">gap></span> <span class="GAPinput">StructureDescription(g);</span>
"C26"
 
</pre></div>

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

<h4>5.10 <span class="Heading">Nice Monomorphisms</span></h4>

<p>A <em>nice monomorphism</em> of a group <span class="SimpleMath">\(G\)</span> is roughly just a permutation representation of <span class="SimpleMath">\(G\)</span> on a suitable action domain. An easy example is the permutation action of the full collineation group of a projective space on its points. <strong class="pkg">FinInG</strong> provides (automatic) functionality to compute nice monomorphisms. Typically, for a geometry <span class="SimpleMath">\(S\)</span> with <span class="SimpleMath">\(G\)</span> a (subgroup of the) collineation group of <span class="SimpleMath">\(S\)</span>, a nice monomorphism for <span class="SimpleMath">\(G\)</span> is a homomorphism from <span class="SimpleMath">\(G\)</span> to the permutation action of <span class="SimpleMath">\(S\)</span> on a collection of elements of <span class="SimpleMath">\(S\)</span>. Thus, to obtain such a homomorphism, one has to enumerate the collection of elements. As nice monomorphisms for projective semilinear groups are often computed as a byproduct of some operations, suddenly, these operations get time consuming (when executed for the first time). In general, it is decided automatically whether a nice monomorphism is computed or not. A typical example is the following.</p>


<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">pg := PG(4,8);</span>
ProjectiveSpace(4, 8)
<span class="GAPprompt">gap></span> <span class="GAPinput">group := CollineationGroup(pg);</span>
The FinInG collineation group PGammaL(5,8)
<span class="GAPprompt">gap></span> <span class="GAPinput">HasNiceMonomorphism(group);</span>
false
<span class="GAPprompt">gap></span> <span class="GAPinput">Random(group);</span>
< a collineation: <cmat 5x5 over GF(2,3)>, F^4>
<span class="GAPprompt">gap></span> <span class="GAPinput">time;</span>
1028
<span class="GAPprompt">gap></span> <span class="GAPinput">HasNiceMonomorphism(group);</span>
true
<span class="GAPprompt">gap></span> <span class="GAPinput">Random(group);</span>
< a collineation: <cmat 5x5 over GF(2,3)>, F^0>
<span class="GAPprompt">gap></span> <span class="GAPinput">time;</span>
3

</pre></div>

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

<h5>5.10-1 NiceMonomorphism</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ NiceMonomorphism</code>( <var class="Arg">g</var> )</td><td class="tdright">( operation )</td></tr></table></div>
<p>Returns: an action, i.e. a group homomorphism</p>

<p><var class="Arg">g</var> is a projective semilinear group. If <var class="Arg">g</var> was constructed as a group stabilizing a geometry, the action of <var class="Arg">g</var> on the points of the geometry is returned.</p>


<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">g := HomographyGroup(PG(4,8));</span>
The FinInG projectivity group PGL(5,8)
<span class="GAPprompt">gap></span> <span class="GAPinput">NiceMonomorphism(g);</span>
<action isomorphism>
<span class="GAPprompt">gap></span> <span class="GAPinput">Image(last);</span>
<permutation group of size 4638226007491010887680 with 2 generators>
<span class="GAPprompt">gap></span> <span class="GAPinput">g := CollineationGroup(PG(4,8));</span>
The FinInG collineation group PGammaL(5,8)
<span class="GAPprompt">gap></span> <span class="GAPinput">NiceMonomorphism(g);</span>
<action isomorphism>
<span class="GAPprompt">gap></span> <span class="GAPinput">Image(last);</span>
<permutation group of size 13914678022473032663040 with 3 generators>
 
</pre></div>

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

<h5>5.10-2 NiceObject</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ NiceObject</code>( <var class="Arg">g</var> )</td><td class="tdright">( operation )</td></tr></table></div>
<p>Returns: a permutation group</p>

<p><var class="Arg">g</var> is a projective semilinear group. If <var class="Arg">g</var> was constructed as a group stabilizing a geometry, the permutation representation of <var class="Arg">g</var> acting on the points of the geometry is returned. This is actually equivalent with <code class="file">Image(NiceMonomorphism(g))</code>.</p>


<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">g := HomographyGroup(PG(4,8));</span>
The FinInG projectivity group PGL(5,8)
<span class="GAPprompt">gap></span> <span class="GAPinput">NiceObject(g);</span>
<permutation group of size 4638226007491010887680 with 2 generators>
<span class="GAPprompt">gap></span> <span class="GAPinput">g := CollineationGroup(PG(4,8));</span>
The FinInG collineation group PGammaL(5,8)
<span class="GAPprompt">gap></span> <span class="GAPinput">NiceObject(g);</span>
<permutation group of size 13914678022473032663040 with 3 generators>
 
</pre></div>

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

<h5>5.10-3 FINING</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ FINING</code></td><td class="tdright">( global variable )</td></tr></table></div>
<p>The global variable <code class="code">FINING</code> stores a record with two components, <code class="code">FINING.Fast</code> and <code class="code">FINING.LimitForCanComputeActionOnPoints</code> By default, <code class="code">FINING.Fast</code> is set to <code class="keyw">true</code>. Setting <code class="code">FINING.Fast</code> to <code class="keyw">false</code> causes the use of the generic <strong class="pkg">GAP</strong> function <code class="file">ActionHomomorphism</code> instead of the functions <code class="file">NiceMonomorphismByDomain</code> and <code class="file">NiceMonomorphismByOrbit</code>, which both rely on the packages <strong class="pkg">GenSS</strong> and <strong class="pkg">Orb</strong>.</p>

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

<h5>5.10-4 CanComputeActionOnPoints</h5>

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

<p><var class="Arg">g</var> must be a projective group. This function returns true if GAP can feasibly compute the action of <var class="Arg">g</var> on the points of the projective space on which it acts. This function can be used (and is, by other parts of FinInG) to determine whether it is worth trying to compute the action. This function actually checks if the number of points of the corresponding projective space is less than the constant <code class="code">FINING.LimitForCanComputeActionOnPoints</code>, which is by default set to <span class="SimpleMath">\(1000000\)</span>. The next example requires about 500M of memory.</p>


<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">NiceMonomorphism(CollineationGroup(ProjectiveSpace(7,8)));</span>
Error, action on projective points not feasible to calculate called from
<function "unknown">( <arguments> )
 called from read-eval loop at line 8 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">FINING.LimitForCanComputeActionOnPoints := 3*10^6;</span>
3000000
<span class="GAPprompt">gap></span> <span class="GAPinput">NiceMonomorphism(CollineationGroup(ProjectiveSpace(7,8)));</span>
<action isomorphism>
<span class="GAPprompt">gap></span> <span class="GAPinput">time;</span>
39619
 
</pre></div>

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

<h5>5.10-5 NiceMonomorphismByDomain</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ NiceMonomorphismByDomain</code>( <var class="Arg">g</var>, <var class="Arg">dom</var>, <var class="Arg">op</var> )</td><td class="tdright">( operation )</td></tr></table></div>
<p>Returns: an action, i.e. a group homomorphism</p>

<p>This operation is not intended for the user. It relies on <strong class="pkg">GenSS</strong> and <strong class="pkg">Orb</strong>. The argument <var class="Arg">g</var> is a projective group (in the category <code class="code">IsProjectiveGroupWithFrob</code>) with a set <code class="code">Size</code> attribute, <var class="Arg">dom</var> is an orbit of <var class="Arg">g</var>, and <var class="Arg">op</var> an operation suitable for <var class="Arg">x</var> and <var class="Arg">g</var>.</p>

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

<h5>5.10-6 NiceMonomorphismByOrbit</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ NiceMonomorphismByOrbit</code>( <var class="Arg">g</var>, <var class="Arg">dom</var>, <var class="Arg">op</var>, <var class="Arg">orblen</var> )</td><td class="tdright">( operation )</td></tr></table></div>
<p>Returns: an action, i.e. a group homomorphism</p>

<p>This operation is not intended for the user. It relies on <strong class="pkg">GenSS</strong> and <strong class="pkg">Orb</strong>. The argument <var class="Arg">g</var> is a projective group (in the category <code class="code">IsProjectiveGroupWithFrob</code>) with a set <code class="code">Size</code> attribute, <var class="Arg">dom</var> is an orbit of <var class="Arg">g</var>, <var class="Arg">op</var> an operation suitable for <var class="Arg">x</var> and <var class="Arg">g</var>, and <var class="Arg">orblen</var> is the length of the final orbit.</p>


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


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

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

Messung V0.5 in Prozent
C=100 H=100 G=100

¤ Dauer der Verarbeitung: 0.34 Sekunden  (vorverarbeitet am  2026-04-30) ¤

*© 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 und die Messung sind noch experimentell.






                                                                                                                                                                                                                                                                                                                                                                                                     


Neuigkeiten

     Aktuelles
     Motto des Tages

Software

     Produkte
     Quellcodebibliothek

Aktivitäten

     Artikel über Sicherheit
     Anleitung zur Aktivierung von SSL

Muße

     Gedichte
     Musik
     Bilder

Jenseits des Üblichen ....

Besucherstatistik

Besucherstatistik

Monitoring

Montastic status badge