Basics on bilinear maps #
This file provides basics on bilinear maps. The most general form considered are maps that are
semilinear in both arguments. They are of type M →ₛₗ[ρ₁₂] N →ₛₗ[σ₁₂] P
, where M
and N
are modules over R
and S
respectively, P
is a module over both R₂
and S₂
with
commuting actions, and ρ₁₂ : R →+* R₂
and σ₁₂ : S →+* S₂
.
Main declarations #
LinearMap.mk₂
: a constructor for bilinear maps, taking an unbundled function together with proof witnesses of bilinearityLinearMap.flip
: turns a bilinear mapM × N → P
intoN × M → P
LinearMap.lcomp
andLinearMap.llcomp
: composition of linear maps as a bilinear mapLinearMap.compl₂
: composition of a bilinear mapM × N → P
with a linear mapQ → M
LinearMap.compr₂
: composition of a bilinear mapM × N → P
with a linear mapQ → N
LinearMap.lsmul
: scalar multiplication as a bilinear mapR × M → M
Tags #
bilinear
Create a bilinear map from a function that is semilinear in each component.
See mk₂'
and mk₂
for the linear case.
Equations
- LinearMap.mk₂'ₛₗ ρ₁₂ σ₁₂ f H1 H2 H3 H4 = { toAddHom := { toFun := fun (m : M) => { toAddHom := { toFun := f m, map_add' := ⋯ }, map_smul' := ⋯ }, map_add' := ⋯ }, map_smul' := ⋯ }
Instances For
Create a bilinear map from a function that is linear in each component.
See mk₂
for the special case where both arguments come from modules over the same ring.
Equations
- LinearMap.mk₂' R S f H1 H2 H3 H4 = LinearMap.mk₂'ₛₗ (RingHom.id R) (RingHom.id S) f H1 H2 H3 H4
Instances For
Given a linear map from M
to linear maps from N
to P
, i.e., a bilinear map from M × N
to
P
, change the order of variables and get a linear map from N
to linear maps from M
to P
.
Equations
- LinearMap.flip f = LinearMap.mk₂'ₛₗ σ₁₂ ρ₁₂ (fun (n : N) (m : M) => (f m) n) ⋯ ⋯ ⋯ ⋯
Instances For
Restricting a bilinear map in the second entry
Equations
- LinearMap.domRestrict₂ f q = { toAddHom := { toFun := fun (m : M) => LinearMap.domRestrict (f m) q, map_add' := ⋯ }, map_smul' := ⋯ }
Instances For
Restricting a bilinear map in both components
Equations
- LinearMap.domRestrict₁₂ f p q = LinearMap.domRestrict₂ (LinearMap.domRestrict f p) q
Instances For
If B : M → N → Pₗ
is R
-S
bilinear and R'
and S'
are compatible scalar multiplications,
then the restriction of scalars is a R'
-S'
bilinear map.
Equations
- LinearMap.restrictScalars₁₂ R' S' B = LinearMap.mk₂' R' S' (fun (x : M) (x_1 : N) => (B x) x_1) ⋯ ⋯ ⋯ ⋯
Instances For
Create a bilinear map from a function that is linear in each component.
This is a shorthand for mk₂'
for the common case when R = S
.
Equations
- LinearMap.mk₂ R f H1 H2 H3 H4 = LinearMap.mk₂' R R f H1 H2 H3 H4
Instances For
Given a linear map from M
to linear maps from N
to P
, i.e., a bilinear map M → N → P
,
change the order of variables and get a linear map from N
to linear maps from M
to P
.
Equations
- LinearMap.lflip = { toAddHom := { toFun := LinearMap.flip, map_add' := ⋯ }, map_smul' := ⋯ }
Instances For
Composing a linear map M → N
and a linear map N → P
to form a linear map M → P
.
Equations
- LinearMap.lcomp R Pₗ f = LinearMap.flip (LinearMap.comp (LinearMap.flip LinearMap.id) f)
Instances For
Composing a semilinear map M → N
and a semilinear map N → P
to form a semilinear map
M → P
is itself a linear map.
Equations
- LinearMap.lcompₛₗ P σ₂₃ f = LinearMap.flip (LinearMap.comp (LinearMap.flip LinearMap.id) f)
Instances For
Composing a linear map M → N
and a linear map N → P
to form a linear map M → P
.
Equations
- LinearMap.llcomp R M Nₗ Pₗ = LinearMap.flip { toAddHom := { toFun := LinearMap.lcomp R Pₗ, map_add' := ⋯ }, map_smul' := ⋯ }
Instances For
Composing a linear map Q → N
and a bilinear map M → N → P
to
form a bilinear map M → Q → P
.
Equations
- LinearMap.compl₂ f g = LinearMap.comp (LinearMap.lcompₛₗ P σ₂₃ g) f
Instances For
Composing linear maps Q → M
and Q' → N
with a bilinear map M → N → P
to
form a bilinear map Q → Q' → P
.
Equations
- LinearMap.compl₁₂ f g g' = LinearMap.compl₂ (LinearMap.comp f g) g'
Instances For
Composing a linear map P → Q
and a bilinear map M → N → P
to
form a bilinear map M → N → Q
.
Equations
- LinearMap.compr₂ f g = LinearMap.comp ((LinearMap.llcomp R Nₗ Pₗ Qₗ) g) f
Instances For
Scalar multiplication as a bilinear map R → M → M
.
Equations
- LinearMap.lsmul R M = LinearMap.mk₂ R (fun (x : R) (x_1 : M) => x • x_1) ⋯ ⋯ ⋯ ⋯
Instances For
For convenience, a shorthand for the type of bilinear forms from M
to R
.
This should eventually replace _root_.BilinForm
.
Instances For
The restriction of a bilinear form to a submodule.