GAP (FinInG) - Chapter 5: Projective Groups

Goto Chapter: Top 1 2 3 4 5 6 7 8 9 10 11 12 13 14 A B C Bib Ind
[Top of Book] [Contents] [Previous Chapter] [Next Chapter]

[MathJax off]

5 Projective Groups
5.1 Projectivities, collineations and correlations of projective spaces.
5.1-1 Categories for group elements
5.1-2 Representations for group elements
5.1-3 Projectivities
5.1-4 Collineations of projective spaces
5.1-5 Projective strictly semilinear maps
5.1-6 Correlations and collineations
5.2 Construction of projectivities, collineations and correlations.
5.2-1 Projectivity
5.2-2 CollineationOfProjectiveSpace
5.2-3 ProjectiveSemilinearMap
5.2-4 IdentityMappingOfElementsOfProjectiveSpace
5.2-5 StandardDualityOfProjectiveSpace
5.2-6 CorrelationOfProjectiveSpace
5.3 Basic operations for projectivities, collineations and correlations of projective spaces
5.3-1 Representative
5.3-2 MatrixOfCollineation
5.3-3 MatrixOfCorrelation
5.3-4 BaseField
5.3-5 FieldAutomorphism
5.3-6 ProjectiveSpaceIsomorphism
5.3-7 Order
5.4 The groups \(\mathrm{P}\Gamma\mathrm{L}\), \(\mathrm{PGL}\), and \(\mathrm{PSL}\) in FinInG
5.4-1 ProjectivityGroup
5.4-2 CollineationGroup
5.4-3 SpecialProjectivityGroup
5.4-4 IsProjectivityGroup
5.4-5 IsCollineationGroup
5.4-6 CorrelationCollineationGroup
5.5 Basic operations for projective groups
5.5-1 BaseField
5.5-2 Dimension
5.6 Natural embedding of a collineation group in a correlation/collineation group
5.6-1 Embedding
5.7 Basic action of projective group elements
`5.7-1 \^`
5.8 Projective group actions
5.8-1 OnProjSubspaces
5.8-2 ActionOnAllProjPoints
5.8-3 OnProjSubspacesExtended
5.9 Special subgroups of the projectivity group
5.9-1 ElationOfProjectiveSpace
5.9-2 ProjectiveElationGroup
5.9-3 HomologyOfProjectiveSpace
5.9-4 ProjectiveHomologyGroup
5.10 Nice Monomorphisms
5.10-1 NiceMonomorphism
5.10-2 NiceObject
5.10-3 FINING
5.10-4 CanComputeActionOnPoints
5.10-5 NiceMonomorphismByDomain
5.10-6 NiceMonomorphismByOrbit

### 5 Projective Groups

A collineation 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 \(n+1\)-dimensional vector space over a given field \(\mathrm{GF}(q)\) is denoted by \(\mathrm{GL}(n+1,q)\). This is a matrix group consisting of all non-singular square \(n+1\)-dimensional matrices over \(\mathrm{GF}(q)\). The group of all semilinear maps of the vector space \(V(n+1,q)\) is obtained as the semidirect product of \(\mathrm{GL}(n+1,q)\) and \(\mathrm{Aut}(\mathrm{GF}(q))\), and is denoted by \(\Gamma\mathrm{L}(n+1,q)\). Each semilinear map induces a collineation of \(\mathrm{PG}(n,q)\). The Fundamental theorem of Projective Geometry also guarantees that the converse holds. Note also that \(\Gamma\mathrm{L}(n+1,q)\) does not act faithfully on the projective points, and the kernel of its action is the group of scalar matrices, \(\mathrm{Sc}(n+1,q)\). So the group \(\mathrm{P}\Gamma\mathrm{L}(n+1,q)\) is defined as the group \(\Gamma{}\mathrm{L}(n+1,q) / \mathrm{Sc}(n+1,q)\) , and the group \(\mathrm{PGL}(n+1,q)\) as \(\mathrm{GL}(n+1,q) / \mathrm{Sc}(n+1,q)\) . An element of the group \(\mathrm{PGL}(n+1,q)\) is also called a projectivity or homography of \(\mathrm{PG}(n,q)\), and the group \(\mathrm{PGL}(n+1,q)\) is called the projectivity group or homography group of \(\mathrm{PG}(n,q)\). An element of \(\mathrm{P}\Gamma\mathrm{L}(n+1,q)\) is called a collineation of \(\mathrm{PG}(n,q)\) and the group \(\mathrm{P}\Gamma\mathrm{L}(n+1,q)\) is the collineation group of \(\mathrm{PG}(n,q)\).

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

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

