algebra.group.with_one.basic
⟷
Mathlib.Algebra.Group.WithOne.Basic
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.
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(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)
mathlib commit https://github.com/leanprover-community/mathlib/commit/65a1391a0106c9204fe45bc73a039f056558cb83
@@ -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"
mathlib commit https://github.com/leanprover-community/mathlib/commit/ce64cd319bb6b3e82f31c2d38e79080d377be451
@@ -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"
mathlib commit https://github.com/leanprover-community/mathlib/commit/32a7e535287f9c73f2e4d2aef306a39190f0b504
@@ -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
mathlib commit https://github.com/leanprover-community/mathlib/commit/8ea5598db6caeddde6cb734aa179cc2408dbd345
@@ -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`
mathlib commit https://github.com/leanprover-community/mathlib/commit/9fb8964792b4237dac6200193a0d533f1b3f7423
@@ -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]
mathlib commit https://github.com/leanprover-community/mathlib/commit/917c3c072e487b3cccdbfeff17e75b40e45f66cb
@@ -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
mathlib commit https://github.com/leanprover-community/mathlib/commit/917c3c072e487b3cccdbfeff17e75b40e45f66cb
@@ -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
mathlib commit https://github.com/leanprover-community/mathlib/commit/95a87616d63b3cb49d3fe678d416fbe9c4217bf4
@@ -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
mathlib commit https://github.com/leanprover-community/mathlib/commit/3180fab693e2cee3bff62675571264cb8778b212
@@ -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
mathlib commit https://github.com/leanprover-community/mathlib/commit/38f16f960f5006c6c0c2bac7b0aba5273188f4e5
@@ -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
mathlib commit https://github.com/leanprover-community/mathlib/commit/bd9851ca476957ea4549eb19b40e7b5ade9428cc
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:
:=
by where
in instance declarationscoe
lemmassection ... end
@@ -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
@@ -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
Homogenises porting notes via capitalisation and addition of whitespace.
It makes the following changes:
@@ -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 _ :=
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).@@ -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"
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
@@ -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,
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
@@ -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"
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>
@@ -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
@@ -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`
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
.
@@ -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
@@ -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
@@ -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
This PR is the result of a slight variant on the following "algorithm"
_
and make all uppercase letters into lowercase_
and make all uppercase letters into lowercase(original_lean3_name, OriginalLean4Name)
#align
statement just before the next empty line#align
statement to have been inserted too early)@@ -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
to_additive
is @[to_additive (attrs := simp, ext, simps)]
simp
and simps
attributes to the to_additive
-dictionary.simp
-attributes). In particular it's possible that norm_cast
might generate some auxiliary declarations.to_additive
and simps
from the Simps
file to the toAdditive
file for uniformity.@[reassoc]
Co-authored-by: Johan Commelin <johan@commelin.net> Co-authored-by: Scott Morrison <scott.morrison@gmail.com>
@@ -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
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
@@ -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
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
.
@@ -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]
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
@@ -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
All dependencies are ported!