algebra.group.with_one.basicMathlib.Algebra.Group.WithOne.Basic

This file has been ported!

Changes since the initial port

The following section lists changes to this file in mathlib3 and mathlib4 that occured after the initial port. Most recent changes are shown first. Hovering over a commit will show all commits associated with the same mathlib3 commit.

Changes in mathlib3

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(last sync)

Changes in mathlib3port

mathlib3
mathlib3port
Diff
@@ -4,7 +4,7 @@ Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Mario Carneiro, Johan Commelin
 -/
 import Algebra.Group.WithOne.Defs
-import Algebra.Hom.Equiv.Basic
+import Algebra.Group.Equiv.Basic
 
 #align_import algebra.group.with_one.basic from "leanprover-community/mathlib"@"448144f7ae193a8990cb7473c9e9a01990f64ac7"
 
Diff
@@ -3,8 +3,8 @@ Copyright (c) 2018 Mario Carneiro. All rights reserved.
 Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Mario Carneiro, Johan Commelin
 -/
-import Mathbin.Algebra.Group.WithOne.Defs
-import Mathbin.Algebra.Hom.Equiv.Basic
+import Algebra.Group.WithOne.Defs
+import Algebra.Hom.Equiv.Basic
 
 #align_import algebra.group.with_one.basic from "leanprover-community/mathlib"@"448144f7ae193a8990cb7473c9e9a01990f64ac7"
 
Diff
@@ -62,7 +62,7 @@ def lift : (α →ₙ* β) ≃ (WithOne α →* β)
       map_one' := rfl
       map_mul' := fun x y =>
         WithOne.cases_on x (by rw [one_mul]; exact (one_mul _).symm) fun x =>
-          WithOne.cases_on y (by rw [mul_one]; exact (mul_one _).symm) fun y => f.map_mul x y }
+          WithOne.cases_on y (by rw [mul_one]; exact (mul_one _).symm) fun y => f.map_hMul x y }
   invFun F := F.toMulHom.comp coeMulHom
   left_inv f := MulHom.ext fun x => rfl
   right_inv F := MonoidHom.ext fun x => WithOne.cases_on x F.map_one.symm fun x => rfl
Diff
@@ -2,15 +2,12 @@
 Copyright (c) 2018 Mario Carneiro. All rights reserved.
 Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Mario Carneiro, Johan Commelin
-
-! This file was ported from Lean 3 source module algebra.group.with_one.basic
-! 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.Algebra.Group.WithOne.Defs
 import Mathbin.Algebra.Hom.Equiv.Basic
 
+#align_import algebra.group.with_one.basic from "leanprover-community/mathlib"@"448144f7ae193a8990cb7473c9e9a01990f64ac7"
+
 /-!
 # More operations on `with_one` and `with_zero`
 
Diff
@@ -55,6 +55,7 @@ attribute [local semireducible] WithOne WithZero
 
 variable [Mul α] [MulOneClass β]
 
+#print WithOne.lift /-
 /-- Lift a semigroup homomorphism `f` to a bundled monoid homorphism. -/
 @[to_additive "Lift an add_semigroup homomorphism `f` to a bundled add_monoid homorphism."]
 def lift : (α →ₙ* β) ≃ (WithOne α →* β)
@@ -70,20 +71,25 @@ def lift : (α →ₙ* β) ≃ (WithOne α →* β)
   right_inv F := MonoidHom.ext fun x => WithOne.cases_on x F.map_one.symm fun x => rfl
 #align with_one.lift WithOne.lift
 #align with_zero.lift WithZero.lift
+-/
 
 variable (f : α →ₙ* β)
 
+#print WithOne.lift_coe /-
 @[simp, to_additive]
 theorem lift_coe (x : α) : lift f x = f x :=
   rfl
 #align with_one.lift_coe WithOne.lift_coe
 #align with_zero.lift_coe WithZero.lift_coe
+-/
 
+#print WithOne.lift_one /-
 @[simp, to_additive]
 theorem lift_one : lift f 1 = 1 :=
   rfl
 #align with_one.lift_one WithOne.lift_one
 #align with_zero.lift_zero WithZero.lift_zero
+-/
 
 #print WithOne.lift_unique /-
 @[to_additive]
@@ -110,11 +116,13 @@ def map (f : α →ₙ* β) : WithOne α →* WithOne β :=
 #align with_zero.map WithZero.map
 -/
 
+#print WithOne.map_coe /-
 @[simp, to_additive]
 theorem map_coe (f : α →ₙ* β) (a : α) : map f (a : WithOne α) = f a :=
   lift_coe _ _
 #align with_one.map_coe WithOne.map_coe
 #align with_zero.map_coe WithZero.map_coe
+-/
 
 #print WithOne.map_id /-
 @[simp, to_additive]
@@ -124,11 +132,13 @@ theorem map_id : map (MulHom.id α) = MonoidHom.id (WithOne α) := by ext;
 #align with_zero.map_id WithZero.map_id
 -/
 
+#print WithOne.map_map /-
 @[to_additive]
 theorem map_map (f : α →ₙ* β) (g : β →ₙ* γ) (x) : map g (map f x) = map (g.comp f) x := by
   induction x using WithOne.cases_on <;> rfl
 #align with_one.map_map WithOne.map_map
 #align with_zero.map_map WithZero.map_map
+-/
 
 #print WithOne.map_comp /-
 @[simp, to_additive]
Diff
@@ -55,12 +55,6 @@ attribute [local semireducible] WithOne WithZero
 
 variable [Mul α] [MulOneClass β]
 
-/- warning: with_one.lift -> WithOne.lift is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : Mul.{u1} α] [_inst_2 : MulOneClass.{u2} β], Equiv.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (MulHom.{u1, u2} α β _inst_1 (MulOneClass.toHasMul.{u2} β _inst_2)) (MonoidHom.{u1, u2} (WithOne.{u1} α) β (WithOne.mulOneClass.{u1} α _inst_1) _inst_2)
-but is expected to have type
-  forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : Mul.{u1} α] [_inst_2 : MulOneClass.{u2} β], Equiv.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (MulHom.{u1, u2} α β _inst_1 (MulOneClass.toMul.{u2} β _inst_2)) (MonoidHom.{u1, u2} (WithOne.{u1} α) β (WithOne.mulOneClass.{u1} α _inst_1) _inst_2)
-Case conversion may be inaccurate. Consider using '#align with_one.lift WithOne.liftₓ'. -/
 /-- Lift a semigroup homomorphism `f` to a bundled monoid homorphism. -/
 @[to_additive "Lift an add_semigroup homomorphism `f` to a bundled add_monoid homorphism."]
 def lift : (α →ₙ* β) ≃ (WithOne α →* β)
@@ -79,24 +73,12 @@ def lift : (α →ₙ* β) ≃ (WithOne α →* β)
 
 variable (f : α →ₙ* β)
 
-/- warning: with_one.lift_coe -> WithOne.lift_coe is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : Mul.{u1} α] [_inst_2 : MulOneClass.{u2} β] (f : MulHom.{u1, u2} α β _inst_1 (MulOneClass.toHasMul.{u2} β _inst_2)) (x : α), Eq.{succ u2} β (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} (WithOne.{u1} α) β (WithOne.mulOneClass.{u1} α _inst_1) _inst_2) (fun (_x : MonoidHom.{u1, u2} (WithOne.{u1} α) β (WithOne.mulOneClass.{u1} α _inst_1) _inst_2) => (WithOne.{u1} α) -> β) (MonoidHom.hasCoeToFun.{u1, u2} (WithOne.{u1} α) β (WithOne.mulOneClass.{u1} α _inst_1) _inst_2) (coeFn.{max 1 (succ u2) (succ u1), max (succ u2) (succ u1)} (Equiv.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (MulHom.{u1, u2} α β _inst_1 (MulOneClass.toHasMul.{u2} β _inst_2)) (MonoidHom.{u1, u2} (WithOne.{u1} α) β (WithOne.mulOneClass.{u1} α _inst_1) _inst_2)) (fun (_x : Equiv.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (MulHom.{u1, u2} α β _inst_1 (MulOneClass.toHasMul.{u2} β _inst_2)) (MonoidHom.{u1, u2} (WithOne.{u1} α) β (WithOne.mulOneClass.{u1} α _inst_1) _inst_2)) => (MulHom.{u1, u2} α β _inst_1 (MulOneClass.toHasMul.{u2} β _inst_2)) -> (MonoidHom.{u1, u2} (WithOne.{u1} α) β (WithOne.mulOneClass.{u1} α _inst_1) _inst_2)) (Equiv.hasCoeToFun.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (MulHom.{u1, u2} α β _inst_1 (MulOneClass.toHasMul.{u2} β _inst_2)) (MonoidHom.{u1, u2} (WithOne.{u1} α) β (WithOne.mulOneClass.{u1} α _inst_1) _inst_2)) (WithOne.lift.{u1, u2} α β _inst_1 _inst_2) f) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) α (WithOne.{u1} α) (HasLiftT.mk.{succ u1, succ u1} α (WithOne.{u1} α) (CoeTCₓ.coe.{succ u1, succ u1} α (WithOne.{u1} α) (WithOne.hasCoeT.{u1} α))) x)) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MulHom.{u1, u2} α β _inst_1 (MulOneClass.toHasMul.{u2} β _inst_2)) (fun (_x : MulHom.{u1, u2} α β _inst_1 (MulOneClass.toHasMul.{u2} β _inst_2)) => α -> β) (MulHom.hasCoeToFun.{u1, u2} α β _inst_1 (MulOneClass.toHasMul.{u2} β _inst_2)) f x)
-but is expected to have type
-  forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : Mul.{u1} α] [_inst_2 : MulOneClass.{u2} β] (f : MulHom.{u1, u2} α β _inst_1 (MulOneClass.toMul.{u2} β _inst_2)) (x : α), Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : WithOne.{u1} α) => β) (WithOne.coe.{u1} α x)) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : MulHom.{u1, u2} α β _inst_1 (MulOneClass.toMul.{u2} β _inst_2)) => MonoidHom.{u1, u2} (WithOne.{u1} α) β (WithOne.mulOneClass.{u1} α _inst_1) _inst_2) f) (WithOne.{u1} α) (fun (_x : WithOne.{u1} α) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : WithOne.{u1} α) => β) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : MulHom.{u1, u2} α β _inst_1 (MulOneClass.toMul.{u2} β _inst_2)) => MonoidHom.{u1, u2} (WithOne.{u1} α) β (WithOne.mulOneClass.{u1} α _inst_1) _inst_2) f) (WithOne.{u1} α) β (MulOneClass.toMul.{u1} (WithOne.{u1} α) (WithOne.mulOneClass.{u1} α _inst_1)) (MulOneClass.toMul.{u2} β _inst_2) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : MulHom.{u1, u2} α β _inst_1 (MulOneClass.toMul.{u2} β _inst_2)) => MonoidHom.{u1, u2} (WithOne.{u1} α) β (WithOne.mulOneClass.{u1} α _inst_1) _inst_2) f) (WithOne.{u1} α) β (WithOne.mulOneClass.{u1} α _inst_1) _inst_2 (MonoidHom.monoidHomClass.{u1, u2} (WithOne.{u1} α) β (WithOne.mulOneClass.{u1} α _inst_1) _inst_2))) (FunLike.coe.{max (succ u2) (succ u1), max (succ u2) (succ u1), max (succ u2) (succ u1)} (Equiv.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (MulHom.{u1, u2} α β _inst_1 (MulOneClass.toMul.{u2} β _inst_2)) (MonoidHom.{u1, u2} (WithOne.{u1} α) β (WithOne.mulOneClass.{u1} α _inst_1) _inst_2)) (MulHom.{u1, u2} α β _inst_1 (MulOneClass.toMul.{u2} β _inst_2)) (fun (_x : MulHom.{u1, u2} α β _inst_1 (MulOneClass.toMul.{u2} β _inst_2)) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : MulHom.{u1, u2} α β _inst_1 (MulOneClass.toMul.{u2} β _inst_2)) => MonoidHom.{u1, u2} (WithOne.{u1} α) β (WithOne.mulOneClass.{u1} α _inst_1) _inst_2) _x) (Equiv.instFunLikeEquiv.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (MulHom.{u1, u2} α β _inst_1 (MulOneClass.toMul.{u2} β _inst_2)) (MonoidHom.{u1, u2} (WithOne.{u1} α) β (WithOne.mulOneClass.{u1} α _inst_1) _inst_2)) (WithOne.lift.{u1, u2} α β _inst_1 _inst_2) f) (WithOne.coe.{u1} α x)) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MulHom.{u1, u2} α β _inst_1 (MulOneClass.toMul.{u2} β _inst_2)) α (fun (_x : α) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : α) => β) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MulHom.{u1, u2} α β _inst_1 (MulOneClass.toMul.{u2} β _inst_2)) α β _inst_1 (MulOneClass.toMul.{u2} β _inst_2) (MulHom.mulHomClass.{u1, u2} α β _inst_1 (MulOneClass.toMul.{u2} β _inst_2))) f x)
-Case conversion may be inaccurate. Consider using '#align with_one.lift_coe WithOne.lift_coeₓ'. -/
 @[simp, to_additive]
 theorem lift_coe (x : α) : lift f x = f x :=
   rfl
 #align with_one.lift_coe WithOne.lift_coe
 #align with_zero.lift_coe WithZero.lift_coe
 
-/- warning: with_one.lift_one -> WithOne.lift_one is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : Mul.{u1} α] [_inst_2 : MulOneClass.{u2} β] (f : MulHom.{u1, u2} α β _inst_1 (MulOneClass.toHasMul.{u2} β _inst_2)), Eq.{succ u2} β (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} (WithOne.{u1} α) β (WithOne.mulOneClass.{u1} α _inst_1) _inst_2) (fun (_x : MonoidHom.{u1, u2} (WithOne.{u1} α) β (WithOne.mulOneClass.{u1} α _inst_1) _inst_2) => (WithOne.{u1} α) -> β) (MonoidHom.hasCoeToFun.{u1, u2} (WithOne.{u1} α) β (WithOne.mulOneClass.{u1} α _inst_1) _inst_2) (coeFn.{max 1 (succ u2) (succ u1), max (succ u2) (succ u1)} (Equiv.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (MulHom.{u1, u2} α β _inst_1 (MulOneClass.toHasMul.{u2} β _inst_2)) (MonoidHom.{u1, u2} (WithOne.{u1} α) β (WithOne.mulOneClass.{u1} α _inst_1) _inst_2)) (fun (_x : Equiv.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (MulHom.{u1, u2} α β _inst_1 (MulOneClass.toHasMul.{u2} β _inst_2)) (MonoidHom.{u1, u2} (WithOne.{u1} α) β (WithOne.mulOneClass.{u1} α _inst_1) _inst_2)) => (MulHom.{u1, u2} α β _inst_1 (MulOneClass.toHasMul.{u2} β _inst_2)) -> (MonoidHom.{u1, u2} (WithOne.{u1} α) β (WithOne.mulOneClass.{u1} α _inst_1) _inst_2)) (Equiv.hasCoeToFun.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (MulHom.{u1, u2} α β _inst_1 (MulOneClass.toHasMul.{u2} β _inst_2)) (MonoidHom.{u1, u2} (WithOne.{u1} α) β (WithOne.mulOneClass.{u1} α _inst_1) _inst_2)) (WithOne.lift.{u1, u2} α β _inst_1 _inst_2) f) (OfNat.ofNat.{u1} (WithOne.{u1} α) 1 (OfNat.mk.{u1} (WithOne.{u1} α) 1 (One.one.{u1} (WithOne.{u1} α) (WithOne.one.{u1} α))))) (OfNat.ofNat.{u2} β 1 (OfNat.mk.{u2} β 1 (One.one.{u2} β (MulOneClass.toHasOne.{u2} β _inst_2))))
-but is expected to have type
-  forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : Mul.{u1} α] [_inst_2 : MulOneClass.{u2} β] (f : MulHom.{u1, u2} α β _inst_1 (MulOneClass.toMul.{u2} β _inst_2)), Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : WithOne.{u1} α) => β) (OfNat.ofNat.{u1} (WithOne.{u1} α) 1 (One.toOfNat1.{u1} (WithOne.{u1} α) (WithOne.one.{u1} α)))) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : MulHom.{u1, u2} α β _inst_1 (MulOneClass.toMul.{u2} β _inst_2)) => MonoidHom.{u1, u2} (WithOne.{u1} α) β (WithOne.mulOneClass.{u1} α _inst_1) _inst_2) f) (WithOne.{u1} α) (fun (_x : WithOne.{u1} α) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : WithOne.{u1} α) => β) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : MulHom.{u1, u2} α β _inst_1 (MulOneClass.toMul.{u2} β _inst_2)) => MonoidHom.{u1, u2} (WithOne.{u1} α) β (WithOne.mulOneClass.{u1} α _inst_1) _inst_2) f) (WithOne.{u1} α) β (MulOneClass.toMul.{u1} (WithOne.{u1} α) (WithOne.mulOneClass.{u1} α _inst_1)) (MulOneClass.toMul.{u2} β _inst_2) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : MulHom.{u1, u2} α β _inst_1 (MulOneClass.toMul.{u2} β _inst_2)) => MonoidHom.{u1, u2} (WithOne.{u1} α) β (WithOne.mulOneClass.{u1} α _inst_1) _inst_2) f) (WithOne.{u1} α) β (WithOne.mulOneClass.{u1} α _inst_1) _inst_2 (MonoidHom.monoidHomClass.{u1, u2} (WithOne.{u1} α) β (WithOne.mulOneClass.{u1} α _inst_1) _inst_2))) (FunLike.coe.{max (succ u2) (succ u1), max (succ u2) (succ u1), max (succ u2) (succ u1)} (Equiv.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (MulHom.{u1, u2} α β _inst_1 (MulOneClass.toMul.{u2} β _inst_2)) (MonoidHom.{u1, u2} (WithOne.{u1} α) β (WithOne.mulOneClass.{u1} α _inst_1) _inst_2)) (MulHom.{u1, u2} α β _inst_1 (MulOneClass.toMul.{u2} β _inst_2)) (fun (_x : MulHom.{u1, u2} α β _inst_1 (MulOneClass.toMul.{u2} β _inst_2)) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : MulHom.{u1, u2} α β _inst_1 (MulOneClass.toMul.{u2} β _inst_2)) => MonoidHom.{u1, u2} (WithOne.{u1} α) β (WithOne.mulOneClass.{u1} α _inst_1) _inst_2) _x) (Equiv.instFunLikeEquiv.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (MulHom.{u1, u2} α β _inst_1 (MulOneClass.toMul.{u2} β _inst_2)) (MonoidHom.{u1, u2} (WithOne.{u1} α) β (WithOne.mulOneClass.{u1} α _inst_1) _inst_2)) (WithOne.lift.{u1, u2} α β _inst_1 _inst_2) f) (OfNat.ofNat.{u1} (WithOne.{u1} α) 1 (One.toOfNat1.{u1} (WithOne.{u1} α) (WithOne.one.{u1} α)))) (OfNat.ofNat.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : WithOne.{u1} α) => β) (OfNat.ofNat.{u1} (WithOne.{u1} α) 1 (One.toOfNat1.{u1} (WithOne.{u1} α) (WithOne.one.{u1} α)))) 1 (One.toOfNat1.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : WithOne.{u1} α) => β) (OfNat.ofNat.{u1} (WithOne.{u1} α) 1 (One.toOfNat1.{u1} (WithOne.{u1} α) (WithOne.one.{u1} α)))) (MulOneClass.toOne.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : WithOne.{u1} α) => β) (OfNat.ofNat.{u1} (WithOne.{u1} α) 1 (One.toOfNat1.{u1} (WithOne.{u1} α) (WithOne.one.{u1} α)))) _inst_2)))
-Case conversion may be inaccurate. Consider using '#align with_one.lift_one WithOne.lift_oneₓ'. -/
 @[simp, to_additive]
 theorem lift_one : lift f 1 = 1 :=
   rfl
@@ -128,12 +110,6 @@ def map (f : α →ₙ* β) : WithOne α →* WithOne β :=
 #align with_zero.map WithZero.map
 -/
 
-/- warning: with_one.map_coe -> WithOne.map_coe is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : Mul.{u1} α] [_inst_2 : Mul.{u2} β] (f : MulHom.{u1, u2} α β _inst_1 _inst_2) (a : α), Eq.{succ u2} (WithOne.{u2} β) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} (WithOne.{u1} α) (WithOne.{u2} β) (WithOne.mulOneClass.{u1} α _inst_1) (WithOne.mulOneClass.{u2} β _inst_2)) (fun (_x : MonoidHom.{u1, u2} (WithOne.{u1} α) (WithOne.{u2} β) (WithOne.mulOneClass.{u1} α _inst_1) (WithOne.mulOneClass.{u2} β _inst_2)) => (WithOne.{u1} α) -> (WithOne.{u2} β)) (MonoidHom.hasCoeToFun.{u1, u2} (WithOne.{u1} α) (WithOne.{u2} β) (WithOne.mulOneClass.{u1} α _inst_1) (WithOne.mulOneClass.{u2} β _inst_2)) (WithOne.map.{u1, u2} α β _inst_1 _inst_2 f) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) α (WithOne.{u1} α) (HasLiftT.mk.{succ u1, succ u1} α (WithOne.{u1} α) (CoeTCₓ.coe.{succ u1, succ u1} α (WithOne.{u1} α) (WithOne.hasCoeT.{u1} α))) a)) ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) β (WithOne.{u2} β) (HasLiftT.mk.{succ u2, succ u2} β (WithOne.{u2} β) (CoeTCₓ.coe.{succ u2, succ u2} β (WithOne.{u2} β) (WithOne.hasCoeT.{u2} β))) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MulHom.{u1, u2} α β _inst_1 _inst_2) (fun (_x : MulHom.{u1, u2} α β _inst_1 _inst_2) => α -> β) (MulHom.hasCoeToFun.{u1, u2} α β _inst_1 _inst_2) f a))
-but is expected to have type
-  forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : Mul.{u1} α] [_inst_2 : Mul.{u2} β] (f : MulHom.{u1, u2} α β _inst_1 _inst_2) (a : α), Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : WithOne.{u1} α) => WithOne.{u2} β) (WithOne.coe.{u1} α a)) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} (WithOne.{u1} α) (WithOne.{u2} β) (WithOne.mulOneClass.{u1} α _inst_1) (WithOne.mulOneClass.{u2} β _inst_2)) (WithOne.{u1} α) (fun (_x : WithOne.{u1} α) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : WithOne.{u1} α) => WithOne.{u2} β) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} (WithOne.{u1} α) (WithOne.{u2} β) (WithOne.mulOneClass.{u1} α _inst_1) (WithOne.mulOneClass.{u2} β _inst_2)) (WithOne.{u1} α) (WithOne.{u2} β) (MulOneClass.toMul.{u1} (WithOne.{u1} α) (WithOne.mulOneClass.{u1} α _inst_1)) (MulOneClass.toMul.{u2} (WithOne.{u2} β) (WithOne.mulOneClass.{u2} β _inst_2)) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} (WithOne.{u1} α) (WithOne.{u2} β) (WithOne.mulOneClass.{u1} α _inst_1) (WithOne.mulOneClass.{u2} β _inst_2)) (WithOne.{u1} α) (WithOne.{u2} β) (WithOne.mulOneClass.{u1} α _inst_1) (WithOne.mulOneClass.{u2} β _inst_2) (MonoidHom.monoidHomClass.{u1, u2} (WithOne.{u1} α) (WithOne.{u2} β) (WithOne.mulOneClass.{u1} α _inst_1) (WithOne.mulOneClass.{u2} β _inst_2)))) (WithOne.map.{u1, u2} α β _inst_1 _inst_2 f) (WithOne.coe.{u1} α a)) (WithOne.coe.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : α) => β) a) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MulHom.{u1, u2} α β _inst_1 _inst_2) α (fun (_x : α) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : α) => β) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MulHom.{u1, u2} α β _inst_1 _inst_2) α β _inst_1 _inst_2 (MulHom.mulHomClass.{u1, u2} α β _inst_1 _inst_2)) f a))
-Case conversion may be inaccurate. Consider using '#align with_one.map_coe WithOne.map_coeₓ'. -/
 @[simp, to_additive]
 theorem map_coe (f : α →ₙ* β) (a : α) : map f (a : WithOne α) = f a :=
   lift_coe _ _
@@ -148,12 +124,6 @@ theorem map_id : map (MulHom.id α) = MonoidHom.id (WithOne α) := by ext;
 #align with_zero.map_id WithZero.map_id
 -/
 
