mathlib documentation

ring_theory.​algebra

ring_theory.​algebra

Algebra over Commutative Semiring (under category)

In this file we define algebra over commutative (semi)rings, algebra homomorphisms alg_hom, algebra equivalences alg_equiv, and subalgebras. We also define usual operations on alg_homs (id, comp) and subalgebras (map, comap).

If S is an R-algebra and A is an S-algebra then algebra.comap.algebra R S A can be used to provide A with a structure of an R-algebra. Other than that, algebra.comap is now deprecated and replcaed with is_scalar_tower.

Notations

@[nolint, class]
structure algebra (R : Type u) (A : Type v) [comm_semiring R] [semiring A] :
Type (max u v)

The category of R-algebras where R is a commutative ring is the under category R ↓ CRing. In the categorical setting we have a forgetful functor R-Alg ⥤ R-Mod. However here it extends module in order to preserve definitional equality in certain cases.

Instances
def algebra_map (R : Type u) (A : Type v) [comm_semiring R] [semiring A] [algebra R A] :
R →+* A

Embedding R →+* A given by algebra structure.

Equations
def ring_hom.​to_algebra' {R : Type u_1} {S : Type u_2} [comm_semiring R] [semiring S] (i : R →+* S) :
(∀ (c : R) (x : S), i c * x = x * i c)algebra R S

Creating an algebra from a morphism to the center of a semiring.

Equations
def ring_hom.​to_algebra {R : Type u_1} {S : Type u_2} [comm_semiring R] [comm_semiring S] :
(R →+* S)algebra R S

Creating an algebra from a morphism to a commutative semiring.

Equations
def algebra.​of_semimodule' {R : Type u} {A : Type w} [comm_semiring R] [semiring A] [semimodule R A] :
(∀ (r : R) (x : A), r 1 * x = r x)(∀ (r : R) (x : A), x * r 1 = r x)algebra R A

Let R be a commutative semiring, let A be a semiring with a semimodule R structure. If (r • 1) * x = x * (r • 1) = r • x for all r : R and x : A, then A is an algebra over R.

Equations
def algebra.​of_semimodule {R : Type u} {A : Type w} [comm_semiring R] [semiring A] [semimodule R A] :
(∀ (r : R) (x y : A), r x * y = r (x * y))(∀ (r : R) (x y : A), x * r y = r (x * y))algebra R A

Let R be a commutative semiring, let A be a semiring with a semimodule R structure. If (r • x) * y = x * (r • y) = r • (x * y) for all r : R and x y : A, then A is an algebra over R.

Equations
theorem algebra.​smul_def'' {R : Type u} {A : Type w} [comm_semiring R] [semiring A] [algebra R A] (r : R) (x : A) :
r x = (algebra_map R A) r * x

@[ext]
theorem algebra.​algebra_ext {R : Type u_1} [comm_semiring R] {A : Type u_2} [semiring A] (P Q : algebra R A) :
(∀ (r : R), (algebra_map R A) r = (algebra_map R A) r)P = Q

To prove two algebra structures on a fixed [comm_semiring R] [semiring A] agree, it suffices to check the algebra_maps agree.

@[instance]
def algebra.​to_semimodule {R : Type u} {A : Type w} [comm_semiring R] [semiring A] [algebra R A] :

Equations
theorem algebra.​smul_def {R : Type u} {A : Type w} [comm_semiring R] [semiring A] [algebra R A] (r : R) (x : A) :
r x = (algebra_map R A) r * x

theorem algebra.​algebra_map_eq_smul_one {R : Type u} {A : Type w} [comm_semiring R] [semiring A] [algebra R A] (r : R) :
(algebra_map R A) r = r 1

theorem algebra.​commutes {R : Type u} {A : Type w} [comm_semiring R] [semiring A] [algebra R A] (r : R) (x : A) :
(algebra_map R A) r * x = x * (algebra_map R A) r

theorem algebra.​left_comm {R : Type u} {A : Type w} [comm_semiring R] [semiring A] [algebra R A] (r : R) (x y : A) :
x * ((algebra_map R A) r * y) = (algebra_map R A) r * (x * y)

@[simp]
theorem algebra.​mul_smul_comm {R : Type u} {A : Type w} [comm_semiring R] [semiring A] [algebra R A] (s : R) (x y : A) :
x * s y = s (x * y)

@[simp]
theorem algebra.​smul_mul_assoc {R : Type u} {A : Type w} [comm_semiring R] [semiring A] [algebra R A] (r : R) (x y : A) :
r x * y = r (x * y)

@[instance]
def algebra.​id (R : Type u) [comm_semiring R] :

Equations
@[simp]
theorem algebra.​id.​map_eq_self {R : Type u} [comm_semiring R] (x : R) :
(algebra_map R R) x = x

@[simp]
theorem algebra.​id.​smul_eq_mul {R : Type u} [comm_semiring R] (x y : R) :
x y = x * y

@[instance]
def algebra.​of_subsemiring {R : Type u} {A : Type w} [comm_semiring R] [semiring A] [algebra R A] (S : subsemiring R) :

Algebra over a subsemiring.

Equations
@[instance]
def algebra.​of_subring {R : Type u_1} {A : Type u_2} [comm_ring R] [ring A] [algebra R A] (S : set R) [is_subring S] :

Algebra over a subring.

Equations
theorem algebra.​subring_algebra_map_apply {R : Type u_1} [comm_ring R] (S : set R) [is_subring S] (x : S) :

def algebra.​lmul (R : Type u) (A : Type w) [comm_semiring R] [semiring A] [algebra R A] :

The multiplication in an algebra is a bilinear map.

Equations
def algebra.​lmul_left (R : Type u) (A : Type w) [comm_semiring R] [semiring A] [algebra R A] :
A → (A →ₗ[R] A)

The multiplication on the left in an algebra is a linear map.

Equations
def algebra.​lmul_right (R : Type u) (A : Type w) [comm_semiring R] [semiring A] [algebra R A] :
A → (A →ₗ[R] A)

The multiplication on the right in an algebra is a linear map.

Equations
def algebra.​lmul_left_right (R : Type u) (A : Type w) [comm_semiring R] [semiring A] [algebra R A] :
A × A(A →ₗ[R] A)

Simultaneous multiplication on the left and right is a linear map.

Equations
@[simp]
theorem algebra.​lmul_apply {R : Type u} {A : Type w} [comm_semiring R] [semiring A] [algebra R A] (p q : A) :
((algebra.lmul R A) p) q = p * q

@[simp]
theorem algebra.​lmul_left_apply {R : Type u} {A : Type w} [comm_semiring R] [semiring A] [algebra R A] (p q : A) :
(algebra.lmul_left R A p) q = p * q

@[simp]
theorem algebra.​lmul_right_apply {R : Type u} {A : Type w} [comm_semiring R] [semiring A] [algebra R A] (p q : A) :
(algebra.lmul_right R A p) q = q * p

@[simp]
theorem algebra.​lmul_left_right_apply {R : Type u} {A : Type w} [comm_semiring R] [semiring A] [algebra R A] (vw : A × A) (p : A) :
(algebra.lmul_left_right R A vw) p = vw.fst * p * vw.snd

@[instance]
def module.​endomorphism_algebra (R : Type u) (M : Type v) [comm_ring R] [add_comm_group M] [module R M] :
algebra R (M →ₗ[R] M)

Equations
@[instance]
def matrix_algebra (n : Type u) (R : Type v) [decidable_eq n] [fintype n] [comm_semiring R] :
algebra R (matrix n n R)

Equations
def alg_hom.​to_ring_hom {R : Type u} {A : Type v} {B : Type w} [comm_semiring R] [semiring A] [semiring B] [algebra R A] [algebra R B] :
(A →ₐ[R] B)A →+* B

Reinterpret an alg_hom as a ring_hom

@[nolint]
structure alg_hom (R : Type u) (A : Type v) (B : Type w) [comm_semiring R] [semiring A] [semiring B] [algebra R A] [algebra R B] :
Type (max v w)

