Documentation

Mathlib.Algebra.Order.Monoid.Lex

Order homomorphisms for products of ordered monoids #

This file defines order homomorphisms for products of ordered monoids, for both the plain product and the lexicographic product.

The product of ordered monoids α × β is an ordered monoid itself with both natural inclusions and projections, making it the coproduct as well.

TODO #

Create the "OrdCommMon" category.

theorem MonoidHom.inl_mono {α : Type u_1} {β : Type u_2} [Monoid α] [Preorder α] [Monoid β] [Preorder β] :
Monotone (inl α β)
theorem AddMonoidHom.inl_mono {α : Type u_1} {β : Type u_2} [AddMonoid α] [Preorder α] [AddMonoid β] [Preorder β] :
Monotone (inl α β)
theorem MonoidHom.inl_strictMono {α : Type u_1} {β : Type u_2} [Monoid α] [Preorder α] [Monoid β] [Preorder β] :
StrictMono (inl α β)
theorem AddMonoidHom.inl_strictMono {α : Type u_1} {β : Type u_2} [AddMonoid α] [Preorder α] [AddMonoid β] [Preorder β] :
StrictMono (inl α β)
theorem MonoidHom.inr_mono {α : Type u_1} {β : Type u_2} [Monoid α] [Preorder α] [Monoid β] [Preorder β] :
Monotone (inr α β)
theorem AddMonoidHom.inr_mono {α : Type u_1} {β : Type u_2} [AddMonoid α] [Preorder α] [AddMonoid β] [Preorder β] :
Monotone (inr α β)
theorem MonoidHom.inr_strictMono {α : Type u_1} {β : Type u_2} [Monoid α] [Preorder α] [Monoid β] [Preorder β] :
StrictMono (inr α β)
theorem AddMonoidHom.inr_strictMono {α : Type u_1} {β : Type u_2} [AddMonoid α] [Preorder α] [AddMonoid β] [Preorder β] :
StrictMono (inr α β)
theorem MonoidHom.fst_mono {α : Type u_1} {β : Type u_2} [Monoid α] [Preorder α] [Monoid β] [Preorder β] :
Monotone (fst α β)
theorem AddMonoidHom.fst_mono {α : Type u_1} {β : Type u_2} [AddMonoid α] [Preorder α] [AddMonoid β] [Preorder β] :
Monotone (fst α β)
theorem MonoidHom.snd_mono {α : Type u_1} {β : Type u_2} [Monoid α] [Preorder α] [Monoid β] [Preorder β] :
Monotone (snd α β)
theorem AddMonoidHom.snd_mono {α : Type u_1} {β : Type u_2} [AddMonoid α] [Preorder α] [AddMonoid β] [Preorder β] :
Monotone (snd α β)
def OrderMonoidHom.inl (α : Type u_1) (β : Type u_2) [Monoid α] [PartialOrder α] [Monoid β] [Preorder β] :
α →*o α × β

Given ordered monoids M, N, the natural inclusion ordered homomorphism from M to M × N.