-/- warning: with_one.map_map -> WithOne.map_map is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {β : Type.{u2}} {γ : Type.{u3}} [_inst_1 : Mul.{u1} α] [_inst_2 : Mul.{u2} β] [_inst_3 : Mul.{u3} γ] (f : MulHom.{u1, u2} α β _inst_1 _inst_2) (g : MulHom.{u2, u3} β γ _inst_2 _inst_3) (x : WithOne.{u1} α), Eq.{succ u3} (WithOne.{u3} γ) (coeFn.{max (succ u3) (succ u2), max (succ u2) (succ u3)} (MonoidHom.{u2, u3} (WithOne.{u2} β) (WithOne.{u3} γ) (WithOne.mulOneClass.{u2} β _inst_2) (WithOne.mulOneClass.{u3} γ _inst_3)) (fun (_x : MonoidHom.{u2, u3} (WithOne.{u2} β) (WithOne.{u3} γ) (WithOne.mulOneClass.{u2} β _inst_2) (WithOne.mulOneClass.{u3} γ _inst_3)) => (WithOne.{u2} β) -> (WithOne.{u3} γ)) (MonoidHom.hasCoeToFun.{u2, u3} (WithOne.{u2} β) (WithOne.{u3} γ) (WithOne.mulOneClass.{u2} β _inst_2) (WithOne.mulOneClass.{u3} γ _inst_3)) (WithOne.map.{u2, u3} β γ _inst_2 _inst_3 g) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} (WithOne.{u1} α) (WithOne.{u2} β) (WithOne.mulOneClass.{u1} α _inst_1) (WithOne.mulOneClass.{u2} β _inst_2)) (fun (_x : MonoidHom.{u1, u2} (WithOne.{u1} α) (WithOne.{u2} β) (WithOne.mulOneClass.{u1} α _inst_1) (WithOne.mulOneClass.{u2} β _inst_2)) => (WithOne.{u1} α) -> (WithOne.{u2} β)) (MonoidHom.hasCoeToFun.{u1, u2} (WithOne.{u1} α) (WithOne.{u2} β) (WithOne.mulOneClass.{u1} α _inst_1) (WithOne.mulOneClass.{u2} β _inst_2)) (WithOne.map.{u1, u2} α β _inst_1 _inst_2 f) x)) (coeFn.{max (succ u3) (succ u1), max (succ u1) (succ u3)} (MonoidHom.{u1, u3} (WithOne.{u1} α) (WithOne.{u3} γ) (WithOne.mulOneClass.{u1} α _inst_1) (WithOne.mulOneClass.{u3} γ _inst_3)) (fun (_x : MonoidHom.{u1, u3} (WithOne.{u1} α) (WithOne.{u3} γ) (WithOne.mulOneClass.{u1} α _inst_1) (WithOne.mulOneClass.{u3} γ _inst_3)) => (WithOne.{u1} α) -> (WithOne.{u3} γ)) (MonoidHom.hasCoeToFun.{u1, u3} (WithOne.{u1} α) (WithOne.{u3} γ) (WithOne.mulOneClass.{u1} α _inst_1) (WithOne.mulOneClass.{u3} γ _inst_3)) (WithOne.map.{u1, u3} α γ _inst_1 _inst_3 (MulHom.comp.{u1, u2, u3} α β γ _inst_1 _inst_2 _inst_3 g f)) x)
-but is expected to have type
-  forall {α : Type.{u1}} {β : Type.{u2}} {γ : Type.{u3}} [_inst_1 : Mul.{u1} α] [_inst_2 : Mul.{u2} β] [_inst_3 : Mul.{u3} γ] (f : MulHom.{u1, u2} α β _inst_1 _inst_2) (g : MulHom.{u2, u3} β γ _inst_2 _inst_3) (x : WithOne.{u1} α), Eq.{succ u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : WithOne.{u2} β) => WithOne.{u3} γ) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} (WithOne.{u1} α) (WithOne.{u2} β) (WithOne.mulOneClass.{u1} α _inst_1) (WithOne.mulOneClass.{u2} β _inst_2)) (WithOne.{u1} α) (fun (a : WithOne.{u1} α) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : WithOne.{u1} α) => WithOne.{u2} β) a) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} (WithOne.{u1} α) (WithOne.{u2} β) (WithOne.mulOneClass.{u1} α _inst_1) (WithOne.mulOneClass.{u2} β _inst_2)) (WithOne.{u1} α) (WithOne.{u2} β) (MulOneClass.toMul.{u1} (WithOne.{u1} α) (WithOne.mulOneClass.{u1} α _inst_1)) (MulOneClass.toMul.{u2} (WithOne.{u2} β) (WithOne.mulOneClass.{u2} β _inst_2)) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} (WithOne.{u1} α) (WithOne.{u2} β) (WithOne.mulOneClass.{u1} α _inst_1) (WithOne.mulOneClass.{u2} β _inst_2)) (WithOne.{u1} α) (WithOne.{u2} β) (WithOne.mulOneClass.{u1} α _inst_1) (WithOne.mulOneClass.{u2} β _inst_2) (MonoidHom.monoidHomClass.{u1, u2} (WithOne.{u1} α) (WithOne.{u2} β) (WithOne.mulOneClass.{u1} α _inst_1) (WithOne.mulOneClass.{u2} β _inst_2)))) (WithOne.map.{u1, u2} α β _inst_1 _inst_2 f) x)) (FunLike.coe.{max (succ u2) (succ u3), succ u2, succ u3} (MonoidHom.{u2, u3} (WithOne.{u2} β) (WithOne.{u3} γ) (WithOne.mulOneClass.{u2} β _inst_2) (WithOne.mulOneClass.{u3} γ _inst_3)) (WithOne.{u2} β) (fun (_x : WithOne.{u2} β) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : WithOne.{u2} β) => WithOne.{u3} γ) _x) (MulHomClass.toFunLike.{max u2 u3, u2, u3} (MonoidHom.{u2, u3} (WithOne.{u2} β) (WithOne.{u3} γ) (WithOne.mulOneClass.{u2} β _inst_2) (WithOne.mulOneClass.{u3} γ _inst_3)) (WithOne.{u2} β) (WithOne.{u3} γ) (MulOneClass.toMul.{u2} (WithOne.{u2} β) (WithOne.mulOneClass.{u2} β _inst_2)) (MulOneClass.toMul.{u3} (WithOne.{u3} γ) (WithOne.mulOneClass.{u3} γ _inst_3)) (MonoidHomClass.toMulHomClass.{max u2 u3, u2, u3} (MonoidHom.{u2, u3} (WithOne.{u2} β) (WithOne.{u3} γ) (WithOne.mulOneClass.{u2} β _inst_2) (WithOne.mulOneClass.{u3} γ _inst_3)) (WithOne.{u2} β) (WithOne.{u3} γ) (WithOne.mulOneClass.{u2} β _inst_2) (WithOne.mulOneClass.{u3} γ _inst_3) (MonoidHom.monoidHomClass.{u2, u3} (WithOne.{u2} β) (WithOne.{u3} γ) (WithOne.mulOneClass.{u2} β _inst_2) (WithOne.mulOneClass.{u3} γ _inst_3)))) (WithOne.map.{u2, u3} β γ _inst_2 _inst_3 g) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} (WithOne.{u1} α) (WithOne.{u2} β) (WithOne.mulOneClass.{u1} α _inst_1) (WithOne.mulOneClass.{u2} β _inst_2)) (WithOne.{u1} α) (fun (_x : WithOne.{u1} α) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : WithOne.{u1} α) => WithOne.{u2} β) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} (WithOne.{u1} α) (WithOne.{u2} β) (WithOne.mulOneClass.{u1} α _inst_1) (WithOne.mulOneClass.{u2} β _inst_2)) (WithOne.{u1} α) (WithOne.{u2} β) (MulOneClass.toMul.{u1} (WithOne.{u1} α) (WithOne.mulOneClass.{u1} α _inst_1)) (MulOneClass.toMul.{u2} (WithOne.{u2} β) (WithOne.mulOneClass.{u2} β _inst_2)) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} (WithOne.{u1} α) (WithOne.{u2} β) (WithOne.mulOneClass.{u1} α _inst_1) (WithOne.mulOneClass.{u2} β _inst_2)) (WithOne.{u1} α) (WithOne.{u2} β) (WithOne.mulOneClass.{u1} α _inst_1) (WithOne.mulOneClass.{u2} β _inst_2) (MonoidHom.monoidHomClass.{u1, u2} (WithOne.{u1} α) (WithOne.{u2} β) (WithOne.mulOneClass.{u1} α _inst_1) (WithOne.mulOneClass.{u2} β _inst_2)))) (WithOne.map.{u1, u2} α β _inst_1 _inst_2 f) x)) (FunLike.coe.{max (succ u1) (succ u3), succ u1, succ u3} (MonoidHom.{u1, u3} (WithOne.{u1} α) (WithOne.{u3} γ) (WithOne.mulOneClass.{u1} α _inst_1) (WithOne.mulOneClass.{u3} γ _inst_3)) (WithOne.{u1} α) (fun (_x : WithOne.{u1} α) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : WithOne.{u1} α) => WithOne.{u3} γ) _x) (MulHomClass.toFunLike.{max u1 u3, u1, u3} (MonoidHom.{u1, u3} (WithOne.{u1} α) (WithOne.{u3} γ) (WithOne.mulOneClass.{u1} α _inst_1) (WithOne.mulOneClass.{u3} γ _inst_3)) (WithOne.{u1} α) (WithOne.{u3} γ) (MulOneClass.toMul.{u1} (WithOne.{u1} α) (WithOne.mulOneClass.{u1} α _inst_1)) (MulOneClass.toMul.{u3} (WithOne.{u3} γ) (WithOne.mulOneClass.{u3} γ _inst_3)) (MonoidHomClass.toMulHomClass.{max u1 u3, u1, u3} (MonoidHom.{u1, u3} (WithOne.{u1} α) (WithOne.{u3} γ) (WithOne.mulOneClass.{u1} α _inst_1) (WithOne.mulOneClass.{u3} γ _inst_3)) (WithOne.{u1} α) (WithOne.{u3} γ) (WithOne.mulOneClass.{u1} α _inst_1) (WithOne.mulOneClass.{u3} γ _inst_3) (MonoidHom.monoidHomClass.{u1, u3} (WithOne.{u1} α) (WithOne.{u3} γ) (WithOne.mulOneClass.{u1} α _inst_1) (WithOne.mulOneClass.{u3} γ _inst_3)))) (WithOne.map.{u1, u3} α γ _inst_1 _inst_3 (MulHom.comp.{u1, u2, u3} α β γ _inst_1 _inst_2 _inst_3 g f)) x)
-Case conversion may be inaccurate. Consider using '#align with_one.map_map WithOne.map_mapₓ'. -/
 @[to_additive]
 theorem map_map (f : α →ₙ* β) (g : β →ₙ* γ) (x) : map g (map f x) = map (g.comp f) x := by
   induction x using WithOne.cases_on <;> rfl
Diff
@@ -69,16 +69,8 @@ def lift : (α →ₙ* β) ≃ (WithOne α →* β)
     { toFun := fun x => Option.casesOn x 1 f
       map_one' := rfl
       map_mul' := fun x y =>
-        WithOne.cases_on x
-          (by
-            rw [one_mul]
-            exact (one_mul _).symm)
-          fun x =>
-          WithOne.cases_on y
-            (by
-              rw [mul_one]
-              exact (mul_one _).symm)
-            fun y => f.map_mul x y }
+        WithOne.cases_on x (by rw [one_mul]; exact (one_mul _).symm) fun x =>
+          WithOne.cases_on y (by rw [mul_one]; exact (mul_one _).symm) fun y => f.map_mul x y }
   invFun F := F.toMulHom.comp coeMulHom
   left_inv f := MulHom.ext fun x => rfl
   right_inv F := MonoidHom.ext fun x => WithOne.cases_on x F.map_one.symm fun x => rfl
@@ -150,9 +142,7 @@ theorem map_coe (f : α →ₙ* β) (a : α) : map f (a : WithOne α) = f a :=
 
 #print WithOne.map_id /-
 @[simp, to_additive]
-theorem map_id : map (MulHom.id α) = MonoidHom.id (WithOne α) :=
-  by
-  ext
+theorem map_id : map (MulHom.id α) = MonoidHom.id (WithOne α) := by ext;
   induction x using WithOne.cases_on <;> rfl
 #align with_one.map_id WithOne.map_id
 #align with_zero.map_id WithZero.map_id
Diff
@@ -91,7 +91,7 @@ variable (f : α →ₙ* β)
 lean 3 declaration is
   forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : Mul.{u1} α] [_inst_2 : MulOneClass.{u2} β] (f : MulHom.{u1, u2} α β _inst_1 (MulOneClass.toHasMul.{u2} β _inst_2)) (x : α), Eq.{succ u2} β (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} (WithOne.{u1} α) β (WithOne.mulOneClass.{u1} α _inst_1) _inst_2) (fun (_x : MonoidHom.{u1, u2} (WithOne.{u1} α) β (WithOne.mulOneClass.{u1} α _inst_1) _inst_2) => (WithOne.{u1} α) -> β) (MonoidHom.hasCoeToFun.{u1, u2} (WithOne.{u1} α) β (WithOne.mulOneClass.{u1} α _inst_1) _inst_2) (coeFn.{max 1 (succ u2) (succ u1), max (succ u2) (succ u1)} (Equiv.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (MulHom.{u1, u2} α β _inst_1 (MulOneClass.toHasMul.{u2} β _inst_2)) (MonoidHom.{u1, u2} (WithOne.{u1} α) β (WithOne.mulOneClass.{u1} α _inst_1) _inst_2)) (fun (_x : Equiv.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (MulHom.{u1, u2} α β _inst_1 (MulOneClass.toHasMul.{u2} β _inst_2)) (MonoidHom.{u1, u2} (WithOne.{u1} α) β (WithOne.mulOneClass.{u1} α _inst_1) _inst_2)) => (MulHom.{u1, u2} α β _inst_1 (MulOneClass.toHasMul.{u2} β _inst_2)) -> (MonoidHom.{u1, u2} (WithOne.{u1} α) β (WithOne.mulOneClass.{u1} α _inst_1) _inst_2)) (Equiv.hasCoeToFun.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (MulHom.{u1, u2} α β _inst_1 (MulOneClass.toHasMul.{u2} β _inst_2)) (MonoidHom.{u1, u2} (WithOne.{u1} α) β (WithOne.mulOneClass.{u1} α _inst_1) _inst_2)) (WithOne.lift.{u1, u2} α β _inst_1 _inst_2) f) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) α (WithOne.{u1} α) (HasLiftT.mk.{succ u1, succ u1} α (WithOne.{u1} α) (CoeTCₓ.coe.{succ u1, succ u1} α (WithOne.{u1} α) (WithOne.hasCoeT.{u1} α))) x)) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MulHom.{u1, u2} α β _inst_1 (MulOneClass.toHasMul.{u2} β _inst_2)) (fun (_x : MulHom.{u1, u2} α β _inst_1 (MulOneClass.toHasMul.{u2} β _inst_2)) => α -> β) (MulHom.hasCoeToFun.{u1, u2} α β _inst_1 (MulOneClass.toHasMul.{u2} β _inst_2)) f x)
 but is expected to have type
-  forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : Mul.{u1} α] [_inst_2 : MulOneClass.{u2} β] (f : MulHom.{u1, u2} α β _inst_1 (MulOneClass.toMul.{u2} β _inst_2)) (x : α), Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : WithOne.{u1} α) => β) (WithOne.coe.{u1} α x)) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : MulHom.{u1, u2} α β _inst_1 (MulOneClass.toMul.{u2} β _inst_2)) => MonoidHom.{u1, u2} (WithOne.{u1} α) β (WithOne.mulOneClass.{u1} α _inst_1) _inst_2) f) (WithOne.{u1} α) (fun (_x : WithOne.{u1} α) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : WithOne.{u1} α) => β) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : MulHom.{u1, u2} α β _inst_1 (MulOneClass.toMul.{u2} β _inst_2)) => MonoidHom.{u1, u2} (WithOne.{u1} α) β (WithOne.mulOneClass.{u1} α _inst_1) _inst_2) f) (WithOne.{u1} α) β (MulOneClass.toMul.{u1} (WithOne.{u1} α) (WithOne.mulOneClass.{u1} α _inst_1)) (MulOneClass.toMul.{u2} β _inst_2) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : MulHom.{u1, u2} α β _inst_1 (MulOneClass.toMul.{u2} β _inst_2)) => MonoidHom.{u1, u2} (WithOne.{u1} α) β (WithOne.mulOneClass.{u1} α _inst_1) _inst_2) f) (WithOne.{u1} α) β (WithOne.mulOneClass.{u1} α _inst_1) _inst_2 (MonoidHom.monoidHomClass.{u1, u2} (WithOne.{u1} α) β (WithOne.mulOneClass.{u1} α _inst_1) _inst_2))) (FunLike.coe.{max (succ u2) (succ u1), max (succ u2) (succ u1), max (succ u2) (succ u1)} (Equiv.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (MulHom.{u1, u2} α β _inst_1 (MulOneClass.toMul.{u2} β _inst_2)) (MonoidHom.{u1, u2} (WithOne.{u1} α) β (WithOne.mulOneClass.{u1} α _inst_1) _inst_2)) (MulHom.{u1, u2} α β _inst_1 (MulOneClass.toMul.{u2} β _inst_2)) (fun (_x : MulHom.{u1, u2} α β _inst_1 (MulOneClass.toMul.{u2} β _inst_2)) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : MulHom.{u1, u2} α β _inst_1 (MulOneClass.toMul.{u2} β _inst_2)) => MonoidHom.{u1, u2} (WithOne.{u1} α) β (WithOne.mulOneClass.{u1} α _inst_1) _inst_2) _x) (Equiv.instFunLikeEquiv.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (MulHom.{u1, u2} α β _inst_1 (MulOneClass.toMul.{u2} β _inst_2)) (MonoidHom.{u1, u2} (WithOne.{u1} α) β (WithOne.mulOneClass.{u1} α _inst_1) _inst_2)) (WithOne.lift.{u1, u2} α β _inst_1 _inst_2) f) (WithOne.coe.{u1} α x)) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MulHom.{u1, u2} α β _inst_1 (MulOneClass.toMul.{u2} β _inst_2)) α (fun (_x : α) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : α) => β) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MulHom.{u1, u2} α β _inst_1 (MulOneClass.toMul.{u2} β _inst_2)) α β _inst_1 (MulOneClass.toMul.{u2} β _inst_2) (MulHom.mulHomClass.{u1, u2} α β _inst_1 (MulOneClass.toMul.{u2} β _inst_2))) f x)
+  forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : Mul.{u1} α] [_inst_2 : MulOneClass.{u2} β] (f : MulHom.{u1, u2} α β _inst_1 (MulOneClass.toMul.{u2} β _inst_2)) (x : α), Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : WithOne.{u1} α) => β) (WithOne.coe.{u1} α x)) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : MulHom.{u1, u2} α β _inst_1 (MulOneClass.toMul.{u2} β _inst_2)) => MonoidHom.{u1, u2} (WithOne.{u1} α) β (WithOne.mulOneClass.{u1} α _inst_1) _inst_2) f) (WithOne.{u1} α) (fun (_x : WithOne.{u1} α) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : WithOne.{u1} α) => β) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : MulHom.{u1, u2} α β _inst_1 (MulOneClass.toMul.{u2} β _inst_2)) => MonoidHom.{u1, u2} (WithOne.{u1} α) β (WithOne.mulOneClass.{u1} α _inst_1) _inst_2) f) (WithOne.{u1} α) β (MulOneClass.toMul.{u1} (WithOne.{u1} α) (WithOne.mulOneClass.{u1} α _inst_1)) (MulOneClass.toMul.{u2} β _inst_2) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : MulHom.{u1, u2} α β _inst_1 (MulOneClass.toMul.{u2} β _inst_2)) => MonoidHom.{u1, u2} (WithOne.{u1} α) β (WithOne.mulOneClass.{u1} α _inst_1) _inst_2) f) (WithOne.{u1} α) β (WithOne.mulOneClass.{u1} α _inst_1) _inst_2 (MonoidHom.monoidHomClass.{u1, u2} (WithOne.{u1} α) β (WithOne.mulOneClass.{u1} α _inst_1) _inst_2))) (FunLike.coe.{max (succ u2) (succ u1), max (succ u2) (succ u1), max (succ u2) (succ u1)} (Equiv.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (MulHom.{u1, u2} α β _inst_1 (MulOneClass.toMul.{u2} β _inst_2)) (MonoidHom.{u1, u2} (WithOne.{u1} α) β (WithOne.mulOneClass.{u1} α _inst_1) _inst_2)) (MulHom.{u1, u2} α β _inst_1 (MulOneClass.toMul.{u2} β _inst_2)) (fun (_x : MulHom.{u1, u2} α β _inst_1 (MulOneClass.toMul.{u2} β _inst_2)) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : MulHom.{u1, u2} α β _inst_1 (MulOneClass.toMul.{u2} β _inst_2)) => MonoidHom.{u1, u2} (WithOne.{u1} α) β (WithOne.mulOneClass.{u1} α _inst_1) _inst_2) _x) (Equiv.instFunLikeEquiv.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (MulHom.{u1, u2} α β _inst_1 (MulOneClass.toMul.{u2} β _inst_2)) (MonoidHom.{u1, u2} (WithOne.{u1} α) β (WithOne.mulOneClass.{u1} α _inst_1) _inst_2)) (WithOne.lift.{u1, u2} α β _inst_1 _inst_2) f) (WithOne.coe.{u1} α x)) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MulHom.{u1, u2} α β _inst_1 (MulOneClass.toMul.{u2} β _inst_2)) α (fun (_x : α) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : α) => β) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MulHom.{u1, u2} α β _inst_1 (MulOneClass.toMul.{u2} β _inst_2)) α β _inst_1 (MulOneClass.toMul.{u2} β _inst_2) (MulHom.mulHomClass.{u1, u2} α β _inst_1 (MulOneClass.toMul.{u2} β _inst_2))) f x)
 Case conversion may be inaccurate. Consider using '#align with_one.lift_coe WithOne.lift_coeₓ'. -/
 @[simp, to_additive]
 theorem lift_coe (x : α) : lift f x = f x :=
@@ -103,7 +103,7 @@ theorem lift_coe (x : α) : lift f x = f x :=
 lean 3 declaration is
   forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : Mul.{u1} α] [_inst_2 : MulOneClass.{u2} β] (f : MulHom.{u1, u2} α β _inst_1 (MulOneClass.toHasMul.{u2} β _inst_2)), Eq.{succ u2} β (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} (WithOne.{u1} α) β (WithOne.mulOneClass.{u1} α _inst_1) _inst_2) (fun (_x : MonoidHom.{u1, u2} (WithOne.{u1} α) β (WithOne.mulOneClass.{u1} α _inst_1) _inst_2) => (WithOne.{u1} α) -> β) (MonoidHom.hasCoeToFun.{u1, u2} (WithOne.{u1} α) β (WithOne.mulOneClass.{u1} α _inst_1) _inst_2) (coeFn.{max 1 (succ u2) (succ u1), max (succ u2) (succ u1)} (Equiv.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (MulHom.{u1, u2} α β _inst_1 (MulOneClass.toHasMul.{u2} β _inst_2)) (MonoidHom.{u1, u2} (WithOne.{u1} α) β (WithOne.mulOneClass.{u1} α _inst_1) _inst_2)) (fun (_x : Equiv.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (MulHom.{u1, u2} α β _inst_1 (MulOneClass.toHasMul.{u2} β _inst_2)) (MonoidHom.{u1, u2} (WithOne.{u1} α) β (WithOne.mulOneClass.{u1} α _inst_1) _inst_2)) => (MulHom.{u1, u2} α β _inst_1 (MulOneClass.toHasMul.{u2} β _inst_2)) -> (MonoidHom.{u1, u2} (WithOne.{u1} α) β (WithOne.mulOneClass.{u1} α _inst_1) _inst_2)) (Equiv.hasCoeToFun.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (MulHom.{u1, u2} α β _inst_1 (MulOneClass.toHasMul.{u2} β _inst_2)) (MonoidHom.{u1, u2} (WithOne.{u1} α) β (WithOne.mulOneClass.{u1} α _inst_1) _inst_2)) (WithOne.lift.{u1, u2} α β _inst_1 _inst_2) f) (OfNat.ofNat.{u1} (WithOne.{u1} α) 1 (OfNat.mk.{u1} (WithOne.{u1} α) 1 (One.one.{u1} (WithOne.{u1} α) (WithOne.one.{u1} α))))) (OfNat.ofNat.{u2} β 1 (OfNat.mk.{u2} β 1 (One.one.{u2} β (MulOneClass.toHasOne.{u2} β _inst_2))))
 but is expected to have type
