Documentation

Mathlib.Algebra.Order.Hom.MonoidWithZero

Ordered monoid and group homomorphisms #

This file defines morphisms between (additive) ordered monoids with zero.

Types of morphisms #

Notation #

TODO #

Tags #

monoid with zero

structure OrderMonoidWithZeroHom (α : Type u_6) (β : Type u_7) [Preorder α] [Preorder β] [MulZeroOneClass α] [MulZeroOneClass β] extends α →*₀ β :
Type (max u_6 u_7)

OrderMonoidWithZeroHom α β is the type of functions α → β that preserve the MonoidWithZero structure.

OrderMonoidWithZeroHom is also used for group homomorphisms.

When possible, instead of parametrizing results over (f : α →+ β), you should parameterize over (F : Type*) [FunLike F M N] [MonoidWithZeroHomClass F M N] [OrderHomClass F M N] (f : F).

Instances For
    def OrderMonoidWithZeroHomClass.toOrderMonoidWithZeroHom {F : Type u_1} {α : Type u_2} {β : Type u_3} [Preorder α] [Preorder β] [MulZeroOneClass α] [MulZeroOneClass β] [FunLike F α β] [OrderHomClass F α β] [MonoidWithZeroHomClass F α β] (f : F) :
    α →*₀o β

    Turn an element of a type F satisfying OrderHomClass F α β and MonoidWithZeroHomClass F α β into an actual OrderMonoidWithZeroHom. This is declared as the default coercion from F to α →+*₀o β.

    Equations
      Instances For
        instance OrderMonoidWithZeroHom.instFunLike {α : Type u_2} {β : Type u_3} [Preorder α] [Preorder β] [MulZeroOneClass α] [MulZeroOneClass β] :
        FunLike (α →*₀o β) α β
        Equations
          theorem OrderMonoidWithZeroHom.ext {α : Type u_2} {β : Type u_3} [Preorder α] [Preorder β] [MulZeroOneClass α] [MulZeroOneClass β] {f g : α →*₀o β} (h : ∀ (a : α), f a = g a) :
          f = g
          theorem OrderMonoidWithZeroHom.ext_iff {α : Type u_2} {β : Type u_3} [Preorder α] [Preorder β] [MulZeroOneClass α] [MulZeroOneClass β] {f g : α →*₀o β} :
          f = g ∀ (a : α), f a = g a
          @[simp]
          theorem OrderMonoidWithZeroHom.coe_mk {α : Type u_2} {β : Type u_3} [Preorder α] [Preorder β] [MulZeroOneClass α] [MulZeroOneClass β] (f : α →*₀ β) (h : Monotone (↑f).toFun) :
          { toMonoidWithZeroHom := f, monotone' := h } = f
          @[simp]
          theorem OrderMonoidWithZeroHom.mk_coe {α : Type u_2} {β : Type u_3} [Preorder α] [Preorder β] [MulZeroOneClass α] [MulZeroOneClass β] (f : α →*₀o β) (h : Monotone (↑f).toFun) :
          { toMonoidWithZeroHom := f, monotone' := h } = f
          def OrderMonoidWithZeroHom.toOrderMonoidHom {α : Type u_2} {β : Type u_3} [Preorder α] [Preorder β] [MulZeroOneClass α] [MulZeroOneClass β] (f : α →*₀o β) :
          α →*o β

          Reinterpret an ordered monoid with zero homomorphism as an order monoid homomorphism.

          Equations
            Instances For
              @[simp]
              theorem OrderMonoidWithZeroHom.coe_monoidWithZeroHom {α : Type u_2} {β : Type u_3} [Preorder α] [Preorder β] [MulZeroOneClass α] [MulZeroOneClass β] (f : α →*₀o β) :
              f = f
              @[simp]
              theorem OrderMonoidWithZeroHom.coe_orderMonoidHom {α : Type u_2} {β : Type u_3} [Preorder α] [Preorder β] [MulZeroOneClass α] [MulZeroOneClass β] (f : α →*₀o β) :
              f = f
              def OrderMonoidWithZeroHom.copy {α : Type u_2} {β : Type u_3} [Preorder α] [Preorder β] [MulZeroOneClass α] [MulZeroOneClass β] (f : α →*₀o β) (f' : αβ) (h : f' = f) :
              α →*o β

              Copy of an OrderMonoidWithZeroHom with a new toFun equal to the old one. Useful to fix definitional equalities.

              Equations
                Instances For
                  @[simp]
                  theorem OrderMonoidWithZeroHom.coe_copy {α : Type u_2} {β : Type u_3} [Preorder α] [Preorder β] [MulZeroOneClass α] [MulZeroOneClass β] (f : α →*₀o β) (f' : αβ) (h : f' = f) :
                  (f.copy f' h) = f'
                  theorem OrderMonoidWithZeroHom.copy_eq {α : Type u_2} {β : Type u_3} [Preorder α] [Preorder β] [MulZeroOneClass α] [MulZeroOneClass β] (f : α →*₀o β) (f' : αβ) (h : f' = f) :
                  f.copy f' h = f

                  The identity map as an ordered monoid with zero homomorphism.

                  Equations
                    Instances For
                      def OrderMonoidWithZeroHom.comp {α : Type u_2} {β : Type u_3} {γ : Type u_4} [Preorder α] [Preorder β] [Preorder γ] [MulZeroOneClass α] [MulZeroOneClass β] [MulZeroOneClass γ] (f : β →*₀o γ) (g : α →*₀o β) :
                      α →*₀o γ

                      Composition of OrderMonoidWithZeroHoms as an OrderMonoidWithZeroHom.

                      Equations
                        Instances For
                          @[simp]
                          theorem OrderMonoidWithZeroHom.coe_comp {α : Type u_2} {β : Type u_3} {γ : Type u_4} [Preorder α] [Preorder β] [Preorder γ] [MulZeroOneClass α] [MulZeroOneClass β] [MulZeroOneClass γ] (f : β →*₀o γ) (g : α →*₀o β) :
                          (f.comp g) = f g
                          @[simp]
                          theorem OrderMonoidWithZeroHom.comp_apply {α : Type u_2} {β : Type u_3} {γ : Type u_4} [Preorder α] [Preorder β] [Preorder γ] [MulZeroOneClass α] [MulZeroOneClass β] [MulZeroOneClass γ] (f : β →*₀o γ) (g : α →*₀o β) (a : α) :
                          (f.comp g) a = f (g a)
                          theorem OrderMonoidWithZeroHom.coe_comp_monoidWithZeroHom {α : Type u_2} {β : Type u_3} {γ : Type u_4} [Preorder α] [Preorder β] [Preorder γ] [MulZeroOneClass α] [MulZeroOneClass β] [MulZeroOneClass γ] (f : β →*₀o γ) (g : α →*₀o β) :
                          (f.comp g) = (↑f).comp g
                          theorem OrderMonoidWithZeroHom.coe_comp_orderMonoidHom {α : Type u_2} {β : Type u_3} {γ : Type u_4} [Preorder α] [Preorder β] [Preorder γ] [MulZeroOneClass α] [MulZeroOneClass β] [MulZeroOneClass γ] (f : β →*₀o γ) (g : α →*₀o β) :
                          (f.comp g) = (↑f).comp g
                          @[simp]
                          theorem OrderMonoidWithZeroHom.comp_assoc {α : Type u_2} {β : Type u_3} {γ : Type u_4} {δ : Type u_5} [Preorder α] [Preorder β] [Preorder γ] [Preorder δ] [MulZeroOneClass α] [MulZeroOneClass β] [MulZeroOneClass γ] [MulZeroOneClass δ] (f : γ →*₀o δ) (g : β →*₀o γ) (h : α →*₀o β) :
                          (f.comp g).comp h = f.comp (g.comp h)
                          @[simp]
                          theorem OrderMonoidWithZeroHom.cancel_right {α : Type u_2} {β : Type u_3} {γ : Type u_4} [Preorder α] [Preorder β] [Preorder γ] [MulZeroOneClass α] [MulZeroOneClass β] [MulZeroOneClass γ] {g₁ g₂ : β →*₀o γ} {f : α →*₀o β} (hf : Function.Surjective f) :
                          g₁.comp f = g₂.comp f g₁ = g₂
                          @[simp]
                          theorem OrderMonoidWithZeroHom.cancel_left {α : Type u_2} {β : Type u_3} {γ : Type u_4} [Preorder α] [Preorder β] [Preorder γ] [MulZeroOneClass α] [MulZeroOneClass β] [MulZeroOneClass γ] {g : β →*₀o γ} {f₁ f₂ : α →*₀o β} (hg : Function.Injective g) :
                          g.comp f₁ = g.comp f₂ f₁ = f₂

                          For two ordered monoid morphisms f and g, their product is the ordered monoid morphism sending a to f a * g a.

                          Equations
                            @[simp]
                            theorem OrderMonoidWithZeroHom.coe_mul {α : Type u_2} {β : Type u_3} [LinearOrderedCommMonoidWithZero α] [LinearOrderedCommMonoidWithZero β] (f g : α →*₀o β) :
                            ⇑(f * g) = f * g
                            @[simp]
                            theorem OrderMonoidWithZeroHom.mul_apply {α : Type u_2} {β : Type u_3} [LinearOrderedCommMonoidWithZero α] [LinearOrderedCommMonoidWithZero β] (f g : α →*₀o β) (a : α) :
                            (f * g) a = f a * g a
                            theorem OrderMonoidWithZeroHom.mul_comp {α : Type u_2} {β : Type u_3} {γ : Type u_4} [LinearOrderedCommMonoidWithZero α] [LinearOrderedCommMonoidWithZero β] [LinearOrderedCommMonoidWithZero γ] (g₁ g₂ : β →*₀o γ) (f : α →*₀o β) :
                            (g₁ * g₂).comp f = g₁.comp f * g₂.comp f
                            theorem OrderMonoidWithZeroHom.comp_mul {α : Type u_2} {β : Type u_3} {γ : Type u_4} [LinearOrderedCommMonoidWithZero α] [LinearOrderedCommMonoidWithZero β] [LinearOrderedCommMonoidWithZero γ] (g : β →*₀o γ) (f₁ f₂ : α →*₀o β) :
                            g.comp (f₁ * f₂) = g.comp f₁ * g.comp f₂
                            @[simp]
                            theorem OrderMonoidWithZeroHom.toMonoidWithZeroHom_eq_coe {α : Type u_2} {β : Type u_3} { : Preorder α} {hα' : MulZeroOneClass α} { : Preorder β} {hβ' : MulZeroOneClass β} (f : α →*₀o β) :
                            @[simp]
                            theorem OrderMonoidWithZeroHom.toMonoidWithZeroHom_mk {α : Type u_2} {β : Type u_3} { : Preorder α} {hα' : MulZeroOneClass α} { : Preorder β} {hβ' : MulZeroOneClass β} (f : α →*₀ β) (hf : Monotone f) :
                            { toMonoidWithZeroHom := f, monotone' := hf } = f
                            @[simp]
                            theorem OrderMonoidWithZeroHom.toMonoidWithZeroHom_coe {α : Type u_2} {β : Type u_3} {γ : Type u_4} { : Preorder α} {hα' : MulZeroOneClass α} { : Preorder β} {hβ' : MulZeroOneClass β} { : Preorder γ} {hγ' : MulZeroOneClass γ} (f : β →*₀o γ) (g : α →*₀o β) :
                            (f.comp g) = (↑f).comp g
                            @[simp]
                            theorem OrderMonoidWithZeroHom.toOrderMonoidHom_eq_coe {α : Type u_2} {β : Type u_3} { : Preorder α} {hα' : MulZeroOneClass α} { : Preorder β} {hβ' : MulZeroOneClass β} (f : α →*₀o β) :
                            @[simp]
                            theorem OrderMonoidWithZeroHom.toOrderMonoidHom_comp {α : Type u_2} {β : Type u_3} {γ : Type u_4} { : Preorder α} {hα' : MulZeroOneClass α} { : Preorder β} {hβ' : MulZeroOneClass β} { : Preorder γ} {hγ' : MulZeroOneClass γ} (f : β →*₀o γ) (g : α →*₀o β) :
                            (f.comp g) = (↑f).comp g

                            Any ordered group is isomorphic to the units of itself adjoined with 0.

                            Equations
                              Instances For
                                @[simp]
                                theorem OrderMonoidIso.val_unitsWithZero_symm_apply {α : Type u_6} [Group α] [Preorder α] (a : α) :
                                (unitsWithZero.symm a) = a
                                def OrderMonoidIso.withZero {G : Type u_6} {H : Type u_7} [Group G] [PartialOrder G] [Group H] [PartialOrder H] :

                                A version of Equiv.optionCongr for WithZero on OrderMonoidIso.

                                Equations
                                  Instances For
                                    @[simp]
                                    theorem OrderMonoidIso.withZero_apply_symm_apply {G : Type u_6} {H : Type u_7} [Group G] [PartialOrder G] [Group H] [PartialOrder H] (e : G ≃*o H) (a : WithZero H) :
                                    (withZero e).symm a = (WithZero.map' (↑e).symm) a
                                    @[simp]
                                    theorem OrderMonoidIso.withZero_apply_apply {G : Type u_6} {H : Type u_7} [Group G] [PartialOrder G] [Group H] [PartialOrder H] (e : G ≃*o H) (a : WithZero G) :
                                    (withZero e) a = (WithZero.map' e) a

                                    Any linearly ordered group with zero is isomorphic to adjoining 0 to the units of itself.

                                    Equations
                                      Instances For
                                        @[simp]
                                        theorem OrderMonoidIso.withZeroUnits_symm_apply {α : Type u_6} [LinearOrderedCommGroupWithZero α] [DecidablePred fun (a : α) => a = 0] (a : α) :
                                        withZeroUnits.symm a = if h : a = 0 then 0 else (Units.mk0 a h)