Documentation

Mathlib.Algebra.Module.CharacterModule

Character module of a module #

For commutative ring R and an R-module M and an injective module D, its character module M⋆ is defined to be R-linear maps M ⟶ D.

M⋆ also has an R-module structure given by (r • f) m = f (r • m).

Main results #

def CharacterModule (A : Type uA) [AddCommGroup A] :
Type uA

The character module of an abelian group A in the unit rational circle is A⋆ := Hom_ℤ(A, ℚ ⧸ ℤ).

Equations
Instances For
    theorem CharacterModule.ext (A : Type uA) [AddCommGroup A] {c : CharacterModule A} {c' : CharacterModule A} (h : ∀ (x : A), c x = c' x) :
    c = c'
    Equations
    • One or more equations did not get rendered due to their size.
    @[simp]
    theorem CharacterModule.smul_apply {R : Type uR} [CommRing R] {A : Type uA} [AddCommGroup A] [Module R A] (c : CharacterModule A) (r : R) (a : A) :
    (r c) a = c (r a)
    def CharacterModule.dual {R : Type uR} [CommRing R] {A : Type uA} [AddCommGroup A] {B : Type uB} [AddCommGroup B] [Module R A] [Module R B] (f : A →ₗ[R] B) :

    Given an abelian group homomorphism f : A → B, f⋆(L) := L ∘ f defines a linear map from B⋆ to A⋆.

    Equations
    Instances For
      def CharacterModule.congr {R : Type uR} [CommRing R] {A : Type uA} [AddCommGroup A] {B : Type uB} [AddCommGroup B] [Module R A] [Module R B] (e : A ≃ₗ[R] B) :

      Two isomorphic modules have isomorphic character modules.

      Equations
      Instances For
        @[simp]
        theorem CharacterModule.uncurry_apply {R : Type uR} [CommRing R] {A : Type uA} [AddCommGroup A] {B : Type uB} [AddCommGroup B] [Module R A] [Module R B] (c : A →ₗ[R] CharacterModule B) :
        CharacterModule.uncurry c = TensorProduct.liftAddHom (LinearMap.toAddMonoidHom c)
        noncomputable def CharacterModule.uncurry {R : Type uR} [CommRing R] {A : Type uA} [AddCommGroup A] {B : Type uB} [AddCommGroup B] [Module R A] [Module R B] :

        Any linear map L : A → B⋆ induces a character in (A ⊗ B)⋆ by a ⊗ b ↦ L a b.

        Equations
        • One or more equations did not get rendered due to their size.
        Instances For
          @[simp]
          theorem CharacterModule.curry_apply_apply {R : Type uR} [CommRing R] {A : Type uA} [AddCommGroup A] {B : Type uB} [AddCommGroup B] [Module R A] [Module R B] (c : CharacterModule (TensorProduct R A B)) :
          ∀ (x : A), (CharacterModule.curry c) x = AddMonoidHom.comp c ((TensorProduct.mk R A B) x)
          noncomputable def CharacterModule.curry {R : Type uR} [CommRing R] {A : Type uA} [AddCommGroup A] {B : Type uB} [AddCommGroup B] [Module R A] [Module R B] :

          Any character c in (A ⊗ B)⋆ induces a linear map A → B⋆ by a ↦ b ↦ c (a ⊗ b).

          Equations
          • One or more equations did not get rendered due to their size.
          Instances For
            @[simp]
            theorem CharacterModule.homEquiv_apply_apply {R : Type uR} [CommRing R] {A : Type uA} [AddCommGroup A] {B : Type uB} [AddCommGroup B] [Module R A] [Module R B] (c : A →ₗ[R] CharacterModule B) (x : AddCon.Quotient (addConGen (TensorProduct.Eqv R A B))) :
            (CharacterModule.homEquiv c) x = AddCon.liftOn x (FreeAddMonoid.lift fun (mn : A × B) => ((LinearMap.toAddMonoidHom c) mn.1) mn.2)
            @[simp]
            theorem CharacterModule.homEquiv_symm_apply_apply_apply {R : Type uR} [CommRing R] {A : Type uA} [AddCommGroup A] {B : Type uB} [AddCommGroup B] [Module R A] [Module R B] (a : CharacterModule (TensorProduct R A B)) :
            ∀ (x : A) (a_1 : B), (((LinearEquiv.symm CharacterModule.homEquiv) a) x) a_1 = a (x ⊗ₜ[R] a_1)
            noncomputable def CharacterModule.homEquiv {R : Type uR} [CommRing R] {A : Type uA} [AddCommGroup A] {B : Type uB} [AddCommGroup B] [Module R A] [Module R B] :

            Linear maps into a character module are exactly characters of the tensor product.

            Equations
            Instances For
              theorem CharacterModule.dual_rTensor_conj_homEquiv {R : Type uR} [CommRing R] {A : Type uA} [AddCommGroup A] (A' : Type u_1) [AddCommGroup A'] {B : Type uB} [AddCommGroup B] [Module R A] [Module R A'] [Module R B] (f : A →ₗ[R] A') :
              (LinearEquiv.symm CharacterModule.homEquiv) ∘ₗ CharacterModule.dual (LinearMap.rTensor B f) ∘ₗ CharacterModule.homEquiv = LinearMap.lcomp R (CharacterModule B) f
              @[inline, reducible]

              ℤ⋆, the character module of in the unit rational circle.

              Equations
              Instances For
                @[inline, reducible]

                Given n : ℕ, the map m ↦ m / n.

                Equations
                Instances For

                  The -submodule spanned by a single element a is isomorphic to the quotient of by the ideal generated by the order of a.

                  Equations
                  • One or more equations did not get rendered due to their size.
                  Instances For
                    noncomputable def CharacterModule.ofSpanSingleton {A : Type uA} [AddCommGroup A] (a : A) :

                    For an abelian group A and an element a ∈ A, there is a character c : ℤ ∙ a → ℚ ⧸ ℤ given by m • a ↦ m / n where n is the smallest positive integer such that n • a = 0 and when such n does not exist, c is defined by m • a ↦ m / 2.

                    Equations
                    • One or more equations did not get rendered due to their size.
                    Instances For
                      theorem CharacterModule.eq_zero_of_ofSpanSingleton_apply_self {A : Type uA} [AddCommGroup A] (a : A) (h : (CharacterModule.ofSpanSingleton a) { val := a, property := } = 0) :
                      a = 0
                      theorem CharacterModule.exists_character_apply_ne_zero_of_ne_zero {A : Type uA} [AddCommGroup A] {a : A} (ne_zero : a 0) :
                      ∃ (c : CharacterModule A), c a 0
                      theorem CharacterModule.eq_zero_of_character_apply {A : Type uA} [AddCommGroup A] {a : A} (h : ∀ (c : CharacterModule A), c a = 0) :
                      a = 0