A correlation of the projective space \(\mathrm{PG}(n,q)\) is a collineation from \(\mathrm{PG}(n,q)\) to its dual. A projectivity from \(\mathrm{PG}(n,q)\) to its dual is sometimes called a reciprocity. The standard duality of the projective space \(\mathrm{PG}(n,q)\) maps any point \(v\) with coordinates \((x_0,x_1,\ldots,x_n)\) on the hyperplane with equation \(x_0X_0 + x_1X_1 + \cdots + x_nX_n\) . The standard duality acts as an automorphism on \(\mathrm{P}\Gamma\mathrm{L}(n+1,q)\) 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 FinInG is that a correlation \(\phi\) with underlying matrix \(A\) and field automorphism \(\theta\) maps that projective point represented by row vector \((x_0, x_1, \ldots, x_n)\) to the projective hyperplane represented by row vector \((y_0,y_1,\ldots,y_n) = ((x_0, x_1, \ldots, x_n) A)^{\theta.}\) , i.e. \((y_0,y_1,\ldots,y_n) = ((x_0, x_1, \ldots, x_n) A)^{\theta.}\) are the dual coordinates of the hyperplane.

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

Action functions for collineations and correlations on the subspaces of a projective space are described in detail in Section 5.8

We mention that the commands `PGL` (and `ProjectiveGeneralLinearGroup`) and `PSL` (and `ProjectiveSpecialLinearGroup`) 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 projective semilinear group will be used for a group generated by collineations of a projective space.

#### 5.1 Projectivities, collineations and correlations of projective spaces.

These are the different type of actions on projective spaces in FinInG, 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.

##### 5.1-1 Categories for group elements

`‣ IsProjGrpEl` | ( category )

`‣ IsProjGrpElWithFrob` | ( category )

`‣ IsProjGrpElWithFrobWithPSIsom` | ( category )

`IsProjGrpEl`, `IsProjGrpElWithFrob`, and `IsProjGrpElWithFrobWithPSIsom` are the categories naturally induced by the notions of projectivities, collineations, and correlations of a projective space.

##### 5.1-2 Representations for group elements

`‣ IsProjGrpElRep` | ( representation )

`‣ IsProjGrpElWithFrobRep` | ( representation )

`‣ IsProjGrpElWithFrobWithPSIsomRep` | ( representation )

`IsProjGrpElRep` is the representation naturally induced by a projectivity; `IsProjGrpElWithFrobRep` is the representation naturally induced by the notion of a collineation of projective space; and `IsProjGrpElWithFrobWithPSIsomRep` is the representation naturally induced by a correlation of a projective space. This means that an object in the representation `IsProjGrpElRep` has as underlying object a matrix; an object in the category `IsProjGrpElWithFrobRep` has as underlying object a pair consisting of a matrix and a field automorphism; and `IsProjGrpElWithFrobWithPSIsomRep` 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.

The above mentioned categories allow us to make a distinction between projectivities, collineations and correlations apart from their representation. However, in FinInG, a group element constructed in the categories `IsProjGrpElMore` is always constructed in the representation `IsProjGrpElMoreRep`. Furthermore, projectivities of projective spaces (and also collineations of projective spaces) will by default be constructed in the category `IsProjGrpElWithFrobRep`. 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 `IsProjGrpElWithFrobWithPSIsom`.

##### 5.1-3 Projectivities

`‣ IsProjectivity` | ( property )

`IsProjectivity` is a property. Projectivities are the elements of \(\mathrm{PGL}(n+1,q)\). Every element belonging to `IsProjGrpEl` is by construction a projectivity. If `IsProjectivity` is applied to a an element belonging to `IsProjGrpElWithFrob`, then it verifies whether the underlying field automorphism is the identity. If `IsProjectivity` is applied to a an element belonging to `IsProjGrpElWithFrobWithPSIsom`, 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.

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

##### 5.1-4 Collineations of projective spaces

`‣ IsCollineation` | ( property )

`IsCollineation` is property. All elements of \(\mathrm{P}\Gamma\mathrm{L}(n+1,q)\) are collineations, and therefore all elements belonging to `IsProjGrpElWithFrob` are collineations. But also a projectivity is a collineation, as well as an element belonging to `IsProjGrpElWithFrobWithPSIsom` with projective space isomorphism equal to the identity, is a collineation.

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

##### 5.1-5 Projective strictly semilinear maps

`‣ IsStrictlySemilinear` | ( property )

`IsStrictlySemilinear` is a property that checks whether a given collineation has a nontrivial underlying field automorphisms, i.e. whether the element belongs to \(\mathrm{P}\Gamma\mathrm{L}(n+1,q)\), but not to \(\mathrm{PGL}(n+1,q)\). If `IsStrictlySemilinear` is applied to a an element belonging to `IsProjGrpElWithFrobWithPSIsom`, 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.

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

##### 5.1-6 Correlations and collineations

`‣ IsProjGrpElWithFrobWithPSIsom` | ( category )

`‣ IsCorrelationCollineation` | ( category )

`‣ IsCorrelation` | ( property )

The underlying objects of a correlation-collineation in FinInG are a nonsingular matrix, a field automorphism and a projective space isomorphism. `IsProjGrpElWithFrobWithPSIsom` is the category of these objects. If the projective space isomorphism is not the identity, then the element is a correlation, and `IsCorrelation` will return true. `IsCorrelationCollineation` is a synonym of `IsProjGrpElWithFrobWithPSIsom`.

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

#### 5.2 Construction of projectivities, collineations and correlations.

In FinInG, projectivities and collineations are both constructed in the category `IsProjGrpElWithFrob`; correlations are constructed in the category `IsProjGrpElWithFrobWithPSIsom`.

##### 5.2-1 Projectivity

