ulift instances for module and multiplicative actions #
THIS FILE IS SYNCHRONIZED WITH MATHLIB4. Any changes to this file require a corresponding PR to mathlib4.
This file defines instances for module, mul_action and related structures on ulift types.
(Recall ulift α is just a "copy" of a type α in a higher universe.)
We also provide ulift.module_equiv : ulift M ≃ₗ[R] M.
@[protected, instance]
    
def
ulift.is_scalar_tower
    {R : Type u}
    {M : Type v}
    {N : Type w}
    [has_smul R M]
    [has_smul M N]
    [has_smul R N]
    [is_scalar_tower R M N] :
is_scalar_tower (ulift R) M N
@[protected, instance]
    
def
ulift.is_scalar_tower'
    {R : Type u}
    {M : Type v}
    {N : Type w}
    [has_smul R M]
    [has_smul M N]
    [has_smul R N]
    [is_scalar_tower R M N] :
is_scalar_tower R (ulift M) N
@[protected, instance]
    
def
ulift.is_scalar_tower''
    {R : Type u}
    {M : Type v}
    {N : Type w}
    [has_smul R M]
    [has_smul M N]
    [has_smul R N]
    [is_scalar_tower R M N] :
is_scalar_tower R M (ulift N)
@[protected, instance]
    
def
ulift.is_central_scalar
    {R : Type u}
    {M : Type v}
    [has_smul R M]
    [has_smul Rᵐᵒᵖ M]
    [is_central_scalar R M] :
is_central_scalar R (ulift M)
@[protected, instance]
    Equations
- ulift.mul_action = {to_has_smul := {smul := has_smul.smul ulift.has_smul_left}, one_smul := _, mul_smul := _}
@[protected, instance]
    
def
ulift.add_action
    {R : Type u}
    {M : Type v}
    [add_monoid R]
    [add_action R M] :
    add_action (ulift R) M
Equations
- ulift.add_action = {to_has_vadd := {vadd := has_vadd.vadd ulift.has_vadd_left}, zero_vadd := _, add_vadd := _}
@[protected, instance]
    
def
ulift.mul_action'
    {R : Type u}
    {M : Type v}
    [monoid R]
    [mul_action R M] :
    mul_action R (ulift M)
Equations
- ulift.mul_action' = {to_has_smul := {smul := has_smul.smul ulift.has_smul}, one_smul := _, mul_smul := _}
@[protected, instance]
    
def
ulift.add_action'
    {R : Type u}
    {M : Type v}
    [add_monoid R]
    [add_action R M] :
    add_action R (ulift M)
Equations
- ulift.add_action' = {to_has_vadd := {vadd := has_vadd.vadd ulift.has_vadd}, zero_vadd := _, add_vadd := _}
@[protected, instance]
    
def
ulift.smul_zero_class
    {R : Type u}
    {M : Type v}
    [has_zero M]
    [smul_zero_class R M] :
    smul_zero_class (ulift R) M
Equations
- ulift.smul_zero_class = {to_has_smul := {smul := has_smul.smul ulift.has_smul_left}, smul_zero := _}
@[protected, instance]
    
def
ulift.smul_zero_class'
    {R : Type u}
    {M : Type v}
    [has_zero M]
    [smul_zero_class R M] :
    smul_zero_class R (ulift M)
Equations
@[protected, instance]
    
def
ulift.distrib_smul
    {R : Type u}
    {M : Type v}
    [add_zero_class M]
    [distrib_smul R M] :
    distrib_smul (ulift R) M
Equations
@[protected, instance]
    
def
ulift.distrib_smul'
    {R : Type u}
    {M : Type v}
    [add_zero_class M]
    [distrib_smul R M] :
    distrib_smul R (ulift M)
Equations
@[protected, instance]
    
def
ulift.distrib_mul_action
    {R : Type u}
    {M : Type v}
    [monoid R]
    [add_monoid M]
    [distrib_mul_action R M] :
    distrib_mul_action (ulift R) M
Equations
- ulift.distrib_mul_action = {to_mul_action := {to_has_smul := mul_action.to_has_smul ulift.mul_action, one_smul := _, mul_smul := _}, smul_zero := _, smul_add := _}
@[protected, instance]
    
def
ulift.distrib_mul_action'
    {R : Type u}
    {M : Type v}
    [monoid R]
    [add_monoid M]
    [distrib_mul_action R M] :
    distrib_mul_action R (ulift M)
Equations
- ulift.distrib_mul_action' = {to_mul_action := {to_has_smul := mul_action.to_has_smul ulift.mul_action', one_smul := _, mul_smul := _}, smul_zero := _, smul_add := _}
@[protected, instance]
    
def
ulift.mul_distrib_mul_action
    {R : Type u}
    {M : Type v}
    [monoid R]
    [monoid M]
    [mul_distrib_mul_action R M] :
    mul_distrib_mul_action (ulift R) M
Equations
@[protected, instance]
    
def
ulift.mul_distrib_mul_action'
    {R : Type u}
    {M : Type v}
    [monoid R]
    [monoid M]
    [mul_distrib_mul_action R M] :
    mul_distrib_mul_action R (ulift M)
Equations
- ulift.mul_distrib_mul_action' = {to_mul_action := {to_has_smul := mul_action.to_has_smul ulift.mul_action', one_smul := _, mul_smul := _}, smul_mul := _, smul_one := _}
@[protected, instance]
    
def
ulift.smul_with_zero
    {R : Type u}
    {M : Type v}
    [has_zero R]
    [has_zero M]
    [smul_with_zero R M] :
    smul_with_zero (ulift R) M
Equations
- ulift.smul_with_zero = {to_smul_zero_class := {to_has_smul := {smul := has_smul.smul ulift.has_smul_left}, smul_zero := _}, zero_smul := _}
@[protected, instance]
    
def
ulift.smul_with_zero'
    {R : Type u}
    {M : Type v}
    [has_zero R]
    [has_zero M]
    [smul_with_zero R M] :
    smul_with_zero R (ulift M)
Equations
@[protected, instance]
    
def
ulift.mul_action_with_zero
    {R : Type u}
    {M : Type v}
    [monoid_with_zero R]
    [has_zero M]
    [mul_action_with_zero R M] :
    mul_action_with_zero (ulift R) M
Equations
@[protected, instance]
    
def
ulift.mul_action_with_zero'
    {R : Type u}
    {M : Type v}
    [monoid_with_zero R]
    [has_zero M]
    [mul_action_with_zero R M] :
    mul_action_with_zero R (ulift M)
Equations
@[protected, instance]
    Equations
@[protected, instance]
    Equations
@[simp]
    
theorem
ulift.module_equiv_apply
    {R : Type u}
    {M : Type v}
    [semiring R]
    [add_comm_monoid M]
    [module R M]
    (self : ulift M) :
⇑ulift.module_equiv self = self.down
The R-linear equivalence between ulift M and M.
Equations
- ulift.module_equiv = {to_fun := ulift.down M, map_add' := _, map_smul' := _, inv_fun := ulift.up M, left_inv := _, right_inv := _}
@[simp]
    
theorem
ulift.module_equiv_symm_apply
    {R : Type u}
    {M : Type v}
    [semiring R]
    [add_comm_monoid M]
    [module R M]
    (down : M) :
⇑(ulift.module_equiv.symm) down = {down := down}