Bilinear forms read off multilinear maps in two variables #
A multilinear map on the constant family fun _ : Fin 2 => V and a bilinear form on V carry the
same data. This file records the direction that is used downstream:
Ado.MultilinearMap.toBilinForm reads a multilinear map m as the bilinear form
(x, y) ↦ m ![x, y], and two recognition lemmas say when that form is symmetric or alternating.
The point of the construction is that the maps out of a second symmetric or exterior power are
multilinear in exactly this sense, so a functional on Sym²V or on ⋀²V becomes a bilinear form
on V by composing with the universal multilinear map. That is what
TauCeti/LinearAlgebra/BilinearForm/Squares.lean builds on this file. An alternating nested
linear map can likewise be read as an AlternatingMap on Fin 2; for scalar-valued maps these
two readings are inverse.
Main definitions #
Ado.MultilinearMap.toBilinForm: the bilinear form(x, y) ↦ m ![x, y]of a multilinear mapmin two variables.LinearMap.IsAlt.toAlternatingMap: an alternating bilinear map read as an alternating map on two arguments.
Main results #
Ado.MultilinearMap.isSymm_toBilinForm: the form is symmetric whenmis unchanged by swapping its two arguments.Ado.MultilinearMap.isAlt_toBilinForm: the form is alternating whenmvanishes on a repeated argument.Ado.MultilinearMap.toBilinForm_injective: the other half of "the same data" -- the form determines the multilinear map.Ado.MultilinearMap.toAlternatingMap_toBilinFormandAdo.MultilinearMap.toBilinForm_toAlternatingMap: the two round trips for alternating scalar-valued maps.
Implementation notes #
Bilinearity is Mathlib's MultilinearMap.cons_add and cons_smul at the first argument and
MultilinearMap.snoc_add and snoc_smul at the second, since ![x, y] is both Fin.cons x ![y]
and Fin.snoc ![x] y. Feeding those four facts to LinearMap.mk₂ keeps the four linearity goals
stated in the ![·, ·] notation, so none of them has to be massaged into the nested form a bare
LinearMap constructor would present.
An alternating bilinear map read as an alternating map in two arguments.
Equations
- hω.toAlternatingMap = { toFun := fun (v : Fin 2 → M) => (ω (v 0)) (v 1), map_update_add' := ⋯, map_update_smul' := ⋯, map_eq_zero_of_eq' := ⋯ }
Instances For
Evaluating the alternating map recovers the original bilinear map on the two arguments.
The bilinear form (x, y) ↦ m ![x, y] of a multilinear map m in two variables.
Equations
- Ado.MultilinearMap.toBilinForm m = LinearMap.mk₂ R (fun (x y : V) => m ![x, y]) ⋯ ⋯ ⋯ ⋯
Instances For
The form of a multilinear map that is unchanged by swapping its two arguments is symmetric.
The form of a multilinear map that vanishes on a repeated argument is alternating.
A multilinear map in two variables is determined by its bilinear form. Every argument of
m is a ![x, y], and the form records the value of m there.
Reading a scalar-valued alternating map as a bilinear form and back recovers the map.
Reading a bilinear map with zero diagonal as an alternating map and back recovers the map.