mathlib3 documentation

algebra.algebra.subalgebra.basic

Subalgebras over Commutative Semiring #

THIS FILE IS SYNCHRONIZED WITH MATHLIB4. Any changes to this file require a corresponding PR to mathlib4.

In this file we define subalgebras and the usual operations on them (map, comap).

More lemmas about adjoin can be found in ring_theory.adjoin.

def subalgebra.to_subsemiring {R : Type u} {A : Type v} [comm_semiring R] [semiring A] [algebra R A] (self : subalgebra R A) :

Reinterpret a subalgebra as a subsemiring.

@[protected, instance]
def subalgebra.set_like {R : Type u} {A : Type v} [comm_semiring R] [semiring A] [algebra R A] :
Equations
@[protected, instance]
@[simp]
theorem subalgebra.mem_carrier {R : Type u} {A : Type v} [comm_semiring R] [semiring A] [algebra R A] {s : subalgebra R A} {x : A} :
x s.carrier 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} (h : (x : A), x S x T) :
S = T
@[simp]
theorem subalgebra.mem_to_subsemiring {R : Type u} {A : Type v} [comm_semiring R] [semiring A] [algebra R A] {S : subalgebra R A} {x : A} :
@[simp]
theorem subalgebra.coe_to_subsemiring {R : Type u} {A : Type v} [comm_semiring R] [semiring A] [algebra R A] (S : subalgebra R A) :
@[protected]
def subalgebra.copy {R : Type u} {A : Type v} [comm_semiring R] [semiring A] [algebra R A] (S : subalgebra R A) (s : set A) (hs : s = S) :

Copy of a subalgebra with a new carrier equal to the old one. Useful to fix definitional equalities.

Equations
@[simp]
theorem subalgebra.coe_copy {R : Type u} {A : Type v} [comm_semiring R] [semiring A] [algebra R A] (S : subalgebra R A) (s : set A) (hs : s = S) :
(S.copy s hs) = s
theorem subalgebra.copy_eq {R : Type u} {A : Type v} [comm_semiring R] [semiring A] [algebra R A] (S : subalgebra R A) (s : set A) (hs : s = S) :
S.copy s hs = S
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.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
@[protected, instance]
Equations
@[protected]
theorem subalgebra.one_mem {R : Type u} {A : Type v} [comm_semiring R] [semiring A] [algebra R A] (S : subalgebra R A) :
1 S
@[protected]
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} (hx : x S) (hy : y S) :
x * y S
@[protected]
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
@[protected]
theorem subalgebra.zero_mem {R : Type u} {A : Type v} [comm_semiring R] [semiring A] [algebra R A] (S : subalgebra R A) :
0 S
@[protected]
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} (hx : x S) (hy : y S) :
x + y S
@[protected]
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
@[protected]
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
@[protected]
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} (h : (x : A), x L x S) :
L.prod S
@[protected]
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} (h : (x : A), x L x S) :
L.sum S
@[protected]
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} (h : (x : A), x m x S) :
m.sum S
@[protected]
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} (h : (x : ι), x t f x S) :
t.sum (λ (x : ι), f x) S
@[protected]
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} (h : (x : A), x m x S) :
m.prod S
@[protected]
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} (h : (x : ι), x t f x S) :
t.prod (λ (x : ι), f x) S
@[protected, instance]
def subalgebra.subring_class {R : Type u_1} {A : Type u_2} [comm_ring R] [ring A] [algebra R A] :
@[protected]
theorem subalgebra.neg_mem {R : Type u} {A : Type v} [comm_ring R] [ring A] [algebra R A] (S : subalgebra R A) {x : A} (hx : x S) :
-x S
@[protected]
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} (hx : x S) (hy : y S) :
x - y S
@[protected]
theorem subalgebra.zsmul_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
@[protected]
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
def subalgebra.to_add_submonoid {R : Type u} {A : Type v} [comm_semiring R] [semiring A] [algebra R A] (S : subalgebra R A) :

The projection from a subalgebra of A to an additive submonoid of A.

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

The projection from a subalgebra of A to a submonoid of A.

Equations
def subalgebra.to_subring {R : Type u} {A : Type v} [comm_ring R] [ring A] [algebra R A] (S : subalgebra R A) :

A subalgebra over a ring is also a subring.

Equations
@[simp]
theorem subalgebra.mem_to_subring {R : Type u} {A : Type v} [comm_ring R] [ring A] [algebra R A] {S : subalgebra R A} {x : A} :
@[simp]
theorem subalgebra.coe_to_subring {R : Type u} {A : Type v} [comm_ring R] [ring A] [algebra R A] (S : subalgebra R A) :
theorem subalgebra.to_subring_inj {R : Type u} {A : Type v} [comm_ring R] [ring A] [algebra R A] {S U : subalgebra R A} :
@[protected, instance]
def subalgebra.inhabited {R : Type u} {A : Type v} [comm_semiring R] [semiring A] [algebra R A] (S : subalgebra R A) :
Equations

subalgebras inherit structure from their subsemiring / semiring coercions.

