Modules over a ring
In this file we define
semimodule R M: an additive commutative monoidMis asemimoduleover asemiringRif forr : Randx : Mtheir "scalar multiplicationr • x : Mis defined, and the operation•satisfies some natural associativity and distributivity axioms similar to those on a ring.module R M: same assemimodule R Mbut assumes thatRis aringandMis an additive commutative group.vector_space k M: same assemimodule k Mandmodule k Mbut assumes thatkis afieldandMis an additive commutative group.linear_map R M M₂,M →ₗ[R] M₂: a linear map between two R-semimodules.is_linear_map R f: predicate saying thatf : M → M₂is a linear map.
Implementation notes
vector_spaceandmoduleare abbreviations forsemimodule R M.
Tags
semimodule, module, vector space, linear map
- to_distrib_mul_action : distrib_mul_action R M
- add_smul : ∀ (r s : R) (x : M), (r + s) • x = r • x + s • x
- zero_smul : ∀ (x : M), 0 • x = 0
A semimodule is a generalization of vector spaces to a scalar semiring.
It consists of a scalar semiring R and an additive monoid of "vectors" M,
connected by a "scalar multiplication" operation r • x : M
(where r : R and x : M) with some natural associativity and
distributivity axioms similar to those on a ring.
Instances
- lie_algebra.to_semimodule
- ordered_semimodule.to_semimodule
- order_dual.semimodule
- derivation.derivation.Rsemimodule
- algebra.to_semimodule
- semiring.to_semimodule
- normed_space.to_semimodule
- add_comm_monoid.nat_semimodule
- punit.semimodule
- pi.semimodule
- pi.semimodule'
- prod.semimodule
- submodule.semimodule
- finsupp.semimodule
- linear_map.semimodule
- submodule.quotient.semimodule
- matrix.semimodule
- tensor_product.semimodule
- semimodule.restrict_scalars.module_orig
- semimodule.restrict_scalars.semimodule
- linear_map.module_extend_scalars
- monoid_algebra.semimodule
- add_monoid_algebra.semimodule
- polynomial.semimodule
- mv_polynomial.semimodule
- submodule.semimodule_set
- submodule.semimodule_submodule
- direct_sum.semimodule
- module.direct_limit.semimodule
- ulift.semimodule
- ulift.semimodule'
- bounded_continuous_function.semimodule
- multilinear_map.semimodule
- multilinear_map.semimodule_ring
- continuous_multilinear_map.semimodule
- continuous_semimodule
- continuous_map_semimodule
- holor.semimodule
- filter.germ.semimodule
- filter.germ.semimodule'
- measure_theory.outer_measure.semimodule
- measure_theory.measure.semimodule
- measure_theory.simple_func.semimodule
- measure_theory.ae_eq_fun.semimodule
- measure_theory.l1.semimodule
- derivation.semimodule
- mv_power_series.semimodule
- power_series.semimodule
Pullback a semimodule structure along an injective additive monoid homomorphism.
Equations
- function.injective.semimodule R f hf smul = {to_distrib_mul_action := {to_mul_action := {to_has_scalar := {smul := has_scalar.smul _inst_5}, one_smul := _, mul_smul := _}, smul_add := _, smul_zero := _}, add_smul := _, zero_smul := _}
Pushforward a semimodule structure along a surjective additive monoid homomorphism.
Equations
- function.surjective.semimodule R f hf smul = {to_distrib_mul_action := {to_mul_action := {to_has_scalar := {smul := has_scalar.smul _inst_5}, one_smul := _, mul_smul := _}, smul_add := _, smul_zero := _}, add_smul := _, zero_smul := _}
(•) as an add_monoid_hom.
Equations
- smul_add_hom R M = {to_fun := const_smul_hom M semimodule.to_distrib_mul_action, map_zero' := _, map_add' := _}
- to_has_scalar : has_scalar R M
- smul_add : ∀ (r : R) (x y : M), r • (x + y) = r • x + r • y
- add_smul : ∀ (r s : R) (x : M), (r + s) • x = r • x + s • x
- mul_smul : ∀ (r s : R) (x : M), (r * s) • x = r • s • x
- one_smul : ∀ (x : M), 1 • x = x
A structure containing most informations as in a semimodule, except the fields zero_smul
and smul_zero. As these fields can be deduced from the other ones when M is an add_comm_group,
this provides a way to construct a semimodule structure by checking less properties, in
semimodule.of_core.
Define semimodule without proving zero_smul and smul_zero by using an auxiliary
structure semimodule.core, when the underlying space is an add_comm_group.
Equations
- semimodule.of_core H = let _inst : has_scalar R M := H.to_has_scalar in {to_distrib_mul_action := {to_mul_action := {to_has_scalar := H.to_has_scalar, one_smul := _, mul_smul := _}, smul_add := _, smul_zero := _}, add_smul := _, zero_smul := _}
A module is the same as a semimodule, except the scalar semiring is actually
a ring.
This is the traditional generalization of spaces like ℤ^n, which have a natural
addition operation and a way to multiply them by elements of a ring, but no multiplication
operation between vectors.
Instances
- module.complex_to_real
- add_comm_group.int_module
- Module.is_module
- Module.module_obj
- Module.limit_module
- ideal.module_pi
- bilin_form.to_module
- linear_map.module
- affine_map.module
- continuous_linear_map.module
- bounded_continuous_function.module'
- continuous_linear_map.module_extend_scalars
- formal_multilinear_series.module
- continuous_module'
- continuous_map_module'
- module.dual.inst
- quadratic_form.module
- sesq_form.to_module
To prove two module structures on a fixed add_comm_group agree,
it suffices to check the scalar multiplications agree.
Equations
- semiring.to_semimodule = {to_distrib_mul_action := {to_mul_action := {to_has_scalar := {smul := has_mul.mul (distrib.to_has_mul R)}, one_smul := _, mul_smul := _}, smul_add := _, smul_zero := _}, add_smul := _, zero_smul := _}
A ring homomorphism f : R →+* M defines a module structure by r • x = f r * x.
Equations
- f.to_semimodule = {to_distrib_mul_action := {to_mul_action := {to_has_scalar := {smul := λ (r : R) (x : S), ⇑f r * x}, one_smul := _, mul_smul := _}, smul_add := _, smul_zero := _}, add_smul := _, zero_smul := _}
A map f between semimodules over a semiring is linear if it satisfies the two properties
f (x + y) = f x + f y and f (c • x) = c • f x. The predicate is_linear_map R f asserts this
property. A bundled version is available with linear_map, and should be favored over
is_linear_map most of the time.
- to_fun : M → M₂
- map_add' : ∀ (x y : M), c.to_fun (x + y) = c.to_fun x + c.to_fun y
- map_smul' : ∀ (c_1 : R) (x : M), c.to_fun (c_1 • x) = c_1 • c.to_fun x
A map f between semimodules over a semiring is linear if it satisfies the two properties
f (x + y) = f x + f y and f (c • x) = c • f x. Elements of linear_map R M M₂ (available under
the notation M →ₗ[R] M₂) are bundled versions of such maps. An unbundled version is available with
the predicate is_linear_map, but it should be avoided most of the time.
Equations
- linear_map.has_coe_to_fun = {F := λ (x : M →ₗ[R] M₂), M → M₂, coe := linear_map.to_fun _inst_6}
Identity map as a linear_map
Equations
- _ = _
convert a linear map to an additive map
Composition of two linear maps is a linear map
Equations
Convert an is_linear_map predicate to a linear_map
Ring of linear endomorphismsms of a module.
A vector space is the same as a module, except the scalar ring is actually
a field. (This adds commutativity of the multiplication and existence of inverses.)
This is the traditional generalization of spaces like ℝ^n, which have a natural
addition operation and a way to multiply them by real numbers, but no multiplication
operation between vectors.
The natural ℕ-semimodule structure on any add_comm_monoid.
Equations
- add_comm_monoid.nat_semimodule = {to_distrib_mul_action := {to_mul_action := {to_has_scalar := {smul := nsmul (add_monoid.to_has_zero M)}, one_smul := _, mul_smul := _}, smul_add := _, smul_zero := _}, add_smul := _, zero_smul := _}
The natural ℤ-module structure on any add_comm_group.
Equations
- add_comm_group.int_module = {to_distrib_mul_action := {to_mul_action := {to_has_scalar := {smul := gsmul (add_comm_group.to_add_group M)}, one_smul := _, mul_smul := _}, smul_add := _, smul_zero := _}, add_smul := _, zero_smul := _}
Equations
Reinterpret an additive homomorphism as a ℤ-linear map.
Reinterpret an additive homomorphism as a ℚ-linear map.