-  forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : Mul.{u1} α] [_inst_2 : MulOneClass.{u2} β] (f : MulHom.{u1, u2} α β _inst_1 (MulOneClass.toMul.{u2} β _inst_2)), Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : WithOne.{u1} α) => β) (OfNat.ofNat.{u1} (WithOne.{u1} α) 1 (One.toOfNat1.{u1} (WithOne.{u1} α) (WithOne.one.{u1} α)))) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : MulHom.{u1, u2} α β _inst_1 (MulOneClass.toMul.{u2} β _inst_2)) => MonoidHom.{u1, u2} (WithOne.{u1} α) β (WithOne.mulOneClass.{u1} α _inst_1) _inst_2) f) (WithOne.{u1} α) (fun (_x : WithOne.{u1} α) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : WithOne.{u1} α) => β) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : MulHom.{u1, u2} α β _inst_1 (MulOneClass.toMul.{u2} β _inst_2)) => MonoidHom.{u1, u2} (WithOne.{u1} α) β (WithOne.mulOneClass.{u1} α _inst_1) _inst_2) f) (WithOne.{u1} α) β (MulOneClass.toMul.{u1} (WithOne.{u1} α) (WithOne.mulOneClass.{u1} α _inst_1)) (MulOneClass.toMul.{u2} β _inst_2) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : MulHom.{u1, u2} α β _inst_1 (MulOneClass.toMul.{u2} β _inst_2)) => MonoidHom.{u1, u2} (WithOne.{u1} α) β (WithOne.mulOneClass.{u1} α _inst_1) _inst_2) f) (WithOne.{u1} α) β (WithOne.mulOneClass.{u1} α _inst_1) _inst_2 (MonoidHom.monoidHomClass.{u1, u2} (WithOne.{u1} α) β (WithOne.mulOneClass.{u1} α _inst_1) _inst_2))) (FunLike.coe.{max (succ u2) (succ u1), max (succ u2) (succ u1), max (succ u2) (succ u1)} (Equiv.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (MulHom.{u1, u2} α β _inst_1 (MulOneClass.toMul.{u2} β _inst_2)) (MonoidHom.{u1, u2} (WithOne.{u1} α) β (WithOne.mulOneClass.{u1} α _inst_1) _inst_2)) (MulHom.{u1, u2} α β _inst_1 (MulOneClass.toMul.{u2} β _inst_2)) (fun (_x : MulHom.{u1, u2} α β _inst_1 (MulOneClass.toMul.{u2} β _inst_2)) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : MulHom.{u1, u2} α β _inst_1 (MulOneClass.toMul.{u2} β _inst_2)) => MonoidHom.{u1, u2} (WithOne.{u1} α) β (WithOne.mulOneClass.{u1} α _inst_1) _inst_2) _x) (Equiv.instFunLikeEquiv.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (MulHom.{u1, u2} α β _inst_1 (MulOneClass.toMul.{u2} β _inst_2)) (MonoidHom.{u1, u2} (WithOne.{u1} α) β (WithOne.mulOneClass.{u1} α _inst_1) _inst_2)) (WithOne.lift.{u1, u2} α β _inst_1 _inst_2) f) (OfNat.ofNat.{u1} (WithOne.{u1} α) 1 (One.toOfNat1.{u1} (WithOne.{u1} α) (WithOne.one.{u1} α)))) (OfNat.ofNat.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : WithOne.{u1} α) => β) (OfNat.ofNat.{u1} (WithOne.{u1} α) 1 (One.toOfNat1.{u1} (WithOne.{u1} α) (WithOne.one.{u1} α)))) 1 (One.toOfNat1.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : WithOne.{u1} α) => β) (OfNat.ofNat.{u1} (WithOne.{u1} α) 1 (One.toOfNat1.{u1} (WithOne.{u1} α) (WithOne.one.{u1} α)))) (MulOneClass.toOne.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : WithOne.{u1} α) => β) (OfNat.ofNat.{u1} (WithOne.{u1} α) 1 (One.toOfNat1.{u1} (WithOne.{u1} α) (WithOne.one.{u1} α)))) _inst_2)))
+  forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : Mul.{u1} α] [_inst_2 : MulOneClass.{u2} β] (f : MulHom.{u1, u2} α β _inst_1 (MulOneClass.toMul.{u2} β _inst_2)), Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : WithOne.{u1} α) => β) (OfNat.ofNat.{u1} (WithOne.{u1} α) 1 (One.toOfNat1.{u1} (WithOne.{u1} α) (WithOne.one.{u1} α)))) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : MulHom.{u1, u2} α β _inst_1 (MulOneClass.toMul.{u2} β _inst_2)) => MonoidHom.{u1, u2} (WithOne.{u1} α) β (WithOne.mulOneClass.{u1} α _inst_1) _inst_2) f) (WithOne.{u1} α) (fun (_x : WithOne.{u1} α) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : WithOne.{u1} α) => β) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : MulHom.{u1, u2} α β _inst_1 (MulOneClass.toMul.{u2} β _inst_2)) => MonoidHom.{u1, u2} (WithOne.{u1} α) β (WithOne.mulOneClass.{u1} α _inst_1) _inst_2) f) (WithOne.{u1} α) β (MulOneClass.toMul.{u1} (WithOne.{u1} α) (WithOne.mulOneClass.{u1} α _inst_1)) (MulOneClass.toMul.{u2} β _inst_2) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : MulHom.{u1, u2} α β _inst_1 (MulOneClass.toMul.{u2} β _inst_2)) => MonoidHom.{u1, u2} (WithOne.{u1} α) β (WithOne.mulOneClass.{u1} α _inst_1) _inst_2) f) (WithOne.{u1} α) β (WithOne.mulOneClass.{u1} α _inst_1) _inst_2 (MonoidHom.monoidHomClass.{u1, u2} (WithOne.{u1} α) β (WithOne.mulOneClass.{u1} α _inst_1) _inst_2))) (FunLike.coe.{max (succ u2) (succ u1), max (succ u2) (succ u1), max (succ u2) (succ u1)} (Equiv.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (MulHom.{u1, u2} α β _inst_1 (MulOneClass.toMul.{u2} β _inst_2)) (MonoidHom.{u1, u2} (WithOne.{u1} α) β (WithOne.mulOneClass.{u1} α _inst_1) _inst_2)) (MulHom.{u1, u2} α β _inst_1 (MulOneClass.toMul.{u2} β _inst_2)) (fun (_x : MulHom.{u1, u2} α β _inst_1 (MulOneClass.toMul.{u2} β _inst_2)) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : MulHom.{u1, u2} α β _inst_1 (MulOneClass.toMul.{u2} β _inst_2)) => MonoidHom.{u1, u2} (WithOne.{u1} α) β (WithOne.mulOneClass.{u1} α _inst_1) _inst_2) _x) (Equiv.instFunLikeEquiv.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (MulHom.{u1, u2} α β _inst_1 (MulOneClass.toMul.{u2} β _inst_2)) (MonoidHom.{u1, u2} (WithOne.{u1} α) β (WithOne.mulOneClass.{u1} α _inst_1) _inst_2)) (WithOne.lift.{u1, u2} α β _inst_1 _inst_2) f) (OfNat.ofNat.{u1} (WithOne.{u1} α) 1 (One.toOfNat1.{u1} (WithOne.{u1} α) (WithOne.one.{u1} α)))) (OfNat.ofNat.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : WithOne.{u1} α) => β) (OfNat.ofNat.{u1} (WithOne.{u1} α) 1 (One.toOfNat1.{u1} (WithOne.{u1} α) (WithOne.one.{u1} α)))) 1 (One.toOfNat1.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : WithOne.{u1} α) => β) (OfNat.ofNat.{u1} (WithOne.{u1} α) 1 (One.toOfNat1.{u1} (WithOne.{u1} α) (WithOne.one.{u1} α)))) (MulOneClass.toOne.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : WithOne.{u1} α) => β) (OfNat.ofNat.{u1} (WithOne.{u1} α) 1 (One.toOfNat1.{u1} (WithOne.{u1} α) (WithOne.one.{u1} α)))) _inst_2)))
 Case conversion may be inaccurate. Consider using '#align with_one.lift_one WithOne.lift_oneₓ'. -/
 @[simp, to_additive]
 theorem lift_one : lift f 1 = 1 :=
@@ -140,7 +140,7 @@ def map (f : α →ₙ* β) : WithOne α →* WithOne β :=
 lean 3 declaration is
   forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : Mul.{u1} α] [_inst_2 : Mul.{u2} β] (f : MulHom.{u1, u2} α β _inst_1 _inst_2) (a : α), Eq.{succ u2} (WithOne.{u2} β) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} (WithOne.{u1} α) (WithOne.{u2} β) (WithOne.mulOneClass.{u1} α _inst_1) (WithOne.mulOneClass.{u2} β _inst_2)) (fun (_x : MonoidHom.{u1, u2} (WithOne.{u1} α) (WithOne.{u2} β) (WithOne.mulOneClass.{u1} α _inst_1) (WithOne.mulOneClass.{u2} β _inst_2)) => (WithOne.{u1} α) -> (WithOne.{u2} β)) (MonoidHom.hasCoeToFun.{u1, u2} (WithOne.{u1} α) (WithOne.{u2} β) (WithOne.mulOneClass.{u1} α _inst_1) (WithOne.mulOneClass.{u2} β _inst_2)) (WithOne.map.{u1, u2} α β _inst_1 _inst_2 f) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) α (WithOne.{u1} α) (HasLiftT.mk.{succ u1, succ u1} α (WithOne.{u1} α) (CoeTCₓ.coe.{succ u1, succ u1} α (WithOne.{u1} α) (WithOne.hasCoeT.{u1} α))) a)) ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) β (WithOne.{u2} β) (HasLiftT.mk.{succ u2, succ u2} β (WithOne.{u2} β) (CoeTCₓ.coe.{succ u2, succ u2} β (WithOne.{u2} β) (WithOne.hasCoeT.{u2} β))) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MulHom.{u1, u2} α β _inst_1 _inst_2) (fun (_x : MulHom.{u1, u2} α β _inst_1 _inst_2) => α -> β) (MulHom.hasCoeToFun.{u1, u2} α β _inst_1 _inst_2) f a))
 but is expected to have type
-  forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : Mul.{u1} α] [_inst_2 : Mul.{u2} β] (f : MulHom.{u1, u2} α β _inst_1 _inst_2) (a : α), Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : WithOne.{u1} α) => WithOne.{u2} β) (WithOne.coe.{u1} α a)) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} (WithOne.{u1} α) (WithOne.{u2} β) (WithOne.mulOneClass.{u1} α _inst_1) (WithOne.mulOneClass.{u2} β _inst_2)) (WithOne.{u1} α) (fun (_x : WithOne.{u1} α) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : WithOne.{u1} α) => WithOne.{u2} β) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} (WithOne.{u1} α) (WithOne.{u2} β) (WithOne.mulOneClass.{u1} α _inst_1) (WithOne.mulOneClass.{u2} β _inst_2)) (WithOne.{u1} α) (WithOne.{u2} β) (MulOneClass.toMul.{u1} (WithOne.{u1} α) (WithOne.mulOneClass.{u1} α _inst_1)) (MulOneClass.toMul.{u2} (WithOne.{u2} β) (WithOne.mulOneClass.{u2} β _inst_2)) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} (WithOne.{u1} α) (WithOne.{u2} β) (WithOne.mulOneClass.{u1} α _inst_1) (WithOne.mulOneClass.{u2} β _inst_2)) (WithOne.{u1} α) (WithOne.{u2} β) (WithOne.mulOneClass.{u1} α _inst_1) (WithOne.mulOneClass.{u2} β _inst_2) (MonoidHom.monoidHomClass.{u1, u2} (WithOne.{u1} α) (WithOne.{u2} β) (WithOne.mulOneClass.{u1} α _inst_1) (WithOne.mulOneClass.{u2} β _inst_2)))) (WithOne.map.{u1, u2} α β _inst_1 _inst_2 f) (WithOne.coe.{u1} α a)) (WithOne.coe.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : α) => β) a) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MulHom.{u1, u2} α β _inst_1 _inst_2) α (fun (_x : α) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : α) => β) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MulHom.{u1, u2} α β _inst_1 _inst_2) α β _inst_1 _inst_2 (MulHom.mulHomClass.{u1, u2} α β _inst_1 _inst_2)) f a))
+  forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : Mul.{u1} α] [_inst_2 : Mul.{u2} β] (f : MulHom.{u1, u2} α β _inst_1 _inst_2) (a : α), Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : WithOne.{u1} α) => WithOne.{u2} β) (WithOne.coe.{u1} α a)) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} (WithOne.{u1} α) (WithOne.{u2} β) (WithOne.mulOneClass.{u1} α _inst_1) (WithOne.mulOneClass.{u2} β _inst_2)) (WithOne.{u1} α) (fun (_x : WithOne.{u1} α) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : WithOne.{u1} α) => WithOne.{u2} β) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} (WithOne.{u1} α) (WithOne.{u2} β) (WithOne.mulOneClass.{u1} α _inst_1) (WithOne.mulOneClass.{u2} β _inst_2)) (WithOne.{u1} α) (WithOne.{u2} β) (MulOneClass.toMul.{u1} (WithOne.{u1} α) (WithOne.mulOneClass.{u1} α _inst_1)) (MulOneClass.toMul.{u2} (WithOne.{u2} β) (WithOne.mulOneClass.{u2} β _inst_2)) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} (WithOne.{u1} α) (WithOne.{u2} β) (WithOne.mulOneClass.{u1} α _inst_1) (WithOne.mulOneClass.{u2} β _inst_2)) (WithOne.{u1} α) (WithOne.{u2} β) (WithOne.mulOneClass.{u1} α _inst_1) (WithOne.mulOneClass.{u2} β _inst_2) (MonoidHom.monoidHomClass.{u1, u2} (WithOne.{u1} α) (WithOne.{u2} β) (WithOne.mulOneClass.{u1} α _inst_1) (WithOne.mulOneClass.{u2} β _inst_2)))) (WithOne.map.{u1, u2} α β _inst_1 _inst_2 f) (WithOne.coe.{u1} α a)) (WithOne.coe.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : α) => β) a) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MulHom.{u1, u2} α β _inst_1 _inst_2) α (fun (_x : α) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : α) => β) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MulHom.{u1, u2} α β _inst_1 _inst_2) α β _inst_1 _inst_2 (MulHom.mulHomClass.{u1, u2} α β _inst_1 _inst_2)) f a))
 Case conversion may be inaccurate. Consider using '#align with_one.map_coe WithOne.map_coeₓ'. -/
 @[simp, to_additive]
 theorem map_coe (f : α →ₙ* β) (a : α) : map f (a : WithOne α) = f a :=
@@ -162,7 +162,7 @@ theorem map_id : map (MulHom.id α) = MonoidHom.id (WithOne α) :=
 lean 3 declaration is
   forall {α : Type.{u1}} {β : Type.{u2}} {γ : Type.{u3}} [_inst_1 : Mul.{u1} α] [_inst_2 : Mul.{u2} β] [_inst_3 : Mul.{u3} γ] (f : MulHom.{u1, u2} α β _inst_1 _inst_2) (g : MulHom.{u2, u3} β γ _inst_2 _inst_3) (x : WithOne.{u1} α), Eq.{succ u3} (WithOne.{u3} γ) (coeFn.{max (succ u3) (succ u2), max (succ u2) (succ u3)} (MonoidHom.{u2, u3} (WithOne.{u2} β) (WithOne.{u3} γ) (WithOne.mulOneClass.{u2} β _inst_2) (WithOne.mulOneClass.{u3} γ _inst_3)) (fun (_x : MonoidHom.{u2, u3} (WithOne.{u2} β) (WithOne.{u3} γ) (WithOne.mulOneClass.{u2} β _inst_2) (WithOne.mulOneClass.{u3} γ _inst_3)) => (WithOne.{u2} β) -> (WithOne.{u3} γ)) (MonoidHom.hasCoeToFun.{u2, u3} (WithOne.{u2} β) (WithOne.{u3} γ) (WithOne.mulOneClass.{u2} β _inst_2) (WithOne.mulOneClass.{u3} γ _inst_3)) (WithOne.map.{u2, u3} β γ _inst_2 _inst_3 g) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} (WithOne.{u1} α) (WithOne.{u2} β) (WithOne.mulOneClass.{u1} α _inst_1) (WithOne.mulOneClass.{u2} β _inst_2)) (fun (_x : MonoidHom.{u1, u2} (WithOne.{u1} α) (WithOne.{u2} β) (WithOne.mulOneClass.{u1} α _inst_1) (WithOne.mulOneClass.{u2} β _inst_2)) => (WithOne.{u1} α) -> (WithOne.{u2} β)) (MonoidHom.hasCoeToFun.{u1, u2} (WithOne.{u1} α) (WithOne.{u2} β) (WithOne.mulOneClass.{u1} α _inst_1) (WithOne.mulOneClass.{u2} β _inst_2)) (WithOne.map.{u1, u2} α β _inst_1 _inst_2 f) x)) (coeFn.{max (succ u3) (succ u1), max (succ u1) (succ u3)} (MonoidHom.{u1, u3} (WithOne.{u1} α) (WithOne.{u3} γ) (WithOne.mulOneClass.{u1} α _inst_1) (WithOne.mulOneClass.{u3} γ _inst_3)) (fun (_x : MonoidHom.{u1, u3} (WithOne.{u1} α) (WithOne.{u3} γ) (WithOne.mulOneClass.{u1} α _inst_1) (WithOne.mulOneClass.{u3} γ _inst_3)) => (WithOne.{u1} α) -> (WithOne.{u3} γ)) (MonoidHom.hasCoeToFun.{u1, u3} (WithOne.{u1} α) (WithOne.{u3} γ) (WithOne.mulOneClass.{u1} α _inst_1) (WithOne.mulOneClass.{u3} γ _inst_3)) (WithOne.map.{u1, u3} α γ _inst_1 _inst_3 (MulHom.comp.{u1, u2, u3} α β γ _inst_1 _inst_2 _inst_3 g f)) x)
 but is expected to have type
-  forall {α : Type.{u1}} {β : Type.{u2}} {γ : Type.{u3}} [_inst_1 : Mul.{u1} α] [_inst_2 : Mul.{u2} β] [_inst_3 : Mul.{u3} γ] (f : MulHom.{u1, u2} α β _inst_1 _inst_2) (g : MulHom.{u2, u3} β γ _inst_2 _inst_3) (x : WithOne.{u1} α), Eq.{succ u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : WithOne.{u2} β) => WithOne.{u3} γ) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} (WithOne.{u1} α) (WithOne.{u2} β) (WithOne.mulOneClass.{u1} α _inst_1) (WithOne.mulOneClass.{u2} β _inst_2)) (WithOne.{u1} α) (fun (a : WithOne.{u1} α) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : WithOne.{u1} α) => WithOne.{u2} β) a) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} (WithOne.{u1} α) (WithOne.{u2} β) (WithOne.mulOneClass.{u1} α _inst_1) (WithOne.mulOneClass.{u2} β _inst_2)) (WithOne.{u1} α) (WithOne.{u2} β) (MulOneClass.toMul.{u1} (WithOne.{u1} α) (WithOne.mulOneClass.{u1} α _inst_1)) (MulOneClass.toMul.{u2} (WithOne.{u2} β) (WithOne.mulOneClass.{u2} β _inst_2)) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} (WithOne.{u1} α) (WithOne.{u2} β) (WithOne.mulOneClass.{u1} α _inst_1) (WithOne.mulOneClass.{u2} β _inst_2)) (WithOne.{u1} α) (WithOne.{u2} β) (WithOne.mulOneClass.{u1} α _inst_1) (WithOne.mulOneClass.{u2} β _inst_2) (MonoidHom.monoidHomClass.{u1, u2} (WithOne.{u1} α) (WithOne.{u2} β) (WithOne.mulOneClass.{u1} α _inst_1) (WithOne.mulOneClass.{u2} β _inst_2)))) (WithOne.map.{u1, u2} α β _inst_1 _inst_2 f) x)) (FunLike.coe.{max (succ u2) (succ u3), succ u2, succ u3} (MonoidHom.{u2, u3} (WithOne.{u2} β) (WithOne.{u3} γ) (WithOne.mulOneClass.{u2} β _inst_2) (WithOne.mulOneClass.{u3} γ _inst_3)) (WithOne.{u2} β) (fun (_x : WithOne.{u2} β) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : WithOne.{u2} β) => WithOne.{u3} γ) _x) (MulHomClass.toFunLike.{max u2 u3, u2, u3} (MonoidHom.{u2, u3} (WithOne.{u2} β) (WithOne.{u3} γ) (WithOne.mulOneClass.{u2} β _inst_2) (WithOne.mulOneClass.{u3} γ _inst_3)) (WithOne.{u2} β) (WithOne.{u3} γ) (MulOneClass.toMul.{u2} (WithOne.{u2} β) (WithOne.mulOneClass.{u2} β _inst_2)) (MulOneClass.toMul.{u3} (WithOne.{u3} γ) (WithOne.mulOneClass.{u3} γ _inst_3)) (MonoidHomClass.toMulHomClass.{max u2 u3, u2, u3} (MonoidHom.{u2, u3} (WithOne.{u2} β) (WithOne.{u3} γ) (WithOne.mulOneClass.{u2} β _inst_2) (WithOne.mulOneClass.{u3} γ _inst_3)) (WithOne.{u2} β) (WithOne.{u3} γ) (WithOne.mulOneClass.{u2} β _inst_2) (WithOne.mulOneClass.{u3} γ _inst_3) (MonoidHom.monoidHomClass.{u2, u3} (WithOne.{u2} β) (WithOne.{u3} γ) (WithOne.mulOneClass.{u2} β _inst_2) (WithOne.mulOneClass.{u3} γ _inst_3)))) (WithOne.map.{u2, u3} β γ _inst_2 _inst_3 g) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} (WithOne.{u1} α) (WithOne.{u2} β) (WithOne.mulOneClass.{u1} α _inst_1) (WithOne.mulOneClass.{u2} β _inst_2)) (WithOne.{u1} α) (fun (_x : WithOne.{u1} α) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : WithOne.{u1} α) => WithOne.{u2} β) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} (WithOne.{u1} α) (WithOne.{u2} β) (WithOne.mulOneClass.{u1} α _inst_1) (WithOne.mulOneClass.{u2} β _inst_2)) (WithOne.{u1} α) (WithOne.{u2} β) (MulOneClass.toMul.{u1} (WithOne.{u1} α) (WithOne.mulOneClass.{u1} α _inst_1)) (MulOneClass.toMul.{u2} (WithOne.{u2} β) (WithOne.mulOneClass.{u2} β _inst_2)) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} (WithOne.{u1} α) (WithOne.{u2} β) (WithOne.mulOneClass.{u1} α _inst_1) (WithOne.mulOneClass.{u2} β _inst_2)) (WithOne.{u1} α) (WithOne.{u2} β) (WithOne.mulOneClass.{u1} α _inst_1) (WithOne.mulOneClass.{u2} β _inst_2) (MonoidHom.monoidHomClass.{u1, u2} (WithOne.{u1} α) (WithOne.{u2} β) (WithOne.mulOneClass.{u1} α _inst_1) (WithOne.mulOneClass.{u2} β _inst_2)))) (WithOne.map.{u1, u2} α β _inst_1 _inst_2 f) x)) (FunLike.coe.{max (succ u1) (succ u3), succ u1, succ u3} (MonoidHom.{u1, u3} (WithOne.{u1} α) (WithOne.{u3} γ) (WithOne.mulOneClass.{u1} α _inst_1) (WithOne.mulOneClass.{u3} γ _inst_3)) (WithOne.{u1} α) (fun (_x : WithOne.{u1} α) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : WithOne.{u1} α) => WithOne.{u3} γ) _x) (MulHomClass.toFunLike.{max u1 u3, u1, u3} (MonoidHom.{u1, u3} (WithOne.{u1} α) (WithOne.{u3} γ) (WithOne.mulOneClass.{u1} α _inst_1) (WithOne.mulOneClass.{u3} γ _inst_3)) (WithOne.{u1} α) (WithOne.{u3} γ) (MulOneClass.toMul.{u1} (WithOne.{u1} α) (WithOne.mulOneClass.{u1} α _inst_1)) (MulOneClass.toMul.{u3} (WithOne.{u3} γ) (WithOne.mulOneClass.{u3} γ _inst_3)) (MonoidHomClass.toMulHomClass.{max u1 u3, u1, u3} (MonoidHom.{u1, u3} (WithOne.{u1} α) (WithOne.{u3} γ) (WithOne.mulOneClass.{u1} α _inst_1) (WithOne.mulOneClass.{u3} γ _inst_3)) (WithOne.{u1} α) (WithOne.{u3} γ) (WithOne.mulOneClass.{u1} α _inst_1) (WithOne.mulOneClass.{u3} γ _inst_3) (MonoidHom.monoidHomClass.{u1, u3} (WithOne.{u1} α) (WithOne.{u3} γ) (WithOne.mulOneClass.{u1} α _inst_1) (WithOne.mulOneClass.{u3} γ _inst_3)))) (WithOne.map.{u1, u3} α γ _inst_1 _inst_3 (MulHom.comp.{u1, u2, u3} α β γ _inst_1 _inst_2 _inst_3 g f)) x)
+  forall {α : Type.{u1}} {β : Type.{u2}} {γ : Type.{u3}} [_inst_1 : Mul.{u1} α] [_inst_2 : Mul.{u2} β] [_inst_3 : Mul.{u3} γ] (f : MulHom.{u1, u2} α β _inst_1 _inst_2) (g : MulHom.{u2, u3} β γ _inst_2 _inst_3) (x : WithOne.{u1} α), Eq.{succ u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : WithOne.{u2} β) => WithOne.{u3} γ) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} (WithOne.{u1} α) (WithOne.{u2} β) (WithOne.mulOneClass.{u1} α _inst_1) (WithOne.mulOneClass.{u2} β _inst_2)) (WithOne.{u1} α) (fun (a : WithOne.{u1} α) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : WithOne.{u1} α) => WithOne.{u2} β) a) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} (WithOne.{u1} α) (WithOne.{u2} β) (WithOne.mulOneClass.{u1} α _inst_1) (WithOne.mulOneClass.{u2} β _inst_2)) (WithOne.{u1} α) (WithOne.{u2} β) (MulOneClass.toMul.{u1} (WithOne.{u1} α) (WithOne.mulOneClass.{u1} α _inst_1)) (MulOneClass.toMul.{u2} (WithOne.{u2} β) (WithOne.mulOneClass.{u2} β _inst_2)) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} (WithOne.{u1} α) (WithOne.{u2} β) (WithOne.mulOneClass.{u1} α _inst_1) (WithOne.mulOneClass.{u2} β _inst_2)) (WithOne.{u1} α) (WithOne.{u2} β) (WithOne.mulOneClass.{u1} α _inst_1) (WithOne.mulOneClass.{u2} β _inst_2) (MonoidHom.monoidHomClass.{u1, u2} (WithOne.{u1} α) (WithOne.{u2} β) (WithOne.mulOneClass.{u1} α _inst_1) (WithOne.mulOneClass.{u2} β _inst_2)))) (WithOne.map.{u1, u2} α β _inst_1 _inst_2 f) x)) (FunLike.coe.{max (succ u2) (succ u3), succ u2, succ u3} (MonoidHom.{u2, u3} (WithOne.{u2} β) (WithOne.{u3} γ) (WithOne.mulOneClass.{u2} β _inst_2) (WithOne.mulOneClass.{u3} γ _inst_3)) (WithOne.{u2} β) (fun (_x : WithOne.{u2} β) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : WithOne.{u2} β) => WithOne.{u3} γ) _x) (MulHomClass.toFunLike.{max u2 u3, u2, u3} (MonoidHom.{u2, u3} (WithOne.{u2} β) (WithOne.{u3} γ) (WithOne.mulOneClass.{u2} β _inst_2) (WithOne.mulOneClass.{u3} γ _inst_3)) (WithOne.{u2} β) (WithOne.{u3} γ) (MulOneClass.toMul.{u2} (WithOne.{u2} β) (WithOne.mulOneClass.{u2} β _inst_2)) (MulOneClass.toMul.{u3} (WithOne.{u3} γ) (WithOne.mulOneClass.{u3} γ _inst_3)) (MonoidHomClass.toMulHomClass.{max u2 u3, u2, u3} (MonoidHom.{u2, u3} (WithOne.{u2} β) (WithOne.{u3} γ) (WithOne.mulOneClass.{u2} β _inst_2) (WithOne.mulOneClass.{u3} γ _inst_3)) (WithOne.{u2} β) (WithOne.{u3} γ) (WithOne.mulOneClass.{u2} β _inst_2) (WithOne.mulOneClass.{u3} γ _inst_3) (MonoidHom.monoidHomClass.{u2, u3} (WithOne.{u2} β) (WithOne.{u3} γ) (WithOne.mulOneClass.{u2} β _inst_2) (WithOne.mulOneClass.{u3} γ _inst_3)))) (WithOne.map.{u2, u3} β γ _inst_2 _inst_3 g) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} (WithOne.{u1} α) (WithOne.{u2} β) (WithOne.mulOneClass.{u1} α _inst_1) (WithOne.mulOneClass.{u2} β _inst_2)) (WithOne.{u1} α) (fun (_x : WithOne.{u1} α) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : WithOne.{u1} α) => WithOne.{u2} β) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} (WithOne.{u1} α) (WithOne.{u2} β) (WithOne.mulOneClass.{u1} α _inst_1) (WithOne.mulOneClass.{u2} β _inst_2)) (WithOne.{u1} α) (WithOne.{u2} β) (MulOneClass.toMul.{u1} (WithOne.{u1} α) (WithOne.mulOneClass.{u1} α _inst_1)) (MulOneClass.toMul.{u2} (WithOne.{u2} β) (WithOne.mulOneClass.{u2} β _inst_2)) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} (WithOne.{u1} α) (WithOne.{u2} β) (WithOne.mulOneClass.{u1} α _inst_1) (WithOne.mulOneClass.{u2} β _inst_2)) (WithOne.{u1} α) (WithOne.{u2} β) (WithOne.mulOneClass.{u1} α _inst_1) (WithOne.mulOneClass.{u2} β _inst_2) (MonoidHom.monoidHomClass.{u1, u2} (WithOne.{u1} α) (WithOne.{u2} β) (WithOne.mulOneClass.{u1} α _inst_1) (WithOne.mulOneClass.{u2} β _inst_2)))) (WithOne.map.{u1, u2} α β _inst_1 _inst_2 f) x)) (FunLike.coe.{max (succ u1) (succ u3), succ u1, succ u3} (MonoidHom.{u1, u3} (WithOne.{u1} α) (WithOne.{u3} γ) (WithOne.mulOneClass.{u1} α _inst_1) (WithOne.mulOneClass.{u3} γ _inst_3)) (WithOne.{u1} α) (fun (_x : WithOne.{u1} α) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : WithOne.{u1} α) => WithOne.{u3} γ) _x) (MulHomClass.toFunLike.{max u1 u3, u1, u3} (MonoidHom.{u1, u3} (WithOne.{u1} α) (WithOne.{u3} γ) (WithOne.mulOneClass.{u1} α _inst_1) (WithOne.mulOneClass.{u3} γ _inst_3)) (WithOne.{u1} α) (WithOne.{u3} γ) (MulOneClass.toMul.{u1} (WithOne.{u1} α) (WithOne.mulOneClass.{u1} α _inst_1)) (MulOneClass.toMul.{u3} (WithOne.{u3} γ) (WithOne.mulOneClass.{u3} γ _inst_3)) (MonoidHomClass.toMulHomClass.{max u1 u3, u1, u3} (MonoidHom.{u1, u3} (WithOne.{u1} α) (WithOne.{u3} γ) (WithOne.mulOneClass.{u1} α _inst_1) (WithOne.mulOneClass.{u3} γ _inst_3)) (WithOne.{u1} α) (WithOne.{u3} γ) (WithOne.mulOneClass.{u1} α _inst_1) (WithOne.mulOneClass.{u3} γ _inst_3) (MonoidHom.monoidHomClass.{u1, u3} (WithOne.{u1} α) (WithOne.{u3} γ) (WithOne.mulOneClass.{u1} α _inst_1) (WithOne.mulOneClass.{u3} γ _inst_3)))) (WithOne.map.{u1, u3} α γ _inst_1 _inst_3 (MulHom.comp.{u1, u2, u3} α β γ _inst_1 _inst_2 _inst_3 g f)) x)
 Case conversion may be inaccurate. Consider using '#align with_one.map_map WithOne.map_mapₓ'. -/
 @[to_additive]
 theorem map_map (f : α →ₙ* β) (g : β →ₙ* γ) (x) : map g (map f x) = map (g.comp f) x := by