Equations
Instances For
    def OrderAddMonoidHom.inl (α : Type u_1) (β : Type u_2) [AddMonoid α] [PartialOrder α] [AddMonoid β] [Preorder β] :
    α →+o α × β

    Given ordered additive monoids M, N, the natural inclusion ordered homomorphism from M to M × N.

    Equations
    Instances For
      @[simp]
      theorem OrderAddMonoidHom.inl_apply (α : Type u_1) (β : Type u_2) [AddMonoid α] [PartialOrder α] [AddMonoid β] [Preorder β] (x : α) :
      (inl α β) x = (x, 0)
      @[simp]
      theorem OrderMonoidHom.inl_apply (α : Type u_1) (β : Type u_2) [Monoid α] [PartialOrder α] [Monoid β] [Preorder β] (x : α) :
      (inl α β) x = (x, 1)
      def OrderMonoidHom.inr (α : Type u_1) (β : Type u_2) [Monoid α] [PartialOrder α] [Monoid β] [Preorder β] :
      β →*o α × β

      Given ordered monoids M, N, the natural inclusion ordered homomorphism from N to M × N.

      Equations
      Instances For
        def OrderAddMonoidHom.inr (α : Type u_1) (β : Type u_2) [AddMonoid α] [PartialOrder α] [AddMonoid β] [Preorder β] :
        β →+o α × β

        Given ordered additive monoids M, N, the natural inclusion ordered homomorphism from N to M × N.

        Equations
        Instances For
          @[simp]
          theorem OrderAddMonoidHom.inr_apply (α : Type u_1) (β : Type u_2) [AddMonoid α] [PartialOrder α] [AddMonoid β] [Preorder β] (y : β) :
          (inr α β) y = (0, y)
          @[simp]
          theorem OrderMonoidHom.inr_apply (α : Type u_1) (β : Type u_2) [Monoid α] [PartialOrder α] [Monoid β] [Preorder β] (y : β) :
          (inr α β) y = (1, y)
          def OrderMonoidHom.fst (α : Type u_1) (β : Type u_2) [Monoid α] [PartialOrder α] [Monoid β] [Preorder β] :
          α × β →*o α

          Given ordered monoids M, N, the natural projection ordered homomorphism from M × N to M.

          Equations
          Instances For
            def OrderAddMonoidHom.fst (α : Type u_1) (β : Type u_2) [AddMonoid α] [PartialOrder α] [AddMonoid β] [Preorder β] :
            α × β →+o α

            Given ordered additive monoids M, N, the natural projection ordered homomorphism from M × N to M.

            Equations
            Instances For
              @[simp]
              theorem OrderMonoidHom.fst_apply (α : Type u_1) (β : Type u_2) [Monoid α] [PartialOrder α] [Monoid β] [Preorder β] (self : α × β) :
              (fst α β) self = self.1
              @[simp]
              theorem OrderAddMonoidHom.fst_apply (α : Type u_1) (β : Type u_2) [AddMonoid α] [PartialOrder α] [AddMonoid β] [Preorder β] (self : α × β) :
              (fst α β) self = self.1
              def OrderMonoidHom.snd (α : Type u_1) (β : Type u_2) [Monoid α] [PartialOrder α] [Monoid β] [Preorder β] :
              α × β →*o β

              Given ordered monoids M, N, the natural projection ordered homomorphism from M × N to N.

              Equations
              Instances For
                def OrderAddMonoidHom.snd (α : Type u_1) (β : Type u_2) [AddMonoid α] [PartialOrder α] [AddMonoid β] [Preorder β] :
                α × β →+o β

                Given ordered additive monoids M, N, the natural projection ordered homomorphism from M × N to N.

                Equations
                Instances For
                  @[simp]
                  theorem OrderMonoidHom.snd_apply (α : Type u_1) (β : Type u_2) [Monoid α] [PartialOrder α] [Monoid β] [Preorder β] (self : α × β) :
                  (snd α β) self = self.2
                  @[simp]
                  theorem OrderAddMonoidHom.snd_apply (α : Type u_1) (β : Type u_2) [AddMonoid α] [PartialOrder α] [AddMonoid β] [Preorder β] (self : α × β) :
                  (snd α β) self = self.2
                  def OrderMonoidHom.inlₗ (α : Type u_1) (β : Type u_2) [Monoid α] [PartialOrder α] [Monoid β] [Preorder β] :
                  α →*o Lex (α × β)

                  Given ordered monoids M, N, the natural inclusion ordered homomorphism from M to the lexicographic M ×ₗ N.

                  Equations
                  Instances For
                    def OrderAddMonoidHom.inlₗ (α : Type u_1) (β : Type u_2) [AddMonoid α] [PartialOrder α] [AddMonoid β] [Preorder β] :
                    α →+o Lex (α × β)

                    Given ordered additive monoids M, N, the natural inclusion ordered homomorphism from M to the lexicographic M ×ₗ N.

                    Equations
                    Instances For
                      @[simp]
                      theorem OrderAddMonoidHom.inlₗ_apply (α : Type u_1) (β : Type u_2) [AddMonoid α] [PartialOrder α] [AddMonoid β] [Preorder β] (a✝ : α) :
                      (inlₗ α β) a✝ = toLex (a✝, 0)
                      @[simp]
                      theorem OrderMonoidHom.inlₗ_apply (α : Type u_1) (β : Type u_2) [Monoid α] [PartialOrder α] [Monoid β] [Preorder β] (a✝ : α) :
                      (inlₗ α β) a✝ = toLex (a✝, 1)
                      def OrderMonoidHom.inrₗ (α : Type u_1) (β : Type u_2) [Monoid α] [PartialOrder α] [Monoid β] [Preorder β] :
                      β →*o Lex (α × β)

                      Given ordered monoids M, N, the natural inclusion ordered homomorphism from N to the lexicographic M ×ₗ N.

                      Equations
                      Instances For
                        def OrderAddMonoidHom.inrₗ (α : Type u_1) (β : Type u_2) [AddMonoid α] [PartialOrder α] [AddMonoid β] [Preorder β] :
                        β →+o Lex (α × β)

                        Given ordered additive monoids M, N, the natural inclusion ordered homomorphism from N to the lexicographic M ×ₗ N.

                        Equations
                        Instances For
                          @[simp]
                          theorem OrderAddMonoidHom.inrₗ_apply (α : Type u_1) (β : Type u_2) [AddMonoid α] [PartialOrder α] [AddMonoid β] [Preorder β] (a✝ : β) :
                          (inrₗ α β) a✝ = toLex (0, a✝)
                          @[simp]
                          theorem OrderMonoidHom.inrₗ_apply (α : Type u_1) (β : Type u_2) [Monoid α] [PartialOrder α] [Monoid β] [Preorder β] (a✝ : β) :
                          (inrₗ α β) a✝ = toLex (1, a✝)
                          def OrderMonoidHom.fstₗ (α : Type u_1) (β : Type u_2) [Monoid α] [PartialOrder α] [Monoid β] [Preorder β] :
                          Lex (α × β) →*o α

                          Given ordered monoids M, N, the natural projection ordered homomorphism from the lexicographic M ×ₗ N to M.

                          Equations
                          Instances For
                            def OrderAddMonoidHom.fstₗ (α : Type u_1) (β : Type u_2) [AddMonoid α] [PartialOrder α] [AddMonoid β] [Preorder β] :
                            Lex (α × β) →+o α

                            Given ordered additive monoids M, N, the natural projection ordered homomorphism from the lexicographic M ×ₗ N to M.

                            Equations
                            Instances For
                              @[simp]
                              theorem OrderMonoidHom.fstₗ_apply (α : Type u_1) (β : Type u_2) [Monoid α] [PartialOrder α] [Monoid β] [Preorder β] (p : Lex (α × β)) :
                              (fstₗ α β) p = (ofLex p).1
                              @[simp]
                              theorem OrderAddMonoidHom.fstₗ_apply (α : Type u_1) (β : Type u_2) [AddMonoid α] [PartialOrder α] [AddMonoid β] [Preorder β] (p : Lex (α × β)) :
                              (fstₗ α β) p = (ofLex p).1
                              @[simp]
                              theorem OrderMonoidHom.fst_comp_inl (α : Type u_1) (β : Type u_2) [Monoid α] [PartialOrder α] [Monoid β] [Preorder β] :
                              (fst α β).comp (inl α β) = OrderMonoidHom.id α
                              @[simp]
                              theorem OrderAddMonoidHom.fst_comp_inl (α : Type u_1) (β : Type u_2) [AddMonoid α] [PartialOrder α] [AddMonoid β] [Preorder β] :
                              (fst α β).comp (inl α β) = OrderAddMonoidHom.id α
                              @[simp]
                              theorem OrderMonoidHom.fstₗ_comp_inlₗ (α : Type u_1) (β : Type u_2) [Monoid α] [PartialOrder α] [Monoid β] [Preorder β] :
                              (fstₗ α β).comp (inlₗ α β) = OrderMonoidHom.id α
                              @[simp]
                              theorem OrderAddMonoidHom.fstₗ_comp_inlₗ (α : Type u_1) (β : Type u_2) [AddMonoid α] [PartialOrder α] [AddMonoid β] [Preorder β] :
                              @[simp]
                              theorem OrderMonoidHom.snd_comp_inl (α : Type u_1) (β : Type u_2) [Monoid α] [PartialOrder α] [Monoid β] [Preorder β] :
                              (snd α β).comp (inl α β) = 1
                              @[simp]
                              theorem OrderAddMonoidHom.snd_comp_inl (α : Type u_1) (β : Type u_2) [AddMonoid α] [PartialOrder α] [AddMonoid β] [Preorder β] :
                              (snd α β).comp (inl α β) = 0
                              @[simp]
                              theorem OrderMonoidHom.fst_comp_inr (α : Type u_1) (β : Type u_2) [Monoid α] [PartialOrder α] [Monoid β] [Preorder β] :
                              (fst α β).comp (inr α β) = 1
                              @[simp]
                              theorem OrderAddMonoidHom.fst_comp_inr (α : Type u_1) (β : Type u_2) [AddMonoid α] [PartialOrder α] [AddMonoid β] [Preorder β] :
                              (fst α β).comp (inr α β) = 0
                              @[simp]
                              theorem OrderMonoidHom.snd_comp_inr (α : Type u_1) (β : Type u_2) [Monoid α] [PartialOrder α] [Monoid β] [Preorder β] :
                              (snd α β).comp (inr α β) = OrderMonoidHom.id β
                              @[simp]
                              theorem OrderAddMonoidHom.snd_comp_inr (α : Type u_1) (β : Type u_2) [AddMonoid α] [PartialOrder α] [AddMonoid β] [Preorder β] :
                              (snd α β).comp (inr α β) = OrderAddMonoidHom.id β
                              theorem OrderMonoidHom.inl_mul_inr_eq_mk (α : Type u_1) (β : Type u_2) [Monoid α] [PartialOrder α] [Monoid β] [Preorder β] (m : α) (n : β) :
                              (inl α β) m * (inr α β) n = (m, n)
                              theorem OrderAddMonoidHom.inl_add_inr_eq_mk (α : Type u_1) (β : Type u_2) [AddMonoid α] [PartialOrder α] [AddMonoid β] [Preorder β] (m : α) (n : β) :
                              (inl α β) m + (inr α β) n = (m, n)
                              theorem OrderMonoidHom.inlₗ_mul_inrₗ_eq_toLex (α : Type u_1) (β : Type u_2) [Monoid α] [PartialOrder α] [Monoid β] [Preorder β] (m : α) (n : β) :
                              (inlₗ α β) m * (inrₗ α β) n = toLex (m, n)
                              theorem OrderAddMonoidHom.inlₗ_add_inrₗ_eq_toLex (α : Type u_1) (β : Type u_2) [AddMonoid α] [PartialOrder α] [AddMonoid β] [Preorder β] (m : α) (n : β) :
                              (inlₗ α β) m + (inrₗ α β) n = toLex (m, n)
                              theorem OrderMonoidHom.commute_inl_inr {α : Type u_1} {β : Type u_2} [Monoid α] [PartialOrder α] [Monoid β] [Preorder β] (m : α) (n : β) :
                              Commute ((inl α β) m) ((inr α β) n)
                              theorem OrderAddMonoidHom.addCommute_inl_inr {α : Type u_1} {β : Type u_2} [AddMonoid α] [PartialOrder α] [AddMonoid β] [Preorder β] (m : α) (n : β) :
                              AddCommute ((inl α β) m) ((inr α β) n)
                              theorem OrderMonoidHom.commute_inlₗ_inrₗ {α : Type u_1} {β : Type u_2} [Monoid α] [PartialOrder α] [Monoid β] [Preorder β] (m : α) (n : β) :
                              Commute ((inlₗ α β) m) ((inrₗ α β) n)
                              theorem OrderAddMonoidHom.addCommute_inlₗ_inrₗ {α : Type u_1} {β : Type u_2} [AddMonoid α] [PartialOrder α] [AddMonoid β] [Preorder β] (m : α) (n : β) :
                              AddCommute ((inlₗ α β) m) ((inrₗ α β) n)