algebra.free_monoid.basic
⟷
Mathlib.Algebra.FreeMonoid.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)
(last sync)
lift f (x ⊗ₜ y) = f x y
true by rfl
(#18121)
Since this is essentially the "primitive" recursor, it is very convenient for it to expand definitionally.
With this change, the following lemmas are now rfl:
algebra.mul'_apply
free_monoid.lift_comp_of
free_monoid.lift_eval_of
tensor_product.lie_module.lift_apply
alternating_map.dom_coprod'_apply
contract_left_apply
contract_right_apply
dual_tensor_hom_apply
derivation.tensor_product_to_tmul
poly_equiv_tensor.to_fun_linear_tmul_apply
tensor_product.lift.tmul
tensor_product.lift.tmul'
algebra.tensor_product.lift_tmul
algebra.tensor_product.lmul'_apply_tmul
tensor_product.algebra.smul_def
And one lemma is no longer rfl
free_monoid.lift_apply
@@ -136,27 +136,41 @@ lemma hom_eq ⦃f g : free_monoid α →* M⦄ (h : ∀ x, f (of x) = g (of x))
monoid_hom.ext $ λ l, rec_on l (f.map_one.trans g.map_one.symm) $
λ x xs hxs, by simp only [h, hxs, monoid_hom.map_mul]
+/-- A variant of `list.prod` that has `[x].prod = x` true definitionally.
+
+The purpose is to make `free_monoid.lift_eval_of` true by `rfl`. -/
+@[to_additive "A variant of `list.sum` that has `[x].sum = x` true definitionally.
+
+The purpose is to make `free_add_monoid.lift_eval_of` true by `rfl`."]
+def prod_aux {M} [monoid M] (l : list M) : M :=
+l.rec_on 1 (λ x xs (_ : M), list.foldl (*) x xs)
+
+@[to_additive]
+lemma prod_aux_eq : ∀ l : list M, free_monoid.prod_aux l = l.prod
+| [] := rfl
+| (x :: xs) := congr_arg (λ x, list.foldl (*) x xs) (one_mul _).symm
+
/-- Equivalence between maps `α → M` and monoid homomorphisms `free_monoid α →* M`. -/
@[to_additive "Equivalence between maps `α → A` and additive monoid homomorphisms
`free_add_monoid α →+ A`."]
def lift : (α → M) ≃ (free_monoid α →* M) :=
-{ to_fun := λ f, ⟨λ l, (l.to_list.map f).prod, rfl,
- λ l₁ l₂, by simp only [to_list_mul, list.map_append, list.prod_append]⟩,
+{ to_fun := λ f, ⟨λ l, free_monoid.prod_aux (l.to_list.map f), rfl,
+ λ l₁ l₂, by simp only [prod_aux_eq, to_list_mul, list.map_append, list.prod_append]⟩,
inv_fun := λ f x, f (of x),
- left_inv := λ f, funext $ λ x, one_mul (f x),
- right_inv := λ f, hom_eq $ λ x, one_mul (f (of x)) }
+ left_inv := λ f, rfl,
+ right_inv := λ f, hom_eq $ λ x, rfl }
@[simp, to_additive]
lemma lift_symm_apply (f : free_monoid α →* M) : lift.symm f = f ∘ of := rfl
@[to_additive]
-lemma lift_apply (f : α → M) (l : free_monoid α) : lift f l = (l.to_list.map f).prod := rfl
+lemma lift_apply (f : α → M) (l : free_monoid α) : lift f l = (l.to_list.map f).prod :=
+prod_aux_eq _
-@[to_additive] lemma lift_comp_of (f : α → M) : lift f ∘ of = f := lift.symm_apply_apply f
+@[to_additive] lemma lift_comp_of (f : α → M) : lift f ∘ of = f := rfl
@[simp, to_additive]
-lemma lift_eval_of (f : α → M) (x : α) : lift f (of x) = f x :=
-congr_fun (lift_comp_of f) x
+lemma lift_eval_of (f : α → M) (x : α) : lift f (of x) = f x := rfl
@[simp, to_additive]
lemma lift_restrict (f : free_monoid α →* M) : lift (f ∘ of) = f :=
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(first ported)
mathlib commit https://github.com/leanprover-community/mathlib/commit/65a1391a0106c9204fe45bc73a039f056558cb83
@@ -3,7 +3,7 @@ Copyright (c) 2019 Simon Hudon. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Simon Hudon, Yury Kudryashov
-/
-import Data.List.BigOperators.Basic
+import Algebra.BigOperators.List.Basic
#align_import algebra.free_monoid.basic from "leanprover-community/mathlib"@"657df4339ae6ceada048c8a2980fb10e393143ec"
mathlib commit https://github.com/leanprover-community/mathlib/commit/65a1391a0106c9204fe45bc73a039f056558cb83
@@ -114,8 +114,8 @@ instance : CancelMonoid (FreeMonoid α)
mul_one := List.append_nil
one_mul := List.nil_append
mul_assoc := List.append_assoc
- hMul_left_cancel _ _ _ := List.append_left_cancel
- hMul_right_cancel _ _ _ := List.append_right_cancel
+ hMul_left_cancel _ _ _ := List.append_cancel_left
+ hMul_right_cancel _ _ _ := List.append_cancel_right
@[to_additive]
instance : Inhabited (FreeMonoid α) :=
mathlib commit https://github.com/leanprover-community/mathlib/commit/ce64cd319bb6b3e82f31c2d38e79080d377be451
@@ -3,7 +3,7 @@ Copyright (c) 2019 Simon Hudon. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Simon Hudon, Yury Kudryashov
-/
-import Mathbin.Data.List.BigOperators.Basic
+import Data.List.BigOperators.Basic
#align_import algebra.free_monoid.basic from "leanprover-community/mathlib"@"657df4339ae6ceada048c8a2980fb10e393143ec"
mathlib commit https://github.com/leanprover-community/mathlib/commit/32a7e535287f9c73f2e4d2aef306a39190f0b504
@@ -114,8 +114,8 @@ instance : CancelMonoid (FreeMonoid α)
mul_one := List.append_nil
one_mul := List.nil_append
mul_assoc := List.append_assoc
- mul_left_cancel _ _ _ := List.append_left_cancel
- mul_right_cancel _ _ _ := List.append_right_cancel
+ hMul_left_cancel _ _ _ := List.append_left_cancel
+ hMul_right_cancel _ _ _ := List.append_right_cancel
@[to_additive]
instance : Inhabited (FreeMonoid α) :=
@@ -389,7 +389,7 @@ def mkMulAction (f : α → β → β) : MulAction (FreeMonoid α) β
where
smul l b := l.toList.foldr f b
one_smul x := rfl
- mul_smul xs ys b := List.foldr_append _ _ _ _
+ hMul_smul xs ys b := List.foldr_append _ _ _ _
#align free_monoid.mk_mul_action FreeMonoid.mkMulAction
#align free_add_monoid.mk_add_action FreeAddMonoid.mkAddAction
-/
mathlib commit https://github.com/leanprover-community/mathlib/commit/8ea5598db6caeddde6cb734aa179cc2408dbd345
@@ -2,14 +2,11 @@
Copyright (c) 2019 Simon Hudon. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Simon Hudon, Yury Kudryashov
-
-! This file was ported from Lean 3 source module algebra.free_monoid.basic
-! leanprover-community/mathlib commit 657df4339ae6ceada048c8a2980fb10e393143ec
-! Please do not edit these lines, except to modify the commit id
-! if you have ported upstream changes.
-/
import Mathbin.Data.List.BigOperators.Basic
+#align_import algebra.free_monoid.basic from "leanprover-community/mathlib"@"657df4339ae6ceada048c8a2980fb10e393143ec"
+
/-!
# Free monoid over a given alphabet
mathlib commit https://github.com/leanprover-community/mathlib/commit/9fb8964792b4237dac6200193a0d533f1b3f7423
@@ -221,6 +221,7 @@ theorem of_injective : Function.Injective (@of α) :=
#align free_add_monoid.of_injective FreeAddMonoid.of_injective
-/
+#print FreeMonoid.recOn /-
/-- Recursor for `free_monoid` using `1` and `free_monoid.of x * xs` instead of `[]` and
`x :: xs`. -/
@[elab_as_elim,
@@ -231,21 +232,27 @@ def recOn {C : FreeMonoid α → Sort _} (xs : FreeMonoid α) (h0 : C 1)
List.recOn xs h0 ih
#align free_monoid.rec_on FreeMonoid.recOn
#align free_add_monoid.rec_on FreeAddMonoid.recOn
+-/
+#print FreeMonoid.recOn_one /-
@[simp, to_additive]
theorem recOn_one {C : FreeMonoid α → Sort _} (h0 : C 1) (ih : ∀ x xs, C xs → C (of x * xs)) :
@recOn α C 1 h0 ih = h0 :=
rfl
#align free_monoid.rec_on_one FreeMonoid.recOn_one
#align free_add_monoid.rec_on_zero FreeAddMonoid.recOn_zero
+-/
+#print FreeMonoid.recOn_of_mul /-
@[simp, to_additive]
theorem recOn_of_mul {C : FreeMonoid α → Sort _} (x : α) (xs : FreeMonoid α) (h0 : C 1)
(ih : ∀ x xs, C xs → C (of x * xs)) : @recOn α C (of x * xs) h0 ih = ih x xs (recOn xs h0 ih) :=
rfl
#align free_monoid.rec_on_of_mul FreeMonoid.recOn_of_mul
#align free_add_monoid.rec_on_of_add FreeAddMonoid.recOn_of_add
+-/
+#print FreeMonoid.casesOn /-
/-- A version of `list.cases_on` for `free_monoid` using `1` and `free_monoid.of x * xs` instead of
`[]` and `x :: xs`. -/
@[elab_as_elim,
@@ -256,21 +263,27 @@ def casesOn {C : FreeMonoid α → Sort _} (xs : FreeMonoid α) (h0 : C 1)
List.casesOn xs h0 ih
#align free_monoid.cases_on FreeMonoid.casesOn
#align free_add_monoid.cases_on FreeAddMonoid.casesOn
+-/
+#print FreeMonoid.casesOn_one /-
@[simp, to_additive]
theorem casesOn_one {C : FreeMonoid α → Sort _} (h0 : C 1) (ih : ∀ x xs, C (of x * xs)) :
@casesOn α C 1 h0 ih = h0 :=
rfl
#align free_monoid.cases_on_one FreeMonoid.casesOn_one
#align free_add_monoid.cases_on_zero FreeAddMonoid.casesOn_zero
+-/
+#print FreeMonoid.casesOn_of_mul /-
@[simp, to_additive]
theorem casesOn_of_mul {C : FreeMonoid α → Sort _} (x : α) (xs : FreeMonoid α) (h0 : C 1)
(ih : ∀ x xs, C (of x * xs)) : @casesOn α C (of x * xs) h0 ih = ih x xs :=
rfl
#align free_monoid.cases_on_of_mul FreeMonoid.casesOn_of_mul
#align free_add_monoid.cases_on_of_add FreeAddMonoid.casesOn_of_add
+-/
+#print FreeMonoid.hom_eq /-
@[ext, to_additive]
theorem hom_eq ⦃f g : FreeMonoid α →* M⦄ (h : ∀ x, f (of x) = g (of x)) : f = g :=
MonoidHom.ext fun l =>
@@ -278,6 +291,7 @@ theorem hom_eq ⦃f g : FreeMonoid α →* M⦄ (h : ∀ x, f (of x) = g (of x))
simp only [h, hxs, MonoidHom.map_mul]
#align free_monoid.hom_eq FreeMonoid.hom_eq
#align free_add_monoid.hom_eq FreeAddMonoid.hom_eq
+-/
#print FreeMonoid.prodAux /-
/-- A variant of `list.prod` that has `[x].prod = x` true definitionally.
@@ -291,13 +305,16 @@ def prodAux {M} [Monoid M] (l : List M) : M :=
#align free_add_monoid.sum_aux FreeAddMonoid.sumAux
-/
+#print FreeMonoid.prodAux_eq /-
@[to_additive]
theorem prodAux_eq : ∀ l : List M, FreeMonoid.prodAux l = l.Prod
| [] => rfl
| x :: xs => congr_arg (fun x => List.foldl (· * ·) x xs) (one_mul _).symm
#align free_monoid.prod_aux_eq FreeMonoid.prodAux_eq
#align free_add_monoid.sum_aux_eq FreeAddMonoid.sumAux_eq
+-/
+#print FreeMonoid.lift /-
/-- Equivalence between maps `α → M` and monoid homomorphisms `free_monoid α →* M`. -/
@[to_additive
"Equivalence between maps `α → A` and additive monoid homomorphisms\n`free_add_monoid α →+ A`."]
@@ -311,48 +328,64 @@ def lift : (α → M) ≃ (FreeMonoid α →* M)
right_inv f := hom_eq fun x => rfl
#align free_monoid.lift FreeMonoid.lift
#align free_add_monoid.lift FreeAddMonoid.lift
+-/
+#print FreeMonoid.lift_symm_apply /-
@[simp, to_additive]
theorem lift_symm_apply (f : FreeMonoid α →* M) : lift.symm f = f ∘ of :=
rfl
#align free_monoid.lift_symm_apply FreeMonoid.lift_symm_apply
#align free_add_monoid.lift_symm_apply FreeAddMonoid.lift_symm_apply
+-/
+#print FreeMonoid.lift_apply /-
@[to_additive]
theorem lift_apply (f : α → M) (l : FreeMonoid α) : lift f l = (l.toList.map f).Prod :=
prodAux_eq _
#align free_monoid.lift_apply FreeMonoid.lift_apply
#align free_add_monoid.lift_apply FreeAddMonoid.lift_apply
+-/
+#print FreeMonoid.lift_comp_of /-
@[to_additive]
theorem lift_comp_of (f : α → M) : lift f ∘ of = f :=
rfl
#align free_monoid.lift_comp_of FreeMonoid.lift_comp_of
#align free_add_monoid.lift_comp_of FreeAddMonoid.lift_comp_of
+-/
+#print FreeMonoid.lift_eval_of /-
@[simp, to_additive]
theorem lift_eval_of (f : α → M) (x : α) : lift f (of x) = f x :=
rfl
#align free_monoid.lift_eval_of FreeMonoid.lift_eval_of
#align free_add_monoid.lift_eval_of FreeAddMonoid.lift_eval_of
+-/
+#print FreeMonoid.lift_restrict /-
@[simp, to_additive]
theorem lift_restrict (f : FreeMonoid α →* M) : lift (f ∘ of) = f :=
lift.apply_symm_apply f
#align free_monoid.lift_restrict FreeMonoid.lift_restrict
#align free_add_monoid.lift_restrict FreeAddMonoid.lift_restrict
+-/
+#print FreeMonoid.comp_lift /-
@[to_additive]
theorem comp_lift (g : M →* N) (f : α → M) : g.comp (lift f) = lift (g ∘ f) := by ext; simp
#align free_monoid.comp_lift FreeMonoid.comp_lift
#align free_add_monoid.comp_lift FreeAddMonoid.comp_lift
+-/
+#print FreeMonoid.hom_map_lift /-
@[to_additive]
theorem hom_map_lift (g : M →* N) (f : α → M) (x : FreeMonoid α) : g (lift f x) = lift (g ∘ f) x :=
MonoidHom.ext_iff.1 (comp_lift g f) x
#align free_monoid.hom_map_lift FreeMonoid.hom_map_lift
#align free_add_monoid.hom_map_lift FreeAddMonoid.hom_map_lift
+-/
+#print FreeMonoid.mkMulAction /-
/-- Define a multiplicative action of `free_monoid α` on `β`. -/
@[to_additive "Define an additive action of `free_add_monoid α` on `β`."]
def mkMulAction (f : α → β → β) : MulAction (FreeMonoid α) β
@@ -362,7 +395,9 @@ def mkMulAction (f : α → β → β) : MulAction (FreeMonoid α) β
mul_smul xs ys b := List.foldr_append _ _ _ _
#align free_monoid.mk_mul_action FreeMonoid.mkMulAction
#align free_add_monoid.mk_add_action FreeAddMonoid.mkAddAction
+-/
+#print FreeMonoid.smul_def /-
@[to_additive]
theorem smul_def (f : α → β → β) (l : FreeMonoid α) (b : β) :
haveI := mk_mul_action f
@@ -370,7 +405,9 @@ theorem smul_def (f : α → β → β) (l : FreeMonoid α) (b : β) :
rfl
#align free_monoid.smul_def FreeMonoid.smul_def
#align free_add_monoid.vadd_def FreeAddMonoid.vadd_def
+-/
+#print FreeMonoid.ofList_smul /-
@[to_additive]
theorem ofList_smul (f : α → β → β) (l : List α) (b : β) :
haveI := mk_mul_action f
@@ -378,6 +415,7 @@ theorem ofList_smul (f : α → β → β) (l : List α) (b : β) :
rfl
#align free_monoid.of_list_smul FreeMonoid.ofList_smul
#align free_add_monoid.of_list_vadd FreeAddMonoid.ofList_vadd
+-/
#print FreeMonoid.of_smul /-
@[simp, to_additive]
@@ -390,6 +428,7 @@ theorem of_smul (f : α → β → β) (x : α) (y : β) :
#align free_add_monoid.of_vadd FreeAddMonoid.of_vadd
-/
+#print FreeMonoid.map /-
/-- The unique monoid homomorphism `free_monoid α →* free_monoid β` that sends
each `of x` to `of (f x)`. -/
@[to_additive
@@ -401,42 +440,55 @@ def map (f : α → β) : FreeMonoid α →* FreeMonoid β
map_mul' l₁ l₂ := List.map_append _ _ _
#align free_monoid.map FreeMonoid.map
#align free_add_monoid.map FreeAddMonoid.map
+-/
+#print FreeMonoid.map_of /-
@[simp, to_additive]
theorem map_of (f : α → β) (x : α) : map f (of x) = of (f x) :=
rfl
#align free_monoid.map_of FreeMonoid.map_of
#align free_add_monoid.map_of FreeAddMonoid.map_of
+-/
+#print FreeMonoid.toList_map /-
@[to_additive]
theorem toList_map (f : α → β) (xs : FreeMonoid α) : (map f xs).toList = xs.toList.map f :=
rfl
#align free_monoid.to_list_map FreeMonoid.toList_map
#align free_add_monoid.to_list_map FreeAddMonoid.toList_map
+-/
+#print FreeMonoid.ofList_map /-
@[to_additive]
theorem ofList_map (f : α → β) (xs : List α) : ofList (xs.map f) = map f (ofList xs) :=
rfl
#align free_monoid.of_list_map FreeMonoid.ofList_map
#align free_add_monoid.of_list_map FreeAddMonoid.ofList_map
+-/
+#print FreeMonoid.lift_of_comp_eq_map /-
@[to_additive]
theorem lift_of_comp_eq_map (f : α → β) : (lift fun x => of (f x)) = map f :=
hom_eq fun x => rfl
#align free_monoid.lift_of_comp_eq_map FreeMonoid.lift_of_comp_eq_map
#align free_add_monoid.lift_of_comp_eq_map FreeAddMonoid.lift_of_comp_eq_map
+-/
+#print FreeMonoid.map_comp /-
@[to_additive]
theorem map_comp (g : β → γ) (f : α → β) : map (g ∘ f) = (map g).comp (map f) :=
hom_eq fun x => rfl
#align free_monoid.map_comp FreeMonoid.map_comp
#align free_add_monoid.map_comp FreeAddMonoid.map_comp
+-/
+#print FreeMonoid.map_id /-
@[simp, to_additive]
theorem map_id : map (@id α) = MonoidHom.id (FreeMonoid α) :=
hom_eq fun x => rfl
#align free_monoid.map_id FreeMonoid.map_id
#align free_add_monoid.map_id FreeAddMonoid.map_id
+-/
end FreeMonoid
mathlib commit https://github.com/leanprover-community/mathlib/commit/917c3c072e487b3cccdbfeff17e75b40e45f66cb
@@ -221,12 +221,6 @@ theorem of_injective : Function.Injective (@of α) :=
#align free_add_monoid.of_injective FreeAddMonoid.of_injective
-/
-/- warning: free_monoid.rec_on -> FreeMonoid.recOn is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {C : (FreeMonoid.{u1} α) -> Sort.{u2}} (xs : FreeMonoid.{u1} α), (C (OfNat.ofNat.{u1} (FreeMonoid.{u1} α) 1 (OfNat.mk.{u1} (FreeMonoid.{u1} α) 1 (One.one.{u1} (FreeMonoid.{u1} α) (MulOneClass.toHasOne.{u1} (FreeMonoid.{u1} α) (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α))))))))) -> (forall (x : α) (xs : FreeMonoid.{u1} α), (C xs) -> (C (HMul.hMul.{u1, u1, u1} (FreeMonoid.{u1} α) (FreeMonoid.{u1} α) (FreeMonoid.{u1} α) (instHMul.{u1} (FreeMonoid.{u1} α) (MulOneClass.toHasMul.{u1} (FreeMonoid.{u1} α) (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))))) (FreeMonoid.of.{u1} α x) xs))) -> (C xs)
-but is expected to have type
- forall {α : Type.{u1}} {C : (FreeMonoid.{u1} α) -> Sort.{u2}} (xs : FreeMonoid.{u1} α), (C (OfNat.ofNat.{u1} (FreeMonoid.{u1} α) 1 (One.toOfNat1.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toOne.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α)))))) -> (forall (x : α) (xs : FreeMonoid.{u1} α), (C xs) -> (C (HMul.hMul.{u1, u1, u1} (FreeMonoid.{u1} α) (FreeMonoid.{u1} α) (FreeMonoid.{u1} α) (instHMul.{u1} (FreeMonoid.{u1} α) (MulOneClass.toMul.{u1} (FreeMonoid.{u1} α) (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α)))))) (FreeMonoid.of.{u1} α x) xs))) -> (C xs)
-Case conversion may be inaccurate. Consider using '#align free_monoid.rec_on FreeMonoid.recOnₓ'. -/
/-- Recursor for `free_monoid` using `1` and `free_monoid.of x * xs` instead of `[]` and
`x :: xs`. -/
@[elab_as_elim,
@@ -238,12 +232,6 @@ def recOn {C : FreeMonoid α → Sort _} (xs : FreeMonoid α) (h0 : C 1)
#align free_monoid.rec_on FreeMonoid.recOn
#align free_add_monoid.rec_on FreeAddMonoid.recOn
-/- warning: free_monoid.rec_on_one -> FreeMonoid.recOn_one is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {C : (FreeMonoid.{u1} α) -> Sort.{u2}} (h0 : C (OfNat.ofNat.{u1} (FreeMonoid.{u1} α) 1 (OfNat.mk.{u1} (FreeMonoid.{u1} α) 1 (One.one.{u1} (FreeMonoid.{u1} α) (MulOneClass.toHasOne.{u1} (FreeMonoid.{u1} α) (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α))))))))) (ih : forall (x : α) (xs : FreeMonoid.{u1} α), (C xs) -> (C (HMul.hMul.{u1, u1, u1} (FreeMonoid.{u1} α) (FreeMonoid.{u1} α) (FreeMonoid.{u1} α) (instHMul.{u1} (FreeMonoid.{u1} α) (MulOneClass.toHasMul.{u1} (FreeMonoid.{u1} α) (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))))) (FreeMonoid.of.{u1} α x) xs))), Eq.{u2} (C (OfNat.ofNat.{u1} (FreeMonoid.{u1} α) 1 (OfNat.mk.{u1} (FreeMonoid.{u1} α) 1 (One.one.{u1} (FreeMonoid.{u1} α) (MulOneClass.toHasOne.{u1} (FreeMonoid.{u1} α) (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α))))))))) (FreeMonoid.recOn.{u1, u2} α C (OfNat.ofNat.{u1} (FreeMonoid.{u1} α) 1 (OfNat.mk.{u1} (FreeMonoid.{u1} α) 1 (One.one.{u1} (FreeMonoid.{u1} α) (MulOneClass.toHasOne.{u1} (FreeMonoid.{u1} α) (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))))))) h0 ih) h0
-but is expected to have type
- forall {α : Type.{u2}} {C : (FreeMonoid.{u2} α) -> Sort.{u1}} (h0 : C (OfNat.ofNat.{u2} (FreeMonoid.{u2} α) 1 (One.toOfNat1.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toOne.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))))) (ih : forall (x : α) (xs : FreeMonoid.{u2} α), (C xs) -> (C (HMul.hMul.{u2, u2, u2} (FreeMonoid.{u2} α) (FreeMonoid.{u2} α) (FreeMonoid.{u2} α) (instHMul.{u2} (FreeMonoid.{u2} α) (MulOneClass.toMul.{u2} (FreeMonoid.{u2} α) (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))))) (FreeMonoid.of.{u2} α x) xs))), Eq.{u1} (C (OfNat.ofNat.{u2} (FreeMonoid.{u2} α) 1 (One.toOfNat1.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toOne.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))))) (FreeMonoid.recOn.{u2, u1} α C (OfNat.ofNat.{u2} (FreeMonoid.{u2} α) 1 (One.toOfNat1.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toOne.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α))))) h0 ih) h0
-Case conversion may be inaccurate. Consider using '#align free_monoid.rec_on_one FreeMonoid.recOn_oneₓ'. -/
@[simp, to_additive]
theorem recOn_one {C : FreeMonoid α → Sort _} (h0 : C 1) (ih : ∀ x xs, C xs → C (of x * xs)) :
@recOn α C 1 h0 ih = h0 :=
@@ -251,12 +239,6 @@ theorem recOn_one {C : FreeMonoid α → Sort _} (h0 : C 1) (ih : ∀ x xs, C xs
#align free_monoid.rec_on_one FreeMonoid.recOn_one
#align free_add_monoid.rec_on_zero FreeAddMonoid.recOn_zero
-/- warning: free_monoid.rec_on_of_mul -> FreeMonoid.recOn_of_mul is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {C : (FreeMonoid.{u1} α) -> Sort.{u2}} (x : α) (xs : FreeMonoid.{u1} α) (h0 : C (OfNat.ofNat.{u1} (FreeMonoid.{u1} α) 1 (OfNat.mk.{u1} (FreeMonoid.{u1} α) 1 (One.one.{u1} (FreeMonoid.{u1} α) (MulOneClass.toHasOne.{u1} (FreeMonoid.{u1} α) (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α))))))))) (ih : forall (x : α) (xs : FreeMonoid.{u1} α), (C xs) -> (C (HMul.hMul.{u1, u1, u1} (FreeMonoid.{u1} α) (FreeMonoid.{u1} α) (FreeMonoid.{u1} α) (instHMul.{u1} (FreeMonoid.{u1} α) (MulOneClass.toHasMul.{u1} (FreeMonoid.{u1} α) (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))))) (FreeMonoid.of.{u1} α x) xs))), Eq.{u2} (C (HMul.hMul.{u1, u1, u1} (FreeMonoid.{u1} α) (FreeMonoid.{u1} α) (FreeMonoid.{u1} α) (instHMul.{u1} (FreeMonoid.{u1} α) (MulOneClass.toHasMul.{u1} (FreeMonoid.{u1} α) (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))))) (FreeMonoid.of.{u1} α x) xs)) (FreeMonoid.recOn.{u1, u2} α C (HMul.hMul.{u1, u1, u1} (FreeMonoid.{u1} α) (FreeMonoid.{u1} α) (FreeMonoid.{u1} α) (instHMul.{u1} (FreeMonoid.{u1} α) (MulOneClass.toHasMul.{u1} (FreeMonoid.{u1} α) (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))))) (FreeMonoid.of.{u1} α x) xs) h0 ih) (ih x xs (FreeMonoid.recOn.{u1, u2} α (fun (_x : FreeMonoid.{u1} α) => C _x) xs h0 ih))
-but is expected to have type
- forall {α : Type.{u2}} {C : (FreeMonoid.{u2} α) -> Sort.{u1}} (x : α) (xs : FreeMonoid.{u2} α) (h0 : C (OfNat.ofNat.{u2} (FreeMonoid.{u2} α) 1 (One.toOfNat1.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toOne.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))))) (ih : forall (x : α) (xs : FreeMonoid.{u2} α), (C xs) -> (C (HMul.hMul.{u2, u2, u2} (FreeMonoid.{u2} α) (FreeMonoid.{u2} α) (FreeMonoid.{u2} α) (instHMul.{u2} (FreeMonoid.{u2} α) (MulOneClass.toMul.{u2} (FreeMonoid.{u2} α) (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))))) (FreeMonoid.of.{u2} α x) xs))), Eq.{u1} (C (HMul.hMul.{u2, u2, u2} (FreeMonoid.{u2} α) (FreeMonoid.{u2} α) (FreeMonoid.{u2} α) (instHMul.{u2} (FreeMonoid.{u2} α) (MulOneClass.toMul.{u2} (FreeMonoid.{u2} α) (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))))) (FreeMonoid.of.{u2} α x) xs)) (FreeMonoid.recOn.{u2, u1} α C (HMul.hMul.{u2, u2, u2} (FreeMonoid.{u2} α) (FreeMonoid.{u2} α) (FreeMonoid.{u2} α) (instHMul.{u2} (FreeMonoid.{u2} α) (MulOneClass.toMul.{u2} (FreeMonoid.{u2} α) (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))))) (FreeMonoid.of.{u2} α x) xs) h0 ih) (ih x xs (FreeMonoid.recOn.{u2, u1} α (fun (_x : FreeMonoid.{u2} α) => C _x) xs h0 ih))
-Case conversion may be inaccurate. Consider using '#align free_monoid.rec_on_of_mul FreeMonoid.recOn_of_mulₓ'. -/
@[simp, to_additive]
theorem recOn_of_mul {C : FreeMonoid α → Sort _} (x : α) (xs : FreeMonoid α) (h0 : C 1)
(ih : ∀ x xs, C xs → C (of x * xs)) : @recOn α C (of x * xs) h0 ih = ih x xs (recOn xs h0 ih) :=
@@ -264,12 +246,6 @@ theorem recOn_of_mul {C : FreeMonoid α → Sort _} (x : α) (xs : FreeMonoid α
#align free_monoid.rec_on_of_mul FreeMonoid.recOn_of_mul
#align free_add_monoid.rec_on_of_add FreeAddMonoid.recOn_of_add
-/- warning: free_monoid.cases_on -> FreeMonoid.casesOn is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {C : (FreeMonoid.{u1} α) -> Sort.{u2}} (xs : FreeMonoid.{u1} α), (C (OfNat.ofNat.{u1} (FreeMonoid.{u1} α) 1 (OfNat.mk.{u1} (FreeMonoid.{u1} α) 1 (One.one.{u1} (FreeMonoid.{u1} α) (MulOneClass.toHasOne.{u1} (FreeMonoid.{u1} α) (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α))))))))) -> (forall (x : α) (xs : FreeMonoid.{u1} α), C (HMul.hMul.{u1, u1, u1} (FreeMonoid.{u1} α) (FreeMonoid.{u1} α) (FreeMonoid.{u1} α) (instHMul.{u1} (FreeMonoid.{u1} α) (MulOneClass.toHasMul.{u1} (FreeMonoid.{u1} α) (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))))) (FreeMonoid.of.{u1} α x) xs)) -> (C xs)
-but is expected to have type
- forall {α : Type.{u1}} {C : (FreeMonoid.{u1} α) -> Sort.{u2}} (xs : FreeMonoid.{u1} α), (C (OfNat.ofNat.{u1} (FreeMonoid.{u1} α) 1 (One.toOfNat1.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toOne.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α)))))) -> (forall (x : α) (xs : FreeMonoid.{u1} α), C (HMul.hMul.{u1, u1, u1} (FreeMonoid.{u1} α) (FreeMonoid.{u1} α) (FreeMonoid.{u1} α) (instHMul.{u1} (FreeMonoid.{u1} α) (MulOneClass.toMul.{u1} (FreeMonoid.{u1} α) (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α)))))) (FreeMonoid.of.{u1} α x) xs)) -> (C xs)
-Case conversion may be inaccurate. Consider using '#align free_monoid.cases_on FreeMonoid.casesOnₓ'. -/
/-- A version of `list.cases_on` for `free_monoid` using `1` and `free_monoid.of x * xs` instead of
`[]` and `x :: xs`. -/
@[elab_as_elim,
@@ -281,12 +257,6 @@ def casesOn {C : FreeMonoid α → Sort _} (xs : FreeMonoid α) (h0 : C 1)
#align free_monoid.cases_on FreeMonoid.casesOn
#align free_add_monoid.cases_on FreeAddMonoid.casesOn
-/- warning: free_monoid.cases_on_one -> FreeMonoid.casesOn_one is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {C : (FreeMonoid.{u1} α) -> Sort.{u2}} (h0 : C (OfNat.ofNat.{u1} (FreeMonoid.{u1} α) 1 (OfNat.mk.{u1} (FreeMonoid.{u1} α) 1 (One.one.{u1} (FreeMonoid.{u1} α) (MulOneClass.toHasOne.{u1} (FreeMonoid.{u1} α) (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α))))))))) (ih : forall (x : α) (xs : FreeMonoid.{u1} α), C (HMul.hMul.{u1, u1, u1} (FreeMonoid.{u1} α) (FreeMonoid.{u1} α) (FreeMonoid.{u1} α) (instHMul.{u1} (FreeMonoid.{u1} α) (MulOneClass.toHasMul.{u1} (FreeMonoid.{u1} α) (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))))) (FreeMonoid.of.{u1} α x) xs)), Eq.{u2} (C (OfNat.ofNat.{u1} (FreeMonoid.{u1} α) 1 (OfNat.mk.{u1} (FreeMonoid.{u1} α) 1 (One.one.{u1} (FreeMonoid.{u1} α) (MulOneClass.toHasOne.{u1} (FreeMonoid.{u1} α) (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α))))))))) (FreeMonoid.casesOn.{u1, u2} α C (OfNat.ofNat.{u1} (FreeMonoid.{u1} α) 1 (OfNat.mk.{u1} (FreeMonoid.{u1} α) 1 (One.one.{u1} (FreeMonoid.{u1} α) (MulOneClass.toHasOne.{u1} (FreeMonoid.{u1} α) (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))))))) h0 ih) h0
-but is expected to have type
- forall {α : Type.{u2}} {C : (FreeMonoid.{u2} α) -> Sort.{u1}} (h0 : C (OfNat.ofNat.{u2} (FreeMonoid.{u2} α) 1 (One.toOfNat1.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toOne.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))))) (ih : forall (x : α) (xs : FreeMonoid.{u2} α), C (HMul.hMul.{u2, u2, u2} (FreeMonoid.{u2} α) (FreeMonoid.{u2} α) (FreeMonoid.{u2} α) (instHMul.{u2} (FreeMonoid.{u2} α) (MulOneClass.toMul.{u2} (FreeMonoid.{u2} α) (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))))) (FreeMonoid.of.{u2} α x) xs)), Eq.{u1} (C (OfNat.ofNat.{u2} (FreeMonoid.{u2} α) 1 (One.toOfNat1.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toOne.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))))) (FreeMonoid.casesOn.{u2, u1} α C (OfNat.ofNat.{u2} (FreeMonoid.{u2} α) 1 (One.toOfNat1.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toOne.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α))))) h0 ih) h0
-Case conversion may be inaccurate. Consider using '#align free_monoid.cases_on_one FreeMonoid.casesOn_oneₓ'. -/
@[simp, to_additive]
theorem casesOn_one {C : FreeMonoid α → Sort _} (h0 : C 1) (ih : ∀ x xs, C (of x * xs)) :
@casesOn α C 1 h0 ih = h0 :=
@@ -294,12 +264,6 @@ theorem casesOn_one {C : FreeMonoid α → Sort _} (h0 : C 1) (ih : ∀ x xs, C
#align free_monoid.cases_on_one FreeMonoid.casesOn_one
#align free_add_monoid.cases_on_zero FreeAddMonoid.casesOn_zero
-/- warning: free_monoid.cases_on_of_mul -> FreeMonoid.casesOn_of_mul is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {C : (FreeMonoid.{u1} α) -> Sort.{u2}} (x : α) (xs : FreeMonoid.{u1} α) (h0 : C (OfNat.ofNat.{u1} (FreeMonoid.{u1} α) 1 (OfNat.mk.{u1} (FreeMonoid.{u1} α) 1 (One.one.{u1} (FreeMonoid.{u1} α) (MulOneClass.toHasOne.{u1} (FreeMonoid.{u1} α) (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α))))))))) (ih : forall (x : α) (xs : FreeMonoid.{u1} α), C (HMul.hMul.{u1, u1, u1} (FreeMonoid.{u1} α) (FreeMonoid.{u1} α) (FreeMonoid.{u1} α) (instHMul.{u1} (FreeMonoid.{u1} α) (MulOneClass.toHasMul.{u1} (FreeMonoid.{u1} α) (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))))) (FreeMonoid.of.{u1} α x) xs)), Eq.{u2} (C (HMul.hMul.{u1, u1, u1} (FreeMonoid.{u1} α) (FreeMonoid.{u1} α) (FreeMonoid.{u1} α) (instHMul.{u1} (FreeMonoid.{u1} α) (MulOneClass.toHasMul.{u1} (FreeMonoid.{u1} α) (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))))) (FreeMonoid.of.{u1} α x) xs)) (FreeMonoid.casesOn.{u1, u2} α C (HMul.hMul.{u1, u1, u1} (FreeMonoid.{u1} α) (FreeMonoid.{u1} α) (FreeMonoid.{u1} α) (instHMul.{u1} (FreeMonoid.{u1} α) (MulOneClass.toHasMul.{u1} (FreeMonoid.{u1} α) (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))))) (FreeMonoid.of.{u1} α x) xs) h0 ih) (ih x xs)
-but is expected to have type
- forall {α : Type.{u2}} {C : (FreeMonoid.{u2} α) -> Sort.{u1}} (x : α) (xs : FreeMonoid.{u2} α) (h0 : C (OfNat.ofNat.{u2} (FreeMonoid.{u2} α) 1 (One.toOfNat1.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toOne.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))))) (ih : forall (x : α) (xs : FreeMonoid.{u2} α), C (HMul.hMul.{u2, u2, u2} (FreeMonoid.{u2} α) (FreeMonoid.{u2} α) (FreeMonoid.{u2} α) (instHMul.{u2} (FreeMonoid.{u2} α) (MulOneClass.toMul.{u2} (FreeMonoid.{u2} α) (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))))) (FreeMonoid.of.{u2} α x) xs)), Eq.{u1} (C (HMul.hMul.{u2, u2, u2} (FreeMonoid.{u2} α) (FreeMonoid.{u2} α) (FreeMonoid.{u2} α) (instHMul.{u2} (FreeMonoid.{u2} α) (MulOneClass.toMul.{u2} (FreeMonoid.{u2} α) (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))))) (FreeMonoid.of.{u2} α x) xs)) (FreeMonoid.casesOn.{u2, u1} α C (HMul.hMul.{u2, u2, u2} (FreeMonoid.{u2} α) (FreeMonoid.{u2} α) (FreeMonoid.{u2} α) (instHMul.{u2} (FreeMonoid.{u2} α) (MulOneClass.toMul.{u2} (FreeMonoid.{u2} α) (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))))) (FreeMonoid.of.{u2} α x) xs) h0 ih) (ih x xs)
-Case conversion may be inaccurate. Consider using '#align free_monoid.cases_on_of_mul FreeMonoid.casesOn_of_mulₓ'. -/
@[simp, to_additive]
theorem casesOn_of_mul {C : FreeMonoid α → Sort _} (x : α) (xs : FreeMonoid α) (h0 : C 1)
(ih : ∀ x xs, C (of x * xs)) : @casesOn α C (of x * xs) h0 ih = ih x xs :=
@@ -307,12 +271,6 @@ theorem casesOn_of_mul {C : FreeMonoid α → Sort _} (x : α) (xs : FreeMonoid
#align free_monoid.cases_on_of_mul FreeMonoid.casesOn_of_mul
#align free_add_monoid.cases_on_of_add FreeAddMonoid.casesOn_of_add
-/- warning: free_monoid.hom_eq -> FreeMonoid.hom_eq is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : Monoid.{u2} M] {{f : MonoidHom.{u1, u2} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} M _inst_1)}} {{g : MonoidHom.{u1, u2} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} M _inst_1)}}, (forall (x : α), Eq.{succ u2} M (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} M _inst_1)) (fun (_x : MonoidHom.{u1, u2} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} M _inst_1)) => (FreeMonoid.{u1} α) -> M) (MonoidHom.hasCoeToFun.{u1, u2} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} M _inst_1)) f (FreeMonoid.of.{u1} α x)) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} M _inst_1)) (fun (_x : MonoidHom.{u1, u2} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} M _inst_1)) => (FreeMonoid.{u1} α) -> M) (MonoidHom.hasCoeToFun.{u1, u2} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} M _inst_1)) g (FreeMonoid.of.{u1} α x))) -> (Eq.{max (succ u2) (succ u1)} (MonoidHom.{u1, u2} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} M _inst_1)) f g)
-but is expected to have type
- forall {α : Type.{u2}} {M : Type.{u1}} [_inst_1 : Monoid.{u1} M] {{f : MonoidHom.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1)}} {{g : MonoidHom.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1)}}, (forall (x : α), Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : FreeMonoid.{u2} α) => M) (FreeMonoid.of.{u2} α x)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1)) (FreeMonoid.{u2} α) (fun (_x : FreeMonoid.{u2} α) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : FreeMonoid.{u2} α) => M) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1)) (FreeMonoid.{u2} α) M (MulOneClass.toMul.{u2} (FreeMonoid.{u2} α) (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α))))) (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M _inst_1)) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1)) (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1) (MonoidHom.monoidHomClass.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1)))) f (FreeMonoid.of.{u2} α x)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1)) (FreeMonoid.{u2} α) (fun (_x : FreeMonoid.{u2} α) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : FreeMonoid.{u2} α) => M) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1)) (FreeMonoid.{u2} α) M (MulOneClass.toMul.{u2} (FreeMonoid.{u2} α) (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α))))) (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M _inst_1)) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1)) (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1) (MonoidHom.monoidHomClass.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1)))) g (FreeMonoid.of.{u2} α x))) -> (Eq.{max (succ u2) (succ u1)} (MonoidHom.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1)) f g)
-Case conversion may be inaccurate. Consider using '#align free_monoid.hom_eq FreeMonoid.hom_eqₓ'. -/
@[ext, to_additive]
theorem hom_eq ⦃f g : FreeMonoid α →* M⦄ (h : ∀ x, f (of x) = g (of x)) : f = g :=
MonoidHom.ext fun l =>
@@ -333,12 +291,6 @@ def prodAux {M} [Monoid M] (l : List M) : M :=
#align free_add_monoid.sum_aux FreeAddMonoid.sumAux
-/
-/- warning: free_monoid.prod_aux_eq -> FreeMonoid.prodAux_eq is a dubious translation:
-lean 3 declaration is
- forall {M : Type.{u1}} [_inst_1 : Monoid.{u1} M] (l : List.{u1} M), Eq.{succ u1} M (FreeMonoid.prodAux.{u1} M _inst_1 l) (List.prod.{u1} M (MulOneClass.toHasMul.{u1} M (Monoid.toMulOneClass.{u1} M _inst_1)) (MulOneClass.toHasOne.{u1} M (Monoid.toMulOneClass.{u1} M _inst_1)) l)
-but is expected to have type
- forall {M : Type.{u1}} [_inst_1 : Monoid.{u1} M] (l : List.{u1} M), Eq.{succ u1} M (FreeMonoid.prodAux.{u1} M _inst_1 l) (List.prod.{u1} M (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M _inst_1)) (Monoid.toOne.{u1} M _inst_1) l)
-Case conversion may be inaccurate. Consider using '#align free_monoid.prod_aux_eq FreeMonoid.prodAux_eqₓ'. -/
@[to_additive]
theorem prodAux_eq : ∀ l : List M, FreeMonoid.prodAux l = l.Prod
| [] => rfl
@@ -346,12 +298,6 @@ theorem prodAux_eq : ∀ l : List M, FreeMonoid.prodAux l = l.Prod
#align free_monoid.prod_aux_eq FreeMonoid.prodAux_eq
#align free_add_monoid.sum_aux_eq FreeAddMonoid.sumAux_eq
-/- warning: free_monoid.lift -> FreeMonoid.lift is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : Monoid.{u2} M], Equiv.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (α -> M) (MonoidHom.{u1, u2} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} M _inst_1))
-but is expected to have type
- forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : Monoid.{u2} M], Equiv.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (α -> M) (MonoidHom.{u1, u2} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} M _inst_1))
-Case conversion may be inaccurate. Consider using '#align free_monoid.lift FreeMonoid.liftₓ'. -/
/-- Equivalence between maps `α → M` and monoid homomorphisms `free_monoid α →* M`. -/
@[to_additive
"Equivalence between maps `α → A` and additive monoid homomorphisms\n`free_add_monoid α →+ A`."]
@@ -366,92 +312,47 @@ def lift : (α → M) ≃ (FreeMonoid α →* M)
#align free_monoid.lift FreeMonoid.lift
#align free_add_monoid.lift FreeAddMonoid.lift
-/- warning: free_monoid.lift_symm_apply -> FreeMonoid.lift_symm_apply is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : Monoid.{u2} M] (f : MonoidHom.{u1, u2} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} M _inst_1)), Eq.{max (succ u1) (succ u2)} (α -> M) (coeFn.{max 1 (max (max (succ u2) (succ u1)) (succ u1) (succ u2)) (max (succ u1) (succ u2)) (succ u2) (succ u1), max (max (succ u2) (succ u1)) (succ u1) (succ u2)} (Equiv.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} M _inst_1)) (α -> M)) (fun (_x : Equiv.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} M _inst_1)) (α -> M)) => (MonoidHom.{u1, u2} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} M _inst_1)) -> α -> M) (Equiv.hasCoeToFun.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} M _inst_1)) (α -> M)) (Equiv.symm.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (α -> M) (MonoidHom.{u1, u2} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} M _inst_1)) (FreeMonoid.lift.{u1, u2} α M _inst_1)) f) (Function.comp.{succ u1, succ u1, succ u2} α (FreeMonoid.{u1} α) M (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} M _inst_1)) (fun (_x : MonoidHom.{u1, u2} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} M _inst_1)) => (FreeMonoid.{u1} α) -> M) (MonoidHom.hasCoeToFun.{u1, u2} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} M _inst_1)) f) (FreeMonoid.of.{u1} α))
-but is expected to have type
- forall {α : Type.{u2}} {M : Type.{u1}} [_inst_1 : Monoid.{u1} M] (f : MonoidHom.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1)), Eq.{max (succ u2) (succ u1)} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : MonoidHom.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1)) => α -> M) f) (FunLike.coe.{max (succ u1) (succ u2), max (succ u1) (succ u2), max (succ u1) (succ u2)} (Equiv.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (MonoidHom.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1)) (α -> M)) (MonoidHom.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1)) (fun (_x : MonoidHom.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1)) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : MonoidHom.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1)) => α -> M) _x) (Equiv.instFunLikeEquiv.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (MonoidHom.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1)) (α -> M)) (Equiv.symm.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (α -> M) (MonoidHom.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1)) (FreeMonoid.lift.{u2, u1} α M _inst_1)) f) (Function.comp.{succ u2, succ u2, succ u1} α (FreeMonoid.{u2} α) M (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1)) (FreeMonoid.{u2} α) (fun (_x : FreeMonoid.{u2} α) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : FreeMonoid.{u2} α) => M) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1)) (FreeMonoid.{u2} α) M (MulOneClass.toMul.{u2} (FreeMonoid.{u2} α) (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α))))) (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M _inst_1)) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1)) (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1) (MonoidHom.monoidHomClass.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1)))) f) (FreeMonoid.of.{u2} α))
-Case conversion may be inaccurate. Consider using '#align free_monoid.lift_symm_apply FreeMonoid.lift_symm_applyₓ'. -/
@[simp, to_additive]
theorem lift_symm_apply (f : FreeMonoid α →* M) : lift.symm f = f ∘ of :=
rfl
#align free_monoid.lift_symm_apply FreeMonoid.lift_symm_apply
#align free_add_monoid.lift_symm_apply FreeAddMonoid.lift_symm_apply
-/- warning: free_monoid.lift_apply -> FreeMonoid.lift_apply is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : Monoid.{u2} M] (f : α -> M) (l : FreeMonoid.{u1} α), Eq.{succ u2} M (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} M _inst_1)) (fun (_x : MonoidHom.{u1, u2} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} M _inst_1)) => (FreeMonoid.{u1} α) -> M) (MonoidHom.hasCoeToFun.{u1, u2} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} M _inst_1)) (coeFn.{max 1 (max (max (succ u1) (succ u2)) (succ u2) (succ u1)) (max (succ u2) (succ u1)) (succ u1) (succ u2), max (max (succ u1) (succ u2)) (succ u2) (succ u1)} (Equiv.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (α -> M) (MonoidHom.{u1, u2} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} M _inst_1))) (fun (_x : Equiv.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (α -> M) (MonoidHom.{u1, u2} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} M _inst_1))) => (α -> M) -> (MonoidHom.{u1, u2} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} M _inst_1))) (Equiv.hasCoeToFun.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (α -> M) (MonoidHom.{u1, u2} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} M _inst_1))) (FreeMonoid.lift.{u1, u2} α M _inst_1) f) l) (List.prod.{u2} M (MulOneClass.toHasMul.{u2} M (Monoid.toMulOneClass.{u2} M _inst_1)) (MulOneClass.toHasOne.{u2} M (Monoid.toMulOneClass.{u2} M _inst_1)) (List.map.{u1, u2} α M f (coeFn.{succ u1, succ u1} (Equiv.{succ u1, succ u1} (FreeMonoid.{u1} α) (List.{u1} α)) (fun (_x : Equiv.{succ u1, succ u1} (FreeMonoid.{u1} α) (List.{u1} α)) => (FreeMonoid.{u1} α) -> (List.{u1} α)) (Equiv.hasCoeToFun.{succ u1, succ u1} (FreeMonoid.{u1} α) (List.{u1} α)) (FreeMonoid.toList.{u1} α) l)))
-but is expected to have type
- forall {α : Type.{u2}} {M : Type.{u1}} [_inst_1 : Monoid.{u1} M] (f : α -> M) (l : FreeMonoid.{u2} α), Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : FreeMonoid.{u2} α) => M) l) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : α -> M) => MonoidHom.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1)) f) (FreeMonoid.{u2} α) (fun (_x : FreeMonoid.{u2} α) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : FreeMonoid.{u2} α) => M) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : α -> M) => MonoidHom.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1)) f) (FreeMonoid.{u2} α) M (MulOneClass.toMul.{u2} (FreeMonoid.{u2} α) (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α))))) (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M _inst_1)) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : α -> M) => MonoidHom.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1)) f) (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1) (MonoidHom.monoidHomClass.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1)))) (FunLike.coe.{max (succ u1) (succ u2), max (succ u1) (succ u2), max (succ u1) (succ u2)} (Equiv.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (α -> M) (MonoidHom.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1))) (α -> M) (fun (_x : α -> M) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : α -> M) => MonoidHom.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1)) _x) (Equiv.instFunLikeEquiv.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (α -> M) (MonoidHom.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1))) (FreeMonoid.lift.{u2, u1} α M _inst_1) f) l) (List.prod.{u1} M (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M _inst_1)) (Monoid.toOne.{u1} M _inst_1) (List.map.{u2, u1} α M f (FunLike.coe.{succ u2, succ u2, succ u2} (Equiv.{succ u2, succ u2} (FreeMonoid.{u2} α) (List.{u2} α)) (FreeMonoid.{u2} α) (fun (_x : FreeMonoid.{u2} α) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : FreeMonoid.{u2} α) => List.{u2} α) _x) (Equiv.instFunLikeEquiv.{succ u2, succ u2} (FreeMonoid.{u2} α) (List.{u2} α)) (FreeMonoid.toList.{u2} α) l)))
-Case conversion may be inaccurate. Consider using '#align free_monoid.lift_apply FreeMonoid.lift_applyₓ'. -/
@[to_additive]
theorem lift_apply (f : α → M) (l : FreeMonoid α) : lift f l = (l.toList.map f).Prod :=
prodAux_eq _
#align free_monoid.lift_apply FreeMonoid.lift_apply
#align free_add_monoid.lift_apply FreeAddMonoid.lift_apply
-/- warning: free_monoid.lift_comp_of -> FreeMonoid.lift_comp_of is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : Monoid.{u2} M] (f : α -> M), Eq.{max (succ u1) (succ u2)} (α -> M) (Function.comp.{succ u1, succ u1, succ u2} α (FreeMonoid.{u1} α) M (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} M _inst_1)) (fun (_x : MonoidHom.{u1, u2} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} M _inst_1)) => (FreeMonoid.{u1} α) -> M) (MonoidHom.hasCoeToFun.{u1, u2} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} M _inst_1)) (coeFn.{max 1 (max (max (succ u1) (succ u2)) (succ u2) (succ u1)) (max (succ u2) (succ u1)) (succ u1) (succ u2), max (max (succ u1) (succ u2)) (succ u2) (succ u1)} (Equiv.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (α -> M) (MonoidHom.{u1, u2} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} M _inst_1))) (fun (_x : Equiv.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (α -> M) (MonoidHom.{u1, u2} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} M _inst_1))) => (α -> M) -> (MonoidHom.{u1, u2} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} M _inst_1))) (Equiv.hasCoeToFun.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (α -> M) (MonoidHom.{u1, u2} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} M _inst_1))) (FreeMonoid.lift.{u1, u2} α M _inst_1) f)) (FreeMonoid.of.{u1} α)) f
-but is expected to have type
- forall {α : Type.{u2}} {M : Type.{u1}} [_inst_1 : Monoid.{u1} M] (f : α -> M), Eq.{max (succ u2) (succ u1)} (α -> M) (Function.comp.{succ u2, succ u2, succ u1} α (FreeMonoid.{u2} α) M (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : α -> M) => MonoidHom.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1)) f) (FreeMonoid.{u2} α) (fun (_x : FreeMonoid.{u2} α) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : FreeMonoid.{u2} α) => M) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : α -> M) => MonoidHom.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1)) f) (FreeMonoid.{u2} α) M (MulOneClass.toMul.{u2} (FreeMonoid.{u2} α) (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α))))) (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M _inst_1)) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : α -> M) => MonoidHom.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1)) f) (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1) (MonoidHom.monoidHomClass.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1)))) (FunLike.coe.{max (succ u1) (succ u2), max (succ u1) (succ u2), max (succ u1) (succ u2)} (Equiv.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (α -> M) (MonoidHom.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1))) (α -> M) (fun (_x : α -> M) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : α -> M) => MonoidHom.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1)) _x) (Equiv.instFunLikeEquiv.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (α -> M) (MonoidHom.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1))) (FreeMonoid.lift.{u2, u1} α M _inst_1) f)) (FreeMonoid.of.{u2} α)) f
-Case conversion may be inaccurate. Consider using '#align free_monoid.lift_comp_of FreeMonoid.lift_comp_ofₓ'. -/
@[to_additive]
theorem lift_comp_of (f : α → M) : lift f ∘ of = f :=
rfl
#align free_monoid.lift_comp_of FreeMonoid.lift_comp_of
#align free_add_monoid.lift_comp_of FreeAddMonoid.lift_comp_of
-/- warning: free_monoid.lift_eval_of -> FreeMonoid.lift_eval_of is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : Monoid.{u2} M] (f : α -> M) (x : α), Eq.{succ u2} M (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} M _inst_1)) (fun (_x : MonoidHom.{u1, u2} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} M _inst_1)) => (FreeMonoid.{u1} α) -> M) (MonoidHom.hasCoeToFun.{u1, u2} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} M _inst_1)) (coeFn.{max 1 (max (max (succ u1) (succ u2)) (succ u2) (succ u1)) (max (succ u2) (succ u1)) (succ u1) (succ u2), max (max (succ u1) (succ u2)) (succ u2) (succ u1)} (Equiv.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (α -> M) (MonoidHom.{u1, u2} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} M _inst_1))) (fun (_x : Equiv.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (α -> M) (MonoidHom.{u1, u2} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} M _inst_1))) => (α -> M) -> (MonoidHom.{u1, u2} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} M _inst_1))) (Equiv.hasCoeToFun.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (α -> M) (MonoidHom.{u1, u2} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} M _inst_1))) (FreeMonoid.lift.{u1, u2} α M _inst_1) f) (FreeMonoid.of.{u1} α x)) (f x)
-but is expected to have type
- forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : Monoid.{u2} M] (f : α -> M) (x : α), Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : FreeMonoid.{u1} α) => M) (FreeMonoid.of.{u1} α x)) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : α -> M) => MonoidHom.{u1, u2} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} M _inst_1)) f) (FreeMonoid.{u1} α) (fun (_x : FreeMonoid.{u1} α) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : FreeMonoid.{u1} α) => M) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : α -> M) => MonoidHom.{u1, u2} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} M _inst_1)) f) (FreeMonoid.{u1} α) M (MulOneClass.toMul.{u1} (FreeMonoid.{u1} α) (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α))))) (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M _inst_1)) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : α -> M) => MonoidHom.{u1, u2} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} M _inst_1)) f) (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} M _inst_1) (MonoidHom.monoidHomClass.{u1, u2} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} M _inst_1)))) (FunLike.coe.{max (succ u2) (succ u1), max (succ u2) (succ u1), max (succ u2) (succ u1)} (Equiv.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (α -> M) (MonoidHom.{u1, u2} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} M _inst_1))) (α -> M) (fun (_x : α -> M) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : α -> M) => MonoidHom.{u1, u2} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} M _inst_1)) _x) (Equiv.instFunLikeEquiv.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (α -> M) (MonoidHom.{u1, u2} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} M _inst_1))) (FreeMonoid.lift.{u1, u2} α M _inst_1) f) (FreeMonoid.of.{u1} α x)) (f x)
-Case conversion may be inaccurate. Consider using '#align free_monoid.lift_eval_of FreeMonoid.lift_eval_ofₓ'. -/
@[simp, to_additive]
theorem lift_eval_of (f : α → M) (x : α) : lift f (of x) = f x :=
rfl
#align free_monoid.lift_eval_of FreeMonoid.lift_eval_of
#align free_add_monoid.lift_eval_of FreeAddMonoid.lift_eval_of
-/- warning: free_monoid.lift_restrict -> FreeMonoid.lift_restrict is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : Monoid.{u2} M] (f : MonoidHom.{u1, u2} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} M _inst_1)), Eq.{max (succ u2) (succ u1)} (MonoidHom.{u1, u2} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} M _inst_1)) (coeFn.{max 1 (max (max (succ u1) (succ u2)) (succ u2) (succ u1)) (max (succ u2) (succ u1)) (succ u1) (succ u2), max (max (succ u1) (succ u2)) (succ u2) (succ u1)} (Equiv.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (α -> M) (MonoidHom.{u1, u2} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} M _inst_1))) (fun (_x : Equiv.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (α -> M) (MonoidHom.{u1, u2} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} M _inst_1))) => (α -> M) -> (MonoidHom.{u1, u2} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} M _inst_1))) (Equiv.hasCoeToFun.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (α -> M) (MonoidHom.{u1, u2} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} M _inst_1))) (FreeMonoid.lift.{u1, u2} α M _inst_1) (Function.comp.{succ u1, succ u1, succ u2} α (FreeMonoid.{u1} α) M (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} M _inst_1)) (fun (_x : MonoidHom.{u1, u2} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} M _inst_1)) => (FreeMonoid.{u1} α) -> M) (MonoidHom.hasCoeToFun.{u1, u2} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} M _inst_1)) f) (FreeMonoid.of.{u1} α))) f
-but is expected to have type
- forall {α : Type.{u2}} {M : Type.{u1}} [_inst_1 : Monoid.{u1} M] (f : MonoidHom.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1)), Eq.{max (succ u2) (succ u1)} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : α -> M) => MonoidHom.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1)) (Function.comp.{succ u2, succ u2, succ u1} α (FreeMonoid.{u2} α) M (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1)) (FreeMonoid.{u2} α) (fun (a : FreeMonoid.{u2} α) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : FreeMonoid.{u2} α) => M) a) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1)) (FreeMonoid.{u2} α) M (MulOneClass.toMul.{u2} (FreeMonoid.{u2} α) (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α))))) (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M _inst_1)) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1)) (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1) (MonoidHom.monoidHomClass.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1)))) f) (FreeMonoid.of.{u2} α))) (FunLike.coe.{max (succ u1) (succ u2), max (succ u1) (succ u2), max (succ u1) (succ u2)} (Equiv.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (α -> M) (MonoidHom.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1))) (α -> M) (fun (_x : α -> M) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : α -> M) => MonoidHom.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1)) _x) (Equiv.instFunLikeEquiv.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (α -> M) (MonoidHom.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1))) (FreeMonoid.lift.{u2, u1} α M _inst_1) (Function.comp.{succ u2, succ u2, succ u1} α (FreeMonoid.{u2} α) M (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1)) (FreeMonoid.{u2} α) (fun (_x : FreeMonoid.{u2} α) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : FreeMonoid.{u2} α) => M) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1)) (FreeMonoid.{u2} α) M (MulOneClass.toMul.{u2} (FreeMonoid.{u2} α) (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α))))) (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M _inst_1)) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1)) (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1) (MonoidHom.monoidHomClass.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1)))) f) (FreeMonoid.of.{u2} α))) f
-Case conversion may be inaccurate. Consider using '#align free_monoid.lift_restrict FreeMonoid.lift_restrictₓ'. -/
@[simp, to_additive]
theorem lift_restrict (f : FreeMonoid α →* M) : lift (f ∘ of) = f :=
lift.apply_symm_apply f
#align free_monoid.lift_restrict FreeMonoid.lift_restrict
#align free_add_monoid.lift_restrict FreeAddMonoid.lift_restrict
-/- warning: free_monoid.comp_lift -> FreeMonoid.comp_lift is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : Monoid.{u2} M] {N : Type.{u3}} [_inst_2 : Monoid.{u3} N] (g : MonoidHom.{u2, u3} M N (Monoid.toMulOneClass.{u2} M _inst_1) (Monoid.toMulOneClass.{u3} N _inst_2)) (f : α -> M), Eq.{max (succ u3) (succ u1)} (MonoidHom.{u1, u3} (FreeMonoid.{u1} α) N (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u3} N _inst_2)) (MonoidHom.comp.{u1, u2, u3} (FreeMonoid.{u1} α) M N (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} M _inst_1) (Monoid.toMulOneClass.{u3} N _inst_2) g (coeFn.{max 1 (max (max (succ u1) (succ u2)) (succ u2) (succ u1)) (max (succ u2) (succ u1)) (succ u1) (succ u2), max (max (succ u1) (succ u2)) (succ u2) (succ u1)} (Equiv.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (α -> M) (MonoidHom.{u1, u2} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} M _inst_1))) (fun (_x : Equiv.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (α -> M) (MonoidHom.{u1, u2} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} M _inst_1))) => (α -> M) -> (MonoidHom.{u1, u2} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} M _inst_1))) (Equiv.hasCoeToFun.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (α -> M) (MonoidHom.{u1, u2} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} M _inst_1))) (FreeMonoid.lift.{u1, u2} α M _inst_1) f)) (coeFn.{max 1 (max (max (succ u1) (succ u3)) (succ u3) (succ u1)) (max (succ u3) (succ u1)) (succ u1) (succ u3), max (max (succ u1) (succ u3)) (succ u3) (succ u1)} (Equiv.{max (succ u1) (succ u3), max (succ u3) (succ u1)} (α -> N) (MonoidHom.{u1, u3} (FreeMonoid.{u1} α) N (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u3} N _inst_2))) (fun (_x : Equiv.{max (succ u1) (succ u3), max (succ u3) (succ u1)} (α -> N) (MonoidHom.{u1, u3} (FreeMonoid.{u1} α) N (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u3} N _inst_2))) => (α -> N) -> (MonoidHom.{u1, u3} (FreeMonoid.{u1} α) N (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u3} N _inst_2))) (Equiv.hasCoeToFun.{max (succ u1) (succ u3), max (succ u3) (succ u1)} (α -> N) (MonoidHom.{u1, u3} (FreeMonoid.{u1} α) N (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u3} N _inst_2))) (FreeMonoid.lift.{u1, u3} α N _inst_2) (Function.comp.{succ u1, succ u2, succ u3} α M N (coeFn.{max (succ u3) (succ u2), max (succ u2) (succ u3)} (MonoidHom.{u2, u3} M N (Monoid.toMulOneClass.{u2} M _inst_1) (Monoid.toMulOneClass.{u3} N _inst_2)) (fun (_x : MonoidHom.{u2, u3} M N (Monoid.toMulOneClass.{u2} M _inst_1) (Monoid.toMulOneClass.{u3} N _inst_2)) => M -> N) (MonoidHom.hasCoeToFun.{u2, u3} M N (Monoid.toMulOneClass.{u2} M _inst_1) (Monoid.toMulOneClass.{u3} N _inst_2)) g) f))
-but is expected to have type
- forall {α : Type.{u1}} {M : Type.{u3}} [_inst_1 : Monoid.{u3} M] {N : Type.{u2}} [_inst_2 : Monoid.{u2} N] (g : MonoidHom.{u3, u2} M N (Monoid.toMulOneClass.{u3} M _inst_1) (Monoid.toMulOneClass.{u2} N _inst_2)) (f : α -> M), Eq.{max (succ u1) (succ u2)} (MonoidHom.{u1, u2} (FreeMonoid.{u1} α) N (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} N _inst_2)) (MonoidHom.comp.{u1, u3, u2} (FreeMonoid.{u1} α) M N (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α)))) (Monoid.toMulOneClass.{u3} M _inst_1) (Monoid.toMulOneClass.{u2} N _inst_2) g (FunLike.coe.{max (succ u3) (succ u1), max (succ u3) (succ u1), max (succ u3) (succ u1)} (Equiv.{max (succ u1) (succ u3), max (succ u3) (succ u1)} (α -> M) (MonoidHom.{u1, u3} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α)))) (Monoid.toMulOneClass.{u3} M _inst_1))) (α -> M) (fun (_x : α -> M) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : α -> M) => MonoidHom.{u1, u3} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α)))) (Monoid.toMulOneClass.{u3} M _inst_1)) _x) (Equiv.instFunLikeEquiv.{max (succ u3) (succ u1), max (succ u3) (succ u1)} (α -> M) (MonoidHom.{u1, u3} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α)))) (Monoid.toMulOneClass.{u3} M _inst_1))) (FreeMonoid.lift.{u1, u3} α M _inst_1) f)) (FunLike.coe.{max (succ u2) (succ u1), max (succ u2) (succ u1), max (succ u2) (succ u1)} (Equiv.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (α -> N) (MonoidHom.{u1, u2} (FreeMonoid.{u1} α) N (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} N _inst_2))) (α -> N) (fun (_x : α -> N) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : α -> N) => MonoidHom.{u1, u2} (FreeMonoid.{u1} α) N (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} N _inst_2)) _x) (Equiv.instFunLikeEquiv.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (α -> N) (MonoidHom.{u1, u2} (FreeMonoid.{u1} α) N (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} N _inst_2))) (FreeMonoid.lift.{u1, u2} α N _inst_2) (Function.comp.{succ u1, succ u3, succ u2} α M N (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} M N (Monoid.toMulOneClass.{u3} M _inst_1) (Monoid.toMulOneClass.{u2} N _inst_2)) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) _x) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M N (Monoid.toMulOneClass.{u3} M _inst_1) (Monoid.toMulOneClass.{u2} N _inst_2)) M N (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M _inst_1)) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N _inst_2)) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M N (Monoid.toMulOneClass.{u3} M _inst_1) (Monoid.toMulOneClass.{u2} N _inst_2)) M N (Monoid.toMulOneClass.{u3} M _inst_1) (Monoid.toMulOneClass.{u2} N _inst_2) (MonoidHom.monoidHomClass.{u3, u2} M N (Monoid.toMulOneClass.{u3} M _inst_1) (Monoid.toMulOneClass.{u2} N _inst_2)))) g) f))
-Case conversion may be inaccurate. Consider using '#align free_monoid.comp_lift FreeMonoid.comp_liftₓ'. -/
@[to_additive]
theorem comp_lift (g : M →* N) (f : α → M) : g.comp (lift f) = lift (g ∘ f) := by ext; simp
#align free_monoid.comp_lift FreeMonoid.comp_lift
#align free_add_monoid.comp_lift FreeAddMonoid.comp_lift
-/- warning: free_monoid.hom_map_lift -> FreeMonoid.hom_map_lift is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align free_monoid.hom_map_lift FreeMonoid.hom_map_liftₓ'. -/
@[to_additive]
theorem hom_map_lift (g : M →* N) (f : α → M) (x : FreeMonoid α) : g (lift f x) = lift (g ∘ f) x :=
MonoidHom.ext_iff.1 (comp_lift g f) x
#align free_monoid.hom_map_lift FreeMonoid.hom_map_lift
#align free_add_monoid.hom_map_lift FreeAddMonoid.hom_map_lift
-/- warning: free_monoid.mk_mul_action -> FreeMonoid.mkMulAction is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}}, (α -> β -> β) -> (MulAction.{u1, u2} (FreeMonoid.{u1} α) β (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α))))
-but is expected to have type
- forall {α : Type.{u1}} {β : Type.{u2}}, (α -> β -> β) -> (MulAction.{u1, u2} (FreeMonoid.{u1} α) β (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α))))
-Case conversion may be inaccurate. Consider using '#align free_monoid.mk_mul_action FreeMonoid.mkMulActionₓ'. -/
/-- Define a multiplicative action of `free_monoid α` on `β`. -/
@[to_additive "Define an additive action of `free_add_monoid α` on `β`."]
def mkMulAction (f : α → β → β) : MulAction (FreeMonoid α) β
@@ -462,12 +363,6 @@ def mkMulAction (f : α → β → β) : MulAction (FreeMonoid α) β
#align free_monoid.mk_mul_action FreeMonoid.mkMulAction
#align free_add_monoid.mk_add_action FreeAddMonoid.mkAddAction
-/- warning: free_monoid.smul_def -> FreeMonoid.smul_def is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} (f : α -> β -> β) (l : FreeMonoid.{u1} α) (b : β), Eq.{succ u2} β (SMul.smul.{u1, u2} (FreeMonoid.{u1} α) β (MulAction.toHasSmul.{u1, u2} (FreeMonoid.{u1} α) β (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α))) (FreeMonoid.mkMulAction.{u1, u2} α β f)) l b) (List.foldr.{u1, u2} α β f b (coeFn.{succ u1, succ u1} (Equiv.{succ u1, succ u1} (FreeMonoid.{u1} α) (List.{u1} α)) (fun (_x : Equiv.{succ u1, succ u1} (FreeMonoid.{u1} α) (List.{u1} α)) => (FreeMonoid.{u1} α) -> (List.{u1} α)) (Equiv.hasCoeToFun.{succ u1, succ u1} (FreeMonoid.{u1} α) (List.{u1} α)) (FreeMonoid.toList.{u1} α) l))
-but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u1}} (f : α -> β -> β) (l : FreeMonoid.{u2} α) (b : β), Eq.{succ u1} β (HSMul.hSMul.{u2, u1, u1} (FreeMonoid.{u2} α) β β (instHSMul.{u2, u1} (FreeMonoid.{u2} α) β (MulAction.toSMul.{u2, u1} (FreeMonoid.{u2} α) β (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α))) (FreeMonoid.mkMulAction.{u2, u1} α β f))) l b) (List.foldr.{u2, u1} α β f b (FunLike.coe.{succ u2, succ u2, succ u2} (Equiv.{succ u2, succ u2} (FreeMonoid.{u2} α) (List.{u2} α)) (FreeMonoid.{u2} α) (fun (_x : FreeMonoid.{u2} α) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : FreeMonoid.{u2} α) => List.{u2} α) _x) (Equiv.instFunLikeEquiv.{succ u2, succ u2} (FreeMonoid.{u2} α) (List.{u2} α)) (FreeMonoid.toList.{u2} α) l))
-Case conversion may be inaccurate. Consider using '#align free_monoid.smul_def FreeMonoid.smul_defₓ'. -/
@[to_additive]
theorem smul_def (f : α → β → β) (l : FreeMonoid α) (b : β) :
haveI := mk_mul_action f
@@ -476,12 +371,6 @@ theorem smul_def (f : α → β → β) (l : FreeMonoid α) (b : β) :
#align free_monoid.smul_def FreeMonoid.smul_def
#align free_add_monoid.vadd_def FreeAddMonoid.vadd_def
-/- warning: free_monoid.of_list_smul -> FreeMonoid.ofList_smul is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} (f : α -> β -> β) (l : List.{u1} α) (b : β), Eq.{succ u2} β (SMul.smul.{u1, u2} (FreeMonoid.{u1} α) β (MulAction.toHasSmul.{u1, u2} (FreeMonoid.{u1} α) β (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α))) (FreeMonoid.mkMulAction.{u1, u2} α β f)) (coeFn.{succ u1, succ u1} (Equiv.{succ u1, succ u1} (List.{u1} α) (FreeMonoid.{u1} α)) (fun (_x : Equiv.{succ u1, succ u1} (List.{u1} α) (FreeMonoid.{u1} α)) => (List.{u1} α) -> (FreeMonoid.{u1} α)) (Equiv.hasCoeToFun.{succ u1, succ u1} (List.{u1} α) (FreeMonoid.{u1} α)) (FreeMonoid.ofList.{u1} α) l) b) (List.foldr.{u1, u2} α β f b l)
-but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u1}} (f : α -> β -> β) (l : List.{u2} α) (b : β), Eq.{succ u1} β (HSMul.hSMul.{u2, u1, u1} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : List.{u2} α) => FreeMonoid.{u2} α) l) β β (instHSMul.{u2, u1} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : List.{u2} α) => FreeMonoid.{u2} α) l) β (MulAction.toSMul.{u2, u1} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : List.{u2} α) => FreeMonoid.{u2} α) l) β (RightCancelMonoid.toMonoid.{u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : List.{u2} α) => FreeMonoid.{u2} α) l) (CancelMonoid.toRightCancelMonoid.{u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : List.{u2} α) => FreeMonoid.{u2} α) l) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α))) (FreeMonoid.mkMulAction.{u2, u1} α β f))) (FunLike.coe.{succ u2, succ u2, succ u2} (Equiv.{succ u2, succ u2} (List.{u2} α) (FreeMonoid.{u2} α)) (List.{u2} α) (fun (_x : List.{u2} α) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : List.{u2} α) => FreeMonoid.{u2} α) _x) (Equiv.instFunLikeEquiv.{succ u2, succ u2} (List.{u2} α) (FreeMonoid.{u2} α)) (FreeMonoid.ofList.{u2} α) l) b) (List.foldr.{u2, u1} α β f b l)
-Case conversion may be inaccurate. Consider using '#align free_monoid.of_list_smul FreeMonoid.ofList_smulₓ'. -/
@[to_additive]
theorem ofList_smul (f : α → β → β) (l : List α) (b : β) :
haveI := mk_mul_action f
@@ -501,12 +390,6 @@ theorem of_smul (f : α → β → β) (x : α) (y : β) :
#align free_add_monoid.of_vadd FreeAddMonoid.of_vadd
-/
-/- warning: free_monoid.map -> FreeMonoid.map is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}}, (α -> β) -> (MonoidHom.{u1, u2} (FreeMonoid.{u1} α) (FreeMonoid.{u2} β) (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} β) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} β) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} β) (FreeMonoid.cancelMonoid.{u2} β)))))
-but is expected to have type
- forall {α : Type.{u1}} {β : Type.{u2}}, (α -> β) -> (MonoidHom.{u1, u2} (FreeMonoid.{u1} α) (FreeMonoid.{u2} β) (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} β) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} β) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} β) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} β)))))
-Case conversion may be inaccurate. Consider using '#align free_monoid.map FreeMonoid.mapₓ'. -/
/-- The unique monoid homomorphism `free_monoid α →* free_monoid β` that sends
each `of x` to `of (f x)`. -/
@[to_additive
@@ -519,72 +402,36 @@ def map (f : α → β) : FreeMonoid α →* FreeMonoid β
#align free_monoid.map FreeMonoid.map
#align free_add_monoid.map FreeAddMonoid.map
-/- warning: free_monoid.map_of -> FreeMonoid.map_of is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} (f : α -> β) (x : α), Eq.{succ u2} (FreeMonoid.{u2} β) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} (FreeMonoid.{u1} α) (FreeMonoid.{u2} β) (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} β) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} β) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} β) (FreeMonoid.cancelMonoid.{u2} β))))) (fun (_x : MonoidHom.{u1, u2} (FreeMonoid.{u1} α) (FreeMonoid.{u2} β) (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} β) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} β) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} β) (FreeMonoid.cancelMonoid.{u2} β))))) => (FreeMonoid.{u1} α) -> (FreeMonoid.{u2} β)) (MonoidHom.hasCoeToFun.{u1, u2} (FreeMonoid.{u1} α) (FreeMonoid.{u2} β) (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} β) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} β) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} β) (FreeMonoid.cancelMonoid.{u2} β))))) (FreeMonoid.map.{u1, u2} α β f) (FreeMonoid.of.{u1} α x)) (FreeMonoid.of.{u2} β (f x))
-but is expected to have type
- forall {α : Type.{u1}} {β : Type.{u2}} (f : α -> β) (x : α), Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : FreeMonoid.{u1} α) => FreeMonoid.{u2} β) (FreeMonoid.of.{u1} α x)) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} (FreeMonoid.{u1} α) (FreeMonoid.{u2} β) (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} β) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} β) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} β) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} β))))) (FreeMonoid.{u1} α) (fun (_x : FreeMonoid.{u1} α) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : FreeMonoid.{u1} α) => FreeMonoid.{u2} β) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} (FreeMonoid.{u1} α) (FreeMonoid.{u2} β) (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} β) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} β) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} β) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} β))))) (FreeMonoid.{u1} α) (FreeMonoid.{u2} β) (MulOneClass.toMul.{u1} (FreeMonoid.{u1} α) (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α))))) (MulOneClass.toMul.{u2} (FreeMonoid.{u2} β) (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} β) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} β) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} β) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} β))))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} (FreeMonoid.{u1} α) (FreeMonoid.{u2} β) (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} β) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} β) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} β) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} β))))) (FreeMonoid.{u1} α) (FreeMonoid.{u2} β) (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} β) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} β) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} β) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} β)))) (MonoidHom.monoidHomClass.{u1, u2} (FreeMonoid.{u1} α) (FreeMonoid.{u2} β) (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} β) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} β) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} β) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} β))))))) (FreeMonoid.map.{u1, u2} α β f) (FreeMonoid.of.{u1} α x)) (FreeMonoid.of.{u2} β (f x))
-Case conversion may be inaccurate. Consider using '#align free_monoid.map_of FreeMonoid.map_ofₓ'. -/
@[simp, to_additive]
theorem map_of (f : α → β) (x : α) : map f (of x) = of (f x) :=
rfl
#align free_monoid.map_of FreeMonoid.map_of
#align free_add_monoid.map_of FreeAddMonoid.map_of
-/- warning: free_monoid.to_list_map -> FreeMonoid.toList_map is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} (f : α -> β) (xs : FreeMonoid.{u1} α), Eq.{succ u2} (List.{u2} β) (coeFn.{succ u2, succ u2} (Equiv.{succ u2, succ u2} (FreeMonoid.{u2} β) (List.{u2} β)) (fun (_x : Equiv.{succ u2, succ u2} (FreeMonoid.{u2} β) (List.{u2} β)) => (FreeMonoid.{u2} β) -> (List.{u2} β)) (Equiv.hasCoeToFun.{succ u2, succ u2} (FreeMonoid.{u2} β) (List.{u2} β)) (FreeMonoid.toList.{u2} β) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} (FreeMonoid.{u1} α) (FreeMonoid.{u2} β) (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} β) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} β) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} β) (FreeMonoid.cancelMonoid.{u2} β))))) (fun (_x : MonoidHom.{u1, u2} (FreeMonoid.{u1} α) (FreeMonoid.{u2} β) (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} β) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} β) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} β) (FreeMonoid.cancelMonoid.{u2} β))))) => (FreeMonoid.{u1} α) -> (FreeMonoid.{u2} β)) (MonoidHom.hasCoeToFun.{u1, u2} (FreeMonoid.{u1} α) (FreeMonoid.{u2} β) (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} β) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} β) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} β) (FreeMonoid.cancelMonoid.{u2} β))))) (FreeMonoid.map.{u1, u2} α β f) xs)) (List.map.{u1, u2} α β f (coeFn.{succ u1, succ u1} (Equiv.{succ u1, succ u1} (FreeMonoid.{u1} α) (List.{u1} α)) (fun (_x : Equiv.{succ u1, succ u1} (FreeMonoid.{u1} α) (List.{u1} α)) => (FreeMonoid.{u1} α) -> (List.{u1} α)) (Equiv.hasCoeToFun.{succ u1, succ u1} (FreeMonoid.{u1} α) (List.{u1} α)) (FreeMonoid.toList.{u1} α) xs))
-but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u1}} (f : α -> β) (xs : FreeMonoid.{u2} α), Eq.{succ u1} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : FreeMonoid.{u1} β) => List.{u1} β) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} (FreeMonoid.{u2} α) (FreeMonoid.{u1} β) (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} β) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} β) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} β) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} β))))) (FreeMonoid.{u2} α) (fun (a : FreeMonoid.{u2} α) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : FreeMonoid.{u2} α) => FreeMonoid.{u1} β) a) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (FreeMonoid.{u2} α) (FreeMonoid.{u1} β) (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} β) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} β) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} β) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} β))))) (FreeMonoid.{u2} α) (FreeMonoid.{u1} β) (MulOneClass.toMul.{u2} (FreeMonoid.{u2} α) (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α))))) (MulOneClass.toMul.{u1} (FreeMonoid.{u1} β) (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} β) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} β) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} β) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} β))))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (FreeMonoid.{u2} α) (FreeMonoid.{u1} β) (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} β) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} β) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} β) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} β))))) (FreeMonoid.{u2} α) (FreeMonoid.{u1} β) (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} β) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} β) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} β) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} β)))) (MonoidHom.monoidHomClass.{u2, u1} (FreeMonoid.{u2} α) (FreeMonoid.{u1} β) (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} β) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} β) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} β) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} β))))))) (FreeMonoid.map.{u2, u1} α β f) xs)) (FunLike.coe.{succ u1, succ u1, succ u1} (Equiv.{succ u1, succ u1} (FreeMonoid.{u1} β) (List.{u1} β)) (FreeMonoid.{u1} β) (fun (_x : FreeMonoid.{u1} β) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : FreeMonoid.{u1} β) => List.{u1} β) _x) (Equiv.instFunLikeEquiv.{succ u1, succ u1} (FreeMonoid.{u1} β) (List.{u1} β)) (FreeMonoid.toList.{u1} β) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} (FreeMonoid.{u2} α) (FreeMonoid.{u1} β) (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} β) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} β) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} β) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} β))))) (FreeMonoid.{u2} α) (fun (_x : FreeMonoid.{u2} α) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : FreeMonoid.{u2} α) => FreeMonoid.{u1} β) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (FreeMonoid.{u2} α) (FreeMonoid.{u1} β) (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} β) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} β) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} β) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} β))))) (FreeMonoid.{u2} α) (FreeMonoid.{u1} β) (MulOneClass.toMul.{u2} (FreeMonoid.{u2} α) (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α))))) (MulOneClass.toMul.{u1} (FreeMonoid.{u1} β) (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} β) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} β) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} β) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} β))))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (FreeMonoid.{u2} α) (FreeMonoid.{u1} β) (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} β) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} β) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} β) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} β))))) (FreeMonoid.{u2} α) (FreeMonoid.{u1} β) (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} β) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} β) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} β) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} β)))) (MonoidHom.monoidHomClass.{u2, u1} (FreeMonoid.{u2} α) (FreeMonoid.{u1} β) (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} β) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} β) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} β) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} β))))))) (FreeMonoid.map.{u2, u1} α β f) xs)) (List.map.{u2, u1} α β f (FunLike.coe.{succ u2, succ u2, succ u2} (Equiv.{succ u2, succ u2} (FreeMonoid.{u2} α) (List.{u2} α)) (FreeMonoid.{u2} α) (fun (_x : FreeMonoid.{u2} α) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : FreeMonoid.{u2} α) => List.{u2} α) _x) (Equiv.instFunLikeEquiv.{succ u2, succ u2} (FreeMonoid.{u2} α) (List.{u2} α)) (FreeMonoid.toList.{u2} α) xs))
-Case conversion may be inaccurate. Consider using '#align free_monoid.to_list_map FreeMonoid.toList_mapₓ'. -/
@[to_additive]
theorem toList_map (f : α → β) (xs : FreeMonoid α) : (map f xs).toList = xs.toList.map f :=
rfl
#align free_monoid.to_list_map FreeMonoid.toList_map
#align free_add_monoid.to_list_map FreeAddMonoid.toList_map
-/- warning: free_monoid.of_list_map -> FreeMonoid.ofList_map is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} (f : α -> β) (xs : List.{u1} α), Eq.{succ u2} (FreeMonoid.{u2} β) (coeFn.{succ u2, succ u2} (Equiv.{succ u2, succ u2} (List.{u2} β) (FreeMonoid.{u2} β)) (fun (_x : Equiv.{succ u2, succ u2} (List.{u2} β) (FreeMonoid.{u2} β)) => (List.{u2} β) -> (FreeMonoid.{u2} β)) (Equiv.hasCoeToFun.{succ u2, succ u2} (List.{u2} β) (FreeMonoid.{u2} β)) (FreeMonoid.ofList.{u2} β) (List.map.{u1, u2} α β f xs)) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} (FreeMonoid.{u1} α) (FreeMonoid.{u2} β) (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} β) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} β) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} β) (FreeMonoid.cancelMonoid.{u2} β))))) (fun (_x : MonoidHom.{u1, u2} (FreeMonoid.{u1} α) (FreeMonoid.{u2} β) (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} β) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} β) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} β) (FreeMonoid.cancelMonoid.{u2} β))))) => (FreeMonoid.{u1} α) -> (FreeMonoid.{u2} β)) (MonoidHom.hasCoeToFun.{u1, u2} (FreeMonoid.{u1} α) (FreeMonoid.{u2} β) (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} β) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} β) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} β) (FreeMonoid.cancelMonoid.{u2} β))))) (FreeMonoid.map.{u1, u2} α β f) (coeFn.{succ u1, succ u1} (Equiv.{succ u1, succ u1} (List.{u1} α) (FreeMonoid.{u1} α)) (fun (_x : Equiv.{succ u1, succ u1} (List.{u1} α) (FreeMonoid.{u1} α)) => (List.{u1} α) -> (FreeMonoid.{u1} α)) (Equiv.hasCoeToFun.{succ u1, succ u1} (List.{u1} α) (FreeMonoid.{u1} α)) (FreeMonoid.ofList.{u1} α) xs))
-but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u1}} (f : α -> β) (xs : List.{u2} α), Eq.{succ u1} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : List.{u1} β) => FreeMonoid.{u1} β) (List.map.{u2, u1} α β f xs)) (FunLike.coe.{succ u1, succ u1, succ u1} (Equiv.{succ u1, succ u1} (List.{u1} β) (FreeMonoid.{u1} β)) (List.{u1} β) (fun (_x : List.{u1} β) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : List.{u1} β) => FreeMonoid.{u1} β) _x) (Equiv.instFunLikeEquiv.{succ u1, succ u1} (List.{u1} β) (FreeMonoid.{u1} β)) (FreeMonoid.ofList.{u1} β) (List.map.{u2, u1} α β f xs)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} (FreeMonoid.{u2} α) (FreeMonoid.{u1} β) (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} β) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} β) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} β) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} β))))) (FreeMonoid.{u2} α) (fun (_x : FreeMonoid.{u2} α) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : FreeMonoid.{u2} α) => FreeMonoid.{u1} β) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (FreeMonoid.{u2} α) (FreeMonoid.{u1} β) (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} β) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} β) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} β) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} β))))) (FreeMonoid.{u2} α) (FreeMonoid.{u1} β) (MulOneClass.toMul.{u2} (FreeMonoid.{u2} α) (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α))))) (MulOneClass.toMul.{u1} (FreeMonoid.{u1} β) (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} β) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} β) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} β) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} β))))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (FreeMonoid.{u2} α) (FreeMonoid.{u1} β) (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} β) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} β) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} β) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} β))))) (FreeMonoid.{u2} α) (FreeMonoid.{u1} β) (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} β) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} β) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} β) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} β)))) (MonoidHom.monoidHomClass.{u2, u1} (FreeMonoid.{u2} α) (FreeMonoid.{u1} β) (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} β) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} β) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} β) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} β))))))) (FreeMonoid.map.{u2, u1} α β f) (FunLike.coe.{succ u2, succ u2, succ u2} (Equiv.{succ u2, succ u2} (List.{u2} α) (FreeMonoid.{u2} α)) (List.{u2} α) (fun (_x : List.{u2} α) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : List.{u2} α) => FreeMonoid.{u2} α) _x) (Equiv.instFunLikeEquiv.{succ u2, succ u2} (List.{u2} α) (FreeMonoid.{u2} α)) (FreeMonoid.ofList.{u2} α) xs))
-Case conversion may be inaccurate. Consider using '#align free_monoid.of_list_map FreeMonoid.ofList_mapₓ'. -/
@[to_additive]
theorem ofList_map (f : α → β) (xs : List α) : ofList (xs.map f) = map f (ofList xs) :=
rfl
#align free_monoid.of_list_map FreeMonoid.ofList_map
#align free_add_monoid.of_list_map FreeAddMonoid.ofList_map
-/- warning: free_monoid.lift_of_comp_eq_map -> FreeMonoid.lift_of_comp_eq_map is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} (f : α -> β), Eq.{max (succ u2) (succ u1)} (MonoidHom.{u1, u2} (FreeMonoid.{u1} α) (FreeMonoid.{u2} β) (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} β) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} β) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} β) (FreeMonoid.cancelMonoid.{u2} β))))) (coeFn.{max 1 (max (max (succ u1) (succ u2)) (succ u2) (succ u1)) (max (succ u2) (succ u1)) (succ u1) (succ u2), max (max (succ u1) (succ u2)) (succ u2) (succ u1)} (Equiv.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (α -> (FreeMonoid.{u2} β)) (MonoidHom.{u1, u2} (FreeMonoid.{u1} α) (FreeMonoid.{u2} β) (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} β) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} β) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} β) (FreeMonoid.cancelMonoid.{u2} β)))))) (fun (_x : Equiv.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (α -> (FreeMonoid.{u2} β)) (MonoidHom.{u1, u2} (FreeMonoid.{u1} α) (FreeMonoid.{u2} β) (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} β) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} β) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} β) (FreeMonoid.cancelMonoid.{u2} β)))))) => (α -> (FreeMonoid.{u2} β)) -> (MonoidHom.{u1, u2} (FreeMonoid.{u1} α) (FreeMonoid.{u2} β) (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} β) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} β) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} β) (FreeMonoid.cancelMonoid.{u2} β)))))) (Equiv.hasCoeToFun.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (α -> (FreeMonoid.{u2} β)) (MonoidHom.{u1, u2} (FreeMonoid.{u1} α) (FreeMonoid.{u2} β) (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} β) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} β) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} β) (FreeMonoid.cancelMonoid.{u2} β)))))) (FreeMonoid.lift.{u1, u2} α (FreeMonoid.{u2} β) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} β) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} β) (FreeMonoid.cancelMonoid.{u2} β)))) (fun (x : α) => FreeMonoid.of.{u2} β (f x))) (FreeMonoid.map.{u1, u2} α β f)
-but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u1}} (f : α -> β), Eq.{max (succ u2) (succ u1)} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : α -> (FreeMonoid.{u1} β)) => MonoidHom.{u2, u1} (FreeMonoid.{u2} α) (FreeMonoid.{u1} β) (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} β) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} β) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} β) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} β))))) (fun (x : α) => FreeMonoid.of.{u1} β (f x))) (FunLike.coe.{max (succ u1) (succ u2), max (succ u1) (succ u2), max (succ u1) (succ u2)} (Equiv.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (α -> (FreeMonoid.{u1} β)) (MonoidHom.{u2, u1} (FreeMonoid.{u2} α) (FreeMonoid.{u1} β) (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} β) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} β) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} β) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} β)))))) (α -> (FreeMonoid.{u1} β)) (fun (_x : α -> (FreeMonoid.{u1} β)) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : α -> (FreeMonoid.{u1} β)) => MonoidHom.{u2, u1} (FreeMonoid.{u2} α) (FreeMonoid.{u1} β) (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} β) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} β) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} β) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} β))))) _x) (Equiv.instFunLikeEquiv.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (α -> (FreeMonoid.{u1} β)) (MonoidHom.{u2, u1} (FreeMonoid.{u2} α) (FreeMonoid.{u1} β) (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} β) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} β) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} β) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} β)))))) (FreeMonoid.lift.{u2, u1} α (FreeMonoid.{u1} β) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} β) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} β) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} β)))) (fun (x : α) => FreeMonoid.of.{u1} β (f x))) (FreeMonoid.map.{u2, u1} α β f)
-Case conversion may be inaccurate. Consider using '#align free_monoid.lift_of_comp_eq_map FreeMonoid.lift_of_comp_eq_mapₓ'. -/
@[to_additive]
theorem lift_of_comp_eq_map (f : α → β) : (lift fun x => of (f x)) = map f :=
hom_eq fun x => rfl
#align free_monoid.lift_of_comp_eq_map FreeMonoid.lift_of_comp_eq_map
#align free_add_monoid.lift_of_comp_eq_map FreeAddMonoid.lift_of_comp_eq_map
-/- warning: free_monoid.map_comp -> FreeMonoid.map_comp is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} {γ : Type.{u3}} (g : β -> γ) (f : α -> β), Eq.{max (succ u3) (succ u1)} (MonoidHom.{u1, u3} (FreeMonoid.{u1} α) (FreeMonoid.{u3} γ) (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u3} (FreeMonoid.{u3} γ) (RightCancelMonoid.toMonoid.{u3} (FreeMonoid.{u3} γ) (CancelMonoid.toRightCancelMonoid.{u3} (FreeMonoid.{u3} γ) (FreeMonoid.cancelMonoid.{u3} γ))))) (FreeMonoid.map.{u1, u3} α γ (Function.comp.{succ u1, succ u2, succ u3} α β γ g f)) (MonoidHom.comp.{u1, u2, u3} (FreeMonoid.{u1} α) (FreeMonoid.{u2} β) (FreeMonoid.{u3} γ) (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} β) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} β) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} β) (FreeMonoid.cancelMonoid.{u2} β)))) (Monoid.toMulOneClass.{u3} (FreeMonoid.{u3} γ) (RightCancelMonoid.toMonoid.{u3} (FreeMonoid.{u3} γ) (CancelMonoid.toRightCancelMonoid.{u3} (FreeMonoid.{u3} γ) (FreeMonoid.cancelMonoid.{u3} γ)))) (FreeMonoid.map.{u2, u3} β γ g) (FreeMonoid.map.{u1, u2} α β f))
-but is expected to have type
- forall {α : Type.{u3}} {β : Type.{u1}} {γ : Type.{u2}} (g : β -> γ) (f : α -> β), Eq.{max (succ u3) (succ u2)} (MonoidHom.{u3, u2} (FreeMonoid.{u3} α) (FreeMonoid.{u2} γ) (Monoid.toMulOneClass.{u3} (FreeMonoid.{u3} α) (RightCancelMonoid.toMonoid.{u3} (FreeMonoid.{u3} α) (CancelMonoid.toRightCancelMonoid.{u3} (FreeMonoid.{u3} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u3} α)))) (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} γ) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} γ) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} γ) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} γ))))) (FreeMonoid.map.{u3, u2} α γ (Function.comp.{succ u3, succ u1, succ u2} α β γ g f)) (MonoidHom.comp.{u3, u1, u2} (FreeMonoid.{u3} α) (FreeMonoid.{u1} β) (FreeMonoid.{u2} γ) (Monoid.toMulOneClass.{u3} (FreeMonoid.{u3} α) (RightCancelMonoid.toMonoid.{u3} (FreeMonoid.{u3} α) (CancelMonoid.toRightCancelMonoid.{u3} (FreeMonoid.{u3} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u3} α)))) (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} β) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} β) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} β) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} β)))) (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} γ) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} γ) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} γ) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} γ)))) (FreeMonoid.map.{u1, u2} β γ g) (FreeMonoid.map.{u3, u1} α β f))
-Case conversion may be inaccurate. Consider using '#align free_monoid.map_comp FreeMonoid.map_compₓ'. -/
@[to_additive]
theorem map_comp (g : β → γ) (f : α → β) : map (g ∘ f) = (map g).comp (map f) :=
hom_eq fun x => rfl
#align free_monoid.map_comp FreeMonoid.map_comp
#align free_add_monoid.map_comp FreeAddMonoid.map_comp
-/- warning: free_monoid.map_id -> FreeMonoid.map_id is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}}, Eq.{succ u1} (MonoidHom.{u1, u1} (FreeMonoid.{u1} α) (FreeMonoid.{u1} α) (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α))))) (FreeMonoid.map.{u1, u1} α α (id.{succ u1} α)) (MonoidHom.id.{u1} (FreeMonoid.{u1} α) (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))))
-but is expected to have type
- forall {α : Type.{u1}}, Eq.{succ u1} (MonoidHom.{u1, u1} (FreeMonoid.{u1} α) (FreeMonoid.{u1} α) (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α)))) (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α))))) (FreeMonoid.map.{u1, u1} α α (id.{succ u1} α)) (MonoidHom.id.{u1} (FreeMonoid.{u1} α) (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α)))))
-Case conversion may be inaccurate. Consider using '#align free_monoid.map_id FreeMonoid.map_idₓ'. -/
@[simp, to_additive]
theorem map_id : map (@id α) = MonoidHom.id (FreeMonoid α) :=
hom_eq fun x => rfl
mathlib commit https://github.com/leanprover-community/mathlib/commit/917c3c072e487b3cccdbfeff17e75b40e45f66cb
@@ -433,10 +433,7 @@ but is expected to have type
forall {α : Type.{u1}} {M : Type.{u3}} [_inst_1 : Monoid.{u3} M] {N : Type.{u2}} [_inst_2 : Monoid.{u2} N] (g : MonoidHom.{u3, u2} M N (Monoid.toMulOneClass.{u3} M _inst_1) (Monoid.toMulOneClass.{u2} N _inst_2)) (f : α -> M), Eq.{max (succ u1) (succ u2)} (MonoidHom.{u1, u2} (FreeMonoid.{u1} α) N (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} N _inst_2)) (MonoidHom.comp.{u1, u3, u2} (FreeMonoid.{u1} α) M N (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α)))) (Monoid.toMulOneClass.{u3} M _inst_1) (Monoid.toMulOneClass.{u2} N _inst_2) g (FunLike.coe.{max (succ u3) (succ u1), max (succ u3) (succ u1), max (succ u3) (succ u1)} (Equiv.{max (succ u1) (succ u3), max (succ u3) (succ u1)} (α -> M) (MonoidHom.{u1, u3} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α)))) (Monoid.toMulOneClass.{u3} M _inst_1))) (α -> M) (fun (_x : α -> M) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : α -> M) => MonoidHom.{u1, u3} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α)))) (Monoid.toMulOneClass.{u3} M _inst_1)) _x) (Equiv.instFunLikeEquiv.{max (succ u3) (succ u1), max (succ u3) (succ u1)} (α -> M) (MonoidHom.{u1, u3} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α)))) (Monoid.toMulOneClass.{u3} M _inst_1))) (FreeMonoid.lift.{u1, u3} α M _inst_1) f)) (FunLike.coe.{max (succ u2) (succ u1), max (succ u2) (succ u1), max (succ u2) (succ u1)} (Equiv.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (α -> N) (MonoidHom.{u1, u2} (FreeMonoid.{u1} α) N (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} N _inst_2))) (α -> N) (fun (_x : α -> N) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : α -> N) => MonoidHom.{u1, u2} (FreeMonoid.{u1} α) N (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} N _inst_2)) _x) (Equiv.instFunLikeEquiv.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (α -> N) (MonoidHom.{u1, u2} (FreeMonoid.{u1} α) N (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} N _inst_2))) (FreeMonoid.lift.{u1, u2} α N _inst_2) (Function.comp.{succ u1, succ u3, succ u2} α M N (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} M N (Monoid.toMulOneClass.{u3} M _inst_1) (Monoid.toMulOneClass.{u2} N _inst_2)) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) _x) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M N (Monoid.toMulOneClass.{u3} M _inst_1) (Monoid.toMulOneClass.{u2} N _inst_2)) M N (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M _inst_1)) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N _inst_2)) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M N (Monoid.toMulOneClass.{u3} M _inst_1) (Monoid.toMulOneClass.{u2} N _inst_2)) M N (Monoid.toMulOneClass.{u3} M _inst_1) (Monoid.toMulOneClass.{u2} N _inst_2) (MonoidHom.monoidHomClass.{u3, u2} M N (Monoid.toMulOneClass.{u3} M _inst_1) (Monoid.toMulOneClass.{u2} N _inst_2)))) g) f))
Case conversion may be inaccurate. Consider using '#align free_monoid.comp_lift FreeMonoid.comp_liftₓ'. -/
@[to_additive]
-theorem comp_lift (g : M →* N) (f : α → M) : g.comp (lift f) = lift (g ∘ f) :=
- by
- ext
- simp
+theorem comp_lift (g : M →* N) (f : α → M) : g.comp (lift f) = lift (g ∘ f) := by ext; simp
#align free_monoid.comp_lift FreeMonoid.comp_lift
#align free_add_monoid.comp_lift FreeAddMonoid.comp_lift
mathlib commit https://github.com/leanprover-community/mathlib/commit/917c3c072e487b3cccdbfeff17e75b40e45f66cb
@@ -441,10 +441,7 @@ theorem comp_lift (g : M →* N) (f : α → M) : g.comp (lift f) = lift (g ∘
#align free_add_monoid.comp_lift FreeAddMonoid.comp_lift
/- warning: free_monoid.hom_map_lift -> FreeMonoid.hom_map_lift is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : Monoid.{u2} M] {N : Type.{u3}} [_inst_2 : Monoid.{u3} N] (g : MonoidHom.{u2, u3} M N (Monoid.toMulOneClass.{u2} M _inst_1) (Monoid.toMulOneClass.{u3} N _inst_2)) (f : α -> M) (x : FreeMonoid.{u1} α), Eq.{succ u3} N (coeFn.{max (succ u3) (succ u2), max (succ u2) (succ u3)} (MonoidHom.{u2, u3} M N (Monoid.toMulOneClass.{u2} M _inst_1) (Monoid.toMulOneClass.{u3} N _inst_2)) (fun (_x : MonoidHom.{u2, u3} M N (Monoid.toMulOneClass.{u2} M _inst_1) (Monoid.toMulOneClass.{u3} N _inst_2)) => M -> N) (MonoidHom.hasCoeToFun.{u2, u3} M N (Monoid.toMulOneClass.{u2} M _inst_1) (Monoid.toMulOneClass.{u3} N _inst_2)) g (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} M _inst_1)) (fun (_x : MonoidHom.{u1, u2} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} M _inst_1)) => (FreeMonoid.{u1} α) -> M) (MonoidHom.hasCoeToFun.{u1, u2} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} M _inst_1)) (coeFn.{max 1 (max (max (succ u1) (succ u2)) (succ u2) (succ u1)) (max (succ u2) (succ u1)) (succ u1) (succ u2), max (max (succ u1) (succ u2)) (succ u2) (succ u1)} (Equiv.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (α -> M) (MonoidHom.{u1, u2} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} M _inst_1))) (fun (_x : Equiv.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (α -> M) (MonoidHom.{u1, u2} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} M _inst_1))) => (α -> M) -> (MonoidHom.{u1, u2} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} M _inst_1))) (Equiv.hasCoeToFun.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (α -> M) (MonoidHom.{u1, u2} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} M _inst_1))) (FreeMonoid.lift.{u1, u2} α M _inst_1) f) x)) (coeFn.{max (succ u3) (succ u1), max (succ u1) (succ u3)} (MonoidHom.{u1, u3} (FreeMonoid.{u1} α) N (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u3} N _inst_2)) (fun (_x : MonoidHom.{u1, u3} (FreeMonoid.{u1} α) N (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u3} N _inst_2)) => (FreeMonoid.{u1} α) -> N) (MonoidHom.hasCoeToFun.{u1, u3} (FreeMonoid.{u1} α) N (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u3} N _inst_2)) (coeFn.{max 1 (max (max (succ u1) (succ u3)) (succ u3) (succ u1)) (max (succ u3) (succ u1)) (succ u1) (succ u3), max (max (succ u1) (succ u3)) (succ u3) (succ u1)} (Equiv.{max (succ u1) (succ u3), max (succ u3) (succ u1)} (α -> N) (MonoidHom.{u1, u3} (FreeMonoid.{u1} α) N (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u3} N _inst_2))) (fun (_x : Equiv.{max (succ u1) (succ u3), max (succ u3) (succ u1)} (α -> N) (MonoidHom.{u1, u3} (FreeMonoid.{u1} α) N (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u3} N _inst_2))) => (α -> N) -> (MonoidHom.{u1, u3} (FreeMonoid.{u1} α) N (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u3} N _inst_2))) (Equiv.hasCoeToFun.{max (succ u1) (succ u3), max (succ u3) (succ u1)} (α -> N) (MonoidHom.{u1, u3} (FreeMonoid.{u1} α) N (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u3} N _inst_2))) (FreeMonoid.lift.{u1, u3} α N _inst_2) (Function.comp.{succ u1, succ u2, succ u3} α M N (coeFn.{max (succ u3) (succ u2), max (succ u2) (succ u3)} (MonoidHom.{u2, u3} M N (Monoid.toMulOneClass.{u2} M _inst_1) (Monoid.toMulOneClass.{u3} N _inst_2)) (fun (_x : MonoidHom.{u2, u3} M N (Monoid.toMulOneClass.{u2} M _inst_1) (Monoid.toMulOneClass.{u3} N _inst_2)) => M -> N) (MonoidHom.hasCoeToFun.{u2, u3} M N (Monoid.toMulOneClass.{u2} M _inst_1) (Monoid.toMulOneClass.{u3} N _inst_2)) g) f)) x)
-but is expected to have type
- forall {α : Type.{u1}} {M : Type.{u3}} [_inst_1 : Monoid.{u3} M] {N : Type.{u2}} [_inst_2 : Monoid.{u2} N] (g : MonoidHom.{u3, u2} M N (Monoid.toMulOneClass.{u3} M _inst_1) (Monoid.toMulOneClass.{u2} N _inst_2)) (f : α -> M) (x : FreeMonoid.{u1} α), Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) (FunLike.coe.{max (succ u1) (succ u3), succ u1, succ u3} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : α -> M) => MonoidHom.{u1, u3} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α)))) (Monoid.toMulOneClass.{u3} M _inst_1)) f) (FreeMonoid.{u1} α) (fun (a : FreeMonoid.{u1} α) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : FreeMonoid.{u1} α) => M) a) (MulHomClass.toFunLike.{max u1 u3, u1, u3} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : α -> M) => MonoidHom.{u1, u3} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α)))) (Monoid.toMulOneClass.{u3} M _inst_1)) f) (FreeMonoid.{u1} α) M (MulOneClass.toMul.{u1} (FreeMonoid.{u1} α) (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α))))) (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M _inst_1)) (MonoidHomClass.toMulHomClass.{max u1 u3, u1, u3} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : α -> M) => MonoidHom.{u1, u3} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α)))) (Monoid.toMulOneClass.{u3} M _inst_1)) f) (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α)))) (Monoid.toMulOneClass.{u3} M _inst_1) (MonoidHom.monoidHomClass.{u1, u3} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α)))) (Monoid.toMulOneClass.{u3} M _inst_1)))) (FunLike.coe.{max (succ u3) (succ u1), max (succ u3) (succ u1), max (succ u3) (succ u1)} (Equiv.{max (succ u1) (succ u3), max (succ u3) (succ u1)} (α -> M) (MonoidHom.{u1, u3} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α)))) (Monoid.toMulOneClass.{u3} M _inst_1))) (α -> M) (fun (a : α -> M) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : α -> M) => MonoidHom.{u1, u3} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α)))) (Monoid.toMulOneClass.{u3} M _inst_1)) a) (Equiv.instFunLikeEquiv.{max (succ u3) (succ u1), max (succ u3) (succ u1)} (α -> M) (MonoidHom.{u1, u3} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α)))) (Monoid.toMulOneClass.{u3} M _inst_1))) (FreeMonoid.lift.{u1, u3} α M _inst_1) f) x)) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} M N (Monoid.toMulOneClass.{u3} M _inst_1) (Monoid.toMulOneClass.{u2} N _inst_2)) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) _x) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M N (Monoid.toMulOneClass.{u3} M _inst_1) (Monoid.toMulOneClass.{u2} N _inst_2)) M N (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M _inst_1)) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N _inst_2)) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M N (Monoid.toMulOneClass.{u3} M _inst_1) (Monoid.toMulOneClass.{u2} N _inst_2)) M N (Monoid.toMulOneClass.{u3} M _inst_1) (Monoid.toMulOneClass.{u2} N _inst_2) (MonoidHom.monoidHomClass.{u3, u2} M N (Monoid.toMulOneClass.{u3} M _inst_1) (Monoid.toMulOneClass.{u2} N _inst_2)))) g (FunLike.coe.{max (succ u1) (succ u3), succ u1, succ u3} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : α -> M) => MonoidHom.{u1, u3} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α)))) (Monoid.toMulOneClass.{u3} M _inst_1)) f) (FreeMonoid.{u1} α) (fun (_x : FreeMonoid.{u1} α) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : FreeMonoid.{u1} α) => M) _x) (MulHomClass.toFunLike.{max u1 u3, u1, u3} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : α -> M) => MonoidHom.{u1, u3} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α)))) (Monoid.toMulOneClass.{u3} M _inst_1)) f) (FreeMonoid.{u1} α) M (MulOneClass.toMul.{u1} (FreeMonoid.{u1} α) (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α))))) (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M _inst_1)) (MonoidHomClass.toMulHomClass.{max u1 u3, u1, u3} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : α -> M) => MonoidHom.{u1, u3} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α)))) (Monoid.toMulOneClass.{u3} M _inst_1)) f) (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α)))) (Monoid.toMulOneClass.{u3} M _inst_1) (MonoidHom.monoidHomClass.{u1, u3} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α)))) (Monoid.toMulOneClass.{u3} M _inst_1)))) (FunLike.coe.{max (succ u3) (succ u1), max (succ u3) (succ u1), max (succ u3) (succ u1)} (Equiv.{max (succ u1) (succ u3), max (succ u3) (succ u1)} (α -> M) (MonoidHom.{u1, u3} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α)))) (Monoid.toMulOneClass.{u3} M _inst_1))) (α -> M) (fun (_x : α -> M) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : α -> M) => MonoidHom.{u1, u3} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α)))) (Monoid.toMulOneClass.{u3} M _inst_1)) _x) (Equiv.instFunLikeEquiv.{max (succ u3) (succ u1), max (succ u3) (succ u1)} (α -> M) (MonoidHom.{u1, u3} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α)))) (Monoid.toMulOneClass.{u3} M _inst_1))) (FreeMonoid.lift.{u1, u3} α M _inst_1) f) x)) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : α -> N) => MonoidHom.{u1, u2} (FreeMonoid.{u1} α) N (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} N _inst_2)) (Function.comp.{succ u1, succ u3, succ u2} α M N (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} M N (Monoid.toMulOneClass.{u3} M _inst_1) (Monoid.toMulOneClass.{u2} N _inst_2)) M (fun (a : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) a) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M N (Monoid.toMulOneClass.{u3} M _inst_1) (Monoid.toMulOneClass.{u2} N _inst_2)) M N (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M _inst_1)) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N _inst_2)) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M N (Monoid.toMulOneClass.{u3} M _inst_1) (Monoid.toMulOneClass.{u2} N _inst_2)) M N (Monoid.toMulOneClass.{u3} M _inst_1) (Monoid.toMulOneClass.{u2} N _inst_2) (MonoidHom.monoidHomClass.{u3, u2} M N (Monoid.toMulOneClass.{u3} M _inst_1) (Monoid.toMulOneClass.{u2} N _inst_2)))) g) f)) (FreeMonoid.{u1} α) (fun (_x : FreeMonoid.{u1} α) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : FreeMonoid.{u1} α) => N) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : α -> N) => MonoidHom.{u1, u2} (FreeMonoid.{u1} α) N (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} N _inst_2)) (Function.comp.{succ u1, succ u3, succ u2} α M N (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} M N (Monoid.toMulOneClass.{u3} M _inst_1) (Monoid.toMulOneClass.{u2} N _inst_2)) M (fun (a : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) a) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M N (Monoid.toMulOneClass.{u3} M _inst_1) (Monoid.toMulOneClass.{u2} N _inst_2)) M N (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M _inst_1)) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N _inst_2)) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M N (Monoid.toMulOneClass.{u3} M _inst_1) (Monoid.toMulOneClass.{u2} N _inst_2)) M N (Monoid.toMulOneClass.{u3} M _inst_1) (Monoid.toMulOneClass.{u2} N _inst_2) (MonoidHom.monoidHomClass.{u3, u2} M N (Monoid.toMulOneClass.{u3} M _inst_1) (Monoid.toMulOneClass.{u2} N _inst_2)))) g) f)) (FreeMonoid.{u1} α) N (MulOneClass.toMul.{u1} (FreeMonoid.{u1} α) (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α))))) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N _inst_2)) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : α -> N) => MonoidHom.{u1, u2} (FreeMonoid.{u1} α) N (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} N _inst_2)) (Function.comp.{succ u1, succ u3, succ u2} α M N (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} M N (Monoid.toMulOneClass.{u3} M _inst_1) (Monoid.toMulOneClass.{u2} N _inst_2)) M (fun (a : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) a) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M N (Monoid.toMulOneClass.{u3} M _inst_1) (Monoid.toMulOneClass.{u2} N _inst_2)) M N (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M _inst_1)) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N _inst_2)) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M N (Monoid.toMulOneClass.{u3} M _inst_1) (Monoid.toMulOneClass.{u2} N _inst_2)) M N (Monoid.toMulOneClass.{u3} M _inst_1) (Monoid.toMulOneClass.{u2} N _inst_2) (MonoidHom.monoidHomClass.{u3, u2} M N (Monoid.toMulOneClass.{u3} M _inst_1) (Monoid.toMulOneClass.{u2} N _inst_2)))) g) f)) (FreeMonoid.{u1} α) N (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} N _inst_2) (MonoidHom.monoidHomClass.{u1, u2} (FreeMonoid.{u1} α) N (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} N _inst_2)))) (FunLike.coe.{max (succ u2) (succ u1), max (succ u2) (succ u1), max (succ u2) (succ u1)} (Equiv.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (α -> N) (MonoidHom.{u1, u2} (FreeMonoid.{u1} α) N (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} N _inst_2))) (α -> N) (fun (_x : α -> N) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : α -> N) => MonoidHom.{u1, u2} (FreeMonoid.{u1} α) N (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} N _inst_2)) _x) (Equiv.instFunLikeEquiv.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (α -> N) (MonoidHom.{u1, u2} (FreeMonoid.{u1} α) N (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} N _inst_2))) (FreeMonoid.lift.{u1, u2} α N _inst_2) (Function.comp.{succ u1, succ u3, succ u2} α M N (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} M N (Monoid.toMulOneClass.{u3} M _inst_1) (Monoid.toMulOneClass.{u2} N _inst_2)) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) _x) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M N (Monoid.toMulOneClass.{u3} M _inst_1) (Monoid.toMulOneClass.{u2} N _inst_2)) M N (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M _inst_1)) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N _inst_2)) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M N (Monoid.toMulOneClass.{u3} M _inst_1) (Monoid.toMulOneClass.{u2} N _inst_2)) M N (Monoid.toMulOneClass.{u3} M _inst_1) (Monoid.toMulOneClass.{u2} N _inst_2) (MonoidHom.monoidHomClass.{u3, u2} M N (Monoid.toMulOneClass.{u3} M _inst_1) (Monoid.toMulOneClass.{u2} N _inst_2)))) g) f)) x)
+<too large>
Case conversion may be inaccurate. Consider using '#align free_monoid.hom_map_lift FreeMonoid.hom_map_liftₓ'. -/
@[to_additive]
theorem hom_map_lift (g : M →* N) (f : α → M) (x : FreeMonoid α) : g (lift f x) = lift (g ∘ f) x :=
mathlib commit https://github.com/leanprover-community/mathlib/commit/95a87616d63b3cb49d3fe678d416fbe9c4217bf4
@@ -311,7 +311,7 @@ theorem casesOn_of_mul {C : FreeMonoid α → Sort _} (x : α) (xs : FreeMonoid
lean 3 declaration is
forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : Monoid.{u2} M] {{f : MonoidHom.{u1, u2} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} M _inst_1)}} {{g : MonoidHom.{u1, u2} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} M _inst_1)}}, (forall (x : α), Eq.{succ u2} M (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} M _inst_1)) (fun (_x : MonoidHom.{u1, u2} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} M _inst_1)) => (FreeMonoid.{u1} α) -> M) (MonoidHom.hasCoeToFun.{u1, u2} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} M _inst_1)) f (FreeMonoid.of.{u1} α x)) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} M _inst_1)) (fun (_x : MonoidHom.{u1, u2} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} M _inst_1)) => (FreeMonoid.{u1} α) -> M) (MonoidHom.hasCoeToFun.{u1, u2} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} M _inst_1)) g (FreeMonoid.of.{u1} α x))) -> (Eq.{max (succ u2) (succ u1)} (MonoidHom.{u1, u2} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} M _inst_1)) f g)
but is expected to have type
- forall {α : Type.{u2}} {M : Type.{u1}} [_inst_1 : Monoid.{u1} M] {{f : MonoidHom.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1)}} {{g : MonoidHom.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1)}}, (forall (x : α), Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : FreeMonoid.{u2} α) => M) (FreeMonoid.of.{u2} α x)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1)) (FreeMonoid.{u2} α) (fun (_x : FreeMonoid.{u2} α) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : FreeMonoid.{u2} α) => M) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1)) (FreeMonoid.{u2} α) M (MulOneClass.toMul.{u2} (FreeMonoid.{u2} α) (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α))))) (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M _inst_1)) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1)) (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1) (MonoidHom.monoidHomClass.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1)))) f (FreeMonoid.of.{u2} α x)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1)) (FreeMonoid.{u2} α) (fun (_x : FreeMonoid.{u2} α) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : FreeMonoid.{u2} α) => M) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1)) (FreeMonoid.{u2} α) M (MulOneClass.toMul.{u2} (FreeMonoid.{u2} α) (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α))))) (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M _inst_1)) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1)) (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1) (MonoidHom.monoidHomClass.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1)))) g (FreeMonoid.of.{u2} α x))) -> (Eq.{max (succ u2) (succ u1)} (MonoidHom.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1)) f g)
+ forall {α : Type.{u2}} {M : Type.{u1}} [_inst_1 : Monoid.{u1} M] {{f : MonoidHom.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1)}} {{g : MonoidHom.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1)}}, (forall (x : α), Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : FreeMonoid.{u2} α) => M) (FreeMonoid.of.{u2} α x)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1)) (FreeMonoid.{u2} α) (fun (_x : FreeMonoid.{u2} α) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : FreeMonoid.{u2} α) => M) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1)) (FreeMonoid.{u2} α) M (MulOneClass.toMul.{u2} (FreeMonoid.{u2} α) (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α))))) (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M _inst_1)) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1)) (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1) (MonoidHom.monoidHomClass.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1)))) f (FreeMonoid.of.{u2} α x)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1)) (FreeMonoid.{u2} α) (fun (_x : FreeMonoid.{u2} α) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : FreeMonoid.{u2} α) => M) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1)) (FreeMonoid.{u2} α) M (MulOneClass.toMul.{u2} (FreeMonoid.{u2} α) (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α))))) (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M _inst_1)) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1)) (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1) (MonoidHom.monoidHomClass.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1)))) g (FreeMonoid.of.{u2} α x))) -> (Eq.{max (succ u2) (succ u1)} (MonoidHom.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1)) f g)
Case conversion may be inaccurate. Consider using '#align free_monoid.hom_eq FreeMonoid.hom_eqₓ'. -/
@[ext, to_additive]
theorem hom_eq ⦃f g : FreeMonoid α →* M⦄ (h : ∀ x, f (of x) = g (of x)) : f = g :=
@@ -370,7 +370,7 @@ def lift : (α → M) ≃ (FreeMonoid α →* M)
lean 3 declaration is
forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : Monoid.{u2} M] (f : MonoidHom.{u1, u2} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} M _inst_1)), Eq.{max (succ u1) (succ u2)} (α -> M) (coeFn.{max 1 (max (max (succ u2) (succ u1)) (succ u1) (succ u2)) (max (succ u1) (succ u2)) (succ u2) (succ u1), max (max (succ u2) (succ u1)) (succ u1) (succ u2)} (Equiv.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} M _inst_1)) (α -> M)) (fun (_x : Equiv.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} M _inst_1)) (α -> M)) => (MonoidHom.{u1, u2} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} M _inst_1)) -> α -> M) (Equiv.hasCoeToFun.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} M _inst_1)) (α -> M)) (Equiv.symm.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (α -> M) (MonoidHom.{u1, u2} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} M _inst_1)) (FreeMonoid.lift.{u1, u2} α M _inst_1)) f) (Function.comp.{succ u1, succ u1, succ u2} α (FreeMonoid.{u1} α) M (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} M _inst_1)) (fun (_x : MonoidHom.{u1, u2} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} M _inst_1)) => (FreeMonoid.{u1} α) -> M) (MonoidHom.hasCoeToFun.{u1, u2} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} M _inst_1)) f) (FreeMonoid.of.{u1} α))
but is expected to have type
- forall {α : Type.{u2}} {M : Type.{u1}} [_inst_1 : Monoid.{u1} M] (f : MonoidHom.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1)), Eq.{max (succ u2) (succ u1)} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : MonoidHom.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1)) => α -> M) f) (FunLike.coe.{max (succ u1) (succ u2), max (succ u1) (succ u2), max (succ u1) (succ u2)} (Equiv.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (MonoidHom.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1)) (α -> M)) (MonoidHom.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1)) (fun (_x : MonoidHom.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1)) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : MonoidHom.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1)) => α -> M) _x) (Equiv.instFunLikeEquiv.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (MonoidHom.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1)) (α -> M)) (Equiv.symm.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (α -> M) (MonoidHom.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1)) (FreeMonoid.lift.{u2, u1} α M _inst_1)) f) (Function.comp.{succ u2, succ u2, succ u1} α (FreeMonoid.{u2} α) M (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1)) (FreeMonoid.{u2} α) (fun (_x : FreeMonoid.{u2} α) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : FreeMonoid.{u2} α) => M) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1)) (FreeMonoid.{u2} α) M (MulOneClass.toMul.{u2} (FreeMonoid.{u2} α) (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α))))) (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M _inst_1)) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1)) (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1) (MonoidHom.monoidHomClass.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1)))) f) (FreeMonoid.of.{u2} α))
+ forall {α : Type.{u2}} {M : Type.{u1}} [_inst_1 : Monoid.{u1} M] (f : MonoidHom.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1)), Eq.{max (succ u2) (succ u1)} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : MonoidHom.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1)) => α -> M) f) (FunLike.coe.{max (succ u1) (succ u2), max (succ u1) (succ u2), max (succ u1) (succ u2)} (Equiv.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (MonoidHom.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1)) (α -> M)) (MonoidHom.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1)) (fun (_x : MonoidHom.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1)) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : MonoidHom.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1)) => α -> M) _x) (Equiv.instFunLikeEquiv.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (MonoidHom.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1)) (α -> M)) (Equiv.symm.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (α -> M) (MonoidHom.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1)) (FreeMonoid.lift.{u2, u1} α M _inst_1)) f) (Function.comp.{succ u2, succ u2, succ u1} α (FreeMonoid.{u2} α) M (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1)) (FreeMonoid.{u2} α) (fun (_x : FreeMonoid.{u2} α) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : FreeMonoid.{u2} α) => M) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1)) (FreeMonoid.{u2} α) M (MulOneClass.toMul.{u2} (FreeMonoid.{u2} α) (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α))))) (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M _inst_1)) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1)) (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1) (MonoidHom.monoidHomClass.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1)))) f) (FreeMonoid.of.{u2} α))
Case conversion may be inaccurate. Consider using '#align free_monoid.lift_symm_apply FreeMonoid.lift_symm_applyₓ'. -/
@[simp, to_additive]
theorem lift_symm_apply (f : FreeMonoid α →* M) : lift.symm f = f ∘ of :=
@@ -382,7 +382,7 @@ theorem lift_symm_apply (f : FreeMonoid α →* M) : lift.symm f = f ∘ of :=
lean 3 declaration is
forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : Monoid.{u2} M] (f : α -> M) (l : FreeMonoid.{u1} α), Eq.{succ u2} M (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} M _inst_1)) (fun (_x : MonoidHom.{u1, u2} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} M _inst_1)) => (FreeMonoid.{u1} α) -> M) (MonoidHom.hasCoeToFun.{u1, u2} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} M _inst_1)) (coeFn.{max 1 (max (max (succ u1) (succ u2)) (succ u2) (succ u1)) (max (succ u2) (succ u1)) (succ u1) (succ u2), max (max (succ u1) (succ u2)) (succ u2) (succ u1)} (Equiv.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (α -> M) (MonoidHom.{u1, u2} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} M _inst_1))) (fun (_x : Equiv.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (α -> M) (MonoidHom.{u1, u2} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} M _inst_1))) => (α -> M) -> (MonoidHom.{u1, u2} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} M _inst_1))) (Equiv.hasCoeToFun.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (α -> M) (MonoidHom.{u1, u2} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} M _inst_1))) (FreeMonoid.lift.{u1, u2} α M _inst_1) f) l) (List.prod.{u2} M (MulOneClass.toHasMul.{u2} M (Monoid.toMulOneClass.{u2} M _inst_1)) (MulOneClass.toHasOne.{u2} M (Monoid.toMulOneClass.{u2} M _inst_1)) (List.map.{u1, u2} α M f (coeFn.{succ u1, succ u1} (Equiv.{succ u1, succ u1} (FreeMonoid.{u1} α) (List.{u1} α)) (fun (_x : Equiv.{succ u1, succ u1} (FreeMonoid.{u1} α) (List.{u1} α)) => (FreeMonoid.{u1} α) -> (List.{u1} α)) (Equiv.hasCoeToFun.{succ u1, succ u1} (FreeMonoid.{u1} α) (List.{u1} α)) (FreeMonoid.toList.{u1} α) l)))
but is expected to have type
- forall {α : Type.{u2}} {M : Type.{u1}} [_inst_1 : Monoid.{u1} M] (f : α -> M) (l : FreeMonoid.{u2} α), Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : FreeMonoid.{u2} α) => M) l) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : α -> M) => MonoidHom.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1)) f) (FreeMonoid.{u2} α) (fun (_x : FreeMonoid.{u2} α) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : FreeMonoid.{u2} α) => M) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : α -> M) => MonoidHom.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1)) f) (FreeMonoid.{u2} α) M (MulOneClass.toMul.{u2} (FreeMonoid.{u2} α) (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α))))) (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M _inst_1)) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : α -> M) => MonoidHom.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1)) f) (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1) (MonoidHom.monoidHomClass.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1)))) (FunLike.coe.{max (succ u1) (succ u2), max (succ u1) (succ u2), max (succ u1) (succ u2)} (Equiv.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (α -> M) (MonoidHom.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1))) (α -> M) (fun (_x : α -> M) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : α -> M) => MonoidHom.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1)) _x) (Equiv.instFunLikeEquiv.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (α -> M) (MonoidHom.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1))) (FreeMonoid.lift.{u2, u1} α M _inst_1) f) l) (List.prod.{u1} M (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M _inst_1)) (Monoid.toOne.{u1} M _inst_1) (List.map.{u2, u1} α M f (FunLike.coe.{succ u2, succ u2, succ u2} (Equiv.{succ u2, succ u2} (FreeMonoid.{u2} α) (List.{u2} α)) (FreeMonoid.{u2} α) (fun (_x : FreeMonoid.{u2} α) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : FreeMonoid.{u2} α) => List.{u2} α) _x) (Equiv.instFunLikeEquiv.{succ u2, succ u2} (FreeMonoid.{u2} α) (List.{u2} α)) (FreeMonoid.toList.{u2} α) l)))
+ forall {α : Type.{u2}} {M : Type.{u1}} [_inst_1 : Monoid.{u1} M] (f : α -> M) (l : FreeMonoid.{u2} α), Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : FreeMonoid.{u2} α) => M) l) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : α -> M) => MonoidHom.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1)) f) (FreeMonoid.{u2} α) (fun (_x : FreeMonoid.{u2} α) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : FreeMonoid.{u2} α) => M) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : α -> M) => MonoidHom.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1)) f) (FreeMonoid.{u2} α) M (MulOneClass.toMul.{u2} (FreeMonoid.{u2} α) (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α))))) (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M _inst_1)) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : α -> M) => MonoidHom.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1)) f) (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1) (MonoidHom.monoidHomClass.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1)))) (FunLike.coe.{max (succ u1) (succ u2), max (succ u1) (succ u2), max (succ u1) (succ u2)} (Equiv.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (α -> M) (MonoidHom.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1))) (α -> M) (fun (_x : α -> M) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : α -> M) => MonoidHom.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1)) _x) (Equiv.instFunLikeEquiv.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (α -> M) (MonoidHom.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1))) (FreeMonoid.lift.{u2, u1} α M _inst_1) f) l) (List.prod.{u1} M (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M _inst_1)) (Monoid.toOne.{u1} M _inst_1) (List.map.{u2, u1} α M f (FunLike.coe.{succ u2, succ u2, succ u2} (Equiv.{succ u2, succ u2} (FreeMonoid.{u2} α) (List.{u2} α)) (FreeMonoid.{u2} α) (fun (_x : FreeMonoid.{u2} α) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : FreeMonoid.{u2} α) => List.{u2} α) _x) (Equiv.instFunLikeEquiv.{succ u2, succ u2} (FreeMonoid.{u2} α) (List.{u2} α)) (FreeMonoid.toList.{u2} α) l)))
Case conversion may be inaccurate. Consider using '#align free_monoid.lift_apply FreeMonoid.lift_applyₓ'. -/
@[to_additive]
theorem lift_apply (f : α → M) (l : FreeMonoid α) : lift f l = (l.toList.map f).Prod :=
@@ -394,7 +394,7 @@ theorem lift_apply (f : α → M) (l : FreeMonoid α) : lift f l = (l.toList.map
lean 3 declaration is
forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : Monoid.{u2} M] (f : α -> M), Eq.{max (succ u1) (succ u2)} (α -> M) (Function.comp.{succ u1, succ u1, succ u2} α (FreeMonoid.{u1} α) M (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} M _inst_1)) (fun (_x : MonoidHom.{u1, u2} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} M _inst_1)) => (FreeMonoid.{u1} α) -> M) (MonoidHom.hasCoeToFun.{u1, u2} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} M _inst_1)) (coeFn.{max 1 (max (max (succ u1) (succ u2)) (succ u2) (succ u1)) (max (succ u2) (succ u1)) (succ u1) (succ u2), max (max (succ u1) (succ u2)) (succ u2) (succ u1)} (Equiv.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (α -> M) (MonoidHom.{u1, u2} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} M _inst_1))) (fun (_x : Equiv.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (α -> M) (MonoidHom.{u1, u2} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} M _inst_1))) => (α -> M) -> (MonoidHom.{u1, u2} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} M _inst_1))) (Equiv.hasCoeToFun.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (α -> M) (MonoidHom.{u1, u2} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} M _inst_1))) (FreeMonoid.lift.{u1, u2} α M _inst_1) f)) (FreeMonoid.of.{u1} α)) f
but is expected to have type
- forall {α : Type.{u2}} {M : Type.{u1}} [_inst_1 : Monoid.{u1} M] (f : α -> M), Eq.{max (succ u2) (succ u1)} (α -> M) (Function.comp.{succ u2, succ u2, succ u1} α (FreeMonoid.{u2} α) M (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : α -> M) => MonoidHom.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1)) f) (FreeMonoid.{u2} α) (fun (_x : FreeMonoid.{u2} α) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : FreeMonoid.{u2} α) => M) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : α -> M) => MonoidHom.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1)) f) (FreeMonoid.{u2} α) M (MulOneClass.toMul.{u2} (FreeMonoid.{u2} α) (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α))))) (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M _inst_1)) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : α -> M) => MonoidHom.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1)) f) (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1) (MonoidHom.monoidHomClass.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1)))) (FunLike.coe.{max (succ u1) (succ u2), max (succ u1) (succ u2), max (succ u1) (succ u2)} (Equiv.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (α -> M) (MonoidHom.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1))) (α -> M) (fun (_x : α -> M) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : α -> M) => MonoidHom.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1)) _x) (Equiv.instFunLikeEquiv.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (α -> M) (MonoidHom.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1))) (FreeMonoid.lift.{u2, u1} α M _inst_1) f)) (FreeMonoid.of.{u2} α)) f
+ forall {α : Type.{u2}} {M : Type.{u1}} [_inst_1 : Monoid.{u1} M] (f : α -> M), Eq.{max (succ u2) (succ u1)} (α -> M) (Function.comp.{succ u2, succ u2, succ u1} α (FreeMonoid.{u2} α) M (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : α -> M) => MonoidHom.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1)) f) (FreeMonoid.{u2} α) (fun (_x : FreeMonoid.{u2} α) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : FreeMonoid.{u2} α) => M) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : α -> M) => MonoidHom.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1)) f) (FreeMonoid.{u2} α) M (MulOneClass.toMul.{u2} (FreeMonoid.{u2} α) (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α))))) (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M _inst_1)) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : α -> M) => MonoidHom.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1)) f) (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1) (MonoidHom.monoidHomClass.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1)))) (FunLike.coe.{max (succ u1) (succ u2), max (succ u1) (succ u2), max (succ u1) (succ u2)} (Equiv.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (α -> M) (MonoidHom.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1))) (α -> M) (fun (_x : α -> M) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : α -> M) => MonoidHom.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1)) _x) (Equiv.instFunLikeEquiv.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (α -> M) (MonoidHom.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1))) (FreeMonoid.lift.{u2, u1} α M _inst_1) f)) (FreeMonoid.of.{u2} α)) f
Case conversion may be inaccurate. Consider using '#align free_monoid.lift_comp_of FreeMonoid.lift_comp_ofₓ'. -/
@[to_additive]
theorem lift_comp_of (f : α → M) : lift f ∘ of = f :=
@@ -406,7 +406,7 @@ theorem lift_comp_of (f : α → M) : lift f ∘ of = f :=
lean 3 declaration is
forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : Monoid.{u2} M] (f : α -> M) (x : α), Eq.{succ u2} M (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} M _inst_1)) (fun (_x : MonoidHom.{u1, u2} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} M _inst_1)) => (FreeMonoid.{u1} α) -> M) (MonoidHom.hasCoeToFun.{u1, u2} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} M _inst_1)) (coeFn.{max 1 (max (max (succ u1) (succ u2)) (succ u2) (succ u1)) (max (succ u2) (succ u1)) (succ u1) (succ u2), max (max (succ u1) (succ u2)) (succ u2) (succ u1)} (Equiv.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (α -> M) (MonoidHom.{u1, u2} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} M _inst_1))) (fun (_x : Equiv.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (α -> M) (MonoidHom.{u1, u2} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} M _inst_1))) => (α -> M) -> (MonoidHom.{u1, u2} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} M _inst_1))) (Equiv.hasCoeToFun.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (α -> M) (MonoidHom.{u1, u2} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} M _inst_1))) (FreeMonoid.lift.{u1, u2} α M _inst_1) f) (FreeMonoid.of.{u1} α x)) (f x)
but is expected to have type
- forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : Monoid.{u2} M] (f : α -> M) (x : α), Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : FreeMonoid.{u1} α) => M) (FreeMonoid.of.{u1} α x)) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : α -> M) => MonoidHom.{u1, u2} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} M _inst_1)) f) (FreeMonoid.{u1} α) (fun (_x : FreeMonoid.{u1} α) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : FreeMonoid.{u1} α) => M) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : α -> M) => MonoidHom.{u1, u2} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} M _inst_1)) f) (FreeMonoid.{u1} α) M (MulOneClass.toMul.{u1} (FreeMonoid.{u1} α) (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α))))) (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M _inst_1)) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : α -> M) => MonoidHom.{u1, u2} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} M _inst_1)) f) (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} M _inst_1) (MonoidHom.monoidHomClass.{u1, u2} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} M _inst_1)))) (FunLike.coe.{max (succ u2) (succ u1), max (succ u2) (succ u1), max (succ u2) (succ u1)} (Equiv.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (α -> M) (MonoidHom.{u1, u2} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} M _inst_1))) (α -> M) (fun (_x : α -> M) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : α -> M) => MonoidHom.{u1, u2} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} M _inst_1)) _x) (Equiv.instFunLikeEquiv.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (α -> M) (MonoidHom.{u1, u2} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} M _inst_1))) (FreeMonoid.lift.{u1, u2} α M _inst_1) f) (FreeMonoid.of.{u1} α x)) (f x)
+ forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : Monoid.{u2} M] (f : α -> M) (x : α), Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : FreeMonoid.{u1} α) => M) (FreeMonoid.of.{u1} α x)) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : α -> M) => MonoidHom.{u1, u2} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} M _inst_1)) f) (FreeMonoid.{u1} α) (fun (_x : FreeMonoid.{u1} α) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : FreeMonoid.{u1} α) => M) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : α -> M) => MonoidHom.{u1, u2} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} M _inst_1)) f) (FreeMonoid.{u1} α) M (MulOneClass.toMul.{u1} (FreeMonoid.{u1} α) (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α))))) (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M _inst_1)) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : α -> M) => MonoidHom.{u1, u2} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} M _inst_1)) f) (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} M _inst_1) (MonoidHom.monoidHomClass.{u1, u2} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} M _inst_1)))) (FunLike.coe.{max (succ u2) (succ u1), max (succ u2) (succ u1), max (succ u2) (succ u1)} (Equiv.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (α -> M) (MonoidHom.{u1, u2} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} M _inst_1))) (α -> M) (fun (_x : α -> M) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : α -> M) => MonoidHom.{u1, u2} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} M _inst_1)) _x) (Equiv.instFunLikeEquiv.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (α -> M) (MonoidHom.{u1, u2} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} M _inst_1))) (FreeMonoid.lift.{u1, u2} α M _inst_1) f) (FreeMonoid.of.{u1} α x)) (f x)
Case conversion may be inaccurate. Consider using '#align free_monoid.lift_eval_of FreeMonoid.lift_eval_ofₓ'. -/
@[simp, to_additive]
theorem lift_eval_of (f : α → M) (x : α) : lift f (of x) = f x :=
@@ -418,7 +418,7 @@ theorem lift_eval_of (f : α → M) (x : α) : lift f (of x) = f x :=
lean 3 declaration is
forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : Monoid.{u2} M] (f : MonoidHom.{u1, u2} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} M _inst_1)), Eq.{max (succ u2) (succ u1)} (MonoidHom.{u1, u2} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} M _inst_1)) (coeFn.{max 1 (max (max (succ u1) (succ u2)) (succ u2) (succ u1)) (max (succ u2) (succ u1)) (succ u1) (succ u2), max (max (succ u1) (succ u2)) (succ u2) (succ u1)} (Equiv.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (α -> M) (MonoidHom.{u1, u2} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} M _inst_1))) (fun (_x : Equiv.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (α -> M) (MonoidHom.{u1, u2} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} M _inst_1))) => (α -> M) -> (MonoidHom.{u1, u2} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} M _inst_1))) (Equiv.hasCoeToFun.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (α -> M) (MonoidHom.{u1, u2} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} M _inst_1))) (FreeMonoid.lift.{u1, u2} α M _inst_1) (Function.comp.{succ u1, succ u1, succ u2} α (FreeMonoid.{u1} α) M (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} M _inst_1)) (fun (_x : MonoidHom.{u1, u2} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} M _inst_1)) => (FreeMonoid.{u1} α) -> M) (MonoidHom.hasCoeToFun.{u1, u2} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} M _inst_1)) f) (FreeMonoid.of.{u1} α))) f
but is expected to have type
- forall {α : Type.{u2}} {M : Type.{u1}} [_inst_1 : Monoid.{u1} M] (f : MonoidHom.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1)), Eq.{max (succ u2) (succ u1)} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : α -> M) => MonoidHom.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1)) (Function.comp.{succ u2, succ u2, succ u1} α (FreeMonoid.{u2} α) M (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1)) (FreeMonoid.{u2} α) (fun (a : FreeMonoid.{u2} α) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : FreeMonoid.{u2} α) => M) a) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1)) (FreeMonoid.{u2} α) M (MulOneClass.toMul.{u2} (FreeMonoid.{u2} α) (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α))))) (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M _inst_1)) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1)) (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1) (MonoidHom.monoidHomClass.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1)))) f) (FreeMonoid.of.{u2} α))) (FunLike.coe.{max (succ u1) (succ u2), max (succ u1) (succ u2), max (succ u1) (succ u2)} (Equiv.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (α -> M) (MonoidHom.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1))) (α -> M) (fun (_x : α -> M) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : α -> M) => MonoidHom.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1)) _x) (Equiv.instFunLikeEquiv.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (α -> M) (MonoidHom.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1))) (FreeMonoid.lift.{u2, u1} α M _inst_1) (Function.comp.{succ u2, succ u2, succ u1} α (FreeMonoid.{u2} α) M (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1)) (FreeMonoid.{u2} α) (fun (_x : FreeMonoid.{u2} α) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : FreeMonoid.{u2} α) => M) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1)) (FreeMonoid.{u2} α) M (MulOneClass.toMul.{u2} (FreeMonoid.{u2} α) (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α))))) (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M _inst_1)) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1)) (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1) (MonoidHom.monoidHomClass.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1)))) f) (FreeMonoid.of.{u2} α))) f
+ forall {α : Type.{u2}} {M : Type.{u1}} [_inst_1 : Monoid.{u1} M] (f : MonoidHom.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1)), Eq.{max (succ u2) (succ u1)} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : α -> M) => MonoidHom.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1)) (Function.comp.{succ u2, succ u2, succ u1} α (FreeMonoid.{u2} α) M (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1)) (FreeMonoid.{u2} α) (fun (a : FreeMonoid.{u2} α) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : FreeMonoid.{u2} α) => M) a) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1)) (FreeMonoid.{u2} α) M (MulOneClass.toMul.{u2} (FreeMonoid.{u2} α) (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α))))) (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M _inst_1)) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1)) (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1) (MonoidHom.monoidHomClass.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1)))) f) (FreeMonoid.of.{u2} α))) (FunLike.coe.{max (succ u1) (succ u2), max (succ u1) (succ u2), max (succ u1) (succ u2)} (Equiv.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (α -> M) (MonoidHom.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1))) (α -> M) (fun (_x : α -> M) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : α -> M) => MonoidHom.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1)) _x) (Equiv.instFunLikeEquiv.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (α -> M) (MonoidHom.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1))) (FreeMonoid.lift.{u2, u1} α M _inst_1) (Function.comp.{succ u2, succ u2, succ u1} α (FreeMonoid.{u2} α) M (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1)) (FreeMonoid.{u2} α) (fun (_x : FreeMonoid.{u2} α) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : FreeMonoid.{u2} α) => M) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1)) (FreeMonoid.{u2} α) M (MulOneClass.toMul.{u2} (FreeMonoid.{u2} α) (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α))))) (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M _inst_1)) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1)) (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1) (MonoidHom.monoidHomClass.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1)))) f) (FreeMonoid.of.{u2} α))) f
Case conversion may be inaccurate. Consider using '#align free_monoid.lift_restrict FreeMonoid.lift_restrictₓ'. -/
@[simp, to_additive]
theorem lift_restrict (f : FreeMonoid α →* M) : lift (f ∘ of) = f :=
@@ -430,7 +430,7 @@ theorem lift_restrict (f : FreeMonoid α →* M) : lift (f ∘ of) = f :=
lean 3 declaration is
forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : Monoid.{u2} M] {N : Type.{u3}} [_inst_2 : Monoid.{u3} N] (g : MonoidHom.{u2, u3} M N (Monoid.toMulOneClass.{u2} M _inst_1) (Monoid.toMulOneClass.{u3} N _inst_2)) (f : α -> M), Eq.{max (succ u3) (succ u1)} (MonoidHom.{u1, u3} (FreeMonoid.{u1} α) N (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u3} N _inst_2)) (MonoidHom.comp.{u1, u2, u3} (FreeMonoid.{u1} α) M N (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} M _inst_1) (Monoid.toMulOneClass.{u3} N _inst_2) g (coeFn.{max 1 (max (max (succ u1) (succ u2)) (succ u2) (succ u1)) (max (succ u2) (succ u1)) (succ u1) (succ u2), max (max (succ u1) (succ u2)) (succ u2) (succ u1)} (Equiv.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (α -> M) (MonoidHom.{u1, u2} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} M _inst_1))) (fun (_x : Equiv.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (α -> M) (MonoidHom.{u1, u2} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} M _inst_1))) => (α -> M) -> (MonoidHom.{u1, u2} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} M _inst_1))) (Equiv.hasCoeToFun.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (α -> M) (MonoidHom.{u1, u2} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} M _inst_1))) (FreeMonoid.lift.{u1, u2} α M _inst_1) f)) (coeFn.{max 1 (max (max (succ u1) (succ u3)) (succ u3) (succ u1)) (max (succ u3) (succ u1)) (succ u1) (succ u3), max (max (succ u1) (succ u3)) (succ u3) (succ u1)} (Equiv.{max (succ u1) (succ u3), max (succ u3) (succ u1)} (α -> N) (MonoidHom.{u1, u3} (FreeMonoid.{u1} α) N (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u3} N _inst_2))) (fun (_x : Equiv.{max (succ u1) (succ u3), max (succ u3) (succ u1)} (α -> N) (MonoidHom.{u1, u3} (FreeMonoid.{u1} α) N (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u3} N _inst_2))) => (α -> N) -> (MonoidHom.{u1, u3} (FreeMonoid.{u1} α) N (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u3} N _inst_2))) (Equiv.hasCoeToFun.{max (succ u1) (succ u3), max (succ u3) (succ u1)} (α -> N) (MonoidHom.{u1, u3} (FreeMonoid.{u1} α) N (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u3} N _inst_2))) (FreeMonoid.lift.{u1, u3} α N _inst_2) (Function.comp.{succ u1, succ u2, succ u3} α M N (coeFn.{max (succ u3) (succ u2), max (succ u2) (succ u3)} (MonoidHom.{u2, u3} M N (Monoid.toMulOneClass.{u2} M _inst_1) (Monoid.toMulOneClass.{u3} N _inst_2)) (fun (_x : MonoidHom.{u2, u3} M N (Monoid.toMulOneClass.{u2} M _inst_1) (Monoid.toMulOneClass.{u3} N _inst_2)) => M -> N) (MonoidHom.hasCoeToFun.{u2, u3} M N (Monoid.toMulOneClass.{u2} M _inst_1) (Monoid.toMulOneClass.{u3} N _inst_2)) g) f))
but is expected to have type
- forall {α : Type.{u1}} {M : Type.{u3}} [_inst_1 : Monoid.{u3} M] {N : Type.{u2}} [_inst_2 : Monoid.{u2} N] (g : MonoidHom.{u3, u2} M N (Monoid.toMulOneClass.{u3} M _inst_1) (Monoid.toMulOneClass.{u2} N _inst_2)) (f : α -> M), Eq.{max (succ u1) (succ u2)} (MonoidHom.{u1, u2} (FreeMonoid.{u1} α) N (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} N _inst_2)) (MonoidHom.comp.{u1, u3, u2} (FreeMonoid.{u1} α) M N (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α)))) (Monoid.toMulOneClass.{u3} M _inst_1) (Monoid.toMulOneClass.{u2} N _inst_2) g (FunLike.coe.{max (succ u3) (succ u1), max (succ u3) (succ u1), max (succ u3) (succ u1)} (Equiv.{max (succ u1) (succ u3), max (succ u3) (succ u1)} (α -> M) (MonoidHom.{u1, u3} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α)))) (Monoid.toMulOneClass.{u3} M _inst_1))) (α -> M) (fun (_x : α -> M) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : α -> M) => MonoidHom.{u1, u3} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α)))) (Monoid.toMulOneClass.{u3} M _inst_1)) _x) (Equiv.instFunLikeEquiv.{max (succ u3) (succ u1), max (succ u3) (succ u1)} (α -> M) (MonoidHom.{u1, u3} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α)))) (Monoid.toMulOneClass.{u3} M _inst_1))) (FreeMonoid.lift.{u1, u3} α M _inst_1) f)) (FunLike.coe.{max (succ u2) (succ u1), max (succ u2) (succ u1), max (succ u2) (succ u1)} (Equiv.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (α -> N) (MonoidHom.{u1, u2} (FreeMonoid.{u1} α) N (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} N _inst_2))) (α -> N) (fun (_x : α -> N) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : α -> N) => MonoidHom.{u1, u2} (FreeMonoid.{u1} α) N (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} N _inst_2)) _x) (Equiv.instFunLikeEquiv.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (α -> N) (MonoidHom.{u1, u2} (FreeMonoid.{u1} α) N (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} N _inst_2))) (FreeMonoid.lift.{u1, u2} α N _inst_2) (Function.comp.{succ u1, succ u3, succ u2} α M N (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} M N (Monoid.toMulOneClass.{u3} M _inst_1) (Monoid.toMulOneClass.{u2} N _inst_2)) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) _x) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M N (Monoid.toMulOneClass.{u3} M _inst_1) (Monoid.toMulOneClass.{u2} N _inst_2)) M N (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M _inst_1)) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N _inst_2)) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M N (Monoid.toMulOneClass.{u3} M _inst_1) (Monoid.toMulOneClass.{u2} N _inst_2)) M N (Monoid.toMulOneClass.{u3} M _inst_1) (Monoid.toMulOneClass.{u2} N _inst_2) (MonoidHom.monoidHomClass.{u3, u2} M N (Monoid.toMulOneClass.{u3} M _inst_1) (Monoid.toMulOneClass.{u2} N _inst_2)))) g) f))
+ forall {α : Type.{u1}} {M : Type.{u3}} [_inst_1 : Monoid.{u3} M] {N : Type.{u2}} [_inst_2 : Monoid.{u2} N] (g : MonoidHom.{u3, u2} M N (Monoid.toMulOneClass.{u3} M _inst_1) (Monoid.toMulOneClass.{u2} N _inst_2)) (f : α -> M), Eq.{max (succ u1) (succ u2)} (MonoidHom.{u1, u2} (FreeMonoid.{u1} α) N (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} N _inst_2)) (MonoidHom.comp.{u1, u3, u2} (FreeMonoid.{u1} α) M N (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α)))) (Monoid.toMulOneClass.{u3} M _inst_1) (Monoid.toMulOneClass.{u2} N _inst_2) g (FunLike.coe.{max (succ u3) (succ u1), max (succ u3) (succ u1), max (succ u3) (succ u1)} (Equiv.{max (succ u1) (succ u3), max (succ u3) (succ u1)} (α -> M) (MonoidHom.{u1, u3} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α)))) (Monoid.toMulOneClass.{u3} M _inst_1))) (α -> M) (fun (_x : α -> M) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : α -> M) => MonoidHom.{u1, u3} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α)))) (Monoid.toMulOneClass.{u3} M _inst_1)) _x) (Equiv.instFunLikeEquiv.{max (succ u3) (succ u1), max (succ u3) (succ u1)} (α -> M) (MonoidHom.{u1, u3} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α)))) (Monoid.toMulOneClass.{u3} M _inst_1))) (FreeMonoid.lift.{u1, u3} α M _inst_1) f)) (FunLike.coe.{max (succ u2) (succ u1), max (succ u2) (succ u1), max (succ u2) (succ u1)} (Equiv.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (α -> N) (MonoidHom.{u1, u2} (FreeMonoid.{u1} α) N (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} N _inst_2))) (α -> N) (fun (_x : α -> N) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : α -> N) => MonoidHom.{u1, u2} (FreeMonoid.{u1} α) N (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} N _inst_2)) _x) (Equiv.instFunLikeEquiv.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (α -> N) (MonoidHom.{u1, u2} (FreeMonoid.{u1} α) N (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} N _inst_2))) (FreeMonoid.lift.{u1, u2} α N _inst_2) (Function.comp.{succ u1, succ u3, succ u2} α M N (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} M N (Monoid.toMulOneClass.{u3} M _inst_1) (Monoid.toMulOneClass.{u2} N _inst_2)) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) _x) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M N (Monoid.toMulOneClass.{u3} M _inst_1) (Monoid.toMulOneClass.{u2} N _inst_2)) M N (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M _inst_1)) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N _inst_2)) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M N (Monoid.toMulOneClass.{u3} M _inst_1) (Monoid.toMulOneClass.{u2} N _inst_2)) M N (Monoid.toMulOneClass.{u3} M _inst_1) (Monoid.toMulOneClass.{u2} N _inst_2) (MonoidHom.monoidHomClass.{u3, u2} M N (Monoid.toMulOneClass.{u3} M _inst_1) (Monoid.toMulOneClass.{u2} N _inst_2)))) g) f))
Case conversion may be inaccurate. Consider using '#align free_monoid.comp_lift FreeMonoid.comp_liftₓ'. -/
@[to_additive]
theorem comp_lift (g : M →* N) (f : α → M) : g.comp (lift f) = lift (g ∘ f) :=
@@ -444,7 +444,7 @@ theorem comp_lift (g : M →* N) (f : α → M) : g.comp (lift f) = lift (g ∘
lean 3 declaration is
forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : Monoid.{u2} M] {N : Type.{u3}} [_inst_2 : Monoid.{u3} N] (g : MonoidHom.{u2, u3} M N (Monoid.toMulOneClass.{u2} M _inst_1) (Monoid.toMulOneClass.{u3} N _inst_2)) (f : α -> M) (x : FreeMonoid.{u1} α), Eq.{succ u3} N (coeFn.{max (succ u3) (succ u2), max (succ u2) (succ u3)} (MonoidHom.{u2, u3} M N (Monoid.toMulOneClass.{u2} M _inst_1) (Monoid.toMulOneClass.{u3} N _inst_2)) (fun (_x : MonoidHom.{u2, u3} M N (Monoid.toMulOneClass.{u2} M _inst_1) (Monoid.toMulOneClass.{u3} N _inst_2)) => M -> N) (MonoidHom.hasCoeToFun.{u2, u3} M N (Monoid.toMulOneClass.{u2} M _inst_1) (Monoid.toMulOneClass.{u3} N _inst_2)) g (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} M _inst_1)) (fun (_x : MonoidHom.{u1, u2} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} M _inst_1)) => (FreeMonoid.{u1} α) -> M) (MonoidHom.hasCoeToFun.{u1, u2} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} M _inst_1)) (coeFn.{max 1 (max (max (succ u1) (succ u2)) (succ u2) (succ u1)) (max (succ u2) (succ u1)) (succ u1) (succ u2), max (max (succ u1) (succ u2)) (succ u2) (succ u1)} (Equiv.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (α -> M) (MonoidHom.{u1, u2} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} M _inst_1))) (fun (_x : Equiv.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (α -> M) (MonoidHom.{u1, u2} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} M _inst_1))) => (α -> M) -> (MonoidHom.{u1, u2} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} M _inst_1))) (Equiv.hasCoeToFun.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (α -> M) (MonoidHom.{u1, u2} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} M _inst_1))) (FreeMonoid.lift.{u1, u2} α M _inst_1) f) x)) (coeFn.{max (succ u3) (succ u1), max (succ u1) (succ u3)} (MonoidHom.{u1, u3} (FreeMonoid.{u1} α) N (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u3} N _inst_2)) (fun (_x : MonoidHom.{u1, u3} (FreeMonoid.{u1} α) N (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u3} N _inst_2)) => (FreeMonoid.{u1} α) -> N) (MonoidHom.hasCoeToFun.{u1, u3} (FreeMonoid.{u1} α) N (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u3} N _inst_2)) (coeFn.{max 1 (max (max (succ u1) (succ u3)) (succ u3) (succ u1)) (max (succ u3) (succ u1)) (succ u1) (succ u3), max (max (succ u1) (succ u3)) (succ u3) (succ u1)} (Equiv.{max (succ u1) (succ u3), max (succ u3) (succ u1)} (α -> N) (MonoidHom.{u1, u3} (FreeMonoid.{u1} α) N (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u3} N _inst_2))) (fun (_x : Equiv.{max (succ u1) (succ u3), max (succ u3) (succ u1)} (α -> N) (MonoidHom.{u1, u3} (FreeMonoid.{u1} α) N (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u3} N _inst_2))) => (α -> N) -> (MonoidHom.{u1, u3} (FreeMonoid.{u1} α) N (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u3} N _inst_2))) (Equiv.hasCoeToFun.{max (succ u1) (succ u3), max (succ u3) (succ u1)} (α -> N) (MonoidHom.{u1, u3} (FreeMonoid.{u1} α) N (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u3} N _inst_2))) (FreeMonoid.lift.{u1, u3} α N _inst_2) (Function.comp.{succ u1, succ u2, succ u3} α M N (coeFn.{max (succ u3) (succ u2), max (succ u2) (succ u3)} (MonoidHom.{u2, u3} M N (Monoid.toMulOneClass.{u2} M _inst_1) (Monoid.toMulOneClass.{u3} N _inst_2)) (fun (_x : MonoidHom.{u2, u3} M N (Monoid.toMulOneClass.{u2} M _inst_1) (Monoid.toMulOneClass.{u3} N _inst_2)) => M -> N) (MonoidHom.hasCoeToFun.{u2, u3} M N (Monoid.toMulOneClass.{u2} M _inst_1) (Monoid.toMulOneClass.{u3} N _inst_2)) g) f)) x)
but is expected to have type
- forall {α : Type.{u1}} {M : Type.{u3}} [_inst_1 : Monoid.{u3} M] {N : Type.{u2}} [_inst_2 : Monoid.{u2} N] (g : MonoidHom.{u3, u2} M N (Monoid.toMulOneClass.{u3} M _inst_1) (Monoid.toMulOneClass.{u2} N _inst_2)) (f : α -> M) (x : FreeMonoid.{u1} α), Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) (FunLike.coe.{max (succ u1) (succ u3), succ u1, succ u3} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : α -> M) => MonoidHom.{u1, u3} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α)))) (Monoid.toMulOneClass.{u3} M _inst_1)) f) (FreeMonoid.{u1} α) (fun (a : FreeMonoid.{u1} α) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : FreeMonoid.{u1} α) => M) a) (MulHomClass.toFunLike.{max u1 u3, u1, u3} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : α -> M) => MonoidHom.{u1, u3} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α)))) (Monoid.toMulOneClass.{u3} M _inst_1)) f) (FreeMonoid.{u1} α) M (MulOneClass.toMul.{u1} (FreeMonoid.{u1} α) (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α))))) (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M _inst_1)) (MonoidHomClass.toMulHomClass.{max u1 u3, u1, u3} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : α -> M) => MonoidHom.{u1, u3} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α)))) (Monoid.toMulOneClass.{u3} M _inst_1)) f) (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α)))) (Monoid.toMulOneClass.{u3} M _inst_1) (MonoidHom.monoidHomClass.{u1, u3} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α)))) (Monoid.toMulOneClass.{u3} M _inst_1)))) (FunLike.coe.{max (succ u3) (succ u1), max (succ u3) (succ u1), max (succ u3) (succ u1)} (Equiv.{max (succ u1) (succ u3), max (succ u3) (succ u1)} (α -> M) (MonoidHom.{u1, u3} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α)))) (Monoid.toMulOneClass.{u3} M _inst_1))) (α -> M) (fun (a : α -> M) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : α -> M) => MonoidHom.{u1, u3} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α)))) (Monoid.toMulOneClass.{u3} M _inst_1)) a) (Equiv.instFunLikeEquiv.{max (succ u3) (succ u1), max (succ u3) (succ u1)} (α -> M) (MonoidHom.{u1, u3} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α)))) (Monoid.toMulOneClass.{u3} M _inst_1))) (FreeMonoid.lift.{u1, u3} α M _inst_1) f) x)) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} M N (Monoid.toMulOneClass.{u3} M _inst_1) (Monoid.toMulOneClass.{u2} N _inst_2)) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) _x) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M N (Monoid.toMulOneClass.{u3} M _inst_1) (Monoid.toMulOneClass.{u2} N _inst_2)) M N (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M _inst_1)) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N _inst_2)) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M N (Monoid.toMulOneClass.{u3} M _inst_1) (Monoid.toMulOneClass.{u2} N _inst_2)) M N (Monoid.toMulOneClass.{u3} M _inst_1) (Monoid.toMulOneClass.{u2} N _inst_2) (MonoidHom.monoidHomClass.{u3, u2} M N (Monoid.toMulOneClass.{u3} M _inst_1) (Monoid.toMulOneClass.{u2} N _inst_2)))) g (FunLike.coe.{max (succ u1) (succ u3), succ u1, succ u3} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : α -> M) => MonoidHom.{u1, u3} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α)))) (Monoid.toMulOneClass.{u3} M _inst_1)) f) (FreeMonoid.{u1} α) (fun (_x : FreeMonoid.{u1} α) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : FreeMonoid.{u1} α) => M) _x) (MulHomClass.toFunLike.{max u1 u3, u1, u3} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : α -> M) => MonoidHom.{u1, u3} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α)))) (Monoid.toMulOneClass.{u3} M _inst_1)) f) (FreeMonoid.{u1} α) M (MulOneClass.toMul.{u1} (FreeMonoid.{u1} α) (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α))))) (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M _inst_1)) (MonoidHomClass.toMulHomClass.{max u1 u3, u1, u3} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : α -> M) => MonoidHom.{u1, u3} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α)))) (Monoid.toMulOneClass.{u3} M _inst_1)) f) (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α)))) (Monoid.toMulOneClass.{u3} M _inst_1) (MonoidHom.monoidHomClass.{u1, u3} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α)))) (Monoid.toMulOneClass.{u3} M _inst_1)))) (FunLike.coe.{max (succ u3) (succ u1), max (succ u3) (succ u1), max (succ u3) (succ u1)} (Equiv.{max (succ u1) (succ u3), max (succ u3) (succ u1)} (α -> M) (MonoidHom.{u1, u3} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α)))) (Monoid.toMulOneClass.{u3} M _inst_1))) (α -> M) (fun (_x : α -> M) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : α -> M) => MonoidHom.{u1, u3} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α)))) (Monoid.toMulOneClass.{u3} M _inst_1)) _x) (Equiv.instFunLikeEquiv.{max (succ u3) (succ u1), max (succ u3) (succ u1)} (α -> M) (MonoidHom.{u1, u3} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α)))) (Monoid.toMulOneClass.{u3} M _inst_1))) (FreeMonoid.lift.{u1, u3} α M _inst_1) f) x)) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : α -> N) => MonoidHom.{u1, u2} (FreeMonoid.{u1} α) N (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} N _inst_2)) (Function.comp.{succ u1, succ u3, succ u2} α M N (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} M N (Monoid.toMulOneClass.{u3} M _inst_1) (Monoid.toMulOneClass.{u2} N _inst_2)) M (fun (a : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) a) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M N (Monoid.toMulOneClass.{u3} M _inst_1) (Monoid.toMulOneClass.{u2} N _inst_2)) M N (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M _inst_1)) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N _inst_2)) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M N (Monoid.toMulOneClass.{u3} M _inst_1) (Monoid.toMulOneClass.{u2} N _inst_2)) M N (Monoid.toMulOneClass.{u3} M _inst_1) (Monoid.toMulOneClass.{u2} N _inst_2) (MonoidHom.monoidHomClass.{u3, u2} M N (Monoid.toMulOneClass.{u3} M _inst_1) (Monoid.toMulOneClass.{u2} N _inst_2)))) g) f)) (FreeMonoid.{u1} α) (fun (_x : FreeMonoid.{u1} α) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : FreeMonoid.{u1} α) => N) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : α -> N) => MonoidHom.{u1, u2} (FreeMonoid.{u1} α) N (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} N _inst_2)) (Function.comp.{succ u1, succ u3, succ u2} α M N (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} M N (Monoid.toMulOneClass.{u3} M _inst_1) (Monoid.toMulOneClass.{u2} N _inst_2)) M (fun (a : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) a) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M N (Monoid.toMulOneClass.{u3} M _inst_1) (Monoid.toMulOneClass.{u2} N _inst_2)) M N (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M _inst_1)) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N _inst_2)) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M N (Monoid.toMulOneClass.{u3} M _inst_1) (Monoid.toMulOneClass.{u2} N _inst_2)) M N (Monoid.toMulOneClass.{u3} M _inst_1) (Monoid.toMulOneClass.{u2} N _inst_2) (MonoidHom.monoidHomClass.{u3, u2} M N (Monoid.toMulOneClass.{u3} M _inst_1) (Monoid.toMulOneClass.{u2} N _inst_2)))) g) f)) (FreeMonoid.{u1} α) N (MulOneClass.toMul.{u1} (FreeMonoid.{u1} α) (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α))))) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N _inst_2)) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : α -> N) => MonoidHom.{u1, u2} (FreeMonoid.{u1} α) N (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} N _inst_2)) (Function.comp.{succ u1, succ u3, succ u2} α M N (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} M N (Monoid.toMulOneClass.{u3} M _inst_1) (Monoid.toMulOneClass.{u2} N _inst_2)) M (fun (a : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) a) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M N (Monoid.toMulOneClass.{u3} M _inst_1) (Monoid.toMulOneClass.{u2} N _inst_2)) M N (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M _inst_1)) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N _inst_2)) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M N (Monoid.toMulOneClass.{u3} M _inst_1) (Monoid.toMulOneClass.{u2} N _inst_2)) M N (Monoid.toMulOneClass.{u3} M _inst_1) (Monoid.toMulOneClass.{u2} N _inst_2) (MonoidHom.monoidHomClass.{u3, u2} M N (Monoid.toMulOneClass.{u3} M _inst_1) (Monoid.toMulOneClass.{u2} N _inst_2)))) g) f)) (FreeMonoid.{u1} α) N (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} N _inst_2) (MonoidHom.monoidHomClass.{u1, u2} (FreeMonoid.{u1} α) N (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} N _inst_2)))) (FunLike.coe.{max (succ u2) (succ u1), max (succ u2) (succ u1), max (succ u2) (succ u1)} (Equiv.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (α -> N) (MonoidHom.{u1, u2} (FreeMonoid.{u1} α) N (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} N _inst_2))) (α -> N) (fun (_x : α -> N) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : α -> N) => MonoidHom.{u1, u2} (FreeMonoid.{u1} α) N (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} N _inst_2)) _x) (Equiv.instFunLikeEquiv.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (α -> N) (MonoidHom.{u1, u2} (FreeMonoid.{u1} α) N (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} N _inst_2))) (FreeMonoid.lift.{u1, u2} α N _inst_2) (Function.comp.{succ u1, succ u3, succ u2} α M N (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} M N (Monoid.toMulOneClass.{u3} M _inst_1) (Monoid.toMulOneClass.{u2} N _inst_2)) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) _x) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M N (Monoid.toMulOneClass.{u3} M _inst_1) (Monoid.toMulOneClass.{u2} N _inst_2)) M N (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M _inst_1)) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N _inst_2)) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M N (Monoid.toMulOneClass.{u3} M _inst_1) (Monoid.toMulOneClass.{u2} N _inst_2)) M N (Monoid.toMulOneClass.{u3} M _inst_1) (Monoid.toMulOneClass.{u2} N _inst_2) (MonoidHom.monoidHomClass.{u3, u2} M N (Monoid.toMulOneClass.{u3} M _inst_1) (Monoid.toMulOneClass.{u2} N _inst_2)))) g) f)) x)
+ forall {α : Type.{u1}} {M : Type.{u3}} [_inst_1 : Monoid.{u3} M] {N : Type.{u2}} [_inst_2 : Monoid.{u2} N] (g : MonoidHom.{u3, u2} M N (Monoid.toMulOneClass.{u3} M _inst_1) (Monoid.toMulOneClass.{u2} N _inst_2)) (f : α -> M) (x : FreeMonoid.{u1} α), Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) (FunLike.coe.{max (succ u1) (succ u3), succ u1, succ u3} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : α -> M) => MonoidHom.{u1, u3} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α)))) (Monoid.toMulOneClass.{u3} M _inst_1)) f) (FreeMonoid.{u1} α) (fun (a : FreeMonoid.{u1} α) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : FreeMonoid.{u1} α) => M) a) (MulHomClass.toFunLike.{max u1 u3, u1, u3} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : α -> M) => MonoidHom.{u1, u3} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α)))) (Monoid.toMulOneClass.{u3} M _inst_1)) f) (FreeMonoid.{u1} α) M (MulOneClass.toMul.{u1} (FreeMonoid.{u1} α) (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α))))) (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M _inst_1)) (MonoidHomClass.toMulHomClass.{max u1 u3, u1, u3} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : α -> M) => MonoidHom.{u1, u3} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α)))) (Monoid.toMulOneClass.{u3} M _inst_1)) f) (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α)))) (Monoid.toMulOneClass.{u3} M _inst_1) (MonoidHom.monoidHomClass.{u1, u3} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α)))) (Monoid.toMulOneClass.{u3} M _inst_1)))) (FunLike.coe.{max (succ u3) (succ u1), max (succ u3) (succ u1), max (succ u3) (succ u1)} (Equiv.{max (succ u1) (succ u3), max (succ u3) (succ u1)} (α -> M) (MonoidHom.{u1, u3} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α)))) (Monoid.toMulOneClass.{u3} M _inst_1))) (α -> M) (fun (a : α -> M) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : α -> M) => MonoidHom.{u1, u3} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α)))) (Monoid.toMulOneClass.{u3} M _inst_1)) a) (Equiv.instFunLikeEquiv.{max (succ u3) (succ u1), max (succ u3) (succ u1)} (α -> M) (MonoidHom.{u1, u3} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α)))) (Monoid.toMulOneClass.{u3} M _inst_1))) (FreeMonoid.lift.{u1, u3} α M _inst_1) f) x)) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} M N (Monoid.toMulOneClass.{u3} M _inst_1) (Monoid.toMulOneClass.{u2} N _inst_2)) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) _x) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M N (Monoid.toMulOneClass.{u3} M _inst_1) (Monoid.toMulOneClass.{u2} N _inst_2)) M N (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M _inst_1)) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N _inst_2)) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M N (Monoid.toMulOneClass.{u3} M _inst_1) (Monoid.toMulOneClass.{u2} N _inst_2)) M N (Monoid.toMulOneClass.{u3} M _inst_1) (Monoid.toMulOneClass.{u2} N _inst_2) (MonoidHom.monoidHomClass.{u3, u2} M N (Monoid.toMulOneClass.{u3} M _inst_1) (Monoid.toMulOneClass.{u2} N _inst_2)))) g (FunLike.coe.{max (succ u1) (succ u3), succ u1, succ u3} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : α -> M) => MonoidHom.{u1, u3} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α)))) (Monoid.toMulOneClass.{u3} M _inst_1)) f) (FreeMonoid.{u1} α) (fun (_x : FreeMonoid.{u1} α) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : FreeMonoid.{u1} α) => M) _x) (MulHomClass.toFunLike.{max u1 u3, u1, u3} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : α -> M) => MonoidHom.{u1, u3} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α)))) (Monoid.toMulOneClass.{u3} M _inst_1)) f) (FreeMonoid.{u1} α) M (MulOneClass.toMul.{u1} (FreeMonoid.{u1} α) (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α))))) (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M _inst_1)) (MonoidHomClass.toMulHomClass.{max u1 u3, u1, u3} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : α -> M) => MonoidHom.{u1, u3} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α)))) (Monoid.toMulOneClass.{u3} M _inst_1)) f) (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α)))) (Monoid.toMulOneClass.{u3} M _inst_1) (MonoidHom.monoidHomClass.{u1, u3} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α)))) (Monoid.toMulOneClass.{u3} M _inst_1)))) (FunLike.coe.{max (succ u3) (succ u1), max (succ u3) (succ u1), max (succ u3) (succ u1)} (Equiv.{max (succ u1) (succ u3), max (succ u3) (succ u1)} (α -> M) (MonoidHom.{u1, u3} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α)))) (Monoid.toMulOneClass.{u3} M _inst_1))) (α -> M) (fun (_x : α -> M) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : α -> M) => MonoidHom.{u1, u3} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α)))) (Monoid.toMulOneClass.{u3} M _inst_1)) _x) (Equiv.instFunLikeEquiv.{max (succ u3) (succ u1), max (succ u3) (succ u1)} (α -> M) (MonoidHom.{u1, u3} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α)))) (Monoid.toMulOneClass.{u3} M _inst_1))) (FreeMonoid.lift.{u1, u3} α M _inst_1) f) x)) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : α -> N) => MonoidHom.{u1, u2} (FreeMonoid.{u1} α) N (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} N _inst_2)) (Function.comp.{succ u1, succ u3, succ u2} α M N (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} M N (Monoid.toMulOneClass.{u3} M _inst_1) (Monoid.toMulOneClass.{u2} N _inst_2)) M (fun (a : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) a) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M N (Monoid.toMulOneClass.{u3} M _inst_1) (Monoid.toMulOneClass.{u2} N _inst_2)) M N (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M _inst_1)) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N _inst_2)) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M N (Monoid.toMulOneClass.{u3} M _inst_1) (Monoid.toMulOneClass.{u2} N _inst_2)) M N (Monoid.toMulOneClass.{u3} M _inst_1) (Monoid.toMulOneClass.{u2} N _inst_2) (MonoidHom.monoidHomClass.{u3, u2} M N (Monoid.toMulOneClass.{u3} M _inst_1) (Monoid.toMulOneClass.{u2} N _inst_2)))) g) f)) (FreeMonoid.{u1} α) (fun (_x : FreeMonoid.{u1} α) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : FreeMonoid.{u1} α) => N) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : α -> N) => MonoidHom.{u1, u2} (FreeMonoid.{u1} α) N (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} N _inst_2)) (Function.comp.{succ u1, succ u3, succ u2} α M N (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} M N (Monoid.toMulOneClass.{u3} M _inst_1) (Monoid.toMulOneClass.{u2} N _inst_2)) M (fun (a : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) a) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M N (Monoid.toMulOneClass.{u3} M _inst_1) (Monoid.toMulOneClass.{u2} N _inst_2)) M N (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M _inst_1)) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N _inst_2)) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M N (Monoid.toMulOneClass.{u3} M _inst_1) (Monoid.toMulOneClass.{u2} N _inst_2)) M N (Monoid.toMulOneClass.{u3} M _inst_1) (Monoid.toMulOneClass.{u2} N _inst_2) (MonoidHom.monoidHomClass.{u3, u2} M N (Monoid.toMulOneClass.{u3} M _inst_1) (Monoid.toMulOneClass.{u2} N _inst_2)))) g) f)) (FreeMonoid.{u1} α) N (MulOneClass.toMul.{u1} (FreeMonoid.{u1} α) (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α))))) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N _inst_2)) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : α -> N) => MonoidHom.{u1, u2} (FreeMonoid.{u1} α) N (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} N _inst_2)) (Function.comp.{succ u1, succ u3, succ u2} α M N (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} M N (Monoid.toMulOneClass.{u3} M _inst_1) (Monoid.toMulOneClass.{u2} N _inst_2)) M (fun (a : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) a) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M N (Monoid.toMulOneClass.{u3} M _inst_1) (Monoid.toMulOneClass.{u2} N _inst_2)) M N (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M _inst_1)) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N _inst_2)) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M N (Monoid.toMulOneClass.{u3} M _inst_1) (Monoid.toMulOneClass.{u2} N _inst_2)) M N (Monoid.toMulOneClass.{u3} M _inst_1) (Monoid.toMulOneClass.{u2} N _inst_2) (MonoidHom.monoidHomClass.{u3, u2} M N (Monoid.toMulOneClass.{u3} M _inst_1) (Monoid.toMulOneClass.{u2} N _inst_2)))) g) f)) (FreeMonoid.{u1} α) N (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} N _inst_2) (MonoidHom.monoidHomClass.{u1, u2} (FreeMonoid.{u1} α) N (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} N _inst_2)))) (FunLike.coe.{max (succ u2) (succ u1), max (succ u2) (succ u1), max (succ u2) (succ u1)} (Equiv.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (α -> N) (MonoidHom.{u1, u2} (FreeMonoid.{u1} α) N (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} N _inst_2))) (α -> N) (fun (_x : α -> N) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : α -> N) => MonoidHom.{u1, u2} (FreeMonoid.{u1} α) N (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} N _inst_2)) _x) (Equiv.instFunLikeEquiv.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (α -> N) (MonoidHom.{u1, u2} (FreeMonoid.{u1} α) N (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} N _inst_2))) (FreeMonoid.lift.{u1, u2} α N _inst_2) (Function.comp.{succ u1, succ u3, succ u2} α M N (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} M N (Monoid.toMulOneClass.{u3} M _inst_1) (Monoid.toMulOneClass.{u2} N _inst_2)) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) _x) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M N (Monoid.toMulOneClass.{u3} M _inst_1) (Monoid.toMulOneClass.{u2} N _inst_2)) M N (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M _inst_1)) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N _inst_2)) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M N (Monoid.toMulOneClass.{u3} M _inst_1) (Monoid.toMulOneClass.{u2} N _inst_2)) M N (Monoid.toMulOneClass.{u3} M _inst_1) (Monoid.toMulOneClass.{u2} N _inst_2) (MonoidHom.monoidHomClass.{u3, u2} M N (Monoid.toMulOneClass.{u3} M _inst_1) (Monoid.toMulOneClass.{u2} N _inst_2)))) g) f)) x)
Case conversion may be inaccurate. Consider using '#align free_monoid.hom_map_lift FreeMonoid.hom_map_liftₓ'. -/
@[to_additive]
theorem hom_map_lift (g : M →* N) (f : α → M) (x : FreeMonoid α) : g (lift f x) = lift (g ∘ f) x :=
@@ -472,7 +472,7 @@ def mkMulAction (f : α → β → β) : MulAction (FreeMonoid α) β
lean 3 declaration is
forall {α : Type.{u1}} {β : Type.{u2}} (f : α -> β -> β) (l : FreeMonoid.{u1} α) (b : β), Eq.{succ u2} β (SMul.smul.{u1, u2} (FreeMonoid.{u1} α) β (MulAction.toHasSmul.{u1, u2} (FreeMonoid.{u1} α) β (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α))) (FreeMonoid.mkMulAction.{u1, u2} α β f)) l b) (List.foldr.{u1, u2} α β f b (coeFn.{succ u1, succ u1} (Equiv.{succ u1, succ u1} (FreeMonoid.{u1} α) (List.{u1} α)) (fun (_x : Equiv.{succ u1, succ u1} (FreeMonoid.{u1} α) (List.{u1} α)) => (FreeMonoid.{u1} α) -> (List.{u1} α)) (Equiv.hasCoeToFun.{succ u1, succ u1} (FreeMonoid.{u1} α) (List.{u1} α)) (FreeMonoid.toList.{u1} α) l))
but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u1}} (f : α -> β -> β) (l : FreeMonoid.{u2} α) (b : β), Eq.{succ u1} β (HSMul.hSMul.{u2, u1, u1} (FreeMonoid.{u2} α) β β (instHSMul.{u2, u1} (FreeMonoid.{u2} α) β (MulAction.toSMul.{u2, u1} (FreeMonoid.{u2} α) β (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α))) (FreeMonoid.mkMulAction.{u2, u1} α β f))) l b) (List.foldr.{u2, u1} α β f b (FunLike.coe.{succ u2, succ u2, succ u2} (Equiv.{succ u2, succ u2} (FreeMonoid.{u2} α) (List.{u2} α)) (FreeMonoid.{u2} α) (fun (_x : FreeMonoid.{u2} α) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : FreeMonoid.{u2} α) => List.{u2} α) _x) (Equiv.instFunLikeEquiv.{succ u2, succ u2} (FreeMonoid.{u2} α) (List.{u2} α)) (FreeMonoid.toList.{u2} α) l))
+ forall {α : Type.{u2}} {β : Type.{u1}} (f : α -> β -> β) (l : FreeMonoid.{u2} α) (b : β), Eq.{succ u1} β (HSMul.hSMul.{u2, u1, u1} (FreeMonoid.{u2} α) β β (instHSMul.{u2, u1} (FreeMonoid.{u2} α) β (MulAction.toSMul.{u2, u1} (FreeMonoid.{u2} α) β (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α))) (FreeMonoid.mkMulAction.{u2, u1} α β f))) l b) (List.foldr.{u2, u1} α β f b (FunLike.coe.{succ u2, succ u2, succ u2} (Equiv.{succ u2, succ u2} (FreeMonoid.{u2} α) (List.{u2} α)) (FreeMonoid.{u2} α) (fun (_x : FreeMonoid.{u2} α) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : FreeMonoid.{u2} α) => List.{u2} α) _x) (Equiv.instFunLikeEquiv.{succ u2, succ u2} (FreeMonoid.{u2} α) (List.{u2} α)) (FreeMonoid.toList.{u2} α) l))
Case conversion may be inaccurate. Consider using '#align free_monoid.smul_def FreeMonoid.smul_defₓ'. -/
@[to_additive]
theorem smul_def (f : α → β → β) (l : FreeMonoid α) (b : β) :
@@ -486,7 +486,7 @@ theorem smul_def (f : α → β → β) (l : FreeMonoid α) (b : β) :
lean 3 declaration is
forall {α : Type.{u1}} {β : Type.{u2}} (f : α -> β -> β) (l : List.{u1} α) (b : β), Eq.{succ u2} β (SMul.smul.{u1, u2} (FreeMonoid.{u1} α) β (MulAction.toHasSmul.{u1, u2} (FreeMonoid.{u1} α) β (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α))) (FreeMonoid.mkMulAction.{u1, u2} α β f)) (coeFn.{succ u1, succ u1} (Equiv.{succ u1, succ u1} (List.{u1} α) (FreeMonoid.{u1} α)) (fun (_x : Equiv.{succ u1, succ u1} (List.{u1} α) (FreeMonoid.{u1} α)) => (List.{u1} α) -> (FreeMonoid.{u1} α)) (Equiv.hasCoeToFun.{succ u1, succ u1} (List.{u1} α) (FreeMonoid.{u1} α)) (FreeMonoid.ofList.{u1} α) l) b) (List.foldr.{u1, u2} α β f b l)
but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u1}} (f : α -> β -> β) (l : List.{u2} α) (b : β), Eq.{succ u1} β (HSMul.hSMul.{u2, u1, u1} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : List.{u2} α) => FreeMonoid.{u2} α) l) β β (instHSMul.{u2, u1} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : List.{u2} α) => FreeMonoid.{u2} α) l) β (MulAction.toSMul.{u2, u1} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : List.{u2} α) => FreeMonoid.{u2} α) l) β (RightCancelMonoid.toMonoid.{u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : List.{u2} α) => FreeMonoid.{u2} α) l) (CancelMonoid.toRightCancelMonoid.{u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : List.{u2} α) => FreeMonoid.{u2} α) l) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α))) (FreeMonoid.mkMulAction.{u2, u1} α β f))) (FunLike.coe.{succ u2, succ u2, succ u2} (Equiv.{succ u2, succ u2} (List.{u2} α) (FreeMonoid.{u2} α)) (List.{u2} α) (fun (_x : List.{u2} α) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : List.{u2} α) => FreeMonoid.{u2} α) _x) (Equiv.instFunLikeEquiv.{succ u2, succ u2} (List.{u2} α) (FreeMonoid.{u2} α)) (FreeMonoid.ofList.{u2} α) l) b) (List.foldr.{u2, u1} α β f b l)
+ forall {α : Type.{u2}} {β : Type.{u1}} (f : α -> β -> β) (l : List.{u2} α) (b : β), Eq.{succ u1} β (HSMul.hSMul.{u2, u1, u1} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : List.{u2} α) => FreeMonoid.{u2} α) l) β β (instHSMul.{u2, u1} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : List.{u2} α) => FreeMonoid.{u2} α) l) β (MulAction.toSMul.{u2, u1} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : List.{u2} α) => FreeMonoid.{u2} α) l) β (RightCancelMonoid.toMonoid.{u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : List.{u2} α) => FreeMonoid.{u2} α) l) (CancelMonoid.toRightCancelMonoid.{u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : List.{u2} α) => FreeMonoid.{u2} α) l) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α))) (FreeMonoid.mkMulAction.{u2, u1} α β f))) (FunLike.coe.{succ u2, succ u2, succ u2} (Equiv.{succ u2, succ u2} (List.{u2} α) (FreeMonoid.{u2} α)) (List.{u2} α) (fun (_x : List.{u2} α) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : List.{u2} α) => FreeMonoid.{u2} α) _x) (Equiv.instFunLikeEquiv.{succ u2, succ u2} (List.{u2} α) (FreeMonoid.{u2} α)) (FreeMonoid.ofList.{u2} α) l) b) (List.foldr.{u2, u1} α β f b l)
Case conversion may be inaccurate. Consider using '#align free_monoid.of_list_smul FreeMonoid.ofList_smulₓ'. -/
@[to_additive]
theorem ofList_smul (f : α → β → β) (l : List α) (b : β) :
@@ -529,7 +529,7 @@ def map (f : α → β) : FreeMonoid α →* FreeMonoid β
lean 3 declaration is
forall {α : Type.{u1}} {β : Type.{u2}} (f : α -> β) (x : α), Eq.{succ u2} (FreeMonoid.{u2} β) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} (FreeMonoid.{u1} α) (FreeMonoid.{u2} β) (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} β) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} β) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} β) (FreeMonoid.cancelMonoid.{u2} β))))) (fun (_x : MonoidHom.{u1, u2} (FreeMonoid.{u1} α) (FreeMonoid.{u2} β) (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} β) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} β) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} β) (FreeMonoid.cancelMonoid.{u2} β))))) => (FreeMonoid.{u1} α) -> (FreeMonoid.{u2} β)) (MonoidHom.hasCoeToFun.{u1, u2} (FreeMonoid.{u1} α) (FreeMonoid.{u2} β) (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} β) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} β) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} β) (FreeMonoid.cancelMonoid.{u2} β))))) (FreeMonoid.map.{u1, u2} α β f) (FreeMonoid.of.{u1} α x)) (FreeMonoid.of.{u2} β (f x))
but is expected to have type
- forall {α : Type.{u1}} {β : Type.{u2}} (f : α -> β) (x : α), Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : FreeMonoid.{u1} α) => FreeMonoid.{u2} β) (FreeMonoid.of.{u1} α x)) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} (FreeMonoid.{u1} α) (FreeMonoid.{u2} β) (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} β) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} β) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} β) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} β))))) (FreeMonoid.{u1} α) (fun (_x : FreeMonoid.{u1} α) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : FreeMonoid.{u1} α) => FreeMonoid.{u2} β) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} (FreeMonoid.{u1} α) (FreeMonoid.{u2} β) (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} β) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} β) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} β) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} β))))) (FreeMonoid.{u1} α) (FreeMonoid.{u2} β) (MulOneClass.toMul.{u1} (FreeMonoid.{u1} α) (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α))))) (MulOneClass.toMul.{u2} (FreeMonoid.{u2} β) (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} β) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} β) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} β) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} β))))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} (FreeMonoid.{u1} α) (FreeMonoid.{u2} β) (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} β) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} β) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} β) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} β))))) (FreeMonoid.{u1} α) (FreeMonoid.{u2} β) (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} β) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} β) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} β) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} β)))) (MonoidHom.monoidHomClass.{u1, u2} (FreeMonoid.{u1} α) (FreeMonoid.{u2} β) (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} β) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} β) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} β) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} β))))))) (FreeMonoid.map.{u1, u2} α β f) (FreeMonoid.of.{u1} α x)) (FreeMonoid.of.{u2} β (f x))
+ forall {α : Type.{u1}} {β : Type.{u2}} (f : α -> β) (x : α), Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : FreeMonoid.{u1} α) => FreeMonoid.{u2} β) (FreeMonoid.of.{u1} α x)) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} (FreeMonoid.{u1} α) (FreeMonoid.{u2} β) (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} β) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} β) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} β) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} β))))) (FreeMonoid.{u1} α) (fun (_x : FreeMonoid.{u1} α) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : FreeMonoid.{u1} α) => FreeMonoid.{u2} β) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} (FreeMonoid.{u1} α) (FreeMonoid.{u2} β) (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} β) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} β) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} β) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} β))))) (FreeMonoid.{u1} α) (FreeMonoid.{u2} β) (MulOneClass.toMul.{u1} (FreeMonoid.{u1} α) (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α))))) (MulOneClass.toMul.{u2} (FreeMonoid.{u2} β) (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} β) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} β) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} β) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} β))))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} (FreeMonoid.{u1} α) (FreeMonoid.{u2} β) (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} β) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} β) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} β) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} β))))) (FreeMonoid.{u1} α) (FreeMonoid.{u2} β) (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} β) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} β) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} β) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} β)))) (MonoidHom.monoidHomClass.{u1, u2} (FreeMonoid.{u1} α) (FreeMonoid.{u2} β) (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} β) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} β) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} β) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} β))))))) (FreeMonoid.map.{u1, u2} α β f) (FreeMonoid.of.{u1} α x)) (FreeMonoid.of.{u2} β (f x))
Case conversion may be inaccurate. Consider using '#align free_monoid.map_of FreeMonoid.map_ofₓ'. -/
@[simp, to_additive]
theorem map_of (f : α → β) (x : α) : map f (of x) = of (f x) :=
@@ -541,7 +541,7 @@ theorem map_of (f : α → β) (x : α) : map f (of x) = of (f x) :=
lean 3 declaration is
forall {α : Type.{u1}} {β : Type.{u2}} (f : α -> β) (xs : FreeMonoid.{u1} α), Eq.{succ u2} (List.{u2} β) (coeFn.{succ u2, succ u2} (Equiv.{succ u2, succ u2} (FreeMonoid.{u2} β) (List.{u2} β)) (fun (_x : Equiv.{succ u2, succ u2} (FreeMonoid.{u2} β) (List.{u2} β)) => (FreeMonoid.{u2} β) -> (List.{u2} β)) (Equiv.hasCoeToFun.{succ u2, succ u2} (FreeMonoid.{u2} β) (List.{u2} β)) (FreeMonoid.toList.{u2} β) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} (FreeMonoid.{u1} α) (FreeMonoid.{u2} β) (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} β) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} β) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} β) (FreeMonoid.cancelMonoid.{u2} β))))) (fun (_x : MonoidHom.{u1, u2} (FreeMonoid.{u1} α) (FreeMonoid.{u2} β) (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} β) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} β) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} β) (FreeMonoid.cancelMonoid.{u2} β))))) => (FreeMonoid.{u1} α) -> (FreeMonoid.{u2} β)) (MonoidHom.hasCoeToFun.{u1, u2} (FreeMonoid.{u1} α) (FreeMonoid.{u2} β) (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} β) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} β) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} β) (FreeMonoid.cancelMonoid.{u2} β))))) (FreeMonoid.map.{u1, u2} α β f) xs)) (List.map.{u1, u2} α β f (coeFn.{succ u1, succ u1} (Equiv.{succ u1, succ u1} (FreeMonoid.{u1} α) (List.{u1} α)) (fun (_x : Equiv.{succ u1, succ u1} (FreeMonoid.{u1} α) (List.{u1} α)) => (FreeMonoid.{u1} α) -> (List.{u1} α)) (Equiv.hasCoeToFun.{succ u1, succ u1} (FreeMonoid.{u1} α) (List.{u1} α)) (FreeMonoid.toList.{u1} α) xs))
but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u1}} (f : α -> β) (xs : FreeMonoid.{u2} α), Eq.{succ u1} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : FreeMonoid.{u1} β) => List.{u1} β) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} (FreeMonoid.{u2} α) (FreeMonoid.{u1} β) (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} β) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} β) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} β) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} β))))) (FreeMonoid.{u2} α) (fun (a : FreeMonoid.{u2} α) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : FreeMonoid.{u2} α) => FreeMonoid.{u1} β) a) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (FreeMonoid.{u2} α) (FreeMonoid.{u1} β) (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} β) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} β) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} β) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} β))))) (FreeMonoid.{u2} α) (FreeMonoid.{u1} β) (MulOneClass.toMul.{u2} (FreeMonoid.{u2} α) (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α))))) (MulOneClass.toMul.{u1} (FreeMonoid.{u1} β) (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} β) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} β) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} β) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} β))))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (FreeMonoid.{u2} α) (FreeMonoid.{u1} β) (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} β) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} β) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} β) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} β))))) (FreeMonoid.{u2} α) (FreeMonoid.{u1} β) (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} β) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} β) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} β) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} β)))) (MonoidHom.monoidHomClass.{u2, u1} (FreeMonoid.{u2} α) (FreeMonoid.{u1} β) (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} β) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} β) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} β) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} β))))))) (FreeMonoid.map.{u2, u1} α β f) xs)) (FunLike.coe.{succ u1, succ u1, succ u1} (Equiv.{succ u1, succ u1} (FreeMonoid.{u1} β) (List.{u1} β)) (FreeMonoid.{u1} β) (fun (_x : FreeMonoid.{u1} β) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : FreeMonoid.{u1} β) => List.{u1} β) _x) (Equiv.instFunLikeEquiv.{succ u1, succ u1} (FreeMonoid.{u1} β) (List.{u1} β)) (FreeMonoid.toList.{u1} β) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} (FreeMonoid.{u2} α) (FreeMonoid.{u1} β) (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} β) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} β) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} β) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} β))))) (FreeMonoid.{u2} α) (fun (_x : FreeMonoid.{u2} α) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : FreeMonoid.{u2} α) => FreeMonoid.{u1} β) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (FreeMonoid.{u2} α) (FreeMonoid.{u1} β) (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} β) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} β) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} β) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} β))))) (FreeMonoid.{u2} α) (FreeMonoid.{u1} β) (MulOneClass.toMul.{u2} (FreeMonoid.{u2} α) (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α))))) (MulOneClass.toMul.{u1} (FreeMonoid.{u1} β) (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} β) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} β) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} β) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} β))))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (FreeMonoid.{u2} α) (FreeMonoid.{u1} β) (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} β) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} β) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} β) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} β))))) (FreeMonoid.{u2} α) (FreeMonoid.{u1} β) (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} β) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} β) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} β) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} β)))) (MonoidHom.monoidHomClass.{u2, u1} (FreeMonoid.{u2} α) (FreeMonoid.{u1} β) (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} β) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} β) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} β) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} β))))))) (FreeMonoid.map.{u2, u1} α β f) xs)) (List.map.{u2, u1} α β f (FunLike.coe.{succ u2, succ u2, succ u2} (Equiv.{succ u2, succ u2} (FreeMonoid.{u2} α) (List.{u2} α)) (FreeMonoid.{u2} α) (fun (_x : FreeMonoid.{u2} α) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : FreeMonoid.{u2} α) => List.{u2} α) _x) (Equiv.instFunLikeEquiv.{succ u2, succ u2} (FreeMonoid.{u2} α) (List.{u2} α)) (FreeMonoid.toList.{u2} α) xs))
+ forall {α : Type.{u2}} {β : Type.{u1}} (f : α -> β) (xs : FreeMonoid.{u2} α), Eq.{succ u1} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : FreeMonoid.{u1} β) => List.{u1} β) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} (FreeMonoid.{u2} α) (FreeMonoid.{u1} β) (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} β) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} β) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} β) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} β))))) (FreeMonoid.{u2} α) (fun (a : FreeMonoid.{u2} α) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : FreeMonoid.{u2} α) => FreeMonoid.{u1} β) a) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (FreeMonoid.{u2} α) (FreeMonoid.{u1} β) (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} β) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} β) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} β) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} β))))) (FreeMonoid.{u2} α) (FreeMonoid.{u1} β) (MulOneClass.toMul.{u2} (FreeMonoid.{u2} α) (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α))))) (MulOneClass.toMul.{u1} (FreeMonoid.{u1} β) (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} β) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} β) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} β) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} β))))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (FreeMonoid.{u2} α) (FreeMonoid.{u1} β) (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} β) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} β) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} β) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} β))))) (FreeMonoid.{u2} α) (FreeMonoid.{u1} β) (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} β) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} β) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} β) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} β)))) (MonoidHom.monoidHomClass.{u2, u1} (FreeMonoid.{u2} α) (FreeMonoid.{u1} β) (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} β) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} β) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} β) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} β))))))) (FreeMonoid.map.{u2, u1} α β f) xs)) (FunLike.coe.{succ u1, succ u1, succ u1} (Equiv.{succ u1, succ u1} (FreeMonoid.{u1} β) (List.{u1} β)) (FreeMonoid.{u1} β) (fun (_x : FreeMonoid.{u1} β) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : FreeMonoid.{u1} β) => List.{u1} β) _x) (Equiv.instFunLikeEquiv.{succ u1, succ u1} (FreeMonoid.{u1} β) (List.{u1} β)) (FreeMonoid.toList.{u1} β) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} (FreeMonoid.{u2} α) (FreeMonoid.{u1} β) (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} β) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} β) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} β) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} β))))) (FreeMonoid.{u2} α) (fun (_x : FreeMonoid.{u2} α) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : FreeMonoid.{u2} α) => FreeMonoid.{u1} β) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (FreeMonoid.{u2} α) (FreeMonoid.{u1} β) (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} β) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} β) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} β) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} β))))) (FreeMonoid.{u2} α) (FreeMonoid.{u1} β) (MulOneClass.toMul.{u2} (FreeMonoid.{u2} α) (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α))))) (MulOneClass.toMul.{u1} (FreeMonoid.{u1} β) (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} β) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} β) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} β) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} β))))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (FreeMonoid.{u2} α) (FreeMonoid.{u1} β) (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} β) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} β) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} β) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} β))))) (FreeMonoid.{u2} α) (FreeMonoid.{u1} β) (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} β) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} β) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} β) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} β)))) (MonoidHom.monoidHomClass.{u2, u1} (FreeMonoid.{u2} α) (FreeMonoid.{u1} β) (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} β) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} β) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} β) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} β))))))) (FreeMonoid.map.{u2, u1} α β f) xs)) (List.map.{u2, u1} α β f (FunLike.coe.{succ u2, succ u2, succ u2} (Equiv.{succ u2, succ u2} (FreeMonoid.{u2} α) (List.{u2} α)) (FreeMonoid.{u2} α) (fun (_x : FreeMonoid.{u2} α) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : FreeMonoid.{u2} α) => List.{u2} α) _x) (Equiv.instFunLikeEquiv.{succ u2, succ u2} (FreeMonoid.{u2} α) (List.{u2} α)) (FreeMonoid.toList.{u2} α) xs))
Case conversion may be inaccurate. Consider using '#align free_monoid.to_list_map FreeMonoid.toList_mapₓ'. -/
@[to_additive]
theorem toList_map (f : α → β) (xs : FreeMonoid α) : (map f xs).toList = xs.toList.map f :=
@@ -553,7 +553,7 @@ theorem toList_map (f : α → β) (xs : FreeMonoid α) : (map f xs).toList = xs
lean 3 declaration is
forall {α : Type.{u1}} {β : Type.{u2}} (f : α -> β) (xs : List.{u1} α), Eq.{succ u2} (FreeMonoid.{u2} β) (coeFn.{succ u2, succ u2} (Equiv.{succ u2, succ u2} (List.{u2} β) (FreeMonoid.{u2} β)) (fun (_x : Equiv.{succ u2, succ u2} (List.{u2} β) (FreeMonoid.{u2} β)) => (List.{u2} β) -> (FreeMonoid.{u2} β)) (Equiv.hasCoeToFun.{succ u2, succ u2} (List.{u2} β) (FreeMonoid.{u2} β)) (FreeMonoid.ofList.{u2} β) (List.map.{u1, u2} α β f xs)) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} (FreeMonoid.{u1} α) (FreeMonoid.{u2} β) (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} β) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} β) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} β) (FreeMonoid.cancelMonoid.{u2} β))))) (fun (_x : MonoidHom.{u1, u2} (FreeMonoid.{u1} α) (FreeMonoid.{u2} β) (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} β) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} β) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} β) (FreeMonoid.cancelMonoid.{u2} β))))) => (FreeMonoid.{u1} α) -> (FreeMonoid.{u2} β)) (MonoidHom.hasCoeToFun.{u1, u2} (FreeMonoid.{u1} α) (FreeMonoid.{u2} β) (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} β) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} β) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} β) (FreeMonoid.cancelMonoid.{u2} β))))) (FreeMonoid.map.{u1, u2} α β f) (coeFn.{succ u1, succ u1} (Equiv.{succ u1, succ u1} (List.{u1} α) (FreeMonoid.{u1} α)) (fun (_x : Equiv.{succ u1, succ u1} (List.{u1} α) (FreeMonoid.{u1} α)) => (List.{u1} α) -> (FreeMonoid.{u1} α)) (Equiv.hasCoeToFun.{succ u1, succ u1} (List.{u1} α) (FreeMonoid.{u1} α)) (FreeMonoid.ofList.{u1} α) xs))
but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u1}} (f : α -> β) (xs : List.{u2} α), Eq.{succ u1} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : List.{u1} β) => FreeMonoid.{u1} β) (List.map.{u2, u1} α β f xs)) (FunLike.coe.{succ u1, succ u1, succ u1} (Equiv.{succ u1, succ u1} (List.{u1} β) (FreeMonoid.{u1} β)) (List.{u1} β) (fun (_x : List.{u1} β) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : List.{u1} β) => FreeMonoid.{u1} β) _x) (Equiv.instFunLikeEquiv.{succ u1, succ u1} (List.{u1} β) (FreeMonoid.{u1} β)) (FreeMonoid.ofList.{u1} β) (List.map.{u2, u1} α β f xs)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} (FreeMonoid.{u2} α) (FreeMonoid.{u1} β) (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} β) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} β) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} β) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} β))))) (FreeMonoid.{u2} α) (fun (_x : FreeMonoid.{u2} α) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : FreeMonoid.{u2} α) => FreeMonoid.{u1} β) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (FreeMonoid.{u2} α) (FreeMonoid.{u1} β) (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} β) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} β) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} β) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} β))))) (FreeMonoid.{u2} α) (FreeMonoid.{u1} β) (MulOneClass.toMul.{u2} (FreeMonoid.{u2} α) (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α))))) (MulOneClass.toMul.{u1} (FreeMonoid.{u1} β) (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} β) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} β) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} β) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} β))))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (FreeMonoid.{u2} α) (FreeMonoid.{u1} β) (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} β) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} β) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} β) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} β))))) (FreeMonoid.{u2} α) (FreeMonoid.{u1} β) (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} β) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} β) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} β) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} β)))) (MonoidHom.monoidHomClass.{u2, u1} (FreeMonoid.{u2} α) (FreeMonoid.{u1} β) (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} β) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} β) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} β) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} β))))))) (FreeMonoid.map.{u2, u1} α β f) (FunLike.coe.{succ u2, succ u2, succ u2} (Equiv.{succ u2, succ u2} (List.{u2} α) (FreeMonoid.{u2} α)) (List.{u2} α) (fun (_x : List.{u2} α) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : List.{u2} α) => FreeMonoid.{u2} α) _x) (Equiv.instFunLikeEquiv.{succ u2, succ u2} (List.{u2} α) (FreeMonoid.{u2} α)) (FreeMonoid.ofList.{u2} α) xs))
+ forall {α : Type.{u2}} {β : Type.{u1}} (f : α -> β) (xs : List.{u2} α), Eq.{succ u1} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : List.{u1} β) => FreeMonoid.{u1} β) (List.map.{u2, u1} α β f xs)) (FunLike.coe.{succ u1, succ u1, succ u1} (Equiv.{succ u1, succ u1} (List.{u1} β) (FreeMonoid.{u1} β)) (List.{u1} β) (fun (_x : List.{u1} β) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : List.{u1} β) => FreeMonoid.{u1} β) _x) (Equiv.instFunLikeEquiv.{succ u1, succ u1} (List.{u1} β) (FreeMonoid.{u1} β)) (FreeMonoid.ofList.{u1} β) (List.map.{u2, u1} α β f xs)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} (FreeMonoid.{u2} α) (FreeMonoid.{u1} β) (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} β) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} β) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} β) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} β))))) (FreeMonoid.{u2} α) (fun (_x : FreeMonoid.{u2} α) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : FreeMonoid.{u2} α) => FreeMonoid.{u1} β) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (FreeMonoid.{u2} α) (FreeMonoid.{u1} β) (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} β) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} β) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} β) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} β))))) (FreeMonoid.{u2} α) (FreeMonoid.{u1} β) (MulOneClass.toMul.{u2} (FreeMonoid.{u2} α) (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α))))) (MulOneClass.toMul.{u1} (FreeMonoid.{u1} β) (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} β) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} β) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} β) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} β))))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (FreeMonoid.{u2} α) (FreeMonoid.{u1} β) (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} β) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} β) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} β) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} β))))) (FreeMonoid.{u2} α) (FreeMonoid.{u1} β) (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} β) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} β) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} β) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} β)))) (MonoidHom.monoidHomClass.{u2, u1} (FreeMonoid.{u2} α) (FreeMonoid.{u1} β) (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} β) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} β) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} β) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} β))))))) (FreeMonoid.map.{u2, u1} α β f) (FunLike.coe.{succ u2, succ u2, succ u2} (Equiv.{succ u2, succ u2} (List.{u2} α) (FreeMonoid.{u2} α)) (List.{u2} α) (fun (_x : List.{u2} α) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : List.{u2} α) => FreeMonoid.{u2} α) _x) (Equiv.instFunLikeEquiv.{succ u2, succ u2} (List.{u2} α) (FreeMonoid.{u2} α)) (FreeMonoid.ofList.{u2} α) xs))
Case conversion may be inaccurate. Consider using '#align free_monoid.of_list_map FreeMonoid.ofList_mapₓ'. -/
@[to_additive]
theorem ofList_map (f : α → β) (xs : List α) : ofList (xs.map f) = map f (ofList xs) :=
@@ -565,7 +565,7 @@ theorem ofList_map (f : α → β) (xs : List α) : ofList (xs.map f) = map f (o
lean 3 declaration is
forall {α : Type.{u1}} {β : Type.{u2}} (f : α -> β), Eq.{max (succ u2) (succ u1)} (MonoidHom.{u1, u2} (FreeMonoid.{u1} α) (FreeMonoid.{u2} β) (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} β) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} β) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} β) (FreeMonoid.cancelMonoid.{u2} β))))) (coeFn.{max 1 (max (max (succ u1) (succ u2)) (succ u2) (succ u1)) (max (succ u2) (succ u1)) (succ u1) (succ u2), max (max (succ u1) (succ u2)) (succ u2) (succ u1)} (Equiv.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (α -> (FreeMonoid.{u2} β)) (MonoidHom.{u1, u2} (FreeMonoid.{u1} α) (FreeMonoid.{u2} β) (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} β) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} β) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} β) (FreeMonoid.cancelMonoid.{u2} β)))))) (fun (_x : Equiv.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (α -> (FreeMonoid.{u2} β)) (MonoidHom.{u1, u2} (FreeMonoid.{u1} α) (FreeMonoid.{u2} β) (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} β) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} β) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} β) (FreeMonoid.cancelMonoid.{u2} β)))))) => (α -> (FreeMonoid.{u2} β)) -> (MonoidHom.{u1, u2} (FreeMonoid.{u1} α) (FreeMonoid.{u2} β) (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} β) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} β) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} β) (FreeMonoid.cancelMonoid.{u2} β)))))) (Equiv.hasCoeToFun.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (α -> (FreeMonoid.{u2} β)) (MonoidHom.{u1, u2} (FreeMonoid.{u1} α) (FreeMonoid.{u2} β) (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} β) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} β) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} β) (FreeMonoid.cancelMonoid.{u2} β)))))) (FreeMonoid.lift.{u1, u2} α (FreeMonoid.{u2} β) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} β) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} β) (FreeMonoid.cancelMonoid.{u2} β)))) (fun (x : α) => FreeMonoid.of.{u2} β (f x))) (FreeMonoid.map.{u1, u2} α β f)
but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u1}} (f : α -> β), Eq.{max (succ u2) (succ u1)} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : α -> (FreeMonoid.{u1} β)) => MonoidHom.{u2, u1} (FreeMonoid.{u2} α) (FreeMonoid.{u1} β) (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} β) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} β) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} β) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} β))))) (fun (x : α) => FreeMonoid.of.{u1} β (f x))) (FunLike.coe.{max (succ u1) (succ u2), max (succ u1) (succ u2), max (succ u1) (succ u2)} (Equiv.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (α -> (FreeMonoid.{u1} β)) (MonoidHom.{u2, u1} (FreeMonoid.{u2} α) (FreeMonoid.{u1} β) (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} β) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} β) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} β) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} β)))))) (α -> (FreeMonoid.{u1} β)) (fun (_x : α -> (FreeMonoid.{u1} β)) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : α -> (FreeMonoid.{u1} β)) => MonoidHom.{u2, u1} (FreeMonoid.{u2} α) (FreeMonoid.{u1} β) (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} β) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} β) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} β) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} β))))) _x) (Equiv.instFunLikeEquiv.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (α -> (FreeMonoid.{u1} β)) (MonoidHom.{u2, u1} (FreeMonoid.{u2} α) (FreeMonoid.{u1} β) (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} β) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} β) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} β) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} β)))))) (FreeMonoid.lift.{u2, u1} α (FreeMonoid.{u1} β) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} β) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} β) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} β)))) (fun (x : α) => FreeMonoid.of.{u1} β (f x))) (FreeMonoid.map.{u2, u1} α β f)
+ forall {α : Type.{u2}} {β : Type.{u1}} (f : α -> β), Eq.{max (succ u2) (succ u1)} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : α -> (FreeMonoid.{u1} β)) => MonoidHom.{u2, u1} (FreeMonoid.{u2} α) (FreeMonoid.{u1} β) (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} β) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} β) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} β) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} β))))) (fun (x : α) => FreeMonoid.of.{u1} β (f x))) (FunLike.coe.{max (succ u1) (succ u2), max (succ u1) (succ u2), max (succ u1) (succ u2)} (Equiv.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (α -> (FreeMonoid.{u1} β)) (MonoidHom.{u2, u1} (FreeMonoid.{u2} α) (FreeMonoid.{u1} β) (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} β) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} β) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} β) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} β)))))) (α -> (FreeMonoid.{u1} β)) (fun (_x : α -> (FreeMonoid.{u1} β)) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : α -> (FreeMonoid.{u1} β)) => MonoidHom.{u2, u1} (FreeMonoid.{u2} α) (FreeMonoid.{u1} β) (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} β) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} β) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} β) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} β))))) _x) (Equiv.instFunLikeEquiv.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (α -> (FreeMonoid.{u1} β)) (MonoidHom.{u2, u1} (FreeMonoid.{u2} α) (FreeMonoid.{u1} β) (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} β) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} β) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} β) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} β)))))) (FreeMonoid.lift.{u2, u1} α (FreeMonoid.{u1} β) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} β) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} β) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} β)))) (fun (x : α) => FreeMonoid.of.{u1} β (f x))) (FreeMonoid.map.{u2, u1} α β f)
Case conversion may be inaccurate. Consider using '#align free_monoid.lift_of_comp_eq_map FreeMonoid.lift_of_comp_eq_mapₓ'. -/
@[to_additive]
theorem lift_of_comp_eq_map (f : α → β) : (lift fun x => of (f x)) = map f :=
mathlib commit https://github.com/leanprover-community/mathlib/commit/3180fab693e2cee3bff62675571264cb8778b212
@@ -311,7 +311,7 @@ theorem casesOn_of_mul {C : FreeMonoid α → Sort _} (x : α) (xs : FreeMonoid
lean 3 declaration is
forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : Monoid.{u2} M] {{f : MonoidHom.{u1, u2} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} M _inst_1)}} {{g : MonoidHom.{u1, u2} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} M _inst_1)}}, (forall (x : α), Eq.{succ u2} M (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} M _inst_1)) (fun (_x : MonoidHom.{u1, u2} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} M _inst_1)) => (FreeMonoid.{u1} α) -> M) (MonoidHom.hasCoeToFun.{u1, u2} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} M _inst_1)) f (FreeMonoid.of.{u1} α x)) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} M _inst_1)) (fun (_x : MonoidHom.{u1, u2} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} M _inst_1)) => (FreeMonoid.{u1} α) -> M) (MonoidHom.hasCoeToFun.{u1, u2} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} M _inst_1)) g (FreeMonoid.of.{u1} α x))) -> (Eq.{max (succ u2) (succ u1)} (MonoidHom.{u1, u2} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} M _inst_1)) f g)
but is expected to have type
- forall {α : Type.{u2}} {M : Type.{u1}} [_inst_1 : Monoid.{u1} M] {{f : MonoidHom.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1)}} {{g : MonoidHom.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1)}}, (forall (x : α), Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : FreeMonoid.{u2} α) => M) (FreeMonoid.of.{u2} α x)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1)) (FreeMonoid.{u2} α) (fun (_x : FreeMonoid.{u2} α) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : FreeMonoid.{u2} α) => M) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1)) (FreeMonoid.{u2} α) M (MulOneClass.toMul.{u2} (FreeMonoid.{u2} α) (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α))))) (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M _inst_1)) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1)) (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1) (MonoidHom.monoidHomClass.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1)))) f (FreeMonoid.of.{u2} α x)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1)) (FreeMonoid.{u2} α) (fun (_x : FreeMonoid.{u2} α) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : FreeMonoid.{u2} α) => M) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1)) (FreeMonoid.{u2} α) M (MulOneClass.toMul.{u2} (FreeMonoid.{u2} α) (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α))))) (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M _inst_1)) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1)) (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1) (MonoidHom.monoidHomClass.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1)))) g (FreeMonoid.of.{u2} α x))) -> (Eq.{max (succ u2) (succ u1)} (MonoidHom.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1)) f g)
+ forall {α : Type.{u2}} {M : Type.{u1}} [_inst_1 : Monoid.{u1} M] {{f : MonoidHom.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1)}} {{g : MonoidHom.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1)}}, (forall (x : α), Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : FreeMonoid.{u2} α) => M) (FreeMonoid.of.{u2} α x)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1)) (FreeMonoid.{u2} α) (fun (_x : FreeMonoid.{u2} α) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : FreeMonoid.{u2} α) => M) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1)) (FreeMonoid.{u2} α) M (MulOneClass.toMul.{u2} (FreeMonoid.{u2} α) (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α))))) (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M _inst_1)) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1)) (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1) (MonoidHom.monoidHomClass.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1)))) f (FreeMonoid.of.{u2} α x)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1)) (FreeMonoid.{u2} α) (fun (_x : FreeMonoid.{u2} α) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : FreeMonoid.{u2} α) => M) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1)) (FreeMonoid.{u2} α) M (MulOneClass.toMul.{u2} (FreeMonoid.{u2} α) (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α))))) (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M _inst_1)) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1)) (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1) (MonoidHom.monoidHomClass.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1)))) g (FreeMonoid.of.{u2} α x))) -> (Eq.{max (succ u2) (succ u1)} (MonoidHom.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1)) f g)
Case conversion may be inaccurate. Consider using '#align free_monoid.hom_eq FreeMonoid.hom_eqₓ'. -/
@[ext, to_additive]
theorem hom_eq ⦃f g : FreeMonoid α →* M⦄ (h : ∀ x, f (of x) = g (of x)) : f = g :=
@@ -370,7 +370,7 @@ def lift : (α → M) ≃ (FreeMonoid α →* M)
lean 3 declaration is
forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : Monoid.{u2} M] (f : MonoidHom.{u1, u2} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} M _inst_1)), Eq.{max (succ u1) (succ u2)} (α -> M) (coeFn.{max 1 (max (max (succ u2) (succ u1)) (succ u1) (succ u2)) (max (succ u1) (succ u2)) (succ u2) (succ u1), max (max (succ u2) (succ u1)) (succ u1) (succ u2)} (Equiv.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} M _inst_1)) (α -> M)) (fun (_x : Equiv.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} M _inst_1)) (α -> M)) => (MonoidHom.{u1, u2} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} M _inst_1)) -> α -> M) (Equiv.hasCoeToFun.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} M _inst_1)) (α -> M)) (Equiv.symm.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (α -> M) (MonoidHom.{u1, u2} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} M _inst_1)) (FreeMonoid.lift.{u1, u2} α M _inst_1)) f) (Function.comp.{succ u1, succ u1, succ u2} α (FreeMonoid.{u1} α) M (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} M _inst_1)) (fun (_x : MonoidHom.{u1, u2} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} M _inst_1)) => (FreeMonoid.{u1} α) -> M) (MonoidHom.hasCoeToFun.{u1, u2} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} M _inst_1)) f) (FreeMonoid.of.{u1} α))
but is expected to have type
- forall {α : Type.{u2}} {M : Type.{u1}} [_inst_1 : Monoid.{u1} M] (f : MonoidHom.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1)), Eq.{max (succ u2) (succ u1)} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : MonoidHom.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1)) => α -> M) f) (FunLike.coe.{max (succ u1) (succ u2), max (succ u1) (succ u2), max (succ u1) (succ u2)} (Equiv.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (MonoidHom.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1)) (α -> M)) (MonoidHom.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1)) (fun (_x : MonoidHom.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1)) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : MonoidHom.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1)) => α -> M) _x) (Equiv.instFunLikeEquiv.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (MonoidHom.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1)) (α -> M)) (Equiv.symm.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (α -> M) (MonoidHom.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1)) (FreeMonoid.lift.{u2, u1} α M _inst_1)) f) (Function.comp.{succ u2, succ u2, succ u1} α (FreeMonoid.{u2} α) M (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1)) (FreeMonoid.{u2} α) (fun (_x : FreeMonoid.{u2} α) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : FreeMonoid.{u2} α) => M) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1)) (FreeMonoid.{u2} α) M (MulOneClass.toMul.{u2} (FreeMonoid.{u2} α) (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α))))) (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M _inst_1)) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1)) (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1) (MonoidHom.monoidHomClass.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1)))) f) (FreeMonoid.of.{u2} α))
+ forall {α : Type.{u2}} {M : Type.{u1}} [_inst_1 : Monoid.{u1} M] (f : MonoidHom.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1)), Eq.{max (succ u2) (succ u1)} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : MonoidHom.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1)) => α -> M) f) (FunLike.coe.{max (succ u1) (succ u2), max (succ u1) (succ u2), max (succ u1) (succ u2)} (Equiv.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (MonoidHom.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1)) (α -> M)) (MonoidHom.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1)) (fun (_x : MonoidHom.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1)) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : MonoidHom.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1)) => α -> M) _x) (Equiv.instFunLikeEquiv.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (MonoidHom.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1)) (α -> M)) (Equiv.symm.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (α -> M) (MonoidHom.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1)) (FreeMonoid.lift.{u2, u1} α M _inst_1)) f) (Function.comp.{succ u2, succ u2, succ u1} α (FreeMonoid.{u2} α) M (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1)) (FreeMonoid.{u2} α) (fun (_x : FreeMonoid.{u2} α) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : FreeMonoid.{u2} α) => M) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1)) (FreeMonoid.{u2} α) M (MulOneClass.toMul.{u2} (FreeMonoid.{u2} α) (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α))))) (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M _inst_1)) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1)) (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1) (MonoidHom.monoidHomClass.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1)))) f) (FreeMonoid.of.{u2} α))
Case conversion may be inaccurate. Consider using '#align free_monoid.lift_symm_apply FreeMonoid.lift_symm_applyₓ'. -/
@[simp, to_additive]
theorem lift_symm_apply (f : FreeMonoid α →* M) : lift.symm f = f ∘ of :=
@@ -382,7 +382,7 @@ theorem lift_symm_apply (f : FreeMonoid α →* M) : lift.symm f = f ∘ of :=
lean 3 declaration is
forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : Monoid.{u2} M] (f : α -> M) (l : FreeMonoid.{u1} α), Eq.{succ u2} M (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} M _inst_1)) (fun (_x : MonoidHom.{u1, u2} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} M _inst_1)) => (FreeMonoid.{u1} α) -> M) (MonoidHom.hasCoeToFun.{u1, u2} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} M _inst_1)) (coeFn.{max 1 (max (max (succ u1) (succ u2)) (succ u2) (succ u1)) (max (succ u2) (succ u1)) (succ u1) (succ u2), max (max (succ u1) (succ u2)) (succ u2) (succ u1)} (Equiv.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (α -> M) (MonoidHom.{u1, u2} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} M _inst_1))) (fun (_x : Equiv.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (α -> M) (MonoidHom.{u1, u2} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} M _inst_1))) => (α -> M) -> (MonoidHom.{u1, u2} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} M _inst_1))) (Equiv.hasCoeToFun.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (α -> M) (MonoidHom.{u1, u2} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} M _inst_1))) (FreeMonoid.lift.{u1, u2} α M _inst_1) f) l) (List.prod.{u2} M (MulOneClass.toHasMul.{u2} M (Monoid.toMulOneClass.{u2} M _inst_1)) (MulOneClass.toHasOne.{u2} M (Monoid.toMulOneClass.{u2} M _inst_1)) (List.map.{u1, u2} α M f (coeFn.{succ u1, succ u1} (Equiv.{succ u1, succ u1} (FreeMonoid.{u1} α) (List.{u1} α)) (fun (_x : Equiv.{succ u1, succ u1} (FreeMonoid.{u1} α) (List.{u1} α)) => (FreeMonoid.{u1} α) -> (List.{u1} α)) (Equiv.hasCoeToFun.{succ u1, succ u1} (FreeMonoid.{u1} α) (List.{u1} α)) (FreeMonoid.toList.{u1} α) l)))
but is expected to have type
- forall {α : Type.{u2}} {M : Type.{u1}} [_inst_1 : Monoid.{u1} M] (f : α -> M) (l : FreeMonoid.{u2} α), Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : FreeMonoid.{u2} α) => M) l) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : α -> M) => MonoidHom.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1)) f) (FreeMonoid.{u2} α) (fun (_x : FreeMonoid.{u2} α) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : FreeMonoid.{u2} α) => M) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : α -> M) => MonoidHom.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1)) f) (FreeMonoid.{u2} α) M (MulOneClass.toMul.{u2} (FreeMonoid.{u2} α) (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α))))) (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M _inst_1)) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : α -> M) => MonoidHom.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1)) f) (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1) (MonoidHom.monoidHomClass.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1)))) (FunLike.coe.{max (succ u1) (succ u2), max (succ u1) (succ u2), max (succ u1) (succ u2)} (Equiv.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (α -> M) (MonoidHom.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1))) (α -> M) (fun (_x : α -> M) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : α -> M) => MonoidHom.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1)) _x) (Equiv.instFunLikeEquiv.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (α -> M) (MonoidHom.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1))) (FreeMonoid.lift.{u2, u1} α M _inst_1) f) l) (List.prod.{u1} M (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M _inst_1)) (Monoid.toOne.{u1} M _inst_1) (List.map.{u2, u1} α M f (FunLike.coe.{succ u2, succ u2, succ u2} (Equiv.{succ u2, succ u2} (FreeMonoid.{u2} α) (List.{u2} α)) (FreeMonoid.{u2} α) (fun (_x : FreeMonoid.{u2} α) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : FreeMonoid.{u2} α) => List.{u2} α) _x) (Equiv.instFunLikeEquiv.{succ u2, succ u2} (FreeMonoid.{u2} α) (List.{u2} α)) (FreeMonoid.toList.{u2} α) l)))
+ forall {α : Type.{u2}} {M : Type.{u1}} [_inst_1 : Monoid.{u1} M] (f : α -> M) (l : FreeMonoid.{u2} α), Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : FreeMonoid.{u2} α) => M) l) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : α -> M) => MonoidHom.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1)) f) (FreeMonoid.{u2} α) (fun (_x : FreeMonoid.{u2} α) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : FreeMonoid.{u2} α) => M) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : α -> M) => MonoidHom.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1)) f) (FreeMonoid.{u2} α) M (MulOneClass.toMul.{u2} (FreeMonoid.{u2} α) (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α))))) (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M _inst_1)) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : α -> M) => MonoidHom.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1)) f) (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1) (MonoidHom.monoidHomClass.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1)))) (FunLike.coe.{max (succ u1) (succ u2), max (succ u1) (succ u2), max (succ u1) (succ u2)} (Equiv.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (α -> M) (MonoidHom.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1))) (α -> M) (fun (_x : α -> M) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : α -> M) => MonoidHom.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1)) _x) (Equiv.instFunLikeEquiv.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (α -> M) (MonoidHom.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1))) (FreeMonoid.lift.{u2, u1} α M _inst_1) f) l) (List.prod.{u1} M (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M _inst_1)) (Monoid.toOne.{u1} M _inst_1) (List.map.{u2, u1} α M f (FunLike.coe.{succ u2, succ u2, succ u2} (Equiv.{succ u2, succ u2} (FreeMonoid.{u2} α) (List.{u2} α)) (FreeMonoid.{u2} α) (fun (_x : FreeMonoid.{u2} α) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : FreeMonoid.{u2} α) => List.{u2} α) _x) (Equiv.instFunLikeEquiv.{succ u2, succ u2} (FreeMonoid.{u2} α) (List.{u2} α)) (FreeMonoid.toList.{u2} α) l)))
Case conversion may be inaccurate. Consider using '#align free_monoid.lift_apply FreeMonoid.lift_applyₓ'. -/
@[to_additive]
theorem lift_apply (f : α → M) (l : FreeMonoid α) : lift f l = (l.toList.map f).Prod :=
@@ -394,7 +394,7 @@ theorem lift_apply (f : α → M) (l : FreeMonoid α) : lift f l = (l.toList.map
lean 3 declaration is
forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : Monoid.{u2} M] (f : α -> M), Eq.{max (succ u1) (succ u2)} (α -> M) (Function.comp.{succ u1, succ u1, succ u2} α (FreeMonoid.{u1} α) M (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} M _inst_1)) (fun (_x : MonoidHom.{u1, u2} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} M _inst_1)) => (FreeMonoid.{u1} α) -> M) (MonoidHom.hasCoeToFun.{u1, u2} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} M _inst_1)) (coeFn.{max 1 (max (max (succ u1) (succ u2)) (succ u2) (succ u1)) (max (succ u2) (succ u1)) (succ u1) (succ u2), max (max (succ u1) (succ u2)) (succ u2) (succ u1)} (Equiv.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (α -> M) (MonoidHom.{u1, u2} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} M _inst_1))) (fun (_x : Equiv.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (α -> M) (MonoidHom.{u1, u2} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} M _inst_1))) => (α -> M) -> (MonoidHom.{u1, u2} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} M _inst_1))) (Equiv.hasCoeToFun.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (α -> M) (MonoidHom.{u1, u2} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} M _inst_1))) (FreeMonoid.lift.{u1, u2} α M _inst_1) f)) (FreeMonoid.of.{u1} α)) f
but is expected to have type
- forall {α : Type.{u2}} {M : Type.{u1}} [_inst_1 : Monoid.{u1} M] (f : α -> M), Eq.{max (succ u2) (succ u1)} (α -> M) (Function.comp.{succ u2, succ u2, succ u1} α (FreeMonoid.{u2} α) M (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : α -> M) => MonoidHom.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1)) f) (FreeMonoid.{u2} α) (fun (_x : FreeMonoid.{u2} α) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : FreeMonoid.{u2} α) => M) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : α -> M) => MonoidHom.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1)) f) (FreeMonoid.{u2} α) M (MulOneClass.toMul.{u2} (FreeMonoid.{u2} α) (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α))))) (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M _inst_1)) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : α -> M) => MonoidHom.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1)) f) (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1) (MonoidHom.monoidHomClass.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1)))) (FunLike.coe.{max (succ u1) (succ u2), max (succ u1) (succ u2), max (succ u1) (succ u2)} (Equiv.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (α -> M) (MonoidHom.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1))) (α -> M) (fun (_x : α -> M) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : α -> M) => MonoidHom.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1)) _x) (Equiv.instFunLikeEquiv.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (α -> M) (MonoidHom.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1))) (FreeMonoid.lift.{u2, u1} α M _inst_1) f)) (FreeMonoid.of.{u2} α)) f
+ forall {α : Type.{u2}} {M : Type.{u1}} [_inst_1 : Monoid.{u1} M] (f : α -> M), Eq.{max (succ u2) (succ u1)} (α -> M) (Function.comp.{succ u2, succ u2, succ u1} α (FreeMonoid.{u2} α) M (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : α -> M) => MonoidHom.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1)) f) (FreeMonoid.{u2} α) (fun (_x : FreeMonoid.{u2} α) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : FreeMonoid.{u2} α) => M) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : α -> M) => MonoidHom.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1)) f) (FreeMonoid.{u2} α) M (MulOneClass.toMul.{u2} (FreeMonoid.{u2} α) (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α))))) (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M _inst_1)) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : α -> M) => MonoidHom.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1)) f) (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1) (MonoidHom.monoidHomClass.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1)))) (FunLike.coe.{max (succ u1) (succ u2), max (succ u1) (succ u2), max (succ u1) (succ u2)} (Equiv.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (α -> M) (MonoidHom.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1))) (α -> M) (fun (_x : α -> M) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : α -> M) => MonoidHom.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1)) _x) (Equiv.instFunLikeEquiv.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (α -> M) (MonoidHom.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1))) (FreeMonoid.lift.{u2, u1} α M _inst_1) f)) (FreeMonoid.of.{u2} α)) f
Case conversion may be inaccurate. Consider using '#align free_monoid.lift_comp_of FreeMonoid.lift_comp_ofₓ'. -/
@[to_additive]
theorem lift_comp_of (f : α → M) : lift f ∘ of = f :=
@@ -406,7 +406,7 @@ theorem lift_comp_of (f : α → M) : lift f ∘ of = f :=
lean 3 declaration is
forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : Monoid.{u2} M] (f : α -> M) (x : α), Eq.{succ u2} M (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} M _inst_1)) (fun (_x : MonoidHom.{u1, u2} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} M _inst_1)) => (FreeMonoid.{u1} α) -> M) (MonoidHom.hasCoeToFun.{u1, u2} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} M _inst_1)) (coeFn.{max 1 (max (max (succ u1) (succ u2)) (succ u2) (succ u1)) (max (succ u2) (succ u1)) (succ u1) (succ u2), max (max (succ u1) (succ u2)) (succ u2) (succ u1)} (Equiv.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (α -> M) (MonoidHom.{u1, u2} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} M _inst_1))) (fun (_x : Equiv.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (α -> M) (MonoidHom.{u1, u2} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} M _inst_1))) => (α -> M) -> (MonoidHom.{u1, u2} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} M _inst_1))) (Equiv.hasCoeToFun.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (α -> M) (MonoidHom.{u1, u2} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} M _inst_1))) (FreeMonoid.lift.{u1, u2} α M _inst_1) f) (FreeMonoid.of.{u1} α x)) (f x)
but is expected to have type
- forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : Monoid.{u2} M] (f : α -> M) (x : α), Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : FreeMonoid.{u1} α) => M) (FreeMonoid.of.{u1} α x)) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : α -> M) => MonoidHom.{u1, u2} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} M _inst_1)) f) (FreeMonoid.{u1} α) (fun (_x : FreeMonoid.{u1} α) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : FreeMonoid.{u1} α) => M) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : α -> M) => MonoidHom.{u1, u2} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} M _inst_1)) f) (FreeMonoid.{u1} α) M (MulOneClass.toMul.{u1} (FreeMonoid.{u1} α) (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α))))) (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M _inst_1)) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : α -> M) => MonoidHom.{u1, u2} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} M _inst_1)) f) (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} M _inst_1) (MonoidHom.monoidHomClass.{u1, u2} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} M _inst_1)))) (FunLike.coe.{max (succ u2) (succ u1), max (succ u2) (succ u1), max (succ u2) (succ u1)} (Equiv.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (α -> M) (MonoidHom.{u1, u2} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} M _inst_1))) (α -> M) (fun (_x : α -> M) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : α -> M) => MonoidHom.{u1, u2} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} M _inst_1)) _x) (Equiv.instFunLikeEquiv.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (α -> M) (MonoidHom.{u1, u2} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} M _inst_1))) (FreeMonoid.lift.{u1, u2} α M _inst_1) f) (FreeMonoid.of.{u1} α x)) (f x)
+ forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : Monoid.{u2} M] (f : α -> M) (x : α), Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : FreeMonoid.{u1} α) => M) (FreeMonoid.of.{u1} α x)) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : α -> M) => MonoidHom.{u1, u2} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} M _inst_1)) f) (FreeMonoid.{u1} α) (fun (_x : FreeMonoid.{u1} α) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : FreeMonoid.{u1} α) => M) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : α -> M) => MonoidHom.{u1, u2} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} M _inst_1)) f) (FreeMonoid.{u1} α) M (MulOneClass.toMul.{u1} (FreeMonoid.{u1} α) (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α))))) (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M _inst_1)) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : α -> M) => MonoidHom.{u1, u2} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} M _inst_1)) f) (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} M _inst_1) (MonoidHom.monoidHomClass.{u1, u2} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} M _inst_1)))) (FunLike.coe.{max (succ u2) (succ u1), max (succ u2) (succ u1), max (succ u2) (succ u1)} (Equiv.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (α -> M) (MonoidHom.{u1, u2} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} M _inst_1))) (α -> M) (fun (_x : α -> M) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : α -> M) => MonoidHom.{u1, u2} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} M _inst_1)) _x) (Equiv.instFunLikeEquiv.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (α -> M) (MonoidHom.{u1, u2} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} M _inst_1))) (FreeMonoid.lift.{u1, u2} α M _inst_1) f) (FreeMonoid.of.{u1} α x)) (f x)
Case conversion may be inaccurate. Consider using '#align free_monoid.lift_eval_of FreeMonoid.lift_eval_ofₓ'. -/
@[simp, to_additive]
theorem lift_eval_of (f : α → M) (x : α) : lift f (of x) = f x :=
@@ -418,7 +418,7 @@ theorem lift_eval_of (f : α → M) (x : α) : lift f (of x) = f x :=
lean 3 declaration is
forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : Monoid.{u2} M] (f : MonoidHom.{u1, u2} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} M _inst_1)), Eq.{max (succ u2) (succ u1)} (MonoidHom.{u1, u2} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} M _inst_1)) (coeFn.{max 1 (max (max (succ u1) (succ u2)) (succ u2) (succ u1)) (max (succ u2) (succ u1)) (succ u1) (succ u2), max (max (succ u1) (succ u2)) (succ u2) (succ u1)} (Equiv.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (α -> M) (MonoidHom.{u1, u2} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} M _inst_1))) (fun (_x : Equiv.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (α -> M) (MonoidHom.{u1, u2} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} M _inst_1))) => (α -> M) -> (MonoidHom.{u1, u2} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} M _inst_1))) (Equiv.hasCoeToFun.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (α -> M) (MonoidHom.{u1, u2} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} M _inst_1))) (FreeMonoid.lift.{u1, u2} α M _inst_1) (Function.comp.{succ u1, succ u1, succ u2} α (FreeMonoid.{u1} α) M (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} M _inst_1)) (fun (_x : MonoidHom.{u1, u2} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} M _inst_1)) => (FreeMonoid.{u1} α) -> M) (MonoidHom.hasCoeToFun.{u1, u2} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} M _inst_1)) f) (FreeMonoid.of.{u1} α))) f
but is expected to have type
- forall {α : Type.{u2}} {M : Type.{u1}} [_inst_1 : Monoid.{u1} M] (f : MonoidHom.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1)), Eq.{max (succ u2) (succ u1)} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : α -> M) => MonoidHom.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1)) (Function.comp.{succ u2, succ u2, succ u1} α (FreeMonoid.{u2} α) M (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1)) (FreeMonoid.{u2} α) (fun (a : FreeMonoid.{u2} α) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : FreeMonoid.{u2} α) => M) a) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1)) (FreeMonoid.{u2} α) M (MulOneClass.toMul.{u2} (FreeMonoid.{u2} α) (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α))))) (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M _inst_1)) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1)) (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1) (MonoidHom.monoidHomClass.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1)))) f) (FreeMonoid.of.{u2} α))) (FunLike.coe.{max (succ u1) (succ u2), max (succ u1) (succ u2), max (succ u1) (succ u2)} (Equiv.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (α -> M) (MonoidHom.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1))) (α -> M) (fun (_x : α -> M) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : α -> M) => MonoidHom.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1)) _x) (Equiv.instFunLikeEquiv.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (α -> M) (MonoidHom.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1))) (FreeMonoid.lift.{u2, u1} α M _inst_1) (Function.comp.{succ u2, succ u2, succ u1} α (FreeMonoid.{u2} α) M (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1)) (FreeMonoid.{u2} α) (fun (_x : FreeMonoid.{u2} α) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : FreeMonoid.{u2} α) => M) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1)) (FreeMonoid.{u2} α) M (MulOneClass.toMul.{u2} (FreeMonoid.{u2} α) (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α))))) (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M _inst_1)) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1)) (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1) (MonoidHom.monoidHomClass.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1)))) f) (FreeMonoid.of.{u2} α))) f
+ forall {α : Type.{u2}} {M : Type.{u1}} [_inst_1 : Monoid.{u1} M] (f : MonoidHom.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1)), Eq.{max (succ u2) (succ u1)} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : α -> M) => MonoidHom.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1)) (Function.comp.{succ u2, succ u2, succ u1} α (FreeMonoid.{u2} α) M (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1)) (FreeMonoid.{u2} α) (fun (a : FreeMonoid.{u2} α) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : FreeMonoid.{u2} α) => M) a) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1)) (FreeMonoid.{u2} α) M (MulOneClass.toMul.{u2} (FreeMonoid.{u2} α) (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α))))) (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M _inst_1)) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1)) (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1) (MonoidHom.monoidHomClass.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1)))) f) (FreeMonoid.of.{u2} α))) (FunLike.coe.{max (succ u1) (succ u2), max (succ u1) (succ u2), max (succ u1) (succ u2)} (Equiv.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (α -> M) (MonoidHom.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1))) (α -> M) (fun (_x : α -> M) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : α -> M) => MonoidHom.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1)) _x) (Equiv.instFunLikeEquiv.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (α -> M) (MonoidHom.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1))) (FreeMonoid.lift.{u2, u1} α M _inst_1) (Function.comp.{succ u2, succ u2, succ u1} α (FreeMonoid.{u2} α) M (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1)) (FreeMonoid.{u2} α) (fun (_x : FreeMonoid.{u2} α) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : FreeMonoid.{u2} α) => M) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1)) (FreeMonoid.{u2} α) M (MulOneClass.toMul.{u2} (FreeMonoid.{u2} α) (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α))))) (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M _inst_1)) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1)) (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1) (MonoidHom.monoidHomClass.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1)))) f) (FreeMonoid.of.{u2} α))) f
Case conversion may be inaccurate. Consider using '#align free_monoid.lift_restrict FreeMonoid.lift_restrictₓ'. -/
@[simp, to_additive]
theorem lift_restrict (f : FreeMonoid α →* M) : lift (f ∘ of) = f :=
@@ -430,7 +430,7 @@ theorem lift_restrict (f : FreeMonoid α →* M) : lift (f ∘ of) = f :=
lean 3 declaration is
forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : Monoid.{u2} M] {N : Type.{u3}} [_inst_2 : Monoid.{u3} N] (g : MonoidHom.{u2, u3} M N (Monoid.toMulOneClass.{u2} M _inst_1) (Monoid.toMulOneClass.{u3} N _inst_2)) (f : α -> M), Eq.{max (succ u3) (succ u1)} (MonoidHom.{u1, u3} (FreeMonoid.{u1} α) N (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u3} N _inst_2)) (MonoidHom.comp.{u1, u2, u3} (FreeMonoid.{u1} α) M N (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} M _inst_1) (Monoid.toMulOneClass.{u3} N _inst_2) g (coeFn.{max 1 (max (max (succ u1) (succ u2)) (succ u2) (succ u1)) (max (succ u2) (succ u1)) (succ u1) (succ u2), max (max (succ u1) (succ u2)) (succ u2) (succ u1)} (Equiv.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (α -> M) (MonoidHom.{u1, u2} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} M _inst_1))) (fun (_x : Equiv.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (α -> M) (MonoidHom.{u1, u2} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} M _inst_1))) => (α -> M) -> (MonoidHom.{u1, u2} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} M _inst_1))) (Equiv.hasCoeToFun.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (α -> M) (MonoidHom.{u1, u2} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} M _inst_1))) (FreeMonoid.lift.{u1, u2} α M _inst_1) f)) (coeFn.{max 1 (max (max (succ u1) (succ u3)) (succ u3) (succ u1)) (max (succ u3) (succ u1)) (succ u1) (succ u3), max (max (succ u1) (succ u3)) (succ u3) (succ u1)} (Equiv.{max (succ u1) (succ u3), max (succ u3) (succ u1)} (α -> N) (MonoidHom.{u1, u3} (FreeMonoid.{u1} α) N (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u3} N _inst_2))) (fun (_x : Equiv.{max (succ u1) (succ u3), max (succ u3) (succ u1)} (α -> N) (MonoidHom.{u1, u3} (FreeMonoid.{u1} α) N (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u3} N _inst_2))) => (α -> N) -> (MonoidHom.{u1, u3} (FreeMonoid.{u1} α) N (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u3} N _inst_2))) (Equiv.hasCoeToFun.{max (succ u1) (succ u3), max (succ u3) (succ u1)} (α -> N) (MonoidHom.{u1, u3} (FreeMonoid.{u1} α) N (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u3} N _inst_2))) (FreeMonoid.lift.{u1, u3} α N _inst_2) (Function.comp.{succ u1, succ u2, succ u3} α M N (coeFn.{max (succ u3) (succ u2), max (succ u2) (succ u3)} (MonoidHom.{u2, u3} M N (Monoid.toMulOneClass.{u2} M _inst_1) (Monoid.toMulOneClass.{u3} N _inst_2)) (fun (_x : MonoidHom.{u2, u3} M N (Monoid.toMulOneClass.{u2} M _inst_1) (Monoid.toMulOneClass.{u3} N _inst_2)) => M -> N) (MonoidHom.hasCoeToFun.{u2, u3} M N (Monoid.toMulOneClass.{u2} M _inst_1) (Monoid.toMulOneClass.{u3} N _inst_2)) g) f))
but is expected to have type
- forall {α : Type.{u1}} {M : Type.{u3}} [_inst_1 : Monoid.{u3} M] {N : Type.{u2}} [_inst_2 : Monoid.{u2} N] (g : MonoidHom.{u3, u2} M N (Monoid.toMulOneClass.{u3} M _inst_1) (Monoid.toMulOneClass.{u2} N _inst_2)) (f : α -> M), Eq.{max (succ u1) (succ u2)} (MonoidHom.{u1, u2} (FreeMonoid.{u1} α) N (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} N _inst_2)) (MonoidHom.comp.{u1, u3, u2} (FreeMonoid.{u1} α) M N (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α)))) (Monoid.toMulOneClass.{u3} M _inst_1) (Monoid.toMulOneClass.{u2} N _inst_2) g (FunLike.coe.{max (succ u3) (succ u1), max (succ u3) (succ u1), max (succ u3) (succ u1)} (Equiv.{max (succ u1) (succ u3), max (succ u3) (succ u1)} (α -> M) (MonoidHom.{u1, u3} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α)))) (Monoid.toMulOneClass.{u3} M _inst_1))) (α -> M) (fun (_x : α -> M) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : α -> M) => MonoidHom.{u1, u3} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α)))) (Monoid.toMulOneClass.{u3} M _inst_1)) _x) (Equiv.instFunLikeEquiv.{max (succ u3) (succ u1), max (succ u3) (succ u1)} (α -> M) (MonoidHom.{u1, u3} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α)))) (Monoid.toMulOneClass.{u3} M _inst_1))) (FreeMonoid.lift.{u1, u3} α M _inst_1) f)) (FunLike.coe.{max (succ u2) (succ u1), max (succ u2) (succ u1), max (succ u2) (succ u1)} (Equiv.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (α -> N) (MonoidHom.{u1, u2} (FreeMonoid.{u1} α) N (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} N _inst_2))) (α -> N) (fun (_x : α -> N) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : α -> N) => MonoidHom.{u1, u2} (FreeMonoid.{u1} α) N (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} N _inst_2)) _x) (Equiv.instFunLikeEquiv.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (α -> N) (MonoidHom.{u1, u2} (FreeMonoid.{u1} α) N (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} N _inst_2))) (FreeMonoid.lift.{u1, u2} α N _inst_2) (Function.comp.{succ u1, succ u3, succ u2} α M N (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} M N (Monoid.toMulOneClass.{u3} M _inst_1) (Monoid.toMulOneClass.{u2} N _inst_2)) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) _x) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M N (Monoid.toMulOneClass.{u3} M _inst_1) (Monoid.toMulOneClass.{u2} N _inst_2)) M N (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M _inst_1)) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N _inst_2)) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M N (Monoid.toMulOneClass.{u3} M _inst_1) (Monoid.toMulOneClass.{u2} N _inst_2)) M N (Monoid.toMulOneClass.{u3} M _inst_1) (Monoid.toMulOneClass.{u2} N _inst_2) (MonoidHom.monoidHomClass.{u3, u2} M N (Monoid.toMulOneClass.{u3} M _inst_1) (Monoid.toMulOneClass.{u2} N _inst_2)))) g) f))
+ forall {α : Type.{u1}} {M : Type.{u3}} [_inst_1 : Monoid.{u3} M] {N : Type.{u2}} [_inst_2 : Monoid.{u2} N] (g : MonoidHom.{u3, u2} M N (Monoid.toMulOneClass.{u3} M _inst_1) (Monoid.toMulOneClass.{u2} N _inst_2)) (f : α -> M), Eq.{max (succ u1) (succ u2)} (MonoidHom.{u1, u2} (FreeMonoid.{u1} α) N (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} N _inst_2)) (MonoidHom.comp.{u1, u3, u2} (FreeMonoid.{u1} α) M N (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α)))) (Monoid.toMulOneClass.{u3} M _inst_1) (Monoid.toMulOneClass.{u2} N _inst_2) g (FunLike.coe.{max (succ u3) (succ u1), max (succ u3) (succ u1), max (succ u3) (succ u1)} (Equiv.{max (succ u1) (succ u3), max (succ u3) (succ u1)} (α -> M) (MonoidHom.{u1, u3} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α)))) (Monoid.toMulOneClass.{u3} M _inst_1))) (α -> M) (fun (_x : α -> M) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : α -> M) => MonoidHom.{u1, u3} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α)))) (Monoid.toMulOneClass.{u3} M _inst_1)) _x) (Equiv.instFunLikeEquiv.{max (succ u3) (succ u1), max (succ u3) (succ u1)} (α -> M) (MonoidHom.{u1, u3} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α)))) (Monoid.toMulOneClass.{u3} M _inst_1))) (FreeMonoid.lift.{u1, u3} α M _inst_1) f)) (FunLike.coe.{max (succ u2) (succ u1), max (succ u2) (succ u1), max (succ u2) (succ u1)} (Equiv.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (α -> N) (MonoidHom.{u1, u2} (FreeMonoid.{u1} α) N (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} N _inst_2))) (α -> N) (fun (_x : α -> N) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : α -> N) => MonoidHom.{u1, u2} (FreeMonoid.{u1} α) N (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} N _inst_2)) _x) (Equiv.instFunLikeEquiv.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (α -> N) (MonoidHom.{u1, u2} (FreeMonoid.{u1} α) N (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} N _inst_2))) (FreeMonoid.lift.{u1, u2} α N _inst_2) (Function.comp.{succ u1, succ u3, succ u2} α M N (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} M N (Monoid.toMulOneClass.{u3} M _inst_1) (Monoid.toMulOneClass.{u2} N _inst_2)) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) _x) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M N (Monoid.toMulOneClass.{u3} M _inst_1) (Monoid.toMulOneClass.{u2} N _inst_2)) M N (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M _inst_1)) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N _inst_2)) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M N (Monoid.toMulOneClass.{u3} M _inst_1) (Monoid.toMulOneClass.{u2} N _inst_2)) M N (Monoid.toMulOneClass.{u3} M _inst_1) (Monoid.toMulOneClass.{u2} N _inst_2) (MonoidHom.monoidHomClass.{u3, u2} M N (Monoid.toMulOneClass.{u3} M _inst_1) (Monoid.toMulOneClass.{u2} N _inst_2)))) g) f))
Case conversion may be inaccurate. Consider using '#align free_monoid.comp_lift FreeMonoid.comp_liftₓ'. -/
@[to_additive]
theorem comp_lift (g : M →* N) (f : α → M) : g.comp (lift f) = lift (g ∘ f) :=
@@ -444,7 +444,7 @@ theorem comp_lift (g : M →* N) (f : α → M) : g.comp (lift f) = lift (g ∘
lean 3 declaration is
forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : Monoid.{u2} M] {N : Type.{u3}} [_inst_2 : Monoid.{u3} N] (g : MonoidHom.{u2, u3} M N (Monoid.toMulOneClass.{u2} M _inst_1) (Monoid.toMulOneClass.{u3} N _inst_2)) (f : α -> M) (x : FreeMonoid.{u1} α), Eq.{succ u3} N (coeFn.{max (succ u3) (succ u2), max (succ u2) (succ u3)} (MonoidHom.{u2, u3} M N (Monoid.toMulOneClass.{u2} M _inst_1) (Monoid.toMulOneClass.{u3} N _inst_2)) (fun (_x : MonoidHom.{u2, u3} M N (Monoid.toMulOneClass.{u2} M _inst_1) (Monoid.toMulOneClass.{u3} N _inst_2)) => M -> N) (MonoidHom.hasCoeToFun.{u2, u3} M N (Monoid.toMulOneClass.{u2} M _inst_1) (Monoid.toMulOneClass.{u3} N _inst_2)) g (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} M _inst_1)) (fun (_x : MonoidHom.{u1, u2} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} M _inst_1)) => (FreeMonoid.{u1} α) -> M) (MonoidHom.hasCoeToFun.{u1, u2} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} M _inst_1)) (coeFn.{max 1 (max (max (succ u1) (succ u2)) (succ u2) (succ u1)) (max (succ u2) (succ u1)) (succ u1) (succ u2), max (max (succ u1) (succ u2)) (succ u2) (succ u1)} (Equiv.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (α -> M) (MonoidHom.{u1, u2} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} M _inst_1))) (fun (_x : Equiv.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (α -> M) (MonoidHom.{u1, u2} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} M _inst_1))) => (α -> M) -> (MonoidHom.{u1, u2} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} M _inst_1))) (Equiv.hasCoeToFun.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (α -> M) (MonoidHom.{u1, u2} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} M _inst_1))) (FreeMonoid.lift.{u1, u2} α M _inst_1) f) x)) (coeFn.{max (succ u3) (succ u1), max (succ u1) (succ u3)} (MonoidHom.{u1, u3} (FreeMonoid.{u1} α) N (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u3} N _inst_2)) (fun (_x : MonoidHom.{u1, u3} (FreeMonoid.{u1} α) N (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u3} N _inst_2)) => (FreeMonoid.{u1} α) -> N) (MonoidHom.hasCoeToFun.{u1, u3} (FreeMonoid.{u1} α) N (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u3} N _inst_2)) (coeFn.{max 1 (max (max (succ u1) (succ u3)) (succ u3) (succ u1)) (max (succ u3) (succ u1)) (succ u1) (succ u3), max (max (succ u1) (succ u3)) (succ u3) (succ u1)} (Equiv.{max (succ u1) (succ u3), max (succ u3) (succ u1)} (α -> N) (MonoidHom.{u1, u3} (FreeMonoid.{u1} α) N (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u3} N _inst_2))) (fun (_x : Equiv.{max (succ u1) (succ u3), max (succ u3) (succ u1)} (α -> N) (MonoidHom.{u1, u3} (FreeMonoid.{u1} α) N (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u3} N _inst_2))) => (α -> N) -> (MonoidHom.{u1, u3} (FreeMonoid.{u1} α) N (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u3} N _inst_2))) (Equiv.hasCoeToFun.{max (succ u1) (succ u3), max (succ u3) (succ u1)} (α -> N) (MonoidHom.{u1, u3} (FreeMonoid.{u1} α) N (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u3} N _inst_2))) (FreeMonoid.lift.{u1, u3} α N _inst_2) (Function.comp.{succ u1, succ u2, succ u3} α M N (coeFn.{max (succ u3) (succ u2), max (succ u2) (succ u3)} (MonoidHom.{u2, u3} M N (Monoid.toMulOneClass.{u2} M _inst_1) (Monoid.toMulOneClass.{u3} N _inst_2)) (fun (_x : MonoidHom.{u2, u3} M N (Monoid.toMulOneClass.{u2} M _inst_1) (Monoid.toMulOneClass.{u3} N _inst_2)) => M -> N) (MonoidHom.hasCoeToFun.{u2, u3} M N (Monoid.toMulOneClass.{u2} M _inst_1) (Monoid.toMulOneClass.{u3} N _inst_2)) g) f)) x)
but is expected to have type
- forall {α : Type.{u1}} {M : Type.{u3}} [_inst_1 : Monoid.{u3} M] {N : Type.{u2}} [_inst_2 : Monoid.{u2} N] (g : MonoidHom.{u3, u2} M N (Monoid.toMulOneClass.{u3} M _inst_1) (Monoid.toMulOneClass.{u2} N _inst_2)) (f : α -> M) (x : FreeMonoid.{u1} α), Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) (FunLike.coe.{max (succ u1) (succ u3), succ u1, succ u3} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : α -> M) => MonoidHom.{u1, u3} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α)))) (Monoid.toMulOneClass.{u3} M _inst_1)) f) (FreeMonoid.{u1} α) (fun (a : FreeMonoid.{u1} α) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : FreeMonoid.{u1} α) => M) a) (MulHomClass.toFunLike.{max u1 u3, u1, u3} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : α -> M) => MonoidHom.{u1, u3} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α)))) (Monoid.toMulOneClass.{u3} M _inst_1)) f) (FreeMonoid.{u1} α) M (MulOneClass.toMul.{u1} (FreeMonoid.{u1} α) (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α))))) (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M _inst_1)) (MonoidHomClass.toMulHomClass.{max u1 u3, u1, u3} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : α -> M) => MonoidHom.{u1, u3} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α)))) (Monoid.toMulOneClass.{u3} M _inst_1)) f) (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α)))) (Monoid.toMulOneClass.{u3} M _inst_1) (MonoidHom.monoidHomClass.{u1, u3} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α)))) (Monoid.toMulOneClass.{u3} M _inst_1)))) (FunLike.coe.{max (succ u3) (succ u1), max (succ u3) (succ u1), max (succ u3) (succ u1)} (Equiv.{max (succ u1) (succ u3), max (succ u3) (succ u1)} (α -> M) (MonoidHom.{u1, u3} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α)))) (Monoid.toMulOneClass.{u3} M _inst_1))) (α -> M) (fun (a : α -> M) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : α -> M) => MonoidHom.{u1, u3} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α)))) (Monoid.toMulOneClass.{u3} M _inst_1)) a) (Equiv.instFunLikeEquiv.{max (succ u3) (succ u1), max (succ u3) (succ u1)} (α -> M) (MonoidHom.{u1, u3} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α)))) (Monoid.toMulOneClass.{u3} M _inst_1))) (FreeMonoid.lift.{u1, u3} α M _inst_1) f) x)) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} M N (Monoid.toMulOneClass.{u3} M _inst_1) (Monoid.toMulOneClass.{u2} N _inst_2)) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) _x) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M N (Monoid.toMulOneClass.{u3} M _inst_1) (Monoid.toMulOneClass.{u2} N _inst_2)) M N (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M _inst_1)) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N _inst_2)) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M N (Monoid.toMulOneClass.{u3} M _inst_1) (Monoid.toMulOneClass.{u2} N _inst_2)) M N (Monoid.toMulOneClass.{u3} M _inst_1) (Monoid.toMulOneClass.{u2} N _inst_2) (MonoidHom.monoidHomClass.{u3, u2} M N (Monoid.toMulOneClass.{u3} M _inst_1) (Monoid.toMulOneClass.{u2} N _inst_2)))) g (FunLike.coe.{max (succ u1) (succ u3), succ u1, succ u3} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : α -> M) => MonoidHom.{u1, u3} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α)))) (Monoid.toMulOneClass.{u3} M _inst_1)) f) (FreeMonoid.{u1} α) (fun (_x : FreeMonoid.{u1} α) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : FreeMonoid.{u1} α) => M) _x) (MulHomClass.toFunLike.{max u1 u3, u1, u3} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : α -> M) => MonoidHom.{u1, u3} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α)))) (Monoid.toMulOneClass.{u3} M _inst_1)) f) (FreeMonoid.{u1} α) M (MulOneClass.toMul.{u1} (FreeMonoid.{u1} α) (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α))))) (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M _inst_1)) (MonoidHomClass.toMulHomClass.{max u1 u3, u1, u3} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : α -> M) => MonoidHom.{u1, u3} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α)))) (Monoid.toMulOneClass.{u3} M _inst_1)) f) (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α)))) (Monoid.toMulOneClass.{u3} M _inst_1) (MonoidHom.monoidHomClass.{u1, u3} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α)))) (Monoid.toMulOneClass.{u3} M _inst_1)))) (FunLike.coe.{max (succ u3) (succ u1), max (succ u3) (succ u1), max (succ u3) (succ u1)} (Equiv.{max (succ u1) (succ u3), max (succ u3) (succ u1)} (α -> M) (MonoidHom.{u1, u3} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α)))) (Monoid.toMulOneClass.{u3} M _inst_1))) (α -> M) (fun (_x : α -> M) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : α -> M) => MonoidHom.{u1, u3} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α)))) (Monoid.toMulOneClass.{u3} M _inst_1)) _x) (Equiv.instFunLikeEquiv.{max (succ u3) (succ u1), max (succ u3) (succ u1)} (α -> M) (MonoidHom.{u1, u3} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α)))) (Monoid.toMulOneClass.{u3} M _inst_1))) (FreeMonoid.lift.{u1, u3} α M _inst_1) f) x)) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : α -> N) => MonoidHom.{u1, u2} (FreeMonoid.{u1} α) N (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} N _inst_2)) (Function.comp.{succ u1, succ u3, succ u2} α M N (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} M N (Monoid.toMulOneClass.{u3} M _inst_1) (Monoid.toMulOneClass.{u2} N _inst_2)) M (fun (a : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) a) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M N (Monoid.toMulOneClass.{u3} M _inst_1) (Monoid.toMulOneClass.{u2} N _inst_2)) M N (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M _inst_1)) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N _inst_2)) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M N (Monoid.toMulOneClass.{u3} M _inst_1) (Monoid.toMulOneClass.{u2} N _inst_2)) M N (Monoid.toMulOneClass.{u3} M _inst_1) (Monoid.toMulOneClass.{u2} N _inst_2) (MonoidHom.monoidHomClass.{u3, u2} M N (Monoid.toMulOneClass.{u3} M _inst_1) (Monoid.toMulOneClass.{u2} N _inst_2)))) g) f)) (FreeMonoid.{u1} α) (fun (_x : FreeMonoid.{u1} α) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : FreeMonoid.{u1} α) => N) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : α -> N) => MonoidHom.{u1, u2} (FreeMonoid.{u1} α) N (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} N _inst_2)) (Function.comp.{succ u1, succ u3, succ u2} α M N (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} M N (Monoid.toMulOneClass.{u3} M _inst_1) (Monoid.toMulOneClass.{u2} N _inst_2)) M (fun (a : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) a) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M N (Monoid.toMulOneClass.{u3} M _inst_1) (Monoid.toMulOneClass.{u2} N _inst_2)) M N (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M _inst_1)) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N _inst_2)) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M N (Monoid.toMulOneClass.{u3} M _inst_1) (Monoid.toMulOneClass.{u2} N _inst_2)) M N (Monoid.toMulOneClass.{u3} M _inst_1) (Monoid.toMulOneClass.{u2} N _inst_2) (MonoidHom.monoidHomClass.{u3, u2} M N (Monoid.toMulOneClass.{u3} M _inst_1) (Monoid.toMulOneClass.{u2} N _inst_2)))) g) f)) (FreeMonoid.{u1} α) N (MulOneClass.toMul.{u1} (FreeMonoid.{u1} α) (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α))))) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N _inst_2)) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : α -> N) => MonoidHom.{u1, u2} (FreeMonoid.{u1} α) N (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} N _inst_2)) (Function.comp.{succ u1, succ u3, succ u2} α M N (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} M N (Monoid.toMulOneClass.{u3} M _inst_1) (Monoid.toMulOneClass.{u2} N _inst_2)) M (fun (a : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) a) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M N (Monoid.toMulOneClass.{u3} M _inst_1) (Monoid.toMulOneClass.{u2} N _inst_2)) M N (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M _inst_1)) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N _inst_2)) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M N (Monoid.toMulOneClass.{u3} M _inst_1) (Monoid.toMulOneClass.{u2} N _inst_2)) M N (Monoid.toMulOneClass.{u3} M _inst_1) (Monoid.toMulOneClass.{u2} N _inst_2) (MonoidHom.monoidHomClass.{u3, u2} M N (Monoid.toMulOneClass.{u3} M _inst_1) (Monoid.toMulOneClass.{u2} N _inst_2)))) g) f)) (FreeMonoid.{u1} α) N (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} N _inst_2) (MonoidHom.monoidHomClass.{u1, u2} (FreeMonoid.{u1} α) N (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} N _inst_2)))) (FunLike.coe.{max (succ u2) (succ u1), max (succ u2) (succ u1), max (succ u2) (succ u1)} (Equiv.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (α -> N) (MonoidHom.{u1, u2} (FreeMonoid.{u1} α) N (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} N _inst_2))) (α -> N) (fun (_x : α -> N) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : α -> N) => MonoidHom.{u1, u2} (FreeMonoid.{u1} α) N (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} N _inst_2)) _x) (Equiv.instFunLikeEquiv.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (α -> N) (MonoidHom.{u1, u2} (FreeMonoid.{u1} α) N (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} N _inst_2))) (FreeMonoid.lift.{u1, u2} α N _inst_2) (Function.comp.{succ u1, succ u3, succ u2} α M N (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} M N (Monoid.toMulOneClass.{u3} M _inst_1) (Monoid.toMulOneClass.{u2} N _inst_2)) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) _x) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M N (Monoid.toMulOneClass.{u3} M _inst_1) (Monoid.toMulOneClass.{u2} N _inst_2)) M N (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M _inst_1)) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N _inst_2)) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M N (Monoid.toMulOneClass.{u3} M _inst_1) (Monoid.toMulOneClass.{u2} N _inst_2)) M N (Monoid.toMulOneClass.{u3} M _inst_1) (Monoid.toMulOneClass.{u2} N _inst_2) (MonoidHom.monoidHomClass.{u3, u2} M N (Monoid.toMulOneClass.{u3} M _inst_1) (Monoid.toMulOneClass.{u2} N _inst_2)))) g) f)) x)
+ forall {α : Type.{u1}} {M : Type.{u3}} [_inst_1 : Monoid.{u3} M] {N : Type.{u2}} [_inst_2 : Monoid.{u2} N] (g : MonoidHom.{u3, u2} M N (Monoid.toMulOneClass.{u3} M _inst_1) (Monoid.toMulOneClass.{u2} N _inst_2)) (f : α -> M) (x : FreeMonoid.{u1} α), Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) (FunLike.coe.{max (succ u1) (succ u3), succ u1, succ u3} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : α -> M) => MonoidHom.{u1, u3} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α)))) (Monoid.toMulOneClass.{u3} M _inst_1)) f) (FreeMonoid.{u1} α) (fun (a : FreeMonoid.{u1} α) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : FreeMonoid.{u1} α) => M) a) (MulHomClass.toFunLike.{max u1 u3, u1, u3} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : α -> M) => MonoidHom.{u1, u3} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α)))) (Monoid.toMulOneClass.{u3} M _inst_1)) f) (FreeMonoid.{u1} α) M (MulOneClass.toMul.{u1} (FreeMonoid.{u1} α) (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α))))) (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M _inst_1)) (MonoidHomClass.toMulHomClass.{max u1 u3, u1, u3} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : α -> M) => MonoidHom.{u1, u3} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α)))) (Monoid.toMulOneClass.{u3} M _inst_1)) f) (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α)))) (Monoid.toMulOneClass.{u3} M _inst_1) (MonoidHom.monoidHomClass.{u1, u3} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α)))) (Monoid.toMulOneClass.{u3} M _inst_1)))) (FunLike.coe.{max (succ u3) (succ u1), max (succ u3) (succ u1), max (succ u3) (succ u1)} (Equiv.{max (succ u1) (succ u3), max (succ u3) (succ u1)} (α -> M) (MonoidHom.{u1, u3} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α)))) (Monoid.toMulOneClass.{u3} M _inst_1))) (α -> M) (fun (a : α -> M) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : α -> M) => MonoidHom.{u1, u3} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α)))) (Monoid.toMulOneClass.{u3} M _inst_1)) a) (Equiv.instFunLikeEquiv.{max (succ u3) (succ u1), max (succ u3) (succ u1)} (α -> M) (MonoidHom.{u1, u3} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α)))) (Monoid.toMulOneClass.{u3} M _inst_1))) (FreeMonoid.lift.{u1, u3} α M _inst_1) f) x)) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} M N (Monoid.toMulOneClass.{u3} M _inst_1) (Monoid.toMulOneClass.{u2} N _inst_2)) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) _x) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M N (Monoid.toMulOneClass.{u3} M _inst_1) (Monoid.toMulOneClass.{u2} N _inst_2)) M N (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M _inst_1)) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N _inst_2)) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M N (Monoid.toMulOneClass.{u3} M _inst_1) (Monoid.toMulOneClass.{u2} N _inst_2)) M N (Monoid.toMulOneClass.{u3} M _inst_1) (Monoid.toMulOneClass.{u2} N _inst_2) (MonoidHom.monoidHomClass.{u3, u2} M N (Monoid.toMulOneClass.{u3} M _inst_1) (Monoid.toMulOneClass.{u2} N _inst_2)))) g (FunLike.coe.{max (succ u1) (succ u3), succ u1, succ u3} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : α -> M) => MonoidHom.{u1, u3} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α)))) (Monoid.toMulOneClass.{u3} M _inst_1)) f) (FreeMonoid.{u1} α) (fun (_x : FreeMonoid.{u1} α) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : FreeMonoid.{u1} α) => M) _x) (MulHomClass.toFunLike.{max u1 u3, u1, u3} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : α -> M) => MonoidHom.{u1, u3} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α)))) (Monoid.toMulOneClass.{u3} M _inst_1)) f) (FreeMonoid.{u1} α) M (MulOneClass.toMul.{u1} (FreeMonoid.{u1} α) (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α))))) (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M _inst_1)) (MonoidHomClass.toMulHomClass.{max u1 u3, u1, u3} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : α -> M) => MonoidHom.{u1, u3} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α)))) (Monoid.toMulOneClass.{u3} M _inst_1)) f) (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α)))) (Monoid.toMulOneClass.{u3} M _inst_1) (MonoidHom.monoidHomClass.{u1, u3} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α)))) (Monoid.toMulOneClass.{u3} M _inst_1)))) (FunLike.coe.{max (succ u3) (succ u1), max (succ u3) (succ u1), max (succ u3) (succ u1)} (Equiv.{max (succ u1) (succ u3), max (succ u3) (succ u1)} (α -> M) (MonoidHom.{u1, u3} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α)))) (Monoid.toMulOneClass.{u3} M _inst_1))) (α -> M) (fun (_x : α -> M) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : α -> M) => MonoidHom.{u1, u3} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α)))) (Monoid.toMulOneClass.{u3} M _inst_1)) _x) (Equiv.instFunLikeEquiv.{max (succ u3) (succ u1), max (succ u3) (succ u1)} (α -> M) (MonoidHom.{u1, u3} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α)))) (Monoid.toMulOneClass.{u3} M _inst_1))) (FreeMonoid.lift.{u1, u3} α M _inst_1) f) x)) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : α -> N) => MonoidHom.{u1, u2} (FreeMonoid.{u1} α) N (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} N _inst_2)) (Function.comp.{succ u1, succ u3, succ u2} α M N (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} M N (Monoid.toMulOneClass.{u3} M _inst_1) (Monoid.toMulOneClass.{u2} N _inst_2)) M (fun (a : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) a) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M N (Monoid.toMulOneClass.{u3} M _inst_1) (Monoid.toMulOneClass.{u2} N _inst_2)) M N (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M _inst_1)) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N _inst_2)) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M N (Monoid.toMulOneClass.{u3} M _inst_1) (Monoid.toMulOneClass.{u2} N _inst_2)) M N (Monoid.toMulOneClass.{u3} M _inst_1) (Monoid.toMulOneClass.{u2} N _inst_2) (MonoidHom.monoidHomClass.{u3, u2} M N (Monoid.toMulOneClass.{u3} M _inst_1) (Monoid.toMulOneClass.{u2} N _inst_2)))) g) f)) (FreeMonoid.{u1} α) (fun (_x : FreeMonoid.{u1} α) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : FreeMonoid.{u1} α) => N) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : α -> N) => MonoidHom.{u1, u2} (FreeMonoid.{u1} α) N (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} N _inst_2)) (Function.comp.{succ u1, succ u3, succ u2} α M N (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} M N (Monoid.toMulOneClass.{u3} M _inst_1) (Monoid.toMulOneClass.{u2} N _inst_2)) M (fun (a : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) a) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M N (Monoid.toMulOneClass.{u3} M _inst_1) (Monoid.toMulOneClass.{u2} N _inst_2)) M N (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M _inst_1)) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N _inst_2)) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M N (Monoid.toMulOneClass.{u3} M _inst_1) (Monoid.toMulOneClass.{u2} N _inst_2)) M N (Monoid.toMulOneClass.{u3} M _inst_1) (Monoid.toMulOneClass.{u2} N _inst_2) (MonoidHom.monoidHomClass.{u3, u2} M N (Monoid.toMulOneClass.{u3} M _inst_1) (Monoid.toMulOneClass.{u2} N _inst_2)))) g) f)) (FreeMonoid.{u1} α) N (MulOneClass.toMul.{u1} (FreeMonoid.{u1} α) (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α))))) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N _inst_2)) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : α -> N) => MonoidHom.{u1, u2} (FreeMonoid.{u1} α) N (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} N _inst_2)) (Function.comp.{succ u1, succ u3, succ u2} α M N (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} M N (Monoid.toMulOneClass.{u3} M _inst_1) (Monoid.toMulOneClass.{u2} N _inst_2)) M (fun (a : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) a) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M N (Monoid.toMulOneClass.{u3} M _inst_1) (Monoid.toMulOneClass.{u2} N _inst_2)) M N (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M _inst_1)) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N _inst_2)) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M N (Monoid.toMulOneClass.{u3} M _inst_1) (Monoid.toMulOneClass.{u2} N _inst_2)) M N (Monoid.toMulOneClass.{u3} M _inst_1) (Monoid.toMulOneClass.{u2} N _inst_2) (MonoidHom.monoidHomClass.{u3, u2} M N (Monoid.toMulOneClass.{u3} M _inst_1) (Monoid.toMulOneClass.{u2} N _inst_2)))) g) f)) (FreeMonoid.{u1} α) N (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} N _inst_2) (MonoidHom.monoidHomClass.{u1, u2} (FreeMonoid.{u1} α) N (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} N _inst_2)))) (FunLike.coe.{max (succ u2) (succ u1), max (succ u2) (succ u1), max (succ u2) (succ u1)} (Equiv.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (α -> N) (MonoidHom.{u1, u2} (FreeMonoid.{u1} α) N (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} N _inst_2))) (α -> N) (fun (_x : α -> N) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : α -> N) => MonoidHom.{u1, u2} (FreeMonoid.{u1} α) N (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} N _inst_2)) _x) (Equiv.instFunLikeEquiv.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (α -> N) (MonoidHom.{u1, u2} (FreeMonoid.{u1} α) N (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} N _inst_2))) (FreeMonoid.lift.{u1, u2} α N _inst_2) (Function.comp.{succ u1, succ u3, succ u2} α M N (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} M N (Monoid.toMulOneClass.{u3} M _inst_1) (Monoid.toMulOneClass.{u2} N _inst_2)) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) _x) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M N (Monoid.toMulOneClass.{u3} M _inst_1) (Monoid.toMulOneClass.{u2} N _inst_2)) M N (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M _inst_1)) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N _inst_2)) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M N (Monoid.toMulOneClass.{u3} M _inst_1) (Monoid.toMulOneClass.{u2} N _inst_2)) M N (Monoid.toMulOneClass.{u3} M _inst_1) (Monoid.toMulOneClass.{u2} N _inst_2) (MonoidHom.monoidHomClass.{u3, u2} M N (Monoid.toMulOneClass.{u3} M _inst_1) (Monoid.toMulOneClass.{u2} N _inst_2)))) g) f)) x)
Case conversion may be inaccurate. Consider using '#align free_monoid.hom_map_lift FreeMonoid.hom_map_liftₓ'. -/
@[to_additive]
theorem hom_map_lift (g : M →* N) (f : α → M) (x : FreeMonoid α) : g (lift f x) = lift (g ∘ f) x :=
@@ -472,7 +472,7 @@ def mkMulAction (f : α → β → β) : MulAction (FreeMonoid α) β
lean 3 declaration is
forall {α : Type.{u1}} {β : Type.{u2}} (f : α -> β -> β) (l : FreeMonoid.{u1} α) (b : β), Eq.{succ u2} β (SMul.smul.{u1, u2} (FreeMonoid.{u1} α) β (MulAction.toHasSmul.{u1, u2} (FreeMonoid.{u1} α) β (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α))) (FreeMonoid.mkMulAction.{u1, u2} α β f)) l b) (List.foldr.{u1, u2} α β f b (coeFn.{succ u1, succ u1} (Equiv.{succ u1, succ u1} (FreeMonoid.{u1} α) (List.{u1} α)) (fun (_x : Equiv.{succ u1, succ u1} (FreeMonoid.{u1} α) (List.{u1} α)) => (FreeMonoid.{u1} α) -> (List.{u1} α)) (Equiv.hasCoeToFun.{succ u1, succ u1} (FreeMonoid.{u1} α) (List.{u1} α)) (FreeMonoid.toList.{u1} α) l))
but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u1}} (f : α -> β -> β) (l : FreeMonoid.{u2} α) (b : β), Eq.{succ u1} β (HSMul.hSMul.{u2, u1, u1} (FreeMonoid.{u2} α) β β (instHSMul.{u2, u1} (FreeMonoid.{u2} α) β (MulAction.toSMul.{u2, u1} (FreeMonoid.{u2} α) β (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α))) (FreeMonoid.mkMulAction.{u2, u1} α β f))) l b) (List.foldr.{u2, u1} α β f b (FunLike.coe.{succ u2, succ u2, succ u2} (Equiv.{succ u2, succ u2} (FreeMonoid.{u2} α) (List.{u2} α)) (FreeMonoid.{u2} α) (fun (_x : FreeMonoid.{u2} α) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : FreeMonoid.{u2} α) => List.{u2} α) _x) (Equiv.instFunLikeEquiv.{succ u2, succ u2} (FreeMonoid.{u2} α) (List.{u2} α)) (FreeMonoid.toList.{u2} α) l))
+ forall {α : Type.{u2}} {β : Type.{u1}} (f : α -> β -> β) (l : FreeMonoid.{u2} α) (b : β), Eq.{succ u1} β (HSMul.hSMul.{u2, u1, u1} (FreeMonoid.{u2} α) β β (instHSMul.{u2, u1} (FreeMonoid.{u2} α) β (MulAction.toSMul.{u2, u1} (FreeMonoid.{u2} α) β (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α))) (FreeMonoid.mkMulAction.{u2, u1} α β f))) l b) (List.foldr.{u2, u1} α β f b (FunLike.coe.{succ u2, succ u2, succ u2} (Equiv.{succ u2, succ u2} (FreeMonoid.{u2} α) (List.{u2} α)) (FreeMonoid.{u2} α) (fun (_x : FreeMonoid.{u2} α) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : FreeMonoid.{u2} α) => List.{u2} α) _x) (Equiv.instFunLikeEquiv.{succ u2, succ u2} (FreeMonoid.{u2} α) (List.{u2} α)) (FreeMonoid.toList.{u2} α) l))
Case conversion may be inaccurate. Consider using '#align free_monoid.smul_def FreeMonoid.smul_defₓ'. -/
@[to_additive]
theorem smul_def (f : α → β → β) (l : FreeMonoid α) (b : β) :
@@ -486,7 +486,7 @@ theorem smul_def (f : α → β → β) (l : FreeMonoid α) (b : β) :
lean 3 declaration is
forall {α : Type.{u1}} {β : Type.{u2}} (f : α -> β -> β) (l : List.{u1} α) (b : β), Eq.{succ u2} β (SMul.smul.{u1, u2} (FreeMonoid.{u1} α) β (MulAction.toHasSmul.{u1, u2} (FreeMonoid.{u1} α) β (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α))) (FreeMonoid.mkMulAction.{u1, u2} α β f)) (coeFn.{succ u1, succ u1} (Equiv.{succ u1, succ u1} (List.{u1} α) (FreeMonoid.{u1} α)) (fun (_x : Equiv.{succ u1, succ u1} (List.{u1} α) (FreeMonoid.{u1} α)) => (List.{u1} α) -> (FreeMonoid.{u1} α)) (Equiv.hasCoeToFun.{succ u1, succ u1} (List.{u1} α) (FreeMonoid.{u1} α)) (FreeMonoid.ofList.{u1} α) l) b) (List.foldr.{u1, u2} α β f b l)
but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u1}} (f : α -> β -> β) (l : List.{u2} α) (b : β), Eq.{succ u1} β (HSMul.hSMul.{u2, u1, u1} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : List.{u2} α) => FreeMonoid.{u2} α) l) β β (instHSMul.{u2, u1} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : List.{u2} α) => FreeMonoid.{u2} α) l) β (MulAction.toSMul.{u2, u1} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : List.{u2} α) => FreeMonoid.{u2} α) l) β (RightCancelMonoid.toMonoid.{u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : List.{u2} α) => FreeMonoid.{u2} α) l) (CancelMonoid.toRightCancelMonoid.{u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : List.{u2} α) => FreeMonoid.{u2} α) l) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α))) (FreeMonoid.mkMulAction.{u2, u1} α β f))) (FunLike.coe.{succ u2, succ u2, succ u2} (Equiv.{succ u2, succ u2} (List.{u2} α) (FreeMonoid.{u2} α)) (List.{u2} α) (fun (_x : List.{u2} α) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : List.{u2} α) => FreeMonoid.{u2} α) _x) (Equiv.instFunLikeEquiv.{succ u2, succ u2} (List.{u2} α) (FreeMonoid.{u2} α)) (FreeMonoid.ofList.{u2} α) l) b) (List.foldr.{u2, u1} α β f b l)
+ forall {α : Type.{u2}} {β : Type.{u1}} (f : α -> β -> β) (l : List.{u2} α) (b : β), Eq.{succ u1} β (HSMul.hSMul.{u2, u1, u1} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : List.{u2} α) => FreeMonoid.{u2} α) l) β β (instHSMul.{u2, u1} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : List.{u2} α) => FreeMonoid.{u2} α) l) β (MulAction.toSMul.{u2, u1} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : List.{u2} α) => FreeMonoid.{u2} α) l) β (RightCancelMonoid.toMonoid.{u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : List.{u2} α) => FreeMonoid.{u2} α) l) (CancelMonoid.toRightCancelMonoid.{u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : List.{u2} α) => FreeMonoid.{u2} α) l) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α))) (FreeMonoid.mkMulAction.{u2, u1} α β f))) (FunLike.coe.{succ u2, succ u2, succ u2} (Equiv.{succ u2, succ u2} (List.{u2} α) (FreeMonoid.{u2} α)) (List.{u2} α) (fun (_x : List.{u2} α) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : List.{u2} α) => FreeMonoid.{u2} α) _x) (Equiv.instFunLikeEquiv.{succ u2, succ u2} (List.{u2} α) (FreeMonoid.{u2} α)) (FreeMonoid.ofList.{u2} α) l) b) (List.foldr.{u2, u1} α β f b l)
Case conversion may be inaccurate. Consider using '#align free_monoid.of_list_smul FreeMonoid.ofList_smulₓ'. -/
@[to_additive]
theorem ofList_smul (f : α → β → β) (l : List α) (b : β) :
@@ -529,7 +529,7 @@ def map (f : α → β) : FreeMonoid α →* FreeMonoid β
lean 3 declaration is
forall {α : Type.{u1}} {β : Type.{u2}} (f : α -> β) (x : α), Eq.{succ u2} (FreeMonoid.{u2} β) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} (FreeMonoid.{u1} α) (FreeMonoid.{u2} β) (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} β) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} β) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} β) (FreeMonoid.cancelMonoid.{u2} β))))) (fun (_x : MonoidHom.{u1, u2} (FreeMonoid.{u1} α) (FreeMonoid.{u2} β) (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} β) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} β) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} β) (FreeMonoid.cancelMonoid.{u2} β))))) => (FreeMonoid.{u1} α) -> (FreeMonoid.{u2} β)) (MonoidHom.hasCoeToFun.{u1, u2} (FreeMonoid.{u1} α) (FreeMonoid.{u2} β) (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} β) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} β) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} β) (FreeMonoid.cancelMonoid.{u2} β))))) (FreeMonoid.map.{u1, u2} α β f) (FreeMonoid.of.{u1} α x)) (FreeMonoid.of.{u2} β (f x))
but is expected to have type
- forall {α : Type.{u1}} {β : Type.{u2}} (f : α -> β) (x : α), Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : FreeMonoid.{u1} α) => FreeMonoid.{u2} β) (FreeMonoid.of.{u1} α x)) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} (FreeMonoid.{u1} α) (FreeMonoid.{u2} β) (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} β) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} β) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} β) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} β))))) (FreeMonoid.{u1} α) (fun (_x : FreeMonoid.{u1} α) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : FreeMonoid.{u1} α) => FreeMonoid.{u2} β) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} (FreeMonoid.{u1} α) (FreeMonoid.{u2} β) (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} β) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} β) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} β) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} β))))) (FreeMonoid.{u1} α) (FreeMonoid.{u2} β) (MulOneClass.toMul.{u1} (FreeMonoid.{u1} α) (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α))))) (MulOneClass.toMul.{u2} (FreeMonoid.{u2} β) (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} β) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} β) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} β) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} β))))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} (FreeMonoid.{u1} α) (FreeMonoid.{u2} β) (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} β) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} β) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} β) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} β))))) (FreeMonoid.{u1} α) (FreeMonoid.{u2} β) (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} β) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} β) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} β) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} β)))) (MonoidHom.monoidHomClass.{u1, u2} (FreeMonoid.{u1} α) (FreeMonoid.{u2} β) (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} β) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} β) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} β) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} β))))))) (FreeMonoid.map.{u1, u2} α β f) (FreeMonoid.of.{u1} α x)) (FreeMonoid.of.{u2} β (f x))
+ forall {α : Type.{u1}} {β : Type.{u2}} (f : α -> β) (x : α), Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : FreeMonoid.{u1} α) => FreeMonoid.{u2} β) (FreeMonoid.of.{u1} α x)) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} (FreeMonoid.{u1} α) (FreeMonoid.{u2} β) (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} β) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} β) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} β) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} β))))) (FreeMonoid.{u1} α) (fun (_x : FreeMonoid.{u1} α) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : FreeMonoid.{u1} α) => FreeMonoid.{u2} β) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} (FreeMonoid.{u1} α) (FreeMonoid.{u2} β) (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} β) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} β) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} β) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} β))))) (FreeMonoid.{u1} α) (FreeMonoid.{u2} β) (MulOneClass.toMul.{u1} (FreeMonoid.{u1} α) (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α))))) (MulOneClass.toMul.{u2} (FreeMonoid.{u2} β) (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} β) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} β) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} β) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} β))))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} (FreeMonoid.{u1} α) (FreeMonoid.{u2} β) (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} β) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} β) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} β) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} β))))) (FreeMonoid.{u1} α) (FreeMonoid.{u2} β) (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} β) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} β) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} β) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} β)))) (MonoidHom.monoidHomClass.{u1, u2} (FreeMonoid.{u1} α) (FreeMonoid.{u2} β) (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} β) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} β) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} β) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} β))))))) (FreeMonoid.map.{u1, u2} α β f) (FreeMonoid.of.{u1} α x)) (FreeMonoid.of.{u2} β (f x))
Case conversion may be inaccurate. Consider using '#align free_monoid.map_of FreeMonoid.map_ofₓ'. -/
@[simp, to_additive]
theorem map_of (f : α → β) (x : α) : map f (of x) = of (f x) :=
@@ -541,7 +541,7 @@ theorem map_of (f : α → β) (x : α) : map f (of x) = of (f x) :=
lean 3 declaration is
forall {α : Type.{u1}} {β : Type.{u2}} (f : α -> β) (xs : FreeMonoid.{u1} α), Eq.{succ u2} (List.{u2} β) (coeFn.{succ u2, succ u2} (Equiv.{succ u2, succ u2} (FreeMonoid.{u2} β) (List.{u2} β)) (fun (_x : Equiv.{succ u2, succ u2} (FreeMonoid.{u2} β) (List.{u2} β)) => (FreeMonoid.{u2} β) -> (List.{u2} β)) (Equiv.hasCoeToFun.{succ u2, succ u2} (FreeMonoid.{u2} β) (List.{u2} β)) (FreeMonoid.toList.{u2} β) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} (FreeMonoid.{u1} α) (FreeMonoid.{u2} β) (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} β) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} β) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} β) (FreeMonoid.cancelMonoid.{u2} β))))) (fun (_x : MonoidHom.{u1, u2} (FreeMonoid.{u1} α) (FreeMonoid.{u2} β) (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} β) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} β) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} β) (FreeMonoid.cancelMonoid.{u2} β))))) => (FreeMonoid.{u1} α) -> (FreeMonoid.{u2} β)) (MonoidHom.hasCoeToFun.{u1, u2} (FreeMonoid.{u1} α) (FreeMonoid.{u2} β) (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} β) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} β) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} β) (FreeMonoid.cancelMonoid.{u2} β))))) (FreeMonoid.map.{u1, u2} α β f) xs)) (List.map.{u1, u2} α β f (coeFn.{succ u1, succ u1} (Equiv.{succ u1, succ u1} (FreeMonoid.{u1} α) (List.{u1} α)) (fun (_x : Equiv.{succ u1, succ u1} (FreeMonoid.{u1} α) (List.{u1} α)) => (FreeMonoid.{u1} α) -> (List.{u1} α)) (Equiv.hasCoeToFun.{succ u1, succ u1} (FreeMonoid.{u1} α) (List.{u1} α)) (FreeMonoid.toList.{u1} α) xs))
but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u1}} (f : α -> β) (xs : FreeMonoid.{u2} α), Eq.{succ u1} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : FreeMonoid.{u1} β) => List.{u1} β) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} (FreeMonoid.{u2} α) (FreeMonoid.{u1} β) (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} β) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} β) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} β) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} β))))) (FreeMonoid.{u2} α) (fun (a : FreeMonoid.{u2} α) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : FreeMonoid.{u2} α) => FreeMonoid.{u1} β) a) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (FreeMonoid.{u2} α) (FreeMonoid.{u1} β) (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} β) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} β) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} β) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} β))))) (FreeMonoid.{u2} α) (FreeMonoid.{u1} β) (MulOneClass.toMul.{u2} (FreeMonoid.{u2} α) (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α))))) (MulOneClass.toMul.{u1} (FreeMonoid.{u1} β) (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} β) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} β) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} β) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} β))))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (FreeMonoid.{u2} α) (FreeMonoid.{u1} β) (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} β) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} β) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} β) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} β))))) (FreeMonoid.{u2} α) (FreeMonoid.{u1} β) (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} β) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} β) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} β) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} β)))) (MonoidHom.monoidHomClass.{u2, u1} (FreeMonoid.{u2} α) (FreeMonoid.{u1} β) (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} β) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} β) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} β) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} β))))))) (FreeMonoid.map.{u2, u1} α β f) xs)) (FunLike.coe.{succ u1, succ u1, succ u1} (Equiv.{succ u1, succ u1} (FreeMonoid.{u1} β) (List.{u1} β)) (FreeMonoid.{u1} β) (fun (_x : FreeMonoid.{u1} β) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : FreeMonoid.{u1} β) => List.{u1} β) _x) (Equiv.instFunLikeEquiv.{succ u1, succ u1} (FreeMonoid.{u1} β) (List.{u1} β)) (FreeMonoid.toList.{u1} β) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} (FreeMonoid.{u2} α) (FreeMonoid.{u1} β) (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} β) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} β) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} β) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} β))))) (FreeMonoid.{u2} α) (fun (_x : FreeMonoid.{u2} α) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : FreeMonoid.{u2} α) => FreeMonoid.{u1} β) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (FreeMonoid.{u2} α) (FreeMonoid.{u1} β) (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} β) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} β) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} β) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} β))))) (FreeMonoid.{u2} α) (FreeMonoid.{u1} β) (MulOneClass.toMul.{u2} (FreeMonoid.{u2} α) (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α))))) (MulOneClass.toMul.{u1} (FreeMonoid.{u1} β) (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} β) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} β) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} β) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} β))))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (FreeMonoid.{u2} α) (FreeMonoid.{u1} β) (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} β) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} β) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} β) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} β))))) (FreeMonoid.{u2} α) (FreeMonoid.{u1} β) (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} β) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} β) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} β) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} β)))) (MonoidHom.monoidHomClass.{u2, u1} (FreeMonoid.{u2} α) (FreeMonoid.{u1} β) (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} β) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} β) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} β) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} β))))))) (FreeMonoid.map.{u2, u1} α β f) xs)) (List.map.{u2, u1} α β f (FunLike.coe.{succ u2, succ u2, succ u2} (Equiv.{succ u2, succ u2} (FreeMonoid.{u2} α) (List.{u2} α)) (FreeMonoid.{u2} α) (fun (_x : FreeMonoid.{u2} α) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : FreeMonoid.{u2} α) => List.{u2} α) _x) (Equiv.instFunLikeEquiv.{succ u2, succ u2} (FreeMonoid.{u2} α) (List.{u2} α)) (FreeMonoid.toList.{u2} α) xs))
+ forall {α : Type.{u2}} {β : Type.{u1}} (f : α -> β) (xs : FreeMonoid.{u2} α), Eq.{succ u1} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : FreeMonoid.{u1} β) => List.{u1} β) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} (FreeMonoid.{u2} α) (FreeMonoid.{u1} β) (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} β) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} β) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} β) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} β))))) (FreeMonoid.{u2} α) (fun (a : FreeMonoid.{u2} α) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : FreeMonoid.{u2} α) => FreeMonoid.{u1} β) a) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (FreeMonoid.{u2} α) (FreeMonoid.{u1} β) (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} β) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} β) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} β) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} β))))) (FreeMonoid.{u2} α) (FreeMonoid.{u1} β) (MulOneClass.toMul.{u2} (FreeMonoid.{u2} α) (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α))))) (MulOneClass.toMul.{u1} (FreeMonoid.{u1} β) (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} β) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} β) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} β) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} β))))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (FreeMonoid.{u2} α) (FreeMonoid.{u1} β) (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} β) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} β) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} β) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} β))))) (FreeMonoid.{u2} α) (FreeMonoid.{u1} β) (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} β) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} β) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} β) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} β)))) (MonoidHom.monoidHomClass.{u2, u1} (FreeMonoid.{u2} α) (FreeMonoid.{u1} β) (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} β) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} β) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} β) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} β))))))) (FreeMonoid.map.{u2, u1} α β f) xs)) (FunLike.coe.{succ u1, succ u1, succ u1} (Equiv.{succ u1, succ u1} (FreeMonoid.{u1} β) (List.{u1} β)) (FreeMonoid.{u1} β) (fun (_x : FreeMonoid.{u1} β) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : FreeMonoid.{u1} β) => List.{u1} β) _x) (Equiv.instFunLikeEquiv.{succ u1, succ u1} (FreeMonoid.{u1} β) (List.{u1} β)) (FreeMonoid.toList.{u1} β) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} (FreeMonoid.{u2} α) (FreeMonoid.{u1} β) (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} β) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} β) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} β) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} β))))) (FreeMonoid.{u2} α) (fun (_x : FreeMonoid.{u2} α) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : FreeMonoid.{u2} α) => FreeMonoid.{u1} β) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (FreeMonoid.{u2} α) (FreeMonoid.{u1} β) (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} β) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} β) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} β) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} β))))) (FreeMonoid.{u2} α) (FreeMonoid.{u1} β) (MulOneClass.toMul.{u2} (FreeMonoid.{u2} α) (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α))))) (MulOneClass.toMul.{u1} (FreeMonoid.{u1} β) (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} β) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} β) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} β) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} β))))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (FreeMonoid.{u2} α) (FreeMonoid.{u1} β) (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} β) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} β) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} β) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} β))))) (FreeMonoid.{u2} α) (FreeMonoid.{u1} β) (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} β) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} β) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} β) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} β)))) (MonoidHom.monoidHomClass.{u2, u1} (FreeMonoid.{u2} α) (FreeMonoid.{u1} β) (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} β) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} β) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} β) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} β))))))) (FreeMonoid.map.{u2, u1} α β f) xs)) (List.map.{u2, u1} α β f (FunLike.coe.{succ u2, succ u2, succ u2} (Equiv.{succ u2, succ u2} (FreeMonoid.{u2} α) (List.{u2} α)) (FreeMonoid.{u2} α) (fun (_x : FreeMonoid.{u2} α) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : FreeMonoid.{u2} α) => List.{u2} α) _x) (Equiv.instFunLikeEquiv.{succ u2, succ u2} (FreeMonoid.{u2} α) (List.{u2} α)) (FreeMonoid.toList.{u2} α) xs))
Case conversion may be inaccurate. Consider using '#align free_monoid.to_list_map FreeMonoid.toList_mapₓ'. -/
@[to_additive]
theorem toList_map (f : α → β) (xs : FreeMonoid α) : (map f xs).toList = xs.toList.map f :=
@@ -553,7 +553,7 @@ theorem toList_map (f : α → β) (xs : FreeMonoid α) : (map f xs).toList = xs
lean 3 declaration is
forall {α : Type.{u1}} {β : Type.{u2}} (f : α -> β) (xs : List.{u1} α), Eq.{succ u2} (FreeMonoid.{u2} β) (coeFn.{succ u2, succ u2} (Equiv.{succ u2, succ u2} (List.{u2} β) (FreeMonoid.{u2} β)) (fun (_x : Equiv.{succ u2, succ u2} (List.{u2} β) (FreeMonoid.{u2} β)) => (List.{u2} β) -> (FreeMonoid.{u2} β)) (Equiv.hasCoeToFun.{succ u2, succ u2} (List.{u2} β) (FreeMonoid.{u2} β)) (FreeMonoid.ofList.{u2} β) (List.map.{u1, u2} α β f xs)) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} (FreeMonoid.{u1} α) (FreeMonoid.{u2} β) (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} β) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} β) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} β) (FreeMonoid.cancelMonoid.{u2} β))))) (fun (_x : MonoidHom.{u1, u2} (FreeMonoid.{u1} α) (FreeMonoid.{u2} β) (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} β) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} β) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} β) (FreeMonoid.cancelMonoid.{u2} β))))) => (FreeMonoid.{u1} α) -> (FreeMonoid.{u2} β)) (MonoidHom.hasCoeToFun.{u1, u2} (FreeMonoid.{u1} α) (FreeMonoid.{u2} β) (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} β) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} β) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} β) (FreeMonoid.cancelMonoid.{u2} β))))) (FreeMonoid.map.{u1, u2} α β f) (coeFn.{succ u1, succ u1} (Equiv.{succ u1, succ u1} (List.{u1} α) (FreeMonoid.{u1} α)) (fun (_x : Equiv.{succ u1, succ u1} (List.{u1} α) (FreeMonoid.{u1} α)) => (List.{u1} α) -> (FreeMonoid.{u1} α)) (Equiv.hasCoeToFun.{succ u1, succ u1} (List.{u1} α) (FreeMonoid.{u1} α)) (FreeMonoid.ofList.{u1} α) xs))
but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u1}} (f : α -> β) (xs : List.{u2} α), Eq.{succ u1} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : List.{u1} β) => FreeMonoid.{u1} β) (List.map.{u2, u1} α β f xs)) (FunLike.coe.{succ u1, succ u1, succ u1} (Equiv.{succ u1, succ u1} (List.{u1} β) (FreeMonoid.{u1} β)) (List.{u1} β) (fun (_x : List.{u1} β) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : List.{u1} β) => FreeMonoid.{u1} β) _x) (Equiv.instFunLikeEquiv.{succ u1, succ u1} (List.{u1} β) (FreeMonoid.{u1} β)) (FreeMonoid.ofList.{u1} β) (List.map.{u2, u1} α β f xs)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} (FreeMonoid.{u2} α) (FreeMonoid.{u1} β) (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} β) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} β) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} β) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} β))))) (FreeMonoid.{u2} α) (fun (_x : FreeMonoid.{u2} α) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : FreeMonoid.{u2} α) => FreeMonoid.{u1} β) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (FreeMonoid.{u2} α) (FreeMonoid.{u1} β) (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} β) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} β) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} β) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} β))))) (FreeMonoid.{u2} α) (FreeMonoid.{u1} β) (MulOneClass.toMul.{u2} (FreeMonoid.{u2} α) (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α))))) (MulOneClass.toMul.{u1} (FreeMonoid.{u1} β) (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} β) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} β) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} β) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} β))))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (FreeMonoid.{u2} α) (FreeMonoid.{u1} β) (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} β) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} β) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} β) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} β))))) (FreeMonoid.{u2} α) (FreeMonoid.{u1} β) (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} β) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} β) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} β) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} β)))) (MonoidHom.monoidHomClass.{u2, u1} (FreeMonoid.{u2} α) (FreeMonoid.{u1} β) (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} β) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} β) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} β) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} β))))))) (FreeMonoid.map.{u2, u1} α β f) (FunLike.coe.{succ u2, succ u2, succ u2} (Equiv.{succ u2, succ u2} (List.{u2} α) (FreeMonoid.{u2} α)) (List.{u2} α) (fun (_x : List.{u2} α) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : List.{u2} α) => FreeMonoid.{u2} α) _x) (Equiv.instFunLikeEquiv.{succ u2, succ u2} (List.{u2} α) (FreeMonoid.{u2} α)) (FreeMonoid.ofList.{u2} α) xs))
+ forall {α : Type.{u2}} {β : Type.{u1}} (f : α -> β) (xs : List.{u2} α), Eq.{succ u1} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : List.{u1} β) => FreeMonoid.{u1} β) (List.map.{u2, u1} α β f xs)) (FunLike.coe.{succ u1, succ u1, succ u1} (Equiv.{succ u1, succ u1} (List.{u1} β) (FreeMonoid.{u1} β)) (List.{u1} β) (fun (_x : List.{u1} β) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : List.{u1} β) => FreeMonoid.{u1} β) _x) (Equiv.instFunLikeEquiv.{succ u1, succ u1} (List.{u1} β) (FreeMonoid.{u1} β)) (FreeMonoid.ofList.{u1} β) (List.map.{u2, u1} α β f xs)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} (FreeMonoid.{u2} α) (FreeMonoid.{u1} β) (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} β) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} β) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} β) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} β))))) (FreeMonoid.{u2} α) (fun (_x : FreeMonoid.{u2} α) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : FreeMonoid.{u2} α) => FreeMonoid.{u1} β) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (FreeMonoid.{u2} α) (FreeMonoid.{u1} β) (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} β) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} β) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} β) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} β))))) (FreeMonoid.{u2} α) (FreeMonoid.{u1} β) (MulOneClass.toMul.{u2} (FreeMonoid.{u2} α) (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α))))) (MulOneClass.toMul.{u1} (FreeMonoid.{u1} β) (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} β) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} β) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} β) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} β))))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (FreeMonoid.{u2} α) (FreeMonoid.{u1} β) (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} β) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} β) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} β) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} β))))) (FreeMonoid.{u2} α) (FreeMonoid.{u1} β) (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} β) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} β) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} β) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} β)))) (MonoidHom.monoidHomClass.{u2, u1} (FreeMonoid.{u2} α) (FreeMonoid.{u1} β) (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} β) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} β) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} β) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} β))))))) (FreeMonoid.map.{u2, u1} α β f) (FunLike.coe.{succ u2, succ u2, succ u2} (Equiv.{succ u2, succ u2} (List.{u2} α) (FreeMonoid.{u2} α)) (List.{u2} α) (fun (_x : List.{u2} α) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : List.{u2} α) => FreeMonoid.{u2} α) _x) (Equiv.instFunLikeEquiv.{succ u2, succ u2} (List.{u2} α) (FreeMonoid.{u2} α)) (FreeMonoid.ofList.{u2} α) xs))
Case conversion may be inaccurate. Consider using '#align free_monoid.of_list_map FreeMonoid.ofList_mapₓ'. -/
@[to_additive]
theorem ofList_map (f : α → β) (xs : List α) : ofList (xs.map f) = map f (ofList xs) :=
@@ -565,7 +565,7 @@ theorem ofList_map (f : α → β) (xs : List α) : ofList (xs.map f) = map f (o
lean 3 declaration is
forall {α : Type.{u1}} {β : Type.{u2}} (f : α -> β), Eq.{max (succ u2) (succ u1)} (MonoidHom.{u1, u2} (FreeMonoid.{u1} α) (FreeMonoid.{u2} β) (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} β) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} β) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} β) (FreeMonoid.cancelMonoid.{u2} β))))) (coeFn.{max 1 (max (max (succ u1) (succ u2)) (succ u2) (succ u1)) (max (succ u2) (succ u1)) (succ u1) (succ u2), max (max (succ u1) (succ u2)) (succ u2) (succ u1)} (Equiv.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (α -> (FreeMonoid.{u2} β)) (MonoidHom.{u1, u2} (FreeMonoid.{u1} α) (FreeMonoid.{u2} β) (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} β) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} β) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} β) (FreeMonoid.cancelMonoid.{u2} β)))))) (fun (_x : Equiv.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (α -> (FreeMonoid.{u2} β)) (MonoidHom.{u1, u2} (FreeMonoid.{u1} α) (FreeMonoid.{u2} β) (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} β) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} β) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} β) (FreeMonoid.cancelMonoid.{u2} β)))))) => (α -> (FreeMonoid.{u2} β)) -> (MonoidHom.{u1, u2} (FreeMonoid.{u1} α) (FreeMonoid.{u2} β) (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} β) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} β) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} β) (FreeMonoid.cancelMonoid.{u2} β)))))) (Equiv.hasCoeToFun.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (α -> (FreeMonoid.{u2} β)) (MonoidHom.{u1, u2} (FreeMonoid.{u1} α) (FreeMonoid.{u2} β) (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} β) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} β) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} β) (FreeMonoid.cancelMonoid.{u2} β)))))) (FreeMonoid.lift.{u1, u2} α (FreeMonoid.{u2} β) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} β) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} β) (FreeMonoid.cancelMonoid.{u2} β)))) (fun (x : α) => FreeMonoid.of.{u2} β (f x))) (FreeMonoid.map.{u1, u2} α β f)
but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u1}} (f : α -> β), Eq.{max (succ u2) (succ u1)} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : α -> (FreeMonoid.{u1} β)) => MonoidHom.{u2, u1} (FreeMonoid.{u2} α) (FreeMonoid.{u1} β) (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} β) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} β) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} β) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} β))))) (fun (x : α) => FreeMonoid.of.{u1} β (f x))) (FunLike.coe.{max (succ u1) (succ u2), max (succ u1) (succ u2), max (succ u1) (succ u2)} (Equiv.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (α -> (FreeMonoid.{u1} β)) (MonoidHom.{u2, u1} (FreeMonoid.{u2} α) (FreeMonoid.{u1} β) (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} β) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} β) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} β) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} β)))))) (α -> (FreeMonoid.{u1} β)) (fun (_x : α -> (FreeMonoid.{u1} β)) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : α -> (FreeMonoid.{u1} β)) => MonoidHom.{u2, u1} (FreeMonoid.{u2} α) (FreeMonoid.{u1} β) (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} β) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} β) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} β) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} β))))) _x) (Equiv.instFunLikeEquiv.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (α -> (FreeMonoid.{u1} β)) (MonoidHom.{u2, u1} (FreeMonoid.{u2} α) (FreeMonoid.{u1} β) (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} β) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} β) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} β) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} β)))))) (FreeMonoid.lift.{u2, u1} α (FreeMonoid.{u1} β) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} β) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} β) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} β)))) (fun (x : α) => FreeMonoid.of.{u1} β (f x))) (FreeMonoid.map.{u2, u1} α β f)
+ forall {α : Type.{u2}} {β : Type.{u1}} (f : α -> β), Eq.{max (succ u2) (succ u1)} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : α -> (FreeMonoid.{u1} β)) => MonoidHom.{u2, u1} (FreeMonoid.{u2} α) (FreeMonoid.{u1} β) (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} β) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} β) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} β) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} β))))) (fun (x : α) => FreeMonoid.of.{u1} β (f x))) (FunLike.coe.{max (succ u1) (succ u2), max (succ u1) (succ u2), max (succ u1) (succ u2)} (Equiv.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (α -> (FreeMonoid.{u1} β)) (MonoidHom.{u2, u1} (FreeMonoid.{u2} α) (FreeMonoid.{u1} β) (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} β) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} β) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} β) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} β)))))) (α -> (FreeMonoid.{u1} β)) (fun (_x : α -> (FreeMonoid.{u1} β)) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : α -> (FreeMonoid.{u1} β)) => MonoidHom.{u2, u1} (FreeMonoid.{u2} α) (FreeMonoid.{u1} β) (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} β) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} β) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} β) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} β))))) _x) (Equiv.instFunLikeEquiv.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (α -> (FreeMonoid.{u1} β)) (MonoidHom.{u2, u1} (FreeMonoid.{u2} α) (FreeMonoid.{u1} β) (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} β) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} β) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} β) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} β)))))) (FreeMonoid.lift.{u2, u1} α (FreeMonoid.{u1} β) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} β) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} β) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} β)))) (fun (x : α) => FreeMonoid.of.{u1} β (f x))) (FreeMonoid.map.{u2, u1} α β f)
Case conversion may be inaccurate. Consider using '#align free_monoid.lift_of_comp_eq_map FreeMonoid.lift_of_comp_eq_mapₓ'. -/
@[to_additive]
theorem lift_of_comp_eq_map (f : α → β) : (lift fun x => of (f x)) = map f :=
mathlib commit https://github.com/leanprover-community/mathlib/commit/38f16f960f5006c6c0c2bac7b0aba5273188f4e5
@@ -311,7 +311,7 @@ theorem casesOn_of_mul {C : FreeMonoid α → Sort _} (x : α) (xs : FreeMonoid
lean 3 declaration is
forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : Monoid.{u2} M] {{f : MonoidHom.{u1, u2} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} M _inst_1)}} {{g : MonoidHom.{u1, u2} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} M _inst_1)}}, (forall (x : α), Eq.{succ u2} M (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} M _inst_1)) (fun (_x : MonoidHom.{u1, u2} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} M _inst_1)) => (FreeMonoid.{u1} α) -> M) (MonoidHom.hasCoeToFun.{u1, u2} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} M _inst_1)) f (FreeMonoid.of.{u1} α x)) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} M _inst_1)) (fun (_x : MonoidHom.{u1, u2} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} M _inst_1)) => (FreeMonoid.{u1} α) -> M) (MonoidHom.hasCoeToFun.{u1, u2} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} M _inst_1)) g (FreeMonoid.of.{u1} α x))) -> (Eq.{max (succ u2) (succ u1)} (MonoidHom.{u1, u2} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} M _inst_1)) f g)
but is expected to have type
- forall {α : Type.{u2}} {M : Type.{u1}} [_inst_1 : Monoid.{u1} M] {{f : MonoidHom.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1)}} {{g : MonoidHom.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1)}}, (forall (x : α), Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : FreeMonoid.{u2} α) => M) (FreeMonoid.of.{u2} α x)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1)) (FreeMonoid.{u2} α) (fun (_x : FreeMonoid.{u2} α) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : FreeMonoid.{u2} α) => M) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1)) (FreeMonoid.{u2} α) M (MulOneClass.toMul.{u2} (FreeMonoid.{u2} α) (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α))))) (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M _inst_1)) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1)) (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1) (MonoidHom.monoidHomClass.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1)))) f (FreeMonoid.of.{u2} α x)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1)) (FreeMonoid.{u2} α) (fun (_x : FreeMonoid.{u2} α) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : FreeMonoid.{u2} α) => M) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1)) (FreeMonoid.{u2} α) M (MulOneClass.toMul.{u2} (FreeMonoid.{u2} α) (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α))))) (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M _inst_1)) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1)) (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1) (MonoidHom.monoidHomClass.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1)))) g (FreeMonoid.of.{u2} α x))) -> (Eq.{max (succ u2) (succ u1)} (MonoidHom.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1)) f g)
+ forall {α : Type.{u2}} {M : Type.{u1}} [_inst_1 : Monoid.{u1} M] {{f : MonoidHom.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1)}} {{g : MonoidHom.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1)}}, (forall (x : α), Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : FreeMonoid.{u2} α) => M) (FreeMonoid.of.{u2} α x)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1)) (FreeMonoid.{u2} α) (fun (_x : FreeMonoid.{u2} α) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : FreeMonoid.{u2} α) => M) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1)) (FreeMonoid.{u2} α) M (MulOneClass.toMul.{u2} (FreeMonoid.{u2} α) (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α))))) (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M _inst_1)) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1)) (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1) (MonoidHom.monoidHomClass.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1)))) f (FreeMonoid.of.{u2} α x)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1)) (FreeMonoid.{u2} α) (fun (_x : FreeMonoid.{u2} α) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : FreeMonoid.{u2} α) => M) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1)) (FreeMonoid.{u2} α) M (MulOneClass.toMul.{u2} (FreeMonoid.{u2} α) (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α))))) (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M _inst_1)) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1)) (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1) (MonoidHom.monoidHomClass.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1)))) g (FreeMonoid.of.{u2} α x))) -> (Eq.{max (succ u2) (succ u1)} (MonoidHom.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1)) f g)
Case conversion may be inaccurate. Consider using '#align free_monoid.hom_eq FreeMonoid.hom_eqₓ'. -/
@[ext, to_additive]
theorem hom_eq ⦃f g : FreeMonoid α →* M⦄ (h : ∀ x, f (of x) = g (of x)) : f = g :=
@@ -370,7 +370,7 @@ def lift : (α → M) ≃ (FreeMonoid α →* M)
lean 3 declaration is
forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : Monoid.{u2} M] (f : MonoidHom.{u1, u2} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} M _inst_1)), Eq.{max (succ u1) (succ u2)} (α -> M) (coeFn.{max 1 (max (max (succ u2) (succ u1)) (succ u1) (succ u2)) (max (succ u1) (succ u2)) (succ u2) (succ u1), max (max (succ u2) (succ u1)) (succ u1) (succ u2)} (Equiv.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} M _inst_1)) (α -> M)) (fun (_x : Equiv.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} M _inst_1)) (α -> M)) => (MonoidHom.{u1, u2} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} M _inst_1)) -> α -> M) (Equiv.hasCoeToFun.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} M _inst_1)) (α -> M)) (Equiv.symm.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (α -> M) (MonoidHom.{u1, u2} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} M _inst_1)) (FreeMonoid.lift.{u1, u2} α M _inst_1)) f) (Function.comp.{succ u1, succ u1, succ u2} α (FreeMonoid.{u1} α) M (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} M _inst_1)) (fun (_x : MonoidHom.{u1, u2} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} M _inst_1)) => (FreeMonoid.{u1} α) -> M) (MonoidHom.hasCoeToFun.{u1, u2} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} M _inst_1)) f) (FreeMonoid.of.{u1} α))
but is expected to have type
- forall {α : Type.{u2}} {M : Type.{u1}} [_inst_1 : Monoid.{u1} M] (f : MonoidHom.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1)), Eq.{max (succ u2) (succ u1)} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : MonoidHom.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1)) => α -> M) f) (FunLike.coe.{max (succ u1) (succ u2), max (succ u1) (succ u2), max (succ u1) (succ u2)} (Equiv.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (MonoidHom.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1)) (α -> M)) (MonoidHom.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1)) (fun (_x : MonoidHom.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1)) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : MonoidHom.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1)) => α -> M) _x) (Equiv.instFunLikeEquiv.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (MonoidHom.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1)) (α -> M)) (Equiv.symm.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (α -> M) (MonoidHom.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1)) (FreeMonoid.lift.{u2, u1} α M _inst_1)) f) (Function.comp.{succ u2, succ u2, succ u1} α (FreeMonoid.{u2} α) M (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1)) (FreeMonoid.{u2} α) (fun (_x : FreeMonoid.{u2} α) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : FreeMonoid.{u2} α) => M) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1)) (FreeMonoid.{u2} α) M (MulOneClass.toMul.{u2} (FreeMonoid.{u2} α) (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α))))) (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M _inst_1)) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1)) (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1) (MonoidHom.monoidHomClass.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1)))) f) (FreeMonoid.of.{u2} α))
+ forall {α : Type.{u2}} {M : Type.{u1}} [_inst_1 : Monoid.{u1} M] (f : MonoidHom.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1)), Eq.{max (succ u2) (succ u1)} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : MonoidHom.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1)) => α -> M) f) (FunLike.coe.{max (succ u1) (succ u2), max (succ u1) (succ u2), max (succ u1) (succ u2)} (Equiv.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (MonoidHom.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1)) (α -> M)) (MonoidHom.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1)) (fun (_x : MonoidHom.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1)) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : MonoidHom.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1)) => α -> M) _x) (Equiv.instFunLikeEquiv.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (MonoidHom.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1)) (α -> M)) (Equiv.symm.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (α -> M) (MonoidHom.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1)) (FreeMonoid.lift.{u2, u1} α M _inst_1)) f) (Function.comp.{succ u2, succ u2, succ u1} α (FreeMonoid.{u2} α) M (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1)) (FreeMonoid.{u2} α) (fun (_x : FreeMonoid.{u2} α) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : FreeMonoid.{u2} α) => M) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1)) (FreeMonoid.{u2} α) M (MulOneClass.toMul.{u2} (FreeMonoid.{u2} α) (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α))))) (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M _inst_1)) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1)) (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1) (MonoidHom.monoidHomClass.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1)))) f) (FreeMonoid.of.{u2} α))
Case conversion may be inaccurate. Consider using '#align free_monoid.lift_symm_apply FreeMonoid.lift_symm_applyₓ'. -/
@[simp, to_additive]
theorem lift_symm_apply (f : FreeMonoid α →* M) : lift.symm f = f ∘ of :=
@@ -382,7 +382,7 @@ theorem lift_symm_apply (f : FreeMonoid α →* M) : lift.symm f = f ∘ of :=
lean 3 declaration is
forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : Monoid.{u2} M] (f : α -> M) (l : FreeMonoid.{u1} α), Eq.{succ u2} M (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} M _inst_1)) (fun (_x : MonoidHom.{u1, u2} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} M _inst_1)) => (FreeMonoid.{u1} α) -> M) (MonoidHom.hasCoeToFun.{u1, u2} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} M _inst_1)) (coeFn.{max 1 (max (max (succ u1) (succ u2)) (succ u2) (succ u1)) (max (succ u2) (succ u1)) (succ u1) (succ u2), max (max (succ u1) (succ u2)) (succ u2) (succ u1)} (Equiv.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (α -> M) (MonoidHom.{u1, u2} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} M _inst_1))) (fun (_x : Equiv.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (α -> M) (MonoidHom.{u1, u2} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} M _inst_1))) => (α -> M) -> (MonoidHom.{u1, u2} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} M _inst_1))) (Equiv.hasCoeToFun.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (α -> M) (MonoidHom.{u1, u2} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} M _inst_1))) (FreeMonoid.lift.{u1, u2} α M _inst_1) f) l) (List.prod.{u2} M (MulOneClass.toHasMul.{u2} M (Monoid.toMulOneClass.{u2} M _inst_1)) (MulOneClass.toHasOne.{u2} M (Monoid.toMulOneClass.{u2} M _inst_1)) (List.map.{u1, u2} α M f (coeFn.{succ u1, succ u1} (Equiv.{succ u1, succ u1} (FreeMonoid.{u1} α) (List.{u1} α)) (fun (_x : Equiv.{succ u1, succ u1} (FreeMonoid.{u1} α) (List.{u1} α)) => (FreeMonoid.{u1} α) -> (List.{u1} α)) (Equiv.hasCoeToFun.{succ u1, succ u1} (FreeMonoid.{u1} α) (List.{u1} α)) (FreeMonoid.toList.{u1} α) l)))
but is expected to have type
- forall {α : Type.{u2}} {M : Type.{u1}} [_inst_1 : Monoid.{u1} M] (f : α -> M) (l : FreeMonoid.{u2} α), Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : FreeMonoid.{u2} α) => M) l) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : α -> M) => MonoidHom.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1)) f) (FreeMonoid.{u2} α) (fun (_x : FreeMonoid.{u2} α) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : FreeMonoid.{u2} α) => M) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : α -> M) => MonoidHom.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1)) f) (FreeMonoid.{u2} α) M (MulOneClass.toMul.{u2} (FreeMonoid.{u2} α) (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α))))) (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M _inst_1)) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : α -> M) => MonoidHom.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1)) f) (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1) (MonoidHom.monoidHomClass.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1)))) (FunLike.coe.{max (succ u1) (succ u2), max (succ u1) (succ u2), max (succ u1) (succ u2)} (Equiv.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (α -> M) (MonoidHom.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1))) (α -> M) (fun (_x : α -> M) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : α -> M) => MonoidHom.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1)) _x) (Equiv.instFunLikeEquiv.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (α -> M) (MonoidHom.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1))) (FreeMonoid.lift.{u2, u1} α M _inst_1) f) l) (List.prod.{u1} M (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M _inst_1)) (Monoid.toOne.{u1} M _inst_1) (List.map.{u2, u1} α M f (FunLike.coe.{succ u2, succ u2, succ u2} (Equiv.{succ u2, succ u2} (FreeMonoid.{u2} α) (List.{u2} α)) (FreeMonoid.{u2} α) (fun (_x : FreeMonoid.{u2} α) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : FreeMonoid.{u2} α) => List.{u2} α) _x) (Equiv.instFunLikeEquiv.{succ u2, succ u2} (FreeMonoid.{u2} α) (List.{u2} α)) (FreeMonoid.toList.{u2} α) l)))
+ forall {α : Type.{u2}} {M : Type.{u1}} [_inst_1 : Monoid.{u1} M] (f : α -> M) (l : FreeMonoid.{u2} α), Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : FreeMonoid.{u2} α) => M) l) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : α -> M) => MonoidHom.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1)) f) (FreeMonoid.{u2} α) (fun (_x : FreeMonoid.{u2} α) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : FreeMonoid.{u2} α) => M) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : α -> M) => MonoidHom.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1)) f) (FreeMonoid.{u2} α) M (MulOneClass.toMul.{u2} (FreeMonoid.{u2} α) (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α))))) (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M _inst_1)) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : α -> M) => MonoidHom.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1)) f) (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1) (MonoidHom.monoidHomClass.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1)))) (FunLike.coe.{max (succ u1) (succ u2), max (succ u1) (succ u2), max (succ u1) (succ u2)} (Equiv.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (α -> M) (MonoidHom.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1))) (α -> M) (fun (_x : α -> M) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : α -> M) => MonoidHom.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1)) _x) (Equiv.instFunLikeEquiv.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (α -> M) (MonoidHom.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1))) (FreeMonoid.lift.{u2, u1} α M _inst_1) f) l) (List.prod.{u1} M (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M _inst_1)) (Monoid.toOne.{u1} M _inst_1) (List.map.{u2, u1} α M f (FunLike.coe.{succ u2, succ u2, succ u2} (Equiv.{succ u2, succ u2} (FreeMonoid.{u2} α) (List.{u2} α)) (FreeMonoid.{u2} α) (fun (_x : FreeMonoid.{u2} α) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : FreeMonoid.{u2} α) => List.{u2} α) _x) (Equiv.instFunLikeEquiv.{succ u2, succ u2} (FreeMonoid.{u2} α) (List.{u2} α)) (FreeMonoid.toList.{u2} α) l)))
Case conversion may be inaccurate. Consider using '#align free_monoid.lift_apply FreeMonoid.lift_applyₓ'. -/
@[to_additive]
theorem lift_apply (f : α → M) (l : FreeMonoid α) : lift f l = (l.toList.map f).Prod :=
@@ -394,7 +394,7 @@ theorem lift_apply (f : α → M) (l : FreeMonoid α) : lift f l = (l.toList.map
lean 3 declaration is
forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : Monoid.{u2} M] (f : α -> M), Eq.{max (succ u1) (succ u2)} (α -> M) (Function.comp.{succ u1, succ u1, succ u2} α (FreeMonoid.{u1} α) M (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} M _inst_1)) (fun (_x : MonoidHom.{u1, u2} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} M _inst_1)) => (FreeMonoid.{u1} α) -> M) (MonoidHom.hasCoeToFun.{u1, u2} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} M _inst_1)) (coeFn.{max 1 (max (max (succ u1) (succ u2)) (succ u2) (succ u1)) (max (succ u2) (succ u1)) (succ u1) (succ u2), max (max (succ u1) (succ u2)) (succ u2) (succ u1)} (Equiv.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (α -> M) (MonoidHom.{u1, u2} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} M _inst_1))) (fun (_x : Equiv.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (α -> M) (MonoidHom.{u1, u2} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} M _inst_1))) => (α -> M) -> (MonoidHom.{u1, u2} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} M _inst_1))) (Equiv.hasCoeToFun.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (α -> M) (MonoidHom.{u1, u2} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} M _inst_1))) (FreeMonoid.lift.{u1, u2} α M _inst_1) f)) (FreeMonoid.of.{u1} α)) f
but is expected to have type
- forall {α : Type.{u2}} {M : Type.{u1}} [_inst_1 : Monoid.{u1} M] (f : α -> M), Eq.{max (succ u2) (succ u1)} (α -> M) (Function.comp.{succ u2, succ u2, succ u1} α (FreeMonoid.{u2} α) M (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : α -> M) => MonoidHom.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1)) f) (FreeMonoid.{u2} α) (fun (_x : FreeMonoid.{u2} α) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : FreeMonoid.{u2} α) => M) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : α -> M) => MonoidHom.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1)) f) (FreeMonoid.{u2} α) M (MulOneClass.toMul.{u2} (FreeMonoid.{u2} α) (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α))))) (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M _inst_1)) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : α -> M) => MonoidHom.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1)) f) (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1) (MonoidHom.monoidHomClass.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1)))) (FunLike.coe.{max (succ u1) (succ u2), max (succ u1) (succ u2), max (succ u1) (succ u2)} (Equiv.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (α -> M) (MonoidHom.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1))) (α -> M) (fun (_x : α -> M) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : α -> M) => MonoidHom.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1)) _x) (Equiv.instFunLikeEquiv.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (α -> M) (MonoidHom.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1))) (FreeMonoid.lift.{u2, u1} α M _inst_1) f)) (FreeMonoid.of.{u2} α)) f
+ forall {α : Type.{u2}} {M : Type.{u1}} [_inst_1 : Monoid.{u1} M] (f : α -> M), Eq.{max (succ u2) (succ u1)} (α -> M) (Function.comp.{succ u2, succ u2, succ u1} α (FreeMonoid.{u2} α) M (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : α -> M) => MonoidHom.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1)) f) (FreeMonoid.{u2} α) (fun (_x : FreeMonoid.{u2} α) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : FreeMonoid.{u2} α) => M) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : α -> M) => MonoidHom.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1)) f) (FreeMonoid.{u2} α) M (MulOneClass.toMul.{u2} (FreeMonoid.{u2} α) (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α))))) (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M _inst_1)) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : α -> M) => MonoidHom.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1)) f) (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1) (MonoidHom.monoidHomClass.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1)))) (FunLike.coe.{max (succ u1) (succ u2), max (succ u1) (succ u2), max (succ u1) (succ u2)} (Equiv.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (α -> M) (MonoidHom.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1))) (α -> M) (fun (_x : α -> M) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : α -> M) => MonoidHom.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1)) _x) (Equiv.instFunLikeEquiv.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (α -> M) (MonoidHom.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1))) (FreeMonoid.lift.{u2, u1} α M _inst_1) f)) (FreeMonoid.of.{u2} α)) f
Case conversion may be inaccurate. Consider using '#align free_monoid.lift_comp_of FreeMonoid.lift_comp_ofₓ'. -/
@[to_additive]
theorem lift_comp_of (f : α → M) : lift f ∘ of = f :=
@@ -406,7 +406,7 @@ theorem lift_comp_of (f : α → M) : lift f ∘ of = f :=
lean 3 declaration is
forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : Monoid.{u2} M] (f : α -> M) (x : α), Eq.{succ u2} M (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} M _inst_1)) (fun (_x : MonoidHom.{u1, u2} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} M _inst_1)) => (FreeMonoid.{u1} α) -> M) (MonoidHom.hasCoeToFun.{u1, u2} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} M _inst_1)) (coeFn.{max 1 (max (max (succ u1) (succ u2)) (succ u2) (succ u1)) (max (succ u2) (succ u1)) (succ u1) (succ u2), max (max (succ u1) (succ u2)) (succ u2) (succ u1)} (Equiv.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (α -> M) (MonoidHom.{u1, u2} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} M _inst_1))) (fun (_x : Equiv.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (α -> M) (MonoidHom.{u1, u2} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} M _inst_1))) => (α -> M) -> (MonoidHom.{u1, u2} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} M _inst_1))) (Equiv.hasCoeToFun.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (α -> M) (MonoidHom.{u1, u2} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} M _inst_1))) (FreeMonoid.lift.{u1, u2} α M _inst_1) f) (FreeMonoid.of.{u1} α x)) (f x)
but is expected to have type
- forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : Monoid.{u2} M] (f : α -> M) (x : α), Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : FreeMonoid.{u1} α) => M) (FreeMonoid.of.{u1} α x)) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : α -> M) => MonoidHom.{u1, u2} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} M _inst_1)) f) (FreeMonoid.{u1} α) (fun (_x : FreeMonoid.{u1} α) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : FreeMonoid.{u1} α) => M) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : α -> M) => MonoidHom.{u1, u2} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} M _inst_1)) f) (FreeMonoid.{u1} α) M (MulOneClass.toMul.{u1} (FreeMonoid.{u1} α) (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α))))) (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M _inst_1)) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : α -> M) => MonoidHom.{u1, u2} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} M _inst_1)) f) (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} M _inst_1) (MonoidHom.monoidHomClass.{u1, u2} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} M _inst_1)))) (FunLike.coe.{max (succ u2) (succ u1), max (succ u2) (succ u1), max (succ u2) (succ u1)} (Equiv.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (α -> M) (MonoidHom.{u1, u2} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} M _inst_1))) (α -> M) (fun (_x : α -> M) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : α -> M) => MonoidHom.{u1, u2} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} M _inst_1)) _x) (Equiv.instFunLikeEquiv.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (α -> M) (MonoidHom.{u1, u2} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} M _inst_1))) (FreeMonoid.lift.{u1, u2} α M _inst_1) f) (FreeMonoid.of.{u1} α x)) (f x)
+ forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : Monoid.{u2} M] (f : α -> M) (x : α), Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : FreeMonoid.{u1} α) => M) (FreeMonoid.of.{u1} α x)) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : α -> M) => MonoidHom.{u1, u2} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} M _inst_1)) f) (FreeMonoid.{u1} α) (fun (_x : FreeMonoid.{u1} α) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : FreeMonoid.{u1} α) => M) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : α -> M) => MonoidHom.{u1, u2} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} M _inst_1)) f) (FreeMonoid.{u1} α) M (MulOneClass.toMul.{u1} (FreeMonoid.{u1} α) (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α))))) (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M _inst_1)) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : α -> M) => MonoidHom.{u1, u2} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} M _inst_1)) f) (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} M _inst_1) (MonoidHom.monoidHomClass.{u1, u2} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} M _inst_1)))) (FunLike.coe.{max (succ u2) (succ u1), max (succ u2) (succ u1), max (succ u2) (succ u1)} (Equiv.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (α -> M) (MonoidHom.{u1, u2} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} M _inst_1))) (α -> M) (fun (_x : α -> M) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : α -> M) => MonoidHom.{u1, u2} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} M _inst_1)) _x) (Equiv.instFunLikeEquiv.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (α -> M) (MonoidHom.{u1, u2} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} M _inst_1))) (FreeMonoid.lift.{u1, u2} α M _inst_1) f) (FreeMonoid.of.{u1} α x)) (f x)
Case conversion may be inaccurate. Consider using '#align free_monoid.lift_eval_of FreeMonoid.lift_eval_ofₓ'. -/
@[simp, to_additive]
theorem lift_eval_of (f : α → M) (x : α) : lift f (of x) = f x :=
@@ -418,7 +418,7 @@ theorem lift_eval_of (f : α → M) (x : α) : lift f (of x) = f x :=
lean 3 declaration is
forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : Monoid.{u2} M] (f : MonoidHom.{u1, u2} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} M _inst_1)), Eq.{max (succ u2) (succ u1)} (MonoidHom.{u1, u2} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} M _inst_1)) (coeFn.{max 1 (max (max (succ u1) (succ u2)) (succ u2) (succ u1)) (max (succ u2) (succ u1)) (succ u1) (succ u2), max (max (succ u1) (succ u2)) (succ u2) (succ u1)} (Equiv.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (α -> M) (MonoidHom.{u1, u2} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} M _inst_1))) (fun (_x : Equiv.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (α -> M) (MonoidHom.{u1, u2} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} M _inst_1))) => (α -> M) -> (MonoidHom.{u1, u2} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} M _inst_1))) (Equiv.hasCoeToFun.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (α -> M) (MonoidHom.{u1, u2} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} M _inst_1))) (FreeMonoid.lift.{u1, u2} α M _inst_1) (Function.comp.{succ u1, succ u1, succ u2} α (FreeMonoid.{u1} α) M (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} M _inst_1)) (fun (_x : MonoidHom.{u1, u2} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} M _inst_1)) => (FreeMonoid.{u1} α) -> M) (MonoidHom.hasCoeToFun.{u1, u2} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} M _inst_1)) f) (FreeMonoid.of.{u1} α))) f
but is expected to have type
- forall {α : Type.{u2}} {M : Type.{u1}} [_inst_1 : Monoid.{u1} M] (f : MonoidHom.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1)), Eq.{max (succ u2) (succ u1)} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : α -> M) => MonoidHom.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1)) (Function.comp.{succ u2, succ u2, succ u1} α (FreeMonoid.{u2} α) M (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1)) (FreeMonoid.{u2} α) (fun (a : FreeMonoid.{u2} α) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : FreeMonoid.{u2} α) => M) a) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1)) (FreeMonoid.{u2} α) M (MulOneClass.toMul.{u2} (FreeMonoid.{u2} α) (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α))))) (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M _inst_1)) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1)) (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1) (MonoidHom.monoidHomClass.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1)))) f) (FreeMonoid.of.{u2} α))) (FunLike.coe.{max (succ u1) (succ u2), max (succ u1) (succ u2), max (succ u1) (succ u2)} (Equiv.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (α -> M) (MonoidHom.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1))) (α -> M) (fun (_x : α -> M) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : α -> M) => MonoidHom.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1)) _x) (Equiv.instFunLikeEquiv.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (α -> M) (MonoidHom.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1))) (FreeMonoid.lift.{u2, u1} α M _inst_1) (Function.comp.{succ u2, succ u2, succ u1} α (FreeMonoid.{u2} α) M (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1)) (FreeMonoid.{u2} α) (fun (_x : FreeMonoid.{u2} α) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : FreeMonoid.{u2} α) => M) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1)) (FreeMonoid.{u2} α) M (MulOneClass.toMul.{u2} (FreeMonoid.{u2} α) (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α))))) (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M _inst_1)) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1)) (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1) (MonoidHom.monoidHomClass.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1)))) f) (FreeMonoid.of.{u2} α))) f
+ forall {α : Type.{u2}} {M : Type.{u1}} [_inst_1 : Monoid.{u1} M] (f : MonoidHom.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1)), Eq.{max (succ u2) (succ u1)} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : α -> M) => MonoidHom.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1)) (Function.comp.{succ u2, succ u2, succ u1} α (FreeMonoid.{u2} α) M (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1)) (FreeMonoid.{u2} α) (fun (a : FreeMonoid.{u2} α) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : FreeMonoid.{u2} α) => M) a) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1)) (FreeMonoid.{u2} α) M (MulOneClass.toMul.{u2} (FreeMonoid.{u2} α) (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α))))) (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M _inst_1)) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1)) (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1) (MonoidHom.monoidHomClass.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1)))) f) (FreeMonoid.of.{u2} α))) (FunLike.coe.{max (succ u1) (succ u2), max (succ u1) (succ u2), max (succ u1) (succ u2)} (Equiv.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (α -> M) (MonoidHom.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1))) (α -> M) (fun (_x : α -> M) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : α -> M) => MonoidHom.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1)) _x) (Equiv.instFunLikeEquiv.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (α -> M) (MonoidHom.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1))) (FreeMonoid.lift.{u2, u1} α M _inst_1) (Function.comp.{succ u2, succ u2, succ u1} α (FreeMonoid.{u2} α) M (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1)) (FreeMonoid.{u2} α) (fun (_x : FreeMonoid.{u2} α) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : FreeMonoid.{u2} α) => M) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1)) (FreeMonoid.{u2} α) M (MulOneClass.toMul.{u2} (FreeMonoid.{u2} α) (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α))))) (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M _inst_1)) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1)) (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1) (MonoidHom.monoidHomClass.{u2, u1} (FreeMonoid.{u2} α) M (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} M _inst_1)))) f) (FreeMonoid.of.{u2} α))) f
Case conversion may be inaccurate. Consider using '#align free_monoid.lift_restrict FreeMonoid.lift_restrictₓ'. -/
@[simp, to_additive]
theorem lift_restrict (f : FreeMonoid α →* M) : lift (f ∘ of) = f :=
@@ -430,7 +430,7 @@ theorem lift_restrict (f : FreeMonoid α →* M) : lift (f ∘ of) = f :=
lean 3 declaration is
forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : Monoid.{u2} M] {N : Type.{u3}} [_inst_2 : Monoid.{u3} N] (g : MonoidHom.{u2, u3} M N (Monoid.toMulOneClass.{u2} M _inst_1) (Monoid.toMulOneClass.{u3} N _inst_2)) (f : α -> M), Eq.{max (succ u3) (succ u1)} (MonoidHom.{u1, u3} (FreeMonoid.{u1} α) N (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u3} N _inst_2)) (MonoidHom.comp.{u1, u2, u3} (FreeMonoid.{u1} α) M N (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} M _inst_1) (Monoid.toMulOneClass.{u3} N _inst_2) g (coeFn.{max 1 (max (max (succ u1) (succ u2)) (succ u2) (succ u1)) (max (succ u2) (succ u1)) (succ u1) (succ u2), max (max (succ u1) (succ u2)) (succ u2) (succ u1)} (Equiv.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (α -> M) (MonoidHom.{u1, u2} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} M _inst_1))) (fun (_x : Equiv.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (α -> M) (MonoidHom.{u1, u2} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} M _inst_1))) => (α -> M) -> (MonoidHom.{u1, u2} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} M _inst_1))) (Equiv.hasCoeToFun.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (α -> M) (MonoidHom.{u1, u2} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} M _inst_1))) (FreeMonoid.lift.{u1, u2} α M _inst_1) f)) (coeFn.{max 1 (max (max (succ u1) (succ u3)) (succ u3) (succ u1)) (max (succ u3) (succ u1)) (succ u1) (succ u3), max (max (succ u1) (succ u3)) (succ u3) (succ u1)} (Equiv.{max (succ u1) (succ u3), max (succ u3) (succ u1)} (α -> N) (MonoidHom.{u1, u3} (FreeMonoid.{u1} α) N (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u3} N _inst_2))) (fun (_x : Equiv.{max (succ u1) (succ u3), max (succ u3) (succ u1)} (α -> N) (MonoidHom.{u1, u3} (FreeMonoid.{u1} α) N (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u3} N _inst_2))) => (α -> N) -> (MonoidHom.{u1, u3} (FreeMonoid.{u1} α) N (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u3} N _inst_2))) (Equiv.hasCoeToFun.{max (succ u1) (succ u3), max (succ u3) (succ u1)} (α -> N) (MonoidHom.{u1, u3} (FreeMonoid.{u1} α) N (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u3} N _inst_2))) (FreeMonoid.lift.{u1, u3} α N _inst_2) (Function.comp.{succ u1, succ u2, succ u3} α M N (coeFn.{max (succ u3) (succ u2), max (succ u2) (succ u3)} (MonoidHom.{u2, u3} M N (Monoid.toMulOneClass.{u2} M _inst_1) (Monoid.toMulOneClass.{u3} N _inst_2)) (fun (_x : MonoidHom.{u2, u3} M N (Monoid.toMulOneClass.{u2} M _inst_1) (Monoid.toMulOneClass.{u3} N _inst_2)) => M -> N) (MonoidHom.hasCoeToFun.{u2, u3} M N (Monoid.toMulOneClass.{u2} M _inst_1) (Monoid.toMulOneClass.{u3} N _inst_2)) g) f))
but is expected to have type
- forall {α : Type.{u1}} {M : Type.{u3}} [_inst_1 : Monoid.{u3} M] {N : Type.{u2}} [_inst_2 : Monoid.{u2} N] (g : MonoidHom.{u3, u2} M N (Monoid.toMulOneClass.{u3} M _inst_1) (Monoid.toMulOneClass.{u2} N _inst_2)) (f : α -> M), Eq.{max (succ u1) (succ u2)} (MonoidHom.{u1, u2} (FreeMonoid.{u1} α) N (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} N _inst_2)) (MonoidHom.comp.{u1, u3, u2} (FreeMonoid.{u1} α) M N (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α)))) (Monoid.toMulOneClass.{u3} M _inst_1) (Monoid.toMulOneClass.{u2} N _inst_2) g (FunLike.coe.{max (succ u3) (succ u1), max (succ u3) (succ u1), max (succ u3) (succ u1)} (Equiv.{max (succ u1) (succ u3), max (succ u3) (succ u1)} (α -> M) (MonoidHom.{u1, u3} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α)))) (Monoid.toMulOneClass.{u3} M _inst_1))) (α -> M) (fun (_x : α -> M) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : α -> M) => MonoidHom.{u1, u3} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α)))) (Monoid.toMulOneClass.{u3} M _inst_1)) _x) (Equiv.instFunLikeEquiv.{max (succ u3) (succ u1), max (succ u3) (succ u1)} (α -> M) (MonoidHom.{u1, u3} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α)))) (Monoid.toMulOneClass.{u3} M _inst_1))) (FreeMonoid.lift.{u1, u3} α M _inst_1) f)) (FunLike.coe.{max (succ u2) (succ u1), max (succ u2) (succ u1), max (succ u2) (succ u1)} (Equiv.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (α -> N) (MonoidHom.{u1, u2} (FreeMonoid.{u1} α) N (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} N _inst_2))) (α -> N) (fun (_x : α -> N) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : α -> N) => MonoidHom.{u1, u2} (FreeMonoid.{u1} α) N (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} N _inst_2)) _x) (Equiv.instFunLikeEquiv.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (α -> N) (MonoidHom.{u1, u2} (FreeMonoid.{u1} α) N (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} N _inst_2))) (FreeMonoid.lift.{u1, u2} α N _inst_2) (Function.comp.{succ u1, succ u3, succ u2} α M N (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} M N (Monoid.toMulOneClass.{u3} M _inst_1) (Monoid.toMulOneClass.{u2} N _inst_2)) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => N) _x) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M N (Monoid.toMulOneClass.{u3} M _inst_1) (Monoid.toMulOneClass.{u2} N _inst_2)) M N (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M _inst_1)) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N _inst_2)) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M N (Monoid.toMulOneClass.{u3} M _inst_1) (Monoid.toMulOneClass.{u2} N _inst_2)) M N (Monoid.toMulOneClass.{u3} M _inst_1) (Monoid.toMulOneClass.{u2} N _inst_2) (MonoidHom.monoidHomClass.{u3, u2} M N (Monoid.toMulOneClass.{u3} M _inst_1) (Monoid.toMulOneClass.{u2} N _inst_2)))) g) f))
+ forall {α : Type.{u1}} {M : Type.{u3}} [_inst_1 : Monoid.{u3} M] {N : Type.{u2}} [_inst_2 : Monoid.{u2} N] (g : MonoidHom.{u3, u2} M N (Monoid.toMulOneClass.{u3} M _inst_1) (Monoid.toMulOneClass.{u2} N _inst_2)) (f : α -> M), Eq.{max (succ u1) (succ u2)} (MonoidHom.{u1, u2} (FreeMonoid.{u1} α) N (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} N _inst_2)) (MonoidHom.comp.{u1, u3, u2} (FreeMonoid.{u1} α) M N (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α)))) (Monoid.toMulOneClass.{u3} M _inst_1) (Monoid.toMulOneClass.{u2} N _inst_2) g (FunLike.coe.{max (succ u3) (succ u1), max (succ u3) (succ u1), max (succ u3) (succ u1)} (Equiv.{max (succ u1) (succ u3), max (succ u3) (succ u1)} (α -> M) (MonoidHom.{u1, u3} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α)))) (Monoid.toMulOneClass.{u3} M _inst_1))) (α -> M) (fun (_x : α -> M) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : α -> M) => MonoidHom.{u1, u3} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α)))) (Monoid.toMulOneClass.{u3} M _inst_1)) _x) (Equiv.instFunLikeEquiv.{max (succ u3) (succ u1), max (succ u3) (succ u1)} (α -> M) (MonoidHom.{u1, u3} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α)))) (Monoid.toMulOneClass.{u3} M _inst_1))) (FreeMonoid.lift.{u1, u3} α M _inst_1) f)) (FunLike.coe.{max (succ u2) (succ u1), max (succ u2) (succ u1), max (succ u2) (succ u1)} (Equiv.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (α -> N) (MonoidHom.{u1, u2} (FreeMonoid.{u1} α) N (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} N _inst_2))) (α -> N) (fun (_x : α -> N) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : α -> N) => MonoidHom.{u1, u2} (FreeMonoid.{u1} α) N (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} N _inst_2)) _x) (Equiv.instFunLikeEquiv.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (α -> N) (MonoidHom.{u1, u2} (FreeMonoid.{u1} α) N (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} N _inst_2))) (FreeMonoid.lift.{u1, u2} α N _inst_2) (Function.comp.{succ u1, succ u3, succ u2} α M N (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} M N (Monoid.toMulOneClass.{u3} M _inst_1) (Monoid.toMulOneClass.{u2} N _inst_2)) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) _x) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M N (Monoid.toMulOneClass.{u3} M _inst_1) (Monoid.toMulOneClass.{u2} N _inst_2)) M N (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M _inst_1)) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N _inst_2)) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M N (Monoid.toMulOneClass.{u3} M _inst_1) (Monoid.toMulOneClass.{u2} N _inst_2)) M N (Monoid.toMulOneClass.{u3} M _inst_1) (Monoid.toMulOneClass.{u2} N _inst_2) (MonoidHom.monoidHomClass.{u3, u2} M N (Monoid.toMulOneClass.{u3} M _inst_1) (Monoid.toMulOneClass.{u2} N _inst_2)))) g) f))
Case conversion may be inaccurate. Consider using '#align free_monoid.comp_lift FreeMonoid.comp_liftₓ'. -/
@[to_additive]
theorem comp_lift (g : M →* N) (f : α → M) : g.comp (lift f) = lift (g ∘ f) :=
@@ -444,7 +444,7 @@ theorem comp_lift (g : M →* N) (f : α → M) : g.comp (lift f) = lift (g ∘
lean 3 declaration is
forall {α : Type.{u1}} {M : Type.{u2}} [_inst_1 : Monoid.{u2} M] {N : Type.{u3}} [_inst_2 : Monoid.{u3} N] (g : MonoidHom.{u2, u3} M N (Monoid.toMulOneClass.{u2} M _inst_1) (Monoid.toMulOneClass.{u3} N _inst_2)) (f : α -> M) (x : FreeMonoid.{u1} α), Eq.{succ u3} N (coeFn.{max (succ u3) (succ u2), max (succ u2) (succ u3)} (MonoidHom.{u2, u3} M N (Monoid.toMulOneClass.{u2} M _inst_1) (Monoid.toMulOneClass.{u3} N _inst_2)) (fun (_x : MonoidHom.{u2, u3} M N (Monoid.toMulOneClass.{u2} M _inst_1) (Monoid.toMulOneClass.{u3} N _inst_2)) => M -> N) (MonoidHom.hasCoeToFun.{u2, u3} M N (Monoid.toMulOneClass.{u2} M _inst_1) (Monoid.toMulOneClass.{u3} N _inst_2)) g (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} M _inst_1)) (fun (_x : MonoidHom.{u1, u2} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} M _inst_1)) => (FreeMonoid.{u1} α) -> M) (MonoidHom.hasCoeToFun.{u1, u2} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} M _inst_1)) (coeFn.{max 1 (max (max (succ u1) (succ u2)) (succ u2) (succ u1)) (max (succ u2) (succ u1)) (succ u1) (succ u2), max (max (succ u1) (succ u2)) (succ u2) (succ u1)} (Equiv.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (α -> M) (MonoidHom.{u1, u2} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} M _inst_1))) (fun (_x : Equiv.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (α -> M) (MonoidHom.{u1, u2} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} M _inst_1))) => (α -> M) -> (MonoidHom.{u1, u2} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} M _inst_1))) (Equiv.hasCoeToFun.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (α -> M) (MonoidHom.{u1, u2} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} M _inst_1))) (FreeMonoid.lift.{u1, u2} α M _inst_1) f) x)) (coeFn.{max (succ u3) (succ u1), max (succ u1) (succ u3)} (MonoidHom.{u1, u3} (FreeMonoid.{u1} α) N (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u3} N _inst_2)) (fun (_x : MonoidHom.{u1, u3} (FreeMonoid.{u1} α) N (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u3} N _inst_2)) => (FreeMonoid.{u1} α) -> N) (MonoidHom.hasCoeToFun.{u1, u3} (FreeMonoid.{u1} α) N (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u3} N _inst_2)) (coeFn.{max 1 (max (max (succ u1) (succ u3)) (succ u3) (succ u1)) (max (succ u3) (succ u1)) (succ u1) (succ u3), max (max (succ u1) (succ u3)) (succ u3) (succ u1)} (Equiv.{max (succ u1) (succ u3), max (succ u3) (succ u1)} (α -> N) (MonoidHom.{u1, u3} (FreeMonoid.{u1} α) N (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u3} N _inst_2))) (fun (_x : Equiv.{max (succ u1) (succ u3), max (succ u3) (succ u1)} (α -> N) (MonoidHom.{u1, u3} (FreeMonoid.{u1} α) N (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u3} N _inst_2))) => (α -> N) -> (MonoidHom.{u1, u3} (FreeMonoid.{u1} α) N (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u3} N _inst_2))) (Equiv.hasCoeToFun.{max (succ u1) (succ u3), max (succ u3) (succ u1)} (α -> N) (MonoidHom.{u1, u3} (FreeMonoid.{u1} α) N (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u3} N _inst_2))) (FreeMonoid.lift.{u1, u3} α N _inst_2) (Function.comp.{succ u1, succ u2, succ u3} α M N (coeFn.{max (succ u3) (succ u2), max (succ u2) (succ u3)} (MonoidHom.{u2, u3} M N (Monoid.toMulOneClass.{u2} M _inst_1) (Monoid.toMulOneClass.{u3} N _inst_2)) (fun (_x : MonoidHom.{u2, u3} M N (Monoid.toMulOneClass.{u2} M _inst_1) (Monoid.toMulOneClass.{u3} N _inst_2)) => M -> N) (MonoidHom.hasCoeToFun.{u2, u3} M N (Monoid.toMulOneClass.{u2} M _inst_1) (Monoid.toMulOneClass.{u3} N _inst_2)) g) f)) x)
but is expected to have type
- forall {α : Type.{u1}} {M : Type.{u3}} [_inst_1 : Monoid.{u3} M] {N : Type.{u2}} [_inst_2 : Monoid.{u2} N] (g : MonoidHom.{u3, u2} M N (Monoid.toMulOneClass.{u3} M _inst_1) (Monoid.toMulOneClass.{u2} N _inst_2)) (f : α -> M) (x : FreeMonoid.{u1} α), Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => N) (FunLike.coe.{max (succ u1) (succ u3), succ u1, succ u3} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : α -> M) => MonoidHom.{u1, u3} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α)))) (Monoid.toMulOneClass.{u3} M _inst_1)) f) (FreeMonoid.{u1} α) (fun (a : FreeMonoid.{u1} α) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : FreeMonoid.{u1} α) => M) a) (MulHomClass.toFunLike.{max u1 u3, u1, u3} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : α -> M) => MonoidHom.{u1, u3} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α)))) (Monoid.toMulOneClass.{u3} M _inst_1)) f) (FreeMonoid.{u1} α) M (MulOneClass.toMul.{u1} (FreeMonoid.{u1} α) (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α))))) (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M _inst_1)) (MonoidHomClass.toMulHomClass.{max u1 u3, u1, u3} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : α -> M) => MonoidHom.{u1, u3} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α)))) (Monoid.toMulOneClass.{u3} M _inst_1)) f) (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α)))) (Monoid.toMulOneClass.{u3} M _inst_1) (MonoidHom.monoidHomClass.{u1, u3} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α)))) (Monoid.toMulOneClass.{u3} M _inst_1)))) (FunLike.coe.{max (succ u3) (succ u1), max (succ u3) (succ u1), max (succ u3) (succ u1)} (Equiv.{max (succ u1) (succ u3), max (succ u3) (succ u1)} (α -> M) (MonoidHom.{u1, u3} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α)))) (Monoid.toMulOneClass.{u3} M _inst_1))) (α -> M) (fun (a : α -> M) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : α -> M) => MonoidHom.{u1, u3} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α)))) (Monoid.toMulOneClass.{u3} M _inst_1)) a) (Equiv.instFunLikeEquiv.{max (succ u3) (succ u1), max (succ u3) (succ u1)} (α -> M) (MonoidHom.{u1, u3} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α)))) (Monoid.toMulOneClass.{u3} M _inst_1))) (FreeMonoid.lift.{u1, u3} α M _inst_1) f) x)) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} M N (Monoid.toMulOneClass.{u3} M _inst_1) (Monoid.toMulOneClass.{u2} N _inst_2)) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => N) _x) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M N (Monoid.toMulOneClass.{u3} M _inst_1) (Monoid.toMulOneClass.{u2} N _inst_2)) M N (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M _inst_1)) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N _inst_2)) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M N (Monoid.toMulOneClass.{u3} M _inst_1) (Monoid.toMulOneClass.{u2} N _inst_2)) M N (Monoid.toMulOneClass.{u3} M _inst_1) (Monoid.toMulOneClass.{u2} N _inst_2) (MonoidHom.monoidHomClass.{u3, u2} M N (Monoid.toMulOneClass.{u3} M _inst_1) (Monoid.toMulOneClass.{u2} N _inst_2)))) g (FunLike.coe.{max (succ u1) (succ u3), succ u1, succ u3} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : α -> M) => MonoidHom.{u1, u3} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α)))) (Monoid.toMulOneClass.{u3} M _inst_1)) f) (FreeMonoid.{u1} α) (fun (_x : FreeMonoid.{u1} α) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : FreeMonoid.{u1} α) => M) _x) (MulHomClass.toFunLike.{max u1 u3, u1, u3} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : α -> M) => MonoidHom.{u1, u3} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α)))) (Monoid.toMulOneClass.{u3} M _inst_1)) f) (FreeMonoid.{u1} α) M (MulOneClass.toMul.{u1} (FreeMonoid.{u1} α) (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α))))) (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M _inst_1)) (MonoidHomClass.toMulHomClass.{max u1 u3, u1, u3} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : α -> M) => MonoidHom.{u1, u3} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α)))) (Monoid.toMulOneClass.{u3} M _inst_1)) f) (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α)))) (Monoid.toMulOneClass.{u3} M _inst_1) (MonoidHom.monoidHomClass.{u1, u3} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α)))) (Monoid.toMulOneClass.{u3} M _inst_1)))) (FunLike.coe.{max (succ u3) (succ u1), max (succ u3) (succ u1), max (succ u3) (succ u1)} (Equiv.{max (succ u1) (succ u3), max (succ u3) (succ u1)} (α -> M) (MonoidHom.{u1, u3} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α)))) (Monoid.toMulOneClass.{u3} M _inst_1))) (α -> M) (fun (_x : α -> M) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : α -> M) => MonoidHom.{u1, u3} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α)))) (Monoid.toMulOneClass.{u3} M _inst_1)) _x) (Equiv.instFunLikeEquiv.{max (succ u3) (succ u1), max (succ u3) (succ u1)} (α -> M) (MonoidHom.{u1, u3} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α)))) (Monoid.toMulOneClass.{u3} M _inst_1))) (FreeMonoid.lift.{u1, u3} α M _inst_1) f) x)) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : α -> N) => MonoidHom.{u1, u2} (FreeMonoid.{u1} α) N (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} N _inst_2)) (Function.comp.{succ u1, succ u3, succ u2} α M N (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} M N (Monoid.toMulOneClass.{u3} M _inst_1) (Monoid.toMulOneClass.{u2} N _inst_2)) M (fun (a : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => N) a) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M N (Monoid.toMulOneClass.{u3} M _inst_1) (Monoid.toMulOneClass.{u2} N _inst_2)) M N (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M _inst_1)) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N _inst_2)) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M N (Monoid.toMulOneClass.{u3} M _inst_1) (Monoid.toMulOneClass.{u2} N _inst_2)) M N (Monoid.toMulOneClass.{u3} M _inst_1) (Monoid.toMulOneClass.{u2} N _inst_2) (MonoidHom.monoidHomClass.{u3, u2} M N (Monoid.toMulOneClass.{u3} M _inst_1) (Monoid.toMulOneClass.{u2} N _inst_2)))) g) f)) (FreeMonoid.{u1} α) (fun (_x : FreeMonoid.{u1} α) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : FreeMonoid.{u1} α) => N) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : α -> N) => MonoidHom.{u1, u2} (FreeMonoid.{u1} α) N (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} N _inst_2)) (Function.comp.{succ u1, succ u3, succ u2} α M N (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} M N (Monoid.toMulOneClass.{u3} M _inst_1) (Monoid.toMulOneClass.{u2} N _inst_2)) M (fun (a : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => N) a) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M N (Monoid.toMulOneClass.{u3} M _inst_1) (Monoid.toMulOneClass.{u2} N _inst_2)) M N (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M _inst_1)) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N _inst_2)) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M N (Monoid.toMulOneClass.{u3} M _inst_1) (Monoid.toMulOneClass.{u2} N _inst_2)) M N (Monoid.toMulOneClass.{u3} M _inst_1) (Monoid.toMulOneClass.{u2} N _inst_2) (MonoidHom.monoidHomClass.{u3, u2} M N (Monoid.toMulOneClass.{u3} M _inst_1) (Monoid.toMulOneClass.{u2} N _inst_2)))) g) f)) (FreeMonoid.{u1} α) N (MulOneClass.toMul.{u1} (FreeMonoid.{u1} α) (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α))))) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N _inst_2)) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : α -> N) => MonoidHom.{u1, u2} (FreeMonoid.{u1} α) N (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} N _inst_2)) (Function.comp.{succ u1, succ u3, succ u2} α M N (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} M N (Monoid.toMulOneClass.{u3} M _inst_1) (Monoid.toMulOneClass.{u2} N _inst_2)) M (fun (a : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => N) a) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M N (Monoid.toMulOneClass.{u3} M _inst_1) (Monoid.toMulOneClass.{u2} N _inst_2)) M N (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M _inst_1)) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N _inst_2)) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M N (Monoid.toMulOneClass.{u3} M _inst_1) (Monoid.toMulOneClass.{u2} N _inst_2)) M N (Monoid.toMulOneClass.{u3} M _inst_1) (Monoid.toMulOneClass.{u2} N _inst_2) (MonoidHom.monoidHomClass.{u3, u2} M N (Monoid.toMulOneClass.{u3} M _inst_1) (Monoid.toMulOneClass.{u2} N _inst_2)))) g) f)) (FreeMonoid.{u1} α) N (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} N _inst_2) (MonoidHom.monoidHomClass.{u1, u2} (FreeMonoid.{u1} α) N (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} N _inst_2)))) (FunLike.coe.{max (succ u2) (succ u1), max (succ u2) (succ u1), max (succ u2) (succ u1)} (Equiv.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (α -> N) (MonoidHom.{u1, u2} (FreeMonoid.{u1} α) N (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} N _inst_2))) (α -> N) (fun (_x : α -> N) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : α -> N) => MonoidHom.{u1, u2} (FreeMonoid.{u1} α) N (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} N _inst_2)) _x) (Equiv.instFunLikeEquiv.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (α -> N) (MonoidHom.{u1, u2} (FreeMonoid.{u1} α) N (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} N _inst_2))) (FreeMonoid.lift.{u1, u2} α N _inst_2) (Function.comp.{succ u1, succ u3, succ u2} α M N (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} M N (Monoid.toMulOneClass.{u3} M _inst_1) (Monoid.toMulOneClass.{u2} N _inst_2)) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => N) _x) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M N (Monoid.toMulOneClass.{u3} M _inst_1) (Monoid.toMulOneClass.{u2} N _inst_2)) M N (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M _inst_1)) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N _inst_2)) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M N (Monoid.toMulOneClass.{u3} M _inst_1) (Monoid.toMulOneClass.{u2} N _inst_2)) M N (Monoid.toMulOneClass.{u3} M _inst_1) (Monoid.toMulOneClass.{u2} N _inst_2) (MonoidHom.monoidHomClass.{u3, u2} M N (Monoid.toMulOneClass.{u3} M _inst_1) (Monoid.toMulOneClass.{u2} N _inst_2)))) g) f)) x)
+ forall {α : Type.{u1}} {M : Type.{u3}} [_inst_1 : Monoid.{u3} M] {N : Type.{u2}} [_inst_2 : Monoid.{u2} N] (g : MonoidHom.{u3, u2} M N (Monoid.toMulOneClass.{u3} M _inst_1) (Monoid.toMulOneClass.{u2} N _inst_2)) (f : α -> M) (x : FreeMonoid.{u1} α), Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) (FunLike.coe.{max (succ u1) (succ u3), succ u1, succ u3} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : α -> M) => MonoidHom.{u1, u3} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α)))) (Monoid.toMulOneClass.{u3} M _inst_1)) f) (FreeMonoid.{u1} α) (fun (a : FreeMonoid.{u1} α) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : FreeMonoid.{u1} α) => M) a) (MulHomClass.toFunLike.{max u1 u3, u1, u3} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : α -> M) => MonoidHom.{u1, u3} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α)))) (Monoid.toMulOneClass.{u3} M _inst_1)) f) (FreeMonoid.{u1} α) M (MulOneClass.toMul.{u1} (FreeMonoid.{u1} α) (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α))))) (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M _inst_1)) (MonoidHomClass.toMulHomClass.{max u1 u3, u1, u3} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : α -> M) => MonoidHom.{u1, u3} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α)))) (Monoid.toMulOneClass.{u3} M _inst_1)) f) (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α)))) (Monoid.toMulOneClass.{u3} M _inst_1) (MonoidHom.monoidHomClass.{u1, u3} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α)))) (Monoid.toMulOneClass.{u3} M _inst_1)))) (FunLike.coe.{max (succ u3) (succ u1), max (succ u3) (succ u1), max (succ u3) (succ u1)} (Equiv.{max (succ u1) (succ u3), max (succ u3) (succ u1)} (α -> M) (MonoidHom.{u1, u3} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α)))) (Monoid.toMulOneClass.{u3} M _inst_1))) (α -> M) (fun (a : α -> M) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : α -> M) => MonoidHom.{u1, u3} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α)))) (Monoid.toMulOneClass.{u3} M _inst_1)) a) (Equiv.instFunLikeEquiv.{max (succ u3) (succ u1), max (succ u3) (succ u1)} (α -> M) (MonoidHom.{u1, u3} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α)))) (Monoid.toMulOneClass.{u3} M _inst_1))) (FreeMonoid.lift.{u1, u3} α M _inst_1) f) x)) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} M N (Monoid.toMulOneClass.{u3} M _inst_1) (Monoid.toMulOneClass.{u2} N _inst_2)) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) _x) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M N (Monoid.toMulOneClass.{u3} M _inst_1) (Monoid.toMulOneClass.{u2} N _inst_2)) M N (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M _inst_1)) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N _inst_2)) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M N (Monoid.toMulOneClass.{u3} M _inst_1) (Monoid.toMulOneClass.{u2} N _inst_2)) M N (Monoid.toMulOneClass.{u3} M _inst_1) (Monoid.toMulOneClass.{u2} N _inst_2) (MonoidHom.monoidHomClass.{u3, u2} M N (Monoid.toMulOneClass.{u3} M _inst_1) (Monoid.toMulOneClass.{u2} N _inst_2)))) g (FunLike.coe.{max (succ u1) (succ u3), succ u1, succ u3} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : α -> M) => MonoidHom.{u1, u3} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α)))) (Monoid.toMulOneClass.{u3} M _inst_1)) f) (FreeMonoid.{u1} α) (fun (_x : FreeMonoid.{u1} α) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : FreeMonoid.{u1} α) => M) _x) (MulHomClass.toFunLike.{max u1 u3, u1, u3} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : α -> M) => MonoidHom.{u1, u3} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α)))) (Monoid.toMulOneClass.{u3} M _inst_1)) f) (FreeMonoid.{u1} α) M (MulOneClass.toMul.{u1} (FreeMonoid.{u1} α) (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α))))) (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M _inst_1)) (MonoidHomClass.toMulHomClass.{max u1 u3, u1, u3} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : α -> M) => MonoidHom.{u1, u3} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α)))) (Monoid.toMulOneClass.{u3} M _inst_1)) f) (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α)))) (Monoid.toMulOneClass.{u3} M _inst_1) (MonoidHom.monoidHomClass.{u1, u3} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α)))) (Monoid.toMulOneClass.{u3} M _inst_1)))) (FunLike.coe.{max (succ u3) (succ u1), max (succ u3) (succ u1), max (succ u3) (succ u1)} (Equiv.{max (succ u1) (succ u3), max (succ u3) (succ u1)} (α -> M) (MonoidHom.{u1, u3} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α)))) (Monoid.toMulOneClass.{u3} M _inst_1))) (α -> M) (fun (_x : α -> M) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : α -> M) => MonoidHom.{u1, u3} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α)))) (Monoid.toMulOneClass.{u3} M _inst_1)) _x) (Equiv.instFunLikeEquiv.{max (succ u3) (succ u1), max (succ u3) (succ u1)} (α -> M) (MonoidHom.{u1, u3} (FreeMonoid.{u1} α) M (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α)))) (Monoid.toMulOneClass.{u3} M _inst_1))) (FreeMonoid.lift.{u1, u3} α M _inst_1) f) x)) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : α -> N) => MonoidHom.{u1, u2} (FreeMonoid.{u1} α) N (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} N _inst_2)) (Function.comp.{succ u1, succ u3, succ u2} α M N (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} M N (Monoid.toMulOneClass.{u3} M _inst_1) (Monoid.toMulOneClass.{u2} N _inst_2)) M (fun (a : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) a) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M N (Monoid.toMulOneClass.{u3} M _inst_1) (Monoid.toMulOneClass.{u2} N _inst_2)) M N (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M _inst_1)) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N _inst_2)) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M N (Monoid.toMulOneClass.{u3} M _inst_1) (Monoid.toMulOneClass.{u2} N _inst_2)) M N (Monoid.toMulOneClass.{u3} M _inst_1) (Monoid.toMulOneClass.{u2} N _inst_2) (MonoidHom.monoidHomClass.{u3, u2} M N (Monoid.toMulOneClass.{u3} M _inst_1) (Monoid.toMulOneClass.{u2} N _inst_2)))) g) f)) (FreeMonoid.{u1} α) (fun (_x : FreeMonoid.{u1} α) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : FreeMonoid.{u1} α) => N) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : α -> N) => MonoidHom.{u1, u2} (FreeMonoid.{u1} α) N (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} N _inst_2)) (Function.comp.{succ u1, succ u3, succ u2} α M N (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} M N (Monoid.toMulOneClass.{u3} M _inst_1) (Monoid.toMulOneClass.{u2} N _inst_2)) M (fun (a : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) a) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M N (Monoid.toMulOneClass.{u3} M _inst_1) (Monoid.toMulOneClass.{u2} N _inst_2)) M N (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M _inst_1)) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N _inst_2)) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M N (Monoid.toMulOneClass.{u3} M _inst_1) (Monoid.toMulOneClass.{u2} N _inst_2)) M N (Monoid.toMulOneClass.{u3} M _inst_1) (Monoid.toMulOneClass.{u2} N _inst_2) (MonoidHom.monoidHomClass.{u3, u2} M N (Monoid.toMulOneClass.{u3} M _inst_1) (Monoid.toMulOneClass.{u2} N _inst_2)))) g) f)) (FreeMonoid.{u1} α) N (MulOneClass.toMul.{u1} (FreeMonoid.{u1} α) (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α))))) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N _inst_2)) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : α -> N) => MonoidHom.{u1, u2} (FreeMonoid.{u1} α) N (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} N _inst_2)) (Function.comp.{succ u1, succ u3, succ u2} α M N (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} M N (Monoid.toMulOneClass.{u3} M _inst_1) (Monoid.toMulOneClass.{u2} N _inst_2)) M (fun (a : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) a) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M N (Monoid.toMulOneClass.{u3} M _inst_1) (Monoid.toMulOneClass.{u2} N _inst_2)) M N (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M _inst_1)) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N _inst_2)) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M N (Monoid.toMulOneClass.{u3} M _inst_1) (Monoid.toMulOneClass.{u2} N _inst_2)) M N (Monoid.toMulOneClass.{u3} M _inst_1) (Monoid.toMulOneClass.{u2} N _inst_2) (MonoidHom.monoidHomClass.{u3, u2} M N (Monoid.toMulOneClass.{u3} M _inst_1) (Monoid.toMulOneClass.{u2} N _inst_2)))) g) f)) (FreeMonoid.{u1} α) N (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} N _inst_2) (MonoidHom.monoidHomClass.{u1, u2} (FreeMonoid.{u1} α) N (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} N _inst_2)))) (FunLike.coe.{max (succ u2) (succ u1), max (succ u2) (succ u1), max (succ u2) (succ u1)} (Equiv.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (α -> N) (MonoidHom.{u1, u2} (FreeMonoid.{u1} α) N (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} N _inst_2))) (α -> N) (fun (_x : α -> N) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : α -> N) => MonoidHom.{u1, u2} (FreeMonoid.{u1} α) N (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} N _inst_2)) _x) (Equiv.instFunLikeEquiv.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (α -> N) (MonoidHom.{u1, u2} (FreeMonoid.{u1} α) N (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} N _inst_2))) (FreeMonoid.lift.{u1, u2} α N _inst_2) (Function.comp.{succ u1, succ u3, succ u2} α M N (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} M N (Monoid.toMulOneClass.{u3} M _inst_1) (Monoid.toMulOneClass.{u2} N _inst_2)) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) _x) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M N (Monoid.toMulOneClass.{u3} M _inst_1) (Monoid.toMulOneClass.{u2} N _inst_2)) M N (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M _inst_1)) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N _inst_2)) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M N (Monoid.toMulOneClass.{u3} M _inst_1) (Monoid.toMulOneClass.{u2} N _inst_2)) M N (Monoid.toMulOneClass.{u3} M _inst_1) (Monoid.toMulOneClass.{u2} N _inst_2) (MonoidHom.monoidHomClass.{u3, u2} M N (Monoid.toMulOneClass.{u3} M _inst_1) (Monoid.toMulOneClass.{u2} N _inst_2)))) g) f)) x)
Case conversion may be inaccurate. Consider using '#align free_monoid.hom_map_lift FreeMonoid.hom_map_liftₓ'. -/
@[to_additive]
theorem hom_map_lift (g : M →* N) (f : α → M) (x : FreeMonoid α) : g (lift f x) = lift (g ∘ f) x :=
@@ -529,7 +529,7 @@ def map (f : α → β) : FreeMonoid α →* FreeMonoid β
lean 3 declaration is
forall {α : Type.{u1}} {β : Type.{u2}} (f : α -> β) (x : α), Eq.{succ u2} (FreeMonoid.{u2} β) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} (FreeMonoid.{u1} α) (FreeMonoid.{u2} β) (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} β) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} β) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} β) (FreeMonoid.cancelMonoid.{u2} β))))) (fun (_x : MonoidHom.{u1, u2} (FreeMonoid.{u1} α) (FreeMonoid.{u2} β) (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} β) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} β) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} β) (FreeMonoid.cancelMonoid.{u2} β))))) => (FreeMonoid.{u1} α) -> (FreeMonoid.{u2} β)) (MonoidHom.hasCoeToFun.{u1, u2} (FreeMonoid.{u1} α) (FreeMonoid.{u2} β) (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} β) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} β) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} β) (FreeMonoid.cancelMonoid.{u2} β))))) (FreeMonoid.map.{u1, u2} α β f) (FreeMonoid.of.{u1} α x)) (FreeMonoid.of.{u2} β (f x))
but is expected to have type
- forall {α : Type.{u1}} {β : Type.{u2}} (f : α -> β) (x : α), Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : FreeMonoid.{u1} α) => FreeMonoid.{u2} β) (FreeMonoid.of.{u1} α x)) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} (FreeMonoid.{u1} α) (FreeMonoid.{u2} β) (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} β) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} β) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} β) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} β))))) (FreeMonoid.{u1} α) (fun (_x : FreeMonoid.{u1} α) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : FreeMonoid.{u1} α) => FreeMonoid.{u2} β) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} (FreeMonoid.{u1} α) (FreeMonoid.{u2} β) (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} β) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} β) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} β) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} β))))) (FreeMonoid.{u1} α) (FreeMonoid.{u2} β) (MulOneClass.toMul.{u1} (FreeMonoid.{u1} α) (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α))))) (MulOneClass.toMul.{u2} (FreeMonoid.{u2} β) (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} β) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} β) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} β) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} β))))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} (FreeMonoid.{u1} α) (FreeMonoid.{u2} β) (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} β) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} β) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} β) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} β))))) (FreeMonoid.{u1} α) (FreeMonoid.{u2} β) (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} β) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} β) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} β) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} β)))) (MonoidHom.monoidHomClass.{u1, u2} (FreeMonoid.{u1} α) (FreeMonoid.{u2} β) (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} β) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} β) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} β) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} β))))))) (FreeMonoid.map.{u1, u2} α β f) (FreeMonoid.of.{u1} α x)) (FreeMonoid.of.{u2} β (f x))
+ forall {α : Type.{u1}} {β : Type.{u2}} (f : α -> β) (x : α), Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : FreeMonoid.{u1} α) => FreeMonoid.{u2} β) (FreeMonoid.of.{u1} α x)) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} (FreeMonoid.{u1} α) (FreeMonoid.{u2} β) (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} β) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} β) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} β) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} β))))) (FreeMonoid.{u1} α) (fun (_x : FreeMonoid.{u1} α) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : FreeMonoid.{u1} α) => FreeMonoid.{u2} β) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} (FreeMonoid.{u1} α) (FreeMonoid.{u2} β) (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} β) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} β) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} β) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} β))))) (FreeMonoid.{u1} α) (FreeMonoid.{u2} β) (MulOneClass.toMul.{u1} (FreeMonoid.{u1} α) (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α))))) (MulOneClass.toMul.{u2} (FreeMonoid.{u2} β) (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} β) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} β) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} β) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} β))))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} (FreeMonoid.{u1} α) (FreeMonoid.{u2} β) (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} β) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} β) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} β) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} β))))) (FreeMonoid.{u1} α) (FreeMonoid.{u2} β) (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} β) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} β) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} β) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} β)))) (MonoidHom.monoidHomClass.{u1, u2} (FreeMonoid.{u1} α) (FreeMonoid.{u2} β) (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} β) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} β) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} β) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} β))))))) (FreeMonoid.map.{u1, u2} α β f) (FreeMonoid.of.{u1} α x)) (FreeMonoid.of.{u2} β (f x))
Case conversion may be inaccurate. Consider using '#align free_monoid.map_of FreeMonoid.map_ofₓ'. -/
@[simp, to_additive]
theorem map_of (f : α → β) (x : α) : map f (of x) = of (f x) :=
@@ -541,7 +541,7 @@ theorem map_of (f : α → β) (x : α) : map f (of x) = of (f x) :=
lean 3 declaration is
forall {α : Type.{u1}} {β : Type.{u2}} (f : α -> β) (xs : FreeMonoid.{u1} α), Eq.{succ u2} (List.{u2} β) (coeFn.{succ u2, succ u2} (Equiv.{succ u2, succ u2} (FreeMonoid.{u2} β) (List.{u2} β)) (fun (_x : Equiv.{succ u2, succ u2} (FreeMonoid.{u2} β) (List.{u2} β)) => (FreeMonoid.{u2} β) -> (List.{u2} β)) (Equiv.hasCoeToFun.{succ u2, succ u2} (FreeMonoid.{u2} β) (List.{u2} β)) (FreeMonoid.toList.{u2} β) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} (FreeMonoid.{u1} α) (FreeMonoid.{u2} β) (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} β) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} β) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} β) (FreeMonoid.cancelMonoid.{u2} β))))) (fun (_x : MonoidHom.{u1, u2} (FreeMonoid.{u1} α) (FreeMonoid.{u2} β) (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} β) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} β) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} β) (FreeMonoid.cancelMonoid.{u2} β))))) => (FreeMonoid.{u1} α) -> (FreeMonoid.{u2} β)) (MonoidHom.hasCoeToFun.{u1, u2} (FreeMonoid.{u1} α) (FreeMonoid.{u2} β) (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} β) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} β) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} β) (FreeMonoid.cancelMonoid.{u2} β))))) (FreeMonoid.map.{u1, u2} α β f) xs)) (List.map.{u1, u2} α β f (coeFn.{succ u1, succ u1} (Equiv.{succ u1, succ u1} (FreeMonoid.{u1} α) (List.{u1} α)) (fun (_x : Equiv.{succ u1, succ u1} (FreeMonoid.{u1} α) (List.{u1} α)) => (FreeMonoid.{u1} α) -> (List.{u1} α)) (Equiv.hasCoeToFun.{succ u1, succ u1} (FreeMonoid.{u1} α) (List.{u1} α)) (FreeMonoid.toList.{u1} α) xs))
but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u1}} (f : α -> β) (xs : FreeMonoid.{u2} α), Eq.{succ u1} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : FreeMonoid.{u1} β) => List.{u1} β) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} (FreeMonoid.{u2} α) (FreeMonoid.{u1} β) (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} β) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} β) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} β) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} β))))) (FreeMonoid.{u2} α) (fun (a : FreeMonoid.{u2} α) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : FreeMonoid.{u2} α) => FreeMonoid.{u1} β) a) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (FreeMonoid.{u2} α) (FreeMonoid.{u1} β) (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} β) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} β) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} β) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} β))))) (FreeMonoid.{u2} α) (FreeMonoid.{u1} β) (MulOneClass.toMul.{u2} (FreeMonoid.{u2} α) (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α))))) (MulOneClass.toMul.{u1} (FreeMonoid.{u1} β) (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} β) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} β) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} β) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} β))))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (FreeMonoid.{u2} α) (FreeMonoid.{u1} β) (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} β) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} β) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} β) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} β))))) (FreeMonoid.{u2} α) (FreeMonoid.{u1} β) (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} β) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} β) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} β) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} β)))) (MonoidHom.monoidHomClass.{u2, u1} (FreeMonoid.{u2} α) (FreeMonoid.{u1} β) (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} β) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} β) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} β) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} β))))))) (FreeMonoid.map.{u2, u1} α β f) xs)) (FunLike.coe.{succ u1, succ u1, succ u1} (Equiv.{succ u1, succ u1} (FreeMonoid.{u1} β) (List.{u1} β)) (FreeMonoid.{u1} β) (fun (_x : FreeMonoid.{u1} β) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : FreeMonoid.{u1} β) => List.{u1} β) _x) (Equiv.instFunLikeEquiv.{succ u1, succ u1} (FreeMonoid.{u1} β) (List.{u1} β)) (FreeMonoid.toList.{u1} β) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} (FreeMonoid.{u2} α) (FreeMonoid.{u1} β) (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} β) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} β) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} β) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} β))))) (FreeMonoid.{u2} α) (fun (_x : FreeMonoid.{u2} α) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : FreeMonoid.{u2} α) => FreeMonoid.{u1} β) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (FreeMonoid.{u2} α) (FreeMonoid.{u1} β) (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} β) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} β) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} β) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} β))))) (FreeMonoid.{u2} α) (FreeMonoid.{u1} β) (MulOneClass.toMul.{u2} (FreeMonoid.{u2} α) (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α))))) (MulOneClass.toMul.{u1} (FreeMonoid.{u1} β) (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} β) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} β) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} β) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} β))))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (FreeMonoid.{u2} α) (FreeMonoid.{u1} β) (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} β) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} β) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} β) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} β))))) (FreeMonoid.{u2} α) (FreeMonoid.{u1} β) (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} β) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} β) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} β) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} β)))) (MonoidHom.monoidHomClass.{u2, u1} (FreeMonoid.{u2} α) (FreeMonoid.{u1} β) (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} β) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} β) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} β) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} β))))))) (FreeMonoid.map.{u2, u1} α β f) xs)) (List.map.{u2, u1} α β f (FunLike.coe.{succ u2, succ u2, succ u2} (Equiv.{succ u2, succ u2} (FreeMonoid.{u2} α) (List.{u2} α)) (FreeMonoid.{u2} α) (fun (_x : FreeMonoid.{u2} α) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : FreeMonoid.{u2} α) => List.{u2} α) _x) (Equiv.instFunLikeEquiv.{succ u2, succ u2} (FreeMonoid.{u2} α) (List.{u2} α)) (FreeMonoid.toList.{u2} α) xs))
+ forall {α : Type.{u2}} {β : Type.{u1}} (f : α -> β) (xs : FreeMonoid.{u2} α), Eq.{succ u1} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : FreeMonoid.{u1} β) => List.{u1} β) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} (FreeMonoid.{u2} α) (FreeMonoid.{u1} β) (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} β) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} β) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} β) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} β))))) (FreeMonoid.{u2} α) (fun (a : FreeMonoid.{u2} α) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : FreeMonoid.{u2} α) => FreeMonoid.{u1} β) a) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (FreeMonoid.{u2} α) (FreeMonoid.{u1} β) (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} β) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} β) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} β) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} β))))) (FreeMonoid.{u2} α) (FreeMonoid.{u1} β) (MulOneClass.toMul.{u2} (FreeMonoid.{u2} α) (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α))))) (MulOneClass.toMul.{u1} (FreeMonoid.{u1} β) (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} β) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} β) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} β) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} β))))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (FreeMonoid.{u2} α) (FreeMonoid.{u1} β) (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} β) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} β) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} β) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} β))))) (FreeMonoid.{u2} α) (FreeMonoid.{u1} β) (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} β) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} β) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} β) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} β)))) (MonoidHom.monoidHomClass.{u2, u1} (FreeMonoid.{u2} α) (FreeMonoid.{u1} β) (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} β) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} β) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} β) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} β))))))) (FreeMonoid.map.{u2, u1} α β f) xs)) (FunLike.coe.{succ u1, succ u1, succ u1} (Equiv.{succ u1, succ u1} (FreeMonoid.{u1} β) (List.{u1} β)) (FreeMonoid.{u1} β) (fun (_x : FreeMonoid.{u1} β) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : FreeMonoid.{u1} β) => List.{u1} β) _x) (Equiv.instFunLikeEquiv.{succ u1, succ u1} (FreeMonoid.{u1} β) (List.{u1} β)) (FreeMonoid.toList.{u1} β) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} (FreeMonoid.{u2} α) (FreeMonoid.{u1} β) (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} β) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} β) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} β) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} β))))) (FreeMonoid.{u2} α) (fun (_x : FreeMonoid.{u2} α) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : FreeMonoid.{u2} α) => FreeMonoid.{u1} β) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (FreeMonoid.{u2} α) (FreeMonoid.{u1} β) (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} β) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} β) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} β) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} β))))) (FreeMonoid.{u2} α) (FreeMonoid.{u1} β) (MulOneClass.toMul.{u2} (FreeMonoid.{u2} α) (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α))))) (MulOneClass.toMul.{u1} (FreeMonoid.{u1} β) (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} β) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} β) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} β) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} β))))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (FreeMonoid.{u2} α) (FreeMonoid.{u1} β) (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} β) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} β) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} β) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} β))))) (FreeMonoid.{u2} α) (FreeMonoid.{u1} β) (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} β) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} β) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} β) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} β)))) (MonoidHom.monoidHomClass.{u2, u1} (FreeMonoid.{u2} α) (FreeMonoid.{u1} β) (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} β) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} β) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} β) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} β))))))) (FreeMonoid.map.{u2, u1} α β f) xs)) (List.map.{u2, u1} α β f (FunLike.coe.{succ u2, succ u2, succ u2} (Equiv.{succ u2, succ u2} (FreeMonoid.{u2} α) (List.{u2} α)) (FreeMonoid.{u2} α) (fun (_x : FreeMonoid.{u2} α) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : FreeMonoid.{u2} α) => List.{u2} α) _x) (Equiv.instFunLikeEquiv.{succ u2, succ u2} (FreeMonoid.{u2} α) (List.{u2} α)) (FreeMonoid.toList.{u2} α) xs))
Case conversion may be inaccurate. Consider using '#align free_monoid.to_list_map FreeMonoid.toList_mapₓ'. -/
@[to_additive]
theorem toList_map (f : α → β) (xs : FreeMonoid α) : (map f xs).toList = xs.toList.map f :=
@@ -553,7 +553,7 @@ theorem toList_map (f : α → β) (xs : FreeMonoid α) : (map f xs).toList = xs
lean 3 declaration is
forall {α : Type.{u1}} {β : Type.{u2}} (f : α -> β) (xs : List.{u1} α), Eq.{succ u2} (FreeMonoid.{u2} β) (coeFn.{succ u2, succ u2} (Equiv.{succ u2, succ u2} (List.{u2} β) (FreeMonoid.{u2} β)) (fun (_x : Equiv.{succ u2, succ u2} (List.{u2} β) (FreeMonoid.{u2} β)) => (List.{u2} β) -> (FreeMonoid.{u2} β)) (Equiv.hasCoeToFun.{succ u2, succ u2} (List.{u2} β) (FreeMonoid.{u2} β)) (FreeMonoid.ofList.{u2} β) (List.map.{u1, u2} α β f xs)) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} (FreeMonoid.{u1} α) (FreeMonoid.{u2} β) (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} β) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} β) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} β) (FreeMonoid.cancelMonoid.{u2} β))))) (fun (_x : MonoidHom.{u1, u2} (FreeMonoid.{u1} α) (FreeMonoid.{u2} β) (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} β) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} β) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} β) (FreeMonoid.cancelMonoid.{u2} β))))) => (FreeMonoid.{u1} α) -> (FreeMonoid.{u2} β)) (MonoidHom.hasCoeToFun.{u1, u2} (FreeMonoid.{u1} α) (FreeMonoid.{u2} β) (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} α) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} α) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} α) (FreeMonoid.cancelMonoid.{u1} α)))) (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} β) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} β) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} β) (FreeMonoid.cancelMonoid.{u2} β))))) (FreeMonoid.map.{u1, u2} α β f) (coeFn.{succ u1, succ u1} (Equiv.{succ u1, succ u1} (List.{u1} α) (FreeMonoid.{u1} α)) (fun (_x : Equiv.{succ u1, succ u1} (List.{u1} α) (FreeMonoid.{u1} α)) => (List.{u1} α) -> (FreeMonoid.{u1} α)) (Equiv.hasCoeToFun.{succ u1, succ u1} (List.{u1} α) (FreeMonoid.{u1} α)) (FreeMonoid.ofList.{u1} α) xs))
but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u1}} (f : α -> β) (xs : List.{u2} α), Eq.{succ u1} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : List.{u1} β) => FreeMonoid.{u1} β) (List.map.{u2, u1} α β f xs)) (FunLike.coe.{succ u1, succ u1, succ u1} (Equiv.{succ u1, succ u1} (List.{u1} β) (FreeMonoid.{u1} β)) (List.{u1} β) (fun (_x : List.{u1} β) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : List.{u1} β) => FreeMonoid.{u1} β) _x) (Equiv.instFunLikeEquiv.{succ u1, succ u1} (List.{u1} β) (FreeMonoid.{u1} β)) (FreeMonoid.ofList.{u1} β) (List.map.{u2, u1} α β f xs)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} (FreeMonoid.{u2} α) (FreeMonoid.{u1} β) (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} β) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} β) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} β) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} β))))) (FreeMonoid.{u2} α) (fun (_x : FreeMonoid.{u2} α) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : FreeMonoid.{u2} α) => FreeMonoid.{u1} β) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (FreeMonoid.{u2} α) (FreeMonoid.{u1} β) (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} β) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} β) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} β) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} β))))) (FreeMonoid.{u2} α) (FreeMonoid.{u1} β) (MulOneClass.toMul.{u2} (FreeMonoid.{u2} α) (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α))))) (MulOneClass.toMul.{u1} (FreeMonoid.{u1} β) (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} β) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} β) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} β) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} β))))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (FreeMonoid.{u2} α) (FreeMonoid.{u1} β) (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} β) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} β) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} β) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} β))))) (FreeMonoid.{u2} α) (FreeMonoid.{u1} β) (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} β) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} β) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} β) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} β)))) (MonoidHom.monoidHomClass.{u2, u1} (FreeMonoid.{u2} α) (FreeMonoid.{u1} β) (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} β) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} β) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} β) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} β))))))) (FreeMonoid.map.{u2, u1} α β f) (FunLike.coe.{succ u2, succ u2, succ u2} (Equiv.{succ u2, succ u2} (List.{u2} α) (FreeMonoid.{u2} α)) (List.{u2} α) (fun (_x : List.{u2} α) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : List.{u2} α) => FreeMonoid.{u2} α) _x) (Equiv.instFunLikeEquiv.{succ u2, succ u2} (List.{u2} α) (FreeMonoid.{u2} α)) (FreeMonoid.ofList.{u2} α) xs))
+ forall {α : Type.{u2}} {β : Type.{u1}} (f : α -> β) (xs : List.{u2} α), Eq.{succ u1} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : List.{u1} β) => FreeMonoid.{u1} β) (List.map.{u2, u1} α β f xs)) (FunLike.coe.{succ u1, succ u1, succ u1} (Equiv.{succ u1, succ u1} (List.{u1} β) (FreeMonoid.{u1} β)) (List.{u1} β) (fun (_x : List.{u1} β) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : List.{u1} β) => FreeMonoid.{u1} β) _x) (Equiv.instFunLikeEquiv.{succ u1, succ u1} (List.{u1} β) (FreeMonoid.{u1} β)) (FreeMonoid.ofList.{u1} β) (List.map.{u2, u1} α β f xs)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} (FreeMonoid.{u2} α) (FreeMonoid.{u1} β) (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} β) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} β) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} β) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} β))))) (FreeMonoid.{u2} α) (fun (_x : FreeMonoid.{u2} α) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : FreeMonoid.{u2} α) => FreeMonoid.{u1} β) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (FreeMonoid.{u2} α) (FreeMonoid.{u1} β) (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} β) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} β) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} β) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} β))))) (FreeMonoid.{u2} α) (FreeMonoid.{u1} β) (MulOneClass.toMul.{u2} (FreeMonoid.{u2} α) (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α))))) (MulOneClass.toMul.{u1} (FreeMonoid.{u1} β) (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} β) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} β) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} β) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} β))))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (FreeMonoid.{u2} α) (FreeMonoid.{u1} β) (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} β) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} β) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} β) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} β))))) (FreeMonoid.{u2} α) (FreeMonoid.{u1} β) (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} β) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} β) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} β) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} β)))) (MonoidHom.monoidHomClass.{u2, u1} (FreeMonoid.{u2} α) (FreeMonoid.{u1} β) (Monoid.toMulOneClass.{u2} (FreeMonoid.{u2} α) (RightCancelMonoid.toMonoid.{u2} (FreeMonoid.{u2} α) (CancelMonoid.toRightCancelMonoid.{u2} (FreeMonoid.{u2} α) (FreeMonoid.instCancelMonoidFreeMonoid.{u2} α)))) (Monoid.toMulOneClass.{u1} (FreeMonoid.{u1} β) (RightCancelMonoid.toMonoid.{u1} (FreeMonoid.{u1} β) (CancelMonoid.toRightCancelMonoid.{u1} (FreeMonoid.{u1} β) (FreeMonoid.instCancelMonoidFreeMonoid.{u1} β))))))) (FreeMonoid.map.{u2, u1} α β f) (FunLike.coe.{succ u2, succ u2, succ u2} (Equiv.{succ u2, succ u2} (List.{u2} α) (FreeMonoid.{u2} α)) (List.{u2} α) (fun (_x : List.{u2} α) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : List.{u2} α) => FreeMonoid.{u2} α) _x) (Equiv.instFunLikeEquiv.{succ u2, succ u2} (List.{u2} α) (FreeMonoid.{u2} α)) (FreeMonoid.ofList.{u2} α) xs))
Case conversion may be inaccurate. Consider using '#align free_monoid.of_list_map FreeMonoid.ofList_mapₓ'. -/
@[to_additive]
theorem ofList_map (f : α → β) (xs : List α) : ofList (xs.map f) = map f (ofList xs) :=
mathlib commit https://github.com/leanprover-community/mathlib/commit/bd9851ca476957ea4549eb19b40e7b5ade9428cc
Algebra.BigOperators.List.Basic
, Data.List.Chain
not depend on Data.Nat.Order.Basic
by using Nat
-specific Std lemmas rather than general mathlib ones. I leave the Data.Nat.Basic
import since Algebra.BigOperators.List.Basic
is algebra territory.Algebra.BigOperators.List.Basic
not depend on Algebra.Divisibility.Basic
. I'm not too sure about that one since they already are algebra. My motivation is that they involve ring-like objects while big operators are about group-like objects, but this is in some sense a second order refactor.MonoidWithZero
lemmas from Algebra.BigOperators.List.Basic
to Algebra.BigOperators.List.Lemmas
.Algebra.BigOperators.List.Defs
to Algebra.BigOperators.List.Basic
since no file imported the former without the latter and their imports are becoming very close after this PR.Data.List.Count
, Data.List.Dedup
, Data.List.ProdSigma
, Data.List.Zip
not depend on Algebra.BigOperators.List.Basic
.Algebra.BigOperators.List.Basic
. For the lemmas that were Nat
-specific, keep a version of them stated using Nat.sum
.Nat.sum_eq_listSum (l : List Nat) : Nat.sum l = l.sum
.@@ -4,6 +4,7 @@ Released under Apache 2.0 license as described in the file LICENSE.
Authors: Simon Hudon, Yury Kudryashov
-/
import Mathlib.Algebra.BigOperators.List.Basic
+import Mathlib.Algebra.Group.Units
import Mathlib.GroupTheory.GroupAction.Defs
#align_import algebra.free_monoid.basic from "leanprover-community/mathlib"@"657df4339ae6ceada048c8a2980fb10e393143ec"
Algebra.BigOperators.List
(#11729)
This is algebra and should be foldered as such.
@@ -3,7 +3,7 @@ Copyright (c) 2019 Simon Hudon. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Simon Hudon, Yury Kudryashov
-/
-import Mathlib.Data.List.BigOperators.Basic
+import Mathlib.Algebra.BigOperators.List.Basic
import Mathlib.GroupTheory.GroupAction.Defs
#align_import algebra.free_monoid.basic from "leanprover-community/mathlib"@"657df4339ae6ceada048c8a2980fb10e393143ec"
@@ -231,7 +231,7 @@ def lift : (α → M) ≃ (FreeMonoid α →* M) where
#align free_monoid.lift FreeMonoid.lift
#align free_add_monoid.lift FreeAddMonoid.lift
--- Porting note: new
+-- Porting note (#10756): new theorem
@[to_additive (attr := simp)]
theorem lift_ofList (f : α → M) (l : List α) : lift f (ofList l) = (l.map f).prod :=
prodAux_eq _
Homogenises porting notes via capitalisation and addition of whitespace.
It makes the following changes:
@@ -231,7 +231,7 @@ def lift : (α → M) ≃ (FreeMonoid α →* M) where
#align free_monoid.lift FreeMonoid.lift
#align free_add_monoid.lift FreeAddMonoid.lift
--- porting note: new
+-- Porting note: new
@[to_additive (attr := simp)]
theorem lift_ofList (f : α → M) (l : List α) : lift f (ofList l) = (l.map f).prod :=
prodAux_eq _
List.append
(#9376)
Replace duplicates in Mathlib with theorems in Lean core.
List.append_left_cancel
→ List.append_cancel_left
List.append_right_cancel
→ List.append_cancel_right
@@ -81,8 +81,8 @@ instance : CancelMonoid (FreeMonoid α)
mul_one := List.append_nil
one_mul := List.nil_append
mul_assoc := List.append_assoc
- mul_left_cancel _ _ _ := List.append_left_cancel
- mul_right_cancel _ _ _ := List.append_right_cancel
+ mul_left_cancel _ _ _ := List.append_cancel_left
+ mul_right_cancel _ _ _ := List.append_cancel_right
@[to_additive]
instance : Inhabited (FreeMonoid α) := ⟨1⟩
FunLike
to DFunLike
(#9785)
This prepares for the introduction of a non-dependent synonym of FunLike, which helps a lot with keeping #8386 readable.
This is entirely search-and-replace in 680197f combined with manual fixes in 4145626, e900597 and b8428f8. The commands that generated this change:
sed -i 's/\bFunLike\b/DFunLike/g' {Archive,Counterexamples,Mathlib,test}/**/*.lean
sed -i 's/\btoFunLike\b/toDFunLike/g' {Archive,Counterexamples,Mathlib,test}/**/*.lean
sed -i 's/import Mathlib.Data.DFunLike/import Mathlib.Data.FunLike/g' {Archive,Counterexamples,Mathlib,test}/**/*.lean
sed -i 's/\bHom_FunLike\b/Hom_DFunLike/g' {Archive,Counterexamples,Mathlib,test}/**/*.lean
sed -i 's/\binstFunLike\b/instDFunLike/g' {Archive,Counterexamples,Mathlib,test}/**/*.lean
sed -i 's/\bfunLike\b/instDFunLike/g' {Archive,Counterexamples,Mathlib,test}/**/*.lean
sed -i 's/\btoo many metavariables to apply `fun_like.has_coe_to_fun`/too many metavariables to apply `DFunLike.hasCoeToFun`/g' {Archive,Counterexamples,Mathlib,test}/**/*.lean
Co-authored-by: Anne Baanen <Vierkantor@users.noreply.github.com>
@@ -271,7 +271,7 @@ theorem comp_lift (g : M →* N) (f : α → M) : g.comp (lift f) = lift (g ∘
@[to_additive]
theorem hom_map_lift (g : M →* N) (f : α → M) (x : FreeMonoid α) : g (lift f x) = lift (g ∘ f) x :=
- FunLike.ext_iff.1 (comp_lift g f) x
+ DFunLike.ext_iff.1 (comp_lift g f) x
#align free_monoid.hom_map_lift FreeMonoid.hom_map_lift
#align free_add_monoid.hom_map_lift FreeAddMonoid.hom_map_lift
@@ -351,7 +351,7 @@ theorem map_id : map (@id α) = MonoidHom.id (FreeMonoid α) := hom_eq fun _ ↦
@[to_additive]
instance uniqueUnits : Unique (FreeMonoid α)ˣ where
uniq u := Units.ext <| toList.injective <|
- have : toList u.val ++ toList u.inv = [] := FunLike.congr_arg toList u.val_inv
+ have : toList u.val ++ toList u.inv = [] := DFunLike.congr_arg toList u.val_inv
(List.append_eq_nil.mp this).1
end FreeMonoid
@@ -31,10 +31,6 @@ def FreeMonoid (α) := List α
namespace FreeMonoid
--- Porting note: TODO. Check this is still needed
-@[to_additive]
-instance [DecidableEq α] : DecidableEq (FreeMonoid α) := instDecidableEqList
-
/-- The identity equivalence between `FreeMonoid α` and `List α`. -/
@[to_additive "The identity equivalence between `FreeAddMonoid α` and `List α`."]
def toList : FreeMonoid α ≃ List α := Equiv.refl _
Many lemmas about BlahOrderedRing α
did not mention negation. I could generalise almost all those lemmas to BlahOrderedSemiring α
+ ExistsAddOfLE α
except for a series of five lemmas (left a TODO about them).
Now those lemmas apply to things like the naturals. This is not very useful on its own, because those lemmas are trivially true on canonically ordered semirings (they are about multiplication by negative elements, of which there are none, or nonnegativity of squares, but we already know everything is nonnegative), except that I will soon add more complicated inequalities that are based on those, and it would be a shame having to write two versions of each: one for ordered rings, one for canonically ordered semirings.
A similar refactor could be made for scalar multiplication, but this PR is big enough already.
From LeanAPAP
@@ -4,6 +4,7 @@ Released under Apache 2.0 license as described in the file LICENSE.
Authors: Simon Hudon, Yury Kudryashov
-/
import Mathlib.Data.List.BigOperators.Basic
+import Mathlib.GroupTheory.GroupAction.Defs
#align_import algebra.free_monoid.basic from "leanprover-community/mathlib"@"657df4339ae6ceada048c8a2980fb10e393143ec"
@@ -350,4 +350,11 @@ theorem map_id : map (@id α) = MonoidHom.id (FreeMonoid α) := hom_eq fun _ ↦
#align free_monoid.map_id FreeMonoid.map_id
#align free_add_monoid.map_id FreeAddMonoid.map_id
+/-- The only invertible element of the free monoid is 1; this instance enables `units_eq_one`. -/
+@[to_additive]
+instance uniqueUnits : Unique (FreeMonoid α)ˣ where
+ uniq u := Units.ext <| toList.injective <|
+ have : toList u.val ++ toList u.inv = [] := FunLike.congr_arg toList u.val_inv
+ (List.append_eq_nil.mp this).1
+
end FreeMonoid
Type _
and Sort _
(#6499)
We remove all possible occurences of Type _
and Sort _
in favor of Type*
and Sort*
.
This has nice performance benefits.
@@ -20,7 +20,7 @@ import Mathlib.Data.List.BigOperators.Basic
-/
-variable {α : Type _} {β : Type _} {γ : Type _} {M : Type _} [Monoid M] {N : Type _} [Monoid N]
+variable {α : Type*} {β : Type*} {γ : Type*} {M : Type*} [Monoid M] {N : Type*} [Monoid N]
/-- Free monoid over a given alphabet. -/
@[to_additive "Free nonabelian additive monoid over a given alphabet"]
@@ -157,19 +157,19 @@ theorem of_injective : Function.Injective (@of α) := List.singleton_injective
@[to_additive (attr := elab_as_elim) "Recursor for `FreeAddMonoid` using `0` and
`FreeAddMonoid.of x + xs` instead of `[]` and `x :: xs`."]
-- Porting note: change from `List.recOn` to `List.rec` since only the latter is computable
-def recOn {C : FreeMonoid α → Sort _} (xs : FreeMonoid α) (h0 : C 1)
+def recOn {C : FreeMonoid α → Sort*} (xs : FreeMonoid α) (h0 : C 1)
(ih : ∀ x xs, C xs → C (of x * xs)) : C xs := List.rec h0 ih xs
#align free_monoid.rec_on FreeMonoid.recOn
#align free_add_monoid.rec_on FreeAddMonoid.recOn
@[to_additive (attr := simp)]
-theorem recOn_one {C : FreeMonoid α → Sort _} (h0 : C 1) (ih : ∀ x xs, C xs → C (of x * xs)) :
+theorem recOn_one {C : FreeMonoid α → Sort*} (h0 : C 1) (ih : ∀ x xs, C xs → C (of x * xs)) :
@recOn α C 1 h0 ih = h0 := rfl
#align free_monoid.rec_on_one FreeMonoid.recOn_one
#align free_add_monoid.rec_on_zero FreeAddMonoid.recOn_zero
@[to_additive (attr := simp)]
-theorem recOn_of_mul {C : FreeMonoid α → Sort _} (x : α) (xs : FreeMonoid α) (h0 : C 1)
+theorem recOn_of_mul {C : FreeMonoid α → Sort*} (x : α) (xs : FreeMonoid α) (h0 : C 1)
(ih : ∀ x xs, C xs → C (of x * xs)) : @recOn α C (of x * xs) h0 ih = ih x xs (recOn xs h0 ih) :=
rfl
#align free_monoid.rec_on_of_mul FreeMonoid.recOn_of_mul
@@ -179,19 +179,19 @@ theorem recOn_of_mul {C : FreeMonoid α → Sort _} (x : α) (xs : FreeMonoid α
`[]` and `x :: xs`. -/
@[to_additive (attr := elab_as_elim) "A version of `List.casesOn` for `FreeAddMonoid` using `0` and
`FreeAddMonoid.of x + xs` instead of `[]` and `x :: xs`."]
-def casesOn {C : FreeMonoid α → Sort _} (xs : FreeMonoid α) (h0 : C 1)
+def casesOn {C : FreeMonoid α → Sort*} (xs : FreeMonoid α) (h0 : C 1)
(ih : ∀ x xs, C (of x * xs)) : C xs := List.casesOn xs h0 ih
#align free_monoid.cases_on FreeMonoid.casesOn
#align free_add_monoid.cases_on FreeAddMonoid.casesOn
@[to_additive (attr := simp)]
-theorem casesOn_one {C : FreeMonoid α → Sort _} (h0 : C 1) (ih : ∀ x xs, C (of x * xs)) :
+theorem casesOn_one {C : FreeMonoid α → Sort*} (h0 : C 1) (ih : ∀ x xs, C (of x * xs)) :
@casesOn α C 1 h0 ih = h0 := rfl
#align free_monoid.cases_on_one FreeMonoid.casesOn_one
#align free_add_monoid.cases_on_zero FreeAddMonoid.casesOn_zero
@[to_additive (attr := simp)]
-theorem casesOn_of_mul {C : FreeMonoid α → Sort _} (x : α) (xs : FreeMonoid α) (h0 : C 1)
+theorem casesOn_of_mul {C : FreeMonoid α → Sort*} (x : α) (xs : FreeMonoid α) (h0 : C 1)
(ih : ∀ x xs, C (of x * xs)) : @casesOn α C (of x * xs) h0 ih = ih x xs := rfl
#align free_monoid.cases_on_of_mul FreeMonoid.casesOn_of_mul
#align free_add_monoid.cases_on_of_add FreeAddMonoid.casesOn_of_add
@@ -2,14 +2,11 @@
Copyright (c) 2019 Simon Hudon. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Simon Hudon, Yury Kudryashov
-
-! This file was ported from Lean 3 source module algebra.free_monoid.basic
-! leanprover-community/mathlib commit 657df4339ae6ceada048c8a2980fb10e393143ec
-! Please do not edit these lines, except to modify the commit id
-! if you have ported upstream changes.
-/
import Mathlib.Data.List.BigOperators.Basic
+#align_import algebra.free_monoid.basic from "leanprover-community/mathlib"@"657df4339ae6ceada048c8a2980fb10e393143ec"
+
/-!
# Free monoid over a given alphabet
@@ -202,7 +202,7 @@ theorem casesOn_of_mul {C : FreeMonoid α → Sort _} (x : α) (xs : FreeMonoid
@[to_additive (attr := ext)]
theorem hom_eq ⦃f g : FreeMonoid α →* M⦄ (h : ∀ x, f (of x) = g (of x)) : f = g :=
MonoidHom.ext fun l ↦ recOn l (f.map_one.trans g.map_one.symm)
- (fun x xs hxs ↦ by simp only [h, hxs, MonoidHom.map_mul])
+ (fun x xs hxs ↦ by simp only [h, hxs, MonoidHom.map_mul])
#align free_monoid.hom_eq FreeMonoid.hom_eq
#align free_add_monoid.hom_eq FreeAddMonoid.hom_eq
@@ -211,14 +211,14 @@ The purpose is to make `FreeMonoid.lift_eval_of` true by `rfl`. -/
@[to_additive "A variant of `List.sum` that has `[x].sum = x` true definitionally.
The purpose is to make `FreeAddMonoid.lift_eval_of` true by `rfl`."]
def prodAux {M} [Monoid M] : List M → M
- | [] => 1
+ | [] => 1
| (x :: xs) => List.foldl (· * ·) x xs
#align free_monoid.prod_aux FreeMonoid.prodAux
#align free_add_monoid.sum_aux FreeAddMonoid.sumAux
@[to_additive]
lemma prodAux_eq : ∀ l : List M, FreeMonoid.prodAux l = l.prod
- | [] => rfl
+ | [] => rfl
| (_ :: xs) => congr_arg (fun x => List.foldl (· * ·) x xs) (one_mul _).symm
#align free_monoid.prod_aux_eq FreeMonoid.prodAux_eq
#align free_add_monoid.sum_aux_eq FreeAddMonoid.sumAux_eq
@@ -269,9 +269,9 @@ theorem lift_restrict (f : FreeMonoid α →* M) : lift (f ∘ of) = f := lift.a
#align free_add_monoid.lift_restrict FreeAddMonoid.lift_restrict
@[to_additive]
-theorem comp_lift (g : M →* N) (f : α → M) : g.comp (lift f) = lift (g ∘ f) :=
- -- Porting note: replace ext by FreeMonoid.hom_eq
- FreeMonoid.hom_eq (by simp)
+theorem comp_lift (g : M →* N) (f : α → M) : g.comp (lift f) = lift (g ∘ f) := by
+ ext
+ simp
#align free_monoid.comp_lift FreeMonoid.comp_lift
#align free_add_monoid.comp_lift FreeAddMonoid.comp_lift
@@ -240,7 +240,7 @@ def lift : (α → M) ≃ (FreeMonoid α →* M) where
-- porting note: new
@[to_additive (attr := simp)]
theorem lift_ofList (f : α → M) (l : List α) : lift f (ofList l) = (l.map f).prod :=
-prodAux_eq _
+ prodAux_eq _
@[to_additive (attr := simp)]
theorem lift_symm_apply (f : FreeMonoid α →* M) : lift.symm f = f ∘ of := rfl
@@ -249,7 +249,7 @@ theorem lift_symm_apply (f : FreeMonoid α →* M) : lift.symm f = f ∘ of := r
@[to_additive]
theorem lift_apply (f : α → M) (l : FreeMonoid α) : lift f l = ((toList l).map f).prod :=
-prodAux_eq _
+ prodAux_eq _
#align free_monoid.lift_apply FreeMonoid.lift_apply
#align free_add_monoid.lift_apply FreeAddMonoid.lift_apply
@@ -270,7 +270,7 @@ theorem lift_restrict (f : FreeMonoid α →* M) : lift (f ∘ of) = f := lift.a
@[to_additive]
theorem comp_lift (g : M →* N) (f : α → M) : g.comp (lift f) = lift (g ∘ f) :=
--- Porting note: replace ext by FreeMonoid.hom_eq
+ -- Porting note: replace ext by FreeMonoid.hom_eq
FreeMonoid.hom_eq (by simp)
#align free_monoid.comp_lift FreeMonoid.comp_lift
#align free_add_monoid.comp_lift FreeAddMonoid.comp_lift
Comparing https://leanprover-community.github.io/mathlib-port-status/file/algebra/free_monoid/basic against #1497 shows that this is already up to date.
@@ -4,7 +4,7 @@ Released under Apache 2.0 license as described in the file LICENSE.
Authors: Simon Hudon, Yury Kudryashov
! This file was ported from Lean 3 source module algebra.free_monoid.basic
-! leanprover-community/mathlib commit dd71334db81d0bd444af1ee339a29298bef40734
+! leanprover-community/mathlib commit 657df4339ae6ceada048c8a2980fb10e393143ec
! Please do not edit these lines, except to modify the commit id
! if you have ported upstream changes.
-/
@@ -180,7 +180,7 @@ theorem recOn_of_mul {C : FreeMonoid α → Sort _} (x : α) (xs : FreeMonoid α
/-- A version of `List.cases_on` for `FreeMonoid` using `1` and `FreeMonoid.of x * xs` instead of
`[]` and `x :: xs`. -/
-@[elab_as_elim, to_additive "A version of `List.casesOn` for `FreeAddMonoid` using `0` and
+@[to_additive (attr := elab_as_elim) "A version of `List.casesOn` for `FreeAddMonoid` using `0` and
`FreeAddMonoid.of x + xs` instead of `[]` and `x :: xs`."]
def casesOn {C : FreeMonoid α → Sort _} (xs : FreeMonoid α) (h0 : C 1)
(ih : ∀ x xs, C (of x * xs)) : C xs := List.casesOn xs h0 ih
It was quite smooth. I didn't have to make changes that I expect to change downstream files, so I left few porting notes.
Comments that I didn't make into porting notes:
attribute [local ext] ext
had to be changed to attribute [local ext high] ext
M ⊗ N
needed to be replaced by M ⊗[R] N
in theorem statements.Co-authored-by: Johan Commelin <johan@commelin.net>
@@ -157,8 +157,8 @@ theorem of_injective : Function.Injective (@of α) := List.singleton_injective
#align free_add_monoid.of_injective FreeAddMonoid.of_injective
/-- Recursor for `FreeMonoid` using `1` and `FreeMonoid.of x * xs` instead of `[]` and `x :: xs`. -/
-@[elab_as_elim, to_additive "Recursor for `FreeAddMonoid` using `0` and `FreeAddMonoid.of x + xs`
-instead of `[]` and `x :: xs`."]
+@[to_additive (attr := elab_as_elim) "Recursor for `FreeAddMonoid` using `0` and
+`FreeAddMonoid.of x + xs` instead of `[]` and `x :: xs`."]
-- Porting note: change from `List.recOn` to `List.rec` since only the latter is computable
def recOn {C : FreeMonoid α → Sort _} (xs : FreeMonoid α) (h0 : C 1)
(ih : ∀ x xs, C xs → C (of x * xs)) : C xs := List.rec h0 ih xs
@@ -226,8 +226,7 @@ lemma prodAux_eq : ∀ l : List M, FreeMonoid.prodAux l = l.prod
/-- Equivalence between maps `α → M` and monoid homomorphisms `FreeMonoid α →* M`. -/
@[to_additive "Equivalence between maps `α → A` and additive monoid homomorphisms
`FreeAddMonoid α →+ A`."]
-def lift : (α → M) ≃ (FreeMonoid α →* M)
- where
+def lift : (α → M) ≃ (FreeMonoid α →* M) where
toFun f :=
{ toFun := fun l ↦ prodAux ((toList l).map f)
map_one' := rfl
@@ -238,6 +237,11 @@ def lift : (α → M) ≃ (FreeMonoid α →* M)
#align free_monoid.lift FreeMonoid.lift
#align free_add_monoid.lift FreeAddMonoid.lift
+-- porting note: new
+@[to_additive (attr := simp)]
+theorem lift_ofList (f : α → M) (l : List α) : lift f (ofList l) = (l.map f).prod :=
+prodAux_eq _
+
@[to_additive (attr := simp)]
theorem lift_symm_apply (f : FreeMonoid α →* M) : lift.symm f = f ∘ of := rfl
#align free_monoid.lift_symm_apply FreeMonoid.lift_symm_apply
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)@@ -213,11 +213,15 @@ The purpose is to make `FreeAddMonoid.lift_eval_of` true by `rfl`."]
def prodAux {M} [Monoid M] : List M → M
| [] => 1
| (x :: xs) => List.foldl (· * ·) x xs
+#align free_monoid.prod_aux FreeMonoid.prodAux
+#align free_add_monoid.sum_aux FreeAddMonoid.sumAux
@[to_additive]
lemma prodAux_eq : ∀ l : List M, FreeMonoid.prodAux l = l.prod
| [] => rfl
| (_ :: xs) => congr_arg (fun x => List.foldl (· * ·) x xs) (one_mul _).symm
+#align free_monoid.prod_aux_eq FreeMonoid.prodAux_eq
+#align free_add_monoid.sum_aux_eq FreeAddMonoid.sumAux_eq
/-- Equivalence between maps `α → M` and monoid homomorphisms `FreeMonoid α →* M`. -/
@[to_additive "Equivalence between maps `α → A` and additive monoid homomorphisms
@@ -29,6 +29,7 @@ variable {α : Type _} {β : Type _} {γ : Type _} {M : Type _} [Monoid M] {N :
@[to_additive "Free nonabelian additive monoid over a given alphabet"]
def FreeMonoid (α) := List α
#align free_monoid FreeMonoid
+#align free_add_monoid FreeAddMonoid
namespace FreeMonoid
@@ -40,35 +41,43 @@ instance [DecidableEq α] : DecidableEq (FreeMonoid α) := instDecidableEqList
@[to_additive "The identity equivalence between `FreeAddMonoid α` and `List α`."]
def toList : FreeMonoid α ≃ List α := Equiv.refl _
#align free_monoid.to_list FreeMonoid.toList
+#align free_add_monoid.to_list FreeAddMonoid.toList
/-- The identity equivalence between `List α` and `FreeMonoid α`. -/
@[to_additive "The identity equivalence between `List α` and `FreeAddMonoid α`."]
def ofList : List α ≃ FreeMonoid α := Equiv.refl _
#align free_monoid.of_list FreeMonoid.ofList
+#align free_add_monoid.of_list FreeAddMonoid.ofList
@[to_additive (attr := simp)]
theorem toList_symm : (@toList α).symm = ofList := rfl
#align free_monoid.to_list_symm FreeMonoid.toList_symm
+#align free_add_monoid.to_list_symm FreeAddMonoid.toList_symm
@[to_additive (attr := simp)]
theorem ofList_symm : (@ofList α).symm = toList := rfl
#align free_monoid.of_list_symm FreeMonoid.ofList_symm
+#align free_add_monoid.of_list_symm FreeAddMonoid.ofList_symm
@[to_additive (attr := simp)]
theorem toList_ofList (l : List α) : toList (ofList l) = l := rfl
#align free_monoid.to_list_of_list FreeMonoid.toList_ofList
+#align free_add_monoid.to_list_of_list FreeAddMonoid.toList_ofList
@[to_additive (attr := simp)]
theorem ofList_toList (xs : FreeMonoid α) : ofList (toList xs) = xs := rfl
#align free_monoid.of_list_to_list FreeMonoid.ofList_toList
+#align free_add_monoid.of_list_to_list FreeAddMonoid.ofList_toList
@[to_additive (attr := simp)]
theorem toList_comp_ofList : @toList α ∘ ofList = id := rfl
#align free_monoid.to_list_comp_of_list FreeMonoid.toList_comp_ofList
+#align free_add_monoid.to_list_comp_of_list FreeAddMonoid.toList_comp_ofList
@[to_additive (attr := simp)]
theorem ofList_comp_toList : @ofList α ∘ toList = id := rfl
#align free_monoid.of_list_comp_to_list FreeMonoid.ofList_comp_toList
+#align free_add_monoid.of_list_comp_to_list FreeAddMonoid.ofList_comp_toList
@[to_additive]
instance : CancelMonoid (FreeMonoid α)
@@ -87,53 +96,65 @@ instance : Inhabited (FreeMonoid α) := ⟨1⟩
@[to_additive (attr := simp)]
theorem toList_one : toList (1 : FreeMonoid α) = [] := rfl
#align free_monoid.to_list_one FreeMonoid.toList_one
+#align free_add_monoid.to_list_zero FreeAddMonoid.toList_zero
@[to_additive (attr := simp)]
theorem ofList_nil : ofList ([] : List α) = 1 := rfl
#align free_monoid.of_list_nil FreeMonoid.ofList_nil
+#align free_add_monoid.of_list_nil FreeAddMonoid.ofList_nil
@[to_additive (attr := simp)]
theorem toList_mul (xs ys : FreeMonoid α) : toList (xs * ys) = toList xs ++ toList ys := rfl
#align free_monoid.to_list_mul FreeMonoid.toList_mul
+#align free_add_monoid.to_list_add FreeAddMonoid.toList_add
@[to_additive (attr := simp)]
theorem ofList_append (xs ys : List α) : ofList (xs ++ ys) = ofList xs * ofList ys := rfl
#align free_monoid.of_list_append FreeMonoid.ofList_append
+#align free_add_monoid.of_list_append FreeAddMonoid.ofList_append
@[to_additive (attr := simp)]
theorem toList_prod (xs : List (FreeMonoid α)) : toList xs.prod = (xs.map toList).join := by
induction xs <;> simp [*, List.join]
#align free_monoid.to_list_prod FreeMonoid.toList_prod
+#align free_add_monoid.to_list_sum FreeAddMonoid.toList_sum
@[to_additive (attr := simp)]
theorem ofList_join (xs : List (List α)) : ofList xs.join = (xs.map ofList).prod :=
toList.injective <| by simp
#align free_monoid.of_list_join FreeMonoid.ofList_join
+#align free_add_monoid.of_list_join FreeAddMonoid.ofList_join
/-- Embeds an element of `α` into `FreeMonoid α` as a singleton list. -/
@[to_additive "Embeds an element of `α` into `FreeAddMonoid α` as a singleton list."]
def of (x : α) : FreeMonoid α := ofList [x]
#align free_monoid.of FreeMonoid.of
+#align free_add_monoid.of FreeAddMonoid.of
@[to_additive (attr := simp)]
theorem toList_of (x : α) : toList (of x) = [x] := rfl
#align free_monoid.to_list_of FreeMonoid.toList_of
+#align free_add_monoid.to_list_of FreeAddMonoid.toList_of
@[to_additive]
theorem ofList_singleton (x : α) : ofList [x] = of x := rfl
#align free_monoid.of_list_singleton FreeMonoid.ofList_singleton
+#align free_add_monoid.of_list_singleton FreeAddMonoid.ofList_singleton
@[to_additive (attr := simp)]
theorem ofList_cons (x : α) (xs : List α) : ofList (x :: xs) = of x * ofList xs := rfl
#align free_monoid.of_list_cons FreeMonoid.ofList_cons
+#align free_add_monoid.of_list_cons FreeAddMonoid.ofList_cons
@[to_additive]
theorem toList_of_mul (x : α) (xs : FreeMonoid α) : toList (of x * xs) = x :: toList xs := rfl
#align free_monoid.to_list_of_mul FreeMonoid.toList_of_mul
+#align free_add_monoid.to_list_of_add FreeAddMonoid.toList_of_add
@[to_additive]
theorem of_injective : Function.Injective (@of α) := List.singleton_injective
#align free_monoid.of_injective FreeMonoid.of_injective
+#align free_add_monoid.of_injective FreeAddMonoid.of_injective
/-- Recursor for `FreeMonoid` using `1` and `FreeMonoid.of x * xs` instead of `[]` and `x :: xs`. -/
@[elab_as_elim, to_additive "Recursor for `FreeAddMonoid` using `0` and `FreeAddMonoid.of x + xs`
@@ -142,17 +163,20 @@ instead of `[]` and `x :: xs`."]
def recOn {C : FreeMonoid α → Sort _} (xs : FreeMonoid α) (h0 : C 1)
(ih : ∀ x xs, C xs → C (of x * xs)) : C xs := List.rec h0 ih xs
#align free_monoid.rec_on FreeMonoid.recOn
+#align free_add_monoid.rec_on FreeAddMonoid.recOn
@[to_additive (attr := simp)]
theorem recOn_one {C : FreeMonoid α → Sort _} (h0 : C 1) (ih : ∀ x xs, C xs → C (of x * xs)) :
@recOn α C 1 h0 ih = h0 := rfl
#align free_monoid.rec_on_one FreeMonoid.recOn_one
+#align free_add_monoid.rec_on_zero FreeAddMonoid.recOn_zero
@[to_additive (attr := simp)]
theorem recOn_of_mul {C : FreeMonoid α → Sort _} (x : α) (xs : FreeMonoid α) (h0 : C 1)
(ih : ∀ x xs, C xs → C (of x * xs)) : @recOn α C (of x * xs) h0 ih = ih x xs (recOn xs h0 ih) :=
rfl
#align free_monoid.rec_on_of_mul FreeMonoid.recOn_of_mul
+#align free_add_monoid.rec_on_of_add FreeAddMonoid.recOn_of_add
/-- A version of `List.cases_on` for `FreeMonoid` using `1` and `FreeMonoid.of x * xs` instead of
`[]` and `x :: xs`. -/
@@ -161,22 +185,26 @@ theorem recOn_of_mul {C : FreeMonoid α → Sort _} (x : α) (xs : FreeMonoid α
def casesOn {C : FreeMonoid α → Sort _} (xs : FreeMonoid α) (h0 : C 1)
(ih : ∀ x xs, C (of x * xs)) : C xs := List.casesOn xs h0 ih
#align free_monoid.cases_on FreeMonoid.casesOn
+#align free_add_monoid.cases_on FreeAddMonoid.casesOn
@[to_additive (attr := simp)]
theorem casesOn_one {C : FreeMonoid α → Sort _} (h0 : C 1) (ih : ∀ x xs, C (of x * xs)) :
@casesOn α C 1 h0 ih = h0 := rfl
#align free_monoid.cases_on_one FreeMonoid.casesOn_one
+#align free_add_monoid.cases_on_zero FreeAddMonoid.casesOn_zero
@[to_additive (attr := simp)]
theorem casesOn_of_mul {C : FreeMonoid α → Sort _} (x : α) (xs : FreeMonoid α) (h0 : C 1)
(ih : ∀ x xs, C (of x * xs)) : @casesOn α C (of x * xs) h0 ih = ih x xs := rfl
#align free_monoid.cases_on_of_mul FreeMonoid.casesOn_of_mul
+#align free_add_monoid.cases_on_of_add FreeAddMonoid.casesOn_of_add
@[to_additive (attr := ext)]
theorem hom_eq ⦃f g : FreeMonoid α →* M⦄ (h : ∀ x, f (of x) = g (of x)) : f = g :=
MonoidHom.ext fun l ↦ recOn l (f.map_one.trans g.map_one.symm)
(fun x xs hxs ↦ by simp only [h, hxs, MonoidHom.map_mul])
#align free_monoid.hom_eq FreeMonoid.hom_eq
+#align free_add_monoid.hom_eq FreeAddMonoid.hom_eq
/-- A variant of `List.prod` that has `[x].prod = x` true definitionally.
The purpose is to make `FreeMonoid.lift_eval_of` true by `rfl`. -/
@@ -204,38 +232,46 @@ def lift : (α → M) ≃ (FreeMonoid α →* M)
left_inv f := rfl
right_inv f := hom_eq fun x ↦ rfl
#align free_monoid.lift FreeMonoid.lift
+#align free_add_monoid.lift FreeAddMonoid.lift
@[to_additive (attr := simp)]
theorem lift_symm_apply (f : FreeMonoid α →* M) : lift.symm f = f ∘ of := rfl
#align free_monoid.lift_symm_apply FreeMonoid.lift_symm_apply
+#align free_add_monoid.lift_symm_apply FreeAddMonoid.lift_symm_apply
@[to_additive]
theorem lift_apply (f : α → M) (l : FreeMonoid α) : lift f l = ((toList l).map f).prod :=
prodAux_eq _
#align free_monoid.lift_apply FreeMonoid.lift_apply
+#align free_add_monoid.lift_apply FreeAddMonoid.lift_apply
@[to_additive]
theorem lift_comp_of (f : α → M) : lift f ∘ of = f := rfl
#align free_monoid.lift_comp_of FreeMonoid.lift_comp_of
+#align free_add_monoid.lift_comp_of FreeAddMonoid.lift_comp_of
@[to_additive (attr := simp)]
theorem lift_eval_of (f : α → M) (x : α) : lift f (of x) = f x := rfl
#align free_monoid.lift_eval_of FreeMonoid.lift_eval_of
+#align free_add_monoid.lift_eval_of FreeAddMonoid.lift_eval_of
@[to_additive (attr := simp)]
theorem lift_restrict (f : FreeMonoid α →* M) : lift (f ∘ of) = f := lift.apply_symm_apply f
#align free_monoid.lift_restrict FreeMonoid.lift_restrict
+#align free_add_monoid.lift_restrict FreeAddMonoid.lift_restrict
@[to_additive]
theorem comp_lift (g : M →* N) (f : α → M) : g.comp (lift f) = lift (g ∘ f) :=
-- Porting note: replace ext by FreeMonoid.hom_eq
FreeMonoid.hom_eq (by simp)
#align free_monoid.comp_lift FreeMonoid.comp_lift
+#align free_add_monoid.comp_lift FreeAddMonoid.comp_lift
@[to_additive]
theorem hom_map_lift (g : M →* N) (f : α → M) (x : FreeMonoid α) : g (lift f x) = lift (g ∘ f) x :=
FunLike.ext_iff.1 (comp_lift g f) x
#align free_monoid.hom_map_lift FreeMonoid.hom_map_lift
+#align free_add_monoid.hom_map_lift FreeAddMonoid.hom_map_lift
/-- Define a multiplicative action of `FreeMonoid α` on `β`. -/
@[to_additive "Define an additive action of `FreeAddMonoid α` on `β`."]
@@ -244,24 +280,28 @@ def mkMulAction (f : α → β → β) : MulAction (FreeMonoid α) β where
one_smul _ := rfl
mul_smul _ _ _ := List.foldr_append _ _ _ _
#align free_monoid.mk_mul_action FreeMonoid.mkMulAction
+#align free_add_monoid.mk_add_action FreeAddMonoid.mkAddAction
@[to_additive]
theorem smul_def (f : α → β → β) (l : FreeMonoid α) (b : β) :
haveI := mkMulAction f
l • b = l.toList.foldr f b := rfl
#align free_monoid.smul_def FreeMonoid.smul_def
+#align free_add_monoid.vadd_def FreeAddMonoid.vadd_def
@[to_additive]
theorem ofList_smul (f : α → β → β) (l : List α) (b : β) :
haveI := mkMulAction f
ofList l • b = l.foldr f b := rfl
#align free_monoid.of_list_smul FreeMonoid.ofList_smul
+#align free_add_monoid.of_list_vadd FreeAddMonoid.ofList_vadd
@[to_additive (attr := simp)]
theorem of_smul (f : α → β → β) (x : α) (y : β) :
(haveI := mkMulAction f
of x • y) = f x y := rfl
#align free_monoid.of_smul FreeMonoid.of_smul
+#align free_add_monoid.of_vadd FreeAddMonoid.of_vadd
/-- The unique monoid homomorphism `FreeMonoid α →* FreeMonoid β` that sends
each `of x` to `of (f x)`. -/
@@ -273,29 +313,36 @@ def map (f : α → β) : FreeMonoid α →* FreeMonoid β
map_one' := rfl
map_mul' _ _ := List.map_append _ _ _
#align free_monoid.map FreeMonoid.map
+#align free_add_monoid.map FreeAddMonoid.map
@[to_additive (attr := simp)]
theorem map_of (f : α → β) (x : α) : map f (of x) = of (f x) := rfl
#align free_monoid.map_of FreeMonoid.map_of
+#align free_add_monoid.map_of FreeAddMonoid.map_of
@[to_additive]
theorem toList_map (f : α → β) (xs : FreeMonoid α) : toList (map f xs) = xs.toList.map f := rfl
#align free_monoid.to_list_map FreeMonoid.toList_map
+#align free_add_monoid.to_list_map FreeAddMonoid.toList_map
@[to_additive]
theorem ofList_map (f : α → β) (xs : List α) : ofList (xs.map f) = map f (ofList xs) := rfl
#align free_monoid.of_list_map FreeMonoid.ofList_map
+#align free_add_monoid.of_list_map FreeAddMonoid.ofList_map
@[to_additive]
theorem lift_of_comp_eq_map (f : α → β) : (lift fun x ↦ of (f x)) = map f := hom_eq fun _ ↦ rfl
#align free_monoid.lift_of_comp_eq_map FreeMonoid.lift_of_comp_eq_map
+#align free_add_monoid.lift_of_comp_eq_map FreeAddMonoid.lift_of_comp_eq_map
@[to_additive]
theorem map_comp (g : β → γ) (f : α → β) : map (g ∘ f) = (map g).comp (map f) := hom_eq fun _ ↦ rfl
#align free_monoid.map_comp FreeMonoid.map_comp
+#align free_add_monoid.map_comp FreeAddMonoid.map_comp
@[to_additive (attr := simp)]
theorem map_id : map (@id α) = MonoidHom.id (FreeMonoid α) := hom_eq fun _ ↦ rfl
#align free_monoid.map_id FreeMonoid.map_id
+#align free_add_monoid.map_id FreeAddMonoid.map_id
end FreeMonoid
This works around https://github.com/leanprover/lean4/issues/2049. By manually adding compiler support for these recursors, we make a large number of porting notes redundant.
@@ -138,9 +138,9 @@ theorem of_injective : Function.Injective (@of α) := List.singleton_injective
/-- Recursor for `FreeMonoid` using `1` and `FreeMonoid.of x * xs` instead of `[]` and `x :: xs`. -/
@[elab_as_elim, to_additive "Recursor for `FreeAddMonoid` using `0` and `FreeAddMonoid.of x + xs`
instead of `[]` and `x :: xs`."]
--- Porting note: added noncomputable
-noncomputable def recOn {C : FreeMonoid α → Sort _} (xs : FreeMonoid α) (h0 : C 1)
- (ih : ∀ x xs, C xs → C (of x * xs)) : C xs := List.recOn xs h0 ih
+-- Porting note: change from `List.recOn` to `List.rec` since only the latter is computable
+def recOn {C : FreeMonoid α → Sort _} (xs : FreeMonoid α) (h0 : C 1)
+ (ih : ∀ x xs, C xs → C (of x * xs)) : C xs := List.rec h0 ih xs
#align free_monoid.rec_on FreeMonoid.recOn
@[to_additive (attr := simp)]
@@ -178,18 +178,31 @@ theorem hom_eq ⦃f g : FreeMonoid α →* M⦄ (h : ∀ x, f (of x) = g (of x))
(fun x xs hxs ↦ by simp only [h, hxs, MonoidHom.map_mul])
#align free_monoid.hom_eq FreeMonoid.hom_eq
+/-- A variant of `List.prod` that has `[x].prod = x` true definitionally.
+The purpose is to make `FreeMonoid.lift_eval_of` true by `rfl`. -/
+@[to_additive "A variant of `List.sum` that has `[x].sum = x` true definitionally.
+The purpose is to make `FreeAddMonoid.lift_eval_of` true by `rfl`."]
+def prodAux {M} [Monoid M] : List M → M
+ | [] => 1
+ | (x :: xs) => List.foldl (· * ·) x xs
+
+@[to_additive]
+lemma prodAux_eq : ∀ l : List M, FreeMonoid.prodAux l = l.prod
+ | [] => rfl
+ | (_ :: xs) => congr_arg (fun x => List.foldl (· * ·) x xs) (one_mul _).symm
+
/-- Equivalence between maps `α → M` and monoid homomorphisms `FreeMonoid α →* M`. -/
@[to_additive "Equivalence between maps `α → A` and additive monoid homomorphisms
`FreeAddMonoid α →+ A`."]
def lift : (α → M) ≃ (FreeMonoid α →* M)
where
toFun f :=
- { toFun := fun l ↦ ((toList l).map f).prod
- map_one' := rfl -- sorry
- map_mul' := fun _ _ ↦ by simp only [toList_mul, List.map_append, List.prod_append] }
+ { toFun := fun l ↦ prodAux ((toList l).map f)
+ map_one' := rfl
+ map_mul' := fun _ _ ↦ by simp only [prodAux_eq, toList_mul, List.map_append, List.prod_append] }
invFun f x := f (of x)
- left_inv f := funext fun x ↦ one_mul (f x)
- right_inv f := hom_eq fun x ↦ one_mul (f (of x))
+ left_inv f := rfl
+ right_inv f := hom_eq fun x ↦ rfl
#align free_monoid.lift FreeMonoid.lift
@[to_additive (attr := simp)]
@@ -197,15 +210,16 @@ theorem lift_symm_apply (f : FreeMonoid α →* M) : lift.symm f = f ∘ of := r
#align free_monoid.lift_symm_apply FreeMonoid.lift_symm_apply
@[to_additive]
-theorem lift_apply (f : α → M) (l : FreeMonoid α) : lift f l = ((toList l).map f).prod := rfl
+theorem lift_apply (f : α → M) (l : FreeMonoid α) : lift f l = ((toList l).map f).prod :=
+prodAux_eq _
#align free_monoid.lift_apply FreeMonoid.lift_apply
@[to_additive]
-theorem lift_comp_of (f : α → M) : lift f ∘ of = f := lift.symm_apply_apply f
+theorem lift_comp_of (f : α → M) : lift f ∘ of = f := rfl
#align free_monoid.lift_comp_of FreeMonoid.lift_comp_of
@[to_additive (attr := simp)]
-theorem lift_eval_of (f : α → M) (x : α) : lift f (of x) = f x := congr_fun (lift_comp_of f) x
+theorem lift_eval_of (f : α → M) (x : α) : lift f (of x) = f x := rfl
#align free_monoid.lift_eval_of FreeMonoid.lift_eval_of
@[to_additive (attr := simp)]
The unported dependencies are