In this chapter we give a very brief overview on morphisms of sesquilinear and quadratic forms. The reader can find more in the texts: Cameron [Cam00], Taylor [Tay92], Aschbacher [Asc00], or Kleidman and Liebeck [KL90].
In this chapter we consider an \(n\)dimensional vector space \(V\) over a finite field. Suppose that \(f\) is a sesquilinear form or a quadratic form on \(V\), then we call the pair \((V,f)\) a formed vector space.
Consider two formed vector spaces \((V,f)\) and \((W,g)\) over the same field \(F\), where both \(f\) and \(g\) are sesquilinear forms. Suppose that \(φ\) is a linear map from \(V\) to \(W\). The map \(φ\) is an isometry from the formed space \((V,f)\) to the formed space \((W,g)\) if for all \(v,w\) in \(V\) we have
\[ f(v,w) = f'(φ(v),φ(w))\]
The map \(φ\) is a similarity from the formed space \((V,f)\) to the formed space \((W,g)\) if for all \(v,w\) in \(V\) we have
\[ f(v,w) = λ (f'(φ(v),φ(w))) \]
for some nonzero \(λ\) in \(F\). Finally, the map φ. is a semisimilarity from the formed space \((V,f)\) to the formed space \((W,g)\) if for all \(v,w\) in \(V\) we have
\[ f(v,w) = λ f'(φ(v),φ(w))^α\]
for some nonzero \(λ\) in \(F\) and a field automorphism \(α\) of \(F\).
One of the objectives of studying maps between formed vector spaces is the classification of sesquilinear forms on a vector space \(V\), where it is sufficient to classify nondegenerate forms. The following results are well known.
It can be proved that (see for example Section 6.3 of [Cam00]):
all nondegenerate alternating forms of a given vector space over a given finite field are similar,
all nondegenerate hermitian forms of a given vector space over a given finite field are similar, and,
the nondegenerate symmetric bilinear forms on a vector space over a field with odd characteristic come in three flavours, two of which occur when the dimension of the vector space is even, one of which occurs when the dimension of the vector space is odd.
In principle, within each similarity class, different isometry classes can occur, but we will see that in most cases, each similarity class contains exactly one isometry class.
Given a sesquilinear form \(f\) over a vector space \(V\), Forms provides functionality to compute the linear map φ from \(V\) to itself (or, equivalently, a matrix describing a change of basis), such that \(f\) is mapped to its canonical representative in its isometry class. In the next sections, we describe the representative(s) of the similarity class(es) used in Forms, and, when necessary, the different isometry classes, for each of the three reflexive sesquilinear forms. The easiest cases are the hermitian and alternating cases.
We suppose that \(f\) is a nondegenerate hermitian form on a vector space \(V\) over the finite field \(F\), with involutory field automorphism α. It can be proved (see [KL90]) that any vector space equipped with a nondegenerate hermitian form \(f\) contains an orthogonal basis such that f(e_{i},e_{j})=1 for each basisvector e_{i}. Hence \((V,f)\) is isometric with \((V,f')\) with \(f'\) the nondegenerate hermitian form with the identity matrix over \(F\). The Witt index of \(f\) equals \(n/2\) when \(n\) is even and \((n1)/2\) when \(n\) is odd.
We suppose that \(f\) is a nondegenerate alternating bilinear form on a vector space \(V\) over a finite field \(F\). As already mentioned in Section 3.1, nondegenerate alternating forms only exist on even dimensional vector spaces. Restricting to a two dimensional vector space, it is clear immediately that the Gram matrix of \(f\) must be


We suppose that \(f\) is a nondegenerate symmetric bilinear form on a vector space \(V\) over a finite field \(F\) with odd characteristic. We call a two dimensional vector space a hyperbolic line if it contains a nonzero vector such that \(f(v,v) = 0\). It is proved (see Proposition 6.9 of [Cam00]) that any two hyperbolic lines are isometric, and we choose as canonical representative the orthogonal form with Gram matrix

It can be proved (see Theorem 6.10 of [Cam00]) that the formed space \((V,f)\) can be written as the orthogonal direct sum of hyperbolic lines and one subspace \(U\) of dimension at most two. The behaviour of \(f\) on the subspace \(U\) determines the similarity class of \(f\). We describe the three occurring cases, to describe the chosen canonical form, we use the polynomial rather than the Gram matrix.
If the dimension of \(U\) is zero, then \((V,f)\) is the orthogonal direct sum of hyperbolic lines, and hence \((V,f)\) is isometric to the formed space \((V,f')\), where the Gram matrix of \(f'\) consists of blocks as described above. The chosen canonical form has polynomial
If the dimension of \(U\) is one, then necessarily the polynomial of \(f\) equals
Suppose at last that the dimension of \(U\) is two. We may suppose that \(U\) is not a hyperbolic line. It is not too difficult to see that a suitable base change yields the polynomial
Suppose that \(f\) is a degenerate sesquilinear form on the vector space \(V\), then \(Rad(f)\) is a nontrivial subspace of the vector space \(V\). The vector space \(V\) can be written as the orthogonal direct sum of a subspace \(W\) and \(Rad(f)\), and the restriction of \(f\) to \(W\) is a nondegenerate sesquilinear form on \(W\). Hence, \(f\) is isometric with a sesquilinear form having Gram matrix

where \(M\) is the Gram matrix of a nondegenerate sesquilinear form and \(A,B\) and \(C\) are appropriate zero matrices. As explained in Section 3.1, the form \(f\) induces a nondegenerate form \(g\) on the vector space \(V/Rad(f)\). The computed matrix \(M\) can be taken as Gram matrix for the form \(g\). As defined in Section 3.1, the Witt index of the degenerate form \(f\) is the Witt index of the nondegenerate inducedform \(g\). The dimension of the maximal isotropic subspaces with relation to \(f\) is the sum of the Witt index and the dimension of the radical.
Consider two formed vector spaces \((V,f)\) and \((W,g)\) over the same field \(F\), where both \(f\) and \(g\) are quadratic forms. Suppose that φ is a linear map from \(V\) to \(W\). The map φ is an isometry from the formed space \((V,f)\) to the formed space \((W,g)\) if for all \(v,w\) in \(V\) we have
\[ f(v) = f'(φ(v)).\]
The map φ is a similarity from the formed space \((V,f)\) to a formed space \((W,g)\) if for all \(v,w\) in \(V\) we have
\[ f(v) = λ (f'(φ(v))) \]
for some nonzero λ in \(F\). Finally, the map φ. is a semisimilarity from the formed space \((V,f)\) to the formed space \((W,g)\) if for all \(v,w\) in \(V\) we have
\[ f(v) = λ f'(φ(v))^α \]
for some nonzero λ in \(F\) and a field automorphism α of \(F\).
Also in this case, one of the objectives of studying maps between formed vector spaces is the classification of quadratic forms of the same vector space \(V\), where it is sufficient to classify nonsingular forms.
Since there is a onetoone relationship between quadratic forms in odd characteristic and orthogonal bilinear forms in odd characteristic, we suppose in this section that \(f\) is a quadratic form in even characteristic. We call a two dimensional vector space a hyperbolic line if it contains a nonzero vector such that \(f(v) = 0\). It is proved (see Proposition 6.9 of [Cam00]) that any two hyperbolic lines are isometric, and we choose as canonical representative the quadratic form with polynomial x_{1}x_{2}. As in the case of the orthogonal bilinear forms, it can be proved (see Theorem 6.10 of [Cam00]) that \((V,f)\) can be written as the orthogonal direct sum of hyperbolic lines and one subspace \(U\) of dimension at most two. The behaviour of \(f\) on the subspace \(U\) determines the similarity class of \(f\). The classification of quadratic forms in even characteristic is analogous to the one in odd characteristic.
If the dimension of \(U\) is zero, then \((V,f)\) is the orthogonal direct sum of hyperbolic lines, and hence \((V,f)\) is isometric to the formed space \((V,f')\), with polynomial
If the dimension of \(U\) is one, then necessarily the polynomial of \(f\) equals
Suppose at last that the dimension of \(U\) is two. We may suppose that \(U\) is not a hyperbolic line. It is not difficult to see that a suitable base change yields the polynomial
Hence, nonsingular quadratic forms in even characteristic come in three similarity classes, which is analogous to the odd characteristic case, and each similarity class contains only one isometry class, which is different than in the odd characteristic case
Suppose that \(f\) is a singular quadratic form on the \(n\)dimensional vector space \(V\), then \(Rad(f)\) is a nontrivial subspace of the vector space \(V\). The vector space \(V\) can be written as the orthogonal direct sum of a subspace \(W\) and \(Rad(f)\), and the restriction of \(f\) to \(W\) is a nonsingular quadratic form on \(W\). Hence, \(f\) is isometric with a quadratic form with one of the three above polynomials. The dimension of the maximal isotropic subspaces is the sum of the Witt index and the dimension of the radical.
Suppose that \(f\) is a singular quadratic form on the vector space \(V\), then \(Rad(f)\) is a nontrivial subspace of the vector space \(V\). The vector space \(V\) can be written as the orthogonal direct sum of a subspace \(W\) and \(Rad(f)\), and the restriction of \(f\) to \(W\) is a nonsingular quadratic form on \(W\). Hence, \(f\) is isometric with a quadratic form having Gram matrix

where \(M\) is the Gram matrix of a nonsingular quadratic form and \(A,B\) and \(C\) are appropriate zero matrices. As explained in Section 3.2, the form \(f\) induces a nonsingular form \(g\) on the vector space \(V/Rad(f)\). The computed matrix \(M\) can be taken as Gram matrix for the form \(g\). As defined in Section 3.2, the Witt index of the singular form \(f\) is the Witt index of the nonsingular induced form \(g\). The dimension of the maximal isotropic subspaces with relation to \(f\) is the sum of the Witt index and the dimension of the radical.
‣ BaseChangeToCanonical ( f )  ( attribute ) 
Returns: a transition matrix b from one basis to another
The argument f is a sesquilinear or quadratic form. For every isometry class of forms, there is a canonical representative, as described in Section 5.1. If M is the Gram matrix of the form f, then this method returns an invertible matrix b such that b * M * TransposedMat(b) is the Gram matrix of the canonical representative. That is, b is the transition matrix from a basis of the underlying vector space of f to another basis.
gap> gf := GF(3); GF(3) gap> gram := [ > [0,0,0,1,0,0], > [0,0,0,0,1,0], > [0,0,0,0,0,1], > [1,0,0,0,0,0], > [0,1,0,0,0,0], > [0,0,1,0,0,0]] * One(gf);; gap> form := BilinearFormByMatrix( gram, gf ); < bilinear form > gap> b := BaseChangeToCanonical( form );; gap> Display( b * gram * TransposedMat(b) ); . 1 . . . . 2 . . . . . . . . 1 . . . . 2 . . . . . . . . 1 . . . . 2 .
‣ BaseChangeHomomorphism ( b, gf )  ( operation ) 
Returns: the inner automorphism of GL(d,q) associated to the transition matrix b.
The argument b must be an invertible matrix of size \(d\) over the finite field gf of order \(q\). This method returns the inner automorphism of \(GL(d,q)\) induces by conjugation by \(b\).
gap> gl:=GL(3,3); GL(3,3) gap> go:=GO(3,3); GO(0,3,3) gap> form := PreservedSesquilinearForms(go)[1]; < bilinear form > gap> gram := GramMatrix( form ); [ [ 0*Z(3), Z(3), 0*Z(3) ], [ Z(3), 0*Z(3), 0*Z(3) ], [ 0*Z(3), 0*Z(3), Z(3)^0 ] ] gap> b := BaseChangeToCanonical(form);; gap> hom := BaseChangeHomomorphism(b, GF(3)); ^[ [ 0*Z(3), Z(3)^0, 0*Z(3) ], [ Z(3), Z(3), Z(3)^0 ], [ Z(3)^0, Z(3), 0*Z(3) ] ] gap> newgo := Image(hom, go); Group( [ [ [ Z(3)^0, Z(3)^0, 0*Z(3) ], [ 0*Z(3), Z(3), 0*Z(3) ], [ Z(3), Z(3)^0, Z(3) ] ], [ [ Z(3)^0, Z(3), 0*Z(3) ], [ Z(3), Z(3), Z(3)^0 ], [ 0*Z(3), Z(3)^0, 0*Z(3) ] ] ]) gap> gens := GeneratorsOfGroup(newgo);; gap> canonical := b * gram * TransposedMat(b); [ [ Z(3)^0, 0*Z(3), 0*Z(3) ], [ 0*Z(3), 0*Z(3), Z(3) ], [ 0*Z(3), Z(3), 0*Z(3) ] ] gap> ForAll(gens, y > y * canonical * TransposedMat(y) = canonical); true
‣ IsometricCanonicalForm ( f )  ( attribute ) 
Returns: the canonical form isometric to the sesquilinear or quadratic form f.
The argument f is a sesquilinear or quadratic form. For every isometry class of forms, there is a canonical representative, as described in Section 5.1, which is the returned form.
gap> mat := [ [ Z(8) , 0*Z(2), 0*Z(2), 0*Z(2), 0*Z(2) ], > [ 0*Z(2), Z(2)^0, Z(2^3)^5, 0*Z(2), 0*Z(2) ], > [ 0*Z(2), 0*Z(2), 0*Z(2), 0*Z(2), 0*Z(2) ], > [ 0*Z(2), 0*Z(2), 0*Z(2), 0*Z(2), Z(2)^0 ], > [ 0*Z(2), 0*Z(2), 0*Z(2), 0*Z(2), 0*Z(2) ] ];; gap> form := QuadraticFormByMatrix(mat,GF(8)); < quadratic form > gap> iso := IsometricCanonicalForm(form); < parabolic quadratic form > gap> Display(form); Parabolic quadratic form Gram Matrix: z = Z(8) z^1 . . . . . 1 z^5 . . . . . . . . . . . 1 . . . . . Witt Index: 2 gap> Display(iso); Parabolic quadratic form Gram Matrix: 1 . . . . . . 1 . . . . . . . . . . . 1 . . . . . Witt Index: 2
‣ ScalarOfSimilarity ( M, form )  ( operation ) 
Returns: a finite field element
Recall that a similarity of a form \(f\) on a vector space \(V\), is a linear transformation \(g\) of \(V\) where there exists some nonzero scalar \(c\) such that for all \(v,w\) in \(V\),
\[ f(u^{g},v^{g}) = c f(u,v)\]
This operation finds for a particular matrix M, giving rise to a similarity of the sesquilinear form form, the said scalar \(c\).
gap> gram := [ [ 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), 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), 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) ] ];; gap> form := BilinearFormByMatrix( gram, GF(3) ); < bilinear form > gap> m := [ [ Z(3)^0, Z(3)^0, Z(3), 0*Z(3), Z(3)^0, Z(3) ], > [ Z(3), Z(3), Z(3)^0, 0*Z(3), Z(3)^0, Z(3) ], > [ 0*Z(3), Z(3), 0*Z(3), Z(3), 0*Z(3), 0*Z(3) ], > [ 0*Z(3), Z(3), Z(3)^0, Z(3), Z(3), Z(3) ], > [ Z(3)^0, Z(3)^0, Z(3), Z(3), Z(3)^0, Z(3)^0 ], > [ Z(3)^0, 0*Z(3), Z(3), Z(3)^0, Z(3), Z(3) ] ];; gap> ScalarOfSimilarity( m, form ); Z(3)
‣ WittIndex ( f )  ( attribute ) 
Returns: the Witt index of the form f.
The argument f is a sesquilinear or quadratic form on the vector space \(V\). When f is degenerate, respectively singular, its Witt index is defined as the Witt index of the induced nondegenerate, respectively nonsingular form on the vector space \(V/Rad(f)\), see Sections 3.1 and 3.2.
gap> mat := [[0,0,1,0,0],[0,0,0,0,0],[1,0,0,0,0],[0,0,0,0,0],[0,0,0,0,0]]*Z(7)^0; [ [ 0*Z(7), 0*Z(7), Z(7)^0, 0*Z(7), 0*Z(7) ], [ 0*Z(7), 0*Z(7), 0*Z(7), 0*Z(7), 0*Z(7) ], [ Z(7)^3, 0*Z(7), 0*Z(7), 0*Z(7), 0*Z(7) ], [ 0*Z(7), 0*Z(7), 0*Z(7), 0*Z(7), 0*Z(7) ], [ 0*Z(7), 0*Z(7), 0*Z(7), 0*Z(7), 0*Z(7) ] ] gap> form := BilinearFormByMatrix(mat,GF(7)); < bilinear form > gap> WittIndex(form); 1 gap> RadicalOfForm(form); <vector space over GF(7), with 3 generators> gap> Dimension(last); 3 gap> mat := IdentityMat(6,GF(5)); [ [ Z(5)^0, 0*Z(5), 0*Z(5), 0*Z(5), 0*Z(5), 0*Z(5) ], [ 0*Z(5), Z(5)^0, 0*Z(5), 0*Z(5), 0*Z(5), 0*Z(5) ], [ 0*Z(5), 0*Z(5), Z(5)^0, 0*Z(5), 0*Z(5), 0*Z(5) ], [ 0*Z(5), 0*Z(5), 0*Z(5), Z(5)^0, 0*Z(5), 0*Z(5) ], [ 0*Z(5), 0*Z(5), 0*Z(5), 0*Z(5), Z(5)^0, 0*Z(5) ], [ 0*Z(5), 0*Z(5), 0*Z(5), 0*Z(5), 0*Z(5), Z(5)^0 ] ] gap> form := QuadraticFormByMatrix(mat,GF(5)); < quadratic form > gap> WittIndex(form); 3 gap> mat := IdentityMat(6,GF(7)); [ [ Z(7)^0, 0*Z(7), 0*Z(7), 0*Z(7), 0*Z(7), 0*Z(7) ], [ 0*Z(7), Z(7)^0, 0*Z(7), 0*Z(7), 0*Z(7), 0*Z(7) ], [ 0*Z(7), 0*Z(7), Z(7)^0, 0*Z(7), 0*Z(7), 0*Z(7) ], [ 0*Z(7), 0*Z(7), 0*Z(7), Z(7)^0, 0*Z(7), 0*Z(7) ], [ 0*Z(7), 0*Z(7), 0*Z(7), 0*Z(7), Z(7)^0, 0*Z(7) ], [ 0*Z(7), 0*Z(7), 0*Z(7), 0*Z(7), 0*Z(7), Z(7)^0 ] ] gap> form := QuadraticFormByMatrix(mat,GF(7)); < quadratic form > gap> WittIndex(form); 2
‣ IsEllipticForm ( f )  ( property ) 
Returns: true or false.
The argument f is a sesquilinear or quadratic form on the vector space \(V\). This operation returns true is and only if f is elliptic; that is, it is orthogonal of minus type, or in other words, has even dimension and nonmaximal Witt index (see Section 5.13 for sesquilinear forms and Section 5.2 for quadratic forms). If f is degenerate, respectively singular, then this operation refers to the inuced nondegenerate, respectively nonsingular form induced on the vector space \(V/Rad(f)\).
‣ IsParabolicForm ( f )  ( property ) 
Returns: true or false.
The argument f is a sesquilinear or quadratic form on the vector space \(V\). This operation returns true is and only if f is parabolic; that is, it is orthogonal of neutral type, or in other words, it has odd dimension (see Section 5.13 for sesquilinear forms and Section 5.2 for quadratic forms). If f is degenerate, respectively singular, then this operation refers to the inuced nondegenerate, respectively nonsingular form induced on the vector space \(V/Rad(f)\).
‣ IsHyperbolicForm ( f )  ( attribute ) 
Returns: true or false.
The argument f is a sesquilinear or quadratic form on the vector space \(V\). This operation returns true is and only if f is hyperbolic; that is, it is orthogonal of plus type, or in other words, has even dimension and maximal Witt index (see Section 5.13 for sesquilinear forms and Section 5.2 for quadratic forms). If f is degenerate, respectively singular, then this operation refers to the inuced nondegenerate, respectively nonsingular form induced on the vector space \(V/Rad(f)\).
‣ TypeOfForm ( f )  ( operation ) 
Returns: a number.
The argument f is a sesquilinear or quadratic form on the vector space \(V\) with radical \(R\), a \(k\)dimensional space. Then f induces a nondegenerate/nonsingular form \(g\) on \(V/R\). When \(R\) is the trivial vector space, the form \(g\) is just the given form f. This opertion returns
0 when \(g\) is symplecitc or parabolic;
+1 when \(g\) is hyperbolic;
1 when \(g\) is elliptic;
1/2 when \(g\) is hermitian in odd dimension;
+1/2 when \(g\) is hermitian in even dimension;
an error message when f is a pseudo form.
Note that no method is installed for the trivial form. The methods for this operation rely on IsParabolicForm
, IsHyperbolicForm
and IsEllipticForm
for orthogonal bilinear forms and quadratic forms.
gap> mat := [[0,0,0,1],[0,0,3,0],[0,3,0,0],[1,0,0,0]]*Z(25)^0; [ [ 0*Z(5), 0*Z(5), 0*Z(5), Z(5)^2 ], [ 0*Z(5), 0*Z(5), Z(5)^3, 0*Z(5) ], [ 0*Z(5), Z(5), 0*Z(5), 0*Z(5) ], [ Z(5)^0, 0*Z(5), 0*Z(5), 0*Z(5) ] ] gap> form := BilinearFormByMatrix(mat,GF(25)); < bilinear form > gap> IsDegenerateForm(form); false gap> TypeOfForm(form); 0 gap> mat := IdentityMat(3,GF(7)); [ [ Z(7)^0, 0*Z(7), 0*Z(7) ], [ 0*Z(7), Z(7)^0, 0*Z(7) ], [ 0*Z(7), 0*Z(7), Z(7)^0 ] ] gap> form := QuadraticFormByMatrix(mat,GF(7)); < quadratic form > gap> IsSingularForm(form); false gap> TypeOfForm(form); 0 gap> mat := [[0,1,0,0],[1,0,0,0],[0,0,0,0],[0,0,0,0]]*Z(5)^0; [ [ 0*Z(5), Z(5)^0, 0*Z(5), 0*Z(5) ], [ Z(5)^2, 0*Z(5), 0*Z(5), 0*Z(5) ], [ 0*Z(5), 0*Z(5), 0*Z(5), 0*Z(5) ], [ 0*Z(5), 0*Z(5), 0*Z(5), 0*Z(5) ] ] gap> form := BilinearFormByMatrix(mat,GF(5)); < bilinear form > gap> IsDegenerateForm(form); true gap> TypeOfForm(form); 0 gap> mat := [[1,0,0,0],[0,1,0,0],[0,0,0,1],[0,0,1,0]]*Z(7)^0; [ [ Z(7)^0, 0*Z(7), 0*Z(7), 0*Z(7) ], [ 0*Z(7), Z(7)^0, 0*Z(7), 0*Z(7) ], [ 0*Z(7), 0*Z(7), 0*Z(7), Z(7)^0 ], [ 0*Z(7), 0*Z(7), Z(7)^0, 0*Z(7) ] ] gap> form := BilinearFormByMatrix(mat,GF(7)); < bilinear form > gap> IsDegenerateForm(form); false gap> TypeOfForm(form); 1 gap> mat := IdentityMat(3,GF(9)); [ [ 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> form := HermitianFormByMatrix(mat,GF(9)); < hermitian form > gap> IsDegenerateForm(form); false gap> TypeOfForm(form); 1/2 gap> mat := [[0,0,0,1],[0,1,0,0],[0,0,1,0],[1,0,0,0]]*Z(8)^0; [ [ 0*Z(2), 0*Z(2), 0*Z(2), Z(2)^0 ], [ 0*Z(2), Z(2)^0, 0*Z(2), 0*Z(2) ], [ 0*Z(2), 0*Z(2), Z(2)^0, 0*Z(2) ], [ Z(2)^0, 0*Z(2), 0*Z(2), 0*Z(2) ] ] gap> form := BilinearFormByMatrix(mat,GF(8)); < bilinear form > gap> IsDegenerateForm(form); false gap> TypeOfForm(form); Error, <f> is a pseudo form and has no defined type called from <function "unknown">( <arguments> ) called from readeval loop at line 30 of *stdin* you can 'quit;' to quit to outer loop, or you can 'return;' to continue brk> quit;
generated by GAPDoc2HTML