Diff
@@ -91,7 +91,7 @@ variable (f : α →ₙ* β)
 lean 3 declaration is
   forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : Mul.{u1} α] [_inst_2 : MulOneClass.{u2} β] (f : MulHom.{u1, u2} α β _inst_1 (MulOneClass.toHasMul.{u2} β _inst_2)) (x : α), Eq.{succ u2} β (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} (WithOne.{u1} α) β (WithOne.mulOneClass.{u1} α _inst_1) _inst_2) (fun (_x : MonoidHom.{u1, u2} (WithOne.{u1} α) β (WithOne.mulOneClass.{u1} α _inst_1) _inst_2) => (WithOne.{u1} α) -> β) (MonoidHom.hasCoeToFun.{u1, u2} (WithOne.{u1} α) β (WithOne.mulOneClass.{u1} α _inst_1) _inst_2) (coeFn.{max 1 (succ u2) (succ u1), max (succ u2) (succ u1)} (Equiv.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (MulHom.{u1, u2} α β _inst_1 (MulOneClass.toHasMul.{u2} β _inst_2)) (MonoidHom.{u1, u2} (WithOne.{u1} α) β (WithOne.mulOneClass.{u1} α _inst_1) _inst_2)) (fun (_x : Equiv.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (MulHom.{u1, u2} α β _inst_1 (MulOneClass.toHasMul.{u2} β _inst_2)) (MonoidHom.{u1, u2} (WithOne.{u1} α) β (WithOne.mulOneClass.{u1} α _inst_1) _inst_2)) => (MulHom.{u1, u2} α β _inst_1 (MulOneClass.toHasMul.{u2} β _inst_2)) -> (MonoidHom.{u1, u2} (WithOne.{u1} α) β (WithOne.mulOneClass.{u1} α _inst_1) _inst_2)) (Equiv.hasCoeToFun.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (MulHom.{u1, u2} α β _inst_1 (MulOneClass.toHasMul.{u2} β _inst_2)) (MonoidHom.{u1, u2} (WithOne.{u1} α) β (WithOne.mulOneClass.{u1} α _inst_1) _inst_2)) (WithOne.lift.{u1, u2} α β _inst_1 _inst_2) f) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) α (WithOne.{u1} α) (HasLiftT.mk.{succ u1, succ u1} α (WithOne.{u1} α) (CoeTCₓ.coe.{succ u1, succ u1} α (WithOne.{u1} α) (WithOne.hasCoeT.{u1} α))) x)) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MulHom.{u1, u2} α β _inst_1 (MulOneClass.toHasMul.{u2} β _inst_2)) (fun (_x : MulHom.{u1, u2} α β _inst_1 (MulOneClass.toHasMul.{u2} β _inst_2)) => α -> β) (MulHom.hasCoeToFun.{u1, u2} α β _inst_1 (MulOneClass.toHasMul.{u2} β _inst_2)) f x)
 but is expected to have type
-  forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : Mul.{u1} α] [_inst_2 : MulOneClass.{u2} β] (f : MulHom.{u1, u2} α β _inst_1 (MulOneClass.toMul.{u2} β _inst_2)) (x : α), Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : WithOne.{u1} α) => β) (WithOne.coe.{u1} α x)) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : MulHom.{u1, u2} α β _inst_1 (MulOneClass.toMul.{u2} β _inst_2)) => MonoidHom.{u1, u2} (WithOne.{u1} α) β (WithOne.mulOneClass.{u1} α _inst_1) _inst_2) f) (WithOne.{u1} α) (fun (_x : WithOne.{u1} α) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : WithOne.{u1} α) => β) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : MulHom.{u1, u2} α β _inst_1 (MulOneClass.toMul.{u2} β _inst_2)) => MonoidHom.{u1, u2} (WithOne.{u1} α) β (WithOne.mulOneClass.{u1} α _inst_1) _inst_2) f) (WithOne.{u1} α) β (MulOneClass.toMul.{u1} (WithOne.{u1} α) (WithOne.mulOneClass.{u1} α _inst_1)) (MulOneClass.toMul.{u2} β _inst_2) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : MulHom.{u1, u2} α β _inst_1 (MulOneClass.toMul.{u2} β _inst_2)) => MonoidHom.{u1, u2} (WithOne.{u1} α) β (WithOne.mulOneClass.{u1} α _inst_1) _inst_2) f) (WithOne.{u1} α) β (WithOne.mulOneClass.{u1} α _inst_1) _inst_2 (MonoidHom.monoidHomClass.{u1, u2} (WithOne.{u1} α) β (WithOne.mulOneClass.{u1} α _inst_1) _inst_2))) (FunLike.coe.{max (succ u2) (succ u1), max (succ u2) (succ u1), max (succ u2) (succ u1)} (Equiv.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (MulHom.{u1, u2} α β _inst_1 (MulOneClass.toMul.{u2} β _inst_2)) (MonoidHom.{u1, u2} (WithOne.{u1} α) β (WithOne.mulOneClass.{u1} α _inst_1) _inst_2)) (MulHom.{u1, u2} α β _inst_1 (MulOneClass.toMul.{u2} β _inst_2)) (fun (_x : MulHom.{u1, u2} α β _inst_1 (MulOneClass.toMul.{u2} β _inst_2)) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : MulHom.{u1, u2} α β _inst_1 (MulOneClass.toMul.{u2} β _inst_2)) => MonoidHom.{u1, u2} (WithOne.{u1} α) β (WithOne.mulOneClass.{u1} α _inst_1) _inst_2) _x) (Equiv.instFunLikeEquiv.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (MulHom.{u1, u2} α β _inst_1 (MulOneClass.toMul.{u2} β _inst_2)) (MonoidHom.{u1, u2} (WithOne.{u1} α) β (WithOne.mulOneClass.{u1} α _inst_1) _inst_2)) (WithOne.lift.{u1, u2} α β _inst_1 _inst_2) f) (WithOne.coe.{u1} α x)) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MulHom.{u1, u2} α β _inst_1 (MulOneClass.toMul.{u2} β _inst_2)) α (fun (_x : α) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : α) => β) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MulHom.{u1, u2} α β _inst_1 (MulOneClass.toMul.{u2} β _inst_2)) α β _inst_1 (MulOneClass.toMul.{u2} β _inst_2) (MulHom.mulHomClass.{u1, u2} α β _inst_1 (MulOneClass.toMul.{u2} β _inst_2))) f x)
+  forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : Mul.{u1} α] [_inst_2 : MulOneClass.{u2} β] (f : MulHom.{u1, u2} α β _inst_1 (MulOneClass.toMul.{u2} β _inst_2)) (x : α), Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : WithOne.{u1} α) => β) (WithOne.coe.{u1} α x)) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : MulHom.{u1, u2} α β _inst_1 (MulOneClass.toMul.{u2} β _inst_2)) => MonoidHom.{u1, u2} (WithOne.{u1} α) β (WithOne.mulOneClass.{u1} α _inst_1) _inst_2) f) (WithOne.{u1} α) (fun (_x : WithOne.{u1} α) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : WithOne.{u1} α) => β) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : MulHom.{u1, u2} α β _inst_1 (MulOneClass.toMul.{u2} β _inst_2)) => MonoidHom.{u1, u2} (WithOne.{u1} α) β (WithOne.mulOneClass.{u1} α _inst_1) _inst_2) f) (WithOne.{u1} α) β (MulOneClass.toMul.{u1} (WithOne.{u1} α) (WithOne.mulOneClass.{u1} α _inst_1)) (MulOneClass.toMul.{u2} β _inst_2) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : MulHom.{u1, u2} α β _inst_1 (MulOneClass.toMul.{u2} β _inst_2)) => MonoidHom.{u1, u2} (WithOne.{u1} α) β (WithOne.mulOneClass.{u1} α _inst_1) _inst_2) f) (WithOne.{u1} α) β (WithOne.mulOneClass.{u1} α _inst_1) _inst_2 (MonoidHom.monoidHomClass.{u1, u2} (WithOne.{u1} α) β (WithOne.mulOneClass.{u1} α _inst_1) _inst_2))) (FunLike.coe.{max (succ u2) (succ u1), max (succ u2) (succ u1), max (succ u2) (succ u1)} (Equiv.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (MulHom.{u1, u2} α β _inst_1 (MulOneClass.toMul.{u2} β _inst_2)) (MonoidHom.{u1, u2} (WithOne.{u1} α) β (WithOne.mulOneClass.{u1} α _inst_1) _inst_2)) (MulHom.{u1, u2} α β _inst_1 (MulOneClass.toMul.{u2} β _inst_2)) (fun (_x : MulHom.{u1, u2} α β _inst_1 (MulOneClass.toMul.{u2} β _inst_2)) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : MulHom.{u1, u2} α β _inst_1 (MulOneClass.toMul.{u2} β _inst_2)) => MonoidHom.{u1, u2} (WithOne.{u1} α) β (WithOne.mulOneClass.{u1} α _inst_1) _inst_2) _x) (Equiv.instFunLikeEquiv.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (MulHom.{u1, u2} α β _inst_1 (MulOneClass.toMul.{u2} β _inst_2)) (MonoidHom.{u1, u2} (WithOne.{u1} α) β (WithOne.mulOneClass.{u1} α _inst_1) _inst_2)) (WithOne.lift.{u1, u2} α β _inst_1 _inst_2) f) (WithOne.coe.{u1} α x)) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MulHom.{u1, u2} α β _inst_1 (MulOneClass.toMul.{u2} β _inst_2)) α (fun (_x : α) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : α) => β) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MulHom.{u1, u2} α β _inst_1 (MulOneClass.toMul.{u2} β _inst_2)) α β _inst_1 (MulOneClass.toMul.{u2} β _inst_2) (MulHom.mulHomClass.{u1, u2} α β _inst_1 (MulOneClass.toMul.{u2} β _inst_2))) f x)
 Case conversion may be inaccurate. Consider using '#align with_one.lift_coe WithOne.lift_coeₓ'. -/
 @[simp, to_additive]
 theorem lift_coe (x : α) : lift f x = f x :=
@@ -103,7 +103,7 @@ theorem lift_coe (x : α) : lift f x = f x :=
 lean 3 declaration is
   forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : Mul.{u1} α] [_inst_2 : MulOneClass.{u2} β] (f : MulHom.{u1, u2} α β _inst_1 (MulOneClass.toHasMul.{u2} β _inst_2)), Eq.{succ u2} β (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} (WithOne.{u1} α) β (WithOne.mulOneClass.{u1} α _inst_1) _inst_2) (fun (_x : MonoidHom.{u1, u2} (WithOne.{u1} α) β (WithOne.mulOneClass.{u1} α _inst_1) _inst_2) => (WithOne.{u1} α) -> β) (MonoidHom.hasCoeToFun.{u1, u2} (WithOne.{u1} α) β (WithOne.mulOneClass.{u1} α _inst_1) _inst_2) (coeFn.{max 1 (succ u2) (succ u1), max (succ u2) (succ u1)} (Equiv.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (MulHom.{u1, u2} α β _inst_1 (MulOneClass.toHasMul.{u2} β _inst_2)) (MonoidHom.{u1, u2} (WithOne.{u1} α) β (WithOne.mulOneClass.{u1} α _inst_1) _inst_2)) (fun (_x : Equiv.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (MulHom.{u1, u2} α β _inst_1 (MulOneClass.toHasMul.{u2} β _inst_2)) (MonoidHom.{u1, u2} (WithOne.{u1} α) β (WithOne.mulOneClass.{u1} α _inst_1) _inst_2)) => (MulHom.{u1, u2} α β _inst_1 (MulOneClass.toHasMul.{u2} β _inst_2)) -> (MonoidHom.{u1, u2} (WithOne.{u1} α) β (WithOne.mulOneClass.{u1} α _inst_1) _inst_2)) (Equiv.hasCoeToFun.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (MulHom.{u1, u2} α β _inst_1 (MulOneClass.toHasMul.{u2} β _inst_2)) (MonoidHom.{u1, u2} (WithOne.{u1} α) β (WithOne.mulOneClass.{u1} α _inst_1) _inst_2)) (WithOne.lift.{u1, u2} α β _inst_1 _inst_2) f) (OfNat.ofNat.{u1} (WithOne.{u1} α) 1 (OfNat.mk.{u1} (WithOne.{u1} α) 1 (One.one.{u1} (WithOne.{u1} α) (WithOne.one.{u1} α))))) (OfNat.ofNat.{u2} β 1 (OfNat.mk.{u2} β 1 (One.one.{u2} β (MulOneClass.toHasOne.{u2} β _inst_2))))
 but is expected to have type
-  forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : Mul.{u1} α] [_inst_2 : MulOneClass.{u2} β] (f : MulHom.{u1, u2} α β _inst_1 (MulOneClass.toMul.{u2} β _inst_2)), Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : WithOne.{u1} α) => β) (OfNat.ofNat.{u1} (WithOne.{u1} α) 1 (One.toOfNat1.{u1} (WithOne.{u1} α) (WithOne.one.{u1} α)))) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : MulHom.{u1, u2} α β _inst_1 (MulOneClass.toMul.{u2} β _inst_2)) => MonoidHom.{u1, u2} (WithOne.{u1} α) β (WithOne.mulOneClass.{u1} α _inst_1) _inst_2) f) (WithOne.{u1} α) (fun (_x : WithOne.{u1} α) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : WithOne.{u1} α) => β) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : MulHom.{u1, u2} α β _inst_1 (MulOneClass.toMul.{u2} β _inst_2)) => MonoidHom.{u1, u2} (WithOne.{u1} α) β (WithOne.mulOneClass.{u1} α _inst_1) _inst_2) f) (WithOne.{u1} α) β (MulOneClass.toMul.{u1} (WithOne.{u1} α) (WithOne.mulOneClass.{u1} α _inst_1)) (MulOneClass.toMul.{u2} β _inst_2) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : MulHom.{u1, u2} α β _inst_1 (MulOneClass.toMul.{u2} β _inst_2)) => MonoidHom.{u1, u2} (WithOne.{u1} α) β (WithOne.mulOneClass.{u1} α _inst_1) _inst_2) f) (WithOne.{u1} α) β (WithOne.mulOneClass.{u1} α _inst_1) _inst_2 (MonoidHom.monoidHomClass.{u1, u2} (WithOne.{u1} α) β (WithOne.mulOneClass.{u1} α _inst_1) _inst_2))) (FunLike.coe.{max (succ u2) (succ u1), max (succ u2) (succ u1), max (succ u2) (succ u1)} (Equiv.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (MulHom.{u1, u2} α β _inst_1 (MulOneClass.toMul.{u2} β _inst_2)) (MonoidHom.{u1, u2} (WithOne.{u1} α) β (WithOne.mulOneClass.{u1} α _inst_1) _inst_2)) (MulHom.{u1, u2} α β _inst_1 (MulOneClass.toMul.{u2} β _inst_2)) (fun (_x : MulHom.{u1, u2} α β _inst_1 (MulOneClass.toMul.{u2} β _inst_2)) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : MulHom.{u1, u2} α β _inst_1 (MulOneClass.toMul.{u2} β _inst_2)) => MonoidHom.{u1, u2} (WithOne.{u1} α) β (WithOne.mulOneClass.{u1} α _inst_1) _inst_2) _x) (Equiv.instFunLikeEquiv.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (MulHom.{u1, u2} α β _inst_1 (MulOneClass.toMul.{u2} β _inst_2)) (MonoidHom.{u1, u2} (WithOne.{u1} α) β (WithOne.mulOneClass.{u1} α _inst_1) _inst_2)) (WithOne.lift.{u1, u2} α β _inst_1 _inst_2) f) (OfNat.ofNat.{u1} (WithOne.{u1} α) 1 (One.toOfNat1.{u1} (WithOne.{u1} α) (WithOne.one.{u1} α)))) (OfNat.ofNat.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : WithOne.{u1} α) => β) (OfNat.ofNat.{u1} (WithOne.{u1} α) 1 (One.toOfNat1.{u1} (WithOne.{u1} α) (WithOne.one.{u1} α)))) 1 (One.toOfNat1.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : WithOne.{u1} α) => β) (OfNat.ofNat.{u1} (WithOne.{u1} α) 1 (One.toOfNat1.{u1} (WithOne.{u1} α) (WithOne.one.{u1} α)))) (MulOneClass.toOne.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : WithOne.{u1} α) => β) (OfNat.ofNat.{u1} (WithOne.{u1} α) 1 (One.toOfNat1.{u1} (WithOne.{u1} α) (WithOne.one.{u1} α)))) _inst_2)))
+  forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : Mul.{u1} α] [_inst_2 : MulOneClass.{u2} β] (f : MulHom.{u1, u2} α β _inst_1 (MulOneClass.toMul.{u2} β _inst_2)), Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : WithOne.{u1} α) => β) (OfNat.ofNat.{u1} (WithOne.{u1} α) 1 (One.toOfNat1.{u1} (WithOne.{u1} α) (WithOne.one.{u1} α)))) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : MulHom.{u1, u2} α β _inst_1 (MulOneClass.toMul.{u2} β _inst_2)) => MonoidHom.{u1, u2} (WithOne.{u1} α) β (WithOne.mulOneClass.{u1} α _inst_1) _inst_2) f) (WithOne.{u1} α) (fun (_x : WithOne.{u1} α) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : WithOne.{u1} α) => β) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : MulHom.{u1, u2} α β _inst_1 (MulOneClass.toMul.{u2} β _inst_2)) => MonoidHom.{u1, u2} (WithOne.{u1} α) β (WithOne.mulOneClass.{u1} α _inst_1) _inst_2) f) (WithOne.{u1} α) β (MulOneClass.toMul.{u1} (WithOne.{u1} α) (WithOne.mulOneClass.{u1} α _inst_1)) (MulOneClass.toMul.{u2} β _inst_2) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : MulHom.{u1, u2} α β _inst_1 (MulOneClass.toMul.{u2} β _inst_2)) => MonoidHom.{u1, u2} (WithOne.{u1} α) β (WithOne.mulOneClass.{u1} α _inst_1) _inst_2) f) (WithOne.{u1} α) β (WithOne.mulOneClass.{u1} α _inst_1) _inst_2 (MonoidHom.monoidHomClass.{u1, u2} (WithOne.{u1} α) β (WithOne.mulOneClass.{u1} α _inst_1) _inst_2))) (FunLike.coe.{max (succ u2) (succ u1), max (succ u2) (succ u1), max (succ u2) (succ u1)} (Equiv.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (MulHom.{u1, u2} α β _inst_1 (MulOneClass.toMul.{u2} β _inst_2)) (MonoidHom.{u1, u2} (WithOne.{u1} α) β (WithOne.mulOneClass.{u1} α _inst_1) _inst_2)) (MulHom.{u1, u2} α β _inst_1 (MulOneClass.toMul.{u2} β _inst_2)) (fun (_x : MulHom.{u1, u2} α β _inst_1 (MulOneClass.toMul.{u2} β _inst_2)) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : MulHom.{u1, u2} α β _inst_1 (MulOneClass.toMul.{u2} β _inst_2)) => MonoidHom.{u1, u2} (WithOne.{u1} α) β (WithOne.mulOneClass.{u1} α _inst_1) _inst_2) _x) (Equiv.instFunLikeEquiv.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (MulHom.{u1, u2} α β _inst_1 (MulOneClass.toMul.{u2} β _inst_2)) (MonoidHom.{u1, u2} (WithOne.{u1} α) β (WithOne.mulOneClass.{u1} α _inst_1) _inst_2)) (WithOne.lift.{u1, u2} α β _inst_1 _inst_2) f) (OfNat.ofNat.{u1} (WithOne.{u1} α) 1 (One.toOfNat1.{u1} (WithOne.{u1} α) (WithOne.one.{u1} α)))) (OfNat.ofNat.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : WithOne.{u1} α) => β) (OfNat.ofNat.{u1} (WithOne.{u1} α) 1 (One.toOfNat1.{u1} (WithOne.{u1} α) (WithOne.one.{u1} α)))) 1 (One.toOfNat1.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : WithOne.{u1} α) => β) (OfNat.ofNat.{u1} (WithOne.{u1} α) 1 (One.toOfNat1.{u1} (WithOne.{u1} α) (WithOne.one.{u1} α)))) (MulOneClass.toOne.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : WithOne.{u1} α) => β) (OfNat.ofNat.{u1} (WithOne.{u1} α) 1 (One.toOfNat1.{u1} (WithOne.{u1} α) (WithOne.one.{u1} α)))) _inst_2)))
 Case conversion may be inaccurate. Consider using '#align with_one.lift_one WithOne.lift_oneₓ'. -/
 @[simp, to_additive]
 theorem lift_one : lift f 1 = 1 :=
