Examples

Here we give some simple examples that display some of the functionality of `Forms`.

A conic of PG(2,8)

Consider the three-dimensional vector space V=GF(8)^3 over GF(8), and consider the following quadratic polynomial in 3 variables: x_1^2+x_2x_3. Then this polynomial defines a quadratic form in V and the zeros form a conic of the associated projective plane. So in particular, our quadratic form defines a degenerate parabolic quadric of Witt Index 1. We will see now how we can use `Forms` to view this example. gap> gf := GF(8); GF(2^3) gap> vec := gf^3; ( GF(2^3)^3 ) gap> r := PolynomialRing( gf, 3 ); GF(2^3)[x_1,x_2,x_3] gap> poly := r.1^2 + r.2 * r.3; x_1^2+x_2*x_3 gap> form := QuadraticFormByPolynomial( poly, r ); < quadratic form > gap> Display( form ); Quadratic form Gram Matrix: 1 . . . . 1 . . . Polynomial: x_1^2+x_2*x_3 gap> IsDegenerateForm( form ); true gap> WittIndex( form ); 1 gap> IsParabolicForm( form ); true gap> RadicalOfForm( form ); <vector space of dimension 1 over GF(2^3)> Now our conic is stabilised by GO(3,8), but not the same GO(3,8) that is installed in GAP. However, our conic is the canonical conic given in `Forms`. gap> canonical := IsometricCanonicalForm( form ); < quadratic form > gap> form = canonical; true So we ``change forms''... gap> go := GO(3,8); GO(0,3,8) gap> mat := InvariantQuadraticForm( go )!.matrix; [ [ Z(2)^0, 0*Z(2), 0*Z(2) ], [ 0*Z(2), 0*Z(2), 0*Z(2) ], [ 0*Z(2), Z(2)^0, 0*Z(2) ] ] gap> gapform := QuadraticFormByMatrix( mat, GF(8) ); < quadratic form > gap> b := BaseChangeToCanonical( gapform ); [ [ Z(2)^0, 0*Z(2), 0*Z(2) ], [ 0*Z(2), Z(2)^0, 0*Z(2) ], [ 0*Z(2), 0*Z(2), Z(2)^0 ] ] gap> hom := BaseChangeHomomorphism( b, GF(8) ); ^[ [ Z(2)^0, 0*Z(2), 0*Z(2) ], [ 0*Z(2), Z(2)^0, 0*Z(2) ], [ 0*Z(2), 0*Z(2), Z(2)^0 ] ] gap> newgo := Image(hom, go); Group([ [ [ Z(2)^0, 0*Z(2), 0*Z(2) ], [ 0*Z(2), Z(2^3), 0*Z(2) ], [ 0*Z(2), 0*Z(2), Z(2^3)^6 ] ], [ [ Z(2)^0, 0*Z(2), 0*Z(2) ], [ Z(2)^0, Z(2)^0, Z(2)^0 ], [ 0*Z(2), Z(2)^0, 0*Z(2) ] ] ]) Now we look at the action of our new GO(3,8) on the conic. gap> conic := Filtered(vec, x -> IsZero( x^form ));; gap> Size( conic ); 64 gap> orbs := Orbits(newgo, conic, OnRight);; gap> List(orbs, Size); [ 1, 63 ] So we see that there is a fixed point, which is actually the nucleus of the conic, or in other words, the radical of the form.
A form for W(5,3)
The symplectic polar space W(5,q) is defined by an alternating reflexive bilinear form on the six-dimensional vector space GF(q)^6. Any invertible 6\times 6 matrix A which satisfies A+A^T=0 is a candidate for the Gram matrix of a symplectic polarity. The canonical form we adopt in `Forms` for an alternating form is f(x,y)=x_1y_2-x_2y_1+x_3y_4-x_4y_3\cdots+x_{2n-1}y_{2n}-x_{2n}y_{2n-1}.

gap> f := 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(f);; gap> form := BilinearFormByMatrix( gram, f ); < bilinear form > gap> IsSymplecticForm( form ); true gap> Display( form ); Bilinear form Gram Matrix: . . . 1 . . . . . . 1 . . . . . . 1 2 . . . . . . 2 . . . . . . 2 . . . gap> b := BaseChangeToCanonical( form );; gap> Display( b ); . . . . . 1 . . 2 . . . . . . . 1 . . 2 . . . . . . . 1 . . 2 . . . . . gap> Display( b * gram * TransposedMat(b) ); . 1 . . . . 2 . . . . . . . . 1 . . . . 2 . . . . . . . . 1 . . . . 2 .