`‣ Projectivity`( mat, f ) | ( operation )

`‣ Projectivity`( pg, mat ) | ( operation )

Returns: a projectivity of a projective space

The argument mat must be a nonsingular matrix over the finite field f. In the second variant, the size of the nonsingular matrix mat must be one more than the dimension of the projective space pg. This creates an element of a projectivity group. But the returned object belongs to `IsProjGrpElWithFrob`!

    gap> mat := [[1,0,0],[0,1,0],[0,0,1]]*Z(9)^0;
    [ [ 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 ] ]
    gap> Projectivity(mat,GF(9));
    < a collineation: <cmat 3x3 over GF(3,2)>, F^0>

##### 5.2-2 CollineationOfProjectiveSpace

`‣ CollineationOfProjectiveSpace`( mat, frob, f ) | ( operation )

`‣ CollineationOfProjectiveSpace`( mat, f ) | ( operation )

`‣ CollineationOfProjectiveSpace`( mat, frob, f ) | ( operation )

`‣ CollineationOfProjectiveSpace`( mat, f ) | ( operation )

`‣ CollineationOfProjectiveSpace`( pg, mat ) | ( operation )

`‣ CollineationOfProjectiveSpace`( pg, mat, frob ) | ( operation )

`‣ Collineation`( pg, mat ) | ( operation )

`‣ Collineation`( pg, mat, frob ) | ( operation )

mat is a nonsingular matrix, frob is a field automorphism, f is a field, and pg is a projective space. This function (and its shorter version) returns the collineation with matrix mat and automorphism frob of the field f. If frob is not specified then the companion automorphism of the resulting group element will be the identity map. The returned object belongs to the category `IsProjGrpElWithFrob`. When the argument frob is given, it is checked whether the source of frob equals f. When the arguments pg and mat are used, then it is checked that these two arguments are compatible.

    gap> mat:=
    > [[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 ]];
    [ [ 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 ] ]
    gap> frob := FrobeniusAutomorphism(GF(8));
    FrobeniusAutomorphism( GF(2^3) )
    gap> phi := ProjectiveSemilinearMap(mat,frob^2,GF(8));
    < a collineation: <cmat 4x4 over GF(2,3)>, F^4>
    gap> 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],
    > [Z(2^8)^128,Z(2^8)^165,Z(2^8)^217]];
    [ [ 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 ] ]
    gap> psi := CollineationOfProjectiveSpace(mat2,GF(256));
    < a collineation: <cmat 3x3 over GF(2,8)>, F^0>

##### 5.2-3 ProjectiveSemilinearMap

`‣ ProjectiveSemilinearMap`( mat, frob, f ) | ( operation )

Returns: a projectivity of a projective space

mat is a nonsingular matrix, frob is a field automorphism, and f is a field. This function returns the collineation with matrix mat and automorphism frob. The returned object belongs to the category `IsProjGrpElWithFrob`. When the argument frob is given, it is checked whether the source of frob equals f.

##### 5.2-4 IdentityMappingOfElementsOfProjectiveSpace

`‣ IdentityMappingOfElementsOfProjectiveSpace`( ps ) | ( operation )

This operation returns the identity mapping on the collection of subspaces of a projective space ps.

##### 5.2-5 StandardDualityOfProjectiveSpace

`‣ StandardDualityOfProjectiveSpace`( ps ) | ( operation )

This operation returns the standard duality of the projective space ps

    gap> ps := ProjectiveSpace(4,5);
    ProjectiveSpace(4, 5)
    gap> delta := StandardDualityOfProjectiveSpace(ps);
    StandardDuality( AllElementsOfIncidenceStructure( ProjectiveSpace(4,GF(5)) ) )
    gap> delta^2;
    IdentityMapping( <All elements of ProjectiveSpace(4, 5)> )
    gap> p := VectorSpaceToElement(ps,[1,2,3,0,1]*Z(5)^0);
    <a point in ProjectiveSpace(4, 5)>
    gap> h := p^delta;
    <a solid in ProjectiveSpace(4, 5)>
    gap> UnderlyingObject(h);
    <cmat 4x5 over GF(5,1)>
    gap> Unpack(last);
    [ [ 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) ] ]

##### 5.2-6 CorrelationOfProjectiveSpace

`‣ CorrelationOfProjectiveSpace`( mat, f ) | ( operation )

`‣ CorrelationOfProjectiveSpace`( mat, frob, f ) | ( operation )

`‣ CorrelationOfProjectiveSpace`( mat, f, delta ) | ( operation )

`‣ CorrelationOfProjectiveSpace`( mat, frob, f, delta ) | ( operation )

`‣ CorrelationOfProjectiveSpace`( pg, mat, frob, delta ) | ( operation )

`‣ Correlation`( pg, mat, frob, delta ) | ( operation )

