Dual vector spaces #
THIS FILE IS SYNCHRONIZED WITH MATHLIB4. Any changes to this file require a corresponding PR to mathlib4.
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.dual_pairing 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.linear_map.dual_mapismodule.dual.transposeof a given linear map, for dot notation.linear_equiv.dual_mapis for the dual of an equivalence.
 - Bases:
basis.to_dualproduces the mapM →ₗ[R] dual R Massociated to a basis for anR-moduleM.basis.to_dual_equivis the equivalenceM ≃ₗ[R] dual R Massociated to a finite basis.basis.dual_basisis 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.dual_restrict Wis the transposedual R M →ₗ[R] dual R Wof the inclusion map.submodule.dual_annihilator Wis the kernel ofW.dual_restrict. That is, it is the submodule ofdual R Mwhose elements all annihilateW.submodule.dual_restrict_comap W'is the dual annihilator ofW' : submodule R (dual R M), pulled back alongmodule.dual.eval R M.submodule.dual_copairing Wis the canonical pairing betweenW.dual_annihilatorandM ⧸ W. It is nondegenerate for vector spaces (subspace.dual_copairing_nondegenerate).submodule.dual_pairing Wis the canonical pairing betweendual R M ⧸ W.dual_annihilatorandW. It is nondegenerate for vector spaces (subspace.dual_pairing_nondegenerate).
 - Vector spaces:
subspace.dual_lift Wis an arbitrary section (using choice) ofsubmodule.dual_restrict W.
 
Main results #
- Bases:
module.dual_basis.basisandmodule.dual_basis.coe_basis: ifeandεform a dual pair, theneis a basis.module.dual_basis.coe_dual_basis: ifeandεform a dual pair, thenεis a basis.
 - Annihilators:
module.dual_annihilator_gc R Mis the antitone Galois correspondence betweensubmodule.dual_annihilatorandsubmodule.dual_coannihilator.linear_map.ker_dual_map_eq_dual_annihilator_rangesays thatf.dual_map.ker = f.range.dual_annihilatorlinear_map.range_dual_map_eq_dual_annihilator_ker_of_subtype_range_surjectivesays thatf.dual_map.range = f.ker.dual_annihilator; this is specialized to vector spaces inlinear_map.range_dual_map_eq_dual_annihilator_ker.submodule.dual_quot_equiv_dual_annihilatoris the equivalencedual R (M ⧸ W) ≃ₗ[R] W.dual_annihilator
 - Vector spaces:
subspace.dual_annihilator_dual_coannihilator_eqsays that the double dual annihilator, pulled back groundmodule.dual.eval, is the original submodule.subspace.dual_annihilator_gcisays thatmodule.dual_annihilator_gc R Mis an antitone Galois coinsertion.subspace.quot_annihilator_equivis the equivalencedual K V ⧸ W.dual_annihilator ≃ₗ[K] dual K W.linear_map.dual_pairing_nondegeneratesays thatmodule.dual_pairingis nondegenerate.subspace.is_compl_dual_annihilatorsays that the dual annihilator carries complementary subspaces to complementary subspaces.
 - Finite-dimensional vector spaces:
module.eval_equivis the equivalenceV ≃ₗ[K] dual K (dual K V)module.map_eval_equivis the order isomorphism between subspaces ofVand subspaces ofdual K (dual K V).subspace.quot_dual_equiv_annihilator Wis the equivalence(dual K V ⧸ W.dual_lift.range) ≃ₗ[K] W.dual_annihilator, whereW.dual_lift.rangeis a copy ofdual K Winsidedual K V.subspace.quot_equiv_annihilator Wis the equivalence(V ⧸ W) ≃ₗ[K] W.dual_annihilatorsubspace.dual_quot_distrib Wis an equivalencedual K (V₁ ⧸ W) ≃ₗ[K] dual K V₁ ⧸ W.dual_lift.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)
 
