Bilinear form #
This file defines a bilinear form over a module. Basic ideas such as orthogonality are also introduced, as well as reflexive, symmetric, non-degenerate and alternating bilinear forms. Adjoints of linear maps with respect to a bilinear form are also introduced.
A bilinear form on an R
-(semi)module M
, is a function from M × M
to R
,
that is linear in both arguments. Comments will typically abbreviate
"(semi)module" as just "module", but the definitions should be as general as
possible.
The result that there exists an orthogonal basis with respect to a symmetric,
nondegenerate bilinear form can be found in QuadraticForm.lean
with
exists_orthogonal_basis
.
Notations #
Given any term B
of type BilinForm
, due to a coercion, can use
the notation B x y
to refer to the function field, ie. B x y = B.bilin x y
.
In this file we use the following type variables:
M
,M'
, ... are modules over the commutative semiringR
,M₁
,M₁'
, ... are modules over the commutative ringR₁
,V
, ... is a vector space over the fieldK
.
References #
Tags #
Bilinear form,
BilinForm R M
is the type of R
-bilinear functions M → M → R
.
- bilin : M → M → R
Instances For
Equations
- BilinForm.instCoeFunBilinFormForAll = { coe := BilinForm.bilin }
Equations
- BilinForm.instZeroBilinForm = { zero := { bilin := fun (x x : M) => 0, bilin_add_left := ⋯, bilin_smul_left := ⋯, bilin_add_right := ⋯, bilin_smul_right := ⋯ } }
Equations
- One or more equations did not get rendered due to their size.
BilinForm R M
inherits the scalar action by α
on R
if this is compatible with
multiplication.
When R
itself is commutative, this provides an R
-action via Algebra.id
.
Equations
- One or more equations did not get rendered due to their size.
Equations
- ⋯ = ⋯
Equations
- ⋯ = ⋯
Equations
- ⋯ = ⋯
Equations
- BilinForm.instAddCommMonoidBilinForm = Function.Injective.addCommMonoid BilinForm.bilin ⋯ ⋯ ⋯ ⋯
Equations
- One or more equations did not get rendered due to their size.
Equations
- One or more equations did not get rendered due to their size.
Equations
- BilinForm.instAddCommGroupBilinFormToCommSemiringToAddCommMonoid = Function.Injective.addCommGroup BilinForm.bilin ⋯ ⋯ ⋯ ⋯ ⋯ ⋯ ⋯
Equations
- BilinForm.instInhabitedBilinForm = { default := 0 }
coeFn
as an AddMonoidHom
Equations
- BilinForm.coeFnAddMonoidHom = { toZeroHom := { toFun := BilinForm.bilin, map_zero' := ⋯ }, map_add' := ⋯ }
Instances For
Equations
- BilinForm.instDistribMulActionBilinFormToAddMonoidInstAddCommMonoidBilinForm = Function.Injective.distribMulAction BilinForm.coeFnAddMonoidHom ⋯ ⋯
Equations
- BilinForm.instModuleBilinFormToSemiringInstAddCommMonoidBilinForm = Function.Injective.module α BilinForm.coeFnAddMonoidHom ⋯ ⋯
Auxiliary construction for the flip of a bilinear form, obtained by exchanging the left and
right arguments. This version is a LinearMap
; it is later upgraded to a LinearEquiv
in flipHom
.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The flip of a bilinear form, obtained by exchanging the left and right arguments.
Equations
- BilinForm.flipHom = let __src := BilinForm.flipHomAux; { toLinearMap := __src, invFun := ⇑BilinForm.flipHomAux, left_inv := ⋯, right_inv := ⋯ }
Instances For
The flip
of a bilinear form over a commutative ring, obtained by exchanging the left and
right arguments.
Equations
- BilinForm.flip = BilinForm.flipHom
Instances For
The restriction of a bilinear form on a submodule.
Equations
- BilinForm.restrict B W = { bilin := fun (a b : ↥W) => B.bilin ↑a ↑b, bilin_add_left := ⋯, bilin_smul_left := ⋯, bilin_add_right := ⋯, bilin_smul_right := ⋯ }