Documentation

Mathlib.Algebra.Ring.Action.Basic

Group action on rings #

This file defines the typeclass of monoid acting on semirings MulSemiringAction M R.

An example of a MulSemiringAction is the action of the Galois group Gal(L/K) on the big field L. Note that Algebra does not in general satisfy the axioms of MulSemiringAction.

Implementation notes #

There is no separate typeclass for group acting on rings, group acting on fields, etc. They are all grouped under MulSemiringAction.

Note #

The corresponding typeclass of subrings invariant under such an action, IsInvariantSubring, is defined in Mathlib/Algebra/Ring/Action/Invariant.lean.

Tags #

group action

class MulSemiringAction (M : Type u) (R : Type v) [Monoid M] [Semiring R] extends DistribMulAction M R :
Type (max u v)

Typeclass for multiplicative actions by monoids on semirings.

This combines DistribMulAction with MulDistribMulAction: it expresses the interplay between the action and both addition and multiplication on the target. Two key axioms are g โ€ข (x + y) = (g โ€ข x) + (g โ€ข y) and g โ€ข (x * y) = (g โ€ข x) * (g โ€ข y).

A typical use case is the action of a Galois group $Gal(L/K)$ on the field L.

  • smul : M โ†’ R โ†’ R
  • mul_smul (x y : M) (b : R) : (x * y) โ€ข b = x โ€ข y โ€ข b
  • one_smul (b : R) : 1 โ€ข b = b
  • smul_zero (a : M) : a โ€ข 0 = 0
  • smul_add (a : M) (x y : R) : a โ€ข (x + y) = a โ€ข x + a โ€ข y
  • smul_one (g : M) : g โ€ข 1 = 1

    Multiplying 1 by a scalar gives 1

  • smul_mul (g : M) (x y : R) : g โ€ข (x * y) = g โ€ข x * g โ€ข y

    Scalar multiplication distributes across multiplication

Instances
    @[implicit_reducible, instance 100]
    instance MulSemiringAction.toMulDistribMulAction (M : Type u_3) (R : Type u_4) {xโœ : Monoid M} {xโœยน : Semiring R} [h : MulSemiringAction M R] :
    def MulSemiringAction.toRingHom (M : Type u_1) [Monoid M] (R : Type v) [Semiring R] [MulSemiringAction M R] (x : M) :

    Each element of the monoid defines a semiring homomorphism.

    Instances For
      @[simp]
      theorem MulSemiringAction.toRingHom_apply (M : Type u_1) [Monoid M] (R : Type v) [Semiring R] [MulSemiringAction M R] (x : M) (xโœ : R) :
      (toRingHom M R x) xโœ = x โ€ข xโœ
      theorem toRingHom_injective (M : Type u_1) [Monoid M] (R : Type v) [Semiring R] [MulSemiringAction M R] [FaithfulSMul M R] :
      Function.Injective (MulSemiringAction.toRingHom M R)
      @[implicit_reducible]

      The tautological action by R โ†’+* R on R.

      This generalizes Function.End.applyMulAction.

      @[simp]
      theorem RingHom.smul_def (R : Type v) [Semiring R] (f : R โ†’+* R) (a : R) :
      f โ€ข a = f a
      @[reducible, inline]
      abbrev MulSemiringAction.compHom {M : Type u_1} {N : Type u_2} [Monoid M] [Monoid N] (R : Type v) [Semiring R] (f : N โ†’* M) [MulSemiringAction M R] :

      Compose a MulSemiringAction with a MonoidHom, with action f r' โ€ข m. See note [reducible non-instances].

      Instances For