The canonical pairing of a vector space and its algebraic dual.
Equations
Equations
Equations
Maps a module M to the dual of the dual of M. See module.erange_coe and
module.eval_equiv.
Equations
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 = (linear_map.llcomp R M M' R).flip
 
Taking duals distributes over products.
Equations
Given a linear map f : M₁ →ₗ[R] M₂, f.dual_map is the linear map between the dual of
M₂ and M₁ such that it maps the functional φ to φ ∘ f.
Equations
If a linear map is surjective, then its dual is injective.
The linear_equiv version of linear_map.dual_map.
The linear map from a vector space equipped with basis to its dual vector space, taking basis elements to corresponding dual basis elements.
h.to_dual_flip v is the linear map sending w to h.to_dual w v.
Equations
- b.to_dual_flip m = ⇑(b.to_dual.flip) m
 
A vector space is linearly equivalent to its dual space.
Equations
Maps a basis for V to a basis for the dual space.
Equations
- b.dual_basis = b.map b.to_dual_equiv
 
A module with a basis is linearly equivalent to the dual of its dual space.
Equations
- b.eval_equiv = linear_equiv.of_bijective (module.dual.eval R M) _
 
simp normal form version of total_dual_basis
A vector space is linearly equivalent to the dual of its dual space.
Equations
- module.eval_equiv K V = linear_equiv.of_bijective (module.dual.eval K V) _
 
The isomorphism module.eval_equiv induces an order isomorphism on subspaces.
Equations
- eval : ∀ (i j : ι), ⇑(ε i) (e j) = ite (i = j) 1 0
 - total : ∀ {m : M}, (∀ (i : ι), ⇑(ε i) m = 0) → m = 0
 - finite : (∀ (m : M), {i : ι | ⇑(ε i) m ≠ 0}.finite) . "use_finite_instance"
 
e and ε have characteristic properties of a basis and its dual
The coefficients of v on the basis e
linear combinations of elements of e.
This is a convenient abbreviation for finsupp.total _ M R e l
Equations
- module.dual_bases.lc e l = l.sum (λ (i : ι) (a : R), a • e i)
 
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.
The dual_restrict 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
The dual_annihilator of a submodule W is the set of linear maps φ such
that φ w = 0 for all w ∈ W.
Equations
That $\operatorname{ker}(\iota^* : V^* \to W^*) = \operatorname{ann}(W)$. This is the definition of the dual annihilator of the submodule $W$.
The dual_annihilator of a submodule of the dual space pulled back along the evaluation map
module.dual.eval.
Equations
See also subspace.dual_annihilator_inf_eq for vector subspaces.
See also subspace.dual_annihilator_infi_eq for vector subspaces when ι is finite.
submodule.dual_annihilator and submodule.dual_coannihilator form a Galois coinsertion.
Equations
- subspace.dual_annihilator_gci K V = {choice := λ (W : (submodule K (module.dual K V))ᵒᵈ) (h : W ≤ (⇑order_dual.to_dual ∘ submodule.dual_annihilator) ((submodule.dual_coannihilator ∘ ⇑order_dual.of_dual) W)), submodule.dual_coannihilator W, gc := _, u_l_le := _, choice_eq := _}
 
Given a subspace W of V and an element of its dual φ, dual_lift W φ is
an arbitrary extension of φ to an element of the dual of V.
That is, dual_lift W φ sends w ∈ W to φ x and x in a chosen complement of W to 0.
Equations
- W.dual_lift = let h : {x // is_compl W x} := classical.indefinite_description (λ (x : submodule K V), is_compl W x) _ in (linear_map.of_is_compl_prod _).comp (linear_map.inl K (module.dual K ↥W) (↥(h.val) →ₗ[K] K))
 
The quotient by the dual_annihilator of a subspace is isomorphic to the
dual of that subspace.
The natural isomorphism from the dual of a subspace W to W.dual_lift.range.
The quotient by the dual is isomorphic to its dual annihilator.
The quotient by a subspace is isomorphic to its dual annihilator.
Given a submodule, corestrict to the pairing on M ⧸ W by
simultaneously restricting to W.dual_annihilator.
See subspace.dual_copairing_nondegenerate.
Equations
- W.dual_copairing = (W.liftq ((module.dual_pairing R M).dom_restrict W.dual_annihilator).flip _).flip
 
Given a submodule, restrict to the pairing on W by
simultaneously corestricting to module.dual R M ⧸ W.dual_annihilator.
This is submodule.dual_restrict factored through the quotient by its kernel (which
is W.dual_annihilator by definition).
See subspace.dual_pairing_nondegenerate.
Equations
- W.dual_pairing = W.dual_annihilator.liftq W.dual_restrict _
 
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.dual_copairing.
Equations
For vector spaces, f.dual_map 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.dual_lift.range with W. Note that this depends on a choice of splitting of V₁.
f.dual_map is injective if and only if f is surjective
f.dual_map 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 tensor_product.map f g with
the natural isomorphism R ⊗ R ≃ R.
Equations
- tensor_product.dual_distrib R M N = ↑(tensor_product.lid R R).comp_right.comp (tensor_product.hom_tensor_hom_map R M N R R)
 
An inverse to dual_tensor_dual_map given bases.
Equations
- tensor_product.dual_distrib_inv_of_basis b c = finset.univ.sum (λ (i : ι), finset.univ.sum (λ (j : κ), (⇑((linear_map.ring_lmap_equiv_self R ℕ (tensor_product R (module.dual R M) (module.dual R N))).symm) (⇑(b.dual_basis) i ⊗ₜ[R] ⇑(c.dual_basis) j)).comp ((⇑linear_map.applyₗ (⇑c j)).comp ((⇑linear_map.applyₗ (⇑b i)).comp (tensor_product.lcurry R M N R)))))
 
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 tensor_product.map f g with the natural
isomorphism R ⊗ R ≃ R.
Equations
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 tensor_product.map f g with the natural
isomorphism R ⊗ R ≃ R.