File: Mathlib/Algebra/Group/Action/Units.lean

full_name: Units.instSMul
code: @[to_additive] instance [Monoid M] [SMul M α] : SMul Mˣ α 
goal: SMul Mˣ α

full_name: AddUnits.instVAdd
code: @[to_additive] instance [Monoid M] [SMul M α] : SMul Mˣ α 
goal: VAdd (AddUnits M) α

full_name: AddUnits.vadd_def
code: @[to_additive] lemma smul_def [Monoid M] [SMul M α] (m : Mˣ) (a : α) : m • a = (m : M) • a 
goal: m +ᵥ a = ↑m +ᵥ a

full_name: Units.smul_def
code: @[to_additive] lemma smul_def [Monoid M] [SMul M α] (m : Mˣ) (a : α) : m • a = (m : M) • a 
goal: m • a = ↑m • a

full_name: AddUnits.vadd_mk_apply
code: @[to_additive, simp]
lemma smul_mk_apply {M α : Type*} [Monoid M] [SMul M α] (m n : M) (h₁) (h₂) (a : α) :
    (⟨m, n, h₁, h₂⟩ : Mˣ) • a = m • a 
goal: { val := m, neg := n, val_neg := h₁, neg_val := h₂ } +ᵥ a = m +ᵥ a

full_name: Units.smul_mk_apply
code: @[to_additive, simp]
lemma smul_mk_apply {M α : Type*} [Monoid M] [SMul M α] (m n : M) (h₁) (h₂) (a : α) :
    (⟨m, n, h₁, h₂⟩ : Mˣ) • a = m • a 
goal: { val := m, inv := n, val_inv := h₁, inv_val := h₂ } • a = m • a

full_name: Units.smul_isUnit
code: @[simp]
lemma smul_isUnit [Monoid M] [SMul M α] {m : M} (hm : IsUnit m) (a : α) : hm.unit • a = m • a 
goal: hm.unit • a = m • a

full_name: IsAddUnit.neg_vadd
code: @[to_additive]
lemma _root_.IsUnit.inv_smul [Monoid α] {a : α} (h : IsUnit a) : h.unit⁻¹ • a = 1 
goal: -h.addUnit +ᵥ a = 0

full_name: IsUnit.inv_smul
code: @[to_additive]
lemma _root_.IsUnit.inv_smul [Monoid α] {a : α} (h : IsUnit a) : h.unit⁻¹ • a = 1 
goal: h.unit⁻¹ • a = 1

full_name: Units.instFaithfulSMul
code: @[to_additive]
instance [Monoid M] [SMul M α] [FaithfulSMul M α] : FaithfulSMul Mˣ α 
goal: FaithfulSMul Mˣ α

full_name: AddUnits.instFaithfulVAdd
code: @[to_additive]
instance [Monoid M] [SMul M α] [FaithfulSMul M α] : FaithfulSMul Mˣ α 
goal: FaithfulVAdd (AddUnits M) α

full_name: AddUnits.instAddAction
code: @[to_additive]
instance instMulAction [Monoid M] [MulAction M α] : MulAction Mˣ α 
goal: AddAction (AddUnits M) α

full_name: Units.instMulAction
code: @[to_additive]
instance instMulAction [Monoid M] [MulAction M α] : MulAction Mˣ α 
goal: MulAction Mˣ α

full_name: Units.smulCommClass_left
code: @[to_additive]
instance smulCommClass_left [Monoid M] [SMul M α] [SMul N α] [SMulCommClass M N α] :
    SMulCommClass Mˣ N α 
goal: SMulCommClass Mˣ N α

full_name: AddUnits.vaddCommClass_left
code: @[to_additive]
instance smulCommClass_left [Monoid M] [SMul M α] [SMul N α] [SMulCommClass M N α] :
    SMulCommClass Mˣ N α 
goal: VAddCommClass (AddUnits M) N α