@@ -140,7 +140,7 @@ def map (f : α →ₙ* β) : WithOne α →* WithOne β :=
 lean 3 declaration is
   forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : Mul.{u1} α] [_inst_2 : Mul.{u2} β] (f : MulHom.{u1, u2} α β _inst_1 _inst_2) (a : α), Eq.{succ u2} (WithOne.{u2} β) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} (WithOne.{u1} α) (WithOne.{u2} β) (WithOne.mulOneClass.{u1} α _inst_1) (WithOne.mulOneClass.{u2} β _inst_2)) (fun (_x : MonoidHom.{u1, u2} (WithOne.{u1} α) (WithOne.{u2} β) (WithOne.mulOneClass.{u1} α _inst_1) (WithOne.mulOneClass.{u2} β _inst_2)) => (WithOne.{u1} α) -> (WithOne.{u2} β)) (MonoidHom.hasCoeToFun.{u1, u2} (WithOne.{u1} α) (WithOne.{u2} β) (WithOne.mulOneClass.{u1} α _inst_1) (WithOne.mulOneClass.{u2} β _inst_2)) (WithOne.map.{u1, u2} α β _inst_1 _inst_2 f) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) α (WithOne.{u1} α) (HasLiftT.mk.{succ u1, succ u1} α (WithOne.{u1} α) (CoeTCₓ.coe.{succ u1, succ u1} α (WithOne.{u1} α) (WithOne.hasCoeT.{u1} α))) a)) ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) β (WithOne.{u2} β) (HasLiftT.mk.{succ u2, succ u2} β (WithOne.{u2} β) (CoeTCₓ.coe.{succ u2, succ u2} β (WithOne.{u2} β) (WithOne.hasCoeT.{u2} β))) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MulHom.{u1, u2} α β _inst_1 _inst_2) (fun (_x : MulHom.{u1, u2} α β _inst_1 _inst_2) => α -> β) (MulHom.hasCoeToFun.{u1, u2} α β _inst_1 _inst_2) f a))
 but is expected to have type
-  forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : Mul.{u1} α] [_inst_2 : Mul.{u2} β] (f : MulHom.{u1, u2} α β _inst_1 _inst_2) (a : α), Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : WithOne.{u1} α) => WithOne.{u2} β) (WithOne.coe.{u1} α a)) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} (WithOne.{u1} α) (WithOne.{u2} β) (WithOne.mulOneClass.{u1} α _inst_1) (WithOne.mulOneClass.{u2} β _inst_2)) (WithOne.{u1} α) (fun (_x : WithOne.{u1} α) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : WithOne.{u1} α) => WithOne.{u2} β) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} (WithOne.{u1} α) (WithOne.{u2} β) (WithOne.mulOneClass.{u1} α _inst_1) (WithOne.mulOneClass.{u2} β _inst_2)) (WithOne.{u1} α) (WithOne.{u2} β) (MulOneClass.toMul.{u1} (WithOne.{u1} α) (WithOne.mulOneClass.{u1} α _inst_1)) (MulOneClass.toMul.{u2} (WithOne.{u2} β) (WithOne.mulOneClass.{u2} β _inst_2)) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} (WithOne.{u1} α) (WithOne.{u2} β) (WithOne.mulOneClass.{u1} α _inst_1) (WithOne.mulOneClass.{u2} β _inst_2)) (WithOne.{u1} α) (WithOne.{u2} β) (WithOne.mulOneClass.{u1} α _inst_1) (WithOne.mulOneClass.{u2} β _inst_2) (MonoidHom.monoidHomClass.{u1, u2} (WithOne.{u1} α) (WithOne.{u2} β) (WithOne.mulOneClass.{u1} α _inst_1) (WithOne.mulOneClass.{u2} β _inst_2)))) (WithOne.map.{u1, u2} α β _inst_1 _inst_2 f) (WithOne.coe.{u1} α a)) (WithOne.coe.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : α) => β) a) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MulHom.{u1, u2} α β _inst_1 _inst_2) α (fun (_x : α) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : α) => β) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MulHom.{u1, u2} α β _inst_1 _inst_2) α β _inst_1 _inst_2 (MulHom.mulHomClass.{u1, u2} α β _inst_1 _inst_2)) f a))
+  forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : Mul.{u1} α] [_inst_2 : Mul.{u2} β] (f : MulHom.{u1, u2} α β _inst_1 _inst_2) (a : α), Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : WithOne.{u1} α) => WithOne.{u2} β) (WithOne.coe.{u1} α a)) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} (WithOne.{u1} α) (WithOne.{u2} β) (WithOne.mulOneClass.{u1} α _inst_1) (WithOne.mulOneClass.{u2} β _inst_2)) (WithOne.{u1} α) (fun (_x : WithOne.{u1} α) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : WithOne.{u1} α) => WithOne.{u2} β) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} (WithOne.{u1} α) (WithOne.{u2} β) (WithOne.mulOneClass.{u1} α _inst_1) (WithOne.mulOneClass.{u2} β _inst_2)) (WithOne.{u1} α) (WithOne.{u2} β) (MulOneClass.toMul.{u1} (WithOne.{u1} α) (WithOne.mulOneClass.{u1} α _inst_1)) (MulOneClass.toMul.{u2} (WithOne.{u2} β) (WithOne.mulOneClass.{u2} β _inst_2)) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} (WithOne.{u1} α) (WithOne.{u2} β) (WithOne.mulOneClass.{u1} α _inst_1) (WithOne.mulOneClass.{u2} β _inst_2)) (WithOne.{u1} α) (WithOne.{u2} β) (WithOne.mulOneClass.{u1} α _inst_1) (WithOne.mulOneClass.{u2} β _inst_2) (MonoidHom.monoidHomClass.{u1, u2} (WithOne.{u1} α) (WithOne.{u2} β) (WithOne.mulOneClass.{u1} α _inst_1) (WithOne.mulOneClass.{u2} β _inst_2)))) (WithOne.map.{u1, u2} α β _inst_1 _inst_2 f) (WithOne.coe.{u1} α a)) (WithOne.coe.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : α) => β) a) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MulHom.{u1, u2} α β _inst_1 _inst_2) α (fun (_x : α) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : α) => β) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MulHom.{u1, u2} α β _inst_1 _inst_2) α β _inst_1 _inst_2 (MulHom.mulHomClass.{u1, u2} α β _inst_1 _inst_2)) f a))
 Case conversion may be inaccurate. Consider using '#align with_one.map_coe WithOne.map_coeₓ'. -/
 @[simp, to_additive]
 theorem map_coe (f : α →ₙ* β) (a : α) : map f (a : WithOne α) = f a :=
@@ -162,7 +162,7 @@ theorem map_id : map (MulHom.id α) = MonoidHom.id (WithOne α) :=
 lean 3 declaration is
   forall {α : Type.{u1}} {β : Type.{u2}} {γ : Type.{u3}} [_inst_1 : Mul.{u1} α] [_inst_2 : Mul.{u2} β] [_inst_3 : Mul.{u3} γ] (f : MulHom.{u1, u2} α β _inst_1 _inst_2) (g : MulHom.{u2, u3} β γ _inst_2 _inst_3) (x : WithOne.{u1} α), Eq.{succ u3} (WithOne.{u3} γ) (coeFn.{max (succ u3) (succ u2), max (succ u2) (succ u3)} (MonoidHom.{u2, u3} (WithOne.{u2} β) (WithOne.{u3} γ) (WithOne.mulOneClass.{u2} β _inst_2) (WithOne.mulOneClass.{u3} γ _inst_3)) (fun (_x : MonoidHom.{u2, u3} (WithOne.{u2} β) (WithOne.{u3} γ) (WithOne.mulOneClass.{u2} β _inst_2) (WithOne.mulOneClass.{u3} γ _inst_3)) => (WithOne.{u2} β) -> (WithOne.{u3} γ)) (MonoidHom.hasCoeToFun.{u2, u3} (WithOne.{u2} β) (WithOne.{u3} γ) (WithOne.mulOneClass.{u2} β _inst_2) (WithOne.mulOneClass.{u3} γ _inst_3)) (WithOne.map.{u2, u3} β γ _inst_2 _inst_3 g) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} (WithOne.{u1} α) (WithOne.{u2} β) (WithOne.mulOneClass.{u1} α _inst_1) (WithOne.mulOneClass.{u2} β _inst_2)) (fun (_x : MonoidHom.{u1, u2} (WithOne.{u1} α) (WithOne.{u2} β) (WithOne.mulOneClass.{u1} α _inst_1) (WithOne.mulOneClass.{u2} β _inst_2)) => (WithOne.{u1} α) -> (WithOne.{u2} β)) (MonoidHom.hasCoeToFun.{u1, u2} (WithOne.{u1} α) (WithOne.{u2} β) (WithOne.mulOneClass.{u1} α _inst_1) (WithOne.mulOneClass.{u2} β _inst_2)) (WithOne.map.{u1, u2} α β _inst_1 _inst_2 f) x)) (coeFn.{max (succ u3) (succ u1), max (succ u1) (succ u3)} (MonoidHom.{u1, u3} (WithOne.{u1} α) (WithOne.{u3} γ) (WithOne.mulOneClass.{u1} α _inst_1) (WithOne.mulOneClass.{u3} γ _inst_3)) (fun (_x : MonoidHom.{u1, u3} (WithOne.{u1} α) (WithOne.{u3} γ) (WithOne.mulOneClass.{u1} α _inst_1) (WithOne.mulOneClass.{u3} γ _inst_3)) => (WithOne.{u1} α) -> (WithOne.{u3} γ)) (MonoidHom.hasCoeToFun.{u1, u3} (WithOne.{u1} α) (WithOne.{u3} γ) (WithOne.mulOneClass.{u1} α _inst_1) (WithOne.mulOneClass.{u3} γ _inst_3)) (WithOne.map.{u1, u3} α γ _inst_1 _inst_3 (MulHom.comp.{u1, u2, u3} α β γ _inst_1 _inst_2 _inst_3 g f)) x)
 but is expected to have type
-  forall {α : Type.{u1}} {β : Type.{u2}} {γ : Type.{u3}} [_inst_1 : Mul.{u1} α] [_inst_2 : Mul.{u2} β] [_inst_3 : Mul.{u3} γ] (f : MulHom.{u1, u2} α β _inst_1 _inst_2) (g : MulHom.{u2, u3} β γ _inst_2 _inst_3) (x : WithOne.{u1} α), Eq.{succ u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : WithOne.{u2} β) => WithOne.{u3} γ) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} (WithOne.{u1} α) (WithOne.{u2} β) (WithOne.mulOneClass.{u1} α _inst_1) (WithOne.mulOneClass.{u2} β _inst_2)) (WithOne.{u1} α) (fun (a : WithOne.{u1} α) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : WithOne.{u1} α) => WithOne.{u2} β) a) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} (WithOne.{u1} α) (WithOne.{u2} β) (WithOne.mulOneClass.{u1} α _inst_1) (WithOne.mulOneClass.{u2} β _inst_2)) (WithOne.{u1} α) (WithOne.{u2} β) (MulOneClass.toMul.{u1} (WithOne.{u1} α) (WithOne.mulOneClass.{u1} α _inst_1)) (MulOneClass.toMul.{u2} (WithOne.{u2} β) (WithOne.mulOneClass.{u2} β _inst_2)) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} (WithOne.{u1} α) (WithOne.{u2} β) (WithOne.mulOneClass.{u1} α _inst_1) (WithOne.mulOneClass.{u2} β _inst_2)) (WithOne.{u1} α) (WithOne.{u2} β) (WithOne.mulOneClass.{u1} α _inst_1) (WithOne.mulOneClass.{u2} β _inst_2) (MonoidHom.monoidHomClass.{u1, u2} (WithOne.{u1} α) (WithOne.{u2} β) (WithOne.mulOneClass.{u1} α _inst_1) (WithOne.mulOneClass.{u2} β _inst_2)))) (WithOne.map.{u1, u2} α β _inst_1 _inst_2 f) x)) (FunLike.coe.{max (succ u2) (succ u3), succ u2, succ u3} (MonoidHom.{u2, u3} (WithOne.{u2} β) (WithOne.{u3} γ) (WithOne.mulOneClass.{u2} β _inst_2) (WithOne.mulOneClass.{u3} γ _inst_3)) (WithOne.{u2} β) (fun (_x : WithOne.{u2} β) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : WithOne.{u2} β) => WithOne.{u3} γ) _x) (MulHomClass.toFunLike.{max u2 u3, u2, u3} (MonoidHom.{u2, u3} (WithOne.{u2} β) (WithOne.{u3} γ) (WithOne.mulOneClass.{u2} β _inst_2) (WithOne.mulOneClass.{u3} γ _inst_3)) (WithOne.{u2} β) (WithOne.{u3} γ) (MulOneClass.toMul.{u2} (WithOne.{u2} β) (WithOne.mulOneClass.{u2} β _inst_2)) (MulOneClass.toMul.{u3} (WithOne.{u3} γ) (WithOne.mulOneClass.{u3} γ _inst_3)) (MonoidHomClass.toMulHomClass.{max u2 u3, u2, u3} (MonoidHom.{u2, u3} (WithOne.{u2} β) (WithOne.{u3} γ) (WithOne.mulOneClass.{u2} β _inst_2) (WithOne.mulOneClass.{u3} γ _inst_3)) (WithOne.{u2} β) (WithOne.{u3} γ) (WithOne.mulOneClass.{u2} β _inst_2) (WithOne.mulOneClass.{u3} γ _inst_3) (MonoidHom.monoidHomClass.{u2, u3} (WithOne.{u2} β) (WithOne.{u3} γ) (WithOne.mulOneClass.{u2} β _inst_2) (WithOne.mulOneClass.{u3} γ _inst_3)))) (WithOne.map.{u2, u3} β γ _inst_2 _inst_3 g) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} (WithOne.{u1} α) (WithOne.{u2} β) (WithOne.mulOneClass.{u1} α _inst_1) (WithOne.mulOneClass.{u2} β _inst_2)) (WithOne.{u1} α) (fun (_x : WithOne.{u1} α) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : WithOne.{u1} α) => WithOne.{u2} β) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} (WithOne.{u1} α) (WithOne.{u2} β) (WithOne.mulOneClass.{u1} α _inst_1) (WithOne.mulOneClass.{u2} β _inst_2)) (WithOne.{u1} α) (WithOne.{u2} β) (MulOneClass.toMul.{u1} (WithOne.{u1} α) (WithOne.mulOneClass.{u1} α _inst_1)) (MulOneClass.toMul.{u2} (WithOne.{u2} β) (WithOne.mulOneClass.{u2} β _inst_2)) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} (WithOne.{u1} α) (WithOne.{u2} β) (WithOne.mulOneClass.{u1} α _inst_1) (WithOne.mulOneClass.{u2} β _inst_2)) (WithOne.{u1} α) (WithOne.{u2} β) (WithOne.mulOneClass.{u1} α _inst_1) (WithOne.mulOneClass.{u2} β _inst_2) (MonoidHom.monoidHomClass.{u1, u2} (WithOne.{u1} α) (WithOne.{u2} β) (WithOne.mulOneClass.{u1} α _inst_1) (WithOne.mulOneClass.{u2} β _inst_2)))) (WithOne.map.{u1, u2} α β _inst_1 _inst_2 f) x)) (FunLike.coe.{max (succ u1) (succ u3), succ u1, succ u3} (MonoidHom.{u1, u3} (WithOne.{u1} α) (WithOne.{u3} γ) (WithOne.mulOneClass.{u1} α _inst_1) (WithOne.mulOneClass.{u3} γ _inst_3)) (WithOne.{u1} α) (fun (_x : WithOne.{u1} α) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : WithOne.{u1} α) => WithOne.{u3} γ) _x) (MulHomClass.toFunLike.{max u1 u3, u1, u3} (MonoidHom.{u1, u3} (WithOne.{u1} α) (WithOne.{u3} γ) (WithOne.mulOneClass.{u1} α _inst_1) (WithOne.mulOneClass.{u3} γ _inst_3)) (WithOne.{u1} α) (WithOne.{u3} γ) (MulOneClass.toMul.{u1} (WithOne.{u1} α) (WithOne.mulOneClass.{u1} α _inst_1)) (MulOneClass.toMul.{u3} (WithOne.{u3} γ) (WithOne.mulOneClass.{u3} γ _inst_3)) (MonoidHomClass.toMulHomClass.{max u1 u3, u1, u3} (MonoidHom.{u1, u3} (WithOne.{u1} α) (WithOne.{u3} γ) (WithOne.mulOneClass.{u1} α _inst_1) (WithOne.mulOneClass.{u3} γ _inst_3)) (WithOne.{u1} α) (WithOne.{u3} γ) (WithOne.mulOneClass.{u1} α _inst_1) (WithOne.mulOneClass.{u3} γ _inst_3) (MonoidHom.monoidHomClass.{u1, u3} (WithOne.{u1} α) (WithOne.{u3} γ) (WithOne.mulOneClass.{u1} α _inst_1) (WithOne.mulOneClass.{u3} γ _inst_3)))) (WithOne.map.{u1, u3} α γ _inst_1 _inst_3 (MulHom.comp.{u1, u2, u3} α β γ _inst_1 _inst_2 _inst_3 g f)) x)
+  forall {α : Type.{u1}} {β : Type.{u2}} {γ : Type.{u3}} [_inst_1 : Mul.{u1} α] [_inst_2 : Mul.{u2} β] [_inst_3 : Mul.{u3} γ] (f : MulHom.{u1, u2} α β _inst_1 _inst_2) (g : MulHom.{u2, u3} β γ _inst_2 _inst_3) (x : WithOne.{u1} α), Eq.{succ u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : WithOne.{u2} β) => WithOne.{u3} γ) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} (WithOne.{u1} α) (WithOne.{u2} β) (WithOne.mulOneClass.{u1} α _inst_1) (WithOne.mulOneClass.{u2} β _inst_2)) (WithOne.{u1} α) (fun (a : WithOne.{u1} α) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : WithOne.{u1} α) => WithOne.{u2} β) a) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} (WithOne.{u1} α) (WithOne.{u2} β) (WithOne.mulOneClass.{u1} α _inst_1) (WithOne.mulOneClass.{u2} β _inst_2)) (WithOne.{u1} α) (WithOne.{u2} β) (MulOneClass.toMul.{u1} (WithOne.{u1} α) (WithOne.mulOneClass.{u1} α _inst_1)) (MulOneClass.toMul.{u2} (WithOne.{u2} β) (WithOne.mulOneClass.{u2} β _inst_2)) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} (WithOne.{u1} α) (WithOne.{u2} β) (WithOne.mulOneClass.{u1} α _inst_1) (WithOne.mulOneClass.{u2} β _inst_2)) (WithOne.{u1} α) (WithOne.{u2} β) (WithOne.mulOneClass.{u1} α _inst_1) (WithOne.mulOneClass.{u2} β _inst_2) (MonoidHom.monoidHomClass.{u1, u2} (WithOne.{u1} α) (WithOne.{u2} β) (WithOne.mulOneClass.{u1} α _inst_1) (WithOne.mulOneClass.{u2} β _inst_2)))) (WithOne.map.{u1, u2} α β _inst_1 _inst_2 f) x)) (FunLike.coe.{max (succ u2) (succ u3), succ u2, succ u3} (MonoidHom.{u2, u3} (WithOne.{u2} β) (WithOne.{u3} γ) (WithOne.mulOneClass.{u2} β _inst_2) (WithOne.mulOneClass.{u3} γ _inst_3)) (WithOne.{u2} β) (fun (_x : WithOne.{u2} β) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : WithOne.{u2} β) => WithOne.{u3} γ) _x) (MulHomClass.toFunLike.{max u2 u3, u2, u3} (MonoidHom.{u2, u3} (WithOne.{u2} β) (WithOne.{u3} γ) (WithOne.mulOneClass.{u2} β _inst_2) (WithOne.mulOneClass.{u3} γ _inst_3)) (WithOne.{u2} β) (WithOne.{u3} γ) (MulOneClass.toMul.{u2} (WithOne.{u2} β) (WithOne.mulOneClass.{u2} β _inst_2)) (MulOneClass.toMul.{u3} (WithOne.{u3} γ) (WithOne.mulOneClass.{u3} γ _inst_3)) (MonoidHomClass.toMulHomClass.{max u2 u3, u2, u3} (MonoidHom.{u2, u3} (WithOne.{u2} β) (WithOne.{u3} γ) (WithOne.mulOneClass.{u2} β _inst_2) (WithOne.mulOneClass.{u3} γ _inst_3)) (WithOne.{u2} β) (WithOne.{u3} γ) (WithOne.mulOneClass.{u2} β _inst_2) (WithOne.mulOneClass.{u3} γ _inst_3) (MonoidHom.monoidHomClass.{u2, u3} (WithOne.{u2} β) (WithOne.{u3} γ) (WithOne.mulOneClass.{u2} β _inst_2) (WithOne.mulOneClass.{u3} γ _inst_3)))) (WithOne.map.{u2, u3} β γ _inst_2 _inst_3 g) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} (WithOne.{u1} α) (WithOne.{u2} β) (WithOne.mulOneClass.{u1} α _inst_1) (WithOne.mulOneClass.{u2} β _inst_2)) (WithOne.{u1} α) (fun (_x : WithOne.{u1} α) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : WithOne.{u1} α) => WithOne.{u2} β) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} (WithOne.{u1} α) (WithOne.{u2} β) (WithOne.mulOneClass.{u1} α _inst_1) (WithOne.mulOneClass.{u2} β _inst_2)) (WithOne.{u1} α) (WithOne.{u2} β) (MulOneClass.toMul.{u1} (WithOne.{u1} α) (WithOne.mulOneClass.{u1} α _inst_1)) (MulOneClass.toMul.{u2} (WithOne.{u2} β) (WithOne.mulOneClass.{u2} β _inst_2)) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} (WithOne.{u1} α) (WithOne.{u2} β) (WithOne.mulOneClass.{u1} α _inst_1) (WithOne.mulOneClass.{u2} β _inst_2)) (WithOne.{u1} α) (WithOne.{u2} β) (WithOne.mulOneClass.{u1} α _inst_1) (WithOne.mulOneClass.{u2} β _inst_2) (MonoidHom.monoidHomClass.{u1, u2} (WithOne.{u1} α) (WithOne.{u2} β) (WithOne.mulOneClass.{u1} α _inst_1) (WithOne.mulOneClass.{u2} β _inst_2)))) (WithOne.map.{u1, u2} α β _inst_1 _inst_2 f) x)) (FunLike.coe.{max (succ u1) (succ u3), succ u1, succ u3} (MonoidHom.{u1, u3} (WithOne.{u1} α) (WithOne.{u3} γ) (WithOne.mulOneClass.{u1} α _inst_1) (WithOne.mulOneClass.{u3} γ _inst_3)) (WithOne.{u1} α) (fun (_x : WithOne.{u1} α) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : WithOne.{u1} α) => WithOne.{u3} γ) _x) (MulHomClass.toFunLike.{max u1 u3, u1, u3} (MonoidHom.{u1, u3} (WithOne.{u1} α) (WithOne.{u3} γ) (WithOne.mulOneClass.{u1} α _inst_1) (WithOne.mulOneClass.{u3} γ _inst_3)) (WithOne.{u1} α) (WithOne.{u3} γ) (MulOneClass.toMul.{u1} (WithOne.{u1} α) (WithOne.mulOneClass.{u1} α _inst_1)) (MulOneClass.toMul.{u3} (WithOne.{u3} γ) (WithOne.mulOneClass.{u3} γ _inst_3)) (MonoidHomClass.toMulHomClass.{max u1 u3, u1, u3} (MonoidHom.{u1, u3} (WithOne.{u1} α) (WithOne.{u3} γ) (WithOne.mulOneClass.{u1} α _inst_1) (WithOne.mulOneClass.{u3} γ _inst_3)) (WithOne.{u1} α) (WithOne.{u3} γ) (WithOne.mulOneClass.{u1} α _inst_1) (WithOne.mulOneClass.{u3} γ _inst_3) (MonoidHom.monoidHomClass.{u1, u3} (WithOne.{u1} α) (WithOne.{u3} γ) (WithOne.mulOneClass.{u1} α _inst_1) (WithOne.mulOneClass.{u3} γ _inst_3)))) (WithOne.map.{u1, u3} α γ _inst_1 _inst_3 (MulHom.comp.{u1, u2, u3} α β γ _inst_1 _inst_2 _inst_3 g f)) x)
 Case conversion may be inaccurate. Consider using '#align with_one.map_map WithOne.map_mapₓ'. -/
 @[to_additive]
 theorem map_map (f : α →ₙ* β) (g : β →ₙ* γ) (x) : map g (map f x) = map (g.comp f) x := by
Diff
@@ -91,7 +91,7 @@ variable (f : α →ₙ* β)
 lean 3 declaration is
   forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : Mul.{u1} α] [_inst_2 : MulOneClass.{u2} β] (f : MulHom.{u1, u2} α β _inst_1 (MulOneClass.toHasMul.{u2} β _inst_2)) (x : α), Eq.{succ u2} β (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} (WithOne.{u1} α) β (WithOne.mulOneClass.{u1} α _inst_1) _inst_2) (fun (_x : MonoidHom.{u1, u2} (WithOne.{u1} α) β (WithOne.mulOneClass.{u1} α _inst_1) _inst_2) => (WithOne.{u1} α) -> β) (MonoidHom.hasCoeToFun.{u1, u2} (WithOne.{u1} α) β (WithOne.mulOneClass.{u1} α _inst_1) _inst_2) (coeFn.{max 1 (succ u2) (succ u1), max (succ u2) (succ u1)} (Equiv.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (MulHom.{u1, u2} α β _inst_1 (MulOneClass.toHasMul.{u2} β _inst_2)) (MonoidHom.{u1, u2} (WithOne.{u1} α) β (WithOne.mulOneClass.{u1} α _inst_1) _inst_2)) (fun (_x : Equiv.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (MulHom.{u1, u2} α β _inst_1 (MulOneClass.toHasMul.{u2} β _inst_2)) (MonoidHom.{u1, u2} (WithOne.{u1} α) β (WithOne.mulOneClass.{u1} α _inst_1) _inst_2)) => (MulHom.{u1, u2} α β _inst_1 (MulOneClass.toHasMul.{u2} β _inst_2)) -> (MonoidHom.{u1, u2} (WithOne.{u1} α) β (WithOne.mulOneClass.{u1} α _inst_1) _inst_2)) (Equiv.hasCoeToFun.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (MulHom.{u1, u2} α β _inst_1 (MulOneClass.toHasMul.{u2} β _inst_2)) (MonoidHom.{u1, u2} (WithOne.{u1} α) β (WithOne.mulOneClass.{u1} α _inst_1) _inst_2)) (WithOne.lift.{u1, u2} α β _inst_1 _inst_2) f) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) α (WithOne.{u1} α) (HasLiftT.mk.{succ u1, succ u1} α (WithOne.{u1} α) (CoeTCₓ.coe.{succ u1, succ u1} α (WithOne.{u1} α) (WithOne.hasCoeT.{u1} α))) x)) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MulHom.{u1, u2} α β _inst_1 (MulOneClass.toHasMul.{u2} β _inst_2)) (fun (_x : MulHom.{u1, u2} α β _inst_1 (MulOneClass.toHasMul.{u2} β _inst_2)) => α -> β) (MulHom.hasCoeToFun.{u1, u2} α β _inst_1 (MulOneClass.toHasMul.{u2} β _inst_2)) f x)
 but is expected to have type