mat is a nonsingular matrix, frob is a field automorphism, f is a field, and delta is the standard duality of the projective space \(\mathrm{PG}(n,q)\). This function returns the correlation with matrix mat, automorphism frob, and standard duality delta. If frob is not specified then the companion automorphism of the resulting group element will be the identity map. If the user specifies delta, then it must be the standard duality of a projective space, created using `StandardDualityOfProjectiveSpace` (5.2-5), or the identity mapping on the collection of subspaces of a projective space, created using `IdentityMappingOfElementsOfProjectiveSpace` (5.2-4). If not specified, then the companion vector space isomorphism is the identity mapping. The returned object belongs to the category `IsProjGrpElWithFrobWithPSIsom`

    gap> mat := [[1,0,0],[3,0,2],[0,5,4]]*Z(7^3);
    [ [ 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 ] ]
    gap> phi1 := CorrelationOfProjectiveSpace(mat,GF(7^3));
    <projective element with Frobenius with projectivespace isomorphism: <cmat 3x
    3 over GF(7,3)>, F^0, IdentityMapping( <All elements of ProjectiveSpace(2,
    343)> ) >
    gap> frob := FrobeniusAutomorphism(GF(7^3));
    FrobeniusAutomorphism( GF(7^3) )
    gap> phi2 := CorrelationOfProjectiveSpace(mat,frob,GF(7^3));
    <projective element with Frobenius with projectivespace isomorphism: <cmat 3x
    3 over GF(7,3)>, F^7, IdentityMapping( <All elements of ProjectiveSpace(2,
    343)> ) >
    gap> delta := StandardDualityOfProjectiveSpace(ProjectiveSpace(2,GF(7^3)));
    StandardDuality( AllElementsOfIncidenceStructure( ProjectiveSpace(
    2,GF(7^3)) ) )
    gap> phi3 := CorrelationOfProjectiveSpace(mat,GF(7^3),delta);
    <projective element with Frobenius with projectivespace isomorphism: <cmat 3x
    3 over GF(7,
    3)>, F^0, StandardDuality( AllElementsOfIncidenceStructure( ProjectiveSpace(
    2,GF(7^3)) ) ) >
    gap> phi4 := CorrelationOfProjectiveSpace(mat,frob,GF(7^3),delta);
    <projective element with Frobenius with projectivespace isomorphism: <cmat 3x
    3 over GF(7,3)>, F^
    7, StandardDuality( AllElementsOfIncidenceStructure( ProjectiveSpace(
    2,GF(7^3)) ) ) >

#### 5.3 Basic operations for projectivities, collineations and correlations of projective spaces

##### 5.3-1 Representative

`‣ Representative`( g ) | ( operation )

g is a projectivity, collineation or correlation of a projective space. This function returns the representative components that determine g, i.e. a matrix, a matrix and a field automorphism, and a matrix, a field automorphism, and a vector space isomorphism, respectively.

    gap> g:=CollineationGroup( ProjectiveSpace(2,49));
    The FinInG collineation group PGammaL(3,49)
    gap> x:=Random(g);;
    gap> Representative(x);
    [ <immutable cmat 3x3 over GF(7,2)>, FrobeniusAutomorphism( GF(7^2) ) ]

##### 5.3-2 MatrixOfCollineation

`‣ MatrixOfCollineation`( g ) | ( operation )

g is a collineation (including a projectivity) of a projective space. This function returns the matrix that was used to construct g.

    gap> g:=CollineationGroup( ProjectiveSpace(3,3));
    The FinInG collineation group PGL(4,3)
    gap> x:=Random(g);;
    gap> MatrixOfCollineation(x);
    <cmat 4x4 over GF(3,1)>
    gap> Unpack(last);
    [ [ 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) ] ]

##### 5.3-3 MatrixOfCorrelation

`‣ MatrixOfCorrelation`( g ) | ( operation )

g is a correlation of a projective space. This function returns the matrix that was used to construct g.

    gap> g:=CorrelationCollineationGroup( ProjectiveSpace(4,9));
    The FinInG correlation-collineation group PGammaL(5,9) : 2
    gap> x:=Random(g);;
    gap> MatrixOfCorrelation(x);
    <cmat 5x5 over GF(3,2)>
    gap> Unpack(last);
    [ [ 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 ] ]

##### 5.3-4 BaseField

`‣ BaseField`( g ) | ( operation )

Returns: a field

g is a projectivity, collineation or correlation of a projective space. This function returns the base field that was used to construct g.

    gap> mat := [[0,1,0],[1,0,0],[0,0,2]]*Z(3)^0;
    [ [ 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) ] ]
    gap> g := Projectivity(mat,GF(3^6));
    < a collineation: <cmat 3x3 over GF(3,6)>, F^0>
    gap> BaseField(g);
    GF(3^6)

##### 5.3-5 FieldAutomorphism

`‣ FieldAutomorphism`( g ) | ( operation )

g is a collineation of a projective space or a correlation of a projective space. This function returns the companion field automorphism which defines g. 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.

    gap> g:=CollineationGroup( ProjectiveSpace(3,9));
    The FinInG collineation group PGammaL(4,9)
    gap> x:=Random(g);;
    gap> FieldAutomorphism(x);
    IdentityMapping( GF(3^2) )

##### 5.3-6 ProjectiveSpaceIsomorphism

`‣ ProjectiveSpaceIsomorphism`( g ) | ( operation )