Defining the homomorphism in the category R-Alg.

@[instance]
def alg_hom.​has_coe_to_fun {R : Type u} {A : Type v} {B : Type w} [comm_semiring R] [semiring A] [semiring B] [algebra R A] [algebra R B] :

Equations
@[instance]
def alg_hom.​coe_ring_hom {R : Type u} {A : Type v} {B : Type w} [comm_semiring R] [semiring A] [semiring B] [algebra R A] [algebra R B] :
has_coe (A →ₐ[R] B) (A →+* B)

Equations
@[instance]
def alg_hom.​coe_monoid_hom {R : Type u} {A : Type v} {B : Type w} [comm_semiring R] [semiring A] [semiring B] [algebra R A] [algebra R B] :
has_coe (A →ₐ[R] B) (A →* B)

Equations
@[instance]
def alg_hom.​coe_add_monoid_hom {R : Type u} {A : Type v} {B : Type w} [comm_semiring R] [semiring A] [semiring B] [algebra R A] [algebra R B] :
has_coe (A →ₐ[R] B) (A →+ B)

Equations
@[simp]
theorem alg_hom.​coe_mk {R : Type u} {A : Type v} {B : Type w} [comm_semiring R] [semiring A] [semiring B] [algebra R A] [algebra R B] {f : A → B} (h₁ : f 1 = 1) (h₂ : ∀ (x y : A), f (x * y) = f x * f y) (h₃ : f 0 = 0) (h₄ : ∀ (x y : A), f (x + y) = f x + f y) (h₅ : ∀ (r : R), f ((algebra_map R A) r) = (algebra_map R B) r) :
{to_fun := f, map_one' := h₁, map_mul' := h₂, map_zero' := h₃, map_add' := h₄, commutes' := h₅} = f

@[simp]
theorem alg_hom.​coe_to_ring_hom {R : Type u} {A : Type v} {B : Type w} [comm_semiring R] [semiring A] [semiring B] [algebra R A] [algebra R B] (f : A →ₐ[R] B) :

theorem alg_hom.​coe_to_monoid_hom {R : Type u} {A : Type v} {B : Type w} [comm_semiring R] [semiring A] [semiring B] [algebra R A] [algebra R B] (f : A →ₐ[R] B) :

theorem alg_hom.​coe_to_add_monoid_hom {R : Type u} {A : Type v} {B : Type w} [comm_semiring R] [semiring A] [semiring B] [algebra R A] [algebra R B] (f : A →ₐ[R] B) :

theorem alg_hom.​coe_fn_inj {R : Type u} {A : Type v} {B : Type w} [comm_semiring R] [semiring A] [semiring B] [algebra R A] [algebra R B] ⦃φ₁ φ₂ : A →ₐ[R] B⦄ :
φ₁ = φ₂φ₁ = φ₂

theorem alg_hom.​coe_ring_hom_injective {R : Type u} {A : Type v} {B : Type w} [comm_semiring R] [semiring A] [semiring B] [algebra R A] [algebra R B] :

theorem alg_hom.​coe_monoid_hom_injective {R : Type u} {A : Type v} {B : Type w} [comm_semiring R] [semiring A] [semiring B] [algebra R A] [algebra R B] :

theorem alg_hom.​coe_add_monoid_hom_injective {R : Type u} {A : Type v} {B : Type w} [comm_semiring R] [semiring A] [semiring B] [algebra R A] [algebra R B] :

@[ext]
theorem alg_hom.​ext {R : Type u} {A : Type v} {B : Type w} [comm_semiring R] [semiring A] [semiring B] [algebra R A] [algebra R B] {φ₁ φ₂ : A →ₐ[R] B} :
(∀ (x : A), φ₁ x = φ₂ x)φ₁ = φ₂

theorem alg_hom.​ext_iff {R : Type u} {A : Type v} {B : Type w} [comm_semiring R] [semiring A] [semiring B] [algebra R A] [algebra R B] {φ₁ φ₂ : A →ₐ[R] B} :
φ₁ = φ₂ ∀ (x : A), φ₁ x = φ₂ x

@[simp]
theorem alg_hom.​commutes {R : Type u} {A : Type v} {B : Type w} [comm_semiring R] [semiring A] [semiring B] [algebra R A] [algebra R B] (φ : A →ₐ[R] B) (r : R) :
φ ((algebra_map R A) r) = (algebra_map R B) r

theorem alg_hom.​comp_algebra_map {R : Type u} {A : Type v} {B : Type w} [comm_semiring R] [semiring A] [semiring B] [algebra R A] [algebra R B] (φ : A →ₐ[R] B) :

@[simp]
theorem alg_hom.​map_add {R : Type u} {A : Type v} {B : Type w} [comm_semiring R] [semiring A] [semiring B] [algebra R A] [algebra R B] (φ : A →ₐ[R] B) (r s : A) :
φ (r + s) = φ r + φ s

@[simp]
theorem alg_hom.​map_zero {R : Type u} {A : Type v} {B : Type w} [comm_semiring R] [semiring A] [semiring B] [algebra R A] [algebra R B] (φ : A →ₐ[R] B) :
φ 0 = 0

@[simp]
theorem alg_hom.​map_mul {R : Type u} {A : Type v} {B : Type w} [comm_semiring R] [semiring A] [semiring B] [algebra R A] [algebra R B] (φ : A →ₐ[R] B) (x y : A) :
φ (x * y) = φ x * φ y

@[simp]
theorem alg_hom.​map_one {R : Type u} {A : Type v} {B : Type w} [comm_semiring R] [semiring A] [semiring B] [algebra R A] [algebra R B] (φ : A →ₐ[R] B) :
φ 1 = 1

@[simp]
theorem alg_hom.​map_smul {R : Type u} {A : Type v} {B : Type w} [comm_semiring R] [semiring A] [semiring B] [algebra R A] [algebra R B] (φ : A →ₐ[R] B) (r : R) (x : A) :
φ (r x) = r φ x

@[simp]
theorem alg_hom.​map_pow {R : Type u} {A : Type v} {B : Type w} [comm_semiring R] [semiring A] [semiring B] [algebra R A] [algebra R B] (φ : A →ₐ[R] B) (x : A) (n : ) :
φ (x ^ n) = φ x ^ n

theorem alg_hom.​map_sum {R : Type u} {A : Type v} {B : Type w} [comm_semiring R] [semiring A] [semiring B] [algebra R A] [algebra R B] (φ : A →ₐ[R] B) {ι : Type u_1} (f : ι → A) (s : finset ι) :
φ (s.sum (λ (x : ι), f x)) = s.sum (λ (x : ι), φ (f x))

@[simp]
theorem alg_hom.​map_nat_cast {R : Type u} {A : Type v} {B : Type w} [comm_semiring R] [semiring A] [semiring B] [algebra R A] [algebra R B] (φ : A →ₐ[R] B) (n : ) :
φ n = n

def alg_hom.​id (R : Type u) (A : Type v) [comm_semiring R] [semiring A] [algebra R A] :

Identity map as an alg_hom.

Equations
@[simp]
theorem alg_hom.​id_apply {R : Type u} {A : Type v} [comm_semiring R] [semiring A] [algebra R A] (p : A) :
(alg_hom.id R A) p = p

def alg_hom.​comp {R : Type u} {A : Type v} {B : Type w} {C : Type u₁} [comm_semiring R] [semiring A] [semiring B] [semiring C] [algebra R A] [algebra R B] [algebra R C] :
(B →ₐ[R] C)(A →ₐ[R] B)(A →ₐ[R] C)

Composition of algebra homeomorphisms.

Equations
@[simp]
theorem alg_hom.​comp_apply {R : Type u} {A : Type v} {B : Type w} {C : Type u₁} [comm_semiring 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)

@[simp]
theorem alg_hom.​comp_id {R : Type u} {A : Type v} {B : Type w} [comm_semiring R] [semiring A] [semiring B] [algebra R A] [algebra R B] (φ : A →ₐ[R] B) :
φ.comp (alg_hom.id R A) = φ

@[simp]
theorem alg_hom.​id_comp {R : Type u} {A : Type v} {B : Type w} [comm_semiring R] [semiring A] [semiring B] [algebra R A] [algebra R B] (φ : A →ₐ[R] B) :
(alg_hom.id R B).comp φ = φ

theorem alg_hom.​comp_assoc {R : Type u} {A : Type v} {B : Type w} {C : Type u₁} {D : Type v₁} [comm_semiring 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 φ₃)

def alg_hom.​to_linear_map {R : Type u} {A : Type v} {B : Type w} [comm_semiring R] [semiring A] [semiring B] [algebra R A] [algebra R B] :
(A →ₐ[R] B)(A →ₗ[R] B)

R-Alg ⥤ R-Mod

Equations
@[simp]
theorem alg_hom.​to_linear_map_apply {R : Type u} {A : Type v} {B : Type w} [comm_semiring R] [semiring A] [semiring B] [algebra R A] [algebra R B] (φ : A →ₐ[R] B) (p : A) :

theorem alg_hom.​to_linear_map_inj {R : Type u} {A : Type v} {B : Type w} [comm_semiring R] [semiring A] [semiring B] [algebra R A] [algebra R B] {φ₁ φ₂ : A →ₐ[R] B} :
φ₁.to_linear_map = φ₂.to_linear_mapφ₁ = φ₂

@[simp]
theorem alg_hom.​comp_to_linear_map {R : Type u} {A : Type v} {B : Type w} {C : Type u₁} [comm_semiring R] [semiring A] [semiring B] [semiring C] [algebra R A] [algebra R B] [algebra R C] (f : A →ₐ[R] B) (g : B →ₐ[R] C) :

theorem alg_hom.​map_prod {R : Type u} {A : Type v} {B : Type w} [comm_semiring R] [comm_semiring A] [comm_semiring B] [algebra R A] [algebra R B] (φ : A →ₐ[R] B) {ι : Type u_1} (f : ι → A) (s : finset ι) :
φ (s.prod (λ (x : ι), f x)) = s.prod (λ (x : ι), φ (f x))

@[simp]
theorem alg_hom.​map_neg {R : Type u} {A : Type v} {B : Type w} [comm_ring R] [ring A] [ring B] [algebra R A] [algebra R B] (φ : A →ₐ[R] B) (x : A) :
φ (-x) = -φ x

@[simp]
theorem alg_hom.​map_sub {R : Type u} {A : Type v} {B : Type w} [comm_ring R] [ring A] [ring B] [algebra R A] [algebra R B] (φ : A →ₐ[R] B) (x y : A) :
φ (x - y) = φ x - φ y

theorem alg_hom.​injective_iff {R : Type u_1} {A : Type u_2} {B : Type u_3} [comm_semiring R] [ring A] [semiring B] [algebra R A] [algebra R B] (f : A →ₐ[R] B) :
function.injective f ∀ (x : A), f x = 0x = 0

@[nolint]
def alg_equiv.​to_mul_equiv {R : Type u} {A : Type v} {B : Type w} [comm_semiring R] [semiring A] [semiring B] [algebra R A] [algebra R B] :
(A ≃ₐ[R] B)A ≃* B

@[nolint]
def alg_equiv.​to_equiv {R : Type u} {A : Type v} {B : Type w} [comm_semiring R] [semiring A] [semiring B] [algebra R A] [algebra R B] :
(A ≃ₐ[R] B)A B

structure alg_equiv (R : Type u) (A : Type v) (B : Type w) [comm_semiring R] [semiring A] [semiring B] [algebra R A] [algebra R B] :
Type (max v w)

An equivalence of algebras is an equivalence of rings commuting with the actions of scalars.

@[nolint]
def alg_equiv.​to_add_equiv {R : Type u} {A : Type v} {B : Type w} [comm_semiring R] [semiring A] [semiring B] [algebra R A] [algebra R B] :
(A ≃ₐ[R] B)A ≃+ B

@[nolint]
def alg_equiv.​to_ring_equiv {R : Type u} {A : Type v} {B : Type w} [comm_semiring R] [semiring A] [semiring B] [algebra R A] [algebra R B] :
(A ≃ₐ[R] B)A ≃+* B

@[instance]
def alg_equiv.​has_coe_to_fun {R : Type u} {A₁ : Type v} {A₂ : Type w} [comm_semiring R] [semiring A₁] [semiring A₂] [algebra R A₁] [algebra R A₂] :

Equations
@[ext]
theorem alg_equiv.​ext {R : Type u} {A₁ : Type v} {A₂ : Type w} [comm_semiring R] [semiring A₁] [semiring A₂] [algebra R A₁] [algebra R A₂] {f g : A₁ ≃ₐ[R] A₂} :
(∀ (a : A₁), f a = g a)f = g

theorem alg_equiv.​coe_fun_injective {R : Type u} {A₁ : Type v} {A₂ : Type w} [comm_semiring R] [semiring A₁] [semiring A₂] [algebra R A₁] [algebra R A₂] :
function.injective (λ (e : A₁ ≃ₐ[R] A₂), e)

@[instance]
def alg_equiv.​has_coe_to_ring_equiv {R : Type u} {A₁ : Type v} {A₂ : Type w} [comm_semiring R] [semiring A₁] [semiring A₂] [algebra R A₁] [algebra R A₂] :
has_coe (A₁ ≃ₐ[R] A₂) (A₁ ≃+* A₂)

Equations
@[simp]
theorem alg_equiv.​mk_apply {R : Type u} {A₁ : Type v} {A₂ : Type w} [comm_semiring R] [semiring A₁] [semiring A₂] [algebra R A₁] [algebra R A₂] {to_fun : A₁ → A₂} {inv_fun : A₂ → A₁} {left_inv : function.left_inverse inv_fun to_fun} {right_inv : function.right_inverse inv_fun to_fun} {map_mul : ∀ (x y : A₁), to_fun (x * y) = to_fun x * to_fun y} {map_add : ∀ (x y : A₁), to_fun (x + y) = to_fun x + to_fun y} {commutes : ∀ (r : R), to_fun ((algebra_map R A₁) r) = (algebra_map R A₂) r} {a : A₁} :
{to_fun := to_fun, inv_fun := inv_fun, left_inv := left_inv, right_inv := right_inv, map_mul' := map_mul, map_add' := map_add, commutes' := commutes} a = to_fun a

@[simp]
theorem alg_equiv.​to_fun_apply {R : Type u} {A₁ : Type v} {A₂ : Type w} [comm_semiring R] [semiring A₁] [semiring A₂] [algebra R A₁] [algebra R A₂] {e : A₁ ≃ₐ[R] A₂} {a : A₁} :
e.to_fun a = e a

@[simp]
theorem alg_equiv.​coe_ring_equiv {R : Type u} {A₁ : Type v} {A₂ : Type w} [comm_semiring R] [semiring A₁] [semiring A₂] [algebra R A₁] [algebra R A₂] (e : A₁ ≃ₐ[R] A₂) :

theorem alg_equiv.​coe_ring_equiv_injective {R : Type u} {A₁ : Type v} {A₂ : Type w} [comm_semiring R] [semiring A₁] [semiring A₂] [algebra R A₁] [algebra R A₂] :
function.injective (λ (e : A₁ ≃ₐ[R] A₂), e)

@[simp]
theorem alg_equiv.​map_add {R : Type u} {A₁ : Type v} {A₂ : Type w} [comm_semiring R] [semiring A₁] [semiring A₂] [algebra R A₁] [algebra R A₂] (e : A₁ ≃ₐ[R] A₂) (x y : A₁) :
e (x + y) = e x + e y

@[simp]
theorem alg_equiv.​map_zero {R : Type u} {A₁ : Type v} {A₂ : Type w} [comm_semiring R] [semiring A₁] [semiring A₂] [algebra R A₁] [algebra R A₂] (e : A₁ ≃ₐ[R] A₂) :
e 0 = 0

@[simp]
theorem alg_equiv.​map_mul {R : Type u} {A₁ : Type v} {A₂ : Type w} [comm_semiring R] [semiring A₁] [semiring A₂] [algebra R A₁] [algebra R A₂] (e : A₁ ≃ₐ[R] A₂) (x y : A₁) :
e (x * y) = e x * e y

@[simp]
theorem alg_equiv.​map_one {R : Type u} {A₁ : Type v} {A₂ : Type w} [comm_semiring R] [semiring A₁] [semiring A₂] [algebra R A₁] [algebra R A₂] (e : A₁ ≃ₐ[R] A₂) :
e 1 = 1

@[simp]
theorem alg_equiv.​commutes {R : Type u} {A₁ : Type v} {A₂ : Type w} [comm_semiring R] [semiring A₁] [semiring A₂] [algebra R A₁] [algebra R A₂] (e : A₁ ≃ₐ[R] A₂) (r : R) :
e ((algebra_map R A₁) r) = (algebra_map R A₂) r

@[simp]
theorem alg_equiv.​map_neg {R : Type u} [comm_semiring R] {A₁ : Type v} {A₂ : Type w} [ring A₁] [ring A₂] [algebra R A₁] [algebra R A₂] (e : A₁ ≃ₐ[R] A₂) (x : A₁) :
e (-x) = -e x

@[simp]
theorem alg_equiv.​map_sub {R : Type u} [comm_semiring R] {A₁ : Type v} {A₂ : Type w} [ring A₁] [ring A₂] [algebra R A₁] [algebra R A₂] (e : A₁ ≃ₐ[R] A₂) (x y : A₁) :
e (x - y) = e x - e y

theorem alg_equiv.​map_sum {R : Type u} {A₁ : Type v} {A₂ : Type w} [comm_semiring R] [semiring A₁] [semiring A₂] [algebra R A₁] [algebra R A₂] (e : A₁ ≃ₐ[R] A₂) {ι : Type u_1} (f : ι → A₁) (s : finset ι) :
e (s.sum (λ (x : ι), f x)) = s.sum (λ (x : ι), e (f x))

@[instance]
def alg_equiv.​has_coe_to_alg_hom {R : Type u} {A₁ : Type v} {A₂ : Type w} [comm_semiring R] [semiring A₁] [semiring A₂] [algebra R A₁] [algebra R A₂] :
has_coe (A₁ ≃ₐ[R] A₂) (A₁ →ₐ[R] A₂)

Equations
@[simp]
theorem alg_equiv.​coe_alg_hom {R : Type u} {A₁ : Type v} {A₂ : Type w} [comm_semiring R] [semiring A₁] [semiring A₂] [algebra R A₁] [algebra R A₂] (e : A₁ ≃ₐ[R] A₂) :

theorem alg_equiv.​injective {R : Type u} {A₁ : Type v} {A₂ : Type w} [comm_semiring R] [semiring A₁] [semiring A₂] [algebra R A₁] [algebra R A₂] (e : A₁ ≃ₐ[R] A₂) :

theorem alg_equiv.​surjective {R : Type u} {A₁ : Type v} {A₂ : Type w} [comm_semiring R] [semiring A₁] [semiring A₂] [algebra R A₁] [algebra R A₂] (e : A₁ ≃ₐ[R] A₂) :

theorem alg_equiv.​bijective {R : Type u} {A₁ : Type v} {A₂ : Type w} [comm_semiring R] [semiring A₁] [semiring A₂] [algebra R A₁] [algebra R A₂] (e : A₁ ≃ₐ[R] A₂) :

@[instance]
def alg_equiv.​has_one {R : Type u} {A₁ : Type v} [comm_semiring R] [semiring A₁] [algebra R A₁] :
has_one (A₁ ≃ₐ[R] A₁)

Equations
@[instance]
def alg_equiv.​inhabited {R : Type u} {A₁ : Type v} [comm_semiring R] [semiring A₁] [algebra R A₁] :
inhabited (A₁ ≃ₐ[R] A₁)

Equations
def alg_equiv.​refl {R : Type u} {A₁ : Type v} [comm_semiring R] [semiring A₁] [algebra R A₁] :
A₁ ≃ₐ[R] A₁

Algebra equivalences are reflexive.

Equations
@[simp]
theorem alg_equiv.​coe_refl {R : Type u} {A₁ : Type v} [comm_semiring R] [semiring A₁] [algebra R A₁] :

def alg_equiv.​symm {R : Type u} {A₁ : Type v} {A₂ : Type w} [comm_semiring R] [semiring A₁] [semiring A₂] [algebra R A₁] [algebra R A₂] :
(A₁ ≃ₐ[R] A₂)(A₂ ≃ₐ[R] A₁)

Algebra equivalences are symmetric.

Equations
@[simp]
theorem alg_equiv.​inv_fun_apply {R : Type u} {A₁ : Type v} {A₂ : Type w} [comm_semiring R] [semiring A₁] [semiring A₂] [algebra R A₁] [algebra R A₂] {e : A₁ ≃ₐ[R] A₂} {a : A₂} :
e.inv_fun a = (e.symm) a

@[simp]
theorem alg_equiv.​symm_symm {R : Type u} {A₁ : Type v} {A₂ : Type w} [comm_semiring R] [semiring A₁] [semiring A₂] [algebra R A₁] [algebra R A₂] {e : A₁ ≃ₐ[R] A₂} :
e.symm.symm = e

def alg_equiv.​trans {R : Type u} {A₁ : Type v} {A₂ : Type w} {A₃ : Type u₁} [comm_semiring R] [semiring A₁] [semiring A₂] [semiring A₃] [algebra R A₁] [algebra R A₂] [algebra R A₃] :
(A₁ ≃ₐ[R] A₂)(A₂ ≃ₐ[R] A₃)(A₁ ≃ₐ[R] A₃)

Algebra equivalences are transitive.

Equations
@[simp]
theorem alg_equiv.​apply_symm_apply {R : Type u} {A₁ : Type v} {A₂ : Type w} [comm_semiring R] [semiring A₁] [semiring A₂] [algebra R A₁] [algebra R A₂] (e : A₁ ≃ₐ[R] A₂) (x : A₂) :
e ((e.symm) x) = x

@[simp]
theorem alg_equiv.​symm_apply_apply {R : Type u} {A₁ : Type v} {A₂ : Type w} [comm_semiring R] [semiring A₁] [semiring A₂] [algebra R A₁] [algebra R A₂] (e : A₁ ≃ₐ[R] A₂) (x : A₁) :
(e.symm) (e x) = x

@[simp]
theorem alg_equiv.​trans_apply {R : Type u} {A₁ : Type v} {A₂ : Type w} {A₃ : Type u₁} [comm_semiring R] [semiring A₁] [semiring A₂] [semiring A₃] [algebra R A₁] [algebra R A₂] [algebra R A₃] (e₁ : A₁ ≃ₐ[R] A₂) (e₂ : A₂ ≃ₐ[R] A₃) (x : A₁) :
(e₁.trans e₂) x = e₂ (e₁ x)

@[simp]
theorem alg_equiv.​comp_symm {R : Type u} {A₁ : Type v} {A₂ : Type w} [comm_semiring R] [semiring A₁] [semiring A₂] [algebra R A₁] [algebra R A₂] (e : A₁ ≃ₐ[R] A₂) :

@[simp]
theorem alg_equiv.​symm_comp {R : Type u} {A₁ : Type v} {A₂ : Type w} [comm_semiring R] [semiring A₁] [semiring A₂] [algebra R A₁] [algebra R A₂] (e : A₁ ≃ₐ[R] A₂) :

def alg_equiv.​of_alg_hom {R : Type u} {A₁ : Type v} {A₂ : Type w} [comm_semiring R] [semiring A₁] [semiring A₂] [algebra R A₁] [algebra R A₂] (f : A₁ →ₐ[R] A₂) (g : A₂ →ₐ[R] A₁) :
f.comp g = alg_hom.id R A₂g.comp f = alg_hom.id R A₁(A₁ ≃ₐ[R] A₂)

If an algebra morphism has an inverse, it is a algebra isomorphism.

Equations
def alg_equiv.​of_bijective {R : Type u} {A₁ : Type v} {A₂ : Type w} [comm_semiring R] [semiring A₁] [semiring A₂] [algebra R A₁] [algebra R A₂] (f : A₁ →ₐ[R] A₂) :
function.bijective f(A₁ ≃ₐ[R] A₂)

Promotes a bijective algebra homomorphism to an algebra equivalence.

Equations
def alg_equiv.​to_linear_equiv {R : Type u} {A₁ : Type v} {A₂ : Type w} [comm_semiring R] [semiring A₁] [semiring A₂] [algebra R A₁] [algebra R A₂] :
(A₁ ≃ₐ[R] A₂)(A₁ ≃ₗ[R] A₂)

Forgetting the multiplicative structures, an equivalence of algebras is a linear equivalence.

Equations
@[simp]
theorem alg_equiv.​to_linear_equiv_apply {R : Type u} {A₁ : Type v} {A₂ : Type w} [comm_semiring R] [semiring A₁] [semiring A₂] [algebra R A₁] [algebra R A₂] (e : A₁ ≃ₐ[R] A₂) (x : A₁) :

@[nolint]
def algebra.​comap  :
Type uType vType wType w

comap R S A is a type alias for A, and has an R-algebra structure defined on it when algebra R S and algebra S A. If S is an R-algebra and A is an S-algebra then algebra.comap.algebra R S A can be used to provide A with a structure of an R-algebra. Other than that, algebra.comap is now deprecated and replaced with is_scalar_tower.

Equations
@[instance]
def algebra.​comap.​inhabited (R : Type u) (S : Type v) (A : Type w) [h : inhabited A] :

Equations
@[instance]
def algebra.​comap.​semiring (R : Type u) (S : Type v) (A : Type w) [h : semiring A] :

Equations
@[instance]
def algebra.​comap.​ring (R : Type u) (S : Type v) (A : Type w) [h : ring A] :

Equations
@[instance]
def algebra.​comap.​comm_semiring (R : Type u) (S : Type v) (A : Type w) [h : comm_semiring A] :

Equations
@[instance]
def algebra.​comap.​comm_ring (R : Type u) (S : Type v) (A : Type w) [h : comm_ring A] :

Equations
@[instance]
def algebra.​comap.​algebra' (R : Type u) (S : Type v) (A : Type w) [comm_semiring S] [semiring A] [h : algebra S A] :

Equations
def algebra.​comap.​to_comap (R : Type u) (S : Type v) (A : Type w) [comm_semiring S] [semiring A] [algebra S A] :

Identity homomorphism A →ₐ[S] comap R S A.

Equations
def algebra.​comap.​of_comap (R : Type u) (S : Type v) (A : Type w) [comm_semiring S] [semiring A] [algebra S A] :

Identity homomorphism comap R S A →ₐ[S] A.

Equations
@[instance]
def algebra.​comap.​algebra (R : Type u) (S : Type v) (A : Type w) [comm_semiring R] [comm_semiring S] [semiring A] [algebra R S] [algebra S A] :

R ⟶ S induces S-Alg ⥤ R-Alg

Equations
def algebra.​to_comap (R : Type u) (S : Type v) (A : Type w) [comm_semiring R] [comm_semiring S] [semiring A] [algebra R S] [algebra S A] :

Embedding of S into comap R S A.

Equations
theorem algebra.​to_comap_apply (R : Type u) (S : Type v) (A : Type w) [comm_semiring R] [comm_semiring S] [semiring A] [algebra R S] [algebra S A] (x : S) :

def alg_hom.​comap {R : Type u} {S : Type v} {A : Type w} {B : Type u₁} [comm_semiring R] [comm_semiring S] [semiring A] [semiring B] [algebra R S] [algebra S A] [algebra S B] :
(A →ₐ[S] B)(algebra.comap R S A →ₐ[R] algebra.comap R S B)

R ⟶ S induces S-Alg ⥤ R-Alg

Equations
@[instance]
def rat.​algebra_rat {α : Type u_1} [division_ring α] [char_zero α] :

Equations
structure subalgebra (R : Type u) (A : Type v) [comm_semiring R] [semiring A] [algebra R A] :
Type v

A subalgebra is a subring that includes the range of algebra_map.

@[instance]
def subalgebra.​has_coe {R : Type u} {A : Type v} [comm_semiring R] [semiring A] [algebra R A] :

Equations
@[instance]
def subalgebra.​has_mem {R : Type u} {A : Type v} [comm_semiring R] [semiring A] [algebra R A] :

Equations
theorem subalgebra.​mem_coe {R : Type u} {A : Type v} [comm_semiring R] [semiring A] [algebra R A] {x : A} {s : subalgebra R A} :
x s x s

@[ext]
theorem subalgebra.​ext {R : Type u} {A : Type v} [comm_semiring R] [semiring A] [algebra R A] {S T : subalgebra R A} :
(∀ (x : A), x S x T)S = T

theorem subalgebra.​ext_iff {R : Type u} {A : Type v} [comm_semiring R] [semiring A] [algebra R A] {S T : subalgebra R A} :
S = T ∀ (x : A), x S x T

theorem subalgebra.​algebra_map_mem {R : Type u} {A : Type v} [comm_semiring R] [semiring A] [algebra R A] (S : subalgebra R A) (r : R) :

theorem subalgebra.​srange_le {R : Type u} {A : Type v} [comm_semiring R] [semiring A] [algebra R A] (S : subalgebra R A) :

theorem subalgebra.​range_subset {R : Type u} {A : Type v} [comm_semiring R] [semiring A] [algebra R A] (S : subalgebra R A) :

theorem subalgebra.​range_le {R : Type u} {A : Type v} [comm_semiring R] [semiring A] [algebra R A] (S : subalgebra R A) :

theorem subalgebra.​one_mem {R : Type u} {A : Type v} [comm_semiring R] [semiring A] [algebra R A] (S : subalgebra R A) :
1 S

theorem subalgebra.​mul_mem {R : Type u} {A : Type v} [comm_semiring R] [semiring A] [algebra R A] (S : subalgebra R A) {x y : A} :
x Sy Sx * y S

theorem subalgebra.​smul_mem {R : Type u} {A : Type v} [comm_semiring R] [semiring A] [algebra R A] (S : subalgebra R A) {x : A} (hx : x S) (r : R) :
r x S

theorem subalgebra.​pow_mem {R : Type u} {A : Type v} [comm_semiring R] [semiring A] [algebra R A] (S : subalgebra R A) {x : A} (hx : x S) (n : ) :
x ^ n S

theorem subalgebra.​zero_mem {R : Type u} {A : Type v} [comm_semiring R] [semiring A] [algebra R A] (S : subalgebra R A) :
0 S

theorem subalgebra.​add_mem {R : Type u} {A : Type v} [comm_semiring R] [semiring A] [algebra R A] (S : subalgebra R A) {x y : A} :
x Sy Sx + y S

theorem subalgebra.​neg_mem {R : Type u} {A : Type v} [comm_ring R] [ring A] [algebra R A] (S : subalgebra R A) {x : A} :
x S-x S

theorem subalgebra.​sub_mem {R : Type u} {A : Type v} [comm_ring R] [ring A] [algebra R A] (S : subalgebra R A) {x y : A} :
x Sy Sx - y S

theorem subalgebra.​nsmul_mem {R : Type u} {A : Type v} [comm_semiring R] [semiring A] [algebra R A] (S : subalgebra R A) {x : A} (hx : x S) (n : ) :
n •ℕ x S

theorem subalgebra.​gsmul_mem {R : Type u} {A : Type v} [comm_ring R] [ring A] [algebra R A] (S : subalgebra R A) {x : A} (hx : x S) (n : ) :
n •ℤ x S

theorem subalgebra.​coe_nat_mem {R : Type u} {A : Type v} [comm_semiring R] [semiring A] [algebra R A] (S : subalgebra R A) (n : ) :
n S

theorem subalgebra.​coe_int_mem {R : Type u} {A : Type v} [comm_ring R] [ring A] [algebra R A] (S : subalgebra R A) (n : ) :
n S

theorem subalgebra.​list_prod_mem {R : Type u} {A : Type v} [comm_semiring R] [semiring A] [algebra R A] (S : subalgebra R A) {L : list A} :
(∀ (x : A), x Lx S)L.prod S

theorem subalgebra.​list_sum_mem {R : Type u} {A : Type v} [comm_semiring R] [semiring A] [algebra R A] (S : subalgebra R A) {L : list A} :
(∀ (x : A), x Lx S)L.sum S

theorem subalgebra.​multiset_prod_mem {R : Type u} {A : Type v} [comm_semiring R] [comm_semiring A] [algebra R A] (S : subalgebra R A) {m : multiset A} :
(∀ (x : A), x mx S)m.prod S

theorem subalgebra.​multiset_sum_mem {R : Type u} {A : Type v} [comm_semiring R] [semiring A] [algebra R A] (S : subalgebra R A) {m : multiset A} :
(∀ (x : A), x mx S)m.sum S

theorem subalgebra.​prod_mem {R : Type u} {A : Type v} [comm_semiring R] [comm_semiring A] [algebra R A] (S : subalgebra R A) {ι : Type w} {t : finset ι} {f : ι → A} :
(∀ (x : ι), x tf x S)t.prod (λ (x : ι), f x) S

theorem subalgebra.​sum_mem {R : Type u} {A : Type v} [comm_semiring R] [semiring A] [algebra R A] (S : subalgebra R A) {ι : Type w} {t : finset ι} {f : ι → A} :
(∀ (x : ι), x tf x S)t.sum (λ (x : ι), f x) S

@[instance]
def subalgebra.​is_add_submonoid {R : Type u} {A : Type v} [comm_semiring R] [semiring A] [algebra R A] (S : subalgebra R A) :

Equations
  • _ = _
@[instance]
def subalgebra.​is_submonoid {R : Type u} {A : Type v} [comm_semiring R] [semiring A] [algebra R A] (S : subalgebra R A) :

Equations
  • _ = _
@[instance]
def subalgebra.​is_subring {R : Type u} {A : Type v} [comm_ring R] [ring A] [algebra R A] (S : subalgebra R A) :

Equations
@[instance]
def subalgebra.​inhabited {R : Type u} {A : Type v} [comm_semiring R] [semiring A] [algebra R A] (S : subalgebra R A) :

Equations
@[instance]
def subalgebra.​semiring (R : Type u) (A : Type v) [comm_semiring R] [semiring A] [algebra R A] (S : subalgebra R A) :

Equations
@[instance]
def subalgebra.​comm_semiring (R : Type u) (A : Type v) [comm_semiring R] [comm_semiring A] [algebra R A] (S : subalgebra R A) :

Equations
@[instance]
def subalgebra.​ring (R : Type u) (A : Type v) [comm_ring R] [ring A] [algebra R A] (S : subalgebra R A) :

Equations
@[instance]
def subalgebra.​comm_ring (R : Type u) (A : Type v) [comm_ring R] [comm_ring A] [algebra R A] (S : subalgebra R A) :

Equations
@[instance]
def subalgebra.​algebra {R : Type u} {A : Type v} [comm_semiring R] [semiring A] [algebra R A] (S : subalgebra R A) :

Equations
@[instance]
def subalgebra.​to_algebra {R : Type u} {A : Type v} [comm_semiring R] [comm_semiring A] [algebra R A] (S : subalgebra R A) :

Equations
@[instance]
def subalgebra.​nontrivial {R : Type u} {A : Type v} [comm_semiring R] [semiring A] [algebra R A] (S : subalgebra R A) [nontrivial A] :

Equations
  • _ = _
def subalgebra.​val {R : Type u} {A : Type v} [comm_semiring R] [semiring A] [algebra R A] (S : subalgebra R A) :

Embedding of a subalgebra into the algebra.

Equations
@[simp]
theorem subalgebra.​val_apply {R : Type u} {A : Type v} [comm_semiring R] [semiring A] [algebra R A] (S : subalgebra R A) (x : S) :
(S.val) x = x

def subalgebra.​to_submodule {R : Type u} {A : Type v} [comm_semiring R] [semiring A] [algebra R A] :
subalgebra R Asubmodule R A

Convert a subalgebra to submodule

Equations
@[instance]
def subalgebra.​coe_to_submodule {R : Type u} {A : Type v} [comm_semiring R] [semiring A] [algebra R A] :

Equations
@[instance]
def subalgebra.​to_submodule.​is_subring {R : Type u} {A : Type v} [comm_ring R] [ring A] [algebra R A] (S : subalgebra R A) :

Equations
  • _ = _
@[simp]
theorem subalgebra.​mem_to_submodule {R : Type u} {A : Type v} [comm_semiring R] [semiring A] [algebra R A] (S : subalgebra R A) {x : A} :
x S x S

theorem subalgebra.​to_submodule_injective {R : Type u} {A : Type v} [comm_semiring R] [semiring A] [algebra R A] {S U : subalgebra R A} :
S = US = U

theorem subalgebra.​to_submodule_inj {R : Type u} {A : Type v} [comm_semiring R] [semiring A] [algebra R A] {S U : subalgebra R A} :
S = U S = U

@[instance]
def subalgebra.​partial_order {R : Type u} {A : Type v} [comm_semiring R] [semiring A] [algebra R A] :

Equations
def subalgebra.​comap {R : Type u} {S : Type v} {A : Type w} [comm_semiring R] [comm_semiring S] [semiring A] [algebra R S] [algebra S A] :

Reinterpret an S-subalgebra as an R-subalgebra in comap R S A.

Equations
def subalgebra.​under {R : Type u} {A : Type v} [comm_semiring R] [comm_semiring A] {i : algebra R A} (S : subalgebra R A) :

If S is an R-subalgebra of A and T is an S-subalgebra of A, then T is an R-subalgebra of A.

Equations
def subalgebra.​map {R : Type u} {A : Type v} {B : Type w} [comm_semiring R] [semiring A] [algebra R A] [semiring B] [algebra R B] :
subalgebra R A(A →ₐ[R] B)subalgebra R B

Transport a subalgebra via an algebra homomorphism.

Equations
def subalgebra.​comap' {R : Type u} {A : Type v} {B : Type w} [comm_semiring R] [semiring A] [algebra R A] [semiring B] [algebra R B] :
subalgebra R B(A →ₐ[R] B)subalgebra R A

Preimage of a subalgebra under an algebra homomorphism.

Equations
theorem subalgebra.​map_le {R : Type u} {A : Type v} {B : Type w} [comm_semiring R] [semiring A] [algebra R A] [semiring B] [algebra R B] {S : subalgebra R A} {f : A →ₐ[R] B} {U : subalgebra R B} :
S.map f U S U.comap' f

@[instance]
def subalgebra.​integral_domain {R : Type u_1} {A : Type u_2} [comm_ring R] [integral_domain A] [algebra R A] (S : subalgebra R A) :

Equations
def alg_hom.​range {R : Type u} {A : Type v} {B : Type w} [comm_semiring R] [semiring A] [semiring B] [algebra R A] [algebra R B] :
(A →ₐ[R] B)subalgebra R B

Range of an alg_hom as a subalgebra.

Equations
def alg_hom.​cod_restrict {R : Type u} {A : Type v} {B : Type w} [comm_semiring R] [semiring A] [semiring B] [algebra R A] [algebra R B] (f : A →ₐ[R] B) (S : subalgebra R B) :
(∀ (x : A), f x S)(A →ₐ[R] S)

Restrict the codomain of an algebra homomorphism.

Equations
theorem alg_hom.​injective_cod_restrict {R : Type u} {A : Type v} {B : Type w} [comm_semiring R] [semiring A] [semiring B] [algebra R A] [algebra R B] (f : A →ₐ[R] B) (S : subalgebra R B) (hf : ∀ (x : A), f x S) :

def algebra.​of_id (R : Type u) (A : Type v) [comm_semiring R] [semiring A] [algebra R A] :

algebra_map as an alg_hom.

Equations
theorem algebra.​of_id_apply {R : Type u} (A : Type v) [comm_semiring R] [semiring A] [algebra R A] (r : R) :

def algebra.​adjoin (R : Type u) {A : Type v} [comm_semiring R] [semiring A] [algebra R A] :
set Asubalgebra R A

The minimal subalgebra that includes s.

Equations
theorem algebra.​gc {R : Type u} {A : Type v} [comm_semiring R] [semiring A] [algebra R A] :

def algebra.​gi {R : Type u} {A : Type v} [comm_semiring R] [semiring A] [algebra R A] :

Galois insertion between adjoin and coe.

Equations
@[instance]
def algebra.​inhabited {R : Type u} {A : Type v} [comm_semiring R] [semiring A] [algebra R A] :

Equations
theorem algebra.​mem_bot {R : Type u} {A : Type v} [comm_semiring R] [semiring A] [algebra R A] {x : A} :

theorem algebra.​mem_top {R : Type u} {A : Type v} [comm_semiring R] [semiring A] [algebra R A] {x : A} :

@[simp]
theorem algebra.​coe_top {R : Type u} {A : Type v} [comm_semiring R] [semiring A] [algebra R A] :

theorem algebra.​eq_top_iff {R : Type u} {A : Type v} [comm_semiring R] [semiring A] [algebra R A] {S : subalgebra R A} :
S = ∀ (x : A), x S

@[simp]
theorem algebra.​map_top {R : Type u} {A : Type v} {B : Type w} [comm_semiring R] [semiring A] [algebra R A] [semiring B] [algebra R B] (f : A →ₐ[R] B) :

@[simp]
theorem algebra.​map_bot {R : Type u} {A : Type v} {B : Type w} [comm_semiring R] [semiring A] [algebra R A] [semiring B] [algebra R B] (f : A →ₐ[R] B) :

@[simp]
theorem algebra.​comap_top {R : Type u} {A : Type v} {B : Type w} [comm_semiring R] [semiring A] [algebra R A] [semiring B] [algebra R B] (f : A →ₐ[R] B) :

def algebra.​to_top {R : Type u} {A : Type v} [comm_semiring R] [semiring A] [algebra R A] :

alg_hom to ⊤ : subalgebra R A.

Equations
theorem algebra.​bijective_algbera_map_iff {R : Type u_1} {A : Type u_2} [field R] [semiring A] [nontrivial A] [algebra R A] :

The bottom subalgebra is isomorphic to the base ring.

Equations
def algebra.​bot_equiv (F : Type u_1) (R : Type u_2) [field F] [semiring R] [nontrivial R] [algebra F R] :

The bottom subalgebra is isomorphic to the field.

Equations
def alg_hom_nat {R : Type u} [semiring R] [algebra R] {S : Type v} [semiring S] [algebra S] :
(R →+* S)(R →ₐ[] S)

Reinterpret a ring_hom as an -algebra homomorphism.

Equations
@[instance]
def algebra_nat (R : Type u_1) [semiring R] :

Semiring ⥤ ℕ-Alg

Equations
def subalgebra_of_subsemiring {R : Type u_1} [semiring R] :

A subsemiring is a -subalgebra.

Equations
@[simp]
theorem mem_subalgebra_of_subsemiring {R : Type u_1} [semiring R] {x : R} {S : subsemiring R} :

@[simp]
theorem span_nat_eq {R : Type u_1} [semiring R] (s : add_submonoid R) :

def alg_hom_int {R : Type u} [comm_ring R] [algebra R] {S : Type v} [comm_ring S] [algebra S] :
(R →+* S)(R →ₐ[] S)

Reinterpret a ring_hom as a -algebra homomorphism.

Equations
@[instance]
def algebra_int (R : Type u_1) [ring R] :

Ring ⥤ ℤ-Alg

Equations
def ring_hom.​to_int_alg_hom {R : Type u_1} {S : Type u_2} [ring R] [ring S] :
(R →+* S)(R →ₐ[] S)

Promote a ring homomorphisms to a -algebra homomorphism.

Equations
def subalgebra_of_subring {R : Type u_1} [ring R] (S : set R) [is_subring S] :

A subring is a -subalgebra.

Equations
@[instance]
def int_algebra_subsingleton {S : Type u_2} [ring S] :

Equations
@[instance]
def nat_algebra_subsingleton {S : Type u_2} [semiring S] :

Equations
@[simp]
theorem mem_subalgebra_of_subring {R : Type u_1} [ring R] {x : R} {S : set R} [is_subring S] :

@[simp]
theorem span_int_eq {R : Type u_1} [ring R] (s : add_subgroup R) :

The R-algebra structure on Π i : I, A i when each A i is an R-algebra.

We couldn't set this up back in algebra.pi_instances because this file imports it.

@[instance]
def pi.​algebra (I : Type u) (f : I → Type v) (α : Type u_1) {r : comm_semiring α} [s : Π (i : I), semiring (f i)] [Π (i : I), algebra α (f i)] :
algebra α (Π (i : I), f i)

Equations
@[simp]
theorem pi.​algebra_map_apply (I : Type u) (f : I → Type v) (α : Type u_1) {r : comm_semiring α} [s : Π (i : I), semiring (f i)] [Π (i : I), algebra α (f i)] (a : α) (i : I) :
(algebra_map α (Π (i : I), f i)) a i = (algebra_map α (f i)) a

theorem algebra_compatible_smul {R : Type u_1} [comm_semiring R] (A : Type u_2) [semiring A] [algebra R A] {M : Type u_3} [add_comm_monoid M] [semimodule A M] [semimodule R M] [is_scalar_tower R A M] (r : R) (m : M) :
r m = (algebra_map R A) r m

theorem smul_algebra_smul_comm {R : Type u_1} [comm_semiring R] {A : Type u_2} [semiring A] [algebra R A] {M : Type u_3} [add_comm_monoid M] [semimodule A M] [semimodule R M] [is_scalar_tower R A M] (r : R) (a : A) (m : M) :
a r m = r a m

@[simp]
theorem map_smul_eq_smul_map {R : Type u_1} [comm_semiring R] {A : Type u_2} [semiring A] [algebra R A] {M : Type u_3} [add_comm_monoid M] [semimodule A M] [semimodule R M] [is_scalar_tower R A M] {N : Type u_4} [add_comm_monoid N] [semimodule A N] [semimodule R N] [is_scalar_tower R A N] (f : M →ₗ[A] N) (r : R) (m : M) :
f (r m) = r f m

@[instance]
def linear_map.​has_coe {R : Type u_1} [comm_semiring R] {A : Type u_2} [semiring A] [algebra R A] {M : Type u_3} [add_comm_monoid M] [semimodule A M] [semimodule R M] [is_scalar_tower R A M] {N : Type u_4} [add_comm_monoid N] [semimodule A N] [semimodule R N] [is_scalar_tower R A N] :
has_coe (M →ₗ[A] N) (M →ₗ[R] N)

Equations
def semimodule.​restrict_scalars' (R : Type u_1) [comm_semiring R] (S : Type u_2) [semiring S] [algebra R S] (E : Type u_3) [add_comm_monoid E] [semimodule S E] :

When E is a module over a ring S, and S is an algebra over R, then E inherits a module structure over R, called module.restrict_scalars' R S E. We do not register this as an instance as S can not be inferred.

Equations
@[nolint]
def semimodule.​restrict_scalars  :
Type u_1Type u_2Type u_3Type u_3

When E is a module over a ring S, and S is an algebra over R, then E inherits a module structure over R, provided as a type synonym module.restrict_scalars R S E := E.

When the R-module structure on E is registered directly (using module.restrict_scalars' for instance, or for S = ℂ and R = ℝ), theorems on module.restrict_scalars R S E can be directly applied to E as these types are the same for the kernel.

Equations
@[instance]
def semimodule.​restrict_scalars.​inhabited (R : Type u_1) (S : Type u_2) (E : Type u_3) [I : inhabited E] :

Equations
@[instance]
def semimodule.​restrict_scalars.​add_comm_monoid (R : Type u_1) (S : Type u_2) (E : Type u_3) [I : add_comm_monoid E] :

Equations
@[instance]
def semimodule.​restrict_scalars.​module_orig (R : Type u_1) (S : Type u_2) [semiring S] (E : Type u_3) [add_comm_monoid E] [I : semimodule S E] :

Equations
theorem semimodule.​restrict_scalars_smul_def (R : Type u_1) [comm_semiring R] (S : Type u_2) [semiring S] [algebra R S] (E : Type u_3) [add_comm_monoid E] [semimodule S E] (c : R) (x : semimodule.restrict_scalars R S E) :
c x = (algebra_map R S) c x

def algebra.​restrict_scalars_equiv (R : Type u_1) [comm_semiring R] (S : Type u_2) [semiring S] [algebra R S] :

module.restrict_scalars R S S is R-linearly equivalent to the original algebra S.

Unfortunately these structures are not generally definitionally equal: the R-module structure on S is part of the data of S, while the R-module structure on module.restrict_scalars R S S comes from the ring homomorphism R →+* S, which is a separate part of the data of S. The field algebra.smul_def' gives the equation we need here.

Equations
@[simp]
theorem algebra.​restrict_scalars_equiv_apply (R : Type u_1) [comm_semiring R] (S : Type u_2) [semiring S] [algebra R S] (s : S) :

@[simp]
theorem algebra.​restrict_scalars_equiv_symm_apply (R : Type u_1) [comm_semiring R] (S : Type u_2) [semiring S] [algebra R S] (s : S) :

@[instance]
def semimodule.​restrict_scalars.​is_scalar_tower (R : Type u_1) [comm_semiring R] {S : Type u_2} [semiring S] [algebra R S] {E : Type u_3} [add_comm_monoid E] [semimodule S E] :

Equations
  • _ = _
def submodule.​restrict_scalars (R : Type u_1) [comm_semiring R] {S : Type u_2} [semiring S] [algebra R S] {E : Type u_3} [add_comm_monoid E] [semimodule S E] :

V.restrict_scalars R is the R-submodule of the R-module given by restriction of scalars, corresponding to V, an S-submodule of the original S-module.

Equations
@[simp]
theorem submodule.​restrict_scalars_carrier (R : Type u_1) [comm_semiring R] {S : Type u_2} [semiring S] [algebra R S] {E : Type u_3} [add_comm_monoid E] [semimodule S E] (V : submodule S E) :

@[simp]
theorem submodule.​restrict_scalars_mem (R : Type u_1) [comm_semiring R] {S : Type u_2} [semiring S] [algebra R S] {E : Type u_3} [add_comm_monoid E] [semimodule S E] (V : submodule S E) (e : E) :

@[simp]
theorem submodule.​restrict_scalars_bot (R : Type u_1) [comm_semiring R] {S : Type u_2} [semiring S] [algebra R S] {E : Type u_3} [add_comm_monoid E] [semimodule S E] :

@[simp]
theorem submodule.​restrict_scalars_top (R : Type u_1) [comm_semiring R] {S : Type u_2} [semiring S] [algebra R S] {E : Type u_3} [add_comm_monoid E] [semimodule S E] :

def linear_map.​restrict_scalars (R : Type u_1) [comm_semiring R] {S : Type u_2} [semiring S] [algebra R S] {E : Type u_3} [add_comm_monoid E] [semimodule S E] {F : Type u_4} [add_comm_monoid F] [semimodule S F] :

The R-linear map induced by an S-linear map when S is an algebra over R.

Equations
@[simp]
theorem linear_map.​coe_restrict_scalars_eq_coe (R : Type u_1) [comm_semiring R] {S : Type u_2} [semiring S] [algebra R S] {E : Type u_3} [add_comm_monoid E] [semimodule S E] {F : Type u_4} [add_comm_monoid F] [semimodule S F] (f : E →ₗ[S] F) :

@[simp]
theorem restrict_scalars_ker (R : Type u_1) [comm_semiring R] {S : Type u_2} [semiring S] [algebra R S] {E : Type u_3} [add_comm_monoid E] [semimodule S E] {F : Type u_4} [add_comm_monoid F] [semimodule S F] (f : E →ₗ[S] F) :

@[instance]
def semimodule.​restrict_scalars.​add_comm_group (R : Type u_1) (S : Type u_2) (E : Type u_3) [I : add_comm_group E] :

Equations
def subspace.​restrict_scalars (𝕜 : Type u_1) [field 𝕜] (𝕜' : Type u_2) [field 𝕜'] [algebra 𝕜 𝕜'] (W : Type u_3) [add_comm_group W] [vector_space 𝕜' W] :
subspace 𝕜' Wsubspace 𝕜 (semimodule.restrict_scalars 𝕜 𝕜' W)

V.restrict_scalars 𝕜 is the 𝕜-subspace of the 𝕜-vector space given by restriction of scalars, corresponding to V, a 𝕜'-subspace of the original 𝕜'-vector space.

Equations

When V is an R-module and W is an S-module, where S is an algebra over R, then the collection of R-linear maps from V to W admits an S-module structure, given by multiplication in the target

@[instance]
def linear_map.​has_scalar_extend_scalars (R : Type u_1) [comm_semiring R] (S : Type u_2) [semiring S] [algebra R S] (V : Type u_3) [add_comm_monoid V] [semimodule R V] (W : Type u_4) [add_comm_monoid W] [semimodule S W] :

The set of R-linear maps admits an S-action by left multiplication

Equations
@[instance]
def linear_map.​module_extend_scalars (R : Type u_1) [comm_semiring R] (S : Type u_2) [semiring S] [algebra R S] (V : Type u_3) [add_comm_monoid V] [semimodule R V] (W : Type u_4) [add_comm_monoid W] [semimodule S W] :

The set of R-linear maps is an S-module

Equations
def smul_algebra_right {R : Type u_1} [comm_semiring R] {S : Type u_2} [semiring S] [algebra R S] {V : Type u_3} [add_comm_monoid V] [semimodule R V] {W : Type u_4} [add_comm_monoid W] [semimodule S W] :

When f is a linear map taking values in S, then λb, f b • x is a linear map.

Equations
@[simp]
theorem smul_algebra_right_apply {R : Type u_1} [comm_semiring R] {S : Type u_2} [semiring S] [algebra R S] {V : Type u_3} [add_comm_monoid V] [semimodule R V] {W : Type u_4} [add_comm_monoid W] [semimodule S W] (f : V →ₗ[R] S) (x : semimodule.restrict_scalars R S W) (c : V) :

When V and W are S-modules, for some R-algebra S, the collection of S-linear maps from V to W forms an R-module. (But not generally an S-module, because S may be non-commutative.)

def linear_map_algebra_has_scalar (R : Type u_1) [comm_semiring R] (S : Type u_2) [semiring S] [algebra R S] (V : Type u_3) [add_comm_monoid V] [semimodule S V] (W : Type u_4) [add_comm_monoid W] [semimodule S W] :

For r : R, and f : V →ₗ[S] W (where S is an R-algebra) we define (r • f) v = f (r • v).

Equations
def linear_map_algebra_module (R : Type u_1) [comm_semiring R] (S : Type u_2) [semiring S] [algebra R S] (V : Type u_3) [add_comm_monoid V] [semimodule S V] (W : Type u_4) [add_comm_monoid W] [semimodule S W] :

The R-module structure on S-linear maps, for S an R-algebra.

Equations
@[simp]
theorem linear_map_algebra_module.​smul_apply {R : Type u_1} [comm_semiring R] {S : Type u_2} [semiring S] [algebra R S] {V : Type u_3} [add_comm_monoid V] [semimodule S V] {W : Type u_4} [add_comm_monoid W] [semimodule S W] (c : R) (f : V →ₗ[S] W) (v : V) :
(c f) v = c f v