Documentation

Mathlib.Algebra.Algebra.Hom

Homomorphisms of R-algebras #

This file defines bundled homomorphisms of R-algebras.

Main definitions #

Notation #

structure AlgHom (R : Type u) (A : Type v) (B : Type w) [CommSemiring R] [Semiring A] [Semiring B] [Algebra R A] [Algebra R B] extends A →+* B :
Type (max v w)

Defining the homomorphism in the category R-Alg, denoted A →ₐ[R] B.

Instances For

    Defining the homomorphism in the category R-Alg, denoted A →ₐ[R] B.

    Equations
    Instances For

      Defining the homomorphism in the category R-Alg, denoted A →ₐ[R] B.

      Equations
      • One or more equations did not get rendered due to their size.
      Instances For
        class AlgHomClass (F : Type u_1) (R : outParam (Type u_2)) (A : outParam (Type u_3)) (B : outParam (Type u_4)) [CommSemiring R] [Semiring A] [Semiring B] [Algebra R A] [Algebra R B] [FunLike F A B] extends RingHomClass F A B :

        AlgHomClass F R A B asserts F is a type of bundled algebra homomorphisms from A to B.

        Instances
          @[instance 100]
          instance AlgHomClass.linearMapClass {R : Type u_1} {A : Type u_2} {B : Type u_3} {F : Type u_4} [CommSemiring R] [Semiring A] [Semiring B] [Algebra R A] [Algebra R B] [FunLike F A B] [AlgHomClass F R A B] :
          def AlgHom.ofClass {R : Type u_1} {A : Type u_2} {B : Type u_3} [CommSemiring R] [Semiring A] [Semiring B] [Algebra R A] [Algebra R B] {F : Type u_5} [FunLike F A B] [AlgHomClass F R A B] (f : F) :

          Turn an element of a type F satisfying AlgHomClass F α β into an actual AlgHom. This is declared as the default coercion from F to α →+* β.

          Equations
          • ↑f = { toFun := ⇑f, map_one' := ⋯, map_mul' := ⋯, map_zero' := ⋯, map_add' := ⋯, commutes' := ⋯ }
          Instances For
            @[deprecated AlgHom.ofClass (since := "2026-09-07")]
            def AlgHomClass.toAlgHom {R : Type u_1} {A : Type u_2} {B : Type u_3} [CommSemiring R] [Semiring A] [Semiring B] [Algebra R A] [Algebra R B] {F : Type u_5} [FunLike F A B] [AlgHomClass F R A B] (f : F) :

            Alias of AlgHom.ofClass.


            Turn an element of a type F satisfying AlgHomClass F α β into an actual AlgHom. This is declared as the default coercion from F to α →+* β.

            Equations
            Instances For
              @[instance_reducible, macro_inline]
              instance AlgHom.funLike {R : Type u} {A : Type v} {B : Type w} [CommSemiring R] [Semiring A] [Semiring B] [Algebra R A] [Algebra R B] :
              FunLike (A →ₐ[R] B) A B
              Equations
              instance AlgHom.algHomClass {R : Type u} {A : Type v} {B : Type w} [CommSemiring R] [Semiring A] [Semiring B] [Algebra R A] [Algebra R B] :
              AlgHomClass (A →ₐ[R] B) R A B
              @[simp]
              theorem AlgHomClass.linearMapOfClass_ofClass {R : Type u_1} {A : Type u_2} {B : Type u_3} {F : Type u_4} [CommSemiring R] [Semiring A] [Semiring B] [Algebra R A] [Algebra R B] [FunLike F A B] [AlgHomClass F R A B] (f : F) :
              ↑↑f = ↑f
              @[deprecated AlgHomClass.linearMapOfClass_ofClass (since := "2026-09-08")]
              theorem AlgHomClass.toLinearMap_toAlgHom {R : Type u_1} {A : Type u_2} {B : Type u_3} {F : Type u_4} [CommSemiring R] [Semiring A] [Semiring B] [Algebra R A] [Algebra R B] [FunLike F A B] [AlgHomClass F R A B] (f : F) :
              ↑↑f = ↑f

              Alias of AlgHomClass.linearMapOfClass_ofClass.

              def AlgHom.Simps.apply {R : Type u} {α : Type v} {β : Type w} [CommSemiring R] [Semiring α] [Semiring β] [Algebra R α] [Algebra R β] (f : α →ₐ[R] β) :
              α → β

              See Note [custom simps projection]

              Equations
              Instances For
                @[simp]
                theorem AlgHom.coe_ofClass {R : Type u} {A : Type v} {B : Type w} [CommSemiring R] [Semiring A] [Semiring B] [Algebra R A] [Algebra R B] {F : Type u_1} [FunLike F A B] [AlgHomClass F R A B] (f : F) :
                ⇑↑f = ⇑f
                @[deprecated AlgHom.coe_ofClass (since := "2026-09-08")]
                theorem AlgHom.coe_coe {R : Type u} {A : Type v} {B : Type w} [CommSemiring R] [Semiring A] [Semiring B] [Algebra R A] [Algebra R B] {F : Type u_1} [FunLike F A B] [AlgHomClass F R A B] (f : F) :
                ⇑↑f = ⇑f

                Alias of AlgHom.coe_ofClass.

                @[simp]
                theorem AlgHom.toFun_eq_coe {R : Type u} {A : Type v} {B : Type w} [CommSemiring R] [Semiring A] [Semiring B] [Algebra R A] [Algebra R B] (f : A →ₐ[R] B) :
                (↑↑f.toRingHom).toFun = ⇑f
                def AlgHom.toMonoidHom' {R : Type u} {A : Type v} {B : Type w} [CommSemiring R] [Semiring A] [Semiring B] [Algebra R A] [Algebra R B] (f : A →ₐ[R] B) :
                A →* B

                Turn an algebra homomorphism into the corresponding multiplicative monoid homomorphism.

                Equations
                • ↑f = ↑↑f
                Instances For
                  @[instance_reducible]
                  instance AlgHom.coeOutMonoidHom {R : Type u} {A : Type v} {B : Type w} [CommSemiring R] [Semiring A] [Semiring B] [Algebra R A] [Algebra R B] :
                  CoeOut (A →ₐ[R] B) (A →* B)
                  Equations
                  def AlgHom.toAddMonoidHom' {R : Type u} {A : Type v} {B : Type w} [CommSemiring R] [Semiring A] [Semiring B] [Algebra R A] [Algebra R B] (f : A →ₐ[R] B) :
                  A →+ B

                  Turn an algebra homomorphism into the corresponding additive monoid homomorphism.

                  Equations
                  • ↑f = ↑↑f
                  Instances For
                    @[instance_reducible]
                    instance AlgHom.coeOutAddMonoidHom {R : Type u} {A : Type v} {B : Type w} [CommSemiring R] [Semiring A] [Semiring B] [Algebra R A] [Algebra R B] :
                    CoeOut (A →ₐ[R] B) (A →+ B)
                    Equations
                    @[simp]
                    theorem AlgHom.coe_mk {R : Type u} {A : Type v} {B : Type w} [CommSemiring R] [Semiring A] [Semiring B] [Algebra R A] [Algebra R B] {f : A →+* B} (h : ∀ (r : R), (↑↑f).toFun ((algebraMap R A) r) = (algebraMap R B) r) :
                    ⇑{ toRingHom := f, commutes' := h } = ⇑f
                    theorem AlgHom.coe_mks {R : Type u} {A : Type v} {B : Type w} [CommSemiring R] [Semiring A] [Semiring B] [Algebra R A] [Algebra R B] {f : A → B} (h₁ : f 1 = 1) (h₂ : ∀ (x y : A), { toFun := f, map_one' := h₁ }.toFun (x * y) = { toFun := f, map_one' := h₁ }.toFun x * { toFun := f, map_one' := h₁ }.toFun y) (h₃ : (↑{ toFun := f, map_one' := h₁, map_mul' := h₂ }).toFun 0 = 0) (h₄ : ∀ (x y : A), (↑{ toFun := f, map_one' := h₁, map_mul' := h₂ }).toFun (x + y) = (↑{ toFun := f, map_one' := h₁, map_mul' := h₂ }).toFun x + (↑{ toFun := f, map_one' := h₁, map_mul' := h₂ }).toFun y) (h₅ : ∀ (r : R), (↑↑{ toFun := f, map_one' := h₁, map_mul' := h₂, map_zero' := h₃, map_add' := h₄ }).toFun ((algebraMap R A) r) = (algebraMap R B) r) :
                    ⇑{ toFun := f, map_one' := h₁, map_mul' := h₂, map_zero' := h₃, map_add' := h₄, commutes' := h₅ } = f
                    @[simp]
                    theorem AlgHom.toRingHom_mk {R : Type u} {A : Type v} {B : Type w} [CommSemiring R] [Semiring A] [Semiring B] [Algebra R A] [Algebra R B] {f : A →+* B} (h : ∀ (r : R), (↑↑f).toFun ((algebraMap R A) r) = (algebraMap R B) r) :
                    ↑{ toRingHom := f, commutes' := h } = f
                    @[deprecated AlgHom.toRingHom_mk (since := "2026-05-05")]
                    theorem AlgHom.coe_ringHom_mk {R : Type u} {A : Type v} {B : Type w} [CommSemiring R] [Semiring A] [Semiring B] [Algebra R A] [Algebra R B] {f : A →+* B} (h : ∀ (r : R), (↑↑f).toFun ((algebraMap R A) r) = (algebraMap R B) r) :
                    ↑{ toRingHom := f, commutes' := h } = f

                    Alias of AlgHom.toRingHom_mk.

                    @[simp]
                    theorem AlgHom.toRingHom_eq_coe {R : Type u} {A : Type v} {B : Type w} [CommSemiring R] [Semiring A] [Semiring B] [Algebra R A] [Algebra R B] (f : A →ₐ[R] B) :
                    f.toRingHom = ↑f
                    @[simp]
                    theorem AlgHom.coe_toRingHom {R : Type u} {A : Type v} {B : Type w} [CommSemiring R] [Semiring A] [Semiring B] [Algebra R A] [Algebra R B] (f : A →ₐ[R] B) :
                    ⇑↑f = ⇑f
                    @[simp]
                    theorem AlgHom.coe_toMonoidHom {R : Type u} {A : Type v} {B : Type w} [CommSemiring R] [Semiring A] [Semiring B] [Algebra R A] [Algebra R B] (f : A →ₐ[R] B) :
                    ⇑↑f = ⇑f
                    @[simp]
                    theorem AlgHom.coe_toAddMonoidHom {R : Type u} {A : Type v} {B : Type w} [CommSemiring R] [Semiring A] [Semiring B] [Algebra R A] [Algebra R B] (f : A →ₐ[R] B) :
                    ⇑↑f = ⇑f
                    @[simp]
                    theorem AlgHom.toRingHom_toMonoidHom {R : Type u} {A : Type v} {B : Type w} [CommSemiring R] [Semiring A] [Semiring B] [Algebra R A] [Algebra R B] (f : A →ₐ[R] B) :
                    ↑↑f = ↑f
                    @[simp]
                    theorem AlgHom.toRingHom_toAddMonoidHom {R : Type u} {A : Type v} {B : Type w} [CommSemiring R] [Semiring A] [Semiring B] [Algebra R A] [Algebra R B] (f : A →ₐ[R] B) :
                    ↑↑f = ↑f
                    theorem AlgHom.coe_fn_inj {R : Type u} {A : Type v} {B : Type w} [CommSemiring R] [Semiring A] [Semiring B] [Algebra R A] [Algebra R B] {φ₁ φ₂ : A →ₐ[R] B} :
                    ⇑φ₁ = ⇑φ₂ ↔ φ₁ = φ₂
                    @[deprecated AlgHom.toRingHom_injective (since := "2026-05-05")]

                    Alias of AlgHom.toRingHom_injective.

                    @[deprecated AlgHom.toMonoidHom_injective (since := "2026-09-15")]

                    Alias of AlgHom.toMonoidHom_injective.

                    @[deprecated AlgHom.toAddMonoidHom_injective (since := "2026-09-15")]

                    Alias of AlgHom.toAddMonoidHom_injective.

                    theorem AlgHom.congr_fun {R : Type u} {A : Type v} {B : Type w} [CommSemiring R] [Semiring A] [Semiring B] [Algebra R A] [Algebra R B] {φ₁ φ₂ : A →ₐ[R] B} (H : φ₁ = φ₂) (x : A) :
                    φ₁ x = φ₂ x
                    theorem AlgHom.congr_arg {R : Type u} {A : Type v} {B : Type w} [CommSemiring R] [Semiring A] [Semiring B] [Algebra R A] [Algebra R B] (φ : A →ₐ[R] B) {x y : A} (h : x = y) :
                    φ x = φ y
                    theorem AlgHom.ext {R : Type u} {A : Type v} {B : Type w} [CommSemiring R] [Semiring A] [Semiring B] [Algebra R A] [Algebra R B] {φ₁ φ₂ : A →ₐ[R] B} (H : ∀ (x : A), φ₁ x = φ₂ x) :
                    φ₁ = φ₂
                    theorem AlgHom.ext_iff {R : Type u} {A : Type v} {B : Type w} [CommSemiring R] [Semiring A] [Semiring B] [Algebra R A] [Algebra R B] {φ₁ φ₂ : A →ₐ[R] B} :
                    φ₁ = φ₂ ↔ ∀ (x : A), φ₁ x = φ₂ x
                    @[simp]
                    theorem AlgHom.mk_coe {R : Type u} {A : Type v} {B : Type w} [CommSemiring R] [Semiring A] [Semiring B] [Algebra R A] [Algebra R B] {f : A →ₐ[R] B} (h₁ : f 1 = 1) (h₂ : ∀ (x y : A), { toFun := ⇑f, map_one' := h₁ }.toFun (x * y) = { toFun := ⇑f, map_one' := h₁ }.toFun x * { toFun := ⇑f, map_one' := h₁ }.toFun y) (h₃ : (↑{ toFun := ⇑f, map_one' := h₁, map_mul' := h₂ }).toFun 0 = 0) (h₄ : ∀ (x y : A), (↑{ toFun := ⇑f, map_one' := h₁, map_mul' := h₂ }).toFun (x + y) = (↑{ toFun := ⇑f, map_one' := h₁, map_mul' := h₂ }).toFun x + (↑{ toFun := ⇑f, map_one' := h₁, map_mul' := h₂ }).toFun y) (h₅ : ∀ (r : R), (↑↑{ toFun := ⇑f, map_one' := h₁, map_mul' := h₂, map_zero' := h₃, map_add' := h₄ }).toFun ((algebraMap R A) r) = (algebraMap R B) r) :
                    { toFun := ⇑f, map_one' := h₁, map_mul' := h₂, map_zero' := h₃, map_add' := h₄, commutes' := h₅ } = f
                    @[simp]
                    theorem AlgHom.addHomMk_coe {R : Type u} {A : Type v} {B : Type w} [CommSemiring R] [Semiring A] [Semiring B] [Algebra R A] [Algebra R B] (f : A →ₐ[R] B) :
                    { toFun := ⇑f, map_add' := ⋯ } = ↑f
                    @[simp]
                    theorem AlgHom.commutes {R : Type u} {A : Type v} {B : Type w} [CommSemiring R] [Semiring A] [Semiring B] [Algebra R A] [Algebra R B] (φ : A →ₐ[R] B) (r : R) :
                    φ ((algebraMap R A) r) = (algebraMap R B) r
                    theorem AlgHom.comp_algebraMap {R : Type u} {A : Type v} {B : Type w} [CommSemiring R] [Semiring A] [Semiring B] [Algebra R A] [Algebra R B] (φ : A →ₐ[R] B) :
                    (↑φ).comp (algebraMap R A) = algebraMap R B
                    def AlgHom.mk' {R : Type u} {A : Type v} {B : Type w} [CommSemiring R] [Semiring A] [Semiring B] [Algebra R A] [Algebra R B] (f : A →+* B) (h : ∀ (c : R) (x : A), f (c • x) = c • f x) :

                    If a RingHom is R-linear, then it is an AlgHom.

                    Equations
                    • AlgHom.mk' f h = { toFun := ⇑f, map_one' := ⋯, map_mul' := ⋯, map_zero' := ⋯, map_add' := ⋯, commutes' := ⋯ }
                    Instances For
                      @[simp]
                      theorem AlgHom.coe_mk' {R : Type u} {A : Type v} {B : Type w} [CommSemiring R] [Semiring A] [Semiring B] [Algebra R A] [Algebra R B] (f : A →+* B) (h : ∀ (c : R) (x : A), f (c • x) = c • f x) :
                      ⇑(mk' f h) = ⇑f
                      def AlgHom.id (R : Type u) (A : Type v) [CommSemiring R] [Semiring A] [Algebra R A] :

                      Identity map as an AlgHom.

                      Equations
                      Instances For
                        @[simp]
                        theorem AlgHom.coe_id (R : Type u) (A : Type v) [CommSemiring R] [Semiring A] [Algebra R A] :
                        ⇑(AlgHom.id R A) = id
                        @[simp]
                        theorem AlgHom.id_toRingHom (R : Type u) (A : Type v) [CommSemiring R] [Semiring A] [Algebra R A] :
                        theorem AlgHom.id_apply {R : Type u} {A : Type v} [CommSemiring R] [Semiring A] [Algebra R A] (p : A) :
                        (AlgHom.id R A) p = p
                        def AlgHom.comp {R : Type u} {A : Type v} {B : Type w} {C : Type u₁} [CommSemiring R] [Semiring A] [Semiring B] [Semiring C] [Algebra R A] [Algebra R B] [Algebra R C] (φ₁ : B →ₐ[R] C) (φ₂ : A →ₐ[R] B) :

                        If φ₁ and φ₂ are R-algebra homomorphisms with the domain of φ₁ equal to the codomain of φ₂, then φ₁.comp φ₂ is the algebra homomorphism x ↦ φ₁ (φ₂ x).

                        Equations
                        • φ₁.comp φ₂ = { toRingHom := φ₁.comp ↑φ₂, commutes' := ⋯ }
                        Instances For
                          @[simp]
                          theorem AlgHom.coe_comp {R : Type u} {A : Type v} {B : Type w} {C : Type u₁} [CommSemiring R] [Semiring A] [Semiring B] [Semiring C] [Algebra R A] [Algebra R B] [Algebra R C] (φ₁ : B →ₐ[R] C) (φ₂ : A →ₐ[R] B) :
                          ⇑(φ₁.comp φ₂) = ⇑φ₁ ∘ ⇑φ₂
                          theorem AlgHom.comp_apply {R : Type u} {A : Type v} {B : Type w} {C : Type u₁} [CommSemiring R] [Semiring A] [Semiring B] [Semiring C] [Algebra R A] [Algebra R B] [Algebra R C] (φ₁ : B →ₐ[R] C) (φ₂ : A →ₐ[R] B) (p : A) :
                          (φ₁.comp φ₂) p = φ₁ (φ₂ p)
                          theorem AlgHom.comp_toRingHom {R : Type u} {A : Type v} {B : Type w} {C : Type u₁} [CommSemiring R] [Semiring A] [Semiring B] [Semiring C] [Algebra R A] [Algebra R B] [Algebra R C] (φ₁ : B →ₐ[R] C) (φ₂ : A →ₐ[R] B) :
                          ↑(φ₁.comp φ₂) = (↑φ₁).comp ↑φ₂
                          @[simp]
                          theorem AlgHom.comp_id {R : Type u} {A : Type v} {B : Type w} [CommSemiring R] [Semiring A] [Semiring B] [Algebra R A] [Algebra R B] (φ : A →ₐ[R] B) :
                          φ.comp (AlgHom.id R A) = φ
                          @[simp]
                          theorem AlgHom.id_comp {R : Type u} {A : Type v} {B : Type w} [CommSemiring R] [Semiring A] [Semiring B] [Algebra R A] [Algebra R B] (φ : A →ₐ[R] B) :
                          (AlgHom.id R B).comp φ = φ
                          theorem AlgHom.comp_assoc {R : Type u} {A : Type v} {B : Type w} {C : Type u₁} {D : Type v₁} [CommSemiring R] [Semiring A] [Semiring B] [Semiring C] [Semiring D] [Algebra R A] [Algebra R B] [Algebra R C] [Algebra R D] (φ₁ : C →ₐ[R] D) (φ₂ : B →ₐ[R] C) (φ₃ : A →ₐ[R] B) :
                          (φ₁.comp φ₂).comp φ₃ = φ₁.comp (φ₂.comp φ₃)
                          instance AlgHom.instRingHomCompTripleComp {R : Type u} {A : Type v} {B : Type w} {C : Type u₁} [CommSemiring R] [Semiring A] [Semiring B] [Semiring C] [Algebra R A] [Algebra R B] [Algebra R C] {φ₁ : B →ₐ[R] C} {φ₂ : A →ₐ[R] B} :
                          def AlgHom.toLinearMap {R : Type u} {A : Type v} {B : Type w} [CommSemiring R] [Semiring A] [Semiring B] [Algebra R A] [Algebra R B] (φ : A →ₐ[R] B) :

                          R-Alg ⥤ R-Mod

                          Equations
                          • φ.toLinearMap = { toFun := ⇑φ, map_add' := ⋯, map_smul' := ⋯ }
                          Instances For
                            theorem AlgHom.toLinearMap_eq_coe {R : Type u} {A : Type v} {B : Type w} [CommSemiring R] [Semiring A] [Semiring B] [Algebra R A] [Algebra R B] (f : A →ₐ[R] B) :
                            f.toLinearMap = ↑f
                            @[simp]
                            theorem AlgHom.toLinearMap_apply {R : Type u} {A : Type v} {B : Type w} [CommSemiring R] [Semiring A] [Semiring B] [Algebra R A] [Algebra R B] (φ : A →ₐ[R] B) (p : A) :
                            φ.toLinearMap p = φ p
                            @[simp]
                            theorem AlgHom.coe_toLinearMap {R : Type u} {A : Type v} {B : Type w} [CommSemiring R] [Semiring A] [Semiring B] [Algebra R A] [Algebra R B] (φ : A →ₐ[R] B) :
                            ⇑φ.toLinearMap = ⇑φ
                            @[simp]
                            theorem AlgHom.comp_toLinearMap {R : Type u} {A : Type v} {B : Type w} {C : Type u₁} [CommSemiring R] [Semiring A] [Semiring B] [Semiring C] [Algebra R A] [Algebra R B] [Algebra R C] (f : A →ₐ[R] B) (g : B →ₐ[R] C) :
                            @[simp]
                            theorem AlgHom.linearMapMk_toAddHom {R : Type u} {A : Type v} {B : Type w} [CommSemiring R] [Semiring A] [Semiring B] [Algebra R A] [Algebra R B] (f : A →ₐ[R] B) :
                            { toAddHom := ↑f, map_smul' := ⋯ } = f.toLinearMap
                            def AlgHom.ofLinearMap {R : Type u} {A : Type v} {B : Type w} [CommSemiring R] [Semiring A] [Semiring B] [Algebra R A] [Algebra R B] (f : A →ₗ[R] B) (map_one : f 1 = 1) (map_mul : ∀ (x y : A), f (x * y) = f x * f y) :

                            Promote a LinearMap to an AlgHom by supplying proofs about the behavior on 1 and *.

                            Equations
                            • AlgHom.ofLinearMap f map_one map_mul = { toFun := ⇑f, map_one' := map_one, map_mul' := map_mul, map_zero' := ⋯, map_add' := ⋯, commutes' := ⋯ }
                            Instances For
                              @[simp]
                              theorem AlgHom.ofLinearMap_apply {R : Type u} {A : Type v} {B : Type w} [CommSemiring R] [Semiring A] [Semiring B] [Algebra R A] [Algebra R B] (f : A →ₗ[R] B) (map_one : f 1 = 1) (map_mul : ∀ (x y : A), f (x * y) = f x * f y) (a : A) :
                              (ofLinearMap f map_one map_mul) a = f a
                              @[simp]
                              theorem AlgHom.ofLinearMap_toLinearMap {R : Type u} {A : Type v} {B : Type w} [CommSemiring R] [Semiring A] [Semiring B] [Algebra R A] [Algebra R B] (φ : A →ₐ[R] B) (map_one : φ.toLinearMap 1 = 1) (map_mul : ∀ (x y : A), φ.toLinearMap (x * y) = φ.toLinearMap x * φ.toLinearMap y) :
                              ofLinearMap φ.toLinearMap map_one map_mul = φ
                              @[simp]
                              theorem AlgHom.toLinearMap_ofLinearMap {R : Type u} {A : Type v} {B : Type w} [CommSemiring R] [Semiring A] [Semiring B] [Algebra R A] [Algebra R B] (f : A →ₗ[R] B) (map_one : f 1 = 1) (map_mul : ∀ (x y : A), f (x * y) = f x * f y) :
                              (ofLinearMap f map_one map_mul).toLinearMap = f
                              @[simp]
                              theorem AlgHom.ofLinearMap_id {R : Type u} {A : Type v} [CommSemiring R] [Semiring A] [Algebra R A] (map_one : LinearMap.id 1 = 1) (map_mul : ∀ (x y : A), LinearMap.id (x * y) = LinearMap.id x * LinearMap.id y) :
                              ofLinearMap LinearMap.id map_one map_mul = AlgHom.id R A
                              theorem AlgHom.map_smul_of_tower {R : Type u} {A : Type v} {B : Type w} [CommSemiring R] [Semiring A] [Semiring B] [Algebra R A] [Algebra R B] (φ : A →ₐ[R] B) {R' : Type u_1} [SMul R' A] [SMul R' B] [LinearMap.CompatibleSMul A B R' R] (r : R') (x : A) :
                              φ (r • x) = r • φ x
                              @[instance_reducible]
                              instance AlgHom.End {R : Type u} {A : Type v} [CommSemiring R] [Semiring A] [Algebra R A] :
                              Equations
                              theorem AlgHom.End_toOne_one {R : Type u} {A : Type v} [CommSemiring R] [Semiring A] [Algebra R A] :
                              1 = AlgHom.id R A
                              theorem AlgHom.End_toMul_mul {R : Type u} {A : Type v} [CommSemiring R] [Semiring A] [Algebra R A] (φ₁ φ₂ : A →ₐ[R] A) :
                              φ₁ * φ₂ = φ₁.comp φ₂
                              @[simp]
                              theorem AlgHom.one_apply {R : Type u} {A : Type v} [CommSemiring R] [Semiring A] [Algebra R A] (x : A) :
                              1 x = x
                              @[simp]
                              theorem AlgHom.mul_apply {R : Type u} {A : Type v} [CommSemiring R] [Semiring A] [Algebra R A] (φ ψ : A →ₐ[R] A) (x : A) :
                              (φ * ψ) x = φ (ψ x)
                              @[simp]
                              theorem AlgHom.coe_pow {R : Type u} {A : Type v} [CommSemiring R] [Semiring A] [Algebra R A] (φ : A →ₐ[R] A) (n : ℕ) :
                              ⇑(φ ^ n) = (⇑φ)^[n]
                              theorem AlgHom.algebraMap_eq_apply {R : Type u} {A : Type v} {B : Type w} [CommSemiring R] [Semiring A] [Semiring B] [Algebra R A] [Algebra R B] (f : A →ₐ[R] B) {y : R} {x : A} (h : (algebraMap R A) y = x) :
                              (algebraMap R B) y = f x
                              theorem AlgHom.cancel_right {R : Type u} {A : Type v} {B : Type w} {C : Type u₁} [CommSemiring R] [Semiring A] [Semiring B] [Semiring C] [Algebra R A] [Algebra R B] [Algebra R C] {g₁ g₂ : B →ₐ[R] C} {f : A →ₐ[R] B} (hf : Function.Surjective ⇑f) :
                              g₁.comp f = g₂.comp f ↔ g₁ = g₂
                              theorem AlgHom.cancel_left {R : Type u} {A : Type v} {B : Type w} {C : Type u₁} [CommSemiring R] [Semiring A] [Semiring B] [Semiring C] [Algebra R A] [Algebra R B] [Algebra R C] {g₁ g₂ : A →ₐ[R] B} {f : B →ₐ[R] C} (hf : Function.Injective ⇑f) :
                              f.comp g₁ = f.comp g₂ ↔ g₁ = g₂
                              def AlgHom.toEnd {R : Type u} {A : Type v} [CommSemiring R] [Semiring A] [Algebra R A] :

                              AlgHom.toLinearMap as a MonoidHom.

                              Equations
                              Instances For
                                @[simp]
                                theorem AlgHom.toEnd_apply {R : Type u} {A : Type v} [CommSemiring R] [Semiring A] [Algebra R A] (φ : A →ₐ[R] A) :
                                def IsScalarTower.toAlgHom (R : Type u_1) (S : Type u_2) (A : Type u_3) [CommSemiring R] [CommSemiring S] [Semiring A] [Algebra R S] [Algebra S A] [Algebra R A] [IsScalarTower R S A] :

                                In a tower, the canonical map from the middle element to the top element is an algebra homomorphism over the bottom element.

                                Equations
                                Instances For
                                  theorem IsScalarTower.toAlgHom_apply (R : Type u_1) (S : Type u_2) (A : Type u_3) [CommSemiring R] [CommSemiring S] [Semiring A] [Algebra R S] [Algebra S A] [Algebra R A] [IsScalarTower R S A] (y : S) :
                                  (toAlgHom R S A) y = (algebraMap S A) y
                                  @[simp]
                                  theorem IsScalarTower.coe_toAlgHom (R : Type u_1) (S : Type u_2) (A : Type u_3) [CommSemiring R] [CommSemiring S] [Semiring A] [Algebra R S] [Algebra S A] [Algebra R A] [IsScalarTower R S A] :
                                  ↑(toAlgHom R S A) = algebraMap S A
                                  @[simp]
                                  theorem IsScalarTower.coe_toAlgHom' (R : Type u_1) (S : Type u_2) (A : Type u_3) [CommSemiring R] [CommSemiring S] [Semiring A] [Algebra R S] [Algebra S A] [Algebra R A] [IsScalarTower R S A] :
                                  ⇑(toAlgHom R S A) = ⇑(algebraMap S A)
                                  def Algebra.algHom (R : Type u_1) (S : Type u_2) (A : Type u_3) [CommSemiring R] [CommSemiring S] [Semiring A] [Algebra R S] [Algebra S A] [Algebra R A] [IsScalarTower R S A] :

                                  The algebra morphism underlying algebraMap.

                                  Equations
                                  Instances For
                                    theorem Algebra.algHom_apply (R : Type u_1) (S : Type u_2) (A : Type u_3) [CommSemiring R] [CommSemiring S] [Semiring A] [Algebra R S] [Algebra S A] [Algebra R A] [IsScalarTower R S A] (y : S) :

                                    Alias of IsScalarTower.toAlgHom_apply.

                                    @[simp]
                                    theorem AlgHomClass.toRingHom_ofClass {R : Type u_1} {A : Type u_2} {B : Type u_3} [CommSemiring R] [Semiring A] [Semiring B] [Algebra R A] [Algebra R B] {F : Type u_4} [FunLike F A B] [AlgHomClass F R A B] (f : F) :
                                    ↑↑f = ↑f
                                    @[deprecated AlgHomClass.toRingHom_ofClass (since := "2026-09-08")]
                                    theorem AlgHomClass.toRingHom_toAlgHom {R : Type u_1} {A : Type u_2} {B : Type u_3} [CommSemiring R] [Semiring A] [Semiring B] [Algebra R A] [Algebra R B] {F : Type u_4} [FunLike F A B] [AlgHomClass F R A B] (f : F) :
                                    ↑↑f = ↑f

                                    Alias of AlgHomClass.toRingHom_ofClass.

                                    def RingHom.toNatAlgHom {R : Type u_1} {S : Type u_2} [Semiring R] [Semiring S] (f : R →+* S) :

                                    Reinterpret a RingHom as an ℕ-algebra homomorphism.

                                    Equations
                                    • f.toNatAlgHom = { toFun := ⇑f, map_one' := ⋯, map_mul' := ⋯, map_zero' := ⋯, map_add' := ⋯, commutes' := ⋯ }
                                    Instances For
                                      @[simp]
                                      theorem RingHom.toNatAlgHom_coe {R : Type u_1} {S : Type u_2} [Semiring R] [Semiring S] (f : R →+* S) :
                                      ⇑f.toNatAlgHom = ⇑f
                                      theorem RingHom.toNatAlgHom_apply {R : Type u_1} {S : Type u_2} [Semiring R] [Semiring S] (f : R →+* S) (x : R) :
                                      f.toNatAlgHom x = f x
                                      def RingHom.equivNatAlgHom (R : Type u_1) (S : Type u_2) [Semiring R] [Semiring S] :
                                      (R →+* S) ≃ (R →ₐ[ℕ] S)

                                      Ring homomorphisms are the same as ℕ-algebra homomorphisms.

                                      Equations
                                      Instances For
                                        @[simp]
                                        theorem RingHom.equivNatAlgHom_symm_apply (R : Type u_1) (S : Type u_2) [Semiring R] [Semiring S] (self : R →ₐ[ℕ] S) :
                                        (equivNatAlgHom R S).symm self = self.toRingHom
                                        @[simp]
                                        theorem RingHom.equivNatAlgHom_apply (R : Type u_1) (S : Type u_2) [Semiring R] [Semiring S] (f : R →+* S) :
                                        def RingHom.toIntAlgHom {R : Type u_1} {S : Type u_2} [Ring R] [Ring S] (f : R →+* S) :

                                        Reinterpret a RingHom as a ℤ-algebra homomorphism.

                                        Equations
                                        Instances For
                                          @[simp]
                                          theorem RingHom.toIntAlgHom_coe {R : Type u_1} {S : Type u_2} [Ring R] [Ring S] (f : R →+* S) :
                                          ⇑f.toIntAlgHom = ⇑f
                                          theorem RingHom.toIntAlgHom_apply {R : Type u_1} {S : Type u_2} [Ring R] [Ring S] (f : R →+* S) (x : R) :
                                          f.toIntAlgHom x = f x
                                          def RingHom.equivIntAlgHom (R : Type u_1) (S : Type u_2) [Ring R] [Ring S] :
                                          (R →+* S) ≃ (R →ₐ[ℤ] S)

                                          Ring homomorphisms are the same as ℤ-algebra homomorphisms.

                                          Equations
                                          Instances For
                                            @[simp]
                                            theorem RingHom.equivIntAlgHom_symm_apply (R : Type u_1) (S : Type u_2) [Ring R] [Ring S] (self : R →ₐ[ℤ] S) :
                                            (equivIntAlgHom R S).symm self = self.toRingHom
                                            @[simp]
                                            theorem RingHom.equivIntAlgHom_apply (R : Type u_1) (S : Type u_2) [Ring R] [Ring S] (f : R →+* S) :
                                            def Algebra.ofId (R : Type u) (A : Type v) [CommSemiring R] [Semiring A] [Algebra R A] :

                                            AlgebraMap as an AlgHom.

                                            Equations
                                            Instances For
                                              @[simp]
                                              theorem Algebra.ofId_self {R : Type u} [CommSemiring R] :
                                              ofId R R = AlgHom.id R R
                                              @[simp]
                                              theorem Algebra.toRingHom_ofId {R : Type u} (A : Type v) [CommSemiring R] [Semiring A] [Algebra R A] :
                                              ↑(ofId R A) = algebraMap R A
                                              @[simp]
                                              theorem Algebra.ofId_apply {R : Type u} (A : Type v) [CommSemiring R] [Semiring A] [Algebra R A] (r : R) :
                                              (ofId R A) r = (algebraMap R A) r
                                              instance Algebra.subsingleton_id {R : Type u} (A : Type v) [CommSemiring R] [Semiring A] [Algebra R A] :

                                              This is a special case of a more general instance that we define in a later file.

                                              theorem Algebra.ext_id {R : Type u} (A : Type v) [CommSemiring R] [Semiring A] [Algebra R A] (f g : R →ₐ[R] A) :
                                              f = g

                                              This ext lemma closes trivial subgoals created when chaining heterobasic ext lemmas.

                                              theorem Algebra.ext_id_iff {R : Type u} {A : Type v} [CommSemiring R] [Semiring A] [Algebra R A] {f g : R →ₐ[R] A} :
                                              f = g ↔ True
                                              @[simp]
                                              theorem Algebra.comp_ofId {R : Type u} (A : Type v) (B : Type w) [CommSemiring R] [Semiring A] [Algebra R A] [Semiring B] [Algebra R B] (φ : A →ₐ[R] B) :
                                              φ.comp (ofId R A) = ofId R B
                                              @[instance_reducible]
                                              Equations
                                              @[simp]
                                              theorem Algebra.smul_units_def {R : Type u} (A : Type v) [CommSemiring R] [Semiring A] [Algebra R A] (f : A →ₐ[R] A) (x : Aˣ) :
                                              f • x = (Units.map ↑f) x
                                              def MulSemiringAction.toAlgHom {M : Type u_1} (R : Type u_2) (A : Type u_3) [CommSemiring R] [Semiring A] [Algebra R A] [Monoid M] [MulSemiringAction M A] [SMulCommClass M R A] (m : M) :

                                              Each element of the monoid defines an algebra homomorphism.

                                              This is a stronger version of MulSemiringAction.toRingHom and DistribSMul.toLinearMap.

                                              Equations
                                              Instances For
                                                @[simp]
                                                theorem MulSemiringAction.toAlgHom_apply {M : Type u_1} (R : Type u_2) (A : Type u_3) [CommSemiring R] [Semiring A] [Algebra R A] [Monoid M] [MulSemiringAction M A] [SMulCommClass M R A] (m : M) (a : A) :
                                                (toAlgHom R A m) a = m • a
                                                @[instance_reducible]
                                                instance uniqueOfRight {R : Type u_1} {S : Type u_2} {T : Type u_3} [CommSemiring R] [Semiring S] [Semiring T] [Algebra R S] [Algebra R T] [Subsingleton T] :
                                                Equations
                                                @[simp]
                                                theorem AlgHom.default_apply {R : Type u_1} {S : Type u_2} {T : Type u_3} [CommSemiring R] [Semiring S] [Semiring T] [Algebra R S] [Algebra R T] [Subsingleton T] (x : S) :