Documentation

Mathlib.RingTheory.NonUnitalSubring.Defs

NonUnitalSubrings #

Let R be a non-unital ring. This file defines the "bundled" non-unital subring type NonUnitalSubring R, a type whose terms correspond to non-unital subrings of R. This is the preferred way to talk about non-unital subrings in mathlib.

Main definitions #

Notation used here:

(R : Type u) [NonUnitalRing R] (S : Type u) [NonUnitalRing S] (f g : R →ₙ+* S) (A : NonUnitalSubring R) (B : NonUnitalSubring S) (s : Set R)

Implementation notes #

A non-unital subring is implemented as a NonUnitalSubsemiring which is also an additive subgroup.

Lattice inclusion (e.g. and ) is used rather than set notation ( and ), although is defined as membership of a non-unital subring's underlying set.

Tags #

non-unital subring

NonUnitalSubringClass S R states that S is a type of subsets s ⊆ R that are both a multiplicative submonoid and an additive subgroup.

    Instances
      @[instance 100]
      Equations
      • =
      @[instance 75]

      A non-unital subring of a non-unital ring inherits a non-unital ring structure

      Equations
      @[instance 75]

      A non-unital subring of a non-unital ring inherits a non-unital ring structure

      Equations
      @[instance 75]

      A non-unital subring of a NonUnitalCommRing is a NonUnitalCommRing.

      Equations
      def NonUnitalSubringClass.subtype {R : Type u} {S : Type v} [NonUnitalNonAssocRing R] [SetLike S R] [hSR : NonUnitalSubringClass S R] (s : S) :
      s →ₙ+* R

      The natural non-unital ring hom from a non-unital subring of a non-unital ring R to R.

      Equations
      Instances For
        @[simp]
        theorem NonUnitalSubringClass.coe_subtype {R : Type u} {S : Type v} [NonUnitalNonAssocRing R] [SetLike S R] [hSR : NonUnitalSubringClass S R] (s : S) :
        (NonUnitalSubringClass.subtype s) = Subtype.val

        NonUnitalSubring R is the type of non-unital subrings of R. A non-unital subring of R is a subset s that is a multiplicative subsemigroup and an additive subgroup. Note in particular that it shares the same 0 as R.

          Instances For
            @[reducible]

            Reinterpret a NonUnitalSubring as an AddSubgroup.

            Equations
            • self.toAddSubgroup = { toAddSubmonoid := self.toAddSubmonoid, neg_mem' := }
            Instances For

              The underlying submonoid of a NonUnitalSubring.

              Equations
              • s.toSubsemigroup = { carrier := s.carrier, mul_mem' := }
              Instances For
                Equations
                • NonUnitalSubring.instSetLike = { coe := fun (s : NonUnitalSubring R) => s.carrier, coe_injective' := }
                theorem NonUnitalSubring.mem_carrier {R : Type u} [NonUnitalNonAssocRing R] {s : NonUnitalSubring R} {x : R} :
                x s.toNonUnitalSubsemiring x s
                @[simp]
                theorem NonUnitalSubring.mem_mk {R : Type u} [NonUnitalNonAssocRing R] {S : NonUnitalSubsemiring R} {x : R} (h : ∀ {x : R}, x S.carrier-x S.carrier) :
                x { toNonUnitalSubsemiring := S, neg_mem' := h } x S
                @[simp]
                theorem NonUnitalSubring.coe_set_mk {R : Type u} [NonUnitalNonAssocRing R] (S : NonUnitalSubsemiring R) (h : ∀ {x : R}, x S.carrier-x S.carrier) :
                { toNonUnitalSubsemiring := S, neg_mem' := h } = S
                @[simp]
                theorem NonUnitalSubring.mk_le_mk {R : Type u} [NonUnitalNonAssocRing R] {S : NonUnitalSubsemiring R} {S' : NonUnitalSubsemiring R} (h : ∀ {x : R}, x S.carrier-x S.carrier) (h' : ∀ {x : R}, x S'.carrier-x S'.carrier) :
                { toNonUnitalSubsemiring := S, neg_mem' := h } { toNonUnitalSubsemiring := S', neg_mem' := h' } S S'
                theorem NonUnitalSubring.ext {R : Type u} [NonUnitalNonAssocRing R] {S : NonUnitalSubring R} {T : NonUnitalSubring R} (h : ∀ (x : R), x S x T) :
                S = T

                Two non-unital subrings are equal if they have the same elements.

                def NonUnitalSubring.copy {R : Type u} [NonUnitalNonAssocRing R] (S : NonUnitalSubring R) (s : Set R) (hs : s = S) :

                Copy of a non-unital subring with a new carrier equal to the old one. Useful to fix definitional equalities.

                Equations
                • S.copy s hs = { carrier := s, add_mem' := , zero_mem' := , mul_mem' := , neg_mem' := }
                Instances For
                  @[simp]
                  theorem NonUnitalSubring.coe_copy {R : Type u} [NonUnitalNonAssocRing R] (S : NonUnitalSubring R) (s : Set R) (hs : s = S) :
                  (S.copy s hs) = s
                  theorem NonUnitalSubring.copy_eq {R : Type u} [NonUnitalNonAssocRing R] (S : NonUnitalSubring R) (s : Set R) (hs : s = S) :
                  S.copy s hs = S
                  theorem NonUnitalSubring.toNonUnitalSubsemiring_strictMono {R : Type u} [NonUnitalNonAssocRing R] :
                  StrictMono NonUnitalSubring.toNonUnitalSubsemiring
                  theorem NonUnitalSubring.toNonUnitalSubsemiring_mono {R : Type u} [NonUnitalNonAssocRing R] :
                  Monotone NonUnitalSubring.toNonUnitalSubsemiring
                  theorem NonUnitalSubring.toAddSubgroup_strictMono {R : Type u} [NonUnitalNonAssocRing R] :
                  StrictMono NonUnitalSubring.toAddSubgroup
                  theorem NonUnitalSubring.toAddSubgroup_mono {R : Type u} [NonUnitalNonAssocRing R] :
                  Monotone NonUnitalSubring.toAddSubgroup
                  theorem NonUnitalSubring.toSubsemigroup_strictMono {R : Type u} [NonUnitalNonAssocRing R] :
                  StrictMono NonUnitalSubring.toSubsemigroup
                  theorem NonUnitalSubring.toSubsemigroup_mono {R : Type u} [NonUnitalNonAssocRing R] :
                  Monotone NonUnitalSubring.toSubsemigroup
                  def NonUnitalSubring.mk' {R : Type u} [NonUnitalNonAssocRing R] (s : Set R) (sm : Subsemigroup R) (sa : AddSubgroup R) (hm : sm = s) (ha : sa = s) :

                  Construct a NonUnitalSubring R from a set s, a subsemigroup sm, and an additive subgroup sa such that x ∈ s ↔ x ∈ sm ↔ x ∈ sa.

                  Equations
                  • NonUnitalSubring.mk' s sm sa hm ha = { carrier := (sm.copy s ).carrier, add_mem' := , zero_mem' := , mul_mem' := , neg_mem' := }
                  Instances For
                    @[simp]
                    theorem NonUnitalSubring.coe_mk' {R : Type u} [NonUnitalNonAssocRing R] {s : Set R} {sm : Subsemigroup R} (hm : sm = s) {sa : AddSubgroup R} (ha : sa = s) :
                    (NonUnitalSubring.mk' s sm sa hm ha) = s
                    @[simp]
                    theorem NonUnitalSubring.mem_mk' {R : Type u} [NonUnitalNonAssocRing R] {s : Set R} {sm : Subsemigroup R} (hm : sm = s) {sa : AddSubgroup R} (ha : sa = s) {x : R} :
                    x NonUnitalSubring.mk' s sm sa hm ha x s
                    @[simp]
                    theorem NonUnitalSubring.mk'_toSubsemigroup {R : Type u} [NonUnitalNonAssocRing R] {s : Set R} {sm : Subsemigroup R} (hm : sm = s) {sa : AddSubgroup R} (ha : sa = s) :
                    (NonUnitalSubring.mk' s sm sa hm ha).toSubsemigroup = sm
                    @[simp]
                    theorem NonUnitalSubring.mk'_toAddSubgroup {R : Type u} [NonUnitalNonAssocRing R] {s : Set R} {sm : Subsemigroup R} (hm : sm = s) {sa : AddSubgroup R} (ha : sa = s) :
                    (NonUnitalSubring.mk' s sm sa hm ha).toAddSubgroup = sa

                    A non-unital subring contains the ring's 0.

                    theorem NonUnitalSubring.mul_mem {R : Type u} [NonUnitalNonAssocRing R] (s : NonUnitalSubring R) {x : R} {y : R} :
                    x sy sx * y s

                    A non-unital subring is closed under multiplication.

                    theorem NonUnitalSubring.add_mem {R : Type u} [NonUnitalNonAssocRing R] (s : NonUnitalSubring R) {x : R} {y : R} :
                    x sy sx + y s

                    A non-unital subring is closed under addition.

                    theorem NonUnitalSubring.neg_mem {R : Type u} [NonUnitalNonAssocRing R] (s : NonUnitalSubring R) {x : R} :
                    x s-x s

                    A non-unital subring is closed under negation.

                    theorem NonUnitalSubring.sub_mem {R : Type u} [NonUnitalNonAssocRing R] (s : NonUnitalSubring R) {x : R} {y : R} (hx : x s) (hy : y s) :
                    x - y s

                    A non-unital subring is closed under subtraction

                    A non-unital subring of a non-unital ring inherits a non-unital ring structure

                    Equations
                    theorem NonUnitalSubring.zsmul_mem {R : Type u} [NonUnitalNonAssocRing R] (s : NonUnitalSubring R) {x : R} (hx : x s) (n : ) :
                    n x s
                    @[simp]
                    theorem NonUnitalSubring.val_add {R : Type u} [NonUnitalNonAssocRing R] (s : NonUnitalSubring R) (x : s) (y : s) :
                    (x + y) = x + y
                    @[simp]
                    theorem NonUnitalSubring.val_neg {R : Type u} [NonUnitalNonAssocRing R] (s : NonUnitalSubring R) (x : s) :
                    (-x) = -x
                    @[simp]
                    theorem NonUnitalSubring.val_mul {R : Type u} [NonUnitalNonAssocRing R] (s : NonUnitalSubring R) (x : s) (y : s) :
                    (x * y) = x * y
                    theorem NonUnitalSubring.coe_eq_zero_iff {R : Type u} [NonUnitalNonAssocRing R] (s : NonUnitalSubring R) {x : s} :
                    x = 0 x = 0

                    A non-unital subring of a NonUnitalCommRing is a NonUnitalCommRing.

                    Equations

                    Partial order #

                    @[simp]
                    theorem NonUnitalSubring.mem_toSubsemigroup {R : Type u} [NonUnitalNonAssocRing R] {s : NonUnitalSubring R} {x : R} :
                    x s.toSubsemigroup x s
                    @[simp]
                    theorem NonUnitalSubring.coe_toSubsemigroup {R : Type u} [NonUnitalNonAssocRing R] (s : NonUnitalSubring R) :
                    s.toSubsemigroup = s
                    @[simp]
                    theorem NonUnitalSubring.mem_toAddSubgroup {R : Type u} [NonUnitalNonAssocRing R] {s : NonUnitalSubring R} {x : R} :
                    x s.toAddSubgroup x s
                    @[simp]
                    theorem NonUnitalSubring.coe_toAddSubgroup {R : Type u} [NonUnitalNonAssocRing R] (s : NonUnitalSubring R) :
                    s.toAddSubgroup = s
                    @[simp]
                    theorem NonUnitalSubring.mem_toNonUnitalSubsemiring {R : Type u} [NonUnitalNonAssocRing R] {s : NonUnitalSubring R} {x : R} :
                    x s.toNonUnitalSubsemiring x s
                    @[simp]
                    theorem NonUnitalSubring.coe_toNonUnitalSubsemiring {R : Type u} [NonUnitalNonAssocRing R] (s : NonUnitalSubring R) :
                    s.toNonUnitalSubsemiring = s

                    The ring homomorphism associated to an inclusion of NonUnitalSubrings.

                    Equations
                    Instances For