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 → PintoN × M → PLinearMap.lflip: given a linear map fromMtoN →ₗ[R] P, i.e., a bilinear mapM → N → P, change the order of variables and get a linear map fromNtoM →ₗ[R] P.LinearMap.lcomp: composition of a given linear mapM → Nwith a linear mapN → Pas a linear map fromNₗ →ₗ[R] PₗtoM →ₗ[R] PₗLinearMap.llcomp: composition of linear maps as a bilinear map from(M →ₗ[R] N) × (N →ₗ[R] P)toM →ₗ[R] PLinearMap.compl₂: composition of a linear mapQ → Nand a bilinear mapM → N → Pto form a bilinear mapM → Q → P.LinearMap.compr₂: composition of a linear mapP → Qand a bilinear mapM → N → Pto form a bilinear mapM → N → Q.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
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
- f.flip = LinearMap.mk₂'ₛₗ σ₁₂ ρ₁₂ (fun (n : N) (m : M) => (f m) n) ⋯ ⋯ ⋯ ⋯
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ₛₗ R₅ P σ₂₃ f = (LinearMap.id.flip ∘ₛₗ f).flip
Instances For
Composing a linear map Q → N and a bilinear map M → N → P to
form a bilinear map M → Q → P.
Equations
- h.compl₂ g = { toFun := fun (a : M) => (LinearMap.lcompₛₗ R₅ P σ₂₃ g) (h a), map_add' := ⋯, map_smul' := ⋯ }
Instances For
Composing a given linear map M → N with a linear map N → P as a linear map from
Nₗ →ₗ[R] Pₗ to M →ₗ[R] Pₗ.
Equations
- LinearMap.lcomp S N f = LinearMap.lcompₛₗ S N (RingHom.id R) f
Instances For
Restricting a bilinear map in the second entry
Equations
- f.domRestrict₂ q = { toFun := fun (m : M) => (f m).domRestrict q, map_add' := ⋯, map_smul' := ⋯ }
Instances For
Restricting a bilinear map in both components
Equations
- f.domRestrict₁₂ p q = (f.domRestrict p).domRestrict₂ 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 (x1 : M) (x2 : N) => (B x1) x2) ⋯ ⋯ ⋯ ⋯
Instances For
LinearMap.flip as an isomorphism of modules.
Equations
- LinearMap.lflip = { toFun := LinearMap.flip, map_add' := ⋯, map_smul' := ⋯, invFun := LinearMap.flip, left_inv := ⋯, right_inv := ⋯ }
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
Composing linear maps Q → M and Q' → N with a bilinear map M → N → P to
form a bilinear map Q → Q' → P.
Instances For
Composing a linear map P → Q and a bilinear map M → N → P to
form a bilinear map M → N → Q.
See LinearMap.compr₂ₛₗ for a version of this which does not support towers of scalars but which
does support semi-linear maps.
Instances For
A version of Function.Injective.comp for composition of a bilinear map with a linear map.
A version of Function.Surjective.comp for composition of a bilinear map with a linear map.
A version of Function.Surjective.comp for composition of a bilinear map with a linear map.
A version of Function.Bijective.comp for composition of a bilinear map with a linear map.
Composing linear maps as a bilinear map from (M →ₛₗ[σ₁₂] N) × (N →ₛₗ[σ₂₃] P)
to M →ₛₗ[σ₁₃] P.
Equations
- LinearMap.llcomp R₃ M N P = { toFun := LinearMap.lcompₛₗ R₃ P σ₂₃, map_add' := ⋯, map_smul' := ⋯ }.flip
Instances For
Composing a linear map P →ₛₗ[σ₃₄] Q and a bilinear map M →ₛₗ[σ₁₃] N →ₛₗ[σ₂₃] P to
form a bilinear map M →ₛₗ[σ₁₄] N →ₛₗ[σ₂₄] Q.
See LinearMap.compr₂ for a version of this definition, which does not support semi-linear maps but
which does support towers of scalars.
Equations
- f.compr₂ₛₗ g = (LinearMap.llcomp R₄ N P Q) g ∘ₛₗ f
Instances For
A version of Function.Injective.comp for composition of a bilinear map with a linear map.
A version of Function.Surjective.comp for composition of a bilinear map with a linear map.
A version of Function.Surjective.comp for composition of a bilinear map with a linear map.
A version of Function.Bijective.comp for composition of a bilinear map with a linear map.
Scalar multiplication as a bilinear map R → M → M.
Equations
- LinearMap.lsmul R M = LinearMap.mk₂ R (fun (x1 : R) (x2 : M) => x1 • x2) ⋯ ⋯ ⋯ ⋯
Instances For
A shorthand for the type of R-bilinear Nₗ-valued maps on M.
Instances For
For convenience, a shorthand for the type of bilinear forms from M to R.
Equations
- LinearMap.BilinForm R M = LinearMap.BilinMap R M R
Instances For
Restrict the scalars and range of a linear map.
Equations
- i.restrictScalarsRange k hk f hf = (↑S f ∘ₗ i).codLift k hk hf
Instances For
Restrict the scalars, domains, and range of a bilinear map.
Equations
- i.restrictScalarsRange₂ j k hk B hB = ((LinearMap.restrictScalarsₗ S R N P S ∘ₗ ↑S B).compl₁₂ i j).codRestrict₂ k hk hB