Inner Products

Every vector space V in Magma created via the VectorSpace intrinsic (or its synonym KSpace) has an associated bilinear form which is represented by a matrix and which can be accessed via InnerProductMatrix(V) or via the attribute ip_form. By default the inner product matrix is the identity. If the dimension of V is n, then any n x n matrix defined over the base field of V can serve as the inner product matrix by passing it to VectorSpace as an additional parameter.

If e1, e2, ..., en is a basis for V, the matrix of the form β with respect to this basis is J := big(β(ei, ej)big).

A vector space V may also have an associated quadratic form. This can be assigned by attaching a matrix to V via the function QuadraticSpace described in Section Quadratic Spaces. If assigned, the matrix can be accessed as the return value of QuadraticFormMatrix.

The quadratic form defined by the matrix A is q(v) = vAvtr, and the matrix of its polar form is A + Atr. It is always possible to represent a quadratic form by an upper triangular matrix. Furthermore, if the characteristic of the field is not two, the quadratic form may be represented by the symmetric matrix (1/2)J, where J is the matrix of its polar form.

In order to accommodate hermitian forms, a vector space of type ModTupFld has an attribute Involution. This attribute is intended to hold an automorphism (of order two) of the base field.

Contents

Example FldForms_generalform (H30E1)

> K := GF(11);
> J := Matrix(K,3,3,[1,2,3, 4,5,6, 7,8,9]);
> V := VectorSpace(K,3,J);
> InnerProductMatrix(V);
[ 1  2  3]
[ 4  5  6]
[ 7  8  9]
EnsureUpperTriangular(A) : AlgMatElt -> AlgMatElt
Given an n x n matrix A this function returns the upper triangular matrix Q which represents the same quadratic form as A. That is, for all n-tuples v we have vAvtr = vQvtr.
DotProduct(u, v) : ModTupFldElt, ModTupFldElt -> FldElt
If V is the generic space of the parent of u and v, let σ be the field automorphism V`Involution if this attribute is assigned or the identity automorphism if V`Involution is not assigned. If J is the inner product matrix of V, the expression DotProduct(u,v) evaluates to uJσ(vtr). That is, it returns β(u, v), where β is a bilinear or sesquilinear form on V.
DotProductMatrix(S) : SeqEnum[ModTupFldElt] -> AlgMatElt
The matrix of inner products of the vectors in the sequence S. The inner products are calculated using DotProduct and therefore take into account any field automorphism attached to the Involution attribute of the generic space of the universe of S.
GramMatrix(V) : ModTupRng -> AlgMatElt
If B is the basis matrix of V and if J is the inner product matrix, this function returns BJB^(tr). In this case the Involution attribute is ignored.
InnerProductMatrix(V) : ModTupRng -> AlgMatElt
The inner product matrix attached to the generic space of V. This is the attribute V`ip_form.

Example FldForms_grammatrix (H30E2)

This example illustrates the difference between GramMatrix and InnerProductMatrix. The function GramMatrix uses the echelonised basis of the subspace W. To obtain the matrix of inner products between a given list of vectors, use DotProductMatrix.
> K<a> := QuadraticField(-2);
> J := Matrix(K,3,3,[1,2,1, 2,1,0, 1,0,2]);
> V := VectorSpace(K,3,J);
> W := sub<V| [a,a,a], [1,2,3]>;
> InnerProductMatrix(W);
[1 2 1]
[2 1 0]
[1 0 2]
> GramMatrix(W);
[1 0]
[0 9]
> DotProductMatrix([W.1,W.2]);
[ -20 19*a]
[19*a   37]

Example FldForms_innerprod (H30E3)

Continuing the previous example, the vector space V does not have the attribute Involution assigned and therefore DotProduct uses the symmetric bilinear form represented by the inner product matrix J. However, the field K has a well-defined operation of complex conjugation and so InnerProduct uses the hermitian form represented by J.
> u := W.1+W.2;
> DotProduct(u,u);
38*a + 17
> InnerProduct(u,u);
57

Orthogonality

If β is any bilinear or sesquilinear form, the vectors u and v are orthogonal if β(u, v) = 0. The left orthogonal complement of a subset X of V is the subspace

()perp X := { u ∈V | β(u, x) = 0 for all x∈X }

and the right orthogonal complement of W is

Xperp := { u ∈V | β(x, u) = 0 for all x∈X }.

If β is reflexive, then ()perp X = Xperp.

OrthogonalComplement(V, X : parameters) : ModTupFld, ModTupFld -> ModTupFld
    Right: BoolElt                      Default: false
The default value is the left orthogonal complement of X in V. To obtain the right orthogonal complement set Right to true.
Radical(V : parameters) : ModTupFld -> ModTupFld
    Right: BoolElt                      Default: false
The left radical of the inner product space V, namely ()perp V. To obtain the right radical set Right to true.

A bilinear or sesquilinear form β is non-degenerate if rad(V) = 0, where V is the polar space of β.

IsNondegenerate(V) : ModTupFld -> BoolElt
Returns true if the determinant of the matrix of inner products of the basis vectors of V is non-zero, otherwise false. This function takes into account the field automorphism, if any, attached to the Involution attribute of the generic space of V.
IsDegenerate(V) : ModTupFld -> BoolElt
The opposite of the above.

If V is a quadratic space over a perfect field of characteristic 2, the restriction of the quadratic form Q to the radical is a semilinear functional (with respect to x |-> x2) whose kernel is the singular radical of V. A quadratic space is non-singular if its singular radical is zero.

SingularRadical(V) : ModTupFld -> ModTupFld
The kernel of the restriction of the quadratic form of the quadratic space V to the radical of V.
IsNonsingular(V) : ModTupFld -> BoolElt
Returns true if V is a non-singular quadratic space, otherwise false.
V2.28, 13 July 2023