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ι → M
toN
.f.map_eq_zero_of_eq
expresses thatf
is zero when two inputs are equal.f.map_swap
expresses thatf
is negated when two inputs are swapped.f.map_perm
expresses howf
varies by a sign change under a permutation of its inputs.- An
AddCommMonoid
,AddCommGroup
, andModule
structure overAlternatingMap
s that matches the definitions overMultilinearMap
s. MultilinearMap.domDomCongr
, for permutating the elements within a family.MultilinearMap.alternatization
, which makes an alternating map out of a non-alternating one.AlternatingMap.domCoprod
, which behaves as a product between two alternating maps.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
.
AlternatingMap
s are provided with a coercion to MultilinearMap
, along with a set of
norm_cast
lemmas that act on the algebraic structure:
- toFun : (ι → M) → N
- map_add' : ∀ [inst : DecidableEq ι] (m : ι → M) (i : ι) (x y : M), MultilinearMap.toFun (↑s) (Function.update m i (x + y)) = MultilinearMap.toFun (↑s) (Function.update m i x) + MultilinearMap.toFun (↑s) (Function.update m i y)
- map_smul' : ∀ [inst : DecidableEq ι] (m : ι → M) (i : ι) (c : R) (x : M), MultilinearMap.toFun (↑s) (Function.update m i (c • x)) = c • MultilinearMap.toFun (↑s) (Function.update m i x)
- map_eq_zero_of_eq' : ∀ (v : ι → M) (i j : ι), v i = v j → i ≠ j → MultilinearMap.toFun (↑s) v = 0
The map is alternating: if
v
has two equal coordinates, thenf v = 0
.
An alternating map is a multilinear map that vanishes when two of its arguments are equal.
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
.
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
The space of multilinear maps over an algebra over R
is a module over R
, for the pointwise
addition and scalar multiplication.
The evaluation map from ι → M
to M
at a given i
is alternating when ι
is subsingleton.
Instances For
The constant map is alternating when ι
is empty.
Instances For
Restrict the codomain of an alternating map to a submodule.
Instances For
Composition with linear maps #
Composing an alternating map with a linear map on the left gives again an alternating map.
Instances For
Composing an alternating map with the same linear map on each argument gives again an alternating map.
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.
Construct a linear equivalence between maps from a linear equivalence between domains.
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
.
Instances For
AlternatingMap.domDomCongr
as an equivalence.
This is declared separately because it does not work with dot notation.
Instances For
alternating_map.dom_dom_congr
as a linear equivalence.
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.
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.
Elements which are considered equivalent if they differ only by swaps within α or β
Instances For
summand used in AlternatingMap.domCoprod
Instances For
Swapping elements in σ
with equal values in v
results in an addition that cancels
Swapping elements in σ
with equal values in v
result in zero if the swap has no effect
on the quotient.
Like MultilinearMap.domCoprod
, but ensures the result is also alternating.
Note that this is usually defined (for instance, as used in Proposition 22.24 in [Gallier2011Notes])
over integer indices ιa = Fin n
and ιb = Fin m
, as
$$
(f \wedge g)(u_1, \ldots, u_{m+n}) =
\sum_{\operatorname{shuffle}(m, n)} \operatorname{sign}(\sigma)
f(u_{\sigma(1)}, \ldots, u_{\sigma(m)}) g(u_{\sigma(m+1)}, \ldots, u_{\sigma(m+n)}),
$$
where $\operatorname{shuffle}(m, n)$ consists of all permutations of $[1, m+n]$ such that
$\sigma(1) < \cdots < \sigma(m)$ and $\sigma(m+1) < \cdots < \sigma(m+n)$.
Here, we generalize this by replacing:
- the product in the sum with a tensor product
- the filtering of $[1, m+n]$ to shuffles with an isomorphic quotient
- the additions in the subscripts of $\sigma$ with an index of type
Sum
The specialized version can be obtained by combining this definition with finSumFinEquiv
and
LinearMap.mul'
.
Instances For
A more bundled version of AlternatingMap.domCoprod
that maps
((ι₁ → N) → N₁) ⊗ ((ι₂ → N) → N₂)
to (ι₁ ⊕ ι₂ → N) → N₁ ⊗ N₂
.
Instances For
A helper lemma for MultilinearMap.domCoprod_alternization
.
Computing the MultilinearMap.alternatization
of the MultilinearMap.domCoprod
is the same
as computing the AlternatingMap.domCoprod
of the MultilinearMap.alternatization
s.
Taking the MultilinearMap.alternatization
of the MultilinearMap.domCoprod
of two
AlternatingMap
s gives a scaled version of the AlternatingMap.coprod
of those maps.
Two alternating maps indexed by a Fintype
are equal if they are equal when all arguments
are distinct basis vectors.
Currying #
Given an alternating map f
in n+1
variables, split the first variable to obtain
a linear map into alternating maps in n
variables, given by x ↦ (m ↦ f (Matrix.vecCons x m))
.
It can be thought of as a map $Hom(\bigwedge^{n+1} M, N) \to Hom(M, Hom(\bigwedge^n M, N))$.
This is MultilinearMap.curryLeft
for AlternatingMap
. See also
AlternatingMap.curryLeftLinearMap
.
Instances For
AlternatingMap.curryLeft
as a LinearMap
. This is a separate definition as dot notation
does not work for this version.
Instances For
Currying with the same element twice gives the zero map.
The space of constant maps is equivalent to the space of maps that are alternating with respect to an empty family.