g is a correlation of a projective space. This function returns the companion isomorphism of the projective space which defines g.

    gap> mat := [[1,0,0],[3,0,2],[0,5,4]]*Z(7^3);
    [ [ 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 ] ]
    gap> frob := FrobeniusAutomorphism(GF(7^3));
    FrobeniusAutomorphism( GF(7^3) )
    gap> delta := StandardDualityOfProjectiveSpace(ProjectiveSpace(2,GF(7^3)));
    StandardDuality( AllElementsOfIncidenceStructure( ProjectiveSpace(
    2,GF(7^3)) ) )
    gap> phi := CorrelationOfProjectiveSpace(mat,frob,GF(7^3),delta);
    <projective element with Frobenius with projectivespace isomorphism: <cmat 3x
    3 over GF(7,3)>, F^
    7, StandardDuality( AllElementsOfIncidenceStructure( ProjectiveSpace(
    2,GF(7^3)) ) ) >
    gap> ProjectiveSpaceIsomorphism(phi);
    StandardDuality( AllElementsOfIncidenceStructure( ProjectiveSpace(
    2,GF(7^3)) ) )

##### 5.3-7 Order

`‣ Order`( g ) | ( operation )

g is a projectivity, collineation or correlation of a projective space. This function returns the order of g.

    gap> x := Random(CollineationGroup(PG(4,9)));
    < a collineation: <cmat 5x5 over GF(3,2)>, F^3>
    gap> t := Order(x);
    32
    gap> IsOne(x^t);
    true

#### 5.4 The groups \(\mathrm{P}\Gamma\mathrm{L}\), \(\mathrm{PGL}\), and \(\mathrm{PSL}\) in FinInG

As mentioned before the commands `PGL` (and `ProjectiveGeneralLinearGroup`) and `PSL` (and `ProjectiveSpecialLinearGroup`) are already available in GAP and return a (permutation) group isomorphic to the required group. In FinInG, different categories are created for these groups.

##### 5.4-1 ProjectivityGroup

`‣ ProjectivityGroup`( geom ) | ( operation )

`‣ HomographyGroup`( geom ) | ( operation )

Returns: the group of projectivities of geom

Let geom be the projective space \(\mathrm{PG}(n,q)\) This operation (and its synonym) returns the group of projectivities \(\mathrm{PGL}(n+1,q)\) of the projective space \(\mathrm{PG}(n,q)\). Note that although a projectivity is a collineation with the identity as associated field isomorphism, this group belongs to the category `IsProjectiveGroupWithFrob`, and its elements belong to `IsProjGrpElWithFrob`.

    gap> ps := ProjectiveSpace(3,16);
    ProjectiveSpace(3, 16)
    gap> ProjectivityGroup(ps);
    The FinInG projectivity group PGL(4,16)
    gap> HomographyGroup(ps);
    The FinInG projectivity group PGL(4,16)
    gap> ps := ProjectiveSpace(4,81);
    ProjectiveSpace(4, 81)
    gap> ProjectivityGroup(ps);
    The FinInG projectivity group PGL(5,81)
    gap> HomographyGroup(ps);
    The FinInG projectivity group PGL(5,81)
    gap> ps := ProjectiveSpace(5,3);
    ProjectiveSpace(5, 3)
    gap> ProjectivityGroup(ps);
    The FinInG projectivity group PGL(6,3)
    gap> HomographyGroup(ps);
    The FinInG projectivity group PGL(6,3)
    gap> ps := ProjectiveSpace(2,2);
    ProjectiveSpace(2, 2)
    gap> ProjectivityGroup(ps);
    The FinInG projectivity group PGL(3,2)
    gap> HomographyGroup(ps);
    The FinInG projectivity group PGL(3,2)

##### 5.4-2 CollineationGroup

`‣ CollineationGroup`( geom ) | ( operation )

Returns: the group of collineations of geom

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

    gap> ps := ProjectiveSpace(3,16);
    ProjectiveSpace(3, 16)
    gap> CollineationGroup(ps);
    The FinInG collineation group PGammaL(4,16)
    gap> ps := ProjectiveSpace(4,81);
    ProjectiveSpace(4, 81)
    gap> CollineationGroup(ps);
    The FinInG collineation group PGammaL(5,81)
    gap> ps := ProjectiveSpace(5,3);
    ProjectiveSpace(5, 3)
    gap> CollineationGroup(ps);
    The FinInG collineation group PGL(6,3)
    gap> ps := ProjectiveSpace(2,2);
    ProjectiveSpace(2, 2)
    gap> CollineationGroup(ps);
    The FinInG collineation group PGL(3,2)

##### 5.4-3 SpecialProjectivityGroup

`‣ SpecialProjectivityGroup`( geom ) | ( operation )

`‣ SpecialHomographyGroup`( geom ) | ( operation )

Returns: the group of special projectivities of geom

