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 c' : CharacterModule A} (h : ∀ (x : A), c x = c' x) :
      c = c'
      theorem CharacterModule.ext_iff {A : Type uA} [AddCommGroup A] {c c' : CharacterModule A} :
      c = c' ∀ (x : A), c x = c' x
      instance CharacterModule.instModule (R : Type uR) [CommRing R] (A : Type uA) [AddCommGroup A] [Module R A] :
      Equations
        @[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) :
            @[simp]
            theorem CharacterModule.dual_zero {R : Type uR} [CommRing R] {A : Type uA} [AddCommGroup A] {B : Type uB} [AddCommGroup B] [Module R A] [Module R B] :
            dual 0 = 0
            theorem CharacterModule.dual_comp {R : Type uR} [CommRing R] {A : Type uA} [AddCommGroup A] {B : Type uB} [AddCommGroup B] [Module R A] [Module R B] {C : Type u_2} [AddCommGroup C] [Module R C] (f : A →ₗ[R] B) (g : B →ₗ[R] C) :
            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
                    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
                      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) :
                        (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) :
                            ((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) :
                            (homEquiv c) x = AddCon.liftOn x (FreeAddMonoid.lift fun (mn : A × B) => (c.toAddMonoidHom mn.1) mn.2)
                            @[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
                                      Instances For

                                        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
                                          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
                                            theorem CharacterModule.surjective_of_dual_injective {R : Type uR} [CommRing R] {A : Type uA} [AddCommGroup A] {A' : Type u_1} [AddCommGroup A'] [Module R A] [Module R A'] (f : A →ₗ[R] A') (hf : Function.Injective (dual f)) :