/-
Copyright (c) 2022 Yaël Dillies. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Yaël Dillies

! This file was ported from Lean 3 source module algebra.order.hom.monoid
! leanprover-community/mathlib commit 448144f7ae193a8990cb7473c9e9a01990f64ac7
! Please do not edit these lines, except to modify the commit id
! if you have ported upstream changes.
-/
import Mathbin.Data.Pi.Algebra
import Mathbin.Algebra.Hom.Group
import Mathbin.Algebra.Order.Group.Instances
import Mathbin.Algebra.Order.Monoid.WithZero.Defs
import Mathbin.Order.Hom.Basic

/-!
# Ordered monoid and group homomorphisms

> THIS FILE IS SYNCHRONIZED WITH MATHLIB4.
> Any changes to this file require a corresponding PR to mathlib4.

This file defines morphisms between (additive) ordered monoids.

## Types of morphisms

* `order_add_monoid_hom`: Ordered additive monoid homomorphisms.
* `order_monoid_hom`: Ordered monoid homomorphisms.
* `order_monoid_with_zero_hom`: Ordered monoid with zero homomorphisms.

## Typeclasses

* `order_add_monoid_hom_class`
* `order_monoid_hom_class`
* `order_monoid_with_zero_hom_class`

## Notation

* `→+o`: Bundled ordered additive monoid homs. Also use for additive groups homs.
* `→*o`: Bundled ordered monoid homs. Also use for groups homs.
* `→*₀o`: Bundled ordered monoid with zero homs. Also use for groups with zero homs.

## Implementation notes

There's a coercion from bundled homs to fun, and the canonical notation is to use the bundled hom as
a function via this coercion.

There is no `order_group_hom` -- the idea is that `order_monoid_hom` is used.
The constructor for `order_monoid_hom` needs a proof of `map_one` as well as `map_mul`; a separate
constructor `order_monoid_hom.mk'` will construct ordered group homs (i.e. ordered monoid homs
between ordered groups) given only a proof that multiplication is preserved,

Implicit `{}` brackets are often used instead of type class `[]` brackets. This is done when the
instances can be inferred because they are implicit arguments to the type `order_monoid_hom`. When
they can be inferred from the type it is faster to use this method than to use type class inference.

## Tags

ordered monoid, ordered group, monoid with zero
-/

open Function

variable {F α β γ δ : Type _}

section AddMonoid

#print OrderAddMonoidHom /-
/-- `α →+o β` is the type of monotone functions `α → β` that preserve the `ordered_add_comm_monoid`
structure.

`order_add_monoid_hom` is also used for ordered group homomorphisms.

When possible, instead of parametrizing results over `(f : α →+o β)`,
you should parametrize over `(F : Type*) [order_add_monoid_hom_class F α β] (f : F)`.

When you extend this structure, make sure to extend `order_add_monoid_hom_class`. -/
structure OrderAddMonoidHom (α β : Type _) [Preorder α] [Preorder β] [AddZeroClass α]
  [AddZeroClass β] extends α →+ β where
  monotone' : Monotone to_fun
#align order_add_monoid_hom OrderAddMonoidHom
-/

-- mathport name: «expr →+o »
infixr:25 " →+o " => OrderAddMonoidHom

section

#print OrderAddMonoidHomClass /-
/-- `order_add_monoid_hom_class F α β` states that `F` is a type of ordered monoid homomorphisms.

You should also extend this typeclass when you extend `order_add_monoid_hom`. -/
class OrderAddMonoidHomClass (F : Type _) (α β : outParam <| Type _) [Preorder α] [Preorder β]
  [AddZeroClass α] [AddZeroClass β] extends AddMonoidHomClass F α β where
  Monotone (f : F) : Monotone f
#align order_add_monoid_hom_class OrderAddMonoidHomClass
-/

end

-- Instances and lemmas are defined below through `@[to_additive]`.
end AddMonoid

section Monoid

variable [Preorder α] [Preorder β] [MulOneClass α] [MulOneClass β]

#print OrderMonoidHom /-
/-- `α →*o β` is the type of functions `α → β` that preserve the `ordered_comm_monoid` structure.

`order_monoid_hom` is also used for ordered group homomorphisms.

When possible, instead of parametrizing results over `(f : α →*o β)`,
you should parametrize over `(F : Type*) [order_monoid_hom_class F α β] (f : F)`.

When you extend this structure, make sure to extend `order_monoid_hom_class`. -/
@[to_additive]
structure OrderMonoidHom (α β : Type _) [Preorder α] [Preorder β] [MulOneClass α]
  [MulOneClass β] extends α →* β where
  monotone' : Monotone to_fun
#align order_monoid_hom OrderMonoidHom
#align order_add_monoid_hom OrderAddMonoidHom
-/

-- mathport name: «expr →*o »
infixr:25 " →*o " => OrderMonoidHom

section

#print OrderMonoidHomClass /-
/-- `order_monoid_hom_class F α β` states that `F` is a type of ordered monoid homomorphisms.

You should also extend this typeclass when you extend `order_monoid_hom`. -/
@[to_additive]
class OrderMonoidHomClass (F : Type _) (α β : outParam <| Type _) [Preorder α] [Preorder β]
  [MulOneClass α] [MulOneClass β] extends MonoidHomClass F α β where
  Monotone (f : F) : Monotone f
#align order_monoid_hom_class OrderMonoidHomClass
#align order_add_monoid_hom_class OrderAddMonoidHomClass
-/

end

#print OrderMonoidHomClass.toOrderHomClass /-
-- See note [lower instance priority]
@[to_additive]
instance (priority := 100) OrderMonoidHomClass.toOrderHomClass [OrderMonoidHomClass F α β] :
    OrderHomClass F α β :=
  { ‹OrderMonoidHomClass F α β› with map_rel := OrderMonoidHomClass.monotone }
#align order_monoid_hom_class.to_order_hom_class OrderMonoidHomClass.toOrderHomClass
#align order_add_monoid_hom_class.to_order_hom_class OrderAddMonoidHomClass.toOrderHomClass
-/

@[to_additive]
instance [OrderMonoidHomClass F α β] : CoeTC F (α →*o β) :=
  ⟨fun f =>
    { toFun := f
      map_one' := map_one f
      map_mul' := map_mul f
      monotone' := OrderMonoidHomClass.monotone _ }⟩

end Monoid

section MonoidWithZero

variable [Preorder α] [Preorder β] [MulZeroOneClass α] [MulZeroOneClass β]

#print OrderMonoidWithZeroHom /-
/-- `order_monoid_with_zero_hom α β` is the type of functions `α → β` that preserve
the `monoid_with_zero` structure.

`order_monoid_with_zero_hom` is also used for group homomorphisms.

When possible, instead of parametrizing results over `(f : α →+ β)`,
you should parametrize over `(F : Type*) [order_monoid_with_zero_hom_class F α β] (f : F)`.

When you extend this structure, make sure to extend `order_monoid_with_zero_hom_class`. -/
structure OrderMonoidWithZeroHom (α β : Type _) [Preorder α] [Preorder β] [MulZeroOneClass α]
  [MulZeroOneClass β] extends α →*₀ β where
  monotone' : Monotone to_fun
#align order_monoid_with_zero_hom OrderMonoidWithZeroHom
-/

-- mathport name: «expr →*₀o »
infixr:25 " →*₀o " => OrderMonoidWithZeroHom

section

#print OrderMonoidWithZeroHomClass /-
/-- `order_monoid_with_zero_hom_class F α β` states that `F` is a type of
ordered monoid with zero homomorphisms.

You should also extend this typeclass when you extend `order_monoid_with_zero_hom`. -/
class OrderMonoidWithZeroHomClass (F : Type _) (α β : outParam <| Type _) [Preorder α] [Preorder β]
  [MulZeroOneClass α] [MulZeroOneClass β] extends MonoidWithZeroHomClass F α β where
  Monotone (f : F) : Monotone f
#align order_monoid_with_zero_hom_class OrderMonoidWithZeroHomClass
-/

end

#print OrderMonoidWithZeroHomClass.toOrderMonoidHomClass /-
-- See note [lower instance priority]
instance (priority := 100) OrderMonoidWithZeroHomClass.toOrderMonoidHomClass
    [OrderMonoidWithZeroHomClass F α β] : OrderMonoidHomClass F α β :=
  { ‹OrderMonoidWithZeroHomClass F α β› with }
#align order_monoid_with_zero_hom_class.to_order_monoid_hom_class OrderMonoidWithZeroHomClass.toOrderMonoidHomClass
-/

instance [OrderMonoidWithZeroHomClass F α β] : CoeTC F (α →*₀o β) :=
  ⟨fun f =>
    { toFun := f
      map_one' := map_one f
      map_zero' := map_zero f
      map_mul' := map_mul f
      monotone' := OrderMonoidWithZeroHomClass.monotone _ }⟩

end MonoidWithZero

section OrderedAddCommMonoid

variable [OrderedAddCommMonoid α] [OrderedAddCommMonoid β] [OrderAddMonoidHomClass F α β] (f : F)
  {a : α}

include β

/- warning: map_nonneg -> map_nonneg is a dubious translation:
lean 3 declaration is
  forall {F : Type.{u1}} {α : Type.{u2}} {β : Type.{u3}} [_inst_1 : OrderedAddCommMonoid.{u2} α] [_inst_2 : OrderedAddCommMonoid.{u3} β] [_inst_3 : OrderAddMonoidHomClass.{u1, u2, u3} F α β (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α _inst_1)) (PartialOrder.toPreorder.{u3} β (OrderedAddCommMonoid.toPartialOrder.{u3} β _inst_2)) (AddMonoid.toAddZeroClass.{u2} α (AddCommMonoid.toAddMonoid.{u2} α (OrderedAddCommMonoid.toAddCommMonoid.{u2} α _inst_1))) (AddMonoid.toAddZeroClass.{u3} β (AddCommMonoid.toAddMonoid.{u3} β (OrderedAddCommMonoid.toAddCommMonoid.{u3} β _inst_2)))] (f : F) {a : α}, (LE.le.{u2} α (Preorder.toLE.{u2} α (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α _inst_1))) (OfNat.ofNat.{u2} α 0 (OfNat.mk.{u2} α 0 (Zero.zero.{u2} α (AddZeroClass.toHasZero.{u2} α (AddMonoid.toAddZeroClass.{u2} α (AddCommMonoid.toAddMonoid.{u2} α (OrderedAddCommMonoid.toAddCommMonoid.{u2} α _inst_1))))))) a) -> (LE.le.{u3} β (Preorder.toLE.{u3} β (PartialOrder.toPreorder.{u3} β (OrderedAddCommMonoid.toPartialOrder.{u3} β _inst_2))) (OfNat.ofNat.{u3} β 0 (OfNat.mk.{u3} β 0 (Zero.zero.{u3} β (AddZeroClass.toHasZero.{u3} β (AddMonoid.toAddZeroClass.{u3} β (AddCommMonoid.toAddMonoid.{u3} β (OrderedAddCommMonoid.toAddCommMonoid.{u3} β _inst_2))))))) (coeFn.{succ u1, max (succ u2) (succ u3)} F (fun (_x : F) => α -> β) (FunLike.hasCoeToFun.{succ u1, succ u2, succ u3} F α (fun (_x : α) => β) (RelHomClass.toFunLike.{u1, u2, u3} F α β (LE.le.{u2} α (Preorder.toLE.{u2} α (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α _inst_1)))) (LE.le.{u3} β (Preorder.toLE.{u3} β (PartialOrder.toPreorder.{u3} β (OrderedAddCommMonoid.toPartialOrder.{u3} β _inst_2)))) (OrderAddMonoidHomClass.toOrderHomClass.{u1, u2, u3} F α β (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α _inst_1)) (PartialOrder.toPreorder.{u3} β (OrderedAddCommMonoid.toPartialOrder.{u3} β _inst_2)) (AddMonoid.toAddZeroClass.{u2} α (AddCommMonoid.toAddMonoid.{u2} α (OrderedAddCommMonoid.toAddCommMonoid.{u2} α _inst_1))) (AddMonoid.toAddZeroClass.{u3} β (AddCommMonoid.toAddMonoid.{u3} β (OrderedAddCommMonoid.toAddCommMonoid.{u3} β _inst_2))) _inst_3))) f a))
but is expected to have type
  forall {F : Type.{u1}} {α : Type.{u3}} {β : Type.{u2}} [_inst_1 : OrderedAddCommMonoid.{u3} α] [_inst_2 : OrderedAddCommMonoid.{u2} β] [_inst_3 : OrderAddMonoidHomClass.{u1, u3, u2} F α β (PartialOrder.toPreorder.{u3} α (OrderedAddCommMonoid.toPartialOrder.{u3} α _inst_1)) (PartialOrder.toPreorder.{u2} β (OrderedAddCommMonoid.toPartialOrder.{u2} β _inst_2)) (AddMonoid.toAddZeroClass.{u3} α (AddCommMonoid.toAddMonoid.{u3} α (OrderedAddCommMonoid.toAddCommMonoid.{u3} α _inst_1))) (AddMonoid.toAddZeroClass.{u2} β (AddCommMonoid.toAddMonoid.{u2} β (OrderedAddCommMonoid.toAddCommMonoid.{u2} β _inst_2)))] (f : F) {a : α}, (LE.le.{u3} α (Preorder.toLE.{u3} α (PartialOrder.toPreorder.{u3} α (OrderedAddCommMonoid.toPartialOrder.{u3} α _inst_1))) (OfNat.ofNat.{u3} α 0 (Zero.toOfNat0.{u3} α (AddMonoid.toZero.{u3} α (AddCommMonoid.toAddMonoid.{u3} α (OrderedAddCommMonoid.toAddCommMonoid.{u3} α _inst_1))))) a) -> (LE.le.{u2} ((fun (x._@.Mathlib.Order.RelIso.Basic._hyg.867 : α) => β) a) (Preorder.toLE.{u2} ((fun (x._@.Mathlib.Order.RelIso.Basic._hyg.867 : α) => β) a) (PartialOrder.toPreorder.{u2} ((fun (x._@.Mathlib.Order.RelIso.Basic._hyg.867 : α) => β) a) (OrderedAddCommMonoid.toPartialOrder.{u2} ((fun (x._@.Mathlib.Order.RelIso.Basic._hyg.867 : α) => β) a) _inst_2))) (OfNat.ofNat.{u2} ((fun (x._@.Mathlib.Order.RelIso.Basic._hyg.867 : α) => β) a) 0 (Zero.toOfNat0.{u2} ((fun (x._@.Mathlib.Order.RelIso.Basic._hyg.867 : α) => β) a) (AddMonoid.toZero.{u2} ((fun (x._@.Mathlib.Order.RelIso.Basic._hyg.867 : α) => β) a) (AddCommMonoid.toAddMonoid.{u2} ((fun (x._@.Mathlib.Order.RelIso.Basic._hyg.867 : α) => β) a) (OrderedAddCommMonoid.toAddCommMonoid.{u2} ((fun (x._@.Mathlib.Order.RelIso.Basic._hyg.867 : α) => β) a) _inst_2))))) (FunLike.coe.{succ u1, succ u3, succ u2} F α (fun (_x : α) => (fun (x._@.Mathlib.Order.RelIso.Basic._hyg.867 : α) => β) _x) (RelHomClass.toFunLike.{u1, u3, u2} F α β (fun (x._@.Mathlib.Order.Hom.Basic._hyg.1896 : α) (x._@.Mathlib.Order.Hom.Basic._hyg.1898 : α) => LE.le.{u3} α (Preorder.toLE.{u3} α (PartialOrder.toPreorder.{u3} α (OrderedAddCommMonoid.toPartialOrder.{u3} α _inst_1))) x._@.Mathlib.Order.Hom.Basic._hyg.1896 x._@.Mathlib.Order.Hom.Basic._hyg.1898) (fun (_x : β) (x._@.Mathlib.Order.Hom.Basic._hyg.1920 : β) => LE.le.{u2} β (Preorder.toLE.{u2} β (PartialOrder.toPreorder.{u2} β (OrderedAddCommMonoid.toPartialOrder.{u2} β _inst_2))) _x x._@.Mathlib.Order.Hom.Basic._hyg.1920) (OrderAddMonoidHomClass.toOrderHomClass.{u1, u3, u2} F α β (PartialOrder.toPreorder.{u3} α (OrderedAddCommMonoid.toPartialOrder.{u3} α _inst_1)) (PartialOrder.toPreorder.{u2} β (OrderedAddCommMonoid.toPartialOrder.{u2} β _inst_2)) (AddMonoid.toAddZeroClass.{u3} α (AddCommMonoid.toAddMonoid.{u3} α (OrderedAddCommMonoid.toAddCommMonoid.{u3} α _inst_1))) (AddMonoid.toAddZeroClass.{u2} β (AddCommMonoid.toAddMonoid.{u2} β (OrderedAddCommMonoid.toAddCommMonoid.{u2} β _inst_2))) _inst_3)) f a))
Case conversion may be inaccurate. Consider using '#align map_nonneg map_nonnegₓ'. -/
theorem map_nonneg (ha : 0 ≤ a) : 0 ≤ f a :=
  by
  rw [← map_zero f]
  exact OrderHomClass.mono _ ha
#align map_nonneg map_nonneg

/- warning: map_nonpos -> map_nonpos is a dubious translation:
lean 3 declaration is
  forall {F : Type.{u1}} {α : Type.{u2}} {β : Type.{u3}} [_inst_1 : OrderedAddCommMonoid.{u2} α] [_inst_2 : OrderedAddCommMonoid.{u3} β] [_inst_3 : OrderAddMonoidHomClass.{u1, u2, u3} F α β (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α _inst_1)) (PartialOrder.toPreorder.{u3} β (OrderedAddCommMonoid.toPartialOrder.{u3} β _inst_2)) (AddMonoid.toAddZeroClass.{u2} α (AddCommMonoid.toAddMonoid.{u2} α (OrderedAddCommMonoid.toAddCommMonoid.{u2} α _inst_1))) (AddMonoid.toAddZeroClass.{u3} β (AddCommMonoid.toAddMonoid.{u3} β (OrderedAddCommMonoid.toAddCommMonoid.{u3} β _inst_2)))] (f : F) {a : α}, (LE.le.{u2} α (Preorder.toLE.{u2} α (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α _inst_1))) a (OfNat.ofNat.{u2} α 0 (OfNat.mk.{u2} α 0 (Zero.zero.{u2} α (AddZeroClass.toHasZero.{u2} α (AddMonoid.toAddZeroClass.{u2} α (AddCommMonoid.toAddMonoid.{u2} α (OrderedAddCommMonoid.toAddCommMonoid.{u2} α _inst_1)))))))) -> (LE.le.{u3} β (Preorder.toLE.{u3} β (PartialOrder.toPreorder.{u3} β (OrderedAddCommMonoid.toPartialOrder.{u3} β _inst_2))) (coeFn.{succ u1, max (succ u2) (succ u3)} F (fun (_x : F) => α -> β) (FunLike.hasCoeToFun.{succ u1, succ u2, succ u3} F α (fun (_x : α) => β) (RelHomClass.toFunLike.{u1, u2, u3} F α β (LE.le.{u2} α (Preorder.toLE.{u2} α (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α _inst_1)))) (LE.le.{u3} β (Preorder.toLE.{u3} β (PartialOrder.toPreorder.{u3} β (OrderedAddCommMonoid.toPartialOrder.{u3} β _inst_2)))) (OrderAddMonoidHomClass.toOrderHomClass.{u1, u2, u3} F α β (PartialOrder.toPreorder.{u2} α (OrderedAddCommMonoid.toPartialOrder.{u2} α _inst_1)) (PartialOrder.toPreorder.{u3} β (OrderedAddCommMonoid.toPartialOrder.{u3} β _inst_2)) (AddMonoid.toAddZeroClass.{u2} α (AddCommMonoid.toAddMonoid.{u2} α (OrderedAddCommMonoid.toAddCommMonoid.{u2} α _inst_1))) (AddMonoid.toAddZeroClass.{u3} β (AddCommMonoid.toAddMonoid.{u3} β (OrderedAddCommMonoid.toAddCommMonoid.{u3} β _inst_2))) _inst_3))) f a) (OfNat.ofNat.{u3} β 0 (OfNat.mk.{u3} β 0 (Zero.zero.{u3} β (AddZeroClass.toHasZero.{u3} β (AddMonoid.toAddZeroClass.{u3} β (AddCommMonoid.toAddMonoid.{u3} β (OrderedAddCommMonoid.toAddCommMonoid.{u3} β _inst_2))))))))
but is expected to have type
  forall {F : Type.{u1}} {α : Type.{u3}} {β : Type.{u2}} [_inst_1 : OrderedAddCommMonoid.{u3} α] [_inst_2 : OrderedAddCommMonoid.{u2} β] [_inst_3 : OrderAddMonoidHomClass.{u1, u3, u2} F α β (PartialOrder.toPreorder.{u3} α (OrderedAddCommMonoid.toPartialOrder.{u3} α _inst_1)) (PartialOrder.toPreorder.{u2} β (OrderedAddCommMonoid.toPartialOrder.{u2} β _inst_2)) (AddMonoid.toAddZeroClass.{u3} α (AddCommMonoid.toAddMonoid.{u3} α (OrderedAddCommMonoid.toAddCommMonoid.{u3} α _inst_1))) (AddMonoid.toAddZeroClass.{u2} β (AddCommMonoid.toAddMonoid.{u2} β (OrderedAddCommMonoid.toAddCommMonoid.{u2} β _inst_2)))] (f : F) {a : α}, (LE.le.{u3} α (Preorder.toLE.{u3} α (PartialOrder.toPreorder.{u3} α (OrderedAddCommMonoid.toPartialOrder.{u3} α _inst_1))) a (OfNat.ofNat.{u3} α 0 (Zero.toOfNat0.{u3} α (AddMonoid.toZero.{u3} α (AddCommMonoid.toAddMonoid.{u3} α (OrderedAddCommMonoid.toAddCommMonoid.{u3} α _inst_1)))))) -> (LE.le.{u2} ((fun (x._@.Mathlib.Order.RelIso.Basic._hyg.867 : α) => β) a) (Preorder.toLE.{u2} ((fun (x._@.Mathlib.Order.RelIso.Basic._hyg.867 : α) => β) a) (PartialOrder.toPreorder.{u2} ((fun (x._@.Mathlib.Order.RelIso.Basic._hyg.867 : α) => β) a) (OrderedAddCommMonoid.toPartialOrder.{u2} ((fun (x._@.Mathlib.Order.RelIso.Basic._hyg.867 : α) => β) a) _inst_2))) (FunLike.coe.{succ u1, succ u3, succ u2} F α (fun (_x : α) => (fun (x._@.Mathlib.Order.RelIso.Basic._hyg.867 : α) => β) _x) (RelHomClass.toFunLike.{u1, u3, u2} F α β (fun (x._@.Mathlib.Order.Hom.Basic._hyg.1896 : α) (x._@.Mathlib.Order.Hom.Basic._hyg.1898 : α) => LE.le.{u3} α (Preorder.toLE.{u3} α (PartialOrder.toPreorder.{u3} α (OrderedAddCommMonoid.toPartialOrder.{u3} α _inst_1))) x._@.Mathlib.Order.Hom.Basic._hyg.1896 x._@.Mathlib.Order.Hom.Basic._hyg.1898) (fun (_x : β) (x._@.Mathlib.Order.Hom.Basic._hyg.1920 : β) => LE.le.{u2} β (Preorder.toLE.{u2} β (PartialOrder.toPreorder.{u2} β (OrderedAddCommMonoid.toPartialOrder.{u2} β _inst_2))) _x x._@.Mathlib.Order.Hom.Basic._hyg.1920) (OrderAddMonoidHomClass.toOrderHomClass.{u1, u3, u2} F α β (PartialOrder.toPreorder.{u3} α (OrderedAddCommMonoid.toPartialOrder.{u3} α _inst_1)) (PartialOrder.toPreorder.{u2} β (OrderedAddCommMonoid.toPartialOrder.{u2} β _inst_2)) (AddMonoid.toAddZeroClass.{u3} α (AddCommMonoid.toAddMonoid.{u3} α (OrderedAddCommMonoid.toAddCommMonoid.{u3} α _inst_1))) (AddMonoid.toAddZeroClass.{u2} β (AddCommMonoid.toAddMonoid.{u2} β (OrderedAddCommMonoid.toAddCommMonoid.{u2} β _inst_2))) _inst_3)) f a) (OfNat.ofNat.{u2} ((fun (x._@.Mathlib.Order.RelIso.Basic._hyg.867 : α) => β) a) 0 (Zero.toOfNat0.{u2} ((fun (x._@.Mathlib.Order.RelIso.Basic._hyg.867 : α) => β) a) (AddMonoid.toZero.{u2} ((fun (x._@.Mathlib.Order.RelIso.Basic._hyg.867 : α) => β) a) (AddCommMonoid.toAddMonoid.{u2} ((fun (x._@.Mathlib.Order.RelIso.Basic._hyg.867 : α) => β) a) (OrderedAddCommMonoid.toAddCommMonoid.{u2} ((fun (x._@.Mathlib.Order.RelIso.Basic._hyg.867 : α) => β) a) _inst_2))))))
Case conversion may be inaccurate. Consider using '#align map_nonpos map_nonposₓ'. -/
theorem map_nonpos (ha : a ≤ 0) : f a ≤ 0 :=
  by
  rw [← map_zero f]
  exact OrderHomClass.mono _ ha
#align map_nonpos map_nonpos

end OrderedAddCommMonoid

section OrderedAddCommGroup

variable [OrderedAddCommGroup α] [OrderedAddCommMonoid β] [AddMonoidHomClass F α β] (f : F)

/- warning: monotone_iff_map_nonneg -> monotone_iff_map_nonneg is a dubious translation:
lean 3 declaration is
  forall {F : Type.{u1}} {α : Type.{u2}} {β : Type.{u3}} [_inst_1 : OrderedAddCommGroup.{u2} α] [_inst_2 : OrderedAddCommMonoid.{u3} β] [_inst_3 : AddMonoidHomClass.{u1, u2, u3} F α β (AddMonoid.toAddZeroClass.{u2} α (SubNegMonoid.toAddMonoid.{u2} α (AddGroup.toSubNegMonoid.{u2} α (AddCommGroup.toAddGroup.{u2} α (OrderedAddCommGroup.toAddCommGroup.{u2} α _inst_1))))) (AddMonoid.toAddZeroClass.{u3} β (AddCommMonoid.toAddMonoid.{u3} β (OrderedAddCommMonoid.toAddCommMonoid.{u3} β _inst_2)))] (f : F), Iff (Monotone.{u2, u3} α β (PartialOrder.toPreorder.{u2} α (OrderedAddCommGroup.toPartialOrder.{u2} α _inst_1)) (PartialOrder.toPreorder.{u3} β (OrderedAddCommMonoid.toPartialOrder.{u3} β _inst_2)) (coeFn.{succ u1, max (succ u2) (succ u3)} F (fun (_x : F) => α -> β) (FunLike.hasCoeToFun.{succ u1, succ u2, succ u3} F α (fun (_x : α) => β) (AddHomClass.toFunLike.{u1, u2, u3} F α β (AddZeroClass.toHasAdd.{u2} α (AddMonoid.toAddZeroClass.{u2} α (SubNegMonoid.toAddMonoid.{u2} α (AddGroup.toSubNegMonoid.{u2} α (AddCommGroup.toAddGroup.{u2} α (OrderedAddCommGroup.toAddCommGroup.{u2} α _inst_1)))))) (AddZeroClass.toHasAdd.{u3} β (AddMonoid.toAddZeroClass.{u3} β (AddCommMonoid.toAddMonoid.{u3} β (OrderedAddCommMonoid.toAddCommMonoid.{u3} β _inst_2)))) (AddMonoidHomClass.toAddHomClass.{u1, u2, u3} F α β (AddMonoid.toAddZeroClass.{u2} α (SubNegMonoid.toAddMonoid.{u2} α (AddGroup.toSubNegMonoid.{u2} α (AddCommGroup.toAddGroup.{u2} α (OrderedAddCommGroup.toAddCommGroup.{u2} α _inst_1))))) (AddMonoid.toAddZeroClass.{u3} β (AddCommMonoid.toAddMonoid.{u3} β (OrderedAddCommMonoid.toAddCommMonoid.{u3} β _inst_2))) _inst_3))) f)) (forall (a : α), (LE.le.{u2} α (Preorder.toLE.{u2} α (PartialOrder.toPreorder.{u2} α (OrderedAddCommGroup.toPartialOrder.{u2} α _inst_1))) (OfNat.ofNat.{u2} α 0 (OfNat.mk.{u2} α 0 (Zero.zero.{u2} α (AddZeroClass.toHasZero.{u2} α (AddMonoid.toAddZeroClass.{u2} α (SubNegMonoid.toAddMonoid.{u2} α (AddGroup.toSubNegMonoid.{u2} α (AddCommGroup.toAddGroup.{u2} α (OrderedAddCommGroup.toAddCommGroup.{u2} α _inst_1))))))))) a) -> (LE.le.{u3} β (Preorder.toLE.{u3} β (PartialOrder.toPreorder.{u3} β (OrderedAddCommMonoid.toPartialOrder.{u3} β _inst_2))) (OfNat.ofNat.{u3} β 0 (OfNat.mk.{u3} β 0 (Zero.zero.{u3} β (AddZeroClass.toHasZero.{u3} β (AddMonoid.toAddZeroClass.{u3} β (AddCommMonoid.toAddMonoid.{u3} β (OrderedAddCommMonoid.toAddCommMonoid.{u3} β _inst_2))))))) (coeFn.{succ u1, max (succ u2) (succ u3)} F (fun (_x : F) => α -> β) (FunLike.hasCoeToFun.{succ u1, succ u2, succ u3} F α (fun (_x : α) => β) (AddHomClass.toFunLike.{u1, u2, u3} F α β (AddZeroClass.toHasAdd.{u2} α (AddMonoid.toAddZeroClass.{u2} α (SubNegMonoid.toAddMonoid.{u2} α (AddGroup.toSubNegMonoid.{u2} α (AddCommGroup.toAddGroup.{u2} α (OrderedAddCommGroup.toAddCommGroup.{u2} α _inst_1)))))) (AddZeroClass.toHasAdd.{u3} β (AddMonoid.toAddZeroClass.{u3} β (AddCommMonoid.toAddMonoid.{u3} β (OrderedAddCommMonoid.toAddCommMonoid.{u3} β _inst_2)))) (AddMonoidHomClass.toAddHomClass.{u1, u2, u3} F α β (AddMonoid.toAddZeroClass.{u2} α (SubNegMonoid.toAddMonoid.{u2} α (AddGroup.toSubNegMonoid.{u2} α (AddCommGroup.toAddGroup.{u2} α (OrderedAddCommGroup.toAddCommGroup.{u2} α _inst_1))))) (AddMonoid.toAddZeroClass.{u3} β (AddCommMonoid.toAddMonoid.{u3} β (OrderedAddCommMonoid.toAddCommMonoid.{u3} β _inst_2))) _inst_3))) f a)))
but is expected to have type
  forall {F : Type.{u1}} {α : Type.{u3}} {β : Type.{u2}} [_inst_1 : OrderedAddCommGroup.{u3} α] [_inst_2 : OrderedAddCommMonoid.{u2} β] [_inst_3 : AddMonoidHomClass.{u1, u3, u2} F α β (AddMonoid.toAddZeroClass.{u3} α (SubNegMonoid.toAddMonoid.{u3} α (AddGroup.toSubNegMonoid.{u3} α (AddCommGroup.toAddGroup.{u3} α (OrderedAddCommGroup.toAddCommGroup.{u3} α _inst_1))))) (AddMonoid.toAddZeroClass.{u2} β (AddCommMonoid.toAddMonoid.{u2} β (OrderedAddCommMonoid.toAddCommMonoid.{u2} β _inst_2)))] (f : F), Iff (Monotone.{u3, u2} α β (PartialOrder.toPreorder.{u3} α (OrderedAddCommGroup.toPartialOrder.{u3} α _inst_1)) (PartialOrder.toPreorder.{u2} β (OrderedAddCommMonoid.toPartialOrder.{u2} β _inst_2)) (FunLike.coe.{succ u1, succ u3, succ u2} F α (fun (_x : α) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : α) => β) _x) (AddHomClass.toFunLike.{u1, u3, u2} F α β (AddZeroClass.toAdd.{u3} α (AddMonoid.toAddZeroClass.{u3} α (SubNegMonoid.toAddMonoid.{u3} α (AddGroup.toSubNegMonoid.{u3} α (AddCommGroup.toAddGroup.{u3} α (OrderedAddCommGroup.toAddCommGroup.{u3} α _inst_1)))))) (AddZeroClass.toAdd.{u2} β (AddMonoid.toAddZeroClass.{u2} β (AddCommMonoid.toAddMonoid.{u2} β (OrderedAddCommMonoid.toAddCommMonoid.{u2} β _inst_2)))) (AddMonoidHomClass.toAddHomClass.{u1, u3, u2} F α β (AddMonoid.toAddZeroClass.{u3} α (SubNegMonoid.toAddMonoid.{u3} α (AddGroup.toSubNegMonoid.{u3} α (AddCommGroup.toAddGroup.{u3} α (OrderedAddCommGroup.toAddCommGroup.{u3} α _inst_1))))) (AddMonoid.toAddZeroClass.{u2} β (AddCommMonoid.toAddMonoid.{u2} β (OrderedAddCommMonoid.toAddCommMonoid.{u2} β _inst_2))) _inst_3)) f)) (forall (a : α), (LE.le.{u3} α (Preorder.toLE.{u3} α (PartialOrder.toPreorder.{u3} α (OrderedAddCommGroup.toPartialOrder.{u3} α _inst_1))) (OfNat.ofNat.{u3} α 0 (Zero.toOfNat0.{u3} α (NegZeroClass.toZero.{u3} α (SubNegZeroMonoid.toNegZeroClass.{u3} α (SubtractionMonoid.toSubNegZeroMonoid.{u3} α (SubtractionCommMonoid.toSubtractionMonoid.{u3} α (AddCommGroup.toDivisionAddCommMonoid.{u3} α (OrderedAddCommGroup.toAddCommGroup.{u3} α _inst_1)))))))) a) -> (LE.le.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : α) => β) a) (Preorder.toLE.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : α) => β) a) (PartialOrder.toPreorder.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : α) => β) a) (OrderedAddCommMonoid.toPartialOrder.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : α) => β) a) _inst_2))) (OfNat.ofNat.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : α) => β) a) 0 (Zero.toOfNat0.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : α) => β) a) (AddMonoid.toZero.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : α) => β) a) (AddCommMonoid.toAddMonoid.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : α) => β) a) (OrderedAddCommMonoid.toAddCommMonoid.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : α) => β) a) _inst_2))))) (FunLike.coe.{succ u1, succ u3, succ u2} F α (fun (_x : α) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : α) => β) _x) (AddHomClass.toFunLike.{u1, u3, u2} F α β (AddZeroClass.toAdd.{u3} α (AddMonoid.toAddZeroClass.{u3} α (SubNegMonoid.toAddMonoid.{u3} α (AddGroup.toSubNegMonoid.{u3} α (AddCommGroup.toAddGroup.{u3} α (OrderedAddCommGroup.toAddCommGroup.{u3} α _inst_1)))))) (AddZeroClass.toAdd.{u2} β (AddMonoid.toAddZeroClass.{u2} β (AddCommMonoid.toAddMonoid.{u2} β (OrderedAddCommMonoid.toAddCommMonoid.{u2} β _inst_2)))) (AddMonoidHomClass.toAddHomClass.{u1, u3, u2} F α β (AddMonoid.toAddZeroClass.{u3} α (SubNegMonoid.toAddMonoid.{u3} α (AddGroup.toSubNegMonoid.{u3} α (AddCommGroup.toAddGroup.{u3} α (OrderedAddCommGroup.toAddCommGroup.{u3} α _inst_1))))) (AddMonoid.toAddZeroClass.{u2} β (AddCommMonoid.toAddMonoid.{u2} β (OrderedAddCommMonoid.toAddCommMonoid.{u2} β _inst_2))) _inst_3)) f a)))
Case conversion may be inaccurate. Consider using '#align monotone_iff_map_nonneg monotone_iff_map_nonnegₓ'. -/
theorem monotone_iff_map_nonneg : Monotone (f : α → β) ↔ ∀ a, 0 ≤ a → 0 ≤ f a :=
  ⟨fun h a => by
    rw [← map_zero f]
    apply h, fun h a b hl => by
    rw [← sub_add_cancel b a, map_add f]
    exact le_add_of_nonneg_left (h _ <| sub_nonneg.2 hl)⟩
#align monotone_iff_map_nonneg monotone_iff_map_nonneg

/- warning: antitone_iff_map_nonpos -> antitone_iff_map_nonpos is a dubious translation:
lean 3 declaration is
  forall {F : Type.{u1}} {α : Type.{u2}} {β : Type.{u3}} [_inst_1 : OrderedAddCommGroup.{u2} α] [_inst_2 : OrderedAddCommMonoid.{u3} β] [_inst_3 : AddMonoidHomClass.{u1, u2, u3} F α β (AddMonoid.toAddZeroClass.{u2} α (SubNegMonoid.toAddMonoid.{u2} α (AddGroup.toSubNegMonoid.{u2} α (AddCommGroup.toAddGroup.{u2} α (OrderedAddCommGroup.toAddCommGroup.{u2} α _inst_1))))) (AddMonoid.toAddZeroClass.{u3} β (AddCommMonoid.toAddMonoid.{u3} β (OrderedAddCommMonoid.toAddCommMonoid.{u3} β _inst_2)))] (f : F), Iff (Antitone.{u2, u3} α β (PartialOrder.toPreorder.{u2} α (OrderedAddCommGroup.toPartialOrder.{u2} α _inst_1)) (PartialOrder.toPreorder.{u3} β (OrderedAddCommMonoid.toPartialOrder.{u3} β _inst_2)) (coeFn.{succ u1, max (succ u2) (succ u3)} F (fun (_x : F) => α -> β) (FunLike.hasCoeToFun.{succ u1, succ u2, succ u3} F α (fun (_x : α) => β) (AddHomClass.toFunLike.{u1, u2, u3} F α β (AddZeroClass.toHasAdd.{u2} α (AddMonoid.toAddZeroClass.{u2} α (SubNegMonoid.toAddMonoid.{u2} α (AddGroup.toSubNegMonoid.{u2} α (AddCommGroup.toAddGroup.{u2} α (OrderedAddCommGroup.toAddCommGroup.{u2} α _inst_1)))))) (AddZeroClass.toHasAdd.{u3} β (AddMonoid.toAddZeroClass.{u3} β (AddCommMonoid.toAddMonoid.{u3} β (OrderedAddCommMonoid.toAddCommMonoid.{u3} β _inst_2)))) (AddMonoidHomClass.toAddHomClass.{u1, u2, u3} F α β (AddMonoid.toAddZeroClass.{u2} α (SubNegMonoid.toAddMonoid.{u2} α (AddGroup.toSubNegMonoid.{u2} α (AddCommGroup.toAddGroup.{u2} α (OrderedAddCommGroup.toAddCommGroup.{u2} α _inst_1))))) (AddMonoid.toAddZeroClass.{u3} β (AddCommMonoid.toAddMonoid.{u3} β (OrderedAddCommMonoid.toAddCommMonoid.{u3} β _inst_2))) _inst_3))) f)) (forall (a : α), (LE.le.{u2} α (Preorder.toLE.{u2} α (PartialOrder.toPreorder.{u2} α (OrderedAddCommGroup.toPartialOrder.{u2} α _inst_1))) (OfNat.ofNat.{u2} α 0 (OfNat.mk.{u2} α 0 (Zero.zero.{u2} α (AddZeroClass.toHasZero.{u2} α (AddMonoid.toAddZeroClass.{u2} α (SubNegMonoid.toAddMonoid.{u2} α (AddGroup.toSubNegMonoid.{u2} α (AddCommGroup.toAddGroup.{u2} α (OrderedAddCommGroup.toAddCommGroup.{u2} α _inst_1))))))))) a) -> (LE.le.{u3} β (Preorder.toLE.{u3} β (PartialOrder.toPreorder.{u3} β (OrderedAddCommMonoid.toPartialOrder.{u3} β _inst_2))) (coeFn.{succ u1, max (succ u2) (succ u3)} F (fun (_x : F) => α -> β) (FunLike.hasCoeToFun.{succ u1, succ u2, succ u3} F α (fun (_x : α) => β) (AddHomClass.toFunLike.{u1, u2, u3} F α β (AddZeroClass.toHasAdd.{u2} α (AddMonoid.toAddZeroClass.{u2} α (SubNegMonoid.toAddMonoid.{u2} α (AddGroup.toSubNegMonoid.{u2} α (AddCommGroup.toAddGroup.{u2} α (OrderedAddCommGroup.toAddCommGroup.{u2} α _inst_1)))))) (AddZeroClass.toHasAdd.{u3} β (AddMonoid.toAddZeroClass.{u3} β (AddCommMonoid.toAddMonoid.{u3} β (OrderedAddCommMonoid.toAddCommMonoid.{u3} β _inst_2)))) (AddMonoidHomClass.toAddHomClass.{u1, u2, u3} F α β (AddMonoid.toAddZeroClass.{u2} α (SubNegMonoid.toAddMonoid.{u2} α (AddGroup.toSubNegMonoid.{u2} α (AddCommGroup.toAddGroup.{u2} α (OrderedAddCommGroup.toAddCommGroup.{u2} α _inst_1))))) (AddMonoid.toAddZeroClass.{u3} β (AddCommMonoid.toAddMonoid.{u3} β (OrderedAddCommMonoid.toAddCommMonoid.{u3} β _inst_2))) _inst_3))) f a) (OfNat.ofNat.{u3} β 0 (OfNat.mk.{u3} β 0 (Zero.zero.{u3} β (AddZeroClass.toHasZero.{u3} β (AddMonoid.toAddZeroClass.{u3} β (AddCommMonoid.toAddMonoid.{u3} β (OrderedAddCommMonoid.toAddCommMonoid.{u3} β _inst_2)))))))))
but is expected to have type
  forall {F : Type.{u1}} {α : Type.{u3}} {β : Type.{u2}} [_inst_1 : OrderedAddCommGroup.{u3} α] [_inst_2 : OrderedAddCommMonoid.{u2} β] [_inst_3 : AddMonoidHomClass.{u1, u3, u2} F α β (AddMonoid.toAddZeroClass.{u3} α (SubNegMonoid.toAddMonoid.{u3} α (AddGroup.toSubNegMonoid.{u3} α (AddCommGroup.toAddGroup.{u3} α (OrderedAddCommGroup.toAddCommGroup.{u3} α _inst_1))))) (AddMonoid.toAddZeroClass.{u2} β (AddCommMonoid.toAddMonoid.{u2} β (OrderedAddCommMonoid.toAddCommMonoid.{u2} β _inst_2)))] (f : F), Iff (Antitone.{u3, u2} α β (PartialOrder.toPreorder.{u3} α (OrderedAddCommGroup.toPartialOrder.{u3} α _inst_1)) (PartialOrder.toPreorder.{u2} β (OrderedAddCommMonoid.toPartialOrder.{u2} β _inst_2)) (FunLike.coe.{succ u1, succ u3, succ u2} F α (fun (_x : α) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : α) => β) _x) (AddHomClass.toFunLike.{u1, u3, u2} F α β (AddZeroClass.toAdd.{u3} α (AddMonoid.toAddZeroClass.{u3} α (SubNegMonoid.toAddMonoid.{u3} α (AddGroup.toSubNegMonoid.{u3} α (AddCommGroup.toAddGroup.{u3} α (OrderedAddCommGroup.toAddCommGroup.{u3} α _inst_1)))))) (AddZeroClass.toAdd.{u2} β (AddMonoid.toAddZeroClass.{u2} β (AddCommMonoid.toAddMonoid.{u2} β (OrderedAddCommMonoid.toAddCommMonoid.{u2} β _inst_2)))) (AddMonoidHomClass.toAddHomClass.{u1, u3, u2} F α β (AddMonoid.toAddZeroClass.{u3} α (SubNegMonoid.toAddMonoid.{u3} α (AddGroup.toSubNegMonoid.{u3} α (AddCommGroup.toAddGroup.{u3} α (OrderedAddCommGroup.toAddCommGroup.{u3} α _inst_1))))) (AddMonoid.toAddZeroClass.{u2} β (AddCommMonoid.toAddMonoid.{u2} β (OrderedAddCommMonoid.toAddCommMonoid.{u2} β _inst_2))) _inst_3)) f)) (forall (a : α), (LE.le.{u3} α (Preorder.toLE.{u3} α (PartialOrder.toPreorder.{u3} α (OrderedAddCommGroup.toPartialOrder.{u3} α _inst_1))) (OfNat.ofNat.{u3} α 0 (Zero.toOfNat0.{u3} α (NegZeroClass.toZero.{u3} α (SubNegZeroMonoid.toNegZeroClass.{u3} α (SubtractionMonoid.toSubNegZeroMonoid.{u3} α (SubtractionCommMonoid.toSubtractionMonoid.{u3} α (AddCommGroup.toDivisionAddCommMonoid.{u3} α (OrderedAddCommGroup.toAddCommGroup.{u3} α _inst_1)))))))) a) -> (LE.le.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : α) => β) a) (Preorder.toLE.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : α) => β) a) (PartialOrder.toPreorder.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : α) => β) a) (OrderedAddCommMonoid.toPartialOrder.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : α) => β) a) _inst_2))) (FunLike.coe.{succ u1, succ u3, succ u2} F α (fun (_x : α) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : α) => β) _x) (AddHomClass.toFunLike.{u1, u3, u2} F α β (AddZeroClass.toAdd.{u3} α (AddMonoid.toAddZeroClass.{u3} α (SubNegMonoid.toAddMonoid.{u3} α (AddGroup.toSubNegMonoid.{u3} α (AddCommGroup.toAddGroup.{u3} α (OrderedAddCommGroup.toAddCommGroup.{u3} α _inst_1)))))) (AddZeroClass.toAdd.{u2} β (AddMonoid.toAddZeroClass.{u2} β (AddCommMonoid.toAddMonoid.{u2} β (OrderedAddCommMonoid.toAddCommMonoid.{u2} β _inst_2)))) (AddMonoidHomClass.toAddHomClass.{u1, u3, u2} F α β (AddMonoid.toAddZeroClass.{u3} α (SubNegMonoid.toAddMonoid.{u3} α (AddGroup.toSubNegMonoid.{u3} α (AddCommGroup.toAddGroup.{u3} α (OrderedAddCommGroup.toAddCommGroup.{u3} α _inst_1))))) (AddMonoid.toAddZeroClass.{u2} β (AddCommMonoid.toAddMonoid.{u2} β (OrderedAddCommMonoid.toAddCommMonoid.{u2} β _inst_2))) _inst_3)) f a) (OfNat.ofNat.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : α) => β) a) 0 (Zero.toOfNat0.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : α) => β) a) (AddMonoid.toZero.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : α) => β) a) (AddCommMonoid.toAddMonoid.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : α) => β) a) (OrderedAddCommMonoid.toAddCommMonoid.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : α) => β) a) _inst_2)))))))
Case conversion may be inaccurate. Consider using '#align antitone_iff_map_nonpos antitone_iff_map_nonposₓ'. -/
theorem antitone_iff_map_nonpos : Antitone (f : α → β) ↔ ∀ a, 0 ≤ a → f a ≤ 0 :=
  monotone_toDual_comp_iff.symm.trans <| monotone_iff_map_nonneg _
#align antitone_iff_map_nonpos antitone_iff_map_nonpos

/- warning: monotone_iff_map_nonpos -> monotone_iff_map_nonpos is a dubious translation:
lean 3 declaration is
  forall {F : Type.{u1}} {α : Type.{u2}} {β : Type.{u3}} [_inst_1 : OrderedAddCommGroup.{u2} α] [_inst_2 : OrderedAddCommMonoid.{u3} β] [_inst_3 : AddMonoidHomClass.{u1, u2, u3} F α β (AddMonoid.toAddZeroClass.{u2} α (SubNegMonoid.toAddMonoid.{u2} α (AddGroup.toSubNegMonoid.{u2} α (AddCommGroup.toAddGroup.{u2} α (OrderedAddCommGroup.toAddCommGroup.{u2} α _inst_1))))) (AddMonoid.toAddZeroClass.{u3} β (AddCommMonoid.toAddMonoid.{u3} β (OrderedAddCommMonoid.toAddCommMonoid.{u3} β _inst_2)))] (f : F), Iff (Monotone.{u2, u3} α β (PartialOrder.toPreorder.{u2} α (OrderedAddCommGroup.toPartialOrder.{u2} α _inst_1)) (PartialOrder.toPreorder.{u3} β (OrderedAddCommMonoid.toPartialOrder.{u3} β _inst_2)) (coeFn.{succ u1, max (succ u2) (succ u3)} F (fun (_x : F) => α -> β) (FunLike.hasCoeToFun.{succ u1, succ u2, succ u3} F α (fun (_x : α) => β) (AddHomClass.toFunLike.{u1, u2, u3} F α β (AddZeroClass.toHasAdd.{u2} α (AddMonoid.toAddZeroClass.{u2} α (SubNegMonoid.toAddMonoid.{u2} α (AddGroup.toSubNegMonoid.{u2} α (AddCommGroup.toAddGroup.{u2} α (OrderedAddCommGroup.toAddCommGroup.{u2} α _inst_1)))))) (AddZeroClass.toHasAdd.{u3} β (AddMonoid.toAddZeroClass.{u3} β (AddCommMonoid.toAddMonoid.{u3} β (OrderedAddCommMonoid.toAddCommMonoid.{u3} β _inst_2)))) (AddMonoidHomClass.toAddHomClass.{u1, u2, u3} F α β (AddMonoid.toAddZeroClass.{u2} α (SubNegMonoid.toAddMonoid.{u2} α (AddGroup.toSubNegMonoid.{u2} α (AddCommGroup.toAddGroup.{u2} α (OrderedAddCommGroup.toAddCommGroup.{u2} α _inst_1))))) (AddMonoid.toAddZeroClass.{u3} β (AddCommMonoid.toAddMonoid.{u3} β (OrderedAddCommMonoid.toAddCommMonoid.{u3} β _inst_2))) _inst_3))) f)) (forall (a : α), (LE.le.{u2} α (Preorder.toLE.{u2} α (PartialOrder.toPreorder.{u2} α (OrderedAddCommGroup.toPartialOrder.{u2} α _inst_1))) a (OfNat.ofNat.{u2} α 0 (OfNat.mk.{u2} α 0 (Zero.zero.{u2} α (AddZeroClass.toHasZero.{u2} α (AddMonoid.toAddZeroClass.{u2} α (SubNegMonoid.toAddMonoid.{u2} α (AddGroup.toSubNegMonoid.{u2} α (AddCommGroup.toAddGroup.{u2} α (OrderedAddCommGroup.toAddCommGroup.{u2} α _inst_1)))))))))) -> (LE.le.{u3} β (Preorder.toLE.{u3} β (PartialOrder.toPreorder.{u3} β (OrderedAddCommMonoid.toPartialOrder.{u3} β _inst_2))) (coeFn.{succ u1, max (succ u2) (succ u3)} F (fun (_x : F) => α -> β) (FunLike.hasCoeToFun.{succ u1, succ u2, succ u3} F α (fun (_x : α) => β) (AddHomClass.toFunLike.{u1, u2, u3} F α β (AddZeroClass.toHasAdd.{u2} α (AddMonoid.toAddZeroClass.{u2} α (SubNegMonoid.toAddMonoid.{u2} α (AddGroup.toSubNegMonoid.{u2} α (AddCommGroup.toAddGroup.{u2} α (OrderedAddCommGroup.toAddCommGroup.{u2} α _inst_1)))))) (AddZeroClass.toHasAdd.{u3} β (AddMonoid.toAddZeroClass.{u3} β (AddCommMonoid.toAddMonoid.{u3} β (OrderedAddCommMonoid.toAddCommMonoid.{u3} β _inst_2)))) (AddMonoidHomClass.toAddHomClass.{u1, u2, u3} F α β (AddMonoid.toAddZeroClass.{u2} α (SubNegMonoid.toAddMonoid.{u2} α (AddGroup.toSubNegMonoid.{u2} α (AddCommGroup.toAddGroup.{u2} α (OrderedAddCommGroup.toAddCommGroup.{u2} α _inst_1))))) (AddMonoid.toAddZeroClass.{u3} β (AddCommMonoid.toAddMonoid.{u3} β (OrderedAddCommMonoid.toAddCommMonoid.{u3} β _inst_2))) _inst_3))) f a) (OfNat.ofNat.{u3} β 0 (OfNat.mk.{u3} β 0 (Zero.zero.{u3} β (AddZeroClass.toHasZero.{u3} β (AddMonoid.toAddZeroClass.{u3} β (AddCommMonoid.toAddMonoid.{u3} β (OrderedAddCommMonoid.toAddCommMonoid.{u3} β _inst_2)))))))))
but is expected to have type
  forall {F : Type.{u1}} {α : Type.{u3}} {β : Type.{u2}} [_inst_1 : OrderedAddCommGroup.{u3} α] [_inst_2 : OrderedAddCommMonoid.{u2} β] [_inst_3 : AddMonoidHomClass.{u1, u3, u2} F α β (AddMonoid.toAddZeroClass.{u3} α (SubNegMonoid.toAddMonoid.{u3} α (AddGroup.toSubNegMonoid.{u3} α (AddCommGroup.toAddGroup.{u3} α (OrderedAddCommGroup.toAddCommGroup.{u3} α _inst_1))))) (AddMonoid.toAddZeroClass.{u2} β (AddCommMonoid.toAddMonoid.{u2} β (OrderedAddCommMonoid.toAddCommMonoid.{u2} β _inst_2)))] (f : F), Iff (Monotone.{u3, u2} α β (PartialOrder.toPreorder.{u3} α (OrderedAddCommGroup.toPartialOrder.{u3} α _inst_1)) (PartialOrder.toPreorder.{u2} β (OrderedAddCommMonoid.toPartialOrder.{u2} β _inst_2)) (FunLike.coe.{succ u1, succ u3, succ u2} F α (fun (_x : α) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : α) => β) _x) (AddHomClass.toFunLike.{u1, u3, u2} F α β (AddZeroClass.toAdd.{u3} α (AddMonoid.toAddZeroClass.{u3} α (SubNegMonoid.toAddMonoid.{u3} α (AddGroup.toSubNegMonoid.{u3} α (AddCommGroup.toAddGroup.{u3} α (OrderedAddCommGroup.toAddCommGroup.{u3} α _inst_1)))))) (AddZeroClass.toAdd.{u2} β (AddMonoid.toAddZeroClass.{u2} β (AddCommMonoid.toAddMonoid.{u2} β (OrderedAddCommMonoid.toAddCommMonoid.{u2} β _inst_2)))) (AddMonoidHomClass.toAddHomClass.{u1, u3, u2} F α β (AddMonoid.toAddZeroClass.{u3} α (SubNegMonoid.toAddMonoid.{u3} α (AddGroup.toSubNegMonoid.{u3} α (AddCommGroup.toAddGroup.{u3} α (OrderedAddCommGroup.toAddCommGroup.{u3} α _inst_1))))) (AddMonoid.toAddZeroClass.{u2} β (AddCommMonoid.toAddMonoid.{u2} β (OrderedAddCommMonoid.toAddCommMonoid.{u2} β _inst_2))) _inst_3)) f)) (forall (a : α), (LE.le.{u3} α (Preorder.toLE.{u3} α (PartialOrder.toPreorder.{u3} α (OrderedAddCommGroup.toPartialOrder.{u3} α _inst_1))) a (OfNat.ofNat.{u3} α 0 (Zero.toOfNat0.{u3} α (NegZeroClass.toZero.{u3} α (SubNegZeroMonoid.toNegZeroClass.{u3} α (SubtractionMonoid.toSubNegZeroMonoid.{u3} α (SubtractionCommMonoid.toSubtractionMonoid.{u3} α (AddCommGroup.toDivisionAddCommMonoid.{u3} α (OrderedAddCommGroup.toAddCommGroup.{u3} α _inst_1))))))))) -> (LE.le.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : α) => β) a) (Preorder.toLE.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : α) => β) a) (PartialOrder.toPreorder.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : α) => β) a) (OrderedAddCommMonoid.toPartialOrder.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : α) => β) a) _inst_2))) (FunLike.coe.{succ u1, succ u3, succ u2} F α (fun (_x : α) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : α) => β) _x) (AddHomClass.toFunLike.{u1, u3, u2} F α β (AddZeroClass.toAdd.{u3} α (AddMonoid.toAddZeroClass.{u3} α (SubNegMonoid.toAddMonoid.{u3} α (AddGroup.toSubNegMonoid.{u3} α (AddCommGroup.toAddGroup.{u3} α (OrderedAddCommGroup.toAddCommGroup.{u3} α _inst_1)))))) (AddZeroClass.toAdd.{u2} β (AddMonoid.toAddZeroClass.{u2} β (AddCommMonoid.toAddMonoid.{u2} β (OrderedAddCommMonoid.toAddCommMonoid.{u2} β _inst_2)))) (AddMonoidHomClass.toAddHomClass.{u1, u3, u2} F α β (AddMonoid.toAddZeroClass.{u3} α (SubNegMonoid.toAddMonoid.{u3} α (AddGroup.toSubNegMonoid.{u3} α (AddCommGroup.toAddGroup.{u3} α (OrderedAddCommGroup.toAddCommGroup.{u3} α _inst_1))))) (AddMonoid.toAddZeroClass.{u2} β (AddCommMonoid.toAddMonoid.{u2} β (OrderedAddCommMonoid.toAddCommMonoid.{u2} β _inst_2))) _inst_3)) f a) (OfNat.ofNat.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : α) => β) a) 0 (Zero.toOfNat0.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : α) => β) a) (AddMonoid.toZero.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : α) => β) a) (AddCommMonoid.toAddMonoid.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : α) => β) a) (OrderedAddCommMonoid.toAddCommMonoid.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : α) => β) a) _inst_2)))))))
Case conversion may be inaccurate. Consider using '#align monotone_iff_map_nonpos monotone_iff_map_nonposₓ'. -/
theorem monotone_iff_map_nonpos : Monotone (f : α → β) ↔ ∀ a ≤ 0, f a ≤ 0 :=
  antitone_comp_ofDual_iff.symm.trans <| antitone_iff_map_nonpos _
#align monotone_iff_map_nonpos monotone_iff_map_nonpos

/- warning: antitone_iff_map_nonneg -> antitone_iff_map_nonneg is a dubious translation:
lean 3 declaration is
  forall {F : Type.{u1}} {α : Type.{u2}} {β : Type.{u3}} [_inst_1 : OrderedAddCommGroup.{u2} α] [_inst_2 : OrderedAddCommMonoid.{u3} β] [_inst_3 : AddMonoidHomClass.{u1, u2, u3} F α β (AddMonoid.toAddZeroClass.{u2} α (SubNegMonoid.toAddMonoid.{u2} α (AddGroup.toSubNegMonoid.{u2} α (AddCommGroup.toAddGroup.{u2} α (OrderedAddCommGroup.toAddCommGroup.{u2} α _inst_1))))) (AddMonoid.toAddZeroClass.{u3} β (AddCommMonoid.toAddMonoid.{u3} β (OrderedAddCommMonoid.toAddCommMonoid.{u3} β _inst_2)))] (f : F), Iff (Antitone.{u2, u3} α β (PartialOrder.toPreorder.{u2} α (OrderedAddCommGroup.toPartialOrder.{u2} α _inst_1)) (PartialOrder.toPreorder.{u3} β (OrderedAddCommMonoid.toPartialOrder.{u3} β _inst_2)) (coeFn.{succ u1, max (succ u2) (succ u3)} F (fun (_x : F) => α -> β) (FunLike.hasCoeToFun.{succ u1, succ u2, succ u3} F α (fun (_x : α) => β) (AddHomClass.toFunLike.{u1, u2, u3} F α β (AddZeroClass.toHasAdd.{u2} α (AddMonoid.toAddZeroClass.{u2} α (SubNegMonoid.toAddMonoid.{u2} α (AddGroup.toSubNegMonoid.{u2} α (AddCommGroup.toAddGroup.{u2} α (OrderedAddCommGroup.toAddCommGroup.{u2} α _inst_1)))))) (AddZeroClass.toHasAdd.{u3} β (AddMonoid.toAddZeroClass.{u3} β (AddCommMonoid.toAddMonoid.{u3} β (OrderedAddCommMonoid.toAddCommMonoid.{u3} β _inst_2)))) (AddMonoidHomClass.toAddHomClass.{u1, u2, u3} F α β (AddMonoid.toAddZeroClass.{u2} α (SubNegMonoid.toAddMonoid.{u2} α (AddGroup.toSubNegMonoid.{u2} α (AddCommGroup.toAddGroup.{u2} α (OrderedAddCommGroup.toAddCommGroup.{u2} α _inst_1))))) (AddMonoid.toAddZeroClass.{u3} β (AddCommMonoid.toAddMonoid.{u3} β (OrderedAddCommMonoid.toAddCommMonoid.{u3} β _inst_2))) _inst_3))) f)) (forall (a : α), (LE.le.{u2} α (Preorder.toLE.{u2} α (PartialOrder.toPreorder.{u2} α (OrderedAddCommGroup.toPartialOrder.{u2} α _inst_1))) a (OfNat.ofNat.{u2} α 0 (OfNat.mk.{u2} α 0 (Zero.zero.{u2} α (AddZeroClass.toHasZero.{u2} α (AddMonoid.toAddZeroClass.{u2} α (SubNegMonoid.toAddMonoid.{u2} α (AddGroup.toSubNegMonoid.{u2} α (AddCommGroup.toAddGroup.{u2} α (OrderedAddCommGroup.toAddCommGroup.{u2} α _inst_1)))))))))) -> (LE.le.{u3} β (Preorder.toLE.{u3} β (PartialOrder.toPreorder.{u3} β (OrderedAddCommMonoid.toPartialOrder.{u3} β _inst_2))) (OfNat.ofNat.{u3} β 0 (OfNat.mk.{u3} β 0 (Zero.zero.{u3} β (AddZeroClass.toHasZero.{u3} β (AddMonoid.toAddZeroClass.{u3} β (AddCommMonoid.toAddMonoid.{u3} β (OrderedAddCommMonoid.toAddCommMonoid.{u3} β _inst_2))))))) (coeFn.{succ u1, max (succ u2) (succ u3)} F (fun (_x : F) => α -> β) (FunLike.hasCoeToFun.{succ u1, succ u2, succ u3} F α (fun (_x : α) => β) (AddHomClass.toFunLike.{u1, u2, u3} F α β (AddZeroClass.toHasAdd.{u2} α (AddMonoid.toAddZeroClass.{u2} α (SubNegMonoid.toAddMonoid.{u2} α (AddGroup.toSubNegMonoid.{u2} α (AddCommGroup.toAddGroup.{u2} α (OrderedAddCommGroup.toAddCommGroup.{u2} α _inst_1)))))) (AddZeroClass.toHasAdd.{u3} β (AddMonoid.toAddZeroClass.{u3} β (AddCommMonoid.toAddMonoid.{u3} β (OrderedAddCommMonoid.toAddCommMonoid.{u3} β _inst_2)))) (AddMonoidHomClass.toAddHomClass.{u1, u2, u3} F α β (AddMonoid.toAddZeroClass.{u2} α (SubNegMonoid.toAddMonoid.{u2} α (AddGroup.toSubNegMonoid.{u2} α (AddCommGroup.toAddGroup.{u2} α (OrderedAddCommGroup.toAddCommGroup.{u2} α _inst_1))))) (AddMonoid.toAddZeroClass.{u3} β (AddCommMonoid.toAddMonoid.{u3} β (OrderedAddCommMonoid.toAddCommMonoid.{u3} β _inst_2))) _inst_3))) f a)))
but is expected to have type
  forall {F : Type.{u1}} {α : Type.{u3}} {β : Type.{u2}} [_inst_1 : OrderedAddCommGroup.{u3} α] [_inst_2 : OrderedAddCommMonoid.{u2} β] [_inst_3 : AddMonoidHomClass.{u1, u3, u2} F α β (AddMonoid.toAddZeroClass.{u3} α (SubNegMonoid.toAddMonoid.{u3} α (AddGroup.toSubNegMonoid.{u3} α (AddCommGroup.toAddGroup.{u3} α (OrderedAddCommGroup.toAddCommGroup.{u3} α _inst_1))))) (AddMonoid.toAddZeroClass.{u2} β (AddCommMonoid.toAddMonoid.{u2} β (OrderedAddCommMonoid.toAddCommMonoid.{u2} β _inst_2)))] (f : F), Iff (Antitone.{u3, u2} α β (PartialOrder.toPreorder.{u3} α (OrderedAddCommGroup.toPartialOrder.{u3} α _inst_1)) (PartialOrder.toPreorder.{u2} β (OrderedAddCommMonoid.toPartialOrder.{u2} β _inst_2)) (FunLike.coe.{succ u1, succ u3, succ u2} F α (fun (_x : α) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : α) => β) _x) (AddHomClass.toFunLike.{u1, u3, u2} F α β (AddZeroClass.toAdd.{u3} α (AddMonoid.toAddZeroClass.{u3} α (SubNegMonoid.toAddMonoid.{u3} α (AddGroup.toSubNegMonoid.{u3} α (AddCommGroup.toAddGroup.{u3} α (OrderedAddCommGroup.toAddCommGroup.{u3} α _inst_1)))))) (AddZeroClass.toAdd.{u2} β (AddMonoid.toAddZeroClass.{u2} β (AddCommMonoid.toAddMonoid.{u2} β (OrderedAddCommMonoid.toAddCommMonoid.{u2} β _inst_2)))) (AddMonoidHomClass.toAddHomClass.{u1, u3, u2} F α β (AddMonoid.toAddZeroClass.{u3} α (SubNegMonoid.toAddMonoid.{u3} α (AddGroup.toSubNegMonoid.{u3} α (AddCommGroup.toAddGroup.{u3} α (OrderedAddCommGroup.toAddCommGroup.{u3} α _inst_1))))) (AddMonoid.toAddZeroClass.{u2} β (AddCommMonoid.toAddMonoid.{u2} β (OrderedAddCommMonoid.toAddCommMonoid.{u2} β _inst_2))) _inst_3)) f)) (forall (a : α), (LE.le.{u3} α (Preorder.toLE.{u3} α (PartialOrder.toPreorder.{u3} α (OrderedAddCommGroup.toPartialOrder.{u3} α _inst_1))) a (OfNat.ofNat.{u3} α 0 (Zero.toOfNat0.{u3} α (NegZeroClass.toZero.{u3} α (SubNegZeroMonoid.toNegZeroClass.{u3} α (SubtractionMonoid.toSubNegZeroMonoid.{u3} α (SubtractionCommMonoid.toSubtractionMonoid.{u3} α (AddCommGroup.toDivisionAddCommMonoid.{u3} α (OrderedAddCommGroup.toAddCommGroup.{u3} α _inst_1))))))))) -> (LE.le.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : α) => β) a) (Preorder.toLE.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : α) => β) a) (PartialOrder.toPreorder.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : α) => β) a) (OrderedAddCommMonoid.toPartialOrder.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : α) => β) a) _inst_2))) (OfNat.ofNat.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : α) => β) a) 0 (Zero.toOfNat0.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : α) => β) a) (AddMonoid.toZero.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : α) => β) a) (AddCommMonoid.toAddMonoid.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : α) => β) a) (OrderedAddCommMonoid.toAddCommMonoid.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : α) => β) a) _inst_2))))) (FunLike.coe.{succ u1, succ u3, succ u2} F α (fun (_x : α) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : α) => β) _x) (AddHomClass.toFunLike.{u1, u3, u2} F α β (AddZeroClass.toAdd.{u3} α (AddMonoid.toAddZeroClass.{u3} α (SubNegMonoid.toAddMonoid.{u3} α (AddGroup.toSubNegMonoid.{u3} α (AddCommGroup.toAddGroup.{u3} α (OrderedAddCommGroup.toAddCommGroup.{u3} α _inst_1)))))) (AddZeroClass.toAdd.{u2} β (AddMonoid.toAddZeroClass.{u2} β (AddCommMonoid.toAddMonoid.{u2} β (OrderedAddCommMonoid.toAddCommMonoid.{u2} β _inst_2)))) (AddMonoidHomClass.toAddHomClass.{u1, u3, u2} F α β (AddMonoid.toAddZeroClass.{u3} α (SubNegMonoid.toAddMonoid.{u3} α (AddGroup.toSubNegMonoid.{u3} α (AddCommGroup.toAddGroup.{u3} α (OrderedAddCommGroup.toAddCommGroup.{u3} α _inst_1))))) (AddMonoid.toAddZeroClass.{u2} β (AddCommMonoid.toAddMonoid.{u2} β (OrderedAddCommMonoid.toAddCommMonoid.{u2} β _inst_2))) _inst_3)) f a)))
Case conversion may be inaccurate. Consider using '#align antitone_iff_map_nonneg antitone_iff_map_nonnegₓ'. -/
theorem antitone_iff_map_nonneg : Antitone (f : α → β) ↔ ∀ a ≤ 0, 0 ≤ f a :=
  monotone_comp_ofDual_iff.symm.trans <| monotone_iff_map_nonneg _
#align antitone_iff_map_nonneg antitone_iff_map_nonneg

variable [CovariantClass β β (· + ·) (· < ·)]

/- warning: strict_mono_iff_map_pos -> strictMono_iff_map_pos is a dubious translation:
lean 3 declaration is
  forall {F : Type.{u1}} {α : Type.{u2}} {β : Type.{u3}} [_inst_1 : OrderedAddCommGroup.{u2} α] [_inst_2 : OrderedAddCommMonoid.{u3} β] [_inst_3 : AddMonoidHomClass.{u1, u2, u3} F α β (AddMonoid.toAddZeroClass.{u2} α (SubNegMonoid.toAddMonoid.{u2} α (AddGroup.toSubNegMonoid.{u2} α (AddCommGroup.toAddGroup.{u2} α (OrderedAddCommGroup.toAddCommGroup.{u2} α _inst_1))))) (AddMonoid.toAddZeroClass.{u3} β (AddCommMonoid.toAddMonoid.{u3} β (OrderedAddCommMonoid.toAddCommMonoid.{u3} β _inst_2)))] (f : F) [_inst_4 : CovariantClass.{u3, u3} β β (HAdd.hAdd.{u3, u3, u3} β β β (instHAdd.{u3} β (AddZeroClass.toHasAdd.{u3} β (AddMonoid.toAddZeroClass.{u3} β (AddCommMonoid.toAddMonoid.{u3} β (OrderedAddCommMonoid.toAddCommMonoid.{u3} β _inst_2)))))) (LT.lt.{u3} β (Preorder.toLT.{u3} β (PartialOrder.toPreorder.{u3} β (OrderedAddCommMonoid.toPartialOrder.{u3} β _inst_2))))], Iff (StrictMono.{u2, u3} α β (PartialOrder.toPreorder.{u2} α (OrderedAddCommGroup.toPartialOrder.{u2} α _inst_1)) (PartialOrder.toPreorder.{u3} β (OrderedAddCommMonoid.toPartialOrder.{u3} β _inst_2)) (coeFn.{succ u1, max (succ u2) (succ u3)} F (fun (_x : F) => α -> β) (FunLike.hasCoeToFun.{succ u1, succ u2, succ u3} F α (fun (_x : α) => β) (AddHomClass.toFunLike.{u1, u2, u3} F α β (AddZeroClass.toHasAdd.{u2} α (AddMonoid.toAddZeroClass.{u2} α (SubNegMonoid.toAddMonoid.{u2} α (AddGroup.toSubNegMonoid.{u2} α (AddCommGroup.toAddGroup.{u2} α (OrderedAddCommGroup.toAddCommGroup.{u2} α _inst_1)))))) (AddZeroClass.toHasAdd.{u3} β (AddMonoid.toAddZeroClass.{u3} β (AddCommMonoid.toAddMonoid.{u3} β (OrderedAddCommMonoid.toAddCommMonoid.{u3} β _inst_2)))) (AddMonoidHomClass.toAddHomClass.{u1, u2, u3} F α β (AddMonoid.toAddZeroClass.{u2} α (SubNegMonoid.toAddMonoid.{u2} α (AddGroup.toSubNegMonoid.{u2} α (AddCommGroup.toAddGroup.{u2} α (OrderedAddCommGroup.toAddCommGroup.{u2} α _inst_1))))) (AddMonoid.toAddZeroClass.{u3} β (AddCommMonoid.toAddMonoid.{u3} β (OrderedAddCommMonoid.toAddCommMonoid.{u3} β _inst_2))) _inst_3))) f)) (forall (a : α), (LT.lt.{u2} α (Preorder.toLT.{u2} α (PartialOrder.toPreorder.{u2} α (OrderedAddCommGroup.toPartialOrder.{u2} α _inst_1))) (OfNat.ofNat.{u2} α 0 (OfNat.mk.{u2} α 0 (Zero.zero.{u2} α (AddZeroClass.toHasZero.{u2} α (AddMonoid.toAddZeroClass.{u2} α (SubNegMonoid.toAddMonoid.{u2} α (AddGroup.toSubNegMonoid.{u2} α (AddCommGroup.toAddGroup.{u2} α (OrderedAddCommGroup.toAddCommGroup.{u2} α _inst_1))))))))) a) -> (LT.lt.{u3} β (Preorder.toLT.{u3} β (PartialOrder.toPreorder.{u3} β (OrderedAddCommMonoid.toPartialOrder.{u3} β _inst_2))) (OfNat.ofNat.{u3} β 0 (OfNat.mk.{u3} β 0 (Zero.zero.{u3} β (AddZeroClass.toHasZero.{u3} β (AddMonoid.toAddZeroClass.{u3} β (AddCommMonoid.toAddMonoid.{u3} β (OrderedAddCommMonoid.toAddCommMonoid.{u3} β _inst_2))))))) (coeFn.{succ u1, max (succ u2) (succ u3)} F (fun (_x : F) => α -> β) (FunLike.hasCoeToFun.{succ u1, succ u2, succ u3} F α (fun (_x : α) => β) (AddHomClass.toFunLike.{u1, u2, u3} F α β (AddZeroClass.toHasAdd.{u2} α (AddMonoid.toAddZeroClass.{u2} α (SubNegMonoid.toAddMonoid.{u2} α (AddGroup.toSubNegMonoid.{u2} α (AddCommGroup.toAddGroup.{u2} α (OrderedAddCommGroup.toAddCommGroup.{u2} α _inst_1)))))) (AddZeroClass.toHasAdd.{u3} β (AddMonoid.toAddZeroClass.{u3} β (AddCommMonoid.toAddMonoid.{u3} β (OrderedAddCommMonoid.toAddCommMonoid.{u3} β _inst_2)))) (AddMonoidHomClass.toAddHomClass.{u1, u2, u3} F α β (AddMonoid.toAddZeroClass.{u2} α (SubNegMonoid.toAddMonoid.{u2} α (AddGroup.toSubNegMonoid.{u2} α (AddCommGroup.toAddGroup.{u2} α (OrderedAddCommGroup.toAddCommGroup.{u2} α _inst_1))))) (AddMonoid.toAddZeroClass.{u3} β (AddCommMonoid.toAddMonoid.{u3} β (OrderedAddCommMonoid.toAddCommMonoid.{u3} β _inst_2))) _inst_3))) f a)))
but is expected to have type
  forall {F : Type.{u1}} {α : Type.{u3}} {β : Type.{u2}} [_inst_1 : OrderedAddCommGroup.{u3} α] [_inst_2 : OrderedAddCommMonoid.{u2} β] [_inst_3 : AddMonoidHomClass.{u1, u3, u2} F α β (AddMonoid.toAddZeroClass.{u3} α (SubNegMonoid.toAddMonoid.{u3} α (AddGroup.toSubNegMonoid.{u3} α (AddCommGroup.toAddGroup.{u3} α (OrderedAddCommGroup.toAddCommGroup.{u3} α _inst_1))))) (AddMonoid.toAddZeroClass.{u2} β (AddCommMonoid.toAddMonoid.{u2} β (OrderedAddCommMonoid.toAddCommMonoid.{u2} β _inst_2)))] (f : F) [_inst_4 : CovariantClass.{u2, u2} β β (fun (x._@.Mathlib.Algebra.Order.Hom.Monoid._hyg.3040 : β) (x._@.Mathlib.Algebra.Order.Hom.Monoid._hyg.3042 : β) => HAdd.hAdd.{u2, u2, u2} β β β (instHAdd.{u2} β (AddZeroClass.toAdd.{u2} β (AddMonoid.toAddZeroClass.{u2} β (AddCommMonoid.toAddMonoid.{u2} β (OrderedAddCommMonoid.toAddCommMonoid.{u2} β _inst_2))))) x._@.Mathlib.Algebra.Order.Hom.Monoid._hyg.3040 x._@.Mathlib.Algebra.Order.Hom.Monoid._hyg.3042) (fun (x._@.Mathlib.Algebra.Order.Hom.Monoid._hyg.3055 : β) (x._@.Mathlib.Algebra.Order.Hom.Monoid._hyg.3057 : β) => LT.lt.{u2} β (Preorder.toLT.{u2} β (PartialOrder.toPreorder.{u2} β (OrderedAddCommMonoid.toPartialOrder.{u2} β _inst_2))) x._@.Mathlib.Algebra.Order.Hom.Monoid._hyg.3055 x._@.Mathlib.Algebra.Order.Hom.Monoid._hyg.3057)], Iff (StrictMono.{u3, u2} α β (PartialOrder.toPreorder.{u3} α (OrderedAddCommGroup.toPartialOrder.{u3} α _inst_1)) (PartialOrder.toPreorder.{u2} β (OrderedAddCommMonoid.toPartialOrder.{u2} β _inst_2)) (FunLike.coe.{succ u1, succ u3, succ u2} F α (fun (_x : α) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : α) => β) _x) (AddHomClass.toFunLike.{u1, u3, u2} F α β (AddZeroClass.toAdd.{u3} α (AddMonoid.toAddZeroClass.{u3} α (SubNegMonoid.toAddMonoid.{u3} α (AddGroup.toSubNegMonoid.{u3} α (AddCommGroup.toAddGroup.{u3} α (OrderedAddCommGroup.toAddCommGroup.{u3} α _inst_1)))))) (AddZeroClass.toAdd.{u2} β (AddMonoid.toAddZeroClass.{u2} β (AddCommMonoid.toAddMonoid.{u2} β (OrderedAddCommMonoid.toAddCommMonoid.{u2} β _inst_2)))) (AddMonoidHomClass.toAddHomClass.{u1, u3, u2} F α β (AddMonoid.toAddZeroClass.{u3} α (SubNegMonoid.toAddMonoid.{u3} α (AddGroup.toSubNegMonoid.{u3} α (AddCommGroup.toAddGroup.{u3} α (OrderedAddCommGroup.toAddCommGroup.{u3} α _inst_1))))) (AddMonoid.toAddZeroClass.{u2} β (AddCommMonoid.toAddMonoid.{u2} β (OrderedAddCommMonoid.toAddCommMonoid.{u2} β _inst_2))) _inst_3)) f)) (forall (a : α), (LT.lt.{u3} α (Preorder.toLT.{u3} α (PartialOrder.toPreorder.{u3} α (OrderedAddCommGroup.toPartialOrder.{u3} α _inst_1))) (OfNat.ofNat.{u3} α 0 (Zero.toOfNat0.{u3} α (NegZeroClass.toZero.{u3} α (SubNegZeroMonoid.toNegZeroClass.{u3} α (SubtractionMonoid.toSubNegZeroMonoid.{u3} α (SubtractionCommMonoid.toSubtractionMonoid.{u3} α (AddCommGroup.toDivisionAddCommMonoid.{u3} α (OrderedAddCommGroup.toAddCommGroup.{u3} α _inst_1)))))))) a) -> (LT.lt.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : α) => β) a) (Preorder.toLT.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : α) => β) a) (PartialOrder.toPreorder.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : α) => β) a) (OrderedAddCommMonoid.toPartialOrder.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : α) => β) a) _inst_2))) (OfNat.ofNat.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : α) => β) a) 0 (Zero.toOfNat0.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : α) => β) a) (AddMonoid.toZero.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : α) => β) a) (AddCommMonoid.toAddMonoid.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : α) => β) a) (OrderedAddCommMonoid.toAddCommMonoid.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : α) => β) a) _inst_2))))) (FunLike.coe.{succ u1, succ u3, succ u2} F α (fun (_x : α) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : α) => β) _x) (AddHomClass.toFunLike.{u1, u3, u2} F α β (AddZeroClass.toAdd.{u3} α (AddMonoid.toAddZeroClass.{u3} α (SubNegMonoid.toAddMonoid.{u3} α (AddGroup.toSubNegMonoid.{u3} α (AddCommGroup.toAddGroup.{u3} α (OrderedAddCommGroup.toAddCommGroup.{u3} α _inst_1)))))) (AddZeroClass.toAdd.{u2} β (AddMonoid.toAddZeroClass.{u2} β (AddCommMonoid.toAddMonoid.{u2} β (OrderedAddCommMonoid.toAddCommMonoid.{u2} β _inst_2)))) (AddMonoidHomClass.toAddHomClass.{u1, u3, u2} F α β (AddMonoid.toAddZeroClass.{u3} α (SubNegMonoid.toAddMonoid.{u3} α (AddGroup.toSubNegMonoid.{u3} α (AddCommGroup.toAddGroup.{u3} α (OrderedAddCommGroup.toAddCommGroup.{u3} α _inst_1))))) (AddMonoid.toAddZeroClass.{u2} β (AddCommMonoid.toAddMonoid.{u2} β (OrderedAddCommMonoid.toAddCommMonoid.{u2} β _inst_2))) _inst_3)) f a)))
Case conversion may be inaccurate. Consider using '#align strict_mono_iff_map_pos strictMono_iff_map_posₓ'. -/
theorem strictMono_iff_map_pos : StrictMono (f : α → β) ↔ ∀ a, 0 < a → 0 < f a :=
  ⟨fun h a => by
    rw [← map_zero f]
    apply h, fun h a b hl => by
    rw [← sub_add_cancel b a, map_add f]
    exact lt_add_of_pos_left _ (h _ <| sub_pos.2 hl)⟩
#align strict_mono_iff_map_pos strictMono_iff_map_pos

/- warning: strict_anti_iff_map_neg -> strictAnti_iff_map_neg is a dubious translation:
lean 3 declaration is
  forall {F : Type.{u1}} {α : Type.{u2}} {β : Type.{u3}} [_inst_1 : OrderedAddCommGroup.{u2} α] [_inst_2 : OrderedAddCommMonoid.{u3} β] [_inst_3 : AddMonoidHomClass.{u1, u2, u3} F α β (AddMonoid.toAddZeroClass.{u2} α (SubNegMonoid.toAddMonoid.{u2} α (AddGroup.toSubNegMonoid.{u2} α (AddCommGroup.toAddGroup.{u2} α (OrderedAddCommGroup.toAddCommGroup.{u2} α _inst_1))))) (AddMonoid.toAddZeroClass.{u3} β (AddCommMonoid.toAddMonoid.{u3} β (OrderedAddCommMonoid.toAddCommMonoid.{u3} β _inst_2)))] (f : F) [_inst_4 : CovariantClass.{u3, u3} β β (HAdd.hAdd.{u3, u3, u3} β β β (instHAdd.{u3} β (AddZeroClass.toHasAdd.{u3} β (AddMonoid.toAddZeroClass.{u3} β (AddCommMonoid.toAddMonoid.{u3} β (OrderedAddCommMonoid.toAddCommMonoid.{u3} β _inst_2)))))) (LT.lt.{u3} β (Preorder.toLT.{u3} β (PartialOrder.toPreorder.{u3} β (OrderedAddCommMonoid.toPartialOrder.{u3} β _inst_2))))], Iff (StrictAnti.{u2, u3} α β (PartialOrder.toPreorder.{u2} α (OrderedAddCommGroup.toPartialOrder.{u2} α _inst_1)) (PartialOrder.toPreorder.{u3} β (OrderedAddCommMonoid.toPartialOrder.{u3} β _inst_2)) (coeFn.{succ u1, max (succ u2) (succ u3)} F (fun (_x : F) => α -> β) (FunLike.hasCoeToFun.{succ u1, succ u2, succ u3} F α (fun (_x : α) => β) (AddHomClass.toFunLike.{u1, u2, u3} F α β (AddZeroClass.toHasAdd.{u2} α (AddMonoid.toAddZeroClass.{u2} α (SubNegMonoid.toAddMonoid.{u2} α (AddGroup.toSubNegMonoid.{u2} α (AddCommGroup.toAddGroup.{u2} α (OrderedAddCommGroup.toAddCommGroup.{u2} α _inst_1)))))) (AddZeroClass.toHasAdd.{u3} β (AddMonoid.toAddZeroClass.{u3} β (AddCommMonoid.toAddMonoid.{u3} β (OrderedAddCommMonoid.toAddCommMonoid.{u3} β _inst_2)))) (AddMonoidHomClass.toAddHomClass.{u1, u2, u3} F α β (AddMonoid.toAddZeroClass.{u2} α (SubNegMonoid.toAddMonoid.{u2} α (AddGroup.toSubNegMonoid.{u2} α (AddCommGroup.toAddGroup.{u2} α (OrderedAddCommGroup.toAddCommGroup.{u2} α _inst_1))))) (AddMonoid.toAddZeroClass.{u3} β (AddCommMonoid.toAddMonoid.{u3} β (OrderedAddCommMonoid.toAddCommMonoid.{u3} β _inst_2))) _inst_3))) f)) (forall (a : α), (LT.lt.{u2} α (Preorder.toLT.{u2} α (PartialOrder.toPreorder.{u2} α (OrderedAddCommGroup.toPartialOrder.{u2} α _inst_1))) (OfNat.ofNat.{u2} α 0 (OfNat.mk.{u2} α 0 (Zero.zero.{u2} α (AddZeroClass.toHasZero.{u2} α (AddMonoid.toAddZeroClass.{u2} α (SubNegMonoid.toAddMonoid.{u2} α (AddGroup.toSubNegMonoid.{u2} α (AddCommGroup.toAddGroup.{u2} α (OrderedAddCommGroup.toAddCommGroup.{u2} α _inst_1))))))))) a) -> (LT.lt.{u3} β (Preorder.toLT.{u3} β (PartialOrder.toPreorder.{u3} β (OrderedAddCommMonoid.toPartialOrder.{u3} β _inst_2))) (coeFn.{succ u1, max (succ u2) (succ u3)} F (fun (_x : F) => α -> β) (FunLike.hasCoeToFun.{succ u1, succ u2, succ u3} F α (fun (_x : α) => β) (AddHomClass.toFunLike.{u1, u2, u3} F α β (AddZeroClass.toHasAdd.{u2} α (AddMonoid.toAddZeroClass.{u2} α (SubNegMonoid.toAddMonoid.{u2} α (AddGroup.toSubNegMonoid.{u2} α (AddCommGroup.toAddGroup.{u2} α (OrderedAddCommGroup.toAddCommGroup.{u2} α _inst_1)))))) (AddZeroClass.toHasAdd.{u3} β (AddMonoid.toAddZeroClass.{u3} β (AddCommMonoid.toAddMonoid.{u3} β (OrderedAddCommMonoid.toAddCommMonoid.{u3} β _inst_2)))) (AddMonoidHomClass.toAddHomClass.{u1, u2, u3} F α β (AddMonoid.toAddZeroClass.{u2} α (SubNegMonoid.toAddMonoid.{u2} α (AddGroup.toSubNegMonoid.{u2} α (AddCommGroup.toAddGroup.{u2} α (OrderedAddCommGroup.toAddCommGroup.{u2} α _inst_1))))) (AddMonoid.toAddZeroClass.{u3} β (AddCommMonoid.toAddMonoid.{u3} β (OrderedAddCommMonoid.toAddCommMonoid.{u3} β _inst_2))) _inst_3))) f a) (OfNat.ofNat.{u3} β 0 (OfNat.mk.{u3} β 0 (Zero.zero.{u3} β (AddZeroClass.toHasZero.{u3} β (AddMonoid.toAddZeroClass.{u3} β (AddCommMonoid.toAddMonoid.{u3} β (OrderedAddCommMonoid.toAddCommMonoid.{u3} β _inst_2)))))))))
but is expected to have type
  forall {F : Type.{u1}} {α : Type.{u3}} {β : Type.{u2}} [_inst_1 : OrderedAddCommGroup.{u3} α] [_inst_2 : OrderedAddCommMonoid.{u2} β] [_inst_3 : AddMonoidHomClass.{u1, u3, u2} F α β (AddMonoid.toAddZeroClass.{u3} α (SubNegMonoid.toAddMonoid.{u3} α (AddGroup.toSubNegMonoid.{u3} α (AddCommGroup.toAddGroup.{u3} α (OrderedAddCommGroup.toAddCommGroup.{u3} α _inst_1))))) (AddMonoid.toAddZeroClass.{u2} β (AddCommMonoid.toAddMonoid.{u2} β (OrderedAddCommMonoid.toAddCommMonoid.{u2} β _inst_2)))] (f : F) [_inst_4 : CovariantClass.{u2, u2} β β (fun (x._@.Mathlib.Algebra.Order.Hom.Monoid._hyg.3217 : β) (x._@.Mathlib.Algebra.Order.Hom.Monoid._hyg.3219 : β) => HAdd.hAdd.{u2, u2, u2} β β β (instHAdd.{u2} β (AddZeroClass.toAdd.{u2} β (AddMonoid.toAddZeroClass.{u2} β (AddCommMonoid.toAddMonoid.{u2} β (OrderedAddCommMonoid.toAddCommMonoid.{u2} β _inst_2))))) x._@.Mathlib.Algebra.Order.Hom.Monoid._hyg.3217 x._@.Mathlib.Algebra.Order.Hom.Monoid._hyg.3219) (fun (x._@.Mathlib.Algebra.Order.Hom.Monoid._hyg.3232 : β) (x._@.Mathlib.Algebra.Order.Hom.Monoid._hyg.3234 : β) => LT.lt.{u2} β (Preorder.toLT.{u2} β (PartialOrder.toPreorder.{u2} β (OrderedAddCommMonoid.toPartialOrder.{u2} β _inst_2))) x._@.Mathlib.Algebra.Order.Hom.Monoid._hyg.3232 x._@.Mathlib.Algebra.Order.Hom.Monoid._hyg.3234)], Iff (StrictAnti.{u3, u2} α β (PartialOrder.toPreorder.{u3} α (OrderedAddCommGroup.toPartialOrder.{u3} α _inst_1)) (PartialOrder.toPreorder.{u2} β (OrderedAddCommMonoid.toPartialOrder.{u2} β _inst_2)) (FunLike.coe.{succ u1, succ u3, succ u2} F α (fun (_x : α) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : α) => β) _x) (AddHomClass.toFunLike.{u1, u3, u2} F α β (AddZeroClass.toAdd.{u3} α (AddMonoid.toAddZeroClass.{u3} α (SubNegMonoid.toAddMonoid.{u3} α (AddGroup.toSubNegMonoid.{u3} α (AddCommGroup.toAddGroup.{u3} α (OrderedAddCommGroup.toAddCommGroup.{u3} α _inst_1)))))) (AddZeroClass.toAdd.{u2} β (AddMonoid.toAddZeroClass.{u2} β (AddCommMonoid.toAddMonoid.{u2} β (OrderedAddCommMonoid.toAddCommMonoid.{u2} β _inst_2)))) (AddMonoidHomClass.toAddHomClass.{u1, u3, u2} F α β (AddMonoid.toAddZeroClass.{u3} α (SubNegMonoid.toAddMonoid.{u3} α (AddGroup.toSubNegMonoid.{u3} α (AddCommGroup.toAddGroup.{u3} α (OrderedAddCommGroup.toAddCommGroup.{u3} α _inst_1))))) (AddMonoid.toAddZeroClass.{u2} β (AddCommMonoid.toAddMonoid.{u2} β (OrderedAddCommMonoid.toAddCommMonoid.{u2} β _inst_2))) _inst_3)) f)) (forall (a : α), (LT.lt.{u3} α (Preorder.toLT.{u3} α (PartialOrder.toPreorder.{u3} α (OrderedAddCommGroup.toPartialOrder.{u3} α _inst_1))) (OfNat.ofNat.{u3} α 0 (Zero.toOfNat0.{u3} α (NegZeroClass.toZero.{u3} α (SubNegZeroMonoid.toNegZeroClass.{u3} α (SubtractionMonoid.toSubNegZeroMonoid.{u3} α (SubtractionCommMonoid.toSubtractionMonoid.{u3} α (AddCommGroup.toDivisionAddCommMonoid.{u3} α (OrderedAddCommGroup.toAddCommGroup.{u3} α _inst_1)))))))) a) -> (LT.lt.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : α) => β) a) (Preorder.toLT.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : α) => β) a) (PartialOrder.toPreorder.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : α) => β) a) (OrderedAddCommMonoid.toPartialOrder.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : α) => β) a) _inst_2))) (FunLike.coe.{succ u1, succ u3, succ u2} F α (fun (_x : α) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : α) => β) _x) (AddHomClass.toFunLike.{u1, u3, u2} F α β (AddZeroClass.toAdd.{u3} α (AddMonoid.toAddZeroClass.{u3} α (SubNegMonoid.toAddMonoid.{u3} α (AddGroup.toSubNegMonoid.{u3} α (AddCommGroup.toAddGroup.{u3} α (OrderedAddCommGroup.toAddCommGroup.{u3} α _inst_1)))))) (AddZeroClass.toAdd.{u2} β (AddMonoid.toAddZeroClass.{u2} β (AddCommMonoid.toAddMonoid.{u2} β (OrderedAddCommMonoid.toAddCommMonoid.{u2} β _inst_2)))) (AddMonoidHomClass.toAddHomClass.{u1, u3, u2} F α β (AddMonoid.toAddZeroClass.{u3} α (SubNegMonoid.toAddMonoid.{u3} α (AddGroup.toSubNegMonoid.{u3} α (AddCommGroup.toAddGroup.{u3} α (OrderedAddCommGroup.toAddCommGroup.{u3} α _inst_1))))) (AddMonoid.toAddZeroClass.{u2} β (AddCommMonoid.toAddMonoid.{u2} β (OrderedAddCommMonoid.toAddCommMonoid.{u2} β _inst_2))) _inst_3)) f a) (OfNat.ofNat.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : α) => β) a) 0 (Zero.toOfNat0.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : α) => β) a) (AddMonoid.toZero.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : α) => β) a) (AddCommMonoid.toAddMonoid.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : α) => β) a) (OrderedAddCommMonoid.toAddCommMonoid.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : α) => β) a) _inst_2)))))))
Case conversion may be inaccurate. Consider using '#align strict_anti_iff_map_neg strictAnti_iff_map_negₓ'. -/
theorem strictAnti_iff_map_neg : StrictAnti (f : α → β) ↔ ∀ a, 0 < a → f a < 0 :=
  strictMono_toDual_comp_iff.symm.trans <| strictMono_iff_map_pos _
#align strict_anti_iff_map_neg strictAnti_iff_map_neg

/- warning: strict_mono_iff_map_neg -> strictMono_iff_map_neg is a dubious translation:
lean 3 declaration is
  forall {F : Type.{u1}} {α : Type.{u2}} {β : Type.{u3}} [_inst_1 : OrderedAddCommGroup.{u2} α] [_inst_2 : OrderedAddCommMonoid.{u3} β] [_inst_3 : AddMonoidHomClass.{u1, u2, u3} F α β (AddMonoid.toAddZeroClass.{u2} α (SubNegMonoid.toAddMonoid.{u2} α (AddGroup.toSubNegMonoid.{u2} α (AddCommGroup.toAddGroup.{u2} α (OrderedAddCommGroup.toAddCommGroup.{u2} α _inst_1))))) (AddMonoid.toAddZeroClass.{u3} β (AddCommMonoid.toAddMonoid.{u3} β (OrderedAddCommMonoid.toAddCommMonoid.{u3} β _inst_2)))] (f : F) [_inst_4 : CovariantClass.{u3, u3} β β (HAdd.hAdd.{u3, u3, u3} β β β (instHAdd.{u3} β (AddZeroClass.toHasAdd.{u3} β (AddMonoid.toAddZeroClass.{u3} β (AddCommMonoid.toAddMonoid.{u3} β (OrderedAddCommMonoid.toAddCommMonoid.{u3} β _inst_2)))))) (LT.lt.{u3} β (Preorder.toLT.{u3} β (PartialOrder.toPreorder.{u3} β (OrderedAddCommMonoid.toPartialOrder.{u3} β _inst_2))))], Iff (StrictMono.{u2, u3} α β (PartialOrder.toPreorder.{u2} α (OrderedAddCommGroup.toPartialOrder.{u2} α _inst_1)) (PartialOrder.toPreorder.{u3} β (OrderedAddCommMonoid.toPartialOrder.{u3} β _inst_2)) (coeFn.{succ u1, max (succ u2) (succ u3)} F (fun (_x : F) => α -> β) (FunLike.hasCoeToFun.{succ u1, succ u2, succ u3} F α (fun (_x : α) => β) (AddHomClass.toFunLike.{u1, u2, u3} F α β (AddZeroClass.toHasAdd.{u2} α (AddMonoid.toAddZeroClass.{u2} α (SubNegMonoid.toAddMonoid.{u2} α (AddGroup.toSubNegMonoid.{u2} α (AddCommGroup.toAddGroup.{u2} α (OrderedAddCommGroup.toAddCommGroup.{u2} α _inst_1)))))) (AddZeroClass.toHasAdd.{u3} β (AddMonoid.toAddZeroClass.{u3} β (AddCommMonoid.toAddMonoid.{u3} β (OrderedAddCommMonoid.toAddCommMonoid.{u3} β _inst_2)))) (AddMonoidHomClass.toAddHomClass.{u1, u2, u3} F α β (AddMonoid.toAddZeroClass.{u2} α (SubNegMonoid.toAddMonoid.{u2} α (AddGroup.toSubNegMonoid.{u2} α (AddCommGroup.toAddGroup.{u2} α (OrderedAddCommGroup.toAddCommGroup.{u2} α _inst_1))))) (AddMonoid.toAddZeroClass.{u3} β (AddCommMonoid.toAddMonoid.{u3} β (OrderedAddCommMonoid.toAddCommMonoid.{u3} β _inst_2))) _inst_3))) f)) (forall (a : α), (LT.lt.{u2} α (Preorder.toLT.{u2} α (PartialOrder.toPreorder.{u2} α (OrderedAddCommGroup.toPartialOrder.{u2} α _inst_1))) a (OfNat.ofNat.{u2} α 0 (OfNat.mk.{u2} α 0 (Zero.zero.{u2} α (AddZeroClass.toHasZero.{u2} α (AddMonoid.toAddZeroClass.{u2} α (SubNegMonoid.toAddMonoid.{u2} α (AddGroup.toSubNegMonoid.{u2} α (AddCommGroup.toAddGroup.{u2} α (OrderedAddCommGroup.toAddCommGroup.{u2} α _inst_1)))))))))) -> (LT.lt.{u3} β (Preorder.toLT.{u3} β (PartialOrder.toPreorder.{u3} β (OrderedAddCommMonoid.toPartialOrder.{u3} β _inst_2))) (coeFn.{succ u1, max (succ u2) (succ u3)} F (fun (_x : F) => α -> β) (FunLike.hasCoeToFun.{succ u1, succ u2, succ u3} F α (fun (_x : α) => β) (AddHomClass.toFunLike.{u1, u2, u3} F α β (AddZeroClass.toHasAdd.{u2} α (AddMonoid.toAddZeroClass.{u2} α (SubNegMonoid.toAddMonoid.{u2} α (AddGroup.toSubNegMonoid.{u2} α (AddCommGroup.toAddGroup.{u2} α (OrderedAddCommGroup.toAddCommGroup.{u2} α _inst_1)))))) (AddZeroClass.toHasAdd.{u3} β (AddMonoid.toAddZeroClass.{u3} β (AddCommMonoid.toAddMonoid.{u3} β (OrderedAddCommMonoid.toAddCommMonoid.{u3} β _inst_2)))) (AddMonoidHomClass.toAddHomClass.{u1, u2, u3} F α β (AddMonoid.toAddZeroClass.{u2} α (SubNegMonoid.toAddMonoid.{u2} α (AddGroup.toSubNegMonoid.{u2} α (AddCommGroup.toAddGroup.{u2} α (OrderedAddCommGroup.toAddCommGroup.{u2} α _inst_1))))) (AddMonoid.toAddZeroClass.{u3} β (AddCommMonoid.toAddMonoid.{u3} β (OrderedAddCommMonoid.toAddCommMonoid.{u3} β _inst_2))) _inst_3))) f a) (OfNat.ofNat.{u3} β 0 (OfNat.mk.{u3} β 0 (Zero.zero.{u3} β (AddZeroClass.toHasZero.{u3} β (AddMonoid.toAddZeroClass.{u3} β (AddCommMonoid.toAddMonoid.{u3} β (OrderedAddCommMonoid.toAddCommMonoid.{u3} β _inst_2)))))))))
but is expected to have type
  forall {F : Type.{u1}} {α : Type.{u3}} {β : Type.{u2}} [_inst_1 : OrderedAddCommGroup.{u3} α] [_inst_2 : OrderedAddCommMonoid.{u2} β] [_inst_3 : AddMonoidHomClass.{u1, u3, u2} F α β (AddMonoid.toAddZeroClass.{u3} α (SubNegMonoid.toAddMonoid.{u3} α (AddGroup.toSubNegMonoid.{u3} α (AddCommGroup.toAddGroup.{u3} α (OrderedAddCommGroup.toAddCommGroup.{u3} α _inst_1))))) (AddMonoid.toAddZeroClass.{u2} β (AddCommMonoid.toAddMonoid.{u2} β (OrderedAddCommMonoid.toAddCommMonoid.{u2} β _inst_2)))] (f : F) [_inst_4 : CovariantClass.{u2, u2} β β (fun (x._@.Mathlib.Algebra.Order.Hom.Monoid._hyg.3302 : β) (x._@.Mathlib.Algebra.Order.Hom.Monoid._hyg.3304 : β) => HAdd.hAdd.{u2, u2, u2} β β β (instHAdd.{u2} β (AddZeroClass.toAdd.{u2} β (AddMonoid.toAddZeroClass.{u2} β (AddCommMonoid.toAddMonoid.{u2} β (OrderedAddCommMonoid.toAddCommMonoid.{u2} β _inst_2))))) x._@.Mathlib.Algebra.Order.Hom.Monoid._hyg.3302 x._@.Mathlib.Algebra.Order.Hom.Monoid._hyg.3304) (fun (x._@.Mathlib.Algebra.Order.Hom.Monoid._hyg.3317 : β) (x._@.Mathlib.Algebra.Order.Hom.Monoid._hyg.3319 : β) => LT.lt.{u2} β (Preorder.toLT.{u2} β (PartialOrder.toPreorder.{u2} β (OrderedAddCommMonoid.toPartialOrder.{u2} β _inst_2))) x._@.Mathlib.Algebra.Order.Hom.Monoid._hyg.3317 x._@.Mathlib.Algebra.Order.Hom.Monoid._hyg.3319)], Iff (StrictMono.{u3, u2} α β (PartialOrder.toPreorder.{u3} α (OrderedAddCommGroup.toPartialOrder.{u3} α _inst_1)) (PartialOrder.toPreorder.{u2} β (OrderedAddCommMonoid.toPartialOrder.{u2} β _inst_2)) (FunLike.coe.{succ u1, succ u3, succ u2} F α (fun (_x : α) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : α) => β) _x) (AddHomClass.toFunLike.{u1, u3, u2} F α β (AddZeroClass.toAdd.{u3} α (AddMonoid.toAddZeroClass.{u3} α (SubNegMonoid.toAddMonoid.{u3} α (AddGroup.toSubNegMonoid.{u3} α (AddCommGroup.toAddGroup.{u3} α (OrderedAddCommGroup.toAddCommGroup.{u3} α _inst_1)))))) (AddZeroClass.toAdd.{u2} β (AddMonoid.toAddZeroClass.{u2} β (AddCommMonoid.toAddMonoid.{u2} β (OrderedAddCommMonoid.toAddCommMonoid.{u2} β _inst_2)))) (AddMonoidHomClass.toAddHomClass.{u1, u3, u2} F α β (AddMonoid.toAddZeroClass.{u3} α (SubNegMonoid.toAddMonoid.{u3} α (AddGroup.toSubNegMonoid.{u3} α (AddCommGroup.toAddGroup.{u3} α (OrderedAddCommGroup.toAddCommGroup.{u3} α _inst_1))))) (AddMonoid.toAddZeroClass.{u2} β (AddCommMonoid.toAddMonoid.{u2} β (OrderedAddCommMonoid.toAddCommMonoid.{u2} β _inst_2))) _inst_3)) f)) (forall (a : α), (LT.lt.{u3} α (Preorder.toLT.{u3} α (PartialOrder.toPreorder.{u3} α (OrderedAddCommGroup.toPartialOrder.{u3} α _inst_1))) a (OfNat.ofNat.{u3} α 0 (Zero.toOfNat0.{u3} α (NegZeroClass.toZero.{u3} α (SubNegZeroMonoid.toNegZeroClass.{u3} α (SubtractionMonoid.toSubNegZeroMonoid.{u3} α (SubtractionCommMonoid.toSubtractionMonoid.{u3} α (AddCommGroup.toDivisionAddCommMonoid.{u3} α (OrderedAddCommGroup.toAddCommGroup.{u3} α _inst_1))))))))) -> (LT.lt.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : α) => β) a) (Preorder.toLT.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : α) => β) a) (PartialOrder.toPreorder.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : α) => β) a) (OrderedAddCommMonoid.toPartialOrder.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : α) => β) a) _inst_2))) (FunLike.coe.{succ u1, succ u3, succ u2} F α (fun (_x : α) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : α) => β) _x) (AddHomClass.toFunLike.{u1, u3, u2} F α β (AddZeroClass.toAdd.{u3} α (AddMonoid.toAddZeroClass.{u3} α (SubNegMonoid.toAddMonoid.{u3} α (AddGroup.toSubNegMonoid.{u3} α (AddCommGroup.toAddGroup.{u3} α (OrderedAddCommGroup.toAddCommGroup.{u3} α _inst_1)))))) (AddZeroClass.toAdd.{u2} β (AddMonoid.toAddZeroClass.{u2} β (AddCommMonoid.toAddMonoid.{u2} β (OrderedAddCommMonoid.toAddCommMonoid.{u2} β _inst_2)))) (AddMonoidHomClass.toAddHomClass.{u1, u3, u2} F α β (AddMonoid.toAddZeroClass.{u3} α (SubNegMonoid.toAddMonoid.{u3} α (AddGroup.toSubNegMonoid.{u3} α (AddCommGroup.toAddGroup.{u3} α (OrderedAddCommGroup.toAddCommGroup.{u3} α _inst_1))))) (AddMonoid.toAddZeroClass.{u2} β (AddCommMonoid.toAddMonoid.{u2} β (OrderedAddCommMonoid.toAddCommMonoid.{u2} β _inst_2))) _inst_3)) f a) (OfNat.ofNat.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : α) => β) a) 0 (Zero.toOfNat0.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : α) => β) a) (AddMonoid.toZero.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : α) => β) a) (AddCommMonoid.toAddMonoid.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : α) => β) a) (OrderedAddCommMonoid.toAddCommMonoid.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : α) => β) a) _inst_2)))))))
Case conversion may be inaccurate. Consider using '#align strict_mono_iff_map_neg strictMono_iff_map_negₓ'. -/
theorem strictMono_iff_map_neg : StrictMono (f : α → β) ↔ ∀ a < 0, f a < 0 :=
  strictAnti_comp_ofDual_iff.symm.trans <| strictAnti_iff_map_neg _
#align strict_mono_iff_map_neg strictMono_iff_map_neg

/- warning: strict_anti_iff_map_pos -> strictAnti_iff_map_pos is a dubious translation:
lean 3 declaration is
  forall {F : Type.{u1}} {α : Type.{u2}} {β : Type.{u3}} [_inst_1 : OrderedAddCommGroup.{u2} α] [_inst_2 : OrderedAddCommMonoid.{u3} β] [_inst_3 : AddMonoidHomClass.{u1, u2, u3} F α β (AddMonoid.toAddZeroClass.{u2} α (SubNegMonoid.toAddMonoid.{u2} α (AddGroup.toSubNegMonoid.{u2} α (AddCommGroup.toAddGroup.{u2} α (OrderedAddCommGroup.toAddCommGroup.{u2} α _inst_1))))) (AddMonoid.toAddZeroClass.{u3} β (AddCommMonoid.toAddMonoid.{u3} β (OrderedAddCommMonoid.toAddCommMonoid.{u3} β _inst_2)))] (f : F) [_inst_4 : CovariantClass.{u3, u3} β β (HAdd.hAdd.{u3, u3, u3} β β β (instHAdd.{u3} β (AddZeroClass.toHasAdd.{u3} β (AddMonoid.toAddZeroClass.{u3} β (AddCommMonoid.toAddMonoid.{u3} β (OrderedAddCommMonoid.toAddCommMonoid.{u3} β _inst_2)))))) (LT.lt.{u3} β (Preorder.toLT.{u3} β (PartialOrder.toPreorder.{u3} β (OrderedAddCommMonoid.toPartialOrder.{u3} β _inst_2))))], Iff (StrictAnti.{u2, u3} α β (PartialOrder.toPreorder.{u2} α (OrderedAddCommGroup.toPartialOrder.{u2} α _inst_1)) (PartialOrder.toPreorder.{u3} β (OrderedAddCommMonoid.toPartialOrder.{u3} β _inst_2)) (coeFn.{succ u1, max (succ u2) (succ u3)} F (fun (_x : F) => α -> β) (FunLike.hasCoeToFun.{succ u1, succ u2, succ u3} F α (fun (_x : α) => β) (AddHomClass.toFunLike.{u1, u2, u3} F α β (AddZeroClass.toHasAdd.{u2} α (AddMonoid.toAddZeroClass.{u2} α (SubNegMonoid.toAddMonoid.{u2} α (AddGroup.toSubNegMonoid.{u2} α (AddCommGroup.toAddGroup.{u2} α (OrderedAddCommGroup.toAddCommGroup.{u2} α _inst_1)))))) (AddZeroClass.toHasAdd.{u3} β (AddMonoid.toAddZeroClass.{u3} β (AddCommMonoid.toAddMonoid.{u3} β (OrderedAddCommMonoid.toAddCommMonoid.{u3} β _inst_2)))) (AddMonoidHomClass.toAddHomClass.{u1, u2, u3} F α β (AddMonoid.toAddZeroClass.{u2} α (SubNegMonoid.toAddMonoid.{u2} α (AddGroup.toSubNegMonoid.{u2} α (AddCommGroup.toAddGroup.{u2} α (OrderedAddCommGroup.toAddCommGroup.{u2} α _inst_1))))) (AddMonoid.toAddZeroClass.{u3} β (AddCommMonoid.toAddMonoid.{u3} β (OrderedAddCommMonoid.toAddCommMonoid.{u3} β _inst_2))) _inst_3))) f)) (forall (a : α), (LT.lt.{u2} α (Preorder.toLT.{u2} α (PartialOrder.toPreorder.{u2} α (OrderedAddCommGroup.toPartialOrder.{u2} α _inst_1))) a (OfNat.ofNat.{u2} α 0 (OfNat.mk.{u2} α 0 (Zero.zero.{u2} α (AddZeroClass.toHasZero.{u2} α (AddMonoid.toAddZeroClass.{u2} α (SubNegMonoid.toAddMonoid.{u2} α (AddGroup.toSubNegMonoid.{u2} α (AddCommGroup.toAddGroup.{u2} α (OrderedAddCommGroup.toAddCommGroup.{u2} α _inst_1)))))))))) -> (LT.lt.{u3} β (Preorder.toLT.{u3} β (PartialOrder.toPreorder.{u3} β (OrderedAddCommMonoid.toPartialOrder.{u3} β _inst_2))) (OfNat.ofNat.{u3} β 0 (OfNat.mk.{u3} β 0 (Zero.zero.{u3} β (AddZeroClass.toHasZero.{u3} β (AddMonoid.toAddZeroClass.{u3} β (AddCommMonoid.toAddMonoid.{u3} β (OrderedAddCommMonoid.toAddCommMonoid.{u3} β _inst_2))))))) (coeFn.{succ u1, max (succ u2) (succ u3)} F (fun (_x : F) => α -> β) (FunLike.hasCoeToFun.{succ u1, succ u2, succ u3} F α (fun (_x : α) => β) (AddHomClass.toFunLike.{u1, u2, u3} F α β (AddZeroClass.toHasAdd.{u2} α (AddMonoid.toAddZeroClass.{u2} α (SubNegMonoid.toAddMonoid.{u2} α (AddGroup.toSubNegMonoid.{u2} α (AddCommGroup.toAddGroup.{u2} α (OrderedAddCommGroup.toAddCommGroup.{u2} α _inst_1)))))) (AddZeroClass.toHasAdd.{u3} β (AddMonoid.toAddZeroClass.{u3} β (AddCommMonoid.toAddMonoid.{u3} β (OrderedAddCommMonoid.toAddCommMonoid.{u3} β _inst_2)))) (AddMonoidHomClass.toAddHomClass.{u1, u2, u3} F α β (AddMonoid.toAddZeroClass.{u2} α (SubNegMonoid.toAddMonoid.{u2} α (AddGroup.toSubNegMonoid.{u2} α (AddCommGroup.toAddGroup.{u2} α (OrderedAddCommGroup.toAddCommGroup.{u2} α _inst_1))))) (AddMonoid.toAddZeroClass.{u3} β (AddCommMonoid.toAddMonoid.{u3} β (OrderedAddCommMonoid.toAddCommMonoid.{u3} β _inst_2))) _inst_3))) f a)))
but is expected to have type
  forall {F : Type.{u1}} {α : Type.{u3}} {β : Type.{u2}} [_inst_1 : OrderedAddCommGroup.{u3} α] [_inst_2 : OrderedAddCommMonoid.{u2} β] [_inst_3 : AddMonoidHomClass.{u1, u3, u2} F α β (AddMonoid.toAddZeroClass.{u3} α (SubNegMonoid.toAddMonoid.{u3} α (AddGroup.toSubNegMonoid.{u3} α (AddCommGroup.toAddGroup.{u3} α (OrderedAddCommGroup.toAddCommGroup.{u3} α _inst_1))))) (AddMonoid.toAddZeroClass.{u2} β (AddCommMonoid.toAddMonoid.{u2} β (OrderedAddCommMonoid.toAddCommMonoid.{u2} β _inst_2)))] (f : F) [_inst_4 : CovariantClass.{u2, u2} β β (fun (x._@.Mathlib.Algebra.Order.Hom.Monoid._hyg.3393 : β) (x._@.Mathlib.Algebra.Order.Hom.Monoid._hyg.3395 : β) => HAdd.hAdd.{u2, u2, u2} β β β (instHAdd.{u2} β (AddZeroClass.toAdd.{u2} β (AddMonoid.toAddZeroClass.{u2} β (AddCommMonoid.toAddMonoid.{u2} β (OrderedAddCommMonoid.toAddCommMonoid.{u2} β _inst_2))))) x._@.Mathlib.Algebra.Order.Hom.Monoid._hyg.3393 x._@.Mathlib.Algebra.Order.Hom.Monoid._hyg.3395) (fun (x._@.Mathlib.Algebra.Order.Hom.Monoid._hyg.3408 : β) (x._@.Mathlib.Algebra.Order.Hom.Monoid._hyg.3410 : β) => LT.lt.{u2} β (Preorder.toLT.{u2} β (PartialOrder.toPreorder.{u2} β (OrderedAddCommMonoid.toPartialOrder.{u2} β _inst_2))) x._@.Mathlib.Algebra.Order.Hom.Monoid._hyg.3408 x._@.Mathlib.Algebra.Order.Hom.Monoid._hyg.3410)], Iff (StrictAnti.{u3, u2} α β (PartialOrder.toPreorder.{u3} α (OrderedAddCommGroup.toPartialOrder.{u3} α _inst_1)) (PartialOrder.toPreorder.{u2} β (OrderedAddCommMonoid.toPartialOrder.{u2} β _inst_2)) (FunLike.coe.{succ u1, succ u3, succ u2} F α (fun (_x : α) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : α) => β) _x) (AddHomClass.toFunLike.{u1, u3, u2} F α β (AddZeroClass.toAdd.{u3} α (AddMonoid.toAddZeroClass.{u3} α (SubNegMonoid.toAddMonoid.{u3} α (AddGroup.toSubNegMonoid.{u3} α (AddCommGroup.toAddGroup.{u3} α (OrderedAddCommGroup.toAddCommGroup.{u3} α _inst_1)))))) (AddZeroClass.toAdd.{u2} β (AddMonoid.toAddZeroClass.{u2} β (AddCommMonoid.toAddMonoid.{u2} β (OrderedAddCommMonoid.toAddCommMonoid.{u2} β _inst_2)))) (AddMonoidHomClass.toAddHomClass.{u1, u3, u2} F α β (AddMonoid.toAddZeroClass.{u3} α (SubNegMonoid.toAddMonoid.{u3} α (AddGroup.toSubNegMonoid.{u3} α (AddCommGroup.toAddGroup.{u3} α (OrderedAddCommGroup.toAddCommGroup.{u3} α _inst_1))))) (AddMonoid.toAddZeroClass.{u2} β (AddCommMonoid.toAddMonoid.{u2} β (OrderedAddCommMonoid.toAddCommMonoid.{u2} β _inst_2))) _inst_3)) f)) (forall (a : α), (LT.lt.{u3} α (Preorder.toLT.{u3} α (PartialOrder.toPreorder.{u3} α (OrderedAddCommGroup.toPartialOrder.{u3} α _inst_1))) a (OfNat.ofNat.{u3} α 0 (Zero.toOfNat0.{u3} α (NegZeroClass.toZero.{u3} α (SubNegZeroMonoid.toNegZeroClass.{u3} α (SubtractionMonoid.toSubNegZeroMonoid.{u3} α (SubtractionCommMonoid.toSubtractionMonoid.{u3} α (AddCommGroup.toDivisionAddCommMonoid.{u3} α (OrderedAddCommGroup.toAddCommGroup.{u3} α _inst_1))))))))) -> (LT.lt.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : α) => β) a) (Preorder.toLT.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : α) => β) a) (PartialOrder.toPreorder.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : α) => β) a) (OrderedAddCommMonoid.toPartialOrder.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : α) => β) a) _inst_2))) (OfNat.ofNat.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : α) => β) a) 0 (Zero.toOfNat0.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : α) => β) a) (AddMonoid.toZero.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : α) => β) a) (AddCommMonoid.toAddMonoid.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : α) => β) a) (OrderedAddCommMonoid.toAddCommMonoid.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : α) => β) a) _inst_2))))) (FunLike.coe.{succ u1, succ u3, succ u2} F α (fun (_x : α) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : α) => β) _x) (AddHomClass.toFunLike.{u1, u3, u2} F α β (AddZeroClass.toAdd.{u3} α (AddMonoid.toAddZeroClass.{u3} α (SubNegMonoid.toAddMonoid.{u3} α (AddGroup.toSubNegMonoid.{u3} α (AddCommGroup.toAddGroup.{u3} α (OrderedAddCommGroup.toAddCommGroup.{u3} α _inst_1)))))) (AddZeroClass.toAdd.{u2} β (AddMonoid.toAddZeroClass.{u2} β (AddCommMonoid.toAddMonoid.{u2} β (OrderedAddCommMonoid.toAddCommMonoid.{u2} β _inst_2)))) (AddMonoidHomClass.toAddHomClass.{u1, u3, u2} F α β (AddMonoid.toAddZeroClass.{u3} α (SubNegMonoid.toAddMonoid.{u3} α (AddGroup.toSubNegMonoid.{u3} α (AddCommGroup.toAddGroup.{u3} α (OrderedAddCommGroup.toAddCommGroup.{u3} α _inst_1))))) (AddMonoid.toAddZeroClass.{u2} β (AddCommMonoid.toAddMonoid.{u2} β (OrderedAddCommMonoid.toAddCommMonoid.{u2} β _inst_2))) _inst_3)) f a)))
Case conversion may be inaccurate. Consider using '#align strict_anti_iff_map_pos strictAnti_iff_map_posₓ'. -/
theorem strictAnti_iff_map_pos : StrictAnti (f : α → β) ↔ ∀ a < 0, 0 < f a :=
  strictMono_comp_ofDual_iff.symm.trans <| strictMono_iff_map_pos _
#align strict_anti_iff_map_pos strictAnti_iff_map_pos

end OrderedAddCommGroup

namespace OrderMonoidHom

section Preorder

variable [Preorder α] [Preorder β] [Preorder γ] [Preorder δ] [MulOneClass α] [MulOneClass β]
  [MulOneClass γ] [MulOneClass δ] {f g : α →*o β}

@[to_additive]
instance : OrderMonoidHomClass (α →*o β) α β
    where
  coe f := f.toFun
  coe_injective' f g h := by
    obtain ⟨⟨_, _⟩, _⟩ := f
    obtain ⟨⟨_, _⟩, _⟩ := g
    congr
  map_mul f := f.map_mul'
  map_one f := f.map_one'
  Monotone f := f.monotone'

/-- Helper instance for when there's too many metavariables to apply `fun_like.has_coe_to_fun`
directly. -/
@[to_additive
      "Helper instance for when there's too many metavariables to apply\n`fun_like.has_coe_to_fun` directly."]
instance : CoeFun (α →*o β) fun _ => α → β :=
  FunLike.hasCoeToFun

/- warning: order_monoid_hom.ext -> OrderMonoidHom.ext is a dubious translation:
lean 3 declaration is
  forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : Preorder.{u1} α] [_inst_2 : Preorder.{u2} β] [_inst_5 : MulOneClass.{u1} α] [_inst_6 : MulOneClass.{u2} β] {f : OrderMonoidHom.{u1, u2} α β _inst_1 _inst_2 _inst_5 _inst_6} {g : OrderMonoidHom.{u1, u2} α β _inst_1 _inst_2 _inst_5 _inst_6}, (forall (a : α), Eq.{succ u2} β (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (OrderMonoidHom.{u1, u2} α β _inst_1 _inst_2 _inst_5 _inst_6) (fun (_x : OrderMonoidHom.{u1, u2} α β _inst_1 _inst_2 _inst_5 _inst_6) => α -> β) (OrderMonoidHom.hasCoeToFun.{u1, u2} α β _inst_1 _inst_2 _inst_5 _inst_6) f a) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (OrderMonoidHom.{u1, u2} α β _inst_1 _inst_2 _inst_5 _inst_6) (fun (_x : OrderMonoidHom.{u1, u2} α β _inst_1 _inst_2 _inst_5 _inst_6) => α -> β) (OrderMonoidHom.hasCoeToFun.{u1, u2} α β _inst_1 _inst_2 _inst_5 _inst_6) g a)) -> (Eq.{max (succ u1) (succ u2)} (OrderMonoidHom.{u1, u2} α β _inst_1 _inst_2 _inst_5 _inst_6) f g)
but is expected to have type
  forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : Preorder.{u1} α] [_inst_2 : Preorder.{u2} β] [_inst_5 : MulOneClass.{u1} α] [_inst_6 : MulOneClass.{u2} β] {f : OrderMonoidHom.{u1, u2} α β _inst_1 _inst_2 _inst_5 _inst_6} {g : OrderMonoidHom.{u1, u2} α β _inst_1 _inst_2 _inst_5 _inst_6}, (forall (a : α), Eq.{succ u2} ((fun (x._@.Mathlib.Order.RelIso.Basic._hyg.867 : α) => β) a) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (OrderMonoidHom.{u1, u2} α β _inst_1 _inst_2 _inst_5 _inst_6) α (fun (_x : α) => (fun (x._@.Mathlib.Order.RelIso.Basic._hyg.867 : α) => β) _x) (RelHomClass.toFunLike.{max u1 u2, u1, u2} (OrderMonoidHom.{u1, u2} α β _inst_1 _inst_2 _inst_5 _inst_6) α β (fun (x._@.Mathlib.Order.Hom.Basic._hyg.1896 : α) (x._@.Mathlib.Order.Hom.Basic._hyg.1898 : α) => LE.le.{u1} α (Preorder.toLE.{u1} α _inst_1) x._@.Mathlib.Order.Hom.Basic._hyg.1896 x._@.Mathlib.Order.Hom.Basic._hyg.1898) (fun (x._@.Mathlib.Order.Hom.Basic._hyg.1918 : β) (x._@.Mathlib.Order.Hom.Basic._hyg.1920 : β) => LE.le.{u2} β (Preorder.toLE.{u2} β _inst_2) x._@.Mathlib.Order.Hom.Basic._hyg.1918 x._@.Mathlib.Order.Hom.Basic._hyg.1920) (OrderMonoidHomClass.toOrderHomClass.{max u1 u2, u1, u2} (OrderMonoidHom.{u1, u2} α β _inst_1 _inst_2 _inst_5 _inst_6) α β _inst_1 _inst_2 _inst_5 _inst_6 (OrderMonoidHom.instOrderMonoidHomClassOrderMonoidHom.{u1, u2} α β _inst_1 _inst_2 _inst_5 _inst_6))) f a) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (OrderMonoidHom.{u1, u2} α β _inst_1 _inst_2 _inst_5 _inst_6) α (fun (_x : α) => (fun (x._@.Mathlib.Order.RelIso.Basic._hyg.867 : α) => β) _x) (RelHomClass.toFunLike.{max u1 u2, u1, u2} (OrderMonoidHom.{u1, u2} α β _inst_1 _inst_2 _inst_5 _inst_6) α β (fun (x._@.Mathlib.Order.Hom.Basic._hyg.1896 : α) (x._@.Mathlib.Order.Hom.Basic._hyg.1898 : α) => LE.le.{u1} α (Preorder.toLE.{u1} α _inst_1) x._@.Mathlib.Order.Hom.Basic._hyg.1896 x._@.Mathlib.Order.Hom.Basic._hyg.1898) (fun (x._@.Mathlib.Order.Hom.Basic._hyg.1918 : β) (x._@.Mathlib.Order.Hom.Basic._hyg.1920 : β) => LE.le.{u2} β (Preorder.toLE.{u2} β _inst_2) x._@.Mathlib.Order.Hom.Basic._hyg.1918 x._@.Mathlib.Order.Hom.Basic._hyg.1920) (OrderMonoidHomClass.toOrderHomClass.{max u1 u2, u1, u2} (OrderMonoidHom.{u1, u2} α β _inst_1 _inst_2 _inst_5 _inst_6) α β _inst_1 _inst_2 _inst_5 _inst_6 (OrderMonoidHom.instOrderMonoidHomClassOrderMonoidHom.{u1, u2} α β _inst_1 _inst_2 _inst_5 _inst_6))) g a)) -> (Eq.{max (succ u1) (succ u2)} (OrderMonoidHom.{u1, u2} α β _inst_1 _inst_2 _inst_5 _inst_6) f g)
Case conversion may be inaccurate. Consider using '#align order_monoid_hom.ext OrderMonoidHom.extₓ'. -/
-- Other lemmas should be accessed through the `fun_like` API
@[ext, to_additive]
theorem ext (h : ∀ a, f a = g a) : f = g :=
  FunLike.ext f g h
#align order_monoid_hom.ext OrderMonoidHom.ext
#align order_add_monoid_hom.ext OrderAddMonoidHom.ext

/- warning: order_monoid_hom.to_fun_eq_coe -> OrderMonoidHom.toFun_eq_coe is a dubious translation:
lean 3 declaration is
  forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : Preorder.{u1} α] [_inst_2 : Preorder.{u2} β] [_inst_5 : MulOneClass.{u1} α] [_inst_6 : MulOneClass.{u2} β] (f : OrderMonoidHom.{u1, u2} α β _inst_1 _inst_2 _inst_5 _inst_6), Eq.{max (succ u1) (succ u2)} (α -> β) (MonoidHom.toFun.{u1, u2} α β _inst_5 _inst_6 (OrderMonoidHom.toMonoidHom.{u1, u2} α β _inst_1 _inst_2 _inst_5 _inst_6 f)) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (OrderMonoidHom.{u1, u2} α β _inst_1 _inst_2 _inst_5 _inst_6) (fun (_x : OrderMonoidHom.{u1, u2} α β _inst_1 _inst_2 _inst_5 _inst_6) => α -> β) (OrderMonoidHom.hasCoeToFun.{u1, u2} α β _inst_1 _inst_2 _inst_5 _inst_6) f)
but is expected to have type
  forall {α : Type.{u2}} {β : Type.{u1}} [_inst_1 : Preorder.{u2} α] [_inst_2 : Preorder.{u1} β] [_inst_5 : MulOneClass.{u2} α] [_inst_6 : MulOneClass.{u1} β] (f : OrderMonoidHom.{u2, u1} α β _inst_1 _inst_2 _inst_5 _inst_6), Eq.{max (succ u2) (succ u1)} (α -> β) (OneHom.toFun.{u2, u1} α β (MulOneClass.toOne.{u2} α _inst_5) (MulOneClass.toOne.{u1} β _inst_6) (MonoidHom.toOneHom.{u2, u1} α β _inst_5 _inst_6 (OrderMonoidHom.toMonoidHom.{u2, u1} α β _inst_1 _inst_2 _inst_5 _inst_6 f))) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (OrderMonoidHom.{u2, u1} α β _inst_1 _inst_2 _inst_5 _inst_6) α (fun (_x : α) => (fun (x._@.Mathlib.Order.RelIso.Basic._hyg.867 : α) => β) _x) (RelHomClass.toFunLike.{max u2 u1, u2, u1} (OrderMonoidHom.{u2, u1} α β _inst_1 _inst_2 _inst_5 _inst_6) α β (fun (x._@.Mathlib.Order.Hom.Basic._hyg.1896 : α) (x._@.Mathlib.Order.Hom.Basic._hyg.1898 : α) => LE.le.{u2} α (Preorder.toLE.{u2} α _inst_1) x._@.Mathlib.Order.Hom.Basic._hyg.1896 x._@.Mathlib.Order.Hom.Basic._hyg.1898) (fun (x._@.Mathlib.Order.Hom.Basic._hyg.1918 : β) (x._@.Mathlib.Order.Hom.Basic._hyg.1920 : β) => LE.le.{u1} β (Preorder.toLE.{u1} β _inst_2) x._@.Mathlib.Order.Hom.Basic._hyg.1918 x._@.Mathlib.Order.Hom.Basic._hyg.1920) (OrderMonoidHomClass.toOrderHomClass.{max u2 u1, u2, u1} (OrderMonoidHom.{u2, u1} α β _inst_1 _inst_2 _inst_5 _inst_6) α β _inst_1 _inst_2 _inst_5 _inst_6 (OrderMonoidHom.instOrderMonoidHomClassOrderMonoidHom.{u2, u1} α β _inst_1 _inst_2 _inst_5 _inst_6))) f)
Case conversion may be inaccurate. Consider using '#align order_monoid_hom.to_fun_eq_coe OrderMonoidHom.toFun_eq_coeₓ'. -/
@[to_additive]
theorem toFun_eq_coe (f : α →*o β) : f.toFun = (f : α → β) :=
  rfl
#align order_monoid_hom.to_fun_eq_coe OrderMonoidHom.toFun_eq_coe
#align order_add_monoid_hom.to_fun_eq_coe OrderAddMonoidHom.toFun_eq_coe

/- warning: order_monoid_hom.coe_mk -> OrderMonoidHom.coe_mk is a dubious translation:
lean 3 declaration is
  forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : Preorder.{u1} α] [_inst_2 : Preorder.{u2} β] [_inst_5 : MulOneClass.{u1} α] [_inst_6 : MulOneClass.{u2} β] (f : MonoidHom.{u1, u2} α β _inst_5 _inst_6) (h : Monotone.{u1, u2} α β _inst_1 _inst_2 (MonoidHom.toFun.{u1, u2} α β _inst_5 _inst_6 f)), Eq.{max (succ u1) (succ u2)} ((fun (_x : OrderMonoidHom.{u1, u2} α β _inst_1 _inst_2 _inst_5 _inst_6) => α -> β) (OrderMonoidHom.mk.{u1, u2} α β _inst_1 _inst_2 _inst_5 _inst_6 f h)) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (OrderMonoidHom.{u1, u2} α β _inst_1 _inst_2 _inst_5 _inst_6) (fun (_x : OrderMonoidHom.{u1, u2} α β _inst_1 _inst_2 _inst_5 _inst_6) => α -> β) (OrderMonoidHom.hasCoeToFun.{u1, u2} α β _inst_1 _inst_2 _inst_5 _inst_6) (OrderMonoidHom.mk.{u1, u2} α β _inst_1 _inst_2 _inst_5 _inst_6 f h)) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} α β _inst_5 _inst_6) (fun (_x : MonoidHom.{u1, u2} α β _inst_5 _inst_6) => α -> β) (MonoidHom.hasCoeToFun.{u1, u2} α β _inst_5 _inst_6) f)
but is expected to have type
  forall {α : Type.{u2}} {β : Type.{u1}} [_inst_1 : Preorder.{u2} α] [_inst_2 : Preorder.{u1} β] [_inst_5 : MulOneClass.{u2} α] [_inst_6 : MulOneClass.{u1} β] (f : MonoidHom.{u2, u1} α β _inst_5 _inst_6) (h : Monotone.{u2, u1} α β _inst_1 _inst_2 (OneHom.toFun.{u2, u1} α β (MulOneClass.toOne.{u2} α _inst_5) (MulOneClass.toOne.{u1} β _inst_6) (MonoidHom.toOneHom.{u2, u1} α β _inst_5 _inst_6 f))), Eq.{max (succ u2) (succ u1)} (forall (a : α), (fun (x._@.Mathlib.Order.RelIso.Basic._hyg.867 : α) => β) a) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (OrderMonoidHom.{u2, u1} α β _inst_1 _inst_2 _inst_5 _inst_6) α (fun (_x : α) => (fun (x._@.Mathlib.Order.RelIso.Basic._hyg.867 : α) => β) _x) (RelHomClass.toFunLike.{max u2 u1, u2, u1} (OrderMonoidHom.{u2, u1} α β _inst_1 _inst_2 _inst_5 _inst_6) α β (fun (x._@.Mathlib.Order.Hom.Basic._hyg.1896 : α) (x._@.Mathlib.Order.Hom.Basic._hyg.1898 : α) => LE.le.{u2} α (Preorder.toLE.{u2} α _inst_1) x._@.Mathlib.Order.Hom.Basic._hyg.1896 x._@.Mathlib.Order.Hom.Basic._hyg.1898) (fun (x._@.Mathlib.Order.Hom.Basic._hyg.1918 : β) (x._@.Mathlib.Order.Hom.Basic._hyg.1920 : β) => LE.le.{u1} β (Preorder.toLE.{u1} β _inst_2) x._@.Mathlib.Order.Hom.Basic._hyg.1918 x._@.Mathlib.Order.Hom.Basic._hyg.1920) (OrderMonoidHomClass.toOrderHomClass.{max u2 u1, u2, u1} (OrderMonoidHom.{u2, u1} α β _inst_1 _inst_2 _inst_5 _inst_6) α β _inst_1 _inst_2 _inst_5 _inst_6 (OrderMonoidHom.instOrderMonoidHomClassOrderMonoidHom.{u2, u1} α β _inst_1 _inst_2 _inst_5 _inst_6))) (OrderMonoidHom.mk.{u2, u1} α β _inst_1 _inst_2 _inst_5 _inst_6 f h)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} α β _inst_5 _inst_6) α (fun (_x : α) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : α) => β) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} α β _inst_5 _inst_6) α β (MulOneClass.toMul.{u2} α _inst_5) (MulOneClass.toMul.{u1} β _inst_6) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} α β _inst_5 _inst_6) α β _inst_5 _inst_6 (MonoidHom.monoidHomClass.{u2, u1} α β _inst_5 _inst_6))) f)
Case conversion may be inaccurate. Consider using '#align order_monoid_hom.coe_mk OrderMonoidHom.coe_mkₓ'. -/
@[simp, to_additive]
theorem coe_mk (f : α →* β) (h) : (OrderMonoidHom.mk f h : α → β) = f :=
  rfl
#align order_monoid_hom.coe_mk OrderMonoidHom.coe_mk
#align order_add_monoid_hom.coe_mk OrderAddMonoidHom.coe_mk

/- warning: order_monoid_hom.mk_coe -> OrderMonoidHom.mk_coe is a dubious translation:
lean 3 declaration is
  forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : Preorder.{u1} α] [_inst_2 : Preorder.{u2} β] [_inst_5 : MulOneClass.{u1} α] [_inst_6 : MulOneClass.{u2} β] (f : OrderMonoidHom.{u1, u2} α β _inst_1 _inst_2 _inst_5 _inst_6) (h : Monotone.{u1, u2} α β _inst_1 _inst_2 (MonoidHom.toFun.{u1, u2} α β _inst_5 _inst_6 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (OrderMonoidHom.{u1, u2} α β _inst_1 _inst_2 _inst_5 _inst_6) (MonoidHom.{u1, u2} α β _inst_5 _inst_6) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (OrderMonoidHom.{u1, u2} α β _inst_1 _inst_2 _inst_5 _inst_6) (MonoidHom.{u1, u2} α β _inst_5 _inst_6) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (OrderMonoidHom.{u1, u2} α β _inst_1 _inst_2 _inst_5 _inst_6) (MonoidHom.{u1, u2} α β _inst_5 _inst_6) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} α β (OrderMonoidHom.{u1, u2} α β _inst_1 _inst_2 _inst_5 _inst_6) _inst_5 _inst_6 (OrderMonoidHomClass.toMonoidHomClass.{max u1 u2, u1, u2} (OrderMonoidHom.{u1, u2} α β _inst_1 _inst_2 _inst_5 _inst_6) α β _inst_1 _inst_2 _inst_5 _inst_6 (OrderMonoidHom.orderMonoidHomClass.{u1, u2} α β _inst_1 _inst_2 _inst_5 _inst_6))))) f))), Eq.{max (succ u1) (succ u2)} (OrderMonoidHom.{u1, u2} α β _inst_1 _inst_2 _inst_5 _inst_6) (OrderMonoidHom.mk.{u1, u2} α β _inst_1 _inst_2 _inst_5 _inst_6 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (OrderMonoidHom.{u1, u2} α β _inst_1 _inst_2 _inst_5 _inst_6) (MonoidHom.{u1, u2} α β _inst_5 _inst_6) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (OrderMonoidHom.{u1, u2} α β _inst_1 _inst_2 _inst_5 _inst_6) (MonoidHom.{u1, u2} α β _inst_5 _inst_6) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (OrderMonoidHom.{u1, u2} α β _inst_1 _inst_2 _inst_5 _inst_6) (MonoidHom.{u1, u2} α β _inst_5 _inst_6) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} α β (OrderMonoidHom.{u1, u2} α β _inst_1 _inst_2 _inst_5 _inst_6) _inst_5 _inst_6 (OrderMonoidHomClass.toMonoidHomClass.{max u1 u2, u1, u2} (OrderMonoidHom.{u1, u2} α β _inst_1 _inst_2 _inst_5 _inst_6) α β _inst_1 _inst_2 _inst_5 _inst_6 (OrderMonoidHom.orderMonoidHomClass.{u1, u2} α β _inst_1 _inst_2 _inst_5 _inst_6))))) f) h) f
but is expected to have type
  forall {α : Type.{u2}} {β : Type.{u1}} [_inst_1 : Preorder.{u2} α] [_inst_2 : Preorder.{u1} β] [_inst_5 : MulOneClass.{u2} α] [_inst_6 : MulOneClass.{u1} β] (f : OrderMonoidHom.{u2, u1} α β _inst_1 _inst_2 _inst_5 _inst_6) (h : Monotone.{u2, u1} α β _inst_1 _inst_2 (OneHom.toFun.{u2, u1} α β (MulOneClass.toOne.{u2} α _inst_5) (MulOneClass.toOne.{u1} β _inst_6) (MonoidHom.toOneHom.{u2, u1} α β _inst_5 _inst_6 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} α β (OrderMonoidHom.{u2, u1} α β _inst_1 _inst_2 _inst_5 _inst_6) _inst_5 _inst_6 (OrderMonoidHomClass.toMonoidHomClass.{max u2 u1, u2, u1} (OrderMonoidHom.{u2, u1} α β _inst_1 _inst_2 _inst_5 _inst_6) α β _inst_1 _inst_2 _inst_5 _inst_6 (OrderMonoidHom.instOrderMonoidHomClassOrderMonoidHom.{u2, u1} α β _inst_1 _inst_2 _inst_5 _inst_6)) f)))), Eq.{max (succ u2) (succ u1)} (OrderMonoidHom.{u2, u1} α β _inst_1 _inst_2 _inst_5 _inst_6) (OrderMonoidHom.mk.{u2, u1} α β _inst_1 _inst_2 _inst_5 _inst_6 (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} α β (OrderMonoidHom.{u2, u1} α β _inst_1 _inst_2 _inst_5 _inst_6) _inst_5 _inst_6 (OrderMonoidHomClass.toMonoidHomClass.{max u2 u1, u2, u1} (OrderMonoidHom.{u2, u1} α β _inst_1 _inst_2 _inst_5 _inst_6) α β _inst_1 _inst_2 _inst_5 _inst_6 (OrderMonoidHom.instOrderMonoidHomClassOrderMonoidHom.{u2, u1} α β _inst_1 _inst_2 _inst_5 _inst_6)) f) h) f
Case conversion may be inaccurate. Consider using '#align order_monoid_hom.mk_coe OrderMonoidHom.mk_coeₓ'. -/
@[simp, to_additive]
theorem mk_coe (f : α →*o β) (h) : OrderMonoidHom.mk (f : α →* β) h = f :=
  by
  ext
  rfl
#align order_monoid_hom.mk_coe OrderMonoidHom.mk_coe
#align order_add_monoid_hom.mk_coe OrderAddMonoidHom.mk_coe

#print OrderMonoidHom.toOrderHom /-
/-- Reinterpret an ordered monoid homomorphism as an order homomorphism. -/
@[to_additive "Reinterpret an ordered additive monoid homomorphism as an order homomorphism."]
def toOrderHom (f : α →*o β) : α →o β :=
  { f with }
#align order_monoid_hom.to_order_hom OrderMonoidHom.toOrderHom
#align order_add_monoid_hom.to_order_hom OrderAddMonoidHom.toOrderHom
-/

/- warning: order_monoid_hom.coe_monoid_hom -> OrderMonoidHom.coe_monoidHom is a dubious translation:
lean 3 declaration is
  forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : Preorder.{u1} α] [_inst_2 : Preorder.{u2} β] [_inst_5 : MulOneClass.{u1} α] [_inst_6 : MulOneClass.{u2} β] (f : OrderMonoidHom.{u1, u2} α β _inst_1 _inst_2 _inst_5 _inst_6), Eq.{max (succ u1) (succ u2)} ((fun (_x : MonoidHom.{u1, u2} α β _inst_5 _inst_6) => α -> β) ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (OrderMonoidHom.{u1, u2} α β _inst_1 _inst_2 _inst_5 _inst_6) (MonoidHom.{u1, u2} α β _inst_5 _inst_6) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (OrderMonoidHom.{u1, u2} α β _inst_1 _inst_2 _inst_5 _inst_6) (MonoidHom.{u1, u2} α β _inst_5 _inst_6) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (OrderMonoidHom.{u1, u2} α β _inst_1 _inst_2 _inst_5 _inst_6) (MonoidHom.{u1, u2} α β _inst_5 _inst_6) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} α β (OrderMonoidHom.{u1, u2} α β _inst_1 _inst_2 _inst_5 _inst_6) _inst_5 _inst_6 (OrderMonoidHomClass.toMonoidHomClass.{max u1 u2, u1, u2} (OrderMonoidHom.{u1, u2} α β _inst_1 _inst_2 _inst_5 _inst_6) α β _inst_1 _inst_2 _inst_5 _inst_6 (OrderMonoidHom.orderMonoidHomClass.{u1, u2} α β _inst_1 _inst_2 _inst_5 _inst_6))))) f)) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} α β _inst_5 _inst_6) (fun (_x : MonoidHom.{u1, u2} α β _inst_5 _inst_6) => α -> β) (MonoidHom.hasCoeToFun.{u1, u2} α β _inst_5 _inst_6) ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (OrderMonoidHom.{u1, u2} α β _inst_1 _inst_2 _inst_5 _inst_6) (MonoidHom.{u1, u2} α β _inst_5 _inst_6) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (OrderMonoidHom.{u1, u2} α β _inst_1 _inst_2 _inst_5 _inst_6) (MonoidHom.{u1, u2} α β _inst_5 _inst_6) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (OrderMonoidHom.{u1, u2} α β _inst_1 _inst_2 _inst_5 _inst_6) (MonoidHom.{u1, u2} α β _inst_5 _inst_6) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} α β (OrderMonoidHom.{u1, u2} α β _inst_1 _inst_2 _inst_5 _inst_6) _inst_5 _inst_6 (OrderMonoidHomClass.toMonoidHomClass.{max u1 u2, u1, u2} (OrderMonoidHom.{u1, u2} α β _inst_1 _inst_2 _inst_5 _inst_6) α β _inst_1 _inst_2 _inst_5 _inst_6 (OrderMonoidHom.orderMonoidHomClass.{u1, u2} α β _inst_1 _inst_2 _inst_5 _inst_6))))) f)) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (OrderMonoidHom.{u1, u2} α β _inst_1 _inst_2 _inst_5 _inst_6) (fun (_x : OrderMonoidHom.{u1, u2} α β _inst_1 _inst_2 _inst_5 _inst_6) => α -> β) (OrderMonoidHom.hasCoeToFun.{u1, u2} α β _inst_1 _inst_2 _inst_5 _inst_6) f)
but is expected to have type
  forall {α : Type.{u2}} {β : Type.{u1}} [_inst_1 : Preorder.{u2} α] [_inst_2 : Preorder.{u1} β] [_inst_5 : MulOneClass.{u2} α] [_inst_6 : MulOneClass.{u1} β] (f : OrderMonoidHom.{u2, u1} α β _inst_1 _inst_2 _inst_5 _inst_6), Eq.{max (succ u2) (succ u1)} (forall (a : α), (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : α) => β) a) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} α β _inst_5 _inst_6) α (fun (_x : α) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : α) => β) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} α β _inst_5 _inst_6) α β (MulOneClass.toMul.{u2} α _inst_5) (MulOneClass.toMul.{u1} β _inst_6) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} α β _inst_5 _inst_6) α β _inst_5 _inst_6 (MonoidHom.monoidHomClass.{u2, u1} α β _inst_5 _inst_6))) (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} α β (OrderMonoidHom.{u2, u1} α β _inst_1 _inst_2 _inst_5 _inst_6) _inst_5 _inst_6 (OrderMonoidHomClass.toMonoidHomClass.{max u2 u1, u2, u1} (OrderMonoidHom.{u2, u1} α β _inst_1 _inst_2 _inst_5 _inst_6) α β _inst_1 _inst_2 _inst_5 _inst_6 (OrderMonoidHom.instOrderMonoidHomClassOrderMonoidHom.{u2, u1} α β _inst_1 _inst_2 _inst_5 _inst_6)) f)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (OrderMonoidHom.{u2, u1} α β _inst_1 _inst_2 _inst_5 _inst_6) α (fun (_x : α) => (fun (x._@.Mathlib.Order.RelIso.Basic._hyg.867 : α) => β) _x) (RelHomClass.toFunLike.{max u2 u1, u2, u1} (OrderMonoidHom.{u2, u1} α β _inst_1 _inst_2 _inst_5 _inst_6) α β (fun (x._@.Mathlib.Order.Hom.Basic._hyg.1896 : α) (x._@.Mathlib.Order.Hom.Basic._hyg.1898 : α) => LE.le.{u2} α (Preorder.toLE.{u2} α _inst_1) x._@.Mathlib.Order.Hom.Basic._hyg.1896 x._@.Mathlib.Order.Hom.Basic._hyg.1898) (fun (x._@.Mathlib.Order.Hom.Basic._hyg.1918 : β) (x._@.Mathlib.Order.Hom.Basic._hyg.1920 : β) => LE.le.{u1} β (Preorder.toLE.{u1} β _inst_2) x._@.Mathlib.Order.Hom.Basic._hyg.1918 x._@.Mathlib.Order.Hom.Basic._hyg.1920) (OrderMonoidHomClass.toOrderHomClass.{max u2 u1, u2, u1} (OrderMonoidHom.{u2, u1} α β _inst_1 _inst_2 _inst_5 _inst_6) α β _inst_1 _inst_2 _inst_5 _inst_6 (OrderMonoidHom.instOrderMonoidHomClassOrderMonoidHom.{u2, u1} α β _inst_1 _inst_2 _inst_5 _inst_6))) f)
Case conversion may be inaccurate. Consider using '#align order_monoid_hom.coe_monoid_hom OrderMonoidHom.coe_monoidHomₓ'. -/
@[simp, to_additive]
theorem coe_monoidHom (f : α →*o β) : ((f : α →* β) : α → β) = f :=
  rfl
#align order_monoid_hom.coe_monoid_hom OrderMonoidHom.coe_monoidHom
#align order_add_monoid_hom.coe_add_monoid_hom OrderAddMonoidHom.coe_addMonoidHom

/- warning: order_monoid_hom.coe_order_hom -> OrderMonoidHom.coe_orderHom is a dubious translation:
lean 3 declaration is
  forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : Preorder.{u1} α] [_inst_2 : Preorder.{u2} β] [_inst_5 : MulOneClass.{u1} α] [_inst_6 : MulOneClass.{u2} β] (f : OrderMonoidHom.{u1, u2} α β _inst_1 _inst_2 _inst_5 _inst_6), Eq.{max (succ u1) (succ u2)} ((fun (_x : OrderHom.{u1, u2} α β _inst_1 _inst_2) => α -> β) ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u1) (succ u2)} a b] => self.0) (OrderMonoidHom.{u1, u2} α β _inst_1 _inst_2 _inst_5 _inst_6) (OrderHom.{u1, u2} α β _inst_1 _inst_2) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (OrderMonoidHom.{u1, u2} α β _inst_1 _inst_2 _inst_5 _inst_6) (OrderHom.{u1, u2} α β _inst_1 _inst_2) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (OrderMonoidHom.{u1, u2} α β _inst_1 _inst_2 _inst_5 _inst_6) (OrderHom.{u1, u2} α β _inst_1 _inst_2) (OrderHomClass.OrderHom.hasCoeT.{max u1 u2, u1, u2} (OrderMonoidHom.{u1, u2} α β _inst_1 _inst_2 _inst_5 _inst_6) α β _inst_1 _inst_2 (OrderMonoidHomClass.toOrderHomClass.{max u1 u2, u1, u2} (OrderMonoidHom.{u1, u2} α β _inst_1 _inst_2 _inst_5 _inst_6) α β _inst_1 _inst_2 _inst_5 _inst_6 (OrderMonoidHom.orderMonoidHomClass.{u1, u2} α β _inst_1 _inst_2 _inst_5 _inst_6))))) f)) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (OrderHom.{u1, u2} α β _inst_1 _inst_2) (fun (_x : OrderHom.{u1, u2} α β _inst_1 _inst_2) => α -> β) (OrderHom.hasCoeToFun.{u1, u2} α β _inst_1 _inst_2) ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u1) (succ u2)} a b] => self.0) (OrderMonoidHom.{u1, u2} α β _inst_1 _inst_2 _inst_5 _inst_6) (OrderHom.{u1, u2} α β _inst_1 _inst_2) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (OrderMonoidHom.{u1, u2} α β _inst_1 _inst_2 _inst_5 _inst_6) (OrderHom.{u1, u2} α β _inst_1 _inst_2) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (OrderMonoidHom.{u1, u2} α β _inst_1 _inst_2 _inst_5 _inst_6) (OrderHom.{u1, u2} α β _inst_1 _inst_2) (OrderHomClass.OrderHom.hasCoeT.{max u1 u2, u1, u2} (OrderMonoidHom.{u1, u2} α β _inst_1 _inst_2 _inst_5 _inst_6) α β _inst_1 _inst_2 (OrderMonoidHomClass.toOrderHomClass.{max u1 u2, u1, u2} (OrderMonoidHom.{u1, u2} α β _inst_1 _inst_2 _inst_5 _inst_6) α β _inst_1 _inst_2 _inst_5 _inst_6 (OrderMonoidHom.orderMonoidHomClass.{u1, u2} α β _inst_1 _inst_2 _inst_5 _inst_6))))) f)) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (OrderMonoidHom.{u1, u2} α β _inst_1 _inst_2 _inst_5 _inst_6) (fun (_x : OrderMonoidHom.{u1, u2} α β _inst_1 _inst_2 _inst_5 _inst_6) => α -> β) (OrderMonoidHom.hasCoeToFun.{u1, u2} α β _inst_1 _inst_2 _inst_5 _inst_6) f)
but is expected to have type
  forall {α : Type.{u2}} {β : Type.{u1}} [_inst_1 : Preorder.{u2} α] [_inst_2 : Preorder.{u1} β] [_inst_5 : MulOneClass.{u2} α] [_inst_6 : MulOneClass.{u1} β] (f : OrderMonoidHom.{u2, u1} α β _inst_1 _inst_2 _inst_5 _inst_6), Eq.{max (succ u2) (succ u1)} (α -> β) (OrderHom.toFun.{u2, u1} α β _inst_1 _inst_2 (OrderHomClass.toOrderHom.{max u2 u1, u2, u1} (OrderMonoidHom.{u2, u1} α β _inst_1 _inst_2 _inst_5 _inst_6) α β _inst_1 _inst_2 (OrderMonoidHomClass.toOrderHomClass.{max u2 u1, u2, u1} (OrderMonoidHom.{u2, u1} α β _inst_1 _inst_2 _inst_5 _inst_6) α β _inst_1 _inst_2 _inst_5 _inst_6 (OrderMonoidHom.instOrderMonoidHomClassOrderMonoidHom.{u2, u1} α β _inst_1 _inst_2 _inst_5 _inst_6)) f)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (OrderMonoidHom.{u2, u1} α β _inst_1 _inst_2 _inst_5 _inst_6) α (fun (_x : α) => (fun (x._@.Mathlib.Order.RelIso.Basic._hyg.867 : α) => β) _x) (RelHomClass.toFunLike.{max u2 u1, u2, u1} (OrderMonoidHom.{u2, u1} α β _inst_1 _inst_2 _inst_5 _inst_6) α β (fun (x._@.Mathlib.Order.Hom.Basic._hyg.1896 : α) (x._@.Mathlib.Order.Hom.Basic._hyg.1898 : α) => LE.le.{u2} α (Preorder.toLE.{u2} α _inst_1) x._@.Mathlib.Order.Hom.Basic._hyg.1896 x._@.Mathlib.Order.Hom.Basic._hyg.1898) (fun (x._@.Mathlib.Order.Hom.Basic._hyg.1918 : β) (x._@.Mathlib.Order.Hom.Basic._hyg.1920 : β) => LE.le.{u1} β (Preorder.toLE.{u1} β _inst_2) x._@.Mathlib.Order.Hom.Basic._hyg.1918 x._@.Mathlib.Order.Hom.Basic._hyg.1920) (OrderMonoidHomClass.toOrderHomClass.{max u2 u1, u2, u1} (OrderMonoidHom.{u2, u1} α β _inst_1 _inst_2 _inst_5 _inst_6) α β _inst_1 _inst_2 _inst_5 _inst_6 (OrderMonoidHom.instOrderMonoidHomClassOrderMonoidHom.{u2, u1} α β _inst_1 _inst_2 _inst_5 _inst_6))) f)
Case conversion may be inaccurate. Consider using '#align order_monoid_hom.coe_order_hom OrderMonoidHom.coe_orderHomₓ'. -/
@[simp, to_additive]
theorem coe_orderHom (f : α →*o β) : ((f : α →o β) : α → β) = f :=
  rfl
#align order_monoid_hom.coe_order_hom OrderMonoidHom.coe_orderHom
#align order_add_monoid_hom.coe_order_hom OrderAddMonoidHom.coe_orderHom

/- warning: order_monoid_hom.to_monoid_hom_injective -> OrderMonoidHom.toMonoidHom_injective is a dubious translation:
lean 3 declaration is
  forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : Preorder.{u1} α] [_inst_2 : Preorder.{u2} β] [_inst_5 : MulOneClass.{u1} α] [_inst_6 : MulOneClass.{u2} β], Function.Injective.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (OrderMonoidHom.{u1, u2} α β _inst_1 _inst_2 _inst_5 _inst_6) (MonoidHom.{u1, u2} α β _inst_5 _inst_6) (OrderMonoidHom.toMonoidHom.{u1, u2} α β _inst_1 _inst_2 _inst_5 _inst_6)
but is expected to have type
  forall {α : Type.{u2}} {β : Type.{u1}} [_inst_1 : Preorder.{u2} α] [_inst_2 : Preorder.{u1} β] [_inst_5 : MulOneClass.{u2} α] [_inst_6 : MulOneClass.{u1} β], Function.Injective.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (OrderMonoidHom.{u2, u1} α β _inst_1 _inst_2 _inst_5 _inst_6) (MonoidHom.{u2, u1} α β _inst_5 _inst_6) (OrderMonoidHom.toMonoidHom.{u2, u1} α β _inst_1 _inst_2 _inst_5 _inst_6)
Case conversion may be inaccurate. Consider using '#align order_monoid_hom.to_monoid_hom_injective OrderMonoidHom.toMonoidHom_injectiveₓ'. -/
@[to_additive]
theorem toMonoidHom_injective : Injective (toMonoidHom : _ → α →* β) := fun f g h =>
  ext <| by convert FunLike.ext_iff.1 h
#align order_monoid_hom.to_monoid_hom_injective OrderMonoidHom.toMonoidHom_injective
#align order_add_monoid_hom.to_add_monoid_hom_injective OrderAddMonoidHom.toAddMonoidHom_injective

/- warning: order_monoid_hom.to_order_hom_injective -> OrderMonoidHom.toOrderHom_injective is a dubious translation:
lean 3 declaration is
  forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : Preorder.{u1} α] [_inst_2 : Preorder.{u2} β] [_inst_5 : MulOneClass.{u1} α] [_inst_6 : MulOneClass.{u2} β], Function.Injective.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (OrderMonoidHom.{u1, u2} α β _inst_1 _inst_2 _inst_5 _inst_6) (OrderHom.{u1, u2} α β _inst_1 _inst_2) (OrderMonoidHom.toOrderHom.{u1, u2} α β _inst_1 _inst_2 _inst_5 _inst_6)
but is expected to have type
  forall {α : Type.{u2}} {β : Type.{u1}} [_inst_1 : Preorder.{u2} α] [_inst_2 : Preorder.{u1} β] [_inst_5 : MulOneClass.{u2} α] [_inst_6 : MulOneClass.{u1} β], Function.Injective.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (OrderMonoidHom.{u2, u1} α β _inst_1 _inst_2 _inst_5 _inst_6) (OrderHom.{u2, u1} α β _inst_1 _inst_2) (OrderMonoidHom.toOrderHom.{u2, u1} α β _inst_1 _inst_2 _inst_5 _inst_6)
Case conversion may be inaccurate. Consider using '#align order_monoid_hom.to_order_hom_injective OrderMonoidHom.toOrderHom_injectiveₓ'. -/
@[to_additive]
theorem toOrderHom_injective : Injective (toOrderHom : _ → α →o β) := fun f g h =>
  ext <| by convert FunLike.ext_iff.1 h
#align order_monoid_hom.to_order_hom_injective OrderMonoidHom.toOrderHom_injective
#align order_add_monoid_hom.to_order_hom_injective OrderAddMonoidHom.toOrderHom_injective

/- warning: order_monoid_hom.copy -> OrderMonoidHom.copy is a dubious translation:
lean 3 declaration is
  forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : Preorder.{u1} α] [_inst_2 : Preorder.{u2} β] [_inst_5 : MulOneClass.{u1} α] [_inst_6 : MulOneClass.{u2} β] (f : OrderMonoidHom.{u1, u2} α β _inst_1 _inst_2 _inst_5 _inst_6) (f' : α -> β), (Eq.{max (succ u1) (succ u2)} (α -> β) f' (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (OrderMonoidHom.{u1, u2} α β _inst_1 _inst_2 _inst_5 _inst_6) (fun (_x : OrderMonoidHom.{u1, u2} α β _inst_1 _inst_2 _inst_5 _inst_6) => α -> β) (OrderMonoidHom.hasCoeToFun.{u1, u2} α β _inst_1 _inst_2 _inst_5 _inst_6) f)) -> (OrderMonoidHom.{u1, u2} α β _inst_1 _inst_2 _inst_5 _inst_6)
but is expected to have type
  forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : Preorder.{u1} α] [_inst_2 : Preorder.{u2} β] [_inst_5 : MulOneClass.{u1} α] [_inst_6 : MulOneClass.{u2} β] (f : OrderMonoidHom.{u1, u2} α β _inst_1 _inst_2 _inst_5 _inst_6) (f' : α -> β), (Eq.{max (succ u1) (succ u2)} (α -> β) f' (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (OrderMonoidHom.{u1, u2} α β _inst_1 _inst_2 _inst_5 _inst_6) α (fun (_x : α) => (fun (x._@.Mathlib.Order.RelIso.Basic._hyg.867 : α) => β) _x) (RelHomClass.toFunLike.{max u1 u2, u1, u2} (OrderMonoidHom.{u1, u2} α β _inst_1 _inst_2 _inst_5 _inst_6) α β (fun (x._@.Mathlib.Order.Hom.Basic._hyg.1896 : α) (x._@.Mathlib.Order.Hom.Basic._hyg.1898 : α) => LE.le.{u1} α (Preorder.toLE.{u1} α _inst_1) x._@.Mathlib.Order.Hom.Basic._hyg.1896 x._@.Mathlib.Order.Hom.Basic._hyg.1898) (fun (x._@.Mathlib.Order.Hom.Basic._hyg.1918 : β) (x._@.Mathlib.Order.Hom.Basic._hyg.1920 : β) => LE.le.{u2} β (Preorder.toLE.{u2} β _inst_2) x._@.Mathlib.Order.Hom.Basic._hyg.1918 x._@.Mathlib.Order.Hom.Basic._hyg.1920) (OrderMonoidHomClass.toOrderHomClass.{max u1 u2, u1, u2} (OrderMonoidHom.{u1, u2} α β _inst_1 _inst_2 _inst_5 _inst_6) α β _inst_1 _inst_2 _inst_5 _inst_6 (OrderMonoidHom.instOrderMonoidHomClassOrderMonoidHom.{u1, u2} α β _inst_1 _inst_2 _inst_5 _inst_6))) f)) -> (OrderMonoidHom.{u1, u2} α β _inst_1 _inst_2 _inst_5 _inst_6)
Case conversion may be inaccurate. Consider using '#align order_monoid_hom.copy OrderMonoidHom.copyₓ'. -/
/-- Copy of an `order_monoid_hom` with a new `to_fun` equal to the old one. Useful to fix
definitional equalities. -/
@[to_additive
      "Copy of an `order_monoid_hom` with a new `to_fun` equal to the old one. Useful to fix\ndefinitional equalities."]
protected def copy (f : α →*o β) (f' : α → β) (h : f' = f) : α →*o β :=
  { f.toMonoidHom.copy f' h with
    toFun := f'
    monotone' := h.symm.subst f.monotone' }
#align order_monoid_hom.copy OrderMonoidHom.copy
#align order_add_monoid_hom.copy OrderAddMonoidHom.copy

/- warning: order_monoid_hom.coe_copy -> OrderMonoidHom.coe_copy is a dubious translation:
lean 3 declaration is
  forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : Preorder.{u1} α] [_inst_2 : Preorder.{u2} β] [_inst_5 : MulOneClass.{u1} α] [_inst_6 : MulOneClass.{u2} β] (f : OrderMonoidHom.{u1, u2} α β _inst_1 _inst_2 _inst_5 _inst_6) (f' : α -> β) (h : Eq.{max (succ u1) (succ u2)} (α -> β) f' (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (OrderMonoidHom.{u1, u2} α β _inst_1 _inst_2 _inst_5 _inst_6) (fun (_x : OrderMonoidHom.{u1, u2} α β _inst_1 _inst_2 _inst_5 _inst_6) => α -> β) (OrderMonoidHom.hasCoeToFun.{u1, u2} α β _inst_1 _inst_2 _inst_5 _inst_6) f)), Eq.{max (succ u1) (succ u2)} (α -> β) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (OrderMonoidHom.{u1, u2} α β _inst_1 _inst_2 _inst_5 _inst_6) (fun (_x : OrderMonoidHom.{u1, u2} α β _inst_1 _inst_2 _inst_5 _inst_6) => α -> β) (OrderMonoidHom.hasCoeToFun.{u1, u2} α β _inst_1 _inst_2 _inst_5 _inst_6) (OrderMonoidHom.copy.{u1, u2} α β _inst_1 _inst_2 _inst_5 _inst_6 f f' h)) f'
but is expected to have type
  forall {α : Type.{u2}} {β : Type.{u1}} [_inst_1 : Preorder.{u2} α] [_inst_2 : Preorder.{u1} β] [_inst_5 : MulOneClass.{u2} α] [_inst_6 : MulOneClass.{u1} β] (f : OrderMonoidHom.{u2, u1} α β _inst_1 _inst_2 _inst_5 _inst_6) (f' : α -> β) (h : Eq.{max (succ u2) (succ u1)} (α -> β) f' (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (OrderMonoidHom.{u2, u1} α β _inst_1 _inst_2 _inst_5 _inst_6) α (fun (_x : α) => (fun (x._@.Mathlib.Order.RelIso.Basic._hyg.867 : α) => β) _x) (RelHomClass.toFunLike.{max u2 u1, u2, u1} (OrderMonoidHom.{u2, u1} α β _inst_1 _inst_2 _inst_5 _inst_6) α β (fun (x._@.Mathlib.Order.Hom.Basic._hyg.1896 : α) (x._@.Mathlib.Order.Hom.Basic._hyg.1898 : α) => LE.le.{u2} α (Preorder.toLE.{u2} α _inst_1) x._@.Mathlib.Order.Hom.Basic._hyg.1896 x._@.Mathlib.Order.Hom.Basic._hyg.1898) (fun (x._@.Mathlib.Order.Hom.Basic._hyg.1918 : β) (x._@.Mathlib.Order.Hom.Basic._hyg.1920 : β) => LE.le.{u1} β (Preorder.toLE.{u1} β _inst_2) x._@.Mathlib.Order.Hom.Basic._hyg.1918 x._@.Mathlib.Order.Hom.Basic._hyg.1920) (OrderMonoidHomClass.toOrderHomClass.{max u2 u1, u2, u1} (OrderMonoidHom.{u2, u1} α β _inst_1 _inst_2 _inst_5 _inst_6) α β _inst_1 _inst_2 _inst_5 _inst_6 (OrderMonoidHom.instOrderMonoidHomClassOrderMonoidHom.{u2, u1} α β _inst_1 _inst_2 _inst_5 _inst_6))) f)), Eq.{max (succ u2) (succ u1)} (forall (ᾰ : α), (fun (x._@.Mathlib.Order.RelIso.Basic._hyg.867 : α) => β) ᾰ) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (OrderMonoidHom.{u2, u1} α β _inst_1 _inst_2 _inst_5 _inst_6) α (fun (_x : α) => (fun (x._@.Mathlib.Order.RelIso.Basic._hyg.867 : α) => β) _x) (RelHomClass.toFunLike.{max u2 u1, u2, u1} (OrderMonoidHom.{u2, u1} α β _inst_1 _inst_2 _inst_5 _inst_6) α β (fun (x._@.Mathlib.Order.Hom.Basic._hyg.1896 : α) (x._@.Mathlib.Order.Hom.Basic._hyg.1898 : α) => LE.le.{u2} α (Preorder.toLE.{u2} α _inst_1) x._@.Mathlib.Order.Hom.Basic._hyg.1896 x._@.Mathlib.Order.Hom.Basic._hyg.1898) (fun (x._@.Mathlib.Order.Hom.Basic._hyg.1918 : β) (x._@.Mathlib.Order.Hom.Basic._hyg.1920 : β) => LE.le.{u1} β (Preorder.toLE.{u1} β _inst_2) x._@.Mathlib.Order.Hom.Basic._hyg.1918 x._@.Mathlib.Order.Hom.Basic._hyg.1920) (OrderMonoidHomClass.toOrderHomClass.{max u2 u1, u2, u1} (OrderMonoidHom.{u2, u1} α β _inst_1 _inst_2 _inst_5 _inst_6) α β _inst_1 _inst_2 _inst_5 _inst_6 (OrderMonoidHom.instOrderMonoidHomClassOrderMonoidHom.{u2, u1} α β _inst_1 _inst_2 _inst_5 _inst_6))) (OrderMonoidHom.copy.{u2, u1} α β _inst_1 _inst_2 _inst_5 _inst_6 f f' h)) f'
Case conversion may be inaccurate. Consider using '#align order_monoid_hom.coe_copy OrderMonoidHom.coe_copyₓ'. -/
@[simp, to_additive]
theorem coe_copy (f : α →*o β) (f' : α → β) (h : f' = f) : ⇑(f.copy f' h) = f' :=
  rfl
#align order_monoid_hom.coe_copy OrderMonoidHom.coe_copy
#align order_add_monoid_hom.coe_copy OrderAddMonoidHom.coe_copy

/- warning: order_monoid_hom.copy_eq -> OrderMonoidHom.copy_eq is a dubious translation:
lean 3 declaration is
  forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : Preorder.{u1} α] [_inst_2 : Preorder.{u2} β] [_inst_5 : MulOneClass.{u1} α] [_inst_6 : MulOneClass.{u2} β] (f : OrderMonoidHom.{u1, u2} α β _inst_1 _inst_2 _inst_5 _inst_6) (f' : α -> β) (h : Eq.{max (succ u1) (succ u2)} (α -> β) f' (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (OrderMonoidHom.{u1, u2} α β _inst_1 _inst_2 _inst_5 _inst_6) (fun (_x : OrderMonoidHom.{u1, u2} α β _inst_1 _inst_2 _inst_5 _inst_6) => α -> β) (OrderMonoidHom.hasCoeToFun.{u1, u2} α β _inst_1 _inst_2 _inst_5 _inst_6) f)), Eq.{max (succ u1) (succ u2)} (OrderMonoidHom.{u1, u2} α β _inst_1 _inst_2 _inst_5 _inst_6) (OrderMonoidHom.copy.{u1, u2} α β _inst_1 _inst_2 _inst_5 _inst_6 f f' h) f
but is expected to have type
  forall {α : Type.{u2}} {β : Type.{u1}} [_inst_1 : Preorder.{u2} α] [_inst_2 : Preorder.{u1} β] [_inst_5 : MulOneClass.{u2} α] [_inst_6 : MulOneClass.{u1} β] (f : OrderMonoidHom.{u2, u1} α β _inst_1 _inst_2 _inst_5 _inst_6) (f' : α -> β) (h : Eq.{max (succ u2) (succ u1)} (α -> β) f' (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (OrderMonoidHom.{u2, u1} α β _inst_1 _inst_2 _inst_5 _inst_6) α (fun (_x : α) => (fun (x._@.Mathlib.Order.RelIso.Basic._hyg.867 : α) => β) _x) (RelHomClass.toFunLike.{max u2 u1, u2, u1} (OrderMonoidHom.{u2, u1} α β _inst_1 _inst_2 _inst_5 _inst_6) α β (fun (x._@.Mathlib.Order.Hom.Basic._hyg.1896 : α) (x._@.Mathlib.Order.Hom.Basic._hyg.1898 : α) => LE.le.{u2} α (Preorder.toLE.{u2} α _inst_1) x._@.Mathlib.Order.Hom.Basic._hyg.1896 x._@.Mathlib.Order.Hom.Basic._hyg.1898) (fun (x._@.Mathlib.Order.Hom.Basic._hyg.1918 : β) (x._@.Mathlib.Order.Hom.Basic._hyg.1920 : β) => LE.le.{u1} β (Preorder.toLE.{u1} β _inst_2) x._@.Mathlib.Order.Hom.Basic._hyg.1918 x._@.Mathlib.Order.Hom.Basic._hyg.1920) (OrderMonoidHomClass.toOrderHomClass.{max u2 u1, u2, u1} (OrderMonoidHom.{u2, u1} α β _inst_1 _inst_2 _inst_5 _inst_6) α β _inst_1 _inst_2 _inst_5 _inst_6 (OrderMonoidHom.instOrderMonoidHomClassOrderMonoidHom.{u2, u1} α β _inst_1 _inst_2 _inst_5 _inst_6))) f)), Eq.{max (succ u2) (succ u1)} (OrderMonoidHom.{u2, u1} α β _inst_1 _inst_2 _inst_5 _inst_6) (OrderMonoidHom.copy.{u2, u1} α β _inst_1 _inst_2 _inst_5 _inst_6 f f' h) f
Case conversion may be inaccurate. Consider using '#align order_monoid_hom.copy_eq OrderMonoidHom.copy_eqₓ'. -/
@[to_additive]
theorem copy_eq (f : α →*o β) (f' : α → β) (h : f' = f) : f.copy f' h = f :=
  FunLike.ext' h
#align order_monoid_hom.copy_eq OrderMonoidHom.copy_eq
#align order_add_monoid_hom.copy_eq OrderAddMonoidHom.copy_eq

variable (α)

#print OrderMonoidHom.id /-
/-- The identity map as an ordered monoid homomorphism. -/
@[to_additive "The identity map as an ordered additive monoid homomorphism."]
protected def id : α →*o α :=
  { MonoidHom.id α, OrderHom.id with }
#align order_monoid_hom.id OrderMonoidHom.id
#align order_add_monoid_hom.id OrderAddMonoidHom.id
-/

/- warning: order_monoid_hom.coe_id -> OrderMonoidHom.coe_id is a dubious translation:
lean 3 declaration is
  forall (α : Type.{u1}) [_inst_1 : Preorder.{u1} α] [_inst_5 : MulOneClass.{u1} α], Eq.{succ u1} (α -> α) (coeFn.{succ u1, succ u1} (OrderMonoidHom.{u1, u1} α α _inst_1 _inst_1 _inst_5 _inst_5) (fun (_x : OrderMonoidHom.{u1, u1} α α _inst_1 _inst_1 _inst_5 _inst_5) => α -> α) (OrderMonoidHom.hasCoeToFun.{u1, u1} α α _inst_1 _inst_1 _inst_5 _inst_5) (OrderMonoidHom.id.{u1} α _inst_1 _inst_5)) (id.{succ u1} α)
but is expected to have type
  forall (α : Type.{u1}) [_inst_1 : Preorder.{u1} α] [_inst_5 : MulOneClass.{u1} α], Eq.{succ u1} (forall (ᾰ : α), (fun (x._@.Mathlib.Order.RelIso.Basic._hyg.867 : α) => α) ᾰ) (FunLike.coe.{succ u1, succ u1, succ u1} (OrderMonoidHom.{u1, u1} α α _inst_1 _inst_1 _inst_5 _inst_5) α (fun (_x : α) => (fun (x._@.Mathlib.Order.RelIso.Basic._hyg.867 : α) => α) _x) (RelHomClass.toFunLike.{u1, u1, u1} (OrderMonoidHom.{u1, u1} α α _inst_1 _inst_1 _inst_5 _inst_5) α α (fun (x._@.Mathlib.Order.Hom.Basic._hyg.1896 : α) (x._@.Mathlib.Order.Hom.Basic._hyg.1898 : α) => LE.le.{u1} α (Preorder.toLE.{u1} α _inst_1) x._@.Mathlib.Order.Hom.Basic._hyg.1896 x._@.Mathlib.Order.Hom.Basic._hyg.1898) (fun (x._@.Mathlib.Order.Hom.Basic._hyg.1918 : α) (x._@.Mathlib.Order.Hom.Basic._hyg.1920 : α) => LE.le.{u1} α (Preorder.toLE.{u1} α _inst_1) x._@.Mathlib.Order.Hom.Basic._hyg.1918 x._@.Mathlib.Order.Hom.Basic._hyg.1920) (OrderMonoidHomClass.toOrderHomClass.{u1, u1, u1} (OrderMonoidHom.{u1, u1} α α _inst_1 _inst_1 _inst_5 _inst_5) α α _inst_1 _inst_1 _inst_5 _inst_5 (OrderMonoidHom.instOrderMonoidHomClassOrderMonoidHom.{u1, u1} α α _inst_1 _inst_1 _inst_5 _inst_5))) (OrderMonoidHom.id.{u1} α _inst_1 _inst_5)) (id.{succ u1} α)
Case conversion may be inaccurate. Consider using '#align order_monoid_hom.coe_id OrderMonoidHom.coe_idₓ'. -/
@[simp, to_additive]
theorem coe_id : ⇑(OrderMonoidHom.id α) = id :=
  rfl
#align order_monoid_hom.coe_id OrderMonoidHom.coe_id
#align order_add_monoid_hom.coe_id OrderAddMonoidHom.coe_id

@[to_additive]
instance : Inhabited (α →*o α) :=
  ⟨OrderMonoidHom.id α⟩

variable {α}

#print OrderMonoidHom.comp /-
/-- Composition of `order_monoid_hom`s as an `order_monoid_hom`. -/
@[to_additive "Composition of `order_add_monoid_hom`s as an `order_add_monoid_hom`"]
def comp (f : β →*o γ) (g : α →*o β) : α →*o γ :=
  { f.toMonoidHom.comp (g : α →* β), f.toOrderHom.comp (g : α →o β) with }
#align order_monoid_hom.comp OrderMonoidHom.comp
#align order_add_monoid_hom.comp OrderAddMonoidHom.comp
-/

/- warning: order_monoid_hom.coe_comp -> OrderMonoidHom.coe_comp is a dubious translation:
lean 3 declaration is
  forall {α : Type.{u1}} {β : Type.{u2}} {γ : Type.{u3}} [_inst_1 : Preorder.{u1} α] [_inst_2 : Preorder.{u2} β] [_inst_3 : Preorder.{u3} γ] [_inst_5 : MulOneClass.{u1} α] [_inst_6 : MulOneClass.{u2} β] [_inst_7 : MulOneClass.{u3} γ] (f : OrderMonoidHom.{u2, u3} β γ _inst_2 _inst_3 _inst_6 _inst_7) (g : OrderMonoidHom.{u1, u2} α β _inst_1 _inst_2 _inst_5 _inst_6), Eq.{max (succ u1) (succ u3)} ((fun (_x : OrderMonoidHom.{u1, u3} α γ _inst_1 _inst_3 _inst_5 _inst_7) => α -> γ) (OrderMonoidHom.comp.{u1, u2, u3} α β γ _inst_1 _inst_2 _inst_3 _inst_5 _inst_6 _inst_7 f g)) (coeFn.{max (succ u1) (succ u3), max (succ u1) (succ u3)} (OrderMonoidHom.{u1, u3} α γ _inst_1 _inst_3 _inst_5 _inst_7) (fun (_x : OrderMonoidHom.{u1, u3} α γ _inst_1 _inst_3 _inst_5 _inst_7) => α -> γ) (OrderMonoidHom.hasCoeToFun.{u1, u3} α γ _inst_1 _inst_3 _inst_5 _inst_7) (OrderMonoidHom.comp.{u1, u2, u3} α β γ _inst_1 _inst_2 _inst_3 _inst_5 _inst_6 _inst_7 f g)) (Function.comp.{succ u1, succ u2, succ u3} α β γ (coeFn.{max (succ u2) (succ u3), max (succ u2) (succ u3)} (OrderMonoidHom.{u2, u3} β γ _inst_2 _inst_3 _inst_6 _inst_7) (fun (_x : OrderMonoidHom.{u2, u3} β γ _inst_2 _inst_3 _inst_6 _inst_7) => β -> γ) (OrderMonoidHom.hasCoeToFun.{u2, u3} β γ _inst_2 _inst_3 _inst_6 _inst_7) f) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (OrderMonoidHom.{u1, u2} α β _inst_1 _inst_2 _inst_5 _inst_6) (fun (_x : OrderMonoidHom.{u1, u2} α β _inst_1 _inst_2 _inst_5 _inst_6) => α -> β) (OrderMonoidHom.hasCoeToFun.{u1, u2} α β _inst_1 _inst_2 _inst_5 _inst_6) g))
but is expected to have type
  forall {α : Type.{u1}} {β : Type.{u3}} {γ : Type.{u2}} [_inst_1 : Preorder.{u1} α] [_inst_2 : Preorder.{u3} β] [_inst_3 : Preorder.{u2} γ] [_inst_5 : MulOneClass.{u1} α] [_inst_6 : MulOneClass.{u3} β] [_inst_7 : MulOneClass.{u2} γ] (f : OrderMonoidHom.{u3, u2} β γ _inst_2 _inst_3 _inst_6 _inst_7) (g : OrderMonoidHom.{u1, u3} α β _inst_1 _inst_2 _inst_5 _inst_6), Eq.{max (succ u1) (succ u2)} (forall (a : α), (fun (x._@.Mathlib.Order.RelIso.Basic._hyg.867 : α) => γ) a) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (OrderMonoidHom.{u1, u2} α γ _inst_1 _inst_3 _inst_5 _inst_7) α (fun (_x : α) => (fun (x._@.Mathlib.Order.RelIso.Basic._hyg.867 : α) => γ) _x) (RelHomClass.toFunLike.{max u1 u2, u1, u2} (OrderMonoidHom.{u1, u2} α γ _inst_1 _inst_3 _inst_5 _inst_7) α γ (fun (x._@.Mathlib.Order.Hom.Basic._hyg.1896 : α) (x._@.Mathlib.Order.Hom.Basic._hyg.1898 : α) => LE.le.{u1} α (Preorder.toLE.{u1} α _inst_1) x._@.Mathlib.Order.Hom.Basic._hyg.1896 x._@.Mathlib.Order.Hom.Basic._hyg.1898) (fun (x._@.Mathlib.Order.Hom.Basic._hyg.1918 : γ) (x._@.Mathlib.Order.Hom.Basic._hyg.1920 : γ) => LE.le.{u2} γ (Preorder.toLE.{u2} γ _inst_3) x._@.Mathlib.Order.Hom.Basic._hyg.1918 x._@.Mathlib.Order.Hom.Basic._hyg.1920) (OrderMonoidHomClass.toOrderHomClass.{max u1 u2, u1, u2} (OrderMonoidHom.{u1, u2} α γ _inst_1 _inst_3 _inst_5 _inst_7) α γ _inst_1 _inst_3 _inst_5 _inst_7 (OrderMonoidHom.instOrderMonoidHomClassOrderMonoidHom.{u1, u2} α γ _inst_1 _inst_3 _inst_5 _inst_7))) (OrderMonoidHom.comp.{u1, u3, u2} α β γ _inst_1 _inst_2 _inst_3 _inst_5 _inst_6 _inst_7 f g)) (Function.comp.{succ u1, succ u3, succ u2} α β γ (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (OrderMonoidHom.{u3, u2} β γ _inst_2 _inst_3 _inst_6 _inst_7) β (fun (_x : β) => (fun (x._@.Mathlib.Order.RelIso.Basic._hyg.867 : β) => γ) _x) (RelHomClass.toFunLike.{max u3 u2, u3, u2} (OrderMonoidHom.{u3, u2} β γ _inst_2 _inst_3 _inst_6 _inst_7) β γ (fun (x._@.Mathlib.Order.Hom.Basic._hyg.1896 : β) (x._@.Mathlib.Order.Hom.Basic._hyg.1898 : β) => LE.le.{u3} β (Preorder.toLE.{u3} β _inst_2) x._@.Mathlib.Order.Hom.Basic._hyg.1896 x._@.Mathlib.Order.Hom.Basic._hyg.1898) (fun (x._@.Mathlib.Order.Hom.Basic._hyg.1918 : γ) (x._@.Mathlib.Order.Hom.Basic._hyg.1920 : γ) => LE.le.{u2} γ (Preorder.toLE.{u2} γ _inst_3) x._@.Mathlib.Order.Hom.Basic._hyg.1918 x._@.Mathlib.Order.Hom.Basic._hyg.1920) (OrderMonoidHomClass.toOrderHomClass.{max u3 u2, u3, u2} (OrderMonoidHom.{u3, u2} β γ _inst_2 _inst_3 _inst_6 _inst_7) β γ _inst_2 _inst_3 _inst_6 _inst_7 (OrderMonoidHom.instOrderMonoidHomClassOrderMonoidHom.{u3, u2} β γ _inst_2 _inst_3 _inst_6 _inst_7))) f) (FunLike.coe.{max (succ u1) (succ u3), succ u1, succ u3} (OrderMonoidHom.{u1, u3} α β _inst_1 _inst_2 _inst_5 _inst_6) α (fun (_x : α) => (fun (x._@.Mathlib.Order.RelIso.Basic._hyg.867 : α) => β) _x) (RelHomClass.toFunLike.{max u1 u3, u1, u3} (OrderMonoidHom.{u1, u3} α β _inst_1 _inst_2 _inst_5 _inst_6) α β (fun (x._@.Mathlib.Order.Hom.Basic._hyg.1896 : α) (x._@.Mathlib.Order.Hom.Basic._hyg.1898 : α) => LE.le.{u1} α (Preorder.toLE.{u1} α _inst_1) x._@.Mathlib.Order.Hom.Basic._hyg.1896 x._@.Mathlib.Order.Hom.Basic._hyg.1898) (fun (x._@.Mathlib.Order.Hom.Basic._hyg.1918 : β) (x._@.Mathlib.Order.Hom.Basic._hyg.1920 : β) => LE.le.{u3} β (Preorder.toLE.{u3} β _inst_2) x._@.Mathlib.Order.Hom.Basic._hyg.1918 x._@.Mathlib.Order.Hom.Basic._hyg.1920) (OrderMonoidHomClass.toOrderHomClass.{max u1 u3, u1, u3} (OrderMonoidHom.{u1, u3} α β _inst_1 _inst_2 _inst_5 _inst_6) α β _inst_1 _inst_2 _inst_5 _inst_6 (OrderMonoidHom.instOrderMonoidHomClassOrderMonoidHom.{u1, u3} α β _inst_1 _inst_2 _inst_5 _inst_6))) g))
Case conversion may be inaccurate. Consider using '#align order_monoid_hom.coe_comp OrderMonoidHom.coe_compₓ'. -/
@[simp, to_additive]
theorem coe_comp (f : β →*o γ) (g : α →*o β) : (f.comp g : α → γ) = f ∘ g :=
  rfl
#align order_monoid_hom.coe_comp OrderMonoidHom.coe_comp
#align order_add_monoid_hom.coe_comp OrderAddMonoidHom.coe_comp

/- warning: order_monoid_hom.comp_apply -> OrderMonoidHom.comp_apply is a dubious translation:
lean 3 declaration is
  forall {α : Type.{u1}} {β : Type.{u2}} {γ : Type.{u3}} [_inst_1 : Preorder.{u1} α] [_inst_2 : Preorder.{u2} β] [_inst_3 : Preorder.{u3} γ] [_inst_5 : MulOneClass.{u1} α] [_inst_6 : MulOneClass.{u2} β] [_inst_7 : MulOneClass.{u3} γ] (f : OrderMonoidHom.{u2, u3} β γ _inst_2 _inst_3 _inst_6 _inst_7) (g : OrderMonoidHom.{u1, u2} α β _inst_1 _inst_2 _inst_5 _inst_6) (a : α), Eq.{succ u3} γ (coeFn.{max (succ u1) (succ u3), max (succ u1) (succ u3)} (OrderMonoidHom.{u1, u3} α γ _inst_1 _inst_3 _inst_5 _inst_7) (fun (_x : OrderMonoidHom.{u1, u3} α γ _inst_1 _inst_3 _inst_5 _inst_7) => α -> γ) (OrderMonoidHom.hasCoeToFun.{u1, u3} α γ _inst_1 _inst_3 _inst_5 _inst_7) (OrderMonoidHom.comp.{u1, u2, u3} α β γ _inst_1 _inst_2 _inst_3 _inst_5 _inst_6 _inst_7 f g) a) (coeFn.{max (succ u2) (succ u3), max (succ u2) (succ u3)} (OrderMonoidHom.{u2, u3} β γ _inst_2 _inst_3 _inst_6 _inst_7) (fun (_x : OrderMonoidHom.{u2, u3} β γ _inst_2 _inst_3 _inst_6 _inst_7) => β -> γ) (OrderMonoidHom.hasCoeToFun.{u2, u3} β γ _inst_2 _inst_3 _inst_6 _inst_7) f (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (OrderMonoidHom.{u1, u2} α β _inst_1 _inst_2 _inst_5 _inst_6) (fun (_x : OrderMonoidHom.{u1, u2} α β _inst_1 _inst_2 _inst_5 _inst_6) => α -> β) (OrderMonoidHom.hasCoeToFun.{u1, u2} α β _inst_1 _inst_2 _inst_5 _inst_6) g a))
but is expected to have type
  forall {α : Type.{u1}} {β : Type.{u3}} {γ : Type.{u2}} [_inst_1 : Preorder.{u1} α] [_inst_2 : Preorder.{u3} β] [_inst_3 : Preorder.{u2} γ] [_inst_5 : MulOneClass.{u1} α] [_inst_6 : MulOneClass.{u3} β] [_inst_7 : MulOneClass.{u2} γ] (f : OrderMonoidHom.{u3, u2} β γ _inst_2 _inst_3 _inst_6 _inst_7) (g : OrderMonoidHom.{u1, u3} α β _inst_1 _inst_2 _inst_5 _inst_6) (a : α), Eq.{succ u2} ((fun (x._@.Mathlib.Order.RelIso.Basic._hyg.867 : α) => γ) a) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (OrderMonoidHom.{u1, u2} α γ _inst_1 _inst_3 _inst_5 _inst_7) α (fun (_x : α) => (fun (x._@.Mathlib.Order.RelIso.Basic._hyg.867 : α) => γ) _x) (RelHomClass.toFunLike.{max u1 u2, u1, u2} (OrderMonoidHom.{u1, u2} α γ _inst_1 _inst_3 _inst_5 _inst_7) α γ (fun (x._@.Mathlib.Order.Hom.Basic._hyg.1896 : α) (x._@.Mathlib.Order.Hom.Basic._hyg.1898 : α) => LE.le.{u1} α (Preorder.toLE.{u1} α _inst_1) x._@.Mathlib.Order.Hom.Basic._hyg.1896 x._@.Mathlib.Order.Hom.Basic._hyg.1898) (fun (x._@.Mathlib.Order.Hom.Basic._hyg.1918 : γ) (x._@.Mathlib.Order.Hom.Basic._hyg.1920 : γ) => LE.le.{u2} γ (Preorder.toLE.{u2} γ _inst_3) x._@.Mathlib.Order.Hom.Basic._hyg.1918 x._@.Mathlib.Order.Hom.Basic._hyg.1920) (OrderMonoidHomClass.toOrderHomClass.{max u1 u2, u1, u2} (OrderMonoidHom.{u1, u2} α γ _inst_1 _inst_3 _inst_5 _inst_7) α γ _inst_1 _inst_3 _inst_5 _inst_7 (OrderMonoidHom.instOrderMonoidHomClassOrderMonoidHom.{u1, u2} α γ _inst_1 _inst_3 _inst_5 _inst_7))) (OrderMonoidHom.comp.{u1, u3, u2} α β γ _inst_1 _inst_2 _inst_3 _inst_5 _inst_6 _inst_7 f g) a) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (OrderMonoidHom.{u3, u2} β γ _inst_2 _inst_3 _inst_6 _inst_7) β (fun (_x : β) => (fun (x._@.Mathlib.Order.RelIso.Basic._hyg.867 : β) => γ) _x) (RelHomClass.toFunLike.{max u3 u2, u3, u2} (OrderMonoidHom.{u3, u2} β γ _inst_2 _inst_3 _inst_6 _inst_7) β γ (fun (x._@.Mathlib.Order.Hom.Basic._hyg.1896 : β) (x._@.Mathlib.Order.Hom.Basic._hyg.1898 : β) => LE.le.{u3} β (Preorder.toLE.{u3} β _inst_2) x._@.Mathlib.Order.Hom.Basic._hyg.1896 x._@.Mathlib.Order.Hom.Basic._hyg.1898) (fun (x._@.Mathlib.Order.Hom.Basic._hyg.1918 : γ) (x._@.Mathlib.Order.Hom.Basic._hyg.1920 : γ) => LE.le.{u2} γ (Preorder.toLE.{u2} γ _inst_3) x._@.Mathlib.Order.Hom.Basic._hyg.1918 x._@.Mathlib.Order.Hom.Basic._hyg.1920) (OrderMonoidHomClass.toOrderHomClass.{max u3 u2, u3, u2} (OrderMonoidHom.{u3, u2} β γ _inst_2 _inst_3 _inst_6 _inst_7) β γ _inst_2 _inst_3 _inst_6 _inst_7 (OrderMonoidHom.instOrderMonoidHomClassOrderMonoidHom.{u3, u2} β γ _inst_2 _inst_3 _inst_6 _inst_7))) f (FunLike.coe.{max (succ u1) (succ u3), succ u1, succ u3} (OrderMonoidHom.{u1, u3} α β _inst_1 _inst_2 _inst_5 _inst_6) α (fun (_x : α) => (fun (x._@.Mathlib.Order.RelIso.Basic._hyg.867 : α) => β) _x) (RelHomClass.toFunLike.{max u1 u3, u1, u3} (OrderMonoidHom.{u1, u3} α β _inst_1 _inst_2 _inst_5 _inst_6) α β (fun (x._@.Mathlib.Order.Hom.Basic._hyg.1896 : α) (x._@.Mathlib.Order.Hom.Basic._hyg.1898 : α) => LE.le.{u1} α (Preorder.toLE.{u1} α _inst_1) x._@.Mathlib.Order.Hom.Basic._hyg.1896 x._@.Mathlib.Order.Hom.Basic._hyg.1898) (fun (x._@.Mathlib.Order.Hom.Basic._hyg.1918 : β) (x._@.Mathlib.Order.Hom.Basic._hyg.1920 : β) => LE.le.{u3} β (Preorder.toLE.{u3} β _inst_2) x._@.Mathlib.Order.Hom.Basic._hyg.1918 x._@.Mathlib.Order.Hom.Basic._hyg.1920) (OrderMonoidHomClass.toOrderHomClass.{max u1 u3, u1, u3} (OrderMonoidHom.{u1, u3} α β _inst_1 _inst_2 _inst_5 _inst_6) α β _inst_1 _inst_2 _inst_5 _inst_6 (OrderMonoidHom.instOrderMonoidHomClassOrderMonoidHom.{u1, u3} α β _inst_1 _inst_2 _inst_5 _inst_6))) g a))
Case conversion may be inaccurate. Consider using '#align order_monoid_hom.comp_apply OrderMonoidHom.comp_applyₓ'. -/
@[simp, to_additive]
theorem comp_apply (f : β →*o γ) (g : α →*o β) (a : α) : (f.comp g) a = f (g a) :=
  rfl
#align order_monoid_hom.comp_apply OrderMonoidHom.comp_apply
#align order_add_monoid_hom.comp_apply OrderAddMonoidHom.comp_apply

/- warning: order_monoid_hom.coe_comp_monoid_hom -> OrderMonoidHom.coe_comp_monoidHom is a dubious translation:
lean 3 declaration is
  forall {α : Type.{u1}} {β : Type.{u2}} {γ : Type.{u3}} [_inst_1 : Preorder.{u1} α] [_inst_2 : Preorder.{u2} β] [_inst_3 : Preorder.{u3} γ] [_inst_5 : MulOneClass.{u1} α] [_inst_6 : MulOneClass.{u2} β] [_inst_7 : MulOneClass.{u3} γ] (f : OrderMonoidHom.{u2, u3} β γ _inst_2 _inst_3 _inst_6 _inst_7) (g : OrderMonoidHom.{u1, u2} α β _inst_1 _inst_2 _inst_5 _inst_6), Eq.{max (succ u3) (succ u1)} (MonoidHom.{u1, u3} α γ _inst_5 _inst_7) ((fun (a : Sort.{max (succ u1) (succ u3)}) (b : Sort.{max (succ u3) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u3), max (succ u3) (succ u1)} a b] => self.0) (OrderMonoidHom.{u1, u3} α γ _inst_1 _inst_3 _inst_5 _inst_7) (MonoidHom.{u1, u3} α γ _inst_5 _inst_7) (HasLiftT.mk.{max (succ u1) (succ u3), max (succ u3) (succ u1)} (OrderMonoidHom.{u1, u3} α γ _inst_1 _inst_3 _inst_5 _inst_7) (MonoidHom.{u1, u3} α γ _inst_5 _inst_7) (CoeTCₓ.coe.{max (succ u1) (succ u3), max (succ u3) (succ u1)} (OrderMonoidHom.{u1, u3} α γ _inst_1 _inst_3 _inst_5 _inst_7) (MonoidHom.{u1, u3} α γ _inst_5 _inst_7) (MonoidHom.hasCoeT.{u1, u3, max u1 u3} α γ (OrderMonoidHom.{u1, u3} α γ _inst_1 _inst_3 _inst_5 _inst_7) _inst_5 _inst_7 (OrderMonoidHomClass.toMonoidHomClass.{max u1 u3, u1, u3} (OrderMonoidHom.{u1, u3} α γ _inst_1 _inst_3 _inst_5 _inst_7) α γ _inst_1 _inst_3 _inst_5 _inst_7 (OrderMonoidHom.orderMonoidHomClass.{u1, u3} α γ _inst_1 _inst_3 _inst_5 _inst_7))))) (OrderMonoidHom.comp.{u1, u2, u3} α β γ _inst_1 _inst_2 _inst_3 _inst_5 _inst_6 _inst_7 f g)) (MonoidHom.comp.{u1, u2, u3} α β γ _inst_5 _inst_6 _inst_7 ((fun (a : Sort.{max (succ u2) (succ u3)}) (b : Sort.{max (succ u3) (succ u2)}) [self : HasLiftT.{max (succ u2) (succ u3), max (succ u3) (succ u2)} a b] => self.0) (OrderMonoidHom.{u2, u3} β γ _inst_2 _inst_3 _inst_6 _inst_7) (MonoidHom.{u2, u3} β γ _inst_6 _inst_7) (HasLiftT.mk.{max (succ u2) (succ u3), max (succ u3) (succ u2)} (OrderMonoidHom.{u2, u3} β γ _inst_2 _inst_3 _inst_6 _inst_7) (MonoidHom.{u2, u3} β γ _inst_6 _inst_7) (CoeTCₓ.coe.{max (succ u2) (succ u3), max (succ u3) (succ u2)} (OrderMonoidHom.{u2, u3} β γ _inst_2 _inst_3 _inst_6 _inst_7) (MonoidHom.{u2, u3} β γ _inst_6 _inst_7) (MonoidHom.hasCoeT.{u2, u3, max u2 u3} β γ (OrderMonoidHom.{u2, u3} β γ _inst_2 _inst_3 _inst_6 _inst_7) _inst_6 _inst_7 (OrderMonoidHomClass.toMonoidHomClass.{max u2 u3, u2, u3} (OrderMonoidHom.{u2, u3} β γ _inst_2 _inst_3 _inst_6 _inst_7) β γ _inst_2 _inst_3 _inst_6 _inst_7 (OrderMonoidHom.orderMonoidHomClass.{u2, u3} β γ _inst_2 _inst_3 _inst_6 _inst_7))))) f) ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (OrderMonoidHom.{u1, u2} α β _inst_1 _inst_2 _inst_5 _inst_6) (MonoidHom.{u1, u2} α β _inst_5 _inst_6) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (OrderMonoidHom.{u1, u2} α β _inst_1 _inst_2 _inst_5 _inst_6) (MonoidHom.{u1, u2} α β _inst_5 _inst_6) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (OrderMonoidHom.{u1, u2} α β _inst_1 _inst_2 _inst_5 _inst_6) (MonoidHom.{u1, u2} α β _inst_5 _inst_6) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} α β (OrderMonoidHom.{u1, u2} α β _inst_1 _inst_2 _inst_5 _inst_6) _inst_5 _inst_6 (OrderMonoidHomClass.toMonoidHomClass.{max u1 u2, u1, u2} (OrderMonoidHom.{u1, u2} α β _inst_1 _inst_2 _inst_5 _inst_6) α β _inst_1 _inst_2 _inst_5 _inst_6 (OrderMonoidHom.orderMonoidHomClass.{u1, u2} α β _inst_1 _inst_2 _inst_5 _inst_6))))) g))
but is expected to have type
  forall {α : Type.{u1}} {β : Type.{u3}} {γ : Type.{u2}} [_inst_1 : Preorder.{u1} α] [_inst_2 : Preorder.{u3} β] [_inst_3 : Preorder.{u2} γ] [_inst_5 : MulOneClass.{u1} α] [_inst_6 : MulOneClass.{u3} β] [_inst_7 : MulOneClass.{u2} γ] (f : OrderMonoidHom.{u3, u2} β γ _inst_2 _inst_3 _inst_6 _inst_7) (g : OrderMonoidHom.{u1, u3} α β _inst_1 _inst_2 _inst_5 _inst_6), Eq.{max (succ u1) (succ u2)} (MonoidHom.{u1, u2} α γ _inst_5 _inst_7) (MonoidHomClass.toMonoidHom.{u1, u2, max u1 u2} α γ (OrderMonoidHom.{u1, u2} α γ _inst_1 _inst_3 _inst_5 _inst_7) _inst_5 _inst_7 (OrderMonoidHomClass.toMonoidHomClass.{max u1 u2, u1, u2} (OrderMonoidHom.{u1, u2} α γ _inst_1 _inst_3 _inst_5 _inst_7) α γ _inst_1 _inst_3 _inst_5 _inst_7 (OrderMonoidHom.instOrderMonoidHomClassOrderMonoidHom.{u1, u2} α γ _inst_1 _inst_3 _inst_5 _inst_7)) (OrderMonoidHom.comp.{u1, u3, u2} α β γ _inst_1 _inst_2 _inst_3 _inst_5 _inst_6 _inst_7 f g)) (MonoidHom.comp.{u1, u3, u2} α β γ _inst_5 _inst_6 _inst_7 (MonoidHomClass.toMonoidHom.{u3, u2, max u3 u2} β γ (OrderMonoidHom.{u3, u2} β γ _inst_2 _inst_3 _inst_6 _inst_7) _inst_6 _inst_7 (OrderMonoidHomClass.toMonoidHomClass.{max u3 u2, u3, u2} (OrderMonoidHom.{u3, u2} β γ _inst_2 _inst_3 _inst_6 _inst_7) β γ _inst_2 _inst_3 _inst_6 _inst_7 (OrderMonoidHom.instOrderMonoidHomClassOrderMonoidHom.{u3, u2} β γ _inst_2 _inst_3 _inst_6 _inst_7)) f) (MonoidHomClass.toMonoidHom.{u1, u3, max u1 u3} α β (OrderMonoidHom.{u1, u3} α β _inst_1 _inst_2 _inst_5 _inst_6) _inst_5 _inst_6 (OrderMonoidHomClass.toMonoidHomClass.{max u1 u3, u1, u3} (OrderMonoidHom.{u1, u3} α β _inst_1 _inst_2 _inst_5 _inst_6) α β _inst_1 _inst_2 _inst_5 _inst_6 (OrderMonoidHom.instOrderMonoidHomClassOrderMonoidHom.{u1, u3} α β _inst_1 _inst_2 _inst_5 _inst_6)) g))
Case conversion may be inaccurate. Consider using '#align order_monoid_hom.coe_comp_monoid_hom OrderMonoidHom.coe_comp_monoidHomₓ'. -/
@[simp, to_additive]
theorem coe_comp_monoidHom (f : β →*o γ) (g : α →*o β) :
    (f.comp g : α →* γ) = (f : β →* γ).comp g :=
  rfl
#align order_monoid_hom.coe_comp_monoid_hom OrderMonoidHom.coe_comp_monoidHom
#align order_add_monoid_hom.coe_comp_add_monoid_hom OrderAddMonoidHom.coe_comp_addMonoidHom

/- warning: order_monoid_hom.coe_comp_order_hom -> OrderMonoidHom.coe_comp_orderHom is a dubious translation:
lean 3 declaration is
  forall {α : Type.{u1}} {β : Type.{u2}} {γ : Type.{u3}} [_inst_1 : Preorder.{u1} α] [_inst_2 : Preorder.{u2} β] [_inst_3 : Preorder.{u3} γ] [_inst_5 : MulOneClass.{u1} α] [_inst_6 : MulOneClass.{u2} β] [_inst_7 : MulOneClass.{u3} γ] (f : OrderMonoidHom.{u2, u3} β γ _inst_2 _inst_3 _inst_6 _inst_7) (g : OrderMonoidHom.{u1, u2} α β _inst_1 _inst_2 _inst_5 _inst_6), Eq.{max (succ u1) (succ u3)} (OrderHom.{u1, u3} α γ _inst_1 _inst_3) ((fun (a : Sort.{max (succ u1) (succ u3)}) (b : Sort.{max (succ u1) (succ u3)}) [self : HasLiftT.{max (succ u1) (succ u3), max (succ u1) (succ u3)} a b] => self.0) (OrderMonoidHom.{u1, u3} α γ _inst_1 _inst_3 _inst_5 _inst_7) (OrderHom.{u1, u3} α γ _inst_1 _inst_3) (HasLiftT.mk.{max (succ u1) (succ u3), max (succ u1) (succ u3)} (OrderMonoidHom.{u1, u3} α γ _inst_1 _inst_3 _inst_5 _inst_7) (OrderHom.{u1, u3} α γ _inst_1 _inst_3) (CoeTCₓ.coe.{max (succ u1) (succ u3), max (succ u1) (succ u3)} (OrderMonoidHom.{u1, u3} α γ _inst_1 _inst_3 _inst_5 _inst_7) (OrderHom.{u1, u3} α γ _inst_1 _inst_3) (OrderHomClass.OrderHom.hasCoeT.{max u1 u3, u1, u3} (OrderMonoidHom.{u1, u3} α γ _inst_1 _inst_3 _inst_5 _inst_7) α γ _inst_1 _inst_3 (OrderMonoidHomClass.toOrderHomClass.{max u1 u3, u1, u3} (OrderMonoidHom.{u1, u3} α γ _inst_1 _inst_3 _inst_5 _inst_7) α γ _inst_1 _inst_3 _inst_5 _inst_7 (OrderMonoidHom.orderMonoidHomClass.{u1, u3} α γ _inst_1 _inst_3 _inst_5 _inst_7))))) (OrderMonoidHom.comp.{u1, u2, u3} α β γ _inst_1 _inst_2 _inst_3 _inst_5 _inst_6 _inst_7 f g)) (OrderHom.comp.{u1, u2, u3} α β γ _inst_1 _inst_2 _inst_3 ((fun (a : Sort.{max (succ u2) (succ u3)}) (b : Sort.{max (succ u2) (succ u3)}) [self : HasLiftT.{max (succ u2) (succ u3), max (succ u2) (succ u3)} a b] => self.0) (OrderMonoidHom.{u2, u3} β γ _inst_2 _inst_3 _inst_6 _inst_7) (OrderHom.{u2, u3} β γ _inst_2 _inst_3) (HasLiftT.mk.{max (succ u2) (succ u3), max (succ u2) (succ u3)} (OrderMonoidHom.{u2, u3} β γ _inst_2 _inst_3 _inst_6 _inst_7) (OrderHom.{u2, u3} β γ _inst_2 _inst_3) (CoeTCₓ.coe.{max (succ u2) (succ u3), max (succ u2) (succ u3)} (OrderMonoidHom.{u2, u3} β γ _inst_2 _inst_3 _inst_6 _inst_7) (OrderHom.{u2, u3} β γ _inst_2 _inst_3) (OrderHomClass.OrderHom.hasCoeT.{max u2 u3, u2, u3} (OrderMonoidHom.{u2, u3} β γ _inst_2 _inst_3 _inst_6 _inst_7) β γ _inst_2 _inst_3 (OrderMonoidHomClass.toOrderHomClass.{max u2 u3, u2, u3} (OrderMonoidHom.{u2, u3} β γ _inst_2 _inst_3 _inst_6 _inst_7) β γ _inst_2 _inst_3 _inst_6 _inst_7 (OrderMonoidHom.orderMonoidHomClass.{u2, u3} β γ _inst_2 _inst_3 _inst_6 _inst_7))))) f) ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u1) (succ u2)} a b] => self.0) (OrderMonoidHom.{u1, u2} α β _inst_1 _inst_2 _inst_5 _inst_6) (OrderHom.{u1, u2} α β _inst_1 _inst_2) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (OrderMonoidHom.{u1, u2} α β _inst_1 _inst_2 _inst_5 _inst_6) (OrderHom.{u1, u2} α β _inst_1 _inst_2) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (OrderMonoidHom.{u1, u2} α β _inst_1 _inst_2 _inst_5 _inst_6) (OrderHom.{u1, u2} α β _inst_1 _inst_2) (OrderHomClass.OrderHom.hasCoeT.{max u1 u2, u1, u2} (OrderMonoidHom.{u1, u2} α β _inst_1 _inst_2 _inst_5 _inst_6) α β _inst_1 _inst_2 (OrderMonoidHomClass.toOrderHomClass.{max u1 u2, u1, u2} (OrderMonoidHom.{u1, u2} α β _inst_1 _inst_2 _inst_5 _inst_6) α β _inst_1 _inst_2 _inst_5 _inst_6 (OrderMonoidHom.orderMonoidHomClass.{u1, u2} α β _inst_1 _inst_2 _inst_5 _inst_6))))) g))
but is expected to have type
  forall {α : Type.{u1}} {β : Type.{u3}} {γ : Type.{u2}} [_inst_1 : Preorder.{u1} α] [_inst_2 : Preorder.{u3} β] [_inst_3 : Preorder.{u2} γ] [_inst_5 : MulOneClass.{u1} α] [_inst_6 : MulOneClass.{u3} β] [_inst_7 : MulOneClass.{u2} γ] (f : OrderMonoidHom.{u3, u2} β γ _inst_2 _inst_3 _inst_6 _inst_7) (g : OrderMonoidHom.{u1, u3} α β _inst_1 _inst_2 _inst_5 _inst_6), Eq.{max (succ u1) (succ u2)} (OrderHom.{u1, u2} α γ _inst_1 _inst_3) (OrderHomClass.toOrderHom.{max u1 u2, u1, u2} (OrderMonoidHom.{u1, u2} α γ _inst_1 _inst_3 _inst_5 _inst_7) α γ _inst_1 _inst_3 (OrderMonoidHomClass.toOrderHomClass.{max u1 u2, u1, u2} (OrderMonoidHom.{u1, u2} α γ _inst_1 _inst_3 _inst_5 _inst_7) α γ _inst_1 _inst_3 _inst_5 _inst_7 (OrderMonoidHom.instOrderMonoidHomClassOrderMonoidHom.{u1, u2} α γ _inst_1 _inst_3 _inst_5 _inst_7)) (OrderMonoidHom.comp.{u1, u3, u2} α β γ _inst_1 _inst_2 _inst_3 _inst_5 _inst_6 _inst_7 f g)) (OrderHom.comp.{u1, u3, u2} α β γ _inst_1 _inst_2 _inst_3 (OrderHomClass.toOrderHom.{max u3 u2, u3, u2} (OrderMonoidHom.{u3, u2} β γ _inst_2 _inst_3 _inst_6 _inst_7) β γ _inst_2 _inst_3 (OrderMonoidHomClass.toOrderHomClass.{max u3 u2, u3, u2} (OrderMonoidHom.{u3, u2} β γ _inst_2 _inst_3 _inst_6 _inst_7) β γ _inst_2 _inst_3 _inst_6 _inst_7 (OrderMonoidHom.instOrderMonoidHomClassOrderMonoidHom.{u3, u2} β γ _inst_2 _inst_3 _inst_6 _inst_7)) f) (OrderHomClass.toOrderHom.{max u1 u3, u1, u3} (OrderMonoidHom.{u1, u3} α β _inst_1 _inst_2 _inst_5 _inst_6) α β _inst_1 _inst_2 (OrderMonoidHomClass.toOrderHomClass.{max u1 u3, u1, u3} (OrderMonoidHom.{u1, u3} α β _inst_1 _inst_2 _inst_5 _inst_6) α β _inst_1 _inst_2 _inst_5 _inst_6 (OrderMonoidHom.instOrderMonoidHomClassOrderMonoidHom.{u1, u3} α β _inst_1 _inst_2 _inst_5 _inst_6)) g))
Case conversion may be inaccurate. Consider using '#align order_monoid_hom.coe_comp_order_hom OrderMonoidHom.coe_comp_orderHomₓ'. -/
@[simp, to_additive]
theorem coe_comp_orderHom (f : β →*o γ) (g : α →*o β) : (f.comp g : α →o γ) = (f : β →o γ).comp g :=
  rfl
#align order_monoid_hom.coe_comp_order_hom OrderMonoidHom.coe_comp_orderHom
#align order_add_monoid_hom.coe_comp_order_hom OrderAddMonoidHom.coe_comp_orderHom

/- warning: order_monoid_hom.comp_assoc -> OrderMonoidHom.comp_assoc is a dubious translation:
lean 3 declaration is
  forall {α : Type.{u1}} {β : Type.{u2}} {γ : Type.{u3}} {δ : Type.{u4}} [_inst_1 : Preorder.{u1} α] [_inst_2 : Preorder.{u2} β] [_inst_3 : Preorder.{u3} γ] [_inst_4 : Preorder.{u4} δ] [_inst_5 : MulOneClass.{u1} α] [_inst_6 : MulOneClass.{u2} β] [_inst_7 : MulOneClass.{u3} γ] [_inst_8 : MulOneClass.{u4} δ] (f : OrderMonoidHom.{u3, u4} γ δ _inst_3 _inst_4 _inst_7 _inst_8) (g : OrderMonoidHom.{u2, u3} β γ _inst_2 _inst_3 _inst_6 _inst_7) (h : OrderMonoidHom.{u1, u2} α β _inst_1 _inst_2 _inst_5 _inst_6), Eq.{max (succ u1) (succ u4)} (OrderMonoidHom.{u1, u4} α δ _inst_1 _inst_4 _inst_5 _inst_8) (OrderMonoidHom.comp.{u1, u2, u4} α β δ _inst_1 _inst_2 _inst_4 _inst_5 _inst_6 _inst_8 (OrderMonoidHom.comp.{u2, u3, u4} β γ δ _inst_2 _inst_3 _inst_4 _inst_6 _inst_7 _inst_8 f g) h) (OrderMonoidHom.comp.{u1, u3, u4} α γ δ _inst_1 _inst_3 _inst_4 _inst_5 _inst_7 _inst_8 f (OrderMonoidHom.comp.{u1, u2, u3} α β γ _inst_1 _inst_2 _inst_3 _inst_5 _inst_6 _inst_7 g h))
but is expected to have type
  forall {α : Type.{u1}} {β : Type.{u2}} {γ : Type.{u4}} {δ : Type.{u3}} [_inst_1 : Preorder.{u1} α] [_inst_2 : Preorder.{u2} β] [_inst_3 : Preorder.{u4} γ] [_inst_4 : Preorder.{u3} δ] [_inst_5 : MulOneClass.{u1} α] [_inst_6 : MulOneClass.{u2} β] [_inst_7 : MulOneClass.{u4} γ] [_inst_8 : MulOneClass.{u3} δ] (f : OrderMonoidHom.{u4, u3} γ δ _inst_3 _inst_4 _inst_7 _inst_8) (g : OrderMonoidHom.{u2, u4} β γ _inst_2 _inst_3 _inst_6 _inst_7) (h : OrderMonoidHom.{u1, u2} α β _inst_1 _inst_2 _inst_5 _inst_6), Eq.{max (succ u1) (succ u3)} (OrderMonoidHom.{u1, u3} α δ _inst_1 _inst_4 _inst_5 _inst_8) (OrderMonoidHom.comp.{u1, u2, u3} α β δ _inst_1 _inst_2 _inst_4 _inst_5 _inst_6 _inst_8 (OrderMonoidHom.comp.{u2, u4, u3} β γ δ _inst_2 _inst_3 _inst_4 _inst_6 _inst_7 _inst_8 f g) h) (OrderMonoidHom.comp.{u1, u4, u3} α γ δ _inst_1 _inst_3 _inst_4 _inst_5 _inst_7 _inst_8 f (OrderMonoidHom.comp.{u1, u2, u4} α β γ _inst_1 _inst_2 _inst_3 _inst_5 _inst_6 _inst_7 g h))
Case conversion may be inaccurate. Consider using '#align order_monoid_hom.comp_assoc OrderMonoidHom.comp_assocₓ'. -/
@[simp, to_additive]
theorem comp_assoc (f : γ →*o δ) (g : β →*o γ) (h : α →*o β) :
    (f.comp g).comp h = f.comp (g.comp h) :=
  rfl
#align order_monoid_hom.comp_assoc OrderMonoidHom.comp_assoc
#align order_add_monoid_hom.comp_assoc OrderAddMonoidHom.comp_assoc

/- warning: order_monoid_hom.comp_id -> OrderMonoidHom.comp_id is a dubious translation:
lean 3 declaration is
  forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : Preorder.{u1} α] [_inst_2 : Preorder.{u2} β] [_inst_5 : MulOneClass.{u1} α] [_inst_6 : MulOneClass.{u2} β] (f : OrderMonoidHom.{u1, u2} α β _inst_1 _inst_2 _inst_5 _inst_6), Eq.{max (succ u1) (succ u2)} (OrderMonoidHom.{u1, u2} α β _inst_1 _inst_2 _inst_5 _inst_6) (OrderMonoidHom.comp.{u1, u1, u2} α α β _inst_1 _inst_1 _inst_2 _inst_5 _inst_5 _inst_6 f (OrderMonoidHom.id.{u1} α _inst_1 _inst_5)) f
but is expected to have type
  forall {α : Type.{u2}} {β : Type.{u1}} [_inst_1 : Preorder.{u2} α] [_inst_2 : Preorder.{u1} β] [_inst_5 : MulOneClass.{u2} α] [_inst_6 : MulOneClass.{u1} β] (f : OrderMonoidHom.{u2, u1} α β _inst_1 _inst_2 _inst_5 _inst_6), Eq.{max (succ u2) (succ u1)} (OrderMonoidHom.{u2, u1} α β _inst_1 _inst_2 _inst_5 _inst_6) (OrderMonoidHom.comp.{u2, u2, u1} α α β _inst_1 _inst_1 _inst_2 _inst_5 _inst_5 _inst_6 f (OrderMonoidHom.id.{u2} α _inst_1 _inst_5)) f
Case conversion may be inaccurate. Consider using '#align order_monoid_hom.comp_id OrderMonoidHom.comp_idₓ'. -/
@[simp, to_additive]
theorem comp_id (f : α →*o β) : f.comp (OrderMonoidHom.id α) = f :=
  ext fun a => rfl
#align order_monoid_hom.comp_id OrderMonoidHom.comp_id
#align order_add_monoid_hom.comp_id OrderAddMonoidHom.comp_id

/- warning: order_monoid_hom.id_comp -> OrderMonoidHom.id_comp is a dubious translation:
lean 3 declaration is
  forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : Preorder.{u1} α] [_inst_2 : Preorder.{u2} β] [_inst_5 : MulOneClass.{u1} α] [_inst_6 : MulOneClass.{u2} β] (f : OrderMonoidHom.{u1, u2} α β _inst_1 _inst_2 _inst_5 _inst_6), Eq.{max (succ u1) (succ u2)} (OrderMonoidHom.{u1, u2} α β _inst_1 _inst_2 _inst_5 _inst_6) (OrderMonoidHom.comp.{u1, u2, u2} α β β _inst_1 _inst_2 _inst_2 _inst_5 _inst_6 _inst_6 (OrderMonoidHom.id.{u2} β _inst_2 _inst_6) f) f
but is expected to have type
  forall {α : Type.{u2}} {β : Type.{u1}} [_inst_1 : Preorder.{u2} α] [_inst_2 : Preorder.{u1} β] [_inst_5 : MulOneClass.{u2} α] [_inst_6 : MulOneClass.{u1} β] (f : OrderMonoidHom.{u2, u1} α β _inst_1 _inst_2 _inst_5 _inst_6), Eq.{max (succ u2) (succ u1)} (OrderMonoidHom.{u2, u1} α β _inst_1 _inst_2 _inst_5 _inst_6) (OrderMonoidHom.comp.{u2, u1, u1} α β β _inst_1 _inst_2 _inst_2 _inst_5 _inst_6 _inst_6 (OrderMonoidHom.id.{u1} β _inst_2 _inst_6) f) f
Case conversion may be inaccurate. Consider using '#align order_monoid_hom.id_comp OrderMonoidHom.id_compₓ'. -/
@[simp, to_additive]
theorem id_comp (f : α →*o β) : (OrderMonoidHom.id β).comp f = f :=
  ext fun a => rfl
#align order_monoid_hom.id_comp OrderMonoidHom.id_comp
#align order_add_monoid_hom.id_comp OrderAddMonoidHom.id_comp

/- warning: order_monoid_hom.cancel_right -> OrderMonoidHom.cancel_right is a dubious translation:
lean 3 declaration is
  forall {α : Type.{u1}} {β : Type.{u2}} {γ : Type.{u3}} [_inst_1 : Preorder.{u1} α] [_inst_2 : Preorder.{u2} β] [_inst_3 : Preorder.{u3} γ] [_inst_5 : MulOneClass.{u1} α] [_inst_6 : MulOneClass.{u2} β] [_inst_7 : MulOneClass.{u3} γ] {g₁ : OrderMonoidHom.{u2, u3} β γ _inst_2 _inst_3 _inst_6 _inst_7} {g₂ : OrderMonoidHom.{u2, u3} β γ _inst_2 _inst_3 _inst_6 _inst_7} {f : OrderMonoidHom.{u1, u2} α β _inst_1 _inst_2 _inst_5 _inst_6}, (Function.Surjective.{succ u1, succ u2} α β (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (OrderMonoidHom.{u1, u2} α β _inst_1 _inst_2 _inst_5 _inst_6) (fun (_x : OrderMonoidHom.{u1, u2} α β _inst_1 _inst_2 _inst_5 _inst_6) => α -> β) (OrderMonoidHom.hasCoeToFun.{u1, u2} α β _inst_1 _inst_2 _inst_5 _inst_6) f)) -> (Iff (Eq.{max (succ u1) (succ u3)} (OrderMonoidHom.{u1, u3} α γ _inst_1 _inst_3 _inst_5 _inst_7) (OrderMonoidHom.comp.{u1, u2, u3} α β γ _inst_1 _inst_2 _inst_3 _inst_5 _inst_6 _inst_7 g₁ f) (OrderMonoidHom.comp.{u1, u2, u3} α β γ _inst_1 _inst_2 _inst_3 _inst_5 _inst_6 _inst_7 g₂ f)) (Eq.{max (succ u2) (succ u3)} (OrderMonoidHom.{u2, u3} β γ _inst_2 _inst_3 _inst_6 _inst_7) g₁ g₂))
but is expected to have type
  forall {α : Type.{u1}} {β : Type.{u3}} {γ : Type.{u2}} [_inst_1 : Preorder.{u1} α] [_inst_2 : Preorder.{u3} β] [_inst_3 : Preorder.{u2} γ] [_inst_5 : MulOneClass.{u1} α] [_inst_6 : MulOneClass.{u3} β] [_inst_7 : MulOneClass.{u2} γ] {g₁ : OrderMonoidHom.{u3, u2} β γ _inst_2 _inst_3 _inst_6 _inst_7} {g₂ : OrderMonoidHom.{u3, u2} β γ _inst_2 _inst_3 _inst_6 _inst_7} {f : OrderMonoidHom.{u1, u3} α β _inst_1 _inst_2 _inst_5 _inst_6}, (Function.Surjective.{succ u1, succ u3} α β (FunLike.coe.{max (succ u1) (succ u3), succ u1, succ u3} (OrderMonoidHom.{u1, u3} α β _inst_1 _inst_2 _inst_5 _inst_6) α (fun (_x : α) => (fun (x._@.Mathlib.Order.RelIso.Basic._hyg.867 : α) => β) _x) (RelHomClass.toFunLike.{max u1 u3, u1, u3} (OrderMonoidHom.{u1, u3} α β _inst_1 _inst_2 _inst_5 _inst_6) α β (fun (x._@.Mathlib.Order.Hom.Basic._hyg.1896 : α) (x._@.Mathlib.Order.Hom.Basic._hyg.1898 : α) => LE.le.{u1} α (Preorder.toLE.{u1} α _inst_1) x._@.Mathlib.Order.Hom.Basic._hyg.1896 x._@.Mathlib.Order.Hom.Basic._hyg.1898) (fun (x._@.Mathlib.Order.Hom.Basic._hyg.1918 : β) (x._@.Mathlib.Order.Hom.Basic._hyg.1920 : β) => LE.le.{u3} β (Preorder.toLE.{u3} β _inst_2) x._@.Mathlib.Order.Hom.Basic._hyg.1918 x._@.Mathlib.Order.Hom.Basic._hyg.1920) (OrderMonoidHomClass.toOrderHomClass.{max u1 u3, u1, u3} (OrderMonoidHom.{u1, u3} α β _inst_1 _inst_2 _inst_5 _inst_6) α β _inst_1 _inst_2 _inst_5 _inst_6 (OrderMonoidHom.instOrderMonoidHomClassOrderMonoidHom.{u1, u3} α β _inst_1 _inst_2 _inst_5 _inst_6))) f)) -> (Iff (Eq.{max (succ u1) (succ u2)} (OrderMonoidHom.{u1, u2} α γ _inst_1 _inst_3 _inst_5 _inst_7) (OrderMonoidHom.comp.{u1, u3, u2} α β γ _inst_1 _inst_2 _inst_3 _inst_5 _inst_6 _inst_7 g₁ f) (OrderMonoidHom.comp.{u1, u3, u2} α β γ _inst_1 _inst_2 _inst_3 _inst_5 _inst_6 _inst_7 g₂ f)) (Eq.{max (succ u3) (succ u2)} (OrderMonoidHom.{u3, u2} β γ _inst_2 _inst_3 _inst_6 _inst_7) g₁ g₂))
Case conversion may be inaccurate. Consider using '#align order_monoid_hom.cancel_right OrderMonoidHom.cancel_rightₓ'. -/
@[to_additive]
theorem cancel_right {g₁ g₂ : β →*o γ} {f : α →*o β} (hf : Function.Surjective f) :
    g₁.comp f = g₂.comp f ↔ g₁ = g₂ :=
  ⟨fun h => ext <| hf.forall.2 <| FunLike.ext_iff.1 h, congr_arg _⟩
#align order_monoid_hom.cancel_right OrderMonoidHom.cancel_right
#align order_add_monoid_hom.cancel_right OrderAddMonoidHom.cancel_right

/- warning: order_monoid_hom.cancel_left -> OrderMonoidHom.cancel_left is a dubious translation:
lean 3 declaration is
  forall {α : Type.{u1}} {β : Type.{u2}} {γ : Type.{u3}} [_inst_1 : Preorder.{u1} α] [_inst_2 : Preorder.{u2} β] [_inst_3 : Preorder.{u3} γ] [_inst_5 : MulOneClass.{u1} α] [_inst_6 : MulOneClass.{u2} β] [_inst_7 : MulOneClass.{u3} γ] {g : OrderMonoidHom.{u2, u3} β γ _inst_2 _inst_3 _inst_6 _inst_7} {f₁ : OrderMonoidHom.{u1, u2} α β _inst_1 _inst_2 _inst_5 _inst_6} {f₂ : OrderMonoidHom.{u1, u2} α β _inst_1 _inst_2 _inst_5 _inst_6}, (Function.Injective.{succ u2, succ u3} β γ (coeFn.{max (succ u2) (succ u3), max (succ u2) (succ u3)} (OrderMonoidHom.{u2, u3} β γ _inst_2 _inst_3 _inst_6 _inst_7) (fun (_x : OrderMonoidHom.{u2, u3} β γ _inst_2 _inst_3 _inst_6 _inst_7) => β -> γ) (OrderMonoidHom.hasCoeToFun.{u2, u3} β γ _inst_2 _inst_3 _inst_6 _inst_7) g)) -> (Iff (Eq.{max (succ u1) (succ u3)} (OrderMonoidHom.{u1, u3} α γ _inst_1 _inst_3 _inst_5 _inst_7) (OrderMonoidHom.comp.{u1, u2, u3} α β γ _inst_1 _inst_2 _inst_3 _inst_5 _inst_6 _inst_7 g f₁) (OrderMonoidHom.comp.{u1, u2, u3} α β γ _inst_1 _inst_2 _inst_3 _inst_5 _inst_6 _inst_7 g f₂)) (Eq.{max (succ u1) (succ u2)} (OrderMonoidHom.{u1, u2} α β _inst_1 _inst_2 _inst_5 _inst_6) f₁ f₂))
but is expected to have type
  forall {α : Type.{u1}} {β : Type.{u3}} {γ : Type.{u2}} [_inst_1 : Preorder.{u1} α] [_inst_2 : Preorder.{u3} β] [_inst_3 : Preorder.{u2} γ] [_inst_5 : MulOneClass.{u1} α] [_inst_6 : MulOneClass.{u3} β] [_inst_7 : MulOneClass.{u2} γ] {g : OrderMonoidHom.{u3, u2} β γ _inst_2 _inst_3 _inst_6 _inst_7} {f₁ : OrderMonoidHom.{u1, u3} α β _inst_1 _inst_2 _inst_5 _inst_6} {f₂ : OrderMonoidHom.{u1, u3} α β _inst_1 _inst_2 _inst_5 _inst_6}, (Function.Injective.{succ u3, succ u2} β γ (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (OrderMonoidHom.{u3, u2} β γ _inst_2 _inst_3 _inst_6 _inst_7) β (fun (_x : β) => (fun (x._@.Mathlib.Order.RelIso.Basic._hyg.867 : β) => γ) _x) (RelHomClass.toFunLike.{max u3 u2, u3, u2} (OrderMonoidHom.{u3, u2} β γ _inst_2 _inst_3 _inst_6 _inst_7) β γ (fun (x._@.Mathlib.Order.Hom.Basic._hyg.1896 : β) (x._@.Mathlib.Order.Hom.Basic._hyg.1898 : β) => LE.le.{u3} β (Preorder.toLE.{u3} β _inst_2) x._@.Mathlib.Order.Hom.Basic._hyg.1896 x._@.Mathlib.Order.Hom.Basic._hyg.1898) (fun (x._@.Mathlib.Order.Hom.Basic._hyg.1918 : γ) (x._@.Mathlib.Order.Hom.Basic._hyg.1920 : γ) => LE.le.{u2} γ (Preorder.toLE.{u2} γ _inst_3) x._@.Mathlib.Order.Hom.Basic._hyg.1918 x._@.Mathlib.Order.Hom.Basic._hyg.1920) (OrderMonoidHomClass.toOrderHomClass.{max u3 u2, u3, u2} (OrderMonoidHom.{u3, u2} β γ _inst_2 _inst_3 _inst_6 _inst_7) β γ _inst_2 _inst_3 _inst_6 _inst_7 (OrderMonoidHom.instOrderMonoidHomClassOrderMonoidHom.{u3, u2} β γ _inst_2 _inst_3 _inst_6 _inst_7))) g)) -> (Iff (Eq.{max (succ u1) (succ u2)} (OrderMonoidHom.{u1, u2} α γ _inst_1 _inst_3 _inst_5 _inst_7) (OrderMonoidHom.comp.{u1, u3, u2} α β γ _inst_1 _inst_2 _inst_3 _inst_5 _inst_6 _inst_7 g f₁) (OrderMonoidHom.comp.{u1, u3, u2} α β γ _inst_1 _inst_2 _inst_3 _inst_5 _inst_6 _inst_7 g f₂)) (Eq.{max (succ u1) (succ u3)} (OrderMonoidHom.{u1, u3} α β _inst_1 _inst_2 _inst_5 _inst_6) f₁ f₂))
Case conversion may be inaccurate. Consider using '#align order_monoid_hom.cancel_left OrderMonoidHom.cancel_leftₓ'. -/
@[to_additive]
theorem cancel_left {g : β →*o γ} {f₁ f₂ : α →*o β} (hg : Function.Injective g) :
    g.comp f₁ = g.comp f₂ ↔ f₁ = f₂ :=
  ⟨fun h => ext fun a => hg <| by rw [← comp_apply, h, comp_apply], congr_arg _⟩
#align order_monoid_hom.cancel_left OrderMonoidHom.cancel_left
#align order_add_monoid_hom.cancel_left OrderAddMonoidHom.cancel_left

/-- `1` is the homomorphism sending all elements to `1`. -/
@[to_additive "`1` is the homomorphism sending all elements to `1`."]
instance : One (α →*o β) :=
  ⟨{ (1 : α →* β) with monotone' := monotone_const }⟩

/- warning: order_monoid_hom.coe_one -> OrderMonoidHom.coe_one is a dubious translation:
lean 3 declaration is
  forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : Preorder.{u1} α] [_inst_2 : Preorder.{u2} β] [_inst_5 : MulOneClass.{u1} α] [_inst_6 : MulOneClass.{u2} β], Eq.{succ (max u1 u2)} (α -> β) (coeFn.{max (succ u1) (succ u2), succ (max u1 u2)} (OrderMonoidHom.{u1, u2} α β _inst_1 _inst_2 _inst_5 _inst_6) (fun (_x : OrderMonoidHom.{u1, u2} α β _inst_1 _inst_2 _inst_5 _inst_6) => α -> β) (OrderMonoidHom.hasCoeToFun.{u1, u2} α β _inst_1 _inst_2 _inst_5 _inst_6) (OfNat.ofNat.{max u1 u2} (OrderMonoidHom.{u1, u2} α β _inst_1 _inst_2 _inst_5 _inst_6) 1 (OfNat.mk.{max u1 u2} (OrderMonoidHom.{u1, u2} α β _inst_1 _inst_2 _inst_5 _inst_6) 1 (One.one.{max u1 u2} (OrderMonoidHom.{u1, u2} α β _inst_1 _inst_2 _inst_5 _inst_6) (OrderMonoidHom.hasOne.{u1, u2} α β _inst_1 _inst_2 _inst_5 _inst_6))))) (OfNat.ofNat.{max u1 u2} (α -> β) 1 (OfNat.mk.{max u1 u2} (α -> β) 1 (One.one.{max u1 u2} (α -> β) (Pi.instOne.{u1, u2} α (fun (ᾰ : α) => β) (fun (i : α) => MulOneClass.toHasOne.{u2} β _inst_6)))))
but is expected to have type
  forall {α : Type.{u2}} {β : Type.{u1}} [_inst_1 : Preorder.{u2} α] [_inst_2 : Preorder.{u1} β] [_inst_5 : MulOneClass.{u2} α] [_inst_6 : MulOneClass.{u1} β], Eq.{max (succ u2) (succ u1)} (forall (ᾰ : α), (fun (x._@.Mathlib.Order.RelIso.Basic._hyg.867 : α) => β) ᾰ) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (OrderMonoidHom.{u2, u1} α β _inst_1 _inst_2 _inst_5 _inst_6) α (fun (_x : α) => (fun (x._@.Mathlib.Order.RelIso.Basic._hyg.867 : α) => β) _x) (RelHomClass.toFunLike.{max u2 u1, u2, u1} (OrderMonoidHom.{u2, u1} α β _inst_1 _inst_2 _inst_5 _inst_6) α β (fun (x._@.Mathlib.Order.Hom.Basic._hyg.1896 : α) (x._@.Mathlib.Order.Hom.Basic._hyg.1898 : α) => LE.le.{u2} α (Preorder.toLE.{u2} α _inst_1) x._@.Mathlib.Order.Hom.Basic._hyg.1896 x._@.Mathlib.Order.Hom.Basic._hyg.1898) (fun (x._@.Mathlib.Order.Hom.Basic._hyg.1918 : β) (x._@.Mathlib.Order.Hom.Basic._hyg.1920 : β) => LE.le.{u1} β (Preorder.toLE.{u1} β _inst_2) x._@.Mathlib.Order.Hom.Basic._hyg.1918 x._@.Mathlib.Order.Hom.Basic._hyg.1920) (OrderMonoidHomClass.toOrderHomClass.{max u2 u1, u2, u1} (OrderMonoidHom.{u2, u1} α β _inst_1 _inst_2 _inst_5 _inst_6) α β _inst_1 _inst_2 _inst_5 _inst_6 (OrderMonoidHom.instOrderMonoidHomClassOrderMonoidHom.{u2, u1} α β _inst_1 _inst_2 _inst_5 _inst_6))) (OfNat.ofNat.{max u2 u1} (OrderMonoidHom.{u2, u1} α β _inst_1 _inst_2 _inst_5 _inst_6) 1 (One.toOfNat1.{max u2 u1} (OrderMonoidHom.{u2, u1} α β _inst_1 _inst_2 _inst_5 _inst_6) (OrderMonoidHom.instOneOrderMonoidHom.{u2, u1} α β _inst_1 _inst_2 _inst_5 _inst_6)))) (OfNat.ofNat.{max u2 u1} (forall (ᾰ : α), (fun (x._@.Mathlib.Order.RelIso.Basic._hyg.867 : α) => β) ᾰ) 1 (One.toOfNat1.{max u2 u1} (forall (a : α), (fun (x._@.Mathlib.Order.RelIso.Basic._hyg.867 : α) => β) a) (Pi.instOne.{u2, u1} α (fun (a : α) => (fun (x._@.Mathlib.Order.RelIso.Basic._hyg.867 : α) => β) a) (fun (i : α) => MulOneClass.toOne.{u1} ((fun (x._@.Mathlib.Order.RelIso.Basic._hyg.867 : α) => β) i) _inst_6))))
Case conversion may be inaccurate. Consider using '#align order_monoid_hom.coe_one OrderMonoidHom.coe_oneₓ'. -/
@[simp, to_additive]
theorem coe_one : ⇑(1 : α →*o β) = 1 :=
  rfl
#align order_monoid_hom.coe_one OrderMonoidHom.coe_one
#align order_add_monoid_hom.coe_zero OrderAddMonoidHom.coe_zero

/- warning: order_monoid_hom.one_apply -> OrderMonoidHom.one_apply is a dubious translation:
lean 3 declaration is
  forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : Preorder.{u1} α] [_inst_2 : Preorder.{u2} β] [_inst_5 : MulOneClass.{u1} α] [_inst_6 : MulOneClass.{u2} β] (a : α), Eq.{succ u2} β (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (OrderMonoidHom.{u1, u2} α β _inst_1 _inst_2 _inst_5 _inst_6) (fun (_x : OrderMonoidHom.{u1, u2} α β _inst_1 _inst_2 _inst_5 _inst_6) => α -> β) (OrderMonoidHom.hasCoeToFun.{u1, u2} α β _inst_1 _inst_2 _inst_5 _inst_6) (OfNat.ofNat.{max u1 u2} (OrderMonoidHom.{u1, u2} α β _inst_1 _inst_2 _inst_5 _inst_6) 1 (OfNat.mk.{max u1 u2} (OrderMonoidHom.{u1, u2} α β _inst_1 _inst_2 _inst_5 _inst_6) 1 (One.one.{max u1 u2} (OrderMonoidHom.{u1, u2} α β _inst_1 _inst_2 _inst_5 _inst_6) (OrderMonoidHom.hasOne.{u1, u2} α β _inst_1 _inst_2 _inst_5 _inst_6)))) a) (OfNat.ofNat.{u2} β 1 (OfNat.mk.{u2} β 1 (One.one.{u2} β (MulOneClass.toHasOne.{u2} β _inst_6))))
but is expected to have type
  forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : Preorder.{u1} α] [_inst_2 : Preorder.{u2} β] [_inst_5 : MulOneClass.{u1} α] [_inst_6 : MulOneClass.{u2} β] (a : α), Eq.{succ u2} ((fun (x._@.Mathlib.Order.RelIso.Basic._hyg.867 : α) => β) a) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (OrderMonoidHom.{u1, u2} α β _inst_1 _inst_2 _inst_5 _inst_6) α (fun (_x : α) => (fun (x._@.Mathlib.Order.RelIso.Basic._hyg.867 : α) => β) _x) (RelHomClass.toFunLike.{max u1 u2, u1, u2} (OrderMonoidHom.{u1, u2} α β _inst_1 _inst_2 _inst_5 _inst_6) α β (fun (x._@.Mathlib.Order.Hom.Basic._hyg.1896 : α) (x._@.Mathlib.Order.Hom.Basic._hyg.1898 : α) => LE.le.{u1} α (Preorder.toLE.{u1} α _inst_1) x._@.Mathlib.Order.Hom.Basic._hyg.1896 x._@.Mathlib.Order.Hom.Basic._hyg.1898) (fun (x._@.Mathlib.Order.Hom.Basic._hyg.1918 : β) (x._@.Mathlib.Order.Hom.Basic._hyg.1920 : β) => LE.le.{u2} β (Preorder.toLE.{u2} β _inst_2) x._@.Mathlib.Order.Hom.Basic._hyg.1918 x._@.Mathlib.Order.Hom.Basic._hyg.1920) (OrderMonoidHomClass.toOrderHomClass.{max u1 u2, u1, u2} (OrderMonoidHom.{u1, u2} α β _inst_1 _inst_2 _inst_5 _inst_6) α β _inst_1 _inst_2 _inst_5 _inst_6 (OrderMonoidHom.instOrderMonoidHomClassOrderMonoidHom.{u1, u2} α β _inst_1 _inst_2 _inst_5 _inst_6))) (OfNat.ofNat.{max u1 u2} (OrderMonoidHom.{u1, u2} α β _inst_1 _inst_2 _inst_5 _inst_6) 1 (One.toOfNat1.{max u1 u2} (OrderMonoidHom.{u1, u2} α β _inst_1 _inst_2 _inst_5 _inst_6) (OrderMonoidHom.instOneOrderMonoidHom.{u1, u2} α β _inst_1 _inst_2 _inst_5 _inst_6))) a) (OfNat.ofNat.{u2} ((fun (x._@.Mathlib.Order.RelIso.Basic._hyg.867 : α) => β) a) 1 (One.toOfNat1.{u2} ((fun (x._@.Mathlib.Order.RelIso.Basic._hyg.867 : α) => β) a) (MulOneClass.toOne.{u2} ((fun (x._@.Mathlib.Order.RelIso.Basic._hyg.867 : α) => β) a) _inst_6)))
Case conversion may be inaccurate. Consider using '#align order_monoid_hom.one_apply OrderMonoidHom.one_applyₓ'. -/
@[simp, to_additive]
theorem one_apply (a : α) : (1 : α →*o β) a = 1 :=
  rfl
#align order_monoid_hom.one_apply OrderMonoidHom.one_apply
#align order_add_monoid_hom.zero_apply OrderAddMonoidHom.zero_apply

/- warning: order_monoid_hom.one_comp -> OrderMonoidHom.one_comp is a dubious translation:
lean 3 declaration is
  forall {α : Type.{u1}} {β : Type.{u2}} {γ : Type.{u3}} [_inst_1 : Preorder.{u1} α] [_inst_2 : Preorder.{u2} β] [_inst_3 : Preorder.{u3} γ] [_inst_5 : MulOneClass.{u1} α] [_inst_6 : MulOneClass.{u2} β] [_inst_7 : MulOneClass.{u3} γ] (f : OrderMonoidHom.{u1, u2} α β _inst_1 _inst_2 _inst_5 _inst_6), Eq.{max (succ u1) (succ u3)} (OrderMonoidHom.{u1, u3} α γ _inst_1 _inst_3 _inst_5 _inst_7) (OrderMonoidHom.comp.{u1, u2, u3} α β γ _inst_1 _inst_2 _inst_3 _inst_5 _inst_6 _inst_7 (OfNat.ofNat.{max u2 u3} (OrderMonoidHom.{u2, u3} β γ _inst_2 _inst_3 _inst_6 _inst_7) 1 (OfNat.mk.{max u2 u3} (OrderMonoidHom.{u2, u3} β γ _inst_2 _inst_3 _inst_6 _inst_7) 1 (One.one.{max u2 u3} (OrderMonoidHom.{u2, u3} β γ _inst_2 _inst_3 _inst_6 _inst_7) (OrderMonoidHom.hasOne.{u2, u3} β γ _inst_2 _inst_3 _inst_6 _inst_7)))) f) (OfNat.ofNat.{max u1 u3} (OrderMonoidHom.{u1, u3} α γ _inst_1 _inst_3 _inst_5 _inst_7) 1 (OfNat.mk.{max u1 u3} (OrderMonoidHom.{u1, u3} α γ _inst_1 _inst_3 _inst_5 _inst_7) 1 (One.one.{max u1 u3} (OrderMonoidHom.{u1, u3} α γ _inst_1 _inst_3 _inst_5 _inst_7) (OrderMonoidHom.hasOne.{u1, u3} α γ _inst_1 _inst_3 _inst_5 _inst_7))))
but is expected to have type
  forall {α : Type.{u3}} {β : Type.{u2}} {γ : Type.{u1}} [_inst_1 : Preorder.{u3} α] [_inst_2 : Preorder.{u2} β] [_inst_3 : Preorder.{u1} γ] [_inst_5 : MulOneClass.{u3} α] [_inst_6 : MulOneClass.{u2} β] [_inst_7 : MulOneClass.{u1} γ] (f : OrderMonoidHom.{u3, u2} α β _inst_1 _inst_2 _inst_5 _inst_6), Eq.{max (succ u3) (succ u1)} (OrderMonoidHom.{u3, u1} α γ _inst_1 _inst_3 _inst_5 _inst_7) (OrderMonoidHom.comp.{u3, u2, u1} α β γ _inst_1 _inst_2 _inst_3 _inst_5 _inst_6 _inst_7 (OfNat.ofNat.{max u2 u1} (OrderMonoidHom.{u2, u1} β γ _inst_2 _inst_3 _inst_6 _inst_7) 1 (One.toOfNat1.{max u2 u1} (OrderMonoidHom.{u2, u1} β γ _inst_2 _inst_3 _inst_6 _inst_7) (OrderMonoidHom.instOneOrderMonoidHom.{u2, u1} β γ _inst_2 _inst_3 _inst_6 _inst_7))) f) (OfNat.ofNat.{max u3 u1} (OrderMonoidHom.{u3, u1} α γ _inst_1 _inst_3 _inst_5 _inst_7) 1 (One.toOfNat1.{max u3 u1} (OrderMonoidHom.{u3, u1} α γ _inst_1 _inst_3 _inst_5 _inst_7) (OrderMonoidHom.instOneOrderMonoidHom.{u3, u1} α γ _inst_1 _inst_3 _inst_5 _inst_7)))
Case conversion may be inaccurate. Consider using '#align order_monoid_hom.one_comp OrderMonoidHom.one_compₓ'. -/
@[simp, to_additive]
theorem one_comp (f : α →*o β) : (1 : β →*o γ).comp f = 1 :=
  rfl
#align order_monoid_hom.one_comp OrderMonoidHom.one_comp
#align order_add_monoid_hom.zero_comp OrderAddMonoidHom.zero_comp

/- warning: order_monoid_hom.comp_one -> OrderMonoidHom.comp_one is a dubious translation:
lean 3 declaration is
  forall {α : Type.{u1}} {β : Type.{u2}} {γ : Type.{u3}} [_inst_1 : Preorder.{u1} α] [_inst_2 : Preorder.{u2} β] [_inst_3 : Preorder.{u3} γ] [_inst_5 : MulOneClass.{u1} α] [_inst_6 : MulOneClass.{u2} β] [_inst_7 : MulOneClass.{u3} γ] (f : OrderMonoidHom.{u2, u3} β γ _inst_2 _inst_3 _inst_6 _inst_7), Eq.{max (succ u1) (succ u3)} (OrderMonoidHom.{u1, u3} α γ _inst_1 _inst_3 _inst_5 _inst_7) (OrderMonoidHom.comp.{u1, u2, u3} α β γ _inst_1 _inst_2 _inst_3 _inst_5 _inst_6 _inst_7 f (OfNat.ofNat.{max u1 u2} (OrderMonoidHom.{u1, u2} α β _inst_1 _inst_2 _inst_5 _inst_6) 1 (OfNat.mk.{max u1 u2} (OrderMonoidHom.{u1, u2} α β _inst_1 _inst_2 _inst_5 _inst_6) 1 (One.one.{max u1 u2} (OrderMonoidHom.{u1, u2} α β _inst_1 _inst_2 _inst_5 _inst_6) (OrderMonoidHom.hasOne.{u1, u2} α β _inst_1 _inst_2 _inst_5 _inst_6))))) (OfNat.ofNat.{max u1 u3} (OrderMonoidHom.{u1, u3} α γ _inst_1 _inst_3 _inst_5 _inst_7) 1 (OfNat.mk.{max u1 u3} (OrderMonoidHom.{u1, u3} α γ _inst_1 _inst_3 _inst_5 _inst_7) 1 (One.one.{max u1 u3} (OrderMonoidHom.{u1, u3} α γ _inst_1 _inst_3 _inst_5 _inst_7) (OrderMonoidHom.hasOne.{u1, u3} α γ _inst_1 _inst_3 _inst_5 _inst_7))))
but is expected to have type
  forall {α : Type.{u1}} {β : Type.{u3}} {γ : Type.{u2}} [_inst_1 : Preorder.{u1} α] [_inst_2 : Preorder.{u3} β] [_inst_3 : Preorder.{u2} γ] [_inst_5 : MulOneClass.{u1} α] [_inst_6 : MulOneClass.{u3} β] [_inst_7 : MulOneClass.{u2} γ] (f : OrderMonoidHom.{u3, u2} β γ _inst_2 _inst_3 _inst_6 _inst_7), Eq.{max (succ u1) (succ u2)} (OrderMonoidHom.{u1, u2} α γ _inst_1 _inst_3 _inst_5 _inst_7) (OrderMonoidHom.comp.{u1, u3, u2} α β γ _inst_1 _inst_2 _inst_3 _inst_5 _inst_6 _inst_7 f (OfNat.ofNat.{max u1 u3} (OrderMonoidHom.{u1, u3} α β _inst_1 _inst_2 _inst_5 _inst_6) 1 (One.toOfNat1.{max u1 u3} (OrderMonoidHom.{u1, u3} α β _inst_1 _inst_2 _inst_5 _inst_6) (OrderMonoidHom.instOneOrderMonoidHom.{u1, u3} α β _inst_1 _inst_2 _inst_5 _inst_6)))) (OfNat.ofNat.{max u1 u2} (OrderMonoidHom.{u1, u2} α γ _inst_1 _inst_3 _inst_5 _inst_7) 1 (One.toOfNat1.{max u1 u2} (OrderMonoidHom.{u1, u2} α γ _inst_1 _inst_3 _inst_5 _inst_7) (OrderMonoidHom.instOneOrderMonoidHom.{u1, u2} α γ _inst_1 _inst_3 _inst_5 _inst_7)))
Case conversion may be inaccurate. Consider using '#align order_monoid_hom.comp_one OrderMonoidHom.comp_oneₓ'. -/
@[simp, to_additive]
theorem comp_one (f : β →*o γ) : f.comp (1 : α →*o β) = 1 :=
  by
  ext
  exact map_one f
#align order_monoid_hom.comp_one OrderMonoidHom.comp_one
#align order_add_monoid_hom.comp_zero OrderAddMonoidHom.comp_zero

end Preorder

section Mul

variable [OrderedCommMonoid α] [OrderedCommMonoid β] [OrderedCommMonoid γ]

/-- For two ordered monoid morphisms `f` and `g`, their product is the ordered monoid morphism
sending `a` to `f a * g a`. -/
@[to_additive
      "For two ordered additive monoid morphisms `f` and `g`, their product is the ordered\nadditive monoid morphism sending `a` to `f a + g a`."]
instance : Mul (α →*o β) :=
  ⟨fun f g => { (f * g : α →* β) with monotone' := f.monotone'.mul' g.monotone' }⟩

/- warning: order_monoid_hom.coe_mul -> OrderMonoidHom.coe_mul is a dubious translation:
lean 3 declaration is
  forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : OrderedCommMonoid.{u1} α] [_inst_2 : OrderedCommMonoid.{u2} β] (f : OrderMonoidHom.{u1, u2} α β (PartialOrder.toPreorder.{u1} α (OrderedCommMonoid.toPartialOrder.{u1} α _inst_1)) (PartialOrder.toPreorder.{u2} β (OrderedCommMonoid.toPartialOrder.{u2} β _inst_2)) (Monoid.toMulOneClass.{u1} α (CommMonoid.toMonoid.{u1} α (OrderedCommMonoid.toCommMonoid.{u1} α _inst_1))) (Monoid.toMulOneClass.{u2} β (CommMonoid.toMonoid.{u2} β (OrderedCommMonoid.toCommMonoid.{u2} β _inst_2)))) (g : OrderMonoidHom.{u1, u2} α β (PartialOrder.toPreorder.{u1} α (OrderedCommMonoid.toPartialOrder.{u1} α _inst_1)) (PartialOrder.toPreorder.{u2} β (OrderedCommMonoid.toPartialOrder.{u2} β _inst_2)) (Monoid.toMulOneClass.{u1} α (CommMonoid.toMonoid.{u1} α (OrderedCommMonoid.toCommMonoid.{u1} α _inst_1))) (Monoid.toMulOneClass.{u2} β (CommMonoid.toMonoid.{u2} β (OrderedCommMonoid.toCommMonoid.{u2} β _inst_2)))), Eq.{succ (max u1 u2)} (α -> β) (coeFn.{succ (max u1 u2), succ (max u1 u2)} (OrderMonoidHom.{u1, u2} α β (PartialOrder.toPreorder.{u1} α (OrderedCommMonoid.toPartialOrder.{u1} α _inst_1)) (PartialOrder.toPreorder.{u2} β (OrderedCommMonoid.toPartialOrder.{u2} β _inst_2)) (Monoid.toMulOneClass.{u1} α (CommMonoid.toMonoid.{u1} α (OrderedCommMonoid.toCommMonoid.{u1} α _inst_1))) (Monoid.toMulOneClass.{u2} β (CommMonoid.toMonoid.{u2} β (OrderedCommMonoid.toCommMonoid.{u2} β _inst_2)))) (fun (_x : OrderMonoidHom.{u1, u2} α β (PartialOrder.toPreorder.{u1} α (OrderedCommMonoid.toPartialOrder.{u1} α _inst_1)) (PartialOrder.toPreorder.{u2} β (OrderedCommMonoid.toPartialOrder.{u2} β _inst_2)) (Monoid.toMulOneClass.{u1} α (CommMonoid.toMonoid.{u1} α (OrderedCommMonoid.toCommMonoid.{u1} α _inst_1))) (Monoid.toMulOneClass.{u2} β (CommMonoid.toMonoid.{u2} β (OrderedCommMonoid.toCommMonoid.{u2} β _inst_2)))) => α -> β) (OrderMonoidHom.hasCoeToFun.{u1, u2} α β (PartialOrder.toPreorder.{u1} α (OrderedCommMonoid.toPartialOrder.{u1} α _inst_1)) (PartialOrder.toPreorder.{u2} β (OrderedCommMonoid.toPartialOrder.{u2} β _inst_2)) (Monoid.toMulOneClass.{u1} α (CommMonoid.toMonoid.{u1} α (OrderedCommMonoid.toCommMonoid.{u1} α _inst_1))) (Monoid.toMulOneClass.{u2} β (CommMonoid.toMonoid.{u2} β (OrderedCommMonoid.toCommMonoid.{u2} β _inst_2)))) (HMul.hMul.{max u1 u2, max u1 u2, max u1 u2} (OrderMonoidHom.{u1, u2} α β (PartialOrder.toPreorder.{u1} α (OrderedCommMonoid.toPartialOrder.{u1} α _inst_1)) (PartialOrder.toPreorder.{u2} β (OrderedCommMonoid.toPartialOrder.{u2} β _inst_2)) (Monoid.toMulOneClass.{u1} α (CommMonoid.toMonoid.{u1} α (OrderedCommMonoid.toCommMonoid.{u1} α _inst_1))) (Monoid.toMulOneClass.{u2} β (CommMonoid.toMonoid.{u2} β (OrderedCommMonoid.toCommMonoid.{u2} β _inst_2)))) (OrderMonoidHom.{u1, u2} α β (PartialOrder.toPreorder.{u1} α (OrderedCommMonoid.toPartialOrder.{u1} α _inst_1)) (PartialOrder.toPreorder.{u2} β (OrderedCommMonoid.toPartialOrder.{u2} β _inst_2)) (Monoid.toMulOneClass.{u1} α (CommMonoid.toMonoid.{u1} α (OrderedCommMonoid.toCommMonoid.{u1} α _inst_1))) (Monoid.toMulOneClass.{u2} β (CommMonoid.toMonoid.{u2} β (OrderedCommMonoid.toCommMonoid.{u2} β _inst_2)))) (OrderMonoidHom.{u1, u2} α β (PartialOrder.toPreorder.{u1} α (OrderedCommMonoid.toPartialOrder.{u1} α _inst_1)) (PartialOrder.toPreorder.{u2} β (OrderedCommMonoid.toPartialOrder.{u2} β _inst_2)) (Monoid.toMulOneClass.{u1} α (CommMonoid.toMonoid.{u1} α (OrderedCommMonoid.toCommMonoid.{u1} α _inst_1))) (Monoid.toMulOneClass.{u2} β (CommMonoid.toMonoid.{u2} β (OrderedCommMonoid.toCommMonoid.{u2} β _inst_2)))) (instHMul.{max u1 u2} (OrderMonoidHom.{u1, u2} α β (PartialOrder.toPreorder.{u1} α (OrderedCommMonoid.toPartialOrder.{u1} α _inst_1)) (PartialOrder.toPreorder.{u2} β (OrderedCommMonoid.toPartialOrder.{u2} β _inst_2)) (Monoid.toMulOneClass.{u1} α (CommMonoid.toMonoid.{u1} α (OrderedCommMonoid.toCommMonoid.{u1} α _inst_1))) (Monoid.toMulOneClass.{u2} β (CommMonoid.toMonoid.{u2} β (OrderedCommMonoid.toCommMonoid.{u2} β _inst_2)))) (OrderMonoidHom.hasMul.{u1, u2} α β _inst_1 _inst_2)) f g)) (HMul.hMul.{max u1 u2, max u1 u2, max u1 u2} (α -> β) (α -> β) (α -> β) (instHMul.{max u1 u2} (α -> β) (Pi.instMul.{u1, u2} α (fun (ᾰ : α) => β) (fun (i : α) => MulOneClass.toHasMul.{u2} β (Monoid.toMulOneClass.{u2} β (CommMonoid.toMonoid.{u2} β (OrderedCommMonoid.toCommMonoid.{u2} β _inst_2)))))) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (OrderMonoidHom.{u1, u2} α β (PartialOrder.toPreorder.{u1} α (OrderedCommMonoid.toPartialOrder.{u1} α _inst_1)) (PartialOrder.toPreorder.{u2} β (OrderedCommMonoid.toPartialOrder.{u2} β _inst_2)) (Monoid.toMulOneClass.{u1} α (CommMonoid.toMonoid.{u1} α (OrderedCommMonoid.toCommMonoid.{u1} α _inst_1))) (Monoid.toMulOneClass.{u2} β (CommMonoid.toMonoid.{u2} β (OrderedCommMonoid.toCommMonoid.{u2} β _inst_2)))) (fun (_x : OrderMonoidHom.{u1, u2} α β (PartialOrder.toPreorder.{u1} α (OrderedCommMonoid.toPartialOrder.{u1} α _inst_1)) (PartialOrder.toPreorder.{u2} β (OrderedCommMonoid.toPartialOrder.{u2} β _inst_2)) (Monoid.toMulOneClass.{u1} α (CommMonoid.toMonoid.{u1} α (OrderedCommMonoid.toCommMonoid.{u1} α _inst_1))) (Monoid.toMulOneClass.{u2} β (CommMonoid.toMonoid.{u2} β (OrderedCommMonoid.toCommMonoid.{u2} β _inst_2)))) => α -> β) (OrderMonoidHom.hasCoeToFun.{u1, u2} α β (PartialOrder.toPreorder.{u1} α (OrderedCommMonoid.toPartialOrder.{u1} α _inst_1)) (PartialOrder.toPreorder.{u2} β (OrderedCommMonoid.toPartialOrder.{u2} β _inst_2)) (Monoid.toMulOneClass.{u1} α (CommMonoid.toMonoid.{u1} α (OrderedCommMonoid.toCommMonoid.{u1} α _inst_1))) (Monoid.toMulOneClass.{u2} β (CommMonoid.toMonoid.{u2} β (OrderedCommMonoid.toCommMonoid.{u2} β _inst_2)))) f) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (OrderMonoidHom.{u1, u2} α β (PartialOrder.toPreorder.{u1} α (OrderedCommMonoid.toPartialOrder.{u1} α _inst_1)) (PartialOrder.toPreorder.{u2} β (OrderedCommMonoid.toPartialOrder.{u2} β _inst_2)) (Monoid.toMulOneClass.{u1} α (CommMonoid.toMonoid.{u1} α (OrderedCommMonoid.toCommMonoid.{u1} α _inst_1))) (Monoid.toMulOneClass.{u2} β (CommMonoid.toMonoid.{u2} β (OrderedCommMonoid.toCommMonoid.{u2} β _inst_2)))) (fun (_x : OrderMonoidHom.{u1, u2} α β (PartialOrder.toPreorder.{u1} α (OrderedCommMonoid.toPartialOrder.{u1} α _inst_1)) (PartialOrder.toPreorder.{u2} β (OrderedCommMonoid.toPartialOrder.{u2} β _inst_2)) (Monoid.toMulOneClass.{u1} α (CommMonoid.toMonoid.{u1} α (OrderedCommMonoid.toCommMonoid.{u1} α _inst_1))) (Monoid.toMulOneClass.{u2} β (CommMonoid.toMonoid.{u2} β (OrderedCommMonoid.toCommMonoid.{u2} β _inst_2)))) => α -> β) (OrderMonoidHom.hasCoeToFun.{u1, u2} α β (PartialOrder.toPreorder.{u1} α (OrderedCommMonoid.toPartialOrder.{u1} α _inst_1)) (PartialOrder.toPreorder.{u2} β (OrderedCommMonoid.toPartialOrder.{u2} β _inst_2)) (Monoid.toMulOneClass.{u1} α (CommMonoid.toMonoid.{u1} α (OrderedCommMonoid.toCommMonoid.{u1} α _inst_1))) (Monoid.toMulOneClass.{u2} β (CommMonoid.toMonoid.{u2} β (OrderedCommMonoid.toCommMonoid.{u2} β _inst_2)))) g))
but is expected to have type
  forall {α : Type.{u2}} {β : Type.{u1}} [_inst_1 : OrderedCommMonoid.{u2} α] [_inst_2 : OrderedCommMonoid.{u1} β] (f : OrderMonoidHom.{u2, u1} α β (PartialOrder.toPreorder.{u2} α (OrderedCommMonoid.toPartialOrder.{u2} α _inst_1)) (PartialOrder.toPreorder.{u1} β (OrderedCommMonoid.toPartialOrder.{u1} β _inst_2)) (Monoid.toMulOneClass.{u2} α (CommMonoid.toMonoid.{u2} α (OrderedCommMonoid.toCommMonoid.{u2} α _inst_1))) (Monoid.toMulOneClass.{u1} β (CommMonoid.toMonoid.{u1} β (OrderedCommMonoid.toCommMonoid.{u1} β _inst_2)))) (g : OrderMonoidHom.{u2, u1} α β (PartialOrder.toPreorder.{u2} α (OrderedCommMonoid.toPartialOrder.{u2} α _inst_1)) (PartialOrder.toPreorder.{u1} β (OrderedCommMonoid.toPartialOrder.{u1} β _inst_2)) (Monoid.toMulOneClass.{u2} α (CommMonoid.toMonoid.{u2} α (OrderedCommMonoid.toCommMonoid.{u2} α _inst_1))) (Monoid.toMulOneClass.{u1} β (CommMonoid.toMonoid.{u1} β (OrderedCommMonoid.toCommMonoid.{u1} β _inst_2)))), Eq.{max (succ u2) (succ u1)} (forall (ᾰ : α), (fun (x._@.Mathlib.Order.RelIso.Basic._hyg.867 : α) => β) ᾰ) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (OrderMonoidHom.{u2, u1} α β (PartialOrder.toPreorder.{u2} α (OrderedCommMonoid.toPartialOrder.{u2} α _inst_1)) (PartialOrder.toPreorder.{u1} β (OrderedCommMonoid.toPartialOrder.{u1} β _inst_2)) (Monoid.toMulOneClass.{u2} α (CommMonoid.toMonoid.{u2} α (OrderedCommMonoid.toCommMonoid.{u2} α _inst_1))) (Monoid.toMulOneClass.{u1} β (CommMonoid.toMonoid.{u1} β (OrderedCommMonoid.toCommMonoid.{u1} β _inst_2)))) α (fun (_x : α) => (fun (x._@.Mathlib.Order.RelIso.Basic._hyg.867 : α) => β) _x) (RelHomClass.toFunLike.{max u2 u1, u2, u1} (OrderMonoidHom.{u2, u1} α β (PartialOrder.toPreorder.{u2} α (OrderedCommMonoid.toPartialOrder.{u2} α _inst_1)) (PartialOrder.toPreorder.{u1} β (OrderedCommMonoid.toPartialOrder.{u1} β _inst_2)) (Monoid.toMulOneClass.{u2} α (CommMonoid.toMonoid.{u2} α (OrderedCommMonoid.toCommMonoid.{u2} α _inst_1))) (Monoid.toMulOneClass.{u1} β (CommMonoid.toMonoid.{u1} β (OrderedCommMonoid.toCommMonoid.{u1} β _inst_2)))) α β (fun (x._@.Mathlib.Order.Hom.Basic._hyg.1896 : α) (x._@.Mathlib.Order.Hom.Basic._hyg.1898 : α) => LE.le.{u2} α (Preorder.toLE.{u2} α (PartialOrder.toPreorder.{u2} α (OrderedCommMonoid.toPartialOrder.{u2} α _inst_1))) x._@.Mathlib.Order.Hom.Basic._hyg.1896 x._@.Mathlib.Order.Hom.Basic._hyg.1898) (fun (x._@.Mathlib.Order.Hom.Basic._hyg.1918 : β) (x._@.Mathlib.Order.Hom.Basic._hyg.1920 : β) => LE.le.{u1} β (Preorder.toLE.{u1} β (PartialOrder.toPreorder.{u1} β (OrderedCommMonoid.toPartialOrder.{u1} β _inst_2))) x._@.Mathlib.Order.Hom.Basic._hyg.1918 x._@.Mathlib.Order.Hom.Basic._hyg.1920) (OrderMonoidHomClass.toOrderHomClass.{max u2 u1, u2, u1} (OrderMonoidHom.{u2, u1} α β (PartialOrder.toPreorder.{u2} α (OrderedCommMonoid.toPartialOrder.{u2} α _inst_1)) (PartialOrder.toPreorder.{u1} β (OrderedCommMonoid.toPartialOrder.{u1} β _inst_2)) (Monoid.toMulOneClass.{u2} α (CommMonoid.toMonoid.{u2} α (OrderedCommMonoid.toCommMonoid.{u2} α _inst_1))) (Monoid.toMulOneClass.{u1} β (CommMonoid.toMonoid.{u1} β (OrderedCommMonoid.toCommMonoid.{u1} β _inst_2)))) α β (PartialOrder.toPreorder.{u2} α (OrderedCommMonoid.toPartialOrder.{u2} α _inst_1)) (PartialOrder.toPreorder.{u1} β (OrderedCommMonoid.toPartialOrder.{u1} β _inst_2)) (Monoid.toMulOneClass.{u2} α (CommMonoid.toMonoid.{u2} α (OrderedCommMonoid.toCommMonoid.{u2} α _inst_1))) (Monoid.toMulOneClass.{u1} β (CommMonoid.toMonoid.{u1} β (OrderedCommMonoid.toCommMonoid.{u1} β _inst_2))) (OrderMonoidHom.instOrderMonoidHomClassOrderMonoidHom.{u2, u1} α β (PartialOrder.toPreorder.{u2} α (OrderedCommMonoid.toPartialOrder.{u2} α _inst_1)) (PartialOrder.toPreorder.{u1} β (OrderedCommMonoid.toPartialOrder.{u1} β _inst_2)) (Monoid.toMulOneClass.{u2} α (CommMonoid.toMonoid.{u2} α (OrderedCommMonoid.toCommMonoid.{u2} α _inst_1))) (Monoid.toMulOneClass.{u1} β (CommMonoid.toMonoid.{u1} β (OrderedCommMonoid.toCommMonoid.{u1} β _inst_2)))))) (HMul.hMul.{max u2 u1, max u2 u1, max u2 u1} (OrderMonoidHom.{u2, u1} α β (PartialOrder.toPreorder.{u2} α (OrderedCommMonoid.toPartialOrder.{u2} α _inst_1)) (PartialOrder.toPreorder.{u1} β (OrderedCommMonoid.toPartialOrder.{u1} β _inst_2)) (Monoid.toMulOneClass.{u2} α (CommMonoid.toMonoid.{u2} α (OrderedCommMonoid.toCommMonoid.{u2} α _inst_1))) (Monoid.toMulOneClass.{u1} β (CommMonoid.toMonoid.{u1} β (OrderedCommMonoid.toCommMonoid.{u1} β _inst_2)))) (OrderMonoidHom.{u2, u1} α β (PartialOrder.toPreorder.{u2} α (OrderedCommMonoid.toPartialOrder.{u2} α _inst_1)) (PartialOrder.toPreorder.{u1} β (OrderedCommMonoid.toPartialOrder.{u1} β _inst_2)) (Monoid.toMulOneClass.{u2} α (CommMonoid.toMonoid.{u2} α (OrderedCommMonoid.toCommMonoid.{u2} α _inst_1))) (Monoid.toMulOneClass.{u1} β (CommMonoid.toMonoid.{u1} β (OrderedCommMonoid.toCommMonoid.{u1} β _inst_2)))) (OrderMonoidHom.{u2, u1} α β (PartialOrder.toPreorder.{u2} α (OrderedCommMonoid.toPartialOrder.{u2} α _inst_1)) (PartialOrder.toPreorder.{u1} β (OrderedCommMonoid.toPartialOrder.{u1} β _inst_2)) (Monoid.toMulOneClass.{u2} α (CommMonoid.toMonoid.{u2} α (OrderedCommMonoid.toCommMonoid.{u2} α _inst_1))) (Monoid.toMulOneClass.{u1} β (CommMonoid.toMonoid.{u1} β (OrderedCommMonoid.toCommMonoid.{u1} β _inst_2)))) (instHMul.{max u2 u1} (OrderMonoidHom.{u2, u1} α β (PartialOrder.toPreorder.{u2} α (OrderedCommMonoid.toPartialOrder.{u2} α _inst_1)) (PartialOrder.toPreorder.{u1} β (OrderedCommMonoid.toPartialOrder.{u1} β _inst_2)) (Monoid.toMulOneClass.{u2} α (CommMonoid.toMonoid.{u2} α (OrderedCommMonoid.toCommMonoid.{u2} α _inst_1))) (Monoid.toMulOneClass.{u1} β (CommMonoid.toMonoid.{u1} β (OrderedCommMonoid.toCommMonoid.{u1} β _inst_2)))) (OrderMonoidHom.instMulOrderMonoidHomToPreorderToPartialOrderToPreorderToPartialOrderToMulOneClassToMonoidToCommMonoidToMulOneClassToMonoidToCommMonoid.{u2, u1} α β _inst_1 _inst_2)) f g)) (HMul.hMul.{max u2 u1, max u2 u1, max u2 u1} (forall (ᾰ : α), (fun (x._@.Mathlib.Order.RelIso.Basic._hyg.867 : α) => β) ᾰ) (forall (ᾰ : α), (fun (x._@.Mathlib.Order.RelIso.Basic._hyg.867 : α) => β) ᾰ) (forall (ᾰ : α), (fun (x._@.Mathlib.Order.RelIso.Basic._hyg.867 : α) => β) ᾰ) (instHMul.{max u2 u1} (forall (ᾰ : α), (fun (x._@.Mathlib.Order.RelIso.Basic._hyg.867 : α) => β) ᾰ) (Pi.instMul.{u2, u1} α (fun (ᾰ : α) => (fun (x._@.Mathlib.Order.RelIso.Basic._hyg.867 : α) => β) ᾰ) (fun (i : α) => MulOneClass.toMul.{u1} ((fun (x._@.Mathlib.Order.RelIso.Basic._hyg.867 : α) => β) i) (Monoid.toMulOneClass.{u1} ((fun (x._@.Mathlib.Order.RelIso.Basic._hyg.867 : α) => β) i) (CommMonoid.toMonoid.{u1} ((fun (x._@.Mathlib.Order.RelIso.Basic._hyg.867 : α) => β) i) (OrderedCommMonoid.toCommMonoid.{u1} ((fun (x._@.Mathlib.Order.RelIso.Basic._hyg.867 : α) => β) i) _inst_2)))))) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (OrderMonoidHom.{u2, u1} α β (PartialOrder.toPreorder.{u2} α (OrderedCommMonoid.toPartialOrder.{u2} α _inst_1)) (PartialOrder.toPreorder.{u1} β (OrderedCommMonoid.toPartialOrder.{u1} β _inst_2)) (Monoid.toMulOneClass.{u2} α (CommMonoid.toMonoid.{u2} α (OrderedCommMonoid.toCommMonoid.{u2} α _inst_1))) (Monoid.toMulOneClass.{u1} β (CommMonoid.toMonoid.{u1} β (OrderedCommMonoid.toCommMonoid.{u1} β _inst_2)))) α (fun (_x : α) => (fun (x._@.Mathlib.Order.RelIso.Basic._hyg.867 : α) => β) _x) (RelHomClass.toFunLike.{max u2 u1, u2, u1} (OrderMonoidHom.{u2, u1} α β (PartialOrder.toPreorder.{u2} α (OrderedCommMonoid.toPartialOrder.{u2} α _inst_1)) (PartialOrder.toPreorder.{u1} β (OrderedCommMonoid.toPartialOrder.{u1} β _inst_2)) (Monoid.toMulOneClass.{u2} α (CommMonoid.toMonoid.{u2} α (OrderedCommMonoid.toCommMonoid.{u2} α _inst_1))) (Monoid.toMulOneClass.{u1} β (CommMonoid.toMonoid.{u1} β (OrderedCommMonoid.toCommMonoid.{u1} β _inst_2)))) α β (fun (x._@.Mathlib.Order.Hom.Basic._hyg.1896 : α) (x._@.Mathlib.Order.Hom.Basic._hyg.1898 : α) => LE.le.{u2} α (Preorder.toLE.{u2} α (PartialOrder.toPreorder.{u2} α (OrderedCommMonoid.toPartialOrder.{u2} α _inst_1))) x._@.Mathlib.Order.Hom.Basic._hyg.1896 x._@.Mathlib.Order.Hom.Basic._hyg.1898) (fun (x._@.Mathlib.Order.Hom.Basic._hyg.1918 : β) (x._@.Mathlib.Order.Hom.Basic._hyg.1920 : β) => LE.le.{u1} β (Preorder.toLE.{u1} β (PartialOrder.toPreorder.{u1} β (OrderedCommMonoid.toPartialOrder.{u1} β _inst_2))) x._@.Mathlib.Order.Hom.Basic._hyg.1918 x._@.Mathlib.Order.Hom.Basic._hyg.1920) (OrderMonoidHomClass.toOrderHomClass.{max u2 u1, u2, u1} (OrderMonoidHom.{u2, u1} α β (PartialOrder.toPreorder.{u2} α (OrderedCommMonoid.toPartialOrder.{u2} α _inst_1)) (PartialOrder.toPreorder.{u1} β (OrderedCommMonoid.toPartialOrder.{u1} β _inst_2)) (Monoid.toMulOneClass.{u2} α (CommMonoid.toMonoid.{u2} α (OrderedCommMonoid.toCommMonoid.{u2} α _inst_1))) (Monoid.toMulOneClass.{u1} β (CommMonoid.toMonoid.{u1} β (OrderedCommMonoid.toCommMonoid.{u1} β _inst_2)))) α β (PartialOrder.toPreorder.{u2} α (OrderedCommMonoid.toPartialOrder.{u2} α _inst_1)) (PartialOrder.toPreorder.{u1} β (OrderedCommMonoid.toPartialOrder.{u1} β _inst_2)) (Monoid.toMulOneClass.{u2} α (CommMonoid.toMonoid.{u2} α (OrderedCommMonoid.toCommMonoid.{u2} α _inst_1))) (Monoid.toMulOneClass.{u1} β (CommMonoid.toMonoid.{u1} β (OrderedCommMonoid.toCommMonoid.{u1} β _inst_2))) (OrderMonoidHom.instOrderMonoidHomClassOrderMonoidHom.{u2, u1} α β (PartialOrder.toPreorder.{u2} α (OrderedCommMonoid.toPartialOrder.{u2} α _inst_1)) (PartialOrder.toPreorder.{u1} β (OrderedCommMonoid.toPartialOrder.{u1} β _inst_2)) (Monoid.toMulOneClass.{u2} α (CommMonoid.toMonoid.{u2} α (OrderedCommMonoid.toCommMonoid.{u2} α _inst_1))) (Monoid.toMulOneClass.{u1} β (CommMonoid.toMonoid.{u1} β (OrderedCommMonoid.toCommMonoid.{u1} β _inst_2)))))) f) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (OrderMonoidHom.{u2, u1} α β (PartialOrder.toPreorder.{u2} α (OrderedCommMonoid.toPartialOrder.{u2} α _inst_1)) (PartialOrder.toPreorder.{u1} β (OrderedCommMonoid.toPartialOrder.{u1} β _inst_2)) (Monoid.toMulOneClass.{u2} α (CommMonoid.toMonoid.{u2} α (OrderedCommMonoid.toCommMonoid.{u2} α _inst_1))) (Monoid.toMulOneClass.{u1} β (CommMonoid.toMonoid.{u1} β (OrderedCommMonoid.toCommMonoid.{u1} β _inst_2)))) α (fun (_x : α) => (fun (x._@.Mathlib.Order.RelIso.Basic._hyg.867 : α) => β) _x) (RelHomClass.toFunLike.{max u2 u1, u2, u1} (OrderMonoidHom.{u2, u1} α β (PartialOrder.toPreorder.{u2} α (OrderedCommMonoid.toPartialOrder.{u2} α _inst_1)) (PartialOrder.toPreorder.{u1} β (OrderedCommMonoid.toPartialOrder.{u1} β _inst_2)) (Monoid.toMulOneClass.{u2} α (CommMonoid.toMonoid.{u2} α (OrderedCommMonoid.toCommMonoid.{u2} α _inst_1))) (Monoid.toMulOneClass.{u1} β (CommMonoid.toMonoid.{u1} β (OrderedCommMonoid.toCommMonoid.{u1} β _inst_2)))) α β (fun (x._@.Mathlib.Order.Hom.Basic._hyg.1896 : α) (x._@.Mathlib.Order.Hom.Basic._hyg.1898 : α) => LE.le.{u2} α (Preorder.toLE.{u2} α (PartialOrder.toPreorder.{u2} α (OrderedCommMonoid.toPartialOrder.{u2} α _inst_1))) x._@.Mathlib.Order.Hom.Basic._hyg.1896 x._@.Mathlib.Order.Hom.Basic._hyg.1898) (fun (x._@.Mathlib.Order.Hom.Basic._hyg.1918 : β) (x._@.Mathlib.Order.Hom.Basic._hyg.1920 : β) => LE.le.{u1} β (Preorder.toLE.{u1} β (PartialOrder.toPreorder.{u1} β (OrderedCommMonoid.toPartialOrder.{u1} β _inst_2))) x._@.Mathlib.Order.Hom.Basic._hyg.1918 x._@.Mathlib.Order.Hom.Basic._hyg.1920) (OrderMonoidHomClass.toOrderHomClass.{max u2 u1, u2, u1} (OrderMonoidHom.{u2, u1} α β (PartialOrder.toPreorder.{u2} α (OrderedCommMonoid.toPartialOrder.{u2} α _inst_1)) (PartialOrder.toPreorder.{u1} β (OrderedCommMonoid.toPartialOrder.{u1} β _inst_2)) (Monoid.toMulOneClass.{u2} α (CommMonoid.toMonoid.{u2} α (OrderedCommMonoid.toCommMonoid.{u2} α _inst_1))) (Monoid.toMulOneClass.{u1} β (CommMonoid.toMonoid.{u1} β (OrderedCommMonoid.toCommMonoid.{u1} β _inst_2)))) α β (PartialOrder.toPreorder.{u2} α (OrderedCommMonoid.toPartialOrder.{u2} α _inst_1)) (PartialOrder.toPreorder.{u1} β (OrderedCommMonoid.toPartialOrder.{u1} β _inst_2)) (Monoid.toMulOneClass.{u2} α (CommMonoid.toMonoid.{u2} α (OrderedCommMonoid.toCommMonoid.{u2} α _inst_1))) (Monoid.toMulOneClass.{u1} β (CommMonoid.toMonoid.{u1} β (OrderedCommMonoid.toCommMonoid.{u1} β _inst_2))) (OrderMonoidHom.instOrderMonoidHomClassOrderMonoidHom.{u2, u1} α β (PartialOrder.toPreorder.{u2} α (OrderedCommMonoid.toPartialOrder.{u2} α _inst_1)) (PartialOrder.toPreorder.{u1} β (OrderedCommMonoid.toPartialOrder.{u1} β _inst_2)) (Monoid.toMulOneClass.{u2} α (CommMonoid.toMonoid.{u2} α (OrderedCommMonoid.toCommMonoid.{u2} α _inst_1))) (Monoid.toMulOneClass.{u1} β (CommMonoid.toMonoid.{u1} β (OrderedCommMonoid.toCommMonoid.{u1} β _inst_2)))))) g))
Case conversion may be inaccurate. Consider using '#align order_monoid_hom.coe_mul OrderMonoidHom.coe_mulₓ'. -/
@[simp, to_additive]
theorem coe_mul (f g : α →*o β) : ⇑(f * g) = f * g :=
  rfl
#align order_monoid_hom.coe_mul OrderMonoidHom.coe_mul
#align order_add_monoid_hom.coe_add OrderAddMonoidHom.coe_add

/- warning: order_monoid_hom.mul_apply -> OrderMonoidHom.mul_apply is a dubious translation:
lean 3 declaration is
  forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : OrderedCommMonoid.{u1} α] [_inst_2 : OrderedCommMonoid.{u2} β] (f : OrderMonoidHom.{u1, u2} α β (PartialOrder.toPreorder.{u1} α (OrderedCommMonoid.toPartialOrder.{u1} α _inst_1)) (PartialOrder.toPreorder.{u2} β (OrderedCommMonoid.toPartialOrder.{u2} β _inst_2)) (Monoid.toMulOneClass.{u1} α (CommMonoid.toMonoid.{u1} α (OrderedCommMonoid.toCommMonoid.{u1} α _inst_1))) (Monoid.toMulOneClass.{u2} β (CommMonoid.toMonoid.{u2} β (OrderedCommMonoid.toCommMonoid.{u2} β _inst_2)))) (g : OrderMonoidHom.{u1, u2} α β (PartialOrder.toPreorder.{u1} α (OrderedCommMonoid.toPartialOrder.{u1} α _inst_1)) (PartialOrder.toPreorder.{u2} β (OrderedCommMonoid.toPartialOrder.{u2} β _inst_2)) (Monoid.toMulOneClass.{u1} α (CommMonoid.toMonoid.{u1} α (OrderedCommMonoid.toCommMonoid.{u1} α _inst_1))) (Monoid.toMulOneClass.{u2} β (CommMonoid.toMonoid.{u2} β (OrderedCommMonoid.toCommMonoid.{u2} β _inst_2)))) (a : α), Eq.{succ u2} β (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (OrderMonoidHom.{u1, u2} α β (PartialOrder.toPreorder.{u1} α (OrderedCommMonoid.toPartialOrder.{u1} α _inst_1)) (PartialOrder.toPreorder.{u2} β (OrderedCommMonoid.toPartialOrder.{u2} β _inst_2)) (Monoid.toMulOneClass.{u1} α (CommMonoid.toMonoid.{u1} α (OrderedCommMonoid.toCommMonoid.{u1} α _inst_1))) (Monoid.toMulOneClass.{u2} β (CommMonoid.toMonoid.{u2} β (OrderedCommMonoid.toCommMonoid.{u2} β _inst_2)))) (fun (_x : OrderMonoidHom.{u1, u2} α β (PartialOrder.toPreorder.{u1} α (OrderedCommMonoid.toPartialOrder.{u1} α _inst_1)) (PartialOrder.toPreorder.{u2} β (OrderedCommMonoid.toPartialOrder.{u2} β _inst_2)) (Monoid.toMulOneClass.{u1} α (CommMonoid.toMonoid.{u1} α (OrderedCommMonoid.toCommMonoid.{u1} α _inst_1))) (Monoid.toMulOneClass.{u2} β (CommMonoid.toMonoid.{u2} β (OrderedCommMonoid.toCommMonoid.{u2} β _inst_2)))) => α -> β) (OrderMonoidHom.hasCoeToFun.{u1, u2} α β (PartialOrder.toPreorder.{u1} α (OrderedCommMonoid.toPartialOrder.{u1} α _inst_1)) (PartialOrder.toPreorder.{u2} β (OrderedCommMonoid.toPartialOrder.{u2} β _inst_2)) (Monoid.toMulOneClass.{u1} α (CommMonoid.toMonoid.{u1} α (OrderedCommMonoid.toCommMonoid.{u1} α _inst_1))) (Monoid.toMulOneClass.{u2} β (CommMonoid.toMonoid.{u2} β (OrderedCommMonoid.toCommMonoid.{u2} β _inst_2)))) (HMul.hMul.{max u1 u2, max u1 u2, max u1 u2} (OrderMonoidHom.{u1, u2} α β (PartialOrder.toPreorder.{u1} α (OrderedCommMonoid.toPartialOrder.{u1} α _inst_1)) (PartialOrder.toPreorder.{u2} β (OrderedCommMonoid.toPartialOrder.{u2} β _inst_2)) (Monoid.toMulOneClass.{u1} α (CommMonoid.toMonoid.{u1} α (OrderedCommMonoid.toCommMonoid.{u1} α _inst_1))) (Monoid.toMulOneClass.{u2} β (CommMonoid.toMonoid.{u2} β (OrderedCommMonoid.toCommMonoid.{u2} β _inst_2)))) (OrderMonoidHom.{u1, u2} α β (PartialOrder.toPreorder.{u1} α (OrderedCommMonoid.toPartialOrder.{u1} α _inst_1)) (PartialOrder.toPreorder.{u2} β (OrderedCommMonoid.toPartialOrder.{u2} β _inst_2)) (Monoid.toMulOneClass.{u1} α (CommMonoid.toMonoid.{u1} α (OrderedCommMonoid.toCommMonoid.{u1} α _inst_1))) (Monoid.toMulOneClass.{u2} β (CommMonoid.toMonoid.{u2} β (OrderedCommMonoid.toCommMonoid.{u2} β _inst_2)))) (OrderMonoidHom.{u1, u2} α β (PartialOrder.toPreorder.{u1} α (OrderedCommMonoid.toPartialOrder.{u1} α _inst_1)) (PartialOrder.toPreorder.{u2} β (OrderedCommMonoid.toPartialOrder.{u2} β _inst_2)) (Monoid.toMulOneClass.{u1} α (CommMonoid.toMonoid.{u1} α (OrderedCommMonoid.toCommMonoid.{u1} α _inst_1))) (Monoid.toMulOneClass.{u2} β (CommMonoid.toMonoid.{u2} β (OrderedCommMonoid.toCommMonoid.{u2} β _inst_2)))) (instHMul.{max u1 u2} (OrderMonoidHom.{u1, u2} α β (PartialOrder.toPreorder.{u1} α (OrderedCommMonoid.toPartialOrder.{u1} α _inst_1)) (PartialOrder.toPreorder.{u2} β (OrderedCommMonoid.toPartialOrder.{u2} β _inst_2)) (Monoid.toMulOneClass.{u1} α (CommMonoid.toMonoid.{u1} α (OrderedCommMonoid.toCommMonoid.{u1} α _inst_1))) (Monoid.toMulOneClass.{u2} β (CommMonoid.toMonoid.{u2} β (OrderedCommMonoid.toCommMonoid.{u2} β _inst_2)))) (OrderMonoidHom.hasMul.{u1, u2} α β _inst_1 _inst_2)) f g) a) (HMul.hMul.{u2, u2, u2} β β β (instHMul.{u2} β (MulOneClass.toHasMul.{u2} β (Monoid.toMulOneClass.{u2} β (CommMonoid.toMonoid.{u2} β (OrderedCommMonoid.toCommMonoid.{u2} β _inst_2))))) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (OrderMonoidHom.{u1, u2} α β (PartialOrder.toPreorder.{u1} α (OrderedCommMonoid.toPartialOrder.{u1} α _inst_1)) (PartialOrder.toPreorder.{u2} β (OrderedCommMonoid.toPartialOrder.{u2} β _inst_2)) (Monoid.toMulOneClass.{u1} α (CommMonoid.toMonoid.{u1} α (OrderedCommMonoid.toCommMonoid.{u1} α _inst_1))) (Monoid.toMulOneClass.{u2} β (CommMonoid.toMonoid.{u2} β (OrderedCommMonoid.toCommMonoid.{u2} β _inst_2)))) (fun (_x : OrderMonoidHom.{u1, u2} α β (PartialOrder.toPreorder.{u1} α (OrderedCommMonoid.toPartialOrder.{u1} α _inst_1)) (PartialOrder.toPreorder.{u2} β (OrderedCommMonoid.toPartialOrder.{u2} β _inst_2)) (Monoid.toMulOneClass.{u1} α (CommMonoid.toMonoid.{u1} α (OrderedCommMonoid.toCommMonoid.{u1} α _inst_1))) (Monoid.toMulOneClass.{u2} β (CommMonoid.toMonoid.{u2} β (OrderedCommMonoid.toCommMonoid.{u2} β _inst_2)))) => α -> β) (OrderMonoidHom.hasCoeToFun.{u1, u2} α β (PartialOrder.toPreorder.{u1} α (OrderedCommMonoid.toPartialOrder.{u1} α _inst_1)) (PartialOrder.toPreorder.{u2} β (OrderedCommMonoid.toPartialOrder.{u2} β _inst_2)) (Monoid.toMulOneClass.{u1} α (CommMonoid.toMonoid.{u1} α (OrderedCommMonoid.toCommMonoid.{u1} α _inst_1))) (Monoid.toMulOneClass.{u2} β (CommMonoid.toMonoid.{u2} β (OrderedCommMonoid.toCommMonoid.{u2} β _inst_2)))) f a) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (OrderMonoidHom.{u1, u2} α β (PartialOrder.toPreorder.{u1} α (OrderedCommMonoid.toPartialOrder.{u1} α _inst_1)) (PartialOrder.toPreorder.{u2} β (OrderedCommMonoid.toPartialOrder.{u2} β _inst_2)) (Monoid.toMulOneClass.{u1} α (CommMonoid.toMonoid.{u1} α (OrderedCommMonoid.toCommMonoid.{u1} α _inst_1))) (Monoid.toMulOneClass.{u2} β (CommMonoid.toMonoid.{u2} β (OrderedCommMonoid.toCommMonoid.{u2} β _inst_2)))) (fun (_x : OrderMonoidHom.{u1, u2} α β (PartialOrder.toPreorder.{u1} α (OrderedCommMonoid.toPartialOrder.{u1} α _inst_1)) (PartialOrder.toPreorder.{u2} β (OrderedCommMonoid.toPartialOrder.{u2} β _inst_2)) (Monoid.toMulOneClass.{u1} α (CommMonoid.toMonoid.{u1} α (OrderedCommMonoid.toCommMonoid.{u1} α _inst_1))) (Monoid.toMulOneClass.{u2} β (CommMonoid.toMonoid.{u2} β (OrderedCommMonoid.toCommMonoid.{u2} β _inst_2)))) => α -> β) (OrderMonoidHom.hasCoeToFun.{u1, u2} α β (PartialOrder.toPreorder.{u1} α (OrderedCommMonoid.toPartialOrder.{u1} α _inst_1)) (PartialOrder.toPreorder.{u2} β (OrderedCommMonoid.toPartialOrder.{u2} β _inst_2)) (Monoid.toMulOneClass.{u1} α (CommMonoid.toMonoid.{u1} α (OrderedCommMonoid.toCommMonoid.{u1} α _inst_1))) (Monoid.toMulOneClass.{u2} β (CommMonoid.toMonoid.{u2} β (OrderedCommMonoid.toCommMonoid.{u2} β _inst_2)))) g a))
but is expected to have type
  forall {α : Type.{u2}} {β : Type.{u1}} [_inst_1 : OrderedCommMonoid.{u2} α] [_inst_2 : OrderedCommMonoid.{u1} β] (f : OrderMonoidHom.{u2, u1} α β (PartialOrder.toPreorder.{u2} α (OrderedCommMonoid.toPartialOrder.{u2} α _inst_1)) (PartialOrder.toPreorder.{u1} β (OrderedCommMonoid.toPartialOrder.{u1} β _inst_2)) (Monoid.toMulOneClass.{u2} α (CommMonoid.toMonoid.{u2} α (OrderedCommMonoid.toCommMonoid.{u2} α _inst_1))) (Monoid.toMulOneClass.{u1} β (CommMonoid.toMonoid.{u1} β (OrderedCommMonoid.toCommMonoid.{u1} β _inst_2)))) (g : OrderMonoidHom.{u2, u1} α β (PartialOrder.toPreorder.{u2} α (OrderedCommMonoid.toPartialOrder.{u2} α _inst_1)) (PartialOrder.toPreorder.{u1} β (OrderedCommMonoid.toPartialOrder.{u1} β _inst_2)) (Monoid.toMulOneClass.{u2} α (CommMonoid.toMonoid.{u2} α (OrderedCommMonoid.toCommMonoid.{u2} α _inst_1))) (Monoid.toMulOneClass.{u1} β (CommMonoid.toMonoid.{u1} β (OrderedCommMonoid.toCommMonoid.{u1} β _inst_2)))) (a : α), Eq.{succ u1} ((fun (x._@.Mathlib.Order.RelIso.Basic._hyg.867 : α) => β) a) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (OrderMonoidHom.{u2, u1} α β (PartialOrder.toPreorder.{u2} α (OrderedCommMonoid.toPartialOrder.{u2} α _inst_1)) (PartialOrder.toPreorder.{u1} β (OrderedCommMonoid.toPartialOrder.{u1} β _inst_2)) (Monoid.toMulOneClass.{u2} α (CommMonoid.toMonoid.{u2} α (OrderedCommMonoid.toCommMonoid.{u2} α _inst_1))) (Monoid.toMulOneClass.{u1} β (CommMonoid.toMonoid.{u1} β (OrderedCommMonoid.toCommMonoid.{u1} β _inst_2)))) α (fun (_x : α) => (fun (x._@.Mathlib.Order.RelIso.Basic._hyg.867 : α) => β) _x) (RelHomClass.toFunLike.{max u2 u1, u2, u1} (OrderMonoidHom.{u2, u1} α β (PartialOrder.toPreorder.{u2} α (OrderedCommMonoid.toPartialOrder.{u2} α _inst_1)) (PartialOrder.toPreorder.{u1} β (OrderedCommMonoid.toPartialOrder.{u1} β _inst_2)) (Monoid.toMulOneClass.{u2} α (CommMonoid.toMonoid.{u2} α (OrderedCommMonoid.toCommMonoid.{u2} α _inst_1))) (Monoid.toMulOneClass.{u1} β (CommMonoid.toMonoid.{u1} β (OrderedCommMonoid.toCommMonoid.{u1} β _inst_2)))) α β (fun (x._@.Mathlib.Order.Hom.Basic._hyg.1896 : α) (x._@.Mathlib.Order.Hom.Basic._hyg.1898 : α) => LE.le.{u2} α (Preorder.toLE.{u2} α (PartialOrder.toPreorder.{u2} α (OrderedCommMonoid.toPartialOrder.{u2} α _inst_1))) x._@.Mathlib.Order.Hom.Basic._hyg.1896 x._@.Mathlib.Order.Hom.Basic._hyg.1898) (fun (x._@.Mathlib.Order.Hom.Basic._hyg.1918 : β) (x._@.Mathlib.Order.Hom.Basic._hyg.1920 : β) => LE.le.{u1} β (Preorder.toLE.{u1} β (PartialOrder.toPreorder.{u1} β (OrderedCommMonoid.toPartialOrder.{u1} β _inst_2))) x._@.Mathlib.Order.Hom.Basic._hyg.1918 x._@.Mathlib.Order.Hom.Basic._hyg.1920) (OrderMonoidHomClass.toOrderHomClass.{max u2 u1, u2, u1} (OrderMonoidHom.{u2, u1} α β (PartialOrder.toPreorder.{u2} α (OrderedCommMonoid.toPartialOrder.{u2} α _inst_1)) (PartialOrder.toPreorder.{u1} β (OrderedCommMonoid.toPartialOrder.{u1} β _inst_2)) (Monoid.toMulOneClass.{u2} α (CommMonoid.toMonoid.{u2} α (OrderedCommMonoid.toCommMonoid.{u2} α _inst_1))) (Monoid.toMulOneClass.{u1} β (CommMonoid.toMonoid.{u1} β (OrderedCommMonoid.toCommMonoid.{u1} β _inst_2)))) α β (PartialOrder.toPreorder.{u2} α (OrderedCommMonoid.toPartialOrder.{u2} α _inst_1)) (PartialOrder.toPreorder.{u1} β (OrderedCommMonoid.toPartialOrder.{u1} β _inst_2)) (Monoid.toMulOneClass.{u2} α (CommMonoid.toMonoid.{u2} α (OrderedCommMonoid.toCommMonoid.{u2} α _inst_1))) (Monoid.toMulOneClass.{u1} β (CommMonoid.toMonoid.{u1} β (OrderedCommMonoid.toCommMonoid.{u1} β _inst_2))) (OrderMonoidHom.instOrderMonoidHomClassOrderMonoidHom.{u2, u1} α β (PartialOrder.toPreorder.{u2} α (OrderedCommMonoid.toPartialOrder.{u2} α _inst_1)) (PartialOrder.toPreorder.{u1} β (OrderedCommMonoid.toPartialOrder.{u1} β _inst_2)) (Monoid.toMulOneClass.{u2} α (CommMonoid.toMonoid.{u2} α (OrderedCommMonoid.toCommMonoid.{u2} α _inst_1))) (Monoid.toMulOneClass.{u1} β (CommMonoid.toMonoid.{u1} β (OrderedCommMonoid.toCommMonoid.{u1} β _inst_2)))))) (HMul.hMul.{max u2 u1, max u2 u1, max u2 u1} (OrderMonoidHom.{u2, u1} α β (PartialOrder.toPreorder.{u2} α (OrderedCommMonoid.toPartialOrder.{u2} α _inst_1)) (PartialOrder.toPreorder.{u1} β (OrderedCommMonoid.toPartialOrder.{u1} β _inst_2)) (Monoid.toMulOneClass.{u2} α (CommMonoid.toMonoid.{u2} α (OrderedCommMonoid.toCommMonoid.{u2} α _inst_1))) (Monoid.toMulOneClass.{u1} β (CommMonoid.toMonoid.{u1} β (OrderedCommMonoid.toCommMonoid.{u1} β _inst_2)))) (OrderMonoidHom.{u2, u1} α β (PartialOrder.toPreorder.{u2} α (OrderedCommMonoid.toPartialOrder.{u2} α _inst_1)) (PartialOrder.toPreorder.{u1} β (OrderedCommMonoid.toPartialOrder.{u1} β _inst_2)) (Monoid.toMulOneClass.{u2} α (CommMonoid.toMonoid.{u2} α (OrderedCommMonoid.toCommMonoid.{u2} α _inst_1))) (Monoid.toMulOneClass.{u1} β (CommMonoid.toMonoid.{u1} β (OrderedCommMonoid.toCommMonoid.{u1} β _inst_2)))) (OrderMonoidHom.{u2, u1} α β (PartialOrder.toPreorder.{u2} α (OrderedCommMonoid.toPartialOrder.{u2} α _inst_1)) (PartialOrder.toPreorder.{u1} β (OrderedCommMonoid.toPartialOrder.{u1} β _inst_2)) (Monoid.toMulOneClass.{u2} α (CommMonoid.toMonoid.{u2} α (OrderedCommMonoid.toCommMonoid.{u2} α _inst_1))) (Monoid.toMulOneClass.{u1} β (CommMonoid.toMonoid.{u1} β (OrderedCommMonoid.toCommMonoid.{u1} β _inst_2)))) (instHMul.{max u2 u1} (OrderMonoidHom.{u2, u1} α β (PartialOrder.toPreorder.{u2} α (OrderedCommMonoid.toPartialOrder.{u2} α _inst_1)) (PartialOrder.toPreorder.{u1} β (OrderedCommMonoid.toPartialOrder.{u1} β _inst_2)) (Monoid.toMulOneClass.{u2} α (CommMonoid.toMonoid.{u2} α (OrderedCommMonoid.toCommMonoid.{u2} α _inst_1))) (Monoid.toMulOneClass.{u1} β (CommMonoid.toMonoid.{u1} β (OrderedCommMonoid.toCommMonoid.{u1} β _inst_2)))) (OrderMonoidHom.instMulOrderMonoidHomToPreorderToPartialOrderToPreorderToPartialOrderToMulOneClassToMonoidToCommMonoidToMulOneClassToMonoidToCommMonoid.{u2, u1} α β _inst_1 _inst_2)) f g) a) (HMul.hMul.{u1, u1, u1} ((fun (x._@.Mathlib.Order.RelIso.Basic._hyg.867 : α) => β) a) ((fun (x._@.Mathlib.Order.RelIso.Basic._hyg.867 : α) => β) a) ((fun (x._@.Mathlib.Order.RelIso.Basic._hyg.867 : α) => β) a) (instHMul.{u1} ((fun (x._@.Mathlib.Order.RelIso.Basic._hyg.867 : α) => β) a) (MulOneClass.toMul.{u1} ((fun (x._@.Mathlib.Order.RelIso.Basic._hyg.867 : α) => β) a) (Monoid.toMulOneClass.{u1} ((fun (x._@.Mathlib.Order.RelIso.Basic._hyg.867 : α) => β) a) (CommMonoid.toMonoid.{u1} ((fun (x._@.Mathlib.Order.RelIso.Basic._hyg.867 : α) => β) a) (OrderedCommMonoid.toCommMonoid.{u1} ((fun (x._@.Mathlib.Order.RelIso.Basic._hyg.867 : α) => β) a) _inst_2))))) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (OrderMonoidHom.{u2, u1} α β (PartialOrder.toPreorder.{u2} α (OrderedCommMonoid.toPartialOrder.{u2} α _inst_1)) (PartialOrder.toPreorder.{u1} β (OrderedCommMonoid.toPartialOrder.{u1} β _inst_2)) (Monoid.toMulOneClass.{u2} α (CommMonoid.toMonoid.{u2} α (OrderedCommMonoid.toCommMonoid.{u2} α _inst_1))) (Monoid.toMulOneClass.{u1} β (CommMonoid.toMonoid.{u1} β (OrderedCommMonoid.toCommMonoid.{u1} β _inst_2)))) α (fun (_x : α) => (fun (x._@.Mathlib.Order.RelIso.Basic._hyg.867 : α) => β) _x) (RelHomClass.toFunLike.{max u2 u1, u2, u1} (OrderMonoidHom.{u2, u1} α β (PartialOrder.toPreorder.{u2} α (OrderedCommMonoid.toPartialOrder.{u2} α _inst_1)) (PartialOrder.toPreorder.{u1} β (OrderedCommMonoid.toPartialOrder.{u1} β _inst_2)) (Monoid.toMulOneClass.{u2} α (CommMonoid.toMonoid.{u2} α (OrderedCommMonoid.toCommMonoid.{u2} α _inst_1))) (Monoid.toMulOneClass.{u1} β (CommMonoid.toMonoid.{u1} β (OrderedCommMonoid.toCommMonoid.{u1} β _inst_2)))) α β (fun (x._@.Mathlib.Order.Hom.Basic._hyg.1896 : α) (x._@.Mathlib.Order.Hom.Basic._hyg.1898 : α) => LE.le.{u2} α (Preorder.toLE.{u2} α (PartialOrder.toPreorder.{u2} α (OrderedCommMonoid.toPartialOrder.{u2} α _inst_1))) x._@.Mathlib.Order.Hom.Basic._hyg.1896 x._@.Mathlib.Order.Hom.Basic._hyg.1898) (fun (x._@.Mathlib.Order.Hom.Basic._hyg.1918 : β) (x._@.Mathlib.Order.Hom.Basic._hyg.1920 : β) => LE.le.{u1} β (Preorder.toLE.{u1} β (PartialOrder.toPreorder.{u1} β (OrderedCommMonoid.toPartialOrder.{u1} β _inst_2))) x._@.Mathlib.Order.Hom.Basic._hyg.1918 x._@.Mathlib.Order.Hom.Basic._hyg.1920) (OrderMonoidHomClass.toOrderHomClass.{max u2 u1, u2, u1} (OrderMonoidHom.{u2, u1} α β (PartialOrder.toPreorder.{u2} α (OrderedCommMonoid.toPartialOrder.{u2} α _inst_1)) (PartialOrder.toPreorder.{u1} β (OrderedCommMonoid.toPartialOrder.{u1} β _inst_2)) (Monoid.toMulOneClass.{u2} α (CommMonoid.toMonoid.{u2} α (OrderedCommMonoid.toCommMonoid.{u2} α _inst_1))) (Monoid.toMulOneClass.{u1} β (CommMonoid.toMonoid.{u1} β (OrderedCommMonoid.toCommMonoid.{u1} β _inst_2)))) α β (PartialOrder.toPreorder.{u2} α (OrderedCommMonoid.toPartialOrder.{u2} α _inst_1)) (PartialOrder.toPreorder.{u1} β (OrderedCommMonoid.toPartialOrder.{u1} β _inst_2)) (Monoid.toMulOneClass.{u2} α (CommMonoid.toMonoid.{u2} α (OrderedCommMonoid.toCommMonoid.{u2} α _inst_1))) (Monoid.toMulOneClass.{u1} β (CommMonoid.toMonoid.{u1} β (OrderedCommMonoid.toCommMonoid.{u1} β _inst_2))) (OrderMonoidHom.instOrderMonoidHomClassOrderMonoidHom.{u2, u1} α β (PartialOrder.toPreorder.{u2} α (OrderedCommMonoid.toPartialOrder.{u2} α _inst_1)) (PartialOrder.toPreorder.{u1} β (OrderedCommMonoid.toPartialOrder.{u1} β _inst_2)) (Monoid.toMulOneClass.{u2} α (CommMonoid.toMonoid.{u2} α (OrderedCommMonoid.toCommMonoid.{u2} α _inst_1))) (Monoid.toMulOneClass.{u1} β (CommMonoid.toMonoid.{u1} β (OrderedCommMonoid.toCommMonoid.{u1} β _inst_2)))))) f a) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (OrderMonoidHom.{u2, u1} α β (PartialOrder.toPreorder.{u2} α (OrderedCommMonoid.toPartialOrder.{u2} α _inst_1)) (PartialOrder.toPreorder.{u1} β (OrderedCommMonoid.toPartialOrder.{u1} β _inst_2)) (Monoid.toMulOneClass.{u2} α (CommMonoid.toMonoid.{u2} α (OrderedCommMonoid.toCommMonoid.{u2} α _inst_1))) (Monoid.toMulOneClass.{u1} β (CommMonoid.toMonoid.{u1} β (OrderedCommMonoid.toCommMonoid.{u1} β _inst_2)))) α (fun (_x : α) => (fun (x._@.Mathlib.Order.RelIso.Basic._hyg.867 : α) => β) _x) (RelHomClass.toFunLike.{max u2 u1, u2, u1} (OrderMonoidHom.{u2, u1} α β (PartialOrder.toPreorder.{u2} α (OrderedCommMonoid.toPartialOrder.{u2} α _inst_1)) (PartialOrder.toPreorder.{u1} β (OrderedCommMonoid.toPartialOrder.{u1} β _inst_2)) (Monoid.toMulOneClass.{u2} α (CommMonoid.toMonoid.{u2} α (OrderedCommMonoid.toCommMonoid.{u2} α _inst_1))) (Monoid.toMulOneClass.{u1} β (CommMonoid.toMonoid.{u1} β (OrderedCommMonoid.toCommMonoid.{u1} β _inst_2)))) α β (fun (x._@.Mathlib.Order.Hom.Basic._hyg.1896 : α) (x._@.Mathlib.Order.Hom.Basic._hyg.1898 : α) => LE.le.{u2} α (Preorder.toLE.{u2} α (PartialOrder.toPreorder.{u2} α (OrderedCommMonoid.toPartialOrder.{u2} α _inst_1))) x._@.Mathlib.Order.Hom.Basic._hyg.1896 x._@.Mathlib.Order.Hom.Basic._hyg.1898) (fun (x._@.Mathlib.Order.Hom.Basic._hyg.1918 : β) (x._@.Mathlib.Order.Hom.Basic._hyg.1920 : β) => LE.le.{u1} β (Preorder.toLE.{u1} β (PartialOrder.toPreorder.{u1} β (OrderedCommMonoid.toPartialOrder.{u1} β _inst_2))) x._@.Mathlib.Order.Hom.Basic._hyg.1918 x._@.Mathlib.Order.Hom.Basic._hyg.1920) (OrderMonoidHomClass.toOrderHomClass.{max u2 u1, u2, u1} (OrderMonoidHom.{u2, u1} α β (PartialOrder.toPreorder.{u2} α (OrderedCommMonoid.toPartialOrder.{u2} α _inst_1)) (PartialOrder.toPreorder.{u1} β (OrderedCommMonoid.toPartialOrder.{u1} β _inst_2)) (Monoid.toMulOneClass.{u2} α (CommMonoid.toMonoid.{u2} α (OrderedCommMonoid.toCommMonoid.{u2} α _inst_1))) (Monoid.toMulOneClass.{u1} β (CommMonoid.toMonoid.{u1} β (OrderedCommMonoid.toCommMonoid.{u1} β _inst_2)))) α β (PartialOrder.toPreorder.{u2} α (OrderedCommMonoid.toPartialOrder.{u2} α _inst_1)) (PartialOrder.toPreorder.{u1} β (OrderedCommMonoid.toPartialOrder.{u1} β _inst_2)) (Monoid.toMulOneClass.{u2} α (CommMonoid.toMonoid.{u2} α (OrderedCommMonoid.toCommMonoid.{u2} α _inst_1))) (Monoid.toMulOneClass.{u1} β (CommMonoid.toMonoid.{u1} β (OrderedCommMonoid.toCommMonoid.{u1} β _inst_2))) (OrderMonoidHom.instOrderMonoidHomClassOrderMonoidHom.{u2, u1} α β (PartialOrder.toPreorder.{u2} α (OrderedCommMonoid.toPartialOrder.{u2} α _inst_1)) (PartialOrder.toPreorder.{u1} β (OrderedCommMonoid.toPartialOrder.{u1} β _inst_2)) (Monoid.toMulOneClass.{u2} α (CommMonoid.toMonoid.{u2} α (OrderedCommMonoid.toCommMonoid.{u2} α _inst_1))) (Monoid.toMulOneClass.{u1} β (CommMonoid.toMonoid.{u1} β (OrderedCommMonoid.toCommMonoid.{u1} β _inst_2)))))) g a))
Case conversion may be inaccurate. Consider using '#align order_monoid_hom.mul_apply OrderMonoidHom.mul_applyₓ'. -/
@[simp, to_additive]
theorem mul_apply (f g : α →*o β) (a : α) : (f * g) a = f a * g a :=
  rfl
#align order_monoid_hom.mul_apply OrderMonoidHom.mul_apply
#align order_add_monoid_hom.add_apply OrderAddMonoidHom.add_apply

/- warning: order_monoid_hom.mul_comp -> OrderMonoidHom.mul_comp is a dubious translation:
lean 3 declaration is
  forall {α : Type.{u1}} {β : Type.{u2}} {γ : Type.{u3}} [_inst_1 : OrderedCommMonoid.{u1} α] [_inst_2 : OrderedCommMonoid.{u2} β] [_inst_3 : OrderedCommMonoid.{u3} γ] (g₁ : OrderMonoidHom.{u2, u3} β γ (PartialOrder.toPreorder.{u2} β (OrderedCommMonoid.toPartialOrder.{u2} β _inst_2)) (PartialOrder.toPreorder.{u3} γ (OrderedCommMonoid.toPartialOrder.{u3} γ _inst_3)) (Monoid.toMulOneClass.{u2} β (CommMonoid.toMonoid.{u2} β (OrderedCommMonoid.toCommMonoid.{u2} β _inst_2))) (Monoid.toMulOneClass.{u3} γ (CommMonoid.toMonoid.{u3} γ (OrderedCommMonoid.toCommMonoid.{u3} γ _inst_3)))) (g₂ : OrderMonoidHom.{u2, u3} β γ (PartialOrder.toPreorder.{u2} β (OrderedCommMonoid.toPartialOrder.{u2} β _inst_2)) (PartialOrder.toPreorder.{u3} γ (OrderedCommMonoid.toPartialOrder.{u3} γ _inst_3)) (Monoid.toMulOneClass.{u2} β (CommMonoid.toMonoid.{u2} β (OrderedCommMonoid.toCommMonoid.{u2} β _inst_2))) (Monoid.toMulOneClass.{u3} γ (CommMonoid.toMonoid.{u3} γ (OrderedCommMonoid.toCommMonoid.{u3} γ _inst_3)))) (f : OrderMonoidHom.{u1, u2} α β (PartialOrder.toPreorder.{u1} α (OrderedCommMonoid.toPartialOrder.{u1} α _inst_1)) (PartialOrder.toPreorder.{u2} β (OrderedCommMonoid.toPartialOrder.{u2} β _inst_2)) (Monoid.toMulOneClass.{u1} α (CommMonoid.toMonoid.{u1} α (OrderedCommMonoid.toCommMonoid.{u1} α _inst_1))) (Monoid.toMulOneClass.{u2} β (CommMonoid.toMonoid.{u2} β (OrderedCommMonoid.toCommMonoid.{u2} β _inst_2)))), Eq.{max (succ u1) (succ u3)} (OrderMonoidHom.{u1, u3} α γ (PartialOrder.toPreorder.{u1} α (OrderedCommMonoid.toPartialOrder.{u1} α _inst_1)) (PartialOrder.toPreorder.{u3} γ (OrderedCommMonoid.toPartialOrder.{u3} γ _inst_3)) (Monoid.toMulOneClass.{u1} α (CommMonoid.toMonoid.{u1} α (OrderedCommMonoid.toCommMonoid.{u1} α _inst_1))) (Monoid.toMulOneClass.{u3} γ (CommMonoid.toMonoid.{u3} γ (OrderedCommMonoid.toCommMonoid.{u3} γ _inst_3)))) (OrderMonoidHom.comp.{u1, u2, u3} α β γ (PartialOrder.toPreorder.{u1} α (OrderedCommMonoid.toPartialOrder.{u1} α _inst_1)) (PartialOrder.toPreorder.{u2} β (OrderedCommMonoid.toPartialOrder.{u2} β _inst_2)) (PartialOrder.toPreorder.{u3} γ (OrderedCommMonoid.toPartialOrder.{u3} γ _inst_3)) (Monoid.toMulOneClass.{u1} α (CommMonoid.toMonoid.{u1} α (OrderedCommMonoid.toCommMonoid.{u1} α _inst_1))) (Monoid.toMulOneClass.{u2} β (CommMonoid.toMonoid.{u2} β (OrderedCommMonoid.toCommMonoid.{u2} β _inst_2))) (Monoid.toMulOneClass.{u3} γ (CommMonoid.toMonoid.{u3} γ (OrderedCommMonoid.toCommMonoid.{u3} γ _inst_3))) (HMul.hMul.{max u2 u3, max u2 u3, max u2 u3} (OrderMonoidHom.{u2, u3} β γ (PartialOrder.toPreorder.{u2} β (OrderedCommMonoid.toPartialOrder.{u2} β _inst_2)) (PartialOrder.toPreorder.{u3} γ (OrderedCommMonoid.toPartialOrder.{u3} γ _inst_3)) (Monoid.toMulOneClass.{u2} β (CommMonoid.toMonoid.{u2} β (OrderedCommMonoid.toCommMonoid.{u2} β _inst_2))) (Monoid.toMulOneClass.{u3} γ (CommMonoid.toMonoid.{u3} γ (OrderedCommMonoid.toCommMonoid.{u3} γ _inst_3)))) (OrderMonoidHom.{u2, u3} β γ (PartialOrder.toPreorder.{u2} β (OrderedCommMonoid.toPartialOrder.{u2} β _inst_2)) (PartialOrder.toPreorder.{u3} γ (OrderedCommMonoid.toPartialOrder.{u3} γ _inst_3)) (Monoid.toMulOneClass.{u2} β (CommMonoid.toMonoid.{u2} β (OrderedCommMonoid.toCommMonoid.{u2} β _inst_2))) (Monoid.toMulOneClass.{u3} γ (CommMonoid.toMonoid.{u3} γ (OrderedCommMonoid.toCommMonoid.{u3} γ _inst_3)))) (OrderMonoidHom.{u2, u3} β γ (PartialOrder.toPreorder.{u2} β (OrderedCommMonoid.toPartialOrder.{u2} β _inst_2)) (PartialOrder.toPreorder.{u3} γ (OrderedCommMonoid.toPartialOrder.{u3} γ _inst_3)) (Monoid.toMulOneClass.{u2} β (CommMonoid.toMonoid.{u2} β (OrderedCommMonoid.toCommMonoid.{u2} β _inst_2))) (Monoid.toMulOneClass.{u3} γ (CommMonoid.toMonoid.{u3} γ (OrderedCommMonoid.toCommMonoid.{u3} γ _inst_3)))) (instHMul.{max u2 u3} (OrderMonoidHom.{u2, u3} β γ (PartialOrder.toPreorder.{u2} β (OrderedCommMonoid.toPartialOrder.{u2} β _inst_2)) (PartialOrder.toPreorder.{u3} γ (OrderedCommMonoid.toPartialOrder.{u3} γ _inst_3)) (Monoid.toMulOneClass.{u2} β (CommMonoid.toMonoid.{u2} β (OrderedCommMonoid.toCommMonoid.{u2} β _inst_2))) (Monoid.toMulOneClass.{u3} γ (CommMonoid.toMonoid.{u3} γ (OrderedCommMonoid.toCommMonoid.{u3} γ _inst_3)))) (OrderMonoidHom.hasMul.{u2, u3} β γ _inst_2 _inst_3)) g₁ g₂) f) (HMul.hMul.{max u1 u3, max u1 u3, max u1 u3} (OrderMonoidHom.{u1, u3} α γ (PartialOrder.toPreorder.{u1} α (OrderedCommMonoid.toPartialOrder.{u1} α _inst_1)) (PartialOrder.toPreorder.{u3} γ (OrderedCommMonoid.toPartialOrder.{u3} γ _inst_3)) (Monoid.toMulOneClass.{u1} α (CommMonoid.toMonoid.{u1} α (OrderedCommMonoid.toCommMonoid.{u1} α _inst_1))) (Monoid.toMulOneClass.{u3} γ (CommMonoid.toMonoid.{u3} γ (OrderedCommMonoid.toCommMonoid.{u3} γ _inst_3)))) (OrderMonoidHom.{u1, u3} α γ (PartialOrder.toPreorder.{u1} α (OrderedCommMonoid.toPartialOrder.{u1} α _inst_1)) (PartialOrder.toPreorder.{u3} γ (OrderedCommMonoid.toPartialOrder.{u3} γ _inst_3)) (Monoid.toMulOneClass.{u1} α (CommMonoid.toMonoid.{u1} α (OrderedCommMonoid.toCommMonoid.{u1} α _inst_1))) (Monoid.toMulOneClass.{u3} γ (CommMonoid.toMonoid.{u3} γ (OrderedCommMonoid.toCommMonoid.{u3} γ _inst_3)))) (OrderMonoidHom.{u1, u3} α γ (PartialOrder.toPreorder.{u1} α (OrderedCommMonoid.toPartialOrder.{u1} α _inst_1)) (PartialOrder.toPreorder.{u3} γ (OrderedCommMonoid.toPartialOrder.{u3} γ _inst_3)) (Monoid.toMulOneClass.{u1} α (CommMonoid.toMonoid.{u1} α (OrderedCommMonoid.toCommMonoid.{u1} α _inst_1))) (Monoid.toMulOneClass.{u3} γ (CommMonoid.toMonoid.{u3} γ (OrderedCommMonoid.toCommMonoid.{u3} γ _inst_3)))) (instHMul.{max u1 u3} (OrderMonoidHom.{u1, u3} α γ (PartialOrder.toPreorder.{u1} α (OrderedCommMonoid.toPartialOrder.{u1} α _inst_1)) (PartialOrder.toPreorder.{u3} γ (OrderedCommMonoid.toPartialOrder.{u3} γ _inst_3)) (Monoid.toMulOneClass.{u1} α (CommMonoid.toMonoid.{u1} α (OrderedCommMonoid.toCommMonoid.{u1} α _inst_1))) (Monoid.toMulOneClass.{u3} γ (CommMonoid.toMonoid.{u3} γ (OrderedCommMonoid.toCommMonoid.{u3} γ _inst_3)))) (OrderMonoidHom.hasMul.{u1, u3} α γ _inst_1 _inst_3)) (OrderMonoidHom.comp.{u1, u2, u3} α β γ (PartialOrder.toPreorder.{u1} α (OrderedCommMonoid.toPartialOrder.{u1} α _inst_1)) (PartialOrder.toPreorder.{u2} β (OrderedCommMonoid.toPartialOrder.{u2} β _inst_2)) (PartialOrder.toPreorder.{u3} γ (OrderedCommMonoid.toPartialOrder.{u3} γ _inst_3)) (Monoid.toMulOneClass.{u1} α (CommMonoid.toMonoid.{u1} α (OrderedCommMonoid.toCommMonoid.{u1} α _inst_1))) (Monoid.toMulOneClass.{u2} β (CommMonoid.toMonoid.{u2} β (OrderedCommMonoid.toCommMonoid.{u2} β _inst_2))) (Monoid.toMulOneClass.{u3} γ (CommMonoid.toMonoid.{u3} γ (OrderedCommMonoid.toCommMonoid.{u3} γ _inst_3))) g₁ f) (OrderMonoidHom.comp.{u1, u2, u3} α β γ (PartialOrder.toPreorder.{u1} α (OrderedCommMonoid.toPartialOrder.{u1} α _inst_1)) (PartialOrder.toPreorder.{u2} β (OrderedCommMonoid.toPartialOrder.{u2} β _inst_2)) (PartialOrder.toPreorder.{u3} γ (OrderedCommMonoid.toPartialOrder.{u3} γ _inst_3)) (Monoid.toMulOneClass.{u1} α (CommMonoid.toMonoid.{u1} α (OrderedCommMonoid.toCommMonoid.{u1} α _inst_1))) (Monoid.toMulOneClass.{u2} β (CommMonoid.toMonoid.{u2} β (OrderedCommMonoid.toCommMonoid.{u2} β _inst_2))) (Monoid.toMulOneClass.{u3} γ (CommMonoid.toMonoid.{u3} γ (OrderedCommMonoid.toCommMonoid.{u3} γ _inst_3))) g₂ f))
but is expected to have type
  forall {α : Type.{u1}} {β : Type.{u3}} {γ : Type.{u2}} [_inst_1 : OrderedCommMonoid.{u1} α] [_inst_2 : OrderedCommMonoid.{u3} β] [_inst_3 : OrderedCommMonoid.{u2} γ] (g₁ : OrderMonoidHom.{u3, u2} β γ (PartialOrder.toPreorder.{u3} β (OrderedCommMonoid.toPartialOrder.{u3} β _inst_2)) (PartialOrder.toPreorder.{u2} γ (OrderedCommMonoid.toPartialOrder.{u2} γ _inst_3)) (Monoid.toMulOneClass.{u3} β (CommMonoid.toMonoid.{u3} β (OrderedCommMonoid.toCommMonoid.{u3} β _inst_2))) (Monoid.toMulOneClass.{u2} γ (CommMonoid.toMonoid.{u2} γ (OrderedCommMonoid.toCommMonoid.{u2} γ _inst_3)))) (g₂ : OrderMonoidHom.{u3, u2} β γ (PartialOrder.toPreorder.{u3} β (OrderedCommMonoid.toPartialOrder.{u3} β _inst_2)) (PartialOrder.toPreorder.{u2} γ (OrderedCommMonoid.toPartialOrder.{u2} γ _inst_3)) (Monoid.toMulOneClass.{u3} β (CommMonoid.toMonoid.{u3} β (OrderedCommMonoid.toCommMonoid.{u3} β _inst_2))) (Monoid.toMulOneClass.{u2} γ (CommMonoid.toMonoid.{u2} γ (OrderedCommMonoid.toCommMonoid.{u2} γ _inst_3)))) (f : OrderMonoidHom.{u1, u3} α β (PartialOrder.toPreorder.{u1} α (OrderedCommMonoid.toPartialOrder.{u1} α _inst_1)) (PartialOrder.toPreorder.{u3} β (OrderedCommMonoid.toPartialOrder.{u3} β _inst_2)) (Monoid.toMulOneClass.{u1} α (CommMonoid.toMonoid.{u1} α (OrderedCommMonoid.toCommMonoid.{u1} α _inst_1))) (Monoid.toMulOneClass.{u3} β (CommMonoid.toMonoid.{u3} β (OrderedCommMonoid.toCommMonoid.{u3} β _inst_2)))), Eq.{max (succ u1) (succ u2)} (OrderMonoidHom.{u1, u2} α γ (PartialOrder.toPreorder.{u1} α (OrderedCommMonoid.toPartialOrder.{u1} α _inst_1)) (PartialOrder.toPreorder.{u2} γ (OrderedCommMonoid.toPartialOrder.{u2} γ _inst_3)) (Monoid.toMulOneClass.{u1} α (CommMonoid.toMonoid.{u1} α (OrderedCommMonoid.toCommMonoid.{u1} α _inst_1))) (Monoid.toMulOneClass.{u2} γ (CommMonoid.toMonoid.{u2} γ (OrderedCommMonoid.toCommMonoid.{u2} γ _inst_3)))) (OrderMonoidHom.comp.{u1, u3, u2} α β γ (PartialOrder.toPreorder.{u1} α (OrderedCommMonoid.toPartialOrder.{u1} α _inst_1)) (PartialOrder.toPreorder.{u3} β (OrderedCommMonoid.toPartialOrder.{u3} β _inst_2)) (PartialOrder.toPreorder.{u2} γ (OrderedCommMonoid.toPartialOrder.{u2} γ _inst_3)) (Monoid.toMulOneClass.{u1} α (CommMonoid.toMonoid.{u1} α (OrderedCommMonoid.toCommMonoid.{u1} α _inst_1))) (Monoid.toMulOneClass.{u3} β (CommMonoid.toMonoid.{u3} β (OrderedCommMonoid.toCommMonoid.{u3} β _inst_2))) (Monoid.toMulOneClass.{u2} γ (CommMonoid.toMonoid.{u2} γ (OrderedCommMonoid.toCommMonoid.{u2} γ _inst_3))) (HMul.hMul.{max u3 u2, max u3 u2, max u3 u2} (OrderMonoidHom.{u3, u2} β γ (PartialOrder.toPreorder.{u3} β (OrderedCommMonoid.toPartialOrder.{u3} β _inst_2)) (PartialOrder.toPreorder.{u2} γ (OrderedCommMonoid.toPartialOrder.{u2} γ _inst_3)) (Monoid.toMulOneClass.{u3} β (CommMonoid.toMonoid.{u3} β (OrderedCommMonoid.toCommMonoid.{u3} β _inst_2))) (Monoid.toMulOneClass.{u2} γ (CommMonoid.toMonoid.{u2} γ (OrderedCommMonoid.toCommMonoid.{u2} γ _inst_3)))) (OrderMonoidHom.{u3, u2} β γ (PartialOrder.toPreorder.{u3} β (OrderedCommMonoid.toPartialOrder.{u3} β _inst_2)) (PartialOrder.toPreorder.{u2} γ (OrderedCommMonoid.toPartialOrder.{u2} γ _inst_3)) (Monoid.toMulOneClass.{u3} β (CommMonoid.toMonoid.{u3} β (OrderedCommMonoid.toCommMonoid.{u3} β _inst_2))) (Monoid.toMulOneClass.{u2} γ (CommMonoid.toMonoid.{u2} γ (OrderedCommMonoid.toCommMonoid.{u2} γ _inst_3)))) (OrderMonoidHom.{u3, u2} β γ (PartialOrder.toPreorder.{u3} β (OrderedCommMonoid.toPartialOrder.{u3} β _inst_2)) (PartialOrder.toPreorder.{u2} γ (OrderedCommMonoid.toPartialOrder.{u2} γ _inst_3)) (Monoid.toMulOneClass.{u3} β (CommMonoid.toMonoid.{u3} β (OrderedCommMonoid.toCommMonoid.{u3} β _inst_2))) (Monoid.toMulOneClass.{u2} γ (CommMonoid.toMonoid.{u2} γ (OrderedCommMonoid.toCommMonoid.{u2} γ _inst_3)))) (instHMul.{max u3 u2} (OrderMonoidHom.{u3, u2} β γ (PartialOrder.toPreorder.{u3} β (OrderedCommMonoid.toPartialOrder.{u3} β _inst_2)) (PartialOrder.toPreorder.{u2} γ (OrderedCommMonoid.toPartialOrder.{u2} γ _inst_3)) (Monoid.toMulOneClass.{u3} β (CommMonoid.toMonoid.{u3} β (OrderedCommMonoid.toCommMonoid.{u3} β _inst_2))) (Monoid.toMulOneClass.{u2} γ (CommMonoid.toMonoid.{u2} γ (OrderedCommMonoid.toCommMonoid.{u2} γ _inst_3)))) (OrderMonoidHom.instMulOrderMonoidHomToPreorderToPartialOrderToPreorderToPartialOrderToMulOneClassToMonoidToCommMonoidToMulOneClassToMonoidToCommMonoid.{u3, u2} β γ _inst_2 _inst_3)) g₁ g₂) f) (HMul.hMul.{max u1 u2, max u1 u2, max u1 u2} (OrderMonoidHom.{u1, u2} α γ (PartialOrder.toPreorder.{u1} α (OrderedCommMonoid.toPartialOrder.{u1} α _inst_1)) (PartialOrder.toPreorder.{u2} γ (OrderedCommMonoid.toPartialOrder.{u2} γ _inst_3)) (Monoid.toMulOneClass.{u1} α (CommMonoid.toMonoid.{u1} α (OrderedCommMonoid.toCommMonoid.{u1} α _inst_1))) (Monoid.toMulOneClass.{u2} γ (CommMonoid.toMonoid.{u2} γ (OrderedCommMonoid.toCommMonoid.{u2} γ _inst_3)))) (OrderMonoidHom.{u1, u2} α γ (PartialOrder.toPreorder.{u1} α (OrderedCommMonoid.toPartialOrder.{u1} α _inst_1)) (PartialOrder.toPreorder.{u2} γ (OrderedCommMonoid.toPartialOrder.{u2} γ _inst_3)) (Monoid.toMulOneClass.{u1} α (CommMonoid.toMonoid.{u1} α (OrderedCommMonoid.toCommMonoid.{u1} α _inst_1))) (Monoid.toMulOneClass.{u2} γ (CommMonoid.toMonoid.{u2} γ (OrderedCommMonoid.toCommMonoid.{u2} γ _inst_3)))) (OrderMonoidHom.{u1, u2} α γ (PartialOrder.toPreorder.{u1} α (OrderedCommMonoid.toPartialOrder.{u1} α _inst_1)) (PartialOrder.toPreorder.{u2} γ (OrderedCommMonoid.toPartialOrder.{u2} γ _inst_3)) (Monoid.toMulOneClass.{u1} α (CommMonoid.toMonoid.{u1} α (OrderedCommMonoid.toCommMonoid.{u1} α _inst_1))) (Monoid.toMulOneClass.{u2} γ (CommMonoid.toMonoid.{u2} γ (OrderedCommMonoid.toCommMonoid.{u2} γ _inst_3)))) (instHMul.{max u1 u2} (OrderMonoidHom.{u1, u2} α γ (PartialOrder.toPreorder.{u1} α (OrderedCommMonoid.toPartialOrder.{u1} α _inst_1)) (PartialOrder.toPreorder.{u2} γ (OrderedCommMonoid.toPartialOrder.{u2} γ _inst_3)) (Monoid.toMulOneClass.{u1} α (CommMonoid.toMonoid.{u1} α (OrderedCommMonoid.toCommMonoid.{u1} α _inst_1))) (Monoid.toMulOneClass.{u2} γ (CommMonoid.toMonoid.{u2} γ (OrderedCommMonoid.toCommMonoid.{u2} γ _inst_3)))) (OrderMonoidHom.instMulOrderMonoidHomToPreorderToPartialOrderToPreorderToPartialOrderToMulOneClassToMonoidToCommMonoidToMulOneClassToMonoidToCommMonoid.{u1, u2} α γ _inst_1 _inst_3)) (OrderMonoidHom.comp.{u1, u3, u2} α β γ (PartialOrder.toPreorder.{u1} α (OrderedCommMonoid.toPartialOrder.{u1} α _inst_1)) (PartialOrder.toPreorder.{u3} β (OrderedCommMonoid.toPartialOrder.{u3} β _inst_2)) (PartialOrder.toPreorder.{u2} γ (OrderedCommMonoid.toPartialOrder.{u2} γ _inst_3)) (Monoid.toMulOneClass.{u1} α (CommMonoid.toMonoid.{u1} α (OrderedCommMonoid.toCommMonoid.{u1} α _inst_1))) (Monoid.toMulOneClass.{u3} β (CommMonoid.toMonoid.{u3} β (OrderedCommMonoid.toCommMonoid.{u3} β _inst_2))) (Monoid.toMulOneClass.{u2} γ (CommMonoid.toMonoid.{u2} γ (OrderedCommMonoid.toCommMonoid.{u2} γ _inst_3))) g₁ f) (OrderMonoidHom.comp.{u1, u3, u2} α β γ (PartialOrder.toPreorder.{u1} α (OrderedCommMonoid.toPartialOrder.{u1} α _inst_1)) (PartialOrder.toPreorder.{u3} β (OrderedCommMonoid.toPartialOrder.{u3} β _inst_2)) (PartialOrder.toPreorder.{u2} γ (OrderedCommMonoid.toPartialOrder.{u2} γ _inst_3)) (Monoid.toMulOneClass.{u1} α (CommMonoid.toMonoid.{u1} α (OrderedCommMonoid.toCommMonoid.{u1} α _inst_1))) (Monoid.toMulOneClass.{u3} β (CommMonoid.toMonoid.{u3} β (OrderedCommMonoid.toCommMonoid.{u3} β _inst_2))) (Monoid.toMulOneClass.{u2} γ (CommMonoid.toMonoid.{u2} γ (OrderedCommMonoid.toCommMonoid.{u2} γ _inst_3))) g₂ f))
Case conversion may be inaccurate. Consider using '#align order_monoid_hom.mul_comp OrderMonoidHom.mul_compₓ'. -/
@[to_additive]
theorem mul_comp (g₁ g₂ : β →*o γ) (f : α →*o β) : (g₁ * g₂).comp f = g₁.comp f * g₂.comp f :=
  rfl
#align order_monoid_hom.mul_comp OrderMonoidHom.mul_comp
#align order_add_monoid_hom.add_comp OrderAddMonoidHom.add_comp

/- warning: order_monoid_hom.comp_mul -> OrderMonoidHom.comp_mul is a dubious translation:
lean 3 declaration is
  forall {α : Type.{u1}} {β : Type.{u2}} {γ : Type.{u3}} [_inst_1 : OrderedCommMonoid.{u1} α] [_inst_2 : OrderedCommMonoid.{u2} β] [_inst_3 : OrderedCommMonoid.{u3} γ] (g : OrderMonoidHom.{u2, u3} β γ (PartialOrder.toPreorder.{u2} β (OrderedCommMonoid.toPartialOrder.{u2} β _inst_2)) (PartialOrder.toPreorder.{u3} γ (OrderedCommMonoid.toPartialOrder.{u3} γ _inst_3)) (Monoid.toMulOneClass.{u2} β (CommMonoid.toMonoid.{u2} β (OrderedCommMonoid.toCommMonoid.{u2} β _inst_2))) (Monoid.toMulOneClass.{u3} γ (CommMonoid.toMonoid.{u3} γ (OrderedCommMonoid.toCommMonoid.{u3} γ _inst_3)))) (f₁ : OrderMonoidHom.{u1, u2} α β (PartialOrder.toPreorder.{u1} α (OrderedCommMonoid.toPartialOrder.{u1} α _inst_1)) (PartialOrder.toPreorder.{u2} β (OrderedCommMonoid.toPartialOrder.{u2} β _inst_2)) (Monoid.toMulOneClass.{u1} α (CommMonoid.toMonoid.{u1} α (OrderedCommMonoid.toCommMonoid.{u1} α _inst_1))) (Monoid.toMulOneClass.{u2} β (CommMonoid.toMonoid.{u2} β (OrderedCommMonoid.toCommMonoid.{u2} β _inst_2)))) (f₂ : OrderMonoidHom.{u1, u2} α β (PartialOrder.toPreorder.{u1} α (OrderedCommMonoid.toPartialOrder.{u1} α _inst_1)) (PartialOrder.toPreorder.{u2} β (OrderedCommMonoid.toPartialOrder.{u2} β _inst_2)) (Monoid.toMulOneClass.{u1} α (CommMonoid.toMonoid.{u1} α (OrderedCommMonoid.toCommMonoid.{u1} α _inst_1))) (Monoid.toMulOneClass.{u2} β (CommMonoid.toMonoid.{u2} β (OrderedCommMonoid.toCommMonoid.{u2} β _inst_2)))), Eq.{max (succ u1) (succ u3)} (OrderMonoidHom.{u1, u3} α γ (PartialOrder.toPreorder.{u1} α (OrderedCommMonoid.toPartialOrder.{u1} α _inst_1)) (PartialOrder.toPreorder.{u3} γ (OrderedCommMonoid.toPartialOrder.{u3} γ _inst_3)) (Monoid.toMulOneClass.{u1} α (CommMonoid.toMonoid.{u1} α (OrderedCommMonoid.toCommMonoid.{u1} α _inst_1))) (Monoid.toMulOneClass.{u3} γ (CommMonoid.toMonoid.{u3} γ (OrderedCommMonoid.toCommMonoid.{u3} γ _inst_3)))) (OrderMonoidHom.comp.{u1, u2, u3} α β γ (PartialOrder.toPreorder.{u1} α (OrderedCommMonoid.toPartialOrder.{u1} α _inst_1)) (PartialOrder.toPreorder.{u2} β (OrderedCommMonoid.toPartialOrder.{u2} β _inst_2)) (PartialOrder.toPreorder.{u3} γ (OrderedCommMonoid.toPartialOrder.{u3} γ _inst_3)) (Monoid.toMulOneClass.{u1} α (CommMonoid.toMonoid.{u1} α (OrderedCommMonoid.toCommMonoid.{u1} α _inst_1))) (Monoid.toMulOneClass.{u2} β (CommMonoid.toMonoid.{u2} β (OrderedCommMonoid.toCommMonoid.{u2} β _inst_2))) (Monoid.toMulOneClass.{u3} γ (CommMonoid.toMonoid.{u3} γ (OrderedCommMonoid.toCommMonoid.{u3} γ _inst_3))) g (HMul.hMul.{max u1 u2, max u1 u2, max u1 u2} (OrderMonoidHom.{u1, u2} α β (PartialOrder.toPreorder.{u1} α (OrderedCommMonoid.toPartialOrder.{u1} α _inst_1)) (PartialOrder.toPreorder.{u2} β (OrderedCommMonoid.toPartialOrder.{u2} β _inst_2)) (Monoid.toMulOneClass.{u1} α (CommMonoid.toMonoid.{u1} α (OrderedCommMonoid.toCommMonoid.{u1} α _inst_1))) (Monoid.toMulOneClass.{u2} β (CommMonoid.toMonoid.{u2} β (OrderedCommMonoid.toCommMonoid.{u2} β _inst_2)))) (OrderMonoidHom.{u1, u2} α β (PartialOrder.toPreorder.{u1} α (OrderedCommMonoid.toPartialOrder.{u1} α _inst_1)) (PartialOrder.toPreorder.{u2} β (OrderedCommMonoid.toPartialOrder.{u2} β _inst_2)) (Monoid.toMulOneClass.{u1} α (CommMonoid.toMonoid.{u1} α (OrderedCommMonoid.toCommMonoid.{u1} α _inst_1))) (Monoid.toMulOneClass.{u2} β (CommMonoid.toMonoid.{u2} β (OrderedCommMonoid.toCommMonoid.{u2} β _inst_2)))) (OrderMonoidHom.{u1, u2} α β (PartialOrder.toPreorder.{u1} α (OrderedCommMonoid.toPartialOrder.{u1} α _inst_1)) (PartialOrder.toPreorder.{u2} β (OrderedCommMonoid.toPartialOrder.{u2} β _inst_2)) (Monoid.toMulOneClass.{u1} α (CommMonoid.toMonoid.{u1} α (OrderedCommMonoid.toCommMonoid.{u1} α _inst_1))) (Monoid.toMulOneClass.{u2} β (CommMonoid.toMonoid.{u2} β (OrderedCommMonoid.toCommMonoid.{u2} β _inst_2)))) (instHMul.{max u1 u2} (OrderMonoidHom.{u1, u2} α β (PartialOrder.toPreorder.{u1} α (OrderedCommMonoid.toPartialOrder.{u1} α _inst_1)) (PartialOrder.toPreorder.{u2} β (OrderedCommMonoid.toPartialOrder.{u2} β _inst_2)) (Monoid.toMulOneClass.{u1} α (CommMonoid.toMonoid.{u1} α (OrderedCommMonoid.toCommMonoid.{u1} α _inst_1))) (Monoid.toMulOneClass.{u2} β (CommMonoid.toMonoid.{u2} β (OrderedCommMonoid.toCommMonoid.{u2} β _inst_2)))) (OrderMonoidHom.hasMul.{u1, u2} α β _inst_1 _inst_2)) f₁ f₂)) (HMul.hMul.{max u1 u3, max u1 u3, max u1 u3} (OrderMonoidHom.{u1, u3} α γ (PartialOrder.toPreorder.{u1} α (OrderedCommMonoid.toPartialOrder.{u1} α _inst_1)) (PartialOrder.toPreorder.{u3} γ (OrderedCommMonoid.toPartialOrder.{u3} γ _inst_3)) (Monoid.toMulOneClass.{u1} α (CommMonoid.toMonoid.{u1} α (OrderedCommMonoid.toCommMonoid.{u1} α _inst_1))) (Monoid.toMulOneClass.{u3} γ (CommMonoid.toMonoid.{u3} γ (OrderedCommMonoid.toCommMonoid.{u3} γ _inst_3)))) (OrderMonoidHom.{u1, u3} α γ (PartialOrder.toPreorder.{u1} α (OrderedCommMonoid.toPartialOrder.{u1} α _inst_1)) (PartialOrder.toPreorder.{u3} γ (OrderedCommMonoid.toPartialOrder.{u3} γ _inst_3)) (Monoid.toMulOneClass.{u1} α (CommMonoid.toMonoid.{u1} α (OrderedCommMonoid.toCommMonoid.{u1} α _inst_1))) (Monoid.toMulOneClass.{u3} γ (CommMonoid.toMonoid.{u3} γ (OrderedCommMonoid.toCommMonoid.{u3} γ _inst_3)))) (OrderMonoidHom.{u1, u3} α γ (PartialOrder.toPreorder.{u1} α (OrderedCommMonoid.toPartialOrder.{u1} α _inst_1)) (PartialOrder.toPreorder.{u3} γ (OrderedCommMonoid.toPartialOrder.{u3} γ _inst_3)) (Monoid.toMulOneClass.{u1} α (CommMonoid.toMonoid.{u1} α (OrderedCommMonoid.toCommMonoid.{u1} α _inst_1))) (Monoid.toMulOneClass.{u3} γ (CommMonoid.toMonoid.{u3} γ (OrderedCommMonoid.toCommMonoid.{u3} γ _inst_3)))) (instHMul.{max u1 u3} (OrderMonoidHom.{u1, u3} α γ (PartialOrder.toPreorder.{u1} α (OrderedCommMonoid.toPartialOrder.{u1} α _inst_1)) (PartialOrder.toPreorder.{u3} γ (OrderedCommMonoid.toPartialOrder.{u3} γ _inst_3)) (Monoid.toMulOneClass.{u1} α (CommMonoid.toMonoid.{u1} α (OrderedCommMonoid.toCommMonoid.{u1} α _inst_1))) (Monoid.toMulOneClass.{u3} γ (CommMonoid.toMonoid.{u3} γ (OrderedCommMonoid.toCommMonoid.{u3} γ _inst_3)))) (OrderMonoidHom.hasMul.{u1, u3} α γ _inst_1 _inst_3)) (OrderMonoidHom.comp.{u1, u2, u3} α β γ (PartialOrder.toPreorder.{u1} α (OrderedCommMonoid.toPartialOrder.{u1} α _inst_1)) (PartialOrder.toPreorder.{u2} β (OrderedCommMonoid.toPartialOrder.{u2} β _inst_2)) (PartialOrder.toPreorder.{u3} γ (OrderedCommMonoid.toPartialOrder.{u3} γ _inst_3)) (Monoid.toMulOneClass.{u1} α (CommMonoid.toMonoid.{u1} α (OrderedCommMonoid.toCommMonoid.{u1} α _inst_1))) (Monoid.toMulOneClass.{u2} β (CommMonoid.toMonoid.{u2} β (OrderedCommMonoid.toCommMonoid.{u2} β _inst_2))) (Monoid.toMulOneClass.{u3} γ (CommMonoid.toMonoid.{u3} γ (OrderedCommMonoid.toCommMonoid.{u3} γ _inst_3))) g f₁) (OrderMonoidHom.comp.{u1, u2, u3} α β γ (PartialOrder.toPreorder.{u1} α (OrderedCommMonoid.toPartialOrder.{u1} α _inst_1)) (PartialOrder.toPreorder.{u2} β (OrderedCommMonoid.toPartialOrder.{u2} β _inst_2)) (PartialOrder.toPreorder.{u3} γ (OrderedCommMonoid.toPartialOrder.{u3} γ _inst_3)) (Monoid.toMulOneClass.{u1} α (CommMonoid.toMonoid.{u1} α (OrderedCommMonoid.toCommMonoid.{u1} α _inst_1))) (Monoid.toMulOneClass.{u2} β (CommMonoid.toMonoid.{u2} β (OrderedCommMonoid.toCommMonoid.{u2} β _inst_2))) (Monoid.toMulOneClass.{u3} γ (CommMonoid.toMonoid.{u3} γ (OrderedCommMonoid.toCommMonoid.{u3} γ _inst_3))) g f₂))
but is expected to have type
  forall {α : Type.{u1}} {β : Type.{u3}} {γ : Type.{u2}} [_inst_1 : OrderedCommMonoid.{u1} α] [_inst_2 : OrderedCommMonoid.{u3} β] [_inst_3 : OrderedCommMonoid.{u2} γ] (g : OrderMonoidHom.{u3, u2} β γ (PartialOrder.toPreorder.{u3} β (OrderedCommMonoid.toPartialOrder.{u3} β _inst_2)) (PartialOrder.toPreorder.{u2} γ (OrderedCommMonoid.toPartialOrder.{u2} γ _inst_3)) (Monoid.toMulOneClass.{u3} β (CommMonoid.toMonoid.{u3} β (OrderedCommMonoid.toCommMonoid.{u3} β _inst_2))) (Monoid.toMulOneClass.{u2} γ (CommMonoid.toMonoid.{u2} γ (OrderedCommMonoid.toCommMonoid.{u2} γ _inst_3)))) (f₁ : OrderMonoidHom.{u1, u3} α β (PartialOrder.toPreorder.{u1} α (OrderedCommMonoid.toPartialOrder.{u1} α _inst_1)) (PartialOrder.toPreorder.{u3} β (OrderedCommMonoid.toPartialOrder.{u3} β _inst_2)) (Monoid.toMulOneClass.{u1} α (CommMonoid.toMonoid.{u1} α (OrderedCommMonoid.toCommMonoid.{u1} α _inst_1))) (Monoid.toMulOneClass.{u3} β (CommMonoid.toMonoid.{u3} β (OrderedCommMonoid.toCommMonoid.{u3} β _inst_2)))) (f₂ : OrderMonoidHom.{u1, u3} α β (PartialOrder.toPreorder.{u1} α (OrderedCommMonoid.toPartialOrder.{u1} α _inst_1)) (PartialOrder.toPreorder.{u3} β (OrderedCommMonoid.toPartialOrder.{u3} β _inst_2)) (Monoid.toMulOneClass.{u1} α (CommMonoid.toMonoid.{u1} α (OrderedCommMonoid.toCommMonoid.{u1} α _inst_1))) (Monoid.toMulOneClass.{u3} β (CommMonoid.toMonoid.{u3} β (OrderedCommMonoid.toCommMonoid.{u3} β _inst_2)))), Eq.{max (succ u1) (succ u2)} (OrderMonoidHom.{u1, u2} α γ (PartialOrder.toPreorder.{u1} α (OrderedCommMonoid.toPartialOrder.{u1} α _inst_1)) (PartialOrder.toPreorder.{u2} γ (OrderedCommMonoid.toPartialOrder.{u2} γ _inst_3)) (Monoid.toMulOneClass.{u1} α (CommMonoid.toMonoid.{u1} α (OrderedCommMonoid.toCommMonoid.{u1} α _inst_1))) (Monoid.toMulOneClass.{u2} γ (CommMonoid.toMonoid.{u2} γ (OrderedCommMonoid.toCommMonoid.{u2} γ _inst_3)))) (OrderMonoidHom.comp.{u1, u3, u2} α β γ (PartialOrder.toPreorder.{u1} α (OrderedCommMonoid.toPartialOrder.{u1} α _inst_1)) (PartialOrder.toPreorder.{u3} β (OrderedCommMonoid.toPartialOrder.{u3} β _inst_2)) (PartialOrder.toPreorder.{u2} γ (OrderedCommMonoid.toPartialOrder.{u2} γ _inst_3)) (Monoid.toMulOneClass.{u1} α (CommMonoid.toMonoid.{u1} α (OrderedCommMonoid.toCommMonoid.{u1} α _inst_1))) (Monoid.toMulOneClass.{u3} β (CommMonoid.toMonoid.{u3} β (OrderedCommMonoid.toCommMonoid.{u3} β _inst_2))) (Monoid.toMulOneClass.{u2} γ (CommMonoid.toMonoid.{u2} γ (OrderedCommMonoid.toCommMonoid.{u2} γ _inst_3))) g (HMul.hMul.{max u1 u3, max u1 u3, max u1 u3} (OrderMonoidHom.{u1, u3} α β (PartialOrder.toPreorder.{u1} α (OrderedCommMonoid.toPartialOrder.{u1} α _inst_1)) (PartialOrder.toPreorder.{u3} β (OrderedCommMonoid.toPartialOrder.{u3} β _inst_2)) (Monoid.toMulOneClass.{u1} α (CommMonoid.toMonoid.{u1} α (OrderedCommMonoid.toCommMonoid.{u1} α _inst_1))) (Monoid.toMulOneClass.{u3} β (CommMonoid.toMonoid.{u3} β (OrderedCommMonoid.toCommMonoid.{u3} β _inst_2)))) (OrderMonoidHom.{u1, u3} α β (PartialOrder.toPreorder.{u1} α (OrderedCommMonoid.toPartialOrder.{u1} α _inst_1)) (PartialOrder.toPreorder.{u3} β (OrderedCommMonoid.toPartialOrder.{u3} β _inst_2)) (Monoid.toMulOneClass.{u1} α (CommMonoid.toMonoid.{u1} α (OrderedCommMonoid.toCommMonoid.{u1} α _inst_1))) (Monoid.toMulOneClass.{u3} β (CommMonoid.toMonoid.{u3} β (OrderedCommMonoid.toCommMonoid.{u3} β _inst_2)))) (OrderMonoidHom.{u1, u3} α β (PartialOrder.toPreorder.{u1} α (OrderedCommMonoid.toPartialOrder.{u1} α _inst_1)) (PartialOrder.toPreorder.{u3} β (OrderedCommMonoid.toPartialOrder.{u3} β _inst_2)) (Monoid.toMulOneClass.{u1} α (CommMonoid.toMonoid.{u1} α (OrderedCommMonoid.toCommMonoid.{u1} α _inst_1))) (Monoid.toMulOneClass.{u3} β (CommMonoid.toMonoid.{u3} β (OrderedCommMonoid.toCommMonoid.{u3} β _inst_2)))) (instHMul.{max u1 u3} (OrderMonoidHom.{u1, u3} α β (PartialOrder.toPreorder.{u1} α (OrderedCommMonoid.toPartialOrder.{u1} α _inst_1)) (PartialOrder.toPreorder.{u3} β (OrderedCommMonoid.toPartialOrder.{u3} β _inst_2)) (Monoid.toMulOneClass.{u1} α (CommMonoid.toMonoid.{u1} α (OrderedCommMonoid.toCommMonoid.{u1} α _inst_1))) (Monoid.toMulOneClass.{u3} β (CommMonoid.toMonoid.{u3} β (OrderedCommMonoid.toCommMonoid.{u3} β _inst_2)))) (OrderMonoidHom.instMulOrderMonoidHomToPreorderToPartialOrderToPreorderToPartialOrderToMulOneClassToMonoidToCommMonoidToMulOneClassToMonoidToCommMonoid.{u1, u3} α β _inst_1 _inst_2)) f₁ f₂)) (HMul.hMul.{max u1 u2, max u1 u2, max u1 u2} (OrderMonoidHom.{u1, u2} α γ (PartialOrder.toPreorder.{u1} α (OrderedCommMonoid.toPartialOrder.{u1} α _inst_1)) (PartialOrder.toPreorder.{u2} γ (OrderedCommMonoid.toPartialOrder.{u2} γ _inst_3)) (Monoid.toMulOneClass.{u1} α (CommMonoid.toMonoid.{u1} α (OrderedCommMonoid.toCommMonoid.{u1} α _inst_1))) (Monoid.toMulOneClass.{u2} γ (CommMonoid.toMonoid.{u2} γ (OrderedCommMonoid.toCommMonoid.{u2} γ _inst_3)))) (OrderMonoidHom.{u1, u2} α γ (PartialOrder.toPreorder.{u1} α (OrderedCommMonoid.toPartialOrder.{u1} α _inst_1)) (PartialOrder.toPreorder.{u2} γ (OrderedCommMonoid.toPartialOrder.{u2} γ _inst_3)) (Monoid.toMulOneClass.{u1} α (CommMonoid.toMonoid.{u1} α (OrderedCommMonoid.toCommMonoid.{u1} α _inst_1))) (Monoid.toMulOneClass.{u2} γ (CommMonoid.toMonoid.{u2} γ (OrderedCommMonoid.toCommMonoid.{u2} γ _inst_3)))) (OrderMonoidHom.{u1, u2} α γ (PartialOrder.toPreorder.{u1} α (OrderedCommMonoid.toPartialOrder.{u1} α _inst_1)) (PartialOrder.toPreorder.{u2} γ (OrderedCommMonoid.toPartialOrder.{u2} γ _inst_3)) (Monoid.toMulOneClass.{u1} α (CommMonoid.toMonoid.{u1} α (OrderedCommMonoid.toCommMonoid.{u1} α _inst_1))) (Monoid.toMulOneClass.{u2} γ (CommMonoid.toMonoid.{u2} γ (OrderedCommMonoid.toCommMonoid.{u2} γ _inst_3)))) (instHMul.{max u1 u2} (OrderMonoidHom.{u1, u2} α γ (PartialOrder.toPreorder.{u1} α (OrderedCommMonoid.toPartialOrder.{u1} α _inst_1)) (PartialOrder.toPreorder.{u2} γ (OrderedCommMonoid.toPartialOrder.{u2} γ _inst_3)) (Monoid.toMulOneClass.{u1} α (CommMonoid.toMonoid.{u1} α (OrderedCommMonoid.toCommMonoid.{u1} α _inst_1))) (Monoid.toMulOneClass.{u2} γ (CommMonoid.toMonoid.{u2} γ (OrderedCommMonoid.toCommMonoid.{u2} γ _inst_3)))) (OrderMonoidHom.instMulOrderMonoidHomToPreorderToPartialOrderToPreorderToPartialOrderToMulOneClassToMonoidToCommMonoidToMulOneClassToMonoidToCommMonoid.{u1, u2} α γ _inst_1 _inst_3)) (OrderMonoidHom.comp.{u1, u3, u2} α β γ (PartialOrder.toPreorder.{u1} α (OrderedCommMonoid.toPartialOrder.{u1} α _inst_1)) (PartialOrder.toPreorder.{u3} β (OrderedCommMonoid.toPartialOrder.{u3} β _inst_2)) (PartialOrder.toPreorder.{u2} γ (OrderedCommMonoid.toPartialOrder.{u2} γ _inst_3)) (Monoid.toMulOneClass.{u1} α (CommMonoid.toMonoid.{u1} α (OrderedCommMonoid.toCommMonoid.{u1} α _inst_1))) (Monoid.toMulOneClass.{u3} β (CommMonoid.toMonoid.{u3} β (OrderedCommMonoid.toCommMonoid.{u3} β _inst_2))) (Monoid.toMulOneClass.{u2} γ (CommMonoid.toMonoid.{u2} γ (OrderedCommMonoid.toCommMonoid.{u2} γ _inst_3))) g f₁) (OrderMonoidHom.comp.{u1, u3, u2} α β γ (PartialOrder.toPreorder.{u1} α (OrderedCommMonoid.toPartialOrder.{u1} α _inst_1)) (PartialOrder.toPreorder.{u3} β (OrderedCommMonoid.toPartialOrder.{u3} β _inst_2)) (PartialOrder.toPreorder.{u2} γ (OrderedCommMonoid.toPartialOrder.{u2} γ _inst_3)) (Monoid.toMulOneClass.{u1} α (CommMonoid.toMonoid.{u1} α (OrderedCommMonoid.toCommMonoid.{u1} α _inst_1))) (Monoid.toMulOneClass.{u3} β (CommMonoid.toMonoid.{u3} β (OrderedCommMonoid.toCommMonoid.{u3} β _inst_2))) (Monoid.toMulOneClass.{u2} γ (CommMonoid.toMonoid.{u2} γ (OrderedCommMonoid.toCommMonoid.{u2} γ _inst_3))) g f₂))
Case conversion may be inaccurate. Consider using '#align order_monoid_hom.comp_mul OrderMonoidHom.comp_mulₓ'. -/
@[to_additive]
theorem comp_mul (g : β →*o γ) (f₁ f₂ : α →*o β) : g.comp (f₁ * f₂) = g.comp f₁ * g.comp f₂ :=
  by
  ext
  exact map_mul g _ _
#align order_monoid_hom.comp_mul OrderMonoidHom.comp_mul
#align order_add_monoid_hom.comp_add OrderAddMonoidHom.comp_add

end Mul

section OrderedCommMonoid

variable {hα : OrderedCommMonoid α} {hβ : OrderedCommMonoid β}

include hα hβ

/- warning: order_monoid_hom.to_monoid_hom_eq_coe -> OrderMonoidHom.toMonoidHom_eq_coe is a dubious translation:
lean 3 declaration is
  forall {α : Type.{u1}} {β : Type.{u2}} {hα : OrderedCommMonoid.{u1} α} {hβ : OrderedCommMonoid.{u2} β} (f : OrderMonoidHom.{u1, u2} α β (PartialOrder.toPreorder.{u1} α (OrderedCommMonoid.toPartialOrder.{u1} α hα)) (PartialOrder.toPreorder.{u2} β (OrderedCommMonoid.toPartialOrder.{u2} β hβ)) (Monoid.toMulOneClass.{u1} α (CommMonoid.toMonoid.{u1} α (OrderedCommMonoid.toCommMonoid.{u1} α hα))) (Monoid.toMulOneClass.{u2} β (CommMonoid.toMonoid.{u2} β (OrderedCommMonoid.toCommMonoid.{u2} β hβ)))), Eq.{max (succ u2) (succ u1)} (MonoidHom.{u1, u2} α β (Monoid.toMulOneClass.{u1} α (CommMonoid.toMonoid.{u1} α (OrderedCommMonoid.toCommMonoid.{u1} α hα))) (Monoid.toMulOneClass.{u2} β (CommMonoid.toMonoid.{u2} β (OrderedCommMonoid.toCommMonoid.{u2} β hβ)))) (OrderMonoidHom.toMonoidHom.{u1, u2} α β (PartialOrder.toPreorder.{u1} α (OrderedCommMonoid.toPartialOrder.{u1} α hα)) (PartialOrder.toPreorder.{u2} β (OrderedCommMonoid.toPartialOrder.{u2} β hβ)) (Monoid.toMulOneClass.{u1} α (CommMonoid.toMonoid.{u1} α (OrderedCommMonoid.toCommMonoid.{u1} α hα))) (Monoid.toMulOneClass.{u2} β (CommMonoid.toMonoid.{u2} β (OrderedCommMonoid.toCommMonoid.{u2} β hβ))) f) ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (OrderMonoidHom.{u1, u2} α β (PartialOrder.toPreorder.{u1} α (OrderedCommMonoid.toPartialOrder.{u1} α hα)) (PartialOrder.toPreorder.{u2} β (OrderedCommMonoid.toPartialOrder.{u2} β hβ)) (Monoid.toMulOneClass.{u1} α (CommMonoid.toMonoid.{u1} α (OrderedCommMonoid.toCommMonoid.{u1} α hα))) (Monoid.toMulOneClass.{u2} β (CommMonoid.toMonoid.{u2} β (OrderedCommMonoid.toCommMonoid.{u2} β hβ)))) (MonoidHom.{u1, u2} α β (Monoid.toMulOneClass.{u1} α (CommMonoid.toMonoid.{u1} α (OrderedCommMonoid.toCommMonoid.{u1} α hα))) (Monoid.toMulOneClass.{u2} β (CommMonoid.toMonoid.{u2} β (OrderedCommMonoid.toCommMonoid.{u2} β hβ)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (OrderMonoidHom.{u1, u2} α β (PartialOrder.toPreorder.{u1} α (OrderedCommMonoid.toPartialOrder.{u1} α hα)) (PartialOrder.toPreorder.{u2} β (OrderedCommMonoid.toPartialOrder.{u2} β hβ)) (Monoid.toMulOneClass.{u1} α (CommMonoid.toMonoid.{u1} α (OrderedCommMonoid.toCommMonoid.{u1} α hα))) (Monoid.toMulOneClass.{u2} β (CommMonoid.toMonoid.{u2} β (OrderedCommMonoid.toCommMonoid.{u2} β hβ)))) (MonoidHom.{u1, u2} α β (Monoid.toMulOneClass.{u1} α (CommMonoid.toMonoid.{u1} α (OrderedCommMonoid.toCommMonoid.{u1} α hα))) (Monoid.toMulOneClass.{u2} β (CommMonoid.toMonoid.{u2} β (OrderedCommMonoid.toCommMonoid.{u2} β hβ)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (OrderMonoidHom.{u1, u2} α β (PartialOrder.toPreorder.{u1} α (OrderedCommMonoid.toPartialOrder.{u1} α hα)) (PartialOrder.toPreorder.{u2} β (OrderedCommMonoid.toPartialOrder.{u2} β hβ)) (Monoid.toMulOneClass.{u1} α (CommMonoid.toMonoid.{u1} α (OrderedCommMonoid.toCommMonoid.{u1} α hα))) (Monoid.toMulOneClass.{u2} β (CommMonoid.toMonoid.{u2} β (OrderedCommMonoid.toCommMonoid.{u2} β hβ)))) (MonoidHom.{u1, u2} α β (Monoid.toMulOneClass.{u1} α (CommMonoid.toMonoid.{u1} α (OrderedCommMonoid.toCommMonoid.{u1} α hα))) (Monoid.toMulOneClass.{u2} β (CommMonoid.toMonoid.{u2} β (OrderedCommMonoid.toCommMonoid.{u2} β hβ)))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} α β (OrderMonoidHom.{u1, u2} α β (PartialOrder.toPreorder.{u1} α (OrderedCommMonoid.toPartialOrder.{u1} α hα)) (PartialOrder.toPreorder.{u2} β (OrderedCommMonoid.toPartialOrder.{u2} β hβ)) (Monoid.toMulOneClass.{u1} α (CommMonoid.toMonoid.{u1} α (OrderedCommMonoid.toCommMonoid.{u1} α hα))) (Monoid.toMulOneClass.{u2} β (CommMonoid.toMonoid.{u2} β (OrderedCommMonoid.toCommMonoid.{u2} β hβ)))) (Monoid.toMulOneClass.{u1} α (CommMonoid.toMonoid.{u1} α (OrderedCommMonoid.toCommMonoid.{u1} α hα))) (Monoid.toMulOneClass.{u2} β (CommMonoid.toMonoid.{u2} β (OrderedCommMonoid.toCommMonoid.{u2} β hβ))) (OrderMonoidHomClass.toMonoidHomClass.{max u1 u2, u1, u2} (OrderMonoidHom.{u1, u2} α β (PartialOrder.toPreorder.{u1} α (OrderedCommMonoid.toPartialOrder.{u1} α hα)) (PartialOrder.toPreorder.{u2} β (OrderedCommMonoid.toPartialOrder.{u2} β hβ)) (Monoid.toMulOneClass.{u1} α (CommMonoid.toMonoid.{u1} α (OrderedCommMonoid.toCommMonoid.{u1} α hα))) (Monoid.toMulOneClass.{u2} β (CommMonoid.toMonoid.{u2} β (OrderedCommMonoid.toCommMonoid.{u2} β hβ)))) α β (PartialOrder.toPreorder.{u1} α (OrderedCommMonoid.toPartialOrder.{u1} α hα)) (PartialOrder.toPreorder.{u2} β (OrderedCommMonoid.toPartialOrder.{u2} β hβ)) (Monoid.toMulOneClass.{u1} α (CommMonoid.toMonoid.{u1} α (OrderedCommMonoid.toCommMonoid.{u1} α hα))) (Monoid.toMulOneClass.{u2} β (CommMonoid.toMonoid.{u2} β (OrderedCommMonoid.toCommMonoid.{u2} β hβ))) (OrderMonoidHom.orderMonoidHomClass.{u1, u2} α β (PartialOrder.toPreorder.{u1} α (OrderedCommMonoid.toPartialOrder.{u1} α hα)) (PartialOrder.toPreorder.{u2} β (OrderedCommMonoid.toPartialOrder.{u2} β hβ)) (Monoid.toMulOneClass.{u1} α (CommMonoid.toMonoid.{u1} α (OrderedCommMonoid.toCommMonoid.{u1} α hα))) (Monoid.toMulOneClass.{u2} β (CommMonoid.toMonoid.{u2} β (OrderedCommMonoid.toCommMonoid.{u2} β hβ)))))))) f)
but is expected to have type
  forall {α : Type.{u2}} {β : Type.{u1}} {hα : OrderedCommMonoid.{u2} α} {hβ : OrderedCommMonoid.{u1} β} (f : OrderMonoidHom.{u2, u1} α β (PartialOrder.toPreorder.{u2} α (OrderedCommMonoid.toPartialOrder.{u2} α hα)) (PartialOrder.toPreorder.{u1} β (OrderedCommMonoid.toPartialOrder.{u1} β hβ)) (Monoid.toMulOneClass.{u2} α (CommMonoid.toMonoid.{u2} α (OrderedCommMonoid.toCommMonoid.{u2} α hα))) (Monoid.toMulOneClass.{u1} β (CommMonoid.toMonoid.{u1} β (OrderedCommMonoid.toCommMonoid.{u1} β hβ)))), Eq.{max (succ u2) (succ u1)} (MonoidHom.{u2, u1} α β (Monoid.toMulOneClass.{u2} α (CommMonoid.toMonoid.{u2} α (OrderedCommMonoid.toCommMonoid.{u2} α hα))) (Monoid.toMulOneClass.{u1} β (CommMonoid.toMonoid.{u1} β (OrderedCommMonoid.toCommMonoid.{u1} β hβ)))) (OrderMonoidHom.toMonoidHom.{u2, u1} α β (PartialOrder.toPreorder.{u2} α (OrderedCommMonoid.toPartialOrder.{u2} α hα)) (PartialOrder.toPreorder.{u1} β (OrderedCommMonoid.toPartialOrder.{u1} β hβ)) (Monoid.toMulOneClass.{u2} α (CommMonoid.toMonoid.{u2} α (OrderedCommMonoid.toCommMonoid.{u2} α hα))) (Monoid.toMulOneClass.{u1} β (CommMonoid.toMonoid.{u1} β (OrderedCommMonoid.toCommMonoid.{u1} β hβ))) f) (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} α β (OrderMonoidHom.{u2, u1} α β (PartialOrder.toPreorder.{u2} α (OrderedCommMonoid.toPartialOrder.{u2} α hα)) (PartialOrder.toPreorder.{u1} β (OrderedCommMonoid.toPartialOrder.{u1} β hβ)) (Monoid.toMulOneClass.{u2} α (CommMonoid.toMonoid.{u2} α (OrderedCommMonoid.toCommMonoid.{u2} α hα))) (Monoid.toMulOneClass.{u1} β (CommMonoid.toMonoid.{u1} β (OrderedCommMonoid.toCommMonoid.{u1} β hβ)))) (Monoid.toMulOneClass.{u2} α (CommMonoid.toMonoid.{u2} α (OrderedCommMonoid.toCommMonoid.{u2} α hα))) (Monoid.toMulOneClass.{u1} β (CommMonoid.toMonoid.{u1} β (OrderedCommMonoid.toCommMonoid.{u1} β hβ))) (OrderMonoidHomClass.toMonoidHomClass.{max u2 u1, u2, u1} (OrderMonoidHom.{u2, u1} α β (PartialOrder.toPreorder.{u2} α (OrderedCommMonoid.toPartialOrder.{u2} α hα)) (PartialOrder.toPreorder.{u1} β (OrderedCommMonoid.toPartialOrder.{u1} β hβ)) (Monoid.toMulOneClass.{u2} α (CommMonoid.toMonoid.{u2} α (OrderedCommMonoid.toCommMonoid.{u2} α hα))) (Monoid.toMulOneClass.{u1} β (CommMonoid.toMonoid.{u1} β (OrderedCommMonoid.toCommMonoid.{u1} β hβ)))) α β (PartialOrder.toPreorder.{u2} α (OrderedCommMonoid.toPartialOrder.{u2} α hα)) (PartialOrder.toPreorder.{u1} β (OrderedCommMonoid.toPartialOrder.{u1} β hβ)) (Monoid.toMulOneClass.{u2} α (CommMonoid.toMonoid.{u2} α (OrderedCommMonoid.toCommMonoid.{u2} α hα))) (Monoid.toMulOneClass.{u1} β (CommMonoid.toMonoid.{u1} β (OrderedCommMonoid.toCommMonoid.{u1} β hβ))) (OrderMonoidHom.instOrderMonoidHomClassOrderMonoidHom.{u2, u1} α β (PartialOrder.toPreorder.{u2} α (OrderedCommMonoid.toPartialOrder.{u2} α hα)) (PartialOrder.toPreorder.{u1} β (OrderedCommMonoid.toPartialOrder.{u1} β hβ)) (Monoid.toMulOneClass.{u2} α (CommMonoid.toMonoid.{u2} α (OrderedCommMonoid.toCommMonoid.{u2} α hα))) (Monoid.toMulOneClass.{u1} β (CommMonoid.toMonoid.{u1} β (OrderedCommMonoid.toCommMonoid.{u1} β hβ))))) f)
Case conversion may be inaccurate. Consider using '#align order_monoid_hom.to_monoid_hom_eq_coe OrderMonoidHom.toMonoidHom_eq_coeₓ'. -/
@[simp, to_additive]
theorem toMonoidHom_eq_coe (f : α →*o β) : f.toMonoidHom = f :=
  by
  ext
  rfl
#align order_monoid_hom.to_monoid_hom_eq_coe OrderMonoidHom.toMonoidHom_eq_coe
#align order_add_monoid_hom.to_add_monoid_hom_eq_coe OrderAddMonoidHom.toAddMonoidHom_eq_coe

/- warning: order_monoid_hom.to_order_hom_eq_coe -> OrderMonoidHom.toOrderHom_eq_coe is a dubious translation:
lean 3 declaration is
  forall {α : Type.{u1}} {β : Type.{u2}} {hα : OrderedCommMonoid.{u1} α} {hβ : OrderedCommMonoid.{u2} β} (f : OrderMonoidHom.{u1, u2} α β (PartialOrder.toPreorder.{u1} α (OrderedCommMonoid.toPartialOrder.{u1} α hα)) (PartialOrder.toPreorder.{u2} β (OrderedCommMonoid.toPartialOrder.{u2} β hβ)) (Monoid.toMulOneClass.{u1} α (CommMonoid.toMonoid.{u1} α (OrderedCommMonoid.toCommMonoid.{u1} α hα))) (Monoid.toMulOneClass.{u2} β (CommMonoid.toMonoid.{u2} β (OrderedCommMonoid.toCommMonoid.{u2} β hβ)))), Eq.{max (succ u1) (succ u2)} (OrderHom.{u1, u2} α β (PartialOrder.toPreorder.{u1} α (OrderedCommMonoid.toPartialOrder.{u1} α hα)) (PartialOrder.toPreorder.{u2} β (OrderedCommMonoid.toPartialOrder.{u2} β hβ))) (OrderMonoidHom.toOrderHom.{u1, u2} α β (PartialOrder.toPreorder.{u1} α (OrderedCommMonoid.toPartialOrder.{u1} α hα)) (PartialOrder.toPreorder.{u2} β (OrderedCommMonoid.toPartialOrder.{u2} β hβ)) (Monoid.toMulOneClass.{u1} α (CommMonoid.toMonoid.{u1} α (OrderedCommMonoid.toCommMonoid.{u1} α hα))) (Monoid.toMulOneClass.{u2} β (CommMonoid.toMonoid.{u2} β (OrderedCommMonoid.toCommMonoid.{u2} β hβ))) f) ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u1) (succ u2)} a b] => self.0) (OrderMonoidHom.{u1, u2} α β (PartialOrder.toPreorder.{u1} α (OrderedCommMonoid.toPartialOrder.{u1} α hα)) (PartialOrder.toPreorder.{u2} β (OrderedCommMonoid.toPartialOrder.{u2} β hβ)) (Monoid.toMulOneClass.{u1} α (CommMonoid.toMonoid.{u1} α (OrderedCommMonoid.toCommMonoid.{u1} α hα))) (Monoid.toMulOneClass.{u2} β (CommMonoid.toMonoid.{u2} β (OrderedCommMonoid.toCommMonoid.{u2} β hβ)))) (OrderHom.{u1, u2} α β (PartialOrder.toPreorder.{u1} α (OrderedCommMonoid.toPartialOrder.{u1} α hα)) (PartialOrder.toPreorder.{u2} β (OrderedCommMonoid.toPartialOrder.{u2} β hβ))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (OrderMonoidHom.{u1, u2} α β (PartialOrder.toPreorder.{u1} α (OrderedCommMonoid.toPartialOrder.{u1} α hα)) (PartialOrder.toPreorder.{u2} β (OrderedCommMonoid.toPartialOrder.{u2} β hβ)) (Monoid.toMulOneClass.{u1} α (CommMonoid.toMonoid.{u1} α (OrderedCommMonoid.toCommMonoid.{u1} α hα))) (Monoid.toMulOneClass.{u2} β (CommMonoid.toMonoid.{u2} β (OrderedCommMonoid.toCommMonoid.{u2} β hβ)))) (OrderHom.{u1, u2} α β (PartialOrder.toPreorder.{u1} α (OrderedCommMonoid.toPartialOrder.{u1} α hα)) (PartialOrder.toPreorder.{u2} β (OrderedCommMonoid.toPartialOrder.{u2} β hβ))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (OrderMonoidHom.{u1, u2} α β (PartialOrder.toPreorder.{u1} α (OrderedCommMonoid.toPartialOrder.{u1} α hα)) (PartialOrder.toPreorder.{u2} β (OrderedCommMonoid.toPartialOrder.{u2} β hβ)) (Monoid.toMulOneClass.{u1} α (CommMonoid.toMonoid.{u1} α (OrderedCommMonoid.toCommMonoid.{u1} α hα))) (Monoid.toMulOneClass.{u2} β (CommMonoid.toMonoid.{u2} β (OrderedCommMonoid.toCommMonoid.{u2} β hβ)))) (OrderHom.{u1, u2} α β (PartialOrder.toPreorder.{u1} α (OrderedCommMonoid.toPartialOrder.{u1} α hα)) (PartialOrder.toPreorder.{u2} β (OrderedCommMonoid.toPartialOrder.{u2} β hβ))) (OrderHomClass.OrderHom.hasCoeT.{max u1 u2, u1, u2} (OrderMonoidHom.{u1, u2} α β (PartialOrder.toPreorder.{u1} α (OrderedCommMonoid.toPartialOrder.{u1} α hα)) (PartialOrder.toPreorder.{u2} β (OrderedCommMonoid.toPartialOrder.{u2} β hβ)) (Monoid.toMulOneClass.{u1} α (CommMonoid.toMonoid.{u1} α (OrderedCommMonoid.toCommMonoid.{u1} α hα))) (Monoid.toMulOneClass.{u2} β (CommMonoid.toMonoid.{u2} β (OrderedCommMonoid.toCommMonoid.{u2} β hβ)))) α β (PartialOrder.toPreorder.{u1} α (OrderedCommMonoid.toPartialOrder.{u1} α hα)) (PartialOrder.toPreorder.{u2} β (OrderedCommMonoid.toPartialOrder.{u2} β hβ)) (OrderMonoidHomClass.toOrderHomClass.{max u1 u2, u1, u2} (OrderMonoidHom.{u1, u2} α β (PartialOrder.toPreorder.{u1} α (OrderedCommMonoid.toPartialOrder.{u1} α hα)) (PartialOrder.toPreorder.{u2} β (OrderedCommMonoid.toPartialOrder.{u2} β hβ)) (Monoid.toMulOneClass.{u1} α (CommMonoid.toMonoid.{u1} α (OrderedCommMonoid.toCommMonoid.{u1} α hα))) (Monoid.toMulOneClass.{u2} β (CommMonoid.toMonoid.{u2} β (OrderedCommMonoid.toCommMonoid.{u2} β hβ)))) α β (PartialOrder.toPreorder.{u1} α (OrderedCommMonoid.toPartialOrder.{u1} α hα)) (PartialOrder.toPreorder.{u2} β (OrderedCommMonoid.toPartialOrder.{u2} β hβ)) (Monoid.toMulOneClass.{u1} α (CommMonoid.toMonoid.{u1} α (OrderedCommMonoid.toCommMonoid.{u1} α hα))) (Monoid.toMulOneClass.{u2} β (CommMonoid.toMonoid.{u2} β (OrderedCommMonoid.toCommMonoid.{u2} β hβ))) (OrderMonoidHom.orderMonoidHomClass.{u1, u2} α β (PartialOrder.toPreorder.{u1} α (OrderedCommMonoid.toPartialOrder.{u1} α hα)) (PartialOrder.toPreorder.{u2} β (OrderedCommMonoid.toPartialOrder.{u2} β hβ)) (Monoid.toMulOneClass.{u1} α (CommMonoid.toMonoid.{u1} α (OrderedCommMonoid.toCommMonoid.{u1} α hα))) (Monoid.toMulOneClass.{u2} β (CommMonoid.toMonoid.{u2} β (OrderedCommMonoid.toCommMonoid.{u2} β hβ)))))))) f)
but is expected to have type
  forall {α : Type.{u2}} {β : Type.{u1}} {hα : OrderedCommMonoid.{u2} α} {hβ : OrderedCommMonoid.{u1} β} (f : OrderMonoidHom.{u2, u1} α β (PartialOrder.toPreorder.{u2} α (OrderedCommMonoid.toPartialOrder.{u2} α hα)) (PartialOrder.toPreorder.{u1} β (OrderedCommMonoid.toPartialOrder.{u1} β hβ)) (Monoid.toMulOneClass.{u2} α (CommMonoid.toMonoid.{u2} α (OrderedCommMonoid.toCommMonoid.{u2} α hα))) (Monoid.toMulOneClass.{u1} β (CommMonoid.toMonoid.{u1} β (OrderedCommMonoid.toCommMonoid.{u1} β hβ)))), Eq.{max (succ u2) (succ u1)} (OrderHom.{u2, u1} α β (PartialOrder.toPreorder.{u2} α (OrderedCommMonoid.toPartialOrder.{u2} α hα)) (PartialOrder.toPreorder.{u1} β (OrderedCommMonoid.toPartialOrder.{u1} β hβ))) (OrderMonoidHom.toOrderHom.{u2, u1} α β (PartialOrder.toPreorder.{u2} α (OrderedCommMonoid.toPartialOrder.{u2} α hα)) (PartialOrder.toPreorder.{u1} β (OrderedCommMonoid.toPartialOrder.{u1} β hβ)) (Monoid.toMulOneClass.{u2} α (CommMonoid.toMonoid.{u2} α (OrderedCommMonoid.toCommMonoid.{u2} α hα))) (Monoid.toMulOneClass.{u1} β (CommMonoid.toMonoid.{u1} β (OrderedCommMonoid.toCommMonoid.{u1} β hβ))) f) (OrderHomClass.toOrderHom.{max u2 u1, u2, u1} (OrderMonoidHom.{u2, u1} α β (PartialOrder.toPreorder.{u2} α (OrderedCommMonoid.toPartialOrder.{u2} α hα)) (PartialOrder.toPreorder.{u1} β (OrderedCommMonoid.toPartialOrder.{u1} β hβ)) (Monoid.toMulOneClass.{u2} α (CommMonoid.toMonoid.{u2} α (OrderedCommMonoid.toCommMonoid.{u2} α hα))) (Monoid.toMulOneClass.{u1} β (CommMonoid.toMonoid.{u1} β (OrderedCommMonoid.toCommMonoid.{u1} β hβ)))) α β (PartialOrder.toPreorder.{u2} α (OrderedCommMonoid.toPartialOrder.{u2} α hα)) (PartialOrder.toPreorder.{u1} β (OrderedCommMonoid.toPartialOrder.{u1} β hβ)) (OrderMonoidHomClass.toOrderHomClass.{max u2 u1, u2, u1} (OrderMonoidHom.{u2, u1} α β (PartialOrder.toPreorder.{u2} α (OrderedCommMonoid.toPartialOrder.{u2} α hα)) (PartialOrder.toPreorder.{u1} β (OrderedCommMonoid.toPartialOrder.{u1} β hβ)) (Monoid.toMulOneClass.{u2} α (CommMonoid.toMonoid.{u2} α (OrderedCommMonoid.toCommMonoid.{u2} α hα))) (Monoid.toMulOneClass.{u1} β (CommMonoid.toMonoid.{u1} β (OrderedCommMonoid.toCommMonoid.{u1} β hβ)))) α β (PartialOrder.toPreorder.{u2} α (OrderedCommMonoid.toPartialOrder.{u2} α hα)) (PartialOrder.toPreorder.{u1} β (OrderedCommMonoid.toPartialOrder.{u1} β hβ)) (Monoid.toMulOneClass.{u2} α (CommMonoid.toMonoid.{u2} α (OrderedCommMonoid.toCommMonoid.{u2} α hα))) (Monoid.toMulOneClass.{u1} β (CommMonoid.toMonoid.{u1} β (OrderedCommMonoid.toCommMonoid.{u1} β hβ))) (OrderMonoidHom.instOrderMonoidHomClassOrderMonoidHom.{u2, u1} α β (PartialOrder.toPreorder.{u2} α (OrderedCommMonoid.toPartialOrder.{u2} α hα)) (PartialOrder.toPreorder.{u1} β (OrderedCommMonoid.toPartialOrder.{u1} β hβ)) (Monoid.toMulOneClass.{u2} α (CommMonoid.toMonoid.{u2} α (OrderedCommMonoid.toCommMonoid.{u2} α hα))) (Monoid.toMulOneClass.{u1} β (CommMonoid.toMonoid.{u1} β (OrderedCommMonoid.toCommMonoid.{u1} β hβ))))) f)
Case conversion may be inaccurate. Consider using '#align order_monoid_hom.to_order_hom_eq_coe OrderMonoidHom.toOrderHom_eq_coeₓ'. -/
@[simp, to_additive]
theorem toOrderHom_eq_coe (f : α →*o β) : f.toOrderHom = f :=
  rfl
#align order_monoid_hom.to_order_hom_eq_coe OrderMonoidHom.toOrderHom_eq_coe
#align order_add_monoid_hom.to_order_hom_eq_coe OrderAddMonoidHom.toOrderHom_eq_coe

end OrderedCommMonoid

section OrderedCommGroup

variable {hα : OrderedCommGroup α} {hβ : OrderedCommGroup β}

include hα hβ

/- warning: order_monoid_hom.mk' -> OrderMonoidHom.mk' is a dubious translation:
lean 3 declaration is
  forall {α : Type.{u1}} {β : Type.{u2}} {hα : OrderedCommGroup.{u1} α} {hβ : OrderedCommGroup.{u2} β} (f : α -> β), (Monotone.{u1, u2} α β (PartialOrder.toPreorder.{u1} α (OrderedCommGroup.toPartialOrder.{u1} α hα)) (PartialOrder.toPreorder.{u2} β (OrderedCommGroup.toPartialOrder.{u2} β hβ)) f) -> (forall (a : α) (b : α), Eq.{succ u2} β (f (HMul.hMul.{u1, u1, u1} α α α (instHMul.{u1} α (MulOneClass.toHasMul.{u1} α (Monoid.toMulOneClass.{u1} α (DivInvMonoid.toMonoid.{u1} α (Group.toDivInvMonoid.{u1} α (CommGroup.toGroup.{u1} α (OrderedCommGroup.toCommGroup.{u1} α hα))))))) a b)) (HMul.hMul.{u2, u2, u2} β β β (instHMul.{u2} β (MulOneClass.toHasMul.{u2} β (Monoid.toMulOneClass.{u2} β (DivInvMonoid.toMonoid.{u2} β (Group.toDivInvMonoid.{u2} β (CommGroup.toGroup.{u2} β (OrderedCommGroup.toCommGroup.{u2} β hβ))))))) (f a) (f b))) -> (OrderMonoidHom.{u1, u2} α β (PartialOrder.toPreorder.{u1} α (OrderedCommGroup.toPartialOrder.{u1} α hα)) (PartialOrder.toPreorder.{u2} β (OrderedCommGroup.toPartialOrder.{u2} β hβ)) (Monoid.toMulOneClass.{u1} α (DivInvMonoid.toMonoid.{u1} α (Group.toDivInvMonoid.{u1} α (CommGroup.toGroup.{u1} α (OrderedCommGroup.toCommGroup.{u1} α hα))))) (Monoid.toMulOneClass.{u2} β (DivInvMonoid.toMonoid.{u2} β (Group.toDivInvMonoid.{u2} β (CommGroup.toGroup.{u2} β (OrderedCommGroup.toCommGroup.{u2} β hβ))))))
but is expected to have type
  forall {α : Type.{u1}} {β : Type.{u2}} {hα : OrderedCommGroup.{u1} α} {hβ : OrderedCommGroup.{u2} β} (f : α -> β), (Monotone.{u1, u2} α β (PartialOrder.toPreorder.{u1} α (OrderedCommGroup.toPartialOrder.{u1} α hα)) (PartialOrder.toPreorder.{u2} β (OrderedCommGroup.toPartialOrder.{u2} β hβ)) f) -> (forall (a : α) (b : α), Eq.{succ u2} β (f (HMul.hMul.{u1, u1, u1} α α α (instHMul.{u1} α (MulOneClass.toMul.{u1} α (Monoid.toMulOneClass.{u1} α (DivInvMonoid.toMonoid.{u1} α (Group.toDivInvMonoid.{u1} α (CommGroup.toGroup.{u1} α (OrderedCommGroup.toCommGroup.{u1} α hα))))))) a b)) (HMul.hMul.{u2, u2, u2} β β β (instHMul.{u2} β (MulOneClass.toMul.{u2} β (Monoid.toMulOneClass.{u2} β (DivInvMonoid.toMonoid.{u2} β (Group.toDivInvMonoid.{u2} β (CommGroup.toGroup.{u2} β (OrderedCommGroup.toCommGroup.{u2} β hβ))))))) (f a) (f b))) -> (OrderMonoidHom.{u1, u2} α β (PartialOrder.toPreorder.{u1} α (OrderedCommGroup.toPartialOrder.{u1} α hα)) (PartialOrder.toPreorder.{u2} β (OrderedCommGroup.toPartialOrder.{u2} β hβ)) (Monoid.toMulOneClass.{u1} α (DivInvMonoid.toMonoid.{u1} α (Group.toDivInvMonoid.{u1} α (CommGroup.toGroup.{u1} α (OrderedCommGroup.toCommGroup.{u1} α hα))))) (Monoid.toMulOneClass.{u2} β (DivInvMonoid.toMonoid.{u2} β (Group.toDivInvMonoid.{u2} β (CommGroup.toGroup.{u2} β (OrderedCommGroup.toCommGroup.{u2} β hβ))))))
Case conversion may be inaccurate. Consider using '#align order_monoid_hom.mk' OrderMonoidHom.mk'ₓ'. -/
/-- Makes an ordered group homomorphism from a proof that the map preserves multiplication. -/
@[to_additive
      "Makes an ordered additive group homomorphism from a proof that the map preserves\naddition.",
  simps (config := { fullyApplied := false })]
def mk' (f : α → β) (hf : Monotone f) (map_mul : ∀ a b : α, f (a * b) = f a * f b) : α →*o β :=
  { MonoidHom.mk' f map_mul with monotone' := hf }
#align order_monoid_hom.mk' OrderMonoidHom.mk'
#align order_add_monoid_hom.mk' OrderAddMonoidHom.mk'

end OrderedCommGroup

end OrderMonoidHom

namespace OrderMonoidWithZeroHom

section Preorder

variable [Preorder α] [Preorder β] [Preorder γ] [Preorder δ] [MulZeroOneClass α] [MulZeroOneClass β]
  [MulZeroOneClass γ] [MulZeroOneClass δ] {f g : α →*₀o β}

instance : OrderMonoidWithZeroHomClass (α →*₀o β) α β
    where
  coe f := f.toFun
  coe_injective' f g h := by
    obtain ⟨⟨_, _⟩, _⟩ := f
    obtain ⟨⟨_, _⟩, _⟩ := g
    congr
  map_mul f := f.map_mul'
  map_one f := f.map_one'
  map_zero f := f.map_zero'
  Monotone f := f.monotone'

/-- Helper instance for when there's too many metavariables to apply `fun_like.has_coe_to_fun`
directly. -/
instance : CoeFun (α →*₀o β) fun _ => α → β :=
  FunLike.hasCoeToFun

/- warning: order_monoid_with_zero_hom.ext -> OrderMonoidWithZeroHom.ext is a dubious translation:
lean 3 declaration is
  forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : Preorder.{u1} α] [_inst_2 : Preorder.{u2} β] [_inst_5 : MulZeroOneClass.{u1} α] [_inst_6 : MulZeroOneClass.{u2} β] {f : OrderMonoidWithZeroHom.{u1, u2} α β _inst_1 _inst_2 _inst_5 _inst_6} {g : OrderMonoidWithZeroHom.{u1, u2} α β _inst_1 _inst_2 _inst_5 _inst_6}, (forall (a : α), Eq.{succ u2} β (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (OrderMonoidWithZeroHom.{u1, u2} α β _inst_1 _inst_2 _inst_5 _inst_6) (fun (_x : OrderMonoidWithZeroHom.{u1, u2} α β _inst_1 _inst_2 _inst_5 _inst_6) => α -> β) (OrderMonoidWithZeroHom.hasCoeToFun.{u1, u2} α β _inst_1 _inst_2 _inst_5 _inst_6) f a) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (OrderMonoidWithZeroHom.{u1, u2} α β _inst_1 _inst_2 _inst_5 _inst_6) (fun (_x : OrderMonoidWithZeroHom.{u1, u2} α β _inst_1 _inst_2 _inst_5 _inst_6) => α -> β) (OrderMonoidWithZeroHom.hasCoeToFun.{u1, u2} α β _inst_1 _inst_2 _inst_5 _inst_6) g a)) -> (Eq.{max (succ u1) (succ u2)} (OrderMonoidWithZeroHom.{u1, u2} α β _inst_1 _inst_2 _inst_5 _inst_6) f g)
but is expected to have type
  forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : Preorder.{u1} α] [_inst_2 : Preorder.{u2} β] [_inst_5 : MulZeroOneClass.{u1} α] [_inst_6 : MulZeroOneClass.{u2} β] {f : OrderMonoidWithZeroHom.{u1, u2} α β _inst_1 _inst_2 _inst_5 _inst_6} {g : OrderMonoidWithZeroHom.{u1, u2} α β _inst_1 _inst_2 _inst_5 _inst_6}, (forall (a : α), Eq.{succ u2} ((fun (x._@.Mathlib.Order.RelIso.Basic._hyg.867 : α) => β) a) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (OrderMonoidWithZeroHom.{u1, u2} α β _inst_1 _inst_2 _inst_5 _inst_6) α (fun (_x : α) => (fun (x._@.Mathlib.Order.RelIso.Basic._hyg.867 : α) => β) _x) (RelHomClass.toFunLike.{max u1 u2, u1, u2} (OrderMonoidWithZeroHom.{u1, u2} α β _inst_1 _inst_2 _inst_5 _inst_6) α β (fun (x._@.Mathlib.Order.Hom.Basic._hyg.1896 : α) (x._@.Mathlib.Order.Hom.Basic._hyg.1898 : α) => LE.le.{u1} α (Preorder.toLE.{u1} α _inst_1) x._@.Mathlib.Order.Hom.Basic._hyg.1896 x._@.Mathlib.Order.Hom.Basic._hyg.1898) (fun (x._@.Mathlib.Order.Hom.Basic._hyg.1918 : β) (x._@.Mathlib.Order.Hom.Basic._hyg.1920 : β) => LE.le.{u2} β (Preorder.toLE.{u2} β _inst_2) x._@.Mathlib.Order.Hom.Basic._hyg.1918 x._@.Mathlib.Order.Hom.Basic._hyg.1920) (OrderMonoidHomClass.toOrderHomClass.{max u1 u2, u1, u2} (OrderMonoidWithZeroHom.{u1, u2} α β _inst_1 _inst_2 _inst_5 _inst_6) α β _inst_1 _inst_2 (MulZeroOneClass.toMulOneClass.{u1} α _inst_5) (MulZeroOneClass.toMulOneClass.{u2} β _inst_6) (OrderMonoidWithZeroHomClass.toOrderMonoidHomClass.{max u1 u2, u1, u2} (OrderMonoidWithZeroHom.{u1, u2} α β _inst_1 _inst_2 _inst_5 _inst_6) α β _inst_1 _inst_2 _inst_5 _inst_6 (OrderMonoidWithZeroHom.instOrderMonoidWithZeroHomClassOrderMonoidWithZeroHom.{u1, u2} α β _inst_1 _inst_2 _inst_5 _inst_6)))) f a) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (OrderMonoidWithZeroHom.{u1, u2} α β _inst_1 _inst_2 _inst_5 _inst_6) α (fun (_x : α) => (fun (x._@.Mathlib.Order.RelIso.Basic._hyg.867 : α) => β) _x) (RelHomClass.toFunLike.{max u1 u2, u1, u2} (OrderMonoidWithZeroHom.{u1, u2} α β _inst_1 _inst_2 _inst_5 _inst_6) α β (fun (x._@.Mathlib.Order.Hom.Basic._hyg.1896 : α) (x._@.Mathlib.Order.Hom.Basic._hyg.1898 : α) => LE.le.{u1} α (Preorder.toLE.{u1} α _inst_1) x._@.Mathlib.Order.Hom.Basic._hyg.1896 x._@.Mathlib.Order.Hom.Basic._hyg.1898) (fun (x._@.Mathlib.Order.Hom.Basic._hyg.1918 : β) (x._@.Mathlib.Order.Hom.Basic._hyg.1920 : β) => LE.le.{u2} β (Preorder.toLE.{u2} β _inst_2) x._@.Mathlib.Order.Hom.Basic._hyg.1918 x._@.Mathlib.Order.Hom.Basic._hyg.1920) (OrderMonoidHomClass.toOrderHomClass.{max u1 u2, u1, u2} (OrderMonoidWithZeroHom.{u1, u2} α β _inst_1 _inst_2 _inst_5 _inst_6) α β _inst_1 _inst_2 (MulZeroOneClass.toMulOneClass.{u1} α _inst_5) (MulZeroOneClass.toMulOneClass.{u2} β _inst_6) (OrderMonoidWithZeroHomClass.toOrderMonoidHomClass.{max u1 u2, u1, u2} (OrderMonoidWithZeroHom.{u1, u2} α β _inst_1 _inst_2 _inst_5 _inst_6) α β _inst_1 _inst_2 _inst_5 _inst_6 (OrderMonoidWithZeroHom.instOrderMonoidWithZeroHomClassOrderMonoidWithZeroHom.{u1, u2} α β _inst_1 _inst_2 _inst_5 _inst_6)))) g a)) -> (Eq.{max (succ u1) (succ u2)} (OrderMonoidWithZeroHom.{u1, u2} α β _inst_1 _inst_2 _inst_5 _inst_6) f g)
Case conversion may be inaccurate. Consider using '#align order_monoid_with_zero_hom.ext OrderMonoidWithZeroHom.extₓ'. -/
-- Other lemmas should be accessed through the `fun_like` API
@[ext]
theorem ext (h : ∀ a, f a = g a) : f = g :=
  FunLike.ext f g h
#align order_monoid_with_zero_hom.ext OrderMonoidWithZeroHom.ext

/- warning: order_monoid_with_zero_hom.to_fun_eq_coe -> OrderMonoidWithZeroHom.toFun_eq_coe is a dubious translation:
lean 3 declaration is
  forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : Preorder.{u1} α] [_inst_2 : Preorder.{u2} β] [_inst_5 : MulZeroOneClass.{u1} α] [_inst_6 : MulZeroOneClass.{u2} β] (f : OrderMonoidWithZeroHom.{u1, u2} α β _inst_1 _inst_2 _inst_5 _inst_6), Eq.{max (succ u1) (succ u2)} (α -> β) (MonoidWithZeroHom.toFun.{u1, u2} α β _inst_5 _inst_6 (OrderMonoidWithZeroHom.toMonoidWithZeroHom.{u1, u2} α β _inst_1 _inst_2 _inst_5 _inst_6 f)) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (OrderMonoidWithZeroHom.{u1, u2} α β _inst_1 _inst_2 _inst_5 _inst_6) (fun (_x : OrderMonoidWithZeroHom.{u1, u2} α β _inst_1 _inst_2 _inst_5 _inst_6) => α -> β) (OrderMonoidWithZeroHom.hasCoeToFun.{u1, u2} α β _inst_1 _inst_2 _inst_5 _inst_6) f)
but is expected to have type
  forall {α : Type.{u2}} {β : Type.{u1}} [_inst_1 : Preorder.{u2} α] [_inst_2 : Preorder.{u1} β] [_inst_5 : MulZeroOneClass.{u2} α] [_inst_6 : MulZeroOneClass.{u1} β] (f : OrderMonoidWithZeroHom.{u2, u1} α β _inst_1 _inst_2 _inst_5 _inst_6), Eq.{max (succ u2) (succ u1)} (α -> β) (ZeroHom.toFun.{u2, u1} α β (MulZeroOneClass.toZero.{u2} α _inst_5) (MulZeroOneClass.toZero.{u1} β _inst_6) (MonoidWithZeroHom.toZeroHom.{u2, u1} α β _inst_5 _inst_6 (OrderMonoidWithZeroHom.toMonoidWithZeroHom.{u2, u1} α β _inst_1 _inst_2 _inst_5 _inst_6 f))) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (OrderMonoidWithZeroHom.{u2, u1} α β _inst_1 _inst_2 _inst_5 _inst_6) α (fun (_x : α) => (fun (x._@.Mathlib.Order.RelIso.Basic._hyg.867 : α) => β) _x) (RelHomClass.toFunLike.{max u2 u1, u2, u1} (OrderMonoidWithZeroHom.{u2, u1} α β _inst_1 _inst_2 _inst_5 _inst_6) α β (fun (x._@.Mathlib.Order.Hom.Basic._hyg.1896 : α) (x._@.Mathlib.Order.Hom.Basic._hyg.1898 : α) => LE.le.{u2} α (Preorder.toLE.{u2} α _inst_1) x._@.Mathlib.Order.Hom.Basic._hyg.1896 x._@.Mathlib.Order.Hom.Basic._hyg.1898) (fun (x._@.Mathlib.Order.Hom.Basic._hyg.1918 : β) (x._@.Mathlib.Order.Hom.Basic._hyg.1920 : β) => LE.le.{u1} β (Preorder.toLE.{u1} β _inst_2) x._@.Mathlib.Order.Hom.Basic._hyg.1918 x._@.Mathlib.Order.Hom.Basic._hyg.1920) (OrderMonoidHomClass.toOrderHomClass.{max u2 u1, u2, u1} (OrderMonoidWithZeroHom.{u2, u1} α β _inst_1 _inst_2 _inst_5 _inst_6) α β _inst_1 _inst_2 (MulZeroOneClass.toMulOneClass.{u2} α _inst_5) (MulZeroOneClass.toMulOneClass.{u1} β _inst_6) (OrderMonoidWithZeroHomClass.toOrderMonoidHomClass.{max u2 u1, u2, u1} (OrderMonoidWithZeroHom.{u2, u1} α β _inst_1 _inst_2 _inst_5 _inst_6) α β _inst_1 _inst_2 _inst_5 _inst_6 (OrderMonoidWithZeroHom.instOrderMonoidWithZeroHomClassOrderMonoidWithZeroHom.{u2, u1} α β _inst_1 _inst_2 _inst_5 _inst_6)))) f)
Case conversion may be inaccurate. Consider using '#align order_monoid_with_zero_hom.to_fun_eq_coe OrderMonoidWithZeroHom.toFun_eq_coeₓ'. -/
theorem toFun_eq_coe (f : α →*₀o β) : f.toFun = (f : α → β) :=
  rfl
#align order_monoid_with_zero_hom.to_fun_eq_coe OrderMonoidWithZeroHom.toFun_eq_coe

/- warning: order_monoid_with_zero_hom.coe_mk -> OrderMonoidWithZeroHom.coe_mk is a dubious translation:
lean 3 declaration is
  forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : Preorder.{u1} α] [_inst_2 : Preorder.{u2} β] [_inst_5 : MulZeroOneClass.{u1} α] [_inst_6 : MulZeroOneClass.{u2} β] (f : MonoidWithZeroHom.{u1, u2} α β _inst_5 _inst_6) (h : Monotone.{u1, u2} α β _inst_1 _inst_2 (MonoidWithZeroHom.toFun.{u1, u2} α β _inst_5 _inst_6 f)), Eq.{max (succ u1) (succ u2)} ((fun (_x : OrderMonoidWithZeroHom.{u1, u2} α β _inst_1 _inst_2 _inst_5 _inst_6) => α -> β) (OrderMonoidWithZeroHom.mk.{u1, u2} α β _inst_1 _inst_2 _inst_5 _inst_6 f h)) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (OrderMonoidWithZeroHom.{u1, u2} α β _inst_1 _inst_2 _inst_5 _inst_6) (fun (_x : OrderMonoidWithZeroHom.{u1, u2} α β _inst_1 _inst_2 _inst_5 _inst_6) => α -> β) (OrderMonoidWithZeroHom.hasCoeToFun.{u1, u2} α β _inst_1 _inst_2 _inst_5 _inst_6) (OrderMonoidWithZeroHom.mk.{u1, u2} α β _inst_1 _inst_2 _inst_5 _inst_6 f h)) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidWithZeroHom.{u1, u2} α β _inst_5 _inst_6) (fun (_x : MonoidWithZeroHom.{u1, u2} α β _inst_5 _inst_6) => α -> β) (MonoidWithZeroHom.hasCoeToFun.{u1, u2} α β _inst_5 _inst_6) f)
but is expected to have type
  forall {α : Type.{u2}} {β : Type.{u1}} [_inst_1 : Preorder.{u2} α] [_inst_2 : Preorder.{u1} β] [_inst_5 : MulZeroOneClass.{u2} α] [_inst_6 : MulZeroOneClass.{u1} β] (f : MonoidWithZeroHom.{u2, u1} α β _inst_5 _inst_6) (h : Monotone.{u2, u1} α β _inst_1 _inst_2 (ZeroHom.toFun.{u2, u1} α β (MulZeroOneClass.toZero.{u2} α _inst_5) (MulZeroOneClass.toZero.{u1} β _inst_6) (MonoidWithZeroHom.toZeroHom.{u2, u1} α β _inst_5 _inst_6 f))), Eq.{max (succ u2) (succ u1)} (forall (a : α), (fun (x._@.Mathlib.Order.RelIso.Basic._hyg.867 : α) => β) a) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (OrderMonoidWithZeroHom.{u2, u1} α β _inst_1 _inst_2 _inst_5 _inst_6) α (fun (_x : α) => (fun (x._@.Mathlib.Order.RelIso.Basic._hyg.867 : α) => β) _x) (RelHomClass.toFunLike.{max u2 u1, u2, u1} (OrderMonoidWithZeroHom.{u2, u1} α β _inst_1 _inst_2 _inst_5 _inst_6) α β (fun (x._@.Mathlib.Order.Hom.Basic._hyg.1896 : α) (x._@.Mathlib.Order.Hom.Basic._hyg.1898 : α) => LE.le.{u2} α (Preorder.toLE.{u2} α _inst_1) x._@.Mathlib.Order.Hom.Basic._hyg.1896 x._@.Mathlib.Order.Hom.Basic._hyg.1898) (fun (x._@.Mathlib.Order.Hom.Basic._hyg.1918 : β) (x._@.Mathlib.Order.Hom.Basic._hyg.1920 : β) => LE.le.{u1} β (Preorder.toLE.{u1} β _inst_2) x._@.Mathlib.Order.Hom.Basic._hyg.1918 x._@.Mathlib.Order.Hom.Basic._hyg.1920) (OrderMonoidHomClass.toOrderHomClass.{max u2 u1, u2, u1} (OrderMonoidWithZeroHom.{u2, u1} α β _inst_1 _inst_2 _inst_5 _inst_6) α β _inst_1 _inst_2 (MulZeroOneClass.toMulOneClass.{u2} α _inst_5) (MulZeroOneClass.toMulOneClass.{u1} β _inst_6) (OrderMonoidWithZeroHomClass.toOrderMonoidHomClass.{max u2 u1, u2, u1} (OrderMonoidWithZeroHom.{u2, u1} α β _inst_1 _inst_2 _inst_5 _inst_6) α β _inst_1 _inst_2 _inst_5 _inst_6 (OrderMonoidWithZeroHom.instOrderMonoidWithZeroHomClassOrderMonoidWithZeroHom.{u2, u1} α β _inst_1 _inst_2 _inst_5 _inst_6)))) (OrderMonoidWithZeroHom.mk.{u2, u1} α β _inst_1 _inst_2 _inst_5 _inst_6 f h)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidWithZeroHom.{u2, u1} α β _inst_5 _inst_6) α (fun (_x : α) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : α) => β) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidWithZeroHom.{u2, u1} α β _inst_5 _inst_6) α β (MulOneClass.toMul.{u2} α (MulZeroOneClass.toMulOneClass.{u2} α _inst_5)) (MulOneClass.toMul.{u1} β (MulZeroOneClass.toMulOneClass.{u1} β _inst_6)) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidWithZeroHom.{u2, u1} α β _inst_5 _inst_6) α β (MulZeroOneClass.toMulOneClass.{u2} α _inst_5) (MulZeroOneClass.toMulOneClass.{u1} β _inst_6) (MonoidWithZeroHomClass.toMonoidHomClass.{max u2 u1, u2, u1} (MonoidWithZeroHom.{u2, u1} α β _inst_5 _inst_6) α β _inst_5 _inst_6 (MonoidWithZeroHom.monoidWithZeroHomClass.{u2, u1} α β _inst_5 _inst_6)))) f)
Case conversion may be inaccurate. Consider using '#align order_monoid_with_zero_hom.coe_mk OrderMonoidWithZeroHom.coe_mkₓ'. -/
@[simp]
theorem coe_mk (f : α →*₀ β) (h) : (OrderMonoidWithZeroHom.mk f h : α → β) = f :=
  rfl
#align order_monoid_with_zero_hom.coe_mk OrderMonoidWithZeroHom.coe_mk

/- warning: order_monoid_with_zero_hom.mk_coe -> OrderMonoidWithZeroHom.mk_coe is a dubious translation:
lean 3 declaration is
  forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : Preorder.{u1} α] [_inst_2 : Preorder.{u2} β] [_inst_5 : MulZeroOneClass.{u1} α] [_inst_6 : MulZeroOneClass.{u2} β] (f : OrderMonoidWithZeroHom.{u1, u2} α β _inst_1 _inst_2 _inst_5 _inst_6) (h : Monotone.{u1, u2} α β _inst_1 _inst_2 (MonoidWithZeroHom.toFun.{u1, u2} α β _inst_5 _inst_6 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (OrderMonoidWithZeroHom.{u1, u2} α β _inst_1 _inst_2 _inst_5 _inst_6) (MonoidWithZeroHom.{u1, u2} α β _inst_5 _inst_6) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (OrderMonoidWithZeroHom.{u1, u2} α β _inst_1 _inst_2 _inst_5 _inst_6) (MonoidWithZeroHom.{u1, u2} α β _inst_5 _inst_6) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (OrderMonoidWithZeroHom.{u1, u2} α β _inst_1 _inst_2 _inst_5 _inst_6) (MonoidWithZeroHom.{u1, u2} α β _inst_5 _inst_6) (MonoidWithZeroHom.hasCoeT.{u1, u2, max u1 u2} α β (OrderMonoidWithZeroHom.{u1, u2} α β _inst_1 _inst_2 _inst_5 _inst_6) _inst_5 _inst_6 (OrderMonoidWithZeroHomClass.toMonoidWithZeroHomClass.{max u1 u2, u1, u2} (OrderMonoidWithZeroHom.{u1, u2} α β _inst_1 _inst_2 _inst_5 _inst_6) α β _inst_1 _inst_2 _inst_5 _inst_6 (OrderMonoidWithZeroHom.orderMonoidWithZeroHomClass.{u1, u2} α β _inst_1 _inst_2 _inst_5 _inst_6))))) f))), Eq.{max (succ u1) (succ u2)} (OrderMonoidWithZeroHom.{u1, u2} α β _inst_1 _inst_2 _inst_5 _inst_6) (OrderMonoidWithZeroHom.mk.{u1, u2} α β _inst_1 _inst_2 _inst_5 _inst_6 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (OrderMonoidWithZeroHom.{u1, u2} α β _inst_1 _inst_2 _inst_5 _inst_6) (MonoidWithZeroHom.{u1, u2} α β _inst_5 _inst_6) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (OrderMonoidWithZeroHom.{u1, u2} α β _inst_1 _inst_2 _inst_5 _inst_6) (MonoidWithZeroHom.{u1, u2} α β _inst_5 _inst_6) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (OrderMonoidWithZeroHom.{u1, u2} α β _inst_1 _inst_2 _inst_5 _inst_6) (MonoidWithZeroHom.{u1, u2} α β _inst_5 _inst_6) (MonoidWithZeroHom.hasCoeT.{u1, u2, max u1 u2} α β (OrderMonoidWithZeroHom.{u1, u2} α β _inst_1 _inst_2 _inst_5 _inst_6) _inst_5 _inst_6 (OrderMonoidWithZeroHomClass.toMonoidWithZeroHomClass.{max u1 u2, u1, u2} (OrderMonoidWithZeroHom.{u1, u2} α β _inst_1 _inst_2 _inst_5 _inst_6) α β _inst_1 _inst_2 _inst_5 _inst_6 (OrderMonoidWithZeroHom.orderMonoidWithZeroHomClass.{u1, u2} α β _inst_1 _inst_2 _inst_5 _inst_6))))) f) h) f
but is expected to have type
  forall {α : Type.{u2}} {β : Type.{u1}} [_inst_1 : Preorder.{u2} α] [_inst_2 : Preorder.{u1} β] [_inst_5 : MulZeroOneClass.{u2} α] [_inst_6 : MulZeroOneClass.{u1} β] (f : OrderMonoidWithZeroHom.{u2, u1} α β _inst_1 _inst_2 _inst_5 _inst_6) (h : Monotone.{u2, u1} α β _inst_1 _inst_2 (ZeroHom.toFun.{u2, u1} α β (MulZeroOneClass.toZero.{u2} α _inst_5) (MulZeroOneClass.toZero.{u1} β _inst_6) (MonoidWithZeroHom.toZeroHom.{u2, u1} α β _inst_5 _inst_6 (MonoidWithZeroHomClass.toMonoidWithZeroHom.{u2, u1, max u2 u1} α β (OrderMonoidWithZeroHom.{u2, u1} α β _inst_1 _inst_2 _inst_5 _inst_6) _inst_5 _inst_6 (OrderMonoidWithZeroHomClass.toMonoidWithZeroHomClass.{max u2 u1, u2, u1} (OrderMonoidWithZeroHom.{u2, u1} α β _inst_1 _inst_2 _inst_5 _inst_6) α β _inst_1 _inst_2 _inst_5 _inst_6 (OrderMonoidWithZeroHom.instOrderMonoidWithZeroHomClassOrderMonoidWithZeroHom.{u2, u1} α β _inst_1 _inst_2 _inst_5 _inst_6)) f)))), Eq.{max (succ u2) (succ u1)} (OrderMonoidWithZeroHom.{u2, u1} α β _inst_1 _inst_2 _inst_5 _inst_6) (OrderMonoidWithZeroHom.mk.{u2, u1} α β _inst_1 _inst_2 _inst_5 _inst_6 (MonoidWithZeroHomClass.toMonoidWithZeroHom.{u2, u1, max u2 u1} α β (OrderMonoidWithZeroHom.{u2, u1} α β _inst_1 _inst_2 _inst_5 _inst_6) _inst_5 _inst_6 (OrderMonoidWithZeroHomClass.toMonoidWithZeroHomClass.{max u2 u1, u2, u1} (OrderMonoidWithZeroHom.{u2, u1} α β _inst_1 _inst_2 _inst_5 _inst_6) α β _inst_1 _inst_2 _inst_5 _inst_6 (OrderMonoidWithZeroHom.instOrderMonoidWithZeroHomClassOrderMonoidWithZeroHom.{u2, u1} α β _inst_1 _inst_2 _inst_5 _inst_6)) f) h) f
Case conversion may be inaccurate. Consider using '#align order_monoid_with_zero_hom.mk_coe OrderMonoidWithZeroHom.mk_coeₓ'. -/
@[simp]
theorem mk_coe (f : α →*₀o β) (h) : OrderMonoidWithZeroHom.mk (f : α →*₀ β) h = f :=
  by
  ext
  rfl
#align order_monoid_with_zero_hom.mk_coe OrderMonoidWithZeroHom.mk_coe

#print OrderMonoidWithZeroHom.toOrderMonoidHom /-
/-- Reinterpret an ordered monoid with zero homomorphism as an order monoid homomorphism. -/
def toOrderMonoidHom (f : α →*₀o β) : α →*o β :=
  { f with }
#align order_monoid_with_zero_hom.to_order_monoid_hom OrderMonoidWithZeroHom.toOrderMonoidHom
-/

/- warning: order_monoid_with_zero_hom.coe_monoid_with_zero_hom -> OrderMonoidWithZeroHom.coe_monoidWithZeroHom is a dubious translation:
lean 3 declaration is
  forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : Preorder.{u1} α] [_inst_2 : Preorder.{u2} β] [_inst_5 : MulZeroOneClass.{u1} α] [_inst_6 : MulZeroOneClass.{u2} β] (f : OrderMonoidWithZeroHom.{u1, u2} α β _inst_1 _inst_2 _inst_5 _inst_6), Eq.{max (succ u1) (succ u2)} (α -> β) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidWithZeroHom.{u1, u2} α β _inst_5 _inst_6) (fun (_x : MonoidWithZeroHom.{u1, u2} α β _inst_5 _inst_6) => α -> β) (MonoidWithZeroHom.hasCoeToFun.{u1, u2} α β _inst_5 _inst_6) ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (OrderMonoidWithZeroHom.{u1, u2} α β _inst_1 _inst_2 _inst_5 _inst_6) (MonoidWithZeroHom.{u1, u2} α β _inst_5 _inst_6) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (OrderMonoidWithZeroHom.{u1, u2} α β _inst_1 _inst_2 _inst_5 _inst_6) (MonoidWithZeroHom.{u1, u2} α β _inst_5 _inst_6) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (OrderMonoidWithZeroHom.{u1, u2} α β _inst_1 _inst_2 _inst_5 _inst_6) (MonoidWithZeroHom.{u1, u2} α β _inst_5 _inst_6) (MonoidWithZeroHom.hasCoeT.{u1, u2, max u1 u2} α β (OrderMonoidWithZeroHom.{u1, u2} α β _inst_1 _inst_2 _inst_5 _inst_6) _inst_5 _inst_6 (OrderMonoidWithZeroHomClass.toMonoidWithZeroHomClass.{max u1 u2, u1, u2} (OrderMonoidWithZeroHom.{u1, u2} α β _inst_1 _inst_2 _inst_5 _inst_6) α β _inst_1 _inst_2 _inst_5 _inst_6 (OrderMonoidWithZeroHom.orderMonoidWithZeroHomClass.{u1, u2} α β _inst_1 _inst_2 _inst_5 _inst_6))))) f)) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (OrderMonoidWithZeroHom.{u1, u2} α β _inst_1 _inst_2 _inst_5 _inst_6) (fun (_x : OrderMonoidWithZeroHom.{u1, u2} α β _inst_1 _inst_2 _inst_5 _inst_6) => α -> β) (OrderMonoidWithZeroHom.hasCoeToFun.{u1, u2} α β _inst_1 _inst_2 _inst_5 _inst_6) f)
but is expected to have type
  forall {α : Type.{u2}} {β : Type.{u1}} [_inst_1 : Preorder.{u2} α] [_inst_2 : Preorder.{u1} β] [_inst_5 : MulZeroOneClass.{u2} α] [_inst_6 : MulZeroOneClass.{u1} β] (f : OrderMonoidWithZeroHom.{u2, u1} α β _inst_1 _inst_2 _inst_5 _inst_6), Eq.{max (succ u2) (succ u1)} (forall (ᾰ : α), (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : α) => β) ᾰ) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidWithZeroHom.{u2, u1} α β _inst_5 _inst_6) α (fun (_x : α) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : α) => β) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidWithZeroHom.{u2, u1} α β _inst_5 _inst_6) α β (MulOneClass.toMul.{u2} α (MulZeroOneClass.toMulOneClass.{u2} α _inst_5)) (MulOneClass.toMul.{u1} β (MulZeroOneClass.toMulOneClass.{u1} β _inst_6)) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidWithZeroHom.{u2, u1} α β _inst_5 _inst_6) α β (MulZeroOneClass.toMulOneClass.{u2} α _inst_5) (MulZeroOneClass.toMulOneClass.{u1} β _inst_6) (MonoidWithZeroHomClass.toMonoidHomClass.{max u2 u1, u2, u1} (MonoidWithZeroHom.{u2, u1} α β _inst_5 _inst_6) α β _inst_5 _inst_6 (MonoidWithZeroHom.monoidWithZeroHomClass.{u2, u1} α β _inst_5 _inst_6)))) (MonoidWithZeroHomClass.toMonoidWithZeroHom.{u2, u1, max u2 u1} α β (OrderMonoidWithZeroHom.{u2, u1} α β _inst_1 _inst_2 _inst_5 _inst_6) _inst_5 _inst_6 (OrderMonoidWithZeroHomClass.toMonoidWithZeroHomClass.{max u2 u1, u2, u1} (OrderMonoidWithZeroHom.{u2, u1} α β _inst_1 _inst_2 _inst_5 _inst_6) α β _inst_1 _inst_2 _inst_5 _inst_6 (OrderMonoidWithZeroHom.instOrderMonoidWithZeroHomClassOrderMonoidWithZeroHom.{u2, u1} α β _inst_1 _inst_2 _inst_5 _inst_6)) f)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (OrderMonoidWithZeroHom.{u2, u1} α β _inst_1 _inst_2 _inst_5 _inst_6) α (fun (_x : α) => (fun (x._@.Mathlib.Order.RelIso.Basic._hyg.867 : α) => β) _x) (RelHomClass.toFunLike.{max u2 u1, u2, u1} (OrderMonoidWithZeroHom.{u2, u1} α β _inst_1 _inst_2 _inst_5 _inst_6) α β (fun (x._@.Mathlib.Order.Hom.Basic._hyg.1896 : α) (x._@.Mathlib.Order.Hom.Basic._hyg.1898 : α) => LE.le.{u2} α (Preorder.toLE.{u2} α _inst_1) x._@.Mathlib.Order.Hom.Basic._hyg.1896 x._@.Mathlib.Order.Hom.Basic._hyg.1898) (fun (x._@.Mathlib.Order.Hom.Basic._hyg.1918 : β) (x._@.Mathlib.Order.Hom.Basic._hyg.1920 : β) => LE.le.{u1} β (Preorder.toLE.{u1} β _inst_2) x._@.Mathlib.Order.Hom.Basic._hyg.1918 x._@.Mathlib.Order.Hom.Basic._hyg.1920) (OrderMonoidHomClass.toOrderHomClass.{max u2 u1, u2, u1} (OrderMonoidWithZeroHom.{u2, u1} α β _inst_1 _inst_2 _inst_5 _inst_6) α β _inst_1 _inst_2 (MulZeroOneClass.toMulOneClass.{u2} α _inst_5) (MulZeroOneClass.toMulOneClass.{u1} β _inst_6) (OrderMonoidWithZeroHomClass.toOrderMonoidHomClass.{max u2 u1, u2, u1} (OrderMonoidWithZeroHom.{u2, u1} α β _inst_1 _inst_2 _inst_5 _inst_6) α β _inst_1 _inst_2 _inst_5 _inst_6 (OrderMonoidWithZeroHom.instOrderMonoidWithZeroHomClassOrderMonoidWithZeroHom.{u2, u1} α β _inst_1 _inst_2 _inst_5 _inst_6)))) f)
Case conversion may be inaccurate. Consider using '#align order_monoid_with_zero_hom.coe_monoid_with_zero_hom OrderMonoidWithZeroHom.coe_monoidWithZeroHomₓ'. -/
@[simp]
theorem coe_monoidWithZeroHom (f : α →*₀o β) : ⇑(f : α →*₀ β) = f :=
  rfl
#align order_monoid_with_zero_hom.coe_monoid_with_zero_hom OrderMonoidWithZeroHom.coe_monoidWithZeroHom

/- warning: order_monoid_with_zero_hom.coe_order_monoid_hom -> OrderMonoidWithZeroHom.coe_orderMonoidHom is a dubious translation:
lean 3 declaration is
  forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : Preorder.{u1} α] [_inst_2 : Preorder.{u2} β] [_inst_5 : MulZeroOneClass.{u1} α] [_inst_6 : MulZeroOneClass.{u2} β] (f : OrderMonoidWithZeroHom.{u1, u2} α β _inst_1 _inst_2 _inst_5 _inst_6), Eq.{max (succ u1) (succ u2)} (α -> β) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (OrderMonoidHom.{u1, u2} α β _inst_1 _inst_2 (MulZeroOneClass.toMulOneClass.{u1} α _inst_5) (MulZeroOneClass.toMulOneClass.{u2} β _inst_6)) (fun (_x : OrderMonoidHom.{u1, u2} α β _inst_1 _inst_2 (MulZeroOneClass.toMulOneClass.{u1} α _inst_5) (MulZeroOneClass.toMulOneClass.{u2} β _inst_6)) => α -> β) (OrderMonoidHom.hasCoeToFun.{u1, u2} α β _inst_1 _inst_2 (MulZeroOneClass.toMulOneClass.{u1} α _inst_5) (MulZeroOneClass.toMulOneClass.{u2} β _inst_6)) ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u1) (succ u2)} a b] => self.0) (OrderMonoidWithZeroHom.{u1, u2} α β _inst_1 _inst_2 _inst_5 _inst_6) (OrderMonoidHom.{u1, u2} α β _inst_1 _inst_2 (MulZeroOneClass.toMulOneClass.{u1} α _inst_5) (MulZeroOneClass.toMulOneClass.{u2} β _inst_6)) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (OrderMonoidWithZeroHom.{u1, u2} α β _inst_1 _inst_2 _inst_5 _inst_6) (OrderMonoidHom.{u1, u2} α β _inst_1 _inst_2 (MulZeroOneClass.toMulOneClass.{u1} α _inst_5) (MulZeroOneClass.toMulOneClass.{u2} β _inst_6)) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (OrderMonoidWithZeroHom.{u1, u2} α β _inst_1 _inst_2 _inst_5 _inst_6) (OrderMonoidHom.{u1, u2} α β _inst_1 _inst_2 (MulZeroOneClass.toMulOneClass.{u1} α _inst_5) (MulZeroOneClass.toMulOneClass.{u2} β _inst_6)) (OrderMonoidHom.hasCoeT.{max u1 u2, u1, u2} (OrderMonoidWithZeroHom.{u1, u2} α β _inst_1 _inst_2 _inst_5 _inst_6) α β _inst_1 _inst_2 (MulZeroOneClass.toMulOneClass.{u1} α _inst_5) (MulZeroOneClass.toMulOneClass.{u2} β _inst_6) (OrderMonoidWithZeroHomClass.toOrderMonoidHomClass.{max u1 u2, u1, u2} (OrderMonoidWithZeroHom.{u1, u2} α β _inst_1 _inst_2 _inst_5 _inst_6) α β _inst_1 _inst_2 _inst_5 _inst_6 (OrderMonoidWithZeroHom.orderMonoidWithZeroHomClass.{u1, u2} α β _inst_1 _inst_2 _inst_5 _inst_6))))) f)) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (OrderMonoidWithZeroHom.{u1, u2} α β _inst_1 _inst_2 _inst_5 _inst_6) (fun (_x : OrderMonoidWithZeroHom.{u1, u2} α β _inst_1 _inst_2 _inst_5 _inst_6) => α -> β) (OrderMonoidWithZeroHom.hasCoeToFun.{u1, u2} α β _inst_1 _inst_2 _inst_5 _inst_6) f)
but is expected to have type
  forall {α : Type.{u2}} {β : Type.{u1}} [_inst_1 : Preorder.{u2} α] [_inst_2 : Preorder.{u1} β] [_inst_5 : MulZeroOneClass.{u2} α] [_inst_6 : MulZeroOneClass.{u1} β] (f : OrderMonoidWithZeroHom.{u2, u1} α β _inst_1 _inst_2 _inst_5 _inst_6), Eq.{max (succ u2) (succ u1)} (forall (ᾰ : α), (fun (x._@.Mathlib.Order.RelIso.Basic._hyg.867 : α) => β) ᾰ) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (OrderMonoidHom.{u2, u1} α β _inst_1 _inst_2 (MulZeroOneClass.toMulOneClass.{u2} α _inst_5) (MulZeroOneClass.toMulOneClass.{u1} β _inst_6)) α (fun (_x : α) => (fun (x._@.Mathlib.Order.RelIso.Basic._hyg.867 : α) => β) _x) (RelHomClass.toFunLike.{max u2 u1, u2, u1} (OrderMonoidHom.{u2, u1} α β _inst_1 _inst_2 (MulZeroOneClass.toMulOneClass.{u2} α _inst_5) (MulZeroOneClass.toMulOneClass.{u1} β _inst_6)) α β (fun (x._@.Mathlib.Order.Hom.Basic._hyg.1896 : α) (x._@.Mathlib.Order.Hom.Basic._hyg.1898 : α) => LE.le.{u2} α (Preorder.toLE.{u2} α _inst_1) x._@.Mathlib.Order.Hom.Basic._hyg.1896 x._@.Mathlib.Order.Hom.Basic._hyg.1898) (fun (x._@.Mathlib.Order.Hom.Basic._hyg.1918 : β) (x._@.Mathlib.Order.Hom.Basic._hyg.1920 : β) => LE.le.{u1} β (Preorder.toLE.{u1} β _inst_2) x._@.Mathlib.Order.Hom.Basic._hyg.1918 x._@.Mathlib.Order.Hom.Basic._hyg.1920) (OrderMonoidHomClass.toOrderHomClass.{max u2 u1, u2, u1} (OrderMonoidHom.{u2, u1} α β _inst_1 _inst_2 (MulZeroOneClass.toMulOneClass.{u2} α _inst_5) (MulZeroOneClass.toMulOneClass.{u1} β _inst_6)) α β _inst_1 _inst_2 (MulZeroOneClass.toMulOneClass.{u2} α _inst_5) (MulZeroOneClass.toMulOneClass.{u1} β _inst_6) (OrderMonoidHom.instOrderMonoidHomClassOrderMonoidHom.{u2, u1} α β _inst_1 _inst_2 (MulZeroOneClass.toMulOneClass.{u2} α _inst_5) (MulZeroOneClass.toMulOneClass.{u1} β _inst_6)))) (OrderMonoidHomClass.toOrderMonoidHom.{max u2 u1, u2, u1} (OrderMonoidWithZeroHom.{u2, u1} α β _inst_1 _inst_2 _inst_5 _inst_6) α β _inst_1 _inst_2 (MulZeroOneClass.toMulOneClass.{u2} α _inst_5) (MulZeroOneClass.toMulOneClass.{u1} β _inst_6) (OrderMonoidWithZeroHomClass.toOrderMonoidHomClass.{max u2 u1, u2, u1} (OrderMonoidWithZeroHom.{u2, u1} α β _inst_1 _inst_2 _inst_5 _inst_6) α β _inst_1 _inst_2 _inst_5 _inst_6 (OrderMonoidWithZeroHom.instOrderMonoidWithZeroHomClassOrderMonoidWithZeroHom.{u2, u1} α β _inst_1 _inst_2 _inst_5 _inst_6)) f)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (OrderMonoidWithZeroHom.{u2, u1} α β _inst_1 _inst_2 _inst_5 _inst_6) α (fun (_x : α) => (fun (x._@.Mathlib.Order.RelIso.Basic._hyg.867 : α) => β) _x) (RelHomClass.toFunLike.{max u2 u1, u2, u1} (OrderMonoidWithZeroHom.{u2, u1} α β _inst_1 _inst_2 _inst_5 _inst_6) α β (fun (x._@.Mathlib.Order.Hom.Basic._hyg.1896 : α) (x._@.Mathlib.Order.Hom.Basic._hyg.1898 : α) => LE.le.{u2} α (Preorder.toLE.{u2} α _inst_1) x._@.Mathlib.Order.Hom.Basic._hyg.1896 x._@.Mathlib.Order.Hom.Basic._hyg.1898) (fun (x._@.Mathlib.Order.Hom.Basic._hyg.1918 : β) (x._@.Mathlib.Order.Hom.Basic._hyg.1920 : β) => LE.le.{u1} β (Preorder.toLE.{u1} β _inst_2) x._@.Mathlib.Order.Hom.Basic._hyg.1918 x._@.Mathlib.Order.Hom.Basic._hyg.1920) (OrderMonoidHomClass.toOrderHomClass.{max u2 u1, u2, u1} (OrderMonoidWithZeroHom.{u2, u1} α β _inst_1 _inst_2 _inst_5 _inst_6) α β _inst_1 _inst_2 (MulZeroOneClass.toMulOneClass.{u2} α _inst_5) (MulZeroOneClass.toMulOneClass.{u1} β _inst_6) (OrderMonoidWithZeroHomClass.toOrderMonoidHomClass.{max u2 u1, u2, u1} (OrderMonoidWithZeroHom.{u2, u1} α β _inst_1 _inst_2 _inst_5 _inst_6) α β _inst_1 _inst_2 _inst_5 _inst_6 (OrderMonoidWithZeroHom.instOrderMonoidWithZeroHomClassOrderMonoidWithZeroHom.{u2, u1} α β _inst_1 _inst_2 _inst_5 _inst_6)))) f)
Case conversion may be inaccurate. Consider using '#align order_monoid_with_zero_hom.coe_order_monoid_hom OrderMonoidWithZeroHom.coe_orderMonoidHomₓ'. -/
@[simp]
theorem coe_orderMonoidHom (f : α →*₀o β) : ⇑(f : α →*o β) = f :=
  rfl
#align order_monoid_with_zero_hom.coe_order_monoid_hom OrderMonoidWithZeroHom.coe_orderMonoidHom

/- warning: order_monoid_with_zero_hom.to_order_monoid_hom_injective -> OrderMonoidWithZeroHom.toOrderMonoidHom_injective is a dubious translation:
lean 3 declaration is
  forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : Preorder.{u1} α] [_inst_2 : Preorder.{u2} β] [_inst_5 : MulZeroOneClass.{u1} α] [_inst_6 : MulZeroOneClass.{u2} β], Function.Injective.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (OrderMonoidWithZeroHom.{u1, u2} α β _inst_1 _inst_2 _inst_5 _inst_6) (OrderMonoidHom.{u1, u2} α β _inst_1 _inst_2 (MulZeroOneClass.toMulOneClass.{u1} α _inst_5) (MulZeroOneClass.toMulOneClass.{u2} β _inst_6)) (OrderMonoidWithZeroHom.toOrderMonoidHom.{u1, u2} α β _inst_1 _inst_2 _inst_5 _inst_6)
but is expected to have type
  forall {α : Type.{u2}} {β : Type.{u1}} [_inst_1 : Preorder.{u2} α] [_inst_2 : Preorder.{u1} β] [_inst_5 : MulZeroOneClass.{u2} α] [_inst_6 : MulZeroOneClass.{u1} β], Function.Injective.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (OrderMonoidWithZeroHom.{u2, u1} α β _inst_1 _inst_2 _inst_5 _inst_6) (OrderMonoidHom.{u2, u1} α β _inst_1 _inst_2 (MulZeroOneClass.toMulOneClass.{u2} α _inst_5) (MulZeroOneClass.toMulOneClass.{u1} β _inst_6)) (OrderMonoidWithZeroHom.toOrderMonoidHom.{u2, u1} α β _inst_1 _inst_2 _inst_5 _inst_6)
Case conversion may be inaccurate. Consider using '#align order_monoid_with_zero_hom.to_order_monoid_hom_injective OrderMonoidWithZeroHom.toOrderMonoidHom_injectiveₓ'. -/
theorem toOrderMonoidHom_injective : Injective (toOrderMonoidHom : _ → α →*o β) := fun f g h =>
  ext <| by convert FunLike.ext_iff.1 h
#align order_monoid_with_zero_hom.to_order_monoid_hom_injective OrderMonoidWithZeroHom.toOrderMonoidHom_injective

/- warning: order_monoid_with_zero_hom.to_monoid_with_zero_hom_injective -> OrderMonoidWithZeroHom.toMonoidWithZeroHom_injective is a dubious translation:
lean 3 declaration is
  forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : Preorder.{u1} α] [_inst_2 : Preorder.{u2} β] [_inst_5 : MulZeroOneClass.{u1} α] [_inst_6 : MulZeroOneClass.{u2} β], Function.Injective.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (OrderMonoidWithZeroHom.{u1, u2} α β _inst_1 _inst_2 _inst_5 _inst_6) (MonoidWithZeroHom.{u1, u2} α β _inst_5 _inst_6) (OrderMonoidWithZeroHom.toMonoidWithZeroHom.{u1, u2} α β _inst_1 _inst_2 _inst_5 _inst_6)
but is expected to have type
  forall {α : Type.{u2}} {β : Type.{u1}} [_inst_1 : Preorder.{u2} α] [_inst_2 : Preorder.{u1} β] [_inst_5 : MulZeroOneClass.{u2} α] [_inst_6 : MulZeroOneClass.{u1} β], Function.Injective.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (OrderMonoidWithZeroHom.{u2, u1} α β _inst_1 _inst_2 _inst_5 _inst_6) (MonoidWithZeroHom.{u2, u1} α β _inst_5 _inst_6) (OrderMonoidWithZeroHom.toMonoidWithZeroHom.{u2, u1} α β _inst_1 _inst_2 _inst_5 _inst_6)
Case conversion may be inaccurate. Consider using '#align order_monoid_with_zero_hom.to_monoid_with_zero_hom_injective OrderMonoidWithZeroHom.toMonoidWithZeroHom_injectiveₓ'. -/
theorem toMonoidWithZeroHom_injective : Injective (toMonoidWithZeroHom : _ → α →*₀ β) :=
  fun f g h => ext <| by convert FunLike.ext_iff.1 h
#align order_monoid_with_zero_hom.to_monoid_with_zero_hom_injective OrderMonoidWithZeroHom.toMonoidWithZeroHom_injective

/- warning: order_monoid_with_zero_hom.copy -> OrderMonoidWithZeroHom.copy is a dubious translation:
lean 3 declaration is
  forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : Preorder.{u1} α] [_inst_2 : Preorder.{u2} β] [_inst_5 : MulZeroOneClass.{u1} α] [_inst_6 : MulZeroOneClass.{u2} β] (f : OrderMonoidWithZeroHom.{u1, u2} α β _inst_1 _inst_2 _inst_5 _inst_6) (f' : α -> β), (Eq.{max (succ u1) (succ u2)} (α -> β) f' (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (OrderMonoidWithZeroHom.{u1, u2} α β _inst_1 _inst_2 _inst_5 _inst_6) (fun (_x : OrderMonoidWithZeroHom.{u1, u2} α β _inst_1 _inst_2 _inst_5 _inst_6) => α -> β) (OrderMonoidWithZeroHom.hasCoeToFun.{u1, u2} α β _inst_1 _inst_2 _inst_5 _inst_6) f)) -> (OrderMonoidHom.{u1, u2} α β _inst_1 _inst_2 (MulZeroOneClass.toMulOneClass.{u1} α _inst_5) (MulZeroOneClass.toMulOneClass.{u2} β _inst_6))
but is expected to have type
  forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : Preorder.{u1} α] [_inst_2 : Preorder.{u2} β] [_inst_5 : MulZeroOneClass.{u1} α] [_inst_6 : MulZeroOneClass.{u2} β] (f : OrderMonoidWithZeroHom.{u1, u2} α β _inst_1 _inst_2 _inst_5 _inst_6) (f' : α -> β), (Eq.{max (succ u1) (succ u2)} (α -> β) f' (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (OrderMonoidWithZeroHom.{u1, u2} α β _inst_1 _inst_2 _inst_5 _inst_6) α (fun (_x : α) => (fun (x._@.Mathlib.Order.RelIso.Basic._hyg.867 : α) => β) _x) (RelHomClass.toFunLike.{max u1 u2, u1, u2} (OrderMonoidWithZeroHom.{u1, u2} α β _inst_1 _inst_2 _inst_5 _inst_6) α β (fun (x._@.Mathlib.Order.Hom.Basic._hyg.1896 : α) (x._@.Mathlib.Order.Hom.Basic._hyg.1898 : α) => LE.le.{u1} α (Preorder.toLE.{u1} α _inst_1) x._@.Mathlib.Order.Hom.Basic._hyg.1896 x._@.Mathlib.Order.Hom.Basic._hyg.1898) (fun (x._@.Mathlib.Order.Hom.Basic._hyg.1918 : β) (x._@.Mathlib.Order.Hom.Basic._hyg.1920 : β) => LE.le.{u2} β (Preorder.toLE.{u2} β _inst_2) x._@.Mathlib.Order.Hom.Basic._hyg.1918 x._@.Mathlib.Order.Hom.Basic._hyg.1920) (OrderMonoidHomClass.toOrderHomClass.{max u1 u2, u1, u2} (OrderMonoidWithZeroHom.{u1, u2} α β _inst_1 _inst_2 _inst_5 _inst_6) α β _inst_1 _inst_2 (MulZeroOneClass.toMulOneClass.{u1} α _inst_5) (MulZeroOneClass.toMulOneClass.{u2} β _inst_6) (OrderMonoidWithZeroHomClass.toOrderMonoidHomClass.{max u1 u2, u1, u2} (OrderMonoidWithZeroHom.{u1, u2} α β _inst_1 _inst_2 _inst_5 _inst_6) α β _inst_1 _inst_2 _inst_5 _inst_6 (OrderMonoidWithZeroHom.instOrderMonoidWithZeroHomClassOrderMonoidWithZeroHom.{u1, u2} α β _inst_1 _inst_2 _inst_5 _inst_6)))) f)) -> (OrderMonoidHom.{u1, u2} α β _inst_1 _inst_2 (MulZeroOneClass.toMulOneClass.{u1} α _inst_5) (MulZeroOneClass.toMulOneClass.{u2} β _inst_6))
Case conversion may be inaccurate. Consider using '#align order_monoid_with_zero_hom.copy OrderMonoidWithZeroHom.copyₓ'. -/
/-- Copy of an `order_monoid_with_zero_hom` with a new `to_fun` equal to the old one. Useful to fix
definitional equalities. -/
protected def copy (f : α →*₀o β) (f' : α → β) (h : f' = f) : α →*o β :=
  { f.toOrderMonoidHom.copy f' h, f.toMonoidWithZeroHom.copy f' h with toFun := f' }
#align order_monoid_with_zero_hom.copy OrderMonoidWithZeroHom.copy

/- warning: order_monoid_with_zero_hom.coe_copy -> OrderMonoidWithZeroHom.coe_copy is a dubious translation:
lean 3 declaration is
  forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : Preorder.{u1} α] [_inst_2 : Preorder.{u2} β] [_inst_5 : MulZeroOneClass.{u1} α] [_inst_6 : MulZeroOneClass.{u2} β] (f : OrderMonoidWithZeroHom.{u1, u2} α β _inst_1 _inst_2 _inst_5 _inst_6) (f' : α -> β) (h : Eq.{max (succ u1) (succ u2)} (α -> β) f' (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (OrderMonoidWithZeroHom.{u1, u2} α β _inst_1 _inst_2 _inst_5 _inst_6) (fun (_x : OrderMonoidWithZeroHom.{u1, u2} α β _inst_1 _inst_2 _inst_5 _inst_6) => α -> β) (OrderMonoidWithZeroHom.hasCoeToFun.{u1, u2} α β _inst_1 _inst_2 _inst_5 _inst_6) f)), Eq.{max (succ u1) (succ u2)} (α -> β) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (OrderMonoidHom.{u1, u2} α β _inst_1 _inst_2 (MulZeroOneClass.toMulOneClass.{u1} α _inst_5) (MulZeroOneClass.toMulOneClass.{u2} β _inst_6)) (fun (_x : OrderMonoidHom.{u1, u2} α β _inst_1 _inst_2 (MulZeroOneClass.toMulOneClass.{u1} α _inst_5) (MulZeroOneClass.toMulOneClass.{u2} β _inst_6)) => α -> β) (OrderMonoidHom.hasCoeToFun.{u1, u2} α β _inst_1 _inst_2 (MulZeroOneClass.toMulOneClass.{u1} α _inst_5) (MulZeroOneClass.toMulOneClass.{u2} β _inst_6)) (OrderMonoidWithZeroHom.copy.{u1, u2} α β _inst_1 _inst_2 _inst_5 _inst_6 f f' h)) f'
but is expected to have type
  forall {α : Type.{u2}} {β : Type.{u1}} [_inst_1 : Preorder.{u2} α] [_inst_2 : Preorder.{u1} β] [_inst_5 : MulZeroOneClass.{u2} α] [_inst_6 : MulZeroOneClass.{u1} β] (f : OrderMonoidWithZeroHom.{u2, u1} α β _inst_1 _inst_2 _inst_5 _inst_6) (f' : α -> β) (h : Eq.{max (succ u2) (succ u1)} (α -> β) f' (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (OrderMonoidWithZeroHom.{u2, u1} α β _inst_1 _inst_2 _inst_5 _inst_6) α (fun (_x : α) => (fun (x._@.Mathlib.Order.RelIso.Basic._hyg.867 : α) => β) _x) (RelHomClass.toFunLike.{max u2 u1, u2, u1} (OrderMonoidWithZeroHom.{u2, u1} α β _inst_1 _inst_2 _inst_5 _inst_6) α β (fun (x._@.Mathlib.Order.Hom.Basic._hyg.1896 : α) (x._@.Mathlib.Order.Hom.Basic._hyg.1898 : α) => LE.le.{u2} α (Preorder.toLE.{u2} α _inst_1) x._@.Mathlib.Order.Hom.Basic._hyg.1896 x._@.Mathlib.Order.Hom.Basic._hyg.1898) (fun (x._@.Mathlib.Order.Hom.Basic._hyg.1918 : β) (x._@.Mathlib.Order.Hom.Basic._hyg.1920 : β) => LE.le.{u1} β (Preorder.toLE.{u1} β _inst_2) x._@.Mathlib.Order.Hom.Basic._hyg.1918 x._@.Mathlib.Order.Hom.Basic._hyg.1920) (OrderMonoidHomClass.toOrderHomClass.{max u2 u1, u2, u1} (OrderMonoidWithZeroHom.{u2, u1} α β _inst_1 _inst_2 _inst_5 _inst_6) α β _inst_1 _inst_2 (MulZeroOneClass.toMulOneClass.{u2} α _inst_5) (MulZeroOneClass.toMulOneClass.{u1} β _inst_6) (OrderMonoidWithZeroHomClass.toOrderMonoidHomClass.{max u2 u1, u2, u1} (OrderMonoidWithZeroHom.{u2, u1} α β _inst_1 _inst_2 _inst_5 _inst_6) α β _inst_1 _inst_2 _inst_5 _inst_6 (OrderMonoidWithZeroHom.instOrderMonoidWithZeroHomClassOrderMonoidWithZeroHom.{u2, u1} α β _inst_1 _inst_2 _inst_5 _inst_6)))) f)), Eq.{max (succ u2) (succ u1)} (forall (ᾰ : α), (fun (x._@.Mathlib.Order.RelIso.Basic._hyg.867 : α) => β) ᾰ) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (OrderMonoidHom.{u2, u1} α β _inst_1 _inst_2 (MulZeroOneClass.toMulOneClass.{u2} α _inst_5) (MulZeroOneClass.toMulOneClass.{u1} β _inst_6)) α (fun (_x : α) => (fun (x._@.Mathlib.Order.RelIso.Basic._hyg.867 : α) => β) _x) (RelHomClass.toFunLike.{max u2 u1, u2, u1} (OrderMonoidHom.{u2, u1} α β _inst_1 _inst_2 (MulZeroOneClass.toMulOneClass.{u2} α _inst_5) (MulZeroOneClass.toMulOneClass.{u1} β _inst_6)) α β (fun (x._@.Mathlib.Order.Hom.Basic._hyg.1896 : α) (x._@.Mathlib.Order.Hom.Basic._hyg.1898 : α) => LE.le.{u2} α (Preorder.toLE.{u2} α _inst_1) x._@.Mathlib.Order.Hom.Basic._hyg.1896 x._@.Mathlib.Order.Hom.Basic._hyg.1898) (fun (x._@.Mathlib.Order.Hom.Basic._hyg.1918 : β) (x._@.Mathlib.Order.Hom.Basic._hyg.1920 : β) => LE.le.{u1} β (Preorder.toLE.{u1} β _inst_2) x._@.Mathlib.Order.Hom.Basic._hyg.1918 x._@.Mathlib.Order.Hom.Basic._hyg.1920) (OrderMonoidHomClass.toOrderHomClass.{max u2 u1, u2, u1} (OrderMonoidHom.{u2, u1} α β _inst_1 _inst_2 (MulZeroOneClass.toMulOneClass.{u2} α _inst_5) (MulZeroOneClass.toMulOneClass.{u1} β _inst_6)) α β _inst_1 _inst_2 (MulZeroOneClass.toMulOneClass.{u2} α _inst_5) (MulZeroOneClass.toMulOneClass.{u1} β _inst_6) (OrderMonoidHom.instOrderMonoidHomClassOrderMonoidHom.{u2, u1} α β _inst_1 _inst_2 (MulZeroOneClass.toMulOneClass.{u2} α _inst_5) (MulZeroOneClass.toMulOneClass.{u1} β _inst_6)))) (OrderMonoidWithZeroHom.copy.{u2, u1} α β _inst_1 _inst_2 _inst_5 _inst_6 f f' h)) f'
Case conversion may be inaccurate. Consider using '#align order_monoid_with_zero_hom.coe_copy OrderMonoidWithZeroHom.coe_copyₓ'. -/
@[simp]
theorem coe_copy (f : α →*₀o β) (f' : α → β) (h : f' = f) : ⇑(f.copy f' h) = f' :=
  rfl
#align order_monoid_with_zero_hom.coe_copy OrderMonoidWithZeroHom.coe_copy

/- warning: order_monoid_with_zero_hom.copy_eq -> OrderMonoidWithZeroHom.copy_eq is a dubious translation:
lean 3 declaration is
  forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : Preorder.{u1} α] [_inst_2 : Preorder.{u2} β] [_inst_5 : MulZeroOneClass.{u1} α] [_inst_6 : MulZeroOneClass.{u2} β] (f : OrderMonoidWithZeroHom.{u1, u2} α β _inst_1 _inst_2 _inst_5 _inst_6) (f' : α -> β) (h : Eq.{max (succ u1) (succ u2)} (α -> β) f' (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (OrderMonoidWithZeroHom.{u1, u2} α β _inst_1 _inst_2 _inst_5 _inst_6) (fun (_x : OrderMonoidWithZeroHom.{u1, u2} α β _inst_1 _inst_2 _inst_5 _inst_6) => α -> β) (OrderMonoidWithZeroHom.hasCoeToFun.{u1, u2} α β _inst_1 _inst_2 _inst_5 _inst_6) f)), Eq.{max (succ u1) (succ u2)} (OrderMonoidHom.{u1, u2} α β _inst_1 _inst_2 (MulZeroOneClass.toMulOneClass.{u1} α _inst_5) (MulZeroOneClass.toMulOneClass.{u2} β _inst_6)) (OrderMonoidWithZeroHom.copy.{u1, u2} α β _inst_1 _inst_2 _inst_5 _inst_6 f f' h) ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u1) (succ u2)} a b] => self.0) (OrderMonoidWithZeroHom.{u1, u2} α β _inst_1 _inst_2 _inst_5 _inst_6) (OrderMonoidHom.{u1, u2} α β _inst_1 _inst_2 (MulZeroOneClass.toMulOneClass.{u1} α _inst_5) (MulZeroOneClass.toMulOneClass.{u2} β _inst_6)) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (OrderMonoidWithZeroHom.{u1, u2} α β _inst_1 _inst_2 _inst_5 _inst_6) (OrderMonoidHom.{u1, u2} α β _inst_1 _inst_2 (MulZeroOneClass.toMulOneClass.{u1} α _inst_5) (MulZeroOneClass.toMulOneClass.{u2} β _inst_6)) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (OrderMonoidWithZeroHom.{u1, u2} α β _inst_1 _inst_2 _inst_5 _inst_6) (OrderMonoidHom.{u1, u2} α β _inst_1 _inst_2 (MulZeroOneClass.toMulOneClass.{u1} α _inst_5) (MulZeroOneClass.toMulOneClass.{u2} β _inst_6)) (OrderMonoidHom.hasCoeT.{max u1 u2, u1, u2} (OrderMonoidWithZeroHom.{u1, u2} α β _inst_1 _inst_2 _inst_5 _inst_6) α β _inst_1 _inst_2 (MulZeroOneClass.toMulOneClass.{u1} α _inst_5) (MulZeroOneClass.toMulOneClass.{u2} β _inst_6) (OrderMonoidWithZeroHomClass.toOrderMonoidHomClass.{max u1 u2, u1, u2} (OrderMonoidWithZeroHom.{u1, u2} α β _inst_1 _inst_2 _inst_5 _inst_6) α β _inst_1 _inst_2 _inst_5 _inst_6 (OrderMonoidWithZeroHom.orderMonoidWithZeroHomClass.{u1, u2} α β _inst_1 _inst_2 _inst_5 _inst_6))))) f)
but is expected to have type
  forall {α : Type.{u2}} {β : Type.{u1}} [_inst_1 : Preorder.{u2} α] [_inst_2 : Preorder.{u1} β] [_inst_5 : MulZeroOneClass.{u2} α] [_inst_6 : MulZeroOneClass.{u1} β] (f : OrderMonoidWithZeroHom.{u2, u1} α β _inst_1 _inst_2 _inst_5 _inst_6) (f' : α -> β) (h : Eq.{max (succ u2) (succ u1)} (α -> β) f' (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (OrderMonoidWithZeroHom.{u2, u1} α β _inst_1 _inst_2 _inst_5 _inst_6) α (fun (_x : α) => (fun (x._@.Mathlib.Order.RelIso.Basic._hyg.867 : α) => β) _x) (RelHomClass.toFunLike.{max u2 u1, u2, u1} (OrderMonoidWithZeroHom.{u2, u1} α β _inst_1 _inst_2 _inst_5 _inst_6) α β (fun (x._@.Mathlib.Order.Hom.Basic._hyg.1896 : α) (x._@.Mathlib.Order.Hom.Basic._hyg.1898 : α) => LE.le.{u2} α (Preorder.toLE.{u2} α _inst_1) x._@.Mathlib.Order.Hom.Basic._hyg.1896 x._@.Mathlib.Order.Hom.Basic._hyg.1898) (fun (x._@.Mathlib.Order.Hom.Basic._hyg.1918 : β) (x._@.Mathlib.Order.Hom.Basic._hyg.1920 : β) => LE.le.{u1} β (Preorder.toLE.{u1} β _inst_2) x._@.Mathlib.Order.Hom.Basic._hyg.1918 x._@.Mathlib.Order.Hom.Basic._hyg.1920) (OrderMonoidHomClass.toOrderHomClass.{max u2 u1, u2, u1} (OrderMonoidWithZeroHom.{u2, u1} α β _inst_1 _inst_2 _inst_5 _inst_6) α β _inst_1 _inst_2 (MulZeroOneClass.toMulOneClass.{u2} α _inst_5) (MulZeroOneClass.toMulOneClass.{u1} β _inst_6) (OrderMonoidWithZeroHomClass.toOrderMonoidHomClass.{max u2 u1, u2, u1} (OrderMonoidWithZeroHom.{u2, u1} α β _inst_1 _inst_2 _inst_5 _inst_6) α β _inst_1 _inst_2 _inst_5 _inst_6 (OrderMonoidWithZeroHom.instOrderMonoidWithZeroHomClassOrderMonoidWithZeroHom.{u2, u1} α β _inst_1 _inst_2 _inst_5 _inst_6)))) f)), Eq.{max (succ u2) (succ u1)} (OrderMonoidHom.{u2, u1} α β _inst_1 _inst_2 (MulZeroOneClass.toMulOneClass.{u2} α _inst_5) (MulZeroOneClass.toMulOneClass.{u1} β _inst_6)) (OrderMonoidWithZeroHom.copy.{u2, u1} α β _inst_1 _inst_2 _inst_5 _inst_6 f f' h) (OrderMonoidHomClass.toOrderMonoidHom.{max u2 u1, u2, u1} (OrderMonoidWithZeroHom.{u2, u1} α β _inst_1 _inst_2 _inst_5 _inst_6) α β _inst_1 _inst_2 (MulZeroOneClass.toMulOneClass.{u2} α _inst_5) (MulZeroOneClass.toMulOneClass.{u1} β _inst_6) (OrderMonoidWithZeroHomClass.toOrderMonoidHomClass.{max u2 u1, u2, u1} (OrderMonoidWithZeroHom.{u2, u1} α β _inst_1 _inst_2 _inst_5 _inst_6) α β _inst_1 _inst_2 _inst_5 _inst_6 (OrderMonoidWithZeroHom.instOrderMonoidWithZeroHomClassOrderMonoidWithZeroHom.{u2, u1} α β _inst_1 _inst_2 _inst_5 _inst_6)) f)
Case conversion may be inaccurate. Consider using '#align order_monoid_with_zero_hom.copy_eq OrderMonoidWithZeroHom.copy_eqₓ'. -/
theorem copy_eq (f : α →*₀o β) (f' : α → β) (h : f' = f) : f.copy f' h = f :=
  FunLike.ext' h
#align order_monoid_with_zero_hom.copy_eq OrderMonoidWithZeroHom.copy_eq

variable (α)

#print OrderMonoidWithZeroHom.id /-
/-- The identity map as an ordered monoid with zero homomorphism. -/
protected def id : α →*₀o α :=
  { MonoidWithZeroHom.id α, OrderHom.id with }
#align order_monoid_with_zero_hom.id OrderMonoidWithZeroHom.id
-/

/- warning: order_monoid_with_zero_hom.coe_id -> OrderMonoidWithZeroHom.coe_id is a dubious translation:
lean 3 declaration is
  forall (α : Type.{u1}) [_inst_1 : Preorder.{u1} α] [_inst_5 : MulZeroOneClass.{u1} α], Eq.{succ u1} (α -> α) (coeFn.{succ u1, succ u1} (OrderMonoidWithZeroHom.{u1, u1} α α _inst_1 _inst_1 _inst_5 _inst_5) (fun (_x : OrderMonoidWithZeroHom.{u1, u1} α α _inst_1 _inst_1 _inst_5 _inst_5) => α -> α) (OrderMonoidWithZeroHom.hasCoeToFun.{u1, u1} α α _inst_1 _inst_1 _inst_5 _inst_5) (OrderMonoidWithZeroHom.id.{u1} α _inst_1 _inst_5)) (id.{succ u1} α)
but is expected to have type
  forall (α : Type.{u1}) [_inst_1 : Preorder.{u1} α] [_inst_5 : MulZeroOneClass.{u1} α], Eq.{succ u1} (forall (ᾰ : α), (fun (x._@.Mathlib.Order.RelIso.Basic._hyg.867 : α) => α) ᾰ) (FunLike.coe.{succ u1, succ u1, succ u1} (OrderMonoidWithZeroHom.{u1, u1} α α _inst_1 _inst_1 _inst_5 _inst_5) α (fun (_x : α) => (fun (x._@.Mathlib.Order.RelIso.Basic._hyg.867 : α) => α) _x) (RelHomClass.toFunLike.{u1, u1, u1} (OrderMonoidWithZeroHom.{u1, u1} α α _inst_1 _inst_1 _inst_5 _inst_5) α α (fun (x._@.Mathlib.Order.Hom.Basic._hyg.1896 : α) (x._@.Mathlib.Order.Hom.Basic._hyg.1898 : α) => LE.le.{u1} α (Preorder.toLE.{u1} α _inst_1) x._@.Mathlib.Order.Hom.Basic._hyg.1896 x._@.Mathlib.Order.Hom.Basic._hyg.1898) (fun (x._@.Mathlib.Order.Hom.Basic._hyg.1918 : α) (x._@.Mathlib.Order.Hom.Basic._hyg.1920 : α) => LE.le.{u1} α (Preorder.toLE.{u1} α _inst_1) x._@.Mathlib.Order.Hom.Basic._hyg.1918 x._@.Mathlib.Order.Hom.Basic._hyg.1920) (OrderMonoidHomClass.toOrderHomClass.{u1, u1, u1} (OrderMonoidWithZeroHom.{u1, u1} α α _inst_1 _inst_1 _inst_5 _inst_5) α α _inst_1 _inst_1 (MulZeroOneClass.toMulOneClass.{u1} α _inst_5) (MulZeroOneClass.toMulOneClass.{u1} α _inst_5) (OrderMonoidWithZeroHomClass.toOrderMonoidHomClass.{u1, u1, u1} (OrderMonoidWithZeroHom.{u1, u1} α α _inst_1 _inst_1 _inst_5 _inst_5) α α _inst_1 _inst_1 _inst_5 _inst_5 (OrderMonoidWithZeroHom.instOrderMonoidWithZeroHomClassOrderMonoidWithZeroHom.{u1, u1} α α _inst_1 _inst_1 _inst_5 _inst_5)))) (OrderMonoidWithZeroHom.id.{u1} α _inst_1 _inst_5)) (id.{succ u1} α)
Case conversion may be inaccurate. Consider using '#align order_monoid_with_zero_hom.coe_id OrderMonoidWithZeroHom.coe_idₓ'. -/
@[simp]
theorem coe_id : ⇑(OrderMonoidWithZeroHom.id α) = id :=
  rfl
#align order_monoid_with_zero_hom.coe_id OrderMonoidWithZeroHom.coe_id

instance : Inhabited (α →*₀o α) :=
  ⟨OrderMonoidWithZeroHom.id α⟩

variable {α}

#print OrderMonoidWithZeroHom.comp /-
/-- Composition of `order_monoid_with_zero_hom`s as an `order_monoid_with_zero_hom`. -/
def comp (f : β →*₀o γ) (g : α →*₀o β) : α →*₀o γ :=
  { f.toMonoidWithZeroHom.comp (g : α →*₀ β), f.toOrderMonoidHom.comp (g : α →*o β) with }
#align order_monoid_with_zero_hom.comp OrderMonoidWithZeroHom.comp
-/

/- warning: order_monoid_with_zero_hom.coe_comp -> OrderMonoidWithZeroHom.coe_comp is a dubious translation:
lean 3 declaration is
  forall {α : Type.{u1}} {β : Type.{u2}} {γ : Type.{u3}} [_inst_1 : Preorder.{u1} α] [_inst_2 : Preorder.{u2} β] [_inst_3 : Preorder.{u3} γ] [_inst_5 : MulZeroOneClass.{u1} α] [_inst_6 : MulZeroOneClass.{u2} β] [_inst_7 : MulZeroOneClass.{u3} γ] (f : OrderMonoidWithZeroHom.{u2, u3} β γ _inst_2 _inst_3 _inst_6 _inst_7) (g : OrderMonoidWithZeroHom.{u1, u2} α β _inst_1 _inst_2 _inst_5 _inst_6), Eq.{max (succ u1) (succ u3)} ((fun (_x : OrderMonoidWithZeroHom.{u1, u3} α γ _inst_1 _inst_3 _inst_5 _inst_7) => α -> γ) (OrderMonoidWithZeroHom.comp.{u1, u2, u3} α β γ _inst_1 _inst_2 _inst_3 _inst_5 _inst_6 _inst_7 f g)) (coeFn.{max (succ u1) (succ u3), max (succ u1) (succ u3)} (OrderMonoidWithZeroHom.{u1, u3} α γ _inst_1 _inst_3 _inst_5 _inst_7) (fun (_x : OrderMonoidWithZeroHom.{u1, u3} α γ _inst_1 _inst_3 _inst_5 _inst_7) => α -> γ) (OrderMonoidWithZeroHom.hasCoeToFun.{u1, u3} α γ _inst_1 _inst_3 _inst_5 _inst_7) (OrderMonoidWithZeroHom.comp.{u1, u2, u3} α β γ _inst_1 _inst_2 _inst_3 _inst_5 _inst_6 _inst_7 f g)) (Function.comp.{succ u1, succ u2, succ u3} α β γ (coeFn.{max (succ u2) (succ u3), max (succ u2) (succ u3)} (OrderMonoidWithZeroHom.{u2, u3} β γ _inst_2 _inst_3 _inst_6 _inst_7) (fun (_x : OrderMonoidWithZeroHom.{u2, u3} β γ _inst_2 _inst_3 _inst_6 _inst_7) => β -> γ) (OrderMonoidWithZeroHom.hasCoeToFun.{u2, u3} β γ _inst_2 _inst_3 _inst_6 _inst_7) f) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (OrderMonoidWithZeroHom.{u1, u2} α β _inst_1 _inst_2 _inst_5 _inst_6) (fun (_x : OrderMonoidWithZeroHom.{u1, u2} α β _inst_1 _inst_2 _inst_5 _inst_6) => α -> β) (OrderMonoidWithZeroHom.hasCoeToFun.{u1, u2} α β _inst_1 _inst_2 _inst_5 _inst_6) g))
but is expected to have type
  forall {α : Type.{u1}} {β : Type.{u3}} {γ : Type.{u2}} [_inst_1 : Preorder.{u1} α] [_inst_2 : Preorder.{u3} β] [_inst_3 : Preorder.{u2} γ] [_inst_5 : MulZeroOneClass.{u1} α] [_inst_6 : MulZeroOneClass.{u3} β] [_inst_7 : MulZeroOneClass.{u2} γ] (f : OrderMonoidWithZeroHom.{u3, u2} β γ _inst_2 _inst_3 _inst_6 _inst_7) (g : OrderMonoidWithZeroHom.{u1, u3} α β _inst_1 _inst_2 _inst_5 _inst_6), Eq.{max (succ u1) (succ u2)} (forall (a : α), (fun (x._@.Mathlib.Order.RelIso.Basic._hyg.867 : α) => γ) a) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (OrderMonoidWithZeroHom.{u1, u2} α γ _inst_1 _inst_3 _inst_5 _inst_7) α (fun (_x : α) => (fun (x._@.Mathlib.Order.RelIso.Basic._hyg.867 : α) => γ) _x) (RelHomClass.toFunLike.{max u1 u2, u1, u2} (OrderMonoidWithZeroHom.{u1, u2} α γ _inst_1 _inst_3 _inst_5 _inst_7) α γ (fun (x._@.Mathlib.Order.Hom.Basic._hyg.1896 : α) (x._@.Mathlib.Order.Hom.Basic._hyg.1898 : α) => LE.le.{u1} α (Preorder.toLE.{u1} α _inst_1) x._@.Mathlib.Order.Hom.Basic._hyg.1896 x._@.Mathlib.Order.Hom.Basic._hyg.1898) (fun (x._@.Mathlib.Order.Hom.Basic._hyg.1918 : γ) (x._@.Mathlib.Order.Hom.Basic._hyg.1920 : γ) => LE.le.{u2} γ (Preorder.toLE.{u2} γ _inst_3) x._@.Mathlib.Order.Hom.Basic._hyg.1918 x._@.Mathlib.Order.Hom.Basic._hyg.1920) (OrderMonoidHomClass.toOrderHomClass.{max u1 u2, u1, u2} (OrderMonoidWithZeroHom.{u1, u2} α γ _inst_1 _inst_3 _inst_5 _inst_7) α γ _inst_1 _inst_3 (MulZeroOneClass.toMulOneClass.{u1} α _inst_5) (MulZeroOneClass.toMulOneClass.{u2} γ _inst_7) (OrderMonoidWithZeroHomClass.toOrderMonoidHomClass.{max u1 u2, u1, u2} (OrderMonoidWithZeroHom.{u1, u2} α γ _inst_1 _inst_3 _inst_5 _inst_7) α γ _inst_1 _inst_3 _inst_5 _inst_7 (OrderMonoidWithZeroHom.instOrderMonoidWithZeroHomClassOrderMonoidWithZeroHom.{u1, u2} α γ _inst_1 _inst_3 _inst_5 _inst_7)))) (OrderMonoidWithZeroHom.comp.{u1, u3, u2} α β γ _inst_1 _inst_2 _inst_3 _inst_5 _inst_6 _inst_7 f g)) (Function.comp.{succ u1, succ u3, succ u2} α β γ (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (OrderMonoidWithZeroHom.{u3, u2} β γ _inst_2 _inst_3 _inst_6 _inst_7) β (fun (_x : β) => (fun (x._@.Mathlib.Order.RelIso.Basic._hyg.867 : β) => γ) _x) (RelHomClass.toFunLike.{max u3 u2, u3, u2} (OrderMonoidWithZeroHom.{u3, u2} β γ _inst_2 _inst_3 _inst_6 _inst_7) β γ (fun (x._@.Mathlib.Order.Hom.Basic._hyg.1896 : β) (x._@.Mathlib.Order.Hom.Basic._hyg.1898 : β) => LE.le.{u3} β (Preorder.toLE.{u3} β _inst_2) x._@.Mathlib.Order.Hom.Basic._hyg.1896 x._@.Mathlib.Order.Hom.Basic._hyg.1898) (fun (x._@.Mathlib.Order.Hom.Basic._hyg.1918 : γ) (x._@.Mathlib.Order.Hom.Basic._hyg.1920 : γ) => LE.le.{u2} γ (Preorder.toLE.{u2} γ _inst_3) x._@.Mathlib.Order.Hom.Basic._hyg.1918 x._@.Mathlib.Order.Hom.Basic._hyg.1920) (OrderMonoidHomClass.toOrderHomClass.{max u3 u2, u3, u2} (OrderMonoidWithZeroHom.{u3, u2} β γ _inst_2 _inst_3 _inst_6 _inst_7) β γ _inst_2 _inst_3 (MulZeroOneClass.toMulOneClass.{u3} β _inst_6) (MulZeroOneClass.toMulOneClass.{u2} γ _inst_7) (OrderMonoidWithZeroHomClass.toOrderMonoidHomClass.{max u3 u2, u3, u2} (OrderMonoidWithZeroHom.{u3, u2} β γ _inst_2 _inst_3 _inst_6 _inst_7) β γ _inst_2 _inst_3 _inst_6 _inst_7 (OrderMonoidWithZeroHom.instOrderMonoidWithZeroHomClassOrderMonoidWithZeroHom.{u3, u2} β γ _inst_2 _inst_3 _inst_6 _inst_7)))) f) (FunLike.coe.{max (succ u1) (succ u3), succ u1, succ u3} (OrderMonoidWithZeroHom.{u1, u3} α β _inst_1 _inst_2 _inst_5 _inst_6) α (fun (_x : α) => (fun (x._@.Mathlib.Order.RelIso.Basic._hyg.867 : α) => β) _x) (RelHomClass.toFunLike.{max u1 u3, u1, u3} (OrderMonoidWithZeroHom.{u1, u3} α β _inst_1 _inst_2 _inst_5 _inst_6) α β (fun (x._@.Mathlib.Order.Hom.Basic._hyg.1896 : α) (x._@.Mathlib.Order.Hom.Basic._hyg.1898 : α) => LE.le.{u1} α (Preorder.toLE.{u1} α _inst_1) x._@.Mathlib.Order.Hom.Basic._hyg.1896 x._@.Mathlib.Order.Hom.Basic._hyg.1898) (fun (x._@.Mathlib.Order.Hom.Basic._hyg.1918 : β) (x._@.Mathlib.Order.Hom.Basic._hyg.1920 : β) => LE.le.{u3} β (Preorder.toLE.{u3} β _inst_2) x._@.Mathlib.Order.Hom.Basic._hyg.1918 x._@.Mathlib.Order.Hom.Basic._hyg.1920) (OrderMonoidHomClass.toOrderHomClass.{max u1 u3, u1, u3} (OrderMonoidWithZeroHom.{u1, u3} α β _inst_1 _inst_2 _inst_5 _inst_6) α β _inst_1 _inst_2 (MulZeroOneClass.toMulOneClass.{u1} α _inst_5) (MulZeroOneClass.toMulOneClass.{u3} β _inst_6) (OrderMonoidWithZeroHomClass.toOrderMonoidHomClass.{max u1 u3, u1, u3} (OrderMonoidWithZeroHom.{u1, u3} α β _inst_1 _inst_2 _inst_5 _inst_6) α β _inst_1 _inst_2 _inst_5 _inst_6 (OrderMonoidWithZeroHom.instOrderMonoidWithZeroHomClassOrderMonoidWithZeroHom.{u1, u3} α β _inst_1 _inst_2 _inst_5 _inst_6)))) g))
Case conversion may be inaccurate. Consider using '#align order_monoid_with_zero_hom.coe_comp OrderMonoidWithZeroHom.coe_compₓ'. -/
@[simp]
theorem coe_comp (f : β →*₀o γ) (g : α →*₀o β) : (f.comp g : α → γ) = f ∘ g :=
  rfl
#align order_monoid_with_zero_hom.coe_comp OrderMonoidWithZeroHom.coe_comp

/- warning: order_monoid_with_zero_hom.comp_apply -> OrderMonoidWithZeroHom.comp_apply is a dubious translation:
lean 3 declaration is
  forall {α : Type.{u1}} {β : Type.{u2}} {γ : Type.{u3}} [_inst_1 : Preorder.{u1} α] [_inst_2 : Preorder.{u2} β] [_inst_3 : Preorder.{u3} γ] [_inst_5 : MulZeroOneClass.{u1} α] [_inst_6 : MulZeroOneClass.{u2} β] [_inst_7 : MulZeroOneClass.{u3} γ] (f : OrderMonoidWithZeroHom.{u2, u3} β γ _inst_2 _inst_3 _inst_6 _inst_7) (g : OrderMonoidWithZeroHom.{u1, u2} α β _inst_1 _inst_2 _inst_5 _inst_6) (a : α), Eq.{succ u3} γ (coeFn.{max (succ u1) (succ u3), max (succ u1) (succ u3)} (OrderMonoidWithZeroHom.{u1, u3} α γ _inst_1 _inst_3 _inst_5 _inst_7) (fun (_x : OrderMonoidWithZeroHom.{u1, u3} α γ _inst_1 _inst_3 _inst_5 _inst_7) => α -> γ) (OrderMonoidWithZeroHom.hasCoeToFun.{u1, u3} α γ _inst_1 _inst_3 _inst_5 _inst_7) (OrderMonoidWithZeroHom.comp.{u1, u2, u3} α β γ _inst_1 _inst_2 _inst_3 _inst_5 _inst_6 _inst_7 f g) a) (coeFn.{max (succ u2) (succ u3), max (succ u2) (succ u3)} (OrderMonoidWithZeroHom.{u2, u3} β γ _inst_2 _inst_3 _inst_6 _inst_7) (fun (_x : OrderMonoidWithZeroHom.{u2, u3} β γ _inst_2 _inst_3 _inst_6 _inst_7) => β -> γ) (OrderMonoidWithZeroHom.hasCoeToFun.{u2, u3} β γ _inst_2 _inst_3 _inst_6 _inst_7) f (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (OrderMonoidWithZeroHom.{u1, u2} α β _inst_1 _inst_2 _inst_5 _inst_6) (fun (_x : OrderMonoidWithZeroHom.{u1, u2} α β _inst_1 _inst_2 _inst_5 _inst_6) => α -> β) (OrderMonoidWithZeroHom.hasCoeToFun.{u1, u2} α β _inst_1 _inst_2 _inst_5 _inst_6) g a))
but is expected to have type
  forall {α : Type.{u1}} {β : Type.{u3}} {γ : Type.{u2}} [_inst_1 : Preorder.{u1} α] [_inst_2 : Preorder.{u3} β] [_inst_3 : Preorder.{u2} γ] [_inst_5 : MulZeroOneClass.{u1} α] [_inst_6 : MulZeroOneClass.{u3} β] [_inst_7 : MulZeroOneClass.{u2} γ] (f : OrderMonoidWithZeroHom.{u3, u2} β γ _inst_2 _inst_3 _inst_6 _inst_7) (g : OrderMonoidWithZeroHom.{u1, u3} α β _inst_1 _inst_2 _inst_5 _inst_6) (a : α), Eq.{succ u2} ((fun (x._@.Mathlib.Order.RelIso.Basic._hyg.867 : α) => γ) a) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (OrderMonoidWithZeroHom.{u1, u2} α γ _inst_1 _inst_3 _inst_5 _inst_7) α (fun (_x : α) => (fun (x._@.Mathlib.Order.RelIso.Basic._hyg.867 : α) => γ) _x) (RelHomClass.toFunLike.{max u1 u2, u1, u2} (OrderMonoidWithZeroHom.{u1, u2} α γ _inst_1 _inst_3 _inst_5 _inst_7) α γ (fun (x._@.Mathlib.Order.Hom.Basic._hyg.1896 : α) (x._@.Mathlib.Order.Hom.Basic._hyg.1898 : α) => LE.le.{u1} α (Preorder.toLE.{u1} α _inst_1) x._@.Mathlib.Order.Hom.Basic._hyg.1896 x._@.Mathlib.Order.Hom.Basic._hyg.1898) (fun (x._@.Mathlib.Order.Hom.Basic._hyg.1918 : γ) (x._@.Mathlib.Order.Hom.Basic._hyg.1920 : γ) => LE.le.{u2} γ (Preorder.toLE.{u2} γ _inst_3) x._@.Mathlib.Order.Hom.Basic._hyg.1918 x._@.Mathlib.Order.Hom.Basic._hyg.1920) (OrderMonoidHomClass.toOrderHomClass.{max u1 u2, u1, u2} (OrderMonoidWithZeroHom.{u1, u2} α γ _inst_1 _inst_3 _inst_5 _inst_7) α γ _inst_1 _inst_3 (MulZeroOneClass.toMulOneClass.{u1} α _inst_5) (MulZeroOneClass.toMulOneClass.{u2} γ _inst_7) (OrderMonoidWithZeroHomClass.toOrderMonoidHomClass.{max u1 u2, u1, u2} (OrderMonoidWithZeroHom.{u1, u2} α γ _inst_1 _inst_3 _inst_5 _inst_7) α γ _inst_1 _inst_3 _inst_5 _inst_7 (OrderMonoidWithZeroHom.instOrderMonoidWithZeroHomClassOrderMonoidWithZeroHom.{u1, u2} α γ _inst_1 _inst_3 _inst_5 _inst_7)))) (OrderMonoidWithZeroHom.comp.{u1, u3, u2} α β γ _inst_1 _inst_2 _inst_3 _inst_5 _inst_6 _inst_7 f g) a) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (OrderMonoidWithZeroHom.{u3, u2} β γ _inst_2 _inst_3 _inst_6 _inst_7) β (fun (_x : β) => (fun (x._@.Mathlib.Order.RelIso.Basic._hyg.867 : β) => γ) _x) (RelHomClass.toFunLike.{max u3 u2, u3, u2} (OrderMonoidWithZeroHom.{u3, u2} β γ _inst_2 _inst_3 _inst_6 _inst_7) β γ (fun (x._@.Mathlib.Order.Hom.Basic._hyg.1896 : β) (x._@.Mathlib.Order.Hom.Basic._hyg.1898 : β) => LE.le.{u3} β (Preorder.toLE.{u3} β _inst_2) x._@.Mathlib.Order.Hom.Basic._hyg.1896 x._@.Mathlib.Order.Hom.Basic._hyg.1898) (fun (x._@.Mathlib.Order.Hom.Basic._hyg.1918 : γ) (x._@.Mathlib.Order.Hom.Basic._hyg.1920 : γ) => LE.le.{u2} γ (Preorder.toLE.{u2} γ _inst_3) x._@.Mathlib.Order.Hom.Basic._hyg.1918 x._@.Mathlib.Order.Hom.Basic._hyg.1920) (OrderMonoidHomClass.toOrderHomClass.{max u3 u2, u3, u2} (OrderMonoidWithZeroHom.{u3, u2} β γ _inst_2 _inst_3 _inst_6 _inst_7) β γ _inst_2 _inst_3 (MulZeroOneClass.toMulOneClass.{u3} β _inst_6) (MulZeroOneClass.toMulOneClass.{u2} γ _inst_7) (OrderMonoidWithZeroHomClass.toOrderMonoidHomClass.{max u3 u2, u3, u2} (OrderMonoidWithZeroHom.{u3, u2} β γ _inst_2 _inst_3 _inst_6 _inst_7) β γ _inst_2 _inst_3 _inst_6 _inst_7 (OrderMonoidWithZeroHom.instOrderMonoidWithZeroHomClassOrderMonoidWithZeroHom.{u3, u2} β γ _inst_2 _inst_3 _inst_6 _inst_7)))) f (FunLike.coe.{max (succ u1) (succ u3), succ u1, succ u3} (OrderMonoidWithZeroHom.{u1, u3} α β _inst_1 _inst_2 _inst_5 _inst_6) α (fun (_x : α) => (fun (x._@.Mathlib.Order.RelIso.Basic._hyg.867 : α) => β) _x) (RelHomClass.toFunLike.{max u1 u3, u1, u3} (OrderMonoidWithZeroHom.{u1, u3} α β _inst_1 _inst_2 _inst_5 _inst_6) α β (fun (x._@.Mathlib.Order.Hom.Basic._hyg.1896 : α) (x._@.Mathlib.Order.Hom.Basic._hyg.1898 : α) => LE.le.{u1} α (Preorder.toLE.{u1} α _inst_1) x._@.Mathlib.Order.Hom.Basic._hyg.1896 x._@.Mathlib.Order.Hom.Basic._hyg.1898) (fun (x._@.Mathlib.Order.Hom.Basic._hyg.1918 : β) (x._@.Mathlib.Order.Hom.Basic._hyg.1920 : β) => LE.le.{u3} β (Preorder.toLE.{u3} β _inst_2) x._@.Mathlib.Order.Hom.Basic._hyg.1918 x._@.Mathlib.Order.Hom.Basic._hyg.1920) (OrderMonoidHomClass.toOrderHomClass.{max u1 u3, u1, u3} (OrderMonoidWithZeroHom.{u1, u3} α β _inst_1 _inst_2 _inst_5 _inst_6) α β _inst_1 _inst_2 (MulZeroOneClass.toMulOneClass.{u1} α _inst_5) (MulZeroOneClass.toMulOneClass.{u3} β _inst_6) (OrderMonoidWithZeroHomClass.toOrderMonoidHomClass.{max u1 u3, u1, u3} (OrderMonoidWithZeroHom.{u1, u3} α β _inst_1 _inst_2 _inst_5 _inst_6) α β _inst_1 _inst_2 _inst_5 _inst_6 (OrderMonoidWithZeroHom.instOrderMonoidWithZeroHomClassOrderMonoidWithZeroHom.{u1, u3} α β _inst_1 _inst_2 _inst_5 _inst_6)))) g a))
Case conversion may be inaccurate. Consider using '#align order_monoid_with_zero_hom.comp_apply OrderMonoidWithZeroHom.comp_applyₓ'. -/
@[simp]
theorem comp_apply (f : β →*₀o γ) (g : α →*₀o β) (a : α) : (f.comp g) a = f (g a) :=
  rfl
#align order_monoid_with_zero_hom.comp_apply OrderMonoidWithZeroHom.comp_apply

/- warning: order_monoid_with_zero_hom.coe_comp_monoid_with_zero_hom -> OrderMonoidWithZeroHom.coe_comp_monoidWithZeroHom is a dubious translation:
lean 3 declaration is
  forall {α : Type.{u1}} {β : Type.{u2}} {γ : Type.{u3}} [_inst_1 : Preorder.{u1} α] [_inst_2 : Preorder.{u2} β] [_inst_3 : Preorder.{u3} γ] [_inst_5 : MulZeroOneClass.{u1} α] [_inst_6 : MulZeroOneClass.{u2} β] [_inst_7 : MulZeroOneClass.{u3} γ] (f : OrderMonoidWithZeroHom.{u2, u3} β γ _inst_2 _inst_3 _inst_6 _inst_7) (g : OrderMonoidWithZeroHom.{u1, u2} α β _inst_1 _inst_2 _inst_5 _inst_6), Eq.{max (succ u3) (succ u1)} (MonoidWithZeroHom.{u1, u3} α γ _inst_5 _inst_7) ((fun (a : Sort.{max (succ u1) (succ u3)}) (b : Sort.{max (succ u3) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u3), max (succ u3) (succ u1)} a b] => self.0) (OrderMonoidWithZeroHom.{u1, u3} α γ _inst_1 _inst_3 _inst_5 _inst_7) (MonoidWithZeroHom.{u1, u3} α γ _inst_5 _inst_7) (HasLiftT.mk.{max (succ u1) (succ u3), max (succ u3) (succ u1)} (OrderMonoidWithZeroHom.{u1, u3} α γ _inst_1 _inst_3 _inst_5 _inst_7) (MonoidWithZeroHom.{u1, u3} α γ _inst_5 _inst_7) (CoeTCₓ.coe.{max (succ u1) (succ u3), max (succ u3) (succ u1)} (OrderMonoidWithZeroHom.{u1, u3} α γ _inst_1 _inst_3 _inst_5 _inst_7) (MonoidWithZeroHom.{u1, u3} α γ _inst_5 _inst_7) (MonoidWithZeroHom.hasCoeT.{u1, u3, max u1 u3} α γ (OrderMonoidWithZeroHom.{u1, u3} α γ _inst_1 _inst_3 _inst_5 _inst_7) _inst_5 _inst_7 (OrderMonoidWithZeroHomClass.toMonoidWithZeroHomClass.{max u1 u3, u1, u3} (OrderMonoidWithZeroHom.{u1, u3} α γ _inst_1 _inst_3 _inst_5 _inst_7) α γ _inst_1 _inst_3 _inst_5 _inst_7 (OrderMonoidWithZeroHom.orderMonoidWithZeroHomClass.{u1, u3} α γ _inst_1 _inst_3 _inst_5 _inst_7))))) (OrderMonoidWithZeroHom.comp.{u1, u2, u3} α β γ _inst_1 _inst_2 _inst_3 _inst_5 _inst_6 _inst_7 f g)) (MonoidWithZeroHom.comp.{u1, u2, u3} α β γ _inst_5 _inst_6 _inst_7 ((fun (a : Sort.{max (succ u2) (succ u3)}) (b : Sort.{max (succ u3) (succ u2)}) [self : HasLiftT.{max (succ u2) (succ u3), max (succ u3) (succ u2)} a b] => self.0) (OrderMonoidWithZeroHom.{u2, u3} β γ _inst_2 _inst_3 _inst_6 _inst_7) (MonoidWithZeroHom.{u2, u3} β γ _inst_6 _inst_7) (HasLiftT.mk.{max (succ u2) (succ u3), max (succ u3) (succ u2)} (OrderMonoidWithZeroHom.{u2, u3} β γ _inst_2 _inst_3 _inst_6 _inst_7) (MonoidWithZeroHom.{u2, u3} β γ _inst_6 _inst_7) (CoeTCₓ.coe.{max (succ u2) (succ u3), max (succ u3) (succ u2)} (OrderMonoidWithZeroHom.{u2, u3} β γ _inst_2 _inst_3 _inst_6 _inst_7) (MonoidWithZeroHom.{u2, u3} β γ _inst_6 _inst_7) (MonoidWithZeroHom.hasCoeT.{u2, u3, max u2 u3} β γ (OrderMonoidWithZeroHom.{u2, u3} β γ _inst_2 _inst_3 _inst_6 _inst_7) _inst_6 _inst_7 (OrderMonoidWithZeroHomClass.toMonoidWithZeroHomClass.{max u2 u3, u2, u3} (OrderMonoidWithZeroHom.{u2, u3} β γ _inst_2 _inst_3 _inst_6 _inst_7) β γ _inst_2 _inst_3 _inst_6 _inst_7 (OrderMonoidWithZeroHom.orderMonoidWithZeroHomClass.{u2, u3} β γ _inst_2 _inst_3 _inst_6 _inst_7))))) f) ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (OrderMonoidWithZeroHom.{u1, u2} α β _inst_1 _inst_2 _inst_5 _inst_6) (MonoidWithZeroHom.{u1, u2} α β _inst_5 _inst_6) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (OrderMonoidWithZeroHom.{u1, u2} α β _inst_1 _inst_2 _inst_5 _inst_6) (MonoidWithZeroHom.{u1, u2} α β _inst_5 _inst_6) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (OrderMonoidWithZeroHom.{u1, u2} α β _inst_1 _inst_2 _inst_5 _inst_6) (MonoidWithZeroHom.{u1, u2} α β _inst_5 _inst_6) (MonoidWithZeroHom.hasCoeT.{u1, u2, max u1 u2} α β (OrderMonoidWithZeroHom.{u1, u2} α β _inst_1 _inst_2 _inst_5 _inst_6) _inst_5 _inst_6 (OrderMonoidWithZeroHomClass.toMonoidWithZeroHomClass.{max u1 u2, u1, u2} (OrderMonoidWithZeroHom.{u1, u2} α β _inst_1 _inst_2 _inst_5 _inst_6) α β _inst_1 _inst_2 _inst_5 _inst_6 (OrderMonoidWithZeroHom.orderMonoidWithZeroHomClass.{u1, u2} α β _inst_1 _inst_2 _inst_5 _inst_6))))) g))
but is expected to have type
  forall {α : Type.{u1}} {β : Type.{u3}} {γ : Type.{u2}} [_inst_1 : Preorder.{u1} α] [_inst_2 : Preorder.{u3} β] [_inst_3 : Preorder.{u2} γ] [_inst_5 : MulZeroOneClass.{u1} α] [_inst_6 : MulZeroOneClass.{u3} β] [_inst_7 : MulZeroOneClass.{u2} γ] (f : OrderMonoidWithZeroHom.{u3, u2} β γ _inst_2 _inst_3 _inst_6 _inst_7) (g : OrderMonoidWithZeroHom.{u1, u3} α β _inst_1 _inst_2 _inst_5 _inst_6), Eq.{max (succ u1) (succ u2)} (MonoidWithZeroHom.{u1, u2} α γ _inst_5 _inst_7) (MonoidWithZeroHomClass.toMonoidWithZeroHom.{u1, u2, max u1 u2} α γ (OrderMonoidWithZeroHom.{u1, u2} α γ _inst_1 _inst_3 _inst_5 _inst_7) _inst_5 _inst_7 (OrderMonoidWithZeroHomClass.toMonoidWithZeroHomClass.{max u1 u2, u1, u2} (OrderMonoidWithZeroHom.{u1, u2} α γ _inst_1 _inst_3 _inst_5 _inst_7) α γ _inst_1 _inst_3 _inst_5 _inst_7 (OrderMonoidWithZeroHom.instOrderMonoidWithZeroHomClassOrderMonoidWithZeroHom.{u1, u2} α γ _inst_1 _inst_3 _inst_5 _inst_7)) (OrderMonoidWithZeroHom.comp.{u1, u3, u2} α β γ _inst_1 _inst_2 _inst_3 _inst_5 _inst_6 _inst_7 f g)) (MonoidWithZeroHom.comp.{u1, u3, u2} α β γ _inst_5 _inst_6 _inst_7 (MonoidWithZeroHomClass.toMonoidWithZeroHom.{u3, u2, max u3 u2} β γ (OrderMonoidWithZeroHom.{u3, u2} β γ _inst_2 _inst_3 _inst_6 _inst_7) _inst_6 _inst_7 (OrderMonoidWithZeroHomClass.toMonoidWithZeroHomClass.{max u3 u2, u3, u2} (OrderMonoidWithZeroHom.{u3, u2} β γ _inst_2 _inst_3 _inst_6 _inst_7) β γ _inst_2 _inst_3 _inst_6 _inst_7 (OrderMonoidWithZeroHom.instOrderMonoidWithZeroHomClassOrderMonoidWithZeroHom.{u3, u2} β γ _inst_2 _inst_3 _inst_6 _inst_7)) f) (MonoidWithZeroHomClass.toMonoidWithZeroHom.{u1, u3, max u1 u3} α β (OrderMonoidWithZeroHom.{u1, u3} α β _inst_1 _inst_2 _inst_5 _inst_6) _inst_5 _inst_6 (OrderMonoidWithZeroHomClass.toMonoidWithZeroHomClass.{max u1 u3, u1, u3} (OrderMonoidWithZeroHom.{u1, u3} α β _inst_1 _inst_2 _inst_5 _inst_6) α β _inst_1 _inst_2 _inst_5 _inst_6 (OrderMonoidWithZeroHom.instOrderMonoidWithZeroHomClassOrderMonoidWithZeroHom.{u1, u3} α β _inst_1 _inst_2 _inst_5 _inst_6)) g))
Case conversion may be inaccurate. Consider using '#align order_monoid_with_zero_hom.coe_comp_monoid_with_zero_hom OrderMonoidWithZeroHom.coe_comp_monoidWithZeroHomₓ'. -/
@[simp]
theorem coe_comp_monoidWithZeroHom (f : β →*₀o γ) (g : α →*₀o β) :
    (f.comp g : α →*₀ γ) = (f : β →*₀ γ).comp g :=
  rfl
#align order_monoid_with_zero_hom.coe_comp_monoid_with_zero_hom OrderMonoidWithZeroHom.coe_comp_monoidWithZeroHom

/- warning: order_monoid_with_zero_hom.coe_comp_order_monoid_hom -> OrderMonoidWithZeroHom.coe_comp_orderMonoidHom is a dubious translation:
lean 3 declaration is
  forall {α : Type.{u1}} {β : Type.{u2}} {γ : Type.{u3}} [_inst_1 : Preorder.{u1} α] [_inst_2 : Preorder.{u2} β] [_inst_3 : Preorder.{u3} γ] [_inst_5 : MulZeroOneClass.{u1} α] [_inst_6 : MulZeroOneClass.{u2} β] [_inst_7 : MulZeroOneClass.{u3} γ] (f : OrderMonoidWithZeroHom.{u2, u3} β γ _inst_2 _inst_3 _inst_6 _inst_7) (g : OrderMonoidWithZeroHom.{u1, u2} α β _inst_1 _inst_2 _inst_5 _inst_6), Eq.{max (succ u1) (succ u3)} (OrderMonoidHom.{u1, u3} α γ _inst_1 _inst_3 (MulZeroOneClass.toMulOneClass.{u1} α _inst_5) (MulZeroOneClass.toMulOneClass.{u3} γ _inst_7)) ((fun (a : Sort.{max (succ u1) (succ u3)}) (b : Sort.{max (succ u1) (succ u3)}) [self : HasLiftT.{max (succ u1) (succ u3), max (succ u1) (succ u3)} a b] => self.0) (OrderMonoidWithZeroHom.{u1, u3} α γ _inst_1 _inst_3 _inst_5 _inst_7) (OrderMonoidHom.{u1, u3} α γ _inst_1 _inst_3 (MulZeroOneClass.toMulOneClass.{u1} α _inst_5) (MulZeroOneClass.toMulOneClass.{u3} γ _inst_7)) (HasLiftT.mk.{max (succ u1) (succ u3), max (succ u1) (succ u3)} (OrderMonoidWithZeroHom.{u1, u3} α γ _inst_1 _inst_3 _inst_5 _inst_7) (OrderMonoidHom.{u1, u3} α γ _inst_1 _inst_3 (MulZeroOneClass.toMulOneClass.{u1} α _inst_5) (MulZeroOneClass.toMulOneClass.{u3} γ _inst_7)) (CoeTCₓ.coe.{max (succ u1) (succ u3), max (succ u1) (succ u3)} (OrderMonoidWithZeroHom.{u1, u3} α γ _inst_1 _inst_3 _inst_5 _inst_7) (OrderMonoidHom.{u1, u3} α γ _inst_1 _inst_3 (MulZeroOneClass.toMulOneClass.{u1} α _inst_5) (MulZeroOneClass.toMulOneClass.{u3} γ _inst_7)) (OrderMonoidHom.hasCoeT.{max u1 u3, u1, u3} (OrderMonoidWithZeroHom.{u1, u3} α γ _inst_1 _inst_3 _inst_5 _inst_7) α γ _inst_1 _inst_3 (MulZeroOneClass.toMulOneClass.{u1} α _inst_5) (MulZeroOneClass.toMulOneClass.{u3} γ _inst_7) (OrderMonoidWithZeroHomClass.toOrderMonoidHomClass.{max u1 u3, u1, u3} (OrderMonoidWithZeroHom.{u1, u3} α γ _inst_1 _inst_3 _inst_5 _inst_7) α γ _inst_1 _inst_3 _inst_5 _inst_7 (OrderMonoidWithZeroHom.orderMonoidWithZeroHomClass.{u1, u3} α γ _inst_1 _inst_3 _inst_5 _inst_7))))) (OrderMonoidWithZeroHom.comp.{u1, u2, u3} α β γ _inst_1 _inst_2 _inst_3 _inst_5 _inst_6 _inst_7 f g)) (OrderMonoidHom.comp.{u1, u2, u3} α β γ _inst_1 _inst_2 _inst_3 (MulZeroOneClass.toMulOneClass.{u1} α _inst_5) (MulZeroOneClass.toMulOneClass.{u2} β _inst_6) (MulZeroOneClass.toMulOneClass.{u3} γ _inst_7) ((fun (a : Sort.{max (succ u2) (succ u3)}) (b : Sort.{max (succ u2) (succ u3)}) [self : HasLiftT.{max (succ u2) (succ u3), max (succ u2) (succ u3)} a b] => self.0) (OrderMonoidWithZeroHom.{u2, u3} β γ _inst_2 _inst_3 _inst_6 _inst_7) (OrderMonoidHom.{u2, u3} β γ _inst_2 _inst_3 (MulZeroOneClass.toMulOneClass.{u2} β _inst_6) (MulZeroOneClass.toMulOneClass.{u3} γ _inst_7)) (HasLiftT.mk.{max (succ u2) (succ u3), max (succ u2) (succ u3)} (OrderMonoidWithZeroHom.{u2, u3} β γ _inst_2 _inst_3 _inst_6 _inst_7) (OrderMonoidHom.{u2, u3} β γ _inst_2 _inst_3 (MulZeroOneClass.toMulOneClass.{u2} β _inst_6) (MulZeroOneClass.toMulOneClass.{u3} γ _inst_7)) (CoeTCₓ.coe.{max (succ u2) (succ u3), max (succ u2) (succ u3)} (OrderMonoidWithZeroHom.{u2, u3} β γ _inst_2 _inst_3 _inst_6 _inst_7) (OrderMonoidHom.{u2, u3} β γ _inst_2 _inst_3 (MulZeroOneClass.toMulOneClass.{u2} β _inst_6) (MulZeroOneClass.toMulOneClass.{u3} γ _inst_7)) (OrderMonoidHom.hasCoeT.{max u2 u3, u2, u3} (OrderMonoidWithZeroHom.{u2, u3} β γ _inst_2 _inst_3 _inst_6 _inst_7) β γ _inst_2 _inst_3 (MulZeroOneClass.toMulOneClass.{u2} β _inst_6) (MulZeroOneClass.toMulOneClass.{u3} γ _inst_7) (OrderMonoidWithZeroHomClass.toOrderMonoidHomClass.{max u2 u3, u2, u3} (OrderMonoidWithZeroHom.{u2, u3} β γ _inst_2 _inst_3 _inst_6 _inst_7) β γ _inst_2 _inst_3 _inst_6 _inst_7 (OrderMonoidWithZeroHom.orderMonoidWithZeroHomClass.{u2, u3} β γ _inst_2 _inst_3 _inst_6 _inst_7))))) f) ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u1) (succ u2)} a b] => self.0) (OrderMonoidWithZeroHom.{u1, u2} α β _inst_1 _inst_2 _inst_5 _inst_6) (OrderMonoidHom.{u1, u2} α β _inst_1 _inst_2 (MulZeroOneClass.toMulOneClass.{u1} α _inst_5) (MulZeroOneClass.toMulOneClass.{u2} β _inst_6)) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (OrderMonoidWithZeroHom.{u1, u2} α β _inst_1 _inst_2 _inst_5 _inst_6) (OrderMonoidHom.{u1, u2} α β _inst_1 _inst_2 (MulZeroOneClass.toMulOneClass.{u1} α _inst_5) (MulZeroOneClass.toMulOneClass.{u2} β _inst_6)) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (OrderMonoidWithZeroHom.{u1, u2} α β _inst_1 _inst_2 _inst_5 _inst_6) (OrderMonoidHom.{u1, u2} α β _inst_1 _inst_2 (MulZeroOneClass.toMulOneClass.{u1} α _inst_5) (MulZeroOneClass.toMulOneClass.{u2} β _inst_6)) (OrderMonoidHom.hasCoeT.{max u1 u2, u1, u2} (OrderMonoidWithZeroHom.{u1, u2} α β _inst_1 _inst_2 _inst_5 _inst_6) α β _inst_1 _inst_2 (MulZeroOneClass.toMulOneClass.{u1} α _inst_5) (MulZeroOneClass.toMulOneClass.{u2} β _inst_6) (OrderMonoidWithZeroHomClass.toOrderMonoidHomClass.{max u1 u2, u1, u2} (OrderMonoidWithZeroHom.{u1, u2} α β _inst_1 _inst_2 _inst_5 _inst_6) α β _inst_1 _inst_2 _inst_5 _inst_6 (OrderMonoidWithZeroHom.orderMonoidWithZeroHomClass.{u1, u2} α β _inst_1 _inst_2 _inst_5 _inst_6))))) g))
but is expected to have type
  forall {α : Type.{u1}} {β : Type.{u3}} {γ : Type.{u2}} [_inst_1 : Preorder.{u1} α] [_inst_2 : Preorder.{u3} β] [_inst_3 : Preorder.{u2} γ] [_inst_5 : MulZeroOneClass.{u1} α] [_inst_6 : MulZeroOneClass.{u3} β] [_inst_7 : MulZeroOneClass.{u2} γ] (f : OrderMonoidWithZeroHom.{u3, u2} β γ _inst_2 _inst_3 _inst_6 _inst_7) (g : OrderMonoidWithZeroHom.{u1, u3} α β _inst_1 _inst_2 _inst_5 _inst_6), Eq.{max (succ u1) (succ u2)} (OrderMonoidHom.{u1, u2} α γ _inst_1 _inst_3 (MulZeroOneClass.toMulOneClass.{u1} α _inst_5) (MulZeroOneClass.toMulOneClass.{u2} γ _inst_7)) (OrderMonoidHomClass.toOrderMonoidHom.{max u1 u2, u1, u2} (OrderMonoidWithZeroHom.{u1, u2} α γ _inst_1 _inst_3 _inst_5 _inst_7) α γ _inst_1 _inst_3 (MulZeroOneClass.toMulOneClass.{u1} α _inst_5) (MulZeroOneClass.toMulOneClass.{u2} γ _inst_7) (OrderMonoidWithZeroHomClass.toOrderMonoidHomClass.{max u1 u2, u1, u2} (OrderMonoidWithZeroHom.{u1, u2} α γ _inst_1 _inst_3 _inst_5 _inst_7) α γ _inst_1 _inst_3 _inst_5 _inst_7 (OrderMonoidWithZeroHom.instOrderMonoidWithZeroHomClassOrderMonoidWithZeroHom.{u1, u2} α γ _inst_1 _inst_3 _inst_5 _inst_7)) (OrderMonoidWithZeroHom.comp.{u1, u3, u2} α β γ _inst_1 _inst_2 _inst_3 _inst_5 _inst_6 _inst_7 f g)) (OrderMonoidHom.comp.{u1, u3, u2} α β γ _inst_1 _inst_2 _inst_3 (MulZeroOneClass.toMulOneClass.{u1} α _inst_5) (MulZeroOneClass.toMulOneClass.{u3} β _inst_6) (MulZeroOneClass.toMulOneClass.{u2} γ _inst_7) (OrderMonoidHomClass.toOrderMonoidHom.{max u3 u2, u3, u2} (OrderMonoidWithZeroHom.{u3, u2} β γ _inst_2 _inst_3 _inst_6 _inst_7) β γ _inst_2 _inst_3 (MulZeroOneClass.toMulOneClass.{u3} β _inst_6) (MulZeroOneClass.toMulOneClass.{u2} γ _inst_7) (OrderMonoidWithZeroHomClass.toOrderMonoidHomClass.{max u3 u2, u3, u2} (OrderMonoidWithZeroHom.{u3, u2} β γ _inst_2 _inst_3 _inst_6 _inst_7) β γ _inst_2 _inst_3 _inst_6 _inst_7 (OrderMonoidWithZeroHom.instOrderMonoidWithZeroHomClassOrderMonoidWithZeroHom.{u3, u2} β γ _inst_2 _inst_3 _inst_6 _inst_7)) f) (OrderMonoidHomClass.toOrderMonoidHom.{max u1 u3, u1, u3} (OrderMonoidWithZeroHom.{u1, u3} α β _inst_1 _inst_2 _inst_5 _inst_6) α β _inst_1 _inst_2 (MulZeroOneClass.toMulOneClass.{u1} α _inst_5) (MulZeroOneClass.toMulOneClass.{u3} β _inst_6) (OrderMonoidWithZeroHomClass.toOrderMonoidHomClass.{max u1 u3, u1, u3} (OrderMonoidWithZeroHom.{u1, u3} α β _inst_1 _inst_2 _inst_5 _inst_6) α β _inst_1 _inst_2 _inst_5 _inst_6 (OrderMonoidWithZeroHom.instOrderMonoidWithZeroHomClassOrderMonoidWithZeroHom.{u1, u3} α β _inst_1 _inst_2 _inst_5 _inst_6)) g))
Case conversion may be inaccurate. Consider using '#align order_monoid_with_zero_hom.coe_comp_order_monoid_hom OrderMonoidWithZeroHom.coe_comp_orderMonoidHomₓ'. -/
@[simp]
theorem coe_comp_orderMonoidHom (f : β →*₀o γ) (g : α →*₀o β) :
    (f.comp g : α →*o γ) = (f : β →*o γ).comp g :=
  rfl
#align order_monoid_with_zero_hom.coe_comp_order_monoid_hom OrderMonoidWithZeroHom.coe_comp_orderMonoidHom

/- warning: order_monoid_with_zero_hom.comp_assoc -> OrderMonoidWithZeroHom.comp_assoc is a dubious translation:
lean 3 declaration is
  forall {α : Type.{u1}} {β : Type.{u2}} {γ : Type.{u3}} {δ : Type.{u4}} [_inst_1 : Preorder.{u1} α] [_inst_2 : Preorder.{u2} β] [_inst_3 : Preorder.{u3} γ] [_inst_4 : Preorder.{u4} δ] [_inst_5 : MulZeroOneClass.{u1} α] [_inst_6 : MulZeroOneClass.{u2} β] [_inst_7 : MulZeroOneClass.{u3} γ] [_inst_8 : MulZeroOneClass.{u4} δ] (f : OrderMonoidWithZeroHom.{u3, u4} γ δ _inst_3 _inst_4 _inst_7 _inst_8) (g : OrderMonoidWithZeroHom.{u2, u3} β γ _inst_2 _inst_3 _inst_6 _inst_7) (h : OrderMonoidWithZeroHom.{u1, u2} α β _inst_1 _inst_2 _inst_5 _inst_6), Eq.{max (succ u1) (succ u4)} (OrderMonoidWithZeroHom.{u1, u4} α δ _inst_1 _inst_4 _inst_5 _inst_8) (OrderMonoidWithZeroHom.comp.{u1, u2, u4} α β δ _inst_1 _inst_2 _inst_4 _inst_5 _inst_6 _inst_8 (OrderMonoidWithZeroHom.comp.{u2, u3, u4} β γ δ _inst_2 _inst_3 _inst_4 _inst_6 _inst_7 _inst_8 f g) h) (OrderMonoidWithZeroHom.comp.{u1, u3, u4} α γ δ _inst_1 _inst_3 _inst_4 _inst_5 _inst_7 _inst_8 f (OrderMonoidWithZeroHom.comp.{u1, u2, u3} α β γ _inst_1 _inst_2 _inst_3 _inst_5 _inst_6 _inst_7 g h))
but is expected to have type
  forall {α : Type.{u1}} {β : Type.{u2}} {γ : Type.{u4}} {δ : Type.{u3}} [_inst_1 : Preorder.{u1} α] [_inst_2 : Preorder.{u2} β] [_inst_3 : Preorder.{u4} γ] [_inst_4 : Preorder.{u3} δ] [_inst_5 : MulZeroOneClass.{u1} α] [_inst_6 : MulZeroOneClass.{u2} β] [_inst_7 : MulZeroOneClass.{u4} γ] [_inst_8 : MulZeroOneClass.{u3} δ] (f : OrderMonoidWithZeroHom.{u4, u3} γ δ _inst_3 _inst_4 _inst_7 _inst_8) (g : OrderMonoidWithZeroHom.{u2, u4} β γ _inst_2 _inst_3 _inst_6 _inst_7) (h : OrderMonoidWithZeroHom.{u1, u2} α β _inst_1 _inst_2 _inst_5 _inst_6), Eq.{max (succ u1) (succ u3)} (OrderMonoidWithZeroHom.{u1, u3} α δ _inst_1 _inst_4 _inst_5 _inst_8) (OrderMonoidWithZeroHom.comp.{u1, u2, u3} α β δ _inst_1 _inst_2 _inst_4 _inst_5 _inst_6 _inst_8 (OrderMonoidWithZeroHom.comp.{u2, u4, u3} β γ δ _inst_2 _inst_3 _inst_4 _inst_6 _inst_7 _inst_8 f g) h) (OrderMonoidWithZeroHom.comp.{u1, u4, u3} α γ δ _inst_1 _inst_3 _inst_4 _inst_5 _inst_7 _inst_8 f (OrderMonoidWithZeroHom.comp.{u1, u2, u4} α β γ _inst_1 _inst_2 _inst_3 _inst_5 _inst_6 _inst_7 g h))
Case conversion may be inaccurate. Consider using '#align order_monoid_with_zero_hom.comp_assoc OrderMonoidWithZeroHom.comp_assocₓ'. -/
@[simp]
theorem comp_assoc (f : γ →*₀o δ) (g : β →*₀o γ) (h : α →*₀o β) :
    (f.comp g).comp h = f.comp (g.comp h) :=
  rfl
#align order_monoid_with_zero_hom.comp_assoc OrderMonoidWithZeroHom.comp_assoc

/- warning: order_monoid_with_zero_hom.comp_id -> OrderMonoidWithZeroHom.comp_id is a dubious translation:
lean 3 declaration is
  forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : Preorder.{u1} α] [_inst_2 : Preorder.{u2} β] [_inst_5 : MulZeroOneClass.{u1} α] [_inst_6 : MulZeroOneClass.{u2} β] (f : OrderMonoidWithZeroHom.{u1, u2} α β _inst_1 _inst_2 _inst_5 _inst_6), Eq.{max (succ u1) (succ u2)} (OrderMonoidWithZeroHom.{u1, u2} α β _inst_1 _inst_2 _inst_5 _inst_6) (OrderMonoidWithZeroHom.comp.{u1, u1, u2} α α β _inst_1 _inst_1 _inst_2 _inst_5 _inst_5 _inst_6 f (OrderMonoidWithZeroHom.id.{u1} α _inst_1 _inst_5)) f
but is expected to have type
  forall {α : Type.{u2}} {β : Type.{u1}} [_inst_1 : Preorder.{u2} α] [_inst_2 : Preorder.{u1} β] [_inst_5 : MulZeroOneClass.{u2} α] [_inst_6 : MulZeroOneClass.{u1} β] (f : OrderMonoidWithZeroHom.{u2, u1} α β _inst_1 _inst_2 _inst_5 _inst_6), Eq.{max (succ u2) (succ u1)} (OrderMonoidWithZeroHom.{u2, u1} α β _inst_1 _inst_2 _inst_5 _inst_6) (OrderMonoidWithZeroHom.comp.{u2, u2, u1} α α β _inst_1 _inst_1 _inst_2 _inst_5 _inst_5 _inst_6 f (OrderMonoidWithZeroHom.id.{u2} α _inst_1 _inst_5)) f
Case conversion may be inaccurate. Consider using '#align order_monoid_with_zero_hom.comp_id OrderMonoidWithZeroHom.comp_idₓ'. -/
@[simp]
theorem comp_id (f : α →*₀o β) : f.comp (OrderMonoidWithZeroHom.id α) = f :=
  ext fun a => rfl
#align order_monoid_with_zero_hom.comp_id OrderMonoidWithZeroHom.comp_id

/- warning: order_monoid_with_zero_hom.id_comp -> OrderMonoidWithZeroHom.id_comp is a dubious translation:
lean 3 declaration is
  forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : Preorder.{u1} α] [_inst_2 : Preorder.{u2} β] [_inst_5 : MulZeroOneClass.{u1} α] [_inst_6 : MulZeroOneClass.{u2} β] (f : OrderMonoidWithZeroHom.{u1, u2} α β _inst_1 _inst_2 _inst_5 _inst_6), Eq.{max (succ u1) (succ u2)} (OrderMonoidWithZeroHom.{u1, u2} α β _inst_1 _inst_2 _inst_5 _inst_6) (OrderMonoidWithZeroHom.comp.{u1, u2, u2} α β β _inst_1 _inst_2 _inst_2 _inst_5 _inst_6 _inst_6 (OrderMonoidWithZeroHom.id.{u2} β _inst_2 _inst_6) f) f
but is expected to have type
  forall {α : Type.{u2}} {β : Type.{u1}} [_inst_1 : Preorder.{u2} α] [_inst_2 : Preorder.{u1} β] [_inst_5 : MulZeroOneClass.{u2} α] [_inst_6 : MulZeroOneClass.{u1} β] (f : OrderMonoidWithZeroHom.{u2, u1} α β _inst_1 _inst_2 _inst_5 _inst_6), Eq.{max (succ u2) (succ u1)} (OrderMonoidWithZeroHom.{u2, u1} α β _inst_1 _inst_2 _inst_5 _inst_6) (OrderMonoidWithZeroHom.comp.{u2, u1, u1} α β β _inst_1 _inst_2 _inst_2 _inst_5 _inst_6 _inst_6 (OrderMonoidWithZeroHom.id.{u1} β _inst_2 _inst_6) f) f
Case conversion may be inaccurate. Consider using '#align order_monoid_with_zero_hom.id_comp OrderMonoidWithZeroHom.id_compₓ'. -/
@[simp]
theorem id_comp (f : α →*₀o β) : (OrderMonoidWithZeroHom.id β).comp f = f :=
  ext fun a => rfl
#align order_monoid_with_zero_hom.id_comp OrderMonoidWithZeroHom.id_comp

/- warning: order_monoid_with_zero_hom.cancel_right -> OrderMonoidWithZeroHom.cancel_right is a dubious translation:
lean 3 declaration is
  forall {α : Type.{u1}} {β : Type.{u2}} {γ : Type.{u3}} [_inst_1 : Preorder.{u1} α] [_inst_2 : Preorder.{u2} β] [_inst_3 : Preorder.{u3} γ] [_inst_5 : MulZeroOneClass.{u1} α] [_inst_6 : MulZeroOneClass.{u2} β] [_inst_7 : MulZeroOneClass.{u3} γ] {g₁ : OrderMonoidWithZeroHom.{u2, u3} β γ _inst_2 _inst_3 _inst_6 _inst_7} {g₂ : OrderMonoidWithZeroHom.{u2, u3} β γ _inst_2 _inst_3 _inst_6 _inst_7} {f : OrderMonoidWithZeroHom.{u1, u2} α β _inst_1 _inst_2 _inst_5 _inst_6}, (Function.Surjective.{succ u1, succ u2} α β (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (OrderMonoidWithZeroHom.{u1, u2} α β _inst_1 _inst_2 _inst_5 _inst_6) (fun (_x : OrderMonoidWithZeroHom.{u1, u2} α β _inst_1 _inst_2 _inst_5 _inst_6) => α -> β) (OrderMonoidWithZeroHom.hasCoeToFun.{u1, u2} α β _inst_1 _inst_2 _inst_5 _inst_6) f)) -> (Iff (Eq.{max (succ u1) (succ u3)} (OrderMonoidWithZeroHom.{u1, u3} α γ _inst_1 _inst_3 _inst_5 _inst_7) (OrderMonoidWithZeroHom.comp.{u1, u2, u3} α β γ _inst_1 _inst_2 _inst_3 _inst_5 _inst_6 _inst_7 g₁ f) (OrderMonoidWithZeroHom.comp.{u1, u2, u3} α β γ _inst_1 _inst_2 _inst_3 _inst_5 _inst_6 _inst_7 g₂ f)) (Eq.{max (succ u2) (succ u3)} (OrderMonoidWithZeroHom.{u2, u3} β γ _inst_2 _inst_3 _inst_6 _inst_7) g₁ g₂))
but is expected to have type
  forall {α : Type.{u1}} {β : Type.{u3}} {γ : Type.{u2}} [_inst_1 : Preorder.{u1} α] [_inst_2 : Preorder.{u3} β] [_inst_3 : Preorder.{u2} γ] [_inst_5 : MulZeroOneClass.{u1} α] [_inst_6 : MulZeroOneClass.{u3} β] [_inst_7 : MulZeroOneClass.{u2} γ] {g₁ : OrderMonoidWithZeroHom.{u3, u2} β γ _inst_2 _inst_3 _inst_6 _inst_7} {g₂ : OrderMonoidWithZeroHom.{u3, u2} β γ _inst_2 _inst_3 _inst_6 _inst_7} {f : OrderMonoidWithZeroHom.{u1, u3} α β _inst_1 _inst_2 _inst_5 _inst_6}, (Function.Surjective.{succ u1, succ u3} α β (FunLike.coe.{max (succ u1) (succ u3), succ u1, succ u3} (OrderMonoidWithZeroHom.{u1, u3} α β _inst_1 _inst_2 _inst_5 _inst_6) α (fun (_x : α) => (fun (x._@.Mathlib.Order.RelIso.Basic._hyg.867 : α) => β) _x) (RelHomClass.toFunLike.{max u1 u3, u1, u3} (OrderMonoidWithZeroHom.{u1, u3} α β _inst_1 _inst_2 _inst_5 _inst_6) α β (fun (x._@.Mathlib.Order.Hom.Basic._hyg.1896 : α) (x._@.Mathlib.Order.Hom.Basic._hyg.1898 : α) => LE.le.{u1} α (Preorder.toLE.{u1} α _inst_1) x._@.Mathlib.Order.Hom.Basic._hyg.1896 x._@.Mathlib.Order.Hom.Basic._hyg.1898) (fun (x._@.Mathlib.Order.Hom.Basic._hyg.1918 : β) (x._@.Mathlib.Order.Hom.Basic._hyg.1920 : β) => LE.le.{u3} β (Preorder.toLE.{u3} β _inst_2) x._@.Mathlib.Order.Hom.Basic._hyg.1918 x._@.Mathlib.Order.Hom.Basic._hyg.1920) (OrderMonoidHomClass.toOrderHomClass.{max u1 u3, u1, u3} (OrderMonoidWithZeroHom.{u1, u3} α β _inst_1 _inst_2 _inst_5 _inst_6) α β _inst_1 _inst_2 (MulZeroOneClass.toMulOneClass.{u1} α _inst_5) (MulZeroOneClass.toMulOneClass.{u3} β _inst_6) (OrderMonoidWithZeroHomClass.toOrderMonoidHomClass.{max u1 u3, u1, u3} (OrderMonoidWithZeroHom.{u1, u3} α β _inst_1 _inst_2 _inst_5 _inst_6) α β _inst_1 _inst_2 _inst_5 _inst_6 (OrderMonoidWithZeroHom.instOrderMonoidWithZeroHomClassOrderMonoidWithZeroHom.{u1, u3} α β _inst_1 _inst_2 _inst_5 _inst_6)))) f)) -> (Iff (Eq.{max (succ u1) (succ u2)} (OrderMonoidWithZeroHom.{u1, u2} α γ _inst_1 _inst_3 _inst_5 _inst_7) (OrderMonoidWithZeroHom.comp.{u1, u3, u2} α β γ _inst_1 _inst_2 _inst_3 _inst_5 _inst_6 _inst_7 g₁ f) (OrderMonoidWithZeroHom.comp.{u1, u3, u2} α β γ _inst_1 _inst_2 _inst_3 _inst_5 _inst_6 _inst_7 g₂ f)) (Eq.{max (succ u3) (succ u2)} (OrderMonoidWithZeroHom.{u3, u2} β γ _inst_2 _inst_3 _inst_6 _inst_7) g₁ g₂))
Case conversion may be inaccurate. Consider using '#align order_monoid_with_zero_hom.cancel_right OrderMonoidWithZeroHom.cancel_rightₓ'. -/
theorem cancel_right {g₁ g₂ : β →*₀o γ} {f : α →*₀o β} (hf : Function.Surjective f) :
    g₁.comp f = g₂.comp f ↔ g₁ = g₂ :=
  ⟨fun h => ext <| hf.forall.2 <| FunLike.ext_iff.1 h, congr_arg _⟩
#align order_monoid_with_zero_hom.cancel_right OrderMonoidWithZeroHom.cancel_right

/- warning: order_monoid_with_zero_hom.cancel_left -> OrderMonoidWithZeroHom.cancel_left is a dubious translation:
lean 3 declaration is
  forall {α : Type.{u1}} {β : Type.{u2}} {γ : Type.{u3}} [_inst_1 : Preorder.{u1} α] [_inst_2 : Preorder.{u2} β] [_inst_3 : Preorder.{u3} γ] [_inst_5 : MulZeroOneClass.{u1} α] [_inst_6 : MulZeroOneClass.{u2} β] [_inst_7 : MulZeroOneClass.{u3} γ] {g : OrderMonoidWithZeroHom.{u2, u3} β γ _inst_2 _inst_3 _inst_6 _inst_7} {f₁ : OrderMonoidWithZeroHom.{u1, u2} α β _inst_1 _inst_2 _inst_5 _inst_6} {f₂ : OrderMonoidWithZeroHom.{u1, u2} α β _inst_1 _inst_2 _inst_5 _inst_6}, (Function.Injective.{succ u2, succ u3} β γ (coeFn.{max (succ u2) (succ u3), max (succ u2) (succ u3)} (OrderMonoidWithZeroHom.{u2, u3} β γ _inst_2 _inst_3 _inst_6 _inst_7) (fun (_x : OrderMonoidWithZeroHom.{u2, u3} β γ _inst_2 _inst_3 _inst_6 _inst_7) => β -> γ) (OrderMonoidWithZeroHom.hasCoeToFun.{u2, u3} β γ _inst_2 _inst_3 _inst_6 _inst_7) g)) -> (Iff (Eq.{max (succ u1) (succ u3)} (OrderMonoidWithZeroHom.{u1, u3} α γ _inst_1 _inst_3 _inst_5 _inst_7) (OrderMonoidWithZeroHom.comp.{u1, u2, u3} α β γ _inst_1 _inst_2 _inst_3 _inst_5 _inst_6 _inst_7 g f₁) (OrderMonoidWithZeroHom.comp.{u1, u2, u3} α β γ _inst_1 _inst_2 _inst_3 _inst_5 _inst_6 _inst_7 g f₂)) (Eq.{max (succ u1) (succ u2)} (OrderMonoidWithZeroHom.{u1, u2} α β _inst_1 _inst_2 _inst_5 _inst_6) f₁ f₂))
but is expected to have type
  forall {α : Type.{u1}} {β : Type.{u3}} {γ : Type.{u2}} [_inst_1 : Preorder.{u1} α] [_inst_2 : Preorder.{u3} β] [_inst_3 : Preorder.{u2} γ] [_inst_5 : MulZeroOneClass.{u1} α] [_inst_6 : MulZeroOneClass.{u3} β] [_inst_7 : MulZeroOneClass.{u2} γ] {g : OrderMonoidWithZeroHom.{u3, u2} β γ _inst_2 _inst_3 _inst_6 _inst_7} {f₁ : OrderMonoidWithZeroHom.{u1, u3} α β _inst_1 _inst_2 _inst_5 _inst_6} {f₂ : OrderMonoidWithZeroHom.{u1, u3} α β _inst_1 _inst_2 _inst_5 _inst_6}, (Function.Injective.{succ u3, succ u2} β γ (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (OrderMonoidWithZeroHom.{u3, u2} β γ _inst_2 _inst_3 _inst_6 _inst_7) β (fun (_x : β) => (fun (x._@.Mathlib.Order.RelIso.Basic._hyg.867 : β) => γ) _x) (RelHomClass.toFunLike.{max u3 u2, u3, u2} (OrderMonoidWithZeroHom.{u3, u2} β γ _inst_2 _inst_3 _inst_6 _inst_7) β γ (fun (x._@.Mathlib.Order.Hom.Basic._hyg.1896 : β) (x._@.Mathlib.Order.Hom.Basic._hyg.1898 : β) => LE.le.{u3} β (Preorder.toLE.{u3} β _inst_2) x._@.Mathlib.Order.Hom.Basic._hyg.1896 x._@.Mathlib.Order.Hom.Basic._hyg.1898) (fun (x._@.Mathlib.Order.Hom.Basic._hyg.1918 : γ) (x._@.Mathlib.Order.Hom.Basic._hyg.1920 : γ) => LE.le.{u2} γ (Preorder.toLE.{u2} γ _inst_3) x._@.Mathlib.Order.Hom.Basic._hyg.1918 x._@.Mathlib.Order.Hom.Basic._hyg.1920) (OrderMonoidHomClass.toOrderHomClass.{max u3 u2, u3, u2} (OrderMonoidWithZeroHom.{u3, u2} β γ _inst_2 _inst_3 _inst_6 _inst_7) β γ _inst_2 _inst_3 (MulZeroOneClass.toMulOneClass.{u3} β _inst_6) (MulZeroOneClass.toMulOneClass.{u2} γ _inst_7) (OrderMonoidWithZeroHomClass.toOrderMonoidHomClass.{max u3 u2, u3, u2} (OrderMonoidWithZeroHom.{u3, u2} β γ _inst_2 _inst_3 _inst_6 _inst_7) β γ _inst_2 _inst_3 _inst_6 _inst_7 (OrderMonoidWithZeroHom.instOrderMonoidWithZeroHomClassOrderMonoidWithZeroHom.{u3, u2} β γ _inst_2 _inst_3 _inst_6 _inst_7)))) g)) -> (Iff (Eq.{max (succ u1) (succ u2)} (OrderMonoidWithZeroHom.{u1, u2} α γ _inst_1 _inst_3 _inst_5 _inst_7) (OrderMonoidWithZeroHom.comp.{u1, u3, u2} α β γ _inst_1 _inst_2 _inst_3 _inst_5 _inst_6 _inst_7 g f₁) (OrderMonoidWithZeroHom.comp.{u1, u3, u2} α β γ _inst_1 _inst_2 _inst_3 _inst_5 _inst_6 _inst_7 g f₂)) (Eq.{max (succ u1) (succ u3)} (OrderMonoidWithZeroHom.{u1, u3} α β _inst_1 _inst_2 _inst_5 _inst_6) f₁ f₂))
Case conversion may be inaccurate. Consider using '#align order_monoid_with_zero_hom.cancel_left OrderMonoidWithZeroHom.cancel_leftₓ'. -/
theorem cancel_left {g : β →*₀o γ} {f₁ f₂ : α →*₀o β} (hg : Function.Injective g) :
    g.comp f₁ = g.comp f₂ ↔ f₁ = f₂ :=
  ⟨fun h => ext fun a => hg <| by rw [← comp_apply, h, comp_apply], congr_arg _⟩
#align order_monoid_with_zero_hom.cancel_left OrderMonoidWithZeroHom.cancel_left

end Preorder

section Mul

variable [LinearOrderedCommMonoidWithZero α] [LinearOrderedCommMonoidWithZero β]
  [LinearOrderedCommMonoidWithZero γ]

/-- For two ordered monoid morphisms `f` and `g`, their product is the ordered monoid morphism
sending `a` to `f a * g a`. -/
instance : Mul (α →*₀o β) :=
  ⟨fun f g => { (f * g : α →*₀ β) with monotone' := f.monotone'.mul' g.monotone' }⟩

/- warning: order_monoid_with_zero_hom.coe_mul -> OrderMonoidWithZeroHom.coe_mul is a dubious translation:
lean 3 declaration is
  forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : LinearOrderedCommMonoidWithZero.{u1} α] [_inst_2 : LinearOrderedCommMonoidWithZero.{u2} β] (f : OrderMonoidWithZeroHom.{u1, u2} α β (PartialOrder.toPreorder.{u1} α (OrderedCommMonoid.toPartialOrder.{u1} α (LinearOrderedCommMonoid.toOrderedCommMonoid.{u1} α (LinearOrderedCommMonoidWithZero.toLinearOrderedCommMonoid.{u1} α _inst_1)))) (PartialOrder.toPreorder.{u2} β (OrderedCommMonoid.toPartialOrder.{u2} β (LinearOrderedCommMonoid.toOrderedCommMonoid.{u2} β (LinearOrderedCommMonoidWithZero.toLinearOrderedCommMonoid.{u2} β _inst_2)))) (MonoidWithZero.toMulZeroOneClass.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (LinearOrderedCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) (MonoidWithZero.toMulZeroOneClass.{u2} β (CommMonoidWithZero.toMonoidWithZero.{u2} β (LinearOrderedCommMonoidWithZero.toCommMonoidWithZero.{u2} β _inst_2)))) (g : OrderMonoidWithZeroHom.{u1, u2} α β (PartialOrder.toPreorder.{u1} α (OrderedCommMonoid.toPartialOrder.{u1} α (LinearOrderedCommMonoid.toOrderedCommMonoid.{u1} α (LinearOrderedCommMonoidWithZero.toLinearOrderedCommMonoid.{u1} α _inst_1)))) (PartialOrder.toPreorder.{u2} β (OrderedCommMonoid.toPartialOrder.{u2} β (LinearOrderedCommMonoid.toOrderedCommMonoid.{u2} β (LinearOrderedCommMonoidWithZero.toLinearOrderedCommMonoid.{u2} β _inst_2)))) (MonoidWithZero.toMulZeroOneClass.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (LinearOrderedCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) (MonoidWithZero.toMulZeroOneClass.{u2} β (CommMonoidWithZero.toMonoidWithZero.{u2} β (LinearOrderedCommMonoidWithZero.toCommMonoidWithZero.{u2} β _inst_2)))), Eq.{succ (max u1 u2)} (α -> β) (coeFn.{succ (max u1 u2), succ (max u1 u2)} (OrderMonoidWithZeroHom.{u1, u2} α β (PartialOrder.toPreorder.{u1} α (OrderedCommMonoid.toPartialOrder.{u1} α (LinearOrderedCommMonoid.toOrderedCommMonoid.{u1} α (LinearOrderedCommMonoidWithZero.toLinearOrderedCommMonoid.{u1} α _inst_1)))) (PartialOrder.toPreorder.{u2} β (OrderedCommMonoid.toPartialOrder.{u2} β (LinearOrderedCommMonoid.toOrderedCommMonoid.{u2} β (LinearOrderedCommMonoidWithZero.toLinearOrderedCommMonoid.{u2} β _inst_2)))) (MonoidWithZero.toMulZeroOneClass.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (LinearOrderedCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) (MonoidWithZero.toMulZeroOneClass.{u2} β (CommMonoidWithZero.toMonoidWithZero.{u2} β (LinearOrderedCommMonoidWithZero.toCommMonoidWithZero.{u2} β _inst_2)))) (fun (_x : OrderMonoidWithZeroHom.{u1, u2} α β (PartialOrder.toPreorder.{u1} α (OrderedCommMonoid.toPartialOrder.{u1} α (LinearOrderedCommMonoid.toOrderedCommMonoid.{u1} α (LinearOrderedCommMonoidWithZero.toLinearOrderedCommMonoid.{u1} α _inst_1)))) (PartialOrder.toPreorder.{u2} β (OrderedCommMonoid.toPartialOrder.{u2} β (LinearOrderedCommMonoid.toOrderedCommMonoid.{u2} β (LinearOrderedCommMonoidWithZero.toLinearOrderedCommMonoid.{u2} β _inst_2)))) (MonoidWithZero.toMulZeroOneClass.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (LinearOrderedCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) (MonoidWithZero.toMulZeroOneClass.{u2} β (CommMonoidWithZero.toMonoidWithZero.{u2} β (LinearOrderedCommMonoidWithZero.toCommMonoidWithZero.{u2} β _inst_2)))) => α -> β) (OrderMonoidWithZeroHom.hasCoeToFun.{u1, u2} α β (PartialOrder.toPreorder.{u1} α (OrderedCommMonoid.toPartialOrder.{u1} α (LinearOrderedCommMonoid.toOrderedCommMonoid.{u1} α (LinearOrderedCommMonoidWithZero.toLinearOrderedCommMonoid.{u1} α _inst_1)))) (PartialOrder.toPreorder.{u2} β (OrderedCommMonoid.toPartialOrder.{u2} β (LinearOrderedCommMonoid.toOrderedCommMonoid.{u2} β (LinearOrderedCommMonoidWithZero.toLinearOrderedCommMonoid.{u2} β _inst_2)))) (MonoidWithZero.toMulZeroOneClass.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (LinearOrderedCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) (MonoidWithZero.toMulZeroOneClass.{u2} β (CommMonoidWithZero.toMonoidWithZero.{u2} β (LinearOrderedCommMonoidWithZero.toCommMonoidWithZero.{u2} β _inst_2)))) (HMul.hMul.{max u1 u2, max u1 u2, max u1 u2} (OrderMonoidWithZeroHom.{u1, u2} α β (PartialOrder.toPreorder.{u1} α (OrderedCommMonoid.toPartialOrder.{u1} α (LinearOrderedCommMonoid.toOrderedCommMonoid.{u1} α (LinearOrderedCommMonoidWithZero.toLinearOrderedCommMonoid.{u1} α _inst_1)))) (PartialOrder.toPreorder.{u2} β (OrderedCommMonoid.toPartialOrder.{u2} β (LinearOrderedCommMonoid.toOrderedCommMonoid.{u2} β (LinearOrderedCommMonoidWithZero.toLinearOrderedCommMonoid.{u2} β _inst_2)))) (MonoidWithZero.toMulZeroOneClass.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (LinearOrderedCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) (MonoidWithZero.toMulZeroOneClass.{u2} β (CommMonoidWithZero.toMonoidWithZero.{u2} β (LinearOrderedCommMonoidWithZero.toCommMonoidWithZero.{u2} β _inst_2)))) (OrderMonoidWithZeroHom.{u1, u2} α β (PartialOrder.toPreorder.{u1} α (OrderedCommMonoid.toPartialOrder.{u1} α (LinearOrderedCommMonoid.toOrderedCommMonoid.{u1} α (LinearOrderedCommMonoidWithZero.toLinearOrderedCommMonoid.{u1} α _inst_1)))) (PartialOrder.toPreorder.{u2} β (OrderedCommMonoid.toPartialOrder.{u2} β (LinearOrderedCommMonoid.toOrderedCommMonoid.{u2} β (LinearOrderedCommMonoidWithZero.toLinearOrderedCommMonoid.{u2} β _inst_2)))) (MonoidWithZero.toMulZeroOneClass.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (LinearOrderedCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) (MonoidWithZero.toMulZeroOneClass.{u2} β (CommMonoidWithZero.toMonoidWithZero.{u2} β (LinearOrderedCommMonoidWithZero.toCommMonoidWithZero.{u2} β _inst_2)))) (OrderMonoidWithZeroHom.{u1, u2} α β (PartialOrder.toPreorder.{u1} α (OrderedCommMonoid.toPartialOrder.{u1} α (LinearOrderedCommMonoid.toOrderedCommMonoid.{u1} α (LinearOrderedCommMonoidWithZero.toLinearOrderedCommMonoid.{u1} α _inst_1)))) (PartialOrder.toPreorder.{u2} β (OrderedCommMonoid.toPartialOrder.{u2} β (LinearOrderedCommMonoid.toOrderedCommMonoid.{u2} β (LinearOrderedCommMonoidWithZero.toLinearOrderedCommMonoid.{u2} β _inst_2)))) (MonoidWithZero.toMulZeroOneClass.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (LinearOrderedCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) (MonoidWithZero.toMulZeroOneClass.{u2} β (CommMonoidWithZero.toMonoidWithZero.{u2} β (LinearOrderedCommMonoidWithZero.toCommMonoidWithZero.{u2} β _inst_2)))) (instHMul.{max u1 u2} (OrderMonoidWithZeroHom.{u1, u2} α β (PartialOrder.toPreorder.{u1} α (OrderedCommMonoid.toPartialOrder.{u1} α (LinearOrderedCommMonoid.toOrderedCommMonoid.{u1} α (LinearOrderedCommMonoidWithZero.toLinearOrderedCommMonoid.{u1} α _inst_1)))) (PartialOrder.toPreorder.{u2} β (OrderedCommMonoid.toPartialOrder.{u2} β (LinearOrderedCommMonoid.toOrderedCommMonoid.{u2} β (LinearOrderedCommMonoidWithZero.toLinearOrderedCommMonoid.{u2} β _inst_2)))) (MonoidWithZero.toMulZeroOneClass.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (LinearOrderedCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) (MonoidWithZero.toMulZeroOneClass.{u2} β (CommMonoidWithZero.toMonoidWithZero.{u2} β (LinearOrderedCommMonoidWithZero.toCommMonoidWithZero.{u2} β _inst_2)))) (OrderMonoidWithZeroHom.hasMul.{u1, u2} α β _inst_1 _inst_2)) f g)) (HMul.hMul.{max u1 u2, max u1 u2, max u1 u2} (α -> β) (α -> β) (α -> β) (instHMul.{max u1 u2} (α -> β) (Pi.instMul.{u1, u2} α (fun (ᾰ : α) => β) (fun (i : α) => MulZeroClass.toHasMul.{u2} β (MulZeroOneClass.toMulZeroClass.{u2} β (MonoidWithZero.toMulZeroOneClass.{u2} β (CommMonoidWithZero.toMonoidWithZero.{u2} β (LinearOrderedCommMonoidWithZero.toCommMonoidWithZero.{u2} β _inst_2))))))) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (OrderMonoidWithZeroHom.{u1, u2} α β (PartialOrder.toPreorder.{u1} α (OrderedCommMonoid.toPartialOrder.{u1} α (LinearOrderedCommMonoid.toOrderedCommMonoid.{u1} α (LinearOrderedCommMonoidWithZero.toLinearOrderedCommMonoid.{u1} α _inst_1)))) (PartialOrder.toPreorder.{u2} β (OrderedCommMonoid.toPartialOrder.{u2} β (LinearOrderedCommMonoid.toOrderedCommMonoid.{u2} β (LinearOrderedCommMonoidWithZero.toLinearOrderedCommMonoid.{u2} β _inst_2)))) (MonoidWithZero.toMulZeroOneClass.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (LinearOrderedCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) (MonoidWithZero.toMulZeroOneClass.{u2} β (CommMonoidWithZero.toMonoidWithZero.{u2} β (LinearOrderedCommMonoidWithZero.toCommMonoidWithZero.{u2} β _inst_2)))) (fun (_x : OrderMonoidWithZeroHom.{u1, u2} α β (PartialOrder.toPreorder.{u1} α (OrderedCommMonoid.toPartialOrder.{u1} α (LinearOrderedCommMonoid.toOrderedCommMonoid.{u1} α (LinearOrderedCommMonoidWithZero.toLinearOrderedCommMonoid.{u1} α _inst_1)))) (PartialOrder.toPreorder.{u2} β (OrderedCommMonoid.toPartialOrder.{u2} β (LinearOrderedCommMonoid.toOrderedCommMonoid.{u2} β (LinearOrderedCommMonoidWithZero.toLinearOrderedCommMonoid.{u2} β _inst_2)))) (MonoidWithZero.toMulZeroOneClass.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (LinearOrderedCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) (MonoidWithZero.toMulZeroOneClass.{u2} β (CommMonoidWithZero.toMonoidWithZero.{u2} β (LinearOrderedCommMonoidWithZero.toCommMonoidWithZero.{u2} β _inst_2)))) => α -> β) (OrderMonoidWithZeroHom.hasCoeToFun.{u1, u2} α β (PartialOrder.toPreorder.{u1} α (OrderedCommMonoid.toPartialOrder.{u1} α (LinearOrderedCommMonoid.toOrderedCommMonoid.{u1} α (LinearOrderedCommMonoidWithZero.toLinearOrderedCommMonoid.{u1} α _inst_1)))) (PartialOrder.toPreorder.{u2} β (OrderedCommMonoid.toPartialOrder.{u2} β (LinearOrderedCommMonoid.toOrderedCommMonoid.{u2} β (LinearOrderedCommMonoidWithZero.toLinearOrderedCommMonoid.{u2} β _inst_2)))) (MonoidWithZero.toMulZeroOneClass.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (LinearOrderedCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) (MonoidWithZero.toMulZeroOneClass.{u2} β (CommMonoidWithZero.toMonoidWithZero.{u2} β (LinearOrderedCommMonoidWithZero.toCommMonoidWithZero.{u2} β _inst_2)))) f) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (OrderMonoidWithZeroHom.{u1, u2} α β (PartialOrder.toPreorder.{u1} α (OrderedCommMonoid.toPartialOrder.{u1} α (LinearOrderedCommMonoid.toOrderedCommMonoid.{u1} α (LinearOrderedCommMonoidWithZero.toLinearOrderedCommMonoid.{u1} α _inst_1)))) (PartialOrder.toPreorder.{u2} β (OrderedCommMonoid.toPartialOrder.{u2} β (LinearOrderedCommMonoid.toOrderedCommMonoid.{u2} β (LinearOrderedCommMonoidWithZero.toLinearOrderedCommMonoid.{u2} β _inst_2)))) (MonoidWithZero.toMulZeroOneClass.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (LinearOrderedCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) (MonoidWithZero.toMulZeroOneClass.{u2} β (CommMonoidWithZero.toMonoidWithZero.{u2} β (LinearOrderedCommMonoidWithZero.toCommMonoidWithZero.{u2} β _inst_2)))) (fun (_x : OrderMonoidWithZeroHom.{u1, u2} α β (PartialOrder.toPreorder.{u1} α (OrderedCommMonoid.toPartialOrder.{u1} α (LinearOrderedCommMonoid.toOrderedCommMonoid.{u1} α (LinearOrderedCommMonoidWithZero.toLinearOrderedCommMonoid.{u1} α _inst_1)))) (PartialOrder.toPreorder.{u2} β (OrderedCommMonoid.toPartialOrder.{u2} β (LinearOrderedCommMonoid.toOrderedCommMonoid.{u2} β (LinearOrderedCommMonoidWithZero.toLinearOrderedCommMonoid.{u2} β _inst_2)))) (MonoidWithZero.toMulZeroOneClass.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (LinearOrderedCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) (MonoidWithZero.toMulZeroOneClass.{u2} β (CommMonoidWithZero.toMonoidWithZero.{u2} β (LinearOrderedCommMonoidWithZero.toCommMonoidWithZero.{u2} β _inst_2)))) => α -> β) (OrderMonoidWithZeroHom.hasCoeToFun.{u1, u2} α β (PartialOrder.toPreorder.{u1} α (OrderedCommMonoid.toPartialOrder.{u1} α (LinearOrderedCommMonoid.toOrderedCommMonoid.{u1} α (LinearOrderedCommMonoidWithZero.toLinearOrderedCommMonoid.{u1} α _inst_1)))) (PartialOrder.toPreorder.{u2} β (OrderedCommMonoid.toPartialOrder.{u2} β (LinearOrderedCommMonoid.toOrderedCommMonoid.{u2} β (LinearOrderedCommMonoidWithZero.toLinearOrderedCommMonoid.{u2} β _inst_2)))) (MonoidWithZero.toMulZeroOneClass.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (LinearOrderedCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) (MonoidWithZero.toMulZeroOneClass.{u2} β (CommMonoidWithZero.toMonoidWithZero.{u2} β (LinearOrderedCommMonoidWithZero.toCommMonoidWithZero.{u2} β _inst_2)))) g))
but is expected to have type
  forall {α : Type.{u2}} {β : Type.{u1}} [_inst_1 : LinearOrderedCommMonoidWithZero.{u2} α] [_inst_2 : LinearOrderedCommMonoidWithZero.{u1} β] (f : OrderMonoidWithZeroHom.{u2, u1} α β (PartialOrder.toPreorder.{u2} α (OrderedCommMonoid.toPartialOrder.{u2} α (LinearOrderedCommMonoid.toOrderedCommMonoid.{u2} α (LinearOrderedCommMonoidWithZero.toLinearOrderedCommMonoid.{u2} α _inst_1)))) (PartialOrder.toPreorder.{u1} β (OrderedCommMonoid.toPartialOrder.{u1} β (LinearOrderedCommMonoid.toOrderedCommMonoid.{u1} β (LinearOrderedCommMonoidWithZero.toLinearOrderedCommMonoid.{u1} β _inst_2)))) (MonoidWithZero.toMulZeroOneClass.{u2} α (CommMonoidWithZero.toMonoidWithZero.{u2} α (LinearOrderedCommMonoidWithZero.toCommMonoidWithZero.{u2} α _inst_1))) (MonoidWithZero.toMulZeroOneClass.{u1} β (CommMonoidWithZero.toMonoidWithZero.{u1} β (LinearOrderedCommMonoidWithZero.toCommMonoidWithZero.{u1} β _inst_2)))) (g : OrderMonoidWithZeroHom.{u2, u1} α β (PartialOrder.toPreorder.{u2} α (OrderedCommMonoid.toPartialOrder.{u2} α (LinearOrderedCommMonoid.toOrderedCommMonoid.{u2} α (LinearOrderedCommMonoidWithZero.toLinearOrderedCommMonoid.{u2} α _inst_1)))) (PartialOrder.toPreorder.{u1} β (OrderedCommMonoid.toPartialOrder.{u1} β (LinearOrderedCommMonoid.toOrderedCommMonoid.{u1} β (LinearOrderedCommMonoidWithZero.toLinearOrderedCommMonoid.{u1} β _inst_2)))) (MonoidWithZero.toMulZeroOneClass.{u2} α (CommMonoidWithZero.toMonoidWithZero.{u2} α (LinearOrderedCommMonoidWithZero.toCommMonoidWithZero.{u2} α _inst_1))) (MonoidWithZero.toMulZeroOneClass.{u1} β (CommMonoidWithZero.toMonoidWithZero.{u1} β (LinearOrderedCommMonoidWithZero.toCommMonoidWithZero.{u1} β _inst_2)))), Eq.{max (succ u2) (succ u1)} (forall (ᾰ : α), (fun (x._@.Mathlib.Order.RelIso.Basic._hyg.867 : α) => β) ᾰ) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (OrderMonoidWithZeroHom.{u2, u1} α β (PartialOrder.toPreorder.{u2} α (OrderedCommMonoid.toPartialOrder.{u2} α (LinearOrderedCommMonoid.toOrderedCommMonoid.{u2} α (LinearOrderedCommMonoidWithZero.toLinearOrderedCommMonoid.{u2} α _inst_1)))) (PartialOrder.toPreorder.{u1} β (OrderedCommMonoid.toPartialOrder.{u1} β (LinearOrderedCommMonoid.toOrderedCommMonoid.{u1} β (LinearOrderedCommMonoidWithZero.toLinearOrderedCommMonoid.{u1} β _inst_2)))) (MonoidWithZero.toMulZeroOneClass.{u2} α (CommMonoidWithZero.toMonoidWithZero.{u2} α (LinearOrderedCommMonoidWithZero.toCommMonoidWithZero.{u2} α _inst_1))) (MonoidWithZero.toMulZeroOneClass.{u1} β (CommMonoidWithZero.toMonoidWithZero.{u1} β (LinearOrderedCommMonoidWithZero.toCommMonoidWithZero.{u1} β _inst_2)))) α (fun (_x : α) => (fun (x._@.Mathlib.Order.RelIso.Basic._hyg.867 : α) => β) _x) (RelHomClass.toFunLike.{max u2 u1, u2, u1} (OrderMonoidWithZeroHom.{u2, u1} α β (PartialOrder.toPreorder.{u2} α (OrderedCommMonoid.toPartialOrder.{u2} α (LinearOrderedCommMonoid.toOrderedCommMonoid.{u2} α (LinearOrderedCommMonoidWithZero.toLinearOrderedCommMonoid.{u2} α _inst_1)))) (PartialOrder.toPreorder.{u1} β (OrderedCommMonoid.toPartialOrder.{u1} β (LinearOrderedCommMonoid.toOrderedCommMonoid.{u1} β (LinearOrderedCommMonoidWithZero.toLinearOrderedCommMonoid.{u1} β _inst_2)))) (MonoidWithZero.toMulZeroOneClass.{u2} α (CommMonoidWithZero.toMonoidWithZero.{u2} α (LinearOrderedCommMonoidWithZero.toCommMonoidWithZero.{u2} α _inst_1))) (MonoidWithZero.toMulZeroOneClass.{u1} β (CommMonoidWithZero.toMonoidWithZero.{u1} β (LinearOrderedCommMonoidWithZero.toCommMonoidWithZero.{u1} β _inst_2)))) α β (fun (x._@.Mathlib.Order.Hom.Basic._hyg.1896 : α) (x._@.Mathlib.Order.Hom.Basic._hyg.1898 : α) => LE.le.{u2} α (Preorder.toLE.{u2} α (PartialOrder.toPreorder.{u2} α (OrderedCommMonoid.toPartialOrder.{u2} α (LinearOrderedCommMonoid.toOrderedCommMonoid.{u2} α (LinearOrderedCommMonoidWithZero.toLinearOrderedCommMonoid.{u2} α _inst_1))))) x._@.Mathlib.Order.Hom.Basic._hyg.1896 x._@.Mathlib.Order.Hom.Basic._hyg.1898) (fun (x._@.Mathlib.Order.Hom.Basic._hyg.1918 : β) (x._@.Mathlib.Order.Hom.Basic._hyg.1920 : β) => LE.le.{u1} β (Preorder.toLE.{u1} β (PartialOrder.toPreorder.{u1} β (OrderedCommMonoid.toPartialOrder.{u1} β (LinearOrderedCommMonoid.toOrderedCommMonoid.{u1} β (LinearOrderedCommMonoidWithZero.toLinearOrderedCommMonoid.{u1} β _inst_2))))) x._@.Mathlib.Order.Hom.Basic._hyg.1918 x._@.Mathlib.Order.Hom.Basic._hyg.1920) (OrderMonoidHomClass.toOrderHomClass.{max u2 u1, u2, u1} (OrderMonoidWithZeroHom.{u2, u1} α β (PartialOrder.toPreorder.{u2} α (OrderedCommMonoid.toPartialOrder.{u2} α (LinearOrderedCommMonoid.toOrderedCommMonoid.{u2} α (LinearOrderedCommMonoidWithZero.toLinearOrderedCommMonoid.{u2} α _inst_1)))) (PartialOrder.toPreorder.{u1} β (OrderedCommMonoid.toPartialOrder.{u1} β (LinearOrderedCommMonoid.toOrderedCommMonoid.{u1} β (LinearOrderedCommMonoidWithZero.toLinearOrderedCommMonoid.{u1} β _inst_2)))) (MonoidWithZero.toMulZeroOneClass.{u2} α (CommMonoidWithZero.toMonoidWithZero.{u2} α (LinearOrderedCommMonoidWithZero.toCommMonoidWithZero.{u2} α _inst_1))) (MonoidWithZero.toMulZeroOneClass.{u1} β (CommMonoidWithZero.toMonoidWithZero.{u1} β (LinearOrderedCommMonoidWithZero.toCommMonoidWithZero.{u1} β _inst_2)))) α β (PartialOrder.toPreorder.{u2} α (OrderedCommMonoid.toPartialOrder.{u2} α (LinearOrderedCommMonoid.toOrderedCommMonoid.{u2} α (LinearOrderedCommMonoidWithZero.toLinearOrderedCommMonoid.{u2} α _inst_1)))) (PartialOrder.toPreorder.{u1} β (OrderedCommMonoid.toPartialOrder.{u1} β (LinearOrderedCommMonoid.toOrderedCommMonoid.{u1} β (LinearOrderedCommMonoidWithZero.toLinearOrderedCommMonoid.{u1} β _inst_2)))) (MulZeroOneClass.toMulOneClass.{u2} α (MonoidWithZero.toMulZeroOneClass.{u2} α (CommMonoidWithZero.toMonoidWithZero.{u2} α (LinearOrderedCommMonoidWithZero.toCommMonoidWithZero.{u2} α _inst_1)))) (MulZeroOneClass.toMulOneClass.{u1} β (MonoidWithZero.toMulZeroOneClass.{u1} β (CommMonoidWithZero.toMonoidWithZero.{u1} β (LinearOrderedCommMonoidWithZero.toCommMonoidWithZero.{u1} β _inst_2)))) (OrderMonoidWithZeroHomClass.toOrderMonoidHomClass.{max u2 u1, u2, u1} (OrderMonoidWithZeroHom.{u2, u1} α β (PartialOrder.toPreorder.{u2} α (OrderedCommMonoid.toPartialOrder.{u2} α (LinearOrderedCommMonoid.toOrderedCommMonoid.{u2} α (LinearOrderedCommMonoidWithZero.toLinearOrderedCommMonoid.{u2} α _inst_1)))) (PartialOrder.toPreorder.{u1} β (OrderedCommMonoid.toPartialOrder.{u1} β (LinearOrderedCommMonoid.toOrderedCommMonoid.{u1} β (LinearOrderedCommMonoidWithZero.toLinearOrderedCommMonoid.{u1} β _inst_2)))) (MonoidWithZero.toMulZeroOneClass.{u2} α (CommMonoidWithZero.toMonoidWithZero.{u2} α (LinearOrderedCommMonoidWithZero.toCommMonoidWithZero.{u2} α _inst_1))) (MonoidWithZero.toMulZeroOneClass.{u1} β (CommMonoidWithZero.toMonoidWithZero.{u1} β (LinearOrderedCommMonoidWithZero.toCommMonoidWithZero.{u1} β _inst_2)))) α β (PartialOrder.toPreorder.{u2} α (OrderedCommMonoid.toPartialOrder.{u2} α (LinearOrderedCommMonoid.toOrderedCommMonoid.{u2} α (LinearOrderedCommMonoidWithZero.toLinearOrderedCommMonoid.{u2} α _inst_1)))) (PartialOrder.toPreorder.{u1} β (OrderedCommMonoid.toPartialOrder.{u1} β (LinearOrderedCommMonoid.toOrderedCommMonoid.{u1} β (LinearOrderedCommMonoidWithZero.toLinearOrderedCommMonoid.{u1} β _inst_2)))) (MonoidWithZero.toMulZeroOneClass.{u2} α (CommMonoidWithZero.toMonoidWithZero.{u2} α (LinearOrderedCommMonoidWithZero.toCommMonoidWithZero.{u2} α _inst_1))) (MonoidWithZero.toMulZeroOneClass.{u1} β (CommMonoidWithZero.toMonoidWithZero.{u1} β (LinearOrderedCommMonoidWithZero.toCommMonoidWithZero.{u1} β _inst_2))) (OrderMonoidWithZeroHom.instOrderMonoidWithZeroHomClassOrderMonoidWithZeroHom.{u2, u1} α β (PartialOrder.toPreorder.{u2} α (OrderedCommMonoid.toPartialOrder.{u2} α (LinearOrderedCommMonoid.toOrderedCommMonoid.{u2} α (LinearOrderedCommMonoidWithZero.toLinearOrderedCommMonoid.{u2} α _inst_1)))) (PartialOrder.toPreorder.{u1} β (OrderedCommMonoid.toPartialOrder.{u1} β (LinearOrderedCommMonoid.toOrderedCommMonoid.{u1} β (LinearOrderedCommMonoidWithZero.toLinearOrderedCommMonoid.{u1} β _inst_2)))) (MonoidWithZero.toMulZeroOneClass.{u2} α (CommMonoidWithZero.toMonoidWithZero.{u2} α (LinearOrderedCommMonoidWithZero.toCommMonoidWithZero.{u2} α _inst_1))) (MonoidWithZero.toMulZeroOneClass.{u1} β (CommMonoidWithZero.toMonoidWithZero.{u1} β (LinearOrderedCommMonoidWithZero.toCommMonoidWithZero.{u1} β _inst_2))))))) (HMul.hMul.{max u2 u1, max u2 u1, max u2 u1} (OrderMonoidWithZeroHom.{u2, u1} α β (PartialOrder.toPreorder.{u2} α (OrderedCommMonoid.toPartialOrder.{u2} α (LinearOrderedCommMonoid.toOrderedCommMonoid.{u2} α (LinearOrderedCommMonoidWithZero.toLinearOrderedCommMonoid.{u2} α _inst_1)))) (PartialOrder.toPreorder.{u1} β (OrderedCommMonoid.toPartialOrder.{u1} β (LinearOrderedCommMonoid.toOrderedCommMonoid.{u1} β (LinearOrderedCommMonoidWithZero.toLinearOrderedCommMonoid.{u1} β _inst_2)))) (MonoidWithZero.toMulZeroOneClass.{u2} α (CommMonoidWithZero.toMonoidWithZero.{u2} α (LinearOrderedCommMonoidWithZero.toCommMonoidWithZero.{u2} α _inst_1))) (MonoidWithZero.toMulZeroOneClass.{u1} β (CommMonoidWithZero.toMonoidWithZero.{u1} β (LinearOrderedCommMonoidWithZero.toCommMonoidWithZero.{u1} β _inst_2)))) (OrderMonoidWithZeroHom.{u2, u1} α β (PartialOrder.toPreorder.{u2} α (OrderedCommMonoid.toPartialOrder.{u2} α (LinearOrderedCommMonoid.toOrderedCommMonoid.{u2} α (LinearOrderedCommMonoidWithZero.toLinearOrderedCommMonoid.{u2} α _inst_1)))) (PartialOrder.toPreorder.{u1} β (OrderedCommMonoid.toPartialOrder.{u1} β (LinearOrderedCommMonoid.toOrderedCommMonoid.{u1} β (LinearOrderedCommMonoidWithZero.toLinearOrderedCommMonoid.{u1} β _inst_2)))) (MonoidWithZero.toMulZeroOneClass.{u2} α (CommMonoidWithZero.toMonoidWithZero.{u2} α (LinearOrderedCommMonoidWithZero.toCommMonoidWithZero.{u2} α _inst_1))) (MonoidWithZero.toMulZeroOneClass.{u1} β (CommMonoidWithZero.toMonoidWithZero.{u1} β (LinearOrderedCommMonoidWithZero.toCommMonoidWithZero.{u1} β _inst_2)))) (OrderMonoidWithZeroHom.{u2, u1} α β (PartialOrder.toPreorder.{u2} α (OrderedCommMonoid.toPartialOrder.{u2} α (LinearOrderedCommMonoid.toOrderedCommMonoid.{u2} α (LinearOrderedCommMonoidWithZero.toLinearOrderedCommMonoid.{u2} α _inst_1)))) (PartialOrder.toPreorder.{u1} β (OrderedCommMonoid.toPartialOrder.{u1} β (LinearOrderedCommMonoid.toOrderedCommMonoid.{u1} β (LinearOrderedCommMonoidWithZero.toLinearOrderedCommMonoid.{u1} β _inst_2)))) (MonoidWithZero.toMulZeroOneClass.{u2} α (CommMonoidWithZero.toMonoidWithZero.{u2} α (LinearOrderedCommMonoidWithZero.toCommMonoidWithZero.{u2} α _inst_1))) (MonoidWithZero.toMulZeroOneClass.{u1} β (CommMonoidWithZero.toMonoidWithZero.{u1} β (LinearOrderedCommMonoidWithZero.toCommMonoidWithZero.{u1} β _inst_2)))) (instHMul.{max u2 u1} (OrderMonoidWithZeroHom.{u2, u1} α β (PartialOrder.toPreorder.{u2} α (OrderedCommMonoid.toPartialOrder.{u2} α (LinearOrderedCommMonoid.toOrderedCommMonoid.{u2} α (LinearOrderedCommMonoidWithZero.toLinearOrderedCommMonoid.{u2} α _inst_1)))) (PartialOrder.toPreorder.{u1} β (OrderedCommMonoid.toPartialOrder.{u1} β (LinearOrderedCommMonoid.toOrderedCommMonoid.{u1} β (LinearOrderedCommMonoidWithZero.toLinearOrderedCommMonoid.{u1} β _inst_2)))) (MonoidWithZero.toMulZeroOneClass.{u2} α (CommMonoidWithZero.toMonoidWithZero.{u2} α (LinearOrderedCommMonoidWithZero.toCommMonoidWithZero.{u2} α _inst_1))) (MonoidWithZero.toMulZeroOneClass.{u1} β (CommMonoidWithZero.toMonoidWithZero.{u1} β (LinearOrderedCommMonoidWithZero.toCommMonoidWithZero.{u1} β _inst_2)))) (OrderMonoidWithZeroHom.instMulOrderMonoidWithZeroHomToPreorderToPartialOrderToOrderedCommMonoidToLinearOrderedCommMonoidToPreorderToPartialOrderToOrderedCommMonoidToLinearOrderedCommMonoidToMulZeroOneClassToMonoidWithZeroToCommMonoidWithZeroToMulZeroOneClassToMonoidWithZeroToCommMonoidWithZero.{u2, u1} α β _inst_1 _inst_2)) f g)) (HMul.hMul.{max u2 u1, max u2 u1, max u2 u1} (forall (ᾰ : α), (fun (x._@.Mathlib.Order.RelIso.Basic._hyg.867 : α) => β) ᾰ) (forall (ᾰ : α), (fun (x._@.Mathlib.Order.RelIso.Basic._hyg.867 : α) => β) ᾰ) (forall (ᾰ : α), (fun (x._@.Mathlib.Order.RelIso.Basic._hyg.867 : α) => β) ᾰ) (instHMul.{max u2 u1} (forall (ᾰ : α), (fun (x._@.Mathlib.Order.RelIso.Basic._hyg.867 : α) => β) ᾰ) (Pi.instMul.{u2, u1} α (fun (ᾰ : α) => (fun (x._@.Mathlib.Order.RelIso.Basic._hyg.867 : α) => β) ᾰ) (fun (i : α) => MulZeroClass.toMul.{u1} ((fun (x._@.Mathlib.Order.RelIso.Basic._hyg.867 : α) => β) i) (MulZeroOneClass.toMulZeroClass.{u1} ((fun (x._@.Mathlib.Order.RelIso.Basic._hyg.867 : α) => β) i) (MonoidWithZero.toMulZeroOneClass.{u1} ((fun (x._@.Mathlib.Order.RelIso.Basic._hyg.867 : α) => β) i) (CommMonoidWithZero.toMonoidWithZero.{u1} ((fun (x._@.Mathlib.Order.RelIso.Basic._hyg.867 : α) => β) i) (LinearOrderedCommMonoidWithZero.toCommMonoidWithZero.{u1} ((fun (x._@.Mathlib.Order.RelIso.Basic._hyg.867 : α) => β) i) _inst_2))))))) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (OrderMonoidWithZeroHom.{u2, u1} α β (PartialOrder.toPreorder.{u2} α (OrderedCommMonoid.toPartialOrder.{u2} α (LinearOrderedCommMonoid.toOrderedCommMonoid.{u2} α (LinearOrderedCommMonoidWithZero.toLinearOrderedCommMonoid.{u2} α _inst_1)))) (PartialOrder.toPreorder.{u1} β (OrderedCommMonoid.toPartialOrder.{u1} β (LinearOrderedCommMonoid.toOrderedCommMonoid.{u1} β (LinearOrderedCommMonoidWithZero.toLinearOrderedCommMonoid.{u1} β _inst_2)))) (MonoidWithZero.toMulZeroOneClass.{u2} α (CommMonoidWithZero.toMonoidWithZero.{u2} α (LinearOrderedCommMonoidWithZero.toCommMonoidWithZero.{u2} α _inst_1))) (MonoidWithZero.toMulZeroOneClass.{u1} β (CommMonoidWithZero.toMonoidWithZero.{u1} β (LinearOrderedCommMonoidWithZero.toCommMonoidWithZero.{u1} β _inst_2)))) α (fun (_x : α) => (fun (x._@.Mathlib.Order.RelIso.Basic._hyg.867 : α) => β) _x) (RelHomClass.toFunLike.{max u2 u1, u2, u1} (OrderMonoidWithZeroHom.{u2, u1} α β (PartialOrder.toPreorder.{u2} α (OrderedCommMonoid.toPartialOrder.{u2} α (LinearOrderedCommMonoid.toOrderedCommMonoid.{u2} α (LinearOrderedCommMonoidWithZero.toLinearOrderedCommMonoid.{u2} α _inst_1)))) (PartialOrder.toPreorder.{u1} β (OrderedCommMonoid.toPartialOrder.{u1} β (LinearOrderedCommMonoid.toOrderedCommMonoid.{u1} β (LinearOrderedCommMonoidWithZero.toLinearOrderedCommMonoid.{u1} β _inst_2)))) (MonoidWithZero.toMulZeroOneClass.{u2} α (CommMonoidWithZero.toMonoidWithZero.{u2} α (LinearOrderedCommMonoidWithZero.toCommMonoidWithZero.{u2} α _inst_1))) (MonoidWithZero.toMulZeroOneClass.{u1} β (CommMonoidWithZero.toMonoidWithZero.{u1} β (LinearOrderedCommMonoidWithZero.toCommMonoidWithZero.{u1} β _inst_2)))) α β (fun (x._@.Mathlib.Order.Hom.Basic._hyg.1896 : α) (x._@.Mathlib.Order.Hom.Basic._hyg.1898 : α) => LE.le.{u2} α (Preorder.toLE.{u2} α (PartialOrder.toPreorder.{u2} α (OrderedCommMonoid.toPartialOrder.{u2} α (LinearOrderedCommMonoid.toOrderedCommMonoid.{u2} α (LinearOrderedCommMonoidWithZero.toLinearOrderedCommMonoid.{u2} α _inst_1))))) x._@.Mathlib.Order.Hom.Basic._hyg.1896 x._@.Mathlib.Order.Hom.Basic._hyg.1898) (fun (x._@.Mathlib.Order.Hom.Basic._hyg.1918 : β) (x._@.Mathlib.Order.Hom.Basic._hyg.1920 : β) => LE.le.{u1} β (Preorder.toLE.{u1} β (PartialOrder.toPreorder.{u1} β (OrderedCommMonoid.toPartialOrder.{u1} β (LinearOrderedCommMonoid.toOrderedCommMonoid.{u1} β (LinearOrderedCommMonoidWithZero.toLinearOrderedCommMonoid.{u1} β _inst_2))))) x._@.Mathlib.Order.Hom.Basic._hyg.1918 x._@.Mathlib.Order.Hom.Basic._hyg.1920) (OrderMonoidHomClass.toOrderHomClass.{max u2 u1, u2, u1} (OrderMonoidWithZeroHom.{u2, u1} α β (PartialOrder.toPreorder.{u2} α (OrderedCommMonoid.toPartialOrder.{u2} α (LinearOrderedCommMonoid.toOrderedCommMonoid.{u2} α (LinearOrderedCommMonoidWithZero.toLinearOrderedCommMonoid.{u2} α _inst_1)))) (PartialOrder.toPreorder.{u1} β (OrderedCommMonoid.toPartialOrder.{u1} β (LinearOrderedCommMonoid.toOrderedCommMonoid.{u1} β (LinearOrderedCommMonoidWithZero.toLinearOrderedCommMonoid.{u1} β _inst_2)))) (MonoidWithZero.toMulZeroOneClass.{u2} α (CommMonoidWithZero.toMonoidWithZero.{u2} α (LinearOrderedCommMonoidWithZero.toCommMonoidWithZero.{u2} α _inst_1))) (MonoidWithZero.toMulZeroOneClass.{u1} β (CommMonoidWithZero.toMonoidWithZero.{u1} β (LinearOrderedCommMonoidWithZero.toCommMonoidWithZero.{u1} β _inst_2)))) α β (PartialOrder.toPreorder.{u2} α (OrderedCommMonoid.toPartialOrder.{u2} α (LinearOrderedCommMonoid.toOrderedCommMonoid.{u2} α (LinearOrderedCommMonoidWithZero.toLinearOrderedCommMonoid.{u2} α _inst_1)))) (PartialOrder.toPreorder.{u1} β (OrderedCommMonoid.toPartialOrder.{u1} β (LinearOrderedCommMonoid.toOrderedCommMonoid.{u1} β (LinearOrderedCommMonoidWithZero.toLinearOrderedCommMonoid.{u1} β _inst_2)))) (MulZeroOneClass.toMulOneClass.{u2} α (MonoidWithZero.toMulZeroOneClass.{u2} α (CommMonoidWithZero.toMonoidWithZero.{u2} α (LinearOrderedCommMonoidWithZero.toCommMonoidWithZero.{u2} α _inst_1)))) (MulZeroOneClass.toMulOneClass.{u1} β (MonoidWithZero.toMulZeroOneClass.{u1} β (CommMonoidWithZero.toMonoidWithZero.{u1} β (LinearOrderedCommMonoidWithZero.toCommMonoidWithZero.{u1} β _inst_2)))) (OrderMonoidWithZeroHomClass.toOrderMonoidHomClass.{max u2 u1, u2, u1} (OrderMonoidWithZeroHom.{u2, u1} α β (PartialOrder.toPreorder.{u2} α (OrderedCommMonoid.toPartialOrder.{u2} α (LinearOrderedCommMonoid.toOrderedCommMonoid.{u2} α (LinearOrderedCommMonoidWithZero.toLinearOrderedCommMonoid.{u2} α _inst_1)))) (PartialOrder.toPreorder.{u1} β (OrderedCommMonoid.toPartialOrder.{u1} β (LinearOrderedCommMonoid.toOrderedCommMonoid.{u1} β (LinearOrderedCommMonoidWithZero.toLinearOrderedCommMonoid.{u1} β _inst_2)))) (MonoidWithZero.toMulZeroOneClass.{u2} α (CommMonoidWithZero.toMonoidWithZero.{u2} α (LinearOrderedCommMonoidWithZero.toCommMonoidWithZero.{u2} α _inst_1))) (MonoidWithZero.toMulZeroOneClass.{u1} β (CommMonoidWithZero.toMonoidWithZero.{u1} β (LinearOrderedCommMonoidWithZero.toCommMonoidWithZero.{u1} β _inst_2)))) α β (PartialOrder.toPreorder.{u2} α (OrderedCommMonoid.toPartialOrder.{u2} α (LinearOrderedCommMonoid.toOrderedCommMonoid.{u2} α (LinearOrderedCommMonoidWithZero.toLinearOrderedCommMonoid.{u2} α _inst_1)))) (PartialOrder.toPreorder.{u1} β (OrderedCommMonoid.toPartialOrder.{u1} β (LinearOrderedCommMonoid.toOrderedCommMonoid.{u1} β (LinearOrderedCommMonoidWithZero.toLinearOrderedCommMonoid.{u1} β _inst_2)))) (MonoidWithZero.toMulZeroOneClass.{u2} α (CommMonoidWithZero.toMonoidWithZero.{u2} α (LinearOrderedCommMonoidWithZero.toCommMonoidWithZero.{u2} α _inst_1))) (MonoidWithZero.toMulZeroOneClass.{u1} β (CommMonoidWithZero.toMonoidWithZero.{u1} β (LinearOrderedCommMonoidWithZero.toCommMonoidWithZero.{u1} β _inst_2))) (OrderMonoidWithZeroHom.instOrderMonoidWithZeroHomClassOrderMonoidWithZeroHom.{u2, u1} α β (PartialOrder.toPreorder.{u2} α (OrderedCommMonoid.toPartialOrder.{u2} α (LinearOrderedCommMonoid.toOrderedCommMonoid.{u2} α (LinearOrderedCommMonoidWithZero.toLinearOrderedCommMonoid.{u2} α _inst_1)))) (PartialOrder.toPreorder.{u1} β (OrderedCommMonoid.toPartialOrder.{u1} β (LinearOrderedCommMonoid.toOrderedCommMonoid.{u1} β (LinearOrderedCommMonoidWithZero.toLinearOrderedCommMonoid.{u1} β _inst_2)))) (MonoidWithZero.toMulZeroOneClass.{u2} α (CommMonoidWithZero.toMonoidWithZero.{u2} α (LinearOrderedCommMonoidWithZero.toCommMonoidWithZero.{u2} α _inst_1))) (MonoidWithZero.toMulZeroOneClass.{u1} β (CommMonoidWithZero.toMonoidWithZero.{u1} β (LinearOrderedCommMonoidWithZero.toCommMonoidWithZero.{u1} β _inst_2))))))) f) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (OrderMonoidWithZeroHom.{u2, u1} α β (PartialOrder.toPreorder.{u2} α (OrderedCommMonoid.toPartialOrder.{u2} α (LinearOrderedCommMonoid.toOrderedCommMonoid.{u2} α (LinearOrderedCommMonoidWithZero.toLinearOrderedCommMonoid.{u2} α _inst_1)))) (PartialOrder.toPreorder.{u1} β (OrderedCommMonoid.toPartialOrder.{u1} β (LinearOrderedCommMonoid.toOrderedCommMonoid.{u1} β (LinearOrderedCommMonoidWithZero.toLinearOrderedCommMonoid.{u1} β _inst_2)))) (MonoidWithZero.toMulZeroOneClass.{u2} α (CommMonoidWithZero.toMonoidWithZero.{u2} α (LinearOrderedCommMonoidWithZero.toCommMonoidWithZero.{u2} α _inst_1))) (MonoidWithZero.toMulZeroOneClass.{u1} β (CommMonoidWithZero.toMonoidWithZero.{u1} β (LinearOrderedCommMonoidWithZero.toCommMonoidWithZero.{u1} β _inst_2)))) α (fun (_x : α) => (fun (x._@.Mathlib.Order.RelIso.Basic._hyg.867 : α) => β) _x) (RelHomClass.toFunLike.{max u2 u1, u2, u1} (OrderMonoidWithZeroHom.{u2, u1} α β (PartialOrder.toPreorder.{u2} α (OrderedCommMonoid.toPartialOrder.{u2} α (LinearOrderedCommMonoid.toOrderedCommMonoid.{u2} α (LinearOrderedCommMonoidWithZero.toLinearOrderedCommMonoid.{u2} α _inst_1)))) (PartialOrder.toPreorder.{u1} β (OrderedCommMonoid.toPartialOrder.{u1} β (LinearOrderedCommMonoid.toOrderedCommMonoid.{u1} β (LinearOrderedCommMonoidWithZero.toLinearOrderedCommMonoid.{u1} β _inst_2)))) (MonoidWithZero.toMulZeroOneClass.{u2} α (CommMonoidWithZero.toMonoidWithZero.{u2} α (LinearOrderedCommMonoidWithZero.toCommMonoidWithZero.{u2} α _inst_1))) (MonoidWithZero.toMulZeroOneClass.{u1} β (CommMonoidWithZero.toMonoidWithZero.{u1} β (LinearOrderedCommMonoidWithZero.toCommMonoidWithZero.{u1} β _inst_2)))) α β (fun (x._@.Mathlib.Order.Hom.Basic._hyg.1896 : α) (x._@.Mathlib.Order.Hom.Basic._hyg.1898 : α) => LE.le.{u2} α (Preorder.toLE.{u2} α (PartialOrder.toPreorder.{u2} α (OrderedCommMonoid.toPartialOrder.{u2} α (LinearOrderedCommMonoid.toOrderedCommMonoid.{u2} α (LinearOrderedCommMonoidWithZero.toLinearOrderedCommMonoid.{u2} α _inst_1))))) x._@.Mathlib.Order.Hom.Basic._hyg.1896 x._@.Mathlib.Order.Hom.Basic._hyg.1898) (fun (x._@.Mathlib.Order.Hom.Basic._hyg.1918 : β) (x._@.Mathlib.Order.Hom.Basic._hyg.1920 : β) => LE.le.{u1} β (Preorder.toLE.{u1} β (PartialOrder.toPreorder.{u1} β (OrderedCommMonoid.toPartialOrder.{u1} β (LinearOrderedCommMonoid.toOrderedCommMonoid.{u1} β (LinearOrderedCommMonoidWithZero.toLinearOrderedCommMonoid.{u1} β _inst_2))))) x._@.Mathlib.Order.Hom.Basic._hyg.1918 x._@.Mathlib.Order.Hom.Basic._hyg.1920) (OrderMonoidHomClass.toOrderHomClass.{max u2 u1, u2, u1} (OrderMonoidWithZeroHom.{u2, u1} α β (PartialOrder.toPreorder.{u2} α (OrderedCommMonoid.toPartialOrder.{u2} α (LinearOrderedCommMonoid.toOrderedCommMonoid.{u2} α (LinearOrderedCommMonoidWithZero.toLinearOrderedCommMonoid.{u2} α _inst_1)))) (PartialOrder.toPreorder.{u1} β (OrderedCommMonoid.toPartialOrder.{u1} β (LinearOrderedCommMonoid.toOrderedCommMonoid.{u1} β (LinearOrderedCommMonoidWithZero.toLinearOrderedCommMonoid.{u1} β _inst_2)))) (MonoidWithZero.toMulZeroOneClass.{u2} α (CommMonoidWithZero.toMonoidWithZero.{u2} α (LinearOrderedCommMonoidWithZero.toCommMonoidWithZero.{u2} α _inst_1))) (MonoidWithZero.toMulZeroOneClass.{u1} β (CommMonoidWithZero.toMonoidWithZero.{u1} β (LinearOrderedCommMonoidWithZero.toCommMonoidWithZero.{u1} β _inst_2)))) α β (PartialOrder.toPreorder.{u2} α (OrderedCommMonoid.toPartialOrder.{u2} α (LinearOrderedCommMonoid.toOrderedCommMonoid.{u2} α (LinearOrderedCommMonoidWithZero.toLinearOrderedCommMonoid.{u2} α _inst_1)))) (PartialOrder.toPreorder.{u1} β (OrderedCommMonoid.toPartialOrder.{u1} β (LinearOrderedCommMonoid.toOrderedCommMonoid.{u1} β (LinearOrderedCommMonoidWithZero.toLinearOrderedCommMonoid.{u1} β _inst_2)))) (MulZeroOneClass.toMulOneClass.{u2} α (MonoidWithZero.toMulZeroOneClass.{u2} α (CommMonoidWithZero.toMonoidWithZero.{u2} α (LinearOrderedCommMonoidWithZero.toCommMonoidWithZero.{u2} α _inst_1)))) (MulZeroOneClass.toMulOneClass.{u1} β (MonoidWithZero.toMulZeroOneClass.{u1} β (CommMonoidWithZero.toMonoidWithZero.{u1} β (LinearOrderedCommMonoidWithZero.toCommMonoidWithZero.{u1} β _inst_2)))) (OrderMonoidWithZeroHomClass.toOrderMonoidHomClass.{max u2 u1, u2, u1} (OrderMonoidWithZeroHom.{u2, u1} α β (PartialOrder.toPreorder.{u2} α (OrderedCommMonoid.toPartialOrder.{u2} α (LinearOrderedCommMonoid.toOrderedCommMonoid.{u2} α (LinearOrderedCommMonoidWithZero.toLinearOrderedCommMonoid.{u2} α _inst_1)))) (PartialOrder.toPreorder.{u1} β (OrderedCommMonoid.toPartialOrder.{u1} β (LinearOrderedCommMonoid.toOrderedCommMonoid.{u1} β (LinearOrderedCommMonoidWithZero.toLinearOrderedCommMonoid.{u1} β _inst_2)))) (MonoidWithZero.toMulZeroOneClass.{u2} α (CommMonoidWithZero.toMonoidWithZero.{u2} α (LinearOrderedCommMonoidWithZero.toCommMonoidWithZero.{u2} α _inst_1))) (MonoidWithZero.toMulZeroOneClass.{u1} β (CommMonoidWithZero.toMonoidWithZero.{u1} β (LinearOrderedCommMonoidWithZero.toCommMonoidWithZero.{u1} β _inst_2)))) α β (PartialOrder.toPreorder.{u2} α (OrderedCommMonoid.toPartialOrder.{u2} α (LinearOrderedCommMonoid.toOrderedCommMonoid.{u2} α (LinearOrderedCommMonoidWithZero.toLinearOrderedCommMonoid.{u2} α _inst_1)))) (PartialOrder.toPreorder.{u1} β (OrderedCommMonoid.toPartialOrder.{u1} β (LinearOrderedCommMonoid.toOrderedCommMonoid.{u1} β (LinearOrderedCommMonoidWithZero.toLinearOrderedCommMonoid.{u1} β _inst_2)))) (MonoidWithZero.toMulZeroOneClass.{u2} α (CommMonoidWithZero.toMonoidWithZero.{u2} α (LinearOrderedCommMonoidWithZero.toCommMonoidWithZero.{u2} α _inst_1))) (MonoidWithZero.toMulZeroOneClass.{u1} β (CommMonoidWithZero.toMonoidWithZero.{u1} β (LinearOrderedCommMonoidWithZero.toCommMonoidWithZero.{u1} β _inst_2))) (OrderMonoidWithZeroHom.instOrderMonoidWithZeroHomClassOrderMonoidWithZeroHom.{u2, u1} α β (PartialOrder.toPreorder.{u2} α (OrderedCommMonoid.toPartialOrder.{u2} α (LinearOrderedCommMonoid.toOrderedCommMonoid.{u2} α (LinearOrderedCommMonoidWithZero.toLinearOrderedCommMonoid.{u2} α _inst_1)))) (PartialOrder.toPreorder.{u1} β (OrderedCommMonoid.toPartialOrder.{u1} β (LinearOrderedCommMonoid.toOrderedCommMonoid.{u1} β (LinearOrderedCommMonoidWithZero.toLinearOrderedCommMonoid.{u1} β _inst_2)))) (MonoidWithZero.toMulZeroOneClass.{u2} α (CommMonoidWithZero.toMonoidWithZero.{u2} α (LinearOrderedCommMonoidWithZero.toCommMonoidWithZero.{u2} α _inst_1))) (MonoidWithZero.toMulZeroOneClass.{u1} β (CommMonoidWithZero.toMonoidWithZero.{u1} β (LinearOrderedCommMonoidWithZero.toCommMonoidWithZero.{u1} β _inst_2))))))) g))
Case conversion may be inaccurate. Consider using '#align order_monoid_with_zero_hom.coe_mul OrderMonoidWithZeroHom.coe_mulₓ'. -/
@[simp]
theorem coe_mul (f g : α →*₀o β) : ⇑(f * g) = f * g :=
  rfl
#align order_monoid_with_zero_hom.coe_mul OrderMonoidWithZeroHom.coe_mul

/- warning: order_monoid_with_zero_hom.mul_apply -> OrderMonoidWithZeroHom.mul_apply is a dubious translation:
lean 3 declaration is
  forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : LinearOrderedCommMonoidWithZero.{u1} α] [_inst_2 : LinearOrderedCommMonoidWithZero.{u2} β] (f : OrderMonoidWithZeroHom.{u1, u2} α β (PartialOrder.toPreorder.{u1} α (OrderedCommMonoid.toPartialOrder.{u1} α (LinearOrderedCommMonoid.toOrderedCommMonoid.{u1} α (LinearOrderedCommMonoidWithZero.toLinearOrderedCommMonoid.{u1} α _inst_1)))) (PartialOrder.toPreorder.{u2} β (OrderedCommMonoid.toPartialOrder.{u2} β (LinearOrderedCommMonoid.toOrderedCommMonoid.{u2} β (LinearOrderedCommMonoidWithZero.toLinearOrderedCommMonoid.{u2} β _inst_2)))) (MonoidWithZero.toMulZeroOneClass.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (LinearOrderedCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) (MonoidWithZero.toMulZeroOneClass.{u2} β (CommMonoidWithZero.toMonoidWithZero.{u2} β (LinearOrderedCommMonoidWithZero.toCommMonoidWithZero.{u2} β _inst_2)))) (g : OrderMonoidWithZeroHom.{u1, u2} α β (PartialOrder.toPreorder.{u1} α (OrderedCommMonoid.toPartialOrder.{u1} α (LinearOrderedCommMonoid.toOrderedCommMonoid.{u1} α (LinearOrderedCommMonoidWithZero.toLinearOrderedCommMonoid.{u1} α _inst_1)))) (PartialOrder.toPreorder.{u2} β (OrderedCommMonoid.toPartialOrder.{u2} β (LinearOrderedCommMonoid.toOrderedCommMonoid.{u2} β (LinearOrderedCommMonoidWithZero.toLinearOrderedCommMonoid.{u2} β _inst_2)))) (MonoidWithZero.toMulZeroOneClass.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (LinearOrderedCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) (MonoidWithZero.toMulZeroOneClass.{u2} β (CommMonoidWithZero.toMonoidWithZero.{u2} β (LinearOrderedCommMonoidWithZero.toCommMonoidWithZero.{u2} β _inst_2)))) (a : α), Eq.{succ u2} β (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (OrderMonoidWithZeroHom.{u1, u2} α β (PartialOrder.toPreorder.{u1} α (OrderedCommMonoid.toPartialOrder.{u1} α (LinearOrderedCommMonoid.toOrderedCommMonoid.{u1} α (LinearOrderedCommMonoidWithZero.toLinearOrderedCommMonoid.{u1} α _inst_1)))) (PartialOrder.toPreorder.{u2} β (OrderedCommMonoid.toPartialOrder.{u2} β (LinearOrderedCommMonoid.toOrderedCommMonoid.{u2} β (LinearOrderedCommMonoidWithZero.toLinearOrderedCommMonoid.{u2} β _inst_2)))) (MonoidWithZero.toMulZeroOneClass.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (LinearOrderedCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) (MonoidWithZero.toMulZeroOneClass.{u2} β (CommMonoidWithZero.toMonoidWithZero.{u2} β (LinearOrderedCommMonoidWithZero.toCommMonoidWithZero.{u2} β _inst_2)))) (fun (_x : OrderMonoidWithZeroHom.{u1, u2} α β (PartialOrder.toPreorder.{u1} α (OrderedCommMonoid.toPartialOrder.{u1} α (LinearOrderedCommMonoid.toOrderedCommMonoid.{u1} α (LinearOrderedCommMonoidWithZero.toLinearOrderedCommMonoid.{u1} α _inst_1)))) (PartialOrder.toPreorder.{u2} β (OrderedCommMonoid.toPartialOrder.{u2} β (LinearOrderedCommMonoid.toOrderedCommMonoid.{u2} β (LinearOrderedCommMonoidWithZero.toLinearOrderedCommMonoid.{u2} β _inst_2)))) (MonoidWithZero.toMulZeroOneClass.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (LinearOrderedCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) (MonoidWithZero.toMulZeroOneClass.{u2} β (CommMonoidWithZero.toMonoidWithZero.{u2} β (LinearOrderedCommMonoidWithZero.toCommMonoidWithZero.{u2} β _inst_2)))) => α -> β) (OrderMonoidWithZeroHom.hasCoeToFun.{u1, u2} α β (PartialOrder.toPreorder.{u1} α (OrderedCommMonoid.toPartialOrder.{u1} α (LinearOrderedCommMonoid.toOrderedCommMonoid.{u1} α (LinearOrderedCommMonoidWithZero.toLinearOrderedCommMonoid.{u1} α _inst_1)))) (PartialOrder.toPreorder.{u2} β (OrderedCommMonoid.toPartialOrder.{u2} β (LinearOrderedCommMonoid.toOrderedCommMonoid.{u2} β (LinearOrderedCommMonoidWithZero.toLinearOrderedCommMonoid.{u2} β _inst_2)))) (MonoidWithZero.toMulZeroOneClass.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (LinearOrderedCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) (MonoidWithZero.toMulZeroOneClass.{u2} β (CommMonoidWithZero.toMonoidWithZero.{u2} β (LinearOrderedCommMonoidWithZero.toCommMonoidWithZero.{u2} β _inst_2)))) (HMul.hMul.{max u1 u2, max u1 u2, max u1 u2} (OrderMonoidWithZeroHom.{u1, u2} α β (PartialOrder.toPreorder.{u1} α (OrderedCommMonoid.toPartialOrder.{u1} α (LinearOrderedCommMonoid.toOrderedCommMonoid.{u1} α (LinearOrderedCommMonoidWithZero.toLinearOrderedCommMonoid.{u1} α _inst_1)))) (PartialOrder.toPreorder.{u2} β (OrderedCommMonoid.toPartialOrder.{u2} β (LinearOrderedCommMonoid.toOrderedCommMonoid.{u2} β (LinearOrderedCommMonoidWithZero.toLinearOrderedCommMonoid.{u2} β _inst_2)))) (MonoidWithZero.toMulZeroOneClass.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (LinearOrderedCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) (MonoidWithZero.toMulZeroOneClass.{u2} β (CommMonoidWithZero.toMonoidWithZero.{u2} β (LinearOrderedCommMonoidWithZero.toCommMonoidWithZero.{u2} β _inst_2)))) (OrderMonoidWithZeroHom.{u1, u2} α β (PartialOrder.toPreorder.{u1} α (OrderedCommMonoid.toPartialOrder.{u1} α (LinearOrderedCommMonoid.toOrderedCommMonoid.{u1} α (LinearOrderedCommMonoidWithZero.toLinearOrderedCommMonoid.{u1} α _inst_1)))) (PartialOrder.toPreorder.{u2} β (OrderedCommMonoid.toPartialOrder.{u2} β (LinearOrderedCommMonoid.toOrderedCommMonoid.{u2} β (LinearOrderedCommMonoidWithZero.toLinearOrderedCommMonoid.{u2} β _inst_2)))) (MonoidWithZero.toMulZeroOneClass.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (LinearOrderedCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) (MonoidWithZero.toMulZeroOneClass.{u2} β (CommMonoidWithZero.toMonoidWithZero.{u2} β (LinearOrderedCommMonoidWithZero.toCommMonoidWithZero.{u2} β _inst_2)))) (OrderMonoidWithZeroHom.{u1, u2} α β (PartialOrder.toPreorder.{u1} α (OrderedCommMonoid.toPartialOrder.{u1} α (LinearOrderedCommMonoid.toOrderedCommMonoid.{u1} α (LinearOrderedCommMonoidWithZero.toLinearOrderedCommMonoid.{u1} α _inst_1)))) (PartialOrder.toPreorder.{u2} β (OrderedCommMonoid.toPartialOrder.{u2} β (LinearOrderedCommMonoid.toOrderedCommMonoid.{u2} β (LinearOrderedCommMonoidWithZero.toLinearOrderedCommMonoid.{u2} β _inst_2)))) (MonoidWithZero.toMulZeroOneClass.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (LinearOrderedCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) (MonoidWithZero.toMulZeroOneClass.{u2} β (CommMonoidWithZero.toMonoidWithZero.{u2} β (LinearOrderedCommMonoidWithZero.toCommMonoidWithZero.{u2} β _inst_2)))) (instHMul.{max u1 u2} (OrderMonoidWithZeroHom.{u1, u2} α β (PartialOrder.toPreorder.{u1} α (OrderedCommMonoid.toPartialOrder.{u1} α (LinearOrderedCommMonoid.toOrderedCommMonoid.{u1} α (LinearOrderedCommMonoidWithZero.toLinearOrderedCommMonoid.{u1} α _inst_1)))) (PartialOrder.toPreorder.{u2} β (OrderedCommMonoid.toPartialOrder.{u2} β (LinearOrderedCommMonoid.toOrderedCommMonoid.{u2} β (LinearOrderedCommMonoidWithZero.toLinearOrderedCommMonoid.{u2} β _inst_2)))) (MonoidWithZero.toMulZeroOneClass.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (LinearOrderedCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) (MonoidWithZero.toMulZeroOneClass.{u2} β (CommMonoidWithZero.toMonoidWithZero.{u2} β (LinearOrderedCommMonoidWithZero.toCommMonoidWithZero.{u2} β _inst_2)))) (OrderMonoidWithZeroHom.hasMul.{u1, u2} α β _inst_1 _inst_2)) f g) a) (HMul.hMul.{u2, u2, u2} β β β (instHMul.{u2} β (MulZeroClass.toHasMul.{u2} β (MulZeroOneClass.toMulZeroClass.{u2} β (MonoidWithZero.toMulZeroOneClass.{u2} β (CommMonoidWithZero.toMonoidWithZero.{u2} β (LinearOrderedCommMonoidWithZero.toCommMonoidWithZero.{u2} β _inst_2)))))) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (OrderMonoidWithZeroHom.{u1, u2} α β (PartialOrder.toPreorder.{u1} α (OrderedCommMonoid.toPartialOrder.{u1} α (LinearOrderedCommMonoid.toOrderedCommMonoid.{u1} α (LinearOrderedCommMonoidWithZero.toLinearOrderedCommMonoid.{u1} α _inst_1)))) (PartialOrder.toPreorder.{u2} β (OrderedCommMonoid.toPartialOrder.{u2} β (LinearOrderedCommMonoid.toOrderedCommMonoid.{u2} β (LinearOrderedCommMonoidWithZero.toLinearOrderedCommMonoid.{u2} β _inst_2)))) (MonoidWithZero.toMulZeroOneClass.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (LinearOrderedCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) (MonoidWithZero.toMulZeroOneClass.{u2} β (CommMonoidWithZero.toMonoidWithZero.{u2} β (LinearOrderedCommMonoidWithZero.toCommMonoidWithZero.{u2} β _inst_2)))) (fun (_x : OrderMonoidWithZeroHom.{u1, u2} α β (PartialOrder.toPreorder.{u1} α (OrderedCommMonoid.toPartialOrder.{u1} α (LinearOrderedCommMonoid.toOrderedCommMonoid.{u1} α (LinearOrderedCommMonoidWithZero.toLinearOrderedCommMonoid.{u1} α _inst_1)))) (PartialOrder.toPreorder.{u2} β (OrderedCommMonoid.toPartialOrder.{u2} β (LinearOrderedCommMonoid.toOrderedCommMonoid.{u2} β (LinearOrderedCommMonoidWithZero.toLinearOrderedCommMonoid.{u2} β _inst_2)))) (MonoidWithZero.toMulZeroOneClass.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (LinearOrderedCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) (MonoidWithZero.toMulZeroOneClass.{u2} β (CommMonoidWithZero.toMonoidWithZero.{u2} β (LinearOrderedCommMonoidWithZero.toCommMonoidWithZero.{u2} β _inst_2)))) => α -> β) (OrderMonoidWithZeroHom.hasCoeToFun.{u1, u2} α β (PartialOrder.toPreorder.{u1} α (OrderedCommMonoid.toPartialOrder.{u1} α (LinearOrderedCommMonoid.toOrderedCommMonoid.{u1} α (LinearOrderedCommMonoidWithZero.toLinearOrderedCommMonoid.{u1} α _inst_1)))) (PartialOrder.toPreorder.{u2} β (OrderedCommMonoid.toPartialOrder.{u2} β (LinearOrderedCommMonoid.toOrderedCommMonoid.{u2} β (LinearOrderedCommMonoidWithZero.toLinearOrderedCommMonoid.{u2} β _inst_2)))) (MonoidWithZero.toMulZeroOneClass.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (LinearOrderedCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) (MonoidWithZero.toMulZeroOneClass.{u2} β (CommMonoidWithZero.toMonoidWithZero.{u2} β (LinearOrderedCommMonoidWithZero.toCommMonoidWithZero.{u2} β _inst_2)))) f a) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (OrderMonoidWithZeroHom.{u1, u2} α β (PartialOrder.toPreorder.{u1} α (OrderedCommMonoid.toPartialOrder.{u1} α (LinearOrderedCommMonoid.toOrderedCommMonoid.{u1} α (LinearOrderedCommMonoidWithZero.toLinearOrderedCommMonoid.{u1} α _inst_1)))) (PartialOrder.toPreorder.{u2} β (OrderedCommMonoid.toPartialOrder.{u2} β (LinearOrderedCommMonoid.toOrderedCommMonoid.{u2} β (LinearOrderedCommMonoidWithZero.toLinearOrderedCommMonoid.{u2} β _inst_2)))) (MonoidWithZero.toMulZeroOneClass.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (LinearOrderedCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) (MonoidWithZero.toMulZeroOneClass.{u2} β (CommMonoidWithZero.toMonoidWithZero.{u2} β (LinearOrderedCommMonoidWithZero.toCommMonoidWithZero.{u2} β _inst_2)))) (fun (_x : OrderMonoidWithZeroHom.{u1, u2} α β (PartialOrder.toPreorder.{u1} α (OrderedCommMonoid.toPartialOrder.{u1} α (LinearOrderedCommMonoid.toOrderedCommMonoid.{u1} α (LinearOrderedCommMonoidWithZero.toLinearOrderedCommMonoid.{u1} α _inst_1)))) (PartialOrder.toPreorder.{u2} β (OrderedCommMonoid.toPartialOrder.{u2} β (LinearOrderedCommMonoid.toOrderedCommMonoid.{u2} β (LinearOrderedCommMonoidWithZero.toLinearOrderedCommMonoid.{u2} β _inst_2)))) (MonoidWithZero.toMulZeroOneClass.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (LinearOrderedCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) (MonoidWithZero.toMulZeroOneClass.{u2} β (CommMonoidWithZero.toMonoidWithZero.{u2} β (LinearOrderedCommMonoidWithZero.toCommMonoidWithZero.{u2} β _inst_2)))) => α -> β) (OrderMonoidWithZeroHom.hasCoeToFun.{u1, u2} α β (PartialOrder.toPreorder.{u1} α (OrderedCommMonoid.toPartialOrder.{u1} α (LinearOrderedCommMonoid.toOrderedCommMonoid.{u1} α (LinearOrderedCommMonoidWithZero.toLinearOrderedCommMonoid.{u1} α _inst_1)))) (PartialOrder.toPreorder.{u2} β (OrderedCommMonoid.toPartialOrder.{u2} β (LinearOrderedCommMonoid.toOrderedCommMonoid.{u2} β (LinearOrderedCommMonoidWithZero.toLinearOrderedCommMonoid.{u2} β _inst_2)))) (MonoidWithZero.toMulZeroOneClass.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (LinearOrderedCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) (MonoidWithZero.toMulZeroOneClass.{u2} β (CommMonoidWithZero.toMonoidWithZero.{u2} β (LinearOrderedCommMonoidWithZero.toCommMonoidWithZero.{u2} β _inst_2)))) g a))
but is expected to have type
  forall {α : Type.{u2}} {β : Type.{u1}} [_inst_1 : LinearOrderedCommMonoidWithZero.{u2} α] [_inst_2 : LinearOrderedCommMonoidWithZero.{u1} β] (f : OrderMonoidWithZeroHom.{u2, u1} α β (PartialOrder.toPreorder.{u2} α (OrderedCommMonoid.toPartialOrder.{u2} α (LinearOrderedCommMonoid.toOrderedCommMonoid.{u2} α (LinearOrderedCommMonoidWithZero.toLinearOrderedCommMonoid.{u2} α _inst_1)))) (PartialOrder.toPreorder.{u1} β (OrderedCommMonoid.toPartialOrder.{u1} β (LinearOrderedCommMonoid.toOrderedCommMonoid.{u1} β (LinearOrderedCommMonoidWithZero.toLinearOrderedCommMonoid.{u1} β _inst_2)))) (MonoidWithZero.toMulZeroOneClass.{u2} α (CommMonoidWithZero.toMonoidWithZero.{u2} α (LinearOrderedCommMonoidWithZero.toCommMonoidWithZero.{u2} α _inst_1))) (MonoidWithZero.toMulZeroOneClass.{u1} β (CommMonoidWithZero.toMonoidWithZero.{u1} β (LinearOrderedCommMonoidWithZero.toCommMonoidWithZero.{u1} β _inst_2)))) (g : OrderMonoidWithZeroHom.{u2, u1} α β (PartialOrder.toPreorder.{u2} α (OrderedCommMonoid.toPartialOrder.{u2} α (LinearOrderedCommMonoid.toOrderedCommMonoid.{u2} α (LinearOrderedCommMonoidWithZero.toLinearOrderedCommMonoid.{u2} α _inst_1)))) (PartialOrder.toPreorder.{u1} β (OrderedCommMonoid.toPartialOrder.{u1} β (LinearOrderedCommMonoid.toOrderedCommMonoid.{u1} β (LinearOrderedCommMonoidWithZero.toLinearOrderedCommMonoid.{u1} β _inst_2)))) (MonoidWithZero.toMulZeroOneClass.{u2} α (CommMonoidWithZero.toMonoidWithZero.{u2} α (LinearOrderedCommMonoidWithZero.toCommMonoidWithZero.{u2} α _inst_1))) (MonoidWithZero.toMulZeroOneClass.{u1} β (CommMonoidWithZero.toMonoidWithZero.{u1} β (LinearOrderedCommMonoidWithZero.toCommMonoidWithZero.{u1} β _inst_2)))) (a : α), Eq.{succ u1} ((fun (x._@.Mathlib.Order.RelIso.Basic._hyg.867 : α) => β) a) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (OrderMonoidWithZeroHom.{u2, u1} α β (PartialOrder.toPreorder.{u2} α (OrderedCommMonoid.toPartialOrder.{u2} α (LinearOrderedCommMonoid.toOrderedCommMonoid.{u2} α (LinearOrderedCommMonoidWithZero.toLinearOrderedCommMonoid.{u2} α _inst_1)))) (PartialOrder.toPreorder.{u1} β (OrderedCommMonoid.toPartialOrder.{u1} β (LinearOrderedCommMonoid.toOrderedCommMonoid.{u1} β (LinearOrderedCommMonoidWithZero.toLinearOrderedCommMonoid.{u1} β _inst_2)))) (MonoidWithZero.toMulZeroOneClass.{u2} α (CommMonoidWithZero.toMonoidWithZero.{u2} α (LinearOrderedCommMonoidWithZero.toCommMonoidWithZero.{u2} α _inst_1))) (MonoidWithZero.toMulZeroOneClass.{u1} β (CommMonoidWithZero.toMonoidWithZero.{u1} β (LinearOrderedCommMonoidWithZero.toCommMonoidWithZero.{u1} β _inst_2)))) α (fun (_x : α) => (fun (x._@.Mathlib.Order.RelIso.Basic._hyg.867 : α) => β) _x) (RelHomClass.toFunLike.{max u2 u1, u2, u1} (OrderMonoidWithZeroHom.{u2, u1} α β (PartialOrder.toPreorder.{u2} α (OrderedCommMonoid.toPartialOrder.{u2} α (LinearOrderedCommMonoid.toOrderedCommMonoid.{u2} α (LinearOrderedCommMonoidWithZero.toLinearOrderedCommMonoid.{u2} α _inst_1)))) (PartialOrder.toPreorder.{u1} β (OrderedCommMonoid.toPartialOrder.{u1} β (LinearOrderedCommMonoid.toOrderedCommMonoid.{u1} β (LinearOrderedCommMonoidWithZero.toLinearOrderedCommMonoid.{u1} β _inst_2)))) (MonoidWithZero.toMulZeroOneClass.{u2} α (CommMonoidWithZero.toMonoidWithZero.{u2} α (LinearOrderedCommMonoidWithZero.toCommMonoidWithZero.{u2} α _inst_1))) (MonoidWithZero.toMulZeroOneClass.{u1} β (CommMonoidWithZero.toMonoidWithZero.{u1} β (LinearOrderedCommMonoidWithZero.toCommMonoidWithZero.{u1} β _inst_2)))) α β (fun (x._@.Mathlib.Order.Hom.Basic._hyg.1896 : α) (x._@.Mathlib.Order.Hom.Basic._hyg.1898 : α) => LE.le.{u2} α (Preorder.toLE.{u2} α (PartialOrder.toPreorder.{u2} α (OrderedCommMonoid.toPartialOrder.{u2} α (LinearOrderedCommMonoid.toOrderedCommMonoid.{u2} α (LinearOrderedCommMonoidWithZero.toLinearOrderedCommMonoid.{u2} α _inst_1))))) x._@.Mathlib.Order.Hom.Basic._hyg.1896 x._@.Mathlib.Order.Hom.Basic._hyg.1898) (fun (x._@.Mathlib.Order.Hom.Basic._hyg.1918 : β) (x._@.Mathlib.Order.Hom.Basic._hyg.1920 : β) => LE.le.{u1} β (Preorder.toLE.{u1} β (PartialOrder.toPreorder.{u1} β (OrderedCommMonoid.toPartialOrder.{u1} β (LinearOrderedCommMonoid.toOrderedCommMonoid.{u1} β (LinearOrderedCommMonoidWithZero.toLinearOrderedCommMonoid.{u1} β _inst_2))))) x._@.Mathlib.Order.Hom.Basic._hyg.1918 x._@.Mathlib.Order.Hom.Basic._hyg.1920) (OrderMonoidHomClass.toOrderHomClass.{max u2 u1, u2, u1} (OrderMonoidWithZeroHom.{u2, u1} α β (PartialOrder.toPreorder.{u2} α (OrderedCommMonoid.toPartialOrder.{u2} α (LinearOrderedCommMonoid.toOrderedCommMonoid.{u2} α (LinearOrderedCommMonoidWithZero.toLinearOrderedCommMonoid.{u2} α _inst_1)))) (PartialOrder.toPreorder.{u1} β (OrderedCommMonoid.toPartialOrder.{u1} β (LinearOrderedCommMonoid.toOrderedCommMonoid.{u1} β (LinearOrderedCommMonoidWithZero.toLinearOrderedCommMonoid.{u1} β _inst_2)))) (MonoidWithZero.toMulZeroOneClass.{u2} α (CommMonoidWithZero.toMonoidWithZero.{u2} α (LinearOrderedCommMonoidWithZero.toCommMonoidWithZero.{u2} α _inst_1))) (MonoidWithZero.toMulZeroOneClass.{u1} β (CommMonoidWithZero.toMonoidWithZero.{u1} β (LinearOrderedCommMonoidWithZero.toCommMonoidWithZero.{u1} β _inst_2)))) α β (PartialOrder.toPreorder.{u2} α (OrderedCommMonoid.toPartialOrder.{u2} α (LinearOrderedCommMonoid.toOrderedCommMonoid.{u2} α (LinearOrderedCommMonoidWithZero.toLinearOrderedCommMonoid.{u2} α _inst_1)))) (PartialOrder.toPreorder.{u1} β (OrderedCommMonoid.toPartialOrder.{u1} β (LinearOrderedCommMonoid.toOrderedCommMonoid.{u1} β (LinearOrderedCommMonoidWithZero.toLinearOrderedCommMonoid.{u1} β _inst_2)))) (MulZeroOneClass.toMulOneClass.{u2} α (MonoidWithZero.toMulZeroOneClass.{u2} α (CommMonoidWithZero.toMonoidWithZero.{u2} α (LinearOrderedCommMonoidWithZero.toCommMonoidWithZero.{u2} α _inst_1)))) (MulZeroOneClass.toMulOneClass.{u1} β (MonoidWithZero.toMulZeroOneClass.{u1} β (CommMonoidWithZero.toMonoidWithZero.{u1} β (LinearOrderedCommMonoidWithZero.toCommMonoidWithZero.{u1} β _inst_2)))) (OrderMonoidWithZeroHomClass.toOrderMonoidHomClass.{max u2 u1, u2, u1} (OrderMonoidWithZeroHom.{u2, u1} α β (PartialOrder.toPreorder.{u2} α (OrderedCommMonoid.toPartialOrder.{u2} α (LinearOrderedCommMonoid.toOrderedCommMonoid.{u2} α (LinearOrderedCommMonoidWithZero.toLinearOrderedCommMonoid.{u2} α _inst_1)))) (PartialOrder.toPreorder.{u1} β (OrderedCommMonoid.toPartialOrder.{u1} β (LinearOrderedCommMonoid.toOrderedCommMonoid.{u1} β (LinearOrderedCommMonoidWithZero.toLinearOrderedCommMonoid.{u1} β _inst_2)))) (MonoidWithZero.toMulZeroOneClass.{u2} α (CommMonoidWithZero.toMonoidWithZero.{u2} α (LinearOrderedCommMonoidWithZero.toCommMonoidWithZero.{u2} α _inst_1))) (MonoidWithZero.toMulZeroOneClass.{u1} β (CommMonoidWithZero.toMonoidWithZero.{u1} β (LinearOrderedCommMonoidWithZero.toCommMonoidWithZero.{u1} β _inst_2)))) α β (PartialOrder.toPreorder.{u2} α (OrderedCommMonoid.toPartialOrder.{u2} α (LinearOrderedCommMonoid.toOrderedCommMonoid.{u2} α (LinearOrderedCommMonoidWithZero.toLinearOrderedCommMonoid.{u2} α _inst_1)))) (PartialOrder.toPreorder.{u1} β (OrderedCommMonoid.toPartialOrder.{u1} β (LinearOrderedCommMonoid.toOrderedCommMonoid.{u1} β (LinearOrderedCommMonoidWithZero.toLinearOrderedCommMonoid.{u1} β _inst_2)))) (MonoidWithZero.toMulZeroOneClass.{u2} α (CommMonoidWithZero.toMonoidWithZero.{u2} α (LinearOrderedCommMonoidWithZero.toCommMonoidWithZero.{u2} α _inst_1))) (MonoidWithZero.toMulZeroOneClass.{u1} β (CommMonoidWithZero.toMonoidWithZero.{u1} β (LinearOrderedCommMonoidWithZero.toCommMonoidWithZero.{u1} β _inst_2))) (OrderMonoidWithZeroHom.instOrderMonoidWithZeroHomClassOrderMonoidWithZeroHom.{u2, u1} α β (PartialOrder.toPreorder.{u2} α (OrderedCommMonoid.toPartialOrder.{u2} α (LinearOrderedCommMonoid.toOrderedCommMonoid.{u2} α (LinearOrderedCommMonoidWithZero.toLinearOrderedCommMonoid.{u2} α _inst_1)))) (PartialOrder.toPreorder.{u1} β (OrderedCommMonoid.toPartialOrder.{u1} β (LinearOrderedCommMonoid.toOrderedCommMonoid.{u1} β (LinearOrderedCommMonoidWithZero.toLinearOrderedCommMonoid.{u1} β _inst_2)))) (MonoidWithZero.toMulZeroOneClass.{u2} α (CommMonoidWithZero.toMonoidWithZero.{u2} α (LinearOrderedCommMonoidWithZero.toCommMonoidWithZero.{u2} α _inst_1))) (MonoidWithZero.toMulZeroOneClass.{u1} β (CommMonoidWithZero.toMonoidWithZero.{u1} β (LinearOrderedCommMonoidWithZero.toCommMonoidWithZero.{u1} β _inst_2))))))) (HMul.hMul.{max u2 u1, max u2 u1, max u2 u1} (OrderMonoidWithZeroHom.{u2, u1} α β (PartialOrder.toPreorder.{u2} α (OrderedCommMonoid.toPartialOrder.{u2} α (LinearOrderedCommMonoid.toOrderedCommMonoid.{u2} α (LinearOrderedCommMonoidWithZero.toLinearOrderedCommMonoid.{u2} α _inst_1)))) (PartialOrder.toPreorder.{u1} β (OrderedCommMonoid.toPartialOrder.{u1} β (LinearOrderedCommMonoid.toOrderedCommMonoid.{u1} β (LinearOrderedCommMonoidWithZero.toLinearOrderedCommMonoid.{u1} β _inst_2)))) (MonoidWithZero.toMulZeroOneClass.{u2} α (CommMonoidWithZero.toMonoidWithZero.{u2} α (LinearOrderedCommMonoidWithZero.toCommMonoidWithZero.{u2} α _inst_1))) (MonoidWithZero.toMulZeroOneClass.{u1} β (CommMonoidWithZero.toMonoidWithZero.{u1} β (LinearOrderedCommMonoidWithZero.toCommMonoidWithZero.{u1} β _inst_2)))) (OrderMonoidWithZeroHom.{u2, u1} α β (PartialOrder.toPreorder.{u2} α (OrderedCommMonoid.toPartialOrder.{u2} α (LinearOrderedCommMonoid.toOrderedCommMonoid.{u2} α (LinearOrderedCommMonoidWithZero.toLinearOrderedCommMonoid.{u2} α _inst_1)))) (PartialOrder.toPreorder.{u1} β (OrderedCommMonoid.toPartialOrder.{u1} β (LinearOrderedCommMonoid.toOrderedCommMonoid.{u1} β (LinearOrderedCommMonoidWithZero.toLinearOrderedCommMonoid.{u1} β _inst_2)))) (MonoidWithZero.toMulZeroOneClass.{u2} α (CommMonoidWithZero.toMonoidWithZero.{u2} α (LinearOrderedCommMonoidWithZero.toCommMonoidWithZero.{u2} α _inst_1))) (MonoidWithZero.toMulZeroOneClass.{u1} β (CommMonoidWithZero.toMonoidWithZero.{u1} β (LinearOrderedCommMonoidWithZero.toCommMonoidWithZero.{u1} β _inst_2)))) (OrderMonoidWithZeroHom.{u2, u1} α β (PartialOrder.toPreorder.{u2} α (OrderedCommMonoid.toPartialOrder.{u2} α (LinearOrderedCommMonoid.toOrderedCommMonoid.{u2} α (LinearOrderedCommMonoidWithZero.toLinearOrderedCommMonoid.{u2} α _inst_1)))) (PartialOrder.toPreorder.{u1} β (OrderedCommMonoid.toPartialOrder.{u1} β (LinearOrderedCommMonoid.toOrderedCommMonoid.{u1} β (LinearOrderedCommMonoidWithZero.toLinearOrderedCommMonoid.{u1} β _inst_2)))) (MonoidWithZero.toMulZeroOneClass.{u2} α (CommMonoidWithZero.toMonoidWithZero.{u2} α (LinearOrderedCommMonoidWithZero.toCommMonoidWithZero.{u2} α _inst_1))) (MonoidWithZero.toMulZeroOneClass.{u1} β (CommMonoidWithZero.toMonoidWithZero.{u1} β (LinearOrderedCommMonoidWithZero.toCommMonoidWithZero.{u1} β _inst_2)))) (instHMul.{max u2 u1} (OrderMonoidWithZeroHom.{u2, u1} α β (PartialOrder.toPreorder.{u2} α (OrderedCommMonoid.toPartialOrder.{u2} α (LinearOrderedCommMonoid.toOrderedCommMonoid.{u2} α (LinearOrderedCommMonoidWithZero.toLinearOrderedCommMonoid.{u2} α _inst_1)))) (PartialOrder.toPreorder.{u1} β (OrderedCommMonoid.toPartialOrder.{u1} β (LinearOrderedCommMonoid.toOrderedCommMonoid.{u1} β (LinearOrderedCommMonoidWithZero.toLinearOrderedCommMonoid.{u1} β _inst_2)))) (MonoidWithZero.toMulZeroOneClass.{u2} α (CommMonoidWithZero.toMonoidWithZero.{u2} α (LinearOrderedCommMonoidWithZero.toCommMonoidWithZero.{u2} α _inst_1))) (MonoidWithZero.toMulZeroOneClass.{u1} β (CommMonoidWithZero.toMonoidWithZero.{u1} β (LinearOrderedCommMonoidWithZero.toCommMonoidWithZero.{u1} β _inst_2)))) (OrderMonoidWithZeroHom.instMulOrderMonoidWithZeroHomToPreorderToPartialOrderToOrderedCommMonoidToLinearOrderedCommMonoidToPreorderToPartialOrderToOrderedCommMonoidToLinearOrderedCommMonoidToMulZeroOneClassToMonoidWithZeroToCommMonoidWithZeroToMulZeroOneClassToMonoidWithZeroToCommMonoidWithZero.{u2, u1} α β _inst_1 _inst_2)) f g) a) (HMul.hMul.{u1, u1, u1} ((fun (x._@.Mathlib.Order.RelIso.Basic._hyg.867 : α) => β) a) ((fun (x._@.Mathlib.Order.RelIso.Basic._hyg.867 : α) => β) a) ((fun (x._@.Mathlib.Order.RelIso.Basic._hyg.867 : α) => β) a) (instHMul.{u1} ((fun (x._@.Mathlib.Order.RelIso.Basic._hyg.867 : α) => β) a) (MulZeroClass.toMul.{u1} ((fun (x._@.Mathlib.Order.RelIso.Basic._hyg.867 : α) => β) a) (MulZeroOneClass.toMulZeroClass.{u1} ((fun (x._@.Mathlib.Order.RelIso.Basic._hyg.867 : α) => β) a) (MonoidWithZero.toMulZeroOneClass.{u1} ((fun (x._@.Mathlib.Order.RelIso.Basic._hyg.867 : α) => β) a) (CommMonoidWithZero.toMonoidWithZero.{u1} ((fun (x._@.Mathlib.Order.RelIso.Basic._hyg.867 : α) => β) a) (LinearOrderedCommMonoidWithZero.toCommMonoidWithZero.{u1} ((fun (x._@.Mathlib.Order.RelIso.Basic._hyg.867 : α) => β) a) _inst_2)))))) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (OrderMonoidWithZeroHom.{u2, u1} α β (PartialOrder.toPreorder.{u2} α (OrderedCommMonoid.toPartialOrder.{u2} α (LinearOrderedCommMonoid.toOrderedCommMonoid.{u2} α (LinearOrderedCommMonoidWithZero.toLinearOrderedCommMonoid.{u2} α _inst_1)))) (PartialOrder.toPreorder.{u1} β (OrderedCommMonoid.toPartialOrder.{u1} β (LinearOrderedCommMonoid.toOrderedCommMonoid.{u1} β (LinearOrderedCommMonoidWithZero.toLinearOrderedCommMonoid.{u1} β _inst_2)))) (MonoidWithZero.toMulZeroOneClass.{u2} α (CommMonoidWithZero.toMonoidWithZero.{u2} α (LinearOrderedCommMonoidWithZero.toCommMonoidWithZero.{u2} α _inst_1))) (MonoidWithZero.toMulZeroOneClass.{u1} β (CommMonoidWithZero.toMonoidWithZero.{u1} β (LinearOrderedCommMonoidWithZero.toCommMonoidWithZero.{u1} β _inst_2)))) α (fun (_x : α) => (fun (x._@.Mathlib.Order.RelIso.Basic._hyg.867 : α) => β) _x) (RelHomClass.toFunLike.{max u2 u1, u2, u1} (OrderMonoidWithZeroHom.{u2, u1} α β (PartialOrder.toPreorder.{u2} α (OrderedCommMonoid.toPartialOrder.{u2} α (LinearOrderedCommMonoid.toOrderedCommMonoid.{u2} α (LinearOrderedCommMonoidWithZero.toLinearOrderedCommMonoid.{u2} α _inst_1)))) (PartialOrder.toPreorder.{u1} β (OrderedCommMonoid.toPartialOrder.{u1} β (LinearOrderedCommMonoid.toOrderedCommMonoid.{u1} β (LinearOrderedCommMonoidWithZero.toLinearOrderedCommMonoid.{u1} β _inst_2)))) (MonoidWithZero.toMulZeroOneClass.{u2} α (CommMonoidWithZero.toMonoidWithZero.{u2} α (LinearOrderedCommMonoidWithZero.toCommMonoidWithZero.{u2} α _inst_1))) (MonoidWithZero.toMulZeroOneClass.{u1} β (CommMonoidWithZero.toMonoidWithZero.{u1} β (LinearOrderedCommMonoidWithZero.toCommMonoidWithZero.{u1} β _inst_2)))) α β (fun (x._@.Mathlib.Order.Hom.Basic._hyg.1896 : α) (x._@.Mathlib.Order.Hom.Basic._hyg.1898 : α) => LE.le.{u2} α (Preorder.toLE.{u2} α (PartialOrder.toPreorder.{u2} α (OrderedCommMonoid.toPartialOrder.{u2} α (LinearOrderedCommMonoid.toOrderedCommMonoid.{u2} α (LinearOrderedCommMonoidWithZero.toLinearOrderedCommMonoid.{u2} α _inst_1))))) x._@.Mathlib.Order.Hom.Basic._hyg.1896 x._@.Mathlib.Order.Hom.Basic._hyg.1898) (fun (x._@.Mathlib.Order.Hom.Basic._hyg.1918 : β) (x._@.Mathlib.Order.Hom.Basic._hyg.1920 : β) => LE.le.{u1} β (Preorder.toLE.{u1} β (PartialOrder.toPreorder.{u1} β (OrderedCommMonoid.toPartialOrder.{u1} β (LinearOrderedCommMonoid.toOrderedCommMonoid.{u1} β (LinearOrderedCommMonoidWithZero.toLinearOrderedCommMonoid.{u1} β _inst_2))))) x._@.Mathlib.Order.Hom.Basic._hyg.1918 x._@.Mathlib.Order.Hom.Basic._hyg.1920) (OrderMonoidHomClass.toOrderHomClass.{max u2 u1, u2, u1} (OrderMonoidWithZeroHom.{u2, u1} α β (PartialOrder.toPreorder.{u2} α (OrderedCommMonoid.toPartialOrder.{u2} α (LinearOrderedCommMonoid.toOrderedCommMonoid.{u2} α (LinearOrderedCommMonoidWithZero.toLinearOrderedCommMonoid.{u2} α _inst_1)))) (PartialOrder.toPreorder.{u1} β (OrderedCommMonoid.toPartialOrder.{u1} β (LinearOrderedCommMonoid.toOrderedCommMonoid.{u1} β (LinearOrderedCommMonoidWithZero.toLinearOrderedCommMonoid.{u1} β _inst_2)))) (MonoidWithZero.toMulZeroOneClass.{u2} α (CommMonoidWithZero.toMonoidWithZero.{u2} α (LinearOrderedCommMonoidWithZero.toCommMonoidWithZero.{u2} α _inst_1))) (MonoidWithZero.toMulZeroOneClass.{u1} β (CommMonoidWithZero.toMonoidWithZero.{u1} β (LinearOrderedCommMonoidWithZero.toCommMonoidWithZero.{u1} β _inst_2)))) α β (PartialOrder.toPreorder.{u2} α (OrderedCommMonoid.toPartialOrder.{u2} α (LinearOrderedCommMonoid.toOrderedCommMonoid.{u2} α (LinearOrderedCommMonoidWithZero.toLinearOrderedCommMonoid.{u2} α _inst_1)))) (PartialOrder.toPreorder.{u1} β (OrderedCommMonoid.toPartialOrder.{u1} β (LinearOrderedCommMonoid.toOrderedCommMonoid.{u1} β (LinearOrderedCommMonoidWithZero.toLinearOrderedCommMonoid.{u1} β _inst_2)))) (MulZeroOneClass.toMulOneClass.{u2} α (MonoidWithZero.toMulZeroOneClass.{u2} α (CommMonoidWithZero.toMonoidWithZero.{u2} α (LinearOrderedCommMonoidWithZero.toCommMonoidWithZero.{u2} α _inst_1)))) (MulZeroOneClass.toMulOneClass.{u1} β (MonoidWithZero.toMulZeroOneClass.{u1} β (CommMonoidWithZero.toMonoidWithZero.{u1} β (LinearOrderedCommMonoidWithZero.toCommMonoidWithZero.{u1} β _inst_2)))) (OrderMonoidWithZeroHomClass.toOrderMonoidHomClass.{max u2 u1, u2, u1} (OrderMonoidWithZeroHom.{u2, u1} α β (PartialOrder.toPreorder.{u2} α (OrderedCommMonoid.toPartialOrder.{u2} α (LinearOrderedCommMonoid.toOrderedCommMonoid.{u2} α (LinearOrderedCommMonoidWithZero.toLinearOrderedCommMonoid.{u2} α _inst_1)))) (PartialOrder.toPreorder.{u1} β (OrderedCommMonoid.toPartialOrder.{u1} β (LinearOrderedCommMonoid.toOrderedCommMonoid.{u1} β (LinearOrderedCommMonoidWithZero.toLinearOrderedCommMonoid.{u1} β _inst_2)))) (MonoidWithZero.toMulZeroOneClass.{u2} α (CommMonoidWithZero.toMonoidWithZero.{u2} α (LinearOrderedCommMonoidWithZero.toCommMonoidWithZero.{u2} α _inst_1))) (MonoidWithZero.toMulZeroOneClass.{u1} β (CommMonoidWithZero.toMonoidWithZero.{u1} β (LinearOrderedCommMonoidWithZero.toCommMonoidWithZero.{u1} β _inst_2)))) α β (PartialOrder.toPreorder.{u2} α (OrderedCommMonoid.toPartialOrder.{u2} α (LinearOrderedCommMonoid.toOrderedCommMonoid.{u2} α (LinearOrderedCommMonoidWithZero.toLinearOrderedCommMonoid.{u2} α _inst_1)))) (PartialOrder.toPreorder.{u1} β (OrderedCommMonoid.toPartialOrder.{u1} β (LinearOrderedCommMonoid.toOrderedCommMonoid.{u1} β (LinearOrderedCommMonoidWithZero.toLinearOrderedCommMonoid.{u1} β _inst_2)))) (MonoidWithZero.toMulZeroOneClass.{u2} α (CommMonoidWithZero.toMonoidWithZero.{u2} α (LinearOrderedCommMonoidWithZero.toCommMonoidWithZero.{u2} α _inst_1))) (MonoidWithZero.toMulZeroOneClass.{u1} β (CommMonoidWithZero.toMonoidWithZero.{u1} β (LinearOrderedCommMonoidWithZero.toCommMonoidWithZero.{u1} β _inst_2))) (OrderMonoidWithZeroHom.instOrderMonoidWithZeroHomClassOrderMonoidWithZeroHom.{u2, u1} α β (PartialOrder.toPreorder.{u2} α (OrderedCommMonoid.toPartialOrder.{u2} α (LinearOrderedCommMonoid.toOrderedCommMonoid.{u2} α (LinearOrderedCommMonoidWithZero.toLinearOrderedCommMonoid.{u2} α _inst_1)))) (PartialOrder.toPreorder.{u1} β (OrderedCommMonoid.toPartialOrder.{u1} β (LinearOrderedCommMonoid.toOrderedCommMonoid.{u1} β (LinearOrderedCommMonoidWithZero.toLinearOrderedCommMonoid.{u1} β _inst_2)))) (MonoidWithZero.toMulZeroOneClass.{u2} α (CommMonoidWithZero.toMonoidWithZero.{u2} α (LinearOrderedCommMonoidWithZero.toCommMonoidWithZero.{u2} α _inst_1))) (MonoidWithZero.toMulZeroOneClass.{u1} β (CommMonoidWithZero.toMonoidWithZero.{u1} β (LinearOrderedCommMonoidWithZero.toCommMonoidWithZero.{u1} β _inst_2))))))) f a) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (OrderMonoidWithZeroHom.{u2, u1} α β (PartialOrder.toPreorder.{u2} α (OrderedCommMonoid.toPartialOrder.{u2} α (LinearOrderedCommMonoid.toOrderedCommMonoid.{u2} α (LinearOrderedCommMonoidWithZero.toLinearOrderedCommMonoid.{u2} α _inst_1)))) (PartialOrder.toPreorder.{u1} β (OrderedCommMonoid.toPartialOrder.{u1} β (LinearOrderedCommMonoid.toOrderedCommMonoid.{u1} β (LinearOrderedCommMonoidWithZero.toLinearOrderedCommMonoid.{u1} β _inst_2)))) (MonoidWithZero.toMulZeroOneClass.{u2} α (CommMonoidWithZero.toMonoidWithZero.{u2} α (LinearOrderedCommMonoidWithZero.toCommMonoidWithZero.{u2} α _inst_1))) (MonoidWithZero.toMulZeroOneClass.{u1} β (CommMonoidWithZero.toMonoidWithZero.{u1} β (LinearOrderedCommMonoidWithZero.toCommMonoidWithZero.{u1} β _inst_2)))) α (fun (_x : α) => (fun (x._@.Mathlib.Order.RelIso.Basic._hyg.867 : α) => β) _x) (RelHomClass.toFunLike.{max u2 u1, u2, u1} (OrderMonoidWithZeroHom.{u2, u1} α β (PartialOrder.toPreorder.{u2} α (OrderedCommMonoid.toPartialOrder.{u2} α (LinearOrderedCommMonoid.toOrderedCommMonoid.{u2} α (LinearOrderedCommMonoidWithZero.toLinearOrderedCommMonoid.{u2} α _inst_1)))) (PartialOrder.toPreorder.{u1} β (OrderedCommMonoid.toPartialOrder.{u1} β (LinearOrderedCommMonoid.toOrderedCommMonoid.{u1} β (LinearOrderedCommMonoidWithZero.toLinearOrderedCommMonoid.{u1} β _inst_2)))) (MonoidWithZero.toMulZeroOneClass.{u2} α (CommMonoidWithZero.toMonoidWithZero.{u2} α (LinearOrderedCommMonoidWithZero.toCommMonoidWithZero.{u2} α _inst_1))) (MonoidWithZero.toMulZeroOneClass.{u1} β (CommMonoidWithZero.toMonoidWithZero.{u1} β (LinearOrderedCommMonoidWithZero.toCommMonoidWithZero.{u1} β _inst_2)))) α β (fun (x._@.Mathlib.Order.Hom.Basic._hyg.1896 : α) (x._@.Mathlib.Order.Hom.Basic._hyg.1898 : α) => LE.le.{u2} α (Preorder.toLE.{u2} α (PartialOrder.toPreorder.{u2} α (OrderedCommMonoid.toPartialOrder.{u2} α (LinearOrderedCommMonoid.toOrderedCommMonoid.{u2} α (LinearOrderedCommMonoidWithZero.toLinearOrderedCommMonoid.{u2} α _inst_1))))) x._@.Mathlib.Order.Hom.Basic._hyg.1896 x._@.Mathlib.Order.Hom.Basic._hyg.1898) (fun (x._@.Mathlib.Order.Hom.Basic._hyg.1918 : β) (x._@.Mathlib.Order.Hom.Basic._hyg.1920 : β) => LE.le.{u1} β (Preorder.toLE.{u1} β (PartialOrder.toPreorder.{u1} β (OrderedCommMonoid.toPartialOrder.{u1} β (LinearOrderedCommMonoid.toOrderedCommMonoid.{u1} β (LinearOrderedCommMonoidWithZero.toLinearOrderedCommMonoid.{u1} β _inst_2))))) x._@.Mathlib.Order.Hom.Basic._hyg.1918 x._@.Mathlib.Order.Hom.Basic._hyg.1920) (OrderMonoidHomClass.toOrderHomClass.{max u2 u1, u2, u1} (OrderMonoidWithZeroHom.{u2, u1} α β (PartialOrder.toPreorder.{u2} α (OrderedCommMonoid.toPartialOrder.{u2} α (LinearOrderedCommMonoid.toOrderedCommMonoid.{u2} α (LinearOrderedCommMonoidWithZero.toLinearOrderedCommMonoid.{u2} α _inst_1)))) (PartialOrder.toPreorder.{u1} β (OrderedCommMonoid.toPartialOrder.{u1} β (LinearOrderedCommMonoid.toOrderedCommMonoid.{u1} β (LinearOrderedCommMonoidWithZero.toLinearOrderedCommMonoid.{u1} β _inst_2)))) (MonoidWithZero.toMulZeroOneClass.{u2} α (CommMonoidWithZero.toMonoidWithZero.{u2} α (LinearOrderedCommMonoidWithZero.toCommMonoidWithZero.{u2} α _inst_1))) (MonoidWithZero.toMulZeroOneClass.{u1} β (CommMonoidWithZero.toMonoidWithZero.{u1} β (LinearOrderedCommMonoidWithZero.toCommMonoidWithZero.{u1} β _inst_2)))) α β (PartialOrder.toPreorder.{u2} α (OrderedCommMonoid.toPartialOrder.{u2} α (LinearOrderedCommMonoid.toOrderedCommMonoid.{u2} α (LinearOrderedCommMonoidWithZero.toLinearOrderedCommMonoid.{u2} α _inst_1)))) (PartialOrder.toPreorder.{u1} β (OrderedCommMonoid.toPartialOrder.{u1} β (LinearOrderedCommMonoid.toOrderedCommMonoid.{u1} β (LinearOrderedCommMonoidWithZero.toLinearOrderedCommMonoid.{u1} β _inst_2)))) (MulZeroOneClass.toMulOneClass.{u2} α (MonoidWithZero.toMulZeroOneClass.{u2} α (CommMonoidWithZero.toMonoidWithZero.{u2} α (LinearOrderedCommMonoidWithZero.toCommMonoidWithZero.{u2} α _inst_1)))) (MulZeroOneClass.toMulOneClass.{u1} β (MonoidWithZero.toMulZeroOneClass.{u1} β (CommMonoidWithZero.toMonoidWithZero.{u1} β (LinearOrderedCommMonoidWithZero.toCommMonoidWithZero.{u1} β _inst_2)))) (OrderMonoidWithZeroHomClass.toOrderMonoidHomClass.{max u2 u1, u2, u1} (OrderMonoidWithZeroHom.{u2, u1} α β (PartialOrder.toPreorder.{u2} α (OrderedCommMonoid.toPartialOrder.{u2} α (LinearOrderedCommMonoid.toOrderedCommMonoid.{u2} α (LinearOrderedCommMonoidWithZero.toLinearOrderedCommMonoid.{u2} α _inst_1)))) (PartialOrder.toPreorder.{u1} β (OrderedCommMonoid.toPartialOrder.{u1} β (LinearOrderedCommMonoid.toOrderedCommMonoid.{u1} β (LinearOrderedCommMonoidWithZero.toLinearOrderedCommMonoid.{u1} β _inst_2)))) (MonoidWithZero.toMulZeroOneClass.{u2} α (CommMonoidWithZero.toMonoidWithZero.{u2} α (LinearOrderedCommMonoidWithZero.toCommMonoidWithZero.{u2} α _inst_1))) (MonoidWithZero.toMulZeroOneClass.{u1} β (CommMonoidWithZero.toMonoidWithZero.{u1} β (LinearOrderedCommMonoidWithZero.toCommMonoidWithZero.{u1} β _inst_2)))) α β (PartialOrder.toPreorder.{u2} α (OrderedCommMonoid.toPartialOrder.{u2} α (LinearOrderedCommMonoid.toOrderedCommMonoid.{u2} α (LinearOrderedCommMonoidWithZero.toLinearOrderedCommMonoid.{u2} α _inst_1)))) (PartialOrder.toPreorder.{u1} β (OrderedCommMonoid.toPartialOrder.{u1} β (LinearOrderedCommMonoid.toOrderedCommMonoid.{u1} β (LinearOrderedCommMonoidWithZero.toLinearOrderedCommMonoid.{u1} β _inst_2)))) (MonoidWithZero.toMulZeroOneClass.{u2} α (CommMonoidWithZero.toMonoidWithZero.{u2} α (LinearOrderedCommMonoidWithZero.toCommMonoidWithZero.{u2} α _inst_1))) (MonoidWithZero.toMulZeroOneClass.{u1} β (CommMonoidWithZero.toMonoidWithZero.{u1} β (LinearOrderedCommMonoidWithZero.toCommMonoidWithZero.{u1} β _inst_2))) (OrderMonoidWithZeroHom.instOrderMonoidWithZeroHomClassOrderMonoidWithZeroHom.{u2, u1} α β (PartialOrder.toPreorder.{u2} α (OrderedCommMonoid.toPartialOrder.{u2} α (LinearOrderedCommMonoid.toOrderedCommMonoid.{u2} α (LinearOrderedCommMonoidWithZero.toLinearOrderedCommMonoid.{u2} α _inst_1)))) (PartialOrder.toPreorder.{u1} β (OrderedCommMonoid.toPartialOrder.{u1} β (LinearOrderedCommMonoid.toOrderedCommMonoid.{u1} β (LinearOrderedCommMonoidWithZero.toLinearOrderedCommMonoid.{u1} β _inst_2)))) (MonoidWithZero.toMulZeroOneClass.{u2} α (CommMonoidWithZero.toMonoidWithZero.{u2} α (LinearOrderedCommMonoidWithZero.toCommMonoidWithZero.{u2} α _inst_1))) (MonoidWithZero.toMulZeroOneClass.{u1} β (CommMonoidWithZero.toMonoidWithZero.{u1} β (LinearOrderedCommMonoidWithZero.toCommMonoidWithZero.{u1} β _inst_2))))))) g a))
Case conversion may be inaccurate. Consider using '#align order_monoid_with_zero_hom.mul_apply OrderMonoidWithZeroHom.mul_applyₓ'. -/
@[simp]
theorem mul_apply (f g : α →*₀o β) (a : α) : (f * g) a = f a * g a :=
  rfl
#align order_monoid_with_zero_hom.mul_apply OrderMonoidWithZeroHom.mul_apply

/- warning: order_monoid_with_zero_hom.mul_comp -> OrderMonoidWithZeroHom.mul_comp is a dubious translation:
lean 3 declaration is
  forall {α : Type.{u1}} {β : Type.{u2}} {γ : Type.{u3}} [_inst_1 : LinearOrderedCommMonoidWithZero.{u1} α] [_inst_2 : LinearOrderedCommMonoidWithZero.{u2} β] [_inst_3 : LinearOrderedCommMonoidWithZero.{u3} γ] (g₁ : OrderMonoidWithZeroHom.{u2, u3} β γ (PartialOrder.toPreorder.{u2} β (OrderedCommMonoid.toPartialOrder.{u2} β (LinearOrderedCommMonoid.toOrderedCommMonoid.{u2} β (LinearOrderedCommMonoidWithZero.toLinearOrderedCommMonoid.{u2} β _inst_2)))) (PartialOrder.toPreorder.{u3} γ (OrderedCommMonoid.toPartialOrder.{u3} γ (LinearOrderedCommMonoid.toOrderedCommMonoid.{u3} γ (LinearOrderedCommMonoidWithZero.toLinearOrderedCommMonoid.{u3} γ _inst_3)))) (MonoidWithZero.toMulZeroOneClass.{u2} β (CommMonoidWithZero.toMonoidWithZero.{u2} β (LinearOrderedCommMonoidWithZero.toCommMonoidWithZero.{u2} β _inst_2))) (MonoidWithZero.toMulZeroOneClass.{u3} γ (CommMonoidWithZero.toMonoidWithZero.{u3} γ (LinearOrderedCommMonoidWithZero.toCommMonoidWithZero.{u3} γ _inst_3)))) (g₂ : OrderMonoidWithZeroHom.{u2, u3} β γ (PartialOrder.toPreorder.{u2} β (OrderedCommMonoid.toPartialOrder.{u2} β (LinearOrderedCommMonoid.toOrderedCommMonoid.{u2} β (LinearOrderedCommMonoidWithZero.toLinearOrderedCommMonoid.{u2} β _inst_2)))) (PartialOrder.toPreorder.{u3} γ (OrderedCommMonoid.toPartialOrder.{u3} γ (LinearOrderedCommMonoid.toOrderedCommMonoid.{u3} γ (LinearOrderedCommMonoidWithZero.toLinearOrderedCommMonoid.{u3} γ _inst_3)))) (MonoidWithZero.toMulZeroOneClass.{u2} β (CommMonoidWithZero.toMonoidWithZero.{u2} β (LinearOrderedCommMonoidWithZero.toCommMonoidWithZero.{u2} β _inst_2))) (MonoidWithZero.toMulZeroOneClass.{u3} γ (CommMonoidWithZero.toMonoidWithZero.{u3} γ (LinearOrderedCommMonoidWithZero.toCommMonoidWithZero.{u3} γ _inst_3)))) (f : OrderMonoidWithZeroHom.{u1, u2} α β (PartialOrder.toPreorder.{u1} α (OrderedCommMonoid.toPartialOrder.{u1} α (LinearOrderedCommMonoid.toOrderedCommMonoid.{u1} α (LinearOrderedCommMonoidWithZero.toLinearOrderedCommMonoid.{u1} α _inst_1)))) (PartialOrder.toPreorder.{u2} β (OrderedCommMonoid.toPartialOrder.{u2} β (LinearOrderedCommMonoid.toOrderedCommMonoid.{u2} β (LinearOrderedCommMonoidWithZero.toLinearOrderedCommMonoid.{u2} β _inst_2)))) (MonoidWithZero.toMulZeroOneClass.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (LinearOrderedCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) (MonoidWithZero.toMulZeroOneClass.{u2} β (CommMonoidWithZero.toMonoidWithZero.{u2} β (LinearOrderedCommMonoidWithZero.toCommMonoidWithZero.{u2} β _inst_2)))), Eq.{max (succ u1) (succ u3)} (OrderMonoidWithZeroHom.{u1, u3} α γ (PartialOrder.toPreorder.{u1} α (OrderedCommMonoid.toPartialOrder.{u1} α (LinearOrderedCommMonoid.toOrderedCommMonoid.{u1} α (LinearOrderedCommMonoidWithZero.toLinearOrderedCommMonoid.{u1} α _inst_1)))) (PartialOrder.toPreorder.{u3} γ (OrderedCommMonoid.toPartialOrder.{u3} γ (LinearOrderedCommMonoid.toOrderedCommMonoid.{u3} γ (LinearOrderedCommMonoidWithZero.toLinearOrderedCommMonoid.{u3} γ _inst_3)))) (MonoidWithZero.toMulZeroOneClass.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (LinearOrderedCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) (MonoidWithZero.toMulZeroOneClass.{u3} γ (CommMonoidWithZero.toMonoidWithZero.{u3} γ (LinearOrderedCommMonoidWithZero.toCommMonoidWithZero.{u3} γ _inst_3)))) (OrderMonoidWithZeroHom.comp.{u1, u2, u3} α β γ (PartialOrder.toPreorder.{u1} α (OrderedCommMonoid.toPartialOrder.{u1} α (LinearOrderedCommMonoid.toOrderedCommMonoid.{u1} α (LinearOrderedCommMonoidWithZero.toLinearOrderedCommMonoid.{u1} α _inst_1)))) (PartialOrder.toPreorder.{u2} β (OrderedCommMonoid.toPartialOrder.{u2} β (LinearOrderedCommMonoid.toOrderedCommMonoid.{u2} β (LinearOrderedCommMonoidWithZero.toLinearOrderedCommMonoid.{u2} β _inst_2)))) (PartialOrder.toPreorder.{u3} γ (OrderedCommMonoid.toPartialOrder.{u3} γ (LinearOrderedCommMonoid.toOrderedCommMonoid.{u3} γ (LinearOrderedCommMonoidWithZero.toLinearOrderedCommMonoid.{u3} γ _inst_3)))) (MonoidWithZero.toMulZeroOneClass.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (LinearOrderedCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) (MonoidWithZero.toMulZeroOneClass.{u2} β (CommMonoidWithZero.toMonoidWithZero.{u2} β (LinearOrderedCommMonoidWithZero.toCommMonoidWithZero.{u2} β _inst_2))) (MonoidWithZero.toMulZeroOneClass.{u3} γ (CommMonoidWithZero.toMonoidWithZero.{u3} γ (LinearOrderedCommMonoidWithZero.toCommMonoidWithZero.{u3} γ _inst_3))) (HMul.hMul.{max u2 u3, max u2 u3, max u2 u3} (OrderMonoidWithZeroHom.{u2, u3} β γ (PartialOrder.toPreorder.{u2} β (OrderedCommMonoid.toPartialOrder.{u2} β (LinearOrderedCommMonoid.toOrderedCommMonoid.{u2} β (LinearOrderedCommMonoidWithZero.toLinearOrderedCommMonoid.{u2} β _inst_2)))) (PartialOrder.toPreorder.{u3} γ (OrderedCommMonoid.toPartialOrder.{u3} γ (LinearOrderedCommMonoid.toOrderedCommMonoid.{u3} γ (LinearOrderedCommMonoidWithZero.toLinearOrderedCommMonoid.{u3} γ _inst_3)))) (MonoidWithZero.toMulZeroOneClass.{u2} β (CommMonoidWithZero.toMonoidWithZero.{u2} β (LinearOrderedCommMonoidWithZero.toCommMonoidWithZero.{u2} β _inst_2))) (MonoidWithZero.toMulZeroOneClass.{u3} γ (CommMonoidWithZero.toMonoidWithZero.{u3} γ (LinearOrderedCommMonoidWithZero.toCommMonoidWithZero.{u3} γ _inst_3)))) (OrderMonoidWithZeroHom.{u2, u3} β γ (PartialOrder.toPreorder.{u2} β (OrderedCommMonoid.toPartialOrder.{u2} β (LinearOrderedCommMonoid.toOrderedCommMonoid.{u2} β (LinearOrderedCommMonoidWithZero.toLinearOrderedCommMonoid.{u2} β _inst_2)))) (PartialOrder.toPreorder.{u3} γ (OrderedCommMonoid.toPartialOrder.{u3} γ (LinearOrderedCommMonoid.toOrderedCommMonoid.{u3} γ (LinearOrderedCommMonoidWithZero.toLinearOrderedCommMonoid.{u3} γ _inst_3)))) (MonoidWithZero.toMulZeroOneClass.{u2} β (CommMonoidWithZero.toMonoidWithZero.{u2} β (LinearOrderedCommMonoidWithZero.toCommMonoidWithZero.{u2} β _inst_2))) (MonoidWithZero.toMulZeroOneClass.{u3} γ (CommMonoidWithZero.toMonoidWithZero.{u3} γ (LinearOrderedCommMonoidWithZero.toCommMonoidWithZero.{u3} γ _inst_3)))) (OrderMonoidWithZeroHom.{u2, u3} β γ (PartialOrder.toPreorder.{u2} β (OrderedCommMonoid.toPartialOrder.{u2} β (LinearOrderedCommMonoid.toOrderedCommMonoid.{u2} β (LinearOrderedCommMonoidWithZero.toLinearOrderedCommMonoid.{u2} β _inst_2)))) (PartialOrder.toPreorder.{u3} γ (OrderedCommMonoid.toPartialOrder.{u3} γ (LinearOrderedCommMonoid.toOrderedCommMonoid.{u3} γ (LinearOrderedCommMonoidWithZero.toLinearOrderedCommMonoid.{u3} γ _inst_3)))) (MonoidWithZero.toMulZeroOneClass.{u2} β (CommMonoidWithZero.toMonoidWithZero.{u2} β (LinearOrderedCommMonoidWithZero.toCommMonoidWithZero.{u2} β _inst_2))) (MonoidWithZero.toMulZeroOneClass.{u3} γ (CommMonoidWithZero.toMonoidWithZero.{u3} γ (LinearOrderedCommMonoidWithZero.toCommMonoidWithZero.{u3} γ _inst_3)))) (instHMul.{max u2 u3} (OrderMonoidWithZeroHom.{u2, u3} β γ (PartialOrder.toPreorder.{u2} β (OrderedCommMonoid.toPartialOrder.{u2} β (LinearOrderedCommMonoid.toOrderedCommMonoid.{u2} β (LinearOrderedCommMonoidWithZero.toLinearOrderedCommMonoid.{u2} β _inst_2)))) (PartialOrder.toPreorder.{u3} γ (OrderedCommMonoid.toPartialOrder.{u3} γ (LinearOrderedCommMonoid.toOrderedCommMonoid.{u3} γ (LinearOrderedCommMonoidWithZero.toLinearOrderedCommMonoid.{u3} γ _inst_3)))) (MonoidWithZero.toMulZeroOneClass.{u2} β (CommMonoidWithZero.toMonoidWithZero.{u2} β (LinearOrderedCommMonoidWithZero.toCommMonoidWithZero.{u2} β _inst_2))) (MonoidWithZero.toMulZeroOneClass.{u3} γ (CommMonoidWithZero.toMonoidWithZero.{u3} γ (LinearOrderedCommMonoidWithZero.toCommMonoidWithZero.{u3} γ _inst_3)))) (OrderMonoidWithZeroHom.hasMul.{u2, u3} β γ _inst_2 _inst_3)) g₁ g₂) f) (HMul.hMul.{max u1 u3, max u1 u3, max u1 u3} (OrderMonoidWithZeroHom.{u1, u3} α γ (PartialOrder.toPreorder.{u1} α (OrderedCommMonoid.toPartialOrder.{u1} α (LinearOrderedCommMonoid.toOrderedCommMonoid.{u1} α (LinearOrderedCommMonoidWithZero.toLinearOrderedCommMonoid.{u1} α _inst_1)))) (PartialOrder.toPreorder.{u3} γ (OrderedCommMonoid.toPartialOrder.{u3} γ (LinearOrderedCommMonoid.toOrderedCommMonoid.{u3} γ (LinearOrderedCommMonoidWithZero.toLinearOrderedCommMonoid.{u3} γ _inst_3)))) (MonoidWithZero.toMulZeroOneClass.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (LinearOrderedCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) (MonoidWithZero.toMulZeroOneClass.{u3} γ (CommMonoidWithZero.toMonoidWithZero.{u3} γ (LinearOrderedCommMonoidWithZero.toCommMonoidWithZero.{u3} γ _inst_3)))) (OrderMonoidWithZeroHom.{u1, u3} α γ (PartialOrder.toPreorder.{u1} α (OrderedCommMonoid.toPartialOrder.{u1} α (LinearOrderedCommMonoid.toOrderedCommMonoid.{u1} α (LinearOrderedCommMonoidWithZero.toLinearOrderedCommMonoid.{u1} α _inst_1)))) (PartialOrder.toPreorder.{u3} γ (OrderedCommMonoid.toPartialOrder.{u3} γ (LinearOrderedCommMonoid.toOrderedCommMonoid.{u3} γ (LinearOrderedCommMonoidWithZero.toLinearOrderedCommMonoid.{u3} γ _inst_3)))) (MonoidWithZero.toMulZeroOneClass.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (LinearOrderedCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) (MonoidWithZero.toMulZeroOneClass.{u3} γ (CommMonoidWithZero.toMonoidWithZero.{u3} γ (LinearOrderedCommMonoidWithZero.toCommMonoidWithZero.{u3} γ _inst_3)))) (OrderMonoidWithZeroHom.{u1, u3} α γ (PartialOrder.toPreorder.{u1} α (OrderedCommMonoid.toPartialOrder.{u1} α (LinearOrderedCommMonoid.toOrderedCommMonoid.{u1} α (LinearOrderedCommMonoidWithZero.toLinearOrderedCommMonoid.{u1} α _inst_1)))) (PartialOrder.toPreorder.{u3} γ (OrderedCommMonoid.toPartialOrder.{u3} γ (LinearOrderedCommMonoid.toOrderedCommMonoid.{u3} γ (LinearOrderedCommMonoidWithZero.toLinearOrderedCommMonoid.{u3} γ _inst_3)))) (MonoidWithZero.toMulZeroOneClass.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (LinearOrderedCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) (MonoidWithZero.toMulZeroOneClass.{u3} γ (CommMonoidWithZero.toMonoidWithZero.{u3} γ (LinearOrderedCommMonoidWithZero.toCommMonoidWithZero.{u3} γ _inst_3)))) (instHMul.{max u1 u3} (OrderMonoidWithZeroHom.{u1, u3} α γ (PartialOrder.toPreorder.{u1} α (OrderedCommMonoid.toPartialOrder.{u1} α (LinearOrderedCommMonoid.toOrderedCommMonoid.{u1} α (LinearOrderedCommMonoidWithZero.toLinearOrderedCommMonoid.{u1} α _inst_1)))) (PartialOrder.toPreorder.{u3} γ (OrderedCommMonoid.toPartialOrder.{u3} γ (LinearOrderedCommMonoid.toOrderedCommMonoid.{u3} γ (LinearOrderedCommMonoidWithZero.toLinearOrderedCommMonoid.{u3} γ _inst_3)))) (MonoidWithZero.toMulZeroOneClass.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (LinearOrderedCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) (MonoidWithZero.toMulZeroOneClass.{u3} γ (CommMonoidWithZero.toMonoidWithZero.{u3} γ (LinearOrderedCommMonoidWithZero.toCommMonoidWithZero.{u3} γ _inst_3)))) (OrderMonoidWithZeroHom.hasMul.{u1, u3} α γ _inst_1 _inst_3)) (OrderMonoidWithZeroHom.comp.{u1, u2, u3} α β γ (PartialOrder.toPreorder.{u1} α (OrderedCommMonoid.toPartialOrder.{u1} α (LinearOrderedCommMonoid.toOrderedCommMonoid.{u1} α (LinearOrderedCommMonoidWithZero.toLinearOrderedCommMonoid.{u1} α _inst_1)))) (PartialOrder.toPreorder.{u2} β (OrderedCommMonoid.toPartialOrder.{u2} β (LinearOrderedCommMonoid.toOrderedCommMonoid.{u2} β (LinearOrderedCommMonoidWithZero.toLinearOrderedCommMonoid.{u2} β _inst_2)))) (PartialOrder.toPreorder.{u3} γ (OrderedCommMonoid.toPartialOrder.{u3} γ (LinearOrderedCommMonoid.toOrderedCommMonoid.{u3} γ (LinearOrderedCommMonoidWithZero.toLinearOrderedCommMonoid.{u3} γ _inst_3)))) (MonoidWithZero.toMulZeroOneClass.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (LinearOrderedCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) (MonoidWithZero.toMulZeroOneClass.{u2} β (CommMonoidWithZero.toMonoidWithZero.{u2} β (LinearOrderedCommMonoidWithZero.toCommMonoidWithZero.{u2} β _inst_2))) (MonoidWithZero.toMulZeroOneClass.{u3} γ (CommMonoidWithZero.toMonoidWithZero.{u3} γ (LinearOrderedCommMonoidWithZero.toCommMonoidWithZero.{u3} γ _inst_3))) g₁ f) (OrderMonoidWithZeroHom.comp.{u1, u2, u3} α β γ (PartialOrder.toPreorder.{u1} α (OrderedCommMonoid.toPartialOrder.{u1} α (LinearOrderedCommMonoid.toOrderedCommMonoid.{u1} α (LinearOrderedCommMonoidWithZero.toLinearOrderedCommMonoid.{u1} α _inst_1)))) (PartialOrder.toPreorder.{u2} β (OrderedCommMonoid.toPartialOrder.{u2} β (LinearOrderedCommMonoid.toOrderedCommMonoid.{u2} β (LinearOrderedCommMonoidWithZero.toLinearOrderedCommMonoid.{u2} β _inst_2)))) (PartialOrder.toPreorder.{u3} γ (OrderedCommMonoid.toPartialOrder.{u3} γ (LinearOrderedCommMonoid.toOrderedCommMonoid.{u3} γ (LinearOrderedCommMonoidWithZero.toLinearOrderedCommMonoid.{u3} γ _inst_3)))) (MonoidWithZero.toMulZeroOneClass.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (LinearOrderedCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) (MonoidWithZero.toMulZeroOneClass.{u2} β (CommMonoidWithZero.toMonoidWithZero.{u2} β (LinearOrderedCommMonoidWithZero.toCommMonoidWithZero.{u2} β _inst_2))) (MonoidWithZero.toMulZeroOneClass.{u3} γ (CommMonoidWithZero.toMonoidWithZero.{u3} γ (LinearOrderedCommMonoidWithZero.toCommMonoidWithZero.{u3} γ _inst_3))) g₂ f))
but is expected to have type
  forall {α : Type.{u1}} {β : Type.{u3}} {γ : Type.{u2}} [_inst_1 : LinearOrderedCommMonoidWithZero.{u1} α] [_inst_2 : LinearOrderedCommMonoidWithZero.{u3} β] [_inst_3 : LinearOrderedCommMonoidWithZero.{u2} γ] (g₁ : OrderMonoidWithZeroHom.{u3, u2} β γ (PartialOrder.toPreorder.{u3} β (OrderedCommMonoid.toPartialOrder.{u3} β (LinearOrderedCommMonoid.toOrderedCommMonoid.{u3} β (LinearOrderedCommMonoidWithZero.toLinearOrderedCommMonoid.{u3} β _inst_2)))) (PartialOrder.toPreorder.{u2} γ (OrderedCommMonoid.toPartialOrder.{u2} γ (LinearOrderedCommMonoid.toOrderedCommMonoid.{u2} γ (LinearOrderedCommMonoidWithZero.toLinearOrderedCommMonoid.{u2} γ _inst_3)))) (MonoidWithZero.toMulZeroOneClass.{u3} β (CommMonoidWithZero.toMonoidWithZero.{u3} β (LinearOrderedCommMonoidWithZero.toCommMonoidWithZero.{u3} β _inst_2))) (MonoidWithZero.toMulZeroOneClass.{u2} γ (CommMonoidWithZero.toMonoidWithZero.{u2} γ (LinearOrderedCommMonoidWithZero.toCommMonoidWithZero.{u2} γ _inst_3)))) (g₂ : OrderMonoidWithZeroHom.{u3, u2} β γ (PartialOrder.toPreorder.{u3} β (OrderedCommMonoid.toPartialOrder.{u3} β (LinearOrderedCommMonoid.toOrderedCommMonoid.{u3} β (LinearOrderedCommMonoidWithZero.toLinearOrderedCommMonoid.{u3} β _inst_2)))) (PartialOrder.toPreorder.{u2} γ (OrderedCommMonoid.toPartialOrder.{u2} γ (LinearOrderedCommMonoid.toOrderedCommMonoid.{u2} γ (LinearOrderedCommMonoidWithZero.toLinearOrderedCommMonoid.{u2} γ _inst_3)))) (MonoidWithZero.toMulZeroOneClass.{u3} β (CommMonoidWithZero.toMonoidWithZero.{u3} β (LinearOrderedCommMonoidWithZero.toCommMonoidWithZero.{u3} β _inst_2))) (MonoidWithZero.toMulZeroOneClass.{u2} γ (CommMonoidWithZero.toMonoidWithZero.{u2} γ (LinearOrderedCommMonoidWithZero.toCommMonoidWithZero.{u2} γ _inst_3)))) (f : OrderMonoidWithZeroHom.{u1, u3} α β (PartialOrder.toPreorder.{u1} α (OrderedCommMonoid.toPartialOrder.{u1} α (LinearOrderedCommMonoid.toOrderedCommMonoid.{u1} α (LinearOrderedCommMonoidWithZero.toLinearOrderedCommMonoid.{u1} α _inst_1)))) (PartialOrder.toPreorder.{u3} β (OrderedCommMonoid.toPartialOrder.{u3} β (LinearOrderedCommMonoid.toOrderedCommMonoid.{u3} β (LinearOrderedCommMonoidWithZero.toLinearOrderedCommMonoid.{u3} β _inst_2)))) (MonoidWithZero.toMulZeroOneClass.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (LinearOrderedCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) (MonoidWithZero.toMulZeroOneClass.{u3} β (CommMonoidWithZero.toMonoidWithZero.{u3} β (LinearOrderedCommMonoidWithZero.toCommMonoidWithZero.{u3} β _inst_2)))), Eq.{max (succ u1) (succ u2)} (OrderMonoidWithZeroHom.{u1, u2} α γ (PartialOrder.toPreorder.{u1} α (OrderedCommMonoid.toPartialOrder.{u1} α (LinearOrderedCommMonoid.toOrderedCommMonoid.{u1} α (LinearOrderedCommMonoidWithZero.toLinearOrderedCommMonoid.{u1} α _inst_1)))) (PartialOrder.toPreorder.{u2} γ (OrderedCommMonoid.toPartialOrder.{u2} γ (LinearOrderedCommMonoid.toOrderedCommMonoid.{u2} γ (LinearOrderedCommMonoidWithZero.toLinearOrderedCommMonoid.{u2} γ _inst_3)))) (MonoidWithZero.toMulZeroOneClass.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (LinearOrderedCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) (MonoidWithZero.toMulZeroOneClass.{u2} γ (CommMonoidWithZero.toMonoidWithZero.{u2} γ (LinearOrderedCommMonoidWithZero.toCommMonoidWithZero.{u2} γ _inst_3)))) (OrderMonoidWithZeroHom.comp.{u1, u3, u2} α β γ (PartialOrder.toPreorder.{u1} α (OrderedCommMonoid.toPartialOrder.{u1} α (LinearOrderedCommMonoid.toOrderedCommMonoid.{u1} α (LinearOrderedCommMonoidWithZero.toLinearOrderedCommMonoid.{u1} α _inst_1)))) (PartialOrder.toPreorder.{u3} β (OrderedCommMonoid.toPartialOrder.{u3} β (LinearOrderedCommMonoid.toOrderedCommMonoid.{u3} β (LinearOrderedCommMonoidWithZero.toLinearOrderedCommMonoid.{u3} β _inst_2)))) (PartialOrder.toPreorder.{u2} γ (OrderedCommMonoid.toPartialOrder.{u2} γ (LinearOrderedCommMonoid.toOrderedCommMonoid.{u2} γ (LinearOrderedCommMonoidWithZero.toLinearOrderedCommMonoid.{u2} γ _inst_3)))) (MonoidWithZero.toMulZeroOneClass.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (LinearOrderedCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) (MonoidWithZero.toMulZeroOneClass.{u3} β (CommMonoidWithZero.toMonoidWithZero.{u3} β (LinearOrderedCommMonoidWithZero.toCommMonoidWithZero.{u3} β _inst_2))) (MonoidWithZero.toMulZeroOneClass.{u2} γ (CommMonoidWithZero.toMonoidWithZero.{u2} γ (LinearOrderedCommMonoidWithZero.toCommMonoidWithZero.{u2} γ _inst_3))) (HMul.hMul.{max u3 u2, max u3 u2, max u3 u2} (OrderMonoidWithZeroHom.{u3, u2} β γ (PartialOrder.toPreorder.{u3} β (OrderedCommMonoid.toPartialOrder.{u3} β (LinearOrderedCommMonoid.toOrderedCommMonoid.{u3} β (LinearOrderedCommMonoidWithZero.toLinearOrderedCommMonoid.{u3} β _inst_2)))) (PartialOrder.toPreorder.{u2} γ (OrderedCommMonoid.toPartialOrder.{u2} γ (LinearOrderedCommMonoid.toOrderedCommMonoid.{u2} γ (LinearOrderedCommMonoidWithZero.toLinearOrderedCommMonoid.{u2} γ _inst_3)))) (MonoidWithZero.toMulZeroOneClass.{u3} β (CommMonoidWithZero.toMonoidWithZero.{u3} β (LinearOrderedCommMonoidWithZero.toCommMonoidWithZero.{u3} β _inst_2))) (MonoidWithZero.toMulZeroOneClass.{u2} γ (CommMonoidWithZero.toMonoidWithZero.{u2} γ (LinearOrderedCommMonoidWithZero.toCommMonoidWithZero.{u2} γ _inst_3)))) (OrderMonoidWithZeroHom.{u3, u2} β γ (PartialOrder.toPreorder.{u3} β (OrderedCommMonoid.toPartialOrder.{u3} β (LinearOrderedCommMonoid.toOrderedCommMonoid.{u3} β (LinearOrderedCommMonoidWithZero.toLinearOrderedCommMonoid.{u3} β _inst_2)))) (PartialOrder.toPreorder.{u2} γ (OrderedCommMonoid.toPartialOrder.{u2} γ (LinearOrderedCommMonoid.toOrderedCommMonoid.{u2} γ (LinearOrderedCommMonoidWithZero.toLinearOrderedCommMonoid.{u2} γ _inst_3)))) (MonoidWithZero.toMulZeroOneClass.{u3} β (CommMonoidWithZero.toMonoidWithZero.{u3} β (LinearOrderedCommMonoidWithZero.toCommMonoidWithZero.{u3} β _inst_2))) (MonoidWithZero.toMulZeroOneClass.{u2} γ (CommMonoidWithZero.toMonoidWithZero.{u2} γ (LinearOrderedCommMonoidWithZero.toCommMonoidWithZero.{u2} γ _inst_3)))) (OrderMonoidWithZeroHom.{u3, u2} β γ (PartialOrder.toPreorder.{u3} β (OrderedCommMonoid.toPartialOrder.{u3} β (LinearOrderedCommMonoid.toOrderedCommMonoid.{u3} β (LinearOrderedCommMonoidWithZero.toLinearOrderedCommMonoid.{u3} β _inst_2)))) (PartialOrder.toPreorder.{u2} γ (OrderedCommMonoid.toPartialOrder.{u2} γ (LinearOrderedCommMonoid.toOrderedCommMonoid.{u2} γ (LinearOrderedCommMonoidWithZero.toLinearOrderedCommMonoid.{u2} γ _inst_3)))) (MonoidWithZero.toMulZeroOneClass.{u3} β (CommMonoidWithZero.toMonoidWithZero.{u3} β (LinearOrderedCommMonoidWithZero.toCommMonoidWithZero.{u3} β _inst_2))) (MonoidWithZero.toMulZeroOneClass.{u2} γ (CommMonoidWithZero.toMonoidWithZero.{u2} γ (LinearOrderedCommMonoidWithZero.toCommMonoidWithZero.{u2} γ _inst_3)))) (instHMul.{max u3 u2} (OrderMonoidWithZeroHom.{u3, u2} β γ (PartialOrder.toPreorder.{u3} β (OrderedCommMonoid.toPartialOrder.{u3} β (LinearOrderedCommMonoid.toOrderedCommMonoid.{u3} β (LinearOrderedCommMonoidWithZero.toLinearOrderedCommMonoid.{u3} β _inst_2)))) (PartialOrder.toPreorder.{u2} γ (OrderedCommMonoid.toPartialOrder.{u2} γ (LinearOrderedCommMonoid.toOrderedCommMonoid.{u2} γ (LinearOrderedCommMonoidWithZero.toLinearOrderedCommMonoid.{u2} γ _inst_3)))) (MonoidWithZero.toMulZeroOneClass.{u3} β (CommMonoidWithZero.toMonoidWithZero.{u3} β (LinearOrderedCommMonoidWithZero.toCommMonoidWithZero.{u3} β _inst_2))) (MonoidWithZero.toMulZeroOneClass.{u2} γ (CommMonoidWithZero.toMonoidWithZero.{u2} γ (LinearOrderedCommMonoidWithZero.toCommMonoidWithZero.{u2} γ _inst_3)))) (OrderMonoidWithZeroHom.instMulOrderMonoidWithZeroHomToPreorderToPartialOrderToOrderedCommMonoidToLinearOrderedCommMonoidToPreorderToPartialOrderToOrderedCommMonoidToLinearOrderedCommMonoidToMulZeroOneClassToMonoidWithZeroToCommMonoidWithZeroToMulZeroOneClassToMonoidWithZeroToCommMonoidWithZero.{u3, u2} β γ _inst_2 _inst_3)) g₁ g₂) f) (HMul.hMul.{max u1 u2, max u1 u2, max u1 u2} (OrderMonoidWithZeroHom.{u1, u2} α γ (PartialOrder.toPreorder.{u1} α (OrderedCommMonoid.toPartialOrder.{u1} α (LinearOrderedCommMonoid.toOrderedCommMonoid.{u1} α (LinearOrderedCommMonoidWithZero.toLinearOrderedCommMonoid.{u1} α _inst_1)))) (PartialOrder.toPreorder.{u2} γ (OrderedCommMonoid.toPartialOrder.{u2} γ (LinearOrderedCommMonoid.toOrderedCommMonoid.{u2} γ (LinearOrderedCommMonoidWithZero.toLinearOrderedCommMonoid.{u2} γ _inst_3)))) (MonoidWithZero.toMulZeroOneClass.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (LinearOrderedCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) (MonoidWithZero.toMulZeroOneClass.{u2} γ (CommMonoidWithZero.toMonoidWithZero.{u2} γ (LinearOrderedCommMonoidWithZero.toCommMonoidWithZero.{u2} γ _inst_3)))) (OrderMonoidWithZeroHom.{u1, u2} α γ (PartialOrder.toPreorder.{u1} α (OrderedCommMonoid.toPartialOrder.{u1} α (LinearOrderedCommMonoid.toOrderedCommMonoid.{u1} α (LinearOrderedCommMonoidWithZero.toLinearOrderedCommMonoid.{u1} α _inst_1)))) (PartialOrder.toPreorder.{u2} γ (OrderedCommMonoid.toPartialOrder.{u2} γ (LinearOrderedCommMonoid.toOrderedCommMonoid.{u2} γ (LinearOrderedCommMonoidWithZero.toLinearOrderedCommMonoid.{u2} γ _inst_3)))) (MonoidWithZero.toMulZeroOneClass.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (LinearOrderedCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) (MonoidWithZero.toMulZeroOneClass.{u2} γ (CommMonoidWithZero.toMonoidWithZero.{u2} γ (LinearOrderedCommMonoidWithZero.toCommMonoidWithZero.{u2} γ _inst_3)))) (OrderMonoidWithZeroHom.{u1, u2} α γ (PartialOrder.toPreorder.{u1} α (OrderedCommMonoid.toPartialOrder.{u1} α (LinearOrderedCommMonoid.toOrderedCommMonoid.{u1} α (LinearOrderedCommMonoidWithZero.toLinearOrderedCommMonoid.{u1} α _inst_1)))) (PartialOrder.toPreorder.{u2} γ (OrderedCommMonoid.toPartialOrder.{u2} γ (LinearOrderedCommMonoid.toOrderedCommMonoid.{u2} γ (LinearOrderedCommMonoidWithZero.toLinearOrderedCommMonoid.{u2} γ _inst_3)))) (MonoidWithZero.toMulZeroOneClass.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (LinearOrderedCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) (MonoidWithZero.toMulZeroOneClass.{u2} γ (CommMonoidWithZero.toMonoidWithZero.{u2} γ (LinearOrderedCommMonoidWithZero.toCommMonoidWithZero.{u2} γ _inst_3)))) (instHMul.{max u1 u2} (OrderMonoidWithZeroHom.{u1, u2} α γ (PartialOrder.toPreorder.{u1} α (OrderedCommMonoid.toPartialOrder.{u1} α (LinearOrderedCommMonoid.toOrderedCommMonoid.{u1} α (LinearOrderedCommMonoidWithZero.toLinearOrderedCommMonoid.{u1} α _inst_1)))) (PartialOrder.toPreorder.{u2} γ (OrderedCommMonoid.toPartialOrder.{u2} γ (LinearOrderedCommMonoid.toOrderedCommMonoid.{u2} γ (LinearOrderedCommMonoidWithZero.toLinearOrderedCommMonoid.{u2} γ _inst_3)))) (MonoidWithZero.toMulZeroOneClass.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (LinearOrderedCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) (MonoidWithZero.toMulZeroOneClass.{u2} γ (CommMonoidWithZero.toMonoidWithZero.{u2} γ (LinearOrderedCommMonoidWithZero.toCommMonoidWithZero.{u2} γ _inst_3)))) (OrderMonoidWithZeroHom.instMulOrderMonoidWithZeroHomToPreorderToPartialOrderToOrderedCommMonoidToLinearOrderedCommMonoidToPreorderToPartialOrderToOrderedCommMonoidToLinearOrderedCommMonoidToMulZeroOneClassToMonoidWithZeroToCommMonoidWithZeroToMulZeroOneClassToMonoidWithZeroToCommMonoidWithZero.{u1, u2} α γ _inst_1 _inst_3)) (OrderMonoidWithZeroHom.comp.{u1, u3, u2} α β γ (PartialOrder.toPreorder.{u1} α (OrderedCommMonoid.toPartialOrder.{u1} α (LinearOrderedCommMonoid.toOrderedCommMonoid.{u1} α (LinearOrderedCommMonoidWithZero.toLinearOrderedCommMonoid.{u1} α _inst_1)))) (PartialOrder.toPreorder.{u3} β (OrderedCommMonoid.toPartialOrder.{u3} β (LinearOrderedCommMonoid.toOrderedCommMonoid.{u3} β (LinearOrderedCommMonoidWithZero.toLinearOrderedCommMonoid.{u3} β _inst_2)))) (PartialOrder.toPreorder.{u2} γ (OrderedCommMonoid.toPartialOrder.{u2} γ (LinearOrderedCommMonoid.toOrderedCommMonoid.{u2} γ (LinearOrderedCommMonoidWithZero.toLinearOrderedCommMonoid.{u2} γ _inst_3)))) (MonoidWithZero.toMulZeroOneClass.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (LinearOrderedCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) (MonoidWithZero.toMulZeroOneClass.{u3} β (CommMonoidWithZero.toMonoidWithZero.{u3} β (LinearOrderedCommMonoidWithZero.toCommMonoidWithZero.{u3} β _inst_2))) (MonoidWithZero.toMulZeroOneClass.{u2} γ (CommMonoidWithZero.toMonoidWithZero.{u2} γ (LinearOrderedCommMonoidWithZero.toCommMonoidWithZero.{u2} γ _inst_3))) g₁ f) (OrderMonoidWithZeroHom.comp.{u1, u3, u2} α β γ (PartialOrder.toPreorder.{u1} α (OrderedCommMonoid.toPartialOrder.{u1} α (LinearOrderedCommMonoid.toOrderedCommMonoid.{u1} α (LinearOrderedCommMonoidWithZero.toLinearOrderedCommMonoid.{u1} α _inst_1)))) (PartialOrder.toPreorder.{u3} β (OrderedCommMonoid.toPartialOrder.{u3} β (LinearOrderedCommMonoid.toOrderedCommMonoid.{u3} β (LinearOrderedCommMonoidWithZero.toLinearOrderedCommMonoid.{u3} β _inst_2)))) (PartialOrder.toPreorder.{u2} γ (OrderedCommMonoid.toPartialOrder.{u2} γ (LinearOrderedCommMonoid.toOrderedCommMonoid.{u2} γ (LinearOrderedCommMonoidWithZero.toLinearOrderedCommMonoid.{u2} γ _inst_3)))) (MonoidWithZero.toMulZeroOneClass.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (LinearOrderedCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) (MonoidWithZero.toMulZeroOneClass.{u3} β (CommMonoidWithZero.toMonoidWithZero.{u3} β (LinearOrderedCommMonoidWithZero.toCommMonoidWithZero.{u3} β _inst_2))) (MonoidWithZero.toMulZeroOneClass.{u2} γ (CommMonoidWithZero.toMonoidWithZero.{u2} γ (LinearOrderedCommMonoidWithZero.toCommMonoidWithZero.{u2} γ _inst_3))) g₂ f))
Case conversion may be inaccurate. Consider using '#align order_monoid_with_zero_hom.mul_comp OrderMonoidWithZeroHom.mul_compₓ'. -/
theorem mul_comp (g₁ g₂ : β →*₀o γ) (f : α →*₀o β) : (g₁ * g₂).comp f = g₁.comp f * g₂.comp f :=
  rfl
#align order_monoid_with_zero_hom.mul_comp OrderMonoidWithZeroHom.mul_comp

/- warning: order_monoid_with_zero_hom.comp_mul -> OrderMonoidWithZeroHom.comp_mul is a dubious translation:
lean 3 declaration is
  forall {α : Type.{u1}} {β : Type.{u2}} {γ : Type.{u3}} [_inst_1 : LinearOrderedCommMonoidWithZero.{u1} α] [_inst_2 : LinearOrderedCommMonoidWithZero.{u2} β] [_inst_3 : LinearOrderedCommMonoidWithZero.{u3} γ] (g : OrderMonoidWithZeroHom.{u2, u3} β γ (PartialOrder.toPreorder.{u2} β (OrderedCommMonoid.toPartialOrder.{u2} β (LinearOrderedCommMonoid.toOrderedCommMonoid.{u2} β (LinearOrderedCommMonoidWithZero.toLinearOrderedCommMonoid.{u2} β _inst_2)))) (PartialOrder.toPreorder.{u3} γ (OrderedCommMonoid.toPartialOrder.{u3} γ (LinearOrderedCommMonoid.toOrderedCommMonoid.{u3} γ (LinearOrderedCommMonoidWithZero.toLinearOrderedCommMonoid.{u3} γ _inst_3)))) (MonoidWithZero.toMulZeroOneClass.{u2} β (CommMonoidWithZero.toMonoidWithZero.{u2} β (LinearOrderedCommMonoidWithZero.toCommMonoidWithZero.{u2} β _inst_2))) (MonoidWithZero.toMulZeroOneClass.{u3} γ (CommMonoidWithZero.toMonoidWithZero.{u3} γ (LinearOrderedCommMonoidWithZero.toCommMonoidWithZero.{u3} γ _inst_3)))) (f₁ : OrderMonoidWithZeroHom.{u1, u2} α β (PartialOrder.toPreorder.{u1} α (OrderedCommMonoid.toPartialOrder.{u1} α (LinearOrderedCommMonoid.toOrderedCommMonoid.{u1} α (LinearOrderedCommMonoidWithZero.toLinearOrderedCommMonoid.{u1} α _inst_1)))) (PartialOrder.toPreorder.{u2} β (OrderedCommMonoid.toPartialOrder.{u2} β (LinearOrderedCommMonoid.toOrderedCommMonoid.{u2} β (LinearOrderedCommMonoidWithZero.toLinearOrderedCommMonoid.{u2} β _inst_2)))) (MonoidWithZero.toMulZeroOneClass.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (LinearOrderedCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) (MonoidWithZero.toMulZeroOneClass.{u2} β (CommMonoidWithZero.toMonoidWithZero.{u2} β (LinearOrderedCommMonoidWithZero.toCommMonoidWithZero.{u2} β _inst_2)))) (f₂ : OrderMonoidWithZeroHom.{u1, u2} α β (PartialOrder.toPreorder.{u1} α (OrderedCommMonoid.toPartialOrder.{u1} α (LinearOrderedCommMonoid.toOrderedCommMonoid.{u1} α (LinearOrderedCommMonoidWithZero.toLinearOrderedCommMonoid.{u1} α _inst_1)))) (PartialOrder.toPreorder.{u2} β (OrderedCommMonoid.toPartialOrder.{u2} β (LinearOrderedCommMonoid.toOrderedCommMonoid.{u2} β (LinearOrderedCommMonoidWithZero.toLinearOrderedCommMonoid.{u2} β _inst_2)))) (MonoidWithZero.toMulZeroOneClass.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (LinearOrderedCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) (MonoidWithZero.toMulZeroOneClass.{u2} β (CommMonoidWithZero.toMonoidWithZero.{u2} β (LinearOrderedCommMonoidWithZero.toCommMonoidWithZero.{u2} β _inst_2)))), Eq.{max (succ u1) (succ u3)} (OrderMonoidWithZeroHom.{u1, u3} α γ (PartialOrder.toPreorder.{u1} α (OrderedCommMonoid.toPartialOrder.{u1} α (LinearOrderedCommMonoid.toOrderedCommMonoid.{u1} α (LinearOrderedCommMonoidWithZero.toLinearOrderedCommMonoid.{u1} α _inst_1)))) (PartialOrder.toPreorder.{u3} γ (OrderedCommMonoid.toPartialOrder.{u3} γ (LinearOrderedCommMonoid.toOrderedCommMonoid.{u3} γ (LinearOrderedCommMonoidWithZero.toLinearOrderedCommMonoid.{u3} γ _inst_3)))) (MonoidWithZero.toMulZeroOneClass.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (LinearOrderedCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) (MonoidWithZero.toMulZeroOneClass.{u3} γ (CommMonoidWithZero.toMonoidWithZero.{u3} γ (LinearOrderedCommMonoidWithZero.toCommMonoidWithZero.{u3} γ _inst_3)))) (OrderMonoidWithZeroHom.comp.{u1, u2, u3} α β γ (PartialOrder.toPreorder.{u1} α (OrderedCommMonoid.toPartialOrder.{u1} α (LinearOrderedCommMonoid.toOrderedCommMonoid.{u1} α (LinearOrderedCommMonoidWithZero.toLinearOrderedCommMonoid.{u1} α _inst_1)))) (PartialOrder.toPreorder.{u2} β (OrderedCommMonoid.toPartialOrder.{u2} β (LinearOrderedCommMonoid.toOrderedCommMonoid.{u2} β (LinearOrderedCommMonoidWithZero.toLinearOrderedCommMonoid.{u2} β _inst_2)))) (PartialOrder.toPreorder.{u3} γ (OrderedCommMonoid.toPartialOrder.{u3} γ (LinearOrderedCommMonoid.toOrderedCommMonoid.{u3} γ (LinearOrderedCommMonoidWithZero.toLinearOrderedCommMonoid.{u3} γ _inst_3)))) (MonoidWithZero.toMulZeroOneClass.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (LinearOrderedCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) (MonoidWithZero.toMulZeroOneClass.{u2} β (CommMonoidWithZero.toMonoidWithZero.{u2} β (LinearOrderedCommMonoidWithZero.toCommMonoidWithZero.{u2} β _inst_2))) (MonoidWithZero.toMulZeroOneClass.{u3} γ (CommMonoidWithZero.toMonoidWithZero.{u3} γ (LinearOrderedCommMonoidWithZero.toCommMonoidWithZero.{u3} γ _inst_3))) g (HMul.hMul.{max u1 u2, max u1 u2, max u1 u2} (OrderMonoidWithZeroHom.{u1, u2} α β (PartialOrder.toPreorder.{u1} α (OrderedCommMonoid.toPartialOrder.{u1} α (LinearOrderedCommMonoid.toOrderedCommMonoid.{u1} α (LinearOrderedCommMonoidWithZero.toLinearOrderedCommMonoid.{u1} α _inst_1)))) (PartialOrder.toPreorder.{u2} β (OrderedCommMonoid.toPartialOrder.{u2} β (LinearOrderedCommMonoid.toOrderedCommMonoid.{u2} β (LinearOrderedCommMonoidWithZero.toLinearOrderedCommMonoid.{u2} β _inst_2)))) (MonoidWithZero.toMulZeroOneClass.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (LinearOrderedCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) (MonoidWithZero.toMulZeroOneClass.{u2} β (CommMonoidWithZero.toMonoidWithZero.{u2} β (LinearOrderedCommMonoidWithZero.toCommMonoidWithZero.{u2} β _inst_2)))) (OrderMonoidWithZeroHom.{u1, u2} α β (PartialOrder.toPreorder.{u1} α (OrderedCommMonoid.toPartialOrder.{u1} α (LinearOrderedCommMonoid.toOrderedCommMonoid.{u1} α (LinearOrderedCommMonoidWithZero.toLinearOrderedCommMonoid.{u1} α _inst_1)))) (PartialOrder.toPreorder.{u2} β (OrderedCommMonoid.toPartialOrder.{u2} β (LinearOrderedCommMonoid.toOrderedCommMonoid.{u2} β (LinearOrderedCommMonoidWithZero.toLinearOrderedCommMonoid.{u2} β _inst_2)))) (MonoidWithZero.toMulZeroOneClass.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (LinearOrderedCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) (MonoidWithZero.toMulZeroOneClass.{u2} β (CommMonoidWithZero.toMonoidWithZero.{u2} β (LinearOrderedCommMonoidWithZero.toCommMonoidWithZero.{u2} β _inst_2)))) (OrderMonoidWithZeroHom.{u1, u2} α β (PartialOrder.toPreorder.{u1} α (OrderedCommMonoid.toPartialOrder.{u1} α (LinearOrderedCommMonoid.toOrderedCommMonoid.{u1} α (LinearOrderedCommMonoidWithZero.toLinearOrderedCommMonoid.{u1} α _inst_1)))) (PartialOrder.toPreorder.{u2} β (OrderedCommMonoid.toPartialOrder.{u2} β (LinearOrderedCommMonoid.toOrderedCommMonoid.{u2} β (LinearOrderedCommMonoidWithZero.toLinearOrderedCommMonoid.{u2} β _inst_2)))) (MonoidWithZero.toMulZeroOneClass.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (LinearOrderedCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) (MonoidWithZero.toMulZeroOneClass.{u2} β (CommMonoidWithZero.toMonoidWithZero.{u2} β (LinearOrderedCommMonoidWithZero.toCommMonoidWithZero.{u2} β _inst_2)))) (instHMul.{max u1 u2} (OrderMonoidWithZeroHom.{u1, u2} α β (PartialOrder.toPreorder.{u1} α (OrderedCommMonoid.toPartialOrder.{u1} α (LinearOrderedCommMonoid.toOrderedCommMonoid.{u1} α (LinearOrderedCommMonoidWithZero.toLinearOrderedCommMonoid.{u1} α _inst_1)))) (PartialOrder.toPreorder.{u2} β (OrderedCommMonoid.toPartialOrder.{u2} β (LinearOrderedCommMonoid.toOrderedCommMonoid.{u2} β (LinearOrderedCommMonoidWithZero.toLinearOrderedCommMonoid.{u2} β _inst_2)))) (MonoidWithZero.toMulZeroOneClass.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (LinearOrderedCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) (MonoidWithZero.toMulZeroOneClass.{u2} β (CommMonoidWithZero.toMonoidWithZero.{u2} β (LinearOrderedCommMonoidWithZero.toCommMonoidWithZero.{u2} β _inst_2)))) (OrderMonoidWithZeroHom.hasMul.{u1, u2} α β _inst_1 _inst_2)) f₁ f₂)) (HMul.hMul.{max u1 u3, max u1 u3, max u1 u3} (OrderMonoidWithZeroHom.{u1, u3} α γ (PartialOrder.toPreorder.{u1} α (OrderedCommMonoid.toPartialOrder.{u1} α (LinearOrderedCommMonoid.toOrderedCommMonoid.{u1} α (LinearOrderedCommMonoidWithZero.toLinearOrderedCommMonoid.{u1} α _inst_1)))) (PartialOrder.toPreorder.{u3} γ (OrderedCommMonoid.toPartialOrder.{u3} γ (LinearOrderedCommMonoid.toOrderedCommMonoid.{u3} γ (LinearOrderedCommMonoidWithZero.toLinearOrderedCommMonoid.{u3} γ _inst_3)))) (MonoidWithZero.toMulZeroOneClass.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (LinearOrderedCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) (MonoidWithZero.toMulZeroOneClass.{u3} γ (CommMonoidWithZero.toMonoidWithZero.{u3} γ (LinearOrderedCommMonoidWithZero.toCommMonoidWithZero.{u3} γ _inst_3)))) (OrderMonoidWithZeroHom.{u1, u3} α γ (PartialOrder.toPreorder.{u1} α (OrderedCommMonoid.toPartialOrder.{u1} α (LinearOrderedCommMonoid.toOrderedCommMonoid.{u1} α (LinearOrderedCommMonoidWithZero.toLinearOrderedCommMonoid.{u1} α _inst_1)))) (PartialOrder.toPreorder.{u3} γ (OrderedCommMonoid.toPartialOrder.{u3} γ (LinearOrderedCommMonoid.toOrderedCommMonoid.{u3} γ (LinearOrderedCommMonoidWithZero.toLinearOrderedCommMonoid.{u3} γ _inst_3)))) (MonoidWithZero.toMulZeroOneClass.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (LinearOrderedCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) (MonoidWithZero.toMulZeroOneClass.{u3} γ (CommMonoidWithZero.toMonoidWithZero.{u3} γ (LinearOrderedCommMonoidWithZero.toCommMonoidWithZero.{u3} γ _inst_3)))) (OrderMonoidWithZeroHom.{u1, u3} α γ (PartialOrder.toPreorder.{u1} α (OrderedCommMonoid.toPartialOrder.{u1} α (LinearOrderedCommMonoid.toOrderedCommMonoid.{u1} α (LinearOrderedCommMonoidWithZero.toLinearOrderedCommMonoid.{u1} α _inst_1)))) (PartialOrder.toPreorder.{u3} γ (OrderedCommMonoid.toPartialOrder.{u3} γ (LinearOrderedCommMonoid.toOrderedCommMonoid.{u3} γ (LinearOrderedCommMonoidWithZero.toLinearOrderedCommMonoid.{u3} γ _inst_3)))) (MonoidWithZero.toMulZeroOneClass.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (LinearOrderedCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) (MonoidWithZero.toMulZeroOneClass.{u3} γ (CommMonoidWithZero.toMonoidWithZero.{u3} γ (LinearOrderedCommMonoidWithZero.toCommMonoidWithZero.{u3} γ _inst_3)))) (instHMul.{max u1 u3} (OrderMonoidWithZeroHom.{u1, u3} α γ (PartialOrder.toPreorder.{u1} α (OrderedCommMonoid.toPartialOrder.{u1} α (LinearOrderedCommMonoid.toOrderedCommMonoid.{u1} α (LinearOrderedCommMonoidWithZero.toLinearOrderedCommMonoid.{u1} α _inst_1)))) (PartialOrder.toPreorder.{u3} γ (OrderedCommMonoid.toPartialOrder.{u3} γ (LinearOrderedCommMonoid.toOrderedCommMonoid.{u3} γ (LinearOrderedCommMonoidWithZero.toLinearOrderedCommMonoid.{u3} γ _inst_3)))) (MonoidWithZero.toMulZeroOneClass.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (LinearOrderedCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) (MonoidWithZero.toMulZeroOneClass.{u3} γ (CommMonoidWithZero.toMonoidWithZero.{u3} γ (LinearOrderedCommMonoidWithZero.toCommMonoidWithZero.{u3} γ _inst_3)))) (OrderMonoidWithZeroHom.hasMul.{u1, u3} α γ _inst_1 _inst_3)) (OrderMonoidWithZeroHom.comp.{u1, u2, u3} α β γ (PartialOrder.toPreorder.{u1} α (OrderedCommMonoid.toPartialOrder.{u1} α (LinearOrderedCommMonoid.toOrderedCommMonoid.{u1} α (LinearOrderedCommMonoidWithZero.toLinearOrderedCommMonoid.{u1} α _inst_1)))) (PartialOrder.toPreorder.{u2} β (OrderedCommMonoid.toPartialOrder.{u2} β (LinearOrderedCommMonoid.toOrderedCommMonoid.{u2} β (LinearOrderedCommMonoidWithZero.toLinearOrderedCommMonoid.{u2} β _inst_2)))) (PartialOrder.toPreorder.{u3} γ (OrderedCommMonoid.toPartialOrder.{u3} γ (LinearOrderedCommMonoid.toOrderedCommMonoid.{u3} γ (LinearOrderedCommMonoidWithZero.toLinearOrderedCommMonoid.{u3} γ _inst_3)))) (MonoidWithZero.toMulZeroOneClass.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (LinearOrderedCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) (MonoidWithZero.toMulZeroOneClass.{u2} β (CommMonoidWithZero.toMonoidWithZero.{u2} β (LinearOrderedCommMonoidWithZero.toCommMonoidWithZero.{u2} β _inst_2))) (MonoidWithZero.toMulZeroOneClass.{u3} γ (CommMonoidWithZero.toMonoidWithZero.{u3} γ (LinearOrderedCommMonoidWithZero.toCommMonoidWithZero.{u3} γ _inst_3))) g f₁) (OrderMonoidWithZeroHom.comp.{u1, u2, u3} α β γ (PartialOrder.toPreorder.{u1} α (OrderedCommMonoid.toPartialOrder.{u1} α (LinearOrderedCommMonoid.toOrderedCommMonoid.{u1} α (LinearOrderedCommMonoidWithZero.toLinearOrderedCommMonoid.{u1} α _inst_1)))) (PartialOrder.toPreorder.{u2} β (OrderedCommMonoid.toPartialOrder.{u2} β (LinearOrderedCommMonoid.toOrderedCommMonoid.{u2} β (LinearOrderedCommMonoidWithZero.toLinearOrderedCommMonoid.{u2} β _inst_2)))) (PartialOrder.toPreorder.{u3} γ (OrderedCommMonoid.toPartialOrder.{u3} γ (LinearOrderedCommMonoid.toOrderedCommMonoid.{u3} γ (LinearOrderedCommMonoidWithZero.toLinearOrderedCommMonoid.{u3} γ _inst_3)))) (MonoidWithZero.toMulZeroOneClass.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (LinearOrderedCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) (MonoidWithZero.toMulZeroOneClass.{u2} β (CommMonoidWithZero.toMonoidWithZero.{u2} β (LinearOrderedCommMonoidWithZero.toCommMonoidWithZero.{u2} β _inst_2))) (MonoidWithZero.toMulZeroOneClass.{u3} γ (CommMonoidWithZero.toMonoidWithZero.{u3} γ (LinearOrderedCommMonoidWithZero.toCommMonoidWithZero.{u3} γ _inst_3))) g f₂))
but is expected to have type
  forall {α : Type.{u1}} {β : Type.{u3}} {γ : Type.{u2}} [_inst_1 : LinearOrderedCommMonoidWithZero.{u1} α] [_inst_2 : LinearOrderedCommMonoidWithZero.{u3} β] [_inst_3 : LinearOrderedCommMonoidWithZero.{u2} γ] (g : OrderMonoidWithZeroHom.{u3, u2} β γ (PartialOrder.toPreorder.{u3} β (OrderedCommMonoid.toPartialOrder.{u3} β (LinearOrderedCommMonoid.toOrderedCommMonoid.{u3} β (LinearOrderedCommMonoidWithZero.toLinearOrderedCommMonoid.{u3} β _inst_2)))) (PartialOrder.toPreorder.{u2} γ (OrderedCommMonoid.toPartialOrder.{u2} γ (LinearOrderedCommMonoid.toOrderedCommMonoid.{u2} γ (LinearOrderedCommMonoidWithZero.toLinearOrderedCommMonoid.{u2} γ _inst_3)))) (MonoidWithZero.toMulZeroOneClass.{u3} β (CommMonoidWithZero.toMonoidWithZero.{u3} β (LinearOrderedCommMonoidWithZero.toCommMonoidWithZero.{u3} β _inst_2))) (MonoidWithZero.toMulZeroOneClass.{u2} γ (CommMonoidWithZero.toMonoidWithZero.{u2} γ (LinearOrderedCommMonoidWithZero.toCommMonoidWithZero.{u2} γ _inst_3)))) (f₁ : OrderMonoidWithZeroHom.{u1, u3} α β (PartialOrder.toPreorder.{u1} α (OrderedCommMonoid.toPartialOrder.{u1} α (LinearOrderedCommMonoid.toOrderedCommMonoid.{u1} α (LinearOrderedCommMonoidWithZero.toLinearOrderedCommMonoid.{u1} α _inst_1)))) (PartialOrder.toPreorder.{u3} β (OrderedCommMonoid.toPartialOrder.{u3} β (LinearOrderedCommMonoid.toOrderedCommMonoid.{u3} β (LinearOrderedCommMonoidWithZero.toLinearOrderedCommMonoid.{u3} β _inst_2)))) (MonoidWithZero.toMulZeroOneClass.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (LinearOrderedCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) (MonoidWithZero.toMulZeroOneClass.{u3} β (CommMonoidWithZero.toMonoidWithZero.{u3} β (LinearOrderedCommMonoidWithZero.toCommMonoidWithZero.{u3} β _inst_2)))) (f₂ : OrderMonoidWithZeroHom.{u1, u3} α β (PartialOrder.toPreorder.{u1} α (OrderedCommMonoid.toPartialOrder.{u1} α (LinearOrderedCommMonoid.toOrderedCommMonoid.{u1} α (LinearOrderedCommMonoidWithZero.toLinearOrderedCommMonoid.{u1} α _inst_1)))) (PartialOrder.toPreorder.{u3} β (OrderedCommMonoid.toPartialOrder.{u3} β (LinearOrderedCommMonoid.toOrderedCommMonoid.{u3} β (LinearOrderedCommMonoidWithZero.toLinearOrderedCommMonoid.{u3} β _inst_2)))) (MonoidWithZero.toMulZeroOneClass.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (LinearOrderedCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) (MonoidWithZero.toMulZeroOneClass.{u3} β (CommMonoidWithZero.toMonoidWithZero.{u3} β (LinearOrderedCommMonoidWithZero.toCommMonoidWithZero.{u3} β _inst_2)))), Eq.{max (succ u1) (succ u2)} (OrderMonoidWithZeroHom.{u1, u2} α γ (PartialOrder.toPreorder.{u1} α (OrderedCommMonoid.toPartialOrder.{u1} α (LinearOrderedCommMonoid.toOrderedCommMonoid.{u1} α (LinearOrderedCommMonoidWithZero.toLinearOrderedCommMonoid.{u1} α _inst_1)))) (PartialOrder.toPreorder.{u2} γ (OrderedCommMonoid.toPartialOrder.{u2} γ (LinearOrderedCommMonoid.toOrderedCommMonoid.{u2} γ (LinearOrderedCommMonoidWithZero.toLinearOrderedCommMonoid.{u2} γ _inst_3)))) (MonoidWithZero.toMulZeroOneClass.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (LinearOrderedCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) (MonoidWithZero.toMulZeroOneClass.{u2} γ (CommMonoidWithZero.toMonoidWithZero.{u2} γ (LinearOrderedCommMonoidWithZero.toCommMonoidWithZero.{u2} γ _inst_3)))) (OrderMonoidWithZeroHom.comp.{u1, u3, u2} α β γ (PartialOrder.toPreorder.{u1} α (OrderedCommMonoid.toPartialOrder.{u1} α (LinearOrderedCommMonoid.toOrderedCommMonoid.{u1} α (LinearOrderedCommMonoidWithZero.toLinearOrderedCommMonoid.{u1} α _inst_1)))) (PartialOrder.toPreorder.{u3} β (OrderedCommMonoid.toPartialOrder.{u3} β (LinearOrderedCommMonoid.toOrderedCommMonoid.{u3} β (LinearOrderedCommMonoidWithZero.toLinearOrderedCommMonoid.{u3} β _inst_2)))) (PartialOrder.toPreorder.{u2} γ (OrderedCommMonoid.toPartialOrder.{u2} γ (LinearOrderedCommMonoid.toOrderedCommMonoid.{u2} γ (LinearOrderedCommMonoidWithZero.toLinearOrderedCommMonoid.{u2} γ _inst_3)))) (MonoidWithZero.toMulZeroOneClass.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (LinearOrderedCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) (MonoidWithZero.toMulZeroOneClass.{u3} β (CommMonoidWithZero.toMonoidWithZero.{u3} β (LinearOrderedCommMonoidWithZero.toCommMonoidWithZero.{u3} β _inst_2))) (MonoidWithZero.toMulZeroOneClass.{u2} γ (CommMonoidWithZero.toMonoidWithZero.{u2} γ (LinearOrderedCommMonoidWithZero.toCommMonoidWithZero.{u2} γ _inst_3))) g (HMul.hMul.{max u1 u3, max u1 u3, max u1 u3} (OrderMonoidWithZeroHom.{u1, u3} α β (PartialOrder.toPreorder.{u1} α (OrderedCommMonoid.toPartialOrder.{u1} α (LinearOrderedCommMonoid.toOrderedCommMonoid.{u1} α (LinearOrderedCommMonoidWithZero.toLinearOrderedCommMonoid.{u1} α _inst_1)))) (PartialOrder.toPreorder.{u3} β (OrderedCommMonoid.toPartialOrder.{u3} β (LinearOrderedCommMonoid.toOrderedCommMonoid.{u3} β (LinearOrderedCommMonoidWithZero.toLinearOrderedCommMonoid.{u3} β _inst_2)))) (MonoidWithZero.toMulZeroOneClass.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (LinearOrderedCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) (MonoidWithZero.toMulZeroOneClass.{u3} β (CommMonoidWithZero.toMonoidWithZero.{u3} β (LinearOrderedCommMonoidWithZero.toCommMonoidWithZero.{u3} β _inst_2)))) (OrderMonoidWithZeroHom.{u1, u3} α β (PartialOrder.toPreorder.{u1} α (OrderedCommMonoid.toPartialOrder.{u1} α (LinearOrderedCommMonoid.toOrderedCommMonoid.{u1} α (LinearOrderedCommMonoidWithZero.toLinearOrderedCommMonoid.{u1} α _inst_1)))) (PartialOrder.toPreorder.{u3} β (OrderedCommMonoid.toPartialOrder.{u3} β (LinearOrderedCommMonoid.toOrderedCommMonoid.{u3} β (LinearOrderedCommMonoidWithZero.toLinearOrderedCommMonoid.{u3} β _inst_2)))) (MonoidWithZero.toMulZeroOneClass.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (LinearOrderedCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) (MonoidWithZero.toMulZeroOneClass.{u3} β (CommMonoidWithZero.toMonoidWithZero.{u3} β (LinearOrderedCommMonoidWithZero.toCommMonoidWithZero.{u3} β _inst_2)))) (OrderMonoidWithZeroHom.{u1, u3} α β (PartialOrder.toPreorder.{u1} α (OrderedCommMonoid.toPartialOrder.{u1} α (LinearOrderedCommMonoid.toOrderedCommMonoid.{u1} α (LinearOrderedCommMonoidWithZero.toLinearOrderedCommMonoid.{u1} α _inst_1)))) (PartialOrder.toPreorder.{u3} β (OrderedCommMonoid.toPartialOrder.{u3} β (LinearOrderedCommMonoid.toOrderedCommMonoid.{u3} β (LinearOrderedCommMonoidWithZero.toLinearOrderedCommMonoid.{u3} β _inst_2)))) (MonoidWithZero.toMulZeroOneClass.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (LinearOrderedCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) (MonoidWithZero.toMulZeroOneClass.{u3} β (CommMonoidWithZero.toMonoidWithZero.{u3} β (LinearOrderedCommMonoidWithZero.toCommMonoidWithZero.{u3} β _inst_2)))) (instHMul.{max u1 u3} (OrderMonoidWithZeroHom.{u1, u3} α β (PartialOrder.toPreorder.{u1} α (OrderedCommMonoid.toPartialOrder.{u1} α (LinearOrderedCommMonoid.toOrderedCommMonoid.{u1} α (LinearOrderedCommMonoidWithZero.toLinearOrderedCommMonoid.{u1} α _inst_1)))) (PartialOrder.toPreorder.{u3} β (OrderedCommMonoid.toPartialOrder.{u3} β (LinearOrderedCommMonoid.toOrderedCommMonoid.{u3} β (LinearOrderedCommMonoidWithZero.toLinearOrderedCommMonoid.{u3} β _inst_2)))) (MonoidWithZero.toMulZeroOneClass.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (LinearOrderedCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) (MonoidWithZero.toMulZeroOneClass.{u3} β (CommMonoidWithZero.toMonoidWithZero.{u3} β (LinearOrderedCommMonoidWithZero.toCommMonoidWithZero.{u3} β _inst_2)))) (OrderMonoidWithZeroHom.instMulOrderMonoidWithZeroHomToPreorderToPartialOrderToOrderedCommMonoidToLinearOrderedCommMonoidToPreorderToPartialOrderToOrderedCommMonoidToLinearOrderedCommMonoidToMulZeroOneClassToMonoidWithZeroToCommMonoidWithZeroToMulZeroOneClassToMonoidWithZeroToCommMonoidWithZero.{u1, u3} α β _inst_1 _inst_2)) f₁ f₂)) (HMul.hMul.{max u1 u2, max u1 u2, max u1 u2} (OrderMonoidWithZeroHom.{u1, u2} α γ (PartialOrder.toPreorder.{u1} α (OrderedCommMonoid.toPartialOrder.{u1} α (LinearOrderedCommMonoid.toOrderedCommMonoid.{u1} α (LinearOrderedCommMonoidWithZero.toLinearOrderedCommMonoid.{u1} α _inst_1)))) (PartialOrder.toPreorder.{u2} γ (OrderedCommMonoid.toPartialOrder.{u2} γ (LinearOrderedCommMonoid.toOrderedCommMonoid.{u2} γ (LinearOrderedCommMonoidWithZero.toLinearOrderedCommMonoid.{u2} γ _inst_3)))) (MonoidWithZero.toMulZeroOneClass.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (LinearOrderedCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) (MonoidWithZero.toMulZeroOneClass.{u2} γ (CommMonoidWithZero.toMonoidWithZero.{u2} γ (LinearOrderedCommMonoidWithZero.toCommMonoidWithZero.{u2} γ _inst_3)))) (OrderMonoidWithZeroHom.{u1, u2} α γ (PartialOrder.toPreorder.{u1} α (OrderedCommMonoid.toPartialOrder.{u1} α (LinearOrderedCommMonoid.toOrderedCommMonoid.{u1} α (LinearOrderedCommMonoidWithZero.toLinearOrderedCommMonoid.{u1} α _inst_1)))) (PartialOrder.toPreorder.{u2} γ (OrderedCommMonoid.toPartialOrder.{u2} γ (LinearOrderedCommMonoid.toOrderedCommMonoid.{u2} γ (LinearOrderedCommMonoidWithZero.toLinearOrderedCommMonoid.{u2} γ _inst_3)))) (MonoidWithZero.toMulZeroOneClass.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (LinearOrderedCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) (MonoidWithZero.toMulZeroOneClass.{u2} γ (CommMonoidWithZero.toMonoidWithZero.{u2} γ (LinearOrderedCommMonoidWithZero.toCommMonoidWithZero.{u2} γ _inst_3)))) (OrderMonoidWithZeroHom.{u1, u2} α γ (PartialOrder.toPreorder.{u1} α (OrderedCommMonoid.toPartialOrder.{u1} α (LinearOrderedCommMonoid.toOrderedCommMonoid.{u1} α (LinearOrderedCommMonoidWithZero.toLinearOrderedCommMonoid.{u1} α _inst_1)))) (PartialOrder.toPreorder.{u2} γ (OrderedCommMonoid.toPartialOrder.{u2} γ (LinearOrderedCommMonoid.toOrderedCommMonoid.{u2} γ (LinearOrderedCommMonoidWithZero.toLinearOrderedCommMonoid.{u2} γ _inst_3)))) (MonoidWithZero.toMulZeroOneClass.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (LinearOrderedCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) (MonoidWithZero.toMulZeroOneClass.{u2} γ (CommMonoidWithZero.toMonoidWithZero.{u2} γ (LinearOrderedCommMonoidWithZero.toCommMonoidWithZero.{u2} γ _inst_3)))) (instHMul.{max u1 u2} (OrderMonoidWithZeroHom.{u1, u2} α γ (PartialOrder.toPreorder.{u1} α (OrderedCommMonoid.toPartialOrder.{u1} α (LinearOrderedCommMonoid.toOrderedCommMonoid.{u1} α (LinearOrderedCommMonoidWithZero.toLinearOrderedCommMonoid.{u1} α _inst_1)))) (PartialOrder.toPreorder.{u2} γ (OrderedCommMonoid.toPartialOrder.{u2} γ (LinearOrderedCommMonoid.toOrderedCommMonoid.{u2} γ (LinearOrderedCommMonoidWithZero.toLinearOrderedCommMonoid.{u2} γ _inst_3)))) (MonoidWithZero.toMulZeroOneClass.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (LinearOrderedCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) (MonoidWithZero.toMulZeroOneClass.{u2} γ (CommMonoidWithZero.toMonoidWithZero.{u2} γ (LinearOrderedCommMonoidWithZero.toCommMonoidWithZero.{u2} γ _inst_3)))) (OrderMonoidWithZeroHom.instMulOrderMonoidWithZeroHomToPreorderToPartialOrderToOrderedCommMonoidToLinearOrderedCommMonoidToPreorderToPartialOrderToOrderedCommMonoidToLinearOrderedCommMonoidToMulZeroOneClassToMonoidWithZeroToCommMonoidWithZeroToMulZeroOneClassToMonoidWithZeroToCommMonoidWithZero.{u1, u2} α γ _inst_1 _inst_3)) (OrderMonoidWithZeroHom.comp.{u1, u3, u2} α β γ (PartialOrder.toPreorder.{u1} α (OrderedCommMonoid.toPartialOrder.{u1} α (LinearOrderedCommMonoid.toOrderedCommMonoid.{u1} α (LinearOrderedCommMonoidWithZero.toLinearOrderedCommMonoid.{u1} α _inst_1)))) (PartialOrder.toPreorder.{u3} β (OrderedCommMonoid.toPartialOrder.{u3} β (LinearOrderedCommMonoid.toOrderedCommMonoid.{u3} β (LinearOrderedCommMonoidWithZero.toLinearOrderedCommMonoid.{u3} β _inst_2)))) (PartialOrder.toPreorder.{u2} γ (OrderedCommMonoid.toPartialOrder.{u2} γ (LinearOrderedCommMonoid.toOrderedCommMonoid.{u2} γ (LinearOrderedCommMonoidWithZero.toLinearOrderedCommMonoid.{u2} γ _inst_3)))) (MonoidWithZero.toMulZeroOneClass.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (LinearOrderedCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) (MonoidWithZero.toMulZeroOneClass.{u3} β (CommMonoidWithZero.toMonoidWithZero.{u3} β (LinearOrderedCommMonoidWithZero.toCommMonoidWithZero.{u3} β _inst_2))) (MonoidWithZero.toMulZeroOneClass.{u2} γ (CommMonoidWithZero.toMonoidWithZero.{u2} γ (LinearOrderedCommMonoidWithZero.toCommMonoidWithZero.{u2} γ _inst_3))) g f₁) (OrderMonoidWithZeroHom.comp.{u1, u3, u2} α β γ (PartialOrder.toPreorder.{u1} α (OrderedCommMonoid.toPartialOrder.{u1} α (LinearOrderedCommMonoid.toOrderedCommMonoid.{u1} α (LinearOrderedCommMonoidWithZero.toLinearOrderedCommMonoid.{u1} α _inst_1)))) (PartialOrder.toPreorder.{u3} β (OrderedCommMonoid.toPartialOrder.{u3} β (LinearOrderedCommMonoid.toOrderedCommMonoid.{u3} β (LinearOrderedCommMonoidWithZero.toLinearOrderedCommMonoid.{u3} β _inst_2)))) (PartialOrder.toPreorder.{u2} γ (OrderedCommMonoid.toPartialOrder.{u2} γ (LinearOrderedCommMonoid.toOrderedCommMonoid.{u2} γ (LinearOrderedCommMonoidWithZero.toLinearOrderedCommMonoid.{u2} γ _inst_3)))) (MonoidWithZero.toMulZeroOneClass.{u1} α (CommMonoidWithZero.toMonoidWithZero.{u1} α (LinearOrderedCommMonoidWithZero.toCommMonoidWithZero.{u1} α _inst_1))) (MonoidWithZero.toMulZeroOneClass.{u3} β (CommMonoidWithZero.toMonoidWithZero.{u3} β (LinearOrderedCommMonoidWithZero.toCommMonoidWithZero.{u3} β _inst_2))) (MonoidWithZero.toMulZeroOneClass.{u2} γ (CommMonoidWithZero.toMonoidWithZero.{u2} γ (LinearOrderedCommMonoidWithZero.toCommMonoidWithZero.{u2} γ _inst_3))) g f₂))
Case conversion may be inaccurate. Consider using '#align order_monoid_with_zero_hom.comp_mul OrderMonoidWithZeroHom.comp_mulₓ'. -/
theorem comp_mul (g : β →*₀o γ) (f₁ f₂ : α →*₀o β) : g.comp (f₁ * f₂) = g.comp f₁ * g.comp f₂ :=
  ext fun _ => map_mul g _ _
#align order_monoid_with_zero_hom.comp_mul OrderMonoidWithZeroHom.comp_mul

end Mul

section LinearOrderedCommMonoidWithZero

variable {hα : Preorder α} {hα' : MulZeroOneClass α} {hβ : Preorder β} {hβ' : MulZeroOneClass β}

include hα hα' hβ hβ'

/- warning: order_monoid_with_zero_hom.to_monoid_with_zero_hom_eq_coe -> OrderMonoidWithZeroHom.toMonoidWithZeroHom_eq_coe is a dubious translation:
lean 3 declaration is
  forall {α : Type.{u1}} {β : Type.{u2}} {hα : Preorder.{u1} α} {hα' : MulZeroOneClass.{u1} α} {hβ : Preorder.{u2} β} {hβ' : MulZeroOneClass.{u2} β} (f : OrderMonoidWithZeroHom.{u1, u2} α β hα hβ hα' hβ'), Eq.{max (succ u2) (succ u1)} (MonoidWithZeroHom.{u1, u2} α β hα' hβ') (OrderMonoidWithZeroHom.toMonoidWithZeroHom.{u1, u2} α β hα hβ hα' hβ' f) ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (OrderMonoidWithZeroHom.{u1, u2} α β hα hβ hα' hβ') (MonoidWithZeroHom.{u1, u2} α β hα' hβ') (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (OrderMonoidWithZeroHom.{u1, u2} α β hα hβ hα' hβ') (MonoidWithZeroHom.{u1, u2} α β hα' hβ') (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (OrderMonoidWithZeroHom.{u1, u2} α β hα hβ hα' hβ') (MonoidWithZeroHom.{u1, u2} α β hα' hβ') (MonoidWithZeroHom.hasCoeT.{u1, u2, max u1 u2} α β (OrderMonoidWithZeroHom.{u1, u2} α β hα hβ hα' hβ') hα' hβ' (OrderMonoidWithZeroHomClass.toMonoidWithZeroHomClass.{max u1 u2, u1, u2} (OrderMonoidWithZeroHom.{u1, u2} α β hα hβ hα' hβ') α β hα hβ hα' hβ' (OrderMonoidWithZeroHom.orderMonoidWithZeroHomClass.{u1, u2} α β hα hβ hα' hβ'))))) f)
but is expected to have type
  forall {α : Type.{u2}} {β : Type.{u1}} {hα : Preorder.{u2} α} {hα' : MulZeroOneClass.{u2} α} {hβ : Preorder.{u1} β} {hβ' : MulZeroOneClass.{u1} β} (f : OrderMonoidWithZeroHom.{u2, u1} α β hα hβ hα' hβ'), Eq.{max (succ u2) (succ u1)} (MonoidWithZeroHom.{u2, u1} α β hα' hβ') (OrderMonoidWithZeroHom.toMonoidWithZeroHom.{u2, u1} α β hα hβ hα' hβ' f) (MonoidWithZeroHomClass.toMonoidWithZeroHom.{u2, u1, max u2 u1} α β (OrderMonoidWithZeroHom.{u2, u1} α β hα hβ hα' hβ') hα' hβ' (OrderMonoidWithZeroHomClass.toMonoidWithZeroHomClass.{max u2 u1, u2, u1} (OrderMonoidWithZeroHom.{u2, u1} α β hα hβ hα' hβ') α β hα hβ hα' hβ' (OrderMonoidWithZeroHom.instOrderMonoidWithZeroHomClassOrderMonoidWithZeroHom.{u2, u1} α β hα hβ hα' hβ')) f)
Case conversion may be inaccurate. Consider using '#align order_monoid_with_zero_hom.to_monoid_with_zero_hom_eq_coe OrderMonoidWithZeroHom.toMonoidWithZeroHom_eq_coeₓ'. -/
@[simp]
theorem toMonoidWithZeroHom_eq_coe (f : α →*₀o β) : f.toMonoidWithZeroHom = f :=
  by
  ext
  rfl
#align order_monoid_with_zero_hom.to_monoid_with_zero_hom_eq_coe OrderMonoidWithZeroHom.toMonoidWithZeroHom_eq_coe

/- warning: order_monoid_with_zero_hom.to_order_monoid_hom_eq_coe -> OrderMonoidWithZeroHom.toOrderMonoidHom_eq_coe is a dubious translation:
lean 3 declaration is
  forall {α : Type.{u1}} {β : Type.{u2}} {hα : Preorder.{u1} α} {hα' : MulZeroOneClass.{u1} α} {hβ : Preorder.{u2} β} {hβ' : MulZeroOneClass.{u2} β} (f : OrderMonoidWithZeroHom.{u1, u2} α β hα hβ hα' hβ'), Eq.{max (succ u1) (succ u2)} (OrderMonoidHom.{u1, u2} α β hα hβ (MulZeroOneClass.toMulOneClass.{u1} α hα') (MulZeroOneClass.toMulOneClass.{u2} β hβ')) (OrderMonoidWithZeroHom.toOrderMonoidHom.{u1, u2} α β hα hβ hα' hβ' f) ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u1) (succ u2)} a b] => self.0) (OrderMonoidWithZeroHom.{u1, u2} α β hα hβ hα' hβ') (OrderMonoidHom.{u1, u2} α β hα hβ (MulZeroOneClass.toMulOneClass.{u1} α hα') (MulZeroOneClass.toMulOneClass.{u2} β hβ')) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (OrderMonoidWithZeroHom.{u1, u2} α β hα hβ hα' hβ') (OrderMonoidHom.{u1, u2} α β hα hβ (MulZeroOneClass.toMulOneClass.{u1} α hα') (MulZeroOneClass.toMulOneClass.{u2} β hβ')) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (OrderMonoidWithZeroHom.{u1, u2} α β hα hβ hα' hβ') (OrderMonoidHom.{u1, u2} α β hα hβ (MulZeroOneClass.toMulOneClass.{u1} α hα') (MulZeroOneClass.toMulOneClass.{u2} β hβ')) (OrderMonoidHom.hasCoeT.{max u1 u2, u1, u2} (OrderMonoidWithZeroHom.{u1, u2} α β hα hβ hα' hβ') α β hα hβ (MulZeroOneClass.toMulOneClass.{u1} α hα') (MulZeroOneClass.toMulOneClass.{u2} β hβ') (OrderMonoidWithZeroHomClass.toOrderMonoidHomClass.{max u1 u2, u1, u2} (OrderMonoidWithZeroHom.{u1, u2} α β hα hβ hα' hβ') α β hα hβ hα' hβ' (OrderMonoidWithZeroHom.orderMonoidWithZeroHomClass.{u1, u2} α β hα hβ hα' hβ'))))) f)
but is expected to have type
  forall {α : Type.{u2}} {β : Type.{u1}} {hα : Preorder.{u2} α} {hα' : MulZeroOneClass.{u2} α} {hβ : Preorder.{u1} β} {hβ' : MulZeroOneClass.{u1} β} (f : OrderMonoidWithZeroHom.{u2, u1} α β hα hβ hα' hβ'), Eq.{max (succ u2) (succ u1)} (OrderMonoidHom.{u2, u1} α β hα hβ (MulZeroOneClass.toMulOneClass.{u2} α hα') (MulZeroOneClass.toMulOneClass.{u1} β hβ')) (OrderMonoidWithZeroHom.toOrderMonoidHom.{u2, u1} α β hα hβ hα' hβ' f) (OrderMonoidHomClass.toOrderMonoidHom.{max u2 u1, u2, u1} (OrderMonoidWithZeroHom.{u2, u1} α β hα hβ hα' hβ') α β hα hβ (MulZeroOneClass.toMulOneClass.{u2} α hα') (MulZeroOneClass.toMulOneClass.{u1} β hβ') (OrderMonoidWithZeroHomClass.toOrderMonoidHomClass.{max u2 u1, u2, u1} (OrderMonoidWithZeroHom.{u2, u1} α β hα hβ hα' hβ') α β hα hβ hα' hβ' (OrderMonoidWithZeroHom.instOrderMonoidWithZeroHomClassOrderMonoidWithZeroHom.{u2, u1} α β hα hβ hα' hβ')) f)
Case conversion may be inaccurate. Consider using '#align order_monoid_with_zero_hom.to_order_monoid_hom_eq_coe OrderMonoidWithZeroHom.toOrderMonoidHom_eq_coeₓ'. -/
@[simp]
theorem toOrderMonoidHom_eq_coe (f : α →*₀o β) : f.toOrderMonoidHom = f :=
  rfl
#align order_monoid_with_zero_hom.to_order_monoid_hom_eq_coe OrderMonoidWithZeroHom.toOrderMonoidHom_eq_coe

end LinearOrderedCommMonoidWithZero

end OrderMonoidWithZeroHom