Let geom be the projective space \(\mathrm{PG}(n,q)\) This operation (and its synonym) returns the group of special projectivities \(\mathrm{PSL}(n+1,q)\) of the projective space \(\mathrm{PG}(n,q)\).

    gap> ps := ProjectiveSpace(3,16);
    ProjectiveSpace(3, 16)
    gap> SpecialProjectivityGroup(ps);
    The FinInG PSL group PSL(4,16)
    gap> SpecialHomographyGroup(ps);
    The FinInG PSL group PSL(4,16)
    gap> ps := ProjectiveSpace(4,81);
    ProjectiveSpace(4, 81)
    gap> SpecialProjectivityGroup(ps);
    The FinInG PSL group PSL(5,81)
    gap> SpecialHomographyGroup(ps);
    The FinInG PSL group PSL(5,81)
    gap> ps := ProjectiveSpace(5,3);
    ProjectiveSpace(5, 3)
    gap> SpecialProjectivityGroup(ps);
    The FinInG PSL group PSL(6,3)
    gap> SpecialHomographyGroup(ps);
    The FinInG PSL group PSL(6,3)
    gap> ps := ProjectiveSpace(2,2);
    ProjectiveSpace(2, 2)
    gap> SpecialProjectivityGroup(ps);
    The FinInG PSL group PSL(3,2)
    gap> SpecialHomographyGroup(ps);
    The FinInG PSL group PSL(3,2)

##### 5.4-4 IsProjectivityGroup

`‣ IsProjectivityGroup` | ( property )

`IsProjectivityGroup` is a property, which subgroups of a the `CollineationGroup` or a `CorrelationCollineationGroup` of a projective space might have. It checks whether the generators are projectivities. Of course `ProjectivityGroup` has this property.

##### 5.4-5 IsCollineationGroup

`‣ IsCollineationGroup` | ( property )

`IsCollineationGroup` is a property, which subgroups of a the `CorrelationCollineationGroup` of a projective space might have. It checks whether the generators are collineations. Of course `ProjectivityGroup` and `CollineationGroup` have this property.

##### 5.4-6 CorrelationCollineationGroup

`‣ CorrelationCollineationGroup`( geom ) | ( operation )

Returns: the group of correlations and collineations of geom

Let geom be the projective space \(\mathrm{PG}(n,q)\). This operation returns the correlations and collineations of \(\mathrm{PG}(n,q)\).

    gap> pg := PG(4,3);
    ProjectiveSpace(4, 3)
    gap> group := CorrelationCollineationGroup(pg);
    The FinInG correlation-collineation group PGL(5,3) : 2
    gap> pg := PG(3,8);
    ProjectiveSpace(3, 8)
    gap> group := CorrelationCollineationGroup(pg);
    The FinInG correlation-collineation group PGammaL(4,8) : 2

#### 5.5 Basic operations for projective groups

##### 5.5-1 BaseField

`‣ BaseField`( g ) | ( operation )

Returns: a field

g must be a projective group. This function finds the base field of the vector space on which the group acts.

##### 5.5-2 Dimension

`‣ Dimension`( g ) | ( attribute )

Returns: a number

g must be a projective group. This function finds the dimension of the vector space on which the group acts.

#### 5.6 Natural embedding of a collineation group in a correlation/collineation group

In FinInG 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.

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

##### 5.6-1 Embedding

`‣ Embedding`( coll, corr ) | ( function )

Let coll be a the full collineation group of a projective space, and corr its full correlation group. FinInG provides a method for this operation `Embedding`, returning the natural embedding from coll into corr. Remark that only an embedding of a collineation group into a correlation group with exactly the same underlying projective space is possible.

    gap> coll := CollineationGroup(PG(4,8));
    The FinInG collineation group PGammaL(5,8)
    gap> corr := CorrelationCollineationGroup(PG(4,8));
    The FinInG correlation-collineation group PGammaL(5,8) : 2
    gap> phi := Embedding(coll,corr);
    MappingByFunction( The FinInG collineation group PGammaL(5,8), The FinInG corr
    elation-collineation group PGammaL(5,8) : 2, function( y ) ... end )

#### 5.7 Basic action of projective group elements

##### `5.7-1 \^`

`‣ \^`( x, g ) | ( operation )

Returns: a subspace of a projective space

This is an operation which returns the image of x, a subspace of a projective space, under g, an element of the projective group, the collineation group, or the correlation group.

#### 5.8 Projective group actions

In this section we give more detailed about the actions that are used in FinInG for projective groups. Consider the projective space \(\mathrm{PG}(n,q)\). As described in Chapter 4, a point of \(\mathrm{PG}(n,q)\) is represented by a row vector and a \(k\)-dimensional subspace of \(\mathrm{PG}(n,q)\) is represented by a \((k+1) \times (n+1)\) matrix.

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

##### 5.8-1 OnProjSubspaces

`‣ OnProjSubspaces`( subspace, el ) | ( function )

Returns: a subspace of a projective space

This is a global function that returns the action of an element el of the collineation group on a subspace subspace of a projective space.

