Dual vector spaces #
The dual space of an $R$-module $M$ is the $R$-module of $R$-linear maps $M \to R$.
Main definitions #
- Duals and transposes:
Module.Dual R Mdefines the dual space of theR-moduleM, asM →ₗ[R] R.Module.dualPairing R Mis the canonical pairing betweenDual R MandM.Module.Dual.eval R M : M →ₗ[R] Dual R (Dual R)is the canonical map to the double dual.Module.Dual.transposeis the linear map fromM →ₗ[R] M'toDual R M' →ₗ[R] Dual R M.LinearMap.dualMapisModule.Dual.transposeof a given linear map, for dot notation.LinearEquiv.dualMapis for the dual of an equivalence.
- Bases:
Basis.toDualproduces the mapM →ₗ[R] Dual R Massociated to a basis for anR-moduleM.Basis.toDual_equivis the equivalenceM ≃ₗ[R] Dual R Massociated to a finite basis.Basis.dualBasisis a basis forDual R Mgiven a finite basis forM.Module.dual_bases e εis the proposition that the familieseof vectors andεof dual vectors have the characteristic properties of a basis and a dual.
- Submodules:
Submodule.dualRestrict Wis the transposeDual R M →ₗ[R] Dual R Wof the inclusion map.Submodule.dualAnnihilator Wis the kernel ofW.dualRestrict. That is, it is the submodule ofdual R Mwhose elements all annihilateW.Submodule.dualRestrict_comap W'is the dual annihilator ofW' : Submodule R (Dual R M), pulled back alongModule.Dual.eval R M.Submodule.dualCopairing Wis the canonical pairing betweenW.dualAnnihilatorandM ⧸ W. It is nondegenerate for vector spaces (subspace.dualCopairing_nondegenerate).Submodule.dualPairing Wis the canonical pairing betweenDual R M ⧸ W.dualAnnihilatorandW. It is nondegenerate for vector spaces (Subspace.dualPairing_nondegenerate).
- Vector spaces:
Subspace.dualLift Wis an arbitrary section (using choice) ofSubmodule.dualRestrict W.
Main results #
- Bases:
Module.dualBasis.basisandModule.dualBasis.coe_basis: ifeandεform a dual pair, theneis a basis.Module.dualBasis.coe_dualBasis: ifeandεform a dual pair, thenεis a basis.
- Annihilators:
Module.dualAnnihilator_gc R Mis the antitone Galois correspondence betweenSubmodule.dualAnnihilatorandSubmodule.dualConnihilator.LinearMap.ker_dual_map_eq_dualAnnihilator_rangesays thatf.dual_map.ker = f.range.dualAnnihilatorLinearMap.range_dual_map_eq_dualAnnihilator_ker_of_subtype_range_surjectivesays thatf.dual_map.range = f.ker.dualAnnihilator; this is specialized to vector spaces inLinearMap.range_dual_map_eq_dualAnnihilator_ker.Submodule.dualQuotEquivDualAnnihilatoris the equivalenceDual R (M ⧸ W) ≃ₗ[R] W.dualAnnihilatorSubmodule.quotDualCoannihilatorToDualis the nondegenerate pairingM ⧸ W.dualCoannihilator →ₗ[R] Dual R W. It is an perfect pairing whenRis a field andWis finite-dimensional.
- Vector spaces:
Subspace.dualAnnihilator_dualConnihilator_eqsays that the double dual annihilator, pulled back groundModule.Dual.eval, is the original submodule.Subspace.dualAnnihilator_gcisays thatmodule.dualAnnihilator_gc R Mis an antitone Galois coinsertion.Subspace.quotAnnihilatorEquivis the equivalenceDual K V ⧸ W.dualAnnihilator ≃ₗ[K] Dual K W.LinearMap.dualPairing_nondegeneratesays thatModule.dualPairingis nondegenerate.Subspace.is_compl_dualAnnihilatorsays that the dual annihilator carries complementary subspaces to complementary subspaces.
- Finite-dimensional vector spaces:
Module.evalEquivis the equivalenceV ≃ₗ[K] Dual K (Dual K V)Module.mapEvalEquivis the order isomorphism between subspaces ofVand subspaces ofDual K (Dual K V).Subspace.orderIsoFiniteCodimDimis the antitone order isomorphism between finite-codimensional subspaces ofVand finite-dimensional subspaces ofDual K V.Subspace.orderIsoFiniteDimensionalis the antitone order isomorphism between subspaces of a finite-dimensional vector spaceVand subspaces of its dual.Subspace.quotDualEquivAnnihilator Wis the equivalence(Dual K V ⧸ W.dualLift.range) ≃ₗ[K] W.dualAnnihilator, whereW.dualLift.rangeis a copy ofDual K WinsideDual K V.Subspace.quotEquivAnnihilator Wis the equivalence(V ⧸ W) ≃ₗ[K] W.dualAnnihilatorSubspace.dualQuotDistrib Wis an equivalenceDual K (V₁ ⧸ W) ≃ₗ[K] Dual K V₁ ⧸ W.dualLift.rangefrom an arbitrary choice of splitting ofV₁.
The dual space of an R-module M is the R-module of linear maps M → R.
Equations
- Module.Dual R M = (M →ₗ[R] R)
Instances For
The canonical pairing of a vector space and its algebraic dual.
Equations
- Module.dualPairing R M = LinearMap.id
Instances For
Equations
- Module.Dual.instInhabited R M = { default := 0 }
Maps a module M to the dual of the dual of M. See Module.erange_coe and
Module.evalEquiv.
Equations
- Module.Dual.eval R M = LinearMap.id.flip
Instances For
The transposition of linear maps, as a linear map from M →ₗ[R] M' to
Dual R M' →ₗ[R] Dual R M.
Equations
- Module.Dual.transpose = (LinearMap.llcomp R M M' R).flip
Instances For
Taking duals distributes over products.
Equations
Instances For
Given a linear map f : M₁ →ₗ[R] M₂, f.dualMap is the linear map between the dual of
M₂ and M₁ such that it maps the functional φ to φ ∘ f.
Equations
- f.dualMap = Module.Dual.transpose f
Instances For
If a linear map is surjective, then its dual is injective.
The Linear_equiv version of LinearMap.dualMap.
Equations
- f.dualMap = let __spread.0 := (↑f).dualMap; { toLinearMap := __spread.0, invFun := ⇑(↑f.symm).dualMap, left_inv := ⋯, right_inv := ⋯ }
Instances For
The linear map from a vector space equipped with basis to its dual vector space, taking basis elements to corresponding dual basis elements.
Instances For
h.toDual_flip v is the linear map sending w to h.toDual w v.
Equations
- b.toDualFlip m = b.toDual.flip m
Instances For
A vector space is linearly equivalent to its dual space.
Equations
- b.toDualEquiv = LinearEquiv.ofBijective b.toDual ⋯
Instances For
A vector space over a field is isomorphic to its dual if and only if it is finite-dimensional: a consequence of the Erdős-Kaplansky theorem.
Maps a basis for V to a basis for the dual space.
Equations
- b.dualBasis = b.map b.toDualEquiv
Instances For
Equations
- ⋯ = ⋯
Equations
- ⋯ = ⋯
simp normal form version of total_dualBasis
Equations
- ⋯ = ⋯
Equations
- ⋯ = ⋯
A reflexive module is one for which the natural map to its double dual is a bijection.
Any finitely-generated free module (and thus any finite-dimensional vector space) is reflexive.
See Module.IsReflexive.of_finite_of_free.
- bijective_dual_eval' : Function.Bijective ⇑(Module.Dual.eval R M)
A reflexive module is one for which the natural map to its double dual is a bijection.
Instances
A reflexive module is one for which the natural map to its double dual is a bijection.
Equations
- ⋯ = ⋯
The bijection between a reflexive module and its double dual, bundled as a LinearEquiv.
Equations
- Module.evalEquiv R M = LinearEquiv.ofBijective (Module.Dual.eval R M) ⋯
Instances For
The dual of a reflexive module is reflexive.
Equations
- ⋯ = ⋯
The isomorphism Module.evalEquiv induces an order isomorphism on subspaces.
Equations
Instances For
Equations
- ⋯ = ⋯
Equations
- ⋯ = ⋯
Equations
- ⋯ = ⋯
Try using Set.toFinite to dispatch a Set.Finite goal.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- tacticUse_finite_instance = Lean.ParserDescr.node `tacticUse_finite_instance 1024 (Lean.ParserDescr.nonReservedSymbol "use_finite_instance" false)
Instances For
e and ε have characteristic properties of a basis and its dual
- finite : ∀ (m : M), {i : ι | (ε i) m ≠ 0}.Finite
Instances For
The coefficients of v on the basis e
Equations
- h.coeffs m = { support := ⋯.toFinset, toFun := fun (i : ι) => (ε i) m, mem_support_toFun := ⋯ }
Instances For
linear combinations of elements of e.
This is a convenient abbreviation for Finsupp.total _ M R e l
Equations
- Module.DualBases.lc e l = l.sum fun (i : ι) (a : R) => a • e i
Instances For
For any m : M n, \sum_{p ∈ Q n} (ε p m) • e p = m
(h : DualBases e ε).basis shows the family of vectors e forms a basis.
Equations
- h.basis = { repr := { toFun := h.coeffs, map_add' := ⋯, map_smul' := ⋯, invFun := Module.DualBases.lc e, left_inv := ⋯, right_inv := ⋯ } }
Instances For
The dualRestrict of a submodule W of M is the linear map from the
dual of M to the dual of W such that the domain of each linear map is
restricted to W.
Equations
- W.dualRestrict = LinearMap.domRestrict' W
Instances For
The dualAnnihilator of a submodule W is the set of linear maps φ such
that φ w = 0 for all w ∈ W.
Equations
- W.dualAnnihilator = LinearMap.ker W.dualRestrict
Instances For
That $\operatorname{ker}(\iota^* : V^* \to W^*) = \operatorname{ann}(W)$. This is the definition of the dual annihilator of the submodule $W$.
The dualAnnihilator of a submodule of the dual space pulled back along the evaluation map
Module.Dual.eval.
Equations
- Φ.dualCoannihilator = Submodule.comap (Module.Dual.eval R M) Φ.dualAnnihilator
Instances For
See also Subspace.dualAnnihilator_inf_eq for vector subspaces.
See also Subspace.dualAnnihilator_iInf_eq for vector subspaces when ι is finite.
Submodule.dualAnnihilator and Submodule.dualCoannihilator form a Galois coinsertion.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Given a subspace W of V and an element of its dual φ, dualLift W φ is
an arbitrary extension of φ to an element of the dual of V.
That is, dualLift W φ sends w ∈ W to φ x and x in a chosen complement of W to 0.
Equations
- W.dualLift = (Classical.choose ⋯).dualMap
Instances For
The quotient by the dualAnnihilator of a subspace is isomorphic to the
dual of that subspace.
Equations
- W.quotAnnihilatorEquiv = ((LinearMap.ker (Submodule.dualRestrict W)).quotEquivOfEq (Submodule.dualAnnihilator W) ⋯).symm.trans ((Submodule.dualRestrict W).quotKerEquivOfSurjective ⋯)
Instances For
The natural isomorphism from the dual of a subspace W to W.dualLift.range.
Equations
- W.dualEquivDual = LinearEquiv.ofInjective W.dualLift ⋯
Instances For
Equations
- ⋯ = ⋯
The quotient by the dual is isomorphic to its dual annihilator.
Equations
- W.quotDualEquivAnnihilator = FiniteDimensional.LinearEquiv.quotEquivOfQuotEquiv (W.quotAnnihilatorEquiv.trans W.dualEquivDual)
Instances For
The quotient by a subspace is isomorphic to its dual annihilator.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Given a submodule, corestrict to the pairing on M ⧸ W by
simultaneously restricting to W.dualAnnihilator.
See Subspace.dualCopairing_nondegenerate.
Equations
- W.dualCopairing = (W.liftQ ((Module.dualPairing R M).domRestrict W.dualAnnihilator).flip ⋯).flip
Instances For
Equations
- W.instFunLikeSubtypeDualMemDualAnnihilator = { coe := fun (φ : ↥W.dualAnnihilator) => ⇑↑φ, coe_injective' := ⋯ }
Given a submodule, restrict to the pairing on W by
simultaneously corestricting to Module.Dual R M ⧸ W.dualAnnihilator.
This is Submodule.dualRestrict factored through the quotient by its kernel (which
is W.dualAnnihilator by definition).
See Subspace.dualPairing_nondegenerate.
Equations
- W.dualPairing = W.dualAnnihilator.liftQ W.dualRestrict ⋯
Instances For
That $\operatorname{im}(q^* : (V/W)^* \to V^*) = \operatorname{ann}(W)$.
Equivalence $(M/W)^* \cong \operatorname{ann}(W)$. That is, there is a one-to-one
correspondence between the dual of M ⧸ W and those elements of the dual of M that
vanish on W.
The inverse of this is Submodule.dualCopairing.
Equations
- W.dualQuotEquivDualAnnihilator = LinearEquiv.ofLinear (LinearMap.codRestrict W.dualAnnihilator W.mkQ.dualMap ⋯) W.dualCopairing ⋯ ⋯
Instances For
The pairing between a submodule W of a dual module Dual R M and the quotient of
M by the coannihilator of W, which is always nondegenerate.
Equations
- W.quotDualCoannihilatorToDual = W.dualCoannihilator.liftQ W.subtype.flip ⋯
Instances For
For vector spaces, f.dualMap is surjective if and only if f is injective
For vector spaces, dual annihilators carry direct sum decompositions to direct sum decompositions.
For finite-dimensional vector spaces, one can distribute duals over quotients by identifying
W.dualLift.range with W. Note that this depends on a choice of splitting of V₁.
Equations
- W.dualQuotDistrib = (Submodule.dualQuotEquivDualAnnihilator W).trans W.quotDualEquivAnnihilator.symm
Instances For
f.dualMap is injective if and only if f is surjective
f.dualMap is bijective if and only if f is
For any vector space, dualAnnihilator and dualCoannihilator gives an antitone order
isomorphism between the finite-codimensional subspaces in the vector space and the
finite-dimensional subspaces in its dual.
Equations
- One or more equations did not get rendered due to their size.
Instances For
For any finite-dimensional vector space, dualAnnihilator and dualCoannihilator give
an antitone order isomorphism between the subspaces in the vector space and the subspaces
in its dual.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The canonical linear map from Dual M ⊗ Dual N to Dual (M ⊗ N),
sending f ⊗ g to the composition of TensorProduct.map f g with
the natural isomorphism R ⊗ R ≃ R.
Equations
- TensorProduct.dualDistrib R M N = (↑(TensorProduct.lid R R)).compRight ∘ₗ TensorProduct.homTensorHomMap R M N R R
Instances For
Heterobasic version of TensorProduct.dualDistrib
Equations
- TensorProduct.AlgebraTensorModule.dualDistrib R A M N = (Algebra.TensorProduct.rid R A A).toLinearMap.compRight ∘ₗ TensorProduct.AlgebraTensorModule.homTensorHomMap R A A M N A R
Instances For
An inverse to TensorProduct.dualDistrib given bases.
Equations
- One or more equations did not get rendered due to their size.
Instances For
A linear equivalence between Dual M ⊗ Dual N and Dual (M ⊗ N) given bases for M and N.
It sends f ⊗ g to the composition of TensorProduct.map f g with the natural
isomorphism R ⊗ R ≃ R.
Equations
Instances For
A linear equivalence between Dual M ⊗ Dual N and Dual (M ⊗ N) when M and N are finite free
modules. It sends f ⊗ g to the composition of TensorProduct.map f g with the natural
isomorphism R ⊗ R ≃ R.