Perfect pairings #
This file defines perfect pairings of modules.
A perfect pairing of two (left) modules may be defined either as:
- A bilinear map
M × N → Rsuch that the induced mapsM → Dual R NandN → Dual R Mare both bijective. It follows from this that bothMandNare reflexive modules. - A linear equivalence
N ≃ Dual R Mfor whichMis reflexive. (It then follows thatNis reflexive.)
In this file we provide a definition IsPerfPair corresponding to 1 above, together with logic
to connect 1 and 2.
For a ring R and two modules M and N, a perfect pairing is a bilinear map M × N → R
that is bijective in both arguments.
- bijective_left : Function.Bijective ⇑p
- bijective_right : Function.Bijective ⇑p.flip
Instances
Given a perfect pairing between Mand N, we may interchange the roles of M and N.
Given a perfect pairing between Mand N, we may interchange the roles of M and N.
Turn a perfect pairing between M and N into an isomorphism between M and the dual of N.
Equations
- p.toPerfPair = LinearEquiv.ofBijective { toFun := p.1.toFun, map_add' := ⋯, map_smul' := ⋯ } ⋯
Instances For
A reflexive module has a perfect pairing with its dual.
A reflexive module has a perfect pairing with its dual.
If the coefficients are a field, and one of the spaces is finite-dimensional, it is sufficient to check only injectivity instead of bijectivity of the bilinear pairing.
If the coefficients are a field, and one of the spaces is finite-dimensional, it is sufficient to check only injectivity instead of bijectivity of the bilinear pairing.
A perfect pairing of two (left) modules over a commutative ring.
- bijective_left : Function.Bijective ⇑self.toLinearMap
- bijective_right : Function.Bijective ⇑self.flip
Instances For
Alias of PerfectPairing.toLinearMap.
The underlying bilinear map of a perfect pairing.
Equations
Instances For
Alias of PerfectPairing.bijective_left.
Alias of PerfectPairing.bijective_right.
If the coefficients are a field, and one of the spaces is finite-dimensional, it is sufficient to check only injectivity instead of bijectivity of the bilinear form.
Equations
- PerfectPairing.mkOfInjective B h h' = { toLinearMap := B, bijective_left := ⋯, bijective_right := ⋯ }
Instances For
If the coefficients are a field, and one of the spaces is finite-dimensional, it is sufficient to check only injectivity instead of bijectivity of the bilinear form.
Equations
- PerfectPairing.mkOfInjective' B h h' = { toLinearMap := B, bijective_left := ⋯, bijective_right := ⋯ }
Instances For
Equations
- PerfectPairing.instFunLike = { coe := fun (f : PerfectPairing R M N) => ⇑f.toLinearMap, coe_injective' := ⋯ }
Alias of PerfectPairing.toLinearMap_apply.
Given a perfect pairing between M and N, we may interchange the roles of M and N.
Instances For
The linear equivalence from M to Dual R N induced by a perfect pairing.
Equations
Instances For
The linear equivalence from N to Dual R M induced by a perfect pairing.
Equations
- p.toDualRight = p.flip.toDualLeft
Instances For
Equations
- One or more equations did not get rendered due to their size.
Given a perfect pairing p between M and N, we say a pair of submodules U in M and
V in N are perfectly complementary w.r.t. p if their dual annihilators are complementary,
using p to identify M and N with dual spaces.
- isCompl_left : IsCompl U (Submodule.map p.toPerfPair.symm V.dualAnnihilator)
- isCompl_right : IsCompl V (Submodule.map p.flip.toPerfPair.symm U.dualAnnihilator)
Instances For
A reflexive module has a perfect pairing with its dual.
Equations
- IsReflexive.toPerfectPairingDual = { toLinearMap := LinearMap.id, bijective_left := ⋯, bijective_right := ⋯ }
Instances For
For a reflexive module M, an equivalence N ≃ₗ[R] Dual R M naturally yields an equivalence
M ≃ₗ[R] Dual R N. Such equivalences are known as perfect pairings.
Equations
- e.flip = (Module.evalEquiv R M).trans e.dualMap
Instances For
If N is in perfect pairing with M, then it is reflexive.
If M is reflexive then a linear equivalence N ≃ Dual R M is a perfect pairing.
Equations
- e.toPerfectPairing = { toLinearMap := ↑e, bijective_left := ⋯, bijective_right := ⋯ }
Instances For
A perfect pairing induces a perfect pairing between dual spaces.
Equations
- p.dual = (p.toDualRight.symm.trans (Module.evalEquiv R N)).toPerfectPairing