  
  [1X14 [33X[0;0YSubgeometries of projective spaces[133X[101X
  
  [33X[0;0YLet  [22XS=(P,L,I)[122X be a point-line incidence geometry. In case [22XS[122X is a projective
  space  over  a finite field, it is clear that every line (and every subspace
  as  well)  can  be  identified  with  the  set  of  points incident with it.
  Furthermore,  the  incidence  relation [22XI[122X is then symmetrised containment. To
  define  a  subgeometry mathematically, we follow [Dem97]. Let [22XP' ⊂ P[122X and let
  [22XL'[122X  be  a  set of subsets of [22XP'[122X, such that every line [22Xl' ∈ L'[122X is a subset of
  exactly one line [22Xl ∈ L[122X. If [22XS'=(P',L',I)[122X is a projective space again, then we
  call  [22XS'[122X  a  [13Xsubgeometry[113X of [22XS[122X. Note that this definition does not imply that
  the elements of [22XS'[122X are a subset of the elements of [22XS[122X. A typical example of a
  subgeometry  is a Baer subplane of a projective plane. In this example, with
  [22XS'[122X  the  Baer subplane of the projective plane [22XS[122X, one could say that the set
  of  points  of  [22XS'[122X is indeed a subset of the set of points of [22XS[122X, contrary to
  the set of lines of [22XS'[122X, which is not considered a subset of the set of lines
  of  [22XS[122X,  for various mathematical reasons. However, one could consider a line
  of  [22XS'[122X  as  a set of points of [22XS'[122X, so the set of points of a line of [22XS'[122X is a
  subset  of  the  set  of  points  of  a  line  of  [22XS[122X. Another example is the
  subgeometry  of a projective space induced by a subspace [22Xπ[122X. In this example,
  clearly, the set of elements of the induced subgeometry can, mathematically,
  be  considered  as  a  subset  of  the  set  of  elements  of  [22XS[122X.  The  same
  considerations  apply  for  classical  polar spaes. These consideration have
  implications    for    the    behaviour    of    certain    operations    in
  UNKNOWNEntity(fining),  e.g.  when  computing the span and meet of different
  elements.  Using  geometry  morphisms,  and  more particular a function like
  [11XNaturalEmbeddingBySubField[111X,   one   can   deal   in  an  indirect  way  with
  subgeometries.  However,  using  [11XNaturalEmbeddingBySubField[111X is not flexible,
  and  typical problems such as considering a subgeometry determined by a user
  chosen   frame   and   a   subfield,   cannot   be   handled   easily  using
  [11XNaturalEmbeddingBySubField[111X.  Therefore  [5XFinInG[105X  provides  some  functions to
  naturally construct subgeometries of projective spaces.[133X
  
  [33X[0;0YA  subgeometry  in a projective space is completely determined by a frame of
  the  projective  space  and  a  subfield of the base field of the projective
  space.  The  [13Xstandard  frame[113X in an [22Xn[122X-dimensional projective space [22XPG(n,q)[122X is
  the        set        of        [22Xn+2[122X        points       represented       by
  [22X(1,0,...,0),(0,1,...,0),...,(0,0,...,1),(1,1,...,1)[122X.     The     subgeometry
  determined  by  the  standard  frame  will  be  called  [13Xcanonical[113X. Note that
  different frames may determine the same subgeometry (over a fixed subfield).
  A  subgeometry that equals the subgeometry determined by the standard frame,
  will also be canonical.[133X
  
  [33X[0;0YFor a given subfield [22XGF(q') ⊂ GF(q)[122X, the canonical subgeometry determined by
  the  standard  frame  in  [22XPG(n,q)[122X  is mathematically spoken the image of the
  [5XFinInG[105X  geometry morphism [11XNaturalEmbeddingBySubField[111X of the projective space
  [22XPG(n,q')[122X.  The  coordinates  of  the  points  of  the  subgeometry  will  be
  exclusively  over the subfield [22XGF(q')[122X, as are the coordinates of the vectors
  after  normalizing  defining  any  subspace of the subgeometry. Clearly, the
  Frobenius automorphism [22Xx->x^q'[122X fixes all elements of the subgeometry.[133X
  
  [33X[0;0YFor  an  arbitrary  frame  of  [22XPG(n,q)[122X and a subfield [22XGF(q')[122X, there exists a
  unique  collineation  of  [22XPG(n,q)[122X fixing the subgeometry [22XPG(n,q')[122X pointwise.
  This  collineation  is  the conjugation of the Frobenius automorhpism by the
  unique  collineation  mapping  the  defining frame of the subgeometry to the
  standard  frame  of  [22XPG(n,q)[122X.  Upon  construction  of  a  subgeometry,  both
  collineations  will  be  computed, and are of use when dealing with the full
  collineation  group  of  a  subgeometry.  As  for  any incidence geometry in
  [5XFinInG[105X,  operations to compute this collineation group as well as particular
  action functions for subgeometries are provided.[133X
  
  [33X[0;0YSubgeometries  of  projective  spaces  are  constructed  in a subcategory of
  [10XIsProjectiveSpace[110X,  as such, all operations applicable to projective spaces,
  are  naturally  applicable  to subgeometries. Subspaces of subgeometries are
  constructed   in   a   subcategory  of  [10XIsSubspaceOfProjectiveSpace[110X.  Hence,
  operations  applicable  to  subspaces  of  projective  spaces, are naturally
  applicable to subspaces of subgeometries.[133X
  
  
  [1X14.1 [33X[0;0YParticular Categories[133X[101X
  
  [1X14.1-1 IsSubgeometryOfProjectiveSpace[101X
  
  [29X[2XIsSubgeometryOfProjectiveSpace[102X[32X Category
  
  [33X[0;0YThis  category  is  a  subcategory  of  [10XIsProjectiveSpace[110X,  and contains all
  subgeometries  of  projective  spaces.  Note  that  mathmetically  spoken, a
  subspace  of  a  projective space is also a subgeometry. However, in [5XFinInG[105X,
  subspaces  of a projective space are constructed in a category that is not a
  subcategory  of [10XIsProjectiveSpace[110X. Since [10XIsSubgeometryOfProjectiveSpace[110X is a
  subcategory  of  [10XIsProjectiveSpace[110X,  all operations applicable to projective
  spaces, are naturally applicable to subgeometries of projective spaces.[133X
  
  
  [1X14.1-2 [33X[0;0YCategories for elements and collections of elements[133X[101X
  
  [29X[2XIsSubspaceOfSubgeometryOfProjectiveSpace[102X[32X Category
  [29X[2XIsSubspacesOfSubgeometryOfProjectiveSpace[102X[32X Category
  
  [33X[0;0Ydd[133X
  
  
  [1X14.2 [33X[0;0YSubgeometries of projective spaces[133X[101X
  
  [1X14.2-1 CanonicalSubgeometryOfProjectiveSpace[101X
  
  [29X[2XCanonicalSubgeometryOfProjectiveSpace[102X( [3Xpg[103X, [3Xsubfield[103X ) [32X operation
  [29X[2XCanonicalSubgeometryOfProjectiveSpace[102X( [3Xpg[103X, [3Xq[103X ) [32X operation
  [6XReturns:[106X  [33X[0;10YA subgeometry of [3Xpg[103X[133X
  
  [33X[0;0YThis  operation  returns the subgeometry of [3Xpg[103X induced by the standard frame
  over  the subfield [3Xsubfield[103X. Alternatively, the integer [3Xq[103X can be used as the
  order  of the subfield. It is checked whether the user specified subfield is
  indeed  a  subfield of the base field of [3Xpg[103X. If the subfield equals the base
  field of [3Xpg[103X, the projective space [3Xpg[103X is returned.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27Xpg := PG(2,25);[127X[104X
    [4X[28XProjectiveSpace(2, 25)[128X[104X
    [4X[25Xgap>[125X [27Xsub := CanonicalSubgeometryOfProjectiveSpace(pg,GF(5));[127X[104X
    [4X[28XSubgeometry PG(2, 5) of ProjectiveSpace(2, 25)[128X[104X
    [4X[25Xgap>[125X [27XCategoriesOfObject(sub);[127X[104X
    [4X[28X[ "IsIncidenceStructure", "IsIncidenceGeometry", "IsLieGeometry", [128X[104X
    [4X[28X  "IsProjectiveSpace", "IsSubgeometryOfProjectiveSpace" ][128X[104X
    [4X[25Xgap>[125X [27Xpg := PG(3,3^6);[127X[104X
    [4X[28XProjectiveSpace(3, 729)[128X[104X
    [4X[25Xgap>[125X [27Xsub := CanonicalSubgeometryOfProjectiveSpace(pg,3^2);[127X[104X
    [4X[28XSubgeometry PG(3, 9) of ProjectiveSpace(3, 729)[128X[104X
    [4X[25Xgap>[125X [27Xsub := CanonicalSubgeometryOfProjectiveSpace(pg,3^3);[127X[104X
    [4X[28XSubgeometry PG(3, 27) of ProjectiveSpace(3, 729)[128X[104X
    [4X[25Xgap>[125X [27Xsub := CanonicalSubgeometryOfProjectiveSpace(pg,3^6);[127X[104X
    [4X[28XProjectiveSpace(3, 729)[128X[104X
    [4X[28X [128X[104X
  [4X[32X[104X
  
  [1X14.2-2 RandomFrameOfProjectiveSpace[101X
  
  [29X[2XRandomFrameOfProjectiveSpace[102X( [3Xpg[103X ) [32X operation
  [6XReturns:[106X  [33X[0;10YA  set  of  points  of  [3Xpg[103X,  being a frame. Note that the returned
            object  is  also  a  set  in  the  GAP sense, i.e. an ordered list
            without duplicates.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27Xpg := PG(1,5^5);[127X[104X
    [4X[28XProjectiveSpace(1, 3125)[128X[104X
    [4X[25Xgap>[125X [27Xframe := RandomFrameOfProjectiveSpace(pg);[127X[104X
    [4X[28X[ <a point in ProjectiveSpace(1, 3125)>, <a point in ProjectiveSpace(1, 3125)>[128X[104X
    [4X[28X    , <a point in ProjectiveSpace(1, 3125)> ][128X[104X
    [4X[25Xgap>[125X [27XLength(frame);[127X[104X
    [4X[28X3[128X[104X
    [4X[25Xgap>[125X [27Xpg := PG(6,2^2);[127X[104X
    [4X[28XProjectiveSpace(6, 4)[128X[104X
    [4X[25Xgap>[125X [27Xframe := RandomFrameOfProjectiveSpace(pg);[127X[104X
    [4X[28X[ <a point in ProjectiveSpace(6, 4)>, <a point in ProjectiveSpace(6, 4)>, [128X[104X
    [4X[28X  <a point in ProjectiveSpace(6, 4)>, <a point in ProjectiveSpace(6, 4)>, [128X[104X
    [4X[28X  <a point in ProjectiveSpace(6, 4)>, <a point in ProjectiveSpace(6, 4)>, [128X[104X
    [4X[28X  <a point in ProjectiveSpace(6, 4)>, <a point in ProjectiveSpace(6, 4)> ][128X[104X
    [4X[25Xgap>[125X [27XLength(frame);[127X[104X
    [4X[28X8[128X[104X
    [4X[28X [128X[104X
  [4X[32X[104X
  
  [1X14.2-3 IsFrameOfProjectiveSpace[101X
  
  [29X[2XIsFrameOfProjectiveSpace[102X( [3Xlist[103X ) [32X operation
  [6XReturns:[106X  [33X[0;10Ytrue or false[133X
  
  [33X[0;0YWhen  [3Xlist[103X is a list of points of a projective space, this operation returns
  true  if and only if [3Xlist[103X constitutes a frame of the projective space. It is
  checked  as  well  whether  all points in [3Xlist[103X belong to the same projective
  space.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27Xpg := PG(1,7^3);[127X[104X
    [4X[28XProjectiveSpace(1, 343)[128X[104X
    [4X[25Xgap>[125X [27Xp1 := VectorSpaceToElement(pg,[1,1]*Z(7)^0);[127X[104X
    [4X[28X<a point in ProjectiveSpace(1, 343)>[128X[104X
    [4X[25Xgap>[125X [27Xp2 := VectorSpaceToElement(pg,[1,2]*Z(7)^0);[127X[104X
    [4X[28X<a point in ProjectiveSpace(1, 343)>[128X[104X
    [4X[25Xgap>[125X [27Xp3 := VectorSpaceToElement(pg,[1,3]*Z(7)^0);[127X[104X
    [4X[28X<a point in ProjectiveSpace(1, 343)>[128X[104X
    [4X[25Xgap>[125X [27XIsFrameOfProjectiveSpace([p1,p2,p3]);[127X[104X
    [4X[28Xtrue[128X[104X
    [4X[28X [128X[104X
  [4X[32X[104X
  
  [1X14.2-4 SubgeometryOfProjectiveSpaceByFrame[101X
  
  [29X[2XSubgeometryOfProjectiveSpaceByFrame[102X( [3Xpg[103X, [3Xlist[103X, [3Xfield[103X ) [32X operation
  [29X[2XSubgeometryOfProjectiveSpaceByFrame[102X( [3Xpg[103X, [3Xlist[103X, [3Xq[103X ) [32X operation
  [6XReturns:[106X  [33X[0;10YA subgeometry of [3Xpg[103X[133X
  
  [33X[0;0YThe argument [3Xpg[103X is a projective space which is not a subgeometry itself, the
  argument  [3Xlist[103X is a list of points of [3Xpg[103X defining a frame of [3Xpg[103X, and finally
  the argument [3Xfield[103X is a subfield of the base field of [3Xpg[103X. Alternatively, the
  argument  [3Xq[103X is an integer being the order of a subfield of the base field of
  [3Xpg[103X.  This  method  returns the subgeometry definied by the frame in [3Xlist[103X and
  the  subfield  [3Xfield[103X  of  the subfield [22XGF([3Xq[103X)[122X. This method checks whether the
  subfield  [3Xfield[103X  or  the [22XGF([3Xq[103X)[122X is really a sub field of the base field of [3Xpg[103X
  and  whether  the list of points in [3Xlist[103X is a frame of [3Xpg[103X. Note also that it
  is  currently not possible to construct subgeometries recursively, so [3Xpg[103X may
  not be a subgeometry itself. If the specified subfield equals the base field
  of [3Xpg[103X, then the projective space [3Xpg[103X itself is returned.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27Xpg := PG(3,3^6);[127X[104X
    [4X[28XProjectiveSpace(3, 729)[128X[104X
    [4X[25Xgap>[125X [27Xframe := RandomFrameOfProjectiveSpace(pg);[127X[104X
    [4X[28X[ <a point in ProjectiveSpace(3, 729)>, <a point in ProjectiveSpace(3, 729)>, [128X[104X
    [4X[28X  <a point in ProjectiveSpace(3, 729)>, <a point in ProjectiveSpace(3, 729)>, [128X[104X
    [4X[28X  <a point in ProjectiveSpace(3, 729)> ][128X[104X
    [4X[25Xgap>[125X [27Xsub1 := SubgeometryOfProjectiveSpaceByFrame(pg,frame,GF(3));[127X[104X
    [4X[28XSubgeometry PG(3, 3) of ProjectiveSpace(3, 729)[128X[104X
    [4X[25Xgap>[125X [27Xsub2 := SubgeometryOfProjectiveSpaceByFrame(pg,frame,3^2);[127X[104X
    [4X[28XSubgeometry PG(3, 9) of ProjectiveSpace(3, 729)[128X[104X
    [4X[25Xgap>[125X [27Xsub3 := SubgeometryOfProjectiveSpaceByFrame(pg,frame,3^3);[127X[104X
    [4X[28XSubgeometry PG(3, 27) of ProjectiveSpace(3, 729)[128X[104X
    [4X[25Xgap>[125X [27Xsub4 := SubgeometryOfProjectiveSpaceByFrame(pg,frame,3^6);[127X[104X
    [4X[28XProjectiveSpace(3, 729)[128X[104X
    [4X[28X[128X[104X
  [4X[32X[104X
  
  
  [1X14.3 [33X[0;0YBasic operations[133X[101X
  
  
  [1X14.3-1 [33X[0;0YUnderlying vector space and ambient projective space[133X[101X
  
  [29X[2XUnderlyingVectorSpace[102X( [3Xsub[103X ) [32X operation
  [29X[2XAmbientSpace[102X( [3Xsub[103X ) [32X operation
  
  [33X[0;0YLet  [22XP[122X be a projective space over the field [22XF[122X. Let [3Xsub[103X be a subgeometry of [22XP[122X
  over  the  subfield [22XF'[122X. The underlying vector space of [3Xsub[103X is defined as the
  underlying vector space of [22XP[122X (which is a vector space over the field [22XF[122X). The
  ambient space of a subgeometry [3Xsub[103X is the projective space [22XP[122X.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27Xpg := PG(2,5^6);[127X[104X
    [4X[28XProjectiveSpace(2, 15625)[128X[104X
    [4X[25Xgap>[125X [27Xsub1 := CanonicalSubgeometryOfProjectiveSpace(pg,5);[127X[104X
    [4X[28XSubgeometry PG(2, 5) of ProjectiveSpace(2, 15625)[128X[104X
    [4X[25Xgap>[125X [27XUnderlyingVectorSpace(pg);[127X[104X
    [4X[28X( GF(5^6)^3 )[128X[104X
    [4X[25Xgap>[125X [27XUnderlyingVectorSpace(sub1);[127X[104X
    [4X[28X( GF(5^6)^3 )[128X[104X
    [4X[25Xgap>[125X [27XAmbientSpace(sub1);[127X[104X
    [4X[28XProjectiveSpace(2, 15625)[128X[104X
    [4X[25Xgap>[125X [27Xsub2 := CanonicalSubgeometryOfProjectiveSpace(pg,5^3);[127X[104X
    [4X[28XSubgeometry PG(2, 125) of ProjectiveSpace(2, 15625)[128X[104X
    [4X[25Xgap>[125X [27XAmbientSpace(sub2);[127X[104X
    [4X[28XProjectiveSpace(2, 15625)[128X[104X
    [4X[25Xgap>[125X [27XUnderlyingVectorSpace(sub2);[127X[104X
    [4X[28X( GF(5^6)^3 )[128X[104X
    [4X[25Xgap>[125X [27Xframe := RandomFrameOfProjectiveSpace(pg);[127X[104X
    [4X[28X[ <a point in ProjectiveSpace(2, 15625)>, [128X[104X
    [4X[28X  <a point in ProjectiveSpace(2, 15625)>, [128X[104X
    [4X[28X  <a point in ProjectiveSpace(2, 15625)>, [128X[104X
    [4X[28X  <a point in ProjectiveSpace(2, 15625)> ][128X[104X
    [4X[25Xgap>[125X [27Xsub3 := SubgeometryOfProjectiveSpaceByFrame(pg,frame,5^2);[127X[104X
    [4X[28XSubgeometry PG(2, 25) of ProjectiveSpace(2, 15625)[128X[104X
    [4X[25Xgap>[125X [27XAmbientSpace(sub3);[127X[104X
    [4X[28XProjectiveSpace(2, 15625)[128X[104X
    [4X[25Xgap>[125X [27XUnderlyingVectorSpace(sub3);[127X[104X
    [4X[28X( GF(5^6)^3 )[128X[104X
    [4X[28X[128X[104X
  [4X[32X[104X
  
  [1X14.3-2 DefiningFrameOfSubgeometry[101X
  
  [29X[2XDefiningFrameOfSubgeometry[102X( [3Xsub[103X ) [32X attribute
  [6XReturns:[106X  [33X[0;10YA set of projective points[133X
  
  [33X[0;0YThis attribute returns a frame of the ambient space of [3Xsub[103X defining it. Note
  that  different frames might define the same subgeometry, but the frame used
  to  constructed [3Xsub[103X is stored at construction, and it is exactly this stored
  object  that  is returned by this attribute. The returned object is a set of
  points,  and it is also a set in the GAP sense, i.e. an ordered list without
  duplicates.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27Xpg := PG(2,2^4);[127X[104X
    [4X[28XProjectiveSpace(2, 16)[128X[104X
    [4X[25Xgap>[125X [27Xsub := CanonicalSubgeometryOfProjectiveSpace(pg,2);[127X[104X
    [4X[28XSubgeometry PG(2, 2) of ProjectiveSpace(2, 16)[128X[104X
    [4X[25Xgap>[125X [27Xframe := DefiningFrameOfSubgeometry(sub);[127X[104X
    [4X[28X[ <a point in ProjectiveSpace(2, 16)>, <a point in ProjectiveSpace(2, 16)>, [128X[104X
    [4X[28X  <a point in ProjectiveSpace(2, 16)>, <a point in ProjectiveSpace(2, 16)> ][128X[104X
    [4X[25Xgap>[125X [27XList(frame,x->Unpack(UnderlyingObject(x)));[127X[104X
    [4X[28X[ [ Z(2)^0, 0*Z(2), 0*Z(2) ], [ 0*Z(2), Z(2)^0, 0*Z(2) ], [128X[104X
    [4X[28X  [ 0*Z(2), 0*Z(2), Z(2)^0 ], [ Z(2)^0, Z(2)^0, Z(2)^0 ] ][128X[104X
    [4X[25Xgap>[125X [27Xframe := RandomFrameOfProjectiveSpace(pg);[127X[104X
    [4X[28X[ <a point in ProjectiveSpace(2, 16)>, <a point in ProjectiveSpace(2, 16)>, [128X[104X
    [4X[28X  <a point in ProjectiveSpace(2, 16)>, <a point in ProjectiveSpace(2, 16)> ][128X[104X
    [4X[25Xgap>[125X [27Xsub := SubgeometryOfProjectiveSpaceByFrame(pg,frame,2^2);[127X[104X
    [4X[28XSubgeometry PG(2, 4) of ProjectiveSpace(2, 16)[128X[104X
    [4X[25Xgap>[125X [27Xdef := DefiningFrameOfSubgeometry(sub);[127X[104X
    [4X[28X[ <a point in ProjectiveSpace(2, 16)>, <a point in ProjectiveSpace(2, 16)>, [128X[104X
    [4X[28X  <a point in ProjectiveSpace(2, 16)>, <a point in ProjectiveSpace(2, 16)> ][128X[104X
    [4X[25Xgap>[125X [27XList(def,x->Unpack(UnderlyingObject(x)));[127X[104X
    [4X[28X[ [ Z(2)^0, Z(2^4)^3, 0*Z(2) ], [ Z(2)^0, Z(2^4)^9, Z(2^4)^4 ], [128X[104X
    [4X[28X  [ Z(2)^0, Z(2^4)^13, Z(2)^0 ], [ Z(2)^0, Z(2^2)^2, Z(2^4)^14 ] ][128X[104X
    [4X[28X[128X[104X
  [4X[32X[104X
  
  
  [1X14.3-3 [33X[0;0YProjective dimension and rank[133X[101X
  
  [29X[2XProjectiveDimension[102X( [3Xsub[103X ) [32X operation
  [29X[2XDimension[102X( [3Xsub[103X ) [32X operation
  [29X[2XRank[102X( [3Xsub[103X ) [32X operation
  [6XReturns:[106X  [33X[0;10Yan integer[133X
  
  [33X[0;0YIf [3Xsub[103X is a subgeometry of a projective space, then it is a projective space
  itself. Therefore, these three operations return the projective dimension of
  [3Xsub[103X, see also [14X4.1-3[114X.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27Xpg := PG(7,8^2);[127X[104X
    [4X[28XProjectiveSpace(7, 64)[128X[104X
    [4X[25Xgap>[125X [27Xsub := CanonicalSubgeometryOfProjectiveSpace(pg,8);[127X[104X
    [4X[28XSubgeometry PG(7, 8) of ProjectiveSpace(7, 64)[128X[104X
    [4X[25Xgap>[125X [27XProjectiveDimension(sub);[127X[104X
    [4X[28X7[128X[104X
    [4X[25Xgap>[125X [27XDimension(sub);[127X[104X
    [4X[28X7[128X[104X
    [4X[25Xgap>[125X [27XRank(sub);[127X[104X
    [4X[28X7[128X[104X
    [4X[28X[128X[104X
  [4X[32X[104X
  
  
  [1X14.3-4 [33X[0;0YUnderlying algebraic structures[133X[101X
  
  [29X[2XUnderlyingVectorSpace[102X( [3Xsub[103X ) [32X operation
  [29X[2XBaseField[102X( [3Xsub[103X ) [32X operation
  [29X[2XSubfieldOfSubgeometry[102X( [3Xsub[103X ) [32X operation
  [6XReturns:[106X  [33X[0;10YA vector space, a finite field, a finite field, respectively[133X
  
  [33X[0;0YThe   operations   [11XUnderlyingVectorSpace[111X   and  [11XBaseField[111X  are  defined  for
  projective  spaces,  see  [14X4.1-5[114X and [14X4.1-4[114X. For a subgeometry of a projective
  space    [3Xsub[103X    with    ambient    space   [3Xps[103X,   these   operations   return
  [11XUnderlyingVectorSpace(ps)[111X,   [11XBaseField(ps)[111X   respectively.   The   operation
  [11XSubfieldOfSubgeometry[111X returns the subfield over which [3Xsub[103X is defined.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27Xpg := PG(3,3^6);[127X[104X
    [4X[28XProjectiveSpace(3, 729)[128X[104X
    [4X[25Xgap>[125X [27Xsub1 := CanonicalSubgeometryOfProjectiveSpace(pg,3^3);[127X[104X
    [4X[28XSubgeometry PG(3, 27) of ProjectiveSpace(3, 729)[128X[104X
    [4X[25Xgap>[125X [27XBaseField(sub1);[127X[104X
    [4X[28XGF(3^6)[128X[104X
    [4X[25Xgap>[125X [27XUnderlyingVectorSpace(sub1);[127X[104X
    [4X[28X( GF(3^6)^4 )[128X[104X
    [4X[25Xgap>[125X [27XSubfieldOfSubgeometry(sub1);[127X[104X
    [4X[28XGF(3^3)[128X[104X
    [4X[25Xgap>[125X [27Xsub2 := CanonicalSubgeometryOfProjectiveSpace(pg,3^2);[127X[104X
    [4X[28XSubgeometry PG(3, 9) of ProjectiveSpace(3, 729)[128X[104X
    [4X[25Xgap>[125X [27XBaseField(sub2);[127X[104X
    [4X[28XGF(3^6)[128X[104X
    [4X[25Xgap>[125X [27XUnderlyingVectorSpace(sub2);[127X[104X
    [4X[28X( GF(3^6)^4 )[128X[104X
    [4X[25Xgap>[125X [27XSubfieldOfSubgeometry(sub2);[127X[104X
    [4X[28XGF(3^2)[128X[104X
    [4X[28X[128X[104X
  [4X[32X[104X
  
  [1X14.3-5 CollineationFixingSubgeometry[101X
  
  [29X[2XCollineationFixingSubgeometry[102X( [3Xsub[103X ) [32X attribute
  [6XReturns:[106X  [33X[0;10YA collineation of the ambient space of [3Xsub[103X[133X
  
  [33X[0;0YLet  [22XGF(q)[122X  be  the  field  over which [3Xsub[103X is defined, this is a subfield of
  [22XGF(q^t)[122X  over  which  the  ambient projective space [22XP[122X is defined. It is well
  known  that there exists a collineation of [22XP[122X of order [22Xt[122X, fixing all elements
  of  [3Xsub[103X, which is returned by this operation. This collineation is the field
  automorphism  of  [22XGF(q^t)[122X,  fixing  all  elements  of  the  subfield  [22XGF(q)[122X,
  conjugated  by  the  collineation  of  [22XP[122X  mapping the subgeometry [3Xsub[103X on the
  canonical  subgeometry  of [22XP[122X over [22XGF(q)[122X on the subgeometry [3Xsub[103X. In case of a
  quadratic  field  extension  (i.e.  [22Xt=2[122X),  this collineation is known in the
  literature as the Baer involution of the subgeometry.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27Xpg := PG(2,7^3);[127X[104X
    [4X[28XProjectiveSpace(2, 343)[128X[104X
    [4X[25Xgap>[125X [27Xsub := CanonicalSubgeometryOfProjectiveSpace(pg,GF(7));[127X[104X
    [4X[28XSubgeometry PG(2, 7) of ProjectiveSpace(2, 343)[128X[104X
    [4X[25Xgap>[125X [27Xcoll := CollineationFixingSubgeometry(sub);[127X[104X
    [4X[28X< a collineation: <cmat 3x3 over GF(7,3)>, F^7>[128X[104X
    [4X[25Xgap>[125X [27XOrder(coll);[127X[104X
    [4X[28X3[128X[104X
    [4X[28X[128X[104X
  [4X[32X[104X
  
  
  [1X14.4 [33X[0;0YConstructing elements of a subgeometry and basic operations[133X[101X
  
  [1X14.4-1 VectorSpaceToElement[101X
  
  [29X[2XVectorSpaceToElement[102X( [3Xsub[103X, [3Xv[103X ) [32X operation
  [6XReturns:[106X  [33X[0;10YA subspace of a subgeometry[133X
  
  [33X[0;0Y[3Xsub[103X  is  a  subgeometry  of a projective space, and [3Xv[103X is either a row vector
  (for  points)  or  an  [22Xm  x n[122X matrix (for an (m-1)-dimensional subspace of a
  subgeometry of dimension [22Xn-1[122X of a projective space). In the case that [3Xv[103X is a
  matrix,  the rows represent generators for the subspace. An exceptional case
  is  when v is a zero-vector, in which case the trivial subspace is returned.
  This  method  checks  whether [3Xv[103X determines an element of [3Xsub[103X. The argument [3Xv[103X
  will typically be defined over the base field of [3Xsub[103X, which is the basefield
  of the ambient space of [3Xsub[103X.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27Xpg := PG(2,5^6);[127X[104X
    [4X[28XProjectiveSpace(2, 15625)[128X[104X
    [4X[25Xgap>[125X [27Xvecs := [ [ Z(5)^0, Z(5^6)^13972, Z(5^6)^11653 ], [127X[104X
    [4X[25X>[125X [27X[ Z(5)^0, Z(5^6)^9384, Z(5^6)^1372 ],[127X[104X
    [4X[25X>[125X [27X[ Z(5)^0, Z(5^6)^14447, Z(5^6)^15032 ], [127X[104X
    [4X[25X>[125X [27X[ Z(5)^0, Z(5^6)^8784, Z(5^6)^10360 ] ];;[127X[104X
    [4X[25Xgap>[125X [27Xframe := List(vecs,x->VectorSpaceToElement(pg,x));[127X[104X
    [4X[28X[ <a point in ProjectiveSpace(2, 15625)>, [128X[104X
    [4X[28X  <a point in ProjectiveSpace(2, 15625)>, [128X[104X
    [4X[28X  <a point in ProjectiveSpace(2, 15625)>, [128X[104X
    [4X[28X  <a point in ProjectiveSpace(2, 15625)> ][128X[104X
    [4X[25Xgap>[125X [27Xsub := SubgeometryOfProjectiveSpaceByFrame(pg,frame,5^3);[127X[104X
    [4X[28XSubgeometry PG(2, 125) of ProjectiveSpace(2, 15625)[128X[104X
    [4X[25Xgap>[125X [27XVectorSpaceToElement(sub,[0,0,0]*Z(5)^0);[127X[104X
    [4X[28X< empty subspace >[128X[104X
    [4X[25Xgap>[125X [27Xvec := [ Z(5)^0, Z(5^6)^8584, Z(5^6)^13650 ];[127X[104X
    [4X[28X[ Z(5)^0, Z(5^6)^8584, Z(5^6)^13650 ][128X[104X
    [4X[25Xgap>[125X [27XVectorSpaceToElement(sub,vec);[127X[104X
    [4X[28X<a point in Subgeometry PG(2, 125) of ProjectiveSpace(2, 15625)>[128X[104X
    [4X[25Xgap>[125X [27Xvec := [ [ Z(5)^0, 0*Z(5), Z(5^6)^5740 ], [ 0*Z(5), Z(5)^0, Z(5^6)^15250 ] ];[127X[104X
    [4X[28X[ [ Z(5)^0, 0*Z(5), Z(5^6)^5740 ], [ 0*Z(5), Z(5)^0, Z(5^6)^15250 ] ][128X[104X
    [4X[25Xgap>[125X [27XVectorSpaceToElement(sub,vec);[127X[104X
    [4X[28XError, <obj> does not determine an element in <sub> called from[128X[104X
    [4X[28XVectorSpaceToElementForSubgeometries( geom, v [128X[104X
    [4X[28X ) at ./pkg/fining/lib/subgeometries.gi:400 called from[128X[104X
    [4X[28X<function "unknown">( <arguments> )[128X[104X
    [4X[28X called from read-eval loop at line 19 of *stdin*[128X[104X
    [4X[28Xyou can 'quit;' to quit to outer loop, or[128X[104X
    [4X[28Xyou can 'return;' to continue[128X[104X
    [4X[26Xbrk>[126X [27Xquit;[127X[104X
    [4X[25Xgap>[125X [27Xvec := [ [ Z(5)^0, 0*Z(5), Z(5^6)^8268 ], [ 0*Z(5), Z(5)^0, Z(5^6)^1472 ] ];[127X[104X
    [4X[28X[ [ Z(5)^0, 0*Z(5), Z(5^6)^8268 ], [ 0*Z(5), Z(5)^0, Z(5^6)^1472 ] ][128X[104X
    [4X[25Xgap>[125X [27XVectorSpaceToElement(sub,vec);[127X[104X
    [4X[28X<a line in Subgeometry PG(2, 125) of ProjectiveSpace(2, 15625)>[128X[104X
    [4X[25Xgap>[125X [27XVectorSpaceToElement(sub,vecs);[127X[104X
    [4X[28XSubgeometry PG(2, 125) of ProjectiveSpace(2, 15625)[128X[104X
    [4X[28X[128X[104X
  [4X[32X[104X
  
  [1X14.4-2 ExtendElementOfSubgeometry[101X
  
  [29X[2XExtendElementOfSubgeometry[102X( [3Xel[103X ) [32X operation
  [6XReturns:[106X  [33X[0;10YA subspace of a projective space[133X
  
  [33X[0;0YThe  argument  [3Xel[103X  is an element of a subgeometry [22XP'[122X with ambient projective
  space  [22XP[122X. The projective space is defined over a field [22XF[122X, the subgeometry [22XP'[122X
  is  defined  over  a subfield [22XF'[122X of [22XF[122X. The underlying vectorspace of [3Xel[103X is a
  vector space over [22XF'[122X generated by a set [22XS[122X of vectors. This operation returns
  the  element  [22Xpi[122X of [22XP[122X, corresponding to the vector space over [22XF[122X generated by
  the   vectors   in   [22XS[122X.   Note   that  the  set  [22XS[122X  can  be  otbained  using
  [11XUnderlyingObject[111X, see [14X3.2-2[114X.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27Xpg := PG(3,5^5);[127X[104X
    [4X[28XProjectiveSpace(3, 3125)[128X[104X
    [4X[25Xgap>[125X [27Xframe := RandomFrameOfProjectiveSpace(pg);[127X[104X
    [4X[28X[ <a point in ProjectiveSpace(3, 3125)>, <a point in ProjectiveSpace(3, 3125)>[128X[104X
    [4X[28X    , <a point in ProjectiveSpace(3, 3125)>, [128X[104X
    [4X[28X  <a point in ProjectiveSpace(3, 3125)>, [128X[104X
    [4X[28X  <a point in ProjectiveSpace(3, 3125)> ][128X[104X
    [4X[25Xgap>[125X [27Xsub := SubgeometryOfProjectiveSpaceByFrame(pg,frame,5);[127X[104X
    [4X[28XSubgeometry PG(3, 5) of ProjectiveSpace(3, 3125)[128X[104X
    [4X[25Xgap>[125X [27Xp := Random(Points(sub));[127X[104X
    [4X[28X<a point in Subgeometry PG(3, 5) of ProjectiveSpace(3, 3125)>[128X[104X
    [4X[25Xgap>[125X [27Xl := Random(Lines(p));[127X[104X
    [4X[28X<a line in Subgeometry PG(3, 5) of ProjectiveSpace(3, 3125)>[128X[104X
    [4X[25Xgap>[125X [27Xp * l;[127X[104X
    [4X[28Xtrue[128X[104X
    [4X[25Xgap>[125X [27Xq := ExtendElementOfSubgeometry(p);[127X[104X
    [4X[28X<a point in ProjectiveSpace(3, 3125)>[128X[104X
    [4X[25Xgap>[125X [27Xq * l;[127X[104X
    [4X[28XError, <x> and <y> do not belong to the same geometry called from[128X[104X
    [4X[28Xx in y at ./pkg/fining/lib/projectivespace.gi:1658 called from[128X[104X
    [4X[28XIsIncident( b, a ) at ./pkg/fining/lib/geometry.gi:439 called from[128X[104X
    [4X[28X<function "unknown">( <arguments> )[128X[104X
    [4X[28X called from read-eval loop at line 15 of *stdin*[128X[104X
    [4X[28Xyou can 'quit;' to quit to outer loop, or[128X[104X
    [4X[28Xyou can 'return;' to continue[128X[104X
    [4X[26Xbrk>[126X [27Xquit;[127X[104X
    [4X[25Xgap>[125X [27Xm := ExtendElementOfSubgeometry(l);[127X[104X
    [4X[28X<a line in ProjectiveSpace(3, 3125)>[128X[104X
    [4X[25Xgap>[125X [27Xq * m;[127X[104X
    [4X[28Xtrue[128X[104X
    [4X[25Xgap>[125X [27XUnderlyingObject(q) = UnderlyingObject(p);[127X[104X
    [4X[28Xtrue[128X[104X
    [4X[25Xgap>[125X [27XUnderlyingObject(l) = UnderlyingObject(m);[127X[104X
    [4X[28Xtrue[128X[104X
    [4X[28X[128X[104X
  [4X[32X[104X
  
  [1X14.4-3 AmbientGeometry[101X
  
  [29X[2XAmbientGeometry[102X( [3Xel[103X ) [32X operation
  [6XReturns:[106X  [33X[0;10YAn incidence geometry[133X
  
  [33X[0;0YFor [3Xel[103X an element of a subgeometry [22XP[122X, which is also a projective space, this
  operation returns [22XP[122X.[133X
  
  
  [1X14.4-4 [33X[0;0YFlags[133X[101X
  
  [29X[2XFlagOfIncidenceStructure[102X( [3Xsub[103X, [3Xels[103X ) [32X operation
  [29X[2XIsEmptyFlag[102X( [3Xflag[103X ) [32X operation
  [29X[2XIsChamberOfIncidenceStructure[102X( [3Xflag[103X ) [32X operation
  
  [33X[0;0Yshadows, flags, shadows of flags, span, meet, ExtendElementOf[133X
  
  
  [1X14.5 [33X[0;0YGroups and actions[133X[101X
  
  [33X[0;0YLet  [22XP'[122X  be  a  subgeometry  of  [22XP[122X.  Within  this  framework,  there are two
  possibilities  to  define  the  collineationgroup  of [22XP'[122X. From the algebraic
  perspective,  one  could  define  a  collineation  to  be  a  semilinear map
  preserving  [22XP'[122X.  In this perspective, one could consider all semilinear maps
  of  the  underlying  vector  space of [22XP[122X, since this is the underlying vector
  space  of  [22XP'[122X  as  well.  However, this results in a group that does not act
  faithfully  on  the  elements  of  [22XP'[122X.  Since  a non faithfull action causes
  problems  when  using  the  nice  monomorphism  functionality, we decided to
  define  the  collineation  group  of  the subgeometry [22XP'[122X as the collineation
  group   of   the  projective  space  isomorphic  to  [22XP'[122X  conjugated  by  the
  collineation of [22XP[122X mapping [22XP'[122X on the canonical subgeometry of [22XP[122X over the same
  field  as  [22XP'[122X.  Similarly,  the projectivity group, respectively the special
  projectivity  group,  of  [22XP'[122X is defined as the conjugate of the projectivity
  group,  respectively  special  projectivity  group,  of the projective space
  isomorhpic to [22XP'[122X.[133X
  
  
  [1X14.5-1 [33X[0;0YGroups of collineations[133X[101X
  
  [29X[2XCollineationGroup[102X( [3Xsub[103X ) [32X operation
  [29X[2XProjectivityGroup[102X( [3Xsub[103X ) [32X operation
  [29X[2XSpecialProjectivityGroup[102X( [3Xsub[103X ) [32X operation
  [6XReturns:[106X  [33X[0;10YA group of collineations[133X
  