-  forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : Mul.{u1} α] [_inst_2 : MulOneClass.{u2} β] (f : MulHom.{u1, u2} α β _inst_1 (MulOneClass.toMul.{u2} β _inst_2)) (x : α), Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : WithOne.{u1} α) => β) (WithOne.coe.{u1} α x)) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : MulHom.{u1, u2} α β _inst_1 (MulOneClass.toMul.{u2} β _inst_2)) => MonoidHom.{u1, u2} (WithOne.{u1} α) β (WithOne.mulOneClass.{u1} α _inst_1) _inst_2) f) (WithOne.{u1} α) (fun (_x : WithOne.{u1} α) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : WithOne.{u1} α) => β) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : MulHom.{u1, u2} α β _inst_1 (MulOneClass.toMul.{u2} β _inst_2)) => MonoidHom.{u1, u2} (WithOne.{u1} α) β (WithOne.mulOneClass.{u1} α _inst_1) _inst_2) f) (WithOne.{u1} α) β (MulOneClass.toMul.{u1} (WithOne.{u1} α) (WithOne.mulOneClass.{u1} α _inst_1)) (MulOneClass.toMul.{u2} β _inst_2) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : MulHom.{u1, u2} α β _inst_1 (MulOneClass.toMul.{u2} β _inst_2)) => MonoidHom.{u1, u2} (WithOne.{u1} α) β (WithOne.mulOneClass.{u1} α _inst_1) _inst_2) f) (WithOne.{u1} α) β (WithOne.mulOneClass.{u1} α _inst_1) _inst_2 (MonoidHom.monoidHomClass.{u1, u2} (WithOne.{u1} α) β (WithOne.mulOneClass.{u1} α _inst_1) _inst_2))) (FunLike.coe.{max (succ u2) (succ u1), max (succ u2) (succ u1), max (succ u2) (succ u1)} (Equiv.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (MulHom.{u1, u2} α β _inst_1 (MulOneClass.toMul.{u2} β _inst_2)) (MonoidHom.{u1, u2} (WithOne.{u1} α) β (WithOne.mulOneClass.{u1} α _inst_1) _inst_2)) (MulHom.{u1, u2} α β _inst_1 (MulOneClass.toMul.{u2} β _inst_2)) (fun (_x : MulHom.{u1, u2} α β _inst_1 (MulOneClass.toMul.{u2} β _inst_2)) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : MulHom.{u1, u2} α β _inst_1 (MulOneClass.toMul.{u2} β _inst_2)) => MonoidHom.{u1, u2} (WithOne.{u1} α) β (WithOne.mulOneClass.{u1} α _inst_1) _inst_2) _x) (Equiv.instFunLikeEquiv.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (MulHom.{u1, u2} α β _inst_1 (MulOneClass.toMul.{u2} β _inst_2)) (MonoidHom.{u1, u2} (WithOne.{u1} α) β (WithOne.mulOneClass.{u1} α _inst_1) _inst_2)) (WithOne.lift.{u1, u2} α β _inst_1 _inst_2) f) (WithOne.coe.{u1} α x)) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MulHom.{u1, u2} α β _inst_1 (MulOneClass.toMul.{u2} β _inst_2)) α (fun (_x : α) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : α) => β) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MulHom.{u1, u2} α β _inst_1 (MulOneClass.toMul.{u2} β _inst_2)) α β _inst_1 (MulOneClass.toMul.{u2} β _inst_2) (MulHom.mulHomClass.{u1, u2} α β _inst_1 (MulOneClass.toMul.{u2} β _inst_2))) f x)
+  forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : Mul.{u1} α] [_inst_2 : MulOneClass.{u2} β] (f : MulHom.{u1, u2} α β _inst_1 (MulOneClass.toMul.{u2} β _inst_2)) (x : α), Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : WithOne.{u1} α) => β) (WithOne.coe.{u1} α x)) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : MulHom.{u1, u2} α β _inst_1 (MulOneClass.toMul.{u2} β _inst_2)) => MonoidHom.{u1, u2} (WithOne.{u1} α) β (WithOne.mulOneClass.{u1} α _inst_1) _inst_2) f) (WithOne.{u1} α) (fun (_x : WithOne.{u1} α) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : WithOne.{u1} α) => β) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : MulHom.{u1, u2} α β _inst_1 (MulOneClass.toMul.{u2} β _inst_2)) => MonoidHom.{u1, u2} (WithOne.{u1} α) β (WithOne.mulOneClass.{u1} α _inst_1) _inst_2) f) (WithOne.{u1} α) β (MulOneClass.toMul.{u1} (WithOne.{u1} α) (WithOne.mulOneClass.{u1} α _inst_1)) (MulOneClass.toMul.{u2} β _inst_2) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : MulHom.{u1, u2} α β _inst_1 (MulOneClass.toMul.{u2} β _inst_2)) => MonoidHom.{u1, u2} (WithOne.{u1} α) β (WithOne.mulOneClass.{u1} α _inst_1) _inst_2) f) (WithOne.{u1} α) β (WithOne.mulOneClass.{u1} α _inst_1) _inst_2 (MonoidHom.monoidHomClass.{u1, u2} (WithOne.{u1} α) β (WithOne.mulOneClass.{u1} α _inst_1) _inst_2))) (FunLike.coe.{max (succ u2) (succ u1), max (succ u2) (succ u1), max (succ u2) (succ u1)} (Equiv.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (MulHom.{u1, u2} α β _inst_1 (MulOneClass.toMul.{u2} β _inst_2)) (MonoidHom.{u1, u2} (WithOne.{u1} α) β (WithOne.mulOneClass.{u1} α _inst_1) _inst_2)) (MulHom.{u1, u2} α β _inst_1 (MulOneClass.toMul.{u2} β _inst_2)) (fun (_x : MulHom.{u1, u2} α β _inst_1 (MulOneClass.toMul.{u2} β _inst_2)) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : MulHom.{u1, u2} α β _inst_1 (MulOneClass.toMul.{u2} β _inst_2)) => MonoidHom.{u1, u2} (WithOne.{u1} α) β (WithOne.mulOneClass.{u1} α _inst_1) _inst_2) _x) (Equiv.instFunLikeEquiv.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (MulHom.{u1, u2} α β _inst_1 (MulOneClass.toMul.{u2} β _inst_2)) (MonoidHom.{u1, u2} (WithOne.{u1} α) β (WithOne.mulOneClass.{u1} α _inst_1) _inst_2)) (WithOne.lift.{u1, u2} α β _inst_1 _inst_2) f) (WithOne.coe.{u1} α x)) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MulHom.{u1, u2} α β _inst_1 (MulOneClass.toMul.{u2} β _inst_2)) α (fun (_x : α) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : α) => β) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MulHom.{u1, u2} α β _inst_1 (MulOneClass.toMul.{u2} β _inst_2)) α β _inst_1 (MulOneClass.toMul.{u2} β _inst_2) (MulHom.mulHomClass.{u1, u2} α β _inst_1 (MulOneClass.toMul.{u2} β _inst_2))) f x)
 Case conversion may be inaccurate. Consider using '#align with_one.lift_coe WithOne.lift_coeₓ'. -/
 @[simp, to_additive]
 theorem lift_coe (x : α) : lift f x = f x :=
@@ -103,7 +103,7 @@ theorem lift_coe (x : α) : lift f x = f x :=
 lean 3 declaration is
   forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : Mul.{u1} α] [_inst_2 : MulOneClass.{u2} β] (f : MulHom.{u1, u2} α β _inst_1 (MulOneClass.toHasMul.{u2} β _inst_2)), Eq.{succ u2} β (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} (WithOne.{u1} α) β (WithOne.mulOneClass.{u1} α _inst_1) _inst_2) (fun (_x : MonoidHom.{u1, u2} (WithOne.{u1} α) β (WithOne.mulOneClass.{u1} α _inst_1) _inst_2) => (WithOne.{u1} α) -> β) (MonoidHom.hasCoeToFun.{u1, u2} (WithOne.{u1} α) β (WithOne.mulOneClass.{u1} α _inst_1) _inst_2) (coeFn.{max 1 (succ u2) (succ u1), max (succ u2) (succ u1)} (Equiv.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (MulHom.{u1, u2} α β _inst_1 (MulOneClass.toHasMul.{u2} β _inst_2)) (MonoidHom.{u1, u2} (WithOne.{u1} α) β (WithOne.mulOneClass.{u1} α _inst_1) _inst_2)) (fun (_x : Equiv.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (MulHom.{u1, u2} α β _inst_1 (MulOneClass.toHasMul.{u2} β _inst_2)) (MonoidHom.{u1, u2} (WithOne.{u1} α) β (WithOne.mulOneClass.{u1} α _inst_1) _inst_2)) => (MulHom.{u1, u2} α β _inst_1 (MulOneClass.toHasMul.{u2} β _inst_2)) -> (MonoidHom.{u1, u2} (WithOne.{u1} α) β (WithOne.mulOneClass.{u1} α _inst_1) _inst_2)) (Equiv.hasCoeToFun.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (MulHom.{u1, u2} α β _inst_1 (MulOneClass.toHasMul.{u2} β _inst_2)) (MonoidHom.{u1, u2} (WithOne.{u1} α) β (WithOne.mulOneClass.{u1} α _inst_1) _inst_2)) (WithOne.lift.{u1, u2} α β _inst_1 _inst_2) f) (OfNat.ofNat.{u1} (WithOne.{u1} α) 1 (OfNat.mk.{u1} (WithOne.{u1} α) 1 (One.one.{u1} (WithOne.{u1} α) (WithOne.one.{u1} α))))) (OfNat.ofNat.{u2} β 1 (OfNat.mk.{u2} β 1 (One.one.{u2} β (MulOneClass.toHasOne.{u2} β _inst_2))))
 but is expected to have type
-  forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : Mul.{u1} α] [_inst_2 : MulOneClass.{u2} β] (f : MulHom.{u1, u2} α β _inst_1 (MulOneClass.toMul.{u2} β _inst_2)), Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : WithOne.{u1} α) => β) (OfNat.ofNat.{u1} (WithOne.{u1} α) 1 (One.toOfNat1.{u1} (WithOne.{u1} α) (WithOne.one.{u1} α)))) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : MulHom.{u1, u2} α β _inst_1 (MulOneClass.toMul.{u2} β _inst_2)) => MonoidHom.{u1, u2} (WithOne.{u1} α) β (WithOne.mulOneClass.{u1} α _inst_1) _inst_2) f) (WithOne.{u1} α) (fun (_x : WithOne.{u1} α) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : WithOne.{u1} α) => β) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : MulHom.{u1, u2} α β _inst_1 (MulOneClass.toMul.{u2} β _inst_2)) => MonoidHom.{u1, u2} (WithOne.{u1} α) β (WithOne.mulOneClass.{u1} α _inst_1) _inst_2) f) (WithOne.{u1} α) β (MulOneClass.toMul.{u1} (WithOne.{u1} α) (WithOne.mulOneClass.{u1} α _inst_1)) (MulOneClass.toMul.{u2} β _inst_2) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : MulHom.{u1, u2} α β _inst_1 (MulOneClass.toMul.{u2} β _inst_2)) => MonoidHom.{u1, u2} (WithOne.{u1} α) β (WithOne.mulOneClass.{u1} α _inst_1) _inst_2) f) (WithOne.{u1} α) β (WithOne.mulOneClass.{u1} α _inst_1) _inst_2 (MonoidHom.monoidHomClass.{u1, u2} (WithOne.{u1} α) β (WithOne.mulOneClass.{u1} α _inst_1) _inst_2))) (FunLike.coe.{max (succ u2) (succ u1), max (succ u2) (succ u1), max (succ u2) (succ u1)} (Equiv.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (MulHom.{u1, u2} α β _inst_1 (MulOneClass.toMul.{u2} β _inst_2)) (MonoidHom.{u1, u2} (WithOne.{u1} α) β (WithOne.mulOneClass.{u1} α _inst_1) _inst_2)) (MulHom.{u1, u2} α β _inst_1 (MulOneClass.toMul.{u2} β _inst_2)) (fun (_x : MulHom.{u1, u2} α β _inst_1 (MulOneClass.toMul.{u2} β _inst_2)) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : MulHom.{u1, u2} α β _inst_1 (MulOneClass.toMul.{u2} β _inst_2)) => MonoidHom.{u1, u2} (WithOne.{u1} α) β (WithOne.mulOneClass.{u1} α _inst_1) _inst_2) _x) (Equiv.instFunLikeEquiv.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (MulHom.{u1, u2} α β _inst_1 (MulOneClass.toMul.{u2} β _inst_2)) (MonoidHom.{u1, u2} (WithOne.{u1} α) β (WithOne.mulOneClass.{u1} α _inst_1) _inst_2)) (WithOne.lift.{u1, u2} α β _inst_1 _inst_2) f) (OfNat.ofNat.{u1} (WithOne.{u1} α) 1 (One.toOfNat1.{u1} (WithOne.{u1} α) (WithOne.one.{u1} α)))) (OfNat.ofNat.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : WithOne.{u1} α) => β) (OfNat.ofNat.{u1} (WithOne.{u1} α) 1 (One.toOfNat1.{u1} (WithOne.{u1} α) (WithOne.one.{u1} α)))) 1 (One.toOfNat1.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : WithOne.{u1} α) => β) (OfNat.ofNat.{u1} (WithOne.{u1} α) 1 (One.toOfNat1.{u1} (WithOne.{u1} α) (WithOne.one.{u1} α)))) (MulOneClass.toOne.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : WithOne.{u1} α) => β) (OfNat.ofNat.{u1} (WithOne.{u1} α) 1 (One.toOfNat1.{u1} (WithOne.{u1} α) (WithOne.one.{u1} α)))) _inst_2)))
+  forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : Mul.{u1} α] [_inst_2 : MulOneClass.{u2} β] (f : MulHom.{u1, u2} α β _inst_1 (MulOneClass.toMul.{u2} β _inst_2)), Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : WithOne.{u1} α) => β) (OfNat.ofNat.{u1} (WithOne.{u1} α) 1 (One.toOfNat1.{u1} (WithOne.{u1} α) (WithOne.one.{u1} α)))) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : MulHom.{u1, u2} α β _inst_1 (MulOneClass.toMul.{u2} β _inst_2)) => MonoidHom.{u1, u2} (WithOne.{u1} α) β (WithOne.mulOneClass.{u1} α _inst_1) _inst_2) f) (WithOne.{u1} α) (fun (_x : WithOne.{u1} α) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : WithOne.{u1} α) => β) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : MulHom.{u1, u2} α β _inst_1 (MulOneClass.toMul.{u2} β _inst_2)) => MonoidHom.{u1, u2} (WithOne.{u1} α) β (WithOne.mulOneClass.{u1} α _inst_1) _inst_2) f) (WithOne.{u1} α) β (MulOneClass.toMul.{u1} (WithOne.{u1} α) (WithOne.mulOneClass.{u1} α _inst_1)) (MulOneClass.toMul.{u2} β _inst_2) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : MulHom.{u1, u2} α β _inst_1 (MulOneClass.toMul.{u2} β _inst_2)) => MonoidHom.{u1, u2} (WithOne.{u1} α) β (WithOne.mulOneClass.{u1} α _inst_1) _inst_2) f) (WithOne.{u1} α) β (WithOne.mulOneClass.{u1} α _inst_1) _inst_2 (MonoidHom.monoidHomClass.{u1, u2} (WithOne.{u1} α) β (WithOne.mulOneClass.{u1} α _inst_1) _inst_2))) (FunLike.coe.{max (succ u2) (succ u1), max (succ u2) (succ u1), max (succ u2) (succ u1)} (Equiv.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (MulHom.{u1, u2} α β _inst_1 (MulOneClass.toMul.{u2} β _inst_2)) (MonoidHom.{u1, u2} (WithOne.{u1} α) β (WithOne.mulOneClass.{u1} α _inst_1) _inst_2)) (MulHom.{u1, u2} α β _inst_1 (MulOneClass.toMul.{u2} β _inst_2)) (fun (_x : MulHom.{u1, u2} α β _inst_1 (MulOneClass.toMul.{u2} β _inst_2)) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : MulHom.{u1, u2} α β _inst_1 (MulOneClass.toMul.{u2} β _inst_2)) => MonoidHom.{u1, u2} (WithOne.{u1} α) β (WithOne.mulOneClass.{u1} α _inst_1) _inst_2) _x) (Equiv.instFunLikeEquiv.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (MulHom.{u1, u2} α β _inst_1 (MulOneClass.toMul.{u2} β _inst_2)) (MonoidHom.{u1, u2} (WithOne.{u1} α) β (WithOne.mulOneClass.{u1} α _inst_1) _inst_2)) (WithOne.lift.{u1, u2} α β _inst_1 _inst_2) f) (OfNat.ofNat.{u1} (WithOne.{u1} α) 1 (One.toOfNat1.{u1} (WithOne.{u1} α) (WithOne.one.{u1} α)))) (OfNat.ofNat.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : WithOne.{u1} α) => β) (OfNat.ofNat.{u1} (WithOne.{u1} α) 1 (One.toOfNat1.{u1} (WithOne.{u1} α) (WithOne.one.{u1} α)))) 1 (One.toOfNat1.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : WithOne.{u1} α) => β) (OfNat.ofNat.{u1} (WithOne.{u1} α) 1 (One.toOfNat1.{u1} (WithOne.{u1} α) (WithOne.one.{u1} α)))) (MulOneClass.toOne.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : WithOne.{u1} α) => β) (OfNat.ofNat.{u1} (WithOne.{u1} α) 1 (One.toOfNat1.{u1} (WithOne.{u1} α) (WithOne.one.{u1} α)))) _inst_2)))
 Case conversion may be inaccurate. Consider using '#align with_one.lift_one WithOne.lift_oneₓ'. -/
 @[simp, to_additive]
 theorem lift_one : lift f 1 = 1 :=
@@ -140,7 +140,7 @@ def map (f : α →ₙ* β) : WithOne α →* WithOne β :=
 lean 3 declaration is
   forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : Mul.{u1} α] [_inst_2 : Mul.{u2} β] (f : MulHom.{u1, u2} α β _inst_1 _inst_2) (a : α), Eq.{succ u2} (WithOne.{u2} β) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} (WithOne.{u1} α) (WithOne.{u2} β) (WithOne.mulOneClass.{u1} α _inst_1) (WithOne.mulOneClass.{u2} β _inst_2)) (fun (_x : MonoidHom.{u1, u2} (WithOne.{u1} α) (WithOne.{u2} β) (WithOne.mulOneClass.{u1} α _inst_1) (WithOne.mulOneClass.{u2} β _inst_2)) => (WithOne.{u1} α) -> (WithOne.{u2} β)) (MonoidHom.hasCoeToFun.{u1, u2} (WithOne.{u1} α) (WithOne.{u2} β) (WithOne.mulOneClass.{u1} α _inst_1) (WithOne.mulOneClass.{u2} β _inst_2)) (WithOne.map.{u1, u2} α β _inst_1 _inst_2 f) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) α (WithOne.{u1} α) (HasLiftT.mk.{succ u1, succ u1} α (WithOne.{u1} α) (CoeTCₓ.coe.{succ u1, succ u1} α (WithOne.{u1} α) (WithOne.hasCoeT.{u1} α))) a)) ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) β (WithOne.{u2} β) (HasLiftT.mk.{succ u2, succ u2} β (WithOne.{u2} β) (CoeTCₓ.coe.{succ u2, succ u2} β (WithOne.{u2} β) (WithOne.hasCoeT.{u2} β))) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MulHom.{u1, u2} α β _inst_1 _inst_2) (fun (_x : MulHom.{u1, u2} α β _inst_1 _inst_2) => α -> β) (MulHom.hasCoeToFun.{u1, u2} α β _inst_1 _inst_2) f a))
 but is expected to have type
-  forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : Mul.{u1} α] [_inst_2 : Mul.{u2} β] (f : MulHom.{u1, u2} α β _inst_1 _inst_2) (a : α), Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : WithOne.{u1} α) => WithOne.{u2} β) (WithOne.coe.{u1} α a)) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} (WithOne.{u1} α) (WithOne.{u2} β) (WithOne.mulOneClass.{u1} α _inst_1) (WithOne.mulOneClass.{u2} β _inst_2)) (WithOne.{u1} α) (fun (_x : WithOne.{u1} α) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : WithOne.{u1} α) => WithOne.{u2} β) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} (WithOne.{u1} α) (WithOne.{u2} β) (WithOne.mulOneClass.{u1} α _inst_1) (WithOne.mulOneClass.{u2} β _inst_2)) (WithOne.{u1} α) (WithOne.{u2} β) (MulOneClass.toMul.{u1} (WithOne.{u1} α) (WithOne.mulOneClass.{u1} α _inst_1)) (MulOneClass.toMul.{u2} (WithOne.{u2} β) (WithOne.mulOneClass.{u2} β _inst_2)) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} (WithOne.{u1} α) (WithOne.{u2} β) (WithOne.mulOneClass.{u1} α _inst_1) (WithOne.mulOneClass.{u2} β _inst_2)) (WithOne.{u1} α) (WithOne.{u2} β) (WithOne.mulOneClass.{u1} α _inst_1) (WithOne.mulOneClass.{u2} β _inst_2) (MonoidHom.monoidHomClass.{u1, u2} (WithOne.{u1} α) (WithOne.{u2} β) (WithOne.mulOneClass.{u1} α _inst_1) (WithOne.mulOneClass.{u2} β _inst_2)))) (WithOne.map.{u1, u2} α β _inst_1 _inst_2 f) (WithOne.coe.{u1} α a)) (WithOne.coe.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : α) => β) a) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MulHom.{u1, u2} α β _inst_1 _inst_2) α (fun (_x : α) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : α) => β) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MulHom.{u1, u2} α β _inst_1 _inst_2) α β _inst_1 _inst_2 (MulHom.mulHomClass.{u1, u2} α β _inst_1 _inst_2)) f a))
+  forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : Mul.{u1} α] [_inst_2 : Mul.{u2} β] (f : MulHom.{u1, u2} α β _inst_1 _inst_2) (a : α), Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : WithOne.{u1} α) => WithOne.{u2} β) (WithOne.coe.{u1} α a)) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} (WithOne.{u1} α) (WithOne.{u2} β) (WithOne.mulOneClass.{u1} α _inst_1) (WithOne.mulOneClass.{u2} β _inst_2)) (WithOne.{u1} α) (fun (_x : WithOne.{u1} α) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : WithOne.{u1} α) => WithOne.{u2} β) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} (WithOne.{u1} α) (WithOne.{u2} β) (WithOne.mulOneClass.{u1} α _inst_1) (WithOne.mulOneClass.{u2} β _inst_2)) (WithOne.{u1} α) (WithOne.{u2} β) (MulOneClass.toMul.{u1} (WithOne.{u1} α) (WithOne.mulOneClass.{u1} α _inst_1)) (MulOneClass.toMul.{u2} (WithOne.{u2} β) (WithOne.mulOneClass.{u2} β _inst_2)) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} (WithOne.{u1} α) (WithOne.{u2} β) (WithOne.mulOneClass.{u1} α _inst_1) (WithOne.mulOneClass.{u2} β _inst_2)) (WithOne.{u1} α) (WithOne.{u2} β) (WithOne.mulOneClass.{u1} α _inst_1) (WithOne.mulOneClass.{u2} β _inst_2) (MonoidHom.monoidHomClass.{u1, u2} (WithOne.{u1} α) (WithOne.{u2} β) (WithOne.mulOneClass.{u1} α _inst_1) (WithOne.mulOneClass.{u2} β _inst_2)))) (WithOne.map.{u1, u2} α β _inst_1 _inst_2 f) (WithOne.coe.{u1} α a)) (WithOne.coe.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : α) => β) a) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MulHom.{u1, u2} α β _inst_1 _inst_2) α (fun (_x : α) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : α) => β) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MulHom.{u1, u2} α β _inst_1 _inst_2) α β _inst_1 _inst_2 (MulHom.mulHomClass.{u1, u2} α β _inst_1 _inst_2)) f a))
 Case conversion may be inaccurate. Consider using '#align with_one.map_coe WithOne.map_coeₓ'. -/
 @[simp, to_additive]
 theorem map_coe (f : α →ₙ* β) (a : α) : map f (a : WithOne α) = f a :=