@[protected, instance]
def subalgebra.to_semiring {R : Type u_1} {A : Type u_2} [comm_semiring R] [semiring A] [algebra R A] (S : subalgebra R A) :
Equations
@[protected, instance]
Equations
@[protected, instance]
def subalgebra.to_ring {R : Type u_1} {A : Type u_2} [comm_ring R] [ring A] [algebra R A] (S : subalgebra R A) :
Equations
@[protected, instance]
def subalgebra.to_comm_ring {R : Type u_1} {A : Type u_2} [comm_ring R] [comm_ring A] [algebra R A] (S : subalgebra R A) :
Equations
@[protected, instance]
def subalgebra.to_ordered_ring {R : Type u_1} {A : Type u_2} [comm_ring R] [ordered_ring A] [algebra R A] (S : subalgebra R A) :
Equations
def subalgebra.to_submodule {R : Type u} {A : Type v} [comm_semiring R] [semiring A] [algebra R A] :

The forgetful map from subalgebra to submodule as an order_embedding

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} :
@[simp]

subalgebras inherit structure from their submodule coercions.

@[protected, instance]
def subalgebra.module' {R' : Type u'} {R : Type u} {A : Type v} [comm_semiring R] [semiring A] [algebra R A] (S : subalgebra R A) [semiring R'] [has_smul R' R] [module R' A] [is_scalar_tower R' R A] :
Equations
@[protected, instance]
def subalgebra.module {R : Type u} {A : Type v} [comm_semiring R] [semiring A] [algebra R A] (S : subalgebra R A) :
Equations
@[protected, instance]
def subalgebra.is_scalar_tower {R' : Type u'} {R : Type u} {A : Type v} [comm_semiring R] [semiring A] [algebra R A] (S : subalgebra R A) [semiring R'] [has_smul R' R] [module R' A] [is_scalar_tower R' R A] :
@[protected, instance]
def subalgebra.algebra' {R' : Type u'} {R : Type u} {A : Type v} [comm_semiring R] [semiring A] [algebra R A] (S : subalgebra R A) [comm_semiring R'] [has_smul R' R] [algebra R' A] [is_scalar_tower R' R A] :
Equations
@[protected, instance]
def subalgebra.algebra {R : Type u} {A : Type v} [comm_semiring R] [semiring A] [algebra R A] (S : subalgebra R A) :
Equations
@[protected, instance]
@[protected]
theorem subalgebra.coe_add {R : Type u} {A : Type v} [comm_semiring R] [semiring A] [algebra R A] (S : subalgebra R A) (x y : S) :
(x + y) = x + y
@[protected]
theorem subalgebra.coe_mul {R : Type u} {A : Type v} [comm_semiring R] [semiring A] [algebra R A] (S : subalgebra R A) (x y : S) :
(x * y) = x * y
@[protected]
theorem subalgebra.coe_zero {R : Type u} {A : Type v} [comm_semiring R] [semiring A] [algebra R A] (S : subalgebra R A) :
0 = 0
@[protected]
theorem subalgebra.coe_one {R : Type u} {A : Type v} [comm_semiring R] [semiring A] [algebra R A] (S : subalgebra R A) :
1 = 1
@[protected]
theorem subalgebra.coe_neg {R : Type u} {A : Type v} [comm_ring R] [ring A] [algebra R A] {S : subalgebra R A} (x : S) :
@[protected]
theorem subalgebra.coe_sub {R : Type u} {A : Type v} [comm_ring R] [ring A] [algebra R A] {S : subalgebra R A} (x y : S) :
(x - y) = x - y
@[simp, norm_cast]
theorem subalgebra.coe_smul {R' : Type u'} {R : Type u} {A : Type v} [comm_semiring R] [semiring A] [algebra R A] (S : subalgebra R A) [semiring R'] [has_smul R' R] [module R' A] [is_scalar_tower R' R A] (r : R') (x : S) :
(r x) = r x
@[simp, norm_cast]
theorem subalgebra.coe_algebra_map {R' : Type u'} {R : Type u} {A : Type v} [comm_semiring R] [semiring A] [algebra R A] (S : subalgebra R A) [comm_semiring R'] [has_smul R' R] [algebra R' A] [is_scalar_tower R' R A] (r : R') :
@[protected]
theorem subalgebra.coe_pow {R : Type u} {A : Type v} [comm_semiring R] [semiring A] [algebra R A] (S : subalgebra R A) (x : S) (n : ) :
(x ^ n) = x ^ n
@[protected]
theorem subalgebra.coe_eq_zero {R : Type u} {A : Type v} [comm_semiring R] [semiring A] [algebra R A] (S : subalgebra R A) {x : S} :
x = 0 x = 0
@[protected]
theorem subalgebra.coe_eq_one {R : Type u} {A : Type v} [comm_semiring R] [semiring A] [algebra R A] (S : subalgebra R A) {x : S} :
x = 1 x = 1
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.coe_val {R : Type u} {A : Type v} [comm_semiring R] [semiring A] [algebra R A] (S : subalgebra R A) :
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
@[simp]
@[simp]
theorem subalgebra.to_subring_subtype {R : Type u_1} {A : Type u_2} [comm_ring R] [ring A] [algebra R A] (S : subalgebra R A) :

Linear equivalence between S : submodule R A and S. Though these types are equal, we define it as a linear_equiv to avoid type equalities.

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] (f : A →ₐ[R] B) (S : subalgebra R A) :

Transport a subalgebra via an algebra homomorphism.

Equations
theorem subalgebra.map_mono {R : Type u} {A : Type v} {B : Type w} [comm_semiring R] [semiring A] [algebra R A] [semiring B] [algebra R B] {S₁ S₂ : subalgebra R A} {f : A →ₐ[R] B} :
S₁ S₂ subalgebra.map f S₁ subalgebra.map f S₂
theorem subalgebra.map_injective {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} (hf : function.injective f) :
@[simp]
theorem subalgebra.map_id {R : Type u} {A : Type v} [comm_semiring R] [semiring A] [algebra R A] (S : subalgebra R A) :
theorem subalgebra.map_map {R : Type u} {A : Type v} {B : Type w} {C : Type w'} [comm_semiring R] [semiring A] [algebra R A] [semiring B] [algebra R B] [semiring C] [algebra R C] (S : subalgebra R A) (g : B →ₐ[R] C) (f : A →ₐ[R] B) :
theorem subalgebra.mem_map {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} {y : B} :
y subalgebra.map f S (x : A) (H : x S), f x = y
@[simp]
theorem subalgebra.coe_map {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) :
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] (f : A →ₐ[R] B) (S : subalgebra R B) :

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} :
theorem subalgebra.gc_map_comap {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 subalgebra.mem_comap {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 B) (f : A →ₐ[R] B) (x : A) :
@[simp, norm_cast]
theorem subalgebra.coe_comap {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 B) (f : A →ₐ[R] B) :
@[protected, instance]
@[protected, instance]
def subalgebra.is_domain {R : Type u_1} {A : Type u_2} [comm_ring R] [ring A] [is_domain A] [algebra R A] (S : subalgebra R A) :
def submodule.to_subalgebra {R : Type u_1} {A : Type u_2} [comm_semiring R] [semiring A] [algebra R A] (p : submodule R A) (h_one : 1 p) (h_mul : (x y : A), x p y p x * y p) :

A submodule containing 1 and closed under multiplication is a subalgebra.

Equations
@[simp]
theorem submodule.mem_to_subalgebra {R : Type u_1} {A : Type u_2} [comm_semiring R] [semiring A] [algebra R A] {p : submodule R A} {h_one : 1 p} {h_mul : (x y : A), x p y p x * y p} {x : A} :
x p.to_subalgebra h_one h_mul x p
@[simp]
theorem submodule.coe_to_subalgebra {R : Type u_1} {A : Type u_2} [comm_semiring R] [semiring A] [algebra R A] (p : submodule R A) (h_one : 1 p) (h_mul : (x y : A), x p y p x * y p) :
(p.to_subalgebra h_one h_mul) = p
@[simp]
theorem submodule.to_subalgebra_mk {R : Type u_1} {A : Type u_2} [comm_semiring R] [semiring A] [algebra R A] (s : set A) (h0 : 0 s) (hadd : {a b : A}, a s b s a + b s) (hsmul : (c : R) {x : A}, x s c x s) (h1 : 1 {carrier := s, add_mem' := hadd, zero_mem' := h0, smul_mem' := hsmul}) (hmul : (x y : A), x {carrier := s, add_mem' := hadd, zero_mem' := h0, smul_mem' := hsmul} y {carrier := s, add_mem' := hadd, zero_mem' := h0, smul_mem' := hsmul} x * y {carrier := s, add_mem' := hadd, zero_mem' := h0, smul_mem' := hsmul}) :
{carrier := s, add_mem' := hadd, zero_mem' := h0, smul_mem' := hsmul}.to_subalgebra h1 hmul = {carrier := s, mul_mem' := hmul, one_mem' := h1, add_mem' := hadd, zero_mem' := h0, algebra_map_mem' := _}
@[simp]
theorem submodule.to_subalgebra_to_submodule {R : Type u_1} {A : Type u_2} [comm_semiring R] [semiring A] [algebra R A] (p : submodule R A) (h_one : 1 p) (h_mul : (x y : A), x p y p x * y p) :
@[protected]
def alg_hom.range {R : Type u} {A : Type v} {B : Type w} [comm_semiring R] [semiring A] [algebra R A] [semiring B] [algebra R B] (φ : A →ₐ[R] B) :

Range of an alg_hom as a subalgebra.

Equations
Instances for alg_hom.range
@[simp]
theorem alg_hom.mem_range {R : Type u} {A : Type v} {B : Type w} [comm_semiring R] [semiring A] [algebra R A] [semiring B] [algebra R B] (φ : A →ₐ[R] B) {y : B} :
y φ.range (x : A), φ x = y
theorem alg_hom.mem_range_self {R : Type u} {A : Type v} {B : Type w} [comm_semiring R] [semiring A] [algebra R A] [semiring B] [algebra R B] (φ : A →ₐ[R] B) (x : A) :
φ x φ.range
@[simp]
theorem alg_hom.coe_range {R : Type u} {A : Type v} {B : Type w} [comm_semiring R] [semiring A] [algebra R A] [semiring B] [algebra R B] (φ : A →ₐ[R] B) :
theorem alg_hom.range_comp {R : Type u} {A : Type v} {B : Type w} {C : Type w'} [comm_semiring R] [semiring A] [algebra R A] [semiring B] [algebra R B] [semiring C] [algebra R C] (f : A →ₐ[R] B) (g : B →ₐ[R] C) :
theorem alg_hom.range_comp_le_range {R : Type u} {A : Type v} {B : Type w} {C : Type w'} [comm_semiring R] [semiring A] [algebra R A] [semiring B] [algebra R B] [semiring C] [algebra R C] (f : A →ₐ[R] B) (g : B →ₐ[R] C) :
def alg_hom.cod_restrict {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) (S : subalgebra R B) (hf : (x : A), f x S) :

Restrict the codomain of an algebra homomorphism.

Equations
@[simp]
theorem alg_hom.val_comp_cod_restrict {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) (S : subalgebra R B) (hf : (x : A), f x S) :
S.val.comp (f.cod_restrict S hf) = f
@[simp]
theorem alg_hom.coe_cod_restrict {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) (S : subalgebra R B) (hf : (x : A), f x S) (x : A) :
((f.cod_restrict S hf) x) = f x
theorem alg_hom.injective_cod_restrict {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) (S : subalgebra R B) (hf : (x : A), f x S) :
@[reducible]
def alg_hom.range_restrict {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) :

Restrict the codomain of a alg_hom f to f.range.

This is the bundled version of set.range_factorization.

Equations
def alg_hom.equalizer {R : Type u} {A : Type v} {B : Type w} [comm_semiring R] [semiring A] [algebra R A] [semiring B] [algebra R B] (ϕ ψ : A →ₐ[R] B) :

The equalizer of two R-algebra homomorphisms

Equations
@[simp]
theorem alg_hom.mem_equalizer {R : Type u} {A : Type v} {B : Type w} [comm_semiring R] [semiring A] [algebra R A] [semiring B] [algebra R B] (ϕ ψ : A →ₐ[R] B) (x : A) :
x ϕ.equalizer ψ ϕ x = ψ x
@[protected, instance]
def alg_hom.fintype_range {R : Type u} {A : Type v} {B : Type w} [comm_semiring R] [semiring A] [algebra R A] [semiring B] [algebra R B] [fintype A] [decidable_eq B] (φ : A →ₐ[R] B) :

The range of a morphism of algebras is a fintype, if the domain is a fintype.

Note that this instance can cause a diamond with subtype.fintype if B is also a fintype.

Equations
def alg_equiv.of_left_inverse {R : Type u} {A : Type v} {B : Type w} [comm_semiring R] [semiring A] [semiring B] [algebra R A] [algebra R B] {g : B A} {f : A →ₐ[R] B} (h : function.left_inverse g f) :

Restrict an algebra homomorphism with a left inverse to an algebra isomorphism to its range.

This is a computable alternative to alg_equiv.of_injective.

Equations
@[simp]
theorem alg_equiv.of_left_inverse_apply {R : Type u} {A : Type v} {B : Type w} [comm_semiring R] [semiring A] [semiring B] [algebra R A] [algebra R B] {g : B A} {f : A →ₐ[R] B} (h : function.left_inverse g f) (x : A) :
@[simp]
theorem alg_equiv.of_left_inverse_symm_apply {R : Type u} {A : Type v} {B : Type w} [comm_semiring R] [semiring A] [semiring B] [algebra R A] [algebra R B] {g : B A} {f : A →ₐ[R] B} (h : function.left_inverse g f) (x : (f.range)) :
noncomputable def alg_equiv.of_injective {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) (hf : function.injective f) :

Restrict an injective algebra homomorphism to an algebra isomorphism

Equations
@[simp]
theorem alg_equiv.of_injective_apply {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) (hf : function.injective f) (x : A) :
noncomputable def alg_equiv.of_injective_field {R : Type u} [comm_semiring R] {E : Type u_1} {F : Type u_2} [division_ring E] [semiring F] [nontrivial F] [algebra R E] [algebra R F] (f : E →ₐ[R] F) :

Restrict an algebra homomorphism between fields to an algebra isomorphism

Equations
@[simp]
theorem alg_equiv.subalgebra_map_apply {R : Type u} {A : Type v} {B : Type w} [comm_semiring R] [semiring A] [semiring B] [algebra R A] [algebra R B] (e : A ≃ₐ[R] B) (S : subalgebra R A) (ᾰ : (S.to_subsemiring)) :
def alg_equiv.subalgebra_map {R : Type u} {A : Type v} {B : Type w} [comm_semiring R] [semiring A] [semiring B] [algebra R A] [algebra R B] (e : A ≃ₐ[R] B) (S : subalgebra R A) :

Given an equivalence e : A ≃ₐ[R] B of R-algebras and a subalgebra S of A, subalgebra_map is the induced equivalence between S and S.map e

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

The minimal subalgebra that includes s.

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

Galois insertion between adjoin and coe.

Equations
@[simp]
theorem algebra.coe_top {R : Type u} {A : Type v} [comm_semiring R] [semiring A] [algebra R A] :
@[simp]
theorem algebra.mem_top {R : Type u} {A : Type v} [comm_semiring R] [semiring A] [algebra R A] {x : A} :
@[simp]
@[simp]
theorem algebra.top_to_subring {R : Type u_1} {A : Type u_2} [comm_ring R] [ring A] [algebra R A] :
@[simp]
@[simp]
theorem algebra.to_subsemiring_eq_top {R : Type u} {A : Type v} [comm_semiring R] [semiring A] [algebra R A] {S : subalgebra R A} :
@[simp]
theorem algebra.to_subring_eq_top {R : Type u_1} {A : Type u_2} [comm_ring R] [ring A] [algebra R A] {S : subalgebra R A} :
theorem algebra.mem_sup_left {R : Type u} {A : Type v} [comm_semiring R] [semiring A] [algebra R A] {S T : subalgebra R A} {x : A} :
x S x S T
theorem algebra.mem_sup_right {R : Type u} {A : Type v} [comm_semiring R] [semiring A] [algebra R A] {S T : subalgebra R A} {x : A} :
x T x S T
theorem algebra.mul_mem_sup {R : Type u} {A : Type v} [comm_semiring R] [semiring A] [algebra R A] {S T : subalgebra R A} {x y : A} (hx : x S) (hy : y T) :
x * y S T
theorem algebra.map_sup {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) (S T : subalgebra R A) :
@[simp, norm_cast]
theorem algebra.coe_inf {R : Type u} {A : Type v} [comm_semiring R] [semiring A] [algebra R A] (S T : subalgebra R A) :
(S T) = S T
@[simp]
theorem algebra.mem_inf {R : Type u} {A : Type v} [comm_semiring R] [semiring A] [algebra R A] {S T : subalgebra R A} {x : A} :
x S T x S x T
@[simp]
@[simp, norm_cast]
theorem algebra.coe_Inf {R : Type u} {A : Type v} [comm_semiring R] [semiring A] [algebra R A] (S : set (subalgebra R A)) :
(has_Inf.Inf S) = (s : subalgebra R A) (H : s S), s
theorem algebra.mem_Inf {R : Type u} {A : Type v} [comm_semiring R] [semiring A] [algebra R A] {S : set (subalgebra R A)} {x : A} :
x has_Inf.Inf S (p : subalgebra R A), p S x p
@[simp, norm_cast]
theorem algebra.coe_infi {R : Type u} {A : Type v} [comm_semiring R] [semiring A] [algebra R A] {ι : Sort u_1} {S : ι subalgebra R A} :
( (i : ι), S i) = (i : ι), (S i)
theorem algebra.mem_infi {R : Type u} {A : Type v} [comm_semiring R] [semiring A] [algebra R A] {ι : Sort u_1} {S : ι subalgebra R A} {x : A} :
(x (i : ι), S i) (i : ι), x S i
@[simp]
theorem algebra.infi_to_submodule {R : Type u} {A : Type v} [comm_semiring R] [semiring A] [algebra R A] {ι : Sort u_1} (S : ι subalgebra R A) :
@[protected, instance]
Equations
theorem algebra.mem_bot {R : Type u} {A : Type v} [comm_semiring R] [semiring A] [algebra R A] {x : A} :
@[simp]
theorem algebra.coe_bot {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
theorem algebra.range_top_iff_surjective {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.range_id {R : Type u} {A : Type v} [comm_semiring R] [semiring A] [algebra R A] :
@[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
noncomputable def algebra.bot_equiv_of_injective {R : Type u} {A : Type v} [comm_semiring R] [semiring A] [algebra R A] (h : function.injective (algebra_map R A)) :

The bottom subalgebra is isomorphic to the base ring.

Equations
noncomputable 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
@[simp]
theorem algebra.bot_equiv_symm_apply (F : Type u_1) (R : Type u_2) [field F] [semiring R] [nontrivial R] [algebra F R] (ᾰ : F) :
@[simp]
theorem subalgebra.top_equiv_symm_apply_coe {R : Type u} {A : Type v} [comm_semiring R] [semiring A] [algebra R A] (ᾰ : A) :
@[simp]
theorem subalgebra.top_equiv_apply {R : Type u} {A : Type v} [comm_semiring R] [semiring A] [algebra R A] (ᾰ : ) :
def subalgebra.top_equiv {R : Type u} {A : Type v} [comm_semiring R] [semiring A] [algebra R A] :

The top subalgebra is isomorphic to the algebra.

This is the algebra version of submodule.top_equiv.

Equations
@[protected, instance]
@[protected, instance]
def alg_hom.subsingleton {R : Type u} {A : Type v} {B : Type w} [comm_semiring R] [semiring A] [algebra R A] [semiring B] [algebra R B] [subsingleton (subalgebra R A)] :
@[protected, instance]
def alg_equiv.subsingleton_left {R : Type u} {A : Type v} {B : Type w} [comm_semiring R] [semiring A] [algebra R A] [semiring B] [algebra R B] [subsingleton (subalgebra R A)] :
@[protected, instance]
def alg_equiv.subsingleton_right {R : Type u} {A : Type v} {B : Type w} [comm_semiring R] [semiring A] [algebra R A] [semiring B] [algebra R B] [subsingleton (subalgebra R B)] :
theorem subalgebra.range_val {R : Type u} {A : Type v} [comm_semiring R] [semiring A] [algebra R A] (S : subalgebra R A) :
S.val.range = S
def subalgebra.inclusion {R : Type u} {A : Type v} [comm_semiring R] [semiring A] [algebra R A] {S T : subalgebra R A} (h : S T) :

The map S → T when S is a subalgebra contained in the subalgebra T.

This is the subalgebra version of submodule.of_le, or subring.inclusion

Equations
@[simp]
@[simp]
theorem subalgebra.inclusion_mk {R : Type u} {A : Type v} [comm_semiring R] [semiring A] [algebra R A] {S T : subalgebra R A} (h : S T) (x : A) (hx : x S) :
(subalgebra.inclusion h) x, hx⟩ = x, _⟩
theorem subalgebra.inclusion_right {R : Type u} {A : Type v} [comm_semiring R] [semiring A] [algebra R A] {S T : subalgebra R A} (h : S T) (x : T) (m : x S) :
@[simp]
theorem subalgebra.inclusion_inclusion {R : Type u} {A : Type v} [comm_semiring R] [semiring A] [algebra R A] {S T U : subalgebra R A} (hst : S T) (htu : T U) (x : S) :
@[simp]
theorem subalgebra.coe_inclusion {R : Type u} {A : Type v} [comm_semiring R] [semiring A] [algebra R A] {S T : subalgebra R A} (h : S T) (s : S) :
def subalgebra.equiv_of_eq {R : Type u} {A : Type v} [comm_semiring R] [semiring A] [algebra R A] (S T : subalgebra R A) (h : S = T) :

Two subalgebras that are equal are also equivalent as algebras.

This is the subalgebra version of linear_equiv.of_eq and equiv.set.of_eq.

Equations
@[simp]
theorem subalgebra.equiv_of_eq_apply {R : Type u} {A : Type v} [comm_semiring R] [semiring A] [algebra R A] (S T : subalgebra R A) (h : S = T) (x : S) :
(S.equiv_of_eq T h) x = x, _⟩
@[simp]
theorem subalgebra.equiv_of_eq_symm {R : Type u} {A : Type v} [comm_semiring R] [semiring A] [algebra R A] (S T : subalgebra R A) (h : S = T) :
@[simp]
@[simp]
theorem subalgebra.equiv_of_eq_trans {R : Type u} {A : Type v} [comm_semiring R] [semiring A] [algebra R A] (S T U : subalgebra R A) (hST : S = T) (hTU : T = U) :
(S.equiv_of_eq T hST).trans (T.equiv_of_eq U hTU) = S.equiv_of_eq U _
def subalgebra.prod {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) (S₁ : subalgebra R B) :
subalgebra R (A × B)

The product of two subalgebras is a subalgebra.

Equations
@[simp]
theorem subalgebra.coe_prod {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) (S₁ : subalgebra R B) :
(S.prod S₁) = S ×ˢ S₁
@[simp]
theorem subalgebra.mem_prod {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} {S₁ : subalgebra R B} {x : A × B} :
x S.prod S₁ x.fst S x.snd S₁
@[simp]
theorem subalgebra.prod_top {R : Type u} {A : Type v} {B : Type w} [comm_semiring R] [semiring A] [algebra R A] [semiring B] [algebra R B] :
theorem subalgebra.prod_mono {R : Type u} {A : Type v} {B : Type w} [comm_semiring R] [semiring A] [algebra R A] [semiring B] [algebra R B] {S T : subalgebra R A} {S₁ T₁ : subalgebra R B} :
S T S₁ T₁ S.prod S₁ T.prod T₁
@[simp]
theorem subalgebra.prod_inf_prod {R : Type u} {A : Type v} {B : Type w} [comm_semiring R] [semiring A] [algebra R A] [semiring B] [algebra R B] {S T : subalgebra R A} {S₁ T₁ : subalgebra R B} :
S.prod S₁ T.prod T₁ = (S T).prod (S₁ T₁)
theorem subalgebra.coe_supr_of_directed {R : Type u} {A : Type v} [comm_semiring R] [semiring A] [algebra R A] {ι : Type u_1} [nonempty ι] {S : ι subalgebra R A} (dir : directed has_le.le S) :
(supr S) = (i : ι), (S i)
noncomputable def subalgebra.supr_lift {R : Type u} {A : Type v} {B : Type w} [comm_semiring R] [semiring A] [algebra R A] [semiring B] [algebra R B] {ι : Type u_1} [nonempty ι] (K : ι subalgebra R A) (dir : directed has_le.le K) (f : Π (i : ι), (K i) →ₐ[R] B) (hf : (i j : ι) (h : K i K j), f i = (f j).comp (subalgebra.inclusion h)) (T : subalgebra R A) (hT : T = supr K) :

Define an algebra homomorphism on a directed supremum of subalgebras by defining it on each subalgebra, and proving that it agrees on the intersection of subalgebras.

Equations
@[simp]
theorem subalgebra.supr_lift_inclusion {R : Type u} {A : Type v} {B : Type w} [comm_semiring R] [semiring A] [algebra R A] [semiring B] [algebra R B] {ι : Type u_1} [nonempty ι] {K : ι subalgebra R A} {dir : directed has_le.le K} {f : Π (i : ι), (K i) →ₐ[R] B} {hf : (i j : ι) (h : K i K j), f i = (f j).comp (subalgebra.inclusion h)} {T : subalgebra R A} {hT : T = supr K} {i : ι} (x : (K i)) (h : K i T) :
(subalgebra.supr_lift K dir f hf T hT) ((subalgebra.inclusion h) x) = (f i) x
@[simp]
theorem subalgebra.supr_lift_comp_inclusion {R : Type u} {A : Type v} {B : Type w} [comm_semiring R] [semiring A] [algebra R A] [semiring B] [algebra R B] {ι : Type u_1} [nonempty ι] {K : ι subalgebra R A} {dir : directed has_le.le K} {f : Π (i : ι), (K i) →ₐ[R] B} {hf : (i j : ι) (h : K i K j), f i = (f j).comp (subalgebra.inclusion h)} {T : subalgebra R A} {hT : T = supr K} {i : ι} (h : K i T) :
@[simp]
theorem subalgebra.supr_lift_mk {R : Type u} {A : Type v} {B : Type w} [comm_semiring R] [semiring A] [algebra R A] [semiring B] [algebra R B] {ι : Type u_1} [nonempty ι] {K : ι subalgebra R A} {dir : directed has_le.le K} {f : Π (i : ι), (K i) →ₐ[R] B} {hf : (i j : ι) (h : K i K j), f i = (f j).comp (subalgebra.inclusion h)} {T : subalgebra R A} {hT : T = supr K} {i : ι} (x : (K i)) (hx : x T) :
(subalgebra.supr_lift K dir f hf T hT) x, hx⟩ = (f i) x
theorem subalgebra.supr_lift_of_mem {R : Type u} {A : Type v} {B : Type w} [comm_semiring R] [semiring A] [algebra R A] [semiring B] [algebra R B] {ι : Type u_1} [nonempty ι] {K : ι subalgebra R A} {dir : directed has_le.le K} {f : Π (i : ι), (K i) →ₐ[R] B} {hf : (i j : ι) (h : K i K j), f i = (f j).comp (subalgebra.inclusion h)} {T : subalgebra R A} {hT : T = supr K} {i : ι} (x : T) (hx : x K i) :
(subalgebra.supr_lift K dir f hf T hT) x = (f i) x, hx⟩

Actions by subalgebras #

These are just copies of the definitions about subsemiring starting from subring.mul_action.

@[protected, instance]
def subalgebra.has_smul {R : Type u} {A : Type v} [comm_semiring R] [semiring A] [algebra R A] {α : Type u_1} [has_smul A α] (S : subalgebra R A) :

The action by a subalgebra is the action by the underlying algebra.

Equations
theorem subalgebra.smul_def {R : Type u} {A : Type v} [comm_semiring R] [semiring A] [algebra R A] {α : Type u_1} [has_smul A α] {S : subalgebra R A} (g : S) (m : α) :
g m = g m
@[protected, instance]
def subalgebra.smul_comm_class_left {R : Type u} {A : Type v} [comm_semiring R] [semiring A] [algebra R A] {α : Type u_1} {β : Type u_2} [has_smul A β] [has_smul α β] [smul_comm_class A α β] (S : subalgebra R A) :
@[protected, instance]
def subalgebra.smul_comm_class_right {R : Type u} {A : Type v} [comm_semiring R] [semiring A] [algebra R A] {α : Type u_1} {β : Type u_2} [has_smul α β] [has_smul A β] [smul_comm_class α A β] (S : subalgebra R A) :
@[protected, instance]
def subalgebra.is_scalar_tower_left {R : Type u} {A : Type v} [comm_semiring R] [semiring A] [algebra R A] {α : Type u_1} {β : Type u_2} [has_smul α β] [has_smul A α] [has_smul A β] [is_scalar_tower A α β] (S : subalgebra R A) :

Note that this provides is_scalar_tower S R R which is needed by smul_mul_assoc.

@[protected, instance]
def subalgebra.is_scalar_tower_mid {R : Type u_1} {S : Type u_2} {T : Type u_3} [comm_semiring R] [semiring S] [add_comm_monoid T] [algebra R S] [module R T] [module S T] [is_scalar_tower R S T] (S' : subalgebra R S) :
@[protected, instance]
def subalgebra.has_faithful_smul {R : Type u} {A : Type v} [comm_semiring R] [semiring A] [algebra R A] {α : Type u_1} [has_smul A α] [has_faithful_smul A α] (S : subalgebra R A) :
@[protected, instance]
def subalgebra.mul_action {R : Type u} {A : Type v} [comm_semiring R] [semiring A] [algebra R A] {α : Type u_1} [mul_action A α] (S : subalgebra R A) :

The action by a subalgebra is the action by the underlying algebra.

Equations
@[protected, instance]
def subalgebra.distrib_mul_action {R : Type u} {A : Type v} [comm_semiring R] [semiring A] [algebra R A] {α : Type u_1} [add_monoid α] [distrib_mul_action A α] (S : subalgebra R A) :

The action by a subalgebra is the action by the underlying algebra.

Equations
@[protected, instance]
def subalgebra.smul_with_zero {R : Type u} {A : Type v} [comm_semiring R] [semiring A] [algebra R A] {α : Type u_1} [has_zero α] [smul_with_zero A α] (S : subalgebra R A) :

The action by a subalgebra is the action by the underlying algebra.

Equations
@[protected, instance]

The action by a subalgebra is the action by the underlying algebra.

Equations
@[protected, instance]
def subalgebra.module_left {R : Type u} {A : Type v} [comm_semiring R] [semiring A] [algebra R A] {α : Type u_1} [add_comm_monoid α] [module A α] (S : subalgebra R A) :

The action by a subalgebra is the action by the underlying algebra.

Equations
@[protected, instance]
def subalgebra.to_algebra {α : Type u_1} {R : Type u_2} {A : Type u_3} [comm_semiring R] [comm_semiring A] [semiring α] [algebra R A] [algebra A α] (S : subalgebra R A) :

The action by a subalgebra is the action by the underlying algebra.

Equations
theorem subalgebra.algebra_map_eq {α : Type u_1} {R : Type u_2} {A : Type u_3} [comm_semiring R] [comm_semiring A] [semiring α] [algebra R A] [algebra A α] (S : subalgebra R A) :
@[simp]
@[simp]
theorem subalgebra.range_algebra_map {R : Type u_1} {A : Type u_2} [comm_ring R] [comm_ring A] [algebra R A] (S : subalgebra R A) :
@[protected, instance]
theorem set.algebra_map_mem_center {R : Type u} {A : Type v} [comm_semiring R] [semiring A] [algebra R A] (r : R) :
def subalgebra.center (R : Type u) (A : Type v) [comm_semiring R] [semiring A] [algebra R A] :

The center of an algebra is the set of elements which commute with every element. They form a subalgebra.

Equations
Instances for subalgebra.center
@[simp]
@[simp]
theorem subalgebra.mem_center_iff {R : Type u} {A : Type v} [comm_semiring R] [semiring A] [algebra R A] {a : A} :
a subalgebra.center R A (b : A), b * a = a * b
@[simp]
theorem set.algebra_map_mem_centralizer {R : Type u} {A : Type v} [comm_semiring R] [semiring A] [algebra R A] {s : set A} (r : R) :
def subalgebra.centralizer (R : Type u) {A : Type v} [comm_semiring R] [semiring A] [algebra R A] (s : set A) :

The centralizer of a set as a subalgebra.

Equations
@[simp, norm_cast]
theorem subalgebra.coe_centralizer (R : Type u) {A : Type v} [comm_semiring R] [semiring A] [algebra R A] (s : set A) :
theorem subalgebra.mem_centralizer_iff (R : Type u) {A : Type v} [comm_semiring R] [semiring A] [algebra R A] {s : set A} {z : A} :
z subalgebra.centralizer R s (g : A), g s g * z = z * g
theorem subalgebra.centralizer_le (R : Type u) {A : Type v} [comm_semiring R] [semiring A] [algebra R A] (s t : set A) (h : s t) :
theorem subalgebra.mem_of_finset_sum_eq_one_of_pow_smul_mem {R : Type u} [comm_semiring R] {S : Type u_1} [comm_ring S] [algebra R S] (S' : subalgebra R S) {ι : Type u_2} (ι' : finset ι) (s l : ι S) (e : ι'.sum (λ (i : ι), l i * s i) = 1) (hs : (i : ι), s i S') (hl : (i : ι), l i S') (x : S) (H : (i : ι), (n : ), s i ^ n x S') :
x S'

Suppose we are given ∑ i, lᵢ * sᵢ = 1 in S, and S' a subalgebra of S that contains lᵢ and sᵢ. To check that an x : S falls in S', we only need to show that r ^ n • x ∈ M' for some n for each r : s.

theorem subalgebra.mem_of_span_eq_top_of_smul_pow_mem {R : Type u} [comm_semiring R] {S : Type u_1} [comm_ring S] [algebra R S] (S' : subalgebra R S) (s : set S) (l : s →₀ S) (hs : (finsupp.total s S S coe) l = 1) (hs' : s S') (hl : (i : s), l i S') (x : S) (H : (r : s), (n : ), r ^ n x S') :
x S'

A subsemiring is a -subalgebra.

Equations
@[simp]
theorem mem_subalgebra_of_subsemiring {R : Type u_1} [semiring R] {x : R} {S : subsemiring R} :
def subalgebra_of_subring {R : Type u_1} [ring R] (S : subring R) :

A subring is a -subalgebra.

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