Documentation

Mathlib.Algebra.Group.Submonoid.Units

Submonoid of units #

Given a submonoid S of a monoid M, we define the subgroup S.units as the units of S as a subgroup of . That is to say, S.units contains all members of S which have a two-sided inverse within S, as terms of type .

We also define, for subgroups S of , S.ofUnits, which is S considered as a submonoid of M. Submonoid.units and Subgroup.ofUnits form a Galois coinsertion.

We also make the equivalent additive definitions.

Implementation details #

There are a number of other constructions which are multiplicatively equivalent to S.units but which have a different type.

Definition Type
S.units Subgroup
Type u
IsUnit.submonoid S Submonoid S
S.units.ofUnits Submonoid M

All of these are distinct from S.leftInv, which is the submonoid of M which contains every member of M with a right inverse in S.

def Submonoid.units {M : Type u_1} [Monoid M] (S : Submonoid M) :

The units of S, packaged as a subgroup of .

Equations
Instances For

    The additive units of S, packaged as an additive subgroup of AddUnits M.

    Equations
    Instances For
      def Subgroup.ofUnits {M : Type u_1} [Monoid M] (S : Subgroup Mˣ) :

      A subgroup of units represented as a submonoid of M.

      Equations
      Instances For

        An additive subgroup of additive units represented as an additive submonoid of M.

        Equations
        Instances For
          @[simp]
          theorem Submonoid.ofUnits_units_le {M : Type u_1} [Monoid M] (S : Submonoid M) :
          @[simp]
          theorem Subgroup.units_ofUnits_eq {M : Type u_1} [Monoid M] (S : Subgroup Mˣ) :

          A Galois coinsertion exists between the coercion from a subgroup of units to a submonoid and the reduction from a submonoid to its unit group.

          Equations
          Instances For

            A Galois coinsertion exists between the coercion from an additive subgroup of additive units to an additive submonoid and the reduction from an additive submonoid to its unit group.

            Equations
            Instances For
              theorem ofUnits_le_iff_le_units {M : Type u_1} [Monoid M] (S : Submonoid M) (H : Subgroup Mˣ) :
              theorem Submonoid.mem_units_iff {M : Type u_1} [Monoid M] (S : Submonoid M) (x : Mˣ) :
              x S.units x S x⁻¹ S
              theorem AddSubmonoid.mem_addUnits_iff {M : Type u_1} [AddMonoid M] (S : AddSubmonoid M) (x : AddUnits M) :
              x S.addUnits x S ↑(-x) S
              theorem Submonoid.mem_units_of_val_mem_inv_val_mem {M : Type u_1} [Monoid M] (S : Submonoid M) {x : Mˣ} (h₁ : x S) (h₂ : x⁻¹ S) :
              theorem AddSubmonoid.mem_addUnits_of_val_mem_neg_val_mem {M : Type u_1} [AddMonoid M] (S : AddSubmonoid M) {x : AddUnits M} (h₁ : x S) (h₂ : ↑(-x) S) :
              theorem Submonoid.val_mem_of_mem_units {M : Type u_1} [Monoid M] (S : Submonoid M) {x : Mˣ} (h : x S.units) :
              x S
              theorem AddSubmonoid.val_mem_of_mem_addUnits {M : Type u_1} [AddMonoid M] (S : AddSubmonoid M) {x : AddUnits M} (h : x S.addUnits) :
              x S
              theorem Submonoid.inv_val_mem_of_mem_units {M : Type u_1} [Monoid M] (S : Submonoid M) {x : Mˣ} (h : x S.units) :
              x⁻¹ S
              theorem AddSubmonoid.neg_val_mem_of_mem_addUnits {M : Type u_1} [AddMonoid M] (S : AddSubmonoid M) {x : AddUnits M} (h : x S.addUnits) :
              ↑(-x) S
              theorem Submonoid.coe_inv_val_mul_coe_val {M : Type u_1} [Monoid M] (S : Submonoid M) {x : (↥S)ˣ} :
              x⁻¹ * x = 1
              theorem AddSubmonoid.coe_neg_val_add_coe_val {M : Type u_1} [AddMonoid M] (S : AddSubmonoid M) {x : AddUnits S} :
              ↑(-x) + x = 0
              theorem Submonoid.coe_val_mul_coe_inv_val {M : Type u_1} [Monoid M] (S : Submonoid M) {x : (↥S)ˣ} :
              x * x⁻¹ = 1
              theorem AddSubmonoid.coe_val_add_coe_neg_val {M : Type u_1} [AddMonoid M] (S : AddSubmonoid M) {x : AddUnits S} :
              x + ↑(-x) = 0
              theorem Submonoid.mk_inv_mul_mk_eq_one {M : Type u_1} [Monoid M] (S : Submonoid M) {x : Mˣ} (h : x S.units) :
              theorem Submonoid.mk_mul_mk_inv_eq_one {M : Type u_1} [Monoid M] (S : Submonoid M) {x : Mˣ} (h : x S.units) :
              theorem Submonoid.mul_mem_units {M : Type u_1} [Monoid M] (S : Submonoid M) {x y : Mˣ} (h₁ : x S.units) (h₂ : y S.units) :
              x * y S.units
              theorem AddSubmonoid.add_mem_addUnits {M : Type u_1} [AddMonoid M] (S : AddSubmonoid M) {x y : AddUnits M} (h₁ : x S.addUnits) (h₂ : y S.addUnits) :
              x + y S.addUnits
              theorem Submonoid.inv_mem_units {M : Type u_1} [Monoid M] (S : Submonoid M) {x : Mˣ} (h : x S.units) :
              theorem AddSubmonoid.neg_mem_addUnits {M : Type u_1} [AddMonoid M] (S : AddSubmonoid M) {x : AddUnits M} (h : x S.addUnits) :
              theorem Submonoid.inv_mem_units_iff {M : Type u_1} [Monoid M] (S : Submonoid M) {x : Mˣ} :
              def Submonoid.unitsEquivUnitsType {M : Type u_1} [Monoid M] (S : Submonoid M) :
              S.units ≃* (↥S)ˣ

              The equivalence between the subgroup of units of S and the type of units of S.

              Equations
              • One or more equations did not get rendered due to their size.
              Instances For

                The equivalence between the additive subgroup of additive units of S and the type of additive units of S.

                Equations
                • One or more equations did not get rendered due to their size.
                Instances For
                  @[simp]
                  theorem Submonoid.units_top {M : Type u_1} [Monoid M] :
                  theorem Submonoid.units_inf {M : Type u_1} [Monoid M] (S T : Submonoid M) :
                  (ST).units = S.unitsT.units
                  theorem AddSubmonoid.addUnits_inf {M : Type u_1} [AddMonoid M] (S T : AddSubmonoid M) :
                  (ST).addUnits = S.addUnitsT.addUnits
                  theorem Submonoid.units_sInf {M : Type u_1} [Monoid M] {s : Set (Submonoid M)} :
                  (sInf s).units = Ss, S.units
                  theorem AddSubmonoid.addUnits_sInf {M : Type u_1} [AddMonoid M] {s : Set (AddSubmonoid M)} :
                  (sInf s).addUnits = Ss, S.addUnits
                  theorem Submonoid.units_iInf {M : Type u_1} [Monoid M] {ι : Sort u_2} (f : ιSubmonoid M) :
                  (iInf f).units = ⨅ (i : ι), (f i).units
                  theorem AddSubmonoid.addUnits_iInf {M : Type u_1} [AddMonoid M] {ι : Sort u_2} (f : ιAddSubmonoid M) :
                  (iInf f).addUnits = ⨅ (i : ι), (f i).addUnits
                  theorem Submonoid.units_iInf₂ {M : Type u_1} [Monoid M] {ι : Sort u_2} {κ : ιSort u_3} (f : (i : ι) → κ iSubmonoid M) :
                  (⨅ (i : ι), ⨅ (j : κ i), f i j).units = ⨅ (i : ι), ⨅ (j : κ i), (f i j).units
                  theorem AddSubmonoid.addUnits_iInf₂ {M : Type u_1} [AddMonoid M] {ι : Sort u_2} {κ : ιSort u_3} (f : (i : ι) → κ iAddSubmonoid M) :
                  (⨅ (i : ι), ⨅ (j : κ i), f i j).addUnits = ⨅ (i : ι), ⨅ (j : κ i), (f i j).addUnits
                  @[simp]
                  theorem Submonoid.units_bot {M : Type u_1} [Monoid M] :
                  noncomputable def Submonoid.unitsEquivIsUnitSubmonoid {M : Type u_1} [Monoid M] (S : Submonoid M) :
                  S.units ≃* (IsUnit.submonoid S)

                  The equivalence between the subgroup of units of S and the submonoid of unit elements of S.

                  Equations
                  Instances For

                    The equivalence between the additive subgroup of additive units of S and the additive submonoid of additive unit elements of S.

                    Equations
                    Instances For
                      theorem Subgroup.mem_ofUnits_iff {M : Type u_1} [Monoid M] (S : Subgroup Mˣ) (x : M) :
                      x S.ofUnits yS, y = x
                      theorem AddSubgroup.mem_ofAddUnits_iff {M : Type u_1} [AddMonoid M] (S : AddSubgroup (AddUnits M)) (x : M) :
                      x S.ofAddUnits yS, y = x
                      theorem Subgroup.mem_ofUnits {M : Type u_1} [Monoid M] (S : Subgroup Mˣ) {x : M} {y : Mˣ} (h₁ : y S) (h₂ : y = x) :
                      theorem AddSubgroup.mem_ofAddUnits {M : Type u_1} [AddMonoid M] (S : AddSubgroup (AddUnits M)) {x : M} {y : AddUnits M} (h₁ : y S) (h₂ : y = x) :
                      theorem Subgroup.exists_mem_ofUnits_val_eq {M : Type u_1} [Monoid M] (S : Subgroup Mˣ) {x : M} (h : x S.ofUnits) :
                      yS, y = x
                      theorem AddSubgroup.exists_mem_ofAddUnits_val_eq {M : Type u_1} [AddMonoid M] (S : AddSubgroup (AddUnits M)) {x : M} (h : x S.ofAddUnits) :
                      yS, y = x
                      theorem Subgroup.mem_of_mem_val_ofUnits {M : Type u_1} [Monoid M] (S : Subgroup Mˣ) {y : Mˣ} (hy : y S.ofUnits) :
                      y S
                      theorem AddSubgroup.mem_of_mem_val_ofAddUnits {M : Type u_1} [AddMonoid M] (S : AddSubgroup (AddUnits M)) {y : AddUnits M} (hy : y S.ofAddUnits) :
                      y S
                      theorem Subgroup.isUnit_of_mem_ofUnits {M : Type u_1} [Monoid M] (S : Subgroup Mˣ) {x : M} (hx : x S.ofUnits) :
                      noncomputable def Subgroup.unit_of_mem_ofUnits {M : Type u_1} [Monoid M] (S : Subgroup Mˣ) {x : M} (h : x S.ofUnits) :

                      Given some x : M which is a member of the submonoid of unit elements corresponding to a subgroup of units, produce a unit of M whose coercion is equal to x.

                      Equations
                      Instances For
                        noncomputable def AddSubgroup.addUnit_of_mem_ofAddUnits {M : Type u_1} [AddMonoid M] (S : AddSubgroup (AddUnits M)) {x : M} (h : x S.ofAddUnits) :

                        Given some x : M which is a member of the additive submonoid of additive unit elements corresponding to a subgroup of units, produce a unit of M whose coercion is equal to x.

                        Equations
                        Instances For
                          theorem Subgroup.unit_eq_unit_of_mem_ofUnits {M : Type u_1} [Monoid M] (S : Subgroup Mˣ) {x : M} (h₁ : IsUnit x) (h₂ : x S.ofUnits) :
                          theorem Subgroup.unit_mem_of_mem_ofUnits {M : Type u_1} [Monoid M] (S : Subgroup Mˣ) {x : M} {h₁ : IsUnit x} (h₂ : x S.ofUnits) :
                          h₁.unit S
                          theorem AddSubgroup.addUnit_mem_of_mem_ofAddUnits {M : Type u_1} [AddMonoid M] (S : AddSubgroup (AddUnits M)) {x : M} {h₁ : IsAddUnit x} (h₂ : x S.ofAddUnits) :
                          h₁.addUnit S
                          theorem Subgroup.mem_ofUnits_of_isUnit_of_unit_mem {M : Type u_1} [Monoid M] (S : Subgroup Mˣ) {x : M} (h₁ : IsUnit x) (h₂ : h₁.unit S) :
                          theorem Subgroup.mem_ofUnits_iff_exists_isUnit {M : Type u_1} [Monoid M] (S : Subgroup Mˣ) (x : M) :
                          x S.ofUnits ∃ (h : IsUnit x), h.unit S
                          noncomputable def Subgroup.ofUnitsEquivType {M : Type u_1} [Monoid M] (S : Subgroup Mˣ) :
                          S.ofUnits ≃* S

                          The equivalence between the coercion of a subgroup S of to a submonoid of M and the subgroup itself as a type.

                          Equations
                          Instances For
                            noncomputable def AddSubgroup.ofAddUnitsEquivType {M : Type u_1} [AddMonoid M] (S : AddSubgroup (AddUnits M)) :
                            S.ofAddUnits ≃+ S

                            The equivalence between the coercion of an additive subgroup S of to an additive submonoid of M and the additive subgroup itself as a type.

                            Equations
                            Instances For
                              @[simp]
                              theorem Subgroup.ofUnits_inf {M : Type u_1} [Monoid M] (S T : Subgroup Mˣ) :
                              (ST).ofUnits = S.ofUnitsT.ofUnits
                              theorem Subgroup.ofUnits_sSup {M : Type u_1} [Monoid M] (s : Set (Subgroup Mˣ)) :
                              (sSup s).ofUnits = Ss, S.ofUnits
                              theorem AddSubgroup.ofAddUnits_sSup {M : Type u_1} [AddMonoid M] (s : Set (AddSubgroup (AddUnits M))) :
                              (sSup s).ofAddUnits = Ss, S.ofAddUnits
                              theorem Subgroup.ofUnits_iSup {M : Type u_1} [Monoid M] {ι : Sort u_2} {f : ιSubgroup Mˣ} :
                              (iSup f).ofUnits = ⨆ (i : ι), (f i).ofUnits
                              theorem AddSubgroup.ofAddUnits_iSup {M : Type u_1} [AddMonoid M] {ι : Sort u_2} {f : ιAddSubgroup (AddUnits M)} :
                              (iSup f).ofAddUnits = ⨆ (i : ι), (f i).ofAddUnits
                              theorem Subgroup.ofUnits_iSup₂ {M : Type u_1} [Monoid M] {ι : Sort u_2} {κ : ιSort u_3} (f : (i : ι) → κ iSubgroup Mˣ) :
                              (⨆ (i : ι), ⨆ (j : κ i), f i j).ofUnits = ⨆ (i : ι), ⨆ (j : κ i), (f i j).ofUnits
                              theorem AddSubgroup.ofAddUnits_iSup₂ {M : Type u_1} [AddMonoid M] {ι : Sort u_2} {κ : ιSort u_3} (f : (i : ι) → κ iAddSubgroup (AddUnits M)) :
                              (⨆ (i : ι), ⨆ (j : κ i), f i j).ofAddUnits = ⨆ (i : ι), ⨆ (j : κ i), (f i j).ofAddUnits
                              @[simp]
                              theorem Subgroup.ofUnits_sup_units {M : Type u_1} [Monoid M] (S T : Subgroup Mˣ) :
                              (S.ofUnitsT.ofUnits).units = ST
                              @[simp]
                              @[simp]
                              theorem Subgroup.ofUnits_inf_units {M : Type u_1} [Monoid M] (S T : Subgroup Mˣ) :
                              (S.ofUnitsT.ofUnits).units = ST
                              @[simp]
                              noncomputable def Subgroup.ofUnitsTopEquiv {M : Type u_1} [Monoid M] :

                              The equivalence between the top subgroup of coerced to a submonoid M and the units of M.

                              Equations
                              Instances For

                                The equivalence between the additive subgroup of additive units of S and the additive submonoid of additive unit elements of S.

                                Equations
                                Instances For
                                  theorem Subgroup.mem_units_iff_val_mem {G : Type u_2} [Group G] (H : Subgroup G) (x : Gˣ) :
                                  x H.units x H
                                  @[simp]
                                  theorem Subgroup.mem_iff_toUnits_mem_units {G : Type u_2} [Group G] (H : Subgroup G) (x : G) :
                                  @[simp]
                                  theorem Subgroup.val_mem_ofUnits_iff_mem {G : Type u_2} [Group G] (H : Subgroup Gˣ) (x : Gˣ) :
                                  x H.ofUnits x H
                                  @[simp]
                                  def Subgroup.unitsEquivSelf {G : Type u_2} [Group G] (H : Subgroup G) :
                                  H.units ≃* H

                                  The equivalence between the greatest subgroup of units contained within T and T itself.

                                  Equations
                                  Instances For

                                    The equivalence between the greatest subgroup of additive units contained within T and T itself.

                                    Equations
                                    Instances For