@@ -162,7 +162,7 @@ theorem map_id : map (MulHom.id α) = MonoidHom.id (WithOne α) :=
 lean 3 declaration is
   forall {α : Type.{u1}} {β : Type.{u2}} {γ : Type.{u3}} [_inst_1 : Mul.{u1} α] [_inst_2 : Mul.{u2} β] [_inst_3 : Mul.{u3} γ] (f : MulHom.{u1, u2} α β _inst_1 _inst_2) (g : MulHom.{u2, u3} β γ _inst_2 _inst_3) (x : WithOne.{u1} α), Eq.{succ u3} (WithOne.{u3} γ) (coeFn.{max (succ u3) (succ u2), max (succ u2) (succ u3)} (MonoidHom.{u2, u3} (WithOne.{u2} β) (WithOne.{u3} γ) (WithOne.mulOneClass.{u2} β _inst_2) (WithOne.mulOneClass.{u3} γ _inst_3)) (fun (_x : MonoidHom.{u2, u3} (WithOne.{u2} β) (WithOne.{u3} γ) (WithOne.mulOneClass.{u2} β _inst_2) (WithOne.mulOneClass.{u3} γ _inst_3)) => (WithOne.{u2} β) -> (WithOne.{u3} γ)) (MonoidHom.hasCoeToFun.{u2, u3} (WithOne.{u2} β) (WithOne.{u3} γ) (WithOne.mulOneClass.{u2} β _inst_2) (WithOne.mulOneClass.{u3} γ _inst_3)) (WithOne.map.{u2, u3} β γ _inst_2 _inst_3 g) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} (WithOne.{u1} α) (WithOne.{u2} β) (WithOne.mulOneClass.{u1} α _inst_1) (WithOne.mulOneClass.{u2} β _inst_2)) (fun (_x : MonoidHom.{u1, u2} (WithOne.{u1} α) (WithOne.{u2} β) (WithOne.mulOneClass.{u1} α _inst_1) (WithOne.mulOneClass.{u2} β _inst_2)) => (WithOne.{u1} α) -> (WithOne.{u2} β)) (MonoidHom.hasCoeToFun.{u1, u2} (WithOne.{u1} α) (WithOne.{u2} β) (WithOne.mulOneClass.{u1} α _inst_1) (WithOne.mulOneClass.{u2} β _inst_2)) (WithOne.map.{u1, u2} α β _inst_1 _inst_2 f) x)) (coeFn.{max (succ u3) (succ u1), max (succ u1) (succ u3)} (MonoidHom.{u1, u3} (WithOne.{u1} α) (WithOne.{u3} γ) (WithOne.mulOneClass.{u1} α _inst_1) (WithOne.mulOneClass.{u3} γ _inst_3)) (fun (_x : MonoidHom.{u1, u3} (WithOne.{u1} α) (WithOne.{u3} γ) (WithOne.mulOneClass.{u1} α _inst_1) (WithOne.mulOneClass.{u3} γ _inst_3)) => (WithOne.{u1} α) -> (WithOne.{u3} γ)) (MonoidHom.hasCoeToFun.{u1, u3} (WithOne.{u1} α) (WithOne.{u3} γ) (WithOne.mulOneClass.{u1} α _inst_1) (WithOne.mulOneClass.{u3} γ _inst_3)) (WithOne.map.{u1, u3} α γ _inst_1 _inst_3 (MulHom.comp.{u1, u2, u3} α β γ _inst_1 _inst_2 _inst_3 g f)) x)
 but is expected to have type
-  forall {α : Type.{u1}} {β : Type.{u2}} {γ : Type.{u3}} [_inst_1 : Mul.{u1} α] [_inst_2 : Mul.{u2} β] [_inst_3 : Mul.{u3} γ] (f : MulHom.{u1, u2} α β _inst_1 _inst_2) (g : MulHom.{u2, u3} β γ _inst_2 _inst_3) (x : WithOne.{u1} α), Eq.{succ u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : WithOne.{u2} β) => WithOne.{u3} γ) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} (WithOne.{u1} α) (WithOne.{u2} β) (WithOne.mulOneClass.{u1} α _inst_1) (WithOne.mulOneClass.{u2} β _inst_2)) (WithOne.{u1} α) (fun (a : WithOne.{u1} α) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : WithOne.{u1} α) => WithOne.{u2} β) a) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} (WithOne.{u1} α) (WithOne.{u2} β) (WithOne.mulOneClass.{u1} α _inst_1) (WithOne.mulOneClass.{u2} β _inst_2)) (WithOne.{u1} α) (WithOne.{u2} β) (MulOneClass.toMul.{u1} (WithOne.{u1} α) (WithOne.mulOneClass.{u1} α _inst_1)) (MulOneClass.toMul.{u2} (WithOne.{u2} β) (WithOne.mulOneClass.{u2} β _inst_2)) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} (WithOne.{u1} α) (WithOne.{u2} β) (WithOne.mulOneClass.{u1} α _inst_1) (WithOne.mulOneClass.{u2} β _inst_2)) (WithOne.{u1} α) (WithOne.{u2} β) (WithOne.mulOneClass.{u1} α _inst_1) (WithOne.mulOneClass.{u2} β _inst_2) (MonoidHom.monoidHomClass.{u1, u2} (WithOne.{u1} α) (WithOne.{u2} β) (WithOne.mulOneClass.{u1} α _inst_1) (WithOne.mulOneClass.{u2} β _inst_2)))) (WithOne.map.{u1, u2} α β _inst_1 _inst_2 f) x)) (FunLike.coe.{max (succ u2) (succ u3), succ u2, succ u3} (MonoidHom.{u2, u3} (WithOne.{u2} β) (WithOne.{u3} γ) (WithOne.mulOneClass.{u2} β _inst_2) (WithOne.mulOneClass.{u3} γ _inst_3)) (WithOne.{u2} β) (fun (_x : WithOne.{u2} β) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : WithOne.{u2} β) => WithOne.{u3} γ) _x) (MulHomClass.toFunLike.{max u2 u3, u2, u3} (MonoidHom.{u2, u3} (WithOne.{u2} β) (WithOne.{u3} γ) (WithOne.mulOneClass.{u2} β _inst_2) (WithOne.mulOneClass.{u3} γ _inst_3)) (WithOne.{u2} β) (WithOne.{u3} γ) (MulOneClass.toMul.{u2} (WithOne.{u2} β) (WithOne.mulOneClass.{u2} β _inst_2)) (MulOneClass.toMul.{u3} (WithOne.{u3} γ) (WithOne.mulOneClass.{u3} γ _inst_3)) (MonoidHomClass.toMulHomClass.{max u2 u3, u2, u3} (MonoidHom.{u2, u3} (WithOne.{u2} β) (WithOne.{u3} γ) (WithOne.mulOneClass.{u2} β _inst_2) (WithOne.mulOneClass.{u3} γ _inst_3)) (WithOne.{u2} β) (WithOne.{u3} γ) (WithOne.mulOneClass.{u2} β _inst_2) (WithOne.mulOneClass.{u3} γ _inst_3) (MonoidHom.monoidHomClass.{u2, u3} (WithOne.{u2} β) (WithOne.{u3} γ) (WithOne.mulOneClass.{u2} β _inst_2) (WithOne.mulOneClass.{u3} γ _inst_3)))) (WithOne.map.{u2, u3} β γ _inst_2 _inst_3 g) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} (WithOne.{u1} α) (WithOne.{u2} β) (WithOne.mulOneClass.{u1} α _inst_1) (WithOne.mulOneClass.{u2} β _inst_2)) (WithOne.{u1} α) (fun (_x : WithOne.{u1} α) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : WithOne.{u1} α) => WithOne.{u2} β) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} (WithOne.{u1} α) (WithOne.{u2} β) (WithOne.mulOneClass.{u1} α _inst_1) (WithOne.mulOneClass.{u2} β _inst_2)) (WithOne.{u1} α) (WithOne.{u2} β) (MulOneClass.toMul.{u1} (WithOne.{u1} α) (WithOne.mulOneClass.{u1} α _inst_1)) (MulOneClass.toMul.{u2} (WithOne.{u2} β) (WithOne.mulOneClass.{u2} β _inst_2)) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} (WithOne.{u1} α) (WithOne.{u2} β) (WithOne.mulOneClass.{u1} α _inst_1) (WithOne.mulOneClass.{u2} β _inst_2)) (WithOne.{u1} α) (WithOne.{u2} β) (WithOne.mulOneClass.{u1} α _inst_1) (WithOne.mulOneClass.{u2} β _inst_2) (MonoidHom.monoidHomClass.{u1, u2} (WithOne.{u1} α) (WithOne.{u2} β) (WithOne.mulOneClass.{u1} α _inst_1) (WithOne.mulOneClass.{u2} β _inst_2)))) (WithOne.map.{u1, u2} α β _inst_1 _inst_2 f) x)) (FunLike.coe.{max (succ u1) (succ u3), succ u1, succ u3} (MonoidHom.{u1, u3} (WithOne.{u1} α) (WithOne.{u3} γ) (WithOne.mulOneClass.{u1} α _inst_1) (WithOne.mulOneClass.{u3} γ _inst_3)) (WithOne.{u1} α) (fun (_x : WithOne.{u1} α) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : WithOne.{u1} α) => WithOne.{u3} γ) _x) (MulHomClass.toFunLike.{max u1 u3, u1, u3} (MonoidHom.{u1, u3} (WithOne.{u1} α) (WithOne.{u3} γ) (WithOne.mulOneClass.{u1} α _inst_1) (WithOne.mulOneClass.{u3} γ _inst_3)) (WithOne.{u1} α) (WithOne.{u3} γ) (MulOneClass.toMul.{u1} (WithOne.{u1} α) (WithOne.mulOneClass.{u1} α _inst_1)) (MulOneClass.toMul.{u3} (WithOne.{u3} γ) (WithOne.mulOneClass.{u3} γ _inst_3)) (MonoidHomClass.toMulHomClass.{max u1 u3, u1, u3} (MonoidHom.{u1, u3} (WithOne.{u1} α) (WithOne.{u3} γ) (WithOne.mulOneClass.{u1} α _inst_1) (WithOne.mulOneClass.{u3} γ _inst_3)) (WithOne.{u1} α) (WithOne.{u3} γ) (WithOne.mulOneClass.{u1} α _inst_1) (WithOne.mulOneClass.{u3} γ _inst_3) (MonoidHom.monoidHomClass.{u1, u3} (WithOne.{u1} α) (WithOne.{u3} γ) (WithOne.mulOneClass.{u1} α _inst_1) (WithOne.mulOneClass.{u3} γ _inst_3)))) (WithOne.map.{u1, u3} α γ _inst_1 _inst_3 (MulHom.comp.{u1, u2, u3} α β γ _inst_1 _inst_2 _inst_3 g f)) x)
+  forall {α : Type.{u1}} {β : Type.{u2}} {γ : Type.{u3}} [_inst_1 : Mul.{u1} α] [_inst_2 : Mul.{u2} β] [_inst_3 : Mul.{u3} γ] (f : MulHom.{u1, u2} α β _inst_1 _inst_2) (g : MulHom.{u2, u3} β γ _inst_2 _inst_3) (x : WithOne.{u1} α), Eq.{succ u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : WithOne.{u2} β) => WithOne.{u3} γ) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} (WithOne.{u1} α) (WithOne.{u2} β) (WithOne.mulOneClass.{u1} α _inst_1) (WithOne.mulOneClass.{u2} β _inst_2)) (WithOne.{u1} α) (fun (a : WithOne.{u1} α) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : WithOne.{u1} α) => WithOne.{u2} β) a) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} (WithOne.{u1} α) (WithOne.{u2} β) (WithOne.mulOneClass.{u1} α _inst_1) (WithOne.mulOneClass.{u2} β _inst_2)) (WithOne.{u1} α) (WithOne.{u2} β) (MulOneClass.toMul.{u1} (WithOne.{u1} α) (WithOne.mulOneClass.{u1} α _inst_1)) (MulOneClass.toMul.{u2} (WithOne.{u2} β) (WithOne.mulOneClass.{u2} β _inst_2)) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} (WithOne.{u1} α) (WithOne.{u2} β) (WithOne.mulOneClass.{u1} α _inst_1) (WithOne.mulOneClass.{u2} β _inst_2)) (WithOne.{u1} α) (WithOne.{u2} β) (WithOne.mulOneClass.{u1} α _inst_1) (WithOne.mulOneClass.{u2} β _inst_2) (MonoidHom.monoidHomClass.{u1, u2} (WithOne.{u1} α) (WithOne.{u2} β) (WithOne.mulOneClass.{u1} α _inst_1) (WithOne.mulOneClass.{u2} β _inst_2)))) (WithOne.map.{u1, u2} α β _inst_1 _inst_2 f) x)) (FunLike.coe.{max (succ u2) (succ u3), succ u2, succ u3} (MonoidHom.{u2, u3} (WithOne.{u2} β) (WithOne.{u3} γ) (WithOne.mulOneClass.{u2} β _inst_2) (WithOne.mulOneClass.{u3} γ _inst_3)) (WithOne.{u2} β) (fun (_x : WithOne.{u2} β) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : WithOne.{u2} β) => WithOne.{u3} γ) _x) (MulHomClass.toFunLike.{max u2 u3, u2, u3} (MonoidHom.{u2, u3} (WithOne.{u2} β) (WithOne.{u3} γ) (WithOne.mulOneClass.{u2} β _inst_2) (WithOne.mulOneClass.{u3} γ _inst_3)) (WithOne.{u2} β) (WithOne.{u3} γ) (MulOneClass.toMul.{u2} (WithOne.{u2} β) (WithOne.mulOneClass.{u2} β _inst_2)) (MulOneClass.toMul.{u3} (WithOne.{u3} γ) (WithOne.mulOneClass.{u3} γ _inst_3)) (MonoidHomClass.toMulHomClass.{max u2 u3, u2, u3} (MonoidHom.{u2, u3} (WithOne.{u2} β) (WithOne.{u3} γ) (WithOne.mulOneClass.{u2} β _inst_2) (WithOne.mulOneClass.{u3} γ _inst_3)) (WithOne.{u2} β) (WithOne.{u3} γ) (WithOne.mulOneClass.{u2} β _inst_2) (WithOne.mulOneClass.{u3} γ _inst_3) (MonoidHom.monoidHomClass.{u2, u3} (WithOne.{u2} β) (WithOne.{u3} γ) (WithOne.mulOneClass.{u2} β _inst_2) (WithOne.mulOneClass.{u3} γ _inst_3)))) (WithOne.map.{u2, u3} β γ _inst_2 _inst_3 g) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} (WithOne.{u1} α) (WithOne.{u2} β) (WithOne.mulOneClass.{u1} α _inst_1) (WithOne.mulOneClass.{u2} β _inst_2)) (WithOne.{u1} α) (fun (_x : WithOne.{u1} α) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : WithOne.{u1} α) => WithOne.{u2} β) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} (WithOne.{u1} α) (WithOne.{u2} β) (WithOne.mulOneClass.{u1} α _inst_1) (WithOne.mulOneClass.{u2} β _inst_2)) (WithOne.{u1} α) (WithOne.{u2} β) (MulOneClass.toMul.{u1} (WithOne.{u1} α) (WithOne.mulOneClass.{u1} α _inst_1)) (MulOneClass.toMul.{u2} (WithOne.{u2} β) (WithOne.mulOneClass.{u2} β _inst_2)) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} (WithOne.{u1} α) (WithOne.{u2} β) (WithOne.mulOneClass.{u1} α _inst_1) (WithOne.mulOneClass.{u2} β _inst_2)) (WithOne.{u1} α) (WithOne.{u2} β) (WithOne.mulOneClass.{u1} α _inst_1) (WithOne.mulOneClass.{u2} β _inst_2) (MonoidHom.monoidHomClass.{u1, u2} (WithOne.{u1} α) (WithOne.{u2} β) (WithOne.mulOneClass.{u1} α _inst_1) (WithOne.mulOneClass.{u2} β _inst_2)))) (WithOne.map.{u1, u2} α β _inst_1 _inst_2 f) x)) (FunLike.coe.{max (succ u1) (succ u3), succ u1, succ u3} (MonoidHom.{u1, u3} (WithOne.{u1} α) (WithOne.{u3} γ) (WithOne.mulOneClass.{u1} α _inst_1) (WithOne.mulOneClass.{u3} γ _inst_3)) (WithOne.{u1} α) (fun (_x : WithOne.{u1} α) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : WithOne.{u1} α) => WithOne.{u3} γ) _x) (MulHomClass.toFunLike.{max u1 u3, u1, u3} (MonoidHom.{u1, u3} (WithOne.{u1} α) (WithOne.{u3} γ) (WithOne.mulOneClass.{u1} α _inst_1) (WithOne.mulOneClass.{u3} γ _inst_3)) (WithOne.{u1} α) (WithOne.{u3} γ) (MulOneClass.toMul.{u1} (WithOne.{u1} α) (WithOne.mulOneClass.{u1} α _inst_1)) (MulOneClass.toMul.{u3} (WithOne.{u3} γ) (WithOne.mulOneClass.{u3} γ _inst_3)) (MonoidHomClass.toMulHomClass.{max u1 u3, u1, u3} (MonoidHom.{u1, u3} (WithOne.{u1} α) (WithOne.{u3} γ) (WithOne.mulOneClass.{u1} α _inst_1) (WithOne.mulOneClass.{u3} γ _inst_3)) (WithOne.{u1} α) (WithOne.{u3} γ) (WithOne.mulOneClass.{u1} α _inst_1) (WithOne.mulOneClass.{u3} γ _inst_3) (MonoidHom.monoidHomClass.{u1, u3} (WithOne.{u1} α) (WithOne.{u3} γ) (WithOne.mulOneClass.{u1} α _inst_1) (WithOne.mulOneClass.{u3} γ _inst_3)))) (WithOne.map.{u1, u3} α γ _inst_1 _inst_3 (MulHom.comp.{u1, u2, u3} α β γ _inst_1 _inst_2 _inst_3 g f)) x)
 Case conversion may be inaccurate. Consider using '#align with_one.map_map WithOne.map_mapₓ'. -/
 @[to_additive]
 theorem map_map (f : α →ₙ* β) (g : β →ₙ* γ) (x) : map g (map f x) = map (g.comp f) x := by

Changes in mathlib4

