Documentation

TauCeti.LinearAlgebra.BilinearMap.NumericalQuotient.Basic

Numerical quotients of a bilinear map #

For a possibly nonsymmetric bilinear map b : L →ₗ[R] M →ₗ[R] P, its left radical and right radical need not agree—indeed, its two arguments need not even have the same type. This file defines the two radicals separately, quotients each argument by the appropriate radical, and descends b to a nondegenerate pairing between the resulting quotients. An ordinary biadditive pairing of additive groups is reinterpreted over by TauCeti.biadditiveToIntBilinear.

The intermediate pairings with only one argument quotiented are also provided. Quotienting the left argument makes the pairing left-separating, while quotienting the right argument makes it right-separating; no assertion is made about the other side until both quotients are taken.

Main definitions #

Main results #

The quotient construction uses Mathlib's asymmetric LinearMap.liftQ₂. The terminology and the warning that the two radicals remain distinct follow Dancso–Licata, Koszul algebras and flow lattices, Section 3.1, and the Grothendieck-groups, Cartan-maps, and Euler-forms roadmap, Layer 7.

def TauCeti.biadditiveToIntBilinear {A : Type u_2} {B : Type u_3} {D : Type u_4} [AddCommGroup A] [AddCommGroup B] [AddCommGroup D] (b : A →+ B →+ D) :

A biadditive pairing of additive groups, reinterpreted as a bilinear map over .

This is the bridge from pairings such as an Euler pairing, naturally constructed as A →+ B →+ D, to the bilinear numerical-quotient API in this file.

