mathlib documentation

algebra.algebra.subalgebra

Subalgebras over Commutative Semiring #

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.

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

A subalgebra is a sub(semi)ring that includes the range of algebra_map.

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
@[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
@[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 submodule with a new carrier equal to the old one. Useful to fix definitional equalities.

Equations
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} (hx : x S) (hy : y S) :
x * 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} (hx : x S) (hy : y S) :
x + 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} (hx : 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} (hx : x S) (hy : y S) :
x - 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} (h : ∀ (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} (h : ∀ (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} (h : ∀ (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} (h : ∀ (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} (h : ∀ (x : ι), x tf x S) :
∏ (x : ι) in t, 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} (h : ∀ (x : ι), x tf x S) :
∑ (x : ι) in t, f x S
@[protected, instance]
def subalgebra.is_add_submonoid {R : Type u} {A : Type v} [comm_semiring R] [semiring A] [algebra R A] (S : subalgebra R A) :
@[protected, instance]
def subalgebra.is_submonoid {R : Type u} {A : Type v} [comm_semiring R] [semiring A] [algebra R A] (S : subalgebra R A) :
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
@[protected, instance]
def subalgebra.is_subring {R : Type u} {A : Type v} [comm_ring R] [ring A] [algebra R A] (S : 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]
def subalgebra.to_comm_semiring {R : Type u_1} {A : Type u_2} [comm_semiring R] [comm_semiring A] [algebra R A] (S : subalgebra R A) :
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_semiring {R : Type u_1} {A : Type u_2} [comm_semiring R] [ordered_semiring 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
@[protected, instance]
def subalgebra.to_ordered_comm_ring {R : Type u_1} {A : Type u_2} [comm_ring R] [ordered_comm_ring A] [algebra R A] (S : subalgebra R A) :
Equations

There is no linear_ordered_comm_semiring.

@[protected, instance]
def subalgebra.to_linear_ordered_ring {R : Type u_1} {A : Type u_2} [comm_ring R] [linear_ordered_ring A] [algebra R A] (S : subalgebra 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]
def subalgebra.to_algebra {R : Type u_1} {A : Type u_2} {B : Type u_3} [comm_semiring R] [comm_semiring A] [semiring B] [algebra R A] [algebra A B] (A₀ : subalgebra R A) :
algebra A₀ B
Equations
@[protected, instance]
def subalgebra.nontrivial {R : Type u} {A : Type v} [comm_semiring R] [semiring A] [algebra R A] (S : subalgebra R A) [nontrivial A] :
@[protected, instance]
@[simp, norm_cast]
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
@[simp, norm_cast]
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
@[simp, norm_cast]
theorem subalgebra.coe_zero {R : Type u} {A : Type v} [comm_semiring R] [semiring A] [algebra R A] (S : subalgebra R A) :
0 = 0
@[simp, norm_cast]
theorem subalgebra.coe_one {R : Type u} {A : Type v} [comm_semiring R] [semiring A] [algebra R A] (S : subalgebra R A) :
1 = 1
@[simp, norm_cast]
theorem subalgebra.coe_neg {R : Type u} {A : Type v} [comm_ring R] [ring A] [algebra R A] {S : subalgebra R A} (x : S) :
@[simp, norm_cast]
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} {A : Type v} [comm_semiring R] [semiring A] [algebra R A] (S : subalgebra R A) (r : R) (x : S) :
(r x) = r x
@[simp, norm_cast]
theorem subalgebra.coe_algebra_map {R : Type u} {A : Type v} [comm_semiring R] [semiring A] [algebra R A] (S : subalgebra R A) (r : R) :
@[simp, norm_cast]
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
@[simp, norm_cast]
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
@[simp, norm_cast]
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
def subalgebra.to_submodule {R : Type u} {A : Type v} [comm_semiring R] [semiring A] [algebra R A] (S : subalgebra R A) :

Convert a subalgebra to submodule

Equations
@[protected, 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) :
@[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} :
theorem subalgebra.to_submodule_inj {R : Type u} {A : Type v} [comm_semiring R] [semiring A] [algebra R A] {S U : subalgebra R A} :
@[simp]
theorem subalgebra.mul_self {R : Type u} {A : Type v} [comm_semiring R] [semiring A] [algebra R A] (S : subalgebra R A) :

As submodules, subalgebras are idempotent.

def subalgebra.to_submodule_equiv {R : Type u} {A : Type v} [comm_semiring R] [semiring 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.comap {R : Type u} {S : Type v} {A : Type w} [comm_semiring R] [comm_semiring S] [semiring A] [algebra R S] [algebra S A] (iSB : subalgebra 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) (T : subalgebra S 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] (S : subalgebra R A) (f : A →ₐ[R] B) :

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₂S₁.map f S₂.map f
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] {S₁ S₂ : subalgebra R A} (f : A →ₐ[R] B) (hf : function.injective f) (ih : S₁.map f = S₂.map f) :
S₁ = S₂
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 S.map f ∃ (x : A) (H : x S), f x = y
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] (S : subalgebra R B) (f : A →ₐ[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} :
S.map f U S U.comap' f
@[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) :
x S.comap' f f x S
@[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]
def subalgebra.no_zero_divisors {R : Type u_1} {A : Type u_2} [comm_ring R] [semiring A] [no_zero_divisors A] [algebra R A] (S : subalgebra R A) :
@[protected, instance]
@[protected, 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
@[protected]
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) :

Range of an alg_hom as a subalgebra.

Equations
@[simp]
theorem alg_hom.mem_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) {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] [semiring B] [algebra R A] [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] [semiring B] [algebra R A] [algebra R B] (φ : A →ₐ[R] B) :
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) (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] [semiring B] [algebra R A] [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] [semiring B] [algebra R A] [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] [semiring B] [algebra R A] [algebra R B] (f : A →ₐ[R] B) (S : subalgebra R B) (hf : ∀ (x : A), f x S) :
def alg_hom.range_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) :

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] [semiring B] [algebra R A] [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] [semiring B] [algebra R A] [algebra R B] (ϕ ψ : A →ₐ[R] B) (x : A) :
x ϕ.equalizer ψ ϕ x = ψ x
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)) :
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) :
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
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]
def algebra.gi {R : Type u} {A : Type v} [comm_semiring R] [semiring A] [algebra R A] :

Galois insertion between adjoin and coe.

Equations
@[protected, instance]
def algebra.subalgebra.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.to_submodule_bot {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]
theorem algebra.top_to_submodule {R : Type u} {A : Type v} [comm_semiring R] [semiring A] [algebra R A] :
@[simp]
theorem algebra.top_to_subsemiring {R : Type u} {A : Type v} [comm_semiring R] [semiring A] [algebra R 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
@[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_algebra_map_iff {R : Type u_1} {A : Type u_2} [field R] [semiring A] [nontrivial A] [algebra R A] :
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
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 algebra.top_equiv {R : Type u} {A : Type v} [comm_semiring R] [semiring A] [algebra R A] :

The top subalgebra is isomorphic to the field.

Equations
theorem subalgebra.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)] :
theorem subalgebra.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)] :
theorem subalgebra.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
@[protected, instance]
def subalgebra.unique {R : Type u} [comm_semiring R] :
Equations
def subalgebra_of_subsemiring {R : Type u_1} [semiring R] (S : subsemiring R) :

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
def subalgebra_of_is_subring {R : Type u_1} [ring R] (S : set R) [is_subring S] :

A subset closed under the ring operations is a -subalgebra.

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