mathlib3
mathlib4
chore: Move WithZero material depending on GroupWithZero (#12351)

Everything under Algebra.Group should be additivisable. Therefore I move the GroupWithZero instances for WithZero from Algebra.Group.WithOne.Defs and the whole of Algebra.Group.WithOne.Units to a new file Algebra.GroupWithZero.WithZero. I credit Mario for https://github.com/leanprover-community/mathlib/commit/ad92a9ba47f417916aab365d13db653fa8991a84 and Johan for https://github.com/leanprover-community/mathlib/pull/762.

Use the opportunity to slightly clean up the code:

  • Replace := by where in instance declarations
  • Add missing explicit arguments to coe lemmas
  • Add missing section ... end
Diff
@@ -5,7 +5,6 @@ Authors: Mario Carneiro, Johan Commelin
 -/
 import Mathlib.Algebra.Group.Equiv.Basic
 import Mathlib.Algebra.Group.WithOne.Defs
-import Mathlib.Data.Option.Basic
 
 #align_import algebra.group.with_one.basic from "leanprover-community/mathlib"@"4dc134b97a3de65ef2ed881f3513d56260971562"
 
@@ -21,6 +20,7 @@ that were not available in `Algebra/Group/WithOne/Defs`.
 * `WithOne.map`, `WithZero.map`
 -/
 
+assert_not_exists MonoidWithZero
 
 universe u v w
 
@@ -171,31 +171,3 @@ theorem _root_.MulEquiv.withOneCongr_trans (e₁ : α ≃* β) (e₂ : β ≃* 
 end Map
 
 end WithOne
-
-namespace WithZero
-
-instance involutiveInv [InvolutiveInv α] : InvolutiveInv (WithZero α) :=
-  { WithZero.inv with
-    inv_inv := fun a =>
-      (Option.map_map _ _ _).trans <| by simp_rw [inv_comp_inv, Option.map_id, id] }
-
-instance divisionMonoid [DivisionMonoid α] : DivisionMonoid (WithZero α) :=
-  { WithZero.divInvMonoid, WithZero.involutiveInv with
-    mul_inv_rev := fun a b =>
-      match a, b with
-      | none, none => rfl
-      | none, some b => rfl
-      | some a, none => rfl
-      | some a, some b => congr_arg some <| mul_inv_rev _ _,
-    inv_eq_of_mul := fun a b ↦
-      match a, b with
-      | none, none => fun _ ↦ rfl
-      | none, some b => fun _ ↦ by contradiction
-      | some a, none => fun _ ↦ by contradiction
-      | some a, some b => fun h ↦
-        congr_arg some <| inv_eq_of_mul_eq_one_right <| Option.some_injective _ h }
-
-instance divisionCommMonoid [DivisionCommMonoid α] : DivisionCommMonoid (WithZero α) :=
-  { WithZero.divisionMonoid, WithZero.commSemigroup with }
-
-end WithZero
chore: classify @[simp] removed porting notes (#11184)

Classifying by adding issue number #11119 to porting notes claiming anything semantically equivalent to:

  • "@[simp] removed [...]"
  • "@[simp] removed [...]"
  • "removed simp attribute"
Diff
@@ -82,7 +82,7 @@ theorem lift_coe (x : α) : lift f x = f x :=
 #align with_one.lift_coe WithOne.lift_coe
 #align with_zero.lift_coe WithZero.lift_coe
 
--- Porting note: removed `simp` attribute to appease `simpNF` linter.
+-- Porting note (#11119): removed `simp` attribute to appease `simpNF` linter.
 @[to_additive]
 theorem lift_one : lift f 1 = 1 :=
   rfl
style: homogenise porting notes (#11145)

Homogenises porting notes via capitalisation and addition of whitespace.

It makes the following changes:

  • converts "--porting note" into "-- Porting note";
  • converts "porting note" into "Porting note".
Diff
@@ -36,7 +36,7 @@ instance involutiveInv [InvolutiveInv α] : InvolutiveInv (WithOne α) :=
 
 section
 
--- porting note: the workaround described below doesn't seem to be a problem even with
+-- Porting note: the workaround described below doesn't seem to be a problem even with
 -- semireducible transparency
 -- workaround: we make `WithOne`/`WithZero` irreducible for this definition, otherwise `simps`
 -- will unfold it in the statement of the lemma it generates.
@@ -54,7 +54,7 @@ end
 
 section lift
 
--- porting note: these were never marked with `irreducible` when they were defined.
+-- Porting note: these were never marked with `irreducible` when they were defined.
 -- attribute [local semireducible] WithOne WithZero
 
 variable [Mul α] [MulOneClass β]
@@ -70,7 +70,7 @@ def lift : (α →ₙ* β) ≃ (WithOne α →* β) where
   invFun F := F.toMulHom.comp coeMulHom
   left_inv f := MulHom.ext fun x => rfl
   right_inv F := MonoidHom.ext fun x => WithOne.cases_on x F.map_one.symm (fun x => rfl)
--- porting note: the above proofs were broken because they were parenthesized wrong by mathport?
+-- Porting note: the above proofs were broken because they were parenthesized wrong by mathport?
 #align with_one.lift WithOne.lift
 #align with_zero.lift WithZero.lift
 
@@ -82,7 +82,7 @@ theorem lift_coe (x : α) : lift f x = f x :=
 #align with_one.lift_coe WithOne.lift_coe
 #align with_zero.lift_coe WithZero.lift_coe
 
--- porting note: removed `simp` attribute to appease `simpNF` linter.
+-- Porting note: removed `simp` attribute to appease `simpNF` linter.
 @[to_additive]
 theorem lift_one : lift f 1 = 1 :=
   rfl
@@ -135,7 +135,7 @@ theorem map_comp (f : α →ₙ* β) (g : β →ₙ* γ) : map (g.comp f) = (map
 #align with_one.map_comp WithOne.map_comp
 #align with_zero.map_comp WithZero.map_comp
 
--- porting note: this used to have `@[simps apply]` but it was generating lemmas which
+-- Porting note: this used to have `@[simps apply]` but it was generating lemmas which
 -- weren't in simp normal form.
 /-- A version of `Equiv.optionCongr` for `WithOne`. -/
 @[to_additive (attr := simps apply) "A version of `Equiv.optionCongr` for `WithZero`."]
@@ -149,7 +149,7 @@ def _root_.MulEquiv.withOneCongr (e : α ≃* β) : WithOne α ≃* WithOne β :
 #align mul_equiv.with_one_congr_apply MulEquiv.withOneCongr_apply
 #align add_equiv.with_zero_congr_apply AddEquiv.withZeroCongr_apply
 
--- porting note: for this declaration and the two below I added the `to_additive` attribute because
+-- Porting note: for this declaration and the two below I added the `to_additive` attribute because
 -- it seemed to be missing from mathlib3, hence the lack of additive `#align`s.
 @[to_additive (attr := simp)]
 theorem _root_.MulEquiv.withOneCongr_refl : (MulEquiv.refl α).withOneCongr = MulEquiv.refl _ :=
chore: Make sure WithOne doesn't import rings (#10275)

Reorder the WithOne material.

  • Algebra.Group.WithOne.Defs was hiding a Ring import! I credit Johan and Mario for https://github.com/leanprover-community/mathlib/pull/2707.
  • WithBot is not needed to define WithOne.unone. It's simpler to redefine it by hand. In the future, we might want to have an Option version (but not sure how much that's worth, since it would basically be Option.get again).
Diff
@@ -5,6 +5,7 @@ Authors: Mario Carneiro, Johan Commelin
 -/
 import Mathlib.Algebra.Group.Equiv.Basic
 import Mathlib.Algebra.Group.WithOne.Defs
+import Mathlib.Data.Option.Basic
 
 #align_import algebra.group.with_one.basic from "leanprover-community/mathlib"@"4dc134b97a3de65ef2ed881f3513d56260971562"
 
doc: fix typos (#10100)

Fix minor typos in the following files:

  • Mathlib/GroupTheory/GroupAction/Opposite.lean
  • Mathlib/Init/Control/Lawful.lean
  • Mathlib/ModelTheory/ElementarySubstructures.lean
  • Mathlib/Algebra/Group/Defs.lean
  • Mathlib/Algebra/Group/WithOne/Basic.lean
  • Mathlib/Data/Int/Cast/Defs.lean
  • Mathlib/LinearAlgebra/Dimension/Basic.lean
  • Mathlib/NumberTheory/NumberField/CanonicalEmbedding.lean
  • Mathlib/Algebra/Star/StarAlgHom.lean
  • Mathlib/AlgebraicTopology/SimplexCategory.lean
  • Mathlib/CategoryTheory/Abelian/Homology.lean
  • Mathlib/CategoryTheory/Sites/Grothendieck.lean
  • Mathlib/RingTheory/IsTensorProduct.lean
  • Mathlib/AlgebraicTopology/DoldKan/Homotopies.lean
  • Mathlib/AlgebraicTopology/ExtraDegeneracy.lean
  • Mathlib/AlgebraicTopology/Nerve.lean
  • Mathlib/AlgebraicTopology/SplitSimplicialObject.lean
  • Mathlib/Analysis/ConstantSpeed.lean
  • Mathlib/Analysis/Convolution.lean
Diff
@@ -58,8 +58,8 @@ section lift
 
 variable [Mul α] [MulOneClass β]
 
-/-- Lift a semigroup homomorphism `f` to a bundled monoid homorphism. -/
-@[to_additive "Lift an add semigroup homomorphism `f` to a bundled add monoid homorphism."]
+/-- Lift a semigroup homomorphism `f` to a bundled monoid homomorphism. -/
+@[to_additive "Lift an add semigroup homomorphism `f` to a bundled add monoid homomorphism."]
 def lift : (α →ₙ* β) ≃ (WithOne α →* β) where
   toFun f :=
     { toFun := fun x => Option.casesOn x 1 f, map_one' := rfl,
refactor(Algebra/Hom): transpose Hom and file name (#8095)

I believe the file defining a type of morphisms belongs alongside the file defining the structure this morphism works on. So I would like to reorganize the files in the Mathlib.Algebra.Hom folder so that e.g. Mathlib.Algebra.Hom.Ring becomes Mathlib.Algebra.Ring.Hom and Mathlib.Algebra.Hom.NonUnitalAlg becomes Mathlib.Algebra.Algebra.NonUnitalHom.

While fixing the imports I went ahead and sorted them for good luck.

The full list of changes is: renamed: Mathlib/Algebra/Hom/NonUnitalAlg.lean -> Mathlib/Algebra/Algebra/NonUnitalHom.lean renamed: Mathlib/Algebra/Hom/Aut.lean -> Mathlib/Algebra/Group/Aut.lean renamed: Mathlib/Algebra/Hom/Commute.lean -> Mathlib/Algebra/Group/Commute/Hom.lean renamed: Mathlib/Algebra/Hom/Embedding.lean -> Mathlib/Algebra/Group/Embedding.lean renamed: Mathlib/Algebra/Hom/Equiv/Basic.lean -> Mathlib/Algebra/Group/Equiv/Basic.lean renamed: Mathlib/Algebra/Hom/Equiv/TypeTags.lean -> Mathlib/Algebra/Group/Equiv/TypeTags.lean renamed: Mathlib/Algebra/Hom/Equiv/Units/Basic.lean -> Mathlib/Algebra/Group/Units/Equiv.lean renamed: Mathlib/Algebra/Hom/Equiv/Units/GroupWithZero.lean -> Mathlib/Algebra/GroupWithZero/Units/Equiv.lean renamed: Mathlib/Algebra/Hom/Freiman.lean -> Mathlib/Algebra/Group/Freiman.lean renamed: Mathlib/Algebra/Hom/Group/Basic.lean -> Mathlib/Algebra/Group/Hom/Basic.lean renamed: Mathlib/Algebra/Hom/Group/Defs.lean -> Mathlib/Algebra/Group/Hom/Defs.lean renamed: Mathlib/Algebra/Hom/GroupAction.lean -> Mathlib/GroupTheory/GroupAction/Hom.lean renamed: Mathlib/Algebra/Hom/GroupInstances.lean -> Mathlib/Algebra/Group/Hom/Instances.lean renamed: Mathlib/Algebra/Hom/Iterate.lean -> Mathlib/Algebra/GroupPower/IterateHom.lean renamed: Mathlib/Algebra/Hom/Centroid.lean -> Mathlib/Algebra/Ring/CentroidHom.lean renamed: Mathlib/Algebra/Hom/Ring/Basic.lean -> Mathlib/Algebra/Ring/Hom/Basic.lean renamed: Mathlib/Algebra/Hom/Ring/Defs.lean -> Mathlib/Algebra/Ring/Hom/Defs.lean renamed: Mathlib/Algebra/Hom/Units.lean -> Mathlib/Algebra/Group/Units/Hom.lean

Zulip thread: https://leanprover.zulipchat.com/#narrow/stream/287929-mathlib4/topic/Reorganizing.20.60Mathlib.2EAlgebra.2EHom.60

Diff
@@ -3,8 +3,8 @@ Copyright (c) 2018 Mario Carneiro. All rights reserved.
 Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Mario Carneiro, Johan Commelin
 -/
+import Mathlib.Algebra.Group.Equiv.Basic
 import Mathlib.Algebra.Group.WithOne.Defs
-import Mathlib.Algebra.Hom.Equiv.Basic
 
 #align_import algebra.group.with_one.basic from "leanprover-community/mathlib"@"4dc134b97a3de65ef2ed881f3513d56260971562"
 
chore: ensure Ring/Defs doesn't depend on Group/Basic (#6956)

In the basic algebraic hierarchy, the Defs files should ideally only depend on earlier Defs files, importing as little theory as possible.

This PR makes some rearrangements so Ring.Defs can depend on Group.Defs rather than requiring Group.Basic.

Co-authored-by: Scott Morrison <scott.morrison@gmail.com>

Diff
@@ -27,6 +27,12 @@ variable {α : Type u} {β : Type v} {γ : Type w}
 
 namespace WithOne
 
+@[to_additive]
+instance involutiveInv [InvolutiveInv α] : InvolutiveInv (WithOne α) :=
+  { WithOne.inv with
+    inv_inv := fun a =>
+      (Option.map_map _ _ _).trans <| by simp_rw [inv_comp_inv, Option.map_id, id] }
+
 section
 
 -- porting note: the workaround described below doesn't seem to be a problem even with
@@ -164,3 +170,31 @@ theorem _root_.MulEquiv.withOneCongr_trans (e₁ : α ≃* β) (e₂ : β ≃* 
 end Map
 
 end WithOne
+
+namespace WithZero
+
+instance involutiveInv [InvolutiveInv α] : InvolutiveInv (WithZero α) :=
+  { WithZero.inv with
+    inv_inv := fun a =>
+      (Option.map_map _ _ _).trans <| by simp_rw [inv_comp_inv, Option.map_id, id] }
+
+instance divisionMonoid [DivisionMonoid α] : DivisionMonoid (WithZero α) :=
+  { WithZero.divInvMonoid, WithZero.involutiveInv with
+    mul_inv_rev := fun a b =>
+      match a, b with
+      | none, none => rfl
+      | none, some b => rfl
+      | some a, none => rfl
+      | some a, some b => congr_arg some <| mul_inv_rev _ _,
+    inv_eq_of_mul := fun a b ↦
+      match a, b with
+      | none, none => fun _ ↦ rfl
+      | none, some b => fun _ ↦ by contradiction
+      | some a, none => fun _ ↦ by contradiction
+      | some a, some b => fun h ↦
+        congr_arg some <| inv_eq_of_mul_eq_one_right <| Option.some_injective _ h }
+
+instance divisionCommMonoid [DivisionCommMonoid α] : DivisionCommMonoid (WithZero α) :=
+  { WithZero.divisionMonoid, WithZero.commSemigroup with }
+
+end WithZero
chore: script to replace headers with #align_import statements (#5979)

Open in Gitpod

Co-authored-by: Eric Wieser <wieser.eric@gmail.com> Co-authored-by: Scott Morrison <scott.morrison@gmail.com>

Diff
@@ -2,15 +2,12 @@
 Copyright (c) 2018 Mario Carneiro. All rights reserved.
 Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Mario Carneiro, Johan Commelin
-
-! This file was ported from Lean 3 source module algebra.group.with_one.basic
-! leanprover-community/mathlib commit 4dc134b97a3de65ef2ed881f3513d56260971562
-! Please do not edit these lines, except to modify the commit id
-! if you have ported upstream changes.
 -/
 import Mathlib.Algebra.Group.WithOne.Defs
 import Mathlib.Algebra.Hom.Equiv.Basic
 
+#align_import algebra.group.with_one.basic from "leanprover-community/mathlib"@"4dc134b97a3de65ef2ed881f3513d56260971562"
+
 /-!
 # More operations on `WithOne` and `WithZero`
 
fix: add back lemmas deleted during porting (#3035)

These lemmas are not tautologies, despite the assumption that they were. We know this because otherwise CI would fail.

After adding these back, a few statements downstream need to change from statements about toEquiv to statements about EquivLike.toEquiv.

Diff
@@ -134,7 +134,7 @@ theorem map_comp (f : α →ₙ* β) (g : β →ₙ* γ) : map (g.comp f) = (map
 -- porting note: this used to have `@[simps apply]` but it was generating lemmas which
 -- weren't in simp normal form.
 /-- A version of `Equiv.optionCongr` for `WithOne`. -/
-@[to_additive "A version of `Equiv.optionCongr` for `WithZero`."]
+@[to_additive (attr := simps apply) "A version of `Equiv.optionCongr` for `WithZero`."]
 def _root_.MulEquiv.withOneCongr (e : α ≃* β) : WithOne α ≃* WithOne β :=
   { map e.toMulHom with
     toFun := map e.toMulHom, invFun := map e.symm.toMulHom,
@@ -142,18 +142,7 @@ def _root_.MulEquiv.withOneCongr (e : α ≃* β) : WithOne α ≃* WithOne β :
     right_inv := (by induction · using WithOne.cases_on <;> simp) }
 #align mul_equiv.with_one_congr MulEquiv.withOneCongr
 #align add_equiv.with_zero_congr AddEquiv.withZeroCongr
-
--- porting note: an approximation to this was being generated by `@[simps apply]` but it
--- mentioned Equiv.toFun so was not in simp normal form. This might be a bug in `@[simps].
-@[simp] theorem _root_.MulEquiv.withOneCongr_apply {α β : Type _} [Mul α] [Mul β] (e : α ≃* β)
-  (a : WithOne α) : (MulEquiv.withOneCongr e).toEquiv a = (map (MulEquiv.toMulHom e)) a := rfl
 #align mul_equiv.with_one_congr_apply MulEquiv.withOneCongr_apply
-
--- porting note: `@[to_additive, simps apply]` was not generating this lemma at the
--- time of writing this note.
-@[simp] theorem _root_.AddEquiv.withZeroCongr_apply {α β : Type _} [Add α] [Add β] (e : α ≃+ β)
-  (a : WithZero α) :
-    (AddEquiv.withZeroCongr e).toEquiv a = (WithZero.map (AddEquiv.toAddHom e)) a := rfl
 #align add_equiv.with_zero_congr_apply AddEquiv.withZeroCongr_apply
 
 -- porting note: for this declaration and the two below I added the `to_additive` attribute because
fix: fix simp lemmas about coercion to function (#2270)
Diff
@@ -108,7 +108,7 @@ def map (f : α →ₙ* β) : WithOne α →* WithOne β :=
 
 @[to_additive (attr := simp)]
 theorem map_coe (f : α →ₙ* β) (a : α) : map f (a : WithOne α) = f a :=
-  lift_coe _ _
+  rfl
 #align with_one.map_coe WithOne.map_coe
 #align with_zero.map_coe WithZero.map_coe
 
@@ -138,10 +138,8 @@ theorem map_comp (f : α →ₙ* β) (g : β →ₙ* γ) : map (g.comp f) = (map
 def _root_.MulEquiv.withOneCongr (e : α ≃* β) : WithOne α ≃* WithOne β :=
   { map e.toMulHom with
     toFun := map e.toMulHom, invFun := map e.symm.toMulHom,
-    left_inv := fun x => (map_map _ _ _).trans <| by
-      induction x using WithOne.cases_on <;> simp
-    right_inv := fun x => (map_map _ _ _).trans <| by
-      induction x using WithOne.cases_on <;> simp }
+    left_inv := (by induction · using WithOne.cases_on <;> simp)
+    right_inv := (by induction · using WithOne.cases_on <;> simp) }
 #align mul_equiv.with_one_congr MulEquiv.withOneCongr
 #align add_equiv.with_zero_congr AddEquiv.withZeroCongr
 
fix: use to_additive (attr := _) here and there (#2073)
Diff
@@ -37,13 +37,14 @@ section
 -- workaround: we make `WithOne`/`WithZero` irreducible for this definition, otherwise `simps`
 -- will unfold it in the statement of the lemma it generates.
 /-- `WithOne.coe` as a bundled morphism -/
-@[to_additive "`WithZero.coe` as a bundled morphism", simps apply]
+@[to_additive (attr := simps apply) "`WithZero.coe` as a bundled morphism"]
 def coeMulHom [Mul α] : α →ₙ* WithOne α where
   toFun := coe
   map_mul' _ _ := rfl
 #align with_one.coe_mul_hom WithOne.coeMulHom
 #align with_zero.coe_add_hom WithZero.coeAddHom
 #align with_one.coe_mul_hom_apply WithOne.coeMulHom_apply
+#align with_zero.coe_add_hom_apply WithZero.coeAddHom_apply
 
 end
 
chore: add missing #align statements (#1902)

This PR is the result of a slight variant on the following "algorithm"

  • take all mathlib 3 names, remove _ and make all uppercase letters into lowercase
  • take all mathlib 4 names, remove _ and make all uppercase letters into lowercase
  • look for matches, and create pairs (original_lean3_name, OriginalLean4Name)
  • for pairs that do not have an align statement:
    • use Lean 4 to lookup the file + position of the Lean 4 name
    • add an #align statement just before the next empty line
  • manually fix some tiny mistakes (e.g., empty lines in proofs might cause the #align statement to have been inserted too early)
Diff
@@ -43,6 +43,7 @@ def coeMulHom [Mul α] : α →ₙ* WithOne α where
   map_mul' _ _ := rfl
 #align with_one.coe_mul_hom WithOne.coeMulHom
 #align with_zero.coe_add_hom WithZero.coeAddHom
+#align with_one.coe_mul_hom_apply WithOne.coeMulHom_apply
 
 end
 
feat: improve the way to_additive deals with attributes (#1314)
  • The new syntax for any attributes that need to be copied by to_additive is @[to_additive (attrs := simp, ext, simps)]
  • Adds the auxiliary declarations generated by the simp and simps attributes to the to_additive-dictionary.
  • Future issue: Does not yet translate auxiliary declarations for other attributes (including custom simp-attributes). In particular it's possible that norm_cast might generate some auxiliary declarations.
  • Fixes #950
  • Fixes #953
  • Fixes #1149
  • This moves the interaction between to_additive and simps from the Simps file to the toAdditive file for uniformity.
  • Make the same changes to @[reassoc]

Co-authored-by: Johan Commelin <johan@commelin.net> Co-authored-by: Scott Morrison <scott.morrison@gmail.com>

Diff
@@ -70,7 +70,7 @@ def lift : (α →ₙ* β) ≃ (WithOne α →* β) where
 
 variable (f : α →ₙ* β)
 
-@[simp, to_additive]
+@[to_additive (attr := simp)]
 theorem lift_coe (x : α) : lift f x = f x :=
   rfl
 #align with_one.lift_coe WithOne.lift_coe
@@ -104,13 +104,13 @@ def map (f : α →ₙ* β) : WithOne α →* WithOne β :=
 #align with_one.map WithOne.map
 #align with_zero.map WithZero.map
 
-@[simp, to_additive]
+@[to_additive (attr := simp)]
 theorem map_coe (f : α →ₙ* β) (a : α) : map f (a : WithOne α) = f a :=
   lift_coe _ _
 #align with_one.map_coe WithOne.map_coe
 #align with_zero.map_coe WithZero.map_coe
 
-@[simp, to_additive]
+@[to_additive (attr := simp)]
 theorem map_id : map (MulHom.id α) = MonoidHom.id (WithOne α) := by
   ext x
   induction x using WithOne.cases_on <;> rfl
@@ -123,7 +123,7 @@ theorem map_map (f : α →ₙ* β) (g : β →ₙ* γ) (x) : map g (map f x) =
 #align with_one.map_map WithOne.map_map
 #align with_zero.map_map WithZero.map_map
 
-@[simp, to_additive]
+@[to_additive (attr := simp)]
 theorem map_comp (f : α →ₙ* β) (g : β →ₙ* γ) : map (g.comp f) = (map g).comp (map f) :=
   MonoidHom.ext fun x => (map_map f g x).symm
 #align with_one.map_comp WithOne.map_comp
@@ -158,18 +158,18 @@ def _root_.MulEquiv.withOneCongr (e : α ≃* β) : WithOne α ≃* WithOne β :
 
 -- porting note: for this declaration and the two below I added the `to_additive` attribute because
 -- it seemed to be missing from mathlib3, hence the lack of additive `#align`s.
-@[simp, to_additive]
+@[to_additive (attr := simp)]
 theorem _root_.MulEquiv.withOneCongr_refl : (MulEquiv.refl α).withOneCongr = MulEquiv.refl _ :=
   MulEquiv.toMonoidHom_injective map_id
 #align mul_equiv.with_one_congr_refl MulEquiv.withOneCongr_refl
 
-@[simp, to_additive]
+@[to_additive (attr := simp)]
 theorem _root_.MulEquiv.withOneCongr_symm (e : α ≃* β) :
     e.withOneCongr.symm = e.symm.withOneCongr :=
   rfl
 #align mul_equiv.with_one_congr_symm MulEquiv.withOneCongr_symm
 
-@[simp, to_additive]
+@[to_additive (attr := simp)]
 theorem _root_.MulEquiv.withOneCongr_trans (e₁ : α ≃* β) (e₂ : β ≃* γ) :
     e₁.withOneCongr.trans e₂.withOneCongr = (e₁.trans e₂).withOneCongr :=
   MulEquiv.toMonoidHom_injective (map_comp _ _).symm
chore: fix casing per naming scheme (#1183)

Fix a lot of wrong casing mostly in the docstrings but also sometimes in def/theorem names. E.g. fin 2 --> Fin 2, add_monoid_hom --> AddMonoidHom

Remove \n from to_additive docstrings that were inserted by mathport.

Move files and directories with Gcd and Smul to GCD and SMul

Diff
@@ -34,7 +34,7 @@ section
 
 -- porting note: the workaround described below doesn't seem to be a problem even with
 -- semireducible transparency
--- workaround: we make `with_one`/`with_zero` irreducible for this definition, otherwise `simps`
+-- workaround: we make `WithOne`/`WithZero` irreducible for this definition, otherwise `simps`
 -- will unfold it in the statement of the lemma it generates.
 /-- `WithOne.coe` as a bundled morphism -/
 @[to_additive "`WithZero.coe` as a bundled morphism", simps apply]
@@ -97,7 +97,7 @@ variable [Mul α] [Mul β] [Mul γ]
 
 /-- Given a multiplicative map from `α → β` returns a monoid homomorphism
   from `WithOne α` to `WithOne β` -/
-@[to_additive "Given an additive map from `α → β` returns an add monoid homomorphism\n  from
+@[to_additive "Given an additive map from `α → β` returns an add monoid homomorphism from
 `WithZero α` to `WithZero β`"]
 def map (f : α →ₙ* β) : WithOne α →* WithOne β :=
   lift (coeMulHom.comp f)
@@ -132,7 +132,7 @@ theorem map_comp (f : α →ₙ* β) (g : β →ₙ* γ) : map (g.comp f) = (map
 -- porting note: this used to have `@[simps apply]` but it was generating lemmas which
 -- weren't in simp normal form.
 /-- A version of `Equiv.optionCongr` for `WithOne`. -/
-@[to_additive "A version of `equiv.option_congr` for `with_zero`."]
+@[to_additive "A version of `Equiv.optionCongr` for `WithZero`."]
 def _root_.MulEquiv.withOneCongr (e : α ≃* β) : WithOne α ≃* WithOne β :=
   { map e.toMulHom with
     toFun := map e.toMulHom, invFun := map e.symm.toMulHom,
@@ -150,7 +150,7 @@ def _root_.MulEquiv.withOneCongr (e : α ≃* β) : WithOne α ≃* WithOne β :
 #align mul_equiv.with_one_congr_apply MulEquiv.withOneCongr_apply
 
 -- porting note: `@[to_additive, simps apply]` was not generating this lemma at the
--- time of writing this note. 
+-- time of writing this note.
 @[simp] theorem _root_.AddEquiv.withZeroCongr_apply {α β : Type _} [Add α] [Add β] (e : α ≃+ β)
   (a : WithZero α) :
     (AddEquiv.withZeroCongr e).toEquiv a = (WithZero.map (AddEquiv.toAddHom e)) a := rfl
fix: reintroduce to_fun_as_coe as simp lemma (#931)

This is a proposed fix for the broken simp calls in #922. See https://leanprover.zulipchat.com/#narrow/stream/287929-mathlib4/topic/.60simp.60.20calls.20broken.20in.20mathlib4.23922/near/314783451 for more details. Note that to_fun_as_coe was a syntactic tautology when it was ported, but this is no longer the case because we now have FunLike.

Diff
@@ -129,30 +129,33 @@ theorem map_comp (f : α →ₙ* β) (g : β →ₙ* γ) : map (g.comp f) = (map
 #align with_one.map_comp WithOne.map_comp
 #align with_zero.map_comp WithZero.map_comp
 
+-- porting note: this used to have `@[simps apply]` but it was generating lemmas which
+-- weren't in simp normal form.
 /-- A version of `Equiv.optionCongr` for `WithOne`. -/
-@[to_additive "A version of `equiv.option_congr` for `with_zero`.", simps apply]
+@[to_additive "A version of `equiv.option_congr` for `with_zero`."]
 def _root_.MulEquiv.withOneCongr (e : α ≃* β) : WithOne α ≃* WithOne β :=
   { map e.toMulHom with
     toFun := map e.toMulHom, invFun := map e.symm.toMulHom,
     left_inv := fun x => (map_map _ _ _).trans <| by
-      -- porting note: in mathlib3 this worked as: `induction x using WithOne.cases_on <;> simp`
-      induction x using WithOne.cases_on
-      · simp
-      · simp only [map_coe, MulHom.coe_mk, map_comp, MonoidHom.coe_comp, Function.comp_apply,
-          MulEquiv.toEquiv_symm, coe_inj]
-        apply Equiv.symm_apply_apply,
-      -- porting note: I think because of the way coercions are handled, this doesn't get changed
-      -- by `simp` into something where `Equiv.symm_apply_apply` automatically applies.
+      induction x using WithOne.cases_on <;> simp
     right_inv := fun x => (map_map _ _ _).trans <| by
-      -- porting note: in mathlib3 this worked as: `induction x using WithOne.cases_on <;> simp`
-      induction x using WithOne.cases_on
-      · simp
-      · simp only [map_coe, MulHom.coe_mk, MulEquiv.toEquiv_symm, map_comp, MonoidHom.coe_comp,
-          Function.comp_apply, coe_inj]
-        apply Equiv.apply_symm_apply }
+      induction x using WithOne.cases_on <;> simp }
 #align mul_equiv.with_one_congr MulEquiv.withOneCongr
 #align add_equiv.with_zero_congr AddEquiv.withZeroCongr
 
+-- porting note: an approximation to this was being generated by `@[simps apply]` but it
+-- mentioned Equiv.toFun so was not in simp normal form. This might be a bug in `@[simps].
+@[simp] theorem _root_.MulEquiv.withOneCongr_apply {α β : Type _} [Mul α] [Mul β] (e : α ≃* β)
+  (a : WithOne α) : (MulEquiv.withOneCongr e).toEquiv a = (map (MulEquiv.toMulHom e)) a := rfl
+#align mul_equiv.with_one_congr_apply MulEquiv.withOneCongr_apply
+
+-- porting note: `@[to_additive, simps apply]` was not generating this lemma at the
+-- time of writing this note. 
+@[simp] theorem _root_.AddEquiv.withZeroCongr_apply {α β : Type _} [Add α] [Add β] (e : α ≃+ β)
+  (a : WithZero α) :
+    (AddEquiv.withZeroCongr e).toEquiv a = (WithZero.map (AddEquiv.toAddHom e)) a := rfl
+#align add_equiv.with_zero_congr_apply AddEquiv.withZeroCongr_apply
+
 -- porting note: for this declaration and the two below I added the `to_additive` attribute because
 -- it seemed to be missing from mathlib3, hence the lack of additive `#align`s.
 @[simp, to_additive]
chore: add source headers to ported theory files (#1094)

The script used to do this is included. The yaml file was obtained from https://raw.githubusercontent.com/wiki/leanprover-community/mathlib/mathlib4-port-status.md

Diff
@@ -2,6 +2,11 @@
 Copyright (c) 2018 Mario Carneiro. All rights reserved.
 Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Mario Carneiro, Johan Commelin
+
+! This file was ported from Lean 3 source module algebra.group.with_one.basic
+! leanprover-community/mathlib commit 4dc134b97a3de65ef2ed881f3513d56260971562
+! Please do not edit these lines, except to modify the commit id
+! if you have ported upstream changes.
 -/
 import Mathlib.Algebra.Group.WithOne.Defs
 import Mathlib.Algebra.Hom.Equiv.Basic

Dependencies 40

41 files ported (100.0%)
19939 lines ported (100.0%)

All dependencies are ported!