full_name: Units.smulCommClass_right
code: @[to_additive]
instance smulCommClass_right [Monoid N] [SMul M α] [SMul N α] [SMulCommClass M N α] :
    SMulCommClass M Nˣ α 
goal: SMulCommClass M Nˣ α

full_name: AddUnits.vaddCommClass_right
code: @[to_additive]
instance smulCommClass_right [Monoid N] [SMul M α] [SMul N α] [SMulCommClass M N α] :
    SMulCommClass M Nˣ α 
goal: VAddCommClass M (AddUnits N) α

full_name: Units.instIsScalarTower
code: @[to_additive]
instance [Monoid M] [SMul M N] [SMul M α] [SMul N α] [IsScalarTower M N α] :
    IsScalarTower Mˣ N α 
goal: IsScalarTower Mˣ N α

full_name: AddUnits.instIsScalarTower
code: @[to_additive]
instance [Monoid M] [SMul M N] [SMul M α] [SMul N α] [IsScalarTower M N α] :
    IsScalarTower Mˣ N α 
goal: VAddAssocClass (AddUnits M) N α

full_name: AddUnits.addAction'
code: /-- If an action `G` associates and commutes with multiplication on `M`, then it lifts to an
action on `Mˣ`. Notably, this provides `MulAction Mˣ Nˣ` under suitable conditions. -/
@[to_additive]
instance mulAction' [Group G] [Monoid M] [MulAction G M] [SMulCommClass G M M]
    [IsScalarTower G M M] : MulAction G Mˣ 
goal: AddAction G (AddUnits M)

full_name: Units.mulAction'
code: /-- If an action `G` associates and commutes with multiplication on `M`, then it lifts to an
action on `Mˣ`. Notably, this provides `MulAction Mˣ Nˣ` under suitable conditions. -/
@[to_additive]
instance mulAction' [Group G] [Monoid M] [MulAction G M] [SMulCommClass G M M]
    [IsScalarTower G M M] : MulAction G Mˣ 
goal: MulAction G Mˣ

full_name: Units.val_smul
code: @[to_additive (attr := simp)]
lemma val_smul [Group G] [Monoid M] [MulAction G M] [SMulCommClass G M M] [IsScalarTower G M M]
    (g : G) (m : Mˣ) : ↑(g • m) = g • (m : M) 
goal: ↑(g • m) = g • ↑m

full_name: AddUnits.val_vadd
code: @[to_additive (attr := simp)]
lemma val_smul [Group G] [Monoid M] [MulAction G M] [SMulCommClass G M M] [IsScalarTower G M M]
    (g : G) (m : Mˣ) : ↑(g • m) = g • (m : M) 
goal: ↑(g +ᵥ m) = g +ᵥ ↑m

full_name: Units.smul_inv
code: /-- Note that this lemma exists more generally as the global `smul_inv` -/
@[to_additive (attr := simp)]
lemma smul_inv [Group G] [Monoid M] [MulAction G M] [SMulCommClass G M M] [IsScalarTower G M M]
    (g : G) (m : Mˣ) : (g • m)⁻¹ = g⁻¹ • m⁻¹ 
goal: (g • m)⁻¹ = g⁻¹ • m⁻¹

full_name: AddUnits.vadd_neg
code: /-- Note that this lemma exists more generally as the global `smul_inv` -/
@[to_additive (attr := simp)]
lemma smul_inv [Group G] [Monoid M] [MulAction G M] [SMulCommClass G M M] [IsScalarTower G M M]
    (g : G) (m : Mˣ) : (g • m)⁻¹ = g⁻¹ • m⁻¹ 
goal: -(g +ᵥ m) = -g +ᵥ -m

full_name: Units.smulCommClass'
code: /-- Transfer `SMulCommClass G H M` to `SMulCommClass G H Mˣ`. -/
@[to_additive "Transfer `VAddCommClass G H M` to `VAddCommClass G H (AddUnits M)`."]
instance smulCommClass' [Group G] [Group H] [Monoid M] [MulAction G M] [SMulCommClass G M M]
    [MulAction H M] [SMulCommClass H M M] [IsScalarTower G M M] [IsScalarTower H M M]
    [SMulCommClass G H M] :
    SMulCommClass G H Mˣ 
goal: SMulCommClass G H Mˣ

full_name: AddUnits.vaddCommClass'
code: /-- Transfer `SMulCommClass G H M` to `SMulCommClass G H Mˣ`. -/
@[to_additive "Transfer `VAddCommClass G H M` to `VAddCommClass G H (AddUnits M)`."]
instance smulCommClass' [Group G] [Group H] [Monoid M] [MulAction G M] [SMulCommClass G M M]
    [MulAction H M] [SMulCommClass H M M] [IsScalarTower G M M] [IsScalarTower H M M]
    [SMulCommClass G H M] :
    SMulCommClass G H Mˣ 
goal: VAddCommClass G H (AddUnits M)

full_name: AddUnits.isScalarTower'
code: /-- Transfer `IsScalarTower G H M` to `IsScalarTower G H Mˣ`. -/
@[to_additive "Transfer `VAddAssocClass G H M` to `VAddAssocClass G H (AddUnits M)`."]
instance isScalarTower' [SMul G H] [Group G] [Group H] [Monoid M] [MulAction G M]
    [SMulCommClass G M M] [MulAction H M] [SMulCommClass H M M] [IsScalarTower G M M]
    [IsScalarTower H M M] [IsScalarTower G H M] :
    IsScalarTower G H Mˣ 
goal: VAddAssocClass G H (AddUnits M)

full_name: Units.isScalarTower'
code: /-- Transfer `IsScalarTower G H M` to `IsScalarTower G H Mˣ`. -/
@[to_additive "Transfer `VAddAssocClass G H M` to `VAddAssocClass G H (AddUnits M)`."]
instance isScalarTower' [SMul G H] [Group G] [Group H] [Monoid M] [MulAction G M]
    [SMulCommClass G M M] [MulAction H M] [SMulCommClass H M M] [IsScalarTower G M M]
    [IsScalarTower H M M] [IsScalarTower G H M] :
    IsScalarTower G H Mˣ 
goal: IsScalarTower G H Mˣ

full_name: Units.isScalarTower'_left
code: /-- Transfer `IsScalarTower G M α` to `IsScalarTower G Mˣ α`. -/
@[to_additive "Transfer `VAddAssocClass G M α` to `VAddAssocClass G (AddUnits M) α`."]
instance isScalarTower'_left [Group G] [Monoid M] [MulAction G M] [SMul M α] [SMul G α]
    [SMulCommClass G M M] [IsScalarTower G M M] [IsScalarTower G M α] :
    IsScalarTower G Mˣ α 
goal: IsScalarTower G Mˣ α

full_name: AddUnits.isScalarTower'_left
code: /-- Transfer `IsScalarTower G M α` to `IsScalarTower G Mˣ α`. -/
@[to_additive "Transfer `VAddAssocClass G M α` to `VAddAssocClass G (AddUnits M) α`."]
instance isScalarTower'_left [Group G] [Monoid M] [MulAction G M] [SMul M α] [SMul G α]
    [SMulCommClass G M M] [IsScalarTower G M M] [IsScalarTower G M α] :
    IsScalarTower G Mˣ α 
goal: VAddAssocClass G (AddUnits M) α

full_name: IsUnit.smul
code: @[to_additive]
lemma IsUnit.smul [Group G] [Monoid M] [MulAction G M] [SMulCommClass G M M] [IsScalarTower G M M]
    {m : M} (g : G) (h : IsUnit m) : IsUnit (g • m) 
goal: IsUnit (g • m)

full_name: IsAddUnit.vadd
code: @[to_additive]
lemma IsUnit.smul [Group G] [Monoid M] [MulAction G M] [SMulCommClass G M M] [IsScalarTower G M M]
    {m : M} (g : G) (h : IsUnit m) : IsUnit (g • m) 
goal: IsAddUnit (g +ᵥ m)