Equations
Instances For
    @[simp]
    theorem TauCeti.biadditiveToIntBilinear_apply {A : Type u_2} {B : Type u_3} {D : Type u_4} [AddCommGroup A] [AddCommGroup B] [AddCommGroup D] (b : A →+ B →+ D) (a : A) (x : B) :
    ((biadditiveToIntBilinear b) a) x = (b a) x

    Reinterpreting a biadditive pairing over does not change its values.

    def TauCeti.leftRadical {R : Type u_1} [CommRing R] {L : Type u₁} {M : Type u₂} {P : Type u₃} [AddCommGroup L] [Module R L] [AddCommGroup M] [Module R M] [AddCommGroup P] [Module R P] (b : L →ₗ[R] M →ₗ[R] P) :

    The left radical of a bilinear map: the elements in the first argument which pair to zero with every element of the second argument.

    Equations
    Instances For
      def TauCeti.rightRadical {R : Type u_1} [CommRing R] {L : Type u₁} {M : Type u₂} {P : Type u₃} [AddCommGroup L] [Module R L] [AddCommGroup M] [Module R M] [AddCommGroup P] [Module R P] (b : L →ₗ[R] M →ₗ[R] P) :

      The right radical of a bilinear map: the elements in the second argument which pair to zero with every element of the first argument.

      Equations
      Instances For
        @[simp]
        theorem TauCeti.mem_leftRadical_iff {R : Type u_1} [CommRing R] {L : Type u₁} {M : Type u₂} {P : Type u₃} [AddCommGroup L] [Module R L] [AddCommGroup M] [Module R M] [AddCommGroup P] [Module R P] (b : L →ₗ[R] M →ₗ[R] P) (x : L) :
        x leftRadical b ∀ (y : M), (b x) y = 0

        Membership in the left radical means pairing to zero against every second argument.

        @[simp]
        theorem TauCeti.mem_rightRadical_iff {R : Type u_1} [CommRing R] {L : Type u₁} {M : Type u₂} {P : Type u₃} [AddCommGroup L] [Module R L] [AddCommGroup M] [Module R M] [AddCommGroup P] [Module R P] (b : L →ₗ[R] M →ₗ[R] P) (y : M) :
        y rightRadical b ∀ (x : L), (b x) y = 0

        Membership in the right radical means pairing to zero against every first argument.

        theorem TauCeti.separatingLeft_iff_leftRadical_eq_bot {R : Type u_1} [CommRing R] {L : Type u₁} {M : Type u₂} {P : Type u₃} [AddCommGroup L] [Module R L] [AddCommGroup M] [Module R M] [AddCommGroup P] [Module R P] (b : L →ₗ[R] M →ₗ[R] P) :

        A bilinear map is left-separating exactly when its left radical is trivial.

        theorem TauCeti.separatingRight_iff_rightRadical_eq_bot {R : Type u_1} [CommRing R] {L : Type u₁} {M : Type u₂} {P : Type u₃} [AddCommGroup L] [Module R L] [AddCommGroup M] [Module R M] [AddCommGroup P] [Module R P] (b : L →ₗ[R] M →ₗ[R] P) :

        A bilinear map is right-separating exactly when its right radical is trivial.

        @[reducible, inline]
        abbrev TauCeti.LeftNumericalQuotient {R : Type u_1} [CommRing R] {L : Type u₁} {M : Type u₂} {P : Type u₃} [AddCommGroup L] [Module R L] [AddCommGroup M] [Module R M] [AddCommGroup P] [Module R P] (b : L →ₗ[R] M →ₗ[R] P) :
        Type u₁

        The quotient of the first argument by the left radical.

        Equations
        Instances For
          @[reducible, inline]
          abbrev TauCeti.RightNumericalQuotient {R : Type u_1} [CommRing R] {L : Type u₁} {M : Type u₂} {P : Type u₃} [AddCommGroup L] [Module R L] [AddCommGroup M] [Module R M] [AddCommGroup P] [Module R P] (b : L →ₗ[R] M →ₗ[R] P) :
          Type u₂

          The quotient of the second argument by the right radical.

          Equations
          Instances For
            def TauCeti.leftNumericalQuotientMk {R : Type u_1} [CommRing R] {L : Type u₁} {M : Type u₂} {P : Type u₃} [AddCommGroup L] [Module R L] [AddCommGroup M] [Module R M] [AddCommGroup P] [Module R P] (b : L →ₗ[R] M →ₗ[R] P) :

            The quotient map from the first argument to its left numerical quotient.

            Equations
            Instances For
              def TauCeti.rightNumericalQuotientMk {R : Type u_1} [CommRing R] {L : Type u₁} {M : Type u₂} {P : Type u₃} [AddCommGroup L] [Module R L] [AddCommGroup M] [Module R M] [AddCommGroup P] [Module R P] (b : L →ₗ[R] M →ₗ[R] P) :

              The quotient map from the second argument to its right numerical quotient.

              Equations
              Instances For
                theorem TauCeti.leftNumericalQuotientMk_apply {R : Type u_1} [CommRing R] {L : Type u₁} {M : Type u₂} {P : Type u₃} [AddCommGroup L] [Module R L] [AddCommGroup M] [Module R M] [AddCommGroup P] [Module R P] (b : L →ₗ[R] M →ₗ[R] P) (x : L) :

                The left numerical quotient map sends an element to its quotient class.

                theorem TauCeti.rightNumericalQuotientMk_apply {R : Type u_1} [CommRing R] {L : Type u₁} {M : Type u₂} {P : Type u₃} [AddCommGroup L] [Module R L] [AddCommGroup M] [Module R M] [AddCommGroup P] [Module R P] (b : L →ₗ[R] M →ₗ[R] P) (y : M) :

                The right numerical quotient map sends an element to its quotient class.

                @[simp]
                theorem TauCeti.ker_leftNumericalQuotientMk {R : Type u_1} [CommRing R] {L : Type u₁} {M : Type u₂} {P : Type u₃} [AddCommGroup L] [Module R L] [AddCommGroup M] [Module R M] [AddCommGroup P] [Module R P] (b : L →ₗ[R] M →ₗ[R] P) :

                The kernel of the left numerical quotient map is the left radical.

                @[simp]
                theorem TauCeti.ker_rightNumericalQuotientMk {R : Type u_1} [CommRing R] {L : Type u₁} {M : Type u₂} {P : Type u₃} [AddCommGroup L] [Module R L] [AddCommGroup M] [Module R M] [AddCommGroup P] [Module R P] (b : L →ₗ[R] M →ₗ[R] P) :

                The kernel of the right numerical quotient map is the right radical.

                theorem TauCeti.leftNumericalQuotientMk_surjective {R : Type u_1} [CommRing R] {L : Type u₁} {M : Type u₂} {P : Type u₃} [AddCommGroup L] [Module R L] [AddCommGroup M] [Module R M] [AddCommGroup P] [Module R P] (b : L →ₗ[R] M →ₗ[R] P) :

                The left numerical quotient map is surjective.

                theorem TauCeti.rightNumericalQuotientMk_surjective {R : Type u_1} [CommRing R] {L : Type u₁} {M : Type u₂} {P : Type u₃} [AddCommGroup L] [Module R L] [AddCommGroup M] [Module R M] [AddCommGroup P] [Module R P] (b : L →ₗ[R] M →ₗ[R] P) :

                The right numerical quotient map is surjective.

                @[simp]
                theorem TauCeti.leftNumericalQuotientMk_eq_zero_iff {R : Type u_1} [CommRing R] {L : Type u₁} {M : Type u₂} {P : Type u₃} [AddCommGroup L] [Module R L] [AddCommGroup M] [Module R M] [AddCommGroup P] [Module R P] (b : L →ₗ[R] M →ₗ[R] P) (x : L) :

                A class in the left numerical quotient vanishes exactly when its representative lies in the left radical.

                @[simp]
                theorem TauCeti.rightNumericalQuotientMk_eq_zero_iff {R : Type u_1} [CommRing R] {L : Type u₁} {M : Type u₂} {P : Type u₃} [AddCommGroup L] [Module R L] [AddCommGroup M] [Module R M] [AddCommGroup P] [Module R P] (b : L →ₗ[R] M →ₗ[R] P) (y : M) :

                A class in the right numerical quotient vanishes exactly when its representative lies in the right radical.

                @[simp]
                theorem TauCeti.leftNumericalQuotientMk_eq_iff {R : Type u_1} [CommRing R] {L : Type u₁} {M : Type u₂} {P : Type u₃} [AddCommGroup L] [Module R L] [AddCommGroup M] [Module R M] [AddCommGroup P] [Module R P] (b : L →ₗ[R] M →ₗ[R] P) (x x' : L) :

                Two elements have the same left numerical class exactly when their difference lies in the left radical.

                @[simp]
                theorem TauCeti.rightNumericalQuotientMk_eq_iff {R : Type u_1} [CommRing R] {L : Type u₁} {M : Type u₂} {P : Type u₃} [AddCommGroup L] [Module R L] [AddCommGroup M] [Module R M] [AddCommGroup P] [Module R P] (b : L →ₗ[R] M →ₗ[R] P) (y y' : M) :

                Two elements have the same right numerical class exactly when their difference lies in the right radical.

                def TauCeti.leftNumericalPairing {R : Type u_1} [CommRing R] {L : Type u₁} {M : Type u₂} {P : Type u₃} [AddCommGroup L] [Module R L] [AddCommGroup M] [Module R M] [AddCommGroup P] [Module R P] (b : L →ₗ[R] M →ₗ[R] P) :

                Quotienting only the first argument by the left radical gives a pairing on the left numerical quotient and the original second argument.

                Equations
                Instances For
                  def TauCeti.rightNumericalPairing {R : Type u_1} [CommRing R] {L : Type u₁} {M : Type u₂} {P : Type u₃} [AddCommGroup L] [Module R L] [AddCommGroup M] [Module R M] [AddCommGroup P] [Module R P] (b : L →ₗ[R] M →ₗ[R] P) :

                  Quotienting only the second argument by the right radical gives a pairing on the original first argument and the right numerical quotient.

                  Equations
                  Instances For
                    @[simp]
                    theorem TauCeti.leftNumericalPairing_mk {R : Type u_1} [CommRing R] {L : Type u₁} {M : Type u₂} {P : Type u₃} [AddCommGroup L] [Module R L] [AddCommGroup M] [Module R M] [AddCommGroup P] [Module R P] (b : L →ₗ[R] M →ₗ[R] P) (x : L) (y : M) :

                    The left quotient pairing is represented by the original pairing.

                    @[simp]
                    theorem TauCeti.rightNumericalPairing_mk {R : Type u_1} [CommRing R] {L : Type u₁} {M : Type u₂} {P : Type u₃} [AddCommGroup L] [Module R L] [AddCommGroup M] [Module R M] [AddCommGroup P] [Module R P] (b : L →ₗ[R] M →ₗ[R] P) (x : L) (y : M) :

                    The right quotient pairing is represented by the original pairing.

                    theorem TauCeti.leftNumericalPairing_separatingLeft {R : Type u_1} [CommRing R] {L : Type u₁} {M : Type u₂} {P : Type u₃} [AddCommGroup L] [Module R L] [AddCommGroup M] [Module R M] [AddCommGroup P] [Module R P] (b : L →ₗ[R] M →ₗ[R] P) :

                    Quotienting the first argument by the left radical makes the pairing left-separating.

                    theorem TauCeti.rightNumericalPairing_separatingRight {R : Type u_1} [CommRing R] {L : Type u₁} {M : Type u₂} {P : Type u₃} [AddCommGroup L] [Module R L] [AddCommGroup M] [Module R M] [AddCommGroup P] [Module R P] (b : L →ₗ[R] M →ₗ[R] P) :

                    Quotienting the second argument by the right radical makes the pairing right-separating.

                    def TauCeti.numericalPairing {R : Type u_1} [CommRing R] {L : Type u₁} {M : Type u₂} {P : Type u₃} [AddCommGroup L] [Module R L] [AddCommGroup M] [Module R M] [AddCommGroup P] [Module R P] (b : L →ₗ[R] M →ₗ[R] P) :

                    The pairing descended through both the left and right radicals.

                    Equations
                    Instances For
                      @[simp]
                      theorem TauCeti.numericalPairing_mk {R : Type u_1} [CommRing R] {L : Type u₁} {M : Type u₂} {P : Type u₃} [AddCommGroup L] [Module R L] [AddCommGroup M] [Module R M] [AddCommGroup P] [Module R P] (b : L →ₗ[R] M →ₗ[R] P) (x : L) (y : M) :

                      The numerical pairing is represented by the original pairing.

                      theorem TauCeti.numericalPairing_unique {R : Type u_1} [CommRing R] {L : Type u₁} {M : Type u₂} {P : Type u₃} [AddCommGroup L] [Module R L] [AddCommGroup M] [Module R M] [AddCommGroup P] [Module R P] (b : L →ₗ[R] M →ₗ[R] P) (c : LeftNumericalQuotient b →ₗ[R] RightNumericalQuotient b →ₗ[R] P) (hc : ∀ (x : L) (y : M), (c ((leftNumericalQuotientMk b) x)) ((rightNumericalQuotientMk b) y) = (b x) y) :

                      The numerical pairing is the unique bilinear map between the two quotients which agrees with the original pairing on representatives.

                      theorem TauCeti.numericalPairing_separatingLeft {R : Type u_1} [CommRing R] {L : Type u₁} {M : Type u₂} {P : Type u₃} [AddCommGroup L] [Module R L] [AddCommGroup M] [Module R M] [AddCommGroup P] [Module R P] (b : L →ₗ[R] M →ₗ[R] P) :

                      The numerical pairing has trivial left radical.

                      theorem TauCeti.numericalPairing_separatingRight {R : Type u_1} [CommRing R] {L : Type u₁} {M : Type u₂} {P : Type u₃} [AddCommGroup L] [Module R L] [AddCommGroup M] [Module R M] [AddCommGroup P] [Module R P] (b : L →ₗ[R] M →ₗ[R] P) :

                      The numerical pairing has trivial right radical.

                      theorem TauCeti.numericalPairing_nondegenerate {R : Type u_1} [CommRing R] {L : Type u₁} {M : Type u₂} {P : Type u₃} [AddCommGroup L] [Module R L] [AddCommGroup M] [Module R M] [AddCommGroup P] [Module R P] (b : L →ₗ[R] M →ₗ[R] P) :

                      Quotienting both arguments by their respective radicals produces a nondegenerate pairing.

                      @[simp]
                      theorem TauCeti.leftRadical_numericalPairing {R : Type u_1} [CommRing R] {L : Type u₁} {M : Type u₂} {P : Type u₃} [AddCommGroup L] [Module R L] [AddCommGroup M] [Module R M] [AddCommGroup P] [Module R P] (b : L →ₗ[R] M →ₗ[R] P) :

                      The left radical of the numerical pairing is trivial.

                      @[simp]
                      theorem TauCeti.rightRadical_numericalPairing {R : Type u_1} [CommRing R] {L : Type u₁} {M : Type u₂} {P : Type u₃} [AddCommGroup L] [Module R L] [AddCommGroup M] [Module R M] [AddCommGroup P] [Module R P] (b : L →ₗ[R] M →ₗ[R] P) :

                      The right radical of the numerical pairing is trivial.