IMPORTANT: This function should only be used for objects el in the category `IsProjGrpElWithFrob`! This is because this function does not check whether el is a correlation or a collineation. So when el is a object in the category `IsProjGrpElWithFrobWithPSIsom`, and el is a correlation (i.e. the associated PSIsom is NOT the identity) then this action will not give the image of the subspace under the correlation el. For the action of an object el in the category `IsProjGrpElWithFrobWithPSIsom`, the action `OnProjSubspacesExtended` (8.3-1) should be used.

    gap> ps := ProjectiveSpace(4,27);
    ProjectiveSpace(4, 27)
    gap> p := VectorSpaceToElement(ps,[ Z(3^3)^22,Z(3^3)^10,Z(3^3),Z(3^3)^3,Z(3^3)^3]);
    <a point in ProjectiveSpace(4, 27)>
    gap> ps := ProjectiveSpace(3,27);
    ProjectiveSpace(3, 27)
    gap> p := VectorSpaceToElement(ps,[ Z(3^3)^22,Z(3^3)^10,Z(3^3),Z(3^3)^3]);
    <a point in ProjectiveSpace(3, 27)>
    gap> Display(p);
    [16nh]
    gap> mat := [[ 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]];
    [ [ 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 ] ]
    gap> theta := FrobeniusAutomorphism(GF(27));
    FrobeniusAutomorphism( GF(3^3) )
    gap> phi := CollineationOfProjectiveSpace(mat,theta,GF(27));
    < a collineation: <cmat 4x4 over GF(3,3)>, F^3>
    gap> r := OnProjSubspaces(p,phi);
    <a point in ProjectiveSpace(3, 27)>
    gap> Display(r);
    [1..l]
    gap> vect := [[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]];
    [ [ 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 ] ]
    gap> s := VectorSpaceToElement(ps,vect);
    <a plane in ProjectiveSpace(3, 27)>
    gap> r := OnProjSubspaces(s,phi);
    <a plane in ProjectiveSpace(3, 27)>
    gap> Display(r);
    [[1..c]
     [.1.7]
     [..17]
    ]

##### 5.8-2 ActionOnAllProjPoints

`‣ ActionOnAllProjPoints`( g ) | ( function )

g must be a projective group. This function returns the action homomorphism of g 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.

##### 5.8-3 OnProjSubspacesExtended

`‣ OnProjSubspacesExtended`( subspace, el ) | ( function )

Returns: a subspace of a projective space

This should be used for the action of elements in the category `IsProjGrpElWithFrobWithPSIsom` where subspace is a subspace of a projective or polar space and el is an element of the correlation group of the ambient geometry of subspace. This function returns the image of subspace under el, which is a subspace of the same dimension as subspace if el is a collineation and an element of codimension equal to the dimension of subspace if el is a correlation.

    gap> ps := ProjectiveSpace(3,27);
    ProjectiveSpace(3, 27)
    gap> mat := IdentityMat(4,GF(27));
    [ [ 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 ] ]
    gap> delta := StandardDualityOfProjectiveSpace(ps);
    StandardDuality( AllElementsOfIncidenceStructure( ProjectiveSpace(
    3,GF(3^3)) ) )
    gap> frob := FrobeniusAutomorphism(GF(27));
    FrobeniusAutomorphism( GF(3^3) )
    gap> phi := CorrelationOfProjectiveSpace(mat,frob,GF(27),delta);
    <projective element with Frobenius with projectivespace isomorphism: <cmat 4x
    4 over GF(3,3)>, F^
    3, StandardDuality( AllElementsOfIncidenceStructure( ProjectiveSpace(
    3,GF(3^3)) ) ) >
    gap> p := Random(Points(ps));
    <a point in ProjectiveSpace(3, 27)>
    gap> OnProjSubspacesExtended(p,phi);
    <a plane in ProjectiveSpace(3, 27)>
    gap> l := Random(Lines(ps));
    <a line in ProjectiveSpace(3, 27)>
    gap> OnProjSubspacesExtended(p,phi);
    <a plane in ProjectiveSpace(3, 27)>
    gap> psi := CorrelationOfProjectiveSpace(mat,frob^2,GF(27));
    <projective element with Frobenius with projectivespace isomorphism: <cmat 4x
    4 over GF(3,3)>, F^9, IdentityMapping( <All elements of ProjectiveSpace(3,
    27)> ) >
    gap> OnProjSubspacesExtended(p,psi);
    <a point in ProjectiveSpace(3, 27)>
    gap> OnProjSubspacesExtended(l,psi);
    <a line in ProjectiveSpace(3, 27)>

#### 5.9 Special subgroups of the projectivity group

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

\[\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).\]

It is also a well known fact that all transvections generate the group \(\mathrm{SL}(n+1,q)\). A transvection gives rise to a projectivity of \(\mathrm{PG}(n,q)\), we call such an element an elation, and it is a projectivity \(\phi\) fixing a hyperplane \(H\) pointwise, and such that there exists exactly one point \(p \in H\) such that all hyperplanes through \(p\) are stabilized. The hyperplane \(H\) is called the axis of \(\phi\), and the point \(p\) is called the centre of \(\phi\). As a transvection is an element of \(\mathrm{SL}(n+1,q)\), an elation is an element of \(\mathrm{PSL}(n+1,q)\). 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 \(\mathrm{GF}(q)\). Finally, the group of all elations with a given axis \(H\), acts regularly on the points of \(\mathrm{PG}(n,q) \setminus H\) , and is isomorphic with the additive group of the vector space \(V(n+1,q)\).

##### 5.9-1 ElationOfProjectiveSpace

`‣ ElationOfProjectiveSpace`( sub, point1, point2 ) | ( operation )

Returns: the unique elation with axis sub mapping point1 on point2

