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

              A additive subgroup of additive units represented as a 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 a additive subgroup of additive units to a additive submonoid and the reduction from a 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
                            Instances For

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

                              Equations
                                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