Zulip Chat Archive
Stream: Is there code for X?
Topic: weak version of PerfectPairing for infinite rank
Scott Carnahan (Feb 08 2024 at 22:52):
Do we have a name for a bilinear map that has trivial left and right kernels? E.g.,
import Mathlib.LinearAlgebra.Dual
open Function Module
variable (R M N : Type*) [CommRing R] [AddCommGroup M] [Module R M] [AddCommGroup N] [Module R N]
/-- A quasi-perfect pairing of two (left) modules over a commutative ring. -/
structure QuasiPerfectPairing :=
toLin : M →ₗ[R] N →ₗ[R] R
injectiveLeft : Injective toLin
injectiveRight : Injective toLin.flip
Moritz Doll (Feb 08 2024 at 23:13):
Scott Carnahan (Feb 09 2024 at 03:49):
Thank you, that is a perfect answer to the question that I asked. Your answer made me realize that I actually want an additional saturation condition, namely that the left and right cokernels are R
-torsion-free. (sorry, I don't know how to spell this: torsion R (cokernel toLin) = ⊥
maybe?). Basically, I am looking for something that specializes to a perfect pairing in the finite rank case.
Oliver Nash (Feb 09 2024 at 11:27):
This might be what you want:
import Mathlib.LinearAlgebra.Dual
import Mathlib.Algebra.Module.Torsion
open Function Module
variable (R M N : Type*) [CommRing R] [AddCommGroup M] [Module R M] [AddCommGroup N] [Module R N]
/-- A quasi-perfect pairing of two (left) modules over a commutative ring. -/
structure QuasiPerfectPairing :=
toLin : M →ₗ[R] N →ₗ[R] R
injectiveLeft : Injective toLin
injectiveRight : Injective toLin.flip
open Submodule
variable (P : QuasiPerfectPairing R M N)
#check torsion R (Dual R N ⧸ LinearMap.range P.toLin) = ⊥
#check torsion R (Dual R M ⧸ LinearMap.range P.toLin.flip) = ⊥
-- Also bear in mind:
#check Submodule.noZeroSMulDivisors_iff_torsion_eq_bot
Scott Carnahan (Feb 09 2024 at 15:49):
Thank you! I think this is what I want:
structure QuasiPerfectPairing :=
toLin : M →ₗ[R] N →ₗ[R] R
injectiveLeft : Injective toLin
injectiveRight : Injective toLin.flip
saturatedLeft : NoZeroSMulDivisors R (Dual R N ⧸ LinearMap.range toLin)
saturatedRight : NoZeroSMulDivisors R (Dual R M ⧸ LinearMap.range toLin.flip)
I'll see if I can prove anything about it.
Last updated: May 02 2025 at 03:31 UTC