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
A →ₐ[R] B:R-algebra homomorphism fromAtoB.A ≃ₐ[R] B:R-algebra equivalence fromAtoB.
- 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
- ideal.quotient_algebra
- normed_algebra.to_algebra
- algebra.id
- algebra.of_subsemiring
- algebra.of_subring
- algebra.of_is_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
- free_algebra.algebra
- polynomial.algebra_of_algebra
- ring_quot.algebra
- tensor_algebra.inst
- universal_enveloping_algebra.inst
- zmod.algebra
- continuous_linear_map.algebra
- set_of.algebra
- continuous_map.algebra
- localization_map.algebra
- localization.algebra
- complex.algebra_over_reals
- bounded_continuous_function.algebra
- Module.Mon_Module_equivalence_Algebra.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
- intermediate_field.algebra
- intermediate_field.to_algebra
- algebra.tensor_product.algebra
- matrix.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_maps 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 := _}
The canonical ring homomorphism algebra_map R A : R →* A for any R-algebra A,
packaged as an R-linear map.
Equations
- algebra.linear_map R A = {to_fun := (algebra_map R A).to_fun, map_add' := _, map_smul' := _}
Equations
- algebra.id R = (ring_hom.id R).to_algebra
Algebra over a subsemiring.
Algebra over a subring.
Algebra over a set that is closed under the ring operations.
Equations
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)
The multiplication map on an algebra, as an R-linear map from A ⊗[R] A to A.
Equations
- algebra.lmul' R A = tensor_product.lift (algebra.lmul R A)
Explicit characterization of the submonoid map in the case of an algebra.
S is made explicit to help with type inference
Equations
- algebra.algebra_map_submonoid S M = submonoid.map ↑(algebra_map R S) M
Equations
- algebra.linear_map.semimodule' R M S = {to_distrib_mul_action := {to_mul_action := {to_has_scalar := {smul := λ (s : S) (f : M →ₗ[R] S), ⇑(⇑(linear_map.llcomp R M S S) (⇑(algebra.lmul R S) s)) f}, one_smul := _, mul_smul := _}, smul_add := _, smul_zero := _}, add_smul := _, zero_smul := _}
A semiring that is an algebra over a commutative ring carries a natural ring structure.
Equations
- algebra.semiring_to_ring R = {add := add_comm_group.add (semimodule.add_comm_monoid_to_add_comm_group R), add_assoc := _, zero := add_comm_group.zero (semimodule.add_comm_monoid_to_add_comm_group R), zero_add := _, add_zero := _, neg := add_comm_group.neg (semimodule.add_comm_monoid_to_add_comm_group R), add_left_neg := _, add_comm := _, mul := semiring.mul infer_instance, mul_assoc := _, one := semiring.one infer_instance, one_mul := _, mul_one := _, left_distrib := _, right_distrib := _}
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.
- 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}
Interpret an algebra equivalence as an algebra homomorphism.
This definition is included for symmetry with the other to_*_hom projections.
The simp normal form is to use the coercion of the has_coe_to_alg_hom instance.
Equations
- alg_equiv.has_coe_to_alg_hom = {coe := alg_equiv.to_alg_hom _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.
Interpret an algebra equivalence as a linear map.
Equations
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 : set A
- one_mem' : 1 ∈ c.carrier
- mul_mem' : ∀ {a b : A}, a ∈ c.carrier → b ∈ c.carrier → a * b ∈ c.carrier
- zero_mem' : 0 ∈ c.carrier
- add_mem' : ∀ {a b : A}, a ∈ c.carrier → b ∈ c.carrier → a + b ∈ c.carrier
- algebra_map_mem' : ∀ (r : R), ⇑(algebra_map R A) r ∈ c.carrier
A subalgebra is a sub(semi)ring that includes the range of algebra_map.
Reinterpret a subalgebra as a subsemiring.
Equations
- subalgebra.has_mem = {mem := λ (x : A) (S : subalgebra R A), x ∈ ↑S}
A subalgebra over a ring is also a subring.
Equations
- subalgebra.semiring R A S = ↑S.to_semiring
Equations
Equations
- subalgebra.ring R A S = subtype.ring
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
- 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.
Preimage of a subalgebra under an algebra homomorphism.
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)).carrier, one_mem' := _, mul_mem' := _, zero_mem' := _, add_mem' := _, 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.carrier, one_mem' := _, mul_mem' := _, zero_mem' := _, add_mem' := _, 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
- subalgebra_of_subring S = {carrier := S.carrier, one_mem' := _, mul_mem' := _, zero_mem' := _, add_mem' := _, algebra_map_mem' := _}
A subset closed under the ring operations is a ℤ-subalgebra.
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 := _}
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.
A-linearly coerce a R-linear map from M to R to a function, given an algebra A over
a commutative semiring R and M a semimodule over R.
Equations
- linear_map.lto_fun R M A = {to_fun := linear_map.to_fun algebra.to_semimodule, map_add' := _, map_smul' := _}
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 := _}