@[instance]
Equations
- submodule.has_one = {one := submodule.map (algebra.of_id R A).to_linear_map ⊤}
theorem
submodule.one_eq_map_top
{R : Type u}
[comm_semiring R]
{A : Type v}
[semiring A]
[algebra R A] :
1 = submodule.map (algebra.of_id R A).to_linear_map ⊤
theorem
submodule.one_eq_span
{R : Type u}
[comm_semiring R]
{A : Type v}
[semiring A]
[algebra R A] :
1 = submodule.span R {1}
theorem
submodule.one_le
{R : Type u}
[comm_semiring R]
{A : Type v}
[semiring A]
[algebra R A]
{P : submodule R A} :
@[instance]
Equations
- submodule.has_mul = {mul := λ (M N : submodule R A), ⨆ (s : ↥M), submodule.map (⇑(algebra.lmul R A) s.val) N}
theorem
submodule.mul_induction_on
{R : Type u}
[comm_semiring R]
{A : Type v}
[semiring A]
[algebra R A]
{M N : submodule R A}
{C : A → Prop}
{r : A} :
theorem
submodule.span_mul_span
(R : Type u)
[comm_semiring R]
{A : Type v}
[semiring A]
[algebra R A]
(S T : set A) :
submodule.span R S * submodule.span R T = submodule.span R (S * T)
@[simp]
theorem
submodule.mul_bot
{R : Type u}
[comm_semiring R]
{A : Type v}
[semiring A]
[algebra R A]
(M : submodule R A) :
@[simp]
theorem
submodule.bot_mul
{R : Type u}
[comm_semiring R]
{A : Type v}
[semiring A]
[algebra R A]
(M : submodule R A) :
@[simp]
theorem
submodule.one_mul
{R : Type u}
[comm_semiring R]
{A : Type v}
[semiring A]
[algebra R A]
(M : submodule R A) :
@[simp]
theorem
submodule.mul_one
{R : Type u}
[comm_semiring R]
{A : Type v}
[semiring A]
[algebra R A]
(M : submodule R A) :
theorem
submodule.mul_le_mul_left
{R : Type u}
[comm_semiring R]
{A : Type v}
[semiring A]
[algebra R A]
{M N P : submodule R A} :
theorem
submodule.mul_le_mul_right
{R : Type u}
[comm_semiring R]
{A : Type v}
[semiring A]
[algebra R A]
{M N P : submodule R A} :
theorem
submodule.map_mul
{R : Type u}
[comm_semiring R]
{A : Type v}
[semiring A]
[algebra R A]
(M N : submodule R A)
{A' : Type u_1}
[semiring A']
[algebra R A']
(f : A →ₐ[R] A') :
submodule.map f.to_linear_map (M * N) = submodule.map f.to_linear_map M * submodule.map f.to_linear_map N
@[instance]
Equations
- submodule.semiring = {add := add_comm_monoid.add submodule.add_comm_monoid_submodule, add_assoc := _, zero := add_comm_monoid.zero submodule.add_comm_monoid_submodule, zero_add := _, add_zero := _, add_comm := _, mul := has_mul.mul submodule.has_mul, mul_assoc := _, one := 1, one_mul := _, mul_one := _, zero_mul := _, mul_zero := _, left_distrib := _, right_distrib := _}
def
submodule.span.ring_hom
{R : Type u}
[comm_semiring R]
{A : Type v}
[semiring A]
[algebra R A] :
set.set_semiring A →+* submodule R A
span
is a semiring homomorphism (recall multiplication is pointwise multiplication of subsets on either side).
Equations
- submodule.span.ring_hom = {to_fun := submodule.span R algebra.to_semimodule, map_one' := _, map_mul' := _, map_zero' := _, map_add' := _}
theorem
submodule.mul_mem_mul_rev
{R : Type u}
[comm_semiring R]
{A : Type v}
[comm_semiring A]
[algebra R A]
{M N : submodule R A}
{m n : A} :
theorem
submodule.mul_comm
{R : Type u}
[comm_semiring R]
{A : Type v}
[comm_semiring A]
[algebra R A]
(M N : submodule R A) :
@[instance]
def
submodule.comm_semiring
{R : Type u}
[comm_semiring R]
{A : Type v}
[comm_semiring A]
[algebra R A] :
comm_semiring (submodule R A)
Equations
- submodule.comm_semiring = {add := semiring.add submodule.semiring, add_assoc := _, zero := semiring.zero submodule.semiring, zero_add := _, add_zero := _, add_comm := _, mul := semiring.mul submodule.semiring, mul_assoc := _, one := semiring.one submodule.semiring, one_mul := _, mul_one := _, zero_mul := _, mul_zero := _, left_distrib := _, right_distrib := _, mul_comm := _}
@[instance]
def
submodule.semimodule_set
(R : Type u)
[comm_semiring R]
(A : Type v)
[comm_semiring A]
[algebra R A] :
semimodule (set.set_semiring A) (submodule R A)
Equations
- submodule.semimodule_set R A = {to_distrib_mul_action := {to_mul_action := {to_has_scalar := {smul := λ (s : set.set_semiring A) (P : submodule R A), submodule.span R s * P}, one_smul := _, mul_smul := _}, smul_add := _, smul_zero := _}, add_smul := _, zero_smul := _}
theorem
submodule.smul_def
{R : Type u}
[comm_semiring R]
{A : Type v}
[comm_semiring A]
[algebra R A]
{s : set.set_semiring A}
{P : submodule R A} :
s • P = submodule.span R s * P
theorem
submodule.smul_le_smul
{R : Type u}
[comm_semiring R]
{A : Type v}
[comm_semiring A]
[algebra R A]
{s t : set.set_semiring A}
{M N : submodule R A} :
theorem
submodule.smul_singleton
{R : Type u}
[comm_semiring R]
{A : Type v}
[comm_semiring A]
[algebra R A]
(a : A)
(M : submodule R A) :
{a}.up • M = submodule.map (algebra.lmul_left R A a) M
@[instance]
def
submodule.has_div
{R : Type u}
[comm_semiring R]
{A : Type v}
[comm_semiring A]
[algebra R A] :
The elements of I / J
are the x
such that x • J ⊆ I
.
In fact, we define x ∈ I / J
to be ∀ y ∈ J, x * y ∈ I
(see mem_div_iff_forall_mul_mem
),
which is equivalent to x • J ⊆ I
(see mem_div_iff_smul_subset
), but nicer to use in proofs.
This is the general form of the ideal quotient, traditionally written $I : J$.
theorem
submodule.mem_div_iff_forall_mul_mem
{R : Type u}
[comm_semiring R]
{A : Type v}
[comm_semiring A]
[algebra R A]
{x : A}
{I J : submodule R A} :
theorem
submodule.mem_div_iff_smul_subset
{R : Type u}
[comm_semiring R]
{A : Type v}
[comm_semiring A]
[algebra R A]
{x : A}
{I J : submodule R A} :
theorem
submodule.le_div_iff
{R : Type u}
[comm_semiring R]
{A : Type v}
[comm_semiring A]
[algebra R A]
{I J K : submodule R A} :