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 subalgebra
s. We also define usual operations on alg_hom
s
(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
A →ₐ[R] B
:R
-algebra homomorphism fromA
toB
.A ≃ₐ[R] B
:R
-algebra equivalence fromA
toB
.
- to_has_scalar : has_scalar R A
- to_ring_hom : R →+* A
- commutes' : ∀ (r : R) (x : A), algebra.to_ring_hom.to_fun r * x = x * algebra.to_ring_hom.to_fun r
- smul_def' : ∀ (r : R) (x : A), r • x = algebra.to_ring_hom.to_fun r * x
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
- normed_algebra.to_algebra
- algebra.id
- algebra.of_subsemiring
- algebra.of_subring
- module.endomorphism_algebra
- matrix_algebra
- algebra.comap.algebra'
- algebra.comap.algebra
- rat.algebra_rat
- subalgebra.algebra
- subalgebra.to_algebra
- algebra_nat
- algebra_int
- pi.algebra
- Algebra.is_algebra
- Algebra.algebra_obj
- Algebra.limit_algebra
- monoid_algebra.algebra
- add_monoid_algebra.algebra
- mv_polynomial.algebra
- polynomial.algebra_of_algebra
- complex.algebra_over_reals
- continuous_linear_map.algebra
- bounded_continuous_function.algebra
- set_of.algebra
- continuous_map.algebra
- adjoin_root.algebra
- polynomial.splitting_field_aux.algebra
- polynomial.splitting_field_aux.algebra'
- polynomial.splitting_field_aux.algebra''
- polynomial.splitting_field_aux.algebra'''
- polynomial.splitting_field.algebra
- algebraic_closure.adjoin_monic.algebra
- algebraic_closure.step.algebra_succ
- algebraic_closure.step.algebra
- algebraic_closure.algebra_of_step
- algebraic_closure.algebra
- fixed_points.algebra
- algebra.tensor_product.algebra
- matrix.algebra
- tensor_algebra.algebra
- localization_map.algebra
- localization.algebra
- mv_power_series.algebra
- power_series.algebra
Embedding R →+* A
given by algebra
structure.
Equations
Creating an algebra from a morphism to the center of a semiring.
Creating an algebra from a morphism to a commutative semiring.
Equations
- i.to_algebra = i.to_algebra' _
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
- algebra.of_semimodule' h₁ h₂ = {to_has_scalar := mul_action.to_has_scalar distrib_mul_action.to_mul_action, to_ring_hom := {to_fun := λ (r : R), r • 1, map_one' := _, map_mul' := _, map_zero' := _, map_add' := _}, commutes' := _, smul_def' := _}
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
- algebra.of_semimodule h₁ h₂ = algebra.of_semimodule' _ _
To prove two algebra structures on a fixed [comm_semiring R] [semiring A]
agree,
it suffices to check the algebra_map
s agree.
Equations
- algebra.to_semimodule = {to_distrib_mul_action := {to_mul_action := {to_has_scalar := algebra.to_has_scalar _inst_4, one_smul := _, mul_smul := _}, smul_add := _, smul_zero := _}, add_smul := _, zero_smul := _}
Equations
- algebra.id R = (ring_hom.id R).to_algebra
Algebra over a subsemiring.
Algebra over a subring.
Equations
- algebra.of_subring S = {to_has_scalar := {smul := λ (s : ↥S) (x : A), ↑s • x}, to_ring_hom := {to_fun := ((algebra_map R A).comp {to_fun := coe coe_to_lift, map_one' := _, map_mul' := _, map_zero' := _, map_add' := _}).to_fun, map_one' := _, map_mul' := _, map_zero' := _, map_add' := _}, commutes' := _, smul_def' := _}
The multiplication in an algebra is a bilinear map.
Equations
- algebra.lmul R A = linear_map.mk₂ R has_mul.mul _ _ _ _
The multiplication on the left in an algebra is a linear map.
Equations
- algebra.lmul_left R A r = ⇑(algebra.lmul R A) r
The multiplication on the right in an algebra is a linear map.
Equations
- algebra.lmul_right R A r = ⇑((algebra.lmul R A).flip) r
Simultaneous multiplication on the left and right is a linear map.
Equations
- algebra.lmul_left_right R A vw = (algebra.lmul_right R A vw.snd).comp (algebra.lmul_left R A vw.fst)
Equations
- module.endomorphism_algebra R M = {to_has_scalar := linear_map.has_scalar _inst_3, to_ring_hom := {to_fun := λ (r : R), r • linear_map.id, map_one' := _, map_mul' := _, map_zero' := _, map_add' := _}, commutes' := _, smul_def' := _}
Equations
- matrix_algebra n R = {to_has_scalar := matrix.has_scalar (comm_semiring.to_semiring R), to_ring_hom := {to_fun := (matrix.scalar n).to_fun, map_one' := _, map_mul' := _, map_zero' := _, map_add' := _}, commutes' := _, smul_def' := _}
- to_fun : A → B
- map_one' : c.to_fun 1 = 1
- map_mul' : ∀ (x y : A), c.to_fun (x * y) = c.to_fun x * c.to_fun y
- map_zero' : c.to_fun 0 = 0
- map_add' : ∀ (x y : A), c.to_fun (x + y) = c.to_fun x + c.to_fun y
- commutes' : ∀ (r : R), c.to_fun (⇑(algebra_map R A) r) = ⇑(algebra_map R B) r
Defining the homomorphism in the category R-Alg.
Equations
- alg_hom.coe_ring_hom = {coe := alg_hom.to_ring_hom _inst_7}
Identity map as an alg_hom
.
Composition of algebra homeomorphisms.
- to_fun : A → B
- inv_fun : B → A
- left_inv : function.left_inverse c.inv_fun c.to_fun
- right_inv : function.right_inverse c.inv_fun c.to_fun
- map_mul' : ∀ (x y : A), c.to_fun (x * y) = c.to_fun x * c.to_fun y
- map_add' : ∀ (x y : A), c.to_fun (x + y) = c.to_fun x + c.to_fun y
- commutes' : ∀ (r : R), c.to_fun (⇑(algebra_map R A) r) = ⇑(algebra_map R B) r
An equivalence of algebras is an equivalence of rings commuting with the actions of scalars.
Equations
- alg_equiv.has_coe_to_fun = {F := λ (x : A₁ ≃ₐ[R] A₂), A₁ → A₂, coe := alg_equiv.to_fun _inst_6}
Equations
- alg_equiv.has_coe_to_ring_equiv = {coe := alg_equiv.to_ring_equiv _inst_6}
Equations
- alg_equiv.inhabited = {default := 1}
Algebra equivalences are reflexive.
Equations
Algebra equivalences are symmetric.
Algebra equivalences are transitive.
Equations
- e₁.trans e₂ = {to_fun := (e₁.to_ring_equiv.trans e₂.to_ring_equiv).to_fun, inv_fun := (e₁.to_ring_equiv.trans e₂.to_ring_equiv).inv_fun, left_inv := _, right_inv := _, map_mul' := _, map_add' := _, commutes' := _}
If an algebra morphism has an inverse, it is a algebra isomorphism.
Promotes a bijective algebra homomorphism to an algebra equivalence.
Forgetting the multiplicative structures, an equivalence of algebras is a linear equivalence.
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
- algebra.comap R S A = A
Equations
- algebra.comap.inhabited R S A = h
Equations
- algebra.comap.semiring R S A = h
Equations
- algebra.comap.ring R S A = h
Equations
- algebra.comap.comm_semiring R S A = h
Equations
- algebra.comap.comm_ring R S A = h
Equations
- algebra.comap.algebra' R S A = h
Identity homomorphism A →ₐ[S] comap R S A
.
Equations
- algebra.comap.to_comap R S A = alg_hom.id S A
Identity homomorphism comap R S A →ₐ[S] A
.
Equations
- algebra.comap.of_comap R S A = alg_hom.id S A
R ⟶ S
induces S-Alg ⥤ R-Alg
Equations
- algebra.comap.algebra R S A = {to_has_scalar := {smul := λ (r : R) (x : algebra.comap R S A), ⇑(algebra_map R S) r • x}, to_ring_hom := {to_fun := ((algebra_map S A).comp (algebra_map R S)).to_fun, map_one' := _, map_mul' := _, map_zero' := _, map_add' := _}, commutes' := _, smul_def' := _}
Embedding of S
into comap R S A
.
R ⟶ S induces S-Alg ⥤ R-Alg
Equations
- rat.algebra_rat = (rat.cast_hom α).to_algebra' rat.algebra_rat._proof_1
- carrier : subsemiring A
- algebra_map_mem' : ∀ (r : R), ⇑(algebra_map R A) r ∈ c.carrier
A subalgebra is a subring that includes the range of algebra_map
.
Equations
- subalgebra.has_coe = {coe := λ (S : subalgebra R A), S.carrier}
Equations
- subalgebra.has_mem = {mem := λ (x : A) (S : subalgebra R A), x ∈ ↑S}
Equations
- _ = _
Equations
- _ = _
Equations
Equations
- subalgebra.semiring R A S = ↑S.to_semiring
Equations
Equations
- subalgebra.ring R A S = subtype.ring
Equations
Equations
Equations
- _ = _
Embedding of a subalgebra into the algebra.
Convert a subalgebra
to submodule
Equations
- subalgebra.coe_to_submodule = {coe := subalgebra.to_submodule _inst_3}
Equations
- _ = _
Equations
- subalgebra.partial_order = {le := λ (S T : subalgebra R A), ↑S ⊆ ↑T, lt := preorder.lt._default (λ (S T : subalgebra R A), ↑S ⊆ ↑T), le_refl := _, le_trans := _, lt_iff_le_not_le := _, le_antisymm := _}
Reinterpret an S
-subalgebra as an R
-subalgebra in comap R 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
.
Transport a subalgebra via an algebra homomorphism.
Equations
- S.map f = {carrier := subsemiring.map ↑f ↑S, algebra_map_mem' := _}
Preimage of a subalgebra under an algebra homomorphism.
Equations
- S.comap' f = {carrier := subsemiring.comap ↑f ↑S, algebra_map_mem' := _}
Equations
Range of an alg_hom
as a subalgebra.
Restrict the codomain of an algebra homomorphism.
algebra_map
as an alg_hom
.
The minimal subalgebra that includes s
.
Equations
- algebra.adjoin R s = {carrier := subsemiring.closure (set.range ⇑(algebra_map R A) ∪ s), algebra_map_mem' := _}
Galois insertion between adjoin
and coe
.
Equations
- algebra.gi = {choice := λ (s : set A) (hs : ↑(algebra.adjoin R s) ≤ s), algebra.adjoin R s, gc := _, le_l_u := _, choice_eq := _}
Equations
- algebra.inhabited = {default := ⊥}
The bottom subalgebra is isomorphic to the base ring.
Equations
The bottom subalgebra is isomorphic to the field.
Equations
Semiring ⥤ ℕ-Alg
Equations
- algebra_nat R = {to_has_scalar := mul_action.to_has_scalar distrib_mul_action.to_mul_action, to_ring_hom := {to_fun := (nat.cast_ring_hom R).to_fun, map_one' := _, map_mul' := _, map_zero' := _, map_add' := _}, commutes' := _, smul_def' := _}
A subsemiring is a ℕ
-subalgebra.
Equations
- subalgebra_of_subsemiring S = {carrier := S, algebra_map_mem' := _}
Ring ⥤ ℤ-Alg
Equations
- algebra_int R = {to_has_scalar := mul_action.to_has_scalar distrib_mul_action.to_mul_action, to_ring_hom := {to_fun := (int.cast_ring_hom R).to_fun, map_one' := _, map_mul' := _, map_zero' := _, map_add' := _}, commutes' := _, smul_def' := _}
A subring is a ℤ
-subalgebra.
Equations
Equations
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.
Equations
- pi.algebra I f α = {to_has_scalar := pi.has_scalar (λ (i : I), mul_action.to_has_scalar), to_ring_hom := {to_fun := (pi.ring_hom (λ (i : I), algebra_map α (f i))).to_fun, map_one' := _, map_mul' := _, map_zero' := _, map_add' := _}, commutes' := _, smul_def' := _}
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
- semimodule.restrict_scalars' R S E = {to_distrib_mul_action := {to_mul_action := {to_has_scalar := {smul := λ (c : R) (x : E), ⇑(algebra_map R S) c • x}, one_smul := _, mul_smul := _}, smul_add := _, smul_zero := _}, add_smul := _, zero_smul := _}
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
- semimodule.restrict_scalars R S E = E
Equations
Equations
Equations
Equations
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
- algebra.restrict_scalars_equiv R S = {to_fun := λ (s : semimodule.restrict_scalars R S S), s, map_add' := _, map_smul' := _, inv_fun := λ (s : S), s, left_inv := _, right_inv := _}
Equations
- _ = _
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.
The R
-linear map induced by an S
-linear map when S
is an algebra over R
.
Equations
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
- subspace.restrict_scalars 𝕜 𝕜' W V = {carrier := (submodule.restrict_scalars 𝕜 V).carrier, zero_mem' := _, add_mem' := _, smul_mem' := _}
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
The set of R
-linear maps admits an S
-action by left multiplication
The set of R
-linear maps is an S
-module
Equations
- linear_map.module_extend_scalars R S V W = {to_distrib_mul_action := {to_mul_action := {to_has_scalar := linear_map.has_scalar_extend_scalars R S V W _inst_7, one_smul := _, mul_smul := _}, smul_add := _, smul_zero := _}, add_smul := _, zero_smul := _}
When f
is a linear map taking values in S
, then λb, f b • x
is a linear map.
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.)
For r : R
, and f : V →ₗ[S] W
(where S
is an R
-algebra) we define
(r • f) v = f (r • v)
.
The R
-module structure on S
-linear maps, for S
an R
-algebra.
Equations
- linear_map_algebra_module R S V W = {to_distrib_mul_action := {to_mul_action := {to_has_scalar := linear_map_algebra_has_scalar R S V W _inst_7, one_smul := _, mul_smul := _}, smul_add := _, smul_zero := _}, add_smul := _, zero_smul := _}