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
    Equations
    theorem CharacterModule.ext (A : Type uA) [AddCommGroup A] {c c' : CharacterModule A} (h : ∀ (x : A), c x = c' x) :
    c = c'
    @[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
      @[simp]
      theorem CharacterModule.dual_apply {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) (L : CharacterModule B) :
      (CharacterModule.dual f) L = AddMonoidHom.comp L f.toAddMonoidHom
      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
        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
        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 c.toAddMonoidHom
          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.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.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
              @[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✝ : B) :
              ((CharacterModule.homEquiv.symm a) x✝) a✝ = a (x✝ ⊗ₜ[R] a✝)
              @[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 : (addConGen (TensorProduct.Eqv R A B)).Quotient) :
              (CharacterModule.homEquiv c) x = AddCon.liftOn x (FreeAddMonoid.lift fun (mn : A × B) => (c.toAddMonoidHom mn.1) mn.2)
              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') :
              CharacterModule.homEquiv.symm ∘ₗ CharacterModule.dual (LinearMap.rTensor B f) ∘ₗ CharacterModule.homEquiv = LinearMap.lcomp R (CharacterModule B) f
              @[reducible, inline]

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

              Equations
              Instances For
                @[reducible, inline]

                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
                    @[simp]
                    theorem CharacterModule.intSpanEquivQuotAddOrderOf_symm_apply_coe {A : Type uA} [AddCommGroup A] (a : A) (a✝ : Ideal.span {(addOrderOf a)}) :
                    ((CharacterModule.intSpanEquivQuotAddOrderOf a).symm a✝) = ((LinearMap.toSpanSingleton A a).quotKerEquivRange (((LinearMap.ker (LinearMap.toSpanSingleton A a)).quotEquivOfEq (Ideal.span {(addOrderOf a)}) ).symm a✝))
                    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.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