Sets invariant to a mul_action
#
In this file we define sub_mul_action R M
; a subset of a mul_action R M
which is closed with
respect to scalar multiplication.
For most uses, typically submodule R M
is more powerful.
Main definitions #
sub_mul_action.mul_action
- themul_action R M
transferred to the subtype.sub_mul_action.mul_action'
- themul_action S M
transferred to the subtype whenis_scalar_tower S R M
.sub_mul_action.is_scalar_tower
- theis_scalar_tower S R M
transferred to the subtype.
Tags #
submodule, mul_action
A sub_mul_action is a set which is closed under scalar multiplication.
@[protected, instance]
def
sub_mul_action.set_like
{R : Type u}
{M : Type v}
[has_scalar R M] :
set_like (sub_mul_action R M) M
Equations
- sub_mul_action.set_like = {coe := sub_mul_action.carrier _inst_1, coe_injective' := _}
@[simp]
theorem
sub_mul_action.mem_carrier
{R : Type u}
{M : Type v}
[has_scalar R M]
{p : sub_mul_action R M}
{x : M} :
@[ext]
theorem
sub_mul_action.ext
{R : Type u}
{M : Type v}
[has_scalar R M]
{p q : sub_mul_action R M}
(h : ∀ (x : M), x ∈ p ↔ x ∈ q) :
p = q
@[protected]
def
sub_mul_action.copy
{R : Type u}
{M : Type v}
[has_scalar R M]
(p : sub_mul_action R M)
(s : set M)
(hs : s = ↑p) :
sub_mul_action R M
Copy of a sub_mul_action with a new carrier
equal to the old one. Useful to fix definitional
equalities.
@[simp]
theorem
sub_mul_action.coe_copy
{R : Type u}
{M : Type v}
[has_scalar R M]
(p : sub_mul_action R M)
(s : set M)
(hs : s = ↑p) :
theorem
sub_mul_action.copy_eq
{R : Type u}
{M : Type v}
[has_scalar R M]
(p : sub_mul_action R M)
(s : set M)
(hs : s = ↑p) :
@[protected, instance]
def
sub_mul_action.has_bot
{R : Type u}
{M : Type v}
[has_scalar R M] :
has_bot (sub_mul_action R M)
@[protected, instance]
def
sub_mul_action.inhabited
{R : Type u}
{M : Type v}
[has_scalar R M] :
inhabited (sub_mul_action R M)
Equations
theorem
sub_mul_action.smul_mem
{R : Type u}
{M : Type v}
[has_scalar R M]
(p : sub_mul_action R M)
{x : M}
(r : R)
(h : x ∈ p) :
@[protected, instance]
def
sub_mul_action.has_scalar
{R : Type u}
{M : Type v}
[has_scalar R M]
(p : sub_mul_action R M) :
has_scalar R ↥p
@[simp, norm_cast]
theorem
sub_mul_action.coe_smul
{R : Type u}
{M : Type v}
[has_scalar R M]
{p : sub_mul_action R M}
(r : R)
(x : ↥p) :
@[simp, norm_cast]
theorem
sub_mul_action.coe_mk
{R : Type u}
{M : Type v}
[has_scalar R M]
{p : sub_mul_action R M}
(x : M)
(hx : x ∈ p) :
@[protected]
Embedding of a submodule p
to the ambient space M
.
@[simp]
theorem
sub_mul_action.subtype_apply
{R : Type u}
{M : Type v}
[has_scalar R M]
(p : sub_mul_action R M)
(x : ↥p) :
theorem
sub_mul_action.subtype_eq_val
{R : Type u}
{M : Type v}
[has_scalar R M]
(p : sub_mul_action R M) :
⇑(p.subtype) = subtype.val
theorem
sub_mul_action.smul_of_tower_mem
{S : Type u'}
{R : Type u}
{M : Type v}
[monoid R]
[mul_action R M]
[has_scalar S R]
[has_scalar S M]
[is_scalar_tower S R M]
(p : sub_mul_action R M)
(s : S)
{x : M}
(h : x ∈ p) :
@[protected, instance]
def
sub_mul_action.has_scalar'
{S : Type u'}
{R : Type u}
{M : Type v}
[monoid R]
[mul_action R M]
[has_scalar S R]
[has_scalar S M]
[is_scalar_tower S R M]
(p : sub_mul_action R M) :
has_scalar S ↥p
@[protected, instance]
def
sub_mul_action.is_scalar_tower
{S : Type u'}
{R : Type u}
{M : Type v}
[monoid R]
[mul_action R M]
[has_scalar S R]
[has_scalar S M]
[is_scalar_tower S R M]
(p : sub_mul_action R M) :
is_scalar_tower S R ↥p
@[simp, norm_cast]
theorem
sub_mul_action.coe_smul_of_tower
{S : Type u'}
{R : Type u}
{M : Type v}
[monoid R]
[mul_action R M]
[has_scalar S R]
[has_scalar S M]
[is_scalar_tower S R M]
(p : sub_mul_action R M)
(s : S)
(x : ↥p) :
@[simp]
theorem
sub_mul_action.smul_mem_iff'
{R : Type u}
{M : Type v}
[monoid R]
[mul_action R M]
(p : sub_mul_action R M)
{G : Type u_1}
[group G]
[has_scalar G R]
[mul_action G M]
[is_scalar_tower G R M]
(g : G)
{x : M} :
@[protected, instance]
def
sub_mul_action.is_central_scalar
{S : Type u'}
{R : Type u}
{M : Type v}
[monoid R]
[mul_action R M]
[has_scalar S R]
[has_scalar S M]
[is_scalar_tower S R M]
(p : sub_mul_action R M)
[has_scalar Sᵐᵒᵖ R]
[has_scalar Sᵐᵒᵖ M]
[is_scalar_tower Sᵐᵒᵖ R M]
[is_central_scalar S M] :
@[protected, instance]
def
sub_mul_action.mul_action'
{S : Type u'}
{R : Type u}
{M : Type v}
[monoid R]
[mul_action R M]
[monoid S]
[has_scalar S R]
[mul_action S M]
[is_scalar_tower S R M]
(p : sub_mul_action R M) :
mul_action S ↥p
If the scalar product forms a mul_action
, then the subset inherits this action
Equations
- p.mul_action' = {to_has_scalar := {smul := has_scalar.smul p.has_scalar'}, one_smul := _, mul_smul := _}
@[protected, instance]
def
sub_mul_action.mul_action
{R : Type u}
{M : Type v}
[monoid R]
[mul_action R M]
(p : sub_mul_action R M) :
mul_action R ↥p
Equations
- p.mul_action = p.mul_action'
theorem
sub_mul_action.zero_mem
{R : Type u}
{M : Type v}
[semiring R]
[add_comm_monoid M]
[module R M]
(p : sub_mul_action R M)
(h : ↑p.nonempty) :
0 ∈ p
@[protected, instance]
def
sub_mul_action.has_zero
{R : Type u}
{M : Type v}
[semiring R]
[add_comm_monoid M]
[module R M]
(p : sub_mul_action R M)
[n_empty : nonempty ↥p] :
If the scalar product forms a module
, and the sub_mul_action
is not ⊥
, then the
subset inherits the zero.
theorem
sub_mul_action.neg_mem
{R : Type u}
{M : Type v}
[ring R]
[add_comm_group M]
[module R M]
(p : sub_mul_action R M)
{x : M}
(hx : x ∈ p) :
@[simp]
theorem
sub_mul_action.neg_mem_iff
{R : Type u}
{M : Type v}
[ring R]
[add_comm_group M]
[module R M]
(p : sub_mul_action R M)
{x : M} :
@[simp, norm_cast]
theorem
sub_mul_action.coe_neg
{R : Type u}
{M : Type v}
[ring R]
[add_comm_group M]
[module R M]
(p : sub_mul_action R M)
(x : ↥p) :
theorem
sub_mul_action.smul_mem_iff
{S : Type u'}
{R : Type u}
{M : Type v}
[division_ring S]
[semiring R]
[mul_action R M]
[has_scalar S R]
[mul_action S M]
[is_scalar_tower S R M]
(p : sub_mul_action R M)
{s : S}
{x : M}
(s0 : s ≠ 0) :