It is checked whether the two points do not belong to sub. If point1 equals point2, the identity mapping is returned.

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

##### 5.9-2 ProjectiveElationGroup

`‣ ProjectiveElationGroup`( axis, centre ) | ( operation )

`‣ ProjectiveElationGroup`( axis ) | ( operation )

Returns: A group of elations

The first version returns the group of elations with with given axis axis and centre centre. It is checked whether centre belongs to axis. The second version returns the group of elations with given axis axis.

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

A homology of the projective space \(\mathrm{PG}(n,q)\) is a collineation fixing a hyperplane \(H\) 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 axis and the point the centre of the homology. Homologies with a common axis and centre are a group isomorphic to the multiplicative group of the field \(\mathrm{GF}(q)\).

##### 5.9-3 HomologyOfProjectiveSpace

`‣ HomologyOfProjectiveSpace`( sub, centre, point1, point2 ) | ( operation )

Returns: the unique homology with axis sub and centre centre that maps point1 on point2

It is checked whether the three points do not belong to sub and whether they are collinear. If point1 equals point2, the identity mapping is returned.

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

##### 5.9-4 ProjectiveHomologyGroup

`‣ ProjectiveHomologyGroup`( axis, centre ) | ( operation )

Returns: the group of homologies with with given axis axis and centre centre.

It is checked whether centre does not belong to axis.

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

#### 5.10 Nice Monomorphisms

A nice monomorphism of a group \(G\) is roughly just a permutation representation of \(G\) on a suitable action domain. An easy example is the permutation action of the full collineation group of a projective space on its points. FinInG provides (automatic) functionality to compute nice monomorphisms. Typically, for a geometry \(S\) with \(G\) a (subgroup of the) collineation group of \(S\), a nice monomorphism for \(G\) is a homomorphism from \(G\) to the permutation action of \(S\) on a collection of elements of \(S\). 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.

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

##### 5.10-1 NiceMonomorphism

`‣ NiceMonomorphism`( g ) | ( operation )

Returns: an action, i.e. a group homomorphism

g is a projective semilinear group. If g was constructed as a group stabilizing a geometry, the action of g on the points of the geometry is returned.

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

##### 5.10-2 NiceObject

`‣ NiceObject`( g ) | ( operation )

Returns: a permutation group

g is a projective semilinear group. If g was constructed as a group stabilizing a geometry, the permutation representation of g acting on the points of the geometry is returned. This is actually equivalent with `Image(NiceMonomorphism(g))`.

    gap> g := HomographyGroup(PG(4,8));
    The FinInG projectivity group PGL(5,8)
    gap> NiceObject(g);
    <permutation group of size 4638226007491010887680 with 2 generators>
    gap> g := CollineationGroup(PG(4,8));
    The FinInG collineation group PGammaL(5,8)
    gap> NiceObject(g);
    <permutation group of size 13914678022473032663040 with 3 generators>

##### 5.10-3 FINING

`‣ FINING` | ( global variable )

The global variable `FINING` stores a record with two components, `FINING.Fast` and `FINING.LimitForCanComputeActionOnPoints` By default, `FINING.Fast` is set to `true`. Setting `FINING.Fast` to `false` causes the use of the generic GAP function `ActionHomomorphism` instead of the functions `NiceMonomorphismByDomain` and `NiceMonomorphismByOrbit`, which both rely on the packages GenSS and Orb.

##### 5.10-4 CanComputeActionOnPoints

`‣ CanComputeActionOnPoints`( g ) | ( operation )

Returns: true or false

g must be a projective group. This function returns true if GAP can feasibly compute the action of g 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 `FINING.LimitForCanComputeActionOnPoints`, which is by default set to \(1000000\). The next example requires about 500M of memory.

    gap> NiceMonomorphism(CollineationGroup(ProjectiveSpace(7,8)));
    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
    brk> quit;
    gap> FINING.LimitForCanComputeActionOnPoints := 3*10^6;
    3000000
    gap> NiceMonomorphism(CollineationGroup(ProjectiveSpace(7,8)));
    <action isomorphism>
    gap> time;
    39619

##### 5.10-5 NiceMonomorphismByDomain

`‣ NiceMonomorphismByDomain`( g, dom, op ) | ( operation )

Returns: an action, i.e. a group homomorphism

This operation is not intended for the user. It relies on GenSS and Orb. The argument g is a projective group (in the category `IsProjectiveGroupWithFrob`) with a set `Size` attribute, dom is an orbit of g, and op an operation suitable for x and g.

##### 5.10-6 NiceMonomorphismByOrbit

`‣ NiceMonomorphismByOrbit`( g, dom, op, orblen ) | ( operation )

Returns: an action, i.e. a group homomorphism

This operation is not intended for the user. It relies on GenSS and Orb. The argument g is a projective group (in the category `IsProjectiveGroupWithFrob`) with a set `Size` attribute, dom is an orbit of g, op an operation suitable for x and g, and orblen is the length of the final orbit.

[Top of Book] [Contents] [Previous Chapter] [Next Chapter]
Goto Chapter: Top 1 2 3 4 5 6 7 8 9 10 11 12 13 14 A B C Bib Ind

generated by GAPDoc2HTML