@[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} :