Documentation

Mathlib.LinearAlgebra.QuadraticForm.Basis

Constructing a bilinear map from a quadratic map, given a basis #

This file provides an alternative to QuadraticMap.associated; unlike that definition, this one does not require Invertible (2 : R). Unlike that definition, this only works in the presence of a basis.

noncomputable def QuadraticMap.toBilin {ι : Type u_1} {R : Type u_2} {M : Type u_3} {N : Type u_4} [LinearOrder ι] [CommRing R] [AddCommGroup M] [AddCommGroup N] [Module R M] [Module R N] (Q : QuadraticMap R M N) (bm : Basis ι R M) :

Given an ordered basis, produce a bilinear form associated with the quadratic form.

Unlike QuadraticMap.associated, this is not symmetric; however, as a result it can be used even in characteristic two. When considered as a matrix, the form is triangular.

Equations
  • Q.toBilin bm = (bm.constr R) fun (i : ι) => (bm.constr R) fun (j : ι) => if i = j then Q (bm i) else if i < j then QuadraticMap.polar (Q) (bm i) (bm j) else 0
Instances For
    theorem QuadraticMap.toBilin_apply {ι : Type u_4} {R : Type u_1} {M : Type u_2} {N : Type u_3} [LinearOrder ι] [CommRing R] [AddCommGroup M] [AddCommGroup N] [Module R M] [Module R N] (Q : QuadraticMap R M N) (bm : Basis ι R M) (i : ι) (j : ι) :
    ((Q.toBilin bm) (bm i)) (bm j) = if i = j then Q (bm i) else if i < j then QuadraticMap.polar (Q) (bm i) (bm j) else 0
    theorem QuadraticMap.toQuadraticMap_toBilin {ι : Type u_4} {R : Type u_1} {M : Type u_2} {N : Type u_3} [LinearOrder ι] [CommRing R] [AddCommGroup M] [AddCommGroup N] [Module R M] [Module R N] (Q : QuadraticMap R M N) (bm : Basis ι R M) :
    (Q.toBilin bm).toQuadraticMap = Q
    theorem LinearMap.BilinMap.toQuadraticMap_surjective {R : Type u_1} {M : Type u_2} {N : Type u_3} [CommRing R] [AddCommGroup M] [AddCommGroup N] [Module R M] [Module R N] [Module.Free R M] :
    Function.Surjective LinearMap.BilinMap.toQuadraticMap

    From a free module, every quadratic map can be built from a bilinear form.

    See BilinMap.not_forall_toQuadraticMap_surjective for a counterexample when the module is not free.