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.dual_quot_equiv_dualAnnihilatoris the equivalenceDual R (M ⧸ W) ≃ₗ[R] W.dualAnnihilator
- 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.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₁.
TODO #
Erdős-Kaplansky theorem about the dimension of a dual vector space in case of infinite dimension.
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.instInhabitedDual 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.flip LinearMap.id
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.flip (LinearMap.llcomp R M M' R)
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
- LinearMap.dualMap f = ↑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
- One or more equations did not get rendered due to their size.
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.
Equations
- Basis.toDual b = ↑(Basis.constr b ℕ) fun v => ↑(Basis.constr b ℕ) fun w => if w = v then 1 else 0
Instances For
h.toDual_flip v is the linear map sending w to h.toDual w v.
Equations
- Basis.toDualFlip b m = ↑(LinearMap.flip (Basis.toDual b)) m
Instances For
A vector space is linearly equivalent to its dual space.
Equations
- Basis.toDualEquiv b = LinearEquiv.ofBijective (Basis.toDual b) (_ : Function.Injective ↑(Basis.toDual b) ∧ Function.Surjective ↑(Basis.toDual b))
Instances For
Maps a basis for V to a basis for the dual space.
Equations
- Basis.dualBasis b = Basis.map b (Basis.toDualEquiv b)
Instances For
Equations
simp normal form version of total_dualBasis
- 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.
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.
Instances
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) (_ : Function.Bijective ↑(Module.Dual.eval R M))
Instances For
The dual of a reflexive module is reflexive.
The isomorphism Module.evalEquiv induces an order isomorphism on subspaces.
Equations
Instances For
Try using Set.to_finite 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
- Finite : ∀ (m : M), Set.Finite {i | ↑(ε i) m ≠ 0}
e and ε have characteristic properties of a basis and its dual
Instances For
The coefficients of v on the basis e
Equations
- One or more equations did not get rendered due to their size.
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 = Finsupp.sum l fun i a => a • e i
Instances For
For any m : M n, \sum_{p ∈ Q n} (ε p m) • e p = m
(h : dual_bases e ε).basis shows the family of vectors e forms a basis.
Equations
- One or more equations did not get rendered due to their size.
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
Instances For
The dualAnnihilator of a submodule W is the set of linear maps φ such
that φ w = 0 for all w ∈ W.
Equations
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
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
- One or more equations did not get rendered due to their size.
Instances For
The quotient by the dualAnnihilator of a subspace is isomorphic to the
dual of that subspace.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The natural isomorphism from the dual of a subspace W to W.dualLift.range.
Equations
Instances For
The quotient by the dual is isomorphic to its dual annihilator.
Equations
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
- One or more equations did not get rendered due to their size.
Instances For
Equations
- One or more equations did not get rendered due to their size.
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
Instances For
That $\operatorname{im}(q^* : (V/W)^* \to V^*) = \operatorname{ann}(W)$.
Equivalence $(M/W)^* \approx \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
- One or more equations did not get rendered due to their size.
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
Instances For
f.dualMap is injective if and only if f is surjective
f.dualMap is bijective if and only if f is
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 = LinearMap.comp (LinearMap.compRight ↑(TensorProduct.lid R R)) (TensorProduct.homTensorHomMap R M N R R)
Instances For
Heterobasic version of TensorProduct.dualDistrib
Equations
- One or more equations did not get rendered due to their size.
Instances For
An inverse to dual_tensor_dual_map 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
- 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) 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.