Alternating Maps #
We construct the bundled function AlternatingMap, which extends MultilinearMap with all the
arguments of the same type.
Main definitions #
AlternatingMap R M N ιis the space ofR-linear alternating maps fromι → MtoN.f.map_eq_zero_of_eqexpresses thatfis zero when two inputs are equal.f.map_swapexpresses thatfis negated when two inputs are swapped.f.map_permexpresses howfvaries by a sign change under a permutation of its inputs.- An
AddCommMonoid,AddCommGroup, andModulestructure overAlternatingMaps that matches the definitions overMultilinearMaps. MultilinearMap.domDomCongr, for permuting the elements within a family.MultilinearMap.alternatization, which makes an alternating map out of a non-alternating one.AlternatingMap.curryLeft, for binding the leftmost argument of an alternating map indexed byFin n.succ.
Implementation notes #
AlternatingMap is defined in terms of map_eq_zero_of_eq, as this is easier to work with than
using map_swap as a definition, and does not require Neg N.
AlternatingMaps are provided with a coercion to MultilinearMap, along with a set of
norm_cast lemmas that act on the algebraic structure:
An alternating map from ι → M to N, denoted M [⋀^ι]→ₗ[R] N,
is a multilinear map that vanishes when two of its arguments are equal.
- toFun : (ι → M) → N
- map_update_add' [DecidableEq ι] (m : ι → M) (i : ι) (x y : M) : (↑self).toFun (Function.update m i (x + y)) = (↑self).toFun (Function.update m i x) + (↑self).toFun (Function.update m i y)
- map_update_smul' [DecidableEq ι] (m : ι → M) (i : ι) (c : R) (x : M) : (↑self).toFun (Function.update m i (c • x)) = c • (↑self).toFun (Function.update m i x)
The map is alternating: if
vhas two equal coordinates, thenf v = 0.
Instances For
An alternating map from ι → M to N, denoted M [⋀^ι]→ₗ[R] N,
is a multilinear map that vanishes when two of its arguments are equal.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Basic coercion simp lemmas, largely copied from RingHom and MultilinearMap
Simp-normal forms of the structure fields #
These are expressed in terms of ⇑f instead of f.toFun.
Algebraic structure inherited from MultilinearMap #
AlternatingMap carries the same AddCommMonoid, AddCommGroup, and Module structure
as MultilinearMap
The Cartesian product of two alternating maps, as an alternating map.
Instances For
Combine a family of alternating maps with the same domain and codomains N i into an
alternating map taking values in the space of functions Π i, N i.
Equations
- AlternatingMap.pi f = { toMultilinearMap := MultilinearMap.pi fun (a : ι') => ↑(f a), map_eq_zero_of_eq' := ⋯ }
Instances For
Given an alternating R-multilinear map f taking values in R, f.smul_right z is the map
sending m to f m • z.
Instances For
Equations
- AlternatingMap.instInhabited = { default := 0 }
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
- AlternatingMap.instDistribMulAction = { toSMul := AlternatingMap.instSMul, one_smul := ⋯, mul_smul := ⋯, smul_zero := ⋯, smul_add := ⋯ }
The space of multilinear maps over an algebra over R is a module over R, for the pointwise
addition and scalar multiplication.
Equations
- AlternatingMap.instModule = { toDistribMulAction := AlternatingMap.instDistribMulAction, add_smul := ⋯, zero_smul := ⋯ }
Embedding of alternating maps into multilinear maps as a linear map.
Equations
- AlternatingMap.toMultilinearMapLM = { toFun := AlternatingMap.toMultilinearMap, map_add' := ⋯, map_smul' := ⋯ }
Instances For
The natural equivalence between linear maps from M to N
and 1-multilinear alternating maps from M to N.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The constant map is alternating when ι is empty.
Equations
- AlternatingMap.constOfIsEmpty R M ι m = { toFun := Function.const (ι → M) m, map_update_add' := ⋯, map_update_smul' := ⋯, map_eq_zero_of_eq' := ⋯ }
Instances For
Restrict the codomain of an alternating map to a submodule.
Equations
Instances For
Composition with linear maps #
Composing an alternating map with a linear map on the left gives again an alternating map.
Equations
- g.compAlternatingMap f = { toMultilinearMap := g.compMultilinearMap ↑f, map_eq_zero_of_eq' := ⋯ }
Instances For
LinearMap.compAlternatingMap as an S-linear map.
Equations
- LinearMap.compAlternatingMapₗ S g = { toFun := g.compAlternatingMap, map_add' := ⋯, map_smul' := ⋯ }
Instances For
Composing an alternating map with the same linear map on each argument gives again an alternating map.
Equations
- f.compLinearMap g = { toMultilinearMap := (↑f).compLinearMap fun (x : ι) => g, map_eq_zero_of_eq' := ⋯ }
Instances For
Composing an alternating map twice with the same linear map in each argument is the same as composing with their composition.
Composing an alternating map with the identity linear map in each argument.
Composing with a surjective linear map is injective.
If two R-alternating maps from R are equal on 1, then they are equal.
This is the alternating version of LinearMap.ext_ring.
The only R-alternating map from two or more copies of R is the zero map.
Equations
- AlternatingMap.uniqueOfCommRing = { toInhabited := AlternatingMap.instInhabited, uniq := ⋯ }
Construct a linear equivalence between maps from a linear equivalence between domains.
This is AlternatingMap.compLinearMap as an isomorphism,
and the alternating version of LinearEquiv.multilinearMapCongrLeft.
It could also have been called LinearEquiv.alternatingMapCongrLeft.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Composing an alternating map with the same linear equiv on each argument gives the zero map if and only if the alternating map is the zero map.
Other lemmas from MultilinearMap #
Theorems specific to alternating maps #
Various properties of reordered and repeated inputs which follow from
AlternatingMap.map_eq_zero_of_eq.
Transfer the arguments to a map along an equivalence between argument indices.
This is the alternating version of MultilinearMap.domDomCongr.
Equations
- AlternatingMap.domDomCongr σ f = { toFun := fun (v : ι' → M) => f (v ∘ ⇑σ), map_update_add' := ⋯, map_update_smul' := ⋯, map_eq_zero_of_eq' := ⋯ }
Instances For
AlternatingMap.domDomCongr as an equivalence.
This is declared separately because it does not work with dot notation.
Equations
- AlternatingMap.domDomCongrEquiv σ = { toFun := AlternatingMap.domDomCongr σ, invFun := AlternatingMap.domDomCongr σ.symm, left_inv := ⋯, right_inv := ⋯, map_add' := ⋯ }
Instances For
AlternatingMap.domDomCongr as a linear equivalence.
Equations
- AlternatingMap.domDomCongrₗ S σ = { toFun := AlternatingMap.domDomCongr σ, map_add' := ⋯, map_smul' := ⋯, invFun := AlternatingMap.domDomCongr σ.symm, left_inv := ⋯, right_inv := ⋯ }
Instances For
The results of applying domDomCongr to two maps are equal if and only if those maps are.
If the arguments are linearly dependent then the result is 0.
A version of MultilinearMap.cons_add for AlternatingMap.
A version of MultilinearMap.cons_smul for AlternatingMap.
Produce an AlternatingMap out of a MultilinearMap, by summing over all argument
permutations.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Alternatizing a multilinear map that is already alternating results in a scale factor of n!,
where n is the number of inputs.
Composition with a linear map before and after alternatization are equivalent.
Two alternating maps indexed by a Fintype are equal if they are equal when all arguments
are distinct basis vectors.
An isomorphism of multilinear maps given an isomorphism between their codomains.
This is Linear.compAlternatingMap as an isomorphism,
and the alternating version of LinearEquiv.multilinearMapCongrRight.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The space of constant maps is equivalent to the space of maps that are alternating with respect to an empty family.
Equations
- One or more equations did not get rendered due to their size.