File: Mathlib/Algebra/Ring/Action/Basic.lean

full_name: MulSemiringAction.smul_mul
code: /-- Typeclass for multiplicative actions by monoids on semirings.

This combines `DistribMulAction` with `MulDistribMulAction`. -/
class MulSemiringAction (M : Type u) (R : Type v) [Monoid M] [Semiring R] extends
  DistribMulAction M R where
  /-- Multipliying `1` by a scalar gives `1` -/
  smul_one : ∀ g : M, (g • (1 : R) : R) = 1
  /-- Scalar multiplication distributes across multiplication -/
  smul_mul : ∀ (g : M) (x y : R), g • (x * y) = g • x * g • y
goal: g • (x * y) = g • x * g • y

full_name: MulSemiringAction.smul_one
code: /-- Typeclass for multiplicative actions by monoids on semirings.

This combines `DistribMulAction` with `MulDistribMulAction`. -/
class MulSemiringAction (M : Type u) (R : Type v) [Monoid M] [Semiring R] extends
  DistribMulAction M R where
  /-- Multipliying `1` by a scalar gives `1` -/
  smul_one : ∀ g : M, (g • (1 : R) : R) = 1
  /-- Scalar multiplication distributes across multiplication -/
  smul_mul : ∀ (g : M) (x y : R), g • (x * y) = g • x * g • y
goal: g • 1 = 1

full_name: MulSemiringAction
code: /-- Typeclass for multiplicative actions by monoids on semirings.

This combines `DistribMulAction` with `MulDistribMulAction`. -/
class MulSemiringAction (M : Type u) (R : Type v) [Monoid M] [Semiring R] extends
  DistribMulAction M R where
  /-- Multipliying `1` by a scalar gives `1` -/
  smul_one : ∀ g : M, (g • (1 : R) : R) = 1
  /-- Scalar multiplication distributes across multiplication -/
  smul_mul : ∀ (g : M) (x y : R), g • (x * y) = g • x * g • y
goal: Type (max u v)

full_name: MulSemiringAction.toMulDistribMulAction
code: instance (priority := 100) MulSemiringAction.toMulDistribMulAction [h : MulSemiringAction M R] :
    MulDistribMulAction M R 
goal: MulDistribMulAction M R

full_name: MulSemiringAction.toRingHom_apply
code: /-- Each element of the monoid defines a semiring homomorphism. -/
@[simps!]
def MulSemiringAction.toRingHom [MulSemiringAction M R] (x : M) : R →+* R 
goal: ∀ (x_1 : R), (MulSemiringAction.toRingHom M R x) x_1 = x • x_1

full_name: MulSemiringAction.toRingHom
code: /-- Each element of the monoid defines a semiring homomorphism. -/
@[simps!]
def MulSemiringAction.toRingHom [MulSemiringAction M R] (x : M) : R →+* R 
goal: R →+* R

full_name: toRingHom_injective
code: theorem toRingHom_injective [MulSemiringAction M R] [FaithfulSMul M R] :
    Function.Injective (MulSemiringAction.toRingHom M R) 
goal: Function.Injective (MulSemiringAction.toRingHom M R)

full_name: RingHom.applyMulSemiringAction
code: /-- The tautological action by `R →+* R` on `R`.

This generalizes `Function.End.applyMulAction`. -/
instance RingHom.applyMulSemiringAction : MulSemiringAction (R →+* R) R 
goal: MulSemiringAction (R →+* R) R

full_name: RingHom.smul_def
code: @[simp]
protected theorem RingHom.smul_def (f : R →+* R) (a : R) : f • a = f a 
goal: f • a = f a

full_name: RingHom.applyFaithfulSMul
code: /-- `RingHom.applyMulSemiringAction` is faithful. -/
instance RingHom.applyFaithfulSMul : FaithfulSMul (R →+* R) R 
goal: FaithfulSMul (R →+* R) R

full_name: MulSemiringAction.compHom
code: /-- Compose a `MulSemiringAction` with a `MonoidHom`, with action `f r' • m`.
See note [reducible non-instances]. -/
abbrev MulSemiringAction.compHom (f : N →* M) [MulSemiringAction M R] : MulSemiringAction N R 
goal: MulSemiringAction N R