Module docstring
{"# Subrings invariant under an action
If a monoid acts on a ring via a MulSemiringAction, then IsInvariantSubring is
a predicate on subrings asserting that the subring is fixed elementwise by the
action.
"}
{"# Subrings invariant under an action
If a monoid acts on a ring via a MulSemiringAction, then IsInvariantSubring is
a predicate on subrings asserting that the subring is fixed elementwise by the
action.
"}
IsInvariantSubring
structure
/-- A typeclass for subrings invariant under a `MulSemiringAction`. -/
class IsInvariantSubring : Prop where
smul_mem : ∀ (m : M) {x : R}, x ∈ S → m • x ∈ S
IsInvariantSubring.toMulSemiringAction
instance
[IsInvariantSubring M S] : MulSemiringAction M S
instance IsInvariantSubring.toMulSemiringAction [IsInvariantSubring M S] :
MulSemiringAction M S where
smul m x := ⟨m • ↑x, IsInvariantSubring.smul_mem m x.2⟩
one_smul s := Subtype.eq <| one_smul M (s : R)
mul_smul m₁ m₂ s := Subtype.eq <| mul_smul m₁ m₂ (s : R)
smul_add m s₁ s₂ := Subtype.eq <| smul_add m (s₁ : R) (s₂ : R)
smul_zero m := Subtype.eq <| smul_zero m
smul_one m := Subtype.eq <| smul_one m
smul_mul m s₁ s₂ := Subtype.eq <| smul_mul' m (s₁ : R) (s₂ : R)
IsInvariantSubring.subtypeHom
definition
: U →+*[M] R'
/-- The canonical inclusion from an invariant subring. -/
def IsInvariantSubring.subtypeHom : U →+*[M] R' :=
{ U.subtype with map_smul' := fun _ _ ↦ rfl }
IsInvariantSubring.coe_subtypeHom
theorem
: (IsInvariantSubring.subtypeHom M U : U → R') = Subtype.val
@[simp]
theorem IsInvariantSubring.coe_subtypeHom :
(IsInvariantSubring.subtypeHom M U : U → R') = Subtype.val := rfl
IsInvariantSubring.coe_subtypeHom'
theorem
: ((IsInvariantSubring.subtypeHom M U) : U →+* R') = U.subtype
@[simp]
theorem IsInvariantSubring.coe_subtypeHom' :
((IsInvariantSubring.subtypeHom M U) : U →+